<?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>100725</bug_id>
          
          <creation_ts>2012-10-29 22:29:53 -0700</creation_ts>
          <short_desc>Switch more class to use the new &lt;&lt; form of encode</short_desc>
          <delta_ts>2012-10-30 11:09:29 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>753990</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2012-10-29 22:29:53 -0700</bug_when>
    <thetext>Switch more class to use the new &lt;&lt; form of encode</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753991</commentid>
    <comment_count>1</comment_count>
      <attachid>171374</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2012-10-29 22:33:22 -0700</bug_when>
    <thetext>Created attachment 171374
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753992</commentid>
    <comment_count>2</comment_count>
      <attachid>171374</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-10-29 22:38:51 -0700</bug_when>
    <thetext>Comment on attachment 171374
Patch

Attachment 171374 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/14618980</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753996</commentid>
    <comment_count>3</comment_count>
      <attachid>171376</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2012-10-29 22:49:55 -0700</bug_when>
    <thetext>Created attachment 171376
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754003</commentid>
    <comment_count>4</comment_count>
      <attachid>171376</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-10-29 23:16:34 -0700</bug_when>
    <thetext>Comment on attachment 171376
Patch

Attachment 171376 did not pass win-ews (win):
Output: http://queues.webkit.org/results/14623626</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754501</commentid>
    <comment_count>5</comment_count>
      <attachid>171483</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2012-10-30 10:43:04 -0700</bug_when>
    <thetext>Created attachment 171483
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754519</commentid>
    <comment_count>6</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2012-10-30 11:09:29 -0700</bug_when>
    <thetext>Committed r132926: &lt;http://trac.webkit.org/changeset/132926&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171374</attachid>
            <date>2012-10-29 22:33:22 -0700</date>
            <delta_ts>2012-10-29 22:49:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100725-20121029223149.patch</filename>
            <type>text/plain</type>
            <size>84164</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzMjg3MSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0MyBAQAorMjAxMi0xMC0yOSAgU2FtIFdl
aW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIFN3aXRjaCBtb3JlIGNsYXNzIHRvIHVz
ZSB0aGUgbmV3IDw8IGZvcm0gb2YgZW5jb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA3MjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAtIFN3aXRjaGVzIG1hbnkgdXNlcyBvZiBlbmNvZGVyLmVuY29k
ZShmb28pIHRvIGVuY29kZXIgPDwgZm9vLgorICAgICAgICAtIFN3aXRjaGVzIGEgZmV3IHBsYWNl
cyB0byB0YWtlIGFuIEFyZ3VtZW50RW5jb2RlciYgcmF0aGVyIHRoYW4gYW4gQXJndW1lbnRFbmNv
ZGVyKi4KKyAgICAgICAgLSBTd2l0Y2hlcyBhIGZldyBwbGFjZXMgYXdheSBmcm9tIHVzaW5nIGVu
Y29kZXIuZW5jb2RlVmFyaWFibGVMZW5ndGhCeXRlQXJyYXkoZm9vKSB0bworICAgICAgICAgIHVz
aW5nIGVuY29kZXIgPDwgQ29yZUlQQzo6RGF0YVJlZmVyZW5jZShmb28pLgorCisgICAgICAgICog
UGxhdGZvcm0vQ29yZUlQQy9IYW5kbGVNZXNzYWdlLmg6CisgICAgICAgIChDb3JlSVBDOjpoYW5k
bGVNZXNzYWdlKToKKyAgICAgICAgKENvcmVJUEM6OmhhbmRsZU1lc3NhZ2VWYXJpYWRpYyk6Cisg
ICAgICAgICogUGxhdGZvcm0vQ29yZUlQQy9TdHJpbmdSZWZlcmVuY2UuY3BwOgorICAgICAgICAo
Q29yZUlQQzo6U3RyaW5nUmVmZXJlbmNlOjplbmNvZGUpOgorICAgICAgICAoQ29yZUlQQzo6U3Ry
aW5nUmVmZXJlbmNlOjpkZWNvZGUpOgorICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvbWFjL01h
Y2hQb3J0Lmg6CisgICAgICAgIChDb3JlSVBDOjpNYWNoUG9ydDo6ZW5jb2RlKToKKyAgICAgICAg
KiBQbGF0Zm9ybS9tYWMvU2hhcmVkTWVtb3J5TWFjLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hh
cmVkTWVtb3J5OjpIYW5kbGU6OmVuY29kZSk6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9QbHVn
aW5DcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5DcmVhdGlv
blBhcmFtZXRlcnM6OmVuY29kZSk6CisgICAgICAgICogU2hhcmVkL0RpY3Rpb25hcnlQb3B1cElu
Zm8uY3BwOgorICAgICAgICAoV2ViS2l0OjpEaWN0aW9uYXJ5UG9wdXBJbmZvOjplbmNvZGUpOgor
ICAgICAgICAqIFNoYXJlZC9FZGl0b3JTdGF0ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkVkaXRv
clN0YXRlOjplbmNvZGUpOgorICAgICAgICAqIFNoYXJlZC9Gb250SW5mby5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkZvbnRJbmZvOjplbmNvZGUpOgorICAgICAgICAqIFNoYXJlZC9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSk6CisgICAgICAgICogU2hhcmVk
L09yaWdpbkFuZERhdGFiYXNlcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdpbkFuZERhdGFi
YXNlczo6ZW5jb2RlKToKKyAgICAgICAgKiBTaGFyZWQvUGxhdGZvcm1Qb3B1cE1lbnVEYXRhLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1Qb3B1cE1lbnVEYXRhOjplbmNvZGUpOgorICAg
ICAgICAqIFNoYXJlZC9QbHVnaW5zL05QSWRlbnRpZmllckRhdGEuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpOUElkZW50aWZpZXJEYXRhOjplbmNvZGUpOgorICAgICAgICAqIFNoYXJlZC9QbHVnaW5z
L05QVmFyaWFudERhdGEuY3BwOgorICAgICAgICAoV2ViS2l0OjpOUFZhcmlhbnREYXRhOjplbmNv
ZGUpOgorICAgICAgICAqIFNoYXJlZC9QbHVnaW5zL1BsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzOjplbmNvZGUpOgorICAgICAgICAqIFNoYXJlZC9QcmludEluZm8uY3BwOgorICAgICAgICAo
V2ViS2l0OjpQcmludEluZm86OmVuY29kZSk6CisgICAgICAgICogU2hhcmVkL1NlY3VyaXR5T3Jp
Z2luRGF0YS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNlY3VyaXR5T3JpZ2luRGF0YTo6ZW5jb2Rl
KToKKyAgICAgICAgKiBTaGFyZWQvU2Vzc2lvblN0YXRlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
U2Vzc2lvblN0YXRlOjplbmNvZGUpOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVCaXRtYXAu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkhhbmRsZTo6ZW5jb2RlKToK
KyAgICAgICAgKiBTaGFyZWQvU2hhcmVkV29ya2VyUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZFdvcmtlclByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnM6OmVuY29kZSk6CisgICAgICAgICogU2hhcmVkL1N0YXRpc3RpY3NEYXRhLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6U3RhdGlzdGljc0RhdGE6OmVuY29kZSk6CisgICAgICAgICogU2hhcmVkL1N0
cmluZ1BhaXJWZWN0b3IuaDoKKyAgICAgICAgKFdlYktpdDo6U3RyaW5nUGFpclZlY3Rvcjo6ZW5j
b2RlKToKKyAgICAgICAgKiBTaGFyZWQvVXBkYXRlSW5mby5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlVwZGF0ZUluZm86OmVuY29kZSk6CisgICAgICAgICogU2hhcmVkL1VzZXJNZXNzYWdlQ29kZXJz
Lmg6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZXNzYWdlRW5jb2Rlcjo6YmFzZUVuY29kZSk6Cisg
ICAgICAgICogU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjplbmNvZGUpOgorICAgICAgICAqIFNoYXJlZC9X
ZWJDb250ZXh0TWVudUl0ZW1EYXRhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1l
bnVJdGVtRGF0YTo6ZW5jb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViRXZlbnQuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJFdmVudDo6ZW5jb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViR2Vz
dHVyZUV2ZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViR2VzdHVyZUV2ZW50OjplbmNvZGUp
OgorICAgICAgICAqIFNoYXJlZC9XZWJIaXRUZXN0UmVzdWx0LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViSGl0VGVzdFJlc3VsdDo6RGF0YTo6ZW5jb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2Vi
S2V5Ym9hcmRFdmVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYktleWJvYXJkRXZlbnQ6OmVu
Y29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYk1vdXNlRXZlbnQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJNb3VzZUV2ZW50OjplbmNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJOYXZpZ2F0
aW9uRGF0YVN0b3JlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYk5hdmlnYXRpb25EYXRhU3RvcmU6
OmVuY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUpOgor
ICAgICAgICAqIFNoYXJlZC9XZWJQYWdlR3JvdXBEYXRhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZUdyb3VwRGF0YTo6ZW5jb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViUGxhdGZvcm1U
b3VjaFBvaW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1Ub3VjaFBvaW50Ojpl
bmNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJQb3B1cEl0ZW0uY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQb3B1cEl0ZW06OmVuY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYlByZWZlcmVu
Y2VzU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjplbmNv
ZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKToK
KyAgICAgICAgKiBTaGFyZWQvV2ViVG91Y2hFdmVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlRvdWNoRXZlbnQ6OmVuY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYldoZWVsRXZlbnQuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJXaGVlbEV2ZW50OjplbmNvZGUpOgorICAgICAgICAqIFNo
YXJlZC9jZi9Bcmd1bWVudENvZGVyc0NGLmNwcDoKKyAgICAgICAgKENvcmVJUEM6OmVuY29kZSk6
CisgICAgICAgIChDb3JlSVBDOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9jZi9Bcmd1bWVu
dENvZGVyc0NGLmg6CisgICAgICAgIChDb3JlSVBDKToKKyAgICAgICAgKiBTaGFyZWQvbWFjL0Fy
Z3VtZW50Q29kZXJzTWFjLmg6CisgICAgICAgIChDb3JlSVBDKToKKyAgICAgICAgKiBTaGFyZWQv
bWFjL0FyZ3VtZW50Q29kZXJzTWFjLm1tOgorICAgICAgICAoQ29yZUlQQzo6ZW5jb2RlKToKKyAg
ICAgICAgKiBTaGFyZWQvbWFjL0F0dHJpYnV0ZWRTdHJpbmcubW06CisgICAgICAgIChXZWJLaXQ6
OkF0dHJpYnV0ZWRTdHJpbmc6OmVuY29kZSk6CisgICAgICAgICogU2hhcmVkL21hYy9Db2xvclNw
YWNlRGF0YS5tbToKKyAgICAgICAgKFdlYktpdDo6Q29sb3JTcGFjZURhdGE6OmVuY29kZSk6Cisg
ICAgICAgICogU2hhcmVkL21hYy9LZXljaGFpbkF0dHJpYnV0ZS5jcHA6CisgICAgICAgIChDb3Jl
SVBDOjplbmNvZGUpOgorICAgICAgICAqIFNoYXJlZC9tYWMvS2V5Y2hhaW5BdHRyaWJ1dGUuaDoK
KyAgICAgICAgKENvcmVJUEMpOgorICAgICAgICAqIFNoYXJlZC9tYWMvTGF5ZXJUcmVlQ29udGV4
dE1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlQ29udGV4dDo6ZW5jb2RlKToKKyAg
ICAgICAgKiBTaGFyZWQvbWFjL1BsYXRmb3JtQ2VydGlmaWNhdGVJbmZvLm1tOgorICAgICAgICAo
V2ViS2l0OjpQbGF0Zm9ybUNlcnRpZmljYXRlSW5mbzo6ZW5jb2RlKToKKyAgICAgICAgKiBTaGFy
ZWQvbWFjL1NhbmRib3hFeHRlbnNpb25NYWMubW06CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hF
eHRlbnNpb246OkhhbmRsZTo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlOjpkZWNvZGUpOgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGVBcnJheTo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlQXJyYXk6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL21hYy9TZWNJdGVtUmVx
dWVzdERhdGEuY3BwOgorICAgICAgICAoV2ViS2l0OjpTZWNJdGVtUmVxdWVzdERhdGE6OmVuY29k
ZSk6CisgICAgICAgICogU2hhcmVkL21hYy9TZWNJdGVtUmVzcG9uc2VEYXRhLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6U2VjSXRlbVJlc3BvbnNlRGF0YTo6ZW5jb2RlKToKKyAgICAgICAgKiBTaGFy
ZWQvbWFjL1NlY0tleWNoYWluSXRlbVJlcXVlc3REYXRhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
U2VjS2V5Y2hhaW5JdGVtUmVxdWVzdERhdGE6OmVuY29kZSk6CisgICAgICAgIChXZWJLaXQ6OlNl
Y0tleWNoYWluSXRlbVJlcXVlc3REYXRhOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9tYWMv
U2VjS2V5Y2hhaW5JdGVtUmVzcG9uc2VEYXRhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2VjS2V5
Y2hhaW5JdGVtUmVzcG9uc2VEYXRhOjplbmNvZGUpOgorICAgICAgICAqIFNoYXJlZC9tYWMvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tOgorICAgICAgICAoQ29yZUlQQzo6OjplbmNvZGVQbGF0
Zm9ybURhdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZW5jb2Rl
TWVzc2FnZUJvZHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0VXNlck1lc3NhZ2VD
b2RlcnMuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dFVzZXJNZXNzYWdlRW5jb2Rlcjo6
ZW5jb2RlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlVXNlck1lc3NhZ2VDb2RlcnMuaDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVV
c2VyTWVzc2FnZUVuY29kZXI6OmVuY29kZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpbjo6UGFyYW1ldGVyczo6ZW5jb2Rl
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvbm5lY3Rpb25Ub1VJUHJvY2Vzcy5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkNvbm5lY3Rpb25Ub1VJUHJvY2Vzczo6ZW5jb2RlTWVzc2FnZUJv
ZHkpOgorCiAyMDEyLTEwLTI5ICBTZXJnaW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjEzMDc1NSk6IEFsbCBXZWJLaXQyIHVuaXQgdGVz
dHMgYXJlIGZhaWxpbmcgaW4gV2ViS2l0MiBib3QKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtL0NvcmVJUEMvSGFuZGxlTWVzc2FnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtL0NvcmVJUEMvSGFuZGxlTWVzc2FnZS5oCShyZXZpc2lvbiAxMzI4NzEpCisrKyBT
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0hhbmRsZU1lc3NhZ2UuaAkod29ya2luZyBj
b3B5KQpAQCAtMzMxLDcgKzMzMSw3IEBAIHZvaWQgaGFuZGxlTWVzc2FnZShNZXNzYWdlRGVjb2Rl
ciYgZGVjb2QKIAogICAgIHR5cGVuYW1lIFQ6OlJlcGx5OjpWYWx1ZVR5cGUgcmVwbHlBcmd1bWVu
dHM7CiAgICAgY2FsbE1lbWJlckZ1bmN0aW9uKGFyZ3VtZW50cywgcmVwbHlBcmd1bWVudHMsIG9i
amVjdCwgZnVuY3Rpb24pOwotICAgIHJlcGx5RW5jb2Rlci5lbmNvZGUocmVwbHlBcmd1bWVudHMp
OworICAgIHJlcGx5RW5jb2RlciA8PCByZXBseUFyZ3VtZW50czsKIH0KIAogdGVtcGxhdGU8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgQywgdHlwZW5hbWUgTUY+CkBAIC0zNjEsNyArMzYxLDcgQEAgdm9p
ZCBoYW5kbGVNZXNzYWdlVmFyaWFkaWMoTWVzc2FnZURlY29kZQogCiAgICAgdHlwZW5hbWUgVDo6
UmVwbHk6OlZhbHVlVHlwZSByZXBseUFyZ3VtZW50czsKICAgICBjYWxsTWVtYmVyRnVuY3Rpb24o
YXJndW1lbnRzLCBkZWNvZGVyLCByZXBseUFyZ3VtZW50cywgb2JqZWN0LCBmdW5jdGlvbik7Ci0g
ICAgcmVwbHlFbmNvZGVyLmVuY29kZShyZXBseUFyZ3VtZW50cyk7CisgICAgcmVwbHlFbmNvZGVy
IDw8IHJlcGx5QXJndW1lbnRzOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBD
LCB0eXBlbmFtZSBNRj4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvU3Ry
aW5nUmVmZXJlbmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9D
b3JlSVBDL1N0cmluZ1JlZmVyZW5jZS5jcHAJKHJldmlzaW9uIDEzMjg3MSkKKysrIFNvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvU3RyaW5nUmVmZXJlbmNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzUsMTMgKzM1LDEzIEBAIG5hbWVzcGFjZSBDb3JlSVBDIHsKIAogdm9pZCBTdHJpbmdS
ZWZlcmVuY2U6OmVuY29kZShBcmd1bWVudEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAg
ZW5jb2Rlci5lbmNvZGVWYXJpYWJsZUxlbmd0aEJ5dGVBcnJheShEYXRhUmVmZXJlbmNlKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1fZGF0YSksIG1fc2l6ZSkpOworICAgIGVuY29k
ZXIgPDwgRGF0YVJlZmVyZW5jZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihtX2Rh
dGEpLCBtX3NpemUpOwogfQogCiBib29sIFN0cmluZ1JlZmVyZW5jZTo6ZGVjb2RlKEFyZ3VtZW50
RGVjb2RlciogZGVjb2RlciwgU3RyaW5nUmVmZXJlbmNlJiByZXN1bHQpCiB7CiAgICAgRGF0YVJl
ZmVyZW5jZSBkYXRhUmVmZXJlbmNlOwotICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlVmFyaWFibGVM
ZW5ndGhCeXRlQXJyYXkoZGF0YVJlZmVyZW5jZSkpCisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUo
ZGF0YVJlZmVyZW5jZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJlc3VsdC5tX2Rh
dGEgPSByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhUmVmZXJlbmNlLmRhdGEoKSk7
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL21hYy9NYWNoUG9ydC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvbWFjL01hY2hQb3J0
LmgJKHJldmlzaW9uIDEzMjg3MSkKKysrIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMv
bWFjL01hY2hQb3J0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgog
CiAgICAgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIHsK
LSAgICAgICAgZW5jb2Rlci5lbmNvZGUoQXR0YWNobWVudChtX3BvcnQsIG1fZGlzcG9zaXRpb24p
KTsKKyAgICAgICAgZW5jb2RlciA8PCBBdHRhY2htZW50KG1fcG9ydCwgbV9kaXNwb3NpdGlvbik7
CiAgICAgfQogCiAgICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2Rl
ciwgTWFjaFBvcnQmIHApCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9tYWMvU2hhcmVk
TWVtb3J5TWFjLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9tYWMv
U2hhcmVkTWVtb3J5TWFjLmNwcAkocmV2aXNpb24gMTMyODcxKQorKysgU291cmNlL1dlYktpdDIv
UGxhdGZvcm0vbWFjL1NoYXJlZE1lbW9yeU1hYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3LDgg
KzU3LDggQEAgYm9vbCBTaGFyZWRNZW1vcnk6OkhhbmRsZTo6aXNOdWxsKCkgY29ucwogCiB2b2lk
IFNoYXJlZE1lbW9yeTo6SGFuZGxlOjplbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAogewotICAgIGVuY29kZXIuZW5jb2RlKHN0YXRpY19jYXN0PHVpbnQ2NF90
PihtX3NpemUpKTsKLSAgICBlbmNvZGVyLmVuY29kZShDb3JlSVBDOjpNYWNoUG9ydChtX3BvcnQs
IE1BQ0hfTVNHX1RZUEVfTU9WRV9TRU5EKSk7CisgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1
aW50NjRfdD4obV9zaXplKTsKKyAgICBlbmNvZGVyIDw8IENvcmVJUEM6Ok1hY2hQb3J0KG1fcG9y
dCwgTUFDSF9NU0dfVFlQRV9NT1ZFX1NFTkQpOwogICAgIG1fcG9ydCA9IE1BQ0hfUE9SVF9OVUxM
OwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNyZWF0aW9u
UGFyYW1ldGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vz
cy9QbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMuY3BwCShyZXZpc2lvbiAxMzI4NzEpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNyZWF0aW9uUGFyYW1ldGVycy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ3LDE3ICs0NywxNyBAQCBQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnM6
OlBsdWdpbkNyZWF0aW9uCiAKIHZvaWQgUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUo
Q29yZUlQQzo6QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewotICAgIGVuY29kZXIu
ZW5jb2RlKHBsdWdpbkluc3RhbmNlSUQpOwotICAgIGVuY29kZXIuZW5jb2RlKHdpbmRvd05QT2Jq
ZWN0SUQpOwotICAgIGVuY29kZXIuZW5jb2RlKHBhcmFtZXRlcnMpOwotICAgIGVuY29kZXIuZW5j
b2RlKHVzZXJBZ2VudCk7Ci0gICAgZW5jb2Rlci5lbmNvZGUoY29udGVudHNTY2FsZUZhY3Rvcik7
Ci0gICAgZW5jb2Rlci5lbmNvZGUoaXNQcml2YXRlQnJvd3NpbmdFbmFibGVkKTsKLSAgICBlbmNv
ZGVyLmVuY29kZShhc3luY2hyb25vdXNDcmVhdGlvbkluY29tcGxldGUpOwotICAgIGVuY29kZXIu
ZW5jb2RlKGFydGlmaWNpYWxQbHVnaW5Jbml0aWFsaXphdGlvbkRlbGF5RW5hYmxlZCk7CisgICAg
ZW5jb2RlciA8PCBwbHVnaW5JbnN0YW5jZUlEOworICAgIGVuY29kZXIgPDwgd2luZG93TlBPYmpl
Y3RJRDsKKyAgICBlbmNvZGVyIDw8IHBhcmFtZXRlcnM7CisgICAgZW5jb2RlciA8PCB1c2VyQWdl
bnQ7CisgICAgZW5jb2RlciA8PCBjb250ZW50c1NjYWxlRmFjdG9yOworICAgIGVuY29kZXIgPDwg
aXNQcml2YXRlQnJvd3NpbmdFbmFibGVkOworICAgIGVuY29kZXIgPDwgYXN5bmNocm9ub3VzQ3Jl
YXRpb25JbmNvbXBsZXRlOworICAgIGVuY29kZXIgPDwgYXJ0aWZpY2lhbFBsdWdpbkluaXRpYWxp
emF0aW9uRGVsYXlFbmFibGVkOwogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQot
ICAgIGVuY29kZXIuZW5jb2RlKGlzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQpOworICAg
IGVuY29kZXIgPDwgaXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZDsKICNlbmRpZgogfQog
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRGljdGlvbmFyeVBvcHVwSW5mby5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0RpY3Rpb25hcnlQb3B1cEluZm8uY3Bw
CShyZXZpc2lvbiAxMzI4NzEpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRGljdGlvbmFyeVBv
cHVwSW5mby5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDE1ICszNiwxNSBAQCBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogdm9pZCBEaWN0aW9uYXJ5UG9wdXBJbmZvOjplbmNvZGUoQ29yZUlQQzo6QXJn
dW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewotICAgIGVuY29kZXIuZW5jb2RlKG9yaWdp
bik7Ci0gICAgZW5jb2Rlci5lbmNvZGUoZm9udEluZm8pOworICAgIGVuY29kZXIgPDwgb3JpZ2lu
OworICAgIGVuY29kZXIgPDwgZm9udEluZm87CiAgICAgZW5jb2Rlci5lbmNvZGVFbnVtKHR5cGUp
OwogCiAjaWYgUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDEwNzAKICAgICBib29sIGhhZE9wdGlvbnMgPSBvcHRpb25zOwotICAgIGVuY29kZXIuZW5j
b2RlKGhhZE9wdGlvbnMpOworICAgIGVuY29kZXIgPDwgaGFkT3B0aW9uczsKICAgICBpZiAoaGFk
T3B0aW9ucykKLSAgICAgICAgQ29yZUlQQzo6ZW5jb2RlKCZlbmNvZGVyLCBvcHRpb25zLmdldCgp
KTsKKyAgICAgICAgQ29yZUlQQzo6ZW5jb2RlKGVuY29kZXIsIG9wdGlvbnMuZ2V0KCkpOwogI2Vu
ZGlmCiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9FZGl0b3JTdGF0ZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0VkaXRvclN0YXRlLmNwcAkocmV2aXNp
b24gMTMyODcxKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL0VkaXRvclN0YXRlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzMsMjMgKzMzLDIzIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiB2b2lk
IEVkaXRvclN0YXRlOjplbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBj
b25zdAogewotICAgIGVuY29kZXIuZW5jb2RlKHNob3VsZElnbm9yZUNvbXBvc2l0aW9uU2VsZWN0
aW9uQ2hhbmdlKTsKLSAgICBlbmNvZGVyLmVuY29kZShzZWxlY3Rpb25Jc05vbmUpOwotICAgIGVu
Y29kZXIuZW5jb2RlKHNlbGVjdGlvbklzUmFuZ2UpOwotICAgIGVuY29kZXIuZW5jb2RlKGlzQ29u
dGVudEVkaXRhYmxlKTsKLSAgICBlbmNvZGVyLmVuY29kZShpc0NvbnRlbnRSaWNobHlFZGl0YWJs
ZSk7Ci0gICAgZW5jb2Rlci5lbmNvZGUoaXNJblBhc3N3b3JkRmllbGQpOwotICAgIGVuY29kZXIu
ZW5jb2RlKGhhc0NvbXBvc2l0aW9uKTsKKyAgICBlbmNvZGVyIDw8IHNob3VsZElnbm9yZUNvbXBv
c2l0aW9uU2VsZWN0aW9uQ2hhbmdlOworICAgIGVuY29kZXIgPDwgc2VsZWN0aW9uSXNOb25lOwor
ICAgIGVuY29kZXIgPDwgc2VsZWN0aW9uSXNSYW5nZTsKKyAgICBlbmNvZGVyIDw8IGlzQ29udGVu
dEVkaXRhYmxlOworICAgIGVuY29kZXIgPDwgaXNDb250ZW50UmljaGx5RWRpdGFibGU7CisgICAg
ZW5jb2RlciA8PCBpc0luUGFzc3dvcmRGaWVsZDsKKyAgICBlbmNvZGVyIDw8IGhhc0NvbXBvc2l0
aW9uOwogCiAjaWYgUExBVEZPUk0oUVQpCi0gICAgZW5jb2Rlci5lbmNvZGUoY3Vyc29yUG9zaXRp
b24pOwotICAgIGVuY29kZXIuZW5jb2RlKGFuY2hvclBvc2l0aW9uKTsKLSAgICBlbmNvZGVyLmVu
Y29kZShlZGl0b3JSZWN0KTsKLSAgICBlbmNvZGVyLmVuY29kZShjdXJzb3JSZWN0KTsKLSAgICBl
bmNvZGVyLmVuY29kZShjb21wb3NpdGlvblJlY3QpOwotICAgIGVuY29kZXIuZW5jb2RlKGlucHV0
TWV0aG9kSGludHMpOwotICAgIGVuY29kZXIuZW5jb2RlKHNlbGVjdGVkVGV4dCk7Ci0gICAgZW5j
b2Rlci5lbmNvZGUoc3Vycm91bmRpbmdUZXh0KTsKKyAgICBlbmNvZGVyIDw8IGN1cnNvclBvc2l0
aW9uOworICAgIGVuY29kZXIgPDwgYW5jaG9yUG9zaXRpb247CisgICAgZW5jb2RlciA8PCBlZGl0
b3JSZWN0OworICAgIGVuY29kZXIgPDwgY3Vyc29yUmVjdCk7CisgICAgZW5jb2RlciA8PCBjb21w
b3NpdGlvblJlY3Q7CisgICAgZW5jb2RlciA8PCBpbnB1dE1ldGhvZEhpbnRzOworICAgIGVuY29k
ZXIgPDwgc2VsZWN0ZWRUZXh0OworICAgIGVuY29kZXIgPDwgc3Vycm91bmRpbmdUZXh0OwogI2Vu
ZGlmCiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Gb250SW5mby5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0ZvbnRJbmZvLmNwcAkocmV2aXNpb24gMTMy
ODcxKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL0ZvbnRJbmZvLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzcsOSArMzcsOSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIHZvaWQgRm9udEluZm86OmVu
Y29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAjaWYgUExB
VEZPUk0oTUFDKQotICAgIGVuY29kZXIuZW5jb2RlKHN0YXRpY19jYXN0PGJvb2w+KGZvbnRBdHRy
aWJ1dGVEaWN0aW9uYXJ5KSk7CisgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDxib29sPihmb250
QXR0cmlidXRlRGljdGlvbmFyeSk7CiAgICAgaWYgKGZvbnRBdHRyaWJ1dGVEaWN0aW9uYXJ5KQot
ICAgICAgICBDb3JlSVBDOjplbmNvZGUoJmVuY29kZXIsIGZvbnRBdHRyaWJ1dGVEaWN0aW9uYXJ5
LmdldCgpKTsKKyAgICAgICAgQ29yZUlQQzo6ZW5jb2RlKGVuY29kZXIsIGZvbnRBdHRyaWJ1dGVE
aWN0aW9uYXJ5LmdldCgpKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGVuY29kZXIpOwogI2Vu
ZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvT3JpZ2luQW5kRGF0YWJhc2VzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvT3JpZ2luQW5kRGF0YWJhc2VzLmNw
cAkocmV2aXNpb24gMTMyODcxKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL09yaWdpbkFuZERh
dGFiYXNlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDEwICszNiwxMCBAQCBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogdm9pZCBPcmlnaW5BbmREYXRhYmFzZXM6OmVuY29kZShDb3JlSVBDOjpBcmd1
bWVudEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAgZW5jb2Rlci5lbmNvZGUob3JpZ2lu
SWRlbnRpZmllcik7Ci0gICAgZW5jb2Rlci5lbmNvZGUob3JpZ2luUXVvdGEpOwotICAgIGVuY29k
ZXIuZW5jb2RlKG9yaWdpblVzYWdlKTsKLSAgICBlbmNvZGVyLmVuY29kZShkYXRhYmFzZXMpOwor
ICAgIGVuY29kZXIgPDwgb3JpZ2luSWRlbnRpZmllcjsKKyAgICBlbmNvZGVyIDw8IG9yaWdpblF1
b3RhOworICAgIGVuY29kZXIgPDwgb3JpZ2luVXNhZ2U7CisgICAgZW5jb2RlciA8PCBkYXRhYmFz
ZXM7CiB9CiAKIGJvb2wgT3JpZ2luQW5kRGF0YWJhc2VzOjpkZWNvZGUoQ29yZUlQQzo6QXJndW1l
bnREZWNvZGVyKiBkZWNvZGVyLCBPcmlnaW5BbmREYXRhYmFzZXMmIG9yaWdpbkFuZERhdGFiYXNl
cykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbGF0Zm9ybVBvcHVwTWVudURhdGEuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbGF0Zm9ybVBvcHVwTWVudURh
dGEuY3BwCShyZXZpc2lvbiAxMzI4NzEpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGxhdGZv
cm1Qb3B1cE1lbnVEYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsMjUgKzQ3LDI1IEBAIFBs
YXRmb3JtUG9wdXBNZW51RGF0YTo6UGxhdGZvcm1Qb3B1cE1lbnUKIHZvaWQgUGxhdGZvcm1Qb3B1
cE1lbnVEYXRhOjplbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb25z
dAogewogI2lmIFBMQVRGT1JNKFdJTikKLSAgICBlbmNvZGVyLmVuY29kZShtX2NsaWVudFBhZGRp
bmdMZWZ0KTsKLSAgICBlbmNvZGVyLmVuY29kZShtX2NsaWVudFBhZGRpbmdSaWdodCk7Ci0gICAg
ZW5jb2Rlci5lbmNvZGUobV9jbGllbnRJbnNldExlZnQpOwotICAgIGVuY29kZXIuZW5jb2RlKG1f
Y2xpZW50SW5zZXRSaWdodCk7Ci0gICAgZW5jb2Rlci5lbmNvZGUobV9wb3B1cFdpZHRoKTsKLSAg
ICBlbmNvZGVyLmVuY29kZShtX2l0ZW1IZWlnaHQpOworICAgIGVuY29kZXIgPDwgbV9jbGllbnRQ
YWRkaW5nTGVmdDsKKyAgICBlbmNvZGVyIDw8IG1fY2xpZW50UGFkZGluZ1JpZ2h0OworICAgIGVu
Y29kZXIgPDwgbV9jbGllbnRJbnNldExlZnQ7CisgICAgZW5jb2RlciA8PCBtX2NsaWVudEluc2V0
UmlnaHQ7CisgICAgZW5jb2RlciA8PCBtX3BvcHVwV2lkdGg7CisgICAgZW5jb2RlciA8PCBtX2l0
ZW1IZWlnaHQ7CiAKICAgICBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBub3RTZWxlY3RlZEJhY2tp
bmdTdG9yZUhhbmRsZTsKICAgICBtX25vdFNlbGVjdGVkQmFja2luZ1N0b3JlLT5jcmVhdGVIYW5k
bGUobm90U2VsZWN0ZWRCYWNraW5nU3RvcmVIYW5kbGUpOwotICAgIGVuY29kZXIuZW5jb2RlKG5v
dFNlbGVjdGVkQmFja2luZ1N0b3JlSGFuZGxlKTsKKyAgICBlbmNvZGVyIDw8IG5vdFNlbGVjdGVk
QmFja2luZ1N0b3JlSGFuZGxlOwogCiAgICAgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgc2VsZWN0
ZWRCYWNraW5nU3RvcmVIYW5kbGU7CiAgICAgbV9zZWxlY3RlZEJhY2tpbmdTdG9yZS0+Y3JlYXRl
SGFuZGxlKHNlbGVjdGVkQmFja2luZ1N0b3JlSGFuZGxlKTsKLSAgICBlbmNvZGVyLmVuY29kZShz
ZWxlY3RlZEJhY2tpbmdTdG9yZUhhbmRsZSk7CisgICAgZW5jb2RlciA8PCBzZWxlY3RlZEJhY2tp
bmdTdG9yZUhhbmRsZTsKICNlbGlmIFBMQVRGT1JNKE1BQykKLSAgICBlbmNvZGVyLmVuY29kZShm
b250SW5mbyk7Ci0gICAgZW5jb2Rlci5lbmNvZGUoc2hvdWxkUG9wT3Zlcik7CisgICAgZW5jb2Rl
ciA8PCBmb250SW5mbzsKKyAgICBlbmNvZGVyIDw8IHNob3VsZFBvcE92ZXI7CiAjZWxpZiBQTEFU
Rk9STShRVCkKLSAgICBlbmNvZGVyLmVuY29kZShtdWx0aXBsZVNlbGVjdGlvbnMpOworICAgIGVu
Y29kZXIgPDwgbXVsdGlwbGVTZWxlY3Rpb25zOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZW5j
b2Rlcik7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9QcmludEluZm8uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9QcmludEluZm8uY3BwCShyZXZp
c2lvbiAxMzI4NzEpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUHJpbnRJbmZvLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDUsOSArNDUsOSBAQCBQcmludEluZm86OlByaW50SW5mbygpCiAKIHZv
aWQgUHJpbnRJbmZvOjplbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBj
b25zdAogewotICAgIGVuY29kZXIuZW5jb2RlKHBhZ2VTZXR1cFNjYWxlRmFjdG9yKTsKLSAgICBl
bmNvZGVyLmVuY29kZShhdmFpbGFibGVQYXBlcldpZHRoKTsKLSAgICBlbmNvZGVyLmVuY29kZShh
dmFpbGFibGVQYXBlckhlaWdodCk7CisgICAgZW5jb2RlciA8PCBwYWdlU2V0dXBTY2FsZUZhY3Rv
cjsKKyAgICBlbmNvZGVyIDw8IGF2YWlsYWJsZVBhcGVyV2lkdGg7CisgICAgZW5jb2RlciA8PCBh
dmFpbGFibGVQYXBlckhlaWdodDsKIAogI2lmIFBMQVRGT1JNKEdUSykKICAgICBDb3JlSVBDOjpl
bmNvZGUoJmVuY29kZXIsIHByaW50U2V0dGluZ3MuZ2V0KCkpOwpJbmRleDogU291cmNlL1dlYktp
dDIvU2hhcmVkL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvU2hhcmVkL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAJKHJldmlzaW9uIDEzMjg3MSkKKysr
IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9TZWN1cml0eU9yaWdpbkRhdGEuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zNyw5ICszNyw5IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiB2b2lkIFNlY3VyaXR5
T3JpZ2luRGF0YTo6ZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciYgZW5jb2RlcikgY29u
c3QKIHsKLSAgICBlbmNvZGVyLmVuY29kZShwcm90b2NvbCk7Ci0gICAgZW5jb2Rlci5lbmNvZGUo
aG9zdCk7Ci0gICAgZW5jb2Rlci5lbmNvZGUocG9ydCk7CisgICAgZW5jb2RlciA8PCBwcm90b2Nv
bDsKKyAgICBlbmNvZGVyIDw8IGhvc3Q7CisgICAgZW5jb2RlciA8PCBwb3J0OwogfQogCiBib29s
IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciogZGVj
b2RlciwgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbkRhdGEpCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvU2Vzc2lvblN0YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvU2Vzc2lvblN0YXRlLmNwcAkocmV2aXNpb24gMTMyODcxKQorKysgU291
cmNlL1dlYktpdDIvU2hhcmVkL1Nlc3Npb25TdGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2
LDggKzY2LDggQEAgYm9vbCBTZXNzaW9uU3RhdGU6OmlzRW1wdHkoKSBjb25zdAogICAgIAogdm9p
ZCBTZXNzaW9uU3RhdGU6OmVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXImIGVuY29kZXIp
IGNvbnN0CiB7Ci0gICAgZW5jb2Rlci5lbmNvZGUobV9saXN0KTsKLSAgICBlbmNvZGVyLmVuY29k
ZShtX2N1cnJlbnRJbmRleCk7CisgICAgZW5jb2RlciA8PCBtX2xpc3Q7CisgICAgZW5jb2RlciA8
PCBtX2N1cnJlbnRJbmRleDsKIH0KIAogYm9vbCBTZXNzaW9uU3RhdGU6OmRlY29kZShDb3JlSVBD
OjpBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFNlc3Npb25TdGF0ZSYgc3RhdGUpCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmNwcAkocmV2aXNpb24gMTMyODcx
KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQxLDkgKzQxLDkgQEAgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGU6OkhhbmRsZSgp
CiAKIHZvaWQgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGU6OmVuY29kZShDb3JlSVBDOjpBcmd1bWVu
dEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAgZW5jb2Rlci5lbmNvZGUobV9oYW5kbGUp
OwotICAgIGVuY29kZXIuZW5jb2RlKG1fc2l6ZSk7Ci0gICAgZW5jb2Rlci5lbmNvZGUobV9mbGFn
cyk7CisgICAgZW5jb2RlciA8PCBtX2hhbmRsZTsKKyAgICBlbmNvZGVyIDw8IG1fc2l6ZTsKKyAg
ICBlbmNvZGVyIDw8IG1fZmxhZ3M7CiB9CiAKIGJvb2wgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGU6
OmRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIEhhbmRsZSYgaGFuZGxl
KQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJlZFdvcmtlclByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9TaGFy
ZWRXb3JrZXJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkocmV2aXNpb24gMTMyODcxKQor
KysgU291cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJlZFdvcmtlclByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxMSArMzgsMTEgQEAgU2hhcmVkV29ya2Vy
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6UwogCiB2b2lkIFNoYXJlZFdvcmtlclByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXImIGVuY29k
ZXIpIGNvbnN0CiB7Ci0gICAgZW5jb2Rlci5lbmNvZGUobWluaW11bUxpZmV0aW1lKTsKLSAgICBl
bmNvZGVyLmVuY29kZSh0ZXJtaW5hdGlvblRpbWVvdXQpOworICAgIGVuY29kZXIgPDwgbWluaW11
bUxpZmV0aW1lOworICAgIGVuY29kZXIgPDwgdGVybWluYXRpb25UaW1lb3V0OwogCiAjaWYgUExB
VEZPUk0oTUFDKQotICAgIGVuY29kZXIuZW5jb2RlKHBhcmVudFByb2Nlc3NOYW1lKTsKKyAgICBl
bmNvZGVyIDw8IHBhcmVudFByb2Nlc3NOYW1lOwogI2VuZGlmCiB9CiAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9TdGF0aXN0aWNzRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvU2hhcmVkL1N0YXRpc3RpY3NEYXRhLmNwcAkocmV2aXNpb24gMTMyODcxKQorKysgU291
cmNlL1dlYktpdDIvU2hhcmVkL1N0YXRpc3RpY3NEYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzIsMTAgKzMyLDEwIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiB2b2lkIFN0YXRpc3RpY3NEYXRh
OjplbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewotICAg
IGVuY29kZXIuZW5jb2RlKHN0YXRpc3RpY3NOdW1iZXJzKTsKLSAgICBlbmNvZGVyLmVuY29kZShq
YXZhU2NyaXB0UHJvdGVjdGVkT2JqZWN0VHlwZUNvdW50cyk7Ci0gICAgZW5jb2Rlci5lbmNvZGUo
amF2YVNjcmlwdE9iamVjdFR5cGVDb3VudHMpOwotICAgIGVuY29kZXIuZW5jb2RlKHdlYkNvcmVD
YWNoZVN0YXRpc3RpY3MpOworICAgIGVuY29kZXIgPDwgc3RhdGlzdGljc051bWJlcnM7CisgICAg
ZW5jb2RlciA8PCBqYXZhU2NyaXB0UHJvdGVjdGVkT2JqZWN0VHlwZUNvdW50czsKKyAgICBlbmNv
ZGVyIDw8IGphdmFTY3JpcHRPYmplY3RUeXBlQ291bnRzOworICAgIGVuY29kZXIgPDwgd2ViQ29y
ZUNhY2hlU3RhdGlzdGljczsKIH0KIAogYm9vbCBTdGF0aXN0aWNzRGF0YTo6ZGVjb2RlKENvcmVJ
UEM6OkFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgU3RhdGlzdGljc0RhdGEmIHN0YXRpc3RpY3NE
YXRhKQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1N0cmluZ1BhaXJWZWN0b3IuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU3RyaW5nUGFpclZlY3Rvci5oCShyZXZp
c2lvbiAxMzI4NzEpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU3RyaW5nUGFpclZlY3Rvci5o
CSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZW5j
b2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICB7Ci0gICAg
ICAgIGVuY29kZXIuZW5jb2RlKG1fc3RyaW5nUGFpclZlY3Rvcik7CisgICAgICAgIGVuY29kZXIg
PDwgbV9zdHJpbmdQYWlyVmVjdG9yOwogICAgIH0KIAogICAgIHN0YXRpYyBib29sIGRlY29kZShD
b3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFN0cmluZ1BhaXJWZWN0b3ImIHN0cmlu
Z1BhaXJWZWN0b3IpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvVXBkYXRlSW5mby5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1VwZGF0ZUluZm8uY3BwCShyZXZp
c2lvbiAxMzI4NzEpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvVXBkYXRlSW5mby5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMyLDE1ICszMiwxNSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdm9p
ZCBVcGRhdGVJbmZvOjplbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBj
b25zdAogewotICAgIGVuY29kZXIuZW5jb2RlKHZpZXdTaXplKTsKLSAgICBlbmNvZGVyLmVuY29k
ZShkZXZpY2VTY2FsZUZhY3Rvcik7Ci0gICAgZW5jb2Rlci5lbmNvZGUoc2Nyb2xsUmVjdCk7Ci0g
ICAgZW5jb2Rlci5lbmNvZGUoc2Nyb2xsT2Zmc2V0KTsKLSAgICBlbmNvZGVyLmVuY29kZSh1cGRh
dGVSZWN0Qm91bmRzKTsKLSAgICBlbmNvZGVyLmVuY29kZSh1cGRhdGVSZWN0cyk7Ci0gICAgZW5j
b2Rlci5lbmNvZGUodXBkYXRlU2NhbGVGYWN0b3IpOwotICAgIGVuY29kZXIuZW5jb2RlKGJpdG1h
cEhhbmRsZSk7Ci0gICAgZW5jb2Rlci5lbmNvZGUoYml0bWFwT2Zmc2V0KTsKKyAgICBlbmNvZGVy
IDw8IHZpZXdTaXplOworICAgIGVuY29kZXIgPDwgZGV2aWNlU2NhbGVGYWN0b3I7CisgICAgZW5j
b2RlciA8PCBzY3JvbGxSZWN0OworICAgIGVuY29kZXIgPDwgc2Nyb2xsT2Zmc2V0OworICAgIGVu
Y29kZXIgPDwgdXBkYXRlUmVjdEJvdW5kczsKKyAgICBlbmNvZGVyIDw8IHVwZGF0ZVJlY3RzOwor
ICAgIGVuY29kZXIgPDwgdXBkYXRlU2NhbGVGYWN0b3I7CisgICAgZW5jb2RlciA8PCBiaXRtYXBI
YW5kbGU7CisgICAgZW5jb2RlciA8PCBiaXRtYXBPZmZzZXQ7CiB9CiAKIGJvb2wgVXBkYXRlSW5m
bzo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgVXBkYXRlSW5mbyYg
cmVzdWx0KQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1VzZXJNZXNzYWdlQ29kZXJzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1VzZXJNZXNzYWdlQ29kZXJzLmgJ
KHJldmlzaW9uIDEzMjg3MSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Vc2VyTWVzc2FnZUNv
ZGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC03MCwxMTYgKzcwLDExNiBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBiYXNlRW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciYgZW5jb2RlciwgQVBJT2Jq
ZWN0OjpUeXBlJiB0eXBlKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKCFtX3Jvb3QpIHsKLSAg
ICAgICAgICAgIGVuY29kZXIuZW5jb2RlKHN0YXRpY19jYXN0PHVpbnQzMl90PihBUElPYmplY3Q6
OlR5cGVOdWxsKSk7CisgICAgICAgICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQzMl90
PihBUElPYmplY3Q6OlR5cGVOdWxsKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICB9CiAKICAgICAgICAgdHlwZSA9IG1fcm9vdC0+dHlwZSgpOwotICAgICAgICBlbmNvZGVyLmVu
Y29kZShzdGF0aWNfY2FzdDx1aW50MzJfdD4odHlwZSkpOworICAgICAgICBlbmNvZGVyIDw8IHN0
YXRpY19jYXN0PHVpbnQzMl90Pih0eXBlKTsKIAogICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKICAg
ICAgICAgY2FzZSBBUElPYmplY3Q6OlR5cGVBcnJheTogewogICAgICAgICAgICAgSW1tdXRhYmxl
QXJyYXkqIGFycmF5ID0gc3RhdGljX2Nhc3Q8SW1tdXRhYmxlQXJyYXkqPihtX3Jvb3QpOwotICAg
ICAgICAgICAgZW5jb2Rlci5lbmNvZGUoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGFycmF5LT5zaXpl
KCkpKTsKKyAgICAgICAgICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGFycmF5
LT5zaXplKCkpOwogICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcnJheS0+c2l6
ZSgpOyArK2kpCi0gICAgICAgICAgICAgICAgZW5jb2Rlci5lbmNvZGUoT3duZXIoYXJyYXktPmF0
KGkpKSk7CisgICAgICAgICAgICAgICAgZW5jb2RlciA8PCBPd25lcihhcnJheS0+YXQoaSkpOwog
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBBUElPYmpl
Y3Q6OlR5cGVEaWN0aW9uYXJ5OiB7CiAgICAgICAgICAgICBJbW11dGFibGVEaWN0aW9uYXJ5KiBk
aWN0aW9uYXJ5ID0gc3RhdGljX2Nhc3Q8SW1tdXRhYmxlRGljdGlvbmFyeSo+KG1fcm9vdCk7CiAg
ICAgICAgICAgICBjb25zdCBJbW11dGFibGVEaWN0aW9uYXJ5OjpNYXBUeXBlJiBtYXAgPSBkaWN0
aW9uYXJ5LT5tYXAoKTsKLSAgICAgICAgICAgIGVuY29kZXIuZW5jb2RlKHN0YXRpY19jYXN0PHVp
bnQ2NF90PihtYXAuc2l6ZSgpKSk7CisgICAgICAgICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0
PHVpbnQ2NF90PihtYXAuc2l6ZSgpKTsKIAogICAgICAgICAgICAgSW1tdXRhYmxlRGljdGlvbmFy
eTo6TWFwVHlwZTo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtYXAuYmVnaW4oKTsKICAgICAgICAgICAg
IEltbXV0YWJsZURpY3Rpb25hcnk6Ok1hcFR5cGU6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1hcC5l
bmQoKTsKICAgICAgICAgICAgIGZvciAoOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgICAg
ICAgICBlbmNvZGVyLmVuY29kZShpdC0+a2V5KTsKLSAgICAgICAgICAgICAgICBlbmNvZGVyLmVu
Y29kZShPd25lcihpdC0+dmFsdWUuZ2V0KCkpKTsKKyAgICAgICAgICAgICAgICBlbmNvZGVyIDw8
IGl0LT5rZXk7CisgICAgICAgICAgICAgICAgZW5jb2RlciA8PCBPd25lcihpdC0+dmFsdWUuZ2V0
KCkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0K
ICAgICAgICAgY2FzZSBBUElPYmplY3Q6OlR5cGVTdHJpbmc6IHsKICAgICAgICAgICAgIFdlYlN0
cmluZyogc3RyaW5nID0gc3RhdGljX2Nhc3Q8V2ViU3RyaW5nKj4obV9yb290KTsKLSAgICAgICAg
ICAgIGVuY29kZXIuZW5jb2RlKHN0cmluZy0+c3RyaW5nKCkpOworICAgICAgICAgICAgZW5jb2Rl
ciA8PCBzdHJpbmctPnN0cmluZygpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
IH0KICAgICAgICAgY2FzZSBBUElPYmplY3Q6OlR5cGVTZXJpYWxpemVkU2NyaXB0VmFsdWU6IHsK
ICAgICAgICAgICAgIFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogc2NyaXB0VmFsdWUgPSBzdGF0
aWNfY2FzdDxXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUqPihtX3Jvb3QpOwotICAgICAgICAgICAg
ZW5jb2Rlci5lbmNvZGVWYXJpYWJsZUxlbmd0aEJ5dGVBcnJheShzY3JpcHRWYWx1ZS0+ZGF0YVJl
ZmVyZW5jZSgpKTsKKyAgICAgICAgICAgIGVuY29kZXIgPDwgc2NyaXB0VmFsdWUtPmRhdGFSZWZl
cmVuY2UoKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgICAgIGNh
c2UgQVBJT2JqZWN0OjpUeXBlQm9vbGVhbjogewogICAgICAgICAgICAgV2ViQm9vbGVhbiogYm9v
bGVhbk9iamVjdCA9IHN0YXRpY19jYXN0PFdlYkJvb2xlYW4qPihtX3Jvb3QpOwotICAgICAgICAg
ICAgZW5jb2Rlci5lbmNvZGUoYm9vbGVhbk9iamVjdC0+dmFsdWUoKSk7CisgICAgICAgICAgICBl
bmNvZGVyIDw8IGJvb2xlYW5PYmplY3QtPnZhbHVlKCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAgICAgfQogICAgICAgICBjYXNlIEFQSU9iamVjdDo6VHlwZURvdWJsZTogewogICAg
ICAgICAgICAgV2ViRG91YmxlKiBkb3VibGVPYmplY3QgPSBzdGF0aWNfY2FzdDxXZWJEb3VibGUq
PihtX3Jvb3QpOwotICAgICAgICAgICAgZW5jb2Rlci5lbmNvZGUoZG91YmxlT2JqZWN0LT52YWx1
ZSgpKTsKKyAgICAgICAgICAgIGVuY29kZXIgPDwgZG91YmxlT2JqZWN0LT52YWx1ZSgpOwogICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBBUElPYmplY3Q6
OlR5cGVVSW50NjQ6IHsKICAgICAgICAgICAgIFdlYlVJbnQ2NCogdWludDY0T2JqZWN0ID0gc3Rh
dGljX2Nhc3Q8V2ViVUludDY0Kj4obV9yb290KTsKLSAgICAgICAgICAgIGVuY29kZXIuZW5jb2Rl
KHVpbnQ2NE9iamVjdC0+dmFsdWUoKSk7CisgICAgICAgICAgICBlbmNvZGVyIDw8IHVpbnQ2NE9i
amVjdC0+dmFsdWUoKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAg
ICAgIGNhc2UgQVBJT2JqZWN0OjpUeXBlUG9pbnQ6IHsKICAgICAgICAgICAgIFdlYlBvaW50KiBw
b2ludE9iamVjdCA9IHN0YXRpY19jYXN0PFdlYlBvaW50Kj4obV9yb290KTsKLSAgICAgICAgICAg
IGVuY29kZXIuZW5jb2RlKHBvaW50T2JqZWN0LT5wb2ludCgpLngpOwotICAgICAgICAgICAgZW5j
b2Rlci5lbmNvZGUocG9pbnRPYmplY3QtPnBvaW50KCkueSk7CisgICAgICAgICAgICBlbmNvZGVy
IDw8IHBvaW50T2JqZWN0LT5wb2ludCgpLng7CisgICAgICAgICAgICBlbmNvZGVyIDw8IHBvaW50
T2JqZWN0LT5wb2ludCgpLnk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIEFQSU9iamVjdDo6VHlwZVNpemU6IHsKICAgICAgICAgICAgIFdlYlNpemUq
IHNpemVPYmplY3QgPSBzdGF0aWNfY2FzdDxXZWJTaXplKj4obV9yb290KTsKLSAgICAgICAgICAg
IGVuY29kZXIuZW5jb2RlKHNpemVPYmplY3QtPnNpemUoKS53aWR0aCk7Ci0gICAgICAgICAgICBl
bmNvZGVyLmVuY29kZShzaXplT2JqZWN0LT5zaXplKCkuaGVpZ2h0KTsKKyAgICAgICAgICAgIGVu
Y29kZXIgPDwgc2l6ZU9iamVjdC0+c2l6ZSgpLndpZHRoOworICAgICAgICAgICAgZW5jb2RlciA8
PCBzaXplT2JqZWN0LT5zaXplKCkuaGVpZ2h0OwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgICAgIH0KICAgICAgICAgY2FzZSBBUElPYmplY3Q6OlR5cGVSZWN0OiB7CiAgICAgICAgICAg
ICBXZWJSZWN0KiByZWN0T2JqZWN0ID0gc3RhdGljX2Nhc3Q8V2ViUmVjdCo+KG1fcm9vdCk7Ci0g
ICAgICAgICAgICBlbmNvZGVyLmVuY29kZShyZWN0T2JqZWN0LT5yZWN0KCkub3JpZ2luLngpOwot
ICAgICAgICAgICAgZW5jb2Rlci5lbmNvZGUocmVjdE9iamVjdC0+cmVjdCgpLm9yaWdpbi55KTsK
LSAgICAgICAgICAgIGVuY29kZXIuZW5jb2RlKHJlY3RPYmplY3QtPnJlY3QoKS5zaXplLndpZHRo
KTsKLSAgICAgICAgICAgIGVuY29kZXIuZW5jb2RlKHJlY3RPYmplY3QtPnJlY3QoKS5zaXplLmhl
aWdodCk7CisgICAgICAgICAgICBlbmNvZGVyIDw8IHJlY3RPYmplY3QtPnJlY3QoKS5vcmlnaW4u
eDsKKyAgICAgICAgICAgIGVuY29kZXIgPDwgcmVjdE9iamVjdC0+cmVjdCgpLm9yaWdpbi55Owor
ICAgICAgICAgICAgZW5jb2RlciA8PCByZWN0T2JqZWN0LT5yZWN0KCkuc2l6ZS53aWR0aDsKKyAg
ICAgICAgICAgIGVuY29kZXIgPDwgcmVjdE9iamVjdC0+cmVjdCgpLnNpemUuaGVpZ2h0OwogICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBBUElPYmplY3Q6
OlR5cGVSZW5kZXJMYXllcjogewogICAgICAgICAgICAgV2ViUmVuZGVyTGF5ZXIqIHJlbmRlckxh
eWVyID0gc3RhdGljX2Nhc3Q8V2ViUmVuZGVyTGF5ZXIqPihtX3Jvb3QpOwotICAgICAgICAgICAg
ZW5jb2Rlci5lbmNvZGUoT3duZXIocmVuZGVyTGF5ZXItPnJlbmRlcmVyKCkpKTsKLSAgICAgICAg
ICAgIGVuY29kZXIuZW5jb2RlKHJlbmRlckxheWVyLT5pc1JlZmxlY3Rpb24oKSk7Ci0gICAgICAg
ICAgICBlbmNvZGVyLmVuY29kZShyZW5kZXJMYXllci0+aXNDbGlwcGluZygpKTsKLSAgICAgICAg
ICAgIGVuY29kZXIuZW5jb2RlKHJlbmRlckxheWVyLT5pc0NsaXBwZWQoKSk7Ci0gICAgICAgICAg
ICBlbmNvZGVyLmVuY29kZShzdGF0aWNfY2FzdDx1aW50MzJfdD4ocmVuZGVyTGF5ZXItPmNvbXBv
c2l0aW5nTGF5ZXJUeXBlKCkpKTsKLSAgICAgICAgICAgIGVuY29kZXIuZW5jb2RlKHJlbmRlckxh
eWVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94KCkpOwotICAgICAgICAgICAgZW5jb2Rlci5lbmNvZGUo
T3duZXIocmVuZGVyTGF5ZXItPm5lZ2F0aXZlWk9yZGVyTGlzdCgpKSk7Ci0gICAgICAgICAgICBl
bmNvZGVyLmVuY29kZShPd25lcihyZW5kZXJMYXllci0+bm9ybWFsRmxvd0xpc3QoKSkpOwotICAg
ICAgICAgICAgZW5jb2Rlci5lbmNvZGUoT3duZXIocmVuZGVyTGF5ZXItPnBvc2l0aXZlWk9yZGVy
TGlzdCgpKSk7CisgICAgICAgICAgICBlbmNvZGVyIDw8IE93bmVyKHJlbmRlckxheWVyLT5yZW5k
ZXJlcigpKTsKKyAgICAgICAgICAgIGVuY29kZXIgPDwgcmVuZGVyTGF5ZXItPmlzUmVmbGVjdGlv
bigpOworICAgICAgICAgICAgZW5jb2RlciA8PCByZW5kZXJMYXllci0+aXNDbGlwcGluZygpOwor
ICAgICAgICAgICAgZW5jb2RlciA8PCByZW5kZXJMYXllci0+aXNDbGlwcGVkKCk7CisgICAgICAg
ICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQzMl90PihyZW5kZXJMYXllci0+Y29tcG9z
aXRpbmdMYXllclR5cGUoKSk7CisgICAgICAgICAgICBlbmNvZGVyIDw8IHJlbmRlckxheWVyLT5h
YnNvbHV0ZUJvdW5kaW5nQm94KCk7CisgICAgICAgICAgICBlbmNvZGVyIDw8IE93bmVyKHJlbmRl
ckxheWVyLT5uZWdhdGl2ZVpPcmRlckxpc3QoKSk7CisgICAgICAgICAgICBlbmNvZGVyIDw8IE93
bmVyKHJlbmRlckxheWVyLT5ub3JtYWxGbG93TGlzdCgpKTsKKyAgICAgICAgICAgIGVuY29kZXIg
PDwgT3duZXIocmVuZGVyTGF5ZXItPnBvc2l0aXZlWk9yZGVyTGlzdCgpKTsKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQVBJT2JqZWN0OjpUeXBlUmVu
ZGVyT2JqZWN0OiB7CiAgICAgICAgICAgICBXZWJSZW5kZXJPYmplY3QqIHJlbmRlck9iamVjdCA9
IHN0YXRpY19jYXN0PFdlYlJlbmRlck9iamVjdCo+KG1fcm9vdCk7Ci0gICAgICAgICAgICBlbmNv
ZGVyLmVuY29kZShyZW5kZXJPYmplY3QtPm5hbWUoKSk7Ci0gICAgICAgICAgICBlbmNvZGVyLmVu
Y29kZShyZW5kZXJPYmplY3QtPmVsZW1lbnRUYWdOYW1lKCkpOwotICAgICAgICAgICAgZW5jb2Rl
ci5lbmNvZGUocmVuZGVyT2JqZWN0LT5lbGVtZW50SUQoKSk7Ci0gICAgICAgICAgICBlbmNvZGVy
LmVuY29kZShPd25lcihyZW5kZXJPYmplY3QtPmVsZW1lbnRDbGFzc05hbWVzKCkpKTsKLSAgICAg
ICAgICAgIGVuY29kZXIuZW5jb2RlKHJlbmRlck9iamVjdC0+YWJzb2x1dGVQb3NpdGlvbigpKTsK
LSAgICAgICAgICAgIGVuY29kZXIuZW5jb2RlKHJlbmRlck9iamVjdC0+ZnJhbWVSZWN0KCkpOwot
ICAgICAgICAgICAgZW5jb2Rlci5lbmNvZGUoT3duZXIocmVuZGVyT2JqZWN0LT5jaGlsZHJlbigp
LmdldCgpKSk7CisgICAgICAgICAgICBlbmNvZGVyIDw8IHJlbmRlck9iamVjdC0+bmFtZSgpOwor
ICAgICAgICAgICAgZW5jb2RlciA8PCByZW5kZXJPYmplY3QtPmVsZW1lbnRUYWdOYW1lKCk7Cisg
ICAgICAgICAgICBlbmNvZGVyIDw8IHJlbmRlck9iamVjdC0+ZWxlbWVudElEKCk7CisgICAgICAg
ICAgICBlbmNvZGVyIDw8IE93bmVyKHJlbmRlck9iamVjdC0+ZWxlbWVudENsYXNzTmFtZXMoKSk7
CisgICAgICAgICAgICBlbmNvZGVyIDw8IHJlbmRlck9iamVjdC0+YWJzb2x1dGVQb3NpdGlvbigp
OworICAgICAgICAgICAgZW5jb2RlciA8PCByZW5kZXJPYmplY3QtPmZyYW1lUmVjdCgpOworICAg
ICAgICAgICAgZW5jb2RlciA8PCBPd25lcihyZW5kZXJPYmplY3QtPmNoaWxkcmVuKCkuZ2V0KCkp
OwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBBUElP
YmplY3Q6OlR5cGVVUkw6IHsKICAgICAgICAgICAgIFdlYlVSTCogdXJsT2JqZWN0ID0gc3RhdGlj
X2Nhc3Q8V2ViVVJMKj4obV9yb290KTsKLSAgICAgICAgICAgIGVuY29kZXIuZW5jb2RlKHVybE9i
amVjdC0+c3RyaW5nKCkpOworICAgICAgICAgICAgZW5jb2RlciA8PCB1cmxPYmplY3QtPnN0cmlu
ZygpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBB
UElPYmplY3Q6OlR5cGVVUkxSZXF1ZXN0OiB7CiAgICAgICAgICAgICBXZWJVUkxSZXF1ZXN0KiB1
cmxSZXF1ZXN0T2JqZWN0ID0gc3RhdGljX2Nhc3Q8V2ViVVJMUmVxdWVzdCo+KG1fcm9vdCk7Ci0g
ICAgICAgICAgICBlbmNvZGVyLmVuY29kZSh1cmxSZXF1ZXN0T2JqZWN0LT5yZXNvdXJjZVJlcXVl
c3QoKSk7CisgICAgICAgICAgICBlbmNvZGVyIDw8IHVybFJlcXVlc3RPYmplY3QtPnJlc291cmNl
UmVxdWVzdCgpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBBUElPYmplY3Q6OlR5cGVVc2VyQ29udGVudFVSTFBhdHRlcm46IHsKICAgICAgICAgICAg
IFdlYlVzZXJDb250ZW50VVJMUGF0dGVybiogdXJsUGF0dGVybiA9IHN0YXRpY19jYXN0PFdlYlVz
ZXJDb250ZW50VVJMUGF0dGVybio+KG1fcm9vdCk7Ci0gICAgICAgICAgICBlbmNvZGVyLmVuY29k
ZSh1cmxQYXR0ZXJuLT5wYXR0ZXJuU3RyaW5nKCkpOworICAgICAgICAgICAgZW5jb2RlciA8PCB1
cmxQYXR0ZXJuLT5wYXR0ZXJuU3RyaW5nKCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgfQogICAgICAgICBjYXNlIEFQSU9iamVjdDo6VHlwZUltYWdlOiB7CkBAIC0xODksMjQg
KzE4OSwyNCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBBU1NFUlQoIWltYWdlLT5iaXRtYXAoKSB8
fCBpbWFnZS0+Yml0bWFwKCktPmlzQmFja2VkQnlTaGFyZWRNZW1vcnkoKSk7ICAgICAgICAgICAg
CiAgICAgICAgICAgICBpZiAoIWltYWdlLT5iaXRtYXAoKSB8fCAhaW1hZ2UtPmJpdG1hcCgpLT5p
c0JhY2tlZEJ5U2hhcmVkTWVtb3J5KCkgfHwgIWltYWdlLT5iaXRtYXAoKS0+Y3JlYXRlSGFuZGxl
KGhhbmRsZSkpIHsKICAgICAgICAgICAgICAgICAvLyBJbml0aWFsIGZhbHNlIGluZGljYXRlcyBu
byBhbGxvY2F0ZWQgYml0bWFwIG9yIGlzIG5vdCBzaGFyZWFibGUuCi0gICAgICAgICAgICAgICAg
ZW5jb2Rlci5lbmNvZGUoZmFsc2UpOworICAgICAgICAgICAgICAgIGVuY29kZXIgPDwgZmFsc2U7
CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CiAKICAgICAgICAg
ICAgIC8vIEluaXRpYWwgdHJ1ZSBpbmRpY2F0ZXMgYSBiaXRtYXAgd2FzIGFsbG9jYXRlZCBhbmQg
aXMgc2hhcmVhYmxlLgotICAgICAgICAgICAgZW5jb2Rlci5lbmNvZGUodHJ1ZSk7CisgICAgICAg
ICAgICBlbmNvZGVyIDw8IHRydWU7CiAKLSAgICAgICAgICAgIGVuY29kZXIuZW5jb2RlKGhhbmRs
ZSk7CisgICAgICAgICAgICBlbmNvZGVyIDw8IGhhbmRsZTsKICAgICAgICAgICAgIHJldHVybiB0
cnVlOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQVBJT2JqZWN0OjpUeXBlRGF0YTogewogICAg
ICAgICAgICAgV2ViRGF0YSogZGF0YSA9IHN0YXRpY19jYXN0PFdlYkRhdGEqPihtX3Jvb3QpOwot
ICAgICAgICAgICAgZW5jb2Rlci5lbmNvZGVWYXJpYWJsZUxlbmd0aEJ5dGVBcnJheShkYXRhLT5k
YXRhUmVmZXJlbmNlKCkpOworICAgICAgICAgICAgZW5jb2RlciA8PCBkYXRhLT5kYXRhUmVmZXJl
bmNlKCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICBjYXNl
IEFQSU9iamVjdDo6VHlwZUNlcnRpZmljYXRlSW5mbzogewogICAgICAgICAgICAgV2ViQ2VydGlm
aWNhdGVJbmZvKiBjZXJ0aWZpY2F0ZUluZm8gPSBzdGF0aWNfY2FzdDxXZWJDZXJ0aWZpY2F0ZUlu
Zm8qPihtX3Jvb3QpOwotICAgICAgICAgICAgZW5jb2Rlci5lbmNvZGUoY2VydGlmaWNhdGVJbmZv
LT5wbGF0Zm9ybUNlcnRpZmljYXRlSW5mbygpKTsKKyAgICAgICAgICAgIGVuY29kZXIgPDwgY2Vy
dGlmaWNhdGVJbmZvLT5wbGF0Zm9ybUNlcnRpZmljYXRlSW5mbygpOwogICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgICAgIH0KICAgICAgICAgZGVmYXVsdDoKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAJKHJldmlzaW9uIDEz
Mjg3MSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjMsMTEgKzYzLDExIEBAIHZvaWQgV2ViQmFja0ZvcndhcmRM
aXN0SXRlbTo6c2V0QmFja0ZvcncKIAogdm9pZCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjplbmNv
ZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewotICAgIGVuY29k
ZXIuZW5jb2RlKG1fb3JpZ2luYWxVUkwpOwotICAgIGVuY29kZXIuZW5jb2RlKG1fdXJsKTsKLSAg
ICBlbmNvZGVyLmVuY29kZShtX3RpdGxlKTsKLSAgICBlbmNvZGVyLmVuY29kZShtX2l0ZW1JRCk7
Ci0gICAgZW5jb2Rlci5lbmNvZGUoQ29yZUlQQzo6RGF0YVJlZmVyZW5jZShtX2JhY2tGb3J3YXJk
RGF0YSkpOworICAgIGVuY29kZXIgPDwgbV9vcmlnaW5hbFVSTDsKKyAgICBlbmNvZGVyIDw8IG1f
dXJsOworICAgIGVuY29kZXIgPDwgbV90aXRsZTsKKyAgICBlbmNvZGVyIDw8IG1faXRlbUlEOwor
ICAgIGVuY29kZXIgPDwgQ29yZUlQQzo6RGF0YVJlZmVyZW5jZShtX2JhY2tGb3J3YXJkRGF0YSk7
CiB9CiAKIFBhc3NSZWZQdHI8V2ViQmFja0ZvcndhcmRMaXN0SXRlbT4gV2ViQmFja0ZvcndhcmRM
aXN0SXRlbTo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciYgZGVjb2RlcikKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb250ZXh0TWVudUl0ZW1EYXRhLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29udGV4dE1lbnVJdGVtRGF0YS5jcHAJ
KHJldmlzaW9uIDEzMjg3MSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb250ZXh0TWVu
dUl0ZW1EYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA4LDEwICsxMDgsMTAgQEAgdm9pZCBX
ZWJDb250ZXh0TWVudUl0ZW1EYXRhOjplbmNvZGUoQ29yZQogewogICAgIGVuY29kZXIuZW5jb2Rl
RW51bShtX3R5cGUpOwogICAgIGVuY29kZXIuZW5jb2RlRW51bShtX2FjdGlvbik7Ci0gICAgZW5j
b2Rlci5lbmNvZGUobV90aXRsZSk7Ci0gICAgZW5jb2Rlci5lbmNvZGUobV9jaGVja2VkKTsKLSAg
ICBlbmNvZGVyLmVuY29kZShtX2VuYWJsZWQpOwotICAgIGVuY29kZXIuZW5jb2RlKG1fc3VibWVu
dSk7CisgICAgZW5jb2RlciA8PCBtX3RpdGxlOworICAgIGVuY29kZXIgPDwgbV9jaGVja2VkOwor
ICAgIGVuY29kZXIgPDwgbV9lbmFibGVkOworICAgIGVuY29kZXIgPDwgbV9zdWJtZW51OwogfQog
CiBib29sIFdlYkNvbnRleHRNZW51SXRlbURhdGE6OmRlY29kZShDb3JlSVBDOjpBcmd1bWVudERl
Y29kZXIqIGRlY29kZXIsIFdlYkNvbnRleHRNZW51SXRlbURhdGEmIGl0ZW0pCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvV2ViRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJFdmVudC5jcHAJKHJldmlzaW9uIDEzMjg3MSkKKysrIFNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJFdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDkgKzQ4LDkgQEAg
V2ViRXZlbnQ6OldlYkV2ZW50KFR5cGUgdHlwZSwgTW9kaWZpZXJzIAogCiB2b2lkIFdlYkV2ZW50
OjplbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewotICAg
IGVuY29kZXIuZW5jb2RlKG1fdHlwZSk7Ci0gICAgZW5jb2Rlci5lbmNvZGUobV9tb2RpZmllcnMp
OwotICAgIGVuY29kZXIuZW5jb2RlKG1fdGltZXN0YW1wKTsKKyAgICBlbmNvZGVyIDw8IG1fdHlw
ZTsKKyAgICBlbmNvZGVyIDw8IG1fbW9kaWZpZXJzOworICAgIGVuY29kZXIgPDwgbV90aW1lc3Rh
bXA7CiB9CiAKIGJvb2wgV2ViRXZlbnQ6OmRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIq
IGRlY29kZXIsIFdlYkV2ZW50JiByZXN1bHQpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
V2ViR2VzdHVyZUV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
V2ViR2VzdHVyZUV2ZW50LmNwcAkocmV2aXNpb24gMTMyODcxKQorKysgU291cmNlL1dlYktpdDIv
U2hhcmVkL1dlYkdlc3R1cmVFdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3LDEwICs1Nywx
MCBAQCB2b2lkIFdlYkdlc3R1cmVFdmVudDo6ZW5jb2RlKENvcmVJUEM6OkFyCiB7CiAgICAgV2Vi
RXZlbnQ6OmVuY29kZShlbmNvZGVyKTsKIAotICAgIGVuY29kZXIuZW5jb2RlKG1fcG9zaXRpb24p
OwotICAgIGVuY29kZXIuZW5jb2RlKG1fZ2xvYmFsUG9zaXRpb24pOwotICAgIGVuY29kZXIuZW5j
b2RlKG1fYXJlYSk7Ci0gICAgZW5jb2Rlci5lbmNvZGUobV9kZWx0YSk7CisgICAgZW5jb2RlciA8
PCBtX3Bvc2l0aW9uOworICAgIGVuY29kZXIgPDwgbV9nbG9iYWxQb3NpdGlvbjsKKyAgICBlbmNv
ZGVyIDw8IG1fYXJlYTsKKyAgICBlbmNvZGVyIDw8IG1fZGVsdGE7CiB9CiAKIGJvb2wgV2ViR2Vz
dHVyZUV2ZW50OjpkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBXZWJH
ZXN0dXJlRXZlbnQmIHQpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViSGl0VGVzdFJl
c3VsdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkhpdFRlc3RS
ZXN1bHQuY3BwCShyZXZpc2lvbiAxMzI4NzEpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vi
SGl0VGVzdFJlc3VsdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDE0ICszNiwxNCBAQCBQYXNz
UmVmUHRyPFdlYkhpdFRlc3RSZXN1bHQ+IFdlYkhpdFRlc3RSCiAKIHZvaWQgV2ViSGl0VGVzdFJl
c3VsdDo6RGF0YTo6ZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciYgZW5jb2RlcikgY29u
c3QKIHsKLSAgICBlbmNvZGVyLmVuY29kZShhYnNvbHV0ZUltYWdlVVJMKTsKLSAgICBlbmNvZGVy
LmVuY29kZShhYnNvbHV0ZVBERlVSTCk7Ci0gICAgZW5jb2Rlci5lbmNvZGUoYWJzb2x1dGVMaW5r
VVJMKTsKLSAgICBlbmNvZGVyLmVuY29kZShhYnNvbHV0ZU1lZGlhVVJMKTsKLSAgICBlbmNvZGVy
LmVuY29kZShsaW5rTGFiZWwpOwotICAgIGVuY29kZXIuZW5jb2RlKGxpbmtUaXRsZSk7Ci0gICAg
ZW5jb2Rlci5lbmNvZGUoaXNDb250ZW50RWRpdGFibGUpOwotICAgIGVuY29kZXIuZW5jb2RlKGVs
ZW1lbnRCb3VuZGluZ0JveCk7CisgICAgZW5jb2RlciA8PCBhYnNvbHV0ZUltYWdlVVJMOworICAg
IGVuY29kZXIgPDwgYWJzb2x1dGVQREZVUkw7CisgICAgZW5jb2RlciA8PCBhYnNvbHV0ZUxpbmtV
Ukw7CisgICAgZW5jb2RlciA8PCBhYnNvbHV0ZU1lZGlhVVJMOworICAgIGVuY29kZXIgPDwgbGlu
a0xhYmVsOworICAgIGVuY29kZXIgPDwgbGlua1RpdGxlOworICAgIGVuY29kZXIgPDwgaXNDb250
ZW50RWRpdGFibGU7CisgICAgZW5jb2RlciA8PCBlbGVtZW50Qm91bmRpbmdCb3g7CiB9CiAKIGJv
b2wgV2ViSGl0VGVzdFJlc3VsdDo6RGF0YTo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2Rl
ciogZGVjb2RlciwgV2ViSGl0VGVzdFJlc3VsdDo6RGF0YSYgaGl0VGVzdFJlc3VsdERhdGEpCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViS2V5Ym9hcmRFdmVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYktleWJvYXJkRXZlbnQuY3BwCShyZXZpc2lv
biAxMzI4NzEpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViS2V5Ym9hcmRFdmVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ5LDE1ICs0OSwxNSBAQCB2b2lkIFdlYktleWJvYXJkRXZlbnQ6
OmVuY29kZShDb3JlSVBDOjpBCiB7CiAgICAgV2ViRXZlbnQ6OmVuY29kZShlbmNvZGVyKTsKIAot
ICAgIGVuY29kZXIuZW5jb2RlKG1fdGV4dCk7Ci0gICAgZW5jb2Rlci5lbmNvZGUobV91bm1vZGlm
aWVkVGV4dCk7Ci0gICAgZW5jb2Rlci5lbmNvZGUobV9rZXlJZGVudGlmaWVyKTsKLSAgICBlbmNv
ZGVyLmVuY29kZShtX3dpbmRvd3NWaXJ0dWFsS2V5Q29kZSk7Ci0gICAgZW5jb2Rlci5lbmNvZGUo
bV9uYXRpdmVWaXJ0dWFsS2V5Q29kZSk7Ci0gICAgZW5jb2Rlci5lbmNvZGUobV9tYWNDaGFyQ29k
ZSk7Ci0gICAgZW5jb2Rlci5lbmNvZGUobV9pc0F1dG9SZXBlYXQpOwotICAgIGVuY29kZXIuZW5j
b2RlKG1faXNLZXlwYWQpOwotICAgIGVuY29kZXIuZW5jb2RlKG1faXNTeXN0ZW1LZXkpOworICAg
IGVuY29kZXIgPDwgbV90ZXh0OworICAgIGVuY29kZXIgPDwgbV91bm1vZGlmaWVkVGV4dDsKKyAg
ICBlbmNvZGVyIDw8IG1fa2V5SWRlbnRpZmllcjsKKyAgICBlbmNvZGVyIDw8IG1fd2luZG93c1Zp
cnR1YWxLZXlDb2RlOworICAgIGVuY29kZXIgPDwgbV9uYXRpdmVWaXJ0dWFsS2V5Q29kZTsKKyAg
ICBlbmNvZGVyIDw8IG1fbWFjQ2hhckNvZGU7CisgICAgZW5jb2RlciA8PCBtX2lzQXV0b1JlcGVh
dDsKKyAgICBlbmNvZGVyIDw8IG1faXNLZXlwYWQ7CisgICAgZW5jb2RlciA8PCBtX2lzU3lzdGVt
S2V5OwogfQogCiBib29sIFdlYktleWJvYXJkRXZlbnQ6OmRlY29kZShDb3JlSVBDOjpBcmd1bWVu
dERlY29kZXIqIGRlY29kZXIsIFdlYktleWJvYXJkRXZlbnQmIHJlc3VsdCkKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9XZWJNb3VzZUV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvV2ViTW91c2VFdmVudC5jcHAJKHJldmlzaW9uIDEzMjg3MSkKKysrIFNv
dXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJNb3VzZUV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
ODIsMTYgKzgyLDE2IEBAIHZvaWQgV2ViTW91c2VFdmVudDo6ZW5jb2RlKENvcmVJUEM6OkFyZ3UK
IHsKICAgICBXZWJFdmVudDo6ZW5jb2RlKGVuY29kZXIpOwogCi0gICAgZW5jb2Rlci5lbmNvZGUo
bV9idXR0b24pOwotICAgIGVuY29kZXIuZW5jb2RlKG1fcG9zaXRpb24pOwotICAgIGVuY29kZXIu
ZW5jb2RlKG1fZ2xvYmFsUG9zaXRpb24pOwotICAgIGVuY29kZXIuZW5jb2RlKG1fZGVsdGFYKTsK
LSAgICBlbmNvZGVyLmVuY29kZShtX2RlbHRhWSk7Ci0gICAgZW5jb2Rlci5lbmNvZGUobV9kZWx0
YVopOwotICAgIGVuY29kZXIuZW5jb2RlKG1fY2xpY2tDb3VudCk7CisgICAgZW5jb2RlciA8PCBt
X2J1dHRvbjsKKyAgICBlbmNvZGVyIDw8IG1fcG9zaXRpb247CisgICAgZW5jb2RlciA8PCBtX2ds
b2JhbFBvc2l0aW9uOworICAgIGVuY29kZXIgPDwgbV9kZWx0YVg7CisgICAgZW5jb2RlciA8PCBt
X2RlbHRhWTsKKyAgICBlbmNvZGVyIDw8IG1fZGVsdGFaOworICAgIGVuY29kZXIgPDwgbV9jbGlj
a0NvdW50OwogCiAjaWYgUExBVEZPUk0oV0lOKQotICAgIGVuY29kZXIuZW5jb2RlKG1fZGlkQWN0
aXZhdGVXZWJWaWV3KTsKKyAgICBlbmNvZGVyIDw8IG1fZGlkQWN0aXZhdGVXZWJWaWV3OwogI2Vu
ZGlmCiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJOYXZpZ2F0aW9uRGF0YVN0
b3JlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYk5hdmlnYXRpb25E
YXRhU3RvcmUuaAkocmV2aXNpb24gMTMyODcxKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1dl
Yk5hdmlnYXRpb25EYXRhU3RvcmUuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsOSArMzcsOSBAQCBu
YW1lc3BhY2UgV2ViS2l0IHsKIHN0cnVjdCBXZWJOYXZpZ2F0aW9uRGF0YVN0b3JlIHsKICAgICB2
b2lkIGVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAg
ewotICAgICAgICBlbmNvZGVyLmVuY29kZSh1cmwpOwotICAgICAgICBlbmNvZGVyLmVuY29kZSh0
aXRsZSk7Ci0gICAgICAgIGVuY29kZXIuZW5jb2RlKG9yaWdpbmFsUmVxdWVzdCk7CisgICAgICAg
IGVuY29kZXIgPDwgdXJsOworICAgICAgICBlbmNvZGVyIDw8IHRpdGxlOworICAgICAgICBlbmNv
ZGVyIDw8IG9yaWdpbmFsUmVxdWVzdDsKICAgICB9CiAKICAgICBzdGF0aWMgYm9vbCBkZWNvZGUo
Q29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBXZWJOYXZpZ2F0aW9uRGF0YVN0b3Jl
JiBzdG9yZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycy5jcHAJKHJldmlzaW9uIDEzMjg3MSkKKysrIFNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzIsNDAgKzMyLDQwIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiB2b2lkIFdlYlBhZ2VDcmVhdGlv
blBhcmFtZXRlcnM6OmVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXImIGVuY29kZXIpIGNv
bnN0CiB7Ci0gICAgZW5jb2Rlci5lbmNvZGUodmlld1NpemUpOwotICAgIGVuY29kZXIuZW5jb2Rl
KGlzQWN0aXZlKTsKLSAgICBlbmNvZGVyLmVuY29kZShpc0ZvY3VzZWQpOwotICAgIGVuY29kZXIu
ZW5jb2RlKGlzVmlzaWJsZSk7Ci0gICAgZW5jb2Rlci5lbmNvZGUoaXNJbldpbmRvdyk7CisgICAg
ZW5jb2RlciA8PCB2aWV3U2l6ZTsKKyAgICBlbmNvZGVyIDw8IGlzQWN0aXZlOworICAgIGVuY29k
ZXIgPDwgaXNGb2N1c2VkOworICAgIGVuY29kZXIgPDwgaXNWaXNpYmxlOworICAgIGVuY29kZXIg
PDwgaXNJbldpbmRvdzsKIAotICAgIGVuY29kZXIuZW5jb2RlKHN0b3JlKTsKKyAgICBlbmNvZGVy
IDw8IHN0b3JlOwogICAgIGVuY29kZXIuZW5jb2RlRW51bShkcmF3aW5nQXJlYVR5cGUpOwotICAg
IGVuY29kZXIuZW5jb2RlKHBhZ2VHcm91cERhdGEpOwotICAgIGVuY29kZXIuZW5jb2RlKGRyYXdz
QmFja2dyb3VuZCk7Ci0gICAgZW5jb2Rlci5lbmNvZGUoZHJhd3NUcmFuc3BhcmVudEJhY2tncm91
bmQpOwotICAgIGVuY29kZXIuZW5jb2RlKGFyZU1lbW9yeUNhY2hlQ2xpZW50Q2FsbHNFbmFibGVk
KTsKLSAgICBlbmNvZGVyLmVuY29kZSh1c2VGaXhlZExheW91dCk7Ci0gICAgZW5jb2Rlci5lbmNv
ZGUoZml4ZWRMYXlvdXRTaXplKTsKKyAgICBlbmNvZGVyIDw8IHBhZ2VHcm91cERhdGE7CisgICAg
ZW5jb2RlciA8PCBkcmF3c0JhY2tncm91bmQ7CisgICAgZW5jb2RlciA8PCBkcmF3c1RyYW5zcGFy
ZW50QmFja2dyb3VuZDsKKyAgICBlbmNvZGVyIDw8IGFyZU1lbW9yeUNhY2hlQ2xpZW50Q2FsbHNF
bmFibGVkOworICAgIGVuY29kZXIgPDwgdXNlRml4ZWRMYXlvdXQ7CisgICAgZW5jb2RlciA8PCBm
aXhlZExheW91dFNpemU7CiAgICAgZW5jb2Rlci5lbmNvZGVFbnVtKHBhZ2luYXRpb25Nb2RlKTsK
LSAgICBlbmNvZGVyLmVuY29kZShwYWdpbmF0aW9uQmVoYXZlc0xpa2VDb2x1bW5zKTsKLSAgICBl
bmNvZGVyLmVuY29kZShwYWdlTGVuZ3RoKTsKLSAgICBlbmNvZGVyLmVuY29kZShnYXBCZXR3ZWVu
UGFnZXMpOwotICAgIGVuY29kZXIuZW5jb2RlKHVzZXJBZ2VudCk7Ci0gICAgZW5jb2Rlci5lbmNv
ZGUoc2Vzc2lvblN0YXRlKTsKLSAgICBlbmNvZGVyLmVuY29kZShoaWdoZXN0VXNlZEJhY2tGb3J3
YXJkSXRlbUlEKTsKLSAgICBlbmNvZGVyLmVuY29kZShjYW5SdW5CZWZvcmVVbmxvYWRDb25maXJt
UGFuZWwpOwotICAgIGVuY29kZXIuZW5jb2RlKGNhblJ1bk1vZGFsKTsKLSAgICBlbmNvZGVyLmVu
Y29kZShkZXZpY2VTY2FsZUZhY3Rvcik7Ci0gICAgZW5jb2Rlci5lbmNvZGUobWVkaWFWb2x1bWUp
OworICAgIGVuY29kZXIgPDwgcGFnaW5hdGlvbkJlaGF2ZXNMaWtlQ29sdW1uczsKKyAgICBlbmNv
ZGVyIDw8IHBhZ2VMZW5ndGg7CisgICAgZW5jb2RlciA8PCBnYXBCZXR3ZWVuUGFnZXM7CisgICAg
ZW5jb2RlciA8PCB1c2VyQWdlbnQ7CisgICAgZW5jb2RlciA8PCBzZXNzaW9uU3RhdGU7CisgICAg
ZW5jb2RlciA8PCBoaWdoZXN0VXNlZEJhY2tGb3J3YXJkSXRlbUlEOworICAgIGVuY29kZXIgPDwg
Y2FuUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsOworICAgIGVuY29kZXIgPDwgY2FuUnVuTW9k
YWw7CisgICAgZW5jb2RlciA8PCBkZXZpY2VTY2FsZUZhY3RvcjsKKyAgICBlbmNvZGVyIDw8IG1l
ZGlhVm9sdW1lOwogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIGVuY29kZXIuZW5jb2RlKGlzU21h
cnRJbnNlcnREZWxldGVFbmFibGVkKTsKKyAgICBlbmNvZGVyIDw8IGlzU21hcnRJbnNlcnREZWxl
dGVFbmFibGVkOwogICAgIGVuY29kZXIuZW5jb2RlRW51bShsYXllckhvc3RpbmdNb2RlKTsKLSAg
ICBlbmNvZGVyLmVuY29kZShjb2xvclNwYWNlKTsKKyAgICBlbmNvZGVyIDw8IGNvbG9yU3BhY2U7
CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKFdJTikKLSAgICBlbmNvZGVyLmVuY29kZShyZWludGVy
cHJldF9jYXN0PHVpbnQ2NF90PihuYXRpdmVXaW5kb3cpKTsKKyAgICBlbmNvZGVyIDw8IHJlaW50
ZXJwcmV0X2Nhc3Q8dWludDY0X3Q+KG5hdGl2ZVdpbmRvdyk7CiAjZW5kaWYKIH0KIApJbmRleDog
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBhZ2VHcm91cERhdGEuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQYWdlR3JvdXBEYXRhLmNwcAkocmV2aXNpb24gMTMy
ODcxKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBhZ2VHcm91cERhdGEuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMiwxMiArMzIsMTIgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHZvaWQg
V2ViUGFnZUdyb3VwRGF0YTo6ZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciYgZW5jb2Rl
cikgY29uc3QKIHsKLSAgICBlbmNvZGVyLmVuY29kZShpZGVudGlmZXIpOwotICAgIGVuY29kZXIu
ZW5jb2RlKHBhZ2VHcm91cElEKTsKLSAgICBlbmNvZGVyLmVuY29kZSh2aXNpYmxlVG9JbmplY3Rl
ZEJ1bmRsZSk7Ci0gICAgZW5jb2Rlci5lbmNvZGUodmlzaWJsZVRvSGlzdG9yeUNsaWVudCk7Ci0g
ICAgZW5jb2Rlci5lbmNvZGUodXNlclN0eWxlU2hlZXRzKTsKLSAgICBlbmNvZGVyLmVuY29kZSh1
c2VyU2NyaXB0cyk7CisgICAgZW5jb2RlciA8PCBpZGVudGlmZXI7CisgICAgZW5jb2RlciA8PCBw
YWdlR3JvdXBJRDsKKyAgICBlbmNvZGVyIDw8IHZpc2libGVUb0luamVjdGVkQnVuZGxlOworICAg
IGVuY29kZXIgPDwgdmlzaWJsZVRvSGlzdG9yeUNsaWVudDsKKyAgICBlbmNvZGVyIDw8IHVzZXJT
dHlsZVNoZWV0czsKKyAgICBlbmNvZGVyIDw8IHVzZXJTY3JpcHRzOwogfQogCiBib29sIFdlYlBh
Z2VHcm91cERhdGE6OmRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFdl
YlBhZ2VHcm91cERhdGEmIGRhdGEpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUGxh
dGZvcm1Ub3VjaFBvaW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
V2ViUGxhdGZvcm1Ub3VjaFBvaW50LmNwcAkocmV2aXNpb24gMTMyODcxKQorKysgU291cmNlL1dl
YktpdDIvU2hhcmVkL1dlYlBsYXRmb3JtVG91Y2hQb2ludC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTU5LDEzICs1OSwxMyBAQCBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ6OldlYlBsYXRmb3JtVG91Y2hQ
CiAKIHZvaWQgV2ViUGxhdGZvcm1Ub3VjaFBvaW50OjplbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRF
bmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewotICAgIGVuY29kZXIuZW5jb2RlKG1faWQpOwotICAg
IGVuY29kZXIuZW5jb2RlKG1fc3RhdGUpOwotICAgIGVuY29kZXIuZW5jb2RlKG1fc2NyZWVuUG9z
aXRpb24pOwotICAgIGVuY29kZXIuZW5jb2RlKG1fcG9zaXRpb24pOwotICAgIGVuY29kZXIuZW5j
b2RlKG1fcmFkaXVzKTsKLSAgICBlbmNvZGVyLmVuY29kZShtX3JvdGF0aW9uQW5nbGUpOwotICAg
IGVuY29kZXIuZW5jb2RlKG1fZm9yY2UpOworICAgIGVuY29kZXIgPDwgbV9pZDsKKyAgICBlbmNv
ZGVyIDw8IG1fc3RhdGU7CisgICAgZW5jb2RlciA8PCBtX3NjcmVlblBvc2l0aW9uOworICAgIGVu
Y29kZXIgPDwgbV9wb3NpdGlvbjsKKyAgICBlbmNvZGVyIDw8IG1fcmFkaXVzOworICAgIGVuY29k
ZXIgPDwgbV9yb3RhdGlvbkFuZ2xlOworICAgIGVuY29kZXIgPDwgbV9mb3JjZTsKIH0KIAogYm9v
bCBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ6OmRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIq
IGRlY29kZXIsIFdlYlBsYXRmb3JtVG91Y2hQb2ludCYgcmVzdWx0KQpJbmRleDogU291cmNlL1dl
YktpdDIvU2hhcmVkL1dlYlBvcHVwSXRlbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYlBvcHVwSXRlbS5jcHAJKHJldmlzaW9uIDEzMjg3MSkKKysrIFNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9XZWJQb3B1cEl0ZW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSwxNCAr
NjksMTQgQEAgV2ViUG9wdXBJdGVtOjpXZWJQb3B1cEl0ZW0oVHlwZSB0eXBlLCBjbwogdm9pZCBX
ZWJQb3B1cEl0ZW06OmVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXImIGVuY29kZXIpIGNv
bnN0CiB7CiAgICAgZW5jb2Rlci5lbmNvZGVFbnVtKG1fdHlwZSk7Ci0gICAgZW5jb2Rlci5lbmNv
ZGUobV90ZXh0KTsKKyAgICBlbmNvZGVyIDw8IG1fdGV4dDsKICAgICBlbmNvZGVyLmVuY29kZUVu
dW0obV90ZXh0RGlyZWN0aW9uKTsKLSAgICBlbmNvZGVyLmVuY29kZShtX2hhc1RleHREaXJlY3Rp
b25PdmVycmlkZSk7Ci0gICAgZW5jb2Rlci5lbmNvZGUobV90b29sVGlwKTsKLSAgICBlbmNvZGVy
LmVuY29kZShtX2FjY2Vzc2liaWxpdHlUZXh0KTsKLSAgICBlbmNvZGVyLmVuY29kZShtX2lzRW5h
YmxlZCk7Ci0gICAgZW5jb2Rlci5lbmNvZGUobV9pc0xhYmVsKTsKLSAgICBlbmNvZGVyLmVuY29k
ZShtX2lzU2VsZWN0ZWQpOworICAgIGVuY29kZXIgPDwgbV9oYXNUZXh0RGlyZWN0aW9uT3ZlcnJp
ZGU7CisgICAgZW5jb2RlciA8PCBtX3Rvb2xUaXA7CisgICAgZW5jb2RlciA8PCBtX2FjY2Vzc2li
aWxpdHlUZXh0OworICAgIGVuY29kZXIgPDwgbV9pc0VuYWJsZWQ7CisgICAgZW5jb2RlciA8PCBt
X2lzTGFiZWw7CisgICAgZW5jb2RlciA8PCBtX2lzU2VsZWN0ZWQ7CiB9CiAKIGJvb2wgV2ViUG9w
dXBJdGVtOjpkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBXZWJQb3B1
cEl0ZW0mIGl0ZW0pCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJlZmVyZW5jZXNT
dG9yZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByZWZlcmVu
Y2VzU3RvcmUuY3BwCShyZXZpc2lvbiAxMzI4NzEpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
V2ViUHJlZmVyZW5jZXNTdG9yZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxLDExICs2MSwxMSBA
QCBXZWJQcmVmZXJlbmNlc1N0b3JlOjpXZWJQcmVmZXJlbmNlc1N0b3JlCiAKIHZvaWQgV2ViUHJl
ZmVyZW5jZXNTdG9yZTo6ZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKIHsKLSAgICBlbmNvZGVyLmVuY29kZShtX3N0cmluZ1ZhbHVlcyk7Ci0gICAgZW5jb2Rl
ci5lbmNvZGUobV9ib29sVmFsdWVzKTsKLSAgICBlbmNvZGVyLmVuY29kZShtX3VpbnQzMlZhbHVl
cyk7Ci0gICAgZW5jb2Rlci5lbmNvZGUobV9kb3VibGVWYWx1ZXMpOwotICAgIGVuY29kZXIuZW5j
b2RlKG1fZmxvYXRWYWx1ZXMpOworICAgIGVuY29kZXIgPDwgbV9zdHJpbmdWYWx1ZXM7CisgICAg
ZW5jb2RlciA8PCBtX2Jvb2xWYWx1ZXM7CisgICAgZW5jb2RlciA8PCBtX3VpbnQzMlZhbHVlczsK
KyAgICBlbmNvZGVyIDw8IG1fZG91YmxlVmFsdWVzOworICAgIGVuY29kZXIgPDwgbV9mbG9hdFZh
bHVlczsKIH0KIAogYm9vbCBXZWJQcmVmZXJlbmNlc1N0b3JlOjpkZWNvZGUoQ29yZUlQQzo6QXJn
dW1lbnREZWNvZGVyKiBkZWNvZGVyLCBXZWJQcmVmZXJlbmNlc1N0b3JlJiByZXN1bHQpCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMuY3BwCShyZXZpc2lvbiAxMzI4NzEpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDY3
ICs1NCw2NyBAQCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpXZWJQcm9jZXNzCiAKIHZv
aWQgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50
RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBlbmNvZGVyLmVuY29kZShpbmplY3RlZEJ1
bmRsZVBhdGgpOwotICAgIGVuY29kZXIuZW5jb2RlKGluamVjdGVkQnVuZGxlUGF0aEV4dGVuc2lv
bkhhbmRsZSk7Ci0gICAgZW5jb2Rlci5lbmNvZGUoYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSk7
Ci0gICAgZW5jb2Rlci5lbmNvZGUoYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhh
bmRsZSk7Ci0gICAgZW5jb2Rlci5lbmNvZGUoZGF0YWJhc2VEaXJlY3RvcnkpOwotICAgIGVuY29k
ZXIuZW5jb2RlKGRhdGFiYXNlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKLSAgICBlbmNvZGVy
LmVuY29kZShsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpOwotICAgIGVuY29kZXIuZW5jb2RlKGxvY2Fs
U3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7Ci0gICAgZW5jb2Rlci5lbmNvZGUoZGlz
a0NhY2hlRGlyZWN0b3J5KTsKLSAgICBlbmNvZGVyLmVuY29kZShkaXNrQ2FjaGVEaXJlY3RvcnlF
eHRlbnNpb25IYW5kbGUpOwotICAgIGVuY29kZXIuZW5jb2RlKGNvb2tpZVN0b3JhZ2VEaXJlY3Rv
cnkpOwotICAgIGVuY29kZXIuZW5jb2RlKGNvb2tpZVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25I
YW5kbGUpOwotICAgIGVuY29kZXIuZW5jb2RlKHVybFNjaGVtZXNSZWdpc3RlcmVyZEFzRW1wdHlE
b2N1bWVudCk7Ci0gICAgZW5jb2Rlci5lbmNvZGUodXJsU2NoZW1lc1JlZ2lzdGVyZWRBc1NlY3Vy
ZSk7Ci0gICAgZW5jb2Rlci5lbmNvZGUodXJsU2NoZW1lc0ZvcldoaWNoRG9tYWluUmVsYXhhdGlv
bklzRm9yYmlkZGVuKTsKLSAgICBlbmNvZGVyLmVuY29kZSh1cmxTY2hlbWVzUmVnaXN0ZXJlZEFz
TG9jYWwpOwotICAgIGVuY29kZXIuZW5jb2RlKHVybFNjaGVtZXNSZWdpc3RlcmVkQXNOb0FjY2Vz
cyk7Ci0gICAgZW5jb2Rlci5lbmNvZGUodXJsU2NoZW1lc1JlZ2lzdGVyZWRBc0Rpc3BsYXlJc29s
YXRlZCk7Ci0gICAgZW5jb2Rlci5lbmNvZGUodXJsU2NoZW1lc1JlZ2lzdGVyZWRBc0NPUlNFbmFi
bGVkKTsKKyAgICBlbmNvZGVyIDw8IGluamVjdGVkQnVuZGxlUGF0aDsKKyAgICBlbmNvZGVyIDw8
IGluamVjdGVkQnVuZGxlUGF0aEV4dGVuc2lvbkhhbmRsZTsKKyAgICBlbmNvZGVyIDw8IGFwcGxp
Y2F0aW9uQ2FjaGVEaXJlY3Rvcnk7CisgICAgZW5jb2RlciA8PCBhcHBsaWNhdGlvbkNhY2hlRGly
ZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOworICAgIGVuY29kZXIgPDwgZGF0YWJhc2VEaXJlY3Rvcnk7
CisgICAgZW5jb2RlciA8PCBkYXRhYmFzZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKKyAgICBl
bmNvZGVyIDw8IGxvY2FsU3RvcmFnZURpcmVjdG9yeTsKKyAgICBlbmNvZGVyIDw8IGxvY2FsU3Rv
cmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKKyAgICBlbmNvZGVyIDw8IGRpc2tDYWNoZURp
cmVjdG9yeTsKKyAgICBlbmNvZGVyIDw8IGRpc2tDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRs
ZTsKKyAgICBlbmNvZGVyIDw8IGNvb2tpZVN0b3JhZ2VEaXJlY3Rvcnk7CisgICAgZW5jb2RlciA8
PCBjb29raWVTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOworICAgIGVuY29kZXIgPDwg
dXJsU2NoZW1lc1JlZ2lzdGVyZXJkQXNFbXB0eURvY3VtZW50OworICAgIGVuY29kZXIgPDwgdXJs
U2NoZW1lc1JlZ2lzdGVyZWRBc1NlY3VyZTsKKyAgICBlbmNvZGVyIDw8IHVybFNjaGVtZXNGb3JX
aGljaERvbWFpblJlbGF4YXRpb25Jc0ZvcmJpZGRlbjsKKyAgICBlbmNvZGVyIDw8IHVybFNjaGVt
ZXNSZWdpc3RlcmVkQXNMb2NhbDsKKyAgICBlbmNvZGVyIDw8IHVybFNjaGVtZXNSZWdpc3RlcmVk
QXNOb0FjY2VzczsKKyAgICBlbmNvZGVyIDw8IHVybFNjaGVtZXNSZWdpc3RlcmVkQXNEaXNwbGF5
SXNvbGF0ZWQ7CisgICAgZW5jb2RlciA8PCB1cmxTY2hlbWVzUmVnaXN0ZXJlZEFzQ09SU0VuYWJs
ZWQ7CiAgICAgZW5jb2Rlci5lbmNvZGVFbnVtKGNhY2hlTW9kZWwpOwotICAgIGVuY29kZXIuZW5j
b2RlKHNob3VsZFRyYWNrVmlzaXRlZExpbmtzKTsKLSAgICBlbmNvZGVyLmVuY29kZShzaG91bGRB
bHdheXNVc2VDb21wbGV4VGV4dENvZGVQYXRoKTsKLSAgICBlbmNvZGVyLmVuY29kZShzaG91bGRV
c2VGb250U21vb3RoaW5nKTsKLSAgICBlbmNvZGVyLmVuY29kZShpY29uRGF0YWJhc2VFbmFibGVk
KTsKLSAgICBlbmNvZGVyLmVuY29kZSh0ZXJtaW5hdGlvblRpbWVvdXQpOwotICAgIGVuY29kZXIu
ZW5jb2RlKGxhbmd1YWdlcyk7Ci0gICAgZW5jb2Rlci5lbmNvZGUodGV4dENoZWNrZXJTdGF0ZSk7
Ci0gICAgZW5jb2Rlci5lbmNvZGUoZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZCk7Ci0gICAgZW5j
b2Rlci5lbmNvZGUoZGVmYXVsdFJlcXVlc3RUaW1lb3V0SW50ZXJ2YWwpOworICAgIGVuY29kZXIg
PDwgc2hvdWxkVHJhY2tWaXNpdGVkTGlua3M7CisgICAgZW5jb2RlciA8PCBzaG91bGRBbHdheXNV
c2VDb21wbGV4VGV4dENvZGVQYXRoOworICAgIGVuY29kZXIgPDwgc2hvdWxkVXNlRm9udFNtb290
aGluZzsKKyAgICBlbmNvZGVyIDw8IGljb25EYXRhYmFzZUVuYWJsZWQ7CisgICAgZW5jb2RlciA8
PCB0ZXJtaW5hdGlvblRpbWVvdXQ7CisgICAgZW5jb2RlciA8PCBsYW5ndWFnZXM7CisgICAgZW5j
b2RlciA8PCB0ZXh0Q2hlY2tlclN0YXRlOworICAgIGVuY29kZXIgPDwgZnVsbEtleWJvYXJkQWNj
ZXNzRW5hYmxlZDsKKyAgICBlbmNvZGVyIDw8IGRlZmF1bHRSZXF1ZXN0VGltZW91dEludGVydmFs
OwogI2lmIFBMQVRGT1JNKE1BQykgfHwgVVNFKENGVVJMU1RPUkFHRVNFU1NJT05TKQotICAgIGVu
Y29kZXIuZW5jb2RlKHVpUHJvY2Vzc0J1bmRsZUlkZW50aWZpZXIpOworICAgIGVuY29kZXIgPDwg
dWlQcm9jZXNzQnVuZGxlSWRlbnRpZmllcjsKICNlbmRpZgogI2lmIFBMQVRGT1JNKE1BQykKLSAg
ICBlbmNvZGVyLmVuY29kZShwYXJlbnRQcm9jZXNzTmFtZSk7Ci0gICAgZW5jb2Rlci5lbmNvZGUo
cHJlc2VudGVyQXBwbGljYXRpb25QaWQpOwotICAgIGVuY29kZXIuZW5jb2RlKG5zVVJMQ2FjaGVN
ZW1vcnlDYXBhY2l0eSk7Ci0gICAgZW5jb2Rlci5lbmNvZGUobnNVUkxDYWNoZURpc2tDYXBhY2l0
eSk7Ci0gICAgZW5jb2Rlci5lbmNvZGUoYWNjZWxlcmF0ZWRDb21wb3NpdGluZ1BvcnQpOwotICAg
IGVuY29kZXIuZW5jb2RlKHVpUHJvY2Vzc0J1bmRsZVJlc291cmNlUGF0aCk7Ci0gICAgZW5jb2Rl
ci5lbmNvZGUodWlQcm9jZXNzQnVuZGxlUmVzb3VyY2VQYXRoRXh0ZW5zaW9uSGFuZGxlKTsKLSAg
ICBlbmNvZGVyLmVuY29kZShzaG91bGRGb3JjZVNjcmVlbkZvbnRTdWJzdGl0dXRpb24pOwotICAg
IGVuY29kZXIuZW5jb2RlKHNob3VsZEVuYWJsZUtlcm5pbmdBbmRMaWdhdHVyZXNCeURlZmF1bHQp
OworICAgIGVuY29kZXIgPDwgcGFyZW50UHJvY2Vzc05hbWU7CisgICAgZW5jb2RlciA8PCBwcmVz
ZW50ZXJBcHBsaWNhdGlvblBpZDsKKyAgICBlbmNvZGVyIDw8IG5zVVJMQ2FjaGVNZW1vcnlDYXBh
Y2l0eTsKKyAgICBlbmNvZGVyIDw8IG5zVVJMQ2FjaGVEaXNrQ2FwYWNpdHk7CisgICAgZW5jb2Rl
ciA8PCBhY2NlbGVyYXRlZENvbXBvc2l0aW5nUG9ydDsKKyAgICBlbmNvZGVyIDw8IHVpUHJvY2Vz
c0J1bmRsZVJlc291cmNlUGF0aDsKKyAgICBlbmNvZGVyIDw8IHVpUHJvY2Vzc0J1bmRsZVJlc291
cmNlUGF0aEV4dGVuc2lvbkhhbmRsZTsKKyAgICBlbmNvZGVyIDw8IHNob3VsZEZvcmNlU2NyZWVu
Rm9udFN1YnN0aXR1dGlvbjsKKyAgICBlbmNvZGVyIDw8IHNob3VsZEVuYWJsZUtlcm5pbmdBbmRM
aWdhdHVyZXNCeURlZmF1bHQ7CiAjZWxpZiBQTEFURk9STShXSU4pCi0gICAgZW5jb2Rlci5lbmNv
ZGUoc2hvdWxkUGFpbnROYXRpdmVDb250cm9scyk7Ci0gICAgZW5jb2Rlci5lbmNvZGUoY2ZVUkxD
YWNoZURpc2tDYXBhY2l0eSk7Ci0gICAgZW5jb2Rlci5lbmNvZGUoY2ZVUkxDYWNoZU1lbW9yeUNh
cGFjaXR5KTsKLSAgICBlbmNvZGVyLmVuY29kZShpbml0aWFsSFRUUENvb2tpZUFjY2VwdFBvbGlj
eSk7CisgICAgZW5jb2RlciA8PCBzaG91bGRQYWludE5hdGl2ZUNvbnRyb2xzOworICAgIGVuY29k
ZXIgPDwgY2ZVUkxDYWNoZURpc2tDYXBhY2l0eTsKKyAgICBlbmNvZGVyIDw8IGNmVVJMQ2FjaGVN
ZW1vcnlDYXBhY2l0eTsKKyAgICBlbmNvZGVyIDw8IGluaXRpYWxIVFRQQ29va2llQWNjZXB0UG9s
aWN5OwogI2lmIFVTRShDRlVSTFNUT1JBR0VTRVNTSU9OUykKICAgICBDRkRhdGFSZWYgc3RvcmFn
ZVNlc3Npb24gPSBzZXJpYWxpemVkRGVmYXVsdFN0b3JhZ2VTZXNzaW9uLmdldCgpOwotICAgIGVu
Y29kZXIuZW5jb2RlKHN0YXRpY19jYXN0PGJvb2w+KHN0b3JhZ2VTZXNzaW9uKSk7CisgICAgZW5j
b2RlciA8PCBzdGF0aWNfY2FzdDxib29sPihzdG9yYWdlU2Vzc2lvbik7CiAgICAgaWYgKHN0b3Jh
Z2VTZXNzaW9uKQotICAgICAgICBDb3JlSVBDOjplbmNvZGUoJmVuY29kZXIsIHN0b3JhZ2VTZXNz
aW9uKTsKKyAgICAgICAgQ29yZUlQQzo6ZW5jb2RlKGVuY29kZXIsIHN0b3JhZ2VTZXNzaW9uKTsK
ICNlbmRpZiAvLyBVU0UoQ0ZVUkxTVE9SQUdFU0VTU0lPTlMpCiAjZW5kaWYKIAogI2lmIEVOQUJM
RShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCi0gICAgZW5j
b2Rlci5lbmNvZGUobm90aWZpY2F0aW9uUGVybWlzc2lvbnMpOworICAgIGVuY29kZXIgPDwgbm90
aWZpY2F0aW9uUGVybWlzc2lvbnM7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShORVRXT1JLX1BST0NF
U1MpCi0gICAgZW5jb2Rlci5lbmNvZGUodXNlc05ldHdvcmtQcm9jZXNzKTsKKyAgICBlbmNvZGVy
IDw8IHVzZXNOZXR3b3JrUHJvY2VzczsKICNlbmRpZgogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvV2ViVG91Y2hFdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
U2hhcmVkL1dlYlRvdWNoRXZlbnQuY3BwCShyZXZpc2lvbiAxMzI4NzEpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2ViVG91Y2hFdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0
LDcgQEAgdm9pZCBXZWJUb3VjaEV2ZW50OjplbmNvZGUoQ29yZUlQQzo6QXJndQogewogICAgIFdl
YkV2ZW50OjplbmNvZGUoZW5jb2Rlcik7CiAKLSAgICBlbmNvZGVyLmVuY29kZShtX3RvdWNoUG9p
bnRzKTsKKyAgICBlbmNvZGVyIDw8IG1fdG91Y2hQb2ludHM7CiB9CiAKIGJvb2wgV2ViVG91Y2hF
dmVudDo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgV2ViVG91Y2hF
dmVudCYgcmVzdWx0KQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYldoZWVsRXZlbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJXaGVlbEV2ZW50LmNw
cAkocmV2aXNpb24gMTMyODcxKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYldoZWVsRXZl
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MywxOCArNzMsMTggQEAgdm9pZCBXZWJXaGVlbEV2
ZW50OjplbmNvZGUoQ29yZUlQQzo6QXJndQogewogICAgIFdlYkV2ZW50OjplbmNvZGUoZW5jb2Rl
cik7CiAKLSAgICBlbmNvZGVyLmVuY29kZShtX3Bvc2l0aW9uKTsKLSAgICBlbmNvZGVyLmVuY29k
ZShtX2dsb2JhbFBvc2l0aW9uKTsKLSAgICBlbmNvZGVyLmVuY29kZShtX2RlbHRhKTsKLSAgICBl
bmNvZGVyLmVuY29kZShtX3doZWVsVGlja3MpOwotICAgIGVuY29kZXIuZW5jb2RlKG1fZ3JhbnVs
YXJpdHkpOwotICAgIGVuY29kZXIuZW5jb2RlKG1fZGlyZWN0aW9uSW52ZXJ0ZWRGcm9tRGV2aWNl
KTsKKyAgICBlbmNvZGVyIDw8IG1fcG9zaXRpb247CisgICAgZW5jb2RlciA8PCBtX2dsb2JhbFBv
c2l0aW9uOworICAgIGVuY29kZXIgPDwgbV9kZWx0YTsKKyAgICBlbmNvZGVyIDw8IG1fd2hlZWxU
aWNrczsKKyAgICBlbmNvZGVyIDw8IG1fZ3JhbnVsYXJpdHk7CisgICAgZW5jb2RlciA8PCBtX2Rp
cmVjdGlvbkludmVydGVkRnJvbURldmljZTsKICNpZiBQTEFURk9STShNQUMpCi0gICAgZW5jb2Rl
ci5lbmNvZGUobV9waGFzZSk7Ci0gICAgZW5jb2Rlci5lbmNvZGUobV9tb21lbnR1bVBoYXNlKTsK
LSAgICBlbmNvZGVyLmVuY29kZShtX2hhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMpOwotICAgIGVu
Y29kZXIuZW5jb2RlKG1fc2Nyb2xsQ291bnQpOwotICAgIGVuY29kZXIuZW5jb2RlKG1fdW5hY2Nl
bGVyYXRlZFNjcm9sbGluZ0RlbHRhKTsKKyAgICBlbmNvZGVyIDw8IG1fcGhhc2U7CisgICAgZW5j
b2RlciA8PCBtX21vbWVudHVtUGhhc2U7CisgICAgZW5jb2RlciA8PCBtX2hhc1ByZWNpc2VTY3Jv
bGxpbmdEZWx0YXM7CisgICAgZW5jb2RlciA8PCBtX3Njcm9sbENvdW50OworICAgIGVuY29kZXIg
PDwgbV91bmFjY2VsZXJhdGVkU2Nyb2xsaW5nRGVsdGE7CiAjZW5kaWYKIH0KIApJbmRleDogU291
cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkocmV2aXNpb24gMTMyODcxKQorKysgU291
cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIE5ldHdvcmtQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzOjpOZXR3b3IKIHZvaWQgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnM6OmVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7
CiAjaWYgUExBVEZPUk0oTUFDKQotICAgIGVuY29kZXIuZW5jb2RlKHBhcmVudFByb2Nlc3NOYW1l
KTsKKyAgICBlbmNvZGVyIDw8IHBhcmVudFByb2Nlc3NOYW1lOwogI2VuZGlmCiB9CiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05QSWRlbnRpZmllckRhdGEuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05QSWRlbnRpZmllckRhdGEu
Y3BwCShyZXZpc2lvbiAxMzI4NzEpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9O
UElkZW50aWZpZXJEYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjksMTEgKzY5LDExIEBAIE5Q
SWRlbnRpZmllciBOUElkZW50aWZpZXJEYXRhOjpjcmVhdGVOUEkKIAogdm9pZCBOUElkZW50aWZp
ZXJEYXRhOjplbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAog
ewotICAgIGVuY29kZXIuZW5jb2RlKG1faXNTdHJpbmcpOworICAgIGVuY29kZXIgPDwgbV9pc1N0
cmluZzsKICAgICBpZiAobV9pc1N0cmluZykKLSAgICAgICAgZW5jb2Rlci5lbmNvZGUobV9zdHJp
bmcpOworICAgICAgICBlbmNvZGVyIDw8IG1fc3RyaW5nOwogICAgIGVsc2UKLSAgICAgICAgZW5j
b2Rlci5lbmNvZGUobV9udW1iZXIpOworICAgICAgICBlbmNvZGVyIDw8IG1fbnVtYmVyOwogfQog
CiBib29sIE5QSWRlbnRpZmllckRhdGE6OmRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIq
IGRlY29kZXIsIE5QSWRlbnRpZmllckRhdGEmIHJlc3VsdCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9QbHVnaW5zL05QVmFyaWFudERhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05QVmFyaWFudERhdGEuY3BwCShyZXZpc2lvbiAxMzI4NzEp
CisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OUFZhcmlhbnREYXRhLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTIwLDI5ICsxMjAsMjkgQEAgTlBWYXJpYW50RGF0YSBOUFZhcmlhbnRE
YXRhOjptYWtlUmVtb3RlTgogCiB2b2lkIE5QVmFyaWFudERhdGE6OmVuY29kZShDb3JlSVBDOjpB
cmd1bWVudEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAgZW5jb2Rlci5lbmNvZGUobV90
eXBlKTsKKyAgICBlbmNvZGVyIDw8IG1fdHlwZTsKIAogICAgIHN3aXRjaCAodHlwZSgpKSB7CiAg
ICAgY2FzZSBOUFZhcmlhbnREYXRhOjpWb2lkOgogICAgIGNhc2UgTlBWYXJpYW50RGF0YTo6TnVs
bDoKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBOUFZhcmlhbnREYXRhOjpCb29sOgotICAgICAg
ICBlbmNvZGVyLmVuY29kZShib29sVmFsdWUoKSk7CisgICAgICAgIGVuY29kZXIgPDwgYm9vbFZh
bHVlKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTlBWYXJpYW50RGF0YTo6SW50MzI6Ci0g
ICAgICAgIGVuY29kZXIuZW5jb2RlKGludDMyVmFsdWUoKSk7CisgICAgICAgIGVuY29kZXIgPDwg
aW50MzJWYWx1ZSgpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE5QVmFyaWFudERhdGE6OkRv
dWJsZToKLSAgICAgICAgZW5jb2Rlci5lbmNvZGUoZG91YmxlVmFsdWUoKSk7CisgICAgICAgIGVu
Y29kZXIgPDwgZG91YmxlVmFsdWUoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBOUFZhcmlh
bnREYXRhOjpTdHJpbmc6Ci0gICAgICAgIGVuY29kZXIuZW5jb2RlKHN0cmluZ1ZhbHVlKCkpOwor
ICAgICAgICBlbmNvZGVyIDw8IHN0cmluZ1ZhbHVlKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgTlBWYXJpYW50RGF0YTo6TG9jYWxOUE9iamVjdElEOgotICAgICAgICBlbmNvZGVyLmVuY29k
ZShsb2NhbE5QT2JqZWN0SURWYWx1ZSgpKTsKKyAgICAgICAgZW5jb2RlciA8PCBsb2NhbE5QT2Jq
ZWN0SURWYWx1ZSgpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE5QVmFyaWFudERhdGE6OlJl
bW90ZU5QT2JqZWN0SUQ6Ci0gICAgICAgIGVuY29kZXIuZW5jb2RlKHJlbW90ZU5QT2JqZWN0SURW
YWx1ZSgpKTsKKyAgICAgICAgZW5jb2RlciA8PCByZW1vdGVOUE9iamVjdElEVmFsdWUoKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogfQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdp
bnMvUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cy5jcHAJKHJldmlzaW9uIDEzMjg3MSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5z
L1BsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
OSwxNSArMzksMTUgQEAgUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6UGx1Z2luUAog
CiB2b2lkIFBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShDb3JlSVBDOjpB
cmd1bWVudEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAgZW5jb2Rlci5lbmNvZGUocGx1
Z2luUGF0aCk7Ci0gICAgZW5jb2Rlci5lbmNvZGUoc3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5J
bml0aWFsaXphdGlvbik7Ci0gICAgZW5jb2Rlci5lbmNvZGUobWluaW11bUxpZmV0aW1lKTsKLSAg
ICBlbmNvZGVyLmVuY29kZSh0ZXJtaW5hdGlvblRpbWVvdXQpOworICAgIGVuY29kZXIgPDwgcGx1
Z2luUGF0aDsKKyAgICBlbmNvZGVyIDw8IHN1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlh
bGl6YXRpb247CisgICAgZW5jb2RlciA8PCBtaW5pbXVtTGlmZXRpbWU7CisgICAgZW5jb2RlciA8
PCB0ZXJtaW5hdGlvblRpbWVvdXQ7CiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgZW5jb2Rlci5l
bmNvZGUocGFyZW50UHJvY2Vzc05hbWUpOwotICAgIGVuY29kZXIuZW5jb2RlKGFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdQb3J0KTsKLSAgICBlbmNvZGVyLmVuY29kZShzYW5kYm94UHJvZmlsZURpcmVj
dG9yeVBhdGgpOworICAgIGVuY29kZXIgPDwgcGFyZW50UHJvY2Vzc05hbWU7CisgICAgZW5jb2Rl
ciA8PCBhY2NlbGVyYXRlZENvbXBvc2l0aW5nUG9ydDsKKyAgICBlbmNvZGVyIDw8IHNhbmRib3hQ
cm9maWxlRGlyZWN0b3J5UGF0aDsKICNlbmRpZgogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvY2YvQXJndW1lbnRDb2RlcnNDRi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvU2hhcmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwCShyZXZpc2lvbiAxMzI4NzEpCisrKyBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvY2YvQXJndW1lbnRDb2RlcnNDRi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTk4LDEwICs5OCwxMCBAQCBzdGF0aWMgQ0ZUeXBlIHR5cGVGcm9tQ0ZUeXBlUmVmKENG
VHlwZVJlCiAgICAgcmV0dXJuIFVua25vd247CiB9CiAKLXZvaWQgZW5jb2RlKEFyZ3VtZW50RW5j
b2RlciogZW5jb2RlciwgQ0ZUeXBlUmVmIHR5cGVSZWYpCit2b2lkIGVuY29kZShBcmd1bWVudEVu
Y29kZXImIGVuY29kZXIsIENGVHlwZVJlZiB0eXBlUmVmKQogewogICAgIENGVHlwZSB0eXBlID0g
dHlwZUZyb21DRlR5cGVSZWYodHlwZVJlZik7Ci0gICAgZW5jb2Rlci0+ZW5jb2RlRW51bSh0eXBl
KTsKKyAgICBlbmNvZGVyLmVuY29kZUVudW0odHlwZSk7CiAKICAgICBzd2l0Y2ggKHR5cGUpIHsK
ICAgICBjYXNlIENGQXJyYXk6CkBAIC0yNDAsMTQgKzI0MCwxNSBAQCBib29sIGRlY29kZShBcmd1
bWVudERlY29kZXIqIGRlY29kZXIsIFJlCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIGVu
Y29kZShBcmd1bWVudEVuY29kZXIqIGVuY29kZXIsIENGQXJyYXlSZWYgYXJyYXkpCit2b2lkIGVu
Y29kZShBcmd1bWVudEVuY29kZXImIGVuY29kZXIsIENGQXJyYXlSZWYgYXJyYXkpCiB7CiAgICAg
Q0ZJbmRleCBzaXplID0gQ0ZBcnJheUdldENvdW50KGFycmF5KTsKICAgICBWZWN0b3I8Q0ZUeXBl
UmVmLCAzMj4gdmFsdWVzKHNpemUpOwogCiAgICAgQ0ZBcnJheUdldFZhbHVlcyhhcnJheSwgQ0ZS
YW5nZU1ha2UoMCwgc2l6ZSksIHZhbHVlcy5kYXRhKCkpOwogCi0gICAgZW5jb2Rlci0+ZW5jb2Rl
KHN0YXRpY19jYXN0PHVpbnQ2NF90PihzaXplKSk7CisgICAgZW5jb2RlciA8PCBzdGF0aWNfY2Fz
dDx1aW50NjRfdD4oc2l6ZSk7CisKICAgICBmb3IgKENGSW5kZXggaSA9IDA7IGkgPCBzaXplOyAr
K2kpIHsKICAgICAgICAgQVNTRVJUKHZhbHVlc1tpXSk7CiAKQEAgLTI3NSw5ICsyNzYsOSBAQCBi
b29sIGRlY29kZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFJlCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLXZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2RlciwgQ0ZCb29sZWFuUmVm
IGJvb2xlYW4pCit2b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXImIGVuY29kZXIsIENGQm9vbGVh
blJlZiBib29sZWFuKQogewotICAgIGVuY29kZXItPmVuY29kZShzdGF0aWNfY2FzdDxib29sPihD
RkJvb2xlYW5HZXRWYWx1ZShib29sZWFuKSkpOworICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8
Ym9vbD4oQ0ZCb29sZWFuR2V0VmFsdWUoYm9vbGVhbikpOwogfQogCiBib29sIGRlY29kZShBcmd1
bWVudERlY29kZXIqIGRlY29kZXIsIFJldGFpblB0cjxDRkJvb2xlYW5SZWY+JiByZXN1bHQpCkBA
IC0yOTAsMTIgKzI5MSwxMiBAQCBib29sIGRlY29kZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIs
IFJlCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2Rlciog
ZW5jb2RlciwgQ0ZEYXRhUmVmIGRhdGEpCit2b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXImIGVu
Y29kZXIsIENGRGF0YVJlZiBkYXRhKQogewogICAgIENGSW5kZXggbGVuZ3RoID0gQ0ZEYXRhR2V0
TGVuZ3RoKGRhdGEpOwogICAgIGNvbnN0IFVJbnQ4KiBieXRlUHRyID0gQ0ZEYXRhR2V0Qnl0ZVB0
cihkYXRhKTsKIAotICAgIGVuY29kZXItPmVuY29kZVZhcmlhYmxlTGVuZ3RoQnl0ZUFycmF5KENv
cmVJUEM6OkRhdGFSZWZlcmVuY2UoYnl0ZVB0ciwgbGVuZ3RoKSk7CisgICAgZW5jb2RlciA8PCBD
b3JlSVBDOjpEYXRhUmVmZXJlbmNlKGJ5dGVQdHIsIGxlbmd0aCk7CiB9CiAKIGJvb2wgZGVjb2Rl
KEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgUmV0YWluUHRyPENGRGF0YVJlZj4mIHJlc3VsdCkK
QEAgLTMwOCw5ICszMDksOSBAQCBib29sIGRlY29kZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIs
IFJlCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2Rlciog
ZW5jb2RlciwgQ0ZEYXRlUmVmIGRhdGUpCit2b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXImIGVu
Y29kZXIsIENGRGF0ZVJlZiBkYXRlKQogewotICAgIGVuY29kZXItPmVuY29kZShzdGF0aWNfY2Fz
dDxkb3VibGU+KENGRGF0ZUdldEFic29sdXRlVGltZShkYXRlKSkpOworICAgIGVuY29kZXIgPDwg
c3RhdGljX2Nhc3Q8ZG91YmxlPihDRkRhdGVHZXRBYnNvbHV0ZVRpbWUoZGF0ZSkpOwogfQogCiBi
b29sIGRlY29kZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFJldGFpblB0cjxDRkRhdGVSZWY+
JiByZXN1bHQpCkBAIC0zMjMsNyArMzI0LDcgQEAgYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVy
KiBkZWNvZGVyLCBSZQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIGVuY29kZShBcmd1bWVu
dEVuY29kZXIqIGVuY29kZXIsIENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5KQordm9pZCBlbmNv
ZGUoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBDRkRpY3Rpb25hcnlSZWYgZGljdGlvbmFyeSkK
IHsKICAgICBDRkluZGV4IHNpemUgPSBDRkRpY3Rpb25hcnlHZXRDb3VudChkaWN0aW9uYXJ5KTsK
ICAgICBWZWN0b3I8Q0ZUeXBlUmVmLCAzMj4ga2V5cyhzaXplKTsKQEAgLTMzMSw3ICszMzIsNyBA
QCB2b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXIqIGVuY29kZXIsIENGCiAgICAgCiAgICAgQ0ZE
aWN0aW9uYXJ5R2V0S2V5c0FuZFZhbHVlcyhkaWN0aW9uYXJ5LCBrZXlzLmRhdGEoKSwgdmFsdWVz
LmRhdGEoKSk7CiAKLSAgICBlbmNvZGVyLT5lbmNvZGUoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHNp
emUpKTsKKyAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90PihzaXplKTsKIAogICAg
IGZvciAoQ0ZJbmRleCBpID0gMDsgaSA8IHNpemU7ICsraSkgewogICAgICAgICBBU1NFUlQoa2V5
c1tpXSk7CkBAIC0zNzEsNyArMzcyLDcgQEAgYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyKiBk
ZWNvZGVyLCBSZQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIGVuY29kZShBcmd1bWVudEVu
Y29kZXIqIGVuY29kZXIsIENGTnVtYmVyUmVmIG51bWJlcikKK3ZvaWQgZW5jb2RlKEFyZ3VtZW50
RW5jb2RlciYgZW5jb2RlciwgQ0ZOdW1iZXJSZWYgbnVtYmVyKQogewogICAgIENGTnVtYmVyVHlw
ZSBudW1iZXJUeXBlID0gQ0ZOdW1iZXJHZXRUeXBlKG51bWJlcik7CiAKQEAgLTM3OSw4ICszODAs
OCBAQCB2b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXIqIGVuY29kZXIsIENGCiAgICAgYm9vbCBy
ZXN1bHQgPSBDRk51bWJlckdldFZhbHVlKG51bWJlciwgbnVtYmVyVHlwZSwgYnVmZmVyLmRhdGEo
KSk7CiAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7CiAKLSAgICBlbmNvZGVyLT5l
bmNvZGVFbnVtKG51bWJlclR5cGUpOwotICAgIGVuY29kZXItPmVuY29kZVZhcmlhYmxlTGVuZ3Ro
Qnl0ZUFycmF5KGJ1ZmZlcik7CisgICAgZW5jb2Rlci5lbmNvZGVFbnVtKG51bWJlclR5cGUpOwor
ICAgIGVuY29kZXIgPDwgQ29yZUlQQzo6RGF0YVJlZmVyZW5jZShidWZmZXIpOwogfQogCiBzdGF0
aWMgc2l6ZV90IHNpemVGb3JOdW1iZXJUeXBlKENGTnVtYmVyVHlwZSBudW1iZXJUeXBlKQpAQCAt
NDUyLDcgKzQ1Myw3IEBAIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgUmUK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyKiBlbmNv
ZGVyLCBDRlN0cmluZ1JlZiBzdHJpbmcpCit2b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXImIGVu
Y29kZXIsIENGU3RyaW5nUmVmIHN0cmluZykKIHsKICAgICBDRkluZGV4IGxlbmd0aCA9IENGU3Ry
aW5nR2V0TGVuZ3RoKHN0cmluZyk7CiAgICAgQ0ZTdHJpbmdFbmNvZGluZyBlbmNvZGluZyA9IENG
U3RyaW5nR2V0RmFzdGVzdEVuY29kaW5nKHN0cmluZyk7CkBAIC00NjcsOCArNDY4LDggQEAgdm9p
ZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyLCBDRgogICAgIG51bUNvbnZlcnRlZEJ5
dGVzID0gQ0ZTdHJpbmdHZXRCeXRlcyhzdHJpbmcsIHJhbmdlLCBlbmNvZGluZywgMCwgZmFsc2Us
IGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCksICZidWZmZXJMZW5ndGgpOwogICAgIEFTU0VS
VChudW1Db252ZXJ0ZWRCeXRlcyA9PSBsZW5ndGgpOwogCi0gICAgZW5jb2Rlci0+ZW5jb2RlRW51
bShlbmNvZGluZyk7Ci0gICAgZW5jb2Rlci0+ZW5jb2RlVmFyaWFibGVMZW5ndGhCeXRlQXJyYXko
YnVmZmVyKTsKKyAgICBlbmNvZGVyLmVuY29kZUVudW0oZW5jb2RpbmcpOworICAgIGVuY29kZXIg
PDwgQ29yZUlQQzo6RGF0YVJlZmVyZW5jZShidWZmZXIpOwogfQogCiBib29sIGRlY29kZShBcmd1
bWVudERlY29kZXIqIGRlY29kZXIsIFJldGFpblB0cjxDRlN0cmluZ1JlZj4mIHJlc3VsdCkKQEAg
LTQ5MiwxMCArNDkzLDEwIEBAIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2Rlciwg
UmUKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyKiBl
bmNvZGVyLCBDRlVSTFJlZiB1cmwpCit2b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXImIGVuY29k
ZXIsIENGVVJMUmVmIHVybCkKIHsKICAgICBDRlVSTFJlZiBiYXNlVVJMID0gQ0ZVUkxHZXRCYXNl
VVJMKHVybCk7Ci0gICAgZW5jb2Rlci0+ZW5jb2RlKHN0YXRpY19jYXN0PGJvb2w+KGJhc2VVUkwp
KTsKKyAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PGJvb2w+KGJhc2VVUkwpOwogICAgIGlmIChi
YXNlVVJMKQogICAgICAgICBlbmNvZGUoZW5jb2RlciwgYmFzZVVSTCk7CiAKQEAgLTUzNiw3ICs1
MzcsNyBAQCBib29sIGRlY29kZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFJlCiB9CiAKICNp
ZiBVU0UoU0VDVVJJVFlfRlJBTUVXT1JLKQotdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyKiBl
bmNvZGVyLCBTZWNDZXJ0aWZpY2F0ZVJlZiBjZXJ0aWZpY2F0ZSkKK3ZvaWQgZW5jb2RlKEFyZ3Vt
ZW50RW5jb2RlciYgZW5jb2RlciwgU2VjQ2VydGlmaWNhdGVSZWYgY2VydGlmaWNhdGUpCiB7CiAg
ICAgUmV0YWluUHRyPENGRGF0YVJlZj4gZGF0YShBZG9wdENGLCBTZWNDZXJ0aWZpY2F0ZUNvcHlE
YXRhKGNlcnRpZmljYXRlKSk7CiAgICAgZW5jb2RlKGVuY29kZXIsIGRhdGEuZ2V0KCkpOwpAQCAt
NTUyLDcgKzU1Myw3IEBAIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgUmUK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyKiBlbmNv
ZGVyLCBTZWNLZXljaGFpbkl0ZW1SZWYga2V5Y2hhaW5JdGVtKQordm9pZCBlbmNvZGUoQXJndW1l
bnRFbmNvZGVyJiBlbmNvZGVyLCBTZWNLZXljaGFpbkl0ZW1SZWYga2V5Y2hhaW5JdGVtKQogewog
ICAgIENGRGF0YVJlZiBkYXRhOwogICAgIGlmIChTZWNLZXljaGFpbkl0ZW1DcmVhdGVQZXJzaXN0
ZW50UmVmZXJlbmNlKGtleWNoYWluSXRlbSwgJmRhdGEpID09IGVyclNlY1N1Y2Nlc3MpIHsKQEAg
LTU3NCw3ICs1NzUsNiBAQCBib29sIGRlY29kZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFJl
CiAgICAgcmVzdWx0LmFkb3B0Q0YoaXRlbSk7CiAgICAgcmV0dXJuIHRydWU7CiB9Ci0KICNlbmRp
ZgogCiB9IC8vIG5hbWVzcGFjZSBDb3JlSVBDCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
Y2YvQXJndW1lbnRDb2RlcnNDRi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9jZi9Bcmd1bWVudENvZGVyc0NGLmgJKHJldmlzaW9uIDEzMjg3MSkKKysrIFNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9jZi9Bcmd1bWVudENvZGVyc0NGLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDQ4
ICszOSw0OCBAQCBjbGFzcyBBcmd1bWVudEVuY29kZXI7CiBjbGFzcyBBcmd1bWVudERlY29kZXI7
CiAKIC8vIENGQXJyYXlSZWYKLXZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciosIENGQXJyYXlS
ZWYpOwordm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyJiwgQ0ZBcnJheVJlZik7CiBib29sIGRl
Y29kZShBcmd1bWVudERlY29kZXIqLCBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4mIHJlc3VsdCk7CiAK
IC8vIENGQm9vbGVhblJlZgotdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyKiwgQ0ZCb29sZWFu
UmVmKTsKK3ZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYsIENGQm9vbGVhblJlZik7CiBib29s
IGRlY29kZShBcmd1bWVudERlY29kZXIqLCBSZXRhaW5QdHI8Q0ZCb29sZWFuUmVmPiYgcmVzdWx0
KTsKIAogLy8gQ0ZEYXRhUmVmCi12b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXIqLCBDRkRhdGFS
ZWYpOwordm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyJiwgQ0ZEYXRhUmVmKTsKIGJvb2wgZGVj
b2RlKEFyZ3VtZW50RGVjb2RlciosIFJldGFpblB0cjxDRkRhdGFSZWY+JiByZXN1bHQpOwogCiAv
LyBDRkRhdGVSZWYKLXZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciosIENGRGF0ZVJlZik7Cit2
b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXImLCBDRkRhdGVSZWYpOwogYm9vbCBkZWNvZGUoQXJn
dW1lbnREZWNvZGVyKiwgUmV0YWluUHRyPENGRGF0ZVJlZj4mIHJlc3VsdCk7CiAKIC8vIENGRGlj
dGlvbmFyeVJlZgotdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyKiwgQ0ZEaWN0aW9uYXJ5UmVm
KTsKK3ZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYsIENGRGljdGlvbmFyeVJlZik7CiBib29s
IGRlY29kZShBcmd1bWVudERlY29kZXIqLCBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiYgcmVz
dWx0KTsKIAogLy8gQ0ZOdW1iZXJSZWYKLXZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciosIENG
TnVtYmVyUmVmKTsKK3ZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYsIENGTnVtYmVyUmVmKTsK
IGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciosIFJldGFpblB0cjxDRk51bWJlclJlZj4mIHJl
c3VsdCk7CiAKIC8vIENGU3RyaW5nUmVmCi12b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXIqLCBD
RlN0cmluZ1JlZik7Cit2b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXImLCBDRlN0cmluZ1JlZik7
CiBib29sIGRlY29kZShBcmd1bWVudERlY29kZXIqLCBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+JiBy
ZXN1bHQpOwogCiAvLyBDRlR5cGVSZWYKLXZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciosIENG
VHlwZVJlZik7Cit2b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXImLCBDRlR5cGVSZWYpOwogYm9v
bCBkZWNvZGUoQXJndW1lbnREZWNvZGVyKiwgUmV0YWluUHRyPENGVHlwZVJlZj4mIHJlc3VsdCk7
CiAKIC8vIENGVVJMUmVmCi12b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXIqLCBDRlVSTFJlZik7
Cit2b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXImLCBDRlVSTFJlZik7CiBib29sIGRlY29kZShB
cmd1bWVudERlY29kZXIqLCBSZXRhaW5QdHI8Q0ZVUkxSZWY+JiByZXN1bHQpOwogCiAjaWYgVVNF
KFNFQ1VSSVRZX0ZSQU1FV09SSykKIC8vIFNlY0NlcnRpZmljYXRlUmVmCi12b2lkIGVuY29kZShB
cmd1bWVudEVuY29kZXIqLCBTZWNDZXJ0aWZpY2F0ZVJlZik7Cit2b2lkIGVuY29kZShBcmd1bWVu
dEVuY29kZXImLCBTZWNDZXJ0aWZpY2F0ZVJlZik7CiBib29sIGRlY29kZShBcmd1bWVudERlY29k
ZXIqLCBSZXRhaW5QdHI8U2VjQ2VydGlmaWNhdGVSZWY+JiByZXN1bHQpOwogCiAvLyBTZWNLZXlj
aGFpbkl0ZW1SZWYKLXZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciosIFNlY0tleWNoYWluSXRl
bVJlZik7Cit2b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXImLCBTZWNLZXljaGFpbkl0ZW1SZWYp
OwogYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyKiwgUmV0YWluUHRyPFNlY0tleWNoYWluSXRl
bVJlZj4mIHJlc3VsdCk7CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL21h
Yy9Bcmd1bWVudENvZGVyc01hYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9tYWMvQXJndW1lbnRDb2RlcnNNYWMuaAkocmV2aXNpb24gMTMyODcxKQorKysgU291cmNlL1dl
YktpdDIvU2hhcmVkL21hYy9Bcmd1bWVudENvZGVyc01hYy5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
NCwzMSArMzQsMzEgQEAgY2xhc3MgQXJndW1lbnRFbmNvZGVyOwogY2xhc3MgQXJndW1lbnREZWNv
ZGVyOwogCiAvLyBOU0F0dHJpYnV0ZWRTdHJpbmcKLXZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2Rl
ciosIE5TQXR0cmlidXRlZFN0cmluZyAqKTsKK3ZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYs
IE5TQXR0cmlidXRlZFN0cmluZyAqKTsKIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciosIFJl
dGFpblB0cjxOU0F0dHJpYnV0ZWRTdHJpbmc+Jik7CiAKICNpZiBVU0UoQVBQS0lUKQogLy8gTlND
b2xvcgotdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyKiwgTlNDb2xvciAqKTsKK3ZvaWQgZW5j
b2RlKEFyZ3VtZW50RW5jb2RlciYsIE5TQ29sb3IgKik7CiBib29sIGRlY29kZShBcmd1bWVudERl
Y29kZXIqLCBSZXRhaW5QdHI8TlNDb2xvcj4mKTsKICNlbmRpZgogCiAvLyBOU0RpY3Rpb25hcnkK
LXZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciosIE5TRGljdGlvbmFyeSAqKTsKK3ZvaWQgZW5j
b2RlKEFyZ3VtZW50RW5jb2RlciYsIE5TRGljdGlvbmFyeSAqKTsKIGJvb2wgZGVjb2RlKEFyZ3Vt
ZW50RGVjb2RlciosIFJldGFpblB0cjxOU0RpY3Rpb25hcnk+Jik7CiAKICNpZiBVU0UoQVBQS0lU
KQogLy8gTlNGb250Ci12b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXIqLCBOU0ZvbnQgKik7Cit2
b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXImLCBOU0ZvbnQgKik7CiBib29sIGRlY29kZShBcmd1
bWVudERlY29kZXIqLCBSZXRhaW5QdHI8TlNGb250PiYpOwogI2VuZGlmCiAKIC8vIE5TTnVtYmVy
Ci12b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXIqLCBOU051bWJlciAqKTsKK3ZvaWQgZW5jb2Rl
KEFyZ3VtZW50RW5jb2RlciYsIE5TTnVtYmVyICopOwogYm9vbCBkZWNvZGUoQXJndW1lbnREZWNv
ZGVyKiwgUmV0YWluUHRyPE5TTnVtYmVyPiYpOwogCiAvLyBOU1N0cmluZwotdm9pZCBlbmNvZGUo
QXJndW1lbnRFbmNvZGVyKiwgTlNTdHJpbmcgKik7Cit2b2lkIGVuY29kZShBcmd1bWVudEVuY29k
ZXImLCBOU1N0cmluZyAqKTsKIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciosIFJldGFpblB0
cjxOU1N0cmluZz4mKTsKIAogfSAvLyBuYW1lc3BhY2UgQ29yZUlQQwpJbmRleDogU291cmNlL1dl
YktpdDIvU2hhcmVkL21hYy9Bcmd1bWVudENvZGVyc01hYy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0FyZ3VtZW50Q29kZXJzTWFjLm1tCShyZXZpc2lvbiAxMzI4
NzEpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0FyZ3VtZW50Q29kZXJzTWFjLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC03NiwxMCArNzYsMTAgQEAgc3RhdGljIE5TVHlwZSB0eXBlRnJvbU9i
amVjdChpZCBvYmplY3QpCiAgICAgcmV0dXJuIFVua25vd247CiB9CiAKLXN0YXRpYyB2b2lkIGVu
Y29kZShBcmd1bWVudEVuY29kZXIqIGVuY29kZXIsIGlkIG9iamVjdCkKK3N0YXRpYyB2b2lkIGVu
Y29kZShBcmd1bWVudEVuY29kZXImIGVuY29kZXIsIGlkIG9iamVjdCkKIHsKICAgICBOU1R5cGUg
dHlwZSA9IHR5cGVGcm9tT2JqZWN0KG9iamVjdCk7Ci0gICAgZW5jb2Rlci0+ZW5jb2RlRW51bSh0
eXBlKTsKKyAgICBlbmNvZGVyLmVuY29kZUVudW0odHlwZSk7CiAKICAgICBzd2l0Y2ggKHR5cGUp
IHsKICAgICBjYXNlIE5TQXR0cmlidXRlZFN0cmluZ1R5cGU6CkBAIC0xNzIsNyArMTcyLDcgQEAg
c3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVjbwogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAotdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyLCBOU0F0dHJpYnV0
ZWRTdHJpbmcgKnN0cmluZykKK3ZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYgZW5jb2Rlciwg
TlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcpCiB7CiAgICAgLy8gRXZlbiB0aG91Z2ggTlNBdHRy
aWJ1dGVkU3RyaW5nIGlzIHRvbGwgZnJlZSBicmlkZ2VkIHdpdGggQ0ZBdHRyaWJ1dGVkU3RyaW5n
UmVmLCBhdHRyaWJ1dGVzJyB2YWx1ZXMgbWF5IGJlIG5vdCwgc28gd2Ugc2hvdWxkIHN0YXkgd2l0
aGluIHRoaXMgZmlsZSdzIGNvZGUuCiAKQEAgLTE5NiwxMSArMTk2LDExIEBAIHZvaWQgZW5jb2Rl
KEFyZ3VtZW50RW5jb2RlciogZW5jb2RlciwgTlMKICAgICAgICAgcG9zaXRpb24gPSBOU01heFJh
bmdlKGVmZmVjdGl2ZVJhbmdlKTsKICAgICB9CiAKLSAgICBlbmNvZGVyLT5lbmNvZGUoc3RhdGlj
X2Nhc3Q8dWludDY0X3Q+KHJhbmdlcy5zaXplKCkpKTsKKyAgICBlbmNvZGVyIDw8IHN0YXRpY19j
YXN0PHVpbnQ2NF90PihyYW5nZXMuc2l6ZSgpKTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgcmFuZ2VzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGVuY29kZXItPmVuY29kZShzdGF0aWNf
Y2FzdDx1aW50NjRfdD4ocmFuZ2VzW2ldLmZpcnN0LmxvY2F0aW9uKSk7Ci0gICAgICAgIGVuY29k
ZXItPmVuY29kZShzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmFuZ2VzW2ldLmZpcnN0Lmxlbmd0aCkp
OworICAgICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90PihyYW5nZXNbaV0uZmly
c3QubG9jYXRpb24pOworICAgICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90Pihy
YW5nZXNbaV0uZmlyc3QubGVuZ3RoKTsKICAgICAgICAgQ29yZUlQQzo6ZW5jb2RlKGVuY29kZXIs
IHJhbmdlc1tpXS5zZWNvbmQuZ2V0KCkpOwogICAgIH0KIH0KQEAgLTI0Myw5ICsyNDMsOSBAQCBi
b29sIGRlY29kZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFJlCiB9CiAKICNpZiBVU0UoQVBQ
S0lUKQotdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyLCBOU0NvbG9yICpjb2xv
cikKK3ZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYgZW5jb2RlciwgTlNDb2xvciAqY29sb3Ip
CiB7Ci0gICAgZW5jb2Rlci0+ZW5jb2RlKGNvbG9yRnJvbU5TQ29sb3IoY29sb3IpKTsKKyAgICBl
bmNvZGVyIDw8IGNvbG9yRnJvbU5TQ29sb3IoY29sb3IpOwogfQogCiBib29sIGRlY29kZShBcmd1
bWVudERlY29kZXIqIGRlY29kZXIsIFJldGFpblB0cjxOU0NvbG9yPiYgcmVzdWx0KQpAQCAtMjU5
LDcgKzI1OSw3IEBAIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgUmUKIH0K
ICNlbmRpZgogCi12b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXIqIGVuY29kZXIsIE5TRGljdGlv
bmFyeSAqZGljdGlvbmFyeSkKK3ZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYgZW5jb2Rlciwg
TlNEaWN0aW9uYXJ5ICpkaWN0aW9uYXJ5KQogewogICAgIC8vIEV2ZW4gdGhvdWdoIE5TRGljdGlv
bmFyeSBpcyB0b2xsIGZyZWUgYnJpZGdlZCB3aXRoIENGRGljdGlvbmFyeVJlZiwgdmFsdWVzIG1h
eSBiZSBub3QsIHNvIHdlIHNob3VsZCBzdGF5IHdpdGhpbiB0aGlzIGZpbGUncyBjb2RlLgogCkBA
IC0yNjcsNyArMjY3LDcgQEAgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyLCBO
UwogICAgIE5TQXJyYXkgKmtleXMgPSBbZGljdGlvbmFyeSBhbGxLZXlzXTsKICAgICBOU0FycmF5
ICp2YWx1ZXMgPSBbZGljdGlvbmFyeSBhbGxWYWx1ZXNdOwogCi0gICAgZW5jb2Rlci0+ZW5jb2Rl
KHN0YXRpY19jYXN0PHVpbnQ2NF90PihzaXplKSk7CisgICAgZW5jb2RlciA8PCBzdGF0aWNfY2Fz
dDx1aW50NjRfdD4oc2l6ZSk7CiAKICAgICBmb3IgKE5TVUludGVnZXIgaSA9IDA7IGkgPCBzaXpl
OyArK2kpIHsKICAgICAgICAgaWQga2V5ID0gW2tleXMgb2JqZWN0QXRJbmRleDppXTsKQEAgLTMx
MCw3ICszMTAsNyBAQCBib29sIGRlY29kZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFJlCiB9
CiAKICNpZiBVU0UoQVBQS0lUKQotdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyKiBlbmNvZGVy
LCBOU0ZvbnQgKmZvbnQpCit2b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXImIGVuY29kZXIsIE5T
Rm9udCAqZm9udCkKIHsKICAgICAvLyBOU0ZvbnQgY291bGQgdXNlIENURm9udFJlZiBjb2RlIGlm
IHdlIGhhZCBpdCBpbiBBcmd1bWVudENvZGVyc0NGLgogICAgIGVuY29kZShlbmNvZGVyLCBbW2Zv
bnQgZm9udERlc2NyaXB0b3JdIGZvbnRBdHRyaWJ1dGVzXSk7CkBAIC0zMjksNyArMzI5LDcgQEAg
Ym9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBSZQogfQogI2VuZGlmCiAKLXZv
aWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2RlciwgTlNOdW1iZXIgKm51bWJlcikKK3Zv
aWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYgZW5jb2RlciwgTlNOdW1iZXIgKm51bWJlcikKIHsK
ICAgICBlbmNvZGUoZW5jb2RlciwgKENGTnVtYmVyUmVmKW51bWJlcik7CiB9CkBAIC0zNDQsNyAr
MzQ0LDcgQEAgYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBSZQogICAgIHJl
dHVybiB0cnVlOwogfQogCi12b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXIqIGVuY29kZXIsIE5T
U3RyaW5nICpzdHJpbmcpCit2b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXImIGVuY29kZXIsIE5T
U3RyaW5nICpzdHJpbmcpCiB7CiAgICAgZW5jb2RlKGVuY29kZXIsIChDRlN0cmluZ1JlZilzdHJp
bmcpOwogfQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9BdHRyaWJ1dGVkU3RyaW5n
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvQXR0cmlidXRlZFN0
cmluZy5tbQkocmV2aXNpb24gMTMyODcxKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9B
dHRyaWJ1dGVkU3RyaW5nLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxMCArMzQsMTAgQEAgbmFt
ZXNwYWNlIFdlYktpdCB7CiAKIHZvaWQgQXR0cmlidXRlZFN0cmluZzo6ZW5jb2RlKENvcmVJUEM6
OkFyZ3VtZW50RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBlbmNvZGVyLmVuY29kZSgh
c3RyaW5nKTsKKyAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PGJvb2w+KCFzdHJpbmcpOwogICAg
IGlmICghc3RyaW5nKQogICAgICAgICByZXR1cm47Ci0gICAgQ29yZUlQQzo6ZW5jb2RlKCZlbmNv
ZGVyLCBzdHJpbmcuZ2V0KCkpOworICAgIENvcmVJUEM6OmVuY29kZShlbmNvZGVyLCBzdHJpbmcu
Z2V0KCkpOwogfQogCiBib29sIEF0dHJpYnV0ZWRTdHJpbmc6OmRlY29kZShDb3JlSVBDOjpBcmd1
bWVudERlY29kZXIqIGRlY29kZXIsIEF0dHJpYnV0ZWRTdHJpbmcmIGF0dHJpYnV0ZWRTdHJpbmcp
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0NvbG9yU3BhY2VEYXRhLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvQ29sb3JTcGFjZURhdGEubW0JKHJl
dmlzaW9uIDEzMjg3MSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvQ29sb3JTcGFjZURh
dGEubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ0LDE0ICs0NCwxNCBAQCB2b2lkIENvbG9yU3BhY2VE
YXRhOjplbmNvZGUoQ29yZUlQQzo6QXJnCiAgICAgICAgIC8vIFRyeSB0byBlbmNvZGUgdGhlIG5h
bWUuCiAgICAgICAgIGlmIChSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IG5hbWUgPSBhZG9wdENGKENH
Q29sb3JTcGFjZUNvcHlOYW1lKGNnQ29sb3JTcGFjZS5nZXQoKSkpKSB7CiAgICAgICAgICAgICBl
bmNvZGVyLmVuY29kZUVudW0oTmFtZSk7Ci0gICAgICAgICAgICBDb3JlSVBDOjplbmNvZGUoJmVu
Y29kZXIsIG5hbWUuZ2V0KCkpOworICAgICAgICAgICAgQ29yZUlQQzo6ZW5jb2RlKGVuY29kZXIs
IG5hbWUuZ2V0KCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAg
Ly8gRmFpbGluZyB0aGF0LCBqdXN0IGVuY29kZSB0aGUgSUNDIGRhdGEuCiAgICAgICAgIGlmIChS
ZXRhaW5QdHI8Q0ZEYXRhUmVmPiBwcm9maWxlRGF0YSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ29w
eUlDQ1Byb2ZpbGUoY2dDb2xvclNwYWNlLmdldCgpKSkpIHsKICAgICAgICAgICAgIGVuY29kZXIu
ZW5jb2RlRW51bShEYXRhKTsKLSAgICAgICAgICAgIENvcmVJUEM6OmVuY29kZSgmZW5jb2Rlciwg
cHJvZmlsZURhdGEuZ2V0KCkpOworICAgICAgICAgICAgQ29yZUlQQzo6ZW5jb2RlKGVuY29kZXIs
IHByb2ZpbGVEYXRhLmdldCgpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAg
IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvS2V5Y2hhaW5BdHRyaWJ1dGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvS2V5Y2hhaW5BdHRyaWJ1
dGUuY3BwCShyZXZpc2lvbiAxMzI4NzEpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0tl
eWNoYWluQXR0cmlidXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsMTAgKzUxLDEwIEBAIEtl
eWNoYWluQXR0cmlidXRlOjpLZXljaGFpbkF0dHJpYnV0ZShjb24KIAogbmFtZXNwYWNlIENvcmVJ
UEMgewogCi12b2lkIGVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXIqIGVuY29kZXIsIGNv
bnN0IFdlYktpdDo6S2V5Y2hhaW5BdHRyaWJ1dGUmIGF0dHJpYnV0ZSkKK3ZvaWQgZW5jb2RlKENv
cmVJUEM6OkFyZ3VtZW50RW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2ViS2l0OjpLZXljaGFpbkF0
dHJpYnV0ZSYgYXR0cmlidXRlKQogewotICAgIGVuY29kZXItPmVuY29kZShzdGF0aWNfY2FzdDx1
aW50MzJfdD4oYXR0cmlidXRlLnRhZykpOwotICAgIGVuY29kZXItPmVuY29kZShzdGF0aWNfY2Fz
dDxib29sPihhdHRyaWJ1dGUuZGF0YSkpOworICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWlu
dDMyX3Q+KGF0dHJpYnV0ZS50YWcpOworICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8Ym9vbD4o
YXR0cmlidXRlLmRhdGEpOwogICAgIGlmIChhdHRyaWJ1dGUuZGF0YSkKICAgICAgICAgQ29yZUlQ
Qzo6ZW5jb2RlKGVuY29kZXIsIGF0dHJpYnV0ZS5kYXRhLmdldCgpKTsKIH0KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9tYWMvS2V5Y2hhaW5BdHRyaWJ1dGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0tleWNoYWluQXR0cmlidXRlLmgJKHJldmlzaW9uIDEz
Mjg3MSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvS2V5Y2hhaW5BdHRyaWJ1dGUuaAko
d29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQCBuYW1lc3BhY2UgQ29yZUlQQyB7CiBjbGFz
cyBBcmd1bWVudERlY29kZXI7CiBjbGFzcyBBcmd1bWVudEVuY29kZXI7CiAKLXZvaWQgZW5jb2Rl
KEFyZ3VtZW50RW5jb2RlciosIGNvbnN0IFdlYktpdDo6S2V5Y2hhaW5BdHRyaWJ1dGUmKTsKK3Zv
aWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYsIGNvbnN0IFdlYktpdDo6S2V5Y2hhaW5BdHRyaWJ1
dGUmKTsKIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciosIFdlYktpdDo6S2V5Y2hhaW5BdHRy
aWJ1dGUmKTsKIAogfSAvLyBuYW1lc3BhY2UgQ29yZUlQQwpJbmRleDogU291cmNlL1dlYktpdDIv
U2hhcmVkL21hYy9MYXllclRyZWVDb250ZXh0TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9tYWMvTGF5ZXJUcmVlQ29udGV4dE1hYy5tbQkocmV2aXNpb24gMTMyODcx
KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9MYXllclRyZWVDb250ZXh0TWFjLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBAIExheWVyVHJlZUNvbnRleHQ6On5MYXllclRy
ZWVDb250ZXh0KCkKIAogdm9pZCBMYXllclRyZWVDb250ZXh0OjplbmNvZGUoQ29yZUlQQzo6QXJn
dW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewotICAgIGVuY29kZXIuZW5jb2RlKGNvbnRl
eHRJRCk7CisgICAgZW5jb2RlciA8PCBjb250ZXh0SUQ7CiB9CiAKIGJvb2wgTGF5ZXJUcmVlQ29u
dGV4dDo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgTGF5ZXJUcmVl
Q29udGV4dCYgcmVzdWx0KQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9QbGF0Zm9y
bUNlcnRpZmljYXRlSW5mby5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
bWFjL1BsYXRmb3JtQ2VydGlmaWNhdGVJbmZvLm1tCShyZXZpc2lvbiAxMzI4NzEpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1BsYXRmb3JtQ2VydGlmaWNhdGVJbmZvLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC01MiwxMiArNTIsMTIgQEAgUGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm86OlBsYXRm
b3JtQ2VydGlmaQogdm9pZCBQbGF0Zm9ybUNlcnRpZmljYXRlSW5mbzo6ZW5jb2RlKENvcmVJUEM6
OkFyZ3VtZW50RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKICAgICBpZiAoIW1fY2VydGlmaWNh
dGVDaGFpbikgewotICAgICAgICBlbmNvZGVyLmVuY29kZShmYWxzZSk7CisgICAgICAgIGVuY29k
ZXIgPDwgZmFsc2U7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBlbmNvZGVyLmVuY29k
ZSh0cnVlKTsKLSAgICBDb3JlSVBDOjplbmNvZGUoJmVuY29kZXIsIG1fY2VydGlmaWNhdGVDaGFp
bi5nZXQoKSk7CisgICAgZW5jb2RlciA8PCB0cnVlOworICAgIENvcmVJUEM6OmVuY29kZShlbmNv
ZGVyLCBtX2NlcnRpZmljYXRlQ2hhaW4uZ2V0KCkpOwogfQogCiBib29sIFBsYXRmb3JtQ2VydGlm
aWNhdGVJbmZvOjpkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBQbGF0
Zm9ybUNlcnRpZmljYXRlSW5mbyYgYykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMv
U2FuZGJveEV4dGVuc2lvbk1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvbWFjL1NhbmRib3hFeHRlbnNpb25NYWMubW0JKHJldmlzaW9uIDEzMjg3MSkKKysrIFNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9tYWMvU2FuZGJveEV4dGVuc2lvbk1hYy5tbQkod29ya2luZyBjb3B5
KQpAQCAtNTYsNyArNTYsNyBAQCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU6On5IYW5kbGUoKQog
dm9pZCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU6OmVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVu
Y29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3NhbmRib3hFeHRlbnNpb24pIHsK
LSAgICAgICAgZW5jb2Rlci5lbmNvZGVWYXJpYWJsZUxlbmd0aEJ5dGVBcnJheShDb3JlSVBDOjpE
YXRhUmVmZXJlbmNlKCkpOworICAgICAgICBlbmNvZGVyIDw8IENvcmVJUEM6OkRhdGFSZWZlcmVu
Y2UoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNjQsNyArNjQsNyBAQCB2b2lkIFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZTo6ZW5jb2RlKENvCiAgICAgY29uc3QgY2hhciAqc2VyaWFs
aXplZEZvcm1hdCA9IFdLU2FuZGJveEV4dGVuc2lvbkdldFNlcmlhbGl6ZWRGb3JtYXQobV9zYW5k
Ym94RXh0ZW5zaW9uLCAmbGVuZ3RoKTsKICAgICBBU1NFUlQoc2VyaWFsaXplZEZvcm1hdCk7CiAK
LSAgICBlbmNvZGVyLmVuY29kZVZhcmlhYmxlTGVuZ3RoQnl0ZUFycmF5KENvcmVJUEM6OkRhdGFS
ZWZlcmVuY2UocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oc2VyaWFsaXplZEZvcm1h
dCksIGxlbmd0aCkpOworICAgIGVuY29kZXIgPDwgQ29yZUlQQzo6RGF0YVJlZmVyZW5jZShyZWlu
dGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihzZXJpYWxpemVkRm9ybWF0KSwgbGVuZ3RoKTsK
IAogICAgIC8vIEVuY29kaW5nIHdpbGwgZGVzdHJveSB0aGUgc2FuZGJveCBleHRlbnNpb24gbG9j
YWxseS4KICAgICBXS1NhbmRib3hFeHRlbnNpb25EZXN0cm95KG1fc2FuZGJveEV4dGVuc2lvbik7
CkBAIC03Niw3ICs3Niw3IEBAIGJvb2wgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlOjpkZWNvZGUo
Q28KICAgICBBU1NFUlQoIXJlc3VsdC5tX3NhbmRib3hFeHRlbnNpb24pOwogCiAgICAgQ29yZUlQ
Qzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlOwotICAgIGlmICghZGVjb2Rlci0+ZGVjb2Rl
VmFyaWFibGVMZW5ndGhCeXRlQXJyYXkoZGF0YVJlZmVyZW5jZSkpCisgICAgaWYgKCFkZWNvZGVy
LT5kZWNvZGUoZGF0YVJlZmVyZW5jZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlm
IChkYXRhUmVmZXJlbmNlLmlzRW1wdHkoKSkKQEAgLTEyOCw5ICsxMjgsOSBAQCBzaXplX3QgU2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk6OnNpCiAKIHZvaWQgU2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlQXJyYXk6OmVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXImIGVuY29kZXIpIGNv
bnN0CiB7Ci0gICAgZW5jb2Rlci5lbmNvZGUoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHNpemUoKSkp
OworICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHNpemUoKSk7CiAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBtX3NpemU7ICsraSkKLSAgICAgICAgZW5jb2Rlci5lbmNvZGUo
bV9kYXRhW2ldKTsKKyAgICAgICAgZW5jb2RlciA8PCBtX2RhdGFbaV07CiAgICAgCiB9CiAKQEAg
LTE0MCw5ICsxNDAsMTAgQEAgYm9vbCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6ZGVj
bwogICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlVUludDY0KHNpemUpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgaGFuZGxlcy5hbGxvY2F0ZShzaXplKTsKLSAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHNpemU7IGkrKykKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7IGkrKykg
ewogICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZShoYW5kbGVzW2ldKSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9tYWMvU2VjSXRlbVJlcXVlc3REYXRhLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1NlY0l0ZW1SZXF1ZXN0RGF0YS5jcHAJKHJldmlz
aW9uIDEzMjg3MSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvU2VjSXRlbVJlcXVlc3RE
YXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMsMTEgKzUzLDExIEBAIHZvaWQgU2VjSXRlbVJl
cXVlc3REYXRhOjplbmNvZGUoQ29yZUlQQzoKIHsKICAgICBlbmNvZGVyLmVuY29kZUVudW0obV90
eXBlKTsKIAotICAgIENvcmVJUEM6OmVuY29kZSgmZW5jb2RlciwgbV9xdWVyeURpY3Rpb25hcnku
Z2V0KCkpOworICAgIENvcmVJUEM6OmVuY29kZShlbmNvZGVyLCBtX3F1ZXJ5RGljdGlvbmFyeS5n
ZXQoKSk7CiAKLSAgICBlbmNvZGVyLmVuY29kZShzdGF0aWNfY2FzdDxib29sPihtX2F0dHJpYnV0
ZXNUb01hdGNoKSk7CisgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDxib29sPihtX2F0dHJpYnV0
ZXNUb01hdGNoKTsKICAgICBpZiAobV9hdHRyaWJ1dGVzVG9NYXRjaCkKLSAgICAgICAgQ29yZUlQ
Qzo6ZW5jb2RlKCZlbmNvZGVyLCBtX2F0dHJpYnV0ZXNUb01hdGNoLmdldCgpKTsKKyAgICAgICAg
Q29yZUlQQzo6ZW5jb2RlKGVuY29kZXIsIG1fYXR0cmlidXRlc1RvTWF0Y2guZ2V0KCkpOwogfQog
CiBib29sIFNlY0l0ZW1SZXF1ZXN0RGF0YTo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2Rl
ciogZGVjb2RlciwgU2VjSXRlbVJlcXVlc3REYXRhJiBzZWNJdGVtUmVxdWVzdERhdGEpCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1NlY0l0ZW1SZXNwb25zZURhdGEuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvU2VjSXRlbVJlc3BvbnNlRGF0YS5j
cHAJKHJldmlzaW9uIDEzMjg3MSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvU2VjSXRl
bVJlc3BvbnNlRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDEwICs0MywxMCBAQCBTZWNJ
dGVtUmVzcG9uc2VEYXRhOjpTZWNJdGVtUmVzcG9uc2VEYXRhCiAKIHZvaWQgU2VjSXRlbVJlc3Bv
bnNlRGF0YTo6ZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciYgZW5jb2RlcikgY29uc3QK
IHsKLSAgICBlbmNvZGVyLmVuY29kZShzdGF0aWNfY2FzdDxpbnQ2NF90PihtX3Jlc3VsdENvZGUp
KTsKLSAgICBlbmNvZGVyLmVuY29kZShzdGF0aWNfY2FzdDxib29sPihtX3Jlc3VsdE9iamVjdC5n
ZXQoKSkpOworICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8aW50NjRfdD4obV9yZXN1bHRDb2Rl
KTsKKyAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PGJvb2w+KG1fcmVzdWx0T2JqZWN0LmdldCgp
KTsKICAgICBpZiAobV9yZXN1bHRPYmplY3QpCi0gICAgICAgIENvcmVJUEM6OmVuY29kZSgmZW5j
b2RlciwgbV9yZXN1bHRPYmplY3QuZ2V0KCkpOworICAgICAgICBDb3JlSVBDOjplbmNvZGUoZW5j
b2RlciwgbV9yZXN1bHRPYmplY3QuZ2V0KCkpOwogfQogCiBib29sIFNlY0l0ZW1SZXNwb25zZURh
dGE6OmRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFNlY0l0ZW1SZXNw
b25zZURhdGEmIHNlY0l0ZW1SZXNwb25zZURhdGEpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvbWFjL1NlY0tleWNoYWluSXRlbVJlcXVlc3REYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1NlY0tleWNoYWluSXRlbVJlcXVlc3REYXRhLmNwcAkocmV2
aXNpb24gMTMyODcxKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9TZWNLZXljaGFpbkl0
ZW1SZXF1ZXN0RGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNywxNiArMTI3LDE2IEBAIHZv
aWQgU2VjS2V5Y2hhaW5JdGVtUmVxdWVzdERhdGE6OmVuY29kZSgKIHsKICAgICBlbmNvZGVyLmVu
Y29kZUVudW0obV90eXBlKTsKIAotICAgIGVuY29kZXIuZW5jb2RlKHN0YXRpY19jYXN0PGJvb2w+
KG1fa2V5Y2hhaW5JdGVtKSk7CisgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDxib29sPihtX2tl
eWNoYWluSXRlbSk7CiAgICAgaWYgKG1fa2V5Y2hhaW5JdGVtKQotICAgICAgICBDb3JlSVBDOjpl
bmNvZGUoJmVuY29kZXIsIG1fa2V5Y2hhaW5JdGVtLmdldCgpKTsKKyAgICAgICAgQ29yZUlQQzo6
ZW5jb2RlKGVuY29kZXIsIG1fa2V5Y2hhaW5JdGVtLmdldCgpKTsKIAotICAgIGVuY29kZXIuZW5j
b2RlKHN0YXRpY19jYXN0PGludDMyX3Q+KG1fa2V5Y2hhaW5BdHRyaWJ1dGVzLnNpemUoKSkpOwor
ICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8aW50MzJfdD4obV9rZXljaGFpbkF0dHJpYnV0ZXMu
c2l6ZSgpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMCwgY291bnQgPSBtX2tleWNoYWluQXR0cmli
dXRlcy5zaXplKCk7IGkgPCBjb3VudDsgKytpKQotICAgICAgICBDb3JlSVBDOjplbmNvZGUoJmVu
Y29kZXIsIG1fa2V5Y2hhaW5BdHRyaWJ1dGVzW2ldKTsKKyAgICAgICAgQ29yZUlQQzo6ZW5jb2Rl
KGVuY29kZXIsIG1fa2V5Y2hhaW5BdHRyaWJ1dGVzW2ldKTsKICAgICAKLSAgICBlbmNvZGVyLmVu
Y29kZShzdGF0aWNfY2FzdDx1aW50NjRfdD4obV9pdGVtQ2xhc3MpKTsKLSAgICBtX2RhdGFSZWZl
cmVuY2UuZW5jb2RlKGVuY29kZXIpOworICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0
X3Q+KG1faXRlbUNsYXNzKTsKKyAgICBlbmNvZGVyIDw8IG1fZGF0YVJlZmVyZW5jZTsKIH0KIAog
Ym9vbCBTZWNLZXljaGFpbkl0ZW1SZXF1ZXN0RGF0YTo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50
RGVjb2RlciogZGVjb2RlciwgU2VjS2V5Y2hhaW5JdGVtUmVxdWVzdERhdGEmIHNlY0tleWNoYWlu
SXRlbVJlcXVlc3REYXRhKQpAQCAtMTcxLDkgKzE3MSw5IEBAIGJvb2wgU2VjS2V5Y2hhaW5JdGVt
UmVxdWVzdERhdGE6OmRlY29kZSgKICAgICAKICAgICBzZWNLZXljaGFpbkl0ZW1SZXF1ZXN0RGF0
YS5tX2l0ZW1DbGFzcyA9IHN0YXRpY19jYXN0PFNlY0l0ZW1DbGFzcz4oaXRlbUNsYXNzKTsKIAot
ICAgIGlmICghQ29yZUlQQzo6RGF0YVJlZmVyZW5jZTo6ZGVjb2RlKGRlY29kZXIsIHNlY0tleWNo
YWluSXRlbVJlcXVlc3REYXRhLm1fZGF0YVJlZmVyZW5jZSkpCisgICAgaWYgKGRlY29kZXItPmRl
Y29kZShzZWNLZXljaGFpbkl0ZW1SZXF1ZXN0RGF0YS5tX2RhdGFSZWZlcmVuY2UpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIAorCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvU2VjS2V5Y2hhaW5JdGVtUmVzcG9uc2VEYXRhLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1NlY0tleWNoYWluSXRl
bVJlc3BvbnNlRGF0YS5jcHAJKHJldmlzaW9uIDEzMjg3MSkKKysrIFNvdXJjZS9XZWJLaXQyL1No
YXJlZC9tYWMvU2VjS2V5Y2hhaW5JdGVtUmVzcG9uc2VEYXRhLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNjUsMTkgKzY1LDE5IEBAIFNlY0tleWNoYWluSXRlbVJlc3BvbnNlRGF0YTo6U2VjS2V5Y2hh
aW4KIAogdm9pZCBTZWNLZXljaGFpbkl0ZW1SZXNwb25zZURhdGE6OmVuY29kZShDb3JlSVBDOjpB
cmd1bWVudEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAgZW5jb2Rlci5lbmNvZGUoc3Rh
dGljX2Nhc3Q8aW50NjRfdD4obV9yZXN1bHRDb2RlKSk7Ci0gICAgZW5jb2Rlci5lbmNvZGUoc3Rh
dGljX2Nhc3Q8dWludDMyX3Q+KG1faXRlbUNsYXNzKSk7Ci0gICAgZW5jb2Rlci5lbmNvZGUoc3Rh
dGljX2Nhc3Q8dWludDMyX3Q+KG1fYXR0cmlidXRlcy5zaXplKCkpKTsKKyAgICBlbmNvZGVyIDw8
IHN0YXRpY19jYXN0PGludDY0X3Q+KG1fcmVzdWx0Q29kZSk7CisgICAgZW5jb2RlciA8PCBzdGF0
aWNfY2FzdDx1aW50MzJfdD4obV9pdGVtQ2xhc3MpOworICAgIGVuY29kZXIgPDwgc3RhdGljX2Nh
c3Q8dWludDMyX3Q+KG1fYXR0cmlidXRlcy5zaXplKCkpOwogICAgIGZvciAoc2l6ZV90IGkgPSAw
LCBjb3VudCA9IG1fYXR0cmlidXRlcy5zaXplKCk7IGkgPCBjb3VudDsgKytpKQotICAgICAgICBD
b3JlSVBDOjplbmNvZGUoJmVuY29kZXIsIG1fYXR0cmlidXRlc1tpXSk7CisgICAgICAgIENvcmVJ
UEM6OmVuY29kZShlbmNvZGVyLCBtX2F0dHJpYnV0ZXNbaV0pOwogCi0gICAgZW5jb2Rlci5lbmNv
ZGUoc3RhdGljX2Nhc3Q8Ym9vbD4obV9kYXRhKSk7CisgICAgZW5jb2RlciA8PCBzdGF0aWNfY2Fz
dDxib29sPihtX2RhdGEpOwogICAgIGlmIChtX2RhdGEpCi0gICAgICAgIENvcmVJUEM6OmVuY29k
ZSgmZW5jb2RlciwgbV9kYXRhLmdldCgpKTsKKyAgICAgICAgQ29yZUlQQzo6ZW5jb2RlKGVuY29k
ZXIsIG1fZGF0YS5nZXQoKSk7CiAKLSAgICBlbmNvZGVyLmVuY29kZShzdGF0aWNfY2FzdDxib29s
PihtX2tleWNoYWluSXRlbSkpOworICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8Ym9vbD4obV9r
ZXljaGFpbkl0ZW0pOwogICAgIGlmIChtX2tleWNoYWluSXRlbSkKLSAgICAgICAgQ29yZUlQQzo6
ZW5jb2RlKCZlbmNvZGVyLCBtX2tleWNoYWluSXRlbS5nZXQoKSk7CisgICAgICAgIENvcmVJUEM6
OmVuY29kZShlbmNvZGVyLCBtX2tleWNoYWluSXRlbS5nZXQoKSk7CiB9CiAKIGJvb2wgU2VjS2V5
Y2hhaW5JdGVtUmVzcG9uc2VEYXRhOjpkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBk
ZWNvZGVyLCBTZWNLZXljaGFpbkl0ZW1SZXNwb25zZURhdGEmIHNlY0tleWNoYWluSXRlbVJlc3Bv
bnNlRGF0YSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tCShyZXZpc2lvbiAxMzI4NzEpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVyc01hYy5tbQkod29ya2luZyBjb3B5
KQpAQCAtNDcsNyArNDcsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6
ZW5jCiAgICAgICAgIHJldHVybjsKIAogICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGRp
Y3Rpb25hcnkoQWRvcHRDRiwgV0tOU1VSTFJlcXVlc3RDcmVhdGVTZXJpYWxpemFibGVSZXByZXNl
bnRhdGlvbihyZXNvdXJjZVJlcXVlc3QubnNVUkxSZXF1ZXN0KCksIENvcmVJUEM6OnRva2VuTnVs
bFR5cGVSZWYoKSkpOwotICAgIENvcmVJUEM6OmVuY29kZShlbmNvZGVyLCBkaWN0aW9uYXJ5Lmdl
dCgpKTsKKyAgICBDb3JlSVBDOjplbmNvZGUoKmVuY29kZXIsIGRpY3Rpb25hcnkuZ2V0KCkpOwog
fQogCiBib29sIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6ZGVjb2RlUGxhdGZvcm1E
YXRhKEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJl
cXVlc3QpCkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlc3Bv
bnNlPjo6ZW4KICAgICAgICAgcmV0dXJuOwogCiAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJl
Zj4gZGljdGlvbmFyeShBZG9wdENGLCBXS05TVVJMUmVzcG9uc2VDcmVhdGVTZXJpYWxpemFibGVS
ZXByZXNlbnRhdGlvbihyZXNvdXJjZVJlc3BvbnNlLm5zVVJMUmVzcG9uc2UoKSwgQ29yZUlQQzo6
dG9rZW5OdWxsVHlwZVJlZigpKSk7Ci0gICAgQ29yZUlQQzo6ZW5jb2RlKGVuY29kZXIsIGRpY3Rp
b25hcnkuZ2V0KCkpOworICAgIENvcmVJUEM6OmVuY29kZSgqZW5jb2RlciwgZGljdGlvbmFyeS5n
ZXQoKSk7CiB9CiAKIGJvb2wgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlc3BvbnNlPjo6ZGVjb2Rl
UGxhdGZvcm1EYXRhKEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgUmVzb3VyY2VSZXNwb25zZSYg
cmVzb3VyY2VSZXNwb25zZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDEzMjg3MSkKKysr
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQsNyBAQCBXZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpXZWJDb25uZWN0aW9uCiAKIHZvaWQgV2ViQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZW5jb2Rl
TWVzc2FnZUJvZHkoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBBUElPYmplY3Qq
IG1lc3NhZ2VCb2R5KQogewotICAgIGVuY29kZXIuZW5jb2RlKFdlYkNvbnRleHRVc2VyTWVzc2Fn
ZUVuY29kZXIobWVzc2FnZUJvZHkpKTsKKyAgICBlbmNvZGVyIDw8IFdlYkNvbnRleHRVc2VyTWVz
c2FnZUVuY29kZXIobWVzc2FnZUJvZHkpOwogfQogCiBib29sIFdlYkNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OmRlY29kZU1lc3NhZ2VCb2R5KENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciYgZGVjb2Rl
ciwgUmVmUHRyPEFQSU9iamVjdD4mIG1lc3NhZ2VCb2R5KQpJbmRleDogU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYkNvbnRleHRVc2VyTWVzc2FnZUNvZGVycy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0VXNlck1lc3NhZ2VDb2RlcnMuaAkocmV2
aXNpb24gMTMyODcxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHRVc2Vy
TWVzc2FnZUNvZGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSwxNyArNTUsMTcgQEAgcHVibGlj
OgogICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICAgICAgY2FzZSBBUElPYmplY3Q6OlR5cGVQ
YWdlOiB7CiAgICAgICAgICAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSBzdGF0aWNfY2FzdDxXZWJQ
YWdlUHJveHkqPihtX3Jvb3QpOwotICAgICAgICAgICAgZW5jb2Rlci5lbmNvZGUocGFnZS0+cGFn
ZUlEKCkpOworICAgICAgICAgICAgZW5jb2RlciA8PCBwYWdlLT5wYWdlSUQoKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQVBJT2JqZWN0OjpUeXBlRnJhbWU6
IHsKICAgICAgICAgICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gc3RhdGljX2Nhc3Q8V2ViRnJh
bWVQcm94eSo+KG1fcm9vdCk7Ci0gICAgICAgICAgICBlbmNvZGVyLmVuY29kZShmcmFtZS0+ZnJh
bWVJRCgpKTsKKyAgICAgICAgICAgIGVuY29kZXIgPDwgZnJhbWUtPmZyYW1lSUQoKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQVBJT2JqZWN0OjpUeXBlUGFn
ZUdyb3VwOiB7CiAgICAgICAgICAgICBXZWJQYWdlR3JvdXAqIHBhZ2VHcm91cCA9IHN0YXRpY19j
YXN0PFdlYlBhZ2VHcm91cCo+KG1fcm9vdCk7Ci0gICAgICAgICAgICBlbmNvZGVyLmVuY29kZShw
YWdlR3JvdXAtPmRhdGEoKSk7CisgICAgICAgICAgICBlbmNvZGVyIDw8IHBhZ2VHcm91cC0+ZGF0
YSgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgZGVmYXVsdDoKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvbm5lY3Rpb25U
b1VJUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDEzMjg3MSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEs
NyArNTEsNyBAQCBXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3M6OldlYkNvbm5lY3Rpb25UCiAKIHZv
aWQgV2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzOjplbmNvZGVNZXNzYWdlQm9keShDb3JlSVBDOjpB
cmd1bWVudEVuY29kZXImIGVuY29kZXIsIEFQSU9iamVjdCogbWVzc2FnZUJvZHkpCiB7Ci0gICAg
ZW5jb2Rlci5lbmNvZGUoSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIobWVzc2FnZUJv
ZHkpKTsKKyAgICBlbmNvZGVyIDw8IEluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyKG1l
c3NhZ2VCb2R5KTsKIH0KIAogYm9vbCBXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3M6OmRlY29kZU1l
c3NhZ2VCb2R5KENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPEFQSU9i
amVjdD4mIG1lc3NhZ2VCb2R5KQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlQ29kZXJzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZVVzZXJNZXNzYWdlQ29kZXJzLmgJKHJldmlzaW9uIDEzMjg3MSkKKysrIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUNvZGVy
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC01OCwxNyArNTgsMTcgQEAgcHVibGljOgogICAgICAgICBz
d2l0Y2ggKHR5cGUpIHsKICAgICAgICAgY2FzZSBBUElPYmplY3Q6OlR5cGVCdW5kbGVQYWdlOiB7
CiAgICAgICAgICAgICBXZWJQYWdlKiBwYWdlID0gc3RhdGljX2Nhc3Q8V2ViUGFnZSo+KG1fcm9v
dCk7Ci0gICAgICAgICAgICBlbmNvZGVyLmVuY29kZShwYWdlLT5wYWdlSUQoKSk7CisgICAgICAg
ICAgICBlbmNvZGVyIDw8IHBhZ2UtPnBhZ2VJRCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICAgICAgY2FzZSBBUElPYmplY3Q6OlR5cGVCdW5kbGVGcmFtZTogewogICAgICAg
ICAgICAgV2ViRnJhbWUqIGZyYW1lID0gc3RhdGljX2Nhc3Q8V2ViRnJhbWUqPihtX3Jvb3QpOwot
ICAgICAgICAgICAgZW5jb2Rlci5lbmNvZGUoZnJhbWUtPmZyYW1lSUQoKSk7CisgICAgICAgICAg
ICBlbmNvZGVyIDw8IGZyYW1lLT5mcmFtZUlEKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogICAgICAgICBjYXNlIEFQSU9iamVjdDo6VHlwZUJ1bmRsZVBhZ2VHcm91cDogewogICAg
ICAgICAgICAgV2ViUGFnZUdyb3VwUHJveHkqIHBhZ2VHcm91cCA9IHN0YXRpY19jYXN0PFdlYlBh
Z2VHcm91cFByb3h5Kj4obV9yb290KTsKLSAgICAgICAgICAgIGVuY29kZXIuZW5jb2RlKHBhZ2VH
cm91cC0+cGFnZUdyb3VwSUQoKSk7CisgICAgICAgICAgICBlbmNvZGVyIDw8IHBhZ2VHcm91cC0+
cGFnZUdyb3VwSUQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGRl
ZmF1bHQ6CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
LmNwcAkocmV2aXNpb24gMTMyODcxKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDEyICszNCwxMiBAQCBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogdm9pZCBQbHVnaW46OlBhcmFtZXRlcnM6OmVuY29kZShDb3JlSVBDOjpB
cmd1bWVudEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAgZW5jb2Rlci5lbmNvZGUodXJs
LnN0cmluZygpKTsKLSAgICBlbmNvZGVyLmVuY29kZShuYW1lcyk7Ci0gICAgZW5jb2Rlci5lbmNv
ZGUodmFsdWVzKTsKLSAgICBlbmNvZGVyLmVuY29kZShtaW1lVHlwZSk7Ci0gICAgZW5jb2Rlci5l
bmNvZGUoaXNGdWxsRnJhbWVQbHVnaW4pOwotICAgIGVuY29kZXIuZW5jb2RlKHNob3VsZFVzZU1h
bnVhbExvYWRlcik7CisgICAgZW5jb2RlciA8PCB1cmwuc3RyaW5nKCk7CisgICAgZW5jb2RlciA8
PCBuYW1lczsKKyAgICBlbmNvZGVyIDw8IHZhbHVlczsKKyAgICBlbmNvZGVyIDw8IG1pbWVUeXBl
OworICAgIGVuY29kZXIgPDwgaXNGdWxsRnJhbWVQbHVnaW47CisgICAgZW5jb2RlciA8PCBzaG91
bGRVc2VNYW51YWxMb2FkZXI7CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIGVuY29kZXIuZW5jb2Rl
RW51bShsYXllckhvc3RpbmdNb2RlKTsKICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171376</attachid>
            <date>2012-10-29 22:49:55 -0700</date>
            <delta_ts>2012-10-30 10:43:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100725-20121029224823.patch</filename>
            <type>text/plain</type>
            <size>84163</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzMjg3MSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0MyBAQAorMjAxMi0xMC0yOSAgU2FtIFdl
aW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIFN3aXRjaCBtb3JlIGNsYXNzIHRvIHVz
ZSB0aGUgbmV3IDw8IGZvcm0gb2YgZW5jb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA3MjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAtIFN3aXRjaGVzIG1hbnkgdXNlcyBvZiBlbmNvZGVyLmVuY29k
ZShmb28pIHRvIGVuY29kZXIgPDwgZm9vLgorICAgICAgICAtIFN3aXRjaGVzIGEgZmV3IHBsYWNl
cyB0byB0YWtlIGFuIEFyZ3VtZW50RW5jb2RlciYgcmF0aGVyIHRoYW4gYW4gQXJndW1lbnRFbmNv
ZGVyKi4KKyAgICAgICAgLSBTd2l0Y2hlcyBhIGZldyBwbGFjZXMgYXdheSBmcm9tIHVzaW5nIGVu
Y29kZXIuZW5jb2RlVmFyaWFibGVMZW5ndGhCeXRlQXJyYXkoZm9vKSB0bworICAgICAgICAgIHVz
aW5nIGVuY29kZXIgPDwgQ29yZUlQQzo6RGF0YVJlZmVyZW5jZShmb28pLgorCisgICAgICAgICog
UGxhdGZvcm0vQ29yZUlQQy9IYW5kbGVNZXNzYWdlLmg6CisgICAgICAgIChDb3JlSVBDOjpoYW5k
bGVNZXNzYWdlKToKKyAgICAgICAgKENvcmVJUEM6OmhhbmRsZU1lc3NhZ2VWYXJpYWRpYyk6Cisg
ICAgICAgICogUGxhdGZvcm0vQ29yZUlQQy9TdHJpbmdSZWZlcmVuY2UuY3BwOgorICAgICAgICAo
Q29yZUlQQzo6U3RyaW5nUmVmZXJlbmNlOjplbmNvZGUpOgorICAgICAgICAoQ29yZUlQQzo6U3Ry
aW5nUmVmZXJlbmNlOjpkZWNvZGUpOgorICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvbWFjL01h
Y2hQb3J0Lmg6CisgICAgICAgIChDb3JlSVBDOjpNYWNoUG9ydDo6ZW5jb2RlKToKKyAgICAgICAg
KiBQbGF0Zm9ybS9tYWMvU2hhcmVkTWVtb3J5TWFjLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hh
cmVkTWVtb3J5OjpIYW5kbGU6OmVuY29kZSk6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9QbHVn
aW5DcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5DcmVhdGlv
blBhcmFtZXRlcnM6OmVuY29kZSk6CisgICAgICAgICogU2hhcmVkL0RpY3Rpb25hcnlQb3B1cElu
Zm8uY3BwOgorICAgICAgICAoV2ViS2l0OjpEaWN0aW9uYXJ5UG9wdXBJbmZvOjplbmNvZGUpOgor
ICAgICAgICAqIFNoYXJlZC9FZGl0b3JTdGF0ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkVkaXRv
clN0YXRlOjplbmNvZGUpOgorICAgICAgICAqIFNoYXJlZC9Gb250SW5mby5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkZvbnRJbmZvOjplbmNvZGUpOgorICAgICAgICAqIFNoYXJlZC9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSk6CisgICAgICAgICogU2hhcmVk
L09yaWdpbkFuZERhdGFiYXNlcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdpbkFuZERhdGFi
YXNlczo6ZW5jb2RlKToKKyAgICAgICAgKiBTaGFyZWQvUGxhdGZvcm1Qb3B1cE1lbnVEYXRhLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1Qb3B1cE1lbnVEYXRhOjplbmNvZGUpOgorICAg
ICAgICAqIFNoYXJlZC9QbHVnaW5zL05QSWRlbnRpZmllckRhdGEuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpOUElkZW50aWZpZXJEYXRhOjplbmNvZGUpOgorICAgICAgICAqIFNoYXJlZC9QbHVnaW5z
L05QVmFyaWFudERhdGEuY3BwOgorICAgICAgICAoV2ViS2l0OjpOUFZhcmlhbnREYXRhOjplbmNv
ZGUpOgorICAgICAgICAqIFNoYXJlZC9QbHVnaW5zL1BsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzOjplbmNvZGUpOgorICAgICAgICAqIFNoYXJlZC9QcmludEluZm8uY3BwOgorICAgICAgICAo
V2ViS2l0OjpQcmludEluZm86OmVuY29kZSk6CisgICAgICAgICogU2hhcmVkL1NlY3VyaXR5T3Jp
Z2luRGF0YS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNlY3VyaXR5T3JpZ2luRGF0YTo6ZW5jb2Rl
KToKKyAgICAgICAgKiBTaGFyZWQvU2Vzc2lvblN0YXRlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
U2Vzc2lvblN0YXRlOjplbmNvZGUpOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVCaXRtYXAu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkhhbmRsZTo6ZW5jb2RlKToK
KyAgICAgICAgKiBTaGFyZWQvU2hhcmVkV29ya2VyUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZFdvcmtlclByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnM6OmVuY29kZSk6CisgICAgICAgICogU2hhcmVkL1N0YXRpc3RpY3NEYXRhLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6U3RhdGlzdGljc0RhdGE6OmVuY29kZSk6CisgICAgICAgICogU2hhcmVkL1N0
cmluZ1BhaXJWZWN0b3IuaDoKKyAgICAgICAgKFdlYktpdDo6U3RyaW5nUGFpclZlY3Rvcjo6ZW5j
b2RlKToKKyAgICAgICAgKiBTaGFyZWQvVXBkYXRlSW5mby5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlVwZGF0ZUluZm86OmVuY29kZSk6CisgICAgICAgICogU2hhcmVkL1VzZXJNZXNzYWdlQ29kZXJz
Lmg6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZXNzYWdlRW5jb2Rlcjo6YmFzZUVuY29kZSk6Cisg
ICAgICAgICogU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjplbmNvZGUpOgorICAgICAgICAqIFNoYXJlZC9X
ZWJDb250ZXh0TWVudUl0ZW1EYXRhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1l
bnVJdGVtRGF0YTo6ZW5jb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViRXZlbnQuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJFdmVudDo6ZW5jb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViR2Vz
dHVyZUV2ZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViR2VzdHVyZUV2ZW50OjplbmNvZGUp
OgorICAgICAgICAqIFNoYXJlZC9XZWJIaXRUZXN0UmVzdWx0LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViSGl0VGVzdFJlc3VsdDo6RGF0YTo6ZW5jb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2Vi
S2V5Ym9hcmRFdmVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYktleWJvYXJkRXZlbnQ6OmVu
Y29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYk1vdXNlRXZlbnQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJNb3VzZUV2ZW50OjplbmNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJOYXZpZ2F0
aW9uRGF0YVN0b3JlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYk5hdmlnYXRpb25EYXRhU3RvcmU6
OmVuY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUpOgor
ICAgICAgICAqIFNoYXJlZC9XZWJQYWdlR3JvdXBEYXRhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZUdyb3VwRGF0YTo6ZW5jb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViUGxhdGZvcm1U
b3VjaFBvaW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1Ub3VjaFBvaW50Ojpl
bmNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJQb3B1cEl0ZW0uY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQb3B1cEl0ZW06OmVuY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYlByZWZlcmVu
Y2VzU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjplbmNv
ZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKToK
KyAgICAgICAgKiBTaGFyZWQvV2ViVG91Y2hFdmVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlRvdWNoRXZlbnQ6OmVuY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYldoZWVsRXZlbnQuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJXaGVlbEV2ZW50OjplbmNvZGUpOgorICAgICAgICAqIFNo
YXJlZC9jZi9Bcmd1bWVudENvZGVyc0NGLmNwcDoKKyAgICAgICAgKENvcmVJUEM6OmVuY29kZSk6
CisgICAgICAgIChDb3JlSVBDOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9jZi9Bcmd1bWVu
dENvZGVyc0NGLmg6CisgICAgICAgIChDb3JlSVBDKToKKyAgICAgICAgKiBTaGFyZWQvbWFjL0Fy
Z3VtZW50Q29kZXJzTWFjLmg6CisgICAgICAgIChDb3JlSVBDKToKKyAgICAgICAgKiBTaGFyZWQv
bWFjL0FyZ3VtZW50Q29kZXJzTWFjLm1tOgorICAgICAgICAoQ29yZUlQQzo6ZW5jb2RlKToKKyAg
ICAgICAgKiBTaGFyZWQvbWFjL0F0dHJpYnV0ZWRTdHJpbmcubW06CisgICAgICAgIChXZWJLaXQ6
OkF0dHJpYnV0ZWRTdHJpbmc6OmVuY29kZSk6CisgICAgICAgICogU2hhcmVkL21hYy9Db2xvclNw
YWNlRGF0YS5tbToKKyAgICAgICAgKFdlYktpdDo6Q29sb3JTcGFjZURhdGE6OmVuY29kZSk6Cisg
ICAgICAgICogU2hhcmVkL21hYy9LZXljaGFpbkF0dHJpYnV0ZS5jcHA6CisgICAgICAgIChDb3Jl
SVBDOjplbmNvZGUpOgorICAgICAgICAqIFNoYXJlZC9tYWMvS2V5Y2hhaW5BdHRyaWJ1dGUuaDoK
KyAgICAgICAgKENvcmVJUEMpOgorICAgICAgICAqIFNoYXJlZC9tYWMvTGF5ZXJUcmVlQ29udGV4
dE1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlQ29udGV4dDo6ZW5jb2RlKToKKyAg
ICAgICAgKiBTaGFyZWQvbWFjL1BsYXRmb3JtQ2VydGlmaWNhdGVJbmZvLm1tOgorICAgICAgICAo
V2ViS2l0OjpQbGF0Zm9ybUNlcnRpZmljYXRlSW5mbzo6ZW5jb2RlKToKKyAgICAgICAgKiBTaGFy
ZWQvbWFjL1NhbmRib3hFeHRlbnNpb25NYWMubW06CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hF
eHRlbnNpb246OkhhbmRsZTo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlOjpkZWNvZGUpOgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGVBcnJheTo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlQXJyYXk6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL21hYy9TZWNJdGVtUmVx
dWVzdERhdGEuY3BwOgorICAgICAgICAoV2ViS2l0OjpTZWNJdGVtUmVxdWVzdERhdGE6OmVuY29k
ZSk6CisgICAgICAgICogU2hhcmVkL21hYy9TZWNJdGVtUmVzcG9uc2VEYXRhLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6U2VjSXRlbVJlc3BvbnNlRGF0YTo6ZW5jb2RlKToKKyAgICAgICAgKiBTaGFy
ZWQvbWFjL1NlY0tleWNoYWluSXRlbVJlcXVlc3REYXRhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
U2VjS2V5Y2hhaW5JdGVtUmVxdWVzdERhdGE6OmVuY29kZSk6CisgICAgICAgIChXZWJLaXQ6OlNl
Y0tleWNoYWluSXRlbVJlcXVlc3REYXRhOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9tYWMv
U2VjS2V5Y2hhaW5JdGVtUmVzcG9uc2VEYXRhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2VjS2V5
Y2hhaW5JdGVtUmVzcG9uc2VEYXRhOjplbmNvZGUpOgorICAgICAgICAqIFNoYXJlZC9tYWMvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tOgorICAgICAgICAoQ29yZUlQQzo6OjplbmNvZGVQbGF0
Zm9ybURhdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZW5jb2Rl
TWVzc2FnZUJvZHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0VXNlck1lc3NhZ2VD
b2RlcnMuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dFVzZXJNZXNzYWdlRW5jb2Rlcjo6
ZW5jb2RlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlVXNlck1lc3NhZ2VDb2RlcnMuaDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVV
c2VyTWVzc2FnZUVuY29kZXI6OmVuY29kZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpbjo6UGFyYW1ldGVyczo6ZW5jb2Rl
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvbm5lY3Rpb25Ub1VJUHJvY2Vzcy5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkNvbm5lY3Rpb25Ub1VJUHJvY2Vzczo6ZW5jb2RlTWVzc2FnZUJv
ZHkpOgorCiAyMDEyLTEwLTI5ICBTZXJnaW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjEzMDc1NSk6IEFsbCBXZWJLaXQyIHVuaXQgdGVz
dHMgYXJlIGZhaWxpbmcgaW4gV2ViS2l0MiBib3QKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtL0NvcmVJUEMvSGFuZGxlTWVzc2FnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtL0NvcmVJUEMvSGFuZGxlTWVzc2FnZS5oCShyZXZpc2lvbiAxMzI4NzEpCisrKyBT
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0hhbmRsZU1lc3NhZ2UuaAkod29ya2luZyBj
b3B5KQpAQCAtMzMxLDcgKzMzMSw3IEBAIHZvaWQgaGFuZGxlTWVzc2FnZShNZXNzYWdlRGVjb2Rl
ciYgZGVjb2QKIAogICAgIHR5cGVuYW1lIFQ6OlJlcGx5OjpWYWx1ZVR5cGUgcmVwbHlBcmd1bWVu
dHM7CiAgICAgY2FsbE1lbWJlckZ1bmN0aW9uKGFyZ3VtZW50cywgcmVwbHlBcmd1bWVudHMsIG9i
amVjdCwgZnVuY3Rpb24pOwotICAgIHJlcGx5RW5jb2Rlci5lbmNvZGUocmVwbHlBcmd1bWVudHMp
OworICAgIHJlcGx5RW5jb2RlciA8PCByZXBseUFyZ3VtZW50czsKIH0KIAogdGVtcGxhdGU8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgQywgdHlwZW5hbWUgTUY+CkBAIC0zNjEsNyArMzYxLDcgQEAgdm9p
ZCBoYW5kbGVNZXNzYWdlVmFyaWFkaWMoTWVzc2FnZURlY29kZQogCiAgICAgdHlwZW5hbWUgVDo6
UmVwbHk6OlZhbHVlVHlwZSByZXBseUFyZ3VtZW50czsKICAgICBjYWxsTWVtYmVyRnVuY3Rpb24o
YXJndW1lbnRzLCBkZWNvZGVyLCByZXBseUFyZ3VtZW50cywgb2JqZWN0LCBmdW5jdGlvbik7Ci0g
ICAgcmVwbHlFbmNvZGVyLmVuY29kZShyZXBseUFyZ3VtZW50cyk7CisgICAgcmVwbHlFbmNvZGVy
IDw8IHJlcGx5QXJndW1lbnRzOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBD
LCB0eXBlbmFtZSBNRj4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvU3Ry
aW5nUmVmZXJlbmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9D
b3JlSVBDL1N0cmluZ1JlZmVyZW5jZS5jcHAJKHJldmlzaW9uIDEzMjg3MSkKKysrIFNvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvU3RyaW5nUmVmZXJlbmNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzUsMTMgKzM1LDEzIEBAIG5hbWVzcGFjZSBDb3JlSVBDIHsKIAogdm9pZCBTdHJpbmdS
ZWZlcmVuY2U6OmVuY29kZShBcmd1bWVudEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAg
ZW5jb2Rlci5lbmNvZGVWYXJpYWJsZUxlbmd0aEJ5dGVBcnJheShEYXRhUmVmZXJlbmNlKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1fZGF0YSksIG1fc2l6ZSkpOworICAgIGVuY29k
ZXIgPDwgRGF0YVJlZmVyZW5jZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihtX2Rh
dGEpLCBtX3NpemUpOwogfQogCiBib29sIFN0cmluZ1JlZmVyZW5jZTo6ZGVjb2RlKEFyZ3VtZW50
RGVjb2RlciogZGVjb2RlciwgU3RyaW5nUmVmZXJlbmNlJiByZXN1bHQpCiB7CiAgICAgRGF0YVJl
ZmVyZW5jZSBkYXRhUmVmZXJlbmNlOwotICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlVmFyaWFibGVM
ZW5ndGhCeXRlQXJyYXkoZGF0YVJlZmVyZW5jZSkpCisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUo
ZGF0YVJlZmVyZW5jZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJlc3VsdC5tX2Rh
dGEgPSByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhUmVmZXJlbmNlLmRhdGEoKSk7
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL21hYy9NYWNoUG9ydC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvbWFjL01hY2hQb3J0
LmgJKHJldmlzaW9uIDEzMjg3MSkKKysrIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMv
bWFjL01hY2hQb3J0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgog
CiAgICAgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIHsK
LSAgICAgICAgZW5jb2Rlci5lbmNvZGUoQXR0YWNobWVudChtX3BvcnQsIG1fZGlzcG9zaXRpb24p
KTsKKyAgICAgICAgZW5jb2RlciA8PCBBdHRhY2htZW50KG1fcG9ydCwgbV9kaXNwb3NpdGlvbik7
CiAgICAgfQogCiAgICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2Rl
ciwgTWFjaFBvcnQmIHApCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9tYWMvU2hhcmVk
TWVtb3J5TWFjLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9tYWMv
U2hhcmVkTWVtb3J5TWFjLmNwcAkocmV2aXNpb24gMTMyODcxKQorKysgU291cmNlL1dlYktpdDIv
UGxhdGZvcm0vbWFjL1NoYXJlZE1lbW9yeU1hYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3LDgg
KzU3LDggQEAgYm9vbCBTaGFyZWRNZW1vcnk6OkhhbmRsZTo6aXNOdWxsKCkgY29ucwogCiB2b2lk
IFNoYXJlZE1lbW9yeTo6SGFuZGxlOjplbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAogewotICAgIGVuY29kZXIuZW5jb2RlKHN0YXRpY19jYXN0PHVpbnQ2NF90
PihtX3NpemUpKTsKLSAgICBlbmNvZGVyLmVuY29kZShDb3JlSVBDOjpNYWNoUG9ydChtX3BvcnQs
IE1BQ0hfTVNHX1RZUEVfTU9WRV9TRU5EKSk7CisgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1
aW50NjRfdD4obV9zaXplKTsKKyAgICBlbmNvZGVyIDw8IENvcmVJUEM6Ok1hY2hQb3J0KG1fcG9y
dCwgTUFDSF9NU0dfVFlQRV9NT1ZFX1NFTkQpOwogICAgIG1fcG9ydCA9IE1BQ0hfUE9SVF9OVUxM
OwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNyZWF0aW9u
UGFyYW1ldGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vz
cy9QbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMuY3BwCShyZXZpc2lvbiAxMzI4NzEpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNyZWF0aW9uUGFyYW1ldGVycy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ3LDE3ICs0NywxNyBAQCBQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnM6
OlBsdWdpbkNyZWF0aW9uCiAKIHZvaWQgUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUo
Q29yZUlQQzo6QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewotICAgIGVuY29kZXIu
ZW5jb2RlKHBsdWdpbkluc3RhbmNlSUQpOwotICAgIGVuY29kZXIuZW5jb2RlKHdpbmRvd05QT2Jq
ZWN0SUQpOwotICAgIGVuY29kZXIuZW5jb2RlKHBhcmFtZXRlcnMpOwotICAgIGVuY29kZXIuZW5j
b2RlKHVzZXJBZ2VudCk7Ci0gICAgZW5jb2Rlci5lbmNvZGUoY29udGVudHNTY2FsZUZhY3Rvcik7
Ci0gICAgZW5jb2Rlci5lbmNvZGUoaXNQcml2YXRlQnJvd3NpbmdFbmFibGVkKTsKLSAgICBlbmNv
ZGVyLmVuY29kZShhc3luY2hyb25vdXNDcmVhdGlvbkluY29tcGxldGUpOwotICAgIGVuY29kZXIu
ZW5jb2RlKGFydGlmaWNpYWxQbHVnaW5Jbml0aWFsaXphdGlvbkRlbGF5RW5hYmxlZCk7CisgICAg
ZW5jb2RlciA8PCBwbHVnaW5JbnN0YW5jZUlEOworICAgIGVuY29kZXIgPDwgd2luZG93TlBPYmpl
Y3RJRDsKKyAgICBlbmNvZGVyIDw8IHBhcmFtZXRlcnM7CisgICAgZW5jb2RlciA8PCB1c2VyQWdl
bnQ7CisgICAgZW5jb2RlciA8PCBjb250ZW50c1NjYWxlRmFjdG9yOworICAgIGVuY29kZXIgPDwg
aXNQcml2YXRlQnJvd3NpbmdFbmFibGVkOworICAgIGVuY29kZXIgPDwgYXN5bmNocm9ub3VzQ3Jl
YXRpb25JbmNvbXBsZXRlOworICAgIGVuY29kZXIgPDwgYXJ0aWZpY2lhbFBsdWdpbkluaXRpYWxp
emF0aW9uRGVsYXlFbmFibGVkOwogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQot
ICAgIGVuY29kZXIuZW5jb2RlKGlzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQpOworICAg
IGVuY29kZXIgPDwgaXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZDsKICNlbmRpZgogfQog
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRGljdGlvbmFyeVBvcHVwSW5mby5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0RpY3Rpb25hcnlQb3B1cEluZm8uY3Bw
CShyZXZpc2lvbiAxMzI4NzEpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRGljdGlvbmFyeVBv
cHVwSW5mby5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDE1ICszNiwxNSBAQCBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogdm9pZCBEaWN0aW9uYXJ5UG9wdXBJbmZvOjplbmNvZGUoQ29yZUlQQzo6QXJn
dW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewotICAgIGVuY29kZXIuZW5jb2RlKG9yaWdp
bik7Ci0gICAgZW5jb2Rlci5lbmNvZGUoZm9udEluZm8pOworICAgIGVuY29kZXIgPDwgb3JpZ2lu
OworICAgIGVuY29kZXIgPDwgZm9udEluZm87CiAgICAgZW5jb2Rlci5lbmNvZGVFbnVtKHR5cGUp
OwogCiAjaWYgUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDEwNzAKICAgICBib29sIGhhZE9wdGlvbnMgPSBvcHRpb25zOwotICAgIGVuY29kZXIuZW5j
b2RlKGhhZE9wdGlvbnMpOworICAgIGVuY29kZXIgPDwgaGFkT3B0aW9uczsKICAgICBpZiAoaGFk
T3B0aW9ucykKLSAgICAgICAgQ29yZUlQQzo6ZW5jb2RlKCZlbmNvZGVyLCBvcHRpb25zLmdldCgp
KTsKKyAgICAgICAgQ29yZUlQQzo6ZW5jb2RlKGVuY29kZXIsIG9wdGlvbnMuZ2V0KCkpOwogI2Vu
ZGlmCiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9FZGl0b3JTdGF0ZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0VkaXRvclN0YXRlLmNwcAkocmV2aXNp
b24gMTMyODcxKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL0VkaXRvclN0YXRlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzMsMjMgKzMzLDIzIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiB2b2lk
IEVkaXRvclN0YXRlOjplbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBj
b25zdAogewotICAgIGVuY29kZXIuZW5jb2RlKHNob3VsZElnbm9yZUNvbXBvc2l0aW9uU2VsZWN0
aW9uQ2hhbmdlKTsKLSAgICBlbmNvZGVyLmVuY29kZShzZWxlY3Rpb25Jc05vbmUpOwotICAgIGVu
Y29kZXIuZW5jb2RlKHNlbGVjdGlvbklzUmFuZ2UpOwotICAgIGVuY29kZXIuZW5jb2RlKGlzQ29u
dGVudEVkaXRhYmxlKTsKLSAgICBlbmNvZGVyLmVuY29kZShpc0NvbnRlbnRSaWNobHlFZGl0YWJs
ZSk7Ci0gICAgZW5jb2Rlci5lbmNvZGUoaXNJblBhc3N3b3JkRmllbGQpOwotICAgIGVuY29kZXIu
ZW5jb2RlKGhhc0NvbXBvc2l0aW9uKTsKKyAgICBlbmNvZGVyIDw8IHNob3VsZElnbm9yZUNvbXBv
c2l0aW9uU2VsZWN0aW9uQ2hhbmdlOworICAgIGVuY29kZXIgPDwgc2VsZWN0aW9uSXNOb25lOwor
ICAgIGVuY29kZXIgPDwgc2VsZWN0aW9uSXNSYW5nZTsKKyAgICBlbmNvZGVyIDw8IGlzQ29udGVu
dEVkaXRhYmxlOworICAgIGVuY29kZXIgPDwgaXNDb250ZW50UmljaGx5RWRpdGFibGU7CisgICAg
ZW5jb2RlciA8PCBpc0luUGFzc3dvcmRGaWVsZDsKKyAgICBlbmNvZGVyIDw8IGhhc0NvbXBvc2l0
aW9uOwogCiAjaWYgUExBVEZPUk0oUVQpCi0gICAgZW5jb2Rlci5lbmNvZGUoY3Vyc29yUG9zaXRp
b24pOwotICAgIGVuY29kZXIuZW5jb2RlKGFuY2hvclBvc2l0aW9uKTsKLSAgICBlbmNvZGVyLmVu
Y29kZShlZGl0b3JSZWN0KTsKLSAgICBlbmNvZGVyLmVuY29kZShjdXJzb3JSZWN0KTsKLSAgICBl
bmNvZGVyLmVuY29kZShjb21wb3NpdGlvblJlY3QpOwotICAgIGVuY29kZXIuZW5jb2RlKGlucHV0
TWV0aG9kSGludHMpOwotICAgIGVuY29kZXIuZW5jb2RlKHNlbGVjdGVkVGV4dCk7Ci0gICAgZW5j
b2Rlci5lbmNvZGUoc3Vycm91bmRpbmdUZXh0KTsKKyAgICBlbmNvZGVyIDw8IGN1cnNvclBvc2l0
aW9uOworICAgIGVuY29kZXIgPDwgYW5jaG9yUG9zaXRpb247CisgICAgZW5jb2RlciA8PCBlZGl0
b3JSZWN0OworICAgIGVuY29kZXIgPDwgY3Vyc29yUmVjdDsKKyAgICBlbmNvZGVyIDw8IGNvbXBv
c2l0aW9uUmVjdDsKKyAgICBlbmNvZGVyIDw8IGlucHV0TWV0aG9kSGludHM7CisgICAgZW5jb2Rl
ciA8PCBzZWxlY3RlZFRleHQ7CisgICAgZW5jb2RlciA8PCBzdXJyb3VuZGluZ1RleHQ7CiAjZW5k
aWYKIH0KIApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL0ZvbnRJbmZvLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRm9udEluZm8uY3BwCShyZXZpc2lvbiAxMzI4
NzEpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRm9udEluZm8uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zNyw5ICszNyw5IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogdm9pZCBGb250SW5mbzo6ZW5j
b2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKICNpZiBQTEFU
Rk9STShNQUMpCi0gICAgZW5jb2Rlci5lbmNvZGUoc3RhdGljX2Nhc3Q8Ym9vbD4oZm9udEF0dHJp
YnV0ZURpY3Rpb25hcnkpKTsKKyAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PGJvb2w+KGZvbnRB
dHRyaWJ1dGVEaWN0aW9uYXJ5KTsKICAgICBpZiAoZm9udEF0dHJpYnV0ZURpY3Rpb25hcnkpCi0g
ICAgICAgIENvcmVJUEM6OmVuY29kZSgmZW5jb2RlciwgZm9udEF0dHJpYnV0ZURpY3Rpb25hcnku
Z2V0KCkpOworICAgICAgICBDb3JlSVBDOjplbmNvZGUoZW5jb2RlciwgZm9udEF0dHJpYnV0ZURp
Y3Rpb25hcnkuZ2V0KCkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZW5jb2Rlcik7CiAjZW5k
aWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9PcmlnaW5BbmREYXRhYmFzZXMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9PcmlnaW5BbmREYXRhYmFzZXMuY3Bw
CShyZXZpc2lvbiAxMzI4NzEpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvT3JpZ2luQW5kRGF0
YWJhc2VzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsMTAgKzM2LDEwIEBAIG5hbWVzcGFjZSBX
ZWJLaXQgewogCiB2b2lkIE9yaWdpbkFuZERhdGFiYXNlczo6ZW5jb2RlKENvcmVJUEM6OkFyZ3Vt
ZW50RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBlbmNvZGVyLmVuY29kZShvcmlnaW5J
ZGVudGlmaWVyKTsKLSAgICBlbmNvZGVyLmVuY29kZShvcmlnaW5RdW90YSk7Ci0gICAgZW5jb2Rl
ci5lbmNvZGUob3JpZ2luVXNhZ2UpOwotICAgIGVuY29kZXIuZW5jb2RlKGRhdGFiYXNlcyk7Cisg
ICAgZW5jb2RlciA8PCBvcmlnaW5JZGVudGlmaWVyOworICAgIGVuY29kZXIgPDwgb3JpZ2luUXVv
dGE7CisgICAgZW5jb2RlciA8PCBvcmlnaW5Vc2FnZTsKKyAgICBlbmNvZGVyIDw8IGRhdGFiYXNl
czsKIH0KIAogYm9vbCBPcmlnaW5BbmREYXRhYmFzZXM6OmRlY29kZShDb3JlSVBDOjpBcmd1bWVu
dERlY29kZXIqIGRlY29kZXIsIE9yaWdpbkFuZERhdGFiYXNlcyYgb3JpZ2luQW5kRGF0YWJhc2Vz
KQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1BsYXRmb3JtUG9wdXBNZW51RGF0YS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1BsYXRmb3JtUG9wdXBNZW51RGF0
YS5jcHAJKHJldmlzaW9uIDEzMjg3MSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbGF0Zm9y
bVBvcHVwTWVudURhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NywyNSArNDcsMjUgQEAgUGxh
dGZvcm1Qb3B1cE1lbnVEYXRhOjpQbGF0Zm9ybVBvcHVwTWVudQogdm9pZCBQbGF0Zm9ybVBvcHVw
TWVudURhdGE6OmVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXImIGVuY29kZXIpIGNvbnN0
CiB7CiAjaWYgUExBVEZPUk0oV0lOKQotICAgIGVuY29kZXIuZW5jb2RlKG1fY2xpZW50UGFkZGlu
Z0xlZnQpOwotICAgIGVuY29kZXIuZW5jb2RlKG1fY2xpZW50UGFkZGluZ1JpZ2h0KTsKLSAgICBl
bmNvZGVyLmVuY29kZShtX2NsaWVudEluc2V0TGVmdCk7Ci0gICAgZW5jb2Rlci5lbmNvZGUobV9j
bGllbnRJbnNldFJpZ2h0KTsKLSAgICBlbmNvZGVyLmVuY29kZShtX3BvcHVwV2lkdGgpOwotICAg
IGVuY29kZXIuZW5jb2RlKG1faXRlbUhlaWdodCk7CisgICAgZW5jb2RlciA8PCBtX2NsaWVudFBh
ZGRpbmdMZWZ0OworICAgIGVuY29kZXIgPDwgbV9jbGllbnRQYWRkaW5nUmlnaHQ7CisgICAgZW5j
b2RlciA8PCBtX2NsaWVudEluc2V0TGVmdDsKKyAgICBlbmNvZGVyIDw8IG1fY2xpZW50SW5zZXRS
aWdodDsKKyAgICBlbmNvZGVyIDw8IG1fcG9wdXBXaWR0aDsKKyAgICBlbmNvZGVyIDw8IG1faXRl
bUhlaWdodDsKIAogICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIG5vdFNlbGVjdGVkQmFja2lu
Z1N0b3JlSGFuZGxlOwogICAgIG1fbm90U2VsZWN0ZWRCYWNraW5nU3RvcmUtPmNyZWF0ZUhhbmRs
ZShub3RTZWxlY3RlZEJhY2tpbmdTdG9yZUhhbmRsZSk7Ci0gICAgZW5jb2Rlci5lbmNvZGUobm90
U2VsZWN0ZWRCYWNraW5nU3RvcmVIYW5kbGUpOworICAgIGVuY29kZXIgPDwgbm90U2VsZWN0ZWRC
YWNraW5nU3RvcmVIYW5kbGU7CiAKICAgICBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBzZWxlY3Rl
ZEJhY2tpbmdTdG9yZUhhbmRsZTsKICAgICBtX3NlbGVjdGVkQmFja2luZ1N0b3JlLT5jcmVhdGVI
YW5kbGUoc2VsZWN0ZWRCYWNraW5nU3RvcmVIYW5kbGUpOwotICAgIGVuY29kZXIuZW5jb2RlKHNl
bGVjdGVkQmFja2luZ1N0b3JlSGFuZGxlKTsKKyAgICBlbmNvZGVyIDw8IHNlbGVjdGVkQmFja2lu
Z1N0b3JlSGFuZGxlOwogI2VsaWYgUExBVEZPUk0oTUFDKQotICAgIGVuY29kZXIuZW5jb2RlKGZv
bnRJbmZvKTsKLSAgICBlbmNvZGVyLmVuY29kZShzaG91bGRQb3BPdmVyKTsKKyAgICBlbmNvZGVy
IDw8IGZvbnRJbmZvOworICAgIGVuY29kZXIgPDwgc2hvdWxkUG9wT3ZlcjsKICNlbGlmIFBMQVRG
T1JNKFFUKQotICAgIGVuY29kZXIuZW5jb2RlKG11bHRpcGxlU2VsZWN0aW9ucyk7CisgICAgZW5j
b2RlciA8PCBtdWx0aXBsZVNlbGVjdGlvbnM7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShlbmNv
ZGVyKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1ByaW50SW5mby5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1ByaW50SW5mby5jcHAJKHJldmlz
aW9uIDEzMjg3MSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9QcmludEluZm8uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NSw5ICs0NSw5IEBAIFByaW50SW5mbzo6UHJpbnRJbmZvKCkKIAogdm9p
ZCBQcmludEluZm86OmVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXImIGVuY29kZXIpIGNv
bnN0CiB7Ci0gICAgZW5jb2Rlci5lbmNvZGUocGFnZVNldHVwU2NhbGVGYWN0b3IpOwotICAgIGVu
Y29kZXIuZW5jb2RlKGF2YWlsYWJsZVBhcGVyV2lkdGgpOwotICAgIGVuY29kZXIuZW5jb2RlKGF2
YWlsYWJsZVBhcGVySGVpZ2h0KTsKKyAgICBlbmNvZGVyIDw8IHBhZ2VTZXR1cFNjYWxlRmFjdG9y
OworICAgIGVuY29kZXIgPDwgYXZhaWxhYmxlUGFwZXJXaWR0aDsKKyAgICBlbmNvZGVyIDw8IGF2
YWlsYWJsZVBhcGVySGVpZ2h0OwogCiAjaWYgUExBVEZPUk0oR1RLKQogICAgIENvcmVJUEM6OmVu
Y29kZSgmZW5jb2RlciwgcHJpbnRTZXR0aW5ncy5nZXQoKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcAkocmV2aXNpb24gMTMyODcxKQorKysg
U291cmNlL1dlYktpdDIvU2hhcmVkL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM3LDkgKzM3LDkgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHZvaWQgU2VjdXJpdHlP
cmlnaW5EYXRhOjplbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb25z
dAogewotICAgIGVuY29kZXIuZW5jb2RlKHByb3RvY29sKTsKLSAgICBlbmNvZGVyLmVuY29kZSho
b3N0KTsKLSAgICBlbmNvZGVyLmVuY29kZShwb3J0KTsKKyAgICBlbmNvZGVyIDw8IHByb3RvY29s
OworICAgIGVuY29kZXIgPDwgaG9zdDsKKyAgICBlbmNvZGVyIDw8IHBvcnQ7CiB9CiAKIGJvb2wg
U2VjdXJpdHlPcmlnaW5EYXRhOjpkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBkZWNv
ZGVyLCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luRGF0YSkKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9TZXNzaW9uU3RhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9TZXNzaW9uU3RhdGUuY3BwCShyZXZpc2lvbiAxMzI4NzEpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvU2Vzc2lvblN0YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjYs
OCArNjYsOCBAQCBib29sIFNlc3Npb25TdGF0ZTo6aXNFbXB0eSgpIGNvbnN0CiAgICAgCiB2b2lk
IFNlc3Npb25TdGF0ZTo6ZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKIHsKLSAgICBlbmNvZGVyLmVuY29kZShtX2xpc3QpOwotICAgIGVuY29kZXIuZW5jb2Rl
KG1fY3VycmVudEluZGV4KTsKKyAgICBlbmNvZGVyIDw8IG1fbGlzdDsKKyAgICBlbmNvZGVyIDw8
IG1fY3VycmVudEluZGV4OwogfQogCiBib29sIFNlc3Npb25TdGF0ZTo6ZGVjb2RlKENvcmVJUEM6
OkFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgU2Vzc2lvblN0YXRlJiBzdGF0ZSkKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuY3BwCShyZXZpc2lvbiAxMzI4NzEp
CisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDEsOSArNDEsOSBAQCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZTo6SGFuZGxlKCkK
IAogdm9pZCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZTo6ZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50
RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBlbmNvZGVyLmVuY29kZShtX2hhbmRsZSk7
Ci0gICAgZW5jb2Rlci5lbmNvZGUobV9zaXplKTsKLSAgICBlbmNvZGVyLmVuY29kZShtX2ZsYWdz
KTsKKyAgICBlbmNvZGVyIDw8IG1faGFuZGxlOworICAgIGVuY29kZXIgPDwgbV9zaXplOworICAg
IGVuY29kZXIgPDwgbV9mbGFnczsKIH0KIAogYm9vbCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZTo6
ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgSGFuZGxlJiBoYW5kbGUp
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hhcmVkV29ya2VyUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJl
ZFdvcmtlclByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCShyZXZpc2lvbiAxMzI4NzEpCisr
KyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hhcmVkV29ya2VyUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDExICszOCwxMSBAQCBTaGFyZWRXb3JrZXJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpTCiAKIHZvaWQgU2hhcmVkV29ya2VyUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciYgZW5jb2Rl
cikgY29uc3QKIHsKLSAgICBlbmNvZGVyLmVuY29kZShtaW5pbXVtTGlmZXRpbWUpOwotICAgIGVu
Y29kZXIuZW5jb2RlKHRlcm1pbmF0aW9uVGltZW91dCk7CisgICAgZW5jb2RlciA8PCBtaW5pbXVt
TGlmZXRpbWU7CisgICAgZW5jb2RlciA8PCB0ZXJtaW5hdGlvblRpbWVvdXQ7CiAKICNpZiBQTEFU
Rk9STShNQUMpCi0gICAgZW5jb2Rlci5lbmNvZGUocGFyZW50UHJvY2Vzc05hbWUpOworICAgIGVu
Y29kZXIgPDwgcGFyZW50UHJvY2Vzc05hbWU7CiAjZW5kaWYKIH0KIApJbmRleDogU291cmNlL1dl
YktpdDIvU2hhcmVkL1N0YXRpc3RpY3NEYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvU3RhdGlzdGljc0RhdGEuY3BwCShyZXZpc2lvbiAxMzI4NzEpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvU3RhdGlzdGljc0RhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MiwxMCArMzIsMTAgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHZvaWQgU3RhdGlzdGljc0RhdGE6
OmVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAg
ZW5jb2Rlci5lbmNvZGUoc3RhdGlzdGljc051bWJlcnMpOwotICAgIGVuY29kZXIuZW5jb2RlKGph
dmFTY3JpcHRQcm90ZWN0ZWRPYmplY3RUeXBlQ291bnRzKTsKLSAgICBlbmNvZGVyLmVuY29kZShq
YXZhU2NyaXB0T2JqZWN0VHlwZUNvdW50cyk7Ci0gICAgZW5jb2Rlci5lbmNvZGUod2ViQ29yZUNh
Y2hlU3RhdGlzdGljcyk7CisgICAgZW5jb2RlciA8PCBzdGF0aXN0aWNzTnVtYmVyczsKKyAgICBl
bmNvZGVyIDw8IGphdmFTY3JpcHRQcm90ZWN0ZWRPYmplY3RUeXBlQ291bnRzOworICAgIGVuY29k
ZXIgPDwgamF2YVNjcmlwdE9iamVjdFR5cGVDb3VudHM7CisgICAgZW5jb2RlciA8PCB3ZWJDb3Jl
Q2FjaGVTdGF0aXN0aWNzOwogfQogCiBib29sIFN0YXRpc3RpY3NEYXRhOjpkZWNvZGUoQ29yZUlQ
Qzo6QXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBTdGF0aXN0aWNzRGF0YSYgc3RhdGlzdGljc0Rh
dGEpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU3RyaW5nUGFpclZlY3Rvci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9TdHJpbmdQYWlyVmVjdG9yLmgJKHJldmlz
aW9uIDEzMjg3MSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9TdHJpbmdQYWlyVmVjdG9yLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBlbmNv
ZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIHsKLSAgICAg
ICAgZW5jb2Rlci5lbmNvZGUobV9zdHJpbmdQYWlyVmVjdG9yKTsKKyAgICAgICAgZW5jb2RlciA8
PCBtX3N0cmluZ1BhaXJWZWN0b3I7CiAgICAgfQogCiAgICAgc3RhdGljIGJvb2wgZGVjb2RlKENv
cmVJUEM6OkFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgU3RyaW5nUGFpclZlY3RvciYgc3RyaW5n
UGFpclZlY3RvcikKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9VcGRhdGVJbmZvLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvVXBkYXRlSW5mby5jcHAJKHJldmlz
aW9uIDEzMjg3MSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9VcGRhdGVJbmZvLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzIsMTUgKzMyLDE1IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiB2b2lk
IFVwZGF0ZUluZm86OmVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXImIGVuY29kZXIpIGNv
bnN0CiB7Ci0gICAgZW5jb2Rlci5lbmNvZGUodmlld1NpemUpOwotICAgIGVuY29kZXIuZW5jb2Rl
KGRldmljZVNjYWxlRmFjdG9yKTsKLSAgICBlbmNvZGVyLmVuY29kZShzY3JvbGxSZWN0KTsKLSAg
ICBlbmNvZGVyLmVuY29kZShzY3JvbGxPZmZzZXQpOwotICAgIGVuY29kZXIuZW5jb2RlKHVwZGF0
ZVJlY3RCb3VuZHMpOwotICAgIGVuY29kZXIuZW5jb2RlKHVwZGF0ZVJlY3RzKTsKLSAgICBlbmNv
ZGVyLmVuY29kZSh1cGRhdGVTY2FsZUZhY3Rvcik7Ci0gICAgZW5jb2Rlci5lbmNvZGUoYml0bWFw
SGFuZGxlKTsKLSAgICBlbmNvZGVyLmVuY29kZShiaXRtYXBPZmZzZXQpOworICAgIGVuY29kZXIg
PDwgdmlld1NpemU7CisgICAgZW5jb2RlciA8PCBkZXZpY2VTY2FsZUZhY3RvcjsKKyAgICBlbmNv
ZGVyIDw8IHNjcm9sbFJlY3Q7CisgICAgZW5jb2RlciA8PCBzY3JvbGxPZmZzZXQ7CisgICAgZW5j
b2RlciA8PCB1cGRhdGVSZWN0Qm91bmRzOworICAgIGVuY29kZXIgPDwgdXBkYXRlUmVjdHM7Cisg
ICAgZW5jb2RlciA8PCB1cGRhdGVTY2FsZUZhY3RvcjsKKyAgICBlbmNvZGVyIDw8IGJpdG1hcEhh
bmRsZTsKKyAgICBlbmNvZGVyIDw8IGJpdG1hcE9mZnNldDsKIH0KIAogYm9vbCBVcGRhdGVJbmZv
OjpkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBVcGRhdGVJbmZvJiBy
ZXN1bHQpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvVXNlck1lc3NhZ2VDb2RlcnMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvVXNlck1lc3NhZ2VDb2RlcnMuaAko
cmV2aXNpb24gMTMyODcxKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1VzZXJNZXNzYWdlQ29k
ZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTcwLDExNiArNzAsMTE2IEBAIHB1YmxpYzoKICAgICBi
b29sIGJhc2VFbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBBUElPYmpl
Y3Q6OlR5cGUmIHR5cGUpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAoIW1fcm9vdCkgewotICAg
ICAgICAgICAgZW5jb2Rlci5lbmNvZGUoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KEFQSU9iamVjdDo6
VHlwZU51bGwpKTsKKyAgICAgICAgICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+
KEFQSU9iamVjdDo6VHlwZU51bGwpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
IH0KIAogICAgICAgICB0eXBlID0gbV9yb290LT50eXBlKCk7Ci0gICAgICAgIGVuY29kZXIuZW5j
b2RlKHN0YXRpY19jYXN0PHVpbnQzMl90Pih0eXBlKSk7CisgICAgICAgIGVuY29kZXIgPDwgc3Rh
dGljX2Nhc3Q8dWludDMyX3Q+KHR5cGUpOwogCiAgICAgICAgIHN3aXRjaCAodHlwZSkgewogICAg
ICAgICBjYXNlIEFQSU9iamVjdDo6VHlwZUFycmF5OiB7CiAgICAgICAgICAgICBJbW11dGFibGVB
cnJheSogYXJyYXkgPSBzdGF0aWNfY2FzdDxJbW11dGFibGVBcnJheSo+KG1fcm9vdCk7Ci0gICAg
ICAgICAgICBlbmNvZGVyLmVuY29kZShzdGF0aWNfY2FzdDx1aW50NjRfdD4oYXJyYXktPnNpemUo
KSkpOworICAgICAgICAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oYXJyYXkt
PnNpemUoKSk7CiAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFycmF5LT5zaXpl
KCk7ICsraSkKLSAgICAgICAgICAgICAgICBlbmNvZGVyLmVuY29kZShPd25lcihhcnJheS0+YXQo
aSkpKTsKKyAgICAgICAgICAgICAgICBlbmNvZGVyIDw8IE93bmVyKGFycmF5LT5hdChpKSk7CiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICBjYXNlIEFQSU9iamVj
dDo6VHlwZURpY3Rpb25hcnk6IHsKICAgICAgICAgICAgIEltbXV0YWJsZURpY3Rpb25hcnkqIGRp
Y3Rpb25hcnkgPSBzdGF0aWNfY2FzdDxJbW11dGFibGVEaWN0aW9uYXJ5Kj4obV9yb290KTsKICAg
ICAgICAgICAgIGNvbnN0IEltbXV0YWJsZURpY3Rpb25hcnk6Ok1hcFR5cGUmIG1hcCA9IGRpY3Rp
b25hcnktPm1hcCgpOwotICAgICAgICAgICAgZW5jb2Rlci5lbmNvZGUoc3RhdGljX2Nhc3Q8dWlu
dDY0X3Q+KG1hcC5zaXplKCkpKTsKKyAgICAgICAgICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8
dWludDY0X3Q+KG1hcC5zaXplKCkpOwogCiAgICAgICAgICAgICBJbW11dGFibGVEaWN0aW9uYXJ5
OjpNYXBUeXBlOjpjb25zdF9pdGVyYXRvciBpdCA9IG1hcC5iZWdpbigpOwogICAgICAgICAgICAg
SW1tdXRhYmxlRGljdGlvbmFyeTo6TWFwVHlwZTo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbWFwLmVu
ZCgpOwogICAgICAgICAgICAgZm9yICg7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICAgICAg
ICAgIGVuY29kZXIuZW5jb2RlKGl0LT5rZXkpOwotICAgICAgICAgICAgICAgIGVuY29kZXIuZW5j
b2RlKE93bmVyKGl0LT52YWx1ZS5nZXQoKSkpOworICAgICAgICAgICAgICAgIGVuY29kZXIgPDwg
aXQtPmtleTsKKyAgICAgICAgICAgICAgICBlbmNvZGVyIDw8IE93bmVyKGl0LT52YWx1ZS5nZXQo
KSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIEFQSU9iamVjdDo6VHlwZVN0cmluZzogewogICAgICAgICAgICAgV2ViU3Ry
aW5nKiBzdHJpbmcgPSBzdGF0aWNfY2FzdDxXZWJTdHJpbmcqPihtX3Jvb3QpOwotICAgICAgICAg
ICAgZW5jb2Rlci5lbmNvZGUoc3RyaW5nLT5zdHJpbmcoKSk7CisgICAgICAgICAgICBlbmNvZGVy
IDw8IHN0cmluZy0+c3RyaW5nKCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAg
fQogICAgICAgICBjYXNlIEFQSU9iamVjdDo6VHlwZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTogewog
ICAgICAgICAgICAgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlKiBzY3JpcHRWYWx1ZSA9IHN0YXRp
Y19jYXN0PFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSo+KG1fcm9vdCk7Ci0gICAgICAgICAgICBl
bmNvZGVyLmVuY29kZVZhcmlhYmxlTGVuZ3RoQnl0ZUFycmF5KHNjcmlwdFZhbHVlLT5kYXRhUmVm
ZXJlbmNlKCkpOworICAgICAgICAgICAgZW5jb2RlciA8PCBzY3JpcHRWYWx1ZS0+ZGF0YVJlZmVy
ZW5jZSgpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICAgICAgY2Fz
ZSBBUElPYmplY3Q6OlR5cGVCb29sZWFuOiB7CiAgICAgICAgICAgICBXZWJCb29sZWFuKiBib29s
ZWFuT2JqZWN0ID0gc3RhdGljX2Nhc3Q8V2ViQm9vbGVhbio+KG1fcm9vdCk7Ci0gICAgICAgICAg
ICBlbmNvZGVyLmVuY29kZShib29sZWFuT2JqZWN0LT52YWx1ZSgpKTsKKyAgICAgICAgICAgIGVu
Y29kZXIgPDwgYm9vbGVhbk9iamVjdC0+dmFsdWUoKTsKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQVBJT2JqZWN0OjpUeXBlRG91YmxlOiB7CiAgICAg
ICAgICAgICBXZWJEb3VibGUqIGRvdWJsZU9iamVjdCA9IHN0YXRpY19jYXN0PFdlYkRvdWJsZSo+
KG1fcm9vdCk7Ci0gICAgICAgICAgICBlbmNvZGVyLmVuY29kZShkb3VibGVPYmplY3QtPnZhbHVl
KCkpOworICAgICAgICAgICAgZW5jb2RlciA8PCBkb3VibGVPYmplY3QtPnZhbHVlKCk7CiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICBjYXNlIEFQSU9iamVjdDo6
VHlwZVVJbnQ2NDogewogICAgICAgICAgICAgV2ViVUludDY0KiB1aW50NjRPYmplY3QgPSBzdGF0
aWNfY2FzdDxXZWJVSW50NjQqPihtX3Jvb3QpOwotICAgICAgICAgICAgZW5jb2Rlci5lbmNvZGUo
dWludDY0T2JqZWN0LT52YWx1ZSgpKTsKKyAgICAgICAgICAgIGVuY29kZXIgPDwgdWludDY0T2Jq
ZWN0LT52YWx1ZSgpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICAg
ICAgY2FzZSBBUElPYmplY3Q6OlR5cGVQb2ludDogewogICAgICAgICAgICAgV2ViUG9pbnQqIHBv
aW50T2JqZWN0ID0gc3RhdGljX2Nhc3Q8V2ViUG9pbnQqPihtX3Jvb3QpOwotICAgICAgICAgICAg
ZW5jb2Rlci5lbmNvZGUocG9pbnRPYmplY3QtPnBvaW50KCkueCk7Ci0gICAgICAgICAgICBlbmNv
ZGVyLmVuY29kZShwb2ludE9iamVjdC0+cG9pbnQoKS55KTsKKyAgICAgICAgICAgIGVuY29kZXIg
PDwgcG9pbnRPYmplY3QtPnBvaW50KCkueDsKKyAgICAgICAgICAgIGVuY29kZXIgPDwgcG9pbnRP
YmplY3QtPnBvaW50KCkueTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAg
ICAgICAgIGNhc2UgQVBJT2JqZWN0OjpUeXBlU2l6ZTogewogICAgICAgICAgICAgV2ViU2l6ZSog
c2l6ZU9iamVjdCA9IHN0YXRpY19jYXN0PFdlYlNpemUqPihtX3Jvb3QpOwotICAgICAgICAgICAg
ZW5jb2Rlci5lbmNvZGUoc2l6ZU9iamVjdC0+c2l6ZSgpLndpZHRoKTsKLSAgICAgICAgICAgIGVu
Y29kZXIuZW5jb2RlKHNpemVPYmplY3QtPnNpemUoKS5oZWlnaHQpOworICAgICAgICAgICAgZW5j
b2RlciA8PCBzaXplT2JqZWN0LT5zaXplKCkud2lkdGg7CisgICAgICAgICAgICBlbmNvZGVyIDw8
IHNpemVPYmplY3QtPnNpemUoKS5oZWlnaHQ7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgfQogICAgICAgICBjYXNlIEFQSU9iamVjdDo6VHlwZVJlY3Q6IHsKICAgICAgICAgICAg
IFdlYlJlY3QqIHJlY3RPYmplY3QgPSBzdGF0aWNfY2FzdDxXZWJSZWN0Kj4obV9yb290KTsKLSAg
ICAgICAgICAgIGVuY29kZXIuZW5jb2RlKHJlY3RPYmplY3QtPnJlY3QoKS5vcmlnaW4ueCk7Ci0g
ICAgICAgICAgICBlbmNvZGVyLmVuY29kZShyZWN0T2JqZWN0LT5yZWN0KCkub3JpZ2luLnkpOwot
ICAgICAgICAgICAgZW5jb2Rlci5lbmNvZGUocmVjdE9iamVjdC0+cmVjdCgpLnNpemUud2lkdGgp
OwotICAgICAgICAgICAgZW5jb2Rlci5lbmNvZGUocmVjdE9iamVjdC0+cmVjdCgpLnNpemUuaGVp
Z2h0KTsKKyAgICAgICAgICAgIGVuY29kZXIgPDwgcmVjdE9iamVjdC0+cmVjdCgpLm9yaWdpbi54
OworICAgICAgICAgICAgZW5jb2RlciA8PCByZWN0T2JqZWN0LT5yZWN0KCkub3JpZ2luLnk7Cisg
ICAgICAgICAgICBlbmNvZGVyIDw8IHJlY3RPYmplY3QtPnJlY3QoKS5zaXplLndpZHRoOworICAg
ICAgICAgICAgZW5jb2RlciA8PCByZWN0T2JqZWN0LT5yZWN0KCkuc2l6ZS5oZWlnaHQ7CiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICBjYXNlIEFQSU9iamVjdDo6
VHlwZVJlbmRlckxheWVyOiB7CiAgICAgICAgICAgICBXZWJSZW5kZXJMYXllciogcmVuZGVyTGF5
ZXIgPSBzdGF0aWNfY2FzdDxXZWJSZW5kZXJMYXllcio+KG1fcm9vdCk7Ci0gICAgICAgICAgICBl
bmNvZGVyLmVuY29kZShPd25lcihyZW5kZXJMYXllci0+cmVuZGVyZXIoKSkpOwotICAgICAgICAg
ICAgZW5jb2Rlci5lbmNvZGUocmVuZGVyTGF5ZXItPmlzUmVmbGVjdGlvbigpKTsKLSAgICAgICAg
ICAgIGVuY29kZXIuZW5jb2RlKHJlbmRlckxheWVyLT5pc0NsaXBwaW5nKCkpOwotICAgICAgICAg
ICAgZW5jb2Rlci5lbmNvZGUocmVuZGVyTGF5ZXItPmlzQ2xpcHBlZCgpKTsKLSAgICAgICAgICAg
IGVuY29kZXIuZW5jb2RlKHN0YXRpY19jYXN0PHVpbnQzMl90PihyZW5kZXJMYXllci0+Y29tcG9z
aXRpbmdMYXllclR5cGUoKSkpOwotICAgICAgICAgICAgZW5jb2Rlci5lbmNvZGUocmVuZGVyTGF5
ZXItPmFic29sdXRlQm91bmRpbmdCb3goKSk7Ci0gICAgICAgICAgICBlbmNvZGVyLmVuY29kZShP
d25lcihyZW5kZXJMYXllci0+bmVnYXRpdmVaT3JkZXJMaXN0KCkpKTsKLSAgICAgICAgICAgIGVu
Y29kZXIuZW5jb2RlKE93bmVyKHJlbmRlckxheWVyLT5ub3JtYWxGbG93TGlzdCgpKSk7Ci0gICAg
ICAgICAgICBlbmNvZGVyLmVuY29kZShPd25lcihyZW5kZXJMYXllci0+cG9zaXRpdmVaT3JkZXJM
aXN0KCkpKTsKKyAgICAgICAgICAgIGVuY29kZXIgPDwgT3duZXIocmVuZGVyTGF5ZXItPnJlbmRl
cmVyKCkpOworICAgICAgICAgICAgZW5jb2RlciA8PCByZW5kZXJMYXllci0+aXNSZWZsZWN0aW9u
KCk7CisgICAgICAgICAgICBlbmNvZGVyIDw8IHJlbmRlckxheWVyLT5pc0NsaXBwaW5nKCk7Cisg
ICAgICAgICAgICBlbmNvZGVyIDw8IHJlbmRlckxheWVyLT5pc0NsaXBwZWQoKTsKKyAgICAgICAg
ICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHJlbmRlckxheWVyLT5jb21wb3Np
dGluZ0xheWVyVHlwZSgpKTsKKyAgICAgICAgICAgIGVuY29kZXIgPDwgcmVuZGVyTGF5ZXItPmFi
c29sdXRlQm91bmRpbmdCb3goKTsKKyAgICAgICAgICAgIGVuY29kZXIgPDwgT3duZXIocmVuZGVy
TGF5ZXItPm5lZ2F0aXZlWk9yZGVyTGlzdCgpKTsKKyAgICAgICAgICAgIGVuY29kZXIgPDwgT3du
ZXIocmVuZGVyTGF5ZXItPm5vcm1hbEZsb3dMaXN0KCkpOworICAgICAgICAgICAgZW5jb2RlciA8
PCBPd25lcihyZW5kZXJMYXllci0+cG9zaXRpdmVaT3JkZXJMaXN0KCkpOwogICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBBUElPYmplY3Q6OlR5cGVSZW5k
ZXJPYmplY3Q6IHsKICAgICAgICAgICAgIFdlYlJlbmRlck9iamVjdCogcmVuZGVyT2JqZWN0ID0g
c3RhdGljX2Nhc3Q8V2ViUmVuZGVyT2JqZWN0Kj4obV9yb290KTsKLSAgICAgICAgICAgIGVuY29k
ZXIuZW5jb2RlKHJlbmRlck9iamVjdC0+bmFtZSgpKTsKLSAgICAgICAgICAgIGVuY29kZXIuZW5j
b2RlKHJlbmRlck9iamVjdC0+ZWxlbWVudFRhZ05hbWUoKSk7Ci0gICAgICAgICAgICBlbmNvZGVy
LmVuY29kZShyZW5kZXJPYmplY3QtPmVsZW1lbnRJRCgpKTsKLSAgICAgICAgICAgIGVuY29kZXIu
ZW5jb2RlKE93bmVyKHJlbmRlck9iamVjdC0+ZWxlbWVudENsYXNzTmFtZXMoKSkpOwotICAgICAg
ICAgICAgZW5jb2Rlci5lbmNvZGUocmVuZGVyT2JqZWN0LT5hYnNvbHV0ZVBvc2l0aW9uKCkpOwot
ICAgICAgICAgICAgZW5jb2Rlci5lbmNvZGUocmVuZGVyT2JqZWN0LT5mcmFtZVJlY3QoKSk7Ci0g
ICAgICAgICAgICBlbmNvZGVyLmVuY29kZShPd25lcihyZW5kZXJPYmplY3QtPmNoaWxkcmVuKCku
Z2V0KCkpKTsKKyAgICAgICAgICAgIGVuY29kZXIgPDwgcmVuZGVyT2JqZWN0LT5uYW1lKCk7Cisg
ICAgICAgICAgICBlbmNvZGVyIDw8IHJlbmRlck9iamVjdC0+ZWxlbWVudFRhZ05hbWUoKTsKKyAg
ICAgICAgICAgIGVuY29kZXIgPDwgcmVuZGVyT2JqZWN0LT5lbGVtZW50SUQoKTsKKyAgICAgICAg
ICAgIGVuY29kZXIgPDwgT3duZXIocmVuZGVyT2JqZWN0LT5lbGVtZW50Q2xhc3NOYW1lcygpKTsK
KyAgICAgICAgICAgIGVuY29kZXIgPDwgcmVuZGVyT2JqZWN0LT5hYnNvbHV0ZVBvc2l0aW9uKCk7
CisgICAgICAgICAgICBlbmNvZGVyIDw8IHJlbmRlck9iamVjdC0+ZnJhbWVSZWN0KCk7CisgICAg
ICAgICAgICBlbmNvZGVyIDw8IE93bmVyKHJlbmRlck9iamVjdC0+Y2hpbGRyZW4oKS5nZXQoKSk7
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICBjYXNlIEFQSU9i
amVjdDo6VHlwZVVSTDogewogICAgICAgICAgICAgV2ViVVJMKiB1cmxPYmplY3QgPSBzdGF0aWNf
Y2FzdDxXZWJVUkwqPihtX3Jvb3QpOwotICAgICAgICAgICAgZW5jb2Rlci5lbmNvZGUodXJsT2Jq
ZWN0LT5zdHJpbmcoKSk7CisgICAgICAgICAgICBlbmNvZGVyIDw8IHVybE9iamVjdC0+c3RyaW5n
KCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICBjYXNlIEFQ
SU9iamVjdDo6VHlwZVVSTFJlcXVlc3Q6IHsKICAgICAgICAgICAgIFdlYlVSTFJlcXVlc3QqIHVy
bFJlcXVlc3RPYmplY3QgPSBzdGF0aWNfY2FzdDxXZWJVUkxSZXF1ZXN0Kj4obV9yb290KTsKLSAg
ICAgICAgICAgIGVuY29kZXIuZW5jb2RlKHVybFJlcXVlc3RPYmplY3QtPnJlc291cmNlUmVxdWVz
dCgpKTsKKyAgICAgICAgICAgIGVuY29kZXIgPDwgdXJsUmVxdWVzdE9iamVjdC0+cmVzb3VyY2VS
ZXF1ZXN0KCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICBj
YXNlIEFQSU9iamVjdDo6VHlwZVVzZXJDb250ZW50VVJMUGF0dGVybjogewogICAgICAgICAgICAg
V2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuKiB1cmxQYXR0ZXJuID0gc3RhdGljX2Nhc3Q8V2ViVXNl
ckNvbnRlbnRVUkxQYXR0ZXJuKj4obV9yb290KTsKLSAgICAgICAgICAgIGVuY29kZXIuZW5jb2Rl
KHVybFBhdHRlcm4tPnBhdHRlcm5TdHJpbmcoKSk7CisgICAgICAgICAgICBlbmNvZGVyIDw8IHVy
bFBhdHRlcm4tPnBhdHRlcm5TdHJpbmcoKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAg
ICAgICB9CiAgICAgICAgIGNhc2UgQVBJT2JqZWN0OjpUeXBlSW1hZ2U6IHsKQEAgLTE4OSwyNCAr
MTg5LDI0IEBAIHB1YmxpYzoKICAgICAgICAgICAgIEFTU0VSVCghaW1hZ2UtPmJpdG1hcCgpIHx8
IGltYWdlLT5iaXRtYXAoKS0+aXNCYWNrZWRCeVNoYXJlZE1lbW9yeSgpKTsgICAgICAgICAgICAK
ICAgICAgICAgICAgIGlmICghaW1hZ2UtPmJpdG1hcCgpIHx8ICFpbWFnZS0+Yml0bWFwKCktPmlz
QmFja2VkQnlTaGFyZWRNZW1vcnkoKSB8fCAhaW1hZ2UtPmJpdG1hcCgpLT5jcmVhdGVIYW5kbGUo
aGFuZGxlKSkgewogICAgICAgICAgICAgICAgIC8vIEluaXRpYWwgZmFsc2UgaW5kaWNhdGVzIG5v
IGFsbG9jYXRlZCBiaXRtYXAgb3IgaXMgbm90IHNoYXJlYWJsZS4KLSAgICAgICAgICAgICAgICBl
bmNvZGVyLmVuY29kZShmYWxzZSk7CisgICAgICAgICAgICAgICAgZW5jb2RlciA8PCBmYWxzZTsK
ICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAg
ICAgLy8gSW5pdGlhbCB0cnVlIGluZGljYXRlcyBhIGJpdG1hcCB3YXMgYWxsb2NhdGVkIGFuZCBp
cyBzaGFyZWFibGUuCi0gICAgICAgICAgICBlbmNvZGVyLmVuY29kZSh0cnVlKTsKKyAgICAgICAg
ICAgIGVuY29kZXIgPDwgdHJ1ZTsKIAotICAgICAgICAgICAgZW5jb2Rlci5lbmNvZGUoaGFuZGxl
KTsKKyAgICAgICAgICAgIGVuY29kZXIgPDwgaGFuZGxlOwogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBBUElPYmplY3Q6OlR5cGVEYXRhOiB7CiAgICAg
ICAgICAgICBXZWJEYXRhKiBkYXRhID0gc3RhdGljX2Nhc3Q8V2ViRGF0YSo+KG1fcm9vdCk7Ci0g
ICAgICAgICAgICBlbmNvZGVyLmVuY29kZVZhcmlhYmxlTGVuZ3RoQnl0ZUFycmF5KGRhdGEtPmRh
dGFSZWZlcmVuY2UoKSk7CisgICAgICAgICAgICBlbmNvZGVyIDw8IGRhdGEtPmRhdGFSZWZlcmVu
Y2UoKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
QVBJT2JqZWN0OjpUeXBlQ2VydGlmaWNhdGVJbmZvOiB7CiAgICAgICAgICAgICBXZWJDZXJ0aWZp
Y2F0ZUluZm8qIGNlcnRpZmljYXRlSW5mbyA9IHN0YXRpY19jYXN0PFdlYkNlcnRpZmljYXRlSW5m
byo+KG1fcm9vdCk7Ci0gICAgICAgICAgICBlbmNvZGVyLmVuY29kZShjZXJ0aWZpY2F0ZUluZm8t
PnBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvKCkpOworICAgICAgICAgICAgZW5jb2RlciA8PCBjZXJ0
aWZpY2F0ZUluZm8tPnBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvKCk7CiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICBkZWZhdWx0OgpJbmRleDogU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNwcAkocmV2aXNpb24gMTMy
ODcxKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02MywxMSArNjMsMTEgQEAgdm9pZCBXZWJCYWNrRm9yd2FyZExp
c3RJdGVtOjpzZXRCYWNrRm9ydwogCiB2b2lkIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OmVuY29k
ZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAgZW5jb2Rl
ci5lbmNvZGUobV9vcmlnaW5hbFVSTCk7Ci0gICAgZW5jb2Rlci5lbmNvZGUobV91cmwpOwotICAg
IGVuY29kZXIuZW5jb2RlKG1fdGl0bGUpOwotICAgIGVuY29kZXIuZW5jb2RlKG1faXRlbUlEKTsK
LSAgICBlbmNvZGVyLmVuY29kZShDb3JlSVBDOjpEYXRhUmVmZXJlbmNlKG1fYmFja0ZvcndhcmRE
YXRhKSk7CisgICAgZW5jb2RlciA8PCBtX29yaWdpbmFsVVJMOworICAgIGVuY29kZXIgPDwgbV91
cmw7CisgICAgZW5jb2RlciA8PCBtX3RpdGxlOworICAgIGVuY29kZXIgPDwgbV9pdGVtSUQ7Cisg
ICAgZW5jb2RlciA8PCBDb3JlSVBDOjpEYXRhUmVmZXJlbmNlKG1fYmFja0ZvcndhcmREYXRhKTsK
IH0KIAogUGFzc1JlZlB0cjxXZWJCYWNrRm9yd2FyZExpc3RJdGVtPiBXZWJCYWNrRm9yd2FyZExp
c3RJdGVtOjpkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyJiBkZWNvZGVyKQpJbmRleDog
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvbnRleHRNZW51SXRlbURhdGEuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb250ZXh0TWVudUl0ZW1EYXRhLmNwcAko
cmV2aXNpb24gMTMyODcxKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvbnRleHRNZW51
SXRlbURhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgsMTAgKzEwOCwxMCBAQCB2b2lkIFdl
YkNvbnRleHRNZW51SXRlbURhdGE6OmVuY29kZShDb3JlCiB7CiAgICAgZW5jb2Rlci5lbmNvZGVF
bnVtKG1fdHlwZSk7CiAgICAgZW5jb2Rlci5lbmNvZGVFbnVtKG1fYWN0aW9uKTsKLSAgICBlbmNv
ZGVyLmVuY29kZShtX3RpdGxlKTsKLSAgICBlbmNvZGVyLmVuY29kZShtX2NoZWNrZWQpOwotICAg
IGVuY29kZXIuZW5jb2RlKG1fZW5hYmxlZCk7Ci0gICAgZW5jb2Rlci5lbmNvZGUobV9zdWJtZW51
KTsKKyAgICBlbmNvZGVyIDw8IG1fdGl0bGU7CisgICAgZW5jb2RlciA8PCBtX2NoZWNrZWQ7Cisg
ICAgZW5jb2RlciA8PCBtX2VuYWJsZWQ7CisgICAgZW5jb2RlciA8PCBtX3N1Ym1lbnU7CiB9CiAK
IGJvb2wgV2ViQ29udGV4dE1lbnVJdGVtRGF0YTo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVj
b2RlciogZGVjb2RlciwgV2ViQ29udGV4dE1lbnVJdGVtRGF0YSYgaXRlbSkKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9XZWJFdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYkV2ZW50LmNwcAkocmV2aXNpb24gMTMyODcxKQorKysgU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYkV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsOSArNDgsOSBAQCBX
ZWJFdmVudDo6V2ViRXZlbnQoVHlwZSB0eXBlLCBNb2RpZmllcnMgCiAKIHZvaWQgV2ViRXZlbnQ6
OmVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAg
ZW5jb2Rlci5lbmNvZGUobV90eXBlKTsKLSAgICBlbmNvZGVyLmVuY29kZShtX21vZGlmaWVycyk7
Ci0gICAgZW5jb2Rlci5lbmNvZGUobV90aW1lc3RhbXApOworICAgIGVuY29kZXIgPDwgbV90eXBl
OworICAgIGVuY29kZXIgPDwgbV9tb2RpZmllcnM7CisgICAgZW5jb2RlciA8PCBtX3RpbWVzdGFt
cDsKIH0KIAogYm9vbCBXZWJFdmVudDo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2Rlciog
ZGVjb2RlciwgV2ViRXZlbnQmIHJlc3VsdCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9X
ZWJHZXN0dXJlRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9X
ZWJHZXN0dXJlRXZlbnQuY3BwCShyZXZpc2lvbiAxMzI4NzEpCisrKyBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViR2VzdHVyZUV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTcsMTAgKzU3LDEw
IEBAIHZvaWQgV2ViR2VzdHVyZUV2ZW50OjplbmNvZGUoQ29yZUlQQzo6QXIKIHsKICAgICBXZWJF
dmVudDo6ZW5jb2RlKGVuY29kZXIpOwogCi0gICAgZW5jb2Rlci5lbmNvZGUobV9wb3NpdGlvbik7
Ci0gICAgZW5jb2Rlci5lbmNvZGUobV9nbG9iYWxQb3NpdGlvbik7Ci0gICAgZW5jb2Rlci5lbmNv
ZGUobV9hcmVhKTsKLSAgICBlbmNvZGVyLmVuY29kZShtX2RlbHRhKTsKKyAgICBlbmNvZGVyIDw8
IG1fcG9zaXRpb247CisgICAgZW5jb2RlciA8PCBtX2dsb2JhbFBvc2l0aW9uOworICAgIGVuY29k
ZXIgPDwgbV9hcmVhOworICAgIGVuY29kZXIgPDwgbV9kZWx0YTsKIH0KIAogYm9vbCBXZWJHZXN0
dXJlRXZlbnQ6OmRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFdlYkdl
c3R1cmVFdmVudCYgdCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJIaXRUZXN0UmVz
dWx0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViSGl0VGVzdFJl
c3VsdC5jcHAJKHJldmlzaW9uIDEzMjg3MSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJI
aXRUZXN0UmVzdWx0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsMTQgKzM2LDE0IEBAIFBhc3NS
ZWZQdHI8V2ViSGl0VGVzdFJlc3VsdD4gV2ViSGl0VGVzdFIKIAogdm9pZCBXZWJIaXRUZXN0UmVz
dWx0OjpEYXRhOjplbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb25z
dAogewotICAgIGVuY29kZXIuZW5jb2RlKGFic29sdXRlSW1hZ2VVUkwpOwotICAgIGVuY29kZXIu
ZW5jb2RlKGFic29sdXRlUERGVVJMKTsKLSAgICBlbmNvZGVyLmVuY29kZShhYnNvbHV0ZUxpbmtV
UkwpOwotICAgIGVuY29kZXIuZW5jb2RlKGFic29sdXRlTWVkaWFVUkwpOwotICAgIGVuY29kZXIu
ZW5jb2RlKGxpbmtMYWJlbCk7Ci0gICAgZW5jb2Rlci5lbmNvZGUobGlua1RpdGxlKTsKLSAgICBl
bmNvZGVyLmVuY29kZShpc0NvbnRlbnRFZGl0YWJsZSk7Ci0gICAgZW5jb2Rlci5lbmNvZGUoZWxl
bWVudEJvdW5kaW5nQm94KTsKKyAgICBlbmNvZGVyIDw8IGFic29sdXRlSW1hZ2VVUkw7CisgICAg
ZW5jb2RlciA8PCBhYnNvbHV0ZVBERlVSTDsKKyAgICBlbmNvZGVyIDw8IGFic29sdXRlTGlua1VS
TDsKKyAgICBlbmNvZGVyIDw8IGFic29sdXRlTWVkaWFVUkw7CisgICAgZW5jb2RlciA8PCBsaW5r
TGFiZWw7CisgICAgZW5jb2RlciA8PCBsaW5rVGl0bGU7CisgICAgZW5jb2RlciA8PCBpc0NvbnRl
bnRFZGl0YWJsZTsKKyAgICBlbmNvZGVyIDw8IGVsZW1lbnRCb3VuZGluZ0JveDsKIH0KIAogYm9v
bCBXZWJIaXRUZXN0UmVzdWx0OjpEYXRhOjpkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVy
KiBkZWNvZGVyLCBXZWJIaXRUZXN0UmVzdWx0OjpEYXRhJiBoaXRUZXN0UmVzdWx0RGF0YSkKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJLZXlib2FyZEV2ZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViS2V5Ym9hcmRFdmVudC5jcHAJKHJldmlzaW9u
IDEzMjg3MSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJLZXlib2FyZEV2ZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDksMTUgKzQ5LDE1IEBAIHZvaWQgV2ViS2V5Ym9hcmRFdmVudDo6
ZW5jb2RlKENvcmVJUEM6OkEKIHsKICAgICBXZWJFdmVudDo6ZW5jb2RlKGVuY29kZXIpOwogCi0g
ICAgZW5jb2Rlci5lbmNvZGUobV90ZXh0KTsKLSAgICBlbmNvZGVyLmVuY29kZShtX3VubW9kaWZp
ZWRUZXh0KTsKLSAgICBlbmNvZGVyLmVuY29kZShtX2tleUlkZW50aWZpZXIpOwotICAgIGVuY29k
ZXIuZW5jb2RlKG1fd2luZG93c1ZpcnR1YWxLZXlDb2RlKTsKLSAgICBlbmNvZGVyLmVuY29kZSht
X25hdGl2ZVZpcnR1YWxLZXlDb2RlKTsKLSAgICBlbmNvZGVyLmVuY29kZShtX21hY0NoYXJDb2Rl
KTsKLSAgICBlbmNvZGVyLmVuY29kZShtX2lzQXV0b1JlcGVhdCk7Ci0gICAgZW5jb2Rlci5lbmNv
ZGUobV9pc0tleXBhZCk7Ci0gICAgZW5jb2Rlci5lbmNvZGUobV9pc1N5c3RlbUtleSk7CisgICAg
ZW5jb2RlciA8PCBtX3RleHQ7CisgICAgZW5jb2RlciA8PCBtX3VubW9kaWZpZWRUZXh0OworICAg
IGVuY29kZXIgPDwgbV9rZXlJZGVudGlmaWVyOworICAgIGVuY29kZXIgPDwgbV93aW5kb3dzVmly
dHVhbEtleUNvZGU7CisgICAgZW5jb2RlciA8PCBtX25hdGl2ZVZpcnR1YWxLZXlDb2RlOworICAg
IGVuY29kZXIgPDwgbV9tYWNDaGFyQ29kZTsKKyAgICBlbmNvZGVyIDw8IG1faXNBdXRvUmVwZWF0
OworICAgIGVuY29kZXIgPDwgbV9pc0tleXBhZDsKKyAgICBlbmNvZGVyIDw8IG1faXNTeXN0ZW1L
ZXk7CiB9CiAKIGJvb2wgV2ViS2V5Ym9hcmRFdmVudDo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50
RGVjb2RlciogZGVjb2RlciwgV2ViS2V5Ym9hcmRFdmVudCYgcmVzdWx0KQpJbmRleDogU291cmNl
L1dlYktpdDIvU2hhcmVkL1dlYk1vdXNlRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9XZWJNb3VzZUV2ZW50LmNwcAkocmV2aXNpb24gMTMyODcxKQorKysgU291
cmNlL1dlYktpdDIvU2hhcmVkL1dlYk1vdXNlRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04
MiwxNiArODIsMTYgQEAgdm9pZCBXZWJNb3VzZUV2ZW50OjplbmNvZGUoQ29yZUlQQzo6QXJndQog
ewogICAgIFdlYkV2ZW50OjplbmNvZGUoZW5jb2Rlcik7CiAKLSAgICBlbmNvZGVyLmVuY29kZSht
X2J1dHRvbik7Ci0gICAgZW5jb2Rlci5lbmNvZGUobV9wb3NpdGlvbik7Ci0gICAgZW5jb2Rlci5l
bmNvZGUobV9nbG9iYWxQb3NpdGlvbik7Ci0gICAgZW5jb2Rlci5lbmNvZGUobV9kZWx0YVgpOwot
ICAgIGVuY29kZXIuZW5jb2RlKG1fZGVsdGFZKTsKLSAgICBlbmNvZGVyLmVuY29kZShtX2RlbHRh
Wik7Ci0gICAgZW5jb2Rlci5lbmNvZGUobV9jbGlja0NvdW50KTsKKyAgICBlbmNvZGVyIDw8IG1f
YnV0dG9uOworICAgIGVuY29kZXIgPDwgbV9wb3NpdGlvbjsKKyAgICBlbmNvZGVyIDw8IG1fZ2xv
YmFsUG9zaXRpb247CisgICAgZW5jb2RlciA8PCBtX2RlbHRhWDsKKyAgICBlbmNvZGVyIDw8IG1f
ZGVsdGFZOworICAgIGVuY29kZXIgPDwgbV9kZWx0YVo7CisgICAgZW5jb2RlciA8PCBtX2NsaWNr
Q291bnQ7CiAKICNpZiBQTEFURk9STShXSU4pCi0gICAgZW5jb2Rlci5lbmNvZGUobV9kaWRBY3Rp
dmF0ZVdlYlZpZXcpOworICAgIGVuY29kZXIgPDwgbV9kaWRBY3RpdmF0ZVdlYlZpZXc7CiAjZW5k
aWYKIH0KIApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYk5hdmlnYXRpb25EYXRhU3Rv
cmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViTmF2aWdhdGlvbkRh
dGFTdG9yZS5oCShyZXZpc2lvbiAxMzI4NzEpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vi
TmF2aWdhdGlvbkRhdGFTdG9yZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw5ICszNyw5IEBAIG5h
bWVzcGFjZSBXZWJLaXQgewogc3RydWN0IFdlYk5hdmlnYXRpb25EYXRhU3RvcmUgewogICAgIHZv
aWQgZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICB7
Ci0gICAgICAgIGVuY29kZXIuZW5jb2RlKHVybCk7Ci0gICAgICAgIGVuY29kZXIuZW5jb2RlKHRp
dGxlKTsKLSAgICAgICAgZW5jb2Rlci5lbmNvZGUob3JpZ2luYWxSZXF1ZXN0KTsKKyAgICAgICAg
ZW5jb2RlciA8PCB1cmw7CisgICAgICAgIGVuY29kZXIgPDwgdGl0bGU7CisgICAgICAgIGVuY29k
ZXIgPDwgb3JpZ2luYWxSZXF1ZXN0OwogICAgIH0KIAogICAgIHN0YXRpYyBib29sIGRlY29kZShD
b3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFdlYk5hdmlnYXRpb25EYXRhU3RvcmUm
IHN0b3JlKQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzLmNwcAkocmV2aXNpb24gMTMyODcxKQorKysgU291cmNlL1dlYktpdDIv
U2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
Miw0MCArMzIsNDAgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHZvaWQgV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVyczo6ZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciYgZW5jb2RlcikgY29u
c3QKIHsKLSAgICBlbmNvZGVyLmVuY29kZSh2aWV3U2l6ZSk7Ci0gICAgZW5jb2Rlci5lbmNvZGUo
aXNBY3RpdmUpOwotICAgIGVuY29kZXIuZW5jb2RlKGlzRm9jdXNlZCk7Ci0gICAgZW5jb2Rlci5l
bmNvZGUoaXNWaXNpYmxlKTsKLSAgICBlbmNvZGVyLmVuY29kZShpc0luV2luZG93KTsKKyAgICBl
bmNvZGVyIDw8IHZpZXdTaXplOworICAgIGVuY29kZXIgPDwgaXNBY3RpdmU7CisgICAgZW5jb2Rl
ciA8PCBpc0ZvY3VzZWQ7CisgICAgZW5jb2RlciA8PCBpc1Zpc2libGU7CisgICAgZW5jb2RlciA8
PCBpc0luV2luZG93OwogCi0gICAgZW5jb2Rlci5lbmNvZGUoc3RvcmUpOworICAgIGVuY29kZXIg
PDwgc3RvcmU7CiAgICAgZW5jb2Rlci5lbmNvZGVFbnVtKGRyYXdpbmdBcmVhVHlwZSk7Ci0gICAg
ZW5jb2Rlci5lbmNvZGUocGFnZUdyb3VwRGF0YSk7Ci0gICAgZW5jb2Rlci5lbmNvZGUoZHJhd3NC
YWNrZ3JvdW5kKTsKLSAgICBlbmNvZGVyLmVuY29kZShkcmF3c1RyYW5zcGFyZW50QmFja2dyb3Vu
ZCk7Ci0gICAgZW5jb2Rlci5lbmNvZGUoYXJlTWVtb3J5Q2FjaGVDbGllbnRDYWxsc0VuYWJsZWQp
OwotICAgIGVuY29kZXIuZW5jb2RlKHVzZUZpeGVkTGF5b3V0KTsKLSAgICBlbmNvZGVyLmVuY29k
ZShmaXhlZExheW91dFNpemUpOworICAgIGVuY29kZXIgPDwgcGFnZUdyb3VwRGF0YTsKKyAgICBl
bmNvZGVyIDw8IGRyYXdzQmFja2dyb3VuZDsKKyAgICBlbmNvZGVyIDw8IGRyYXdzVHJhbnNwYXJl
bnRCYWNrZ3JvdW5kOworICAgIGVuY29kZXIgPDwgYXJlTWVtb3J5Q2FjaGVDbGllbnRDYWxsc0Vu
YWJsZWQ7CisgICAgZW5jb2RlciA8PCB1c2VGaXhlZExheW91dDsKKyAgICBlbmNvZGVyIDw8IGZp
eGVkTGF5b3V0U2l6ZTsKICAgICBlbmNvZGVyLmVuY29kZUVudW0ocGFnaW5hdGlvbk1vZGUpOwot
ICAgIGVuY29kZXIuZW5jb2RlKHBhZ2luYXRpb25CZWhhdmVzTGlrZUNvbHVtbnMpOwotICAgIGVu
Y29kZXIuZW5jb2RlKHBhZ2VMZW5ndGgpOwotICAgIGVuY29kZXIuZW5jb2RlKGdhcEJldHdlZW5Q
YWdlcyk7Ci0gICAgZW5jb2Rlci5lbmNvZGUodXNlckFnZW50KTsKLSAgICBlbmNvZGVyLmVuY29k
ZShzZXNzaW9uU3RhdGUpOwotICAgIGVuY29kZXIuZW5jb2RlKGhpZ2hlc3RVc2VkQmFja0Zvcndh
cmRJdGVtSUQpOwotICAgIGVuY29kZXIuZW5jb2RlKGNhblJ1bkJlZm9yZVVubG9hZENvbmZpcm1Q
YW5lbCk7Ci0gICAgZW5jb2Rlci5lbmNvZGUoY2FuUnVuTW9kYWwpOwotICAgIGVuY29kZXIuZW5j
b2RlKGRldmljZVNjYWxlRmFjdG9yKTsKLSAgICBlbmNvZGVyLmVuY29kZShtZWRpYVZvbHVtZSk7
CisgICAgZW5jb2RlciA8PCBwYWdpbmF0aW9uQmVoYXZlc0xpa2VDb2x1bW5zOworICAgIGVuY29k
ZXIgPDwgcGFnZUxlbmd0aDsKKyAgICBlbmNvZGVyIDw8IGdhcEJldHdlZW5QYWdlczsKKyAgICBl
bmNvZGVyIDw8IHVzZXJBZ2VudDsKKyAgICBlbmNvZGVyIDw8IHNlc3Npb25TdGF0ZTsKKyAgICBl
bmNvZGVyIDw8IGhpZ2hlc3RVc2VkQmFja0ZvcndhcmRJdGVtSUQ7CisgICAgZW5jb2RlciA8PCBj
YW5SdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWw7CisgICAgZW5jb2RlciA8PCBjYW5SdW5Nb2Rh
bDsKKyAgICBlbmNvZGVyIDw8IGRldmljZVNjYWxlRmFjdG9yOworICAgIGVuY29kZXIgPDwgbWVk
aWFWb2x1bWU7CiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgZW5jb2Rlci5lbmNvZGUoaXNTbWFy
dEluc2VydERlbGV0ZUVuYWJsZWQpOworICAgIGVuY29kZXIgPDwgaXNTbWFydEluc2VydERlbGV0
ZUVuYWJsZWQ7CiAgICAgZW5jb2Rlci5lbmNvZGVFbnVtKGxheWVySG9zdGluZ01vZGUpOwotICAg
IGVuY29kZXIuZW5jb2RlKGNvbG9yU3BhY2UpOworICAgIGVuY29kZXIgPDwgY29sb3JTcGFjZTsK
ICNlbmRpZgogCiAjaWYgUExBVEZPUk0oV0lOKQotICAgIGVuY29kZXIuZW5jb2RlKHJlaW50ZXJw
cmV0X2Nhc3Q8dWludDY0X3Q+KG5hdGl2ZVdpbmRvdykpOworICAgIGVuY29kZXIgPDwgcmVpbnRl
cnByZXRfY2FzdDx1aW50NjRfdD4obmF0aXZlV2luZG93KTsKICNlbmRpZgogfQogCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUGFnZUdyb3VwRGF0YS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBhZ2VHcm91cERhdGEuY3BwCShyZXZpc2lvbiAxMzI4
NzEpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUGFnZUdyb3VwRGF0YS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMyLDEyICszMiwxMiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdm9pZCBX
ZWJQYWdlR3JvdXBEYXRhOjplbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAogewotICAgIGVuY29kZXIuZW5jb2RlKGlkZW50aWZlcik7Ci0gICAgZW5jb2Rlci5l
bmNvZGUocGFnZUdyb3VwSUQpOwotICAgIGVuY29kZXIuZW5jb2RlKHZpc2libGVUb0luamVjdGVk
QnVuZGxlKTsKLSAgICBlbmNvZGVyLmVuY29kZSh2aXNpYmxlVG9IaXN0b3J5Q2xpZW50KTsKLSAg
ICBlbmNvZGVyLmVuY29kZSh1c2VyU3R5bGVTaGVldHMpOwotICAgIGVuY29kZXIuZW5jb2RlKHVz
ZXJTY3JpcHRzKTsKKyAgICBlbmNvZGVyIDw8IGlkZW50aWZlcjsKKyAgICBlbmNvZGVyIDw8IHBh
Z2VHcm91cElEOworICAgIGVuY29kZXIgPDwgdmlzaWJsZVRvSW5qZWN0ZWRCdW5kbGU7CisgICAg
ZW5jb2RlciA8PCB2aXNpYmxlVG9IaXN0b3J5Q2xpZW50OworICAgIGVuY29kZXIgPDwgdXNlclN0
eWxlU2hlZXRzOworICAgIGVuY29kZXIgPDwgdXNlclNjcmlwdHM7CiB9CiAKIGJvb2wgV2ViUGFn
ZUdyb3VwRGF0YTo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgV2Vi
UGFnZUdyb3VwRGF0YSYgZGF0YSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQbGF0
Zm9ybVRvdWNoUG9pbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9X
ZWJQbGF0Zm9ybVRvdWNoUG9pbnQuY3BwCShyZXZpc2lvbiAxMzI4NzEpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2ViUGxhdGZvcm1Ub3VjaFBvaW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTksMTMgKzU5LDEzIEBAIFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6V2ViUGxhdGZvcm1Ub3VjaFAK
IAogdm9pZCBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ6OmVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVu
Y29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAgZW5jb2Rlci5lbmNvZGUobV9pZCk7Ci0gICAg
ZW5jb2Rlci5lbmNvZGUobV9zdGF0ZSk7Ci0gICAgZW5jb2Rlci5lbmNvZGUobV9zY3JlZW5Qb3Np
dGlvbik7Ci0gICAgZW5jb2Rlci5lbmNvZGUobV9wb3NpdGlvbik7Ci0gICAgZW5jb2Rlci5lbmNv
ZGUobV9yYWRpdXMpOwotICAgIGVuY29kZXIuZW5jb2RlKG1fcm90YXRpb25BbmdsZSk7Ci0gICAg
ZW5jb2Rlci5lbmNvZGUobV9mb3JjZSk7CisgICAgZW5jb2RlciA8PCBtX2lkOworICAgIGVuY29k
ZXIgPDwgbV9zdGF0ZTsKKyAgICBlbmNvZGVyIDw8IG1fc2NyZWVuUG9zaXRpb247CisgICAgZW5j
b2RlciA8PCBtX3Bvc2l0aW9uOworICAgIGVuY29kZXIgPDwgbV9yYWRpdXM7CisgICAgZW5jb2Rl
ciA8PCBtX3JvdGF0aW9uQW5nbGU7CisgICAgZW5jb2RlciA8PCBtX2ZvcmNlOwogfQogCiBib29s
IFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2Rlciog
ZGVjb2RlciwgV2ViUGxhdGZvcm1Ub3VjaFBvaW50JiByZXN1bHQpCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2ViUG9wdXBJdGVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvV2ViUG9wdXBJdGVtLmNwcAkocmV2aXNpb24gMTMyODcxKQorKysgU291cmNlL1dl
YktpdDIvU2hhcmVkL1dlYlBvcHVwSXRlbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5LDE0ICs2
OSwxNCBAQCBXZWJQb3B1cEl0ZW06OldlYlBvcHVwSXRlbShUeXBlIHR5cGUsIGNvCiB2b2lkIFdl
YlBvcHVwSXRlbTo6ZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciYgZW5jb2RlcikgY29u
c3QKIHsKICAgICBlbmNvZGVyLmVuY29kZUVudW0obV90eXBlKTsKLSAgICBlbmNvZGVyLmVuY29k
ZShtX3RleHQpOworICAgIGVuY29kZXIgPDwgbV90ZXh0OwogICAgIGVuY29kZXIuZW5jb2RlRW51
bShtX3RleHREaXJlY3Rpb24pOwotICAgIGVuY29kZXIuZW5jb2RlKG1faGFzVGV4dERpcmVjdGlv
bk92ZXJyaWRlKTsKLSAgICBlbmNvZGVyLmVuY29kZShtX3Rvb2xUaXApOwotICAgIGVuY29kZXIu
ZW5jb2RlKG1fYWNjZXNzaWJpbGl0eVRleHQpOwotICAgIGVuY29kZXIuZW5jb2RlKG1faXNFbmFi
bGVkKTsKLSAgICBlbmNvZGVyLmVuY29kZShtX2lzTGFiZWwpOwotICAgIGVuY29kZXIuZW5jb2Rl
KG1faXNTZWxlY3RlZCk7CisgICAgZW5jb2RlciA8PCBtX2hhc1RleHREaXJlY3Rpb25PdmVycmlk
ZTsKKyAgICBlbmNvZGVyIDw8IG1fdG9vbFRpcDsKKyAgICBlbmNvZGVyIDw8IG1fYWNjZXNzaWJp
bGl0eVRleHQ7CisgICAgZW5jb2RlciA8PCBtX2lzRW5hYmxlZDsKKyAgICBlbmNvZGVyIDw8IG1f
aXNMYWJlbDsKKyAgICBlbmNvZGVyIDw8IG1faXNTZWxlY3RlZDsKIH0KIAogYm9vbCBXZWJQb3B1
cEl0ZW06OmRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFdlYlBvcHVw
SXRlbSYgaXRlbSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcmVmZXJlbmNlc1N0
b3JlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJlZmVyZW5j
ZXNTdG9yZS5jcHAJKHJldmlzaW9uIDEzMjg3MSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9X
ZWJQcmVmZXJlbmNlc1N0b3JlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjEsMTEgKzYxLDExIEBA
IFdlYlByZWZlcmVuY2VzU3RvcmU6OldlYlByZWZlcmVuY2VzU3RvcmUKIAogdm9pZCBXZWJQcmVm
ZXJlbmNlc1N0b3JlOjplbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBj
b25zdAogewotICAgIGVuY29kZXIuZW5jb2RlKG1fc3RyaW5nVmFsdWVzKTsKLSAgICBlbmNvZGVy
LmVuY29kZShtX2Jvb2xWYWx1ZXMpOwotICAgIGVuY29kZXIuZW5jb2RlKG1fdWludDMyVmFsdWVz
KTsKLSAgICBlbmNvZGVyLmVuY29kZShtX2RvdWJsZVZhbHVlcyk7Ci0gICAgZW5jb2Rlci5lbmNv
ZGUobV9mbG9hdFZhbHVlcyk7CisgICAgZW5jb2RlciA8PCBtX3N0cmluZ1ZhbHVlczsKKyAgICBl
bmNvZGVyIDw8IG1fYm9vbFZhbHVlczsKKyAgICBlbmNvZGVyIDw8IG1fdWludDMyVmFsdWVzOwor
ICAgIGVuY29kZXIgPDwgbV9kb3VibGVWYWx1ZXM7CisgICAgZW5jb2RlciA8PCBtX2Zsb2F0VmFs
dWVzOwogfQogCiBib29sIFdlYlByZWZlcmVuY2VzU3RvcmU6OmRlY29kZShDb3JlSVBDOjpBcmd1
bWVudERlY29kZXIqIGRlY29kZXIsIFdlYlByZWZlcmVuY2VzU3RvcmUmIHJlc3VsdCkKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycy5jcHAJKHJldmlzaW9uIDEzMjg3MSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9X
ZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsNjcg
KzU0LDY3IEBAIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OldlYlByb2Nlc3MKIAogdm9p
ZCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRF
bmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewotICAgIGVuY29kZXIuZW5jb2RlKGluamVjdGVkQnVu
ZGxlUGF0aCk7Ci0gICAgZW5jb2Rlci5lbmNvZGUoaW5qZWN0ZWRCdW5kbGVQYXRoRXh0ZW5zaW9u
SGFuZGxlKTsKLSAgICBlbmNvZGVyLmVuY29kZShhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KTsK
LSAgICBlbmNvZGVyLmVuY29kZShhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFu
ZGxlKTsKLSAgICBlbmNvZGVyLmVuY29kZShkYXRhYmFzZURpcmVjdG9yeSk7Ci0gICAgZW5jb2Rl
ci5lbmNvZGUoZGF0YWJhc2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwotICAgIGVuY29kZXIu
ZW5jb2RlKGxvY2FsU3RvcmFnZURpcmVjdG9yeSk7Ci0gICAgZW5jb2Rlci5lbmNvZGUobG9jYWxT
dG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKLSAgICBlbmNvZGVyLmVuY29kZShkaXNr
Q2FjaGVEaXJlY3RvcnkpOwotICAgIGVuY29kZXIuZW5jb2RlKGRpc2tDYWNoZURpcmVjdG9yeUV4
dGVuc2lvbkhhbmRsZSk7Ci0gICAgZW5jb2Rlci5lbmNvZGUoY29va2llU3RvcmFnZURpcmVjdG9y
eSk7Ci0gICAgZW5jb2Rlci5lbmNvZGUoY29va2llU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhh
bmRsZSk7Ci0gICAgZW5jb2Rlci5lbmNvZGUodXJsU2NoZW1lc1JlZ2lzdGVyZXJkQXNFbXB0eURv
Y3VtZW50KTsKLSAgICBlbmNvZGVyLmVuY29kZSh1cmxTY2hlbWVzUmVnaXN0ZXJlZEFzU2VjdXJl
KTsKLSAgICBlbmNvZGVyLmVuY29kZSh1cmxTY2hlbWVzRm9yV2hpY2hEb21haW5SZWxheGF0aW9u
SXNGb3JiaWRkZW4pOwotICAgIGVuY29kZXIuZW5jb2RlKHVybFNjaGVtZXNSZWdpc3RlcmVkQXNM
b2NhbCk7Ci0gICAgZW5jb2Rlci5lbmNvZGUodXJsU2NoZW1lc1JlZ2lzdGVyZWRBc05vQWNjZXNz
KTsKLSAgICBlbmNvZGVyLmVuY29kZSh1cmxTY2hlbWVzUmVnaXN0ZXJlZEFzRGlzcGxheUlzb2xh
dGVkKTsKLSAgICBlbmNvZGVyLmVuY29kZSh1cmxTY2hlbWVzUmVnaXN0ZXJlZEFzQ09SU0VuYWJs
ZWQpOworICAgIGVuY29kZXIgPDwgaW5qZWN0ZWRCdW5kbGVQYXRoOworICAgIGVuY29kZXIgPDwg
aW5qZWN0ZWRCdW5kbGVQYXRoRXh0ZW5zaW9uSGFuZGxlOworICAgIGVuY29kZXIgPDwgYXBwbGlj
YXRpb25DYWNoZURpcmVjdG9yeTsKKyAgICBlbmNvZGVyIDw8IGFwcGxpY2F0aW9uQ2FjaGVEaXJl
Y3RvcnlFeHRlbnNpb25IYW5kbGU7CisgICAgZW5jb2RlciA8PCBkYXRhYmFzZURpcmVjdG9yeTsK
KyAgICBlbmNvZGVyIDw8IGRhdGFiYXNlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOworICAgIGVu
Y29kZXIgPDwgbG9jYWxTdG9yYWdlRGlyZWN0b3J5OworICAgIGVuY29kZXIgPDwgbG9jYWxTdG9y
YWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOworICAgIGVuY29kZXIgPDwgZGlza0NhY2hlRGly
ZWN0b3J5OworICAgIGVuY29kZXIgPDwgZGlza0NhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxl
OworICAgIGVuY29kZXIgPDwgY29va2llU3RvcmFnZURpcmVjdG9yeTsKKyAgICBlbmNvZGVyIDw8
IGNvb2tpZVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CisgICAgZW5jb2RlciA8PCB1
cmxTY2hlbWVzUmVnaXN0ZXJlcmRBc0VtcHR5RG9jdW1lbnQ7CisgICAgZW5jb2RlciA8PCB1cmxT
Y2hlbWVzUmVnaXN0ZXJlZEFzU2VjdXJlOworICAgIGVuY29kZXIgPDwgdXJsU2NoZW1lc0Zvcldo
aWNoRG9tYWluUmVsYXhhdGlvbklzRm9yYmlkZGVuOworICAgIGVuY29kZXIgPDwgdXJsU2NoZW1l
c1JlZ2lzdGVyZWRBc0xvY2FsOworICAgIGVuY29kZXIgPDwgdXJsU2NoZW1lc1JlZ2lzdGVyZWRB
c05vQWNjZXNzOworICAgIGVuY29kZXIgPDwgdXJsU2NoZW1lc1JlZ2lzdGVyZWRBc0Rpc3BsYXlJ
c29sYXRlZDsKKyAgICBlbmNvZGVyIDw8IHVybFNjaGVtZXNSZWdpc3RlcmVkQXNDT1JTRW5hYmxl
ZDsKICAgICBlbmNvZGVyLmVuY29kZUVudW0oY2FjaGVNb2RlbCk7Ci0gICAgZW5jb2Rlci5lbmNv
ZGUoc2hvdWxkVHJhY2tWaXNpdGVkTGlua3MpOwotICAgIGVuY29kZXIuZW5jb2RlKHNob3VsZEFs
d2F5c1VzZUNvbXBsZXhUZXh0Q29kZVBhdGgpOwotICAgIGVuY29kZXIuZW5jb2RlKHNob3VsZFVz
ZUZvbnRTbW9vdGhpbmcpOwotICAgIGVuY29kZXIuZW5jb2RlKGljb25EYXRhYmFzZUVuYWJsZWQp
OwotICAgIGVuY29kZXIuZW5jb2RlKHRlcm1pbmF0aW9uVGltZW91dCk7Ci0gICAgZW5jb2Rlci5l
bmNvZGUobGFuZ3VhZ2VzKTsKLSAgICBlbmNvZGVyLmVuY29kZSh0ZXh0Q2hlY2tlclN0YXRlKTsK
LSAgICBlbmNvZGVyLmVuY29kZShmdWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVkKTsKLSAgICBlbmNv
ZGVyLmVuY29kZShkZWZhdWx0UmVxdWVzdFRpbWVvdXRJbnRlcnZhbCk7CisgICAgZW5jb2RlciA8
PCBzaG91bGRUcmFja1Zpc2l0ZWRMaW5rczsKKyAgICBlbmNvZGVyIDw8IHNob3VsZEFsd2F5c1Vz
ZUNvbXBsZXhUZXh0Q29kZVBhdGg7CisgICAgZW5jb2RlciA8PCBzaG91bGRVc2VGb250U21vb3Ro
aW5nOworICAgIGVuY29kZXIgPDwgaWNvbkRhdGFiYXNlRW5hYmxlZDsKKyAgICBlbmNvZGVyIDw8
IHRlcm1pbmF0aW9uVGltZW91dDsKKyAgICBlbmNvZGVyIDw8IGxhbmd1YWdlczsKKyAgICBlbmNv
ZGVyIDw8IHRleHRDaGVja2VyU3RhdGU7CisgICAgZW5jb2RlciA8PCBmdWxsS2V5Ym9hcmRBY2Nl
c3NFbmFibGVkOworICAgIGVuY29kZXIgPDwgZGVmYXVsdFJlcXVlc3RUaW1lb3V0SW50ZXJ2YWw7
CiAjaWYgUExBVEZPUk0oTUFDKSB8fCBVU0UoQ0ZVUkxTVE9SQUdFU0VTU0lPTlMpCi0gICAgZW5j
b2Rlci5lbmNvZGUodWlQcm9jZXNzQnVuZGxlSWRlbnRpZmllcik7CisgICAgZW5jb2RlciA8PCB1
aVByb2Nlc3NCdW5kbGVJZGVudGlmaWVyOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oTUFDKQotICAg
IGVuY29kZXIuZW5jb2RlKHBhcmVudFByb2Nlc3NOYW1lKTsKLSAgICBlbmNvZGVyLmVuY29kZShw
cmVzZW50ZXJBcHBsaWNhdGlvblBpZCk7Ci0gICAgZW5jb2Rlci5lbmNvZGUobnNVUkxDYWNoZU1l
bW9yeUNhcGFjaXR5KTsKLSAgICBlbmNvZGVyLmVuY29kZShuc1VSTENhY2hlRGlza0NhcGFjaXR5
KTsKLSAgICBlbmNvZGVyLmVuY29kZShhY2NlbGVyYXRlZENvbXBvc2l0aW5nUG9ydCk7Ci0gICAg
ZW5jb2Rlci5lbmNvZGUodWlQcm9jZXNzQnVuZGxlUmVzb3VyY2VQYXRoKTsKLSAgICBlbmNvZGVy
LmVuY29kZSh1aVByb2Nlc3NCdW5kbGVSZXNvdXJjZVBhdGhFeHRlbnNpb25IYW5kbGUpOwotICAg
IGVuY29kZXIuZW5jb2RlKHNob3VsZEZvcmNlU2NyZWVuRm9udFN1YnN0aXR1dGlvbik7Ci0gICAg
ZW5jb2Rlci5lbmNvZGUoc2hvdWxkRW5hYmxlS2VybmluZ0FuZExpZ2F0dXJlc0J5RGVmYXVsdCk7
CisgICAgZW5jb2RlciA8PCBwYXJlbnRQcm9jZXNzTmFtZTsKKyAgICBlbmNvZGVyIDw8IHByZXNl
bnRlckFwcGxpY2F0aW9uUGlkOworICAgIGVuY29kZXIgPDwgbnNVUkxDYWNoZU1lbW9yeUNhcGFj
aXR5OworICAgIGVuY29kZXIgPDwgbnNVUkxDYWNoZURpc2tDYXBhY2l0eTsKKyAgICBlbmNvZGVy
IDw8IGFjY2VsZXJhdGVkQ29tcG9zaXRpbmdQb3J0OworICAgIGVuY29kZXIgPDwgdWlQcm9jZXNz
QnVuZGxlUmVzb3VyY2VQYXRoOworICAgIGVuY29kZXIgPDwgdWlQcm9jZXNzQnVuZGxlUmVzb3Vy
Y2VQYXRoRXh0ZW5zaW9uSGFuZGxlOworICAgIGVuY29kZXIgPDwgc2hvdWxkRm9yY2VTY3JlZW5G
b250U3Vic3RpdHV0aW9uOworICAgIGVuY29kZXIgPDwgc2hvdWxkRW5hYmxlS2VybmluZ0FuZExp
Z2F0dXJlc0J5RGVmYXVsdDsKICNlbGlmIFBMQVRGT1JNKFdJTikKLSAgICBlbmNvZGVyLmVuY29k
ZShzaG91bGRQYWludE5hdGl2ZUNvbnRyb2xzKTsKLSAgICBlbmNvZGVyLmVuY29kZShjZlVSTENh
Y2hlRGlza0NhcGFjaXR5KTsKLSAgICBlbmNvZGVyLmVuY29kZShjZlVSTENhY2hlTWVtb3J5Q2Fw
YWNpdHkpOwotICAgIGVuY29kZXIuZW5jb2RlKGluaXRpYWxIVFRQQ29va2llQWNjZXB0UG9saWN5
KTsKKyAgICBlbmNvZGVyIDw8IHNob3VsZFBhaW50TmF0aXZlQ29udHJvbHM7CisgICAgZW5jb2Rl
ciA8PCBjZlVSTENhY2hlRGlza0NhcGFjaXR5OworICAgIGVuY29kZXIgPDwgY2ZVUkxDYWNoZU1l
bW9yeUNhcGFjaXR5OworICAgIGVuY29kZXIgPDwgaW5pdGlhbEhUVFBDb29raWVBY2NlcHRQb2xp
Y3k7CiAjaWYgVVNFKENGVVJMU1RPUkFHRVNFU1NJT05TKQogICAgIENGRGF0YVJlZiBzdG9yYWdl
U2Vzc2lvbiA9IHNlcmlhbGl6ZWREZWZhdWx0U3RvcmFnZVNlc3Npb24uZ2V0KCk7Ci0gICAgZW5j
b2Rlci5lbmNvZGUoc3RhdGljX2Nhc3Q8Ym9vbD4oc3RvcmFnZVNlc3Npb24pKTsKKyAgICBlbmNv
ZGVyIDw8IHN0YXRpY19jYXN0PGJvb2w+KHN0b3JhZ2VTZXNzaW9uKTsKICAgICBpZiAoc3RvcmFn
ZVNlc3Npb24pCi0gICAgICAgIENvcmVJUEM6OmVuY29kZSgmZW5jb2Rlciwgc3RvcmFnZVNlc3Np
b24pOworICAgICAgICBDb3JlSVBDOjplbmNvZGUoZW5jb2Rlciwgc3RvcmFnZVNlc3Npb24pOwog
I2VuZGlmIC8vIFVTRShDRlVSTFNUT1JBR0VTRVNTSU9OUykKICNlbmRpZgogCiAjaWYgRU5BQkxF
KE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKLSAgICBlbmNv
ZGVyLmVuY29kZShub3RpZmljYXRpb25QZXJtaXNzaW9ucyk7CisgICAgZW5jb2RlciA8PCBub3Rp
ZmljYXRpb25QZXJtaXNzaW9uczsKICNlbmRpZgogCiAjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VT
UykKLSAgICBlbmNvZGVyLmVuY29kZSh1c2VzTmV0d29ya1Byb2Nlc3MpOworICAgIGVuY29kZXIg
PDwgdXNlc05ldHdvcmtQcm9jZXNzOwogI2VuZGlmCiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9XZWJUb3VjaEV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViVG91Y2hFdmVudC5jcHAJKHJldmlzaW9uIDEzMjg3MSkKKysrIFNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJUb3VjaEV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQs
NyBAQCB2b2lkIFdlYlRvdWNoRXZlbnQ6OmVuY29kZShDb3JlSVBDOjpBcmd1CiB7CiAgICAgV2Vi
RXZlbnQ6OmVuY29kZShlbmNvZGVyKTsKIAotICAgIGVuY29kZXIuZW5jb2RlKG1fdG91Y2hQb2lu
dHMpOworICAgIGVuY29kZXIgPDwgbV90b3VjaFBvaW50czsKIH0KIAogYm9vbCBXZWJUb3VjaEV2
ZW50OjpkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBXZWJUb3VjaEV2
ZW50JiByZXN1bHQpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViV2hlZWxFdmVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYldoZWVsRXZlbnQuY3Bw
CShyZXZpc2lvbiAxMzI4NzEpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViV2hlZWxFdmVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTczLDE4ICs3MywxOCBAQCB2b2lkIFdlYldoZWVsRXZl
bnQ6OmVuY29kZShDb3JlSVBDOjpBcmd1CiB7CiAgICAgV2ViRXZlbnQ6OmVuY29kZShlbmNvZGVy
KTsKIAotICAgIGVuY29kZXIuZW5jb2RlKG1fcG9zaXRpb24pOwotICAgIGVuY29kZXIuZW5jb2Rl
KG1fZ2xvYmFsUG9zaXRpb24pOwotICAgIGVuY29kZXIuZW5jb2RlKG1fZGVsdGEpOwotICAgIGVu
Y29kZXIuZW5jb2RlKG1fd2hlZWxUaWNrcyk7Ci0gICAgZW5jb2Rlci5lbmNvZGUobV9ncmFudWxh
cml0eSk7Ci0gICAgZW5jb2Rlci5lbmNvZGUobV9kaXJlY3Rpb25JbnZlcnRlZEZyb21EZXZpY2Up
OworICAgIGVuY29kZXIgPDwgbV9wb3NpdGlvbjsKKyAgICBlbmNvZGVyIDw8IG1fZ2xvYmFsUG9z
aXRpb247CisgICAgZW5jb2RlciA8PCBtX2RlbHRhOworICAgIGVuY29kZXIgPDwgbV93aGVlbFRp
Y2tzOworICAgIGVuY29kZXIgPDwgbV9ncmFudWxhcml0eTsKKyAgICBlbmNvZGVyIDw8IG1fZGly
ZWN0aW9uSW52ZXJ0ZWRGcm9tRGV2aWNlOwogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBlbmNvZGVy
LmVuY29kZShtX3BoYXNlKTsKLSAgICBlbmNvZGVyLmVuY29kZShtX21vbWVudHVtUGhhc2UpOwot
ICAgIGVuY29kZXIuZW5jb2RlKG1faGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhcyk7Ci0gICAgZW5j
b2Rlci5lbmNvZGUobV9zY3JvbGxDb3VudCk7Ci0gICAgZW5jb2Rlci5lbmNvZGUobV91bmFjY2Vs
ZXJhdGVkU2Nyb2xsaW5nRGVsdGEpOworICAgIGVuY29kZXIgPDwgbV9waGFzZTsKKyAgICBlbmNv
ZGVyIDw8IG1fbW9tZW50dW1QaGFzZTsKKyAgICBlbmNvZGVyIDw8IG1faGFzUHJlY2lzZVNjcm9s
bGluZ0RlbHRhczsKKyAgICBlbmNvZGVyIDw8IG1fc2Nyb2xsQ291bnQ7CisgICAgZW5jb2RlciA8
PCBtX3VuYWNjZWxlcmF0ZWRTY3JvbGxpbmdEZWx0YTsKICNlbmRpZgogfQogCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCShyZXZpc2lvbiAxMzI4NzEpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAgTmV0d29ya1Byb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnM6Ok5ldHdvcgogdm9pZCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVyczo6ZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsK
ICNpZiBQTEFURk9STShNQUMpCi0gICAgZW5jb2Rlci5lbmNvZGUocGFyZW50UHJvY2Vzc05hbWUp
OworICAgIGVuY29kZXIgPDwgcGFyZW50UHJvY2Vzc05hbWU7CiAjZW5kaWYKIH0KIApJbmRleDog
U291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTlBJZGVudGlmaWVyRGF0YS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTlBJZGVudGlmaWVyRGF0YS5j
cHAJKHJldmlzaW9uIDEzMjg3MSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05Q
SWRlbnRpZmllckRhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSwxMSArNjksMTEgQEAgTlBJ
ZGVudGlmaWVyIE5QSWRlbnRpZmllckRhdGE6OmNyZWF0ZU5QSQogCiB2b2lkIE5QSWRlbnRpZmll
ckRhdGE6OmVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7
Ci0gICAgZW5jb2Rlci5lbmNvZGUobV9pc1N0cmluZyk7CisgICAgZW5jb2RlciA8PCBtX2lzU3Ry
aW5nOwogICAgIGlmIChtX2lzU3RyaW5nKQotICAgICAgICBlbmNvZGVyLmVuY29kZShtX3N0cmlu
Zyk7CisgICAgICAgIGVuY29kZXIgPDwgbV9zdHJpbmc7CiAgICAgZWxzZQotICAgICAgICBlbmNv
ZGVyLmVuY29kZShtX251bWJlcik7CisgICAgICAgIGVuY29kZXIgPDwgbV9udW1iZXI7CiB9CiAK
IGJvb2wgTlBJZGVudGlmaWVyRGF0YTo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2Rlciog
ZGVjb2RlciwgTlBJZGVudGlmaWVyRGF0YSYgcmVzdWx0KQpJbmRleDogU291cmNlL1dlYktpdDIv
U2hhcmVkL1BsdWdpbnMvTlBWYXJpYW50RGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvU2hhcmVkL1BsdWdpbnMvTlBWYXJpYW50RGF0YS5jcHAJKHJldmlzaW9uIDEzMjg3MSkK
KysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05QVmFyaWFudERhdGEuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMjAsMjkgKzEyMCwyOSBAQCBOUFZhcmlhbnREYXRhIE5QVmFyaWFudERh
dGE6Om1ha2VSZW1vdGVOCiAKIHZvaWQgTlBWYXJpYW50RGF0YTo6ZW5jb2RlKENvcmVJUEM6OkFy
Z3VtZW50RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBlbmNvZGVyLmVuY29kZShtX3R5
cGUpOworICAgIGVuY29kZXIgPDwgbV90eXBlOwogCiAgICAgc3dpdGNoICh0eXBlKCkpIHsKICAg
ICBjYXNlIE5QVmFyaWFudERhdGE6OlZvaWQ6CiAgICAgY2FzZSBOUFZhcmlhbnREYXRhOjpOdWxs
OgogICAgICAgICBicmVhazsKICAgICBjYXNlIE5QVmFyaWFudERhdGE6OkJvb2w6Ci0gICAgICAg
IGVuY29kZXIuZW5jb2RlKGJvb2xWYWx1ZSgpKTsKKyAgICAgICAgZW5jb2RlciA8PCBib29sVmFs
dWUoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBOUFZhcmlhbnREYXRhOjpJbnQzMjoKLSAg
ICAgICAgZW5jb2Rlci5lbmNvZGUoaW50MzJWYWx1ZSgpKTsKKyAgICAgICAgZW5jb2RlciA8PCBp
bnQzMlZhbHVlKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTlBWYXJpYW50RGF0YTo6RG91
YmxlOgotICAgICAgICBlbmNvZGVyLmVuY29kZShkb3VibGVWYWx1ZSgpKTsKKyAgICAgICAgZW5j
b2RlciA8PCBkb3VibGVWYWx1ZSgpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE5QVmFyaWFu
dERhdGE6OlN0cmluZzoKLSAgICAgICAgZW5jb2Rlci5lbmNvZGUoc3RyaW5nVmFsdWUoKSk7Cisg
ICAgICAgIGVuY29kZXIgPDwgc3RyaW5nVmFsdWUoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBOUFZhcmlhbnREYXRhOjpMb2NhbE5QT2JqZWN0SUQ6Ci0gICAgICAgIGVuY29kZXIuZW5jb2Rl
KGxvY2FsTlBPYmplY3RJRFZhbHVlKCkpOworICAgICAgICBlbmNvZGVyIDw8IGxvY2FsTlBPYmpl
Y3RJRFZhbHVlKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTlBWYXJpYW50RGF0YTo6UmVt
b3RlTlBPYmplY3RJRDoKLSAgICAgICAgZW5jb2Rlci5lbmNvZGUocmVtb3RlTlBPYmplY3RJRFZh
bHVlKCkpOworICAgICAgICBlbmNvZGVyIDw8IHJlbW90ZU5QT2JqZWN0SURWYWx1ZSgpOwogICAg
ICAgICBicmVhazsKICAgICB9CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lu
cy9QbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
LmNwcAkocmV2aXNpb24gMTMyODcxKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMv
UGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5
LDE1ICszOSwxNSBAQCBQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpQbHVnaW5QCiAK
IHZvaWQgUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKENvcmVJUEM6OkFy
Z3VtZW50RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBlbmNvZGVyLmVuY29kZShwbHVn
aW5QYXRoKTsKLSAgICBlbmNvZGVyLmVuY29kZShzdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbklu
aXRpYWxpemF0aW9uKTsKLSAgICBlbmNvZGVyLmVuY29kZShtaW5pbXVtTGlmZXRpbWUpOwotICAg
IGVuY29kZXIuZW5jb2RlKHRlcm1pbmF0aW9uVGltZW91dCk7CisgICAgZW5jb2RlciA8PCBwbHVn
aW5QYXRoOworICAgIGVuY29kZXIgPDwgc3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFs
aXphdGlvbjsKKyAgICBlbmNvZGVyIDw8IG1pbmltdW1MaWZldGltZTsKKyAgICBlbmNvZGVyIDw8
IHRlcm1pbmF0aW9uVGltZW91dDsKIAogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBlbmNvZGVyLmVu
Y29kZShwYXJlbnRQcm9jZXNzTmFtZSk7Ci0gICAgZW5jb2Rlci5lbmNvZGUoYWNjZWxlcmF0ZWRD
b21wb3NpdGluZ1BvcnQpOwotICAgIGVuY29kZXIuZW5jb2RlKHNhbmRib3hQcm9maWxlRGlyZWN0
b3J5UGF0aCk7CisgICAgZW5jb2RlciA8PCBwYXJlbnRQcm9jZXNzTmFtZTsKKyAgICBlbmNvZGVy
IDw8IGFjY2VsZXJhdGVkQ29tcG9zaXRpbmdQb3J0OworICAgIGVuY29kZXIgPDwgc2FuZGJveFBy
b2ZpbGVEaXJlY3RvcnlQYXRoOwogI2VuZGlmCiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1No
YXJlZC9jZi9Bcmd1bWVudENvZGVyc0NGLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvY2YvQXJndW1lbnRDb2RlcnNDRi5jcHAJKHJldmlzaW9uIDEzMjg3MSkKKysrIFNv
dXJjZS9XZWJLaXQyL1NoYXJlZC9jZi9Bcmd1bWVudENvZGVyc0NGLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtOTgsMTAgKzk4LDEwIEBAIHN0YXRpYyBDRlR5cGUgdHlwZUZyb21DRlR5cGVSZWYoQ0ZU
eXBlUmUKICAgICByZXR1cm4gVW5rbm93bjsKIH0KIAotdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNv
ZGVyKiBlbmNvZGVyLCBDRlR5cGVSZWYgdHlwZVJlZikKK3ZvaWQgZW5jb2RlKEFyZ3VtZW50RW5j
b2RlciYgZW5jb2RlciwgQ0ZUeXBlUmVmIHR5cGVSZWYpCiB7CiAgICAgQ0ZUeXBlIHR5cGUgPSB0
eXBlRnJvbUNGVHlwZVJlZih0eXBlUmVmKTsKLSAgICBlbmNvZGVyLT5lbmNvZGVFbnVtKHR5cGUp
OworICAgIGVuY29kZXIuZW5jb2RlRW51bSh0eXBlKTsKIAogICAgIHN3aXRjaCAodHlwZSkgewog
ICAgIGNhc2UgQ0ZBcnJheToKQEAgLTI0MCwxNCArMjQwLDE1IEBAIGJvb2wgZGVjb2RlKEFyZ3Vt
ZW50RGVjb2RlciogZGVjb2RlciwgUmUKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgZW5j
b2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2RlciwgQ0ZBcnJheVJlZiBhcnJheSkKK3ZvaWQgZW5j
b2RlKEFyZ3VtZW50RW5jb2RlciYgZW5jb2RlciwgQ0ZBcnJheVJlZiBhcnJheSkKIHsKICAgICBD
RkluZGV4IHNpemUgPSBDRkFycmF5R2V0Q291bnQoYXJyYXkpOwogICAgIFZlY3RvcjxDRlR5cGVS
ZWYsIDMyPiB2YWx1ZXMoc2l6ZSk7CiAKICAgICBDRkFycmF5R2V0VmFsdWVzKGFycmF5LCBDRlJh
bmdlTWFrZSgwLCBzaXplKSwgdmFsdWVzLmRhdGEoKSk7CiAKLSAgICBlbmNvZGVyLT5lbmNvZGUo
c3RhdGljX2Nhc3Q8dWludDY0X3Q+KHNpemUpKTsKKyAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0
PHVpbnQ2NF90PihzaXplKTsKKwogICAgIGZvciAoQ0ZJbmRleCBpID0gMDsgaSA8IHNpemU7ICsr
aSkgewogICAgICAgICBBU1NFUlQodmFsdWVzW2ldKTsKIApAQCAtMjc1LDkgKzI3Niw5IEBAIGJv
b2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgUmUKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyLCBDRkJvb2xlYW5SZWYg
Ym9vbGVhbikKK3ZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYgZW5jb2RlciwgQ0ZCb29sZWFu
UmVmIGJvb2xlYW4pCiB7Ci0gICAgZW5jb2Rlci0+ZW5jb2RlKHN0YXRpY19jYXN0PGJvb2w+KENG
Qm9vbGVhbkdldFZhbHVlKGJvb2xlYW4pKSk7CisgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDxi
b29sPihDRkJvb2xlYW5HZXRWYWx1ZShib29sZWFuKSk7CiB9CiAKIGJvb2wgZGVjb2RlKEFyZ3Vt
ZW50RGVjb2RlciogZGVjb2RlciwgUmV0YWluUHRyPENGQm9vbGVhblJlZj4mIHJlc3VsdCkKQEAg
LTI5MCwxMiArMjkxLDEyIEBAIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2Rlciwg
UmUKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyKiBl
bmNvZGVyLCBDRkRhdGFSZWYgZGF0YSkKK3ZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYgZW5j
b2RlciwgQ0ZEYXRhUmVmIGRhdGEpCiB7CiAgICAgQ0ZJbmRleCBsZW5ndGggPSBDRkRhdGFHZXRM
ZW5ndGgoZGF0YSk7CiAgICAgY29uc3QgVUludDgqIGJ5dGVQdHIgPSBDRkRhdGFHZXRCeXRlUHRy
KGRhdGEpOwogCi0gICAgZW5jb2Rlci0+ZW5jb2RlVmFyaWFibGVMZW5ndGhCeXRlQXJyYXkoQ29y
ZUlQQzo6RGF0YVJlZmVyZW5jZShieXRlUHRyLCBsZW5ndGgpKTsKKyAgICBlbmNvZGVyIDw8IENv
cmVJUEM6OkRhdGFSZWZlcmVuY2UoYnl0ZVB0ciwgbGVuZ3RoKTsKIH0KIAogYm9vbCBkZWNvZGUo
QXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYgcmVzdWx0KQpA
QCAtMzA4LDkgKzMwOSw5IEBAIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2Rlciwg
UmUKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyKiBl
bmNvZGVyLCBDRkRhdGVSZWYgZGF0ZSkKK3ZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYgZW5j
b2RlciwgQ0ZEYXRlUmVmIGRhdGUpCiB7Ci0gICAgZW5jb2Rlci0+ZW5jb2RlKHN0YXRpY19jYXN0
PGRvdWJsZT4oQ0ZEYXRlR2V0QWJzb2x1dGVUaW1lKGRhdGUpKSk7CisgICAgZW5jb2RlciA8PCBz
dGF0aWNfY2FzdDxkb3VibGU+KENGRGF0ZUdldEFic29sdXRlVGltZShkYXRlKSk7CiB9CiAKIGJv
b2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgUmV0YWluUHRyPENGRGF0ZVJlZj4m
IHJlc3VsdCkKQEAgLTMyMyw3ICszMjQsNyBAQCBib29sIGRlY29kZShBcmd1bWVudERlY29kZXIq
IGRlY29kZXIsIFJlCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgZW5jb2RlKEFyZ3VtZW50
RW5jb2RlciogZW5jb2RlciwgQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnkpCit2b2lkIGVuY29k
ZShBcmd1bWVudEVuY29kZXImIGVuY29kZXIsIENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5KQog
ewogICAgIENGSW5kZXggc2l6ZSA9IENGRGljdGlvbmFyeUdldENvdW50KGRpY3Rpb25hcnkpOwog
ICAgIFZlY3RvcjxDRlR5cGVSZWYsIDMyPiBrZXlzKHNpemUpOwpAQCAtMzMxLDcgKzMzMiw3IEBA
IHZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2RlciwgQ0YKICAgICAKICAgICBDRkRp
Y3Rpb25hcnlHZXRLZXlzQW5kVmFsdWVzKGRpY3Rpb25hcnksIGtleXMuZGF0YSgpLCB2YWx1ZXMu
ZGF0YSgpKTsKIAotICAgIGVuY29kZXItPmVuY29kZShzdGF0aWNfY2FzdDx1aW50NjRfdD4oc2l6
ZSkpOworICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHNpemUpOwogCiAgICAg
Zm9yIChDRkluZGV4IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CiAgICAgICAgIEFTU0VSVChrZXlz
W2ldKTsKQEAgLTM3MSw3ICszNzIsNyBAQCBib29sIGRlY29kZShBcmd1bWVudERlY29kZXIqIGRl
Y29kZXIsIFJlCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgZW5jb2RlKEFyZ3VtZW50RW5j
b2RlciogZW5jb2RlciwgQ0ZOdW1iZXJSZWYgbnVtYmVyKQordm9pZCBlbmNvZGUoQXJndW1lbnRF
bmNvZGVyJiBlbmNvZGVyLCBDRk51bWJlclJlZiBudW1iZXIpCiB7CiAgICAgQ0ZOdW1iZXJUeXBl
IG51bWJlclR5cGUgPSBDRk51bWJlckdldFR5cGUobnVtYmVyKTsKIApAQCAtMzc5LDggKzM4MCw4
IEBAIHZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2RlciwgQ0YKICAgICBib29sIHJl
c3VsdCA9IENGTnVtYmVyR2V0VmFsdWUobnVtYmVyLCBudW1iZXJUeXBlLCBidWZmZXIuZGF0YSgp
KTsKICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKIAotICAgIGVuY29kZXItPmVu
Y29kZUVudW0obnVtYmVyVHlwZSk7Ci0gICAgZW5jb2Rlci0+ZW5jb2RlVmFyaWFibGVMZW5ndGhC
eXRlQXJyYXkoYnVmZmVyKTsKKyAgICBlbmNvZGVyLmVuY29kZUVudW0obnVtYmVyVHlwZSk7Cisg
ICAgZW5jb2RlciA8PCBDb3JlSVBDOjpEYXRhUmVmZXJlbmNlKGJ1ZmZlcik7CiB9CiAKIHN0YXRp
YyBzaXplX3Qgc2l6ZUZvck51bWJlclR5cGUoQ0ZOdW1iZXJUeXBlIG51bWJlclR5cGUpCkBAIC00
NTIsNyArNDUzLDcgQEAgYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBSZQog
ICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXIqIGVuY29k
ZXIsIENGU3RyaW5nUmVmIHN0cmluZykKK3ZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYgZW5j
b2RlciwgQ0ZTdHJpbmdSZWYgc3RyaW5nKQogewogICAgIENGSW5kZXggbGVuZ3RoID0gQ0ZTdHJp
bmdHZXRMZW5ndGgoc3RyaW5nKTsKICAgICBDRlN0cmluZ0VuY29kaW5nIGVuY29kaW5nID0gQ0ZT
dHJpbmdHZXRGYXN0ZXN0RW5jb2Rpbmcoc3RyaW5nKTsKQEAgLTQ2Nyw4ICs0NjgsOCBAQCB2b2lk
IGVuY29kZShBcmd1bWVudEVuY29kZXIqIGVuY29kZXIsIENGCiAgICAgbnVtQ29udmVydGVkQnl0
ZXMgPSBDRlN0cmluZ0dldEJ5dGVzKHN0cmluZywgcmFuZ2UsIGVuY29kaW5nLCAwLCBmYWxzZSwg
YnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSwgJmJ1ZmZlckxlbmd0aCk7CiAgICAgQVNTRVJU
KG51bUNvbnZlcnRlZEJ5dGVzID09IGxlbmd0aCk7CiAKLSAgICBlbmNvZGVyLT5lbmNvZGVFbnVt
KGVuY29kaW5nKTsKLSAgICBlbmNvZGVyLT5lbmNvZGVWYXJpYWJsZUxlbmd0aEJ5dGVBcnJheShi
dWZmZXIpOworICAgIGVuY29kZXIuZW5jb2RlRW51bShlbmNvZGluZyk7CisgICAgZW5jb2RlciA8
PCBDb3JlSVBDOjpEYXRhUmVmZXJlbmNlKGJ1ZmZlcik7CiB9CiAKIGJvb2wgZGVjb2RlKEFyZ3Vt
ZW50RGVjb2RlciogZGVjb2RlciwgUmV0YWluUHRyPENGU3RyaW5nUmVmPiYgcmVzdWx0KQpAQCAt
NDkyLDEwICs0OTMsMTAgQEAgYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBS
ZQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXIqIGVu
Y29kZXIsIENGVVJMUmVmIHVybCkKK3ZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYgZW5jb2Rl
ciwgQ0ZVUkxSZWYgdXJsKQogewogICAgIENGVVJMUmVmIGJhc2VVUkwgPSBDRlVSTEdldEJhc2VV
UkwodXJsKTsKLSAgICBlbmNvZGVyLT5lbmNvZGUoc3RhdGljX2Nhc3Q8Ym9vbD4oYmFzZVVSTCkp
OworICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8Ym9vbD4oYmFzZVVSTCk7CiAgICAgaWYgKGJh
c2VVUkwpCiAgICAgICAgIGVuY29kZShlbmNvZGVyLCBiYXNlVVJMKTsKIApAQCAtNTM2LDcgKzUz
Nyw3IEBAIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgUmUKIH0KIAogI2lm
IFVTRShTRUNVUklUWV9GUkFNRVdPUkspCi12b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXIqIGVu
Y29kZXIsIFNlY0NlcnRpZmljYXRlUmVmIGNlcnRpZmljYXRlKQordm9pZCBlbmNvZGUoQXJndW1l
bnRFbmNvZGVyJiBlbmNvZGVyLCBTZWNDZXJ0aWZpY2F0ZVJlZiBjZXJ0aWZpY2F0ZSkKIHsKICAg
ICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBkYXRhKEFkb3B0Q0YsIFNlY0NlcnRpZmljYXRlQ29weURh
dGEoY2VydGlmaWNhdGUpKTsKICAgICBlbmNvZGUoZW5jb2RlciwgZGF0YS5nZXQoKSk7CkBAIC01
NTIsNyArNTUzLDcgQEAgYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBSZQog
ICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXIqIGVuY29k
ZXIsIFNlY0tleWNoYWluSXRlbVJlZiBrZXljaGFpbkl0ZW0pCit2b2lkIGVuY29kZShBcmd1bWVu
dEVuY29kZXImIGVuY29kZXIsIFNlY0tleWNoYWluSXRlbVJlZiBrZXljaGFpbkl0ZW0pCiB7CiAg
ICAgQ0ZEYXRhUmVmIGRhdGE7CiAgICAgaWYgKFNlY0tleWNoYWluSXRlbUNyZWF0ZVBlcnNpc3Rl
bnRSZWZlcmVuY2Uoa2V5Y2hhaW5JdGVtLCAmZGF0YSkgPT0gZXJyU2VjU3VjY2VzcykgewpAQCAt
NTc0LDcgKzU3NSw2IEBAIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgUmUK
ICAgICByZXN1bHQuYWRvcHRDRihpdGVtKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KLQogI2VuZGlm
CiAKIH0gLy8gbmFtZXNwYWNlIENvcmVJUEMKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9j
Zi9Bcmd1bWVudENvZGVyc0NGLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVk
L2NmL0FyZ3VtZW50Q29kZXJzQ0YuaAkocmV2aXNpb24gMTMyODcxKQorKysgU291cmNlL1dlYktp
dDIvU2hhcmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNDgg
KzM5LDQ4IEBAIGNsYXNzIEFyZ3VtZW50RW5jb2RlcjsKIGNsYXNzIEFyZ3VtZW50RGVjb2RlcjsK
IAogLy8gQ0ZBcnJheVJlZgotdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyKiwgQ0ZBcnJheVJl
Zik7Cit2b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXImLCBDRkFycmF5UmVmKTsKIGJvb2wgZGVj
b2RlKEFyZ3VtZW50RGVjb2RlciosIFJldGFpblB0cjxDRkFycmF5UmVmPiYgcmVzdWx0KTsKIAog
Ly8gQ0ZCb29sZWFuUmVmCi12b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXIqLCBDRkJvb2xlYW5S
ZWYpOwordm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyJiwgQ0ZCb29sZWFuUmVmKTsKIGJvb2wg
ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciosIFJldGFpblB0cjxDRkJvb2xlYW5SZWY+JiByZXN1bHQp
OwogCiAvLyBDRkRhdGFSZWYKLXZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciosIENGRGF0YVJl
Zik7Cit2b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXImLCBDRkRhdGFSZWYpOwogYm9vbCBkZWNv
ZGUoQXJndW1lbnREZWNvZGVyKiwgUmV0YWluUHRyPENGRGF0YVJlZj4mIHJlc3VsdCk7CiAKIC8v
IENGRGF0ZVJlZgotdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyKiwgQ0ZEYXRlUmVmKTsKK3Zv
aWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYsIENGRGF0ZVJlZik7CiBib29sIGRlY29kZShBcmd1
bWVudERlY29kZXIqLCBSZXRhaW5QdHI8Q0ZEYXRlUmVmPiYgcmVzdWx0KTsKIAogLy8gQ0ZEaWN0
aW9uYXJ5UmVmCi12b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXIqLCBDRkRpY3Rpb25hcnlSZWYp
Owordm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyJiwgQ0ZEaWN0aW9uYXJ5UmVmKTsKIGJvb2wg
ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciosIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+JiByZXN1
bHQpOwogCiAvLyBDRk51bWJlclJlZgotdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyKiwgQ0ZO
dW1iZXJSZWYpOwordm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyJiwgQ0ZOdW1iZXJSZWYpOwog
Ym9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyKiwgUmV0YWluUHRyPENGTnVtYmVyUmVmPiYgcmVz
dWx0KTsKIAogLy8gQ0ZTdHJpbmdSZWYKLXZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciosIENG
U3RyaW5nUmVmKTsKK3ZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYsIENGU3RyaW5nUmVmKTsK
IGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciosIFJldGFpblB0cjxDRlN0cmluZ1JlZj4mIHJl
c3VsdCk7CiAKIC8vIENGVHlwZVJlZgotdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyKiwgQ0ZU
eXBlUmVmKTsKK3ZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYsIENGVHlwZVJlZik7CiBib29s
IGRlY29kZShBcmd1bWVudERlY29kZXIqLCBSZXRhaW5QdHI8Q0ZUeXBlUmVmPiYgcmVzdWx0KTsK
IAogLy8gQ0ZVUkxSZWYKLXZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciosIENGVVJMUmVmKTsK
K3ZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYsIENGVVJMUmVmKTsKIGJvb2wgZGVjb2RlKEFy
Z3VtZW50RGVjb2RlciosIFJldGFpblB0cjxDRlVSTFJlZj4mIHJlc3VsdCk7CiAKICNpZiBVU0Uo
U0VDVVJJVFlfRlJBTUVXT1JLKQogLy8gU2VjQ2VydGlmaWNhdGVSZWYKLXZvaWQgZW5jb2RlKEFy
Z3VtZW50RW5jb2RlciosIFNlY0NlcnRpZmljYXRlUmVmKTsKK3ZvaWQgZW5jb2RlKEFyZ3VtZW50
RW5jb2RlciYsIFNlY0NlcnRpZmljYXRlUmVmKTsKIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2Rl
ciosIFJldGFpblB0cjxTZWNDZXJ0aWZpY2F0ZVJlZj4mIHJlc3VsdCk7CiAKIC8vIFNlY0tleWNo
YWluSXRlbVJlZgotdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyKiwgU2VjS2V5Y2hhaW5JdGVt
UmVmKTsKK3ZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYsIFNlY0tleWNoYWluSXRlbVJlZik7
CiBib29sIGRlY29kZShBcmd1bWVudERlY29kZXIqLCBSZXRhaW5QdHI8U2VjS2V5Y2hhaW5JdGVt
UmVmPiYgcmVzdWx0KTsKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFj
L0FyZ3VtZW50Q29kZXJzTWFjLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVk
L21hYy9Bcmd1bWVudENvZGVyc01hYy5oCShyZXZpc2lvbiAxMzI4NzEpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvbWFjL0FyZ3VtZW50Q29kZXJzTWFjLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0
LDMxICszNCwzMSBAQCBjbGFzcyBBcmd1bWVudEVuY29kZXI7CiBjbGFzcyBBcmd1bWVudERlY29k
ZXI7CiAKIC8vIE5TQXR0cmlidXRlZFN0cmluZwotdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVy
KiwgTlNBdHRyaWJ1dGVkU3RyaW5nICopOwordm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyJiwg
TlNBdHRyaWJ1dGVkU3RyaW5nICopOwogYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyKiwgUmV0
YWluUHRyPE5TQXR0cmlidXRlZFN0cmluZz4mKTsKIAogI2lmIFVTRShBUFBLSVQpCiAvLyBOU0Nv
bG9yCi12b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXIqLCBOU0NvbG9yICopOwordm9pZCBlbmNv
ZGUoQXJndW1lbnRFbmNvZGVyJiwgTlNDb2xvciAqKTsKIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVj
b2RlciosIFJldGFpblB0cjxOU0NvbG9yPiYpOwogI2VuZGlmCiAKIC8vIE5TRGljdGlvbmFyeQot
dm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyKiwgTlNEaWN0aW9uYXJ5ICopOwordm9pZCBlbmNv
ZGUoQXJndW1lbnRFbmNvZGVyJiwgTlNEaWN0aW9uYXJ5ICopOwogYm9vbCBkZWNvZGUoQXJndW1l
bnREZWNvZGVyKiwgUmV0YWluUHRyPE5TRGljdGlvbmFyeT4mKTsKIAogI2lmIFVTRShBUFBLSVQp
CiAvLyBOU0ZvbnQKLXZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciosIE5TRm9udCAqKTsKK3Zv
aWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYsIE5TRm9udCAqKTsKIGJvb2wgZGVjb2RlKEFyZ3Vt
ZW50RGVjb2RlciosIFJldGFpblB0cjxOU0ZvbnQ+Jik7CiAjZW5kaWYKIAogLy8gTlNOdW1iZXIK
LXZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciosIE5TTnVtYmVyICopOwordm9pZCBlbmNvZGUo
QXJndW1lbnRFbmNvZGVyJiwgTlNOdW1iZXIgKik7CiBib29sIGRlY29kZShBcmd1bWVudERlY29k
ZXIqLCBSZXRhaW5QdHI8TlNOdW1iZXI+Jik7CiAKIC8vIE5TU3RyaW5nCi12b2lkIGVuY29kZShB
cmd1bWVudEVuY29kZXIqLCBOU1N0cmluZyAqKTsKK3ZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2Rl
ciYsIE5TU3RyaW5nICopOwogYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyKiwgUmV0YWluUHRy
PE5TU3RyaW5nPiYpOwogCiB9IC8vIG5hbWVzcGFjZSBDb3JlSVBDCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvbWFjL0FyZ3VtZW50Q29kZXJzTWFjLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9tYWMvQXJndW1lbnRDb2RlcnNNYWMubW0JKHJldmlzaW9uIDEzMjg3
MSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvQXJndW1lbnRDb2RlcnNNYWMubW0JKHdv
cmtpbmcgY29weSkKQEAgLTc2LDEwICs3NiwxMCBAQCBzdGF0aWMgTlNUeXBlIHR5cGVGcm9tT2Jq
ZWN0KGlkIG9iamVjdCkKICAgICByZXR1cm4gVW5rbm93bjsKIH0KIAotc3RhdGljIHZvaWQgZW5j
b2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2RlciwgaWQgb2JqZWN0KQorc3RhdGljIHZvaWQgZW5j
b2RlKEFyZ3VtZW50RW5jb2RlciYgZW5jb2RlciwgaWQgb2JqZWN0KQogewogICAgIE5TVHlwZSB0
eXBlID0gdHlwZUZyb21PYmplY3Qob2JqZWN0KTsKLSAgICBlbmNvZGVyLT5lbmNvZGVFbnVtKHR5
cGUpOworICAgIGVuY29kZXIuZW5jb2RlRW51bSh0eXBlKTsKIAogICAgIHN3aXRjaCAodHlwZSkg
ewogICAgIGNhc2UgTlNBdHRyaWJ1dGVkU3RyaW5nVHlwZToKQEAgLTE3Miw3ICsxNzIsNyBAQCBz
dGF0aWMgYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyKiBkZWNvCiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCi12b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXIqIGVuY29kZXIsIE5TQXR0cmlidXRl
ZFN0cmluZyAqc3RyaW5nKQordm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBO
U0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZykKIHsKICAgICAvLyBFdmVuIHRob3VnaCBOU0F0dHJp
YnV0ZWRTdHJpbmcgaXMgdG9sbCBmcmVlIGJyaWRnZWQgd2l0aCBDRkF0dHJpYnV0ZWRTdHJpbmdS
ZWYsIGF0dHJpYnV0ZXMnIHZhbHVlcyBtYXkgYmUgbm90LCBzbyB3ZSBzaG91bGQgc3RheSB3aXRo
aW4gdGhpcyBmaWxlJ3MgY29kZS4KIApAQCAtMTk2LDExICsxOTYsMTEgQEAgdm9pZCBlbmNvZGUo
QXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyLCBOUwogICAgICAgICBwb3NpdGlvbiA9IE5TTWF4UmFu
Z2UoZWZmZWN0aXZlUmFuZ2UpOwogICAgIH0KIAotICAgIGVuY29kZXItPmVuY29kZShzdGF0aWNf
Y2FzdDx1aW50NjRfdD4ocmFuZ2VzLnNpemUoKSkpOworICAgIGVuY29kZXIgPDwgc3RhdGljX2Nh
c3Q8dWludDY0X3Q+KHJhbmdlcy5zaXplKCkpOwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCByYW5nZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKHN0YXRpY19j
YXN0PHVpbnQ2NF90PihyYW5nZXNbaV0uZmlyc3QubG9jYXRpb24pKTsKLSAgICAgICAgZW5jb2Rl
ci0+ZW5jb2RlKHN0YXRpY19jYXN0PHVpbnQ2NF90PihyYW5nZXNbaV0uZmlyc3QubGVuZ3RoKSk7
CisgICAgICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJhbmdlc1tpXS5maXJz
dC5sb2NhdGlvbik7CisgICAgICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJh
bmdlc1tpXS5maXJzdC5sZW5ndGgpOwogICAgICAgICBDb3JlSVBDOjplbmNvZGUoZW5jb2Rlciwg
cmFuZ2VzW2ldLnNlY29uZC5nZXQoKSk7CiAgICAgfQogfQpAQCAtMjQzLDkgKzI0Myw5IEBAIGJv
b2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgUmUKIH0KIAogI2lmIFVTRShBUFBL
SVQpCi12b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXIqIGVuY29kZXIsIE5TQ29sb3IgKmNvbG9y
KQordm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBOU0NvbG9yICpjb2xvcikK
IHsKLSAgICBlbmNvZGVyLT5lbmNvZGUoY29sb3JGcm9tTlNDb2xvcihjb2xvcikpOworICAgIGVu
Y29kZXIgPDwgY29sb3JGcm9tTlNDb2xvcihjb2xvcik7CiB9CiAKIGJvb2wgZGVjb2RlKEFyZ3Vt
ZW50RGVjb2RlciogZGVjb2RlciwgUmV0YWluUHRyPE5TQ29sb3I+JiByZXN1bHQpCkBAIC0yNTks
NyArMjU5LDcgQEAgYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBSZQogfQog
I2VuZGlmCiAKLXZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2RlciwgTlNEaWN0aW9u
YXJ5ICpkaWN0aW9uYXJ5KQordm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBO
U0RpY3Rpb25hcnkgKmRpY3Rpb25hcnkpCiB7CiAgICAgLy8gRXZlbiB0aG91Z2ggTlNEaWN0aW9u
YXJ5IGlzIHRvbGwgZnJlZSBicmlkZ2VkIHdpdGggQ0ZEaWN0aW9uYXJ5UmVmLCB2YWx1ZXMgbWF5
IGJlIG5vdCwgc28gd2Ugc2hvdWxkIHN0YXkgd2l0aGluIHRoaXMgZmlsZSdzIGNvZGUuCiAKQEAg
LTI2Nyw3ICsyNjcsNyBAQCB2b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXIqIGVuY29kZXIsIE5T
CiAgICAgTlNBcnJheSAqa2V5cyA9IFtkaWN0aW9uYXJ5IGFsbEtleXNdOwogICAgIE5TQXJyYXkg
KnZhbHVlcyA9IFtkaWN0aW9uYXJ5IGFsbFZhbHVlc107CiAKLSAgICBlbmNvZGVyLT5lbmNvZGUo
c3RhdGljX2Nhc3Q8dWludDY0X3Q+KHNpemUpKTsKKyAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0
PHVpbnQ2NF90PihzaXplKTsKIAogICAgIGZvciAoTlNVSW50ZWdlciBpID0gMDsgaSA8IHNpemU7
ICsraSkgewogICAgICAgICBpZCBrZXkgPSBba2V5cyBvYmplY3RBdEluZGV4OmldOwpAQCAtMzEw
LDcgKzMxMCw3IEBAIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgUmUKIH0K
IAogI2lmIFVTRShBUFBLSVQpCi12b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXIqIGVuY29kZXIs
IE5TRm9udCAqZm9udCkKK3ZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYgZW5jb2RlciwgTlNG
b250ICpmb250KQogewogICAgIC8vIE5TRm9udCBjb3VsZCB1c2UgQ1RGb250UmVmIGNvZGUgaWYg
d2UgaGFkIGl0IGluIEFyZ3VtZW50Q29kZXJzQ0YuCiAgICAgZW5jb2RlKGVuY29kZXIsIFtbZm9u
dCBmb250RGVzY3JpcHRvcl0gZm9udEF0dHJpYnV0ZXNdKTsKQEAgLTMyOSw3ICszMjksNyBAQCBi
b29sIGRlY29kZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFJlCiB9CiAjZW5kaWYKIAotdm9p
ZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyLCBOU051bWJlciAqbnVtYmVyKQordm9p
ZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBOU051bWJlciAqbnVtYmVyKQogewog
ICAgIGVuY29kZShlbmNvZGVyLCAoQ0ZOdW1iZXJSZWYpbnVtYmVyKTsKIH0KQEAgLTM0NCw3ICsz
NDQsNyBAQCBib29sIGRlY29kZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFJlCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLXZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2RlciwgTlNT
dHJpbmcgKnN0cmluZykKK3ZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYgZW5jb2RlciwgTlNT
dHJpbmcgKnN0cmluZykKIHsKICAgICBlbmNvZGUoZW5jb2RlciwgKENGU3RyaW5nUmVmKXN0cmlu
Zyk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0F0dHJpYnV0ZWRTdHJpbmcu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9BdHRyaWJ1dGVkU3Ry
aW5nLm1tCShyZXZpc2lvbiAxMzI4NzEpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0F0
dHJpYnV0ZWRTdHJpbmcubW0JKHdvcmtpbmcgY29weSkKQEAgLTM0LDEwICszNCwxMCBAQCBuYW1l
c3BhY2UgV2ViS2l0IHsKIAogdm9pZCBBdHRyaWJ1dGVkU3RyaW5nOjplbmNvZGUoQ29yZUlQQzo6
QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewotICAgIGVuY29kZXIuZW5jb2RlKCFz
dHJpbmcpOworICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8Ym9vbD4oIXN0cmluZyk7CiAgICAg
aWYgKCFzdHJpbmcpCiAgICAgICAgIHJldHVybjsKLSAgICBDb3JlSVBDOjplbmNvZGUoJmVuY29k
ZXIsIHN0cmluZy5nZXQoKSk7CisgICAgQ29yZUlQQzo6ZW5jb2RlKGVuY29kZXIsIHN0cmluZy5n
ZXQoKSk7CiB9CiAKIGJvb2wgQXR0cmlidXRlZFN0cmluZzo6ZGVjb2RlKENvcmVJUEM6OkFyZ3Vt
ZW50RGVjb2RlciogZGVjb2RlciwgQXR0cmlidXRlZFN0cmluZyYgYXR0cmlidXRlZFN0cmluZykK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvQ29sb3JTcGFjZURhdGEubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9Db2xvclNwYWNlRGF0YS5tbQkocmV2
aXNpb24gMTMyODcxKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9Db2xvclNwYWNlRGF0
YS5tbQkod29ya2luZyBjb3B5KQpAQCAtNDQsMTQgKzQ0LDE0IEBAIHZvaWQgQ29sb3JTcGFjZURh
dGE6OmVuY29kZShDb3JlSVBDOjpBcmcKICAgICAgICAgLy8gVHJ5IHRvIGVuY29kZSB0aGUgbmFt
ZS4KICAgICAgICAgaWYgKFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbmFtZSA9IGFkb3B0Q0YoQ0dD
b2xvclNwYWNlQ29weU5hbWUoY2dDb2xvclNwYWNlLmdldCgpKSkpIHsKICAgICAgICAgICAgIGVu
Y29kZXIuZW5jb2RlRW51bShOYW1lKTsKLSAgICAgICAgICAgIENvcmVJUEM6OmVuY29kZSgmZW5j
b2RlciwgbmFtZS5nZXQoKSk7CisgICAgICAgICAgICBDb3JlSVBDOjplbmNvZGUoZW5jb2Rlciwg
bmFtZS5nZXQoKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICAv
LyBGYWlsaW5nIHRoYXQsIGp1c3QgZW5jb2RlIHRoZSBJQ0MgZGF0YS4KICAgICAgICAgaWYgKFJl
dGFpblB0cjxDRkRhdGFSZWY+IHByb2ZpbGVEYXRhID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDb3B5
SUNDUHJvZmlsZShjZ0NvbG9yU3BhY2UuZ2V0KCkpKSkgewogICAgICAgICAgICAgZW5jb2Rlci5l
bmNvZGVFbnVtKERhdGEpOwotICAgICAgICAgICAgQ29yZUlQQzo6ZW5jb2RlKCZlbmNvZGVyLCBw
cm9maWxlRGF0YS5nZXQoKSk7CisgICAgICAgICAgICBDb3JlSVBDOjplbmNvZGUoZW5jb2Rlciwg
cHJvZmlsZURhdGEuZ2V0KCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAg
fQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9LZXljaGFpbkF0dHJpYnV0ZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9LZXljaGFpbkF0dHJpYnV0
ZS5jcHAJKHJldmlzaW9uIDEzMjg3MSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvS2V5
Y2hhaW5BdHRyaWJ1dGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MSwxMCArNTEsMTAgQEAgS2V5
Y2hhaW5BdHRyaWJ1dGU6OktleWNoYWluQXR0cmlidXRlKGNvbgogCiBuYW1lc3BhY2UgQ29yZUlQ
QyB7CiAKLXZvaWQgZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciogZW5jb2RlciwgY29u
c3QgV2ViS2l0OjpLZXljaGFpbkF0dHJpYnV0ZSYgYXR0cmlidXRlKQordm9pZCBlbmNvZGUoQ29y
ZUlQQzo6QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJLaXQ6OktleWNoYWluQXR0
cmlidXRlJiBhdHRyaWJ1dGUpCiB7Ci0gICAgZW5jb2Rlci0+ZW5jb2RlKHN0YXRpY19jYXN0PHVp
bnQzMl90PihhdHRyaWJ1dGUudGFnKSk7Ci0gICAgZW5jb2Rlci0+ZW5jb2RlKHN0YXRpY19jYXN0
PGJvb2w+KGF0dHJpYnV0ZS5kYXRhKSk7CisgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50
MzJfdD4oYXR0cmlidXRlLnRhZyk7CisgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDxib29sPihh
dHRyaWJ1dGUuZGF0YSk7CiAgICAgaWYgKGF0dHJpYnV0ZS5kYXRhKQogICAgICAgICBDb3JlSVBD
OjplbmNvZGUoZW5jb2RlciwgYXR0cmlidXRlLmRhdGEuZ2V0KCkpOwogfQpJbmRleDogU291cmNl
L1dlYktpdDIvU2hhcmVkL21hYy9LZXljaGFpbkF0dHJpYnV0ZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvS2V5Y2hhaW5BdHRyaWJ1dGUuaAkocmV2aXNpb24gMTMy
ODcxKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9LZXljaGFpbkF0dHJpYnV0ZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBAIG5hbWVzcGFjZSBDb3JlSVBDIHsKIGNsYXNz
IEFyZ3VtZW50RGVjb2RlcjsKIGNsYXNzIEFyZ3VtZW50RW5jb2RlcjsKIAotdm9pZCBlbmNvZGUo
QXJndW1lbnRFbmNvZGVyKiwgY29uc3QgV2ViS2l0OjpLZXljaGFpbkF0dHJpYnV0ZSYpOwordm9p
ZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyJiwgY29uc3QgV2ViS2l0OjpLZXljaGFpbkF0dHJpYnV0
ZSYpOwogYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyKiwgV2ViS2l0OjpLZXljaGFpbkF0dHJp
YnV0ZSYpOwogCiB9IC8vIG5hbWVzcGFjZSBDb3JlSVBDCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvbWFjL0xheWVyVHJlZUNvbnRleHRNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvU2hhcmVkL21hYy9MYXllclRyZWVDb250ZXh0TWFjLm1tCShyZXZpc2lvbiAxMzI4NzEp
CisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0xheWVyVHJlZUNvbnRleHRNYWMubW0JKHdv
cmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAgTGF5ZXJUcmVlQ29udGV4dDo6fkxheWVyVHJl
ZUNvbnRleHQoKQogCiB2b2lkIExheWVyVHJlZUNvbnRleHQ6OmVuY29kZShDb3JlSVBDOjpBcmd1
bWVudEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAgZW5jb2Rlci5lbmNvZGUoY29udGV4
dElEKTsKKyAgICBlbmNvZGVyIDw8IGNvbnRleHRJRDsKIH0KIAogYm9vbCBMYXllclRyZWVDb250
ZXh0OjpkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBMYXllclRyZWVD
b250ZXh0JiByZXN1bHQpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1BsYXRmb3Jt
Q2VydGlmaWNhdGVJbmZvLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9t
YWMvUGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8ubW0JKHJldmlzaW9uIDEzMjg3MSkKKysrIFNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9tYWMvUGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8ubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTUyLDEyICs1MiwxMiBAQCBQbGF0Zm9ybUNlcnRpZmljYXRlSW5mbzo6UGxhdGZv
cm1DZXJ0aWZpCiB2b2lkIFBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvOjplbmNvZGUoQ29yZUlQQzo6
QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAgIGlmICghbV9jZXJ0aWZpY2F0
ZUNoYWluKSB7Ci0gICAgICAgIGVuY29kZXIuZW5jb2RlKGZhbHNlKTsKKyAgICAgICAgZW5jb2Rl
ciA8PCBmYWxzZTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGVuY29kZXIuZW5jb2Rl
KHRydWUpOwotICAgIENvcmVJUEM6OmVuY29kZSgmZW5jb2RlciwgbV9jZXJ0aWZpY2F0ZUNoYWlu
LmdldCgpKTsKKyAgICBlbmNvZGVyIDw8IHRydWU7CisgICAgQ29yZUlQQzo6ZW5jb2RlKGVuY29k
ZXIsIG1fY2VydGlmaWNhdGVDaGFpbi5nZXQoKSk7CiB9CiAKIGJvb2wgUGxhdGZvcm1DZXJ0aWZp
Y2F0ZUluZm86OmRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFBsYXRm
b3JtQ2VydGlmaWNhdGVJbmZvJiBjKQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9T
YW5kYm94RXh0ZW5zaW9uTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9tYWMvU2FuZGJveEV4dGVuc2lvbk1hYy5tbQkocmV2aXNpb24gMTMyODcxKQorKysgU291cmNl
L1dlYktpdDIvU2hhcmVkL21hYy9TYW5kYm94RXh0ZW5zaW9uTWFjLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC01Niw3ICs1Niw3IEBAIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZTo6fkhhbmRsZSgpCiB2
b2lkIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZTo6ZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5j
b2RlciYgZW5jb2RlcikgY29uc3QKIHsKICAgICBpZiAoIW1fc2FuZGJveEV4dGVuc2lvbikgewot
ICAgICAgICBlbmNvZGVyLmVuY29kZVZhcmlhYmxlTGVuZ3RoQnl0ZUFycmF5KENvcmVJUEM6OkRh
dGFSZWZlcmVuY2UoKSk7CisgICAgICAgIGVuY29kZXIgPDwgQ29yZUlQQzo6RGF0YVJlZmVyZW5j
ZSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC02NCw3ICs2NCw3IEBAIHZvaWQgU2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlOjplbmNvZGUoQ28KICAgICBjb25zdCBjaGFyICpzZXJpYWxp
emVkRm9ybWF0ID0gV0tTYW5kYm94RXh0ZW5zaW9uR2V0U2VyaWFsaXplZEZvcm1hdChtX3NhbmRi
b3hFeHRlbnNpb24sICZsZW5ndGgpOwogICAgIEFTU0VSVChzZXJpYWxpemVkRm9ybWF0KTsKIAot
ICAgIGVuY29kZXIuZW5jb2RlVmFyaWFibGVMZW5ndGhCeXRlQXJyYXkoQ29yZUlQQzo6RGF0YVJl
ZmVyZW5jZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihzZXJpYWxpemVkRm9ybWF0
KSwgbGVuZ3RoKSk7CisgICAgZW5jb2RlciA8PCBDb3JlSVBDOjpEYXRhUmVmZXJlbmNlKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHNlcmlhbGl6ZWRGb3JtYXQpLCBsZW5ndGgpOwog
CiAgICAgLy8gRW5jb2Rpbmcgd2lsbCBkZXN0cm95IHRoZSBzYW5kYm94IGV4dGVuc2lvbiBsb2Nh
bGx5LgogICAgIFdLU2FuZGJveEV4dGVuc2lvbkRlc3Ryb3kobV9zYW5kYm94RXh0ZW5zaW9uKTsK
QEAgLTc2LDcgKzc2LDcgQEAgYm9vbCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU6OmRlY29kZShD
bwogICAgIEFTU0VSVCghcmVzdWx0Lm1fc2FuZGJveEV4dGVuc2lvbik7CiAKICAgICBDb3JlSVBD
OjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2U7Ci0gICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVW
YXJpYWJsZUxlbmd0aEJ5dGVBcnJheShkYXRhUmVmZXJlbmNlKSkKKyAgICBpZiAoIWRlY29kZXIt
PmRlY29kZShkYXRhUmVmZXJlbmNlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYg
KGRhdGFSZWZlcmVuY2UuaXNFbXB0eSgpKQpAQCAtMTI4LDkgKzEyOCw5IEBAIHNpemVfdCBTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6c2kKIAogdm9pZCBTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGVBcnJheTo6ZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciYgZW5jb2RlcikgY29u
c3QKIHsKLSAgICBlbmNvZGVyLmVuY29kZShzdGF0aWNfY2FzdDx1aW50NjRfdD4oc2l6ZSgpKSk7
CisgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oc2l6ZSgpKTsKICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG1fc2l6ZTsgKytpKQotICAgICAgICBlbmNvZGVyLmVuY29kZSht
X2RhdGFbaV0pOworICAgICAgICBlbmNvZGVyIDw8IG1fZGF0YVtpXTsKICAgICAKIH0KIApAQCAt
MTQwLDkgKzE0MCwxMCBAQCBib29sIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5OjpkZWNv
CiAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVVSW50NjQoc2l6ZSkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICBoYW5kbGVzLmFsbG9jYXRlKHNpemUpOwotICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgc2l6ZTsgaSsrKQorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7
CiAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGhhbmRsZXNbaV0pKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKIH0KIApJbmRleDogU291cmNl
L1dlYktpdDIvU2hhcmVkL21hYy9TZWNJdGVtUmVxdWVzdERhdGEuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvU2VjSXRlbVJlcXVlc3REYXRhLmNwcAkocmV2aXNp
b24gMTMyODcxKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9TZWNJdGVtUmVxdWVzdERh
dGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MywxMSArNTMsMTEgQEAgdm9pZCBTZWNJdGVtUmVx
dWVzdERhdGE6OmVuY29kZShDb3JlSVBDOgogewogICAgIGVuY29kZXIuZW5jb2RlRW51bShtX3R5
cGUpOwogCi0gICAgQ29yZUlQQzo6ZW5jb2RlKCZlbmNvZGVyLCBtX3F1ZXJ5RGljdGlvbmFyeS5n
ZXQoKSk7CisgICAgQ29yZUlQQzo6ZW5jb2RlKGVuY29kZXIsIG1fcXVlcnlEaWN0aW9uYXJ5Lmdl
dCgpKTsKIAotICAgIGVuY29kZXIuZW5jb2RlKHN0YXRpY19jYXN0PGJvb2w+KG1fYXR0cmlidXRl
c1RvTWF0Y2gpKTsKKyAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PGJvb2w+KG1fYXR0cmlidXRl
c1RvTWF0Y2gpOwogICAgIGlmIChtX2F0dHJpYnV0ZXNUb01hdGNoKQotICAgICAgICBDb3JlSVBD
OjplbmNvZGUoJmVuY29kZXIsIG1fYXR0cmlidXRlc1RvTWF0Y2guZ2V0KCkpOworICAgICAgICBD
b3JlSVBDOjplbmNvZGUoZW5jb2RlciwgbV9hdHRyaWJ1dGVzVG9NYXRjaC5nZXQoKSk7CiB9CiAK
IGJvb2wgU2VjSXRlbVJlcXVlc3REYXRhOjpkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVy
KiBkZWNvZGVyLCBTZWNJdGVtUmVxdWVzdERhdGEmIHNlY0l0ZW1SZXF1ZXN0RGF0YSkKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvU2VjSXRlbVJlc3BvbnNlRGF0YS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9TZWNJdGVtUmVzcG9uc2VEYXRhLmNw
cAkocmV2aXNpb24gMTMyODcxKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9TZWNJdGVt
UmVzcG9uc2VEYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsMTAgKzQzLDEwIEBAIFNlY0l0
ZW1SZXNwb25zZURhdGE6OlNlY0l0ZW1SZXNwb25zZURhdGEKIAogdm9pZCBTZWNJdGVtUmVzcG9u
c2VEYXRhOjplbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAog
ewotICAgIGVuY29kZXIuZW5jb2RlKHN0YXRpY19jYXN0PGludDY0X3Q+KG1fcmVzdWx0Q29kZSkp
OwotICAgIGVuY29kZXIuZW5jb2RlKHN0YXRpY19jYXN0PGJvb2w+KG1fcmVzdWx0T2JqZWN0Lmdl
dCgpKSk7CisgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDxpbnQ2NF90PihtX3Jlc3VsdENvZGUp
OworICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8Ym9vbD4obV9yZXN1bHRPYmplY3QuZ2V0KCkp
OwogICAgIGlmIChtX3Jlc3VsdE9iamVjdCkKLSAgICAgICAgQ29yZUlQQzo6ZW5jb2RlKCZlbmNv
ZGVyLCBtX3Jlc3VsdE9iamVjdC5nZXQoKSk7CisgICAgICAgIENvcmVJUEM6OmVuY29kZShlbmNv
ZGVyLCBtX3Jlc3VsdE9iamVjdC5nZXQoKSk7CiB9CiAKIGJvb2wgU2VjSXRlbVJlc3BvbnNlRGF0
YTo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgU2VjSXRlbVJlc3Bv
bnNlRGF0YSYgc2VjSXRlbVJlc3BvbnNlRGF0YSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9tYWMvU2VjS2V5Y2hhaW5JdGVtUmVxdWVzdERhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9tYWMvU2VjS2V5Y2hhaW5JdGVtUmVxdWVzdERhdGEuY3BwCShyZXZp
c2lvbiAxMzI4NzEpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1NlY0tleWNoYWluSXRl
bVJlcXVlc3REYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI3LDE2ICsxMjcsMTYgQEAgdm9p
ZCBTZWNLZXljaGFpbkl0ZW1SZXF1ZXN0RGF0YTo6ZW5jb2RlKAogewogICAgIGVuY29kZXIuZW5j
b2RlRW51bShtX3R5cGUpOwogCi0gICAgZW5jb2Rlci5lbmNvZGUoc3RhdGljX2Nhc3Q8Ym9vbD4o
bV9rZXljaGFpbkl0ZW0pKTsKKyAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PGJvb2w+KG1fa2V5
Y2hhaW5JdGVtKTsKICAgICBpZiAobV9rZXljaGFpbkl0ZW0pCi0gICAgICAgIENvcmVJUEM6OmVu
Y29kZSgmZW5jb2RlciwgbV9rZXljaGFpbkl0ZW0uZ2V0KCkpOworICAgICAgICBDb3JlSVBDOjpl
bmNvZGUoZW5jb2RlciwgbV9rZXljaGFpbkl0ZW0uZ2V0KCkpOwogCi0gICAgZW5jb2Rlci5lbmNv
ZGUoc3RhdGljX2Nhc3Q8aW50MzJfdD4obV9rZXljaGFpbkF0dHJpYnV0ZXMuc2l6ZSgpKSk7Cisg
ICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDxpbnQzMl90PihtX2tleWNoYWluQXR0cmlidXRlcy5z
aXplKCkpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwLCBjb3VudCA9IG1fa2V5Y2hhaW5BdHRyaWJ1
dGVzLnNpemUoKTsgaSA8IGNvdW50OyArK2kpCi0gICAgICAgIENvcmVJUEM6OmVuY29kZSgmZW5j
b2RlciwgbV9rZXljaGFpbkF0dHJpYnV0ZXNbaV0pOworICAgICAgICBDb3JlSVBDOjplbmNvZGUo
ZW5jb2RlciwgbV9rZXljaGFpbkF0dHJpYnV0ZXNbaV0pOwogICAgIAotICAgIGVuY29kZXIuZW5j
b2RlKHN0YXRpY19jYXN0PHVpbnQ2NF90PihtX2l0ZW1DbGFzcykpOwotICAgIG1fZGF0YVJlZmVy
ZW5jZS5lbmNvZGUoZW5jb2Rlcik7CisgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50NjRf
dD4obV9pdGVtQ2xhc3MpOworICAgIGVuY29kZXIgPDwgbV9kYXRhUmVmZXJlbmNlOwogfQogCiBi
b29sIFNlY0tleWNoYWluSXRlbVJlcXVlc3REYXRhOjpkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnRE
ZWNvZGVyKiBkZWNvZGVyLCBTZWNLZXljaGFpbkl0ZW1SZXF1ZXN0RGF0YSYgc2VjS2V5Y2hhaW5J
dGVtUmVxdWVzdERhdGEpCkBAIC0xNzEsOSArMTcxLDkgQEAgYm9vbCBTZWNLZXljaGFpbkl0ZW1S
ZXF1ZXN0RGF0YTo6ZGVjb2RlKAogICAgIAogICAgIHNlY0tleWNoYWluSXRlbVJlcXVlc3REYXRh
Lm1faXRlbUNsYXNzID0gc3RhdGljX2Nhc3Q8U2VjSXRlbUNsYXNzPihpdGVtQ2xhc3MpOwogCi0g
ICAgaWYgKCFDb3JlSVBDOjpEYXRhUmVmZXJlbmNlOjpkZWNvZGUoZGVjb2Rlciwgc2VjS2V5Y2hh
aW5JdGVtUmVxdWVzdERhdGEubV9kYXRhUmVmZXJlbmNlKSkKKyAgICBpZiAoZGVjb2Rlci0+ZGVj
b2RlKHNlY0tleWNoYWluSXRlbVJlcXVlc3REYXRhLm1fZGF0YVJlZmVyZW5jZSkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgCisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApJbmRleDog
U291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9TZWNLZXljaGFpbkl0ZW1SZXNwb25zZURhdGEuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvU2VjS2V5Y2hhaW5JdGVt
UmVzcG9uc2VEYXRhLmNwcAkocmV2aXNpb24gMTMyODcxKQorKysgU291cmNlL1dlYktpdDIvU2hh
cmVkL21hYy9TZWNLZXljaGFpbkl0ZW1SZXNwb25zZURhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02NSwxOSArNjUsMTkgQEAgU2VjS2V5Y2hhaW5JdGVtUmVzcG9uc2VEYXRhOjpTZWNLZXljaGFp
bgogCiB2b2lkIFNlY0tleWNoYWluSXRlbVJlc3BvbnNlRGF0YTo6ZW5jb2RlKENvcmVJUEM6OkFy
Z3VtZW50RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBlbmNvZGVyLmVuY29kZShzdGF0
aWNfY2FzdDxpbnQ2NF90PihtX3Jlc3VsdENvZGUpKTsKLSAgICBlbmNvZGVyLmVuY29kZShzdGF0
aWNfY2FzdDx1aW50MzJfdD4obV9pdGVtQ2xhc3MpKTsKLSAgICBlbmNvZGVyLmVuY29kZShzdGF0
aWNfY2FzdDx1aW50MzJfdD4obV9hdHRyaWJ1dGVzLnNpemUoKSkpOworICAgIGVuY29kZXIgPDwg
c3RhdGljX2Nhc3Q8aW50NjRfdD4obV9yZXN1bHRDb2RlKTsKKyAgICBlbmNvZGVyIDw8IHN0YXRp
Y19jYXN0PHVpbnQzMl90PihtX2l0ZW1DbGFzcyk7CisgICAgZW5jb2RlciA8PCBzdGF0aWNfY2Fz
dDx1aW50MzJfdD4obV9hdHRyaWJ1dGVzLnNpemUoKSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDAs
IGNvdW50ID0gbV9hdHRyaWJ1dGVzLnNpemUoKTsgaSA8IGNvdW50OyArK2kpCi0gICAgICAgIENv
cmVJUEM6OmVuY29kZSgmZW5jb2RlciwgbV9hdHRyaWJ1dGVzW2ldKTsKKyAgICAgICAgQ29yZUlQ
Qzo6ZW5jb2RlKGVuY29kZXIsIG1fYXR0cmlidXRlc1tpXSk7CiAKLSAgICBlbmNvZGVyLmVuY29k
ZShzdGF0aWNfY2FzdDxib29sPihtX2RhdGEpKTsKKyAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0
PGJvb2w+KG1fZGF0YSk7CiAgICAgaWYgKG1fZGF0YSkKLSAgICAgICAgQ29yZUlQQzo6ZW5jb2Rl
KCZlbmNvZGVyLCBtX2RhdGEuZ2V0KCkpOworICAgICAgICBDb3JlSVBDOjplbmNvZGUoZW5jb2Rl
ciwgbV9kYXRhLmdldCgpKTsKIAotICAgIGVuY29kZXIuZW5jb2RlKHN0YXRpY19jYXN0PGJvb2w+
KG1fa2V5Y2hhaW5JdGVtKSk7CisgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDxib29sPihtX2tl
eWNoYWluSXRlbSk7CiAgICAgaWYgKG1fa2V5Y2hhaW5JdGVtKQotICAgICAgICBDb3JlSVBDOjpl
bmNvZGUoJmVuY29kZXIsIG1fa2V5Y2hhaW5JdGVtLmdldCgpKTsKKyAgICAgICAgQ29yZUlQQzo6
ZW5jb2RlKGVuY29kZXIsIG1fa2V5Y2hhaW5JdGVtLmdldCgpKTsKIH0KIAogYm9vbCBTZWNLZXlj
aGFpbkl0ZW1SZXNwb25zZURhdGE6OmRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGRl
Y29kZXIsIFNlY0tleWNoYWluSXRlbVJlc3BvbnNlRGF0YSYgc2VjS2V5Y2hhaW5JdGVtUmVzcG9u
c2VEYXRhKQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRD
b2RlcnNNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9XZWJD
b3JlQXJndW1lbnRDb2RlcnNNYWMubW0JKHJldmlzaW9uIDEzMjg3MSkKKysrIFNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC00Nyw3ICs0Nyw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+Ojpl
bmMKICAgICAgICAgcmV0dXJuOwogCiAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gZGlj
dGlvbmFyeShBZG9wdENGLCBXS05TVVJMUmVxdWVzdENyZWF0ZVNlcmlhbGl6YWJsZVJlcHJlc2Vu
dGF0aW9uKHJlc291cmNlUmVxdWVzdC5uc1VSTFJlcXVlc3QoKSwgQ29yZUlQQzo6dG9rZW5OdWxs
VHlwZVJlZigpKSk7Ci0gICAgQ29yZUlQQzo6ZW5jb2RlKGVuY29kZXIsIGRpY3Rpb25hcnkuZ2V0
KCkpOworICAgIENvcmVJUEM6OmVuY29kZSgqZW5jb2RlciwgZGljdGlvbmFyeS5nZXQoKSk7CiB9
CiAKIGJvb2wgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+OjpkZWNvZGVQbGF0Zm9ybURh
dGEoQXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVx
dWVzdCkKQEAgLTgyLDcgKzgyLDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVzcG9u
c2U+OjplbgogICAgICAgICByZXR1cm47CiAKICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVm
PiBkaWN0aW9uYXJ5KEFkb3B0Q0YsIFdLTlNVUkxSZXNwb25zZUNyZWF0ZVNlcmlhbGl6YWJsZVJl
cHJlc2VudGF0aW9uKHJlc291cmNlUmVzcG9uc2UubnNVUkxSZXNwb25zZSgpLCBDb3JlSVBDOjp0
b2tlbk51bGxUeXBlUmVmKCkpKTsKLSAgICBDb3JlSVBDOjplbmNvZGUoZW5jb2RlciwgZGljdGlv
bmFyeS5nZXQoKSk7CisgICAgQ29yZUlQQzo6ZW5jb2RlKCplbmNvZGVyLCBkaWN0aW9uYXJ5Lmdl
dCgpKTsKIH0KIAogYm9vbCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVzcG9uc2U+OjpkZWNvZGVQ
bGF0Zm9ybURhdGEoQXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNvdXJjZVJlc3BvbnNlKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24gMTMyODcxKQorKysg
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1NCw3IEBAIFdlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OldlYkNvbm5lY3Rpb24KIAogdm9pZCBXZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjplbmNvZGVN
ZXNzYWdlQm9keShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXImIGVuY29kZXIsIEFQSU9iamVjdCog
bWVzc2FnZUJvZHkpCiB7Ci0gICAgZW5jb2Rlci5lbmNvZGUoV2ViQ29udGV4dFVzZXJNZXNzYWdl
RW5jb2RlcihtZXNzYWdlQm9keSkpOworICAgIGVuY29kZXIgPDwgV2ViQ29udGV4dFVzZXJNZXNz
YWdlRW5jb2RlcihtZXNzYWdlQm9keSk7CiB9CiAKIGJvb2wgV2ViQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6ZGVjb2RlTWVzc2FnZUJvZHkoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyJiBkZWNvZGVy
LCBSZWZQdHI8QVBJT2JqZWN0PiYgbWVzc2FnZUJvZHkpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViQ29udGV4dFVzZXJNZXNzYWdlQ29kZXJzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHRVc2VyTWVzc2FnZUNvZGVycy5oCShyZXZp
c2lvbiAxMzI4NzEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dFVzZXJN
ZXNzYWdlQ29kZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDE3ICs1NSwxNyBAQCBwdWJsaWM6
CiAgICAgICAgIHN3aXRjaCAodHlwZSkgewogICAgICAgICBjYXNlIEFQSU9iamVjdDo6VHlwZVBh
Z2U6IHsKICAgICAgICAgICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IHN0YXRpY19jYXN0PFdlYlBh
Z2VQcm94eSo+KG1fcm9vdCk7Ci0gICAgICAgICAgICBlbmNvZGVyLmVuY29kZShwYWdlLT5wYWdl
SUQoKSk7CisgICAgICAgICAgICBlbmNvZGVyIDw8IHBhZ2UtPnBhZ2VJRCgpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBBUElPYmplY3Q6OlR5cGVGcmFtZTog
ewogICAgICAgICAgICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBzdGF0aWNfY2FzdDxXZWJGcmFt
ZVByb3h5Kj4obV9yb290KTsKLSAgICAgICAgICAgIGVuY29kZXIuZW5jb2RlKGZyYW1lLT5mcmFt
ZUlEKCkpOworICAgICAgICAgICAgZW5jb2RlciA8PCBmcmFtZS0+ZnJhbWVJRCgpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBBUElPYmplY3Q6OlR5cGVQYWdl
R3JvdXA6IHsKICAgICAgICAgICAgIFdlYlBhZ2VHcm91cCogcGFnZUdyb3VwID0gc3RhdGljX2Nh
c3Q8V2ViUGFnZUdyb3VwKj4obV9yb290KTsKLSAgICAgICAgICAgIGVuY29kZXIuZW5jb2RlKHBh
Z2VHcm91cC0+ZGF0YSgpKTsKKyAgICAgICAgICAgIGVuY29kZXIgPDwgcGFnZUdyb3VwLT5kYXRh
KCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBkZWZhdWx0OgpJbmRl
eDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb25uZWN0aW9uVG9VSVByb2Nlc3MuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29ubmVjdGlvblRv
VUlQcm9jZXNzLmNwcAkocmV2aXNpb24gMTMyODcxKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb25uZWN0aW9uVG9VSVByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3
ICs1MSw3IEBAIFdlYkNvbm5lY3Rpb25Ub1VJUHJvY2Vzczo6V2ViQ29ubmVjdGlvblQKIAogdm9p
ZCBXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3M6OmVuY29kZU1lc3NhZ2VCb2R5KENvcmVJUEM6OkFy
Z3VtZW50RW5jb2RlciYgZW5jb2RlciwgQVBJT2JqZWN0KiBtZXNzYWdlQm9keSkKIHsKLSAgICBl
bmNvZGVyLmVuY29kZShJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2RlcihtZXNzYWdlQm9k
eSkpOworICAgIGVuY29kZXIgPDwgSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIobWVz
c2FnZUJvZHkpOwogfQogCiBib29sIFdlYkNvbm5lY3Rpb25Ub1VJUHJvY2Vzczo6ZGVjb2RlTWVz
c2FnZUJvZHkoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8QVBJT2Jq
ZWN0PiYgbWVzc2FnZUJvZHkpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VDb2RlcnMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
VXNlck1lc3NhZ2VDb2RlcnMuaAkocmV2aXNpb24gMTMyODcxKQorKysgU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlQ29kZXJz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTU4LDE3ICs1OCwxNyBAQCBwdWJsaWM6CiAgICAgICAgIHN3
aXRjaCAodHlwZSkgewogICAgICAgICBjYXNlIEFQSU9iamVjdDo6VHlwZUJ1bmRsZVBhZ2U6IHsK
ICAgICAgICAgICAgIFdlYlBhZ2UqIHBhZ2UgPSBzdGF0aWNfY2FzdDxXZWJQYWdlKj4obV9yb290
KTsKLSAgICAgICAgICAgIGVuY29kZXIuZW5jb2RlKHBhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAg
ICAgIGVuY29kZXIgPDwgcGFnZS0+cGFnZUlEKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogICAgICAgICBjYXNlIEFQSU9iamVjdDo6VHlwZUJ1bmRsZUZyYW1lOiB7CiAgICAgICAg
ICAgICBXZWJGcmFtZSogZnJhbWUgPSBzdGF0aWNfY2FzdDxXZWJGcmFtZSo+KG1fcm9vdCk7Ci0g
ICAgICAgICAgICBlbmNvZGVyLmVuY29kZShmcmFtZS0+ZnJhbWVJRCgpKTsKKyAgICAgICAgICAg
IGVuY29kZXIgPDwgZnJhbWUtPmZyYW1lSUQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAgICAgICAgIGNhc2UgQVBJT2JqZWN0OjpUeXBlQnVuZGxlUGFnZUdyb3VwOiB7CiAgICAg
ICAgICAgICBXZWJQYWdlR3JvdXBQcm94eSogcGFnZUdyb3VwID0gc3RhdGljX2Nhc3Q8V2ViUGFn
ZUdyb3VwUHJveHkqPihtX3Jvb3QpOwotICAgICAgICAgICAgZW5jb2Rlci5lbmNvZGUocGFnZUdy
b3VwLT5wYWdlR3JvdXBJRCgpKTsKKyAgICAgICAgICAgIGVuY29kZXIgPDwgcGFnZUdyb3VwLT5w
YWdlR3JvdXBJRCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgZGVm
YXVsdDoKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4u
Y3BwCShyZXZpc2lvbiAxMzI4NzEpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsMTIgKzM0LDEyIEBAIG5hbWVzcGFj
ZSBXZWJLaXQgewogCiB2b2lkIFBsdWdpbjo6UGFyYW1ldGVyczo6ZW5jb2RlKENvcmVJUEM6OkFy
Z3VtZW50RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBlbmNvZGVyLmVuY29kZSh1cmwu
c3RyaW5nKCkpOwotICAgIGVuY29kZXIuZW5jb2RlKG5hbWVzKTsKLSAgICBlbmNvZGVyLmVuY29k
ZSh2YWx1ZXMpOwotICAgIGVuY29kZXIuZW5jb2RlKG1pbWVUeXBlKTsKLSAgICBlbmNvZGVyLmVu
Y29kZShpc0Z1bGxGcmFtZVBsdWdpbik7Ci0gICAgZW5jb2Rlci5lbmNvZGUoc2hvdWxkVXNlTWFu
dWFsTG9hZGVyKTsKKyAgICBlbmNvZGVyIDw8IHVybC5zdHJpbmcoKTsKKyAgICBlbmNvZGVyIDw8
IG5hbWVzOworICAgIGVuY29kZXIgPDwgdmFsdWVzOworICAgIGVuY29kZXIgPDwgbWltZVR5cGU7
CisgICAgZW5jb2RlciA8PCBpc0Z1bGxGcmFtZVBsdWdpbjsKKyAgICBlbmNvZGVyIDw8IHNob3Vs
ZFVzZU1hbnVhbExvYWRlcjsKICNpZiBQTEFURk9STShNQUMpCiAgICAgZW5jb2Rlci5lbmNvZGVF
bnVtKGxheWVySG9zdGluZ01vZGUpOwogI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171483</attachid>
            <date>2012-10-30 10:43:04 -0700</date>
            <delta_ts>2012-10-30 11:04:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100725-20121030104130.patch</filename>
            <type>text/plain</type>
            <size>85153</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzMjg3MSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0MyBAQAorMjAxMi0xMC0yOSAgU2FtIFdl
aW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIFN3aXRjaCBtb3JlIGNsYXNzIHRvIHVz
ZSB0aGUgbmV3IDw8IGZvcm0gb2YgZW5jb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA3MjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAtIFN3aXRjaGVzIG1hbnkgdXNlcyBvZiBlbmNvZGVyLmVuY29k
ZShmb28pIHRvIGVuY29kZXIgPDwgZm9vLgorICAgICAgICAtIFN3aXRjaGVzIGEgZmV3IHBsYWNl
cyB0byB0YWtlIGFuIEFyZ3VtZW50RW5jb2RlciYgcmF0aGVyIHRoYW4gYW4gQXJndW1lbnRFbmNv
ZGVyKi4KKyAgICAgICAgLSBTd2l0Y2hlcyBhIGZldyBwbGFjZXMgYXdheSBmcm9tIHVzaW5nIGVu
Y29kZXIuZW5jb2RlVmFyaWFibGVMZW5ndGhCeXRlQXJyYXkoZm9vKSB0bworICAgICAgICAgIHVz
aW5nIGVuY29kZXIgPDwgQ29yZUlQQzo6RGF0YVJlZmVyZW5jZShmb28pLgorCisgICAgICAgICog
UGxhdGZvcm0vQ29yZUlQQy9IYW5kbGVNZXNzYWdlLmg6CisgICAgICAgIChDb3JlSVBDOjpoYW5k
bGVNZXNzYWdlKToKKyAgICAgICAgKENvcmVJUEM6OmhhbmRsZU1lc3NhZ2VWYXJpYWRpYyk6Cisg
ICAgICAgICogUGxhdGZvcm0vQ29yZUlQQy9TdHJpbmdSZWZlcmVuY2UuY3BwOgorICAgICAgICAo
Q29yZUlQQzo6U3RyaW5nUmVmZXJlbmNlOjplbmNvZGUpOgorICAgICAgICAoQ29yZUlQQzo6U3Ry
aW5nUmVmZXJlbmNlOjpkZWNvZGUpOgorICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvbWFjL01h
Y2hQb3J0Lmg6CisgICAgICAgIChDb3JlSVBDOjpNYWNoUG9ydDo6ZW5jb2RlKToKKyAgICAgICAg
KiBQbGF0Zm9ybS9tYWMvU2hhcmVkTWVtb3J5TWFjLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hh
cmVkTWVtb3J5OjpIYW5kbGU6OmVuY29kZSk6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9QbHVn
aW5DcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5DcmVhdGlv
blBhcmFtZXRlcnM6OmVuY29kZSk6CisgICAgICAgICogU2hhcmVkL0RpY3Rpb25hcnlQb3B1cElu
Zm8uY3BwOgorICAgICAgICAoV2ViS2l0OjpEaWN0aW9uYXJ5UG9wdXBJbmZvOjplbmNvZGUpOgor
ICAgICAgICAqIFNoYXJlZC9FZGl0b3JTdGF0ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkVkaXRv
clN0YXRlOjplbmNvZGUpOgorICAgICAgICAqIFNoYXJlZC9Gb250SW5mby5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkZvbnRJbmZvOjplbmNvZGUpOgorICAgICAgICAqIFNoYXJlZC9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSk6CisgICAgICAgICogU2hhcmVk
L09yaWdpbkFuZERhdGFiYXNlcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdpbkFuZERhdGFi
YXNlczo6ZW5jb2RlKToKKyAgICAgICAgKiBTaGFyZWQvUGxhdGZvcm1Qb3B1cE1lbnVEYXRhLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1Qb3B1cE1lbnVEYXRhOjplbmNvZGUpOgorICAg
ICAgICAqIFNoYXJlZC9QbHVnaW5zL05QSWRlbnRpZmllckRhdGEuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpOUElkZW50aWZpZXJEYXRhOjplbmNvZGUpOgorICAgICAgICAqIFNoYXJlZC9QbHVnaW5z
L05QVmFyaWFudERhdGEuY3BwOgorICAgICAgICAoV2ViS2l0OjpOUFZhcmlhbnREYXRhOjplbmNv
ZGUpOgorICAgICAgICAqIFNoYXJlZC9QbHVnaW5zL1BsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzOjplbmNvZGUpOgorICAgICAgICAqIFNoYXJlZC9QcmludEluZm8uY3BwOgorICAgICAgICAo
V2ViS2l0OjpQcmludEluZm86OmVuY29kZSk6CisgICAgICAgICogU2hhcmVkL1NlY3VyaXR5T3Jp
Z2luRGF0YS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNlY3VyaXR5T3JpZ2luRGF0YTo6ZW5jb2Rl
KToKKyAgICAgICAgKiBTaGFyZWQvU2Vzc2lvblN0YXRlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
U2Vzc2lvblN0YXRlOjplbmNvZGUpOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVCaXRtYXAu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkhhbmRsZTo6ZW5jb2RlKToK
KyAgICAgICAgKiBTaGFyZWQvU2hhcmVkV29ya2VyUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZFdvcmtlclByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnM6OmVuY29kZSk6CisgICAgICAgICogU2hhcmVkL1N0YXRpc3RpY3NEYXRhLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6U3RhdGlzdGljc0RhdGE6OmVuY29kZSk6CisgICAgICAgICogU2hhcmVkL1N0
cmluZ1BhaXJWZWN0b3IuaDoKKyAgICAgICAgKFdlYktpdDo6U3RyaW5nUGFpclZlY3Rvcjo6ZW5j
b2RlKToKKyAgICAgICAgKiBTaGFyZWQvVXBkYXRlSW5mby5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlVwZGF0ZUluZm86OmVuY29kZSk6CisgICAgICAgICogU2hhcmVkL1VzZXJNZXNzYWdlQ29kZXJz
Lmg6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZXNzYWdlRW5jb2Rlcjo6YmFzZUVuY29kZSk6Cisg
ICAgICAgICogU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjplbmNvZGUpOgorICAgICAgICAqIFNoYXJlZC9X
ZWJDb250ZXh0TWVudUl0ZW1EYXRhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1l
bnVJdGVtRGF0YTo6ZW5jb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViRXZlbnQuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJFdmVudDo6ZW5jb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViR2Vz
dHVyZUV2ZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViR2VzdHVyZUV2ZW50OjplbmNvZGUp
OgorICAgICAgICAqIFNoYXJlZC9XZWJIaXRUZXN0UmVzdWx0LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViSGl0VGVzdFJlc3VsdDo6RGF0YTo6ZW5jb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2Vi
S2V5Ym9hcmRFdmVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYktleWJvYXJkRXZlbnQ6OmVu
Y29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYk1vdXNlRXZlbnQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJNb3VzZUV2ZW50OjplbmNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJOYXZpZ2F0
aW9uRGF0YVN0b3JlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYk5hdmlnYXRpb25EYXRhU3RvcmU6
OmVuY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUpOgor
ICAgICAgICAqIFNoYXJlZC9XZWJQYWdlR3JvdXBEYXRhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZUdyb3VwRGF0YTo6ZW5jb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViUGxhdGZvcm1U
b3VjaFBvaW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1Ub3VjaFBvaW50Ojpl
bmNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJQb3B1cEl0ZW0uY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQb3B1cEl0ZW06OmVuY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYlByZWZlcmVu
Y2VzU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjplbmNv
ZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKToK
KyAgICAgICAgKiBTaGFyZWQvV2ViVG91Y2hFdmVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlRvdWNoRXZlbnQ6OmVuY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYldoZWVsRXZlbnQuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJXaGVlbEV2ZW50OjplbmNvZGUpOgorICAgICAgICAqIFNo
YXJlZC9jZi9Bcmd1bWVudENvZGVyc0NGLmNwcDoKKyAgICAgICAgKENvcmVJUEM6OmVuY29kZSk6
CisgICAgICAgIChDb3JlSVBDOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9jZi9Bcmd1bWVu
dENvZGVyc0NGLmg6CisgICAgICAgIChDb3JlSVBDKToKKyAgICAgICAgKiBTaGFyZWQvbWFjL0Fy
Z3VtZW50Q29kZXJzTWFjLmg6CisgICAgICAgIChDb3JlSVBDKToKKyAgICAgICAgKiBTaGFyZWQv
bWFjL0FyZ3VtZW50Q29kZXJzTWFjLm1tOgorICAgICAgICAoQ29yZUlQQzo6ZW5jb2RlKToKKyAg
ICAgICAgKiBTaGFyZWQvbWFjL0F0dHJpYnV0ZWRTdHJpbmcubW06CisgICAgICAgIChXZWJLaXQ6
OkF0dHJpYnV0ZWRTdHJpbmc6OmVuY29kZSk6CisgICAgICAgICogU2hhcmVkL21hYy9Db2xvclNw
YWNlRGF0YS5tbToKKyAgICAgICAgKFdlYktpdDo6Q29sb3JTcGFjZURhdGE6OmVuY29kZSk6Cisg
ICAgICAgICogU2hhcmVkL21hYy9LZXljaGFpbkF0dHJpYnV0ZS5jcHA6CisgICAgICAgIChDb3Jl
SVBDOjplbmNvZGUpOgorICAgICAgICAqIFNoYXJlZC9tYWMvS2V5Y2hhaW5BdHRyaWJ1dGUuaDoK
KyAgICAgICAgKENvcmVJUEMpOgorICAgICAgICAqIFNoYXJlZC9tYWMvTGF5ZXJUcmVlQ29udGV4
dE1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlQ29udGV4dDo6ZW5jb2RlKToKKyAg
ICAgICAgKiBTaGFyZWQvbWFjL1BsYXRmb3JtQ2VydGlmaWNhdGVJbmZvLm1tOgorICAgICAgICAo
V2ViS2l0OjpQbGF0Zm9ybUNlcnRpZmljYXRlSW5mbzo6ZW5jb2RlKToKKyAgICAgICAgKiBTaGFy
ZWQvbWFjL1NhbmRib3hFeHRlbnNpb25NYWMubW06CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hF
eHRlbnNpb246OkhhbmRsZTo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlOjpkZWNvZGUpOgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGVBcnJheTo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlQXJyYXk6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL21hYy9TZWNJdGVtUmVx
dWVzdERhdGEuY3BwOgorICAgICAgICAoV2ViS2l0OjpTZWNJdGVtUmVxdWVzdERhdGE6OmVuY29k
ZSk6CisgICAgICAgICogU2hhcmVkL21hYy9TZWNJdGVtUmVzcG9uc2VEYXRhLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6U2VjSXRlbVJlc3BvbnNlRGF0YTo6ZW5jb2RlKToKKyAgICAgICAgKiBTaGFy
ZWQvbWFjL1NlY0tleWNoYWluSXRlbVJlcXVlc3REYXRhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
U2VjS2V5Y2hhaW5JdGVtUmVxdWVzdERhdGE6OmVuY29kZSk6CisgICAgICAgIChXZWJLaXQ6OlNl
Y0tleWNoYWluSXRlbVJlcXVlc3REYXRhOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9tYWMv
U2VjS2V5Y2hhaW5JdGVtUmVzcG9uc2VEYXRhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2VjS2V5
Y2hhaW5JdGVtUmVzcG9uc2VEYXRhOjplbmNvZGUpOgorICAgICAgICAqIFNoYXJlZC9tYWMvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tOgorICAgICAgICAoQ29yZUlQQzo6OjplbmNvZGVQbGF0
Zm9ybURhdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZW5jb2Rl
TWVzc2FnZUJvZHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0VXNlck1lc3NhZ2VD
b2RlcnMuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dFVzZXJNZXNzYWdlRW5jb2Rlcjo6
ZW5jb2RlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlVXNlck1lc3NhZ2VDb2RlcnMuaDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVV
c2VyTWVzc2FnZUVuY29kZXI6OmVuY29kZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpbjo6UGFyYW1ldGVyczo6ZW5jb2Rl
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvbm5lY3Rpb25Ub1VJUHJvY2Vzcy5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkNvbm5lY3Rpb25Ub1VJUHJvY2Vzczo6ZW5jb2RlTWVzc2FnZUJv
ZHkpOgorCiAyMDEyLTEwLTI5ICBTZXJnaW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjEzMDc1NSk6IEFsbCBXZWJLaXQyIHVuaXQgdGVz
dHMgYXJlIGZhaWxpbmcgaW4gV2ViS2l0MiBib3QKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtL0NvcmVJUEMvSGFuZGxlTWVzc2FnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtL0NvcmVJUEMvSGFuZGxlTWVzc2FnZS5oCShyZXZpc2lvbiAxMzI4NzEpCisrKyBT
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0hhbmRsZU1lc3NhZ2UuaAkod29ya2luZyBj
b3B5KQpAQCAtMzMxLDcgKzMzMSw3IEBAIHZvaWQgaGFuZGxlTWVzc2FnZShNZXNzYWdlRGVjb2Rl
ciYgZGVjb2QKIAogICAgIHR5cGVuYW1lIFQ6OlJlcGx5OjpWYWx1ZVR5cGUgcmVwbHlBcmd1bWVu
dHM7CiAgICAgY2FsbE1lbWJlckZ1bmN0aW9uKGFyZ3VtZW50cywgcmVwbHlBcmd1bWVudHMsIG9i
amVjdCwgZnVuY3Rpb24pOwotICAgIHJlcGx5RW5jb2Rlci5lbmNvZGUocmVwbHlBcmd1bWVudHMp
OworICAgIHJlcGx5RW5jb2RlciA8PCByZXBseUFyZ3VtZW50czsKIH0KIAogdGVtcGxhdGU8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgQywgdHlwZW5hbWUgTUY+CkBAIC0zNjEsNyArMzYxLDcgQEAgdm9p
ZCBoYW5kbGVNZXNzYWdlVmFyaWFkaWMoTWVzc2FnZURlY29kZQogCiAgICAgdHlwZW5hbWUgVDo6
UmVwbHk6OlZhbHVlVHlwZSByZXBseUFyZ3VtZW50czsKICAgICBjYWxsTWVtYmVyRnVuY3Rpb24o
YXJndW1lbnRzLCBkZWNvZGVyLCByZXBseUFyZ3VtZW50cywgb2JqZWN0LCBmdW5jdGlvbik7Ci0g
ICAgcmVwbHlFbmNvZGVyLmVuY29kZShyZXBseUFyZ3VtZW50cyk7CisgICAgcmVwbHlFbmNvZGVy
IDw8IHJlcGx5QXJndW1lbnRzOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBD
LCB0eXBlbmFtZSBNRj4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvU3Ry
aW5nUmVmZXJlbmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9D
b3JlSVBDL1N0cmluZ1JlZmVyZW5jZS5jcHAJKHJldmlzaW9uIDEzMjg3MSkKKysrIFNvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvU3RyaW5nUmVmZXJlbmNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzUsMTMgKzM1LDEzIEBAIG5hbWVzcGFjZSBDb3JlSVBDIHsKIAogdm9pZCBTdHJpbmdS
ZWZlcmVuY2U6OmVuY29kZShBcmd1bWVudEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAg
ZW5jb2Rlci5lbmNvZGVWYXJpYWJsZUxlbmd0aEJ5dGVBcnJheShEYXRhUmVmZXJlbmNlKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1fZGF0YSksIG1fc2l6ZSkpOworICAgIGVuY29k
ZXIgPDwgRGF0YVJlZmVyZW5jZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihtX2Rh
dGEpLCBtX3NpemUpOwogfQogCiBib29sIFN0cmluZ1JlZmVyZW5jZTo6ZGVjb2RlKEFyZ3VtZW50
RGVjb2RlciogZGVjb2RlciwgU3RyaW5nUmVmZXJlbmNlJiByZXN1bHQpCiB7CiAgICAgRGF0YVJl
ZmVyZW5jZSBkYXRhUmVmZXJlbmNlOwotICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlVmFyaWFibGVM
ZW5ndGhCeXRlQXJyYXkoZGF0YVJlZmVyZW5jZSkpCisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUo
ZGF0YVJlZmVyZW5jZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJlc3VsdC5tX2Rh
dGEgPSByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhUmVmZXJlbmNlLmRhdGEoKSk7
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL21hYy9NYWNoUG9ydC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvbWFjL01hY2hQb3J0
LmgJKHJldmlzaW9uIDEzMjg3MSkKKysrIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMv
bWFjL01hY2hQb3J0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgog
CiAgICAgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIHsK
LSAgICAgICAgZW5jb2Rlci5lbmNvZGUoQXR0YWNobWVudChtX3BvcnQsIG1fZGlzcG9zaXRpb24p
KTsKKyAgICAgICAgZW5jb2RlciA8PCBBdHRhY2htZW50KG1fcG9ydCwgbV9kaXNwb3NpdGlvbik7
CiAgICAgfQogCiAgICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2Rl
ciwgTWFjaFBvcnQmIHApCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9tYWMvU2hhcmVk
TWVtb3J5TWFjLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9tYWMv
U2hhcmVkTWVtb3J5TWFjLmNwcAkocmV2aXNpb24gMTMyODcxKQorKysgU291cmNlL1dlYktpdDIv
UGxhdGZvcm0vbWFjL1NoYXJlZE1lbW9yeU1hYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3LDgg
KzU3LDggQEAgYm9vbCBTaGFyZWRNZW1vcnk6OkhhbmRsZTo6aXNOdWxsKCkgY29ucwogCiB2b2lk
IFNoYXJlZE1lbW9yeTo6SGFuZGxlOjplbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAogewotICAgIGVuY29kZXIuZW5jb2RlKHN0YXRpY19jYXN0PHVpbnQ2NF90
PihtX3NpemUpKTsKLSAgICBlbmNvZGVyLmVuY29kZShDb3JlSVBDOjpNYWNoUG9ydChtX3BvcnQs
IE1BQ0hfTVNHX1RZUEVfTU9WRV9TRU5EKSk7CisgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1
aW50NjRfdD4obV9zaXplKTsKKyAgICBlbmNvZGVyIDw8IENvcmVJUEM6Ok1hY2hQb3J0KG1fcG9y
dCwgTUFDSF9NU0dfVFlQRV9NT1ZFX1NFTkQpOwogICAgIG1fcG9ydCA9IE1BQ0hfUE9SVF9OVUxM
OwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNyZWF0aW9u
UGFyYW1ldGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vz
cy9QbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMuY3BwCShyZXZpc2lvbiAxMzI4NzEpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNyZWF0aW9uUGFyYW1ldGVycy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ3LDE3ICs0NywxNyBAQCBQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnM6
OlBsdWdpbkNyZWF0aW9uCiAKIHZvaWQgUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUo
Q29yZUlQQzo6QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewotICAgIGVuY29kZXIu
ZW5jb2RlKHBsdWdpbkluc3RhbmNlSUQpOwotICAgIGVuY29kZXIuZW5jb2RlKHdpbmRvd05QT2Jq
ZWN0SUQpOwotICAgIGVuY29kZXIuZW5jb2RlKHBhcmFtZXRlcnMpOwotICAgIGVuY29kZXIuZW5j
b2RlKHVzZXJBZ2VudCk7Ci0gICAgZW5jb2Rlci5lbmNvZGUoY29udGVudHNTY2FsZUZhY3Rvcik7
Ci0gICAgZW5jb2Rlci5lbmNvZGUoaXNQcml2YXRlQnJvd3NpbmdFbmFibGVkKTsKLSAgICBlbmNv
ZGVyLmVuY29kZShhc3luY2hyb25vdXNDcmVhdGlvbkluY29tcGxldGUpOwotICAgIGVuY29kZXIu
ZW5jb2RlKGFydGlmaWNpYWxQbHVnaW5Jbml0aWFsaXphdGlvbkRlbGF5RW5hYmxlZCk7CisgICAg
ZW5jb2RlciA8PCBwbHVnaW5JbnN0YW5jZUlEOworICAgIGVuY29kZXIgPDwgd2luZG93TlBPYmpl
Y3RJRDsKKyAgICBlbmNvZGVyIDw8IHBhcmFtZXRlcnM7CisgICAgZW5jb2RlciA8PCB1c2VyQWdl
bnQ7CisgICAgZW5jb2RlciA8PCBjb250ZW50c1NjYWxlRmFjdG9yOworICAgIGVuY29kZXIgPDwg
aXNQcml2YXRlQnJvd3NpbmdFbmFibGVkOworICAgIGVuY29kZXIgPDwgYXN5bmNocm9ub3VzQ3Jl
YXRpb25JbmNvbXBsZXRlOworICAgIGVuY29kZXIgPDwgYXJ0aWZpY2lhbFBsdWdpbkluaXRpYWxp
emF0aW9uRGVsYXlFbmFibGVkOwogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQot
ICAgIGVuY29kZXIuZW5jb2RlKGlzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQpOworICAg
IGVuY29kZXIgPDwgaXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZDsKICNlbmRpZgogfQog
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRGljdGlvbmFyeVBvcHVwSW5mby5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0RpY3Rpb25hcnlQb3B1cEluZm8uY3Bw
CShyZXZpc2lvbiAxMzI4NzEpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRGljdGlvbmFyeVBv
cHVwSW5mby5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDE1ICszNiwxNSBAQCBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogdm9pZCBEaWN0aW9uYXJ5UG9wdXBJbmZvOjplbmNvZGUoQ29yZUlQQzo6QXJn
dW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewotICAgIGVuY29kZXIuZW5jb2RlKG9yaWdp
bik7Ci0gICAgZW5jb2Rlci5lbmNvZGUoZm9udEluZm8pOworICAgIGVuY29kZXIgPDwgb3JpZ2lu
OworICAgIGVuY29kZXIgPDwgZm9udEluZm87CiAgICAgZW5jb2Rlci5lbmNvZGVFbnVtKHR5cGUp
OwogCiAjaWYgUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDEwNzAKICAgICBib29sIGhhZE9wdGlvbnMgPSBvcHRpb25zOwotICAgIGVuY29kZXIuZW5j
b2RlKGhhZE9wdGlvbnMpOworICAgIGVuY29kZXIgPDwgaGFkT3B0aW9uczsKICAgICBpZiAoaGFk
T3B0aW9ucykKLSAgICAgICAgQ29yZUlQQzo6ZW5jb2RlKCZlbmNvZGVyLCBvcHRpb25zLmdldCgp
KTsKKyAgICAgICAgQ29yZUlQQzo6ZW5jb2RlKGVuY29kZXIsIG9wdGlvbnMuZ2V0KCkpOwogI2Vu
ZGlmCiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9FZGl0b3JTdGF0ZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0VkaXRvclN0YXRlLmNwcAkocmV2aXNp
b24gMTMyODcxKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL0VkaXRvclN0YXRlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzMsMjMgKzMzLDIzIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiB2b2lk
IEVkaXRvclN0YXRlOjplbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBj
b25zdAogewotICAgIGVuY29kZXIuZW5jb2RlKHNob3VsZElnbm9yZUNvbXBvc2l0aW9uU2VsZWN0
aW9uQ2hhbmdlKTsKLSAgICBlbmNvZGVyLmVuY29kZShzZWxlY3Rpb25Jc05vbmUpOwotICAgIGVu
Y29kZXIuZW5jb2RlKHNlbGVjdGlvbklzUmFuZ2UpOwotICAgIGVuY29kZXIuZW5jb2RlKGlzQ29u
dGVudEVkaXRhYmxlKTsKLSAgICBlbmNvZGVyLmVuY29kZShpc0NvbnRlbnRSaWNobHlFZGl0YWJs
ZSk7Ci0gICAgZW5jb2Rlci5lbmNvZGUoaXNJblBhc3N3b3JkRmllbGQpOwotICAgIGVuY29kZXIu
ZW5jb2RlKGhhc0NvbXBvc2l0aW9uKTsKKyAgICBlbmNvZGVyIDw8IHNob3VsZElnbm9yZUNvbXBv
c2l0aW9uU2VsZWN0aW9uQ2hhbmdlOworICAgIGVuY29kZXIgPDwgc2VsZWN0aW9uSXNOb25lOwor
ICAgIGVuY29kZXIgPDwgc2VsZWN0aW9uSXNSYW5nZTsKKyAgICBlbmNvZGVyIDw8IGlzQ29udGVu
dEVkaXRhYmxlOworICAgIGVuY29kZXIgPDwgaXNDb250ZW50UmljaGx5RWRpdGFibGU7CisgICAg
ZW5jb2RlciA8PCBpc0luUGFzc3dvcmRGaWVsZDsKKyAgICBlbmNvZGVyIDw8IGhhc0NvbXBvc2l0
aW9uOwogCiAjaWYgUExBVEZPUk0oUVQpCi0gICAgZW5jb2Rlci5lbmNvZGUoY3Vyc29yUG9zaXRp
b24pOwotICAgIGVuY29kZXIuZW5jb2RlKGFuY2hvclBvc2l0aW9uKTsKLSAgICBlbmNvZGVyLmVu
Y29kZShlZGl0b3JSZWN0KTsKLSAgICBlbmNvZGVyLmVuY29kZShjdXJzb3JSZWN0KTsKLSAgICBl
bmNvZGVyLmVuY29kZShjb21wb3NpdGlvblJlY3QpOwotICAgIGVuY29kZXIuZW5jb2RlKGlucHV0
TWV0aG9kSGludHMpOwotICAgIGVuY29kZXIuZW5jb2RlKHNlbGVjdGVkVGV4dCk7Ci0gICAgZW5j
b2Rlci5lbmNvZGUoc3Vycm91bmRpbmdUZXh0KTsKKyAgICBlbmNvZGVyIDw8IGN1cnNvclBvc2l0
aW9uOworICAgIGVuY29kZXIgPDwgYW5jaG9yUG9zaXRpb247CisgICAgZW5jb2RlciA8PCBlZGl0
b3JSZWN0OworICAgIGVuY29kZXIgPDwgY3Vyc29yUmVjdDsKKyAgICBlbmNvZGVyIDw8IGNvbXBv
c2l0aW9uUmVjdDsKKyAgICBlbmNvZGVyIDw8IGlucHV0TWV0aG9kSGludHM7CisgICAgZW5jb2Rl
ciA8PCBzZWxlY3RlZFRleHQ7CisgICAgZW5jb2RlciA8PCBzdXJyb3VuZGluZ1RleHQ7CiAjZW5k
aWYKIH0KIApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL0ZvbnRJbmZvLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRm9udEluZm8uY3BwCShyZXZpc2lvbiAxMzI4
NzEpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRm9udEluZm8uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zNyw5ICszNyw5IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogdm9pZCBGb250SW5mbzo6ZW5j
b2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKICNpZiBQTEFU
Rk9STShNQUMpCi0gICAgZW5jb2Rlci5lbmNvZGUoc3RhdGljX2Nhc3Q8Ym9vbD4oZm9udEF0dHJp
YnV0ZURpY3Rpb25hcnkpKTsKKyAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PGJvb2w+KGZvbnRB
dHRyaWJ1dGVEaWN0aW9uYXJ5KTsKICAgICBpZiAoZm9udEF0dHJpYnV0ZURpY3Rpb25hcnkpCi0g
ICAgICAgIENvcmVJUEM6OmVuY29kZSgmZW5jb2RlciwgZm9udEF0dHJpYnV0ZURpY3Rpb25hcnku
Z2V0KCkpOworICAgICAgICBDb3JlSVBDOjplbmNvZGUoZW5jb2RlciwgZm9udEF0dHJpYnV0ZURp
Y3Rpb25hcnkuZ2V0KCkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZW5jb2Rlcik7CiAjZW5k
aWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9PcmlnaW5BbmREYXRhYmFzZXMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9PcmlnaW5BbmREYXRhYmFzZXMuY3Bw
CShyZXZpc2lvbiAxMzI4NzEpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvT3JpZ2luQW5kRGF0
YWJhc2VzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsMTAgKzM2LDEwIEBAIG5hbWVzcGFjZSBX
ZWJLaXQgewogCiB2b2lkIE9yaWdpbkFuZERhdGFiYXNlczo6ZW5jb2RlKENvcmVJUEM6OkFyZ3Vt
ZW50RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBlbmNvZGVyLmVuY29kZShvcmlnaW5J
ZGVudGlmaWVyKTsKLSAgICBlbmNvZGVyLmVuY29kZShvcmlnaW5RdW90YSk7Ci0gICAgZW5jb2Rl
ci5lbmNvZGUob3JpZ2luVXNhZ2UpOwotICAgIGVuY29kZXIuZW5jb2RlKGRhdGFiYXNlcyk7Cisg
ICAgZW5jb2RlciA8PCBvcmlnaW5JZGVudGlmaWVyOworICAgIGVuY29kZXIgPDwgb3JpZ2luUXVv
dGE7CisgICAgZW5jb2RlciA8PCBvcmlnaW5Vc2FnZTsKKyAgICBlbmNvZGVyIDw8IGRhdGFiYXNl
czsKIH0KIAogYm9vbCBPcmlnaW5BbmREYXRhYmFzZXM6OmRlY29kZShDb3JlSVBDOjpBcmd1bWVu
dERlY29kZXIqIGRlY29kZXIsIE9yaWdpbkFuZERhdGFiYXNlcyYgb3JpZ2luQW5kRGF0YWJhc2Vz
KQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1BsYXRmb3JtUG9wdXBNZW51RGF0YS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1BsYXRmb3JtUG9wdXBNZW51RGF0
YS5jcHAJKHJldmlzaW9uIDEzMjg3MSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbGF0Zm9y
bVBvcHVwTWVudURhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NywyNSArNDcsMjUgQEAgUGxh
dGZvcm1Qb3B1cE1lbnVEYXRhOjpQbGF0Zm9ybVBvcHVwTWVudQogdm9pZCBQbGF0Zm9ybVBvcHVw
TWVudURhdGE6OmVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXImIGVuY29kZXIpIGNvbnN0
CiB7CiAjaWYgUExBVEZPUk0oV0lOKQotICAgIGVuY29kZXIuZW5jb2RlKG1fY2xpZW50UGFkZGlu
Z0xlZnQpOwotICAgIGVuY29kZXIuZW5jb2RlKG1fY2xpZW50UGFkZGluZ1JpZ2h0KTsKLSAgICBl
bmNvZGVyLmVuY29kZShtX2NsaWVudEluc2V0TGVmdCk7Ci0gICAgZW5jb2Rlci5lbmNvZGUobV9j
bGllbnRJbnNldFJpZ2h0KTsKLSAgICBlbmNvZGVyLmVuY29kZShtX3BvcHVwV2lkdGgpOwotICAg
IGVuY29kZXIuZW5jb2RlKG1faXRlbUhlaWdodCk7CisgICAgZW5jb2RlciA8PCBtX2NsaWVudFBh
ZGRpbmdMZWZ0OworICAgIGVuY29kZXIgPDwgbV9jbGllbnRQYWRkaW5nUmlnaHQ7CisgICAgZW5j
b2RlciA8PCBtX2NsaWVudEluc2V0TGVmdDsKKyAgICBlbmNvZGVyIDw8IG1fY2xpZW50SW5zZXRS
aWdodDsKKyAgICBlbmNvZGVyIDw8IG1fcG9wdXBXaWR0aDsKKyAgICBlbmNvZGVyIDw8IG1faXRl
bUhlaWdodDsKIAogICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIG5vdFNlbGVjdGVkQmFja2lu
Z1N0b3JlSGFuZGxlOwogICAgIG1fbm90U2VsZWN0ZWRCYWNraW5nU3RvcmUtPmNyZWF0ZUhhbmRs
ZShub3RTZWxlY3RlZEJhY2tpbmdTdG9yZUhhbmRsZSk7Ci0gICAgZW5jb2Rlci5lbmNvZGUobm90
U2VsZWN0ZWRCYWNraW5nU3RvcmVIYW5kbGUpOworICAgIGVuY29kZXIgPDwgbm90U2VsZWN0ZWRC
YWNraW5nU3RvcmVIYW5kbGU7CiAKICAgICBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBzZWxlY3Rl
ZEJhY2tpbmdTdG9yZUhhbmRsZTsKICAgICBtX3NlbGVjdGVkQmFja2luZ1N0b3JlLT5jcmVhdGVI
YW5kbGUoc2VsZWN0ZWRCYWNraW5nU3RvcmVIYW5kbGUpOwotICAgIGVuY29kZXIuZW5jb2RlKHNl
bGVjdGVkQmFja2luZ1N0b3JlSGFuZGxlKTsKKyAgICBlbmNvZGVyIDw8IHNlbGVjdGVkQmFja2lu
Z1N0b3JlSGFuZGxlOwogI2VsaWYgUExBVEZPUk0oTUFDKQotICAgIGVuY29kZXIuZW5jb2RlKGZv
bnRJbmZvKTsKLSAgICBlbmNvZGVyLmVuY29kZShzaG91bGRQb3BPdmVyKTsKKyAgICBlbmNvZGVy
IDw8IGZvbnRJbmZvOworICAgIGVuY29kZXIgPDwgc2hvdWxkUG9wT3ZlcjsKICNlbGlmIFBMQVRG
T1JNKFFUKQotICAgIGVuY29kZXIuZW5jb2RlKG11bHRpcGxlU2VsZWN0aW9ucyk7CisgICAgZW5j
b2RlciA8PCBtdWx0aXBsZVNlbGVjdGlvbnM7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShlbmNv
ZGVyKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1ByaW50SW5mby5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1ByaW50SW5mby5jcHAJKHJldmlz
aW9uIDEzMjg3MSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9QcmludEluZm8uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NSw5ICs0NSw5IEBAIFByaW50SW5mbzo6UHJpbnRJbmZvKCkKIAogdm9p
ZCBQcmludEluZm86OmVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXImIGVuY29kZXIpIGNv
bnN0CiB7Ci0gICAgZW5jb2Rlci5lbmNvZGUocGFnZVNldHVwU2NhbGVGYWN0b3IpOwotICAgIGVu
Y29kZXIuZW5jb2RlKGF2YWlsYWJsZVBhcGVyV2lkdGgpOwotICAgIGVuY29kZXIuZW5jb2RlKGF2
YWlsYWJsZVBhcGVySGVpZ2h0KTsKKyAgICBlbmNvZGVyIDw8IHBhZ2VTZXR1cFNjYWxlRmFjdG9y
OworICAgIGVuY29kZXIgPDwgYXZhaWxhYmxlUGFwZXJXaWR0aDsKKyAgICBlbmNvZGVyIDw8IGF2
YWlsYWJsZVBhcGVySGVpZ2h0OwogCiAjaWYgUExBVEZPUk0oR1RLKQogICAgIENvcmVJUEM6OmVu
Y29kZSgmZW5jb2RlciwgcHJpbnRTZXR0aW5ncy5nZXQoKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcAkocmV2aXNpb24gMTMyODcxKQorKysg
U291cmNlL1dlYktpdDIvU2hhcmVkL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM3LDkgKzM3LDkgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHZvaWQgU2VjdXJpdHlP
cmlnaW5EYXRhOjplbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb25z
dAogewotICAgIGVuY29kZXIuZW5jb2RlKHByb3RvY29sKTsKLSAgICBlbmNvZGVyLmVuY29kZSho
b3N0KTsKLSAgICBlbmNvZGVyLmVuY29kZShwb3J0KTsKKyAgICBlbmNvZGVyIDw8IHByb3RvY29s
OworICAgIGVuY29kZXIgPDwgaG9zdDsKKyAgICBlbmNvZGVyIDw8IHBvcnQ7CiB9CiAKIGJvb2wg
U2VjdXJpdHlPcmlnaW5EYXRhOjpkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBkZWNv
ZGVyLCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luRGF0YSkKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9TZXNzaW9uU3RhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9TZXNzaW9uU3RhdGUuY3BwCShyZXZpc2lvbiAxMzI4NzEpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvU2Vzc2lvblN0YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjYs
OCArNjYsOCBAQCBib29sIFNlc3Npb25TdGF0ZTo6aXNFbXB0eSgpIGNvbnN0CiAgICAgCiB2b2lk
IFNlc3Npb25TdGF0ZTo6ZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKIHsKLSAgICBlbmNvZGVyLmVuY29kZShtX2xpc3QpOwotICAgIGVuY29kZXIuZW5jb2Rl
KG1fY3VycmVudEluZGV4KTsKKyAgICBlbmNvZGVyIDw8IG1fbGlzdDsKKyAgICBlbmNvZGVyIDw8
IG1fY3VycmVudEluZGV4OwogfQogCiBib29sIFNlc3Npb25TdGF0ZTo6ZGVjb2RlKENvcmVJUEM6
OkFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgU2Vzc2lvblN0YXRlJiBzdGF0ZSkKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuY3BwCShyZXZpc2lvbiAxMzI4NzEp
CisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDEsOSArNDEsOSBAQCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZTo6SGFuZGxlKCkK
IAogdm9pZCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZTo6ZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50
RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBlbmNvZGVyLmVuY29kZShtX2hhbmRsZSk7
Ci0gICAgZW5jb2Rlci5lbmNvZGUobV9zaXplKTsKLSAgICBlbmNvZGVyLmVuY29kZShtX2ZsYWdz
KTsKKyAgICBlbmNvZGVyIDw8IG1faGFuZGxlOworICAgIGVuY29kZXIgPDwgbV9zaXplOworICAg
IGVuY29kZXIgPDwgbV9mbGFnczsKIH0KIAogYm9vbCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZTo6
ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgSGFuZGxlJiBoYW5kbGUp
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hhcmVkV29ya2VyUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJl
ZFdvcmtlclByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCShyZXZpc2lvbiAxMzI4NzEpCisr
KyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hhcmVkV29ya2VyUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDExICszOCwxMSBAQCBTaGFyZWRXb3JrZXJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpTCiAKIHZvaWQgU2hhcmVkV29ya2VyUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciYgZW5jb2Rl
cikgY29uc3QKIHsKLSAgICBlbmNvZGVyLmVuY29kZShtaW5pbXVtTGlmZXRpbWUpOwotICAgIGVu
Y29kZXIuZW5jb2RlKHRlcm1pbmF0aW9uVGltZW91dCk7CisgICAgZW5jb2RlciA8PCBtaW5pbXVt
TGlmZXRpbWU7CisgICAgZW5jb2RlciA8PCB0ZXJtaW5hdGlvblRpbWVvdXQ7CiAKICNpZiBQTEFU
Rk9STShNQUMpCi0gICAgZW5jb2Rlci5lbmNvZGUocGFyZW50UHJvY2Vzc05hbWUpOworICAgIGVu
Y29kZXIgPDwgcGFyZW50UHJvY2Vzc05hbWU7CiAjZW5kaWYKIH0KIApJbmRleDogU291cmNlL1dl
YktpdDIvU2hhcmVkL1N0YXRpc3RpY3NEYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvU3RhdGlzdGljc0RhdGEuY3BwCShyZXZpc2lvbiAxMzI4NzEpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvU3RhdGlzdGljc0RhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MiwxMCArMzIsMTAgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHZvaWQgU3RhdGlzdGljc0RhdGE6
OmVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAg
ZW5jb2Rlci5lbmNvZGUoc3RhdGlzdGljc051bWJlcnMpOwotICAgIGVuY29kZXIuZW5jb2RlKGph
dmFTY3JpcHRQcm90ZWN0ZWRPYmplY3RUeXBlQ291bnRzKTsKLSAgICBlbmNvZGVyLmVuY29kZShq
YXZhU2NyaXB0T2JqZWN0VHlwZUNvdW50cyk7Ci0gICAgZW5jb2Rlci5lbmNvZGUod2ViQ29yZUNh
Y2hlU3RhdGlzdGljcyk7CisgICAgZW5jb2RlciA8PCBzdGF0aXN0aWNzTnVtYmVyczsKKyAgICBl
bmNvZGVyIDw8IGphdmFTY3JpcHRQcm90ZWN0ZWRPYmplY3RUeXBlQ291bnRzOworICAgIGVuY29k
ZXIgPDwgamF2YVNjcmlwdE9iamVjdFR5cGVDb3VudHM7CisgICAgZW5jb2RlciA8PCB3ZWJDb3Jl
Q2FjaGVTdGF0aXN0aWNzOwogfQogCiBib29sIFN0YXRpc3RpY3NEYXRhOjpkZWNvZGUoQ29yZUlQ
Qzo6QXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBTdGF0aXN0aWNzRGF0YSYgc3RhdGlzdGljc0Rh
dGEpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU3RyaW5nUGFpclZlY3Rvci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9TdHJpbmdQYWlyVmVjdG9yLmgJKHJldmlz
aW9uIDEzMjg3MSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9TdHJpbmdQYWlyVmVjdG9yLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBlbmNv
ZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIHsKLSAgICAg
ICAgZW5jb2Rlci5lbmNvZGUobV9zdHJpbmdQYWlyVmVjdG9yKTsKKyAgICAgICAgZW5jb2RlciA8
PCBtX3N0cmluZ1BhaXJWZWN0b3I7CiAgICAgfQogCiAgICAgc3RhdGljIGJvb2wgZGVjb2RlKENv
cmVJUEM6OkFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgU3RyaW5nUGFpclZlY3RvciYgc3RyaW5n
UGFpclZlY3RvcikKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9VcGRhdGVJbmZvLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvVXBkYXRlSW5mby5jcHAJKHJldmlz
aW9uIDEzMjg3MSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9VcGRhdGVJbmZvLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzIsMTUgKzMyLDE1IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiB2b2lk
IFVwZGF0ZUluZm86OmVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXImIGVuY29kZXIpIGNv
bnN0CiB7Ci0gICAgZW5jb2Rlci5lbmNvZGUodmlld1NpemUpOwotICAgIGVuY29kZXIuZW5jb2Rl
KGRldmljZVNjYWxlRmFjdG9yKTsKLSAgICBlbmNvZGVyLmVuY29kZShzY3JvbGxSZWN0KTsKLSAg
ICBlbmNvZGVyLmVuY29kZShzY3JvbGxPZmZzZXQpOwotICAgIGVuY29kZXIuZW5jb2RlKHVwZGF0
ZVJlY3RCb3VuZHMpOwotICAgIGVuY29kZXIuZW5jb2RlKHVwZGF0ZVJlY3RzKTsKLSAgICBlbmNv
ZGVyLmVuY29kZSh1cGRhdGVTY2FsZUZhY3Rvcik7Ci0gICAgZW5jb2Rlci5lbmNvZGUoYml0bWFw
SGFuZGxlKTsKLSAgICBlbmNvZGVyLmVuY29kZShiaXRtYXBPZmZzZXQpOworICAgIGVuY29kZXIg
PDwgdmlld1NpemU7CisgICAgZW5jb2RlciA8PCBkZXZpY2VTY2FsZUZhY3RvcjsKKyAgICBlbmNv
ZGVyIDw8IHNjcm9sbFJlY3Q7CisgICAgZW5jb2RlciA8PCBzY3JvbGxPZmZzZXQ7CisgICAgZW5j
b2RlciA8PCB1cGRhdGVSZWN0Qm91bmRzOworICAgIGVuY29kZXIgPDwgdXBkYXRlUmVjdHM7Cisg
ICAgZW5jb2RlciA8PCB1cGRhdGVTY2FsZUZhY3RvcjsKKyAgICBlbmNvZGVyIDw8IGJpdG1hcEhh
bmRsZTsKKyAgICBlbmNvZGVyIDw8IGJpdG1hcE9mZnNldDsKIH0KIAogYm9vbCBVcGRhdGVJbmZv
OjpkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBVcGRhdGVJbmZvJiBy
ZXN1bHQpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvVXNlck1lc3NhZ2VDb2RlcnMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvVXNlck1lc3NhZ2VDb2RlcnMuaAko
cmV2aXNpb24gMTMyODcxKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1VzZXJNZXNzYWdlQ29k
ZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTcwLDExNiArNzAsMTE2IEBAIHB1YmxpYzoKICAgICBi
b29sIGJhc2VFbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBBUElPYmpl
Y3Q6OlR5cGUmIHR5cGUpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAoIW1fcm9vdCkgewotICAg
ICAgICAgICAgZW5jb2Rlci5lbmNvZGUoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KEFQSU9iamVjdDo6
VHlwZU51bGwpKTsKKyAgICAgICAgICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+
KEFQSU9iamVjdDo6VHlwZU51bGwpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
IH0KIAogICAgICAgICB0eXBlID0gbV9yb290LT50eXBlKCk7Ci0gICAgICAgIGVuY29kZXIuZW5j
b2RlKHN0YXRpY19jYXN0PHVpbnQzMl90Pih0eXBlKSk7CisgICAgICAgIGVuY29kZXIgPDwgc3Rh
dGljX2Nhc3Q8dWludDMyX3Q+KHR5cGUpOwogCiAgICAgICAgIHN3aXRjaCAodHlwZSkgewogICAg
ICAgICBjYXNlIEFQSU9iamVjdDo6VHlwZUFycmF5OiB7CiAgICAgICAgICAgICBJbW11dGFibGVB
cnJheSogYXJyYXkgPSBzdGF0aWNfY2FzdDxJbW11dGFibGVBcnJheSo+KG1fcm9vdCk7Ci0gICAg
ICAgICAgICBlbmNvZGVyLmVuY29kZShzdGF0aWNfY2FzdDx1aW50NjRfdD4oYXJyYXktPnNpemUo
KSkpOworICAgICAgICAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oYXJyYXkt
PnNpemUoKSk7CiAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFycmF5LT5zaXpl
KCk7ICsraSkKLSAgICAgICAgICAgICAgICBlbmNvZGVyLmVuY29kZShPd25lcihhcnJheS0+YXQo
aSkpKTsKKyAgICAgICAgICAgICAgICBlbmNvZGVyIDw8IE93bmVyKGFycmF5LT5hdChpKSk7CiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICBjYXNlIEFQSU9iamVj
dDo6VHlwZURpY3Rpb25hcnk6IHsKICAgICAgICAgICAgIEltbXV0YWJsZURpY3Rpb25hcnkqIGRp
Y3Rpb25hcnkgPSBzdGF0aWNfY2FzdDxJbW11dGFibGVEaWN0aW9uYXJ5Kj4obV9yb290KTsKICAg
ICAgICAgICAgIGNvbnN0IEltbXV0YWJsZURpY3Rpb25hcnk6Ok1hcFR5cGUmIG1hcCA9IGRpY3Rp
b25hcnktPm1hcCgpOwotICAgICAgICAgICAgZW5jb2Rlci5lbmNvZGUoc3RhdGljX2Nhc3Q8dWlu
dDY0X3Q+KG1hcC5zaXplKCkpKTsKKyAgICAgICAgICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8
dWludDY0X3Q+KG1hcC5zaXplKCkpOwogCiAgICAgICAgICAgICBJbW11dGFibGVEaWN0aW9uYXJ5
OjpNYXBUeXBlOjpjb25zdF9pdGVyYXRvciBpdCA9IG1hcC5iZWdpbigpOwogICAgICAgICAgICAg
SW1tdXRhYmxlRGljdGlvbmFyeTo6TWFwVHlwZTo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbWFwLmVu
ZCgpOwogICAgICAgICAgICAgZm9yICg7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICAgICAg
ICAgIGVuY29kZXIuZW5jb2RlKGl0LT5rZXkpOwotICAgICAgICAgICAgICAgIGVuY29kZXIuZW5j
b2RlKE93bmVyKGl0LT52YWx1ZS5nZXQoKSkpOworICAgICAgICAgICAgICAgIGVuY29kZXIgPDwg
aXQtPmtleTsKKyAgICAgICAgICAgICAgICBlbmNvZGVyIDw8IE93bmVyKGl0LT52YWx1ZS5nZXQo
KSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIEFQSU9iamVjdDo6VHlwZVN0cmluZzogewogICAgICAgICAgICAgV2ViU3Ry
aW5nKiBzdHJpbmcgPSBzdGF0aWNfY2FzdDxXZWJTdHJpbmcqPihtX3Jvb3QpOwotICAgICAgICAg
ICAgZW5jb2Rlci5lbmNvZGUoc3RyaW5nLT5zdHJpbmcoKSk7CisgICAgICAgICAgICBlbmNvZGVy
IDw8IHN0cmluZy0+c3RyaW5nKCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAg
fQogICAgICAgICBjYXNlIEFQSU9iamVjdDo6VHlwZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTogewog
ICAgICAgICAgICAgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlKiBzY3JpcHRWYWx1ZSA9IHN0YXRp
Y19jYXN0PFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSo+KG1fcm9vdCk7Ci0gICAgICAgICAgICBl
bmNvZGVyLmVuY29kZVZhcmlhYmxlTGVuZ3RoQnl0ZUFycmF5KHNjcmlwdFZhbHVlLT5kYXRhUmVm
ZXJlbmNlKCkpOworICAgICAgICAgICAgZW5jb2RlciA8PCBzY3JpcHRWYWx1ZS0+ZGF0YVJlZmVy
ZW5jZSgpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICAgICAgY2Fz
ZSBBUElPYmplY3Q6OlR5cGVCb29sZWFuOiB7CiAgICAgICAgICAgICBXZWJCb29sZWFuKiBib29s
ZWFuT2JqZWN0ID0gc3RhdGljX2Nhc3Q8V2ViQm9vbGVhbio+KG1fcm9vdCk7Ci0gICAgICAgICAg
ICBlbmNvZGVyLmVuY29kZShib29sZWFuT2JqZWN0LT52YWx1ZSgpKTsKKyAgICAgICAgICAgIGVu
Y29kZXIgPDwgYm9vbGVhbk9iamVjdC0+dmFsdWUoKTsKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQVBJT2JqZWN0OjpUeXBlRG91YmxlOiB7CiAgICAg
ICAgICAgICBXZWJEb3VibGUqIGRvdWJsZU9iamVjdCA9IHN0YXRpY19jYXN0PFdlYkRvdWJsZSo+
KG1fcm9vdCk7Ci0gICAgICAgICAgICBlbmNvZGVyLmVuY29kZShkb3VibGVPYmplY3QtPnZhbHVl
KCkpOworICAgICAgICAgICAgZW5jb2RlciA8PCBkb3VibGVPYmplY3QtPnZhbHVlKCk7CiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICBjYXNlIEFQSU9iamVjdDo6
VHlwZVVJbnQ2NDogewogICAgICAgICAgICAgV2ViVUludDY0KiB1aW50NjRPYmplY3QgPSBzdGF0
aWNfY2FzdDxXZWJVSW50NjQqPihtX3Jvb3QpOwotICAgICAgICAgICAgZW5jb2Rlci5lbmNvZGUo
dWludDY0T2JqZWN0LT52YWx1ZSgpKTsKKyAgICAgICAgICAgIGVuY29kZXIgPDwgdWludDY0T2Jq
ZWN0LT52YWx1ZSgpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICAg
ICAgY2FzZSBBUElPYmplY3Q6OlR5cGVQb2ludDogewogICAgICAgICAgICAgV2ViUG9pbnQqIHBv
aW50T2JqZWN0ID0gc3RhdGljX2Nhc3Q8V2ViUG9pbnQqPihtX3Jvb3QpOwotICAgICAgICAgICAg
ZW5jb2Rlci5lbmNvZGUocG9pbnRPYmplY3QtPnBvaW50KCkueCk7Ci0gICAgICAgICAgICBlbmNv
ZGVyLmVuY29kZShwb2ludE9iamVjdC0+cG9pbnQoKS55KTsKKyAgICAgICAgICAgIGVuY29kZXIg
PDwgcG9pbnRPYmplY3QtPnBvaW50KCkueDsKKyAgICAgICAgICAgIGVuY29kZXIgPDwgcG9pbnRP
YmplY3QtPnBvaW50KCkueTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAg
ICAgICAgIGNhc2UgQVBJT2JqZWN0OjpUeXBlU2l6ZTogewogICAgICAgICAgICAgV2ViU2l6ZSog
c2l6ZU9iamVjdCA9IHN0YXRpY19jYXN0PFdlYlNpemUqPihtX3Jvb3QpOwotICAgICAgICAgICAg
ZW5jb2Rlci5lbmNvZGUoc2l6ZU9iamVjdC0+c2l6ZSgpLndpZHRoKTsKLSAgICAgICAgICAgIGVu
Y29kZXIuZW5jb2RlKHNpemVPYmplY3QtPnNpemUoKS5oZWlnaHQpOworICAgICAgICAgICAgZW5j
b2RlciA8PCBzaXplT2JqZWN0LT5zaXplKCkud2lkdGg7CisgICAgICAgICAgICBlbmNvZGVyIDw8
IHNpemVPYmplY3QtPnNpemUoKS5oZWlnaHQ7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgfQogICAgICAgICBjYXNlIEFQSU9iamVjdDo6VHlwZVJlY3Q6IHsKICAgICAgICAgICAg
IFdlYlJlY3QqIHJlY3RPYmplY3QgPSBzdGF0aWNfY2FzdDxXZWJSZWN0Kj4obV9yb290KTsKLSAg
ICAgICAgICAgIGVuY29kZXIuZW5jb2RlKHJlY3RPYmplY3QtPnJlY3QoKS5vcmlnaW4ueCk7Ci0g
ICAgICAgICAgICBlbmNvZGVyLmVuY29kZShyZWN0T2JqZWN0LT5yZWN0KCkub3JpZ2luLnkpOwot
ICAgICAgICAgICAgZW5jb2Rlci5lbmNvZGUocmVjdE9iamVjdC0+cmVjdCgpLnNpemUud2lkdGgp
OwotICAgICAgICAgICAgZW5jb2Rlci5lbmNvZGUocmVjdE9iamVjdC0+cmVjdCgpLnNpemUuaGVp
Z2h0KTsKKyAgICAgICAgICAgIGVuY29kZXIgPDwgcmVjdE9iamVjdC0+cmVjdCgpLm9yaWdpbi54
OworICAgICAgICAgICAgZW5jb2RlciA8PCByZWN0T2JqZWN0LT5yZWN0KCkub3JpZ2luLnk7Cisg
ICAgICAgICAgICBlbmNvZGVyIDw8IHJlY3RPYmplY3QtPnJlY3QoKS5zaXplLndpZHRoOworICAg
ICAgICAgICAgZW5jb2RlciA8PCByZWN0T2JqZWN0LT5yZWN0KCkuc2l6ZS5oZWlnaHQ7CiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICBjYXNlIEFQSU9iamVjdDo6
VHlwZVJlbmRlckxheWVyOiB7CiAgICAgICAgICAgICBXZWJSZW5kZXJMYXllciogcmVuZGVyTGF5
ZXIgPSBzdGF0aWNfY2FzdDxXZWJSZW5kZXJMYXllcio+KG1fcm9vdCk7Ci0gICAgICAgICAgICBl
bmNvZGVyLmVuY29kZShPd25lcihyZW5kZXJMYXllci0+cmVuZGVyZXIoKSkpOwotICAgICAgICAg
ICAgZW5jb2Rlci5lbmNvZGUocmVuZGVyTGF5ZXItPmlzUmVmbGVjdGlvbigpKTsKLSAgICAgICAg
ICAgIGVuY29kZXIuZW5jb2RlKHJlbmRlckxheWVyLT5pc0NsaXBwaW5nKCkpOwotICAgICAgICAg
ICAgZW5jb2Rlci5lbmNvZGUocmVuZGVyTGF5ZXItPmlzQ2xpcHBlZCgpKTsKLSAgICAgICAgICAg
IGVuY29kZXIuZW5jb2RlKHN0YXRpY19jYXN0PHVpbnQzMl90PihyZW5kZXJMYXllci0+Y29tcG9z
aXRpbmdMYXllclR5cGUoKSkpOwotICAgICAgICAgICAgZW5jb2Rlci5lbmNvZGUocmVuZGVyTGF5
ZXItPmFic29sdXRlQm91bmRpbmdCb3goKSk7Ci0gICAgICAgICAgICBlbmNvZGVyLmVuY29kZShP
d25lcihyZW5kZXJMYXllci0+bmVnYXRpdmVaT3JkZXJMaXN0KCkpKTsKLSAgICAgICAgICAgIGVu
Y29kZXIuZW5jb2RlKE93bmVyKHJlbmRlckxheWVyLT5ub3JtYWxGbG93TGlzdCgpKSk7Ci0gICAg
ICAgICAgICBlbmNvZGVyLmVuY29kZShPd25lcihyZW5kZXJMYXllci0+cG9zaXRpdmVaT3JkZXJM
aXN0KCkpKTsKKyAgICAgICAgICAgIGVuY29kZXIgPDwgT3duZXIocmVuZGVyTGF5ZXItPnJlbmRl
cmVyKCkpOworICAgICAgICAgICAgZW5jb2RlciA8PCByZW5kZXJMYXllci0+aXNSZWZsZWN0aW9u
KCk7CisgICAgICAgICAgICBlbmNvZGVyIDw8IHJlbmRlckxheWVyLT5pc0NsaXBwaW5nKCk7Cisg
ICAgICAgICAgICBlbmNvZGVyIDw8IHJlbmRlckxheWVyLT5pc0NsaXBwZWQoKTsKKyAgICAgICAg
ICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHJlbmRlckxheWVyLT5jb21wb3Np
dGluZ0xheWVyVHlwZSgpKTsKKyAgICAgICAgICAgIGVuY29kZXIgPDwgcmVuZGVyTGF5ZXItPmFi
c29sdXRlQm91bmRpbmdCb3goKTsKKyAgICAgICAgICAgIGVuY29kZXIgPDwgT3duZXIocmVuZGVy
TGF5ZXItPm5lZ2F0aXZlWk9yZGVyTGlzdCgpKTsKKyAgICAgICAgICAgIGVuY29kZXIgPDwgT3du
ZXIocmVuZGVyTGF5ZXItPm5vcm1hbEZsb3dMaXN0KCkpOworICAgICAgICAgICAgZW5jb2RlciA8
PCBPd25lcihyZW5kZXJMYXllci0+cG9zaXRpdmVaT3JkZXJMaXN0KCkpOwogICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBBUElPYmplY3Q6OlR5cGVSZW5k
ZXJPYmplY3Q6IHsKICAgICAgICAgICAgIFdlYlJlbmRlck9iamVjdCogcmVuZGVyT2JqZWN0ID0g
c3RhdGljX2Nhc3Q8V2ViUmVuZGVyT2JqZWN0Kj4obV9yb290KTsKLSAgICAgICAgICAgIGVuY29k
ZXIuZW5jb2RlKHJlbmRlck9iamVjdC0+bmFtZSgpKTsKLSAgICAgICAgICAgIGVuY29kZXIuZW5j
b2RlKHJlbmRlck9iamVjdC0+ZWxlbWVudFRhZ05hbWUoKSk7Ci0gICAgICAgICAgICBlbmNvZGVy
LmVuY29kZShyZW5kZXJPYmplY3QtPmVsZW1lbnRJRCgpKTsKLSAgICAgICAgICAgIGVuY29kZXIu
ZW5jb2RlKE93bmVyKHJlbmRlck9iamVjdC0+ZWxlbWVudENsYXNzTmFtZXMoKSkpOwotICAgICAg
ICAgICAgZW5jb2Rlci5lbmNvZGUocmVuZGVyT2JqZWN0LT5hYnNvbHV0ZVBvc2l0aW9uKCkpOwot
ICAgICAgICAgICAgZW5jb2Rlci5lbmNvZGUocmVuZGVyT2JqZWN0LT5mcmFtZVJlY3QoKSk7Ci0g
ICAgICAgICAgICBlbmNvZGVyLmVuY29kZShPd25lcihyZW5kZXJPYmplY3QtPmNoaWxkcmVuKCku
Z2V0KCkpKTsKKyAgICAgICAgICAgIGVuY29kZXIgPDwgcmVuZGVyT2JqZWN0LT5uYW1lKCk7Cisg
ICAgICAgICAgICBlbmNvZGVyIDw8IHJlbmRlck9iamVjdC0+ZWxlbWVudFRhZ05hbWUoKTsKKyAg
ICAgICAgICAgIGVuY29kZXIgPDwgcmVuZGVyT2JqZWN0LT5lbGVtZW50SUQoKTsKKyAgICAgICAg
ICAgIGVuY29kZXIgPDwgT3duZXIocmVuZGVyT2JqZWN0LT5lbGVtZW50Q2xhc3NOYW1lcygpKTsK
KyAgICAgICAgICAgIGVuY29kZXIgPDwgcmVuZGVyT2JqZWN0LT5hYnNvbHV0ZVBvc2l0aW9uKCk7
CisgICAgICAgICAgICBlbmNvZGVyIDw8IHJlbmRlck9iamVjdC0+ZnJhbWVSZWN0KCk7CisgICAg
ICAgICAgICBlbmNvZGVyIDw8IE93bmVyKHJlbmRlck9iamVjdC0+Y2hpbGRyZW4oKS5nZXQoKSk7
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICBjYXNlIEFQSU9i
amVjdDo6VHlwZVVSTDogewogICAgICAgICAgICAgV2ViVVJMKiB1cmxPYmplY3QgPSBzdGF0aWNf
Y2FzdDxXZWJVUkwqPihtX3Jvb3QpOwotICAgICAgICAgICAgZW5jb2Rlci5lbmNvZGUodXJsT2Jq
ZWN0LT5zdHJpbmcoKSk7CisgICAgICAgICAgICBlbmNvZGVyIDw8IHVybE9iamVjdC0+c3RyaW5n
KCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICBjYXNlIEFQ
SU9iamVjdDo6VHlwZVVSTFJlcXVlc3Q6IHsKICAgICAgICAgICAgIFdlYlVSTFJlcXVlc3QqIHVy
bFJlcXVlc3RPYmplY3QgPSBzdGF0aWNfY2FzdDxXZWJVUkxSZXF1ZXN0Kj4obV9yb290KTsKLSAg
ICAgICAgICAgIGVuY29kZXIuZW5jb2RlKHVybFJlcXVlc3RPYmplY3QtPnJlc291cmNlUmVxdWVz
dCgpKTsKKyAgICAgICAgICAgIGVuY29kZXIgPDwgdXJsUmVxdWVzdE9iamVjdC0+cmVzb3VyY2VS
ZXF1ZXN0KCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICBj
YXNlIEFQSU9iamVjdDo6VHlwZVVzZXJDb250ZW50VVJMUGF0dGVybjogewogICAgICAgICAgICAg
V2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuKiB1cmxQYXR0ZXJuID0gc3RhdGljX2Nhc3Q8V2ViVXNl
ckNvbnRlbnRVUkxQYXR0ZXJuKj4obV9yb290KTsKLSAgICAgICAgICAgIGVuY29kZXIuZW5jb2Rl
KHVybFBhdHRlcm4tPnBhdHRlcm5TdHJpbmcoKSk7CisgICAgICAgICAgICBlbmNvZGVyIDw8IHVy
bFBhdHRlcm4tPnBhdHRlcm5TdHJpbmcoKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAg
ICAgICB9CiAgICAgICAgIGNhc2UgQVBJT2JqZWN0OjpUeXBlSW1hZ2U6IHsKQEAgLTE4OSwyNCAr
MTg5LDI0IEBAIHB1YmxpYzoKICAgICAgICAgICAgIEFTU0VSVCghaW1hZ2UtPmJpdG1hcCgpIHx8
IGltYWdlLT5iaXRtYXAoKS0+aXNCYWNrZWRCeVNoYXJlZE1lbW9yeSgpKTsgICAgICAgICAgICAK
ICAgICAgICAgICAgIGlmICghaW1hZ2UtPmJpdG1hcCgpIHx8ICFpbWFnZS0+Yml0bWFwKCktPmlz
QmFja2VkQnlTaGFyZWRNZW1vcnkoKSB8fCAhaW1hZ2UtPmJpdG1hcCgpLT5jcmVhdGVIYW5kbGUo
aGFuZGxlKSkgewogICAgICAgICAgICAgICAgIC8vIEluaXRpYWwgZmFsc2UgaW5kaWNhdGVzIG5v
IGFsbG9jYXRlZCBiaXRtYXAgb3IgaXMgbm90IHNoYXJlYWJsZS4KLSAgICAgICAgICAgICAgICBl
bmNvZGVyLmVuY29kZShmYWxzZSk7CisgICAgICAgICAgICAgICAgZW5jb2RlciA8PCBmYWxzZTsK
ICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAg
ICAgLy8gSW5pdGlhbCB0cnVlIGluZGljYXRlcyBhIGJpdG1hcCB3YXMgYWxsb2NhdGVkIGFuZCBp
cyBzaGFyZWFibGUuCi0gICAgICAgICAgICBlbmNvZGVyLmVuY29kZSh0cnVlKTsKKyAgICAgICAg
ICAgIGVuY29kZXIgPDwgdHJ1ZTsKIAotICAgICAgICAgICAgZW5jb2Rlci5lbmNvZGUoaGFuZGxl
KTsKKyAgICAgICAgICAgIGVuY29kZXIgPDwgaGFuZGxlOwogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBBUElPYmplY3Q6OlR5cGVEYXRhOiB7CiAgICAg
ICAgICAgICBXZWJEYXRhKiBkYXRhID0gc3RhdGljX2Nhc3Q8V2ViRGF0YSo+KG1fcm9vdCk7Ci0g
ICAgICAgICAgICBlbmNvZGVyLmVuY29kZVZhcmlhYmxlTGVuZ3RoQnl0ZUFycmF5KGRhdGEtPmRh
dGFSZWZlcmVuY2UoKSk7CisgICAgICAgICAgICBlbmNvZGVyIDw8IGRhdGEtPmRhdGFSZWZlcmVu
Y2UoKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
QVBJT2JqZWN0OjpUeXBlQ2VydGlmaWNhdGVJbmZvOiB7CiAgICAgICAgICAgICBXZWJDZXJ0aWZp
Y2F0ZUluZm8qIGNlcnRpZmljYXRlSW5mbyA9IHN0YXRpY19jYXN0PFdlYkNlcnRpZmljYXRlSW5m
byo+KG1fcm9vdCk7Ci0gICAgICAgICAgICBlbmNvZGVyLmVuY29kZShjZXJ0aWZpY2F0ZUluZm8t
PnBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvKCkpOworICAgICAgICAgICAgZW5jb2RlciA8PCBjZXJ0
aWZpY2F0ZUluZm8tPnBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvKCk7CiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICBkZWZhdWx0OgpJbmRleDogU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNwcAkocmV2aXNpb24gMTMy
ODcxKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02MywxMSArNjMsMTEgQEAgdm9pZCBXZWJCYWNrRm9yd2FyZExp
c3RJdGVtOjpzZXRCYWNrRm9ydwogCiB2b2lkIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OmVuY29k
ZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAgZW5jb2Rl
ci5lbmNvZGUobV9vcmlnaW5hbFVSTCk7Ci0gICAgZW5jb2Rlci5lbmNvZGUobV91cmwpOwotICAg
IGVuY29kZXIuZW5jb2RlKG1fdGl0bGUpOwotICAgIGVuY29kZXIuZW5jb2RlKG1faXRlbUlEKTsK
LSAgICBlbmNvZGVyLmVuY29kZShDb3JlSVBDOjpEYXRhUmVmZXJlbmNlKG1fYmFja0ZvcndhcmRE
YXRhKSk7CisgICAgZW5jb2RlciA8PCBtX29yaWdpbmFsVVJMOworICAgIGVuY29kZXIgPDwgbV91
cmw7CisgICAgZW5jb2RlciA8PCBtX3RpdGxlOworICAgIGVuY29kZXIgPDwgbV9pdGVtSUQ7Cisg
ICAgZW5jb2RlciA8PCBDb3JlSVBDOjpEYXRhUmVmZXJlbmNlKG1fYmFja0ZvcndhcmREYXRhKTsK
IH0KIAogUGFzc1JlZlB0cjxXZWJCYWNrRm9yd2FyZExpc3RJdGVtPiBXZWJCYWNrRm9yd2FyZExp
c3RJdGVtOjpkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyJiBkZWNvZGVyKQpJbmRleDog
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvbnRleHRNZW51SXRlbURhdGEuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb250ZXh0TWVudUl0ZW1EYXRhLmNwcAko
cmV2aXNpb24gMTMyODcxKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvbnRleHRNZW51
SXRlbURhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgsMTAgKzEwOCwxMCBAQCB2b2lkIFdl
YkNvbnRleHRNZW51SXRlbURhdGE6OmVuY29kZShDb3JlCiB7CiAgICAgZW5jb2Rlci5lbmNvZGVF
bnVtKG1fdHlwZSk7CiAgICAgZW5jb2Rlci5lbmNvZGVFbnVtKG1fYWN0aW9uKTsKLSAgICBlbmNv
ZGVyLmVuY29kZShtX3RpdGxlKTsKLSAgICBlbmNvZGVyLmVuY29kZShtX2NoZWNrZWQpOwotICAg
IGVuY29kZXIuZW5jb2RlKG1fZW5hYmxlZCk7Ci0gICAgZW5jb2Rlci5lbmNvZGUobV9zdWJtZW51
KTsKKyAgICBlbmNvZGVyIDw8IG1fdGl0bGU7CisgICAgZW5jb2RlciA8PCBtX2NoZWNrZWQ7Cisg
ICAgZW5jb2RlciA8PCBtX2VuYWJsZWQ7CisgICAgZW5jb2RlciA8PCBtX3N1Ym1lbnU7CiB9CiAK
IGJvb2wgV2ViQ29udGV4dE1lbnVJdGVtRGF0YTo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVj
b2RlciogZGVjb2RlciwgV2ViQ29udGV4dE1lbnVJdGVtRGF0YSYgaXRlbSkKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9XZWJFdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYkV2ZW50LmNwcAkocmV2aXNpb24gMTMyODcxKQorKysgU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYkV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsOSArNDgsOSBAQCBX
ZWJFdmVudDo6V2ViRXZlbnQoVHlwZSB0eXBlLCBNb2RpZmllcnMgCiAKIHZvaWQgV2ViRXZlbnQ6
OmVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAg
ZW5jb2Rlci5lbmNvZGUobV90eXBlKTsKLSAgICBlbmNvZGVyLmVuY29kZShtX21vZGlmaWVycyk7
Ci0gICAgZW5jb2Rlci5lbmNvZGUobV90aW1lc3RhbXApOworICAgIGVuY29kZXIgPDwgbV90eXBl
OworICAgIGVuY29kZXIgPDwgbV9tb2RpZmllcnM7CisgICAgZW5jb2RlciA8PCBtX3RpbWVzdGFt
cDsKIH0KIAogYm9vbCBXZWJFdmVudDo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2Rlciog
ZGVjb2RlciwgV2ViRXZlbnQmIHJlc3VsdCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9X
ZWJHZXN0dXJlRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9X
ZWJHZXN0dXJlRXZlbnQuY3BwCShyZXZpc2lvbiAxMzI4NzEpCisrKyBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViR2VzdHVyZUV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTcsMTAgKzU3LDEw
IEBAIHZvaWQgV2ViR2VzdHVyZUV2ZW50OjplbmNvZGUoQ29yZUlQQzo6QXIKIHsKICAgICBXZWJF
dmVudDo6ZW5jb2RlKGVuY29kZXIpOwogCi0gICAgZW5jb2Rlci5lbmNvZGUobV9wb3NpdGlvbik7
Ci0gICAgZW5jb2Rlci5lbmNvZGUobV9nbG9iYWxQb3NpdGlvbik7Ci0gICAgZW5jb2Rlci5lbmNv
ZGUobV9hcmVhKTsKLSAgICBlbmNvZGVyLmVuY29kZShtX2RlbHRhKTsKKyAgICBlbmNvZGVyIDw8
IG1fcG9zaXRpb247CisgICAgZW5jb2RlciA8PCBtX2dsb2JhbFBvc2l0aW9uOworICAgIGVuY29k
ZXIgPDwgbV9hcmVhOworICAgIGVuY29kZXIgPDwgbV9kZWx0YTsKIH0KIAogYm9vbCBXZWJHZXN0
dXJlRXZlbnQ6OmRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFdlYkdl
c3R1cmVFdmVudCYgdCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJIaXRUZXN0UmVz
dWx0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViSGl0VGVzdFJl
c3VsdC5jcHAJKHJldmlzaW9uIDEzMjg3MSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJI
aXRUZXN0UmVzdWx0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsMTQgKzM2LDE0IEBAIFBhc3NS
ZWZQdHI8V2ViSGl0VGVzdFJlc3VsdD4gV2ViSGl0VGVzdFIKIAogdm9pZCBXZWJIaXRUZXN0UmVz
dWx0OjpEYXRhOjplbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb25z
dAogewotICAgIGVuY29kZXIuZW5jb2RlKGFic29sdXRlSW1hZ2VVUkwpOwotICAgIGVuY29kZXIu
ZW5jb2RlKGFic29sdXRlUERGVVJMKTsKLSAgICBlbmNvZGVyLmVuY29kZShhYnNvbHV0ZUxpbmtV
UkwpOwotICAgIGVuY29kZXIuZW5jb2RlKGFic29sdXRlTWVkaWFVUkwpOwotICAgIGVuY29kZXIu
ZW5jb2RlKGxpbmtMYWJlbCk7Ci0gICAgZW5jb2Rlci5lbmNvZGUobGlua1RpdGxlKTsKLSAgICBl
bmNvZGVyLmVuY29kZShpc0NvbnRlbnRFZGl0YWJsZSk7Ci0gICAgZW5jb2Rlci5lbmNvZGUoZWxl
bWVudEJvdW5kaW5nQm94KTsKKyAgICBlbmNvZGVyIDw8IGFic29sdXRlSW1hZ2VVUkw7CisgICAg
ZW5jb2RlciA8PCBhYnNvbHV0ZVBERlVSTDsKKyAgICBlbmNvZGVyIDw8IGFic29sdXRlTGlua1VS
TDsKKyAgICBlbmNvZGVyIDw8IGFic29sdXRlTWVkaWFVUkw7CisgICAgZW5jb2RlciA8PCBsaW5r
TGFiZWw7CisgICAgZW5jb2RlciA8PCBsaW5rVGl0bGU7CisgICAgZW5jb2RlciA8PCBpc0NvbnRl
bnRFZGl0YWJsZTsKKyAgICBlbmNvZGVyIDw8IGVsZW1lbnRCb3VuZGluZ0JveDsKIH0KIAogYm9v
bCBXZWJIaXRUZXN0UmVzdWx0OjpEYXRhOjpkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVy
KiBkZWNvZGVyLCBXZWJIaXRUZXN0UmVzdWx0OjpEYXRhJiBoaXRUZXN0UmVzdWx0RGF0YSkKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJLZXlib2FyZEV2ZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViS2V5Ym9hcmRFdmVudC5jcHAJKHJldmlzaW9u
IDEzMjg3MSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJLZXlib2FyZEV2ZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDksMTUgKzQ5LDE1IEBAIHZvaWQgV2ViS2V5Ym9hcmRFdmVudDo6
ZW5jb2RlKENvcmVJUEM6OkEKIHsKICAgICBXZWJFdmVudDo6ZW5jb2RlKGVuY29kZXIpOwogCi0g
ICAgZW5jb2Rlci5lbmNvZGUobV90ZXh0KTsKLSAgICBlbmNvZGVyLmVuY29kZShtX3VubW9kaWZp
ZWRUZXh0KTsKLSAgICBlbmNvZGVyLmVuY29kZShtX2tleUlkZW50aWZpZXIpOwotICAgIGVuY29k
ZXIuZW5jb2RlKG1fd2luZG93c1ZpcnR1YWxLZXlDb2RlKTsKLSAgICBlbmNvZGVyLmVuY29kZSht
X25hdGl2ZVZpcnR1YWxLZXlDb2RlKTsKLSAgICBlbmNvZGVyLmVuY29kZShtX21hY0NoYXJDb2Rl
KTsKLSAgICBlbmNvZGVyLmVuY29kZShtX2lzQXV0b1JlcGVhdCk7Ci0gICAgZW5jb2Rlci5lbmNv
ZGUobV9pc0tleXBhZCk7Ci0gICAgZW5jb2Rlci5lbmNvZGUobV9pc1N5c3RlbUtleSk7CisgICAg
ZW5jb2RlciA8PCBtX3RleHQ7CisgICAgZW5jb2RlciA8PCBtX3VubW9kaWZpZWRUZXh0OworICAg
IGVuY29kZXIgPDwgbV9rZXlJZGVudGlmaWVyOworICAgIGVuY29kZXIgPDwgbV93aW5kb3dzVmly
dHVhbEtleUNvZGU7CisgICAgZW5jb2RlciA8PCBtX25hdGl2ZVZpcnR1YWxLZXlDb2RlOworICAg
IGVuY29kZXIgPDwgbV9tYWNDaGFyQ29kZTsKKyAgICBlbmNvZGVyIDw8IG1faXNBdXRvUmVwZWF0
OworICAgIGVuY29kZXIgPDwgbV9pc0tleXBhZDsKKyAgICBlbmNvZGVyIDw8IG1faXNTeXN0ZW1L
ZXk7CiB9CiAKIGJvb2wgV2ViS2V5Ym9hcmRFdmVudDo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50
RGVjb2RlciogZGVjb2RlciwgV2ViS2V5Ym9hcmRFdmVudCYgcmVzdWx0KQpJbmRleDogU291cmNl
L1dlYktpdDIvU2hhcmVkL1dlYk1vdXNlRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9XZWJNb3VzZUV2ZW50LmNwcAkocmV2aXNpb24gMTMyODcxKQorKysgU291
cmNlL1dlYktpdDIvU2hhcmVkL1dlYk1vdXNlRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04
MiwxNiArODIsMTYgQEAgdm9pZCBXZWJNb3VzZUV2ZW50OjplbmNvZGUoQ29yZUlQQzo6QXJndQog
ewogICAgIFdlYkV2ZW50OjplbmNvZGUoZW5jb2Rlcik7CiAKLSAgICBlbmNvZGVyLmVuY29kZSht
X2J1dHRvbik7Ci0gICAgZW5jb2Rlci5lbmNvZGUobV9wb3NpdGlvbik7Ci0gICAgZW5jb2Rlci5l
bmNvZGUobV9nbG9iYWxQb3NpdGlvbik7Ci0gICAgZW5jb2Rlci5lbmNvZGUobV9kZWx0YVgpOwot
ICAgIGVuY29kZXIuZW5jb2RlKG1fZGVsdGFZKTsKLSAgICBlbmNvZGVyLmVuY29kZShtX2RlbHRh
Wik7Ci0gICAgZW5jb2Rlci5lbmNvZGUobV9jbGlja0NvdW50KTsKKyAgICBlbmNvZGVyIDw8IG1f
YnV0dG9uOworICAgIGVuY29kZXIgPDwgbV9wb3NpdGlvbjsKKyAgICBlbmNvZGVyIDw8IG1fZ2xv
YmFsUG9zaXRpb247CisgICAgZW5jb2RlciA8PCBtX2RlbHRhWDsKKyAgICBlbmNvZGVyIDw8IG1f
ZGVsdGFZOworICAgIGVuY29kZXIgPDwgbV9kZWx0YVo7CisgICAgZW5jb2RlciA8PCBtX2NsaWNr
Q291bnQ7CiAKICNpZiBQTEFURk9STShXSU4pCi0gICAgZW5jb2Rlci5lbmNvZGUobV9kaWRBY3Rp
dmF0ZVdlYlZpZXcpOworICAgIGVuY29kZXIgPDwgbV9kaWRBY3RpdmF0ZVdlYlZpZXc7CiAjZW5k
aWYKIH0KIApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYk5hdmlnYXRpb25EYXRhU3Rv
cmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViTmF2aWdhdGlvbkRh
dGFTdG9yZS5oCShyZXZpc2lvbiAxMzI4NzEpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vi
TmF2aWdhdGlvbkRhdGFTdG9yZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw5ICszNyw5IEBAIG5h
bWVzcGFjZSBXZWJLaXQgewogc3RydWN0IFdlYk5hdmlnYXRpb25EYXRhU3RvcmUgewogICAgIHZv
aWQgZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICB7
Ci0gICAgICAgIGVuY29kZXIuZW5jb2RlKHVybCk7Ci0gICAgICAgIGVuY29kZXIuZW5jb2RlKHRp
dGxlKTsKLSAgICAgICAgZW5jb2Rlci5lbmNvZGUob3JpZ2luYWxSZXF1ZXN0KTsKKyAgICAgICAg
ZW5jb2RlciA8PCB1cmw7CisgICAgICAgIGVuY29kZXIgPDwgdGl0bGU7CisgICAgICAgIGVuY29k
ZXIgPDwgb3JpZ2luYWxSZXF1ZXN0OwogICAgIH0KIAogICAgIHN0YXRpYyBib29sIGRlY29kZShD
b3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFdlYk5hdmlnYXRpb25EYXRhU3RvcmUm
IHN0b3JlKQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzLmNwcAkocmV2aXNpb24gMTMyODcxKQorKysgU291cmNlL1dlYktpdDIv
U2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
Miw0MCArMzIsNDAgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHZvaWQgV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVyczo6ZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciYgZW5jb2RlcikgY29u
c3QKIHsKLSAgICBlbmNvZGVyLmVuY29kZSh2aWV3U2l6ZSk7Ci0gICAgZW5jb2Rlci5lbmNvZGUo
aXNBY3RpdmUpOwotICAgIGVuY29kZXIuZW5jb2RlKGlzRm9jdXNlZCk7Ci0gICAgZW5jb2Rlci5l
bmNvZGUoaXNWaXNpYmxlKTsKLSAgICBlbmNvZGVyLmVuY29kZShpc0luV2luZG93KTsKKyAgICBl
bmNvZGVyIDw8IHZpZXdTaXplOworICAgIGVuY29kZXIgPDwgaXNBY3RpdmU7CisgICAgZW5jb2Rl
ciA8PCBpc0ZvY3VzZWQ7CisgICAgZW5jb2RlciA8PCBpc1Zpc2libGU7CisgICAgZW5jb2RlciA8
PCBpc0luV2luZG93OwogCi0gICAgZW5jb2Rlci5lbmNvZGUoc3RvcmUpOworICAgIGVuY29kZXIg
PDwgc3RvcmU7CiAgICAgZW5jb2Rlci5lbmNvZGVFbnVtKGRyYXdpbmdBcmVhVHlwZSk7Ci0gICAg
ZW5jb2Rlci5lbmNvZGUocGFnZUdyb3VwRGF0YSk7Ci0gICAgZW5jb2Rlci5lbmNvZGUoZHJhd3NC
YWNrZ3JvdW5kKTsKLSAgICBlbmNvZGVyLmVuY29kZShkcmF3c1RyYW5zcGFyZW50QmFja2dyb3Vu
ZCk7Ci0gICAgZW5jb2Rlci5lbmNvZGUoYXJlTWVtb3J5Q2FjaGVDbGllbnRDYWxsc0VuYWJsZWQp
OwotICAgIGVuY29kZXIuZW5jb2RlKHVzZUZpeGVkTGF5b3V0KTsKLSAgICBlbmNvZGVyLmVuY29k
ZShmaXhlZExheW91dFNpemUpOworICAgIGVuY29kZXIgPDwgcGFnZUdyb3VwRGF0YTsKKyAgICBl
bmNvZGVyIDw8IGRyYXdzQmFja2dyb3VuZDsKKyAgICBlbmNvZGVyIDw8IGRyYXdzVHJhbnNwYXJl
bnRCYWNrZ3JvdW5kOworICAgIGVuY29kZXIgPDwgYXJlTWVtb3J5Q2FjaGVDbGllbnRDYWxsc0Vu
YWJsZWQ7CisgICAgZW5jb2RlciA8PCB1c2VGaXhlZExheW91dDsKKyAgICBlbmNvZGVyIDw8IGZp
eGVkTGF5b3V0U2l6ZTsKICAgICBlbmNvZGVyLmVuY29kZUVudW0ocGFnaW5hdGlvbk1vZGUpOwot
ICAgIGVuY29kZXIuZW5jb2RlKHBhZ2luYXRpb25CZWhhdmVzTGlrZUNvbHVtbnMpOwotICAgIGVu
Y29kZXIuZW5jb2RlKHBhZ2VMZW5ndGgpOwotICAgIGVuY29kZXIuZW5jb2RlKGdhcEJldHdlZW5Q
YWdlcyk7Ci0gICAgZW5jb2Rlci5lbmNvZGUodXNlckFnZW50KTsKLSAgICBlbmNvZGVyLmVuY29k
ZShzZXNzaW9uU3RhdGUpOwotICAgIGVuY29kZXIuZW5jb2RlKGhpZ2hlc3RVc2VkQmFja0Zvcndh
cmRJdGVtSUQpOwotICAgIGVuY29kZXIuZW5jb2RlKGNhblJ1bkJlZm9yZVVubG9hZENvbmZpcm1Q
YW5lbCk7Ci0gICAgZW5jb2Rlci5lbmNvZGUoY2FuUnVuTW9kYWwpOwotICAgIGVuY29kZXIuZW5j
b2RlKGRldmljZVNjYWxlRmFjdG9yKTsKLSAgICBlbmNvZGVyLmVuY29kZShtZWRpYVZvbHVtZSk7
CisgICAgZW5jb2RlciA8PCBwYWdpbmF0aW9uQmVoYXZlc0xpa2VDb2x1bW5zOworICAgIGVuY29k
ZXIgPDwgcGFnZUxlbmd0aDsKKyAgICBlbmNvZGVyIDw8IGdhcEJldHdlZW5QYWdlczsKKyAgICBl
bmNvZGVyIDw8IHVzZXJBZ2VudDsKKyAgICBlbmNvZGVyIDw8IHNlc3Npb25TdGF0ZTsKKyAgICBl
bmNvZGVyIDw8IGhpZ2hlc3RVc2VkQmFja0ZvcndhcmRJdGVtSUQ7CisgICAgZW5jb2RlciA8PCBj
YW5SdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWw7CisgICAgZW5jb2RlciA8PCBjYW5SdW5Nb2Rh
bDsKKyAgICBlbmNvZGVyIDw8IGRldmljZVNjYWxlRmFjdG9yOworICAgIGVuY29kZXIgPDwgbWVk
aWFWb2x1bWU7CiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgZW5jb2Rlci5lbmNvZGUoaXNTbWFy
dEluc2VydERlbGV0ZUVuYWJsZWQpOworICAgIGVuY29kZXIgPDwgaXNTbWFydEluc2VydERlbGV0
ZUVuYWJsZWQ7CiAgICAgZW5jb2Rlci5lbmNvZGVFbnVtKGxheWVySG9zdGluZ01vZGUpOwotICAg
IGVuY29kZXIuZW5jb2RlKGNvbG9yU3BhY2UpOworICAgIGVuY29kZXIgPDwgY29sb3JTcGFjZTsK
ICNlbmRpZgogCiAjaWYgUExBVEZPUk0oV0lOKQotICAgIGVuY29kZXIuZW5jb2RlKHJlaW50ZXJw
cmV0X2Nhc3Q8dWludDY0X3Q+KG5hdGl2ZVdpbmRvdykpOworICAgIGVuY29kZXIgPDwgcmVpbnRl
cnByZXRfY2FzdDx1aW50NjRfdD4obmF0aXZlV2luZG93KTsKICNlbmRpZgogfQogCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUGFnZUdyb3VwRGF0YS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBhZ2VHcm91cERhdGEuY3BwCShyZXZpc2lvbiAxMzI4
NzEpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUGFnZUdyb3VwRGF0YS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMyLDEyICszMiwxMiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdm9pZCBX
ZWJQYWdlR3JvdXBEYXRhOjplbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAogewotICAgIGVuY29kZXIuZW5jb2RlKGlkZW50aWZlcik7Ci0gICAgZW5jb2Rlci5l
bmNvZGUocGFnZUdyb3VwSUQpOwotICAgIGVuY29kZXIuZW5jb2RlKHZpc2libGVUb0luamVjdGVk
QnVuZGxlKTsKLSAgICBlbmNvZGVyLmVuY29kZSh2aXNpYmxlVG9IaXN0b3J5Q2xpZW50KTsKLSAg
ICBlbmNvZGVyLmVuY29kZSh1c2VyU3R5bGVTaGVldHMpOwotICAgIGVuY29kZXIuZW5jb2RlKHVz
ZXJTY3JpcHRzKTsKKyAgICBlbmNvZGVyIDw8IGlkZW50aWZlcjsKKyAgICBlbmNvZGVyIDw8IHBh
Z2VHcm91cElEOworICAgIGVuY29kZXIgPDwgdmlzaWJsZVRvSW5qZWN0ZWRCdW5kbGU7CisgICAg
ZW5jb2RlciA8PCB2aXNpYmxlVG9IaXN0b3J5Q2xpZW50OworICAgIGVuY29kZXIgPDwgdXNlclN0
eWxlU2hlZXRzOworICAgIGVuY29kZXIgPDwgdXNlclNjcmlwdHM7CiB9CiAKIGJvb2wgV2ViUGFn
ZUdyb3VwRGF0YTo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgV2Vi
UGFnZUdyb3VwRGF0YSYgZGF0YSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQbGF0
Zm9ybVRvdWNoUG9pbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9X
ZWJQbGF0Zm9ybVRvdWNoUG9pbnQuY3BwCShyZXZpc2lvbiAxMzI4NzEpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2ViUGxhdGZvcm1Ub3VjaFBvaW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTksMTMgKzU5LDEzIEBAIFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6V2ViUGxhdGZvcm1Ub3VjaFAK
IAogdm9pZCBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ6OmVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVu
Y29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAgZW5jb2Rlci5lbmNvZGUobV9pZCk7Ci0gICAg
ZW5jb2Rlci5lbmNvZGUobV9zdGF0ZSk7Ci0gICAgZW5jb2Rlci5lbmNvZGUobV9zY3JlZW5Qb3Np
dGlvbik7Ci0gICAgZW5jb2Rlci5lbmNvZGUobV9wb3NpdGlvbik7Ci0gICAgZW5jb2Rlci5lbmNv
ZGUobV9yYWRpdXMpOwotICAgIGVuY29kZXIuZW5jb2RlKG1fcm90YXRpb25BbmdsZSk7Ci0gICAg
ZW5jb2Rlci5lbmNvZGUobV9mb3JjZSk7CisgICAgZW5jb2RlciA8PCBtX2lkOworICAgIGVuY29k
ZXIgPDwgbV9zdGF0ZTsKKyAgICBlbmNvZGVyIDw8IG1fc2NyZWVuUG9zaXRpb247CisgICAgZW5j
b2RlciA8PCBtX3Bvc2l0aW9uOworICAgIGVuY29kZXIgPDwgbV9yYWRpdXM7CisgICAgZW5jb2Rl
ciA8PCBtX3JvdGF0aW9uQW5nbGU7CisgICAgZW5jb2RlciA8PCBtX2ZvcmNlOwogfQogCiBib29s
IFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2Rlciog
ZGVjb2RlciwgV2ViUGxhdGZvcm1Ub3VjaFBvaW50JiByZXN1bHQpCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2ViUG9wdXBJdGVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvV2ViUG9wdXBJdGVtLmNwcAkocmV2aXNpb24gMTMyODcxKQorKysgU291cmNlL1dl
YktpdDIvU2hhcmVkL1dlYlBvcHVwSXRlbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5LDE0ICs2
OSwxNCBAQCBXZWJQb3B1cEl0ZW06OldlYlBvcHVwSXRlbShUeXBlIHR5cGUsIGNvCiB2b2lkIFdl
YlBvcHVwSXRlbTo6ZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciYgZW5jb2RlcikgY29u
c3QKIHsKICAgICBlbmNvZGVyLmVuY29kZUVudW0obV90eXBlKTsKLSAgICBlbmNvZGVyLmVuY29k
ZShtX3RleHQpOworICAgIGVuY29kZXIgPDwgbV90ZXh0OwogICAgIGVuY29kZXIuZW5jb2RlRW51
bShtX3RleHREaXJlY3Rpb24pOwotICAgIGVuY29kZXIuZW5jb2RlKG1faGFzVGV4dERpcmVjdGlv
bk92ZXJyaWRlKTsKLSAgICBlbmNvZGVyLmVuY29kZShtX3Rvb2xUaXApOwotICAgIGVuY29kZXIu
ZW5jb2RlKG1fYWNjZXNzaWJpbGl0eVRleHQpOwotICAgIGVuY29kZXIuZW5jb2RlKG1faXNFbmFi
bGVkKTsKLSAgICBlbmNvZGVyLmVuY29kZShtX2lzTGFiZWwpOwotICAgIGVuY29kZXIuZW5jb2Rl
KG1faXNTZWxlY3RlZCk7CisgICAgZW5jb2RlciA8PCBtX2hhc1RleHREaXJlY3Rpb25PdmVycmlk
ZTsKKyAgICBlbmNvZGVyIDw8IG1fdG9vbFRpcDsKKyAgICBlbmNvZGVyIDw8IG1fYWNjZXNzaWJp
bGl0eVRleHQ7CisgICAgZW5jb2RlciA8PCBtX2lzRW5hYmxlZDsKKyAgICBlbmNvZGVyIDw8IG1f
aXNMYWJlbDsKKyAgICBlbmNvZGVyIDw8IG1faXNTZWxlY3RlZDsKIH0KIAogYm9vbCBXZWJQb3B1
cEl0ZW06OmRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFdlYlBvcHVw
SXRlbSYgaXRlbSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcmVmZXJlbmNlc1N0
b3JlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJlZmVyZW5j
ZXNTdG9yZS5jcHAJKHJldmlzaW9uIDEzMjg3MSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9X
ZWJQcmVmZXJlbmNlc1N0b3JlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjEsMTEgKzYxLDExIEBA
IFdlYlByZWZlcmVuY2VzU3RvcmU6OldlYlByZWZlcmVuY2VzU3RvcmUKIAogdm9pZCBXZWJQcmVm
ZXJlbmNlc1N0b3JlOjplbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBj
b25zdAogewotICAgIGVuY29kZXIuZW5jb2RlKG1fc3RyaW5nVmFsdWVzKTsKLSAgICBlbmNvZGVy
LmVuY29kZShtX2Jvb2xWYWx1ZXMpOwotICAgIGVuY29kZXIuZW5jb2RlKG1fdWludDMyVmFsdWVz
KTsKLSAgICBlbmNvZGVyLmVuY29kZShtX2RvdWJsZVZhbHVlcyk7Ci0gICAgZW5jb2Rlci5lbmNv
ZGUobV9mbG9hdFZhbHVlcyk7CisgICAgZW5jb2RlciA8PCBtX3N0cmluZ1ZhbHVlczsKKyAgICBl
bmNvZGVyIDw8IG1fYm9vbFZhbHVlczsKKyAgICBlbmNvZGVyIDw8IG1fdWludDMyVmFsdWVzOwor
ICAgIGVuY29kZXIgPDwgbV9kb3VibGVWYWx1ZXM7CisgICAgZW5jb2RlciA8PCBtX2Zsb2F0VmFs
dWVzOwogfQogCiBib29sIFdlYlByZWZlcmVuY2VzU3RvcmU6OmRlY29kZShDb3JlSVBDOjpBcmd1
bWVudERlY29kZXIqIGRlY29kZXIsIFdlYlByZWZlcmVuY2VzU3RvcmUmIHJlc3VsdCkKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycy5jcHAJKHJldmlzaW9uIDEzMjg3MSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9X
ZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsNjcg
KzU0LDY3IEBAIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OldlYlByb2Nlc3MKIAogdm9p
ZCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRF
bmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewotICAgIGVuY29kZXIuZW5jb2RlKGluamVjdGVkQnVu
ZGxlUGF0aCk7Ci0gICAgZW5jb2Rlci5lbmNvZGUoaW5qZWN0ZWRCdW5kbGVQYXRoRXh0ZW5zaW9u
SGFuZGxlKTsKLSAgICBlbmNvZGVyLmVuY29kZShhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KTsK
LSAgICBlbmNvZGVyLmVuY29kZShhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFu
ZGxlKTsKLSAgICBlbmNvZGVyLmVuY29kZShkYXRhYmFzZURpcmVjdG9yeSk7Ci0gICAgZW5jb2Rl
ci5lbmNvZGUoZGF0YWJhc2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwotICAgIGVuY29kZXIu
ZW5jb2RlKGxvY2FsU3RvcmFnZURpcmVjdG9yeSk7Ci0gICAgZW5jb2Rlci5lbmNvZGUobG9jYWxT
dG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKLSAgICBlbmNvZGVyLmVuY29kZShkaXNr
Q2FjaGVEaXJlY3RvcnkpOwotICAgIGVuY29kZXIuZW5jb2RlKGRpc2tDYWNoZURpcmVjdG9yeUV4
dGVuc2lvbkhhbmRsZSk7Ci0gICAgZW5jb2Rlci5lbmNvZGUoY29va2llU3RvcmFnZURpcmVjdG9y
eSk7Ci0gICAgZW5jb2Rlci5lbmNvZGUoY29va2llU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhh
bmRsZSk7Ci0gICAgZW5jb2Rlci5lbmNvZGUodXJsU2NoZW1lc1JlZ2lzdGVyZXJkQXNFbXB0eURv
Y3VtZW50KTsKLSAgICBlbmNvZGVyLmVuY29kZSh1cmxTY2hlbWVzUmVnaXN0ZXJlZEFzU2VjdXJl
KTsKLSAgICBlbmNvZGVyLmVuY29kZSh1cmxTY2hlbWVzRm9yV2hpY2hEb21haW5SZWxheGF0aW9u
SXNGb3JiaWRkZW4pOwotICAgIGVuY29kZXIuZW5jb2RlKHVybFNjaGVtZXNSZWdpc3RlcmVkQXNM
b2NhbCk7Ci0gICAgZW5jb2Rlci5lbmNvZGUodXJsU2NoZW1lc1JlZ2lzdGVyZWRBc05vQWNjZXNz
KTsKLSAgICBlbmNvZGVyLmVuY29kZSh1cmxTY2hlbWVzUmVnaXN0ZXJlZEFzRGlzcGxheUlzb2xh
dGVkKTsKLSAgICBlbmNvZGVyLmVuY29kZSh1cmxTY2hlbWVzUmVnaXN0ZXJlZEFzQ09SU0VuYWJs
ZWQpOworICAgIGVuY29kZXIgPDwgaW5qZWN0ZWRCdW5kbGVQYXRoOworICAgIGVuY29kZXIgPDwg
aW5qZWN0ZWRCdW5kbGVQYXRoRXh0ZW5zaW9uSGFuZGxlOworICAgIGVuY29kZXIgPDwgYXBwbGlj
YXRpb25DYWNoZURpcmVjdG9yeTsKKyAgICBlbmNvZGVyIDw8IGFwcGxpY2F0aW9uQ2FjaGVEaXJl
Y3RvcnlFeHRlbnNpb25IYW5kbGU7CisgICAgZW5jb2RlciA8PCBkYXRhYmFzZURpcmVjdG9yeTsK
KyAgICBlbmNvZGVyIDw8IGRhdGFiYXNlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOworICAgIGVu
Y29kZXIgPDwgbG9jYWxTdG9yYWdlRGlyZWN0b3J5OworICAgIGVuY29kZXIgPDwgbG9jYWxTdG9y
YWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOworICAgIGVuY29kZXIgPDwgZGlza0NhY2hlRGly
ZWN0b3J5OworICAgIGVuY29kZXIgPDwgZGlza0NhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxl
OworICAgIGVuY29kZXIgPDwgY29va2llU3RvcmFnZURpcmVjdG9yeTsKKyAgICBlbmNvZGVyIDw8
IGNvb2tpZVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CisgICAgZW5jb2RlciA8PCB1
cmxTY2hlbWVzUmVnaXN0ZXJlcmRBc0VtcHR5RG9jdW1lbnQ7CisgICAgZW5jb2RlciA8PCB1cmxT
Y2hlbWVzUmVnaXN0ZXJlZEFzU2VjdXJlOworICAgIGVuY29kZXIgPDwgdXJsU2NoZW1lc0Zvcldo
aWNoRG9tYWluUmVsYXhhdGlvbklzRm9yYmlkZGVuOworICAgIGVuY29kZXIgPDwgdXJsU2NoZW1l
c1JlZ2lzdGVyZWRBc0xvY2FsOworICAgIGVuY29kZXIgPDwgdXJsU2NoZW1lc1JlZ2lzdGVyZWRB
c05vQWNjZXNzOworICAgIGVuY29kZXIgPDwgdXJsU2NoZW1lc1JlZ2lzdGVyZWRBc0Rpc3BsYXlJ
c29sYXRlZDsKKyAgICBlbmNvZGVyIDw8IHVybFNjaGVtZXNSZWdpc3RlcmVkQXNDT1JTRW5hYmxl
ZDsKICAgICBlbmNvZGVyLmVuY29kZUVudW0oY2FjaGVNb2RlbCk7Ci0gICAgZW5jb2Rlci5lbmNv
ZGUoc2hvdWxkVHJhY2tWaXNpdGVkTGlua3MpOwotICAgIGVuY29kZXIuZW5jb2RlKHNob3VsZEFs
d2F5c1VzZUNvbXBsZXhUZXh0Q29kZVBhdGgpOwotICAgIGVuY29kZXIuZW5jb2RlKHNob3VsZFVz
ZUZvbnRTbW9vdGhpbmcpOwotICAgIGVuY29kZXIuZW5jb2RlKGljb25EYXRhYmFzZUVuYWJsZWQp
OwotICAgIGVuY29kZXIuZW5jb2RlKHRlcm1pbmF0aW9uVGltZW91dCk7Ci0gICAgZW5jb2Rlci5l
bmNvZGUobGFuZ3VhZ2VzKTsKLSAgICBlbmNvZGVyLmVuY29kZSh0ZXh0Q2hlY2tlclN0YXRlKTsK
LSAgICBlbmNvZGVyLmVuY29kZShmdWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVkKTsKLSAgICBlbmNv
ZGVyLmVuY29kZShkZWZhdWx0UmVxdWVzdFRpbWVvdXRJbnRlcnZhbCk7CisgICAgZW5jb2RlciA8
PCBzaG91bGRUcmFja1Zpc2l0ZWRMaW5rczsKKyAgICBlbmNvZGVyIDw8IHNob3VsZEFsd2F5c1Vz
ZUNvbXBsZXhUZXh0Q29kZVBhdGg7CisgICAgZW5jb2RlciA8PCBzaG91bGRVc2VGb250U21vb3Ro
aW5nOworICAgIGVuY29kZXIgPDwgaWNvbkRhdGFiYXNlRW5hYmxlZDsKKyAgICBlbmNvZGVyIDw8
IHRlcm1pbmF0aW9uVGltZW91dDsKKyAgICBlbmNvZGVyIDw8IGxhbmd1YWdlczsKKyAgICBlbmNv
ZGVyIDw8IHRleHRDaGVja2VyU3RhdGU7CisgICAgZW5jb2RlciA8PCBmdWxsS2V5Ym9hcmRBY2Nl
c3NFbmFibGVkOworICAgIGVuY29kZXIgPDwgZGVmYXVsdFJlcXVlc3RUaW1lb3V0SW50ZXJ2YWw7
CiAjaWYgUExBVEZPUk0oTUFDKSB8fCBVU0UoQ0ZVUkxTVE9SQUdFU0VTU0lPTlMpCi0gICAgZW5j
b2Rlci5lbmNvZGUodWlQcm9jZXNzQnVuZGxlSWRlbnRpZmllcik7CisgICAgZW5jb2RlciA8PCB1
aVByb2Nlc3NCdW5kbGVJZGVudGlmaWVyOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oTUFDKQotICAg
IGVuY29kZXIuZW5jb2RlKHBhcmVudFByb2Nlc3NOYW1lKTsKLSAgICBlbmNvZGVyLmVuY29kZShw
cmVzZW50ZXJBcHBsaWNhdGlvblBpZCk7Ci0gICAgZW5jb2Rlci5lbmNvZGUobnNVUkxDYWNoZU1l
bW9yeUNhcGFjaXR5KTsKLSAgICBlbmNvZGVyLmVuY29kZShuc1VSTENhY2hlRGlza0NhcGFjaXR5
KTsKLSAgICBlbmNvZGVyLmVuY29kZShhY2NlbGVyYXRlZENvbXBvc2l0aW5nUG9ydCk7Ci0gICAg
ZW5jb2Rlci5lbmNvZGUodWlQcm9jZXNzQnVuZGxlUmVzb3VyY2VQYXRoKTsKLSAgICBlbmNvZGVy
LmVuY29kZSh1aVByb2Nlc3NCdW5kbGVSZXNvdXJjZVBhdGhFeHRlbnNpb25IYW5kbGUpOwotICAg
IGVuY29kZXIuZW5jb2RlKHNob3VsZEZvcmNlU2NyZWVuRm9udFN1YnN0aXR1dGlvbik7Ci0gICAg
ZW5jb2Rlci5lbmNvZGUoc2hvdWxkRW5hYmxlS2VybmluZ0FuZExpZ2F0dXJlc0J5RGVmYXVsdCk7
CisgICAgZW5jb2RlciA8PCBwYXJlbnRQcm9jZXNzTmFtZTsKKyAgICBlbmNvZGVyIDw8IHByZXNl
bnRlckFwcGxpY2F0aW9uUGlkOworICAgIGVuY29kZXIgPDwgbnNVUkxDYWNoZU1lbW9yeUNhcGFj
aXR5OworICAgIGVuY29kZXIgPDwgbnNVUkxDYWNoZURpc2tDYXBhY2l0eTsKKyAgICBlbmNvZGVy
IDw8IGFjY2VsZXJhdGVkQ29tcG9zaXRpbmdQb3J0OworICAgIGVuY29kZXIgPDwgdWlQcm9jZXNz
QnVuZGxlUmVzb3VyY2VQYXRoOworICAgIGVuY29kZXIgPDwgdWlQcm9jZXNzQnVuZGxlUmVzb3Vy
Y2VQYXRoRXh0ZW5zaW9uSGFuZGxlOworICAgIGVuY29kZXIgPDwgc2hvdWxkRm9yY2VTY3JlZW5G
b250U3Vic3RpdHV0aW9uOworICAgIGVuY29kZXIgPDwgc2hvdWxkRW5hYmxlS2VybmluZ0FuZExp
Z2F0dXJlc0J5RGVmYXVsdDsKICNlbGlmIFBMQVRGT1JNKFdJTikKLSAgICBlbmNvZGVyLmVuY29k
ZShzaG91bGRQYWludE5hdGl2ZUNvbnRyb2xzKTsKLSAgICBlbmNvZGVyLmVuY29kZShjZlVSTENh
Y2hlRGlza0NhcGFjaXR5KTsKLSAgICBlbmNvZGVyLmVuY29kZShjZlVSTENhY2hlTWVtb3J5Q2Fw
YWNpdHkpOwotICAgIGVuY29kZXIuZW5jb2RlKGluaXRpYWxIVFRQQ29va2llQWNjZXB0UG9saWN5
KTsKKyAgICBlbmNvZGVyIDw8IHNob3VsZFBhaW50TmF0aXZlQ29udHJvbHM7CisgICAgZW5jb2Rl
ciA8PCBjZlVSTENhY2hlRGlza0NhcGFjaXR5OworICAgIGVuY29kZXIgPDwgY2ZVUkxDYWNoZU1l
bW9yeUNhcGFjaXR5OworICAgIGVuY29kZXIgPDwgaW5pdGlhbEhUVFBDb29raWVBY2NlcHRQb2xp
Y3k7CiAjaWYgVVNFKENGVVJMU1RPUkFHRVNFU1NJT05TKQogICAgIENGRGF0YVJlZiBzdG9yYWdl
U2Vzc2lvbiA9IHNlcmlhbGl6ZWREZWZhdWx0U3RvcmFnZVNlc3Npb24uZ2V0KCk7Ci0gICAgZW5j
b2Rlci5lbmNvZGUoc3RhdGljX2Nhc3Q8Ym9vbD4oc3RvcmFnZVNlc3Npb24pKTsKKyAgICBlbmNv
ZGVyIDw8IHN0YXRpY19jYXN0PGJvb2w+KHN0b3JhZ2VTZXNzaW9uKTsKICAgICBpZiAoc3RvcmFn
ZVNlc3Npb24pCi0gICAgICAgIENvcmVJUEM6OmVuY29kZSgmZW5jb2Rlciwgc3RvcmFnZVNlc3Np
b24pOworICAgICAgICBDb3JlSVBDOjplbmNvZGUoZW5jb2Rlciwgc3RvcmFnZVNlc3Npb24pOwog
I2VuZGlmIC8vIFVTRShDRlVSTFNUT1JBR0VTRVNTSU9OUykKICNlbmRpZgogCiAjaWYgRU5BQkxF
KE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKLSAgICBlbmNv
ZGVyLmVuY29kZShub3RpZmljYXRpb25QZXJtaXNzaW9ucyk7CisgICAgZW5jb2RlciA8PCBub3Rp
ZmljYXRpb25QZXJtaXNzaW9uczsKICNlbmRpZgogCiAjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VT
UykKLSAgICBlbmNvZGVyLmVuY29kZSh1c2VzTmV0d29ya1Byb2Nlc3MpOworICAgIGVuY29kZXIg
PDwgdXNlc05ldHdvcmtQcm9jZXNzOwogI2VuZGlmCiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9XZWJUb3VjaEV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViVG91Y2hFdmVudC5jcHAJKHJldmlzaW9uIDEzMjg3MSkKKysrIFNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJUb3VjaEV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQs
NyBAQCB2b2lkIFdlYlRvdWNoRXZlbnQ6OmVuY29kZShDb3JlSVBDOjpBcmd1CiB7CiAgICAgV2Vi
RXZlbnQ6OmVuY29kZShlbmNvZGVyKTsKIAotICAgIGVuY29kZXIuZW5jb2RlKG1fdG91Y2hQb2lu
dHMpOworICAgIGVuY29kZXIgPDwgbV90b3VjaFBvaW50czsKIH0KIAogYm9vbCBXZWJUb3VjaEV2
ZW50OjpkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBXZWJUb3VjaEV2
ZW50JiByZXN1bHQpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViV2hlZWxFdmVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYldoZWVsRXZlbnQuY3Bw
CShyZXZpc2lvbiAxMzI4NzEpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViV2hlZWxFdmVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTczLDE4ICs3MywxOCBAQCB2b2lkIFdlYldoZWVsRXZl
bnQ6OmVuY29kZShDb3JlSVBDOjpBcmd1CiB7CiAgICAgV2ViRXZlbnQ6OmVuY29kZShlbmNvZGVy
KTsKIAotICAgIGVuY29kZXIuZW5jb2RlKG1fcG9zaXRpb24pOwotICAgIGVuY29kZXIuZW5jb2Rl
KG1fZ2xvYmFsUG9zaXRpb24pOwotICAgIGVuY29kZXIuZW5jb2RlKG1fZGVsdGEpOwotICAgIGVu
Y29kZXIuZW5jb2RlKG1fd2hlZWxUaWNrcyk7Ci0gICAgZW5jb2Rlci5lbmNvZGUobV9ncmFudWxh
cml0eSk7Ci0gICAgZW5jb2Rlci5lbmNvZGUobV9kaXJlY3Rpb25JbnZlcnRlZEZyb21EZXZpY2Up
OworICAgIGVuY29kZXIgPDwgbV9wb3NpdGlvbjsKKyAgICBlbmNvZGVyIDw8IG1fZ2xvYmFsUG9z
aXRpb247CisgICAgZW5jb2RlciA8PCBtX2RlbHRhOworICAgIGVuY29kZXIgPDwgbV93aGVlbFRp
Y2tzOworICAgIGVuY29kZXIgPDwgbV9ncmFudWxhcml0eTsKKyAgICBlbmNvZGVyIDw8IG1fZGly
ZWN0aW9uSW52ZXJ0ZWRGcm9tRGV2aWNlOwogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBlbmNvZGVy
LmVuY29kZShtX3BoYXNlKTsKLSAgICBlbmNvZGVyLmVuY29kZShtX21vbWVudHVtUGhhc2UpOwot
ICAgIGVuY29kZXIuZW5jb2RlKG1faGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhcyk7Ci0gICAgZW5j
b2Rlci5lbmNvZGUobV9zY3JvbGxDb3VudCk7Ci0gICAgZW5jb2Rlci5lbmNvZGUobV91bmFjY2Vs
ZXJhdGVkU2Nyb2xsaW5nRGVsdGEpOworICAgIGVuY29kZXIgPDwgbV9waGFzZTsKKyAgICBlbmNv
ZGVyIDw8IG1fbW9tZW50dW1QaGFzZTsKKyAgICBlbmNvZGVyIDw8IG1faGFzUHJlY2lzZVNjcm9s
bGluZ0RlbHRhczsKKyAgICBlbmNvZGVyIDw8IG1fc2Nyb2xsQ291bnQ7CisgICAgZW5jb2RlciA8
PCBtX3VuYWNjZWxlcmF0ZWRTY3JvbGxpbmdEZWx0YTsKICNlbmRpZgogfQogCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCShyZXZpc2lvbiAxMzI4NzEpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAgTmV0d29ya1Byb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnM6Ok5ldHdvcgogdm9pZCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVyczo6ZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsK
ICNpZiBQTEFURk9STShNQUMpCi0gICAgZW5jb2Rlci5lbmNvZGUocGFyZW50UHJvY2Vzc05hbWUp
OworICAgIGVuY29kZXIgPDwgcGFyZW50UHJvY2Vzc05hbWU7CiAjZW5kaWYKIH0KIApJbmRleDog
U291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTlBJZGVudGlmaWVyRGF0YS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTlBJZGVudGlmaWVyRGF0YS5j
cHAJKHJldmlzaW9uIDEzMjg3MSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05Q
SWRlbnRpZmllckRhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSwxMSArNjksMTEgQEAgTlBJ
ZGVudGlmaWVyIE5QSWRlbnRpZmllckRhdGE6OmNyZWF0ZU5QSQogCiB2b2lkIE5QSWRlbnRpZmll
ckRhdGE6OmVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7
Ci0gICAgZW5jb2Rlci5lbmNvZGUobV9pc1N0cmluZyk7CisgICAgZW5jb2RlciA8PCBtX2lzU3Ry
aW5nOwogICAgIGlmIChtX2lzU3RyaW5nKQotICAgICAgICBlbmNvZGVyLmVuY29kZShtX3N0cmlu
Zyk7CisgICAgICAgIGVuY29kZXIgPDwgbV9zdHJpbmc7CiAgICAgZWxzZQotICAgICAgICBlbmNv
ZGVyLmVuY29kZShtX251bWJlcik7CisgICAgICAgIGVuY29kZXIgPDwgbV9udW1iZXI7CiB9CiAK
IGJvb2wgTlBJZGVudGlmaWVyRGF0YTo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2Rlciog
ZGVjb2RlciwgTlBJZGVudGlmaWVyRGF0YSYgcmVzdWx0KQpJbmRleDogU291cmNlL1dlYktpdDIv
U2hhcmVkL1BsdWdpbnMvTlBWYXJpYW50RGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvU2hhcmVkL1BsdWdpbnMvTlBWYXJpYW50RGF0YS5jcHAJKHJldmlzaW9uIDEzMjg3MSkK
KysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05QVmFyaWFudERhdGEuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMjAsMjkgKzEyMCwyOSBAQCBOUFZhcmlhbnREYXRhIE5QVmFyaWFudERh
dGE6Om1ha2VSZW1vdGVOCiAKIHZvaWQgTlBWYXJpYW50RGF0YTo6ZW5jb2RlKENvcmVJUEM6OkFy
Z3VtZW50RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBlbmNvZGVyLmVuY29kZShtX3R5
cGUpOworICAgIGVuY29kZXIgPDwgbV90eXBlOwogCiAgICAgc3dpdGNoICh0eXBlKCkpIHsKICAg
ICBjYXNlIE5QVmFyaWFudERhdGE6OlZvaWQ6CiAgICAgY2FzZSBOUFZhcmlhbnREYXRhOjpOdWxs
OgogICAgICAgICBicmVhazsKICAgICBjYXNlIE5QVmFyaWFudERhdGE6OkJvb2w6Ci0gICAgICAg
IGVuY29kZXIuZW5jb2RlKGJvb2xWYWx1ZSgpKTsKKyAgICAgICAgZW5jb2RlciA8PCBib29sVmFs
dWUoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBOUFZhcmlhbnREYXRhOjpJbnQzMjoKLSAg
ICAgICAgZW5jb2Rlci5lbmNvZGUoaW50MzJWYWx1ZSgpKTsKKyAgICAgICAgZW5jb2RlciA8PCBp
bnQzMlZhbHVlKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTlBWYXJpYW50RGF0YTo6RG91
YmxlOgotICAgICAgICBlbmNvZGVyLmVuY29kZShkb3VibGVWYWx1ZSgpKTsKKyAgICAgICAgZW5j
b2RlciA8PCBkb3VibGVWYWx1ZSgpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE5QVmFyaWFu
dERhdGE6OlN0cmluZzoKLSAgICAgICAgZW5jb2Rlci5lbmNvZGUoc3RyaW5nVmFsdWUoKSk7Cisg
ICAgICAgIGVuY29kZXIgPDwgc3RyaW5nVmFsdWUoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBOUFZhcmlhbnREYXRhOjpMb2NhbE5QT2JqZWN0SUQ6Ci0gICAgICAgIGVuY29kZXIuZW5jb2Rl
KGxvY2FsTlBPYmplY3RJRFZhbHVlKCkpOworICAgICAgICBlbmNvZGVyIDw8IGxvY2FsTlBPYmpl
Y3RJRFZhbHVlKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTlBWYXJpYW50RGF0YTo6UmVt
b3RlTlBPYmplY3RJRDoKLSAgICAgICAgZW5jb2Rlci5lbmNvZGUocmVtb3RlTlBPYmplY3RJRFZh
bHVlKCkpOworICAgICAgICBlbmNvZGVyIDw8IHJlbW90ZU5QT2JqZWN0SURWYWx1ZSgpOwogICAg
ICAgICBicmVhazsKICAgICB9CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lu
cy9QbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
LmNwcAkocmV2aXNpb24gMTMyODcxKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMv
UGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5
LDE1ICszOSwxNSBAQCBQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpQbHVnaW5QCiAK
IHZvaWQgUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKENvcmVJUEM6OkFy
Z3VtZW50RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBlbmNvZGVyLmVuY29kZShwbHVn
aW5QYXRoKTsKLSAgICBlbmNvZGVyLmVuY29kZShzdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbklu
aXRpYWxpemF0aW9uKTsKLSAgICBlbmNvZGVyLmVuY29kZShtaW5pbXVtTGlmZXRpbWUpOwotICAg
IGVuY29kZXIuZW5jb2RlKHRlcm1pbmF0aW9uVGltZW91dCk7CisgICAgZW5jb2RlciA8PCBwbHVn
aW5QYXRoOworICAgIGVuY29kZXIgPDwgc3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFs
aXphdGlvbjsKKyAgICBlbmNvZGVyIDw8IG1pbmltdW1MaWZldGltZTsKKyAgICBlbmNvZGVyIDw8
IHRlcm1pbmF0aW9uVGltZW91dDsKIAogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBlbmNvZGVyLmVu
Y29kZShwYXJlbnRQcm9jZXNzTmFtZSk7Ci0gICAgZW5jb2Rlci5lbmNvZGUoYWNjZWxlcmF0ZWRD
b21wb3NpdGluZ1BvcnQpOwotICAgIGVuY29kZXIuZW5jb2RlKHNhbmRib3hQcm9maWxlRGlyZWN0
b3J5UGF0aCk7CisgICAgZW5jb2RlciA8PCBwYXJlbnRQcm9jZXNzTmFtZTsKKyAgICBlbmNvZGVy
IDw8IGFjY2VsZXJhdGVkQ29tcG9zaXRpbmdQb3J0OworICAgIGVuY29kZXIgPDwgc2FuZGJveFBy
b2ZpbGVEaXJlY3RvcnlQYXRoOwogI2VuZGlmCiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1No
YXJlZC9jZi9Bcmd1bWVudENvZGVyc0NGLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvY2YvQXJndW1lbnRDb2RlcnNDRi5jcHAJKHJldmlzaW9uIDEzMjg3MSkKKysrIFNv
dXJjZS9XZWJLaXQyL1NoYXJlZC9jZi9Bcmd1bWVudENvZGVyc0NGLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtOTgsMTAgKzk4LDEwIEBAIHN0YXRpYyBDRlR5cGUgdHlwZUZyb21DRlR5cGVSZWYoQ0ZU
eXBlUmUKICAgICByZXR1cm4gVW5rbm93bjsKIH0KIAotdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNv
ZGVyKiBlbmNvZGVyLCBDRlR5cGVSZWYgdHlwZVJlZikKK3ZvaWQgZW5jb2RlKEFyZ3VtZW50RW5j
b2RlciYgZW5jb2RlciwgQ0ZUeXBlUmVmIHR5cGVSZWYpCiB7CiAgICAgQ0ZUeXBlIHR5cGUgPSB0
eXBlRnJvbUNGVHlwZVJlZih0eXBlUmVmKTsKLSAgICBlbmNvZGVyLT5lbmNvZGVFbnVtKHR5cGUp
OworICAgIGVuY29kZXIuZW5jb2RlRW51bSh0eXBlKTsKIAogICAgIHN3aXRjaCAodHlwZSkgewog
ICAgIGNhc2UgQ0ZBcnJheToKQEAgLTI0MCwxNCArMjQwLDE1IEBAIGJvb2wgZGVjb2RlKEFyZ3Vt
ZW50RGVjb2RlciogZGVjb2RlciwgUmUKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgZW5j
b2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2RlciwgQ0ZBcnJheVJlZiBhcnJheSkKK3ZvaWQgZW5j
b2RlKEFyZ3VtZW50RW5jb2RlciYgZW5jb2RlciwgQ0ZBcnJheVJlZiBhcnJheSkKIHsKICAgICBD
RkluZGV4IHNpemUgPSBDRkFycmF5R2V0Q291bnQoYXJyYXkpOwogICAgIFZlY3RvcjxDRlR5cGVS
ZWYsIDMyPiB2YWx1ZXMoc2l6ZSk7CiAKICAgICBDRkFycmF5R2V0VmFsdWVzKGFycmF5LCBDRlJh
bmdlTWFrZSgwLCBzaXplKSwgdmFsdWVzLmRhdGEoKSk7CiAKLSAgICBlbmNvZGVyLT5lbmNvZGUo
c3RhdGljX2Nhc3Q8dWludDY0X3Q+KHNpemUpKTsKKyAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0
PHVpbnQ2NF90PihzaXplKTsKKwogICAgIGZvciAoQ0ZJbmRleCBpID0gMDsgaSA8IHNpemU7ICsr
aSkgewogICAgICAgICBBU1NFUlQodmFsdWVzW2ldKTsKIApAQCAtMjc1LDkgKzI3Niw5IEBAIGJv
b2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgUmUKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyLCBDRkJvb2xlYW5SZWYg
Ym9vbGVhbikKK3ZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYgZW5jb2RlciwgQ0ZCb29sZWFu
UmVmIGJvb2xlYW4pCiB7Ci0gICAgZW5jb2Rlci0+ZW5jb2RlKHN0YXRpY19jYXN0PGJvb2w+KENG
Qm9vbGVhbkdldFZhbHVlKGJvb2xlYW4pKSk7CisgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDxi
b29sPihDRkJvb2xlYW5HZXRWYWx1ZShib29sZWFuKSk7CiB9CiAKIGJvb2wgZGVjb2RlKEFyZ3Vt
ZW50RGVjb2RlciogZGVjb2RlciwgUmV0YWluUHRyPENGQm9vbGVhblJlZj4mIHJlc3VsdCkKQEAg
LTI5MCwxMiArMjkxLDEyIEBAIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2Rlciwg
UmUKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyKiBl
bmNvZGVyLCBDRkRhdGFSZWYgZGF0YSkKK3ZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYgZW5j
b2RlciwgQ0ZEYXRhUmVmIGRhdGEpCiB7CiAgICAgQ0ZJbmRleCBsZW5ndGggPSBDRkRhdGFHZXRM
ZW5ndGgoZGF0YSk7CiAgICAgY29uc3QgVUludDgqIGJ5dGVQdHIgPSBDRkRhdGFHZXRCeXRlUHRy
KGRhdGEpOwogCi0gICAgZW5jb2Rlci0+ZW5jb2RlVmFyaWFibGVMZW5ndGhCeXRlQXJyYXkoQ29y
ZUlQQzo6RGF0YVJlZmVyZW5jZShieXRlUHRyLCBsZW5ndGgpKTsKKyAgICBlbmNvZGVyIDw8IENv
cmVJUEM6OkRhdGFSZWZlcmVuY2UoYnl0ZVB0ciwgbGVuZ3RoKTsKIH0KIAogYm9vbCBkZWNvZGUo
QXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYgcmVzdWx0KQpA
QCAtMzA4LDkgKzMwOSw5IEBAIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2Rlciwg
UmUKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyKiBl
bmNvZGVyLCBDRkRhdGVSZWYgZGF0ZSkKK3ZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYgZW5j
b2RlciwgQ0ZEYXRlUmVmIGRhdGUpCiB7Ci0gICAgZW5jb2Rlci0+ZW5jb2RlKHN0YXRpY19jYXN0
PGRvdWJsZT4oQ0ZEYXRlR2V0QWJzb2x1dGVUaW1lKGRhdGUpKSk7CisgICAgZW5jb2RlciA8PCBz
dGF0aWNfY2FzdDxkb3VibGU+KENGRGF0ZUdldEFic29sdXRlVGltZShkYXRlKSk7CiB9CiAKIGJv
b2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgUmV0YWluUHRyPENGRGF0ZVJlZj4m
IHJlc3VsdCkKQEAgLTMyMyw3ICszMjQsNyBAQCBib29sIGRlY29kZShBcmd1bWVudERlY29kZXIq
IGRlY29kZXIsIFJlCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgZW5jb2RlKEFyZ3VtZW50
RW5jb2RlciogZW5jb2RlciwgQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnkpCit2b2lkIGVuY29k
ZShBcmd1bWVudEVuY29kZXImIGVuY29kZXIsIENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5KQog
ewogICAgIENGSW5kZXggc2l6ZSA9IENGRGljdGlvbmFyeUdldENvdW50KGRpY3Rpb25hcnkpOwog
ICAgIFZlY3RvcjxDRlR5cGVSZWYsIDMyPiBrZXlzKHNpemUpOwpAQCAtMzMxLDcgKzMzMiw3IEBA
IHZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2RlciwgQ0YKICAgICAKICAgICBDRkRp
Y3Rpb25hcnlHZXRLZXlzQW5kVmFsdWVzKGRpY3Rpb25hcnksIGtleXMuZGF0YSgpLCB2YWx1ZXMu
ZGF0YSgpKTsKIAotICAgIGVuY29kZXItPmVuY29kZShzdGF0aWNfY2FzdDx1aW50NjRfdD4oc2l6
ZSkpOworICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHNpemUpOwogCiAgICAg
Zm9yIChDRkluZGV4IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CiAgICAgICAgIEFTU0VSVChrZXlz
W2ldKTsKQEAgLTM3MSw3ICszNzIsNyBAQCBib29sIGRlY29kZShBcmd1bWVudERlY29kZXIqIGRl
Y29kZXIsIFJlCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgZW5jb2RlKEFyZ3VtZW50RW5j
b2RlciogZW5jb2RlciwgQ0ZOdW1iZXJSZWYgbnVtYmVyKQordm9pZCBlbmNvZGUoQXJndW1lbnRF
bmNvZGVyJiBlbmNvZGVyLCBDRk51bWJlclJlZiBudW1iZXIpCiB7CiAgICAgQ0ZOdW1iZXJUeXBl
IG51bWJlclR5cGUgPSBDRk51bWJlckdldFR5cGUobnVtYmVyKTsKIApAQCAtMzc5LDggKzM4MCw4
IEBAIHZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2RlciwgQ0YKICAgICBib29sIHJl
c3VsdCA9IENGTnVtYmVyR2V0VmFsdWUobnVtYmVyLCBudW1iZXJUeXBlLCBidWZmZXIuZGF0YSgp
KTsKICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKIAotICAgIGVuY29kZXItPmVu
Y29kZUVudW0obnVtYmVyVHlwZSk7Ci0gICAgZW5jb2Rlci0+ZW5jb2RlVmFyaWFibGVMZW5ndGhC
eXRlQXJyYXkoYnVmZmVyKTsKKyAgICBlbmNvZGVyLmVuY29kZUVudW0obnVtYmVyVHlwZSk7Cisg
ICAgZW5jb2RlciA8PCBDb3JlSVBDOjpEYXRhUmVmZXJlbmNlKGJ1ZmZlcik7CiB9CiAKIHN0YXRp
YyBzaXplX3Qgc2l6ZUZvck51bWJlclR5cGUoQ0ZOdW1iZXJUeXBlIG51bWJlclR5cGUpCkBAIC00
NTIsNyArNDUzLDcgQEAgYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBSZQog
ICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXIqIGVuY29k
ZXIsIENGU3RyaW5nUmVmIHN0cmluZykKK3ZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYgZW5j
b2RlciwgQ0ZTdHJpbmdSZWYgc3RyaW5nKQogewogICAgIENGSW5kZXggbGVuZ3RoID0gQ0ZTdHJp
bmdHZXRMZW5ndGgoc3RyaW5nKTsKICAgICBDRlN0cmluZ0VuY29kaW5nIGVuY29kaW5nID0gQ0ZT
dHJpbmdHZXRGYXN0ZXN0RW5jb2Rpbmcoc3RyaW5nKTsKQEAgLTQ2Nyw4ICs0NjgsOCBAQCB2b2lk
IGVuY29kZShBcmd1bWVudEVuY29kZXIqIGVuY29kZXIsIENGCiAgICAgbnVtQ29udmVydGVkQnl0
ZXMgPSBDRlN0cmluZ0dldEJ5dGVzKHN0cmluZywgcmFuZ2UsIGVuY29kaW5nLCAwLCBmYWxzZSwg
YnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSwgJmJ1ZmZlckxlbmd0aCk7CiAgICAgQVNTRVJU
KG51bUNvbnZlcnRlZEJ5dGVzID09IGxlbmd0aCk7CiAKLSAgICBlbmNvZGVyLT5lbmNvZGVFbnVt
KGVuY29kaW5nKTsKLSAgICBlbmNvZGVyLT5lbmNvZGVWYXJpYWJsZUxlbmd0aEJ5dGVBcnJheShi
dWZmZXIpOworICAgIGVuY29kZXIuZW5jb2RlRW51bShlbmNvZGluZyk7CisgICAgZW5jb2RlciA8
PCBDb3JlSVBDOjpEYXRhUmVmZXJlbmNlKGJ1ZmZlcik7CiB9CiAKIGJvb2wgZGVjb2RlKEFyZ3Vt
ZW50RGVjb2RlciogZGVjb2RlciwgUmV0YWluUHRyPENGU3RyaW5nUmVmPiYgcmVzdWx0KQpAQCAt
NDkyLDEwICs0OTMsMTAgQEAgYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBS
ZQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXIqIGVu
Y29kZXIsIENGVVJMUmVmIHVybCkKK3ZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYgZW5jb2Rl
ciwgQ0ZVUkxSZWYgdXJsKQogewogICAgIENGVVJMUmVmIGJhc2VVUkwgPSBDRlVSTEdldEJhc2VV
UkwodXJsKTsKLSAgICBlbmNvZGVyLT5lbmNvZGUoc3RhdGljX2Nhc3Q8Ym9vbD4oYmFzZVVSTCkp
OworICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8Ym9vbD4oYmFzZVVSTCk7CiAgICAgaWYgKGJh
c2VVUkwpCiAgICAgICAgIGVuY29kZShlbmNvZGVyLCBiYXNlVVJMKTsKIApAQCAtNTM2LDcgKzUz
Nyw3IEBAIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgUmUKIH0KIAogI2lm
IFVTRShTRUNVUklUWV9GUkFNRVdPUkspCi12b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXIqIGVu
Y29kZXIsIFNlY0NlcnRpZmljYXRlUmVmIGNlcnRpZmljYXRlKQordm9pZCBlbmNvZGUoQXJndW1l
bnRFbmNvZGVyJiBlbmNvZGVyLCBTZWNDZXJ0aWZpY2F0ZVJlZiBjZXJ0aWZpY2F0ZSkKIHsKICAg
ICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBkYXRhKEFkb3B0Q0YsIFNlY0NlcnRpZmljYXRlQ29weURh
dGEoY2VydGlmaWNhdGUpKTsKICAgICBlbmNvZGUoZW5jb2RlciwgZGF0YS5nZXQoKSk7CkBAIC01
NTIsNyArNTUzLDcgQEAgYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBSZQog
ICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXIqIGVuY29k
ZXIsIFNlY0tleWNoYWluSXRlbVJlZiBrZXljaGFpbkl0ZW0pCit2b2lkIGVuY29kZShBcmd1bWVu
dEVuY29kZXImIGVuY29kZXIsIFNlY0tleWNoYWluSXRlbVJlZiBrZXljaGFpbkl0ZW0pCiB7CiAg
ICAgQ0ZEYXRhUmVmIGRhdGE7CiAgICAgaWYgKFNlY0tleWNoYWluSXRlbUNyZWF0ZVBlcnNpc3Rl
bnRSZWZlcmVuY2Uoa2V5Y2hhaW5JdGVtLCAmZGF0YSkgPT0gZXJyU2VjU3VjY2VzcykgewpAQCAt
NTc0LDcgKzU3NSw2IEBAIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgUmUK
ICAgICByZXN1bHQuYWRvcHRDRihpdGVtKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KLQogI2VuZGlm
CiAKIH0gLy8gbmFtZXNwYWNlIENvcmVJUEMKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9j
Zi9Bcmd1bWVudENvZGVyc0NGLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVk
L2NmL0FyZ3VtZW50Q29kZXJzQ0YuaAkocmV2aXNpb24gMTMyODcxKQorKysgU291cmNlL1dlYktp
dDIvU2hhcmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNDgg
KzM5LDQ4IEBAIGNsYXNzIEFyZ3VtZW50RW5jb2RlcjsKIGNsYXNzIEFyZ3VtZW50RGVjb2RlcjsK
IAogLy8gQ0ZBcnJheVJlZgotdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyKiwgQ0ZBcnJheVJl
Zik7Cit2b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXImLCBDRkFycmF5UmVmKTsKIGJvb2wgZGVj
b2RlKEFyZ3VtZW50RGVjb2RlciosIFJldGFpblB0cjxDRkFycmF5UmVmPiYgcmVzdWx0KTsKIAog
Ly8gQ0ZCb29sZWFuUmVmCi12b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXIqLCBDRkJvb2xlYW5S
ZWYpOwordm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyJiwgQ0ZCb29sZWFuUmVmKTsKIGJvb2wg
ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciosIFJldGFpblB0cjxDRkJvb2xlYW5SZWY+JiByZXN1bHQp
OwogCiAvLyBDRkRhdGFSZWYKLXZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciosIENGRGF0YVJl
Zik7Cit2b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXImLCBDRkRhdGFSZWYpOwogYm9vbCBkZWNv
ZGUoQXJndW1lbnREZWNvZGVyKiwgUmV0YWluUHRyPENGRGF0YVJlZj4mIHJlc3VsdCk7CiAKIC8v
IENGRGF0ZVJlZgotdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyKiwgQ0ZEYXRlUmVmKTsKK3Zv
aWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYsIENGRGF0ZVJlZik7CiBib29sIGRlY29kZShBcmd1
bWVudERlY29kZXIqLCBSZXRhaW5QdHI8Q0ZEYXRlUmVmPiYgcmVzdWx0KTsKIAogLy8gQ0ZEaWN0
aW9uYXJ5UmVmCi12b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXIqLCBDRkRpY3Rpb25hcnlSZWYp
Owordm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyJiwgQ0ZEaWN0aW9uYXJ5UmVmKTsKIGJvb2wg
ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciosIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+JiByZXN1
bHQpOwogCiAvLyBDRk51bWJlclJlZgotdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyKiwgQ0ZO
dW1iZXJSZWYpOwordm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyJiwgQ0ZOdW1iZXJSZWYpOwog
Ym9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyKiwgUmV0YWluUHRyPENGTnVtYmVyUmVmPiYgcmVz
dWx0KTsKIAogLy8gQ0ZTdHJpbmdSZWYKLXZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciosIENG
U3RyaW5nUmVmKTsKK3ZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYsIENGU3RyaW5nUmVmKTsK
IGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciosIFJldGFpblB0cjxDRlN0cmluZ1JlZj4mIHJl
c3VsdCk7CiAKIC8vIENGVHlwZVJlZgotdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyKiwgQ0ZU
eXBlUmVmKTsKK3ZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYsIENGVHlwZVJlZik7CiBib29s
IGRlY29kZShBcmd1bWVudERlY29kZXIqLCBSZXRhaW5QdHI8Q0ZUeXBlUmVmPiYgcmVzdWx0KTsK
IAogLy8gQ0ZVUkxSZWYKLXZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciosIENGVVJMUmVmKTsK
K3ZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYsIENGVVJMUmVmKTsKIGJvb2wgZGVjb2RlKEFy
Z3VtZW50RGVjb2RlciosIFJldGFpblB0cjxDRlVSTFJlZj4mIHJlc3VsdCk7CiAKICNpZiBVU0Uo
U0VDVVJJVFlfRlJBTUVXT1JLKQogLy8gU2VjQ2VydGlmaWNhdGVSZWYKLXZvaWQgZW5jb2RlKEFy
Z3VtZW50RW5jb2RlciosIFNlY0NlcnRpZmljYXRlUmVmKTsKK3ZvaWQgZW5jb2RlKEFyZ3VtZW50
RW5jb2RlciYsIFNlY0NlcnRpZmljYXRlUmVmKTsKIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2Rl
ciosIFJldGFpblB0cjxTZWNDZXJ0aWZpY2F0ZVJlZj4mIHJlc3VsdCk7CiAKIC8vIFNlY0tleWNo
YWluSXRlbVJlZgotdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyKiwgU2VjS2V5Y2hhaW5JdGVt
UmVmKTsKK3ZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYsIFNlY0tleWNoYWluSXRlbVJlZik7
CiBib29sIGRlY29kZShBcmd1bWVudERlY29kZXIqLCBSZXRhaW5QdHI8U2VjS2V5Y2hhaW5JdGVt
UmVmPiYgcmVzdWx0KTsKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFj
L0FyZ3VtZW50Q29kZXJzTWFjLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVk
L21hYy9Bcmd1bWVudENvZGVyc01hYy5oCShyZXZpc2lvbiAxMzI4NzEpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvbWFjL0FyZ3VtZW50Q29kZXJzTWFjLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0
LDMxICszNCwzMSBAQCBjbGFzcyBBcmd1bWVudEVuY29kZXI7CiBjbGFzcyBBcmd1bWVudERlY29k
ZXI7CiAKIC8vIE5TQXR0cmlidXRlZFN0cmluZwotdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVy
KiwgTlNBdHRyaWJ1dGVkU3RyaW5nICopOwordm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyJiwg
TlNBdHRyaWJ1dGVkU3RyaW5nICopOwogYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyKiwgUmV0
YWluUHRyPE5TQXR0cmlidXRlZFN0cmluZz4mKTsKIAogI2lmIFVTRShBUFBLSVQpCiAvLyBOU0Nv
bG9yCi12b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXIqLCBOU0NvbG9yICopOwordm9pZCBlbmNv
ZGUoQXJndW1lbnRFbmNvZGVyJiwgTlNDb2xvciAqKTsKIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVj
b2RlciosIFJldGFpblB0cjxOU0NvbG9yPiYpOwogI2VuZGlmCiAKIC8vIE5TRGljdGlvbmFyeQot
dm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyKiwgTlNEaWN0aW9uYXJ5ICopOwordm9pZCBlbmNv
ZGUoQXJndW1lbnRFbmNvZGVyJiwgTlNEaWN0aW9uYXJ5ICopOwogYm9vbCBkZWNvZGUoQXJndW1l
bnREZWNvZGVyKiwgUmV0YWluUHRyPE5TRGljdGlvbmFyeT4mKTsKIAogI2lmIFVTRShBUFBLSVQp
CiAvLyBOU0ZvbnQKLXZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciosIE5TRm9udCAqKTsKK3Zv
aWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYsIE5TRm9udCAqKTsKIGJvb2wgZGVjb2RlKEFyZ3Vt
ZW50RGVjb2RlciosIFJldGFpblB0cjxOU0ZvbnQ+Jik7CiAjZW5kaWYKIAogLy8gTlNOdW1iZXIK
LXZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciosIE5TTnVtYmVyICopOwordm9pZCBlbmNvZGUo
QXJndW1lbnRFbmNvZGVyJiwgTlNOdW1iZXIgKik7CiBib29sIGRlY29kZShBcmd1bWVudERlY29k
ZXIqLCBSZXRhaW5QdHI8TlNOdW1iZXI+Jik7CiAKIC8vIE5TU3RyaW5nCi12b2lkIGVuY29kZShB
cmd1bWVudEVuY29kZXIqLCBOU1N0cmluZyAqKTsKK3ZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2Rl
ciYsIE5TU3RyaW5nICopOwogYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyKiwgUmV0YWluUHRy
PE5TU3RyaW5nPiYpOwogCiB9IC8vIG5hbWVzcGFjZSBDb3JlSVBDCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvbWFjL0FyZ3VtZW50Q29kZXJzTWFjLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9tYWMvQXJndW1lbnRDb2RlcnNNYWMubW0JKHJldmlzaW9uIDEzMjg3
MSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvQXJndW1lbnRDb2RlcnNNYWMubW0JKHdv
cmtpbmcgY29weSkKQEAgLTc2LDEwICs3NiwxMCBAQCBzdGF0aWMgTlNUeXBlIHR5cGVGcm9tT2Jq
ZWN0KGlkIG9iamVjdCkKICAgICByZXR1cm4gVW5rbm93bjsKIH0KIAotc3RhdGljIHZvaWQgZW5j
b2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2RlciwgaWQgb2JqZWN0KQorc3RhdGljIHZvaWQgZW5j
b2RlKEFyZ3VtZW50RW5jb2RlciYgZW5jb2RlciwgaWQgb2JqZWN0KQogewogICAgIE5TVHlwZSB0
eXBlID0gdHlwZUZyb21PYmplY3Qob2JqZWN0KTsKLSAgICBlbmNvZGVyLT5lbmNvZGVFbnVtKHR5
cGUpOworICAgIGVuY29kZXIuZW5jb2RlRW51bSh0eXBlKTsKIAogICAgIHN3aXRjaCAodHlwZSkg
ewogICAgIGNhc2UgTlNBdHRyaWJ1dGVkU3RyaW5nVHlwZToKQEAgLTE3Miw3ICsxNzIsNyBAQCBz
dGF0aWMgYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyKiBkZWNvCiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCi12b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXIqIGVuY29kZXIsIE5TQXR0cmlidXRl
ZFN0cmluZyAqc3RyaW5nKQordm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBO
U0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZykKIHsKICAgICAvLyBFdmVuIHRob3VnaCBOU0F0dHJp
YnV0ZWRTdHJpbmcgaXMgdG9sbCBmcmVlIGJyaWRnZWQgd2l0aCBDRkF0dHJpYnV0ZWRTdHJpbmdS
ZWYsIGF0dHJpYnV0ZXMnIHZhbHVlcyBtYXkgYmUgbm90LCBzbyB3ZSBzaG91bGQgc3RheSB3aXRo
aW4gdGhpcyBmaWxlJ3MgY29kZS4KIApAQCAtMTk2LDExICsxOTYsMTEgQEAgdm9pZCBlbmNvZGUo
QXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyLCBOUwogICAgICAgICBwb3NpdGlvbiA9IE5TTWF4UmFu
Z2UoZWZmZWN0aXZlUmFuZ2UpOwogICAgIH0KIAotICAgIGVuY29kZXItPmVuY29kZShzdGF0aWNf
Y2FzdDx1aW50NjRfdD4ocmFuZ2VzLnNpemUoKSkpOworICAgIGVuY29kZXIgPDwgc3RhdGljX2Nh
c3Q8dWludDY0X3Q+KHJhbmdlcy5zaXplKCkpOwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCByYW5nZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKHN0YXRpY19j
YXN0PHVpbnQ2NF90PihyYW5nZXNbaV0uZmlyc3QubG9jYXRpb24pKTsKLSAgICAgICAgZW5jb2Rl
ci0+ZW5jb2RlKHN0YXRpY19jYXN0PHVpbnQ2NF90PihyYW5nZXNbaV0uZmlyc3QubGVuZ3RoKSk7
CisgICAgICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJhbmdlc1tpXS5maXJz
dC5sb2NhdGlvbik7CisgICAgICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJh
bmdlc1tpXS5maXJzdC5sZW5ndGgpOwogICAgICAgICBDb3JlSVBDOjplbmNvZGUoZW5jb2Rlciwg
cmFuZ2VzW2ldLnNlY29uZC5nZXQoKSk7CiAgICAgfQogfQpAQCAtMjQzLDkgKzI0Myw5IEBAIGJv
b2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgUmUKIH0KIAogI2lmIFVTRShBUFBL
SVQpCi12b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXIqIGVuY29kZXIsIE5TQ29sb3IgKmNvbG9y
KQordm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBOU0NvbG9yICpjb2xvcikK
IHsKLSAgICBlbmNvZGVyLT5lbmNvZGUoY29sb3JGcm9tTlNDb2xvcihjb2xvcikpOworICAgIGVu
Y29kZXIgPDwgY29sb3JGcm9tTlNDb2xvcihjb2xvcik7CiB9CiAKIGJvb2wgZGVjb2RlKEFyZ3Vt
ZW50RGVjb2RlciogZGVjb2RlciwgUmV0YWluUHRyPE5TQ29sb3I+JiByZXN1bHQpCkBAIC0yNTks
NyArMjU5LDcgQEAgYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBSZQogfQog
I2VuZGlmCiAKLXZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2RlciwgTlNEaWN0aW9u
YXJ5ICpkaWN0aW9uYXJ5KQordm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBO
U0RpY3Rpb25hcnkgKmRpY3Rpb25hcnkpCiB7CiAgICAgLy8gRXZlbiB0aG91Z2ggTlNEaWN0aW9u
YXJ5IGlzIHRvbGwgZnJlZSBicmlkZ2VkIHdpdGggQ0ZEaWN0aW9uYXJ5UmVmLCB2YWx1ZXMgbWF5
IGJlIG5vdCwgc28gd2Ugc2hvdWxkIHN0YXkgd2l0aGluIHRoaXMgZmlsZSdzIGNvZGUuCiAKQEAg
LTI2Nyw3ICsyNjcsNyBAQCB2b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXIqIGVuY29kZXIsIE5T
CiAgICAgTlNBcnJheSAqa2V5cyA9IFtkaWN0aW9uYXJ5IGFsbEtleXNdOwogICAgIE5TQXJyYXkg
KnZhbHVlcyA9IFtkaWN0aW9uYXJ5IGFsbFZhbHVlc107CiAKLSAgICBlbmNvZGVyLT5lbmNvZGUo
c3RhdGljX2Nhc3Q8dWludDY0X3Q+KHNpemUpKTsKKyAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0
PHVpbnQ2NF90PihzaXplKTsKIAogICAgIGZvciAoTlNVSW50ZWdlciBpID0gMDsgaSA8IHNpemU7
ICsraSkgewogICAgICAgICBpZCBrZXkgPSBba2V5cyBvYmplY3RBdEluZGV4OmldOwpAQCAtMzEw
LDcgKzMxMCw3IEBAIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgUmUKIH0K
IAogI2lmIFVTRShBUFBLSVQpCi12b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXIqIGVuY29kZXIs
IE5TRm9udCAqZm9udCkKK3ZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYgZW5jb2RlciwgTlNG
b250ICpmb250KQogewogICAgIC8vIE5TRm9udCBjb3VsZCB1c2UgQ1RGb250UmVmIGNvZGUgaWYg
d2UgaGFkIGl0IGluIEFyZ3VtZW50Q29kZXJzQ0YuCiAgICAgZW5jb2RlKGVuY29kZXIsIFtbZm9u
dCBmb250RGVzY3JpcHRvcl0gZm9udEF0dHJpYnV0ZXNdKTsKQEAgLTMyOSw3ICszMjksNyBAQCBi
b29sIGRlY29kZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFJlCiB9CiAjZW5kaWYKIAotdm9p
ZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyLCBOU051bWJlciAqbnVtYmVyKQordm9p
ZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBOU051bWJlciAqbnVtYmVyKQogewog
ICAgIGVuY29kZShlbmNvZGVyLCAoQ0ZOdW1iZXJSZWYpbnVtYmVyKTsKIH0KQEAgLTM0NCw3ICsz
NDQsNyBAQCBib29sIGRlY29kZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFJlCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLXZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2RlciwgTlNT
dHJpbmcgKnN0cmluZykKK3ZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYgZW5jb2RlciwgTlNT
dHJpbmcgKnN0cmluZykKIHsKICAgICBlbmNvZGUoZW5jb2RlciwgKENGU3RyaW5nUmVmKXN0cmlu
Zyk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0F0dHJpYnV0ZWRTdHJpbmcu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9BdHRyaWJ1dGVkU3Ry
aW5nLm1tCShyZXZpc2lvbiAxMzI4NzEpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0F0
dHJpYnV0ZWRTdHJpbmcubW0JKHdvcmtpbmcgY29weSkKQEAgLTM0LDEwICszNCwxMCBAQCBuYW1l
c3BhY2UgV2ViS2l0IHsKIAogdm9pZCBBdHRyaWJ1dGVkU3RyaW5nOjplbmNvZGUoQ29yZUlQQzo6
QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewotICAgIGVuY29kZXIuZW5jb2RlKCFz
dHJpbmcpOworICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8Ym9vbD4oIXN0cmluZyk7CiAgICAg
aWYgKCFzdHJpbmcpCiAgICAgICAgIHJldHVybjsKLSAgICBDb3JlSVBDOjplbmNvZGUoJmVuY29k
ZXIsIHN0cmluZy5nZXQoKSk7CisgICAgQ29yZUlQQzo6ZW5jb2RlKGVuY29kZXIsIHN0cmluZy5n
ZXQoKSk7CiB9CiAKIGJvb2wgQXR0cmlidXRlZFN0cmluZzo6ZGVjb2RlKENvcmVJUEM6OkFyZ3Vt
ZW50RGVjb2RlciogZGVjb2RlciwgQXR0cmlidXRlZFN0cmluZyYgYXR0cmlidXRlZFN0cmluZykK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvQ29sb3JTcGFjZURhdGEubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9Db2xvclNwYWNlRGF0YS5tbQkocmV2
aXNpb24gMTMyODcxKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9Db2xvclNwYWNlRGF0
YS5tbQkod29ya2luZyBjb3B5KQpAQCAtNDQsMTQgKzQ0LDE0IEBAIHZvaWQgQ29sb3JTcGFjZURh
dGE6OmVuY29kZShDb3JlSVBDOjpBcmcKICAgICAgICAgLy8gVHJ5IHRvIGVuY29kZSB0aGUgbmFt
ZS4KICAgICAgICAgaWYgKFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbmFtZSA9IGFkb3B0Q0YoQ0dD
b2xvclNwYWNlQ29weU5hbWUoY2dDb2xvclNwYWNlLmdldCgpKSkpIHsKICAgICAgICAgICAgIGVu
Y29kZXIuZW5jb2RlRW51bShOYW1lKTsKLSAgICAgICAgICAgIENvcmVJUEM6OmVuY29kZSgmZW5j
b2RlciwgbmFtZS5nZXQoKSk7CisgICAgICAgICAgICBDb3JlSVBDOjplbmNvZGUoZW5jb2Rlciwg
bmFtZS5nZXQoKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICAv
LyBGYWlsaW5nIHRoYXQsIGp1c3QgZW5jb2RlIHRoZSBJQ0MgZGF0YS4KICAgICAgICAgaWYgKFJl
dGFpblB0cjxDRkRhdGFSZWY+IHByb2ZpbGVEYXRhID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDb3B5
SUNDUHJvZmlsZShjZ0NvbG9yU3BhY2UuZ2V0KCkpKSkgewogICAgICAgICAgICAgZW5jb2Rlci5l
bmNvZGVFbnVtKERhdGEpOwotICAgICAgICAgICAgQ29yZUlQQzo6ZW5jb2RlKCZlbmNvZGVyLCBw
cm9maWxlRGF0YS5nZXQoKSk7CisgICAgICAgICAgICBDb3JlSVBDOjplbmNvZGUoZW5jb2Rlciwg
cHJvZmlsZURhdGEuZ2V0KCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAg
fQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9LZXljaGFpbkF0dHJpYnV0ZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9LZXljaGFpbkF0dHJpYnV0
ZS5jcHAJKHJldmlzaW9uIDEzMjg3MSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvS2V5
Y2hhaW5BdHRyaWJ1dGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MSwxMCArNTEsMTAgQEAgS2V5
Y2hhaW5BdHRyaWJ1dGU6OktleWNoYWluQXR0cmlidXRlKGNvbgogCiBuYW1lc3BhY2UgQ29yZUlQ
QyB7CiAKLXZvaWQgZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciogZW5jb2RlciwgY29u
c3QgV2ViS2l0OjpLZXljaGFpbkF0dHJpYnV0ZSYgYXR0cmlidXRlKQordm9pZCBlbmNvZGUoQ29y
ZUlQQzo6QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJLaXQ6OktleWNoYWluQXR0
cmlidXRlJiBhdHRyaWJ1dGUpCiB7Ci0gICAgZW5jb2Rlci0+ZW5jb2RlKHN0YXRpY19jYXN0PHVp
bnQzMl90PihhdHRyaWJ1dGUudGFnKSk7Ci0gICAgZW5jb2Rlci0+ZW5jb2RlKHN0YXRpY19jYXN0
PGJvb2w+KGF0dHJpYnV0ZS5kYXRhKSk7CisgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50
MzJfdD4oYXR0cmlidXRlLnRhZyk7CisgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDxib29sPihh
dHRyaWJ1dGUuZGF0YSk7CiAgICAgaWYgKGF0dHJpYnV0ZS5kYXRhKQogICAgICAgICBDb3JlSVBD
OjplbmNvZGUoZW5jb2RlciwgYXR0cmlidXRlLmRhdGEuZ2V0KCkpOwogfQpJbmRleDogU291cmNl
L1dlYktpdDIvU2hhcmVkL21hYy9LZXljaGFpbkF0dHJpYnV0ZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvS2V5Y2hhaW5BdHRyaWJ1dGUuaAkocmV2aXNpb24gMTMy
ODcxKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9LZXljaGFpbkF0dHJpYnV0ZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBAIG5hbWVzcGFjZSBDb3JlSVBDIHsKIGNsYXNz
IEFyZ3VtZW50RGVjb2RlcjsKIGNsYXNzIEFyZ3VtZW50RW5jb2RlcjsKIAotdm9pZCBlbmNvZGUo
QXJndW1lbnRFbmNvZGVyKiwgY29uc3QgV2ViS2l0OjpLZXljaGFpbkF0dHJpYnV0ZSYpOwordm9p
ZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyJiwgY29uc3QgV2ViS2l0OjpLZXljaGFpbkF0dHJpYnV0
ZSYpOwogYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyKiwgV2ViS2l0OjpLZXljaGFpbkF0dHJp
YnV0ZSYpOwogCiB9IC8vIG5hbWVzcGFjZSBDb3JlSVBDCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvbWFjL0xheWVyVHJlZUNvbnRleHRNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvU2hhcmVkL21hYy9MYXllclRyZWVDb250ZXh0TWFjLm1tCShyZXZpc2lvbiAxMzI4NzEp
CisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0xheWVyVHJlZUNvbnRleHRNYWMubW0JKHdv
cmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAgTGF5ZXJUcmVlQ29udGV4dDo6fkxheWVyVHJl
ZUNvbnRleHQoKQogCiB2b2lkIExheWVyVHJlZUNvbnRleHQ6OmVuY29kZShDb3JlSVBDOjpBcmd1
bWVudEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAgZW5jb2Rlci5lbmNvZGUoY29udGV4
dElEKTsKKyAgICBlbmNvZGVyIDw8IGNvbnRleHRJRDsKIH0KIAogYm9vbCBMYXllclRyZWVDb250
ZXh0OjpkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBMYXllclRyZWVD
b250ZXh0JiByZXN1bHQpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1BsYXRmb3Jt
Q2VydGlmaWNhdGVJbmZvLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9t
YWMvUGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8ubW0JKHJldmlzaW9uIDEzMjg3MSkKKysrIFNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9tYWMvUGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8ubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTUyLDEyICs1MiwxMiBAQCBQbGF0Zm9ybUNlcnRpZmljYXRlSW5mbzo6UGxhdGZv
cm1DZXJ0aWZpCiB2b2lkIFBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvOjplbmNvZGUoQ29yZUlQQzo6
QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAgIGlmICghbV9jZXJ0aWZpY2F0
ZUNoYWluKSB7Ci0gICAgICAgIGVuY29kZXIuZW5jb2RlKGZhbHNlKTsKKyAgICAgICAgZW5jb2Rl
ciA8PCBmYWxzZTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGVuY29kZXIuZW5jb2Rl
KHRydWUpOwotICAgIENvcmVJUEM6OmVuY29kZSgmZW5jb2RlciwgbV9jZXJ0aWZpY2F0ZUNoYWlu
LmdldCgpKTsKKyAgICBlbmNvZGVyIDw8IHRydWU7CisgICAgQ29yZUlQQzo6ZW5jb2RlKGVuY29k
ZXIsIG1fY2VydGlmaWNhdGVDaGFpbi5nZXQoKSk7CiB9CiAKIGJvb2wgUGxhdGZvcm1DZXJ0aWZp
Y2F0ZUluZm86OmRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFBsYXRm
b3JtQ2VydGlmaWNhdGVJbmZvJiBjKQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9T
YW5kYm94RXh0ZW5zaW9uTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9tYWMvU2FuZGJveEV4dGVuc2lvbk1hYy5tbQkocmV2aXNpb24gMTMyODcxKQorKysgU291cmNl
L1dlYktpdDIvU2hhcmVkL21hYy9TYW5kYm94RXh0ZW5zaW9uTWFjLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC01Niw3ICs1Niw3IEBAIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZTo6fkhhbmRsZSgpCiB2
b2lkIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZTo6ZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5j
b2RlciYgZW5jb2RlcikgY29uc3QKIHsKICAgICBpZiAoIW1fc2FuZGJveEV4dGVuc2lvbikgewot
ICAgICAgICBlbmNvZGVyLmVuY29kZVZhcmlhYmxlTGVuZ3RoQnl0ZUFycmF5KENvcmVJUEM6OkRh
dGFSZWZlcmVuY2UoKSk7CisgICAgICAgIGVuY29kZXIgPDwgQ29yZUlQQzo6RGF0YVJlZmVyZW5j
ZSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC02NCw3ICs2NCw3IEBAIHZvaWQgU2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlOjplbmNvZGUoQ28KICAgICBjb25zdCBjaGFyICpzZXJpYWxp
emVkRm9ybWF0ID0gV0tTYW5kYm94RXh0ZW5zaW9uR2V0U2VyaWFsaXplZEZvcm1hdChtX3NhbmRi
b3hFeHRlbnNpb24sICZsZW5ndGgpOwogICAgIEFTU0VSVChzZXJpYWxpemVkRm9ybWF0KTsKIAot
ICAgIGVuY29kZXIuZW5jb2RlVmFyaWFibGVMZW5ndGhCeXRlQXJyYXkoQ29yZUlQQzo6RGF0YVJl
ZmVyZW5jZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihzZXJpYWxpemVkRm9ybWF0
KSwgbGVuZ3RoKSk7CisgICAgZW5jb2RlciA8PCBDb3JlSVBDOjpEYXRhUmVmZXJlbmNlKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHNlcmlhbGl6ZWRGb3JtYXQpLCBsZW5ndGgpOwog
CiAgICAgLy8gRW5jb2Rpbmcgd2lsbCBkZXN0cm95IHRoZSBzYW5kYm94IGV4dGVuc2lvbiBsb2Nh
bGx5LgogICAgIFdLU2FuZGJveEV4dGVuc2lvbkRlc3Ryb3kobV9zYW5kYm94RXh0ZW5zaW9uKTsK
QEAgLTc2LDcgKzc2LDcgQEAgYm9vbCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU6OmRlY29kZShD
bwogICAgIEFTU0VSVCghcmVzdWx0Lm1fc2FuZGJveEV4dGVuc2lvbik7CiAKICAgICBDb3JlSVBD
OjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2U7Ci0gICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVW
YXJpYWJsZUxlbmd0aEJ5dGVBcnJheShkYXRhUmVmZXJlbmNlKSkKKyAgICBpZiAoIWRlY29kZXIt
PmRlY29kZShkYXRhUmVmZXJlbmNlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYg
KGRhdGFSZWZlcmVuY2UuaXNFbXB0eSgpKQpAQCAtMTI4LDkgKzEyOCw5IEBAIHNpemVfdCBTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6c2kKIAogdm9pZCBTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGVBcnJheTo6ZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciYgZW5jb2RlcikgY29u
c3QKIHsKLSAgICBlbmNvZGVyLmVuY29kZShzdGF0aWNfY2FzdDx1aW50NjRfdD4oc2l6ZSgpKSk7
CisgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oc2l6ZSgpKTsKICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG1fc2l6ZTsgKytpKQotICAgICAgICBlbmNvZGVyLmVuY29kZSht
X2RhdGFbaV0pOworICAgICAgICBlbmNvZGVyIDw8IG1fZGF0YVtpXTsKICAgICAKIH0KIApAQCAt
MTQwLDkgKzE0MCwxMCBAQCBib29sIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5OjpkZWNv
CiAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVVSW50NjQoc2l6ZSkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICBoYW5kbGVzLmFsbG9jYXRlKHNpemUpOwotICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgc2l6ZTsgaSsrKQorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7
CiAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGhhbmRsZXNbaV0pKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKIH0KIApJbmRleDogU291cmNl
L1dlYktpdDIvU2hhcmVkL21hYy9TZWNJdGVtUmVxdWVzdERhdGEuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvU2VjSXRlbVJlcXVlc3REYXRhLmNwcAkocmV2aXNp
b24gMTMyODcxKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9TZWNJdGVtUmVxdWVzdERh
dGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MywxMSArNTMsMTEgQEAgdm9pZCBTZWNJdGVtUmVx
dWVzdERhdGE6OmVuY29kZShDb3JlSVBDOgogewogICAgIGVuY29kZXIuZW5jb2RlRW51bShtX3R5
cGUpOwogCi0gICAgQ29yZUlQQzo6ZW5jb2RlKCZlbmNvZGVyLCBtX3F1ZXJ5RGljdGlvbmFyeS5n
ZXQoKSk7CisgICAgQ29yZUlQQzo6ZW5jb2RlKGVuY29kZXIsIG1fcXVlcnlEaWN0aW9uYXJ5Lmdl
dCgpKTsKIAotICAgIGVuY29kZXIuZW5jb2RlKHN0YXRpY19jYXN0PGJvb2w+KG1fYXR0cmlidXRl
c1RvTWF0Y2gpKTsKKyAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PGJvb2w+KG1fYXR0cmlidXRl
c1RvTWF0Y2gpOwogICAgIGlmIChtX2F0dHJpYnV0ZXNUb01hdGNoKQotICAgICAgICBDb3JlSVBD
OjplbmNvZGUoJmVuY29kZXIsIG1fYXR0cmlidXRlc1RvTWF0Y2guZ2V0KCkpOworICAgICAgICBD
b3JlSVBDOjplbmNvZGUoZW5jb2RlciwgbV9hdHRyaWJ1dGVzVG9NYXRjaC5nZXQoKSk7CiB9CiAK
IGJvb2wgU2VjSXRlbVJlcXVlc3REYXRhOjpkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVy
KiBkZWNvZGVyLCBTZWNJdGVtUmVxdWVzdERhdGEmIHNlY0l0ZW1SZXF1ZXN0RGF0YSkKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvU2VjSXRlbVJlc3BvbnNlRGF0YS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9TZWNJdGVtUmVzcG9uc2VEYXRhLmNw
cAkocmV2aXNpb24gMTMyODcxKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9TZWNJdGVt
UmVzcG9uc2VEYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsMTAgKzQzLDEwIEBAIFNlY0l0
ZW1SZXNwb25zZURhdGE6OlNlY0l0ZW1SZXNwb25zZURhdGEKIAogdm9pZCBTZWNJdGVtUmVzcG9u
c2VEYXRhOjplbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAog
ewotICAgIGVuY29kZXIuZW5jb2RlKHN0YXRpY19jYXN0PGludDY0X3Q+KG1fcmVzdWx0Q29kZSkp
OwotICAgIGVuY29kZXIuZW5jb2RlKHN0YXRpY19jYXN0PGJvb2w+KG1fcmVzdWx0T2JqZWN0Lmdl
dCgpKSk7CisgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDxpbnQ2NF90PihtX3Jlc3VsdENvZGUp
OworICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8Ym9vbD4obV9yZXN1bHRPYmplY3QuZ2V0KCkp
OwogICAgIGlmIChtX3Jlc3VsdE9iamVjdCkKLSAgICAgICAgQ29yZUlQQzo6ZW5jb2RlKCZlbmNv
ZGVyLCBtX3Jlc3VsdE9iamVjdC5nZXQoKSk7CisgICAgICAgIENvcmVJUEM6OmVuY29kZShlbmNv
ZGVyLCBtX3Jlc3VsdE9iamVjdC5nZXQoKSk7CiB9CiAKIGJvb2wgU2VjSXRlbVJlc3BvbnNlRGF0
YTo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgU2VjSXRlbVJlc3Bv
bnNlRGF0YSYgc2VjSXRlbVJlc3BvbnNlRGF0YSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9tYWMvU2VjS2V5Y2hhaW5JdGVtUmVxdWVzdERhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9tYWMvU2VjS2V5Y2hhaW5JdGVtUmVxdWVzdERhdGEuY3BwCShyZXZp
c2lvbiAxMzI4NzEpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1NlY0tleWNoYWluSXRl
bVJlcXVlc3REYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI3LDE2ICsxMjcsMTYgQEAgdm9p
ZCBTZWNLZXljaGFpbkl0ZW1SZXF1ZXN0RGF0YTo6ZW5jb2RlKAogewogICAgIGVuY29kZXIuZW5j
b2RlRW51bShtX3R5cGUpOwogCi0gICAgZW5jb2Rlci5lbmNvZGUoc3RhdGljX2Nhc3Q8Ym9vbD4o
bV9rZXljaGFpbkl0ZW0pKTsKKyAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PGJvb2w+KG1fa2V5
Y2hhaW5JdGVtKTsKICAgICBpZiAobV9rZXljaGFpbkl0ZW0pCi0gICAgICAgIENvcmVJUEM6OmVu
Y29kZSgmZW5jb2RlciwgbV9rZXljaGFpbkl0ZW0uZ2V0KCkpOworICAgICAgICBDb3JlSVBDOjpl
bmNvZGUoZW5jb2RlciwgbV9rZXljaGFpbkl0ZW0uZ2V0KCkpOwogCi0gICAgZW5jb2Rlci5lbmNv
ZGUoc3RhdGljX2Nhc3Q8aW50MzJfdD4obV9rZXljaGFpbkF0dHJpYnV0ZXMuc2l6ZSgpKSk7Cisg
ICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDxpbnQzMl90PihtX2tleWNoYWluQXR0cmlidXRlcy5z
aXplKCkpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwLCBjb3VudCA9IG1fa2V5Y2hhaW5BdHRyaWJ1
dGVzLnNpemUoKTsgaSA8IGNvdW50OyArK2kpCi0gICAgICAgIENvcmVJUEM6OmVuY29kZSgmZW5j
b2RlciwgbV9rZXljaGFpbkF0dHJpYnV0ZXNbaV0pOworICAgICAgICBDb3JlSVBDOjplbmNvZGUo
ZW5jb2RlciwgbV9rZXljaGFpbkF0dHJpYnV0ZXNbaV0pOwogICAgIAotICAgIGVuY29kZXIuZW5j
b2RlKHN0YXRpY19jYXN0PHVpbnQ2NF90PihtX2l0ZW1DbGFzcykpOwotICAgIG1fZGF0YVJlZmVy
ZW5jZS5lbmNvZGUoZW5jb2Rlcik7CisgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50NjRf
dD4obV9pdGVtQ2xhc3MpOworICAgIGVuY29kZXIgPDwgbV9kYXRhUmVmZXJlbmNlOwogfQogCiBi
b29sIFNlY0tleWNoYWluSXRlbVJlcXVlc3REYXRhOjpkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnRE
ZWNvZGVyKiBkZWNvZGVyLCBTZWNLZXljaGFpbkl0ZW1SZXF1ZXN0RGF0YSYgc2VjS2V5Y2hhaW5J
dGVtUmVxdWVzdERhdGEpCkBAIC0xNzEsOSArMTcxLDkgQEAgYm9vbCBTZWNLZXljaGFpbkl0ZW1S
ZXF1ZXN0RGF0YTo6ZGVjb2RlKAogICAgIAogICAgIHNlY0tleWNoYWluSXRlbVJlcXVlc3REYXRh
Lm1faXRlbUNsYXNzID0gc3RhdGljX2Nhc3Q8U2VjSXRlbUNsYXNzPihpdGVtQ2xhc3MpOwogCi0g
ICAgaWYgKCFDb3JlSVBDOjpEYXRhUmVmZXJlbmNlOjpkZWNvZGUoZGVjb2Rlciwgc2VjS2V5Y2hh
aW5JdGVtUmVxdWVzdERhdGEubV9kYXRhUmVmZXJlbmNlKSkKKyAgICBpZiAoZGVjb2Rlci0+ZGVj
b2RlKHNlY0tleWNoYWluSXRlbVJlcXVlc3REYXRhLm1fZGF0YVJlZmVyZW5jZSkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgCisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApJbmRleDog
U291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9TZWNLZXljaGFpbkl0ZW1SZXNwb25zZURhdGEuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvU2VjS2V5Y2hhaW5JdGVt
UmVzcG9uc2VEYXRhLmNwcAkocmV2aXNpb24gMTMyODcxKQorKysgU291cmNlL1dlYktpdDIvU2hh
cmVkL21hYy9TZWNLZXljaGFpbkl0ZW1SZXNwb25zZURhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02NSwxOSArNjUsMTkgQEAgU2VjS2V5Y2hhaW5JdGVtUmVzcG9uc2VEYXRhOjpTZWNLZXljaGFp
bgogCiB2b2lkIFNlY0tleWNoYWluSXRlbVJlc3BvbnNlRGF0YTo6ZW5jb2RlKENvcmVJUEM6OkFy
Z3VtZW50RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBlbmNvZGVyLmVuY29kZShzdGF0
aWNfY2FzdDxpbnQ2NF90PihtX3Jlc3VsdENvZGUpKTsKLSAgICBlbmNvZGVyLmVuY29kZShzdGF0
aWNfY2FzdDx1aW50MzJfdD4obV9pdGVtQ2xhc3MpKTsKLSAgICBlbmNvZGVyLmVuY29kZShzdGF0
aWNfY2FzdDx1aW50MzJfdD4obV9hdHRyaWJ1dGVzLnNpemUoKSkpOworICAgIGVuY29kZXIgPDwg
c3RhdGljX2Nhc3Q8aW50NjRfdD4obV9yZXN1bHRDb2RlKTsKKyAgICBlbmNvZGVyIDw8IHN0YXRp
Y19jYXN0PHVpbnQzMl90PihtX2l0ZW1DbGFzcyk7CisgICAgZW5jb2RlciA8PCBzdGF0aWNfY2Fz
dDx1aW50MzJfdD4obV9hdHRyaWJ1dGVzLnNpemUoKSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDAs
IGNvdW50ID0gbV9hdHRyaWJ1dGVzLnNpemUoKTsgaSA8IGNvdW50OyArK2kpCi0gICAgICAgIENv
cmVJUEM6OmVuY29kZSgmZW5jb2RlciwgbV9hdHRyaWJ1dGVzW2ldKTsKKyAgICAgICAgQ29yZUlQ
Qzo6ZW5jb2RlKGVuY29kZXIsIG1fYXR0cmlidXRlc1tpXSk7CiAKLSAgICBlbmNvZGVyLmVuY29k
ZShzdGF0aWNfY2FzdDxib29sPihtX2RhdGEpKTsKKyAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0
PGJvb2w+KG1fZGF0YSk7CiAgICAgaWYgKG1fZGF0YSkKLSAgICAgICAgQ29yZUlQQzo6ZW5jb2Rl
KCZlbmNvZGVyLCBtX2RhdGEuZ2V0KCkpOworICAgICAgICBDb3JlSVBDOjplbmNvZGUoZW5jb2Rl
ciwgbV9kYXRhLmdldCgpKTsKIAotICAgIGVuY29kZXIuZW5jb2RlKHN0YXRpY19jYXN0PGJvb2w+
KG1fa2V5Y2hhaW5JdGVtKSk7CisgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDxib29sPihtX2tl
eWNoYWluSXRlbSk7CiAgICAgaWYgKG1fa2V5Y2hhaW5JdGVtKQotICAgICAgICBDb3JlSVBDOjpl
bmNvZGUoJmVuY29kZXIsIG1fa2V5Y2hhaW5JdGVtLmdldCgpKTsKKyAgICAgICAgQ29yZUlQQzo6
ZW5jb2RlKGVuY29kZXIsIG1fa2V5Y2hhaW5JdGVtLmdldCgpKTsKIH0KIAogYm9vbCBTZWNLZXlj
aGFpbkl0ZW1SZXNwb25zZURhdGE6OmRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGRl
Y29kZXIsIFNlY0tleWNoYWluSXRlbVJlc3BvbnNlRGF0YSYgc2VjS2V5Y2hhaW5JdGVtUmVzcG9u
c2VEYXRhKQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRD
b2RlcnNNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9XZWJD
b3JlQXJndW1lbnRDb2RlcnNNYWMubW0JKHJldmlzaW9uIDEzMjg3MSkKKysrIFNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC00Nyw3ICs0Nyw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+Ojpl
bmMKICAgICAgICAgcmV0dXJuOwogCiAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gZGlj
dGlvbmFyeShBZG9wdENGLCBXS05TVVJMUmVxdWVzdENyZWF0ZVNlcmlhbGl6YWJsZVJlcHJlc2Vu
dGF0aW9uKHJlc291cmNlUmVxdWVzdC5uc1VSTFJlcXVlc3QoKSwgQ29yZUlQQzo6dG9rZW5OdWxs
VHlwZVJlZigpKSk7Ci0gICAgQ29yZUlQQzo6ZW5jb2RlKGVuY29kZXIsIGRpY3Rpb25hcnkuZ2V0
KCkpOworICAgIENvcmVJUEM6OmVuY29kZSgqZW5jb2RlciwgZGljdGlvbmFyeS5nZXQoKSk7CiB9
CiAKIGJvb2wgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+OjpkZWNvZGVQbGF0Zm9ybURh
dGEoQXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVx
dWVzdCkKQEAgLTgyLDcgKzgyLDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVzcG9u
c2U+OjplbgogICAgICAgICByZXR1cm47CiAKICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVm
PiBkaWN0aW9uYXJ5KEFkb3B0Q0YsIFdLTlNVUkxSZXNwb25zZUNyZWF0ZVNlcmlhbGl6YWJsZVJl
cHJlc2VudGF0aW9uKHJlc291cmNlUmVzcG9uc2UubnNVUkxSZXNwb25zZSgpLCBDb3JlSVBDOjp0
b2tlbk51bGxUeXBlUmVmKCkpKTsKLSAgICBDb3JlSVBDOjplbmNvZGUoZW5jb2RlciwgZGljdGlv
bmFyeS5nZXQoKSk7CisgICAgQ29yZUlQQzo6ZW5jb2RlKCplbmNvZGVyLCBkaWN0aW9uYXJ5Lmdl
dCgpKTsKIH0KIAogYm9vbCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVzcG9uc2U+OjpkZWNvZGVQ
bGF0Zm9ybURhdGEoQXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNvdXJjZVJlc3BvbnNlKQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL3dpbi9XZWJDb3Jl
QXJndW1lbnRDb2RlcnNXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJl
ZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJzV2luLmNwcAkocmV2aXNpb24gMTMyODcxKQorKysg
U291cmNlL1dlYktpdDIvU2hhcmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01OSw3ICs1OSw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxSZXNvdXJj
ZVJlcXVlc3Q+OjplbmMKICAgICAgICAgcmV0dXJuOwogCiAgICAgUmV0YWluUHRyPENGRGljdGlv
bmFyeVJlZj4gZGljdGlvbmFyeShBZG9wdENGLCB3a0NGVVJMUmVxdWVzdENyZWF0ZVNlcmlhbGl6
YWJsZVJlcHJlc2VudGF0aW9uKHJlc291cmNlUmVxdWVzdC5jZlVSTFJlcXVlc3QoKSwgQ29yZUlQ
Qzo6dG9rZW5OdWxsVHlwZVJlZigpKSk7Ci0gICAgQ29yZUlQQzo6ZW5jb2RlKGVuY29kZXIsIGRp
Y3Rpb25hcnkuZ2V0KCkpOworICAgIENvcmVJUEM6OmVuY29kZSgqZW5jb2RlciwgZGljdGlvbmFy
eS5nZXQoKSk7CiAjZW5kaWYKIH0KIApAQCAtMTA1LDcgKzEwNSw3IEBAIHZvaWQgQXJndW1lbnRD
b2RlcjxSZXNvdXJjZVJlc3BvbnNlPjo6ZW4KICAgICAgICAgcmV0dXJuOwogCiAgICAgUmV0YWlu
UHRyPENGRGljdGlvbmFyeVJlZj4gZGljdGlvbmFyeShBZG9wdENGLCB3a0NGVVJMUmVzcG9uc2VD
cmVhdGVTZXJpYWxpemFibGVSZXByZXNlbnRhdGlvbihyZXNvdXJjZVJlc3BvbnNlLmNmVVJMUmVz
cG9uc2UoKSwgQ29yZUlQQzo6dG9rZW5OdWxsVHlwZVJlZigpKSk7Ci0gICAgQ29yZUlQQzo6ZW5j
b2RlKGVuY29kZXIsIGRpY3Rpb25hcnkuZ2V0KCkpOworICAgIENvcmVJUEM6OmVuY29kZSgqZW5j
b2RlciwgZGljdGlvbmFyeS5nZXQoKSk7CiAjZW5kaWYKIH0KIApJbmRleDogU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAko
cmV2aXNpb24gMTMyODcxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1NCw3IEBAIFdlYkNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OldlYkNvbm5lY3Rpb24KIAogdm9pZCBXZWJDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjplbmNvZGVNZXNzYWdlQm9keShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXIm
IGVuY29kZXIsIEFQSU9iamVjdCogbWVzc2FnZUJvZHkpCiB7Ci0gICAgZW5jb2Rlci5lbmNvZGUo
V2ViQ29udGV4dFVzZXJNZXNzYWdlRW5jb2RlcihtZXNzYWdlQm9keSkpOworICAgIGVuY29kZXIg
PDwgV2ViQ29udGV4dFVzZXJNZXNzYWdlRW5jb2RlcihtZXNzYWdlQm9keSk7CiB9CiAKIGJvb2wg
V2ViQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGVjb2RlTWVzc2FnZUJvZHkoQ29yZUlQQzo6QXJn
dW1lbnREZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8QVBJT2JqZWN0PiYgbWVzc2FnZUJvZHkpCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dFVzZXJNZXNzYWdlQ29kZXJz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHRVc2Vy
TWVzc2FnZUNvZGVycy5oCShyZXZpc2lvbiAxMzI4NzEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViQ29udGV4dFVzZXJNZXNzYWdlQ29kZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1
LDE3ICs1NSwxNyBAQCBwdWJsaWM6CiAgICAgICAgIHN3aXRjaCAodHlwZSkgewogICAgICAgICBj
YXNlIEFQSU9iamVjdDo6VHlwZVBhZ2U6IHsKICAgICAgICAgICAgIFdlYlBhZ2VQcm94eSogcGFn
ZSA9IHN0YXRpY19jYXN0PFdlYlBhZ2VQcm94eSo+KG1fcm9vdCk7Ci0gICAgICAgICAgICBlbmNv
ZGVyLmVuY29kZShwYWdlLT5wYWdlSUQoKSk7CisgICAgICAgICAgICBlbmNvZGVyIDw8IHBhZ2Ut
PnBhZ2VJRCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBB
UElPYmplY3Q6OlR5cGVGcmFtZTogewogICAgICAgICAgICAgV2ViRnJhbWVQcm94eSogZnJhbWUg
PSBzdGF0aWNfY2FzdDxXZWJGcmFtZVByb3h5Kj4obV9yb290KTsKLSAgICAgICAgICAgIGVuY29k
ZXIuZW5jb2RlKGZyYW1lLT5mcmFtZUlEKCkpOworICAgICAgICAgICAgZW5jb2RlciA8PCBmcmFt
ZS0+ZnJhbWVJRCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2Fz
ZSBBUElPYmplY3Q6OlR5cGVQYWdlR3JvdXA6IHsKICAgICAgICAgICAgIFdlYlBhZ2VHcm91cCog
cGFnZUdyb3VwID0gc3RhdGljX2Nhc3Q8V2ViUGFnZUdyb3VwKj4obV9yb290KTsKLSAgICAgICAg
ICAgIGVuY29kZXIuZW5jb2RlKHBhZ2VHcm91cC0+ZGF0YSgpKTsKKyAgICAgICAgICAgIGVuY29k
ZXIgPDwgcGFnZUdyb3VwLT5kYXRhKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgICAgICBkZWZhdWx0OgpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb25u
ZWN0aW9uVG9VSVByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzLmNwcAkocmV2aXNpb24gMTMyODcxKQorKysg
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb25uZWN0aW9uVG9VSVByb2Nlc3MuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3IEBAIFdlYkNvbm5lY3Rpb25Ub1VJUHJvY2Vzczo6
V2ViQ29ubmVjdGlvblQKIAogdm9pZCBXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3M6OmVuY29kZU1l
c3NhZ2VCb2R5KENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciYgZW5jb2RlciwgQVBJT2JqZWN0KiBt
ZXNzYWdlQm9keSkKIHsKLSAgICBlbmNvZGVyLmVuY29kZShJbmplY3RlZEJ1bmRsZVVzZXJNZXNz
YWdlRW5jb2RlcihtZXNzYWdlQm9keSkpOworICAgIGVuY29kZXIgPDwgSW5qZWN0ZWRCdW5kbGVV
c2VyTWVzc2FnZUVuY29kZXIobWVzc2FnZUJvZHkpOwogfQogCiBib29sIFdlYkNvbm5lY3Rpb25U
b1VJUHJvY2Vzczo6ZGVjb2RlTWVzc2FnZUJvZHkoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyJiBk
ZWNvZGVyLCBSZWZQdHI8QVBJT2JqZWN0PiYgbWVzc2FnZUJvZHkpCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VD
b2RlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VDb2RlcnMuaAkocmV2aXNpb24gMTMyODcx
KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZVVzZXJNZXNzYWdlQ29kZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTU4LDE3ICs1OCwxNyBA
QCBwdWJsaWM6CiAgICAgICAgIHN3aXRjaCAodHlwZSkgewogICAgICAgICBjYXNlIEFQSU9iamVj
dDo6VHlwZUJ1bmRsZVBhZ2U6IHsKICAgICAgICAgICAgIFdlYlBhZ2UqIHBhZ2UgPSBzdGF0aWNf
Y2FzdDxXZWJQYWdlKj4obV9yb290KTsKLSAgICAgICAgICAgIGVuY29kZXIuZW5jb2RlKHBhZ2Ut
PnBhZ2VJRCgpKTsKKyAgICAgICAgICAgIGVuY29kZXIgPDwgcGFnZS0+cGFnZUlEKCk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIEFQSU9iamVjdDo6VHlwZUJ1
bmRsZUZyYW1lOiB7CiAgICAgICAgICAgICBXZWJGcmFtZSogZnJhbWUgPSBzdGF0aWNfY2FzdDxX
ZWJGcmFtZSo+KG1fcm9vdCk7Ci0gICAgICAgICAgICBlbmNvZGVyLmVuY29kZShmcmFtZS0+ZnJh
bWVJRCgpKTsKKyAgICAgICAgICAgIGVuY29kZXIgPDwgZnJhbWUtPmZyYW1lSUQoKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQVBJT2JqZWN0OjpUeXBlQnVu
ZGxlUGFnZUdyb3VwOiB7CiAgICAgICAgICAgICBXZWJQYWdlR3JvdXBQcm94eSogcGFnZUdyb3Vw
ID0gc3RhdGljX2Nhc3Q8V2ViUGFnZUdyb3VwUHJveHkqPihtX3Jvb3QpOwotICAgICAgICAgICAg
ZW5jb2Rlci5lbmNvZGUocGFnZUdyb3VwLT5wYWdlR3JvdXBJRCgpKTsKKyAgICAgICAgICAgIGVu
Y29kZXIgPDwgcGFnZUdyb3VwLT5wYWdlR3JvdXBJRCgpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KICAgICAgICAgZGVmYXVsdDoKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW4uY3BwCShyZXZpc2lvbiAxMzI4NzEpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQs
MTIgKzM0LDEyIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiB2b2lkIFBsdWdpbjo6UGFyYW1ldGVy
czo6ZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAg
ICBlbmNvZGVyLmVuY29kZSh1cmwuc3RyaW5nKCkpOwotICAgIGVuY29kZXIuZW5jb2RlKG5hbWVz
KTsKLSAgICBlbmNvZGVyLmVuY29kZSh2YWx1ZXMpOwotICAgIGVuY29kZXIuZW5jb2RlKG1pbWVU
eXBlKTsKLSAgICBlbmNvZGVyLmVuY29kZShpc0Z1bGxGcmFtZVBsdWdpbik7Ci0gICAgZW5jb2Rl
ci5lbmNvZGUoc2hvdWxkVXNlTWFudWFsTG9hZGVyKTsKKyAgICBlbmNvZGVyIDw8IHVybC5zdHJp
bmcoKTsKKyAgICBlbmNvZGVyIDw8IG5hbWVzOworICAgIGVuY29kZXIgPDwgdmFsdWVzOworICAg
IGVuY29kZXIgPDwgbWltZVR5cGU7CisgICAgZW5jb2RlciA8PCBpc0Z1bGxGcmFtZVBsdWdpbjsK
KyAgICBlbmNvZGVyIDw8IHNob3VsZFVzZU1hbnVhbExvYWRlcjsKICNpZiBQTEFURk9STShNQUMp
CiAgICAgZW5jb2Rlci5lbmNvZGVFbnVtKGxheWVySG9zdGluZ01vZGUpOwogI2VuZGlmCg==
</data>
<flag name="review"
          id="185417"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>