<?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>84765</bug_id>
          
          <creation_ts>2012-04-24 14:06:55 -0700</creation_ts>
          <short_desc>Replace occurences of style selector from variables and methods names by style resolver.</short_desc>
          <delta_ts>2012-04-24 16:51:45 -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>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>
          
          <blocked>42764</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexis Menard (darktears)">menard</reporter>
          <assigned_to name="Alexis Menard (darktears)">menard</assigned_to>
          <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>macpherson</cc>
    
    <cc>rakuco</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>609032</commentid>
    <comment_count>0</comment_count>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-04-24 14:06:55 -0700</bug_when>
    <thetext>Replace occurences of style selector from variables and methods names by style resolver.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>609042</commentid>
    <comment_count>1</comment_count>
      <attachid>138639</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-04-24 14:11:00 -0700</bug_when>
    <thetext>Created attachment 138639
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>609086</commentid>
    <comment_count>2</comment_count>
      <attachid>138639</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-04-24 14:39:19 -0700</bug_when>
    <thetext>Comment on attachment 138639
Patch

Attachment 138639 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/12518341</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>609090</commentid>
    <comment_count>3</comment_count>
      <attachid>138650</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-04-24 14:46:15 -0700</bug_when>
    <thetext>Created attachment 138650
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>609210</commentid>
    <comment_count>4</comment_count>
      <attachid>138650</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-04-24 16:14:50 -0700</bug_when>
    <thetext>Comment on attachment 138650
Patch

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>609249</commentid>
    <comment_count>5</comment_count>
      <attachid>138650</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-04-24 16:51:32 -0700</bug_when>
    <thetext>Comment on attachment 138650
Patch

Clearing flags on attachment: 138650

Committed r115136: &lt;http://trac.webkit.org/changeset/115136&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>609250</commentid>
    <comment_count>6</comment_count>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-04-24 16:51:45 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>138639</attachid>
            <date>2012-04-24 14:11:00 -0700</date>
            <delta_ts>2012-04-24 14:46:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84765-20120424181042.patch</filename>
            <type>text/plain</type>
            <size>226875</size>
            <attacher name="Alexis Menard (darktears)">menard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE1MDk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzliNDFlMjU3OTgzMjNk
Nzg5NzRkMjkzNGRlMDAwMzZkNmQwYzJmMC4uNzI0MTJmYzE4YzA2OGMzZTE1NmQwNGQ2NWEwMDU5
YTNjMjk1NmM5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDMxNSBAQAogMjAxMi0wNC0yNCAgQWxl
eGlzIE1lbmFyZCAgPGFsZXhpcy5tZW5hcmRAb3BlbmJvc3NhLm9yZz4KIAorICAgICAgICBSZXBs
YWNlIG9jY3VyZW5jZXMgb2Ygc3R5bGUgc2VsZWN0b3IgZnJvbSB2YXJpYWJsZXMgYW5kIG1ldGhv
ZHMgbmFtZXMgYnkgc3R5bGUgcmVzb2x2ZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD04NDc2NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFJlbmFtZSBtZXRob2RzIGFuZCB2YXJpYWJsZXMgdG8gZm9sbG93
IHRoZSBuZXcgbmFtZSBTdHlsZVJlc29sdmVyLiBJdCByZXF1aXJlcyB0byB1cGRhdGUgdGhlCisg
ICAgICAgIGxvY2FsIHZhcmlhYmxlcywgbWV0aG9kcyBwYXJhbWV0ZXJzLCBhbmQgZnVuY3Rpb24g
bmFtZXMgdG8gbWF0Y2ggdGhlIG5ldyBuYW1lIGFuZCB0byByZW1vdmUKKyAgICAgICAgdGhlIGNv
bmNlcHQgb2YgInNlbGVjdG9yIiB0byBhdm9pZCBjbGFzaGluZyB3aXRoIHRoZSBDU1MgY29uY2Vw
dC4gVGhlIG5leHQgYW5kIGxhc3QgcGF0Y2gKKyAgICAgICAgd2lsbCBiZSB0byByZW5hbWUgQ1NT
U3R5bGVTZWxlY3RvciBmaWxlIGFuZCB1cGRhdGUgdGhlIGluY2x1ZGVzLgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cyA6IGp1c3QgcmVuYW1pbmcgdGhlIHZhcmlhYmxlcyBhbmQgbWV0aG9kIG5hbWVz
LiBObyBiZWhhdmlvciBjaGFuZ2VzIGV4cGVjdGVkLgorCisgICAgICAgICogY3NzL0NTU0ZvbnRT
ZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250U2VsZWN0b3I6OmRpc3BhdGNo
SW52YWxpZGF0aW9uQ2FsbGJhY2tzKToKKyAgICAgICAgKiBjc3MvQ1NTR3JhZGllbnRWYWx1ZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NHcmFkaWVudFZhbHVlOjphZGRTdG9wcyk6CisgICAg
ICAgICogY3NzL0NTU1BhZ2VSdWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhZ2VSdWxl
OjpzZXRTZWxlY3RvclRleHQpOgorICAgICAgICAqIGNzcy9DU1NTdHlsZVJ1bGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVSdWxlOjpzZXRTZWxlY3RvclRleHQpOgorICAgICAgICAq
IGNzcy9DU1NTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlU2hlZXRJbnRl
cm5hbDo6c3R5bGVTaGVldENoYW5nZWQpOgorICAgICAgICAqIGNzcy9NZWRpYVF1ZXJ5RXZhbHVh
dG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUXVlcnlFdmFsdWF0b3I6OmV2YWwpOgor
ICAgICAgICAqIGNzcy9NZWRpYVF1ZXJ5TWF0Y2hlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVF1ZXJ5TWF0Y2hlcjo6cHJlcGFyZUV2YWx1YXRvcik6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVF1ZXJ5TWF0Y2hlcjo6c3R5bGVSZXNvbHZlckNoYW5nZWQpOgorICAgICAgICAqIGNzcy9N
ZWRpYVF1ZXJ5TWF0Y2hlci5oOgorICAgICAgICAoTWVkaWFRdWVyeU1hdGNoZXIpOgorICAgICAg
ICAqIGNzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGVSdWxlQ1NTU3R5bGVEZWNsYXJhdGlvbjo6c2V0TmVlZHNTdHlsZVJlY2FsYyk6
CisgICAgICAgICogY3NzL1N0eWxlQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBs
eVByb3BlcnR5RXhwYW5kaW5nOjphcHBseUluaGVyaXRWYWx1ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpBcHBseVByb3BlcnR5RXhwYW5kaW5nOjphcHBseUluaXRpYWxWYWx1ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpBcHBseVByb3BlcnR5RXhwYW5kaW5nOjphcHBseVZhbHVlKToKKyAgICAgICAgKFdl
YkNvcmU6OkFwcGx5UHJvcGVydHlEZWZhdWx0QmFzZTo6YXBwbHlJbmhlcml0VmFsdWUpOgorICAg
ICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eURlZmF1bHRCYXNlOjphcHBseUluaXRpYWxWYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5RGVmYXVsdDo6YXBwbHlWYWx1ZSk6
CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5TnVtYmVyOjphcHBseVZhbHVlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlTdHlsZUltYWdlOjphcHBseVZhbHVlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlBdXRvOjphcHBseUluaGVyaXRWYWx1ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5QXV0bzo6YXBwbHlJbml0aWFsVmFsdWUpOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUF1dG86OmFwcGx5VmFsdWUpOgorICAgICAg
ICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUNsaXA6OmNvbnZlcnRUb0xlbmd0aCk6CisgICAgICAg
IChXZWJDb3JlOjpBcHBseVByb3BlcnR5Q2xpcDo6YXBwbHlJbmhlcml0VmFsdWUpOgorICAgICAg
ICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUNsaXA6OmFwcGx5SW5pdGlhbFZhbHVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlDbGlwOjphcHBseVZhbHVlKToKKyAgICAgICAgKFdl
YkNvcmU6OkFwcGx5UHJvcGVydHlDb2xvcjo6YXBwbHlJbmhlcml0VmFsdWUpOgorICAgICAgICAo
V2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUNvbG9yOjphcHBseUluaXRpYWxWYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpBcHBseVByb3BlcnR5Q29sb3I6OmFwcGx5VmFsdWUpOgorICAgICAgICAoV2Vi
Q29yZTo6QXBwbHlQcm9wZXJ0eUNvbG9yOjphcHBseUNvbG9yVmFsdWUpOgorICAgICAgICAoV2Vi
Q29yZTo6QXBwbHlQcm9wZXJ0eURpcmVjdGlvbjo6YXBwbHlWYWx1ZSk6CisgICAgICAgIChXZWJD
b3JlOjpBcHBseVByb3BlcnR5TGVuZ3RoOjphcHBseVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6
OkFwcGx5UHJvcGVydHlTdHJpbmc6OmFwcGx5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBw
bHlQcm9wZXJ0eUJvcmRlclJhZGl1czo6YXBwbHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpB
cHBseVByb3BlcnR5RmlsbExheWVyOjphcHBseUluaGVyaXRWYWx1ZSk6CisgICAgICAgIChXZWJD
b3JlOjpBcHBseVByb3BlcnR5RmlsbExheWVyOjphcHBseUluaXRpYWxWYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpBcHBseVByb3BlcnR5RmlsbExheWVyOjphcHBseVZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OkFwcGx5UHJvcGVydHlDb21wdXRlTGVuZ3RoOjphcHBseVZhbHVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlGb250OjphcHBseUluaGVyaXRWYWx1ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5Rm9udDo6YXBwbHlJbml0aWFsVmFsdWUpOgorICAg
ICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUZvbnQ6OmFwcGx5VmFsdWUpOgorICAgICAgICAo
V2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUZvbnRTaXplOjphcHBseUluaGVyaXRWYWx1ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5Rm9udFNpemU6OmFwcGx5SW5pdGlhbFZhbHVlKToK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlGb250U2l6ZTo6YXBwbHlWYWx1ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5Rm9udFdlaWdodDo6YXBwbHlWYWx1ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5Rm9udFZhcmlhbnRMaWdhdHVyZXM6OmFwcGx5
SW5oZXJpdFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlGb250VmFyaWFu
dExpZ2F0dXJlczo6YXBwbHlJbml0aWFsVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQ
cm9wZXJ0eUZvbnRWYXJpYW50TGlnYXR1cmVzOjphcHBseVZhbHVlKToKKyAgICAgICAgKFdlYkNv
cmU6OkFwcGx5UHJvcGVydHlCb3JkZXJJbWFnZTo6YXBwbHlWYWx1ZSk6CisgICAgICAgIChXZWJD
b3JlOjpBcHBseVByb3BlcnR5Qm9yZGVySW1hZ2VNb2RpZmllcjo6YXBwbHlJbmhlcml0VmFsdWUp
OgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUJvcmRlckltYWdlTW9kaWZpZXI6OmFw
cGx5SW5pdGlhbFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlCb3JkZXJJ
bWFnZU1vZGlmaWVyOjphcHBseVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVy
dHlCb3JkZXJJbWFnZVNvdXJjZTo6YXBwbHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBs
eVByb3BlcnR5Q291bnRlcjo6YXBwbHlJbmhlcml0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6
QXBwbHlQcm9wZXJ0eUNvdW50ZXI6OmFwcGx5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBw
bHlQcm9wZXJ0eUN1cnNvcjo6YXBwbHlJbmhlcml0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6
QXBwbHlQcm9wZXJ0eUN1cnNvcjo6YXBwbHlJbml0aWFsVmFsdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6QXBwbHlQcm9wZXJ0eUN1cnNvcjo6YXBwbHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpB
cHBseVByb3BlcnR5VGV4dEFsaWduOjphcHBseVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFw
cGx5UHJvcGVydHlUZXh0RGVjb3JhdGlvbjo6YXBwbHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpBcHBseVByb3BlcnR5VW5pY29kZUJpZGk6OmFwcGx5VmFsdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6QXBwbHlQcm9wZXJ0eUxpbmVIZWlnaHQ6OmFwcGx5VmFsdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6QXBwbHlQcm9wZXJ0eVBhZ2VTaXplOjphcHBseVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6
OkFwcGx5UHJvcGVydHlUZXh0RW1waGFzaXNTdHlsZTo6YXBwbHlJbmhlcml0VmFsdWUpOgorICAg
ICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eVRleHRFbXBoYXNpc1N0eWxlOjphcHBseUluaXRp
YWxWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5VGV4dEVtcGhhc2lzU3R5
bGU6OmFwcGx5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUFuaW1hdGlv
bjo6bWFwKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlBbmltYXRpb246OmFwcGx5
SW5oZXJpdFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlBbmltYXRpb246
OmFwcGx5SW5pdGlhbFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlBbmlt
YXRpb246OmFwcGx5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eU91dGxp
bmVTdHlsZTo6YXBwbHlJbmhlcml0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9w
ZXJ0eU91dGxpbmVTdHlsZTo6YXBwbHlJbml0aWFsVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6
QXBwbHlQcm9wZXJ0eU91dGxpbmVTdHlsZTo6YXBwbHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpBcHBseVByb3BlcnR5UmVzaXplOjphcHBseVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFw
cGx5UHJvcGVydHlWZXJ0aWNhbEFsaWduOjphcHBseVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6
OkFwcGx5UHJvcGVydHlBc3BlY3RSYXRpbzo6YXBwbHlJbmhlcml0VmFsdWUpOgorICAgICAgICAo
V2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUFzcGVjdFJhdGlvOjphcHBseUluaXRpYWxWYWx1ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5QXNwZWN0UmF0aW86OmFwcGx5VmFsdWUpOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eVpvb206OnJlc2V0RWZmZWN0aXZlWm9vbSk6
CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5Wm9vbTo6YXBwbHlJbmhlcml0VmFsdWUp
OgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eVpvb206OmFwcGx5SW5pdGlhbFZhbHVl
KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlab29tOjphcHBseVZhbHVlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlEaXNwbGF5Ojppc1ZhbGlkRGlzcGxheVZhbHVl
KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlEaXNwbGF5OjphcHBseUluaGVyaXRW
YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5RGlzcGxheTo6YXBwbHlJbml0
aWFsVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eURpc3BsYXk6OmFwcGx5
VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUZsZXg6OmFwcGx5SW5oZXJp
dFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlGbGV4OjphcHBseUluaXRp
YWxWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5RmxleDo6YXBwbHlWYWx1
ZSk6CisgICAgICAgICogY3NzL1N0eWxlQnVpbGRlci5oOgorICAgICAgICAoV2ViQ29yZTo6UHJv
cGVydHlIYW5kbGVyOjphcHBseUluaGVyaXRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpQcm9w
ZXJ0eUhhbmRsZXI6OmFwcGx5SW5pdGlhbFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlByb3Bl
cnR5SGFuZGxlcjo6YXBwbHlWYWx1ZSk6CisgICAgICAgICogY3NzL1N0eWxlTWVkaWEuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGVNZWRpYTo6bWF0Y2hNZWRpdW0pOgorICAgICAgICAqIGRv
bS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6RG9jdW1lbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6On5Eb2N1bWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6c2V0RG9jVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Y2hp
bGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzZXRDb250ZW50TGFu
Z3VhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlY2FsY1N0eWxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp1cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVl
dHMpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnN0eWxlRm9yRWxlbWVudElnbm9yaW5n
UGVuZGluZ1N0eWxlc2hlZXRzKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzdHlsZUZv
clBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNvbWJpbmVDU1NGZWF0dXJlRmxh
Z3MpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlc2V0Q1NTRmVhdHVyZUZsYWdzKToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpjcmVhdGVTdHlsZVJlc29sdmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50OjpjbGVhclN0eWxlUmVzb2x2ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6OmNsZWFyUGFnZVVzZXJTaGVldCk6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudDo6dXBkYXRlUGFnZVVzZXJTaGVldCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6Y2xlYXJQYWdlR3JvdXBVc2VyU2hlZXRzKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
Ojp1cGRhdGVQYWdlR3JvdXBVc2VyU2hlZXRzKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
OjphZGRVc2VyU2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnByb2Nlc3NIdHRw
RXF1aXYpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldFNlbGVjdGVkU3R5bGVzaGVl
dFNldCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cmVtb3ZlUGVuZGluZ1NoZWV0KToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpldmFsdWF0ZU1lZGlhUXVlcnlMaXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzdHlsZVJlc29sdmVyQ2hhbmdlZCk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6YW5hbHl6ZVN0eWxlc2hlZXRDaGFuZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnQ6OnVwZGF0ZUFjdGl2ZVN0eWxlc2hlZXRzKToKKyAgICAgICAgKiBk
b20vRG9jdW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzdHlsZVJlc29sdmVy
SWZFeGlzdHMpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnN0eWxlUmVzb2x2ZXIpOgor
ICAgICAgICAoRG9jdW1lbnQpOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXJQYXJlbnRQdXNoZXI6OlN0eWxlUmVzb2x2ZXJQYXJlbnRQ
dXNoZXIpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlclBhcmVudFB1c2hlcjo6cHVz
aCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyUGFyZW50UHVzaGVyOjp+U3R5bGVS
ZXNvbHZlclBhcmVudFB1c2hlcik6CisgICAgICAgIChTdHlsZVJlc29sdmVyUGFyZW50UHVzaGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6RWxlbWVudDo6YXR0YWNoKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6
OnN0eWxlRm9yUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6cmVjYWxjU3R5
bGUpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6YmVnaW5QYXJzaW5nQ2hpbGRyZW4pOgor
ICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6ZmluaXNoUGFyc2luZ0NoaWxkcmVuKToKKyAgICAg
ICAgKiBkb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBy
b2Nlc3NpbmdJbnN0cnVjdGlvbjo6cmVtb3ZlZEZyb20pOgorICAgICAgICAqIGRvbS9TaGFkb3dS
b290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OmF0dGFjaCk6CisgICAgICAg
ICogZG9tL1NoYWRvd1RyZWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93VHJlZTo6cmVj
YWxjU2hhZG93VHJlZVN0eWxlKToKKyAgICAgICAgKiBkb20vU3R5bGVFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlRWxlbWVudDo6cmVtb3ZlZEZyb21Eb2N1bWVudCk6CisgICAg
ICAgICogZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c3R5bGVG
cm9tTWF0Y2hlZFJ1bGVzRm9yRWxlbWVudCk6CisgICAgICAgICogaGlzdG9yeS9DYWNoZWRQYWdl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFBhZ2U6OnJlc3RvcmUpOgorICAgICAgICAq
IGh0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENhbnZh
c0VsZW1lbnQ6OnN0eWxlUmVzb2x2ZXIpOgorICAgICAgICAqIGh0bWwvSFRNTENhbnZhc0VsZW1l
bnQuaDoKKyAgICAgICAgKEhUTUxDYW52YXNFbGVtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxM
aW5rRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OnNldERp
c2FibGVkU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50Ojpwcm9jZXNz
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVudDo6cmVtb3ZlZEZyb20pOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50OjpyZW1vdmVQZW5kaW5nU2hlZXQpOgorICAg
ICAgICAqIGh0bWwvSFRNTFN0eWxlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
U3R5bGVFbGVtZW50OjpyZWdpc3RlcldpdGhTY29waW5nTm9kZSk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MU3R5bGVFbGVtZW50Ojp1bnJlZ2lzdGVyV2l0aFNjb3BpbmdOb2RlKToKKyAgICAgICAg
KiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRGb250KToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
Q1NTQWdlbnQ6OnJlY2FsY1N0eWxlRm9yUHNldWRvU3RhdGVJZk5lZWRlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0TWF0Y2hlZFN0eWxlc0Zvck5vZGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkQXJyYXlGb3JSdWxlTGlzdCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6Y2xlYXJQc2V1ZG9TdGF0ZSk6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OnVwZGF0ZVZpZXdNZXRyaWNzKToKKyAgICAgICAg
KiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmdldE1h
dGNoZWRDU1NSdWxlcyk6CisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZTo6c2V0UHJpbnRpbmcpOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6bGF5b3V0KToKKyAgICAgICAgKiBwYWdlL1Bh
Z2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2V0Vmlld01vZGUpOgorICAgICAgICAo
V2ViQ29yZTo6UGFnZTo6c2V0TmVlZHNSZWNhbGNTdHlsZUluQWxsRnJhbWVzKToKKyAgICAgICAg
KFdlYkNvcmU6OlBhZ2U6OmFsbFZpc2l0ZWRTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6UGFnZTo6dmlzaXRlZFN0YXRlQ2hhbmdlZCk6CisgICAgICAgICogcGFnZS9hbmltYXRpb24v
S2V5ZnJhbWVBbmltYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZnJhbWVBbmltYXRp
b246OktleWZyYW1lQW5pbWF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvUmVuZGVyVGhl
bWVFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVFZmw6OmFkanVzdFNsaWRl
clRyYWNrU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVFZmw6OmFkanVzdFNs
aWRlclRodW1iU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVFZmw6OmFkanVz
dENoZWNrYm94U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVFZmw6OmFkanVz
dFJhZGlvU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVFZmw6OmFkanVzdEJ1
dHRvblN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lRWZsOjphZGp1c3RNZW51
TGlzdFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lRWZsOjphZGp1c3RNZW51
TGlzdEJ1dHRvblN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lRWZsOjphZGp1
c3RUZXh0RmllbGRTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUVmbDo6YWRq
dXN0VGV4dEFyZWFTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUVmbDo6YWRq
dXN0U2VhcmNoRmllbGREZWNvcmF0aW9uU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGhlbWVFZmw6OmFkanVzdFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvblN0eWxlKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRoZW1lRWZsOjphZGp1c3RTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0
aW9uU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVFZmw6OmFkanVzdFNlYXJj
aEZpZWxkQ2FuY2VsQnV0dG9uU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVF
Zmw6OmFkanVzdFNlYXJjaEZpZWxkU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhl
bWVFZmw6OmFkanVzdFByb2dyZXNzQmFyU3R5bGUpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9S
ZW5kZXJUaGVtZUd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUd0azo6YWRq
dXN0QnV0dG9uU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6OmFkanVz
dE1lbnVMaXN0U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6OmFkanVz
dE1lbnVMaXN0QnV0dG9uU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6
OmFkanVzdFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvblN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRoZW1lR3RrOjphZGp1c3RTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uU3R5bGUp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6OmFkanVzdFNlYXJjaEZpZWxkQ2Fu
Y2VsQnV0dG9uU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6OmFkanVz
dFNlYXJjaEZpZWxkU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6OmFk
anVzdFNsaWRlclRodW1iU3R5bGUpOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1JlbmRlclRoZW1l
UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVRdDo6YWRqdXN0U2xpZGVyVGh1
bWJTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVF0OjphZGp1c3RTZWFyY2hG
aWVsZFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lUXQ6OmFkanVzdFNlYXJj
aEZpZWxkQ2FuY2VsQnV0dG9uU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVR
dDo6YWRqdXN0U2VhcmNoRmllbGREZWNvcmF0aW9uU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGhlbWVRdDo6YWRqdXN0U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvblN0eWxlKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lUXQ6OmFkanVzdElubmVyU3BpbkJ1dHRvblN0
eWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9SZW5kZXJUaGVtZVF0TW9iaWxlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lUXRNb2JpbGU6OmFkanVzdEJ1dHRvblN0eWxlKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lUXRNb2JpbGU6OmFkanVzdE1lbnVMaXN0U3R5
bGUpOgorICAgICAgICAqIHBsYXRmb3JtL3d4L1JlbmRlclRoZW1lV3guY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGhlbWVXeDo6YWRqdXN0QnV0dG9uU3R5bGUpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RC
b3g6OnVwZGF0ZUZyb21FbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RCb3g6
OnBhaW50SXRlbUZvcmVncm91bmQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNZW51TGlz
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNZW51TGlzdDo6Zm9udFNlbGVjdG9yKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck9iamVjdDo6Z2V0VW5jYWNoZWRQc2V1ZG9TdHlsZSk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclJlZ2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZWdpb246OnN0
eWxlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJlZ2lvbjo6Y29tcHV0ZVN0
eWxlSW5SZWdpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmds
ZUxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5l
Ojpmb250U2VsZWN0b3IpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6YWRqdXN0U3R5bGUpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGhlbWU6OmFkanVzdElucHV0RmllbGRTcGVlY2hCdXR0b25TdHlsZSk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1Ta2lhLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRoZW1lQ2hyb21pdW1Ta2lhOjphZGp1c3RNZW51TGlzdFN0eWxlKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQ2hyb21pdW1Ta2lhOjphZGp1c3RNZW51TGlz
dEJ1dHRvblN0eWxlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW06Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6YWRqdXN0TWVudUxpc3RTdHlsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6YWRqdXN0U2xpZGVyVGh1bWJTdHlsZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6YWRqdXN0U2VhcmNoRmllbGRTdHls
ZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lU2FmYXJpLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRoZW1lU2FmYXJpOjpzZXRGb250RnJvbUNvbnRyb2xTaXplKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lU2FmYXJpOjphZGp1c3RCdXR0b25TdHlsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVNhZmFyaTo6YWRqdXN0TWVudUxpc3RTdHlsZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVNhZmFyaTo6YWRqdXN0TWVudUxpc3RCdXR0
b25TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVNhZmFyaTo6YWRqdXN0U2xp
ZGVyVGh1bWJTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVNhZmFyaTo6YWRq
dXN0U2VhcmNoRmllbGRTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVNhZmFy
aTo6YWRqdXN0U2VhcmNoRmllbGRDYW5jZWxCdXR0b25TdHlsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUaGVtZVNhZmFyaTo6YWRqdXN0U2VhcmNoRmllbGREZWNvcmF0aW9uU3R5bGUpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVTYWZhcmk6OmFkanVzdFNlYXJjaEZpZWxkUmVz
dWx0c0RlY29yYXRpb25TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVNhZmFy
aTo6YWRqdXN0U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uU3R5bGUpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJUaGVtZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVdp
bjo6YWRqdXN0SW5uZXJTcGluQnV0dG9uU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGhlbWVXaW46OmFkanVzdE1lbnVMaXN0U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGhlbWVXaW46OmFkanVzdE1lbnVMaXN0QnV0dG9uU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGhlbWVXaW46OmFkanVzdFNlYXJjaEZpZWxkU3R5bGUpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGhlbWVXaW46OmFkanVzdFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uU3R5bGUpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVXaW46OmFkanVzdFNlYXJjaEZpZWxkRGVjb3Jh
dGlvblN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lV2luOjphZGp1c3RTZWFy
Y2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGhlbWVXaW46OmFkanVzdFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvblN0eWxlKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW5DRS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZVdpbkNFOjphZGp1c3RNZW51TGlzdFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRoZW1lV2luQ0U6OmFkanVzdFNlYXJjaEZpZWxkU3R5bGUpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGhlbWVXaW5DRTo6YWRqdXN0U2VhcmNoRmllbGRDYW5jZWxCdXR0b25TdHlsZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVdpbkNFOjphZGp1c3RTZWFyY2hGaWVsZERl
Y29yYXRpb25TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVdpbkNFOjphZGp1
c3RTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGhlbWVXaW5DRTo6YWRqdXN0U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uU3R5bGUpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVXaW5DRTo6YWRqdXN0TWVudUxpc3RCdXR0b25T
dHlsZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJhdGVkSW1hZ2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVHZW5lcmF0ZWRJbWFnZTo6aW1hZ2UpOgorICAgICAg
ICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lVGV4dC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTVkdJbmxpbmVUZXh0Ojpjb21wdXRlTmV3U2NhbGVkRm9udEZvclN0eWxlKToK
KyAgICAgICAgKiBzdmcvU1ZHRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVt
ZW50OjpjdXN0b21TdHlsZUZvclJlbmRlcmVyKToKKyAgICAgICAgKiBzdmcvU1ZHRm9udEZhY2VF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZvbnRGYWNlRWxlbWVudDo6cmVidWls
ZEZvbnRGYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZvbnRGYWNlRWxlbWVudDo6cmVtb3Zl
ZEZyb20pOgorICAgICAgICAqIHhtbC9YTUxUcmVlVmlld2VyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlhNTFRyZWVWaWV3ZXI6OnRyYW5zZm9ybURvY3VtZW50VG9UcmVlVmlldyk6CisgICAgICAg
ICogeG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpY
TUxEb2N1bWVudFBhcnNlcjo6ZW5kKToKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50
UGFyc2VyTGlieG1sMi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxEb2N1bWVudFBhcnNlcjo6
ZG9FbmQpOgorICAgICAgICAqIHhtbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJRdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpYTUxEb2N1bWVudFBhcnNlcjo6ZG9FbmQpOgorCisyMDEyLTA0LTI0
ICBBbGV4aXMgTWVuYXJkICA8YWxleGlzLm1lbmFyZEBvcGVuYm9zc2Eub3JnPgorCiAgICAgICAg
IFJlbmFtZSBDU1NTdHlsZVNlbGVjdG9yIGNsYXNzIHRvIFN0eWxlUmVzb2x2ZXIuCiAgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NDczNAogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCmluZGV4IDliMmZjZjc1YjZjYjQ1YzViNGYwNDhiNTM2MDRlNzllNjcx
OTZmMGQuLmJhNzBkZmJmNDdjMzM3NjUyOGVlODRjNDY2NGEzOTMzNTVhNGM2ZTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTItMDQtMjQgIEFsZXhpcyBN
ZW5hcmQgIDxhbGV4aXMubWVuYXJkQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgUmVwbGFjZSBv
Y2N1cmVuY2VzIG9mIHN0eWxlIHNlbGVjdG9yIGZyb20gdmFyaWFibGVzIGFuZCBtZXRob2RzIG5h
bWVzIGJ5IHN0eWxlIHJlc29sdmVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODQ3NjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBSZW5hbWUgbWV0aG9kcyBhbmQgdmFyaWFibGVzIHRvIGZvbGxvdyB0aGUg
bmV3IG5hbWUgU3R5bGVSZXNvbHZlci4gSXQgcmVxdWlyZXMgdG8gdXBkYXRlIHRoZQorICAgICAg
ICBsb2NhbCB2YXJpYWJsZXMsIG1ldGhvZHMgcGFyYW1ldGVycywgYW5kIGZ1bmN0aW9uIG5hbWVz
IHRvIG1hdGNoIHRoZSBuZXcgbmFtZSBhbmQgdG8gcmVtb3ZlCisgICAgICAgIHRoZSBjb25jZXB0
IG9mICJzZWxlY3RvciIgdG8gYXZvaWQgY2xhc2hpbmcgd2l0aCB0aGUgQ1NTIGNvbmNlcHQuIFRo
ZSBuZXh0IGFuZCBsYXN0IHBhdGNoCisgICAgICAgIHdpbGwgYmUgdG8gcmVuYW1lIENTU1N0eWxl
U2VsZWN0b3IgZmlsZSBhbmQgdXBkYXRlIHRoZSBpbmNsdWRlcy4KKworICAgICAgICAqIHNyYy9B
dXRvZmlsbFBvcHVwTWVudUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkF1dG9maWxsUG9w
dXBNZW51Q2xpZW50Ojpmb250U2VsZWN0b3IpOgorICAgICAgICAoV2ViS2l0OjpBdXRvZmlsbFBv
cHVwTWVudUNsaWVudDo6aW5pdGlhbGl6ZSk6CisgICAgICAgICogc3JjL1dlYkRldlRvb2xzQWdl
bnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RGV2aWNlTWV0cmljc1N1cHBvcnQ6OmF1dG9a
b29tUGFnZVRvRml0V2lkdGgpOgorICAgICAgICAoV2ViS2l0OjpEZXZpY2VNZXRyaWNzU3VwcG9y
dDo6YXBwbHlTaXplT3ZlcnJpZGVJbnRlcm5hbCk6CisKIDIwMTItMDQtMjQgIFNhbWkgS3lvc3Rp
bGEgIDxza3lvc3RpbEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBEb24ndCBr
ZWVwIHBvaW50ZXJzIHRvIHJlbGVhc2VkIGxheWVyIHRyZWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCAy
YTEwZDFlNGY2MjI1NGI0NTEwYjhhYTU0Yjk3OWRlNmUwZTRmZGY4Li40ZTQ0NWJlZjNkM2QwYTg5
OThiMjM1MTIzZTIyNzkzOGFkNWNiOTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkg
QEAKKzIwMTItMDQtMjQgIEFsZXhpcyBNZW5hcmQgIDxhbGV4aXMubWVuYXJkQG9wZW5ib3NzYS5v
cmc+CisKKyAgICAgICAgUmVwbGFjZSBvY2N1cmVuY2VzIG9mIHN0eWxlIHNlbGVjdG9yIGZyb20g
dmFyaWFibGVzIGFuZCBtZXRob2RzIG5hbWVzIGJ5IHN0eWxlIHJlc29sdmVyLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQ3NjUKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW5hbWUgbWV0aG9kcyBhbmQg
dmFyaWFibGVzIHRvIGZvbGxvdyB0aGUgbmV3IG5hbWUgU3R5bGVSZXNvbHZlci4gSXQgcmVxdWly
ZXMgdG8gdXBkYXRlIHRoZQorICAgICAgICBsb2NhbCB2YXJpYWJsZXMsIG1ldGhvZHMgcGFyYW1l
dGVycywgYW5kIGZ1bmN0aW9uIG5hbWVzIHRvIG1hdGNoIHRoZSBuZXcgbmFtZSBhbmQgdG8gcmVt
b3ZlCisgICAgICAgIHRoZSBjb25jZXB0IG9mICJzZWxlY3RvciIgdG8gYXZvaWQgY2xhc2hpbmcg
d2l0aCB0aGUgQ1NTIGNvbmNlcHQuIFRoZSBuZXh0IGFuZCBsYXN0IHBhdGNoCisgICAgICAgIHdp
bGwgYmUgdG8gcmVuYW1lIENTU1N0eWxlU2VsZWN0b3IgZmlsZSBhbmQgdXBkYXRlIHRoZSBpbmNs
dWRlcy4KKworICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZpZXcubW06CisgICAgICAgICgtW1dl
YkhUTUxWaWV3IHJlYXBwbHlTdHlsZXNdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX3NldFBy
aW50aW5nOm1pbmltdW1QYWdlTG9naWNhbFdpZHRoOmxvZ2ljYWxIZWlnaHQ6b3JpZ2luYWxQYWdl
V2lkdGg6b3JpZ2luYWxQYWdlSGVpZ2h0Om1heGltdW1TaHJpbmtSYXRpbzphZGp1c3RWaWV3U2l6
ZTpwYWdpbmF0ZVNjcmVlbkNvbnRlbnQ6XSk6CisKIDIwMTItMDQtMjMgIEFuZHkgRXN0ZXMgIDxh
ZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIEluY3JlbWVudGFsIHJlbmRlcmluZyBzaG91bGQg
YmUgdW5zdXBwcmVzc2VkIGFmdGVyIHRoZSBsb2FkIGV2ZW50IG9yIGEgY29uZmlndXJhYmxlIHRp
bWVvdXQsIHdoaWNoZXZlciBvY2N1cnMgZmlyc3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L3F0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IDZjMjMwMTIy
MmJiYmNlMzQ3M2IzZGMyYTNkMmYyYjVkY2JhYTBlNzguLjMwZTc5NGI0YTliYzUwNTBjMTdhNGY4
NzYwNDc4NjRkZDYyM2VlNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjkgQEAKIDIwMTIt
MDQtMjQgIEFsZXhpcyBNZW5hcmQgIDxhbGV4aXMubWVuYXJkQG9wZW5ib3NzYS5vcmc+CiAKKyAg
ICAgICAgUmVwbGFjZSBvY2N1cmVuY2VzIG9mIHN0eWxlIHNlbGVjdG9yIGZyb20gdmFyaWFibGVz
IGFuZCBtZXRob2RzIG5hbWVzIGJ5IHN0eWxlIHJlc29sdmVyLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQ3NjUKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW5hbWUgbWV0aG9kcyBhbmQgdmFyaWFibGVz
IHRvIGZvbGxvdyB0aGUgbmV3IG5hbWUgU3R5bGVSZXNvbHZlci4gSXQgcmVxdWlyZXMgdG8gdXBk
YXRlIHRoZQorICAgICAgICBsb2NhbCB2YXJpYWJsZXMsIG1ldGhvZHMgcGFyYW1ldGVycywgYW5k
IGZ1bmN0aW9uIG5hbWVzIHRvIG1hdGNoIHRoZSBuZXcgbmFtZSBhbmQgdG8gcmVtb3ZlCisgICAg
ICAgIHRoZSBjb25jZXB0IG9mICJzZWxlY3RvciIgdG8gYXZvaWQgY2xhc2hpbmcgd2l0aCB0aGUg
Q1NTIGNvbmNlcHQuIFRoZSBuZXh0IGFuZCBsYXN0IHBhdGNoCisgICAgICAgIHdpbGwgYmUgdG8g
cmVuYW1lIENTU1N0eWxlU2VsZWN0b3IgZmlsZSBhbmQgdXBkYXRlIHRoZSBpbmNsdWRlcy4KKwor
ICAgICAgICAqIEFwaS9xd2ViZWxlbWVudC5jcHA6CisgICAgICAgIChRV2ViRWxlbWVudDo6c3R5
bGVQcm9wZXJ0eSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBw
b3J0UXQuY3BwOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNldE1lZGlhVHlw
ZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUmVuZGVyVGhlbWVRU3R5bGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVRU3R5bGU6OmFkanVzdEJ1dHRvblN0eWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lUVN0eWxlOjphZGp1c3RUZXh0QXJlYVN0eWxlKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lUVN0eWxlOjphZGp1c3RNZW51TGlzdEJ1dHRv
blN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lUVN0eWxlOjphZGp1c3RTbGlk
ZXJUaHVtYlN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lUVN0eWxlOjphZGp1
c3RTZWFyY2hGaWVsZERlY29yYXRpb25TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
aGVtZVFTdHlsZTo6YWRqdXN0U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvblN0eWxlKToKKwor
MjAxMi0wNC0yNCAgQWxleGlzIE1lbmFyZCAgPGFsZXhpcy5tZW5hcmRAb3BlbmJvc3NhLm9yZz4K
KwogICAgICAgICBSZW5hbWUgQ1NTU3R5bGVTZWxlY3RvciBjbGFzcyB0byBTdHlsZVJlc29sdmVy
LgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQ3MzQK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcAppbmRleCBkOGZjOGMzZGFjNWYw
Y2I2NjJiOGVkMTllNzcwYzA1MDc3MTNjMWQyLi5iZjVjNGFhNmU2ODZlZjYzYWMxZmQ3NGFhODY4
ZGVhNDgzZTMzNTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVj
dG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcApAQCAt
MzMzLDggKzMzMyw4IEBAIHZvaWQgQ1NTRm9udFNlbGVjdG9yOjpkaXNwYXRjaEludmFsaWRhdGlv
bkNhbGxiYWNrcygpCiAgICAgLy8gRklYTUU6IE1ha2UgRG9jdW1lbnQgYSBGb250U2VsZWN0b3JD
bGllbnQgc28gdGhhdCBpdCBjYW4gc2ltcGx5IHJlZ2lzdGVyIGZvciBpbnZhbGlkYXRpb24gY2Fs
bGJhY2tzLgogICAgIGlmICghbV9kb2N1bWVudCkKICAgICAgICAgcmV0dXJuOwotICAgIGlmIChT
dHlsZVJlc29sdmVyKiBzdHlsZVNlbGVjdG9yID0gbV9kb2N1bWVudC0+c3R5bGVTZWxlY3Rvcklm
RXhpc3RzKCkpCi0gICAgICAgIHN0eWxlU2VsZWN0b3ItPmludmFsaWRhdGVNYXRjaGVkUHJvcGVy
dGllc0NhY2hlKCk7CisgICAgaWYgKFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIgPSBtX2Rv
Y3VtZW50LT5zdHlsZVJlc29sdmVySWZFeGlzdHMoKSkKKyAgICAgICAgc3R5bGVSZXNvbHZlci0+
aW52YWxpZGF0ZU1hdGNoZWRQcm9wZXJ0aWVzQ2FjaGUoKTsKICAgICBpZiAobV9kb2N1bWVudC0+
aW5QYWdlQ2FjaGUoKSB8fCAhbV9kb2N1bWVudC0+cmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJu
OwogICAgIG1fZG9jdW1lbnQtPnNjaGVkdWxlRm9yY2VkU3R5bGVSZWNhbGMoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmNwcAppbmRleCBlYWJjNTIxMDRjNDk1YTdjYWYwNjU4
ZDkyYmVkMmY5M2IxOWQ4NDQ3Li4yNzFiMjk3MDRlZmZiNjhkNjJiM2Y0YTAyYzI3MGJkNDQyYzc0
ZGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwCkBAIC0xMTUsNyAr
MTE1LDcgQEAgdm9pZCBDU1NHcmFkaWVudFZhbHVlOjphZGRTdG9wcyhHcmFkaWVudCogZ3JhZGll
bnQsIFJlbmRlck9iamVjdCogcmVuZGVyZXIsIFJlbmQKICAgICAgICAgLy8gV2UgaGF2ZSB0byBy
ZXNvbHZlIGNvbG9ycy4KICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc3RvcHMu
c2l6ZSgpOyBpKyspIHsKICAgICAgICAgICAgIGNvbnN0IENTU0dyYWRpZW50Q29sb3JTdG9wJiBz
dG9wID0gbV9zdG9wc1tpXTsKLSAgICAgICAgICAgIENvbG9yIGNvbG9yID0gcmVuZGVyZXItPmRv
Y3VtZW50KCktPnN0eWxlU2VsZWN0b3IoKS0+Y29sb3JGcm9tUHJpbWl0aXZlVmFsdWUoc3RvcC5t
X2NvbG9yLmdldCgpKTsKKyAgICAgICAgICAgIENvbG9yIGNvbG9yID0gcmVuZGVyZXItPmRvY3Vt
ZW50KCktPnN0eWxlUmVzb2x2ZXIoKS0+Y29sb3JGcm9tUHJpbWl0aXZlVmFsdWUoc3RvcC5tX2Nv
bG9yLmdldCgpKTsKIAogICAgICAgICAgICAgZmxvYXQgb2Zmc2V0OwogICAgICAgICAgICAgaWYg
KHN0b3AubV9wb3NpdGlvbi0+aXNQZXJjZW50YWdlKCkpCkBAIC0xNDgsNyArMTQ4LDcgQEAgdm9p
ZCBDU1NHcmFkaWVudFZhbHVlOjphZGRTdG9wcyhHcmFkaWVudCogZ3JhZGllbnQsIFJlbmRlck9i
amVjdCogcmVuZGVyZXIsIFJlbmQKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bVN0b3Bz
OyArK2kpIHsKICAgICAgICAgY29uc3QgQ1NTR3JhZGllbnRDb2xvclN0b3AmIHN0b3AgPSBtX3N0
b3BzW2ldOwogCi0gICAgICAgIHN0b3BzW2ldLmNvbG9yID0gcmVuZGVyZXItPmRvY3VtZW50KCkt
PnN0eWxlU2VsZWN0b3IoKS0+Y29sb3JGcm9tUHJpbWl0aXZlVmFsdWUoc3RvcC5tX2NvbG9yLmdl
dCgpKTsKKyAgICAgICAgc3RvcHNbaV0uY29sb3IgPSByZW5kZXJlci0+ZG9jdW1lbnQoKS0+c3R5
bGVSZXNvbHZlcigpLT5jb2xvckZyb21QcmltaXRpdmVWYWx1ZShzdG9wLm1fY29sb3IuZ2V0KCkp
OwogCiAgICAgICAgIGlmIChzdG9wLm1fcG9zaXRpb24pIHsKICAgICAgICAgICAgIGlmIChzdG9w
Lm1fcG9zaXRpb24tPmlzUGVyY2VudGFnZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1BhZ2VSdWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWdlUnVsZS5jcHAK
aW5kZXggNjhlNTdiNzY2ZTJkOTJjMzJhNDJkMzQ3YmQ1NDAzOTgxOWMwOTFlNy4uNmJjOTQwODcw
ZTU3MzZhNjRlYWE2MGE2YzE2ZjcxMTU1ZTBmZjhkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1BhZ2VSdWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFnZVJ1
bGUuY3BwCkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgQ1NTUGFnZVJ1bGU6OnNldFNlbGVjdG9yVGV4
dChjb25zdCBTdHJpbmcmIHNlbGVjdG9yVGV4dCkKICAgICAKICAgICBpZiAodGhpcy0+c2VsZWN0
b3JUZXh0KCkgPT0gb2xkU2VsZWN0b3JUZXh0KQogICAgICAgICByZXR1cm47Ci0gICAgZG9jLT5z
dHlsZVNlbGVjdG9yQ2hhbmdlZChEZWZlclJlY2FsY1N0eWxlKTsKKyAgICBkb2MtPnN0eWxlUmVz
b2x2ZXJDaGFuZ2VkKERlZmVyUmVjYWxjU3R5bGUpOwogfQogCiBTdHJpbmcgQ1NTUGFnZVJ1bGU6
OmNzc1RleHQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxl
UnVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVSdWxlLmNwcAppbmRleCBmMWQ0
OWE0MzcwMDIyM2ZkNzNjYzZhMGVhZDM4ZDhmMWFmZDVmOTAwLi42NjQ4ZWZlMjJmZTc3YmIzMTFl
MjU3MGJiOGY2NWM4NGI5YjE1MTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
U3R5bGVSdWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVSdWxlLmNwcApA
QCAtMTExLDcgKzExMSw3IEBAIHZvaWQgQ1NTU3R5bGVSdWxlOjpzZXRTZWxlY3RvclRleHQoY29u
c3QgU3RyaW5nJiBzZWxlY3RvclRleHQpCiAgICAgICAgIHNlbGVjdG9yVGV4dENhY2hlKCkuc2V0
KHRoaXMsIGdlbmVyYXRlU2VsZWN0b3JUZXh0KCkpOwogICAgIH0KIAotICAgIGRvYy0+c3R5bGVT
ZWxlY3RvckNoYW5nZWQoRGVmZXJSZWNhbGNTdHlsZSk7CisgICAgZG9jLT5zdHlsZVJlc29sdmVy
Q2hhbmdlZChEZWZlclJlY2FsY1N0eWxlKTsKIH0KIAogU3RyaW5nIENTU1N0eWxlUnVsZTo6Y3Nz
VGV4dCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVl
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAKaW5kZXggMTc4NTY3
YTcwZDIxMDllN2Y3MmUyZmVjZDdlZjZmMzkyNTEwYmZiYy4uMzk5MTI4MjE3YjFlNDk1MTYwODEz
YTU0MzM5MTM4MDA3MTlkMGYzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0
eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcApA
QCAtMzgyLDEyICszODIsMTIgQEAgdm9pZCBTdHlsZVNoZWV0SW50ZXJuYWw6OnN0eWxlU2hlZXRD
aGFuZ2VkKCkKICAgICB3aGlsZSAoU3R5bGVTaGVldEludGVybmFsKiBwYXJlbnQgPSByb290U2hl
ZXQtPnBhcmVudFN0eWxlU2hlZXQoKSkKICAgICAgICAgcm9vdFNoZWV0ID0gcGFyZW50OwogCi0g
ICAgLyogRklYTUU6IFdlIGRvbid0IG5lZWQgdG8gZG8gZXZlcnl0aGluZyB1cGRhdGVTdHlsZVNl
bGVjdG9yIGRvZXMsCisgICAgLyogRklYTUU6IFdlIGRvbid0IG5lZWQgdG8gZG8gZXZlcnl0aGlu
ZyBzdHlsZVJlc29sdmVyQ2hhbmdlZCBkb2VzLAogICAgICAqIGJhc2ljYWxseSB3ZSBqdXN0IG5l
ZWQgdG8gcmVjcmVhdGUgdGhlIGRvY3VtZW50J3Mgc2VsZWN0b3Igd2l0aCB0aGUKICAgICAgKiBh
bHJlYWR5IGV4aXN0aW5nIHN0eWxlIHNoZWV0cy4KICAgICAgKi8KICAgICBpZiAoRG9jdW1lbnQq
IGRvY3VtZW50VG9VcGRhdGUgPSByb290U2hlZXQtPmZpbmREb2N1bWVudCgpKQotICAgICAgICBk
b2N1bWVudFRvVXBkYXRlLT5zdHlsZVNlbGVjdG9yQ2hhbmdlZChEZWZlclJlY2FsY1N0eWxlKTsK
KyAgICAgICAgZG9jdW1lbnRUb1VwZGF0ZS0+c3R5bGVSZXNvbHZlckNoYW5nZWQoRGVmZXJSZWNh
bGNTdHlsZSk7CiB9CiAKIHZvaWQgU3R5bGVTaGVldEludGVybmFsOjp1cGRhdGVCYXNlVVJMKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcAppbmRleCA4ZTU3Y2Q5
MmIwNTI4ZTM2Mzk1YTI4ZWM4MDdjOWU2ZjlmY2E3ZmQ3Li5hMTg4MGUyYThhY2IwNTA4NGJiOTM5
OTc3YjEyYzUyNzIyZjFiZjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFR
dWVyeUV2YWx1YXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFdmFs
dWF0b3IuY3BwCkBAIC0xMzAsNyArMTMwLDcgQEAgc3RhdGljIGJvb2wgYXBwbHlSZXN0cmljdG9y
KE1lZGlhUXVlcnk6OlJlc3RyaWN0b3IgciwgYm9vbCB2YWx1ZSkKICAgICByZXR1cm4gciA9PSBN
ZWRpYVF1ZXJ5OjpOb3QgPyAhdmFsdWUgOiB2YWx1ZTsKIH0KIAotYm9vbCBNZWRpYVF1ZXJ5RXZh
bHVhdG9yOjpldmFsKGNvbnN0IE1lZGlhUXVlcnlTZXQqIHF1ZXJ5U2V0LCBTdHlsZVJlc29sdmVy
KiBzdHlsZVNlbGVjdG9yKSBjb25zdAorYm9vbCBNZWRpYVF1ZXJ5RXZhbHVhdG9yOjpldmFsKGNv
bnN0IE1lZGlhUXVlcnlTZXQqIHF1ZXJ5U2V0LCBTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVy
KSBjb25zdAogewogICAgIGlmICghcXVlcnlTZXQpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAt
MTU0LDggKzE1NCw4IEBAIGJvb2wgTWVkaWFRdWVyeUV2YWx1YXRvcjo6ZXZhbChjb25zdCBNZWRp
YVF1ZXJ5U2V0KiBxdWVyeVNldCwgU3R5bGVSZXNvbHZlciogc3R5CiAgICAgICAgICAgICBzaXpl
X3QgaiA9IDA7CiAgICAgICAgICAgICBmb3IgKDsgaiA8IGV4cHMtPnNpemUoKTsgKytqKSB7CiAg
ICAgICAgICAgICAgICAgYm9vbCBleHByUmVzdWx0ID0gZXZhbChleHBzLT5hdChqKS5nZXQoKSk7
Ci0gICAgICAgICAgICAgICAgaWYgKHN0eWxlU2VsZWN0b3IgJiYgZXhwcy0+YXQoaiktPmlzVmll
d3BvcnREZXBlbmRlbnQoKSkKLSAgICAgICAgICAgICAgICAgICAgc3R5bGVTZWxlY3Rvci0+YWRk
Vmlld3BvcnREZXBlbmRlbnRNZWRpYVF1ZXJ5UmVzdWx0KGV4cHMtPmF0KGopLmdldCgpLCBleHBy
UmVzdWx0KTsKKyAgICAgICAgICAgICAgICBpZiAoc3R5bGVSZXNvbHZlciAmJiBleHBzLT5hdChq
KS0+aXNWaWV3cG9ydERlcGVuZGVudCgpKQorICAgICAgICAgICAgICAgICAgICBzdHlsZVJlc29s
dmVyLT5hZGRWaWV3cG9ydERlcGVuZGVudE1lZGlhUXVlcnlSZXN1bHQoZXhwcy0+YXQoaikuZ2V0
KCksIGV4cHJSZXN1bHQpOwogICAgICAgICAgICAgICAgIGlmICghZXhwclJlc3VsdCkKICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvTWVkaWFRdWVyeU1hdGNoZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL01l
ZGlhUXVlcnlNYXRjaGVyLmNwcAppbmRleCBlZWYwYjkwOTJhMjQzNTk4Y2E5ZjEyNTA1MThjNjg4
MDIxZGEyZDFkLi42NjAxNDExYWE4Y2EzODQ2YzM1ZTBlMDJmNzZjNjNlZDJmMTZhMjRiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeU1hdGNoZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5TWF0Y2hlci5jcHAKQEAgLTg0LDExICs4NCwxMSBA
QCBQYXNzT3duUHRyPE1lZGlhUXVlcnlFdmFsdWF0b3I+IE1lZGlhUXVlcnlNYXRjaGVyOjpwcmVw
YXJlRXZhbHVhdG9yKCkgY29uc3QKICAgICBpZiAoIWRvY3VtZW50RWxlbWVudCkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICBTdHlsZVJlc29sdmVyKiBzdHlsZVNlbGVjdG9yID0gbV9k
b2N1bWVudC0+c3R5bGVTZWxlY3RvcigpOwotICAgIGlmICghc3R5bGVTZWxlY3RvcikKKyAgICBT
dHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyID0gbV9kb2N1bWVudC0+c3R5bGVSZXNvbHZlcigp
OworICAgIGlmICghc3R5bGVSZXNvbHZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAg
ICBSZWZQdHI8UmVuZGVyU3R5bGU+IHJvb3RTdHlsZSA9IHN0eWxlU2VsZWN0b3ItPnN0eWxlRm9y
RWxlbWVudChkb2N1bWVudEVsZW1lbnQsIDAgLypkZWZhdWx0UGFyZW50Ki8sIERpc2FsbG93U3R5
bGVTaGFyaW5nLCBNYXRjaE9ubHlVc2VyQWdlbnRSdWxlcyk7CisgICAgUmVmUHRyPFJlbmRlclN0
eWxlPiByb290U3R5bGUgPSBzdHlsZVJlc29sdmVyLT5zdHlsZUZvckVsZW1lbnQoZG9jdW1lbnRF
bGVtZW50LCAwIC8qZGVmYXVsdFBhcmVudCovLCBEaXNhbGxvd1N0eWxlU2hhcmluZywgTWF0Y2hP
bmx5VXNlckFnZW50UnVsZXMpOwogCiAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBNZWRpYVF1ZXJ5
RXZhbHVhdG9yKG1lZGlhVHlwZSgpLCBtX2RvY3VtZW50LT5mcmFtZSgpLCByb290U3R5bGUuZ2V0
KCkpKTsKIH0KQEAgLTEzNyw3ICsxMzcsNyBAQCB2b2lkIE1lZGlhUXVlcnlNYXRjaGVyOjpyZW1v
dmVMaXN0ZW5lcihNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKiBsaXN0ZW5lciwgTWVkaWFRdQogICAg
IH0KIH0KIAotdm9pZCBNZWRpYVF1ZXJ5TWF0Y2hlcjo6c3R5bGVTZWxlY3RvckNoYW5nZWQoKQor
dm9pZCBNZWRpYVF1ZXJ5TWF0Y2hlcjo6c3R5bGVSZXNvbHZlckNoYW5nZWQoKQogewogICAgIEFT
U0VSVChtX2RvY3VtZW50KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlh
UXVlcnlNYXRjaGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeU1hdGNoZXIuaApp
bmRleCAyNjllN2ViZTBiMDI2NmM1ZTFiNzJlNzk3YjQ0NTNhYmM1OWIxODI3Li42ZWFlMzVmNGVm
Mzg5MDBhYzg1NTA4ZmY5MTExZTU5NWE1NTg4NDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvTWVkaWFRdWVyeU1hdGNoZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFR
dWVyeU1hdGNoZXIuaApAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxN
ZWRpYVF1ZXJ5TGlzdD4gbWF0Y2hNZWRpYShjb25zdCBTdHJpbmcmKTsKIAogICAgIHVuc2lnbmVk
IGV2YWx1YXRpb25Sb3VuZCgpIGNvbnN0IHsgcmV0dXJuIG1fZXZhbHVhdGlvblJvdW5kOyB9Ci0g
ICAgdm9pZCBzdHlsZVNlbGVjdG9yQ2hhbmdlZCgpOworICAgIHZvaWQgc3R5bGVSZXNvbHZlckNo
YW5nZWQoKTsKICAgICBib29sIGV2YWx1YXRlKGNvbnN0IE1lZGlhUXVlcnlTZXQqKTsKIAogcHJp
dmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxl
RGVjbGFyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVE
ZWNsYXJhdGlvbi5jcHAKaW5kZXggNTNkNDc0Y2QxZDk5YTM5M2FjOTMyMzQzZGYzZDg1N2YzNGM1
ZDgwZS4uNTA1ZDRkZDg0ZGU3NDNhMWYzOWU0NzJiMGJhOWU4NjY5Yjk5NDZmZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5j
cHAKQEAgLTM0Miw3ICszNDIsNyBAQCB2b2lkIFN0eWxlUnVsZUNTU1N0eWxlRGVjbGFyYXRpb246
OnNldE5lZWRzU3R5bGVSZWNhbGMoKQogewogICAgIGlmIChDU1NTdHlsZVNoZWV0KiBzdHlsZVNo
ZWV0ID0gcGFyZW50U3R5bGVTaGVldCgpKSB7CiAgICAgICAgIGlmIChEb2N1bWVudCogZG9jdW1l
bnQgPSBzdHlsZVNoZWV0LT5maW5kRG9jdW1lbnQoKSkKLSAgICAgICAgICAgIGRvY3VtZW50LT5z
dHlsZVNlbGVjdG9yQ2hhbmdlZChEZWZlclJlY2FsY1N0eWxlKTsKKyAgICAgICAgICAgIGRvY3Vt
ZW50LT5zdHlsZVJlc29sdmVyQ2hhbmdlZChEZWZlclJlY2FsY1N0eWxlKTsKICAgICB9CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlci5jcHAKaW5kZXggZTQyMzFmNzE3NmNjYjhlYWE1OTc4
YmFiNmE0NGYyMTJmMzI3MzAyMi4uNTc0MTZhZjc0YjYxNGY5ODM1ZTRmNWM5MTRlZDU2MzYwZDkw
M2ZmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlci5jcHAKQEAgLTUzLDcgKzUzLDcgQEAg
Y2xhc3MgQXBwbHlQcm9wZXJ0eUV4cGFuZGluZyB7CiBwdWJsaWM6CiAKICAgICB0ZW1wbGF0ZSA8
Q1NTUHJvcGVydHlJRCBpZD4KLSAgICBzdGF0aWMgaW5saW5lIHZvaWQgYXBwbHlJbmhlcml0VmFs
dWUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IpCisgICAgc3RhdGljIGlubGluZSB2b2lkIGFwcGx5
SW5oZXJpdFZhbHVlKFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIpCiAgICAgewogICAgICAg
ICBpZiAoaWQgPT0gQ1NTUHJvcGVydHlJbnZhbGlkKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAt
NjEsMjAgKzYxLDIwIEBAIHB1YmxpYzoKICAgICAgICAgY29uc3QgU3R5bGVCdWlsZGVyJiB0YWJs
ZSA9IFN0eWxlQnVpbGRlcjo6c2hhcmVkU3R5bGVCdWlsZGVyKCk7CiAgICAgICAgIGNvbnN0IFBy
b3BlcnR5SGFuZGxlciYgaGFuZGxlciA9IHRhYmxlLnByb3BlcnR5SGFuZGxlcihpZCk7CiAgICAg
ICAgIGlmIChoYW5kbGVyLmlzVmFsaWQoKSkKLSAgICAgICAgICAgIGhhbmRsZXIuYXBwbHlJbmhl
cml0VmFsdWUoc2VsZWN0b3IpOworICAgICAgICAgICAgaGFuZGxlci5hcHBseUluaGVyaXRWYWx1
ZShzdHlsZVJlc29sdmVyKTsKICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCBhcHBseUluaGVyaXRW
YWx1ZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvcikKKyAgICBzdGF0aWMgdm9pZCBhcHBseUluaGVy
aXRWYWx1ZShTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyKQogICAgIHsKLSAgICAgICAgYXBw
bHlJbmhlcml0VmFsdWU8b25lPihzZWxlY3Rvcik7Ci0gICAgICAgIGFwcGx5SW5oZXJpdFZhbHVl
PHR3bz4oc2VsZWN0b3IpOwotICAgICAgICBhcHBseUluaGVyaXRWYWx1ZTx0aHJlZT4oc2VsZWN0
b3IpOwotICAgICAgICBhcHBseUluaGVyaXRWYWx1ZTxmb3VyPihzZWxlY3Rvcik7Ci0gICAgICAg
IGFwcGx5SW5oZXJpdFZhbHVlPGZpdmU+KHNlbGVjdG9yKTsKKyAgICAgICAgYXBwbHlJbmhlcml0
VmFsdWU8b25lPihzdHlsZVJlc29sdmVyKTsKKyAgICAgICAgYXBwbHlJbmhlcml0VmFsdWU8dHdv
PihzdHlsZVJlc29sdmVyKTsKKyAgICAgICAgYXBwbHlJbmhlcml0VmFsdWU8dGhyZWU+KHN0eWxl
UmVzb2x2ZXIpOworICAgICAgICBhcHBseUluaGVyaXRWYWx1ZTxmb3VyPihzdHlsZVJlc29sdmVy
KTsKKyAgICAgICAgYXBwbHlJbmhlcml0VmFsdWU8Zml2ZT4oc3R5bGVSZXNvbHZlcik7CiAgICAg
fQogCiAgICAgdGVtcGxhdGUgPENTU1Byb3BlcnR5SUQgaWQ+Ci0gICAgc3RhdGljIGlubGluZSB2
b2lkIGFwcGx5SW5pdGlhbFZhbHVlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yKQorICAgIHN0YXRp
YyBpbmxpbmUgdm9pZCBhcHBseUluaXRpYWxWYWx1ZShTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29s
dmVyKQogICAgIHsKICAgICAgICAgaWYgKGlkID09IENTU1Byb3BlcnR5SW52YWxpZCkKICAgICAg
ICAgICAgIHJldHVybjsKQEAgLTgyLDIwICs4MiwyMCBAQCBwdWJsaWM6CiAgICAgICAgIGNvbnN0
IFN0eWxlQnVpbGRlciYgdGFibGUgPSBTdHlsZUJ1aWxkZXI6OnNoYXJlZFN0eWxlQnVpbGRlcigp
OwogICAgICAgICBjb25zdCBQcm9wZXJ0eUhhbmRsZXImIGhhbmRsZXIgPSB0YWJsZS5wcm9wZXJ0
eUhhbmRsZXIoaWQpOwogICAgICAgICBpZiAoaGFuZGxlci5pc1ZhbGlkKCkpCi0gICAgICAgICAg
ICBoYW5kbGVyLmFwcGx5SW5pdGlhbFZhbHVlKHNlbGVjdG9yKTsKKyAgICAgICAgICAgIGhhbmRs
ZXIuYXBwbHlJbml0aWFsVmFsdWUoc3R5bGVSZXNvbHZlcik7CiAgICAgfQogCi0gICAgc3RhdGlj
IHZvaWQgYXBwbHlJbml0aWFsVmFsdWUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IpCisgICAgc3Rh
dGljIHZvaWQgYXBwbHlJbml0aWFsVmFsdWUoU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlcikK
ICAgICB7Ci0gICAgICAgIGFwcGx5SW5pdGlhbFZhbHVlPG9uZT4oc2VsZWN0b3IpOwotICAgICAg
ICBhcHBseUluaXRpYWxWYWx1ZTx0d28+KHNlbGVjdG9yKTsKLSAgICAgICAgYXBwbHlJbml0aWFs
VmFsdWU8dGhyZWU+KHNlbGVjdG9yKTsKLSAgICAgICAgYXBwbHlJbml0aWFsVmFsdWU8Zm91cj4o
c2VsZWN0b3IpOwotICAgICAgICBhcHBseUluaXRpYWxWYWx1ZTxmaXZlPihzZWxlY3Rvcik7Cisg
ICAgICAgIGFwcGx5SW5pdGlhbFZhbHVlPG9uZT4oc3R5bGVSZXNvbHZlcik7CisgICAgICAgIGFw
cGx5SW5pdGlhbFZhbHVlPHR3bz4oc3R5bGVSZXNvbHZlcik7CisgICAgICAgIGFwcGx5SW5pdGlh
bFZhbHVlPHRocmVlPihzdHlsZVJlc29sdmVyKTsKKyAgICAgICAgYXBwbHlJbml0aWFsVmFsdWU8
Zm91cj4oc3R5bGVSZXNvbHZlcik7CisgICAgICAgIGFwcGx5SW5pdGlhbFZhbHVlPGZpdmU+KHN0
eWxlUmVzb2x2ZXIpOwogICAgIH0KIAogICAgIHRlbXBsYXRlIDxDU1NQcm9wZXJ0eUlEIGlkPgot
ICAgIHN0YXRpYyBpbmxpbmUgdm9pZCBhcHBseVZhbHVlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9y
LCBDU1NWYWx1ZSogdmFsdWUpCisgICAgc3RhdGljIGlubGluZSB2b2lkIGFwcGx5VmFsdWUoU3R5
bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUqIHZhbHVlKQogICAgIHsKICAgICAg
ICAgaWYgKGlkID09IENTU1Byb3BlcnR5SW52YWxpZCkKICAgICAgICAgICAgIHJldHVybjsKQEAg
LTEwMywxOSArMTAzLDE5IEBAIHB1YmxpYzoKICAgICAgICAgY29uc3QgU3R5bGVCdWlsZGVyJiB0
YWJsZSA9IFN0eWxlQnVpbGRlcjo6c2hhcmVkU3R5bGVCdWlsZGVyKCk7CiAgICAgICAgIGNvbnN0
IFByb3BlcnR5SGFuZGxlciYgaGFuZGxlciA9IHRhYmxlLnByb3BlcnR5SGFuZGxlcihpZCk7CiAg
ICAgICAgIGlmIChoYW5kbGVyLmlzVmFsaWQoKSkKLSAgICAgICAgICAgIGhhbmRsZXIuYXBwbHlW
YWx1ZShzZWxlY3RvciwgdmFsdWUpOworICAgICAgICAgICAgaGFuZGxlci5hcHBseVZhbHVlKHN0
eWxlUmVzb2x2ZXIsIHZhbHVlKTsKICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVl
KFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBDU1NWYWx1ZSogdmFsdWUpCisgICAgc3RhdGljIHZv
aWQgYXBwbHlWYWx1ZShTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyLCBDU1NWYWx1ZSogdmFs
dWUpCiAgICAgewogICAgICAgICBpZiAoIWV4cGFuZFZhbHVlKQogICAgICAgICAgICAgcmV0dXJu
OwogCi0gICAgICAgIGFwcGx5VmFsdWU8b25lPihzZWxlY3RvciwgdmFsdWUpOwotICAgICAgICBh
cHBseVZhbHVlPHR3bz4oc2VsZWN0b3IsIHZhbHVlKTsKLSAgICAgICAgYXBwbHlWYWx1ZTx0aHJl
ZT4oc2VsZWN0b3IsIHZhbHVlKTsKLSAgICAgICAgYXBwbHlWYWx1ZTxmb3VyPihzZWxlY3Rvciwg
dmFsdWUpOwotICAgICAgICBhcHBseVZhbHVlPGZpdmU+KHNlbGVjdG9yLCB2YWx1ZSk7CisgICAg
ICAgIGFwcGx5VmFsdWU8b25lPihzdHlsZVJlc29sdmVyLCB2YWx1ZSk7CisgICAgICAgIGFwcGx5
VmFsdWU8dHdvPihzdHlsZVJlc29sdmVyLCB2YWx1ZSk7CisgICAgICAgIGFwcGx5VmFsdWU8dGhy
ZWU+KHN0eWxlUmVzb2x2ZXIsIHZhbHVlKTsKKyAgICAgICAgYXBwbHlWYWx1ZTxmb3VyPihzdHls
ZVJlc29sdmVyLCB2YWx1ZSk7CisgICAgICAgIGFwcGx5VmFsdWU8Zml2ZT4oc3R5bGVSZXNvbHZl
ciwgdmFsdWUpOwogICAgIH0KICAgICBzdGF0aWMgUHJvcGVydHlIYW5kbGVyIGNyZWF0ZUhhbmRs
ZXIoKSB7IHJldHVybiBQcm9wZXJ0eUhhbmRsZXIoJmFwcGx5SW5oZXJpdFZhbHVlLCAmYXBwbHlJ
bml0aWFsVmFsdWUsICZhcHBseVZhbHVlKTsgfQogfTsKQEAgLTEyNiw4ICsxMjYsOCBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIHZvaWQgc2V0VmFsdWUoUmVuZGVyU3R5bGUqIHN0eWxlLCBTZXR0ZXJU
eXBlIHZhbHVlKSB7IChzdHlsZS0+KnNldHRlckZ1bmN0aW9uKSh2YWx1ZSk7IH0KICAgICBzdGF0
aWMgR2V0dGVyVHlwZSB2YWx1ZShSZW5kZXJTdHlsZSogc3R5bGUpIHsgcmV0dXJuIChzdHlsZS0+
KmdldHRlckZ1bmN0aW9uKSgpOyB9CiAgICAgc3RhdGljIEluaXRpYWxUeXBlIGluaXRpYWwoKSB7
IHJldHVybiAoKmluaXRpYWxGdW5jdGlvbikoKTsgfQotICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5o
ZXJpdFZhbHVlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yKSB7IHNldFZhbHVlKHNlbGVjdG9yLT5z
dHlsZSgpLCB2YWx1ZShzZWxlY3Rvci0+cGFyZW50U3R5bGUoKSkpOyB9Ci0gICAgc3RhdGljIHZv
aWQgYXBwbHlJbml0aWFsVmFsdWUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IpIHsgc2V0VmFsdWUo
c2VsZWN0b3ItPnN0eWxlKCksIGluaXRpYWwoKSk7IH0KKyAgICBzdGF0aWMgdm9pZCBhcHBseUlu
aGVyaXRWYWx1ZShTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyKSB7IHNldFZhbHVlKHN0eWxl
UmVzb2x2ZXItPnN0eWxlKCksIHZhbHVlKHN0eWxlUmVzb2x2ZXItPnBhcmVudFN0eWxlKCkpKTsg
fQorICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5pdGlhbFZhbHVlKFN0eWxlUmVzb2x2ZXIqIHN0eWxl
UmVzb2x2ZXIpIHsgc2V0VmFsdWUoc3R5bGVSZXNvbHZlci0+c3R5bGUoKSwgaW5pdGlhbCgpKTsg
fQogICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUoU3R5bGVSZXNvbHZlciosIENTU1ZhbHVlKikg
eyB9CiAgICAgc3RhdGljIFByb3BlcnR5SGFuZGxlciBjcmVhdGVIYW5kbGVyKCkgeyByZXR1cm4g
UHJvcGVydHlIYW5kbGVyKCZhcHBseUluaGVyaXRWYWx1ZSwgJmFwcGx5SW5pdGlhbFZhbHVlLCAm
YXBwbHlWYWx1ZSk7IH0KIH07CkBAIC0xMzYsMTAgKzEzNiwxMCBAQCB0ZW1wbGF0ZSA8dHlwZW5h
bWUgR2V0dGVyVHlwZSwgR2V0dGVyVHlwZSAoUmVuZGVyU3R5bGU6OipnZXR0ZXJGdW5jdGlvbiko
KSBjb25zdAogY2xhc3MgQXBwbHlQcm9wZXJ0eURlZmF1bHQgewogcHVibGljOgogICAgIHN0YXRp
YyB2b2lkIHNldFZhbHVlKFJlbmRlclN0eWxlKiBzdHlsZSwgU2V0dGVyVHlwZSB2YWx1ZSkgeyAo
c3R5bGUtPipzZXR0ZXJGdW5jdGlvbikodmFsdWUpOyB9Ci0gICAgc3RhdGljIHZvaWQgYXBwbHlW
YWx1ZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvciwgQ1NTVmFsdWUqIHZhbHVlKQorICAgIHN0YXRp
YyB2b2lkIGFwcGx5VmFsdWUoU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUq
IHZhbHVlKQogICAgIHsKICAgICAgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCi0g
ICAgICAgICAgICBzZXRWYWx1ZShzZWxlY3Rvci0+c3R5bGUoKSwgKnN0YXRpY19jYXN0PENTU1By
aW1pdGl2ZVZhbHVlKj4odmFsdWUpKTsKKyAgICAgICAgICAgIHNldFZhbHVlKHN0eWxlUmVzb2x2
ZXItPnN0eWxlKCksICpzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKSk7CiAg
ICAgfQogICAgIHN0YXRpYyBQcm9wZXJ0eUhhbmRsZXIgY3JlYXRlSGFuZGxlcigpCiAgICAgewpA
QCAtMTUyLDE2ICsxNTIsMTYgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIE51bWJlclR5cGUsIE51bWJl
clR5cGUgKFJlbmRlclN0eWxlOjoqZ2V0dGVyRnVuY3Rpb24pKCkgY29uc3QKIGNsYXNzIEFwcGx5
UHJvcGVydHlOdW1iZXIgewogcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHNldFZhbHVlKFJlbmRl
clN0eWxlKiBzdHlsZSwgTnVtYmVyVHlwZSB2YWx1ZSkgeyAoc3R5bGUtPipzZXR0ZXJGdW5jdGlv
bikodmFsdWUpOyB9Ci0gICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZShTdHlsZVJlc29sdmVyKiBz
ZWxlY3RvciwgQ1NTVmFsdWUqIHZhbHVlKQorICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUoU3R5
bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUqIHZhbHVlKQogICAgIHsKICAgICAg
ICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAgICAgICAgcmV0dXJuOwog
CiAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0
PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOwogICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUt
PmdldElkZW50KCkgPT0gaWRNYXBzVG9NaW51c09uZSkKLSAgICAgICAgICAgIHNldFZhbHVlKHNl
bGVjdG9yLT5zdHlsZSgpLCAtMSk7CisgICAgICAgICAgICBzZXRWYWx1ZShzdHlsZVJlc29sdmVy
LT5zdHlsZSgpLCAtMSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHNldFZhbHVlKHNlbGVj
dG9yLT5zdHlsZSgpLCBwcmltaXRpdmVWYWx1ZS0+Z2V0VmFsdWU8TnVtYmVyVHlwZT4oQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpKTsKKyAgICAgICAgICAgIHNldFZhbHVlKHN0eWxlUmVz
b2x2ZXItPnN0eWxlKCksIHByaW1pdGl2ZVZhbHVlLT5nZXRWYWx1ZTxOdW1iZXJUeXBlPihDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikpOwogICAgIH0KICAgICBzdGF0aWMgUHJvcGVydHlI
YW5kbGVyIGNyZWF0ZUhhbmRsZXIoKQogICAgIHsKQEAgLTE3Myw3ICsxNzMsNyBAQCBwdWJsaWM6
CiB0ZW1wbGF0ZSA8U3R5bGVJbWFnZSogKFJlbmRlclN0eWxlOjoqZ2V0dGVyRnVuY3Rpb24pKCkg
Y29uc3QsIHZvaWQgKFJlbmRlclN0eWxlOjoqc2V0dGVyRnVuY3Rpb24pKFBhc3NSZWZQdHI8U3R5
bGVJbWFnZT4pLCBTdHlsZUltYWdlKiAoKmluaXRpYWxGdW5jdGlvbikoKSwgQ1NTUHJvcGVydHlJ
RCBwcm9wZXJ0eT4KIGNsYXNzIEFwcGx5UHJvcGVydHlTdHlsZUltYWdlIHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBDU1NWYWx1
ZSogdmFsdWUpIHsgKHNlbGVjdG9yLT5zdHlsZSgpLT4qc2V0dGVyRnVuY3Rpb24pKHNlbGVjdG9y
LT5zdHlsZUltYWdlKHByb3BlcnR5LCB2YWx1ZSkpOyB9CisgICAgc3RhdGljIHZvaWQgYXBwbHlW
YWx1ZShTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyLCBDU1NWYWx1ZSogdmFsdWUpIHsgKHN0
eWxlUmVzb2x2ZXItPnN0eWxlKCktPipzZXR0ZXJGdW5jdGlvbikoc3R5bGVSZXNvbHZlci0+c3R5
bGVJbWFnZShwcm9wZXJ0eSwgdmFsdWUpKTsgfQogICAgIHN0YXRpYyBQcm9wZXJ0eUhhbmRsZXIg
Y3JlYXRlSGFuZGxlcigpCiAgICAgewogICAgICAgICBQcm9wZXJ0eUhhbmRsZXIgaGFuZGxlciA9
IEFwcGx5UHJvcGVydHlEZWZhdWx0QmFzZTxTdHlsZUltYWdlKiwgZ2V0dGVyRnVuY3Rpb24sIFBh
c3NSZWZQdHI8U3R5bGVJbWFnZT4sIHNldHRlckZ1bmN0aW9uLCBTdHlsZUltYWdlKiwgaW5pdGlh
bEZ1bmN0aW9uPjo6Y3JlYXRlSGFuZGxlcigpOwpAQCAtMTkwLDI4ICsxOTAsMjggQEAgcHVibGlj
OgogICAgIHN0YXRpYyBib29sIGhhc0F1dG8oUmVuZGVyU3R5bGUqIHN0eWxlKSB7IHJldHVybiAo
c3R5bGUtPipoYXNBdXRvRnVuY3Rpb24pKCk7IH0KICAgICBzdGF0aWMgdm9pZCBzZXRBdXRvKFJl
bmRlclN0eWxlKiBzdHlsZSkgeyAoc3R5bGUtPipzZXRBdXRvRnVuY3Rpb24pKCk7IH0KIAotICAg
IHN0YXRpYyB2b2lkIGFwcGx5SW5oZXJpdFZhbHVlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yKQor
ICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5oZXJpdFZhbHVlKFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVz
b2x2ZXIpCiAgICAgewotICAgICAgICBpZiAoaGFzQXV0byhzZWxlY3Rvci0+cGFyZW50U3R5bGUo
KSkpCi0gICAgICAgICAgICBzZXRBdXRvKHNlbGVjdG9yLT5zdHlsZSgpKTsKKyAgICAgICAgaWYg
KGhhc0F1dG8oc3R5bGVSZXNvbHZlci0+cGFyZW50U3R5bGUoKSkpCisgICAgICAgICAgICBzZXRB
dXRvKHN0eWxlUmVzb2x2ZXItPnN0eWxlKCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBz
ZXRWYWx1ZShzZWxlY3Rvci0+c3R5bGUoKSwgdmFsdWUoc2VsZWN0b3ItPnBhcmVudFN0eWxlKCkp
KTsKKyAgICAgICAgICAgIHNldFZhbHVlKHN0eWxlUmVzb2x2ZXItPnN0eWxlKCksIHZhbHVlKHN0
eWxlUmVzb2x2ZXItPnBhcmVudFN0eWxlKCkpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCBh
cHBseUluaXRpYWxWYWx1ZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvcikgeyBzZXRBdXRvKHNlbGVj
dG9yLT5zdHlsZSgpKTsgfQorICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5pdGlhbFZhbHVlKFN0eWxl
UmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIpIHsgc2V0QXV0byhzdHlsZVJlc29sdmVyLT5zdHlsZSgp
KTsgfQogCi0gICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZShTdHlsZVJlc29sdmVyKiBzZWxlY3Rv
ciwgQ1NTVmFsdWUqIHZhbHVlKQorICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUoU3R5bGVSZXNv
bHZlciogc3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUqIHZhbHVlKQogICAgIHsKICAgICAgICAgaWYg
KCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAg
ICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1By
aW1pdGl2ZVZhbHVlKj4odmFsdWUpOwogICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElk
ZW50KCkgPT0gYXV0b0lkZW50aXR5KQotICAgICAgICAgICAgc2V0QXV0byhzZWxlY3Rvci0+c3R5
bGUoKSk7CisgICAgICAgICAgICBzZXRBdXRvKHN0eWxlUmVzb2x2ZXItPnN0eWxlKCkpOwogICAg
ICAgICBlbHNlIGlmICh2YWx1ZVR5cGUgPT0gTnVtYmVyKQotICAgICAgICAgICAgc2V0VmFsdWUo
c2VsZWN0b3ItPnN0eWxlKCksICpwcmltaXRpdmVWYWx1ZSk7CisgICAgICAgICAgICBzZXRWYWx1
ZShzdHlsZVJlc29sdmVyLT5zdHlsZSgpLCAqcHJpbWl0aXZlVmFsdWUpOwogICAgICAgICBlbHNl
IGlmICh2YWx1ZVR5cGUgPT0gQ29tcHV0ZUxlbmd0aCkKLSAgICAgICAgICAgIHNldFZhbHVlKHNl
bGVjdG9yLT5zdHlsZSgpLCBwcmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxlbmd0aDxUPihzZWxlY3Rv
ci0+c3R5bGUoKSwgc2VsZWN0b3ItPnJvb3RFbGVtZW50U3R5bGUoKSwgc2VsZWN0b3ItPnN0eWxl
KCktPmVmZmVjdGl2ZVpvb20oKSkpOworICAgICAgICAgICAgc2V0VmFsdWUoc3R5bGVSZXNvbHZl
ci0+c3R5bGUoKSwgcHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGg8VD4oc3R5bGVSZXNvbHZl
ci0+c3R5bGUoKSwgc3R5bGVSZXNvbHZlci0+cm9vdEVsZW1lbnRTdHlsZSgpLCBzdHlsZVJlc29s
dmVyLT5zdHlsZSgpLT5lZmZlY3RpdmVab29tKCkpKTsKICAgICB9CiAKICAgICBzdGF0aWMgUHJv
cGVydHlIYW5kbGVyIGNyZWF0ZUhhbmRsZXIoKSB7IHJldHVybiBQcm9wZXJ0eUhhbmRsZXIoJmFw
cGx5SW5oZXJpdFZhbHVlLCAmYXBwbHlJbml0aWFsVmFsdWUsICZhcHBseVZhbHVlKTsgfQpAQCAt
MjE5LDI3ICsyMTksMjcgQEAgcHVibGljOgogCiBjbGFzcyBBcHBseVByb3BlcnR5Q2xpcCB7CiBw
cml2YXRlOgotICAgIHN0YXRpYyBMZW5ndGggY29udmVydFRvTGVuZ3RoKFN0eWxlUmVzb2x2ZXIq
IHNlbGVjdG9yLCBDU1NQcmltaXRpdmVWYWx1ZSogdmFsdWUpCisgICAgc3RhdGljIExlbmd0aCBj
b252ZXJ0VG9MZW5ndGgoU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciwgQ1NTUHJpbWl0aXZl
VmFsdWUqIHZhbHVlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHZhbHVlLT5jb252ZXJ0VG9MZW5n
dGg8Rml4ZWRJbnRlZ2VyQ29udmVyc2lvbiB8IFBlcmNlbnRDb252ZXJzaW9uIHwgRnJhY3Rpb25D
b252ZXJzaW9uIHwgQXV0b0NvbnZlcnNpb24+KHNlbGVjdG9yLT5zdHlsZSgpLCBzZWxlY3Rvci0+
cm9vdEVsZW1lbnRTdHlsZSgpLCBzZWxlY3Rvci0+c3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpKTsK
KyAgICAgICAgcmV0dXJuIHZhbHVlLT5jb252ZXJ0VG9MZW5ndGg8Rml4ZWRJbnRlZ2VyQ29udmVy
c2lvbiB8IFBlcmNlbnRDb252ZXJzaW9uIHwgRnJhY3Rpb25Db252ZXJzaW9uIHwgQXV0b0NvbnZl
cnNpb24+KHN0eWxlUmVzb2x2ZXItPnN0eWxlKCksIHN0eWxlUmVzb2x2ZXItPnJvb3RFbGVtZW50
U3R5bGUoKSwgc3R5bGVSZXNvbHZlci0+c3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpKTsKICAgICB9
CiBwdWJsaWM6Ci0gICAgc3RhdGljIHZvaWQgYXBwbHlJbmhlcml0VmFsdWUoU3R5bGVSZXNvbHZl
ciogc2VsZWN0b3IpCisgICAgc3RhdGljIHZvaWQgYXBwbHlJbmhlcml0VmFsdWUoU3R5bGVSZXNv
bHZlciogc3R5bGVSZXNvbHZlcikKICAgICB7Ci0gICAgICAgIFJlbmRlclN0eWxlKiBwYXJlbnRT
dHlsZSA9IHNlbGVjdG9yLT5wYXJlbnRTdHlsZSgpOworICAgICAgICBSZW5kZXJTdHlsZSogcGFy
ZW50U3R5bGUgPSBzdHlsZVJlc29sdmVyLT5wYXJlbnRTdHlsZSgpOwogICAgICAgICBpZiAoIXBh
cmVudFN0eWxlLT5oYXNDbGlwKCkpCi0gICAgICAgICAgICByZXR1cm4gYXBwbHlJbml0aWFsVmFs
dWUoc2VsZWN0b3IpOwotICAgICAgICBzZWxlY3Rvci0+c3R5bGUoKS0+c2V0Q2xpcChwYXJlbnRT
dHlsZS0+Y2xpcFRvcCgpLCBwYXJlbnRTdHlsZS0+Y2xpcFJpZ2h0KCksIHBhcmVudFN0eWxlLT5j
bGlwQm90dG9tKCksIHBhcmVudFN0eWxlLT5jbGlwTGVmdCgpKTsKLSAgICAgICAgc2VsZWN0b3It
PnN0eWxlKCktPnNldEhhc0NsaXAodHJ1ZSk7CisgICAgICAgICAgICByZXR1cm4gYXBwbHlJbml0
aWFsVmFsdWUoc3R5bGVSZXNvbHZlcik7CisgICAgICAgIHN0eWxlUmVzb2x2ZXItPnN0eWxlKCkt
PnNldENsaXAocGFyZW50U3R5bGUtPmNsaXBUb3AoKSwgcGFyZW50U3R5bGUtPmNsaXBSaWdodCgp
LCBwYXJlbnRTdHlsZS0+Y2xpcEJvdHRvbSgpLCBwYXJlbnRTdHlsZS0+Y2xpcExlZnQoKSk7Cisg
ICAgICAgIHN0eWxlUmVzb2x2ZXItPnN0eWxlKCktPnNldEhhc0NsaXAodHJ1ZSk7CiAgICAgfQog
Ci0gICAgc3RhdGljIHZvaWQgYXBwbHlJbml0aWFsVmFsdWUoU3R5bGVSZXNvbHZlciogc2VsZWN0
b3IpCisgICAgc3RhdGljIHZvaWQgYXBwbHlJbml0aWFsVmFsdWUoU3R5bGVSZXNvbHZlciogc3R5
bGVSZXNvbHZlcikKICAgICB7Ci0gICAgICAgIHNlbGVjdG9yLT5zdHlsZSgpLT5zZXRDbGlwKExl
bmd0aCgpLCBMZW5ndGgoKSwgTGVuZ3RoKCksIExlbmd0aCgpKTsKLSAgICAgICAgc2VsZWN0b3It
PnN0eWxlKCktPnNldEhhc0NsaXAoZmFsc2UpOworICAgICAgICBzdHlsZVJlc29sdmVyLT5zdHls
ZSgpLT5zZXRDbGlwKExlbmd0aCgpLCBMZW5ndGgoKSwgTGVuZ3RoKCksIExlbmd0aCgpKTsKKyAg
ICAgICAgc3R5bGVSZXNvbHZlci0+c3R5bGUoKS0+c2V0SGFzQ2xpcChmYWxzZSk7CiAgICAgfQog
Ci0gICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvciwgQ1NT
VmFsdWUqIHZhbHVlKQorICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUoU3R5bGVSZXNvbHZlciog
c3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUqIHZhbHVlKQogICAgIHsKICAgICAgICAgaWYgKCF2YWx1
ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjQ3LDE1ICsy
NDcsMTUgQEAgcHVibGljOgogICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFs
dWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKIAogICAgICAgICBp
ZiAoUmVjdCogcmVjdCA9IHByaW1pdGl2ZVZhbHVlLT5nZXRSZWN0VmFsdWUoKSkgewotICAgICAg
ICAgICAgTGVuZ3RoIHRvcCA9IGNvbnZlcnRUb0xlbmd0aChzZWxlY3RvciwgcmVjdC0+dG9wKCkp
OwotICAgICAgICAgICAgTGVuZ3RoIHJpZ2h0ID0gY29udmVydFRvTGVuZ3RoKHNlbGVjdG9yLCBy
ZWN0LT5yaWdodCgpKTsKLSAgICAgICAgICAgIExlbmd0aCBib3R0b20gPSBjb252ZXJ0VG9MZW5n
dGgoc2VsZWN0b3IsIHJlY3QtPmJvdHRvbSgpKTsKLSAgICAgICAgICAgIExlbmd0aCBsZWZ0ID0g
Y29udmVydFRvTGVuZ3RoKHNlbGVjdG9yLCByZWN0LT5sZWZ0KCkpOwotICAgICAgICAgICAgc2Vs
ZWN0b3ItPnN0eWxlKCktPnNldENsaXAodG9wLCByaWdodCwgYm90dG9tLCBsZWZ0KTsKLSAgICAg
ICAgICAgIHNlbGVjdG9yLT5zdHlsZSgpLT5zZXRIYXNDbGlwKHRydWUpOworICAgICAgICAgICAg
TGVuZ3RoIHRvcCA9IGNvbnZlcnRUb0xlbmd0aChzdHlsZVJlc29sdmVyLCByZWN0LT50b3AoKSk7
CisgICAgICAgICAgICBMZW5ndGggcmlnaHQgPSBjb252ZXJ0VG9MZW5ndGgoc3R5bGVSZXNvbHZl
ciwgcmVjdC0+cmlnaHQoKSk7CisgICAgICAgICAgICBMZW5ndGggYm90dG9tID0gY29udmVydFRv
TGVuZ3RoKHN0eWxlUmVzb2x2ZXIsIHJlY3QtPmJvdHRvbSgpKTsKKyAgICAgICAgICAgIExlbmd0
aCBsZWZ0ID0gY29udmVydFRvTGVuZ3RoKHN0eWxlUmVzb2x2ZXIsIHJlY3QtPmxlZnQoKSk7Cisg
ICAgICAgICAgICBzdHlsZVJlc29sdmVyLT5zdHlsZSgpLT5zZXRDbGlwKHRvcCwgcmlnaHQsIGJv
dHRvbSwgbGVmdCk7CisgICAgICAgICAgICBzdHlsZVJlc29sdmVyLT5zdHlsZSgpLT5zZXRIYXND
bGlwKHRydWUpOwogICAgICAgICB9IGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgp
ID09IENTU1ZhbHVlQXV0bykgewotICAgICAgICAgICAgc2VsZWN0b3ItPnN0eWxlKCktPnNldENs
aXAoTGVuZ3RoKCksIExlbmd0aCgpLCBMZW5ndGgoKSwgTGVuZ3RoKCkpOwotICAgICAgICAgICAg
c2VsZWN0b3ItPnN0eWxlKCktPnNldEhhc0NsaXAodHJ1ZSk7CisgICAgICAgICAgICBzdHlsZVJl
c29sdmVyLT5zdHlsZSgpLT5zZXRDbGlwKExlbmd0aCgpLCBMZW5ndGgoKSwgTGVuZ3RoKCksIExl
bmd0aCgpKTsKKyAgICAgICAgICAgIHN0eWxlUmVzb2x2ZXItPnN0eWxlKCktPnNldEhhc0NsaXAo
dHJ1ZSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTI3Myw0MCArMjczLDQwIEBAIHRlbXBsYXRl
IDxDb2xvckluaGVyaXQgaW5oZXJpdENvbG9yRnJvbVBhcmVudCwKICAgICAgICAgICBDb2xvciAo
KmluaXRpYWxGdW5jdGlvbikoKSA9ICZkZWZhdWx0SW5pdGlhbENvbG9yPgogY2xhc3MgQXBwbHlQ
cm9wZXJ0eUNvbG9yIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgdm9pZCBhcHBseUluaGVyaXRWYWx1
ZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvcikKKyAgICBzdGF0aWMgdm9pZCBhcHBseUluaGVyaXRW
YWx1ZShTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyKQogICAgIHsKICAgICAgICAgLy8gVmlz
aXRlZCBsaW5rIHN0eWxlIGNhbiBuZXZlciBleHBsaWNpdGx5IGluaGVyaXQgZnJvbSBwYXJlbnQg
dmlzaXRlZCBsaW5rIHN0eWxlIHNvIG5vIHNlcGFyYXRlIGdldHRlcnMgYXJlIG5lZWRlZC4KLSAg
ICAgICAgQ29sb3IgY29sb3IgPSAoc2VsZWN0b3ItPnBhcmVudFN0eWxlKCktPipnZXR0ZXJGdW5j
dGlvbikoKTsKLSAgICAgICAgYXBwbHlDb2xvclZhbHVlKHNlbGVjdG9yLCBjb2xvci5pc1ZhbGlk
KCkgPyBjb2xvciA6IChzZWxlY3Rvci0+cGFyZW50U3R5bGUoKS0+KmRlZmF1bHRGdW5jdGlvbiko
KSk7CisgICAgICAgIENvbG9yIGNvbG9yID0gKHN0eWxlUmVzb2x2ZXItPnBhcmVudFN0eWxlKCkt
PipnZXR0ZXJGdW5jdGlvbikoKTsKKyAgICAgICAgYXBwbHlDb2xvclZhbHVlKHN0eWxlUmVzb2x2
ZXIsIGNvbG9yLmlzVmFsaWQoKSA/IGNvbG9yIDogKHN0eWxlUmVzb2x2ZXItPnBhcmVudFN0eWxl
KCktPipkZWZhdWx0RnVuY3Rpb24pKCkpOwogICAgIH0KIAotICAgIHN0YXRpYyB2b2lkIGFwcGx5
SW5pdGlhbFZhbHVlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yKQorICAgIHN0YXRpYyB2b2lkIGFw
cGx5SW5pdGlhbFZhbHVlKFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIpCiAgICAgewotICAg
ICAgICBhcHBseUNvbG9yVmFsdWUoc2VsZWN0b3IsIGluaXRpYWxGdW5jdGlvbigpKTsKKyAgICAg
ICAgYXBwbHlDb2xvclZhbHVlKHN0eWxlUmVzb2x2ZXIsIGluaXRpYWxGdW5jdGlvbigpKTsKICAg
ICB9CiAKLSAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9y
LCBDU1NWYWx1ZSogdmFsdWUpCisgICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZShTdHlsZVJlc29s
dmVyKiBzdHlsZVJlc29sdmVyLCBDU1NWYWx1ZSogdmFsdWUpCiAgICAgewogICAgICAgICBpZiAo
IXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAg
ICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWUqPih2YWx1ZSk7CiAgICAgICAgIGlmIChpbmhlcml0Q29sb3JGcm9tUGFyZW50
ICYmIHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlQ3VycmVudGNvbG9yKQot
ICAgICAgICAgICAgYXBwbHlJbmhlcml0VmFsdWUoc2VsZWN0b3IpOworICAgICAgICAgICAgYXBw
bHlJbmhlcml0VmFsdWUoc3R5bGVSZXNvbHZlcik7CiAgICAgICAgIGVsc2UgewotICAgICAgICAg
ICAgaWYgKHNlbGVjdG9yLT5hcHBseVByb3BlcnR5VG9SZWd1bGFyU3R5bGUoKSkKLSAgICAgICAg
ICAgICAgICAoc2VsZWN0b3ItPnN0eWxlKCktPipzZXR0ZXJGdW5jdGlvbikoc2VsZWN0b3ItPmNv
bG9yRnJvbVByaW1pdGl2ZVZhbHVlKHByaW1pdGl2ZVZhbHVlKSk7Ci0gICAgICAgICAgICBpZiAo
c2VsZWN0b3ItPmFwcGx5UHJvcGVydHlUb1Zpc2l0ZWRMaW5rU3R5bGUoKSkKLSAgICAgICAgICAg
ICAgICAoc2VsZWN0b3ItPnN0eWxlKCktPip2aXNpdGVkTGlua1NldHRlckZ1bmN0aW9uKShzZWxl
Y3Rvci0+Y29sb3JGcm9tUHJpbWl0aXZlVmFsdWUocHJpbWl0aXZlVmFsdWUsIC8qIGZvclZpc2l0
ZWRMaW5rICovIHRydWUpKTsKKyAgICAgICAgICAgIGlmIChzdHlsZVJlc29sdmVyLT5hcHBseVBy
b3BlcnR5VG9SZWd1bGFyU3R5bGUoKSkKKyAgICAgICAgICAgICAgICAoc3R5bGVSZXNvbHZlci0+
c3R5bGUoKS0+KnNldHRlckZ1bmN0aW9uKShzdHlsZVJlc29sdmVyLT5jb2xvckZyb21QcmltaXRp
dmVWYWx1ZShwcmltaXRpdmVWYWx1ZSkpOworICAgICAgICAgICAgaWYgKHN0eWxlUmVzb2x2ZXIt
PmFwcGx5UHJvcGVydHlUb1Zpc2l0ZWRMaW5rU3R5bGUoKSkKKyAgICAgICAgICAgICAgICAoc3R5
bGVSZXNvbHZlci0+c3R5bGUoKS0+KnZpc2l0ZWRMaW5rU2V0dGVyRnVuY3Rpb24pKHN0eWxlUmVz
b2x2ZXItPmNvbG9yRnJvbVByaW1pdGl2ZVZhbHVlKHByaW1pdGl2ZVZhbHVlLCAvKiBmb3JWaXNp
dGVkTGluayAqLyB0cnVlKSk7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCBh
cHBseUNvbG9yVmFsdWUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIGNvbnN0IENvbG9yJiBjb2xv
cikKKyAgICBzdGF0aWMgdm9pZCBhcHBseUNvbG9yVmFsdWUoU3R5bGVSZXNvbHZlciogc3R5bGVS
ZXNvbHZlciwgY29uc3QgQ29sb3ImIGNvbG9yKQogICAgIHsKLSAgICAgICAgaWYgKHNlbGVjdG9y
LT5hcHBseVByb3BlcnR5VG9SZWd1bGFyU3R5bGUoKSkKLSAgICAgICAgICAgIChzZWxlY3Rvci0+
c3R5bGUoKS0+KnNldHRlckZ1bmN0aW9uKShjb2xvcik7Ci0gICAgICAgIGlmIChzZWxlY3Rvci0+
YXBwbHlQcm9wZXJ0eVRvVmlzaXRlZExpbmtTdHlsZSgpKQotICAgICAgICAgICAgKHNlbGVjdG9y
LT5zdHlsZSgpLT4qdmlzaXRlZExpbmtTZXR0ZXJGdW5jdGlvbikoY29sb3IpOworICAgICAgICBp
ZiAoc3R5bGVSZXNvbHZlci0+YXBwbHlQcm9wZXJ0eVRvUmVndWxhclN0eWxlKCkpCisgICAgICAg
ICAgICAoc3R5bGVSZXNvbHZlci0+c3R5bGUoKS0+KnNldHRlckZ1bmN0aW9uKShjb2xvcik7Cisg
ICAgICAgIGlmIChzdHlsZVJlc29sdmVyLT5hcHBseVByb3BlcnR5VG9WaXNpdGVkTGlua1N0eWxl
KCkpCisgICAgICAgICAgICAoc3R5bGVSZXNvbHZlci0+c3R5bGUoKS0+KnZpc2l0ZWRMaW5rU2V0
dGVyRnVuY3Rpb24pKGNvbG9yKTsKICAgICB9CiAKICAgICBzdGF0aWMgUHJvcGVydHlIYW5kbGVy
IGNyZWF0ZUhhbmRsZXIoKSB7IHJldHVybiBQcm9wZXJ0eUhhbmRsZXIoJmFwcGx5SW5oZXJpdFZh
bHVlLCAmYXBwbHlJbml0aWFsVmFsdWUsICZhcHBseVZhbHVlKTsgfQpAQCAtMzE1LDExICszMTUs
MTEgQEAgcHVibGljOgogdGVtcGxhdGUgPFRleHREaXJlY3Rpb24gKFJlbmRlclN0eWxlOjoqZ2V0
dGVyRnVuY3Rpb24pKCkgY29uc3QsIHZvaWQgKFJlbmRlclN0eWxlOjoqc2V0dGVyRnVuY3Rpb24p
KFRleHREaXJlY3Rpb24pLCBUZXh0RGlyZWN0aW9uICgqaW5pdGlhbEZ1bmN0aW9uKSgpPgogY2xh
c3MgQXBwbHlQcm9wZXJ0eURpcmVjdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHZvaWQgYXBw
bHlWYWx1ZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvciwgQ1NTVmFsdWUqIHZhbHVlKQorICAgIHN0
YXRpYyB2b2lkIGFwcGx5VmFsdWUoU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciwgQ1NTVmFs
dWUqIHZhbHVlKQogICAgIHsKLSAgICAgICAgQXBwbHlQcm9wZXJ0eURlZmF1bHQ8VGV4dERpcmVj
dGlvbiwgZ2V0dGVyRnVuY3Rpb24sIFRleHREaXJlY3Rpb24sIHNldHRlckZ1bmN0aW9uLCBUZXh0
RGlyZWN0aW9uLCBpbml0aWFsRnVuY3Rpb24+OjphcHBseVZhbHVlKHNlbGVjdG9yLCB2YWx1ZSk7
Ci0gICAgICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBzZWxlY3Rvci0+ZWxlbWVudCgpOwotICAgICAg
ICBpZiAoZWxlbWVudCAmJiBzZWxlY3Rvci0+ZWxlbWVudCgpID09IGVsZW1lbnQtPmRvY3VtZW50
KCktPmRvY3VtZW50RWxlbWVudCgpKQorICAgICAgICBBcHBseVByb3BlcnR5RGVmYXVsdDxUZXh0
RGlyZWN0aW9uLCBnZXR0ZXJGdW5jdGlvbiwgVGV4dERpcmVjdGlvbiwgc2V0dGVyRnVuY3Rpb24s
IFRleHREaXJlY3Rpb24sIGluaXRpYWxGdW5jdGlvbj46OmFwcGx5VmFsdWUoc3R5bGVSZXNvbHZl
ciwgdmFsdWUpOworICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0gc3R5bGVSZXNvbHZlci0+ZWxl
bWVudCgpOworICAgICAgICBpZiAoZWxlbWVudCAmJiBzdHlsZVJlc29sdmVyLT5lbGVtZW50KCkg
PT0gZWxlbWVudC0+ZG9jdW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50KCkpCiAgICAgICAgICAgICBl
bGVtZW50LT5kb2N1bWVudCgpLT5zZXREaXJlY3Rpb25TZXRPbkRvY3VtZW50RWxlbWVudCh0cnVl
KTsKICAgICB9CiAKQEAgLTM0Niw3ICszNDYsNyBAQCB0ZW1wbGF0ZSA8TGVuZ3RoIChSZW5kZXJT
dHlsZTo6KmdldHRlckZ1bmN0aW9uKSgpIGNvbnN0LAogY2xhc3MgQXBwbHlQcm9wZXJ0eUxlbmd0
aCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgc2V0VmFsdWUoUmVuZGVyU3R5bGUqIHN0eWxl
LCBMZW5ndGggdmFsdWUpIHsgKHN0eWxlLT4qc2V0dGVyRnVuY3Rpb24pKHZhbHVlKTsgfQotICAg
IHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIENTU1ZhbHVl
KiB2YWx1ZSkKKyAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlKFN0eWxlUmVzb2x2ZXIqIHN0eWxl
UmVzb2x2ZXIsIENTU1ZhbHVlKiB2YWx1ZSkKICAgICB7CiAgICAgICAgIGlmICghdmFsdWUtPmlz
UHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTM1NCwyNiArMzU0LDI2
IEBAIHB1YmxpYzoKICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0g
c3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CiAgICAgICAgIGlmIChub25l
RW5hYmxlZCAmJiBwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZU5vbmUpCiAg
ICAgICAgICAgICBpZiAobm9uZVVuZGVmaW5lZCkKLSAgICAgICAgICAgICAgICBzZXRWYWx1ZShz
ZWxlY3Rvci0+c3R5bGUoKSwgTGVuZ3RoKFVuZGVmaW5lZCkpOworICAgICAgICAgICAgICAgIHNl
dFZhbHVlKHN0eWxlUmVzb2x2ZXItPnN0eWxlKCksIExlbmd0aChVbmRlZmluZWQpKTsKICAgICAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBzZXRWYWx1ZShzZWxlY3Rvci0+c3R5bGUoKSwg
TGVuZ3RoKCkpOworICAgICAgICAgICAgICAgIHNldFZhbHVlKHN0eWxlUmVzb2x2ZXItPnN0eWxl
KCksIExlbmd0aCgpKTsKICAgICAgICAgZWxzZSBpZiAoaW50cmluc2ljRW5hYmxlZCAmJiBwcmlt
aXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUludHJpbnNpYykKLSAgICAgICAgICAg
IHNldFZhbHVlKHNlbGVjdG9yLT5zdHlsZSgpLCBMZW5ndGgoSW50cmluc2ljKSk7CisgICAgICAg
ICAgICBzZXRWYWx1ZShzdHlsZVJlc29sdmVyLT5zdHlsZSgpLCBMZW5ndGgoSW50cmluc2ljKSk7
CiAgICAgICAgIGVsc2UgaWYgKG1pbkludHJpbnNpY0VuYWJsZWQgJiYgcHJpbWl0aXZlVmFsdWUt
PmdldElkZW50KCkgPT0gQ1NTVmFsdWVNaW5JbnRyaW5zaWMpCi0gICAgICAgICAgICBzZXRWYWx1
ZShzZWxlY3Rvci0+c3R5bGUoKSwgTGVuZ3RoKE1pbkludHJpbnNpYykpOworICAgICAgICAgICAg
c2V0VmFsdWUoc3R5bGVSZXNvbHZlci0+c3R5bGUoKSwgTGVuZ3RoKE1pbkludHJpbnNpYykpOwog
ICAgICAgICBlbHNlIGlmIChhdXRvRW5hYmxlZCAmJiBwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQo
KSA9PSBDU1NWYWx1ZUF1dG8pCi0gICAgICAgICAgICBzZXRWYWx1ZShzZWxlY3Rvci0+c3R5bGUo
KSwgTGVuZ3RoKCkpOworICAgICAgICAgICAgc2V0VmFsdWUoc3R5bGVSZXNvbHZlci0+c3R5bGUo
KSwgTGVuZ3RoKCkpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGlmIChwcmltaXRpdmVW
YWx1ZS0+aXNMZW5ndGgoKSkgewotICAgICAgICAgICAgICAgIExlbmd0aCBsZW5ndGggPSBwcmlt
aXRpdmVWYWx1ZS0+Y29tcHV0ZUxlbmd0aDxMZW5ndGg+KHNlbGVjdG9yLT5zdHlsZSgpLCBzZWxl
Y3Rvci0+cm9vdEVsZW1lbnRTdHlsZSgpLCBzZWxlY3Rvci0+c3R5bGUoKS0+ZWZmZWN0aXZlWm9v
bSgpKTsKKyAgICAgICAgICAgICAgICBMZW5ndGggbGVuZ3RoID0gcHJpbWl0aXZlVmFsdWUtPmNv
bXB1dGVMZW5ndGg8TGVuZ3RoPihzdHlsZVJlc29sdmVyLT5zdHlsZSgpLCBzdHlsZVJlc29sdmVy
LT5yb290RWxlbWVudFN0eWxlKCksIHN0eWxlUmVzb2x2ZXItPnN0eWxlKCktPmVmZmVjdGl2ZVpv
b20oKSk7CiAgICAgICAgICAgICAgICAgbGVuZ3RoLnNldFF1aXJrKHByaW1pdGl2ZVZhbHVlLT5p
c1F1aXJrVmFsdWUoKSk7Ci0gICAgICAgICAgICAgICAgc2V0VmFsdWUoc2VsZWN0b3ItPnN0eWxl
KCksIGxlbmd0aCk7CisgICAgICAgICAgICAgICAgc2V0VmFsdWUoc3R5bGVSZXNvbHZlci0+c3R5
bGUoKSwgbGVuZ3RoKTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUtPmlz
UGVyY2VudGFnZSgpKQotICAgICAgICAgICAgICAgIHNldFZhbHVlKHNlbGVjdG9yLT5zdHlsZSgp
LCBMZW5ndGgocHJpbWl0aXZlVmFsdWUtPmdldERvdWJsZVZhbHVlKCksIFBlcmNlbnQpKTsKKyAg
ICAgICAgICAgICAgICBzZXRWYWx1ZShzdHlsZVJlc29sdmVyLT5zdHlsZSgpLCBMZW5ndGgocHJp
bWl0aXZlVmFsdWUtPmdldERvdWJsZVZhbHVlKCksIFBlcmNlbnQpKTsKICAgICAgICAgICAgIGVs
c2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5pc0NhbGN1bGF0ZWRQZXJjZW50YWdlV2l0aExlbmd0aCgp
KQotICAgICAgICAgICAgICAgIHNldFZhbHVlKHNlbGVjdG9yLT5zdHlsZSgpLCBMZW5ndGgocHJp
bWl0aXZlVmFsdWUtPmNzc0NhbGNWYWx1ZSgpLT50b0NhbGNWYWx1ZShzZWxlY3Rvci0+c3R5bGUo
KSwgc2VsZWN0b3ItPnJvb3RFbGVtZW50U3R5bGUoKSwgc2VsZWN0b3ItPnN0eWxlKCktPmVmZmVj
dGl2ZVpvb20oKSkpKTsgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBzZXRWYWx1ZShzdHls
ZVJlc29sdmVyLT5zdHlsZSgpLCBMZW5ndGgocHJpbWl0aXZlVmFsdWUtPmNzc0NhbGNWYWx1ZSgp
LT50b0NhbGNWYWx1ZShzdHlsZVJlc29sdmVyLT5zdHlsZSgpLCBzdHlsZVJlc29sdmVyLT5yb290
RWxlbWVudFN0eWxlKCksIHN0eWxlUmVzb2x2ZXItPnN0eWxlKCktPmVmZmVjdGl2ZVpvb20oKSkp
KTsKICAgICAgICAgICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5pc1ZpZXdwb3J0UGVyY2Vu
dGFnZUxlbmd0aCgpKQotICAgICAgICAgICAgICAgIHNldFZhbHVlKHNlbGVjdG9yLT5zdHlsZSgp
LCBwcmltaXRpdmVWYWx1ZS0+dmlld3BvcnRQZXJjZW50YWdlTGVuZ3RoKCkpOworICAgICAgICAg
ICAgICAgIHNldFZhbHVlKHN0eWxlUmVzb2x2ZXItPnN0eWxlKCksIHByaW1pdGl2ZVZhbHVlLT52
aWV3cG9ydFBlcmNlbnRhZ2VMZW5ndGgoKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTM4OSwx
NiArMzg5LDE2IEBAIHRlbXBsYXRlIDxTdHJpbmdJZGVudEJlaGF2aW9yIGlkZW50QmVoYXZpb3Is
IGNvbnN0IEF0b21pY1N0cmluZyYgKFJlbmRlclN0eWxlOjoqCiBjbGFzcyBBcHBseVByb3BlcnR5
U3RyaW5nIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBzZXRWYWx1ZShSZW5kZXJTdHlsZSog
c3R5bGUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpIHsgKHN0eWxlLT4qc2V0dGVyRnVuY3Rp
b24pKHZhbHVlKTsgfQotICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUoU3R5bGVSZXNvbHZlciog
c2VsZWN0b3IsIENTU1ZhbHVlKiB2YWx1ZSkKKyAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlKFN0
eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlKiB2YWx1ZSkKICAgICB7CiAgICAg
ICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8
Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CiAgICAgICAgIGlmICgoaWRlbnRCZWhhdmlvciA9
PSBNYXBOb25lVG9OdWxsICYmIHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVl
Tm9uZSkKICAgICAgICAgICAgIHx8IChpZGVudEJlaGF2aW9yID09IE1hcEF1dG9Ub051bGwgJiYg
cHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVBdXRvKSkKLSAgICAgICAgICAg
IHNldFZhbHVlKHNlbGVjdG9yLT5zdHlsZSgpLCBudWxsQXRvbSk7CisgICAgICAgICAgICBzZXRW
YWx1ZShzdHlsZVJlc29sdmVyLT5zdHlsZSgpLCBudWxsQXRvbSk7CiAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIHNldFZhbHVlKHNlbGVjdG9yLT5zdHlsZSgpLCBwcmltaXRpdmVWYWx1ZS0+Z2V0
U3RyaW5nVmFsdWUoKSk7CisgICAgICAgICAgICBzZXRWYWx1ZShzdHlsZVJlc29sdmVyLT5zdHls
ZSgpLCBwcmltaXRpdmVWYWx1ZS0+Z2V0U3RyaW5nVmFsdWUoKSk7CiAgICAgfQogICAgIHN0YXRp
YyBQcm9wZXJ0eUhhbmRsZXIgY3JlYXRlSGFuZGxlcigpCiAgICAgewpAQCAtNDExLDcgKzQxMSw3
IEBAIHRlbXBsYXRlIDxMZW5ndGhTaXplIChSZW5kZXJTdHlsZTo6KmdldHRlckZ1bmN0aW9uKSgp
IGNvbnN0LCB2b2lkIChSZW5kZXJTdHlsZTo6CiBjbGFzcyBBcHBseVByb3BlcnR5Qm9yZGVyUmFk
aXVzIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBzZXRWYWx1ZShSZW5kZXJTdHlsZSogc3R5
bGUsIExlbmd0aFNpemUgdmFsdWUpIHsgKHN0eWxlLT4qc2V0dGVyRnVuY3Rpb24pKHZhbHVlKTsg
fQotICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIENT
U1ZhbHVlKiB2YWx1ZSkKKyAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlKFN0eWxlUmVzb2x2ZXIq
IHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlKiB2YWx1ZSkKICAgICB7CiAgICAgICAgIGlmICghdmFs
dWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTQzMiw3ICs0
MzIsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAvLyBoYW5kbGUgdGhpcyBjYXNlCiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgcmFkaXVzV2lkdGggPSBw
YWlyLT5maXJzdCgpLT5jb21wdXRlTGVuZ3RoPExlbmd0aD4oc2VsZWN0b3ItPnN0eWxlKCksIHNl
bGVjdG9yLT5yb290RWxlbWVudFN0eWxlKCksIHNlbGVjdG9yLT5zdHlsZSgpLT5lZmZlY3RpdmVa
b29tKCkpOworICAgICAgICAgICAgcmFkaXVzV2lkdGggPSBwYWlyLT5maXJzdCgpLT5jb21wdXRl
TGVuZ3RoPExlbmd0aD4oc3R5bGVSZXNvbHZlci0+c3R5bGUoKSwgc3R5bGVSZXNvbHZlci0+cm9v
dEVsZW1lbnRTdHlsZSgpLCBzdHlsZVJlc29sdmVyLT5zdHlsZSgpLT5lZmZlY3RpdmVab29tKCkp
OwogICAgICAgICBpZiAocGFpci0+c2Vjb25kKCktPmlzUGVyY2VudGFnZSgpKQogICAgICAgICAg
ICAgcmFkaXVzSGVpZ2h0ID0gTGVuZ3RoKHBhaXItPnNlY29uZCgpLT5nZXREb3VibGVWYWx1ZSgp
LCBQZXJjZW50KTsKICAgICAgICAgZWxzZSBpZiAocGFpci0+c2Vjb25kKCktPmlzVmlld3BvcnRQ
ZXJjZW50YWdlTGVuZ3RoKCkpCkBAIC00NDIsNyArNDQyLDcgQEAgcHVibGljOgogICAgICAgICAg
ICAgLy8gaGFuZGxlIHRoaXMgY2FzZQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9IGVs
c2UKLSAgICAgICAgICAgIHJhZGl1c0hlaWdodCA9IHBhaXItPnNlY29uZCgpLT5jb21wdXRlTGVu
Z3RoPExlbmd0aD4oc2VsZWN0b3ItPnN0eWxlKCksIHNlbGVjdG9yLT5yb290RWxlbWVudFN0eWxl
KCksIHNlbGVjdG9yLT5zdHlsZSgpLT5lZmZlY3RpdmVab29tKCkpOworICAgICAgICAgICAgcmFk
aXVzSGVpZ2h0ID0gcGFpci0+c2Vjb25kKCktPmNvbXB1dGVMZW5ndGg8TGVuZ3RoPihzdHlsZVJl
c29sdmVyLT5zdHlsZSgpLCBzdHlsZVJlc29sdmVyLT5yb290RWxlbWVudFN0eWxlKCksIHN0eWxl
UmVzb2x2ZXItPnN0eWxlKCktPmVmZmVjdGl2ZVpvb20oKSk7CiAgICAgICAgIGludCB3aWR0aCA9
IHJhZGl1c1dpZHRoLnZhbHVlKCk7CiAgICAgICAgIGludCBoZWlnaHQgPSByYWRpdXNIZWlnaHQu
dmFsdWUoKTsKICAgICAgICAgaWYgKHdpZHRoIDwgMCB8fCBoZWlnaHQgPCAwKQpAQCAtNDUzLDcg
KzQ1Myw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJhZGl1c1dpZHRoID0gcmFkaXVzSGVpZ2h0
OyAvLyBOdWxsIG91dCB0aGUgb3RoZXIgdmFsdWUuCiAKICAgICAgICAgTGVuZ3RoU2l6ZSBzaXpl
KHJhZGl1c1dpZHRoLCByYWRpdXNIZWlnaHQpOwotICAgICAgICBzZXRWYWx1ZShzZWxlY3Rvci0+
c3R5bGUoKSwgc2l6ZSk7CisgICAgICAgIHNldFZhbHVlKHN0eWxlUmVzb2x2ZXItPnN0eWxlKCks
IHNpemUpOwogICAgIH0KICAgICBzdGF0aWMgUHJvcGVydHlIYW5kbGVyIGNyZWF0ZUhhbmRsZXIo
KQogICAgIHsKQEAgLTQ4NywxMSArNDg3LDExIEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBULAogICAg
ICAgICAgIHZvaWQgKFN0eWxlUmVzb2x2ZXI6OiptYXBGaWxsRnVuY3Rpb24pKENTU1Byb3BlcnR5
SUQsIEZpbGxMYXllciosIENTU1ZhbHVlKik+CiBjbGFzcyBBcHBseVByb3BlcnR5RmlsbExheWVy
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgdm9pZCBhcHBseUluaGVyaXRWYWx1ZShTdHlsZVJlc29s
dmVyKiBzZWxlY3RvcikKKyAgICBzdGF0aWMgdm9pZCBhcHBseUluaGVyaXRWYWx1ZShTdHlsZVJl
c29sdmVyKiBzdHlsZVJlc29sdmVyKQogICAgIHsKLSAgICAgICAgRmlsbExheWVyKiBjdXJyQ2hp
bGQgPSAoc2VsZWN0b3ItPnN0eWxlKCktPiphY2Nlc3NMYXllcnNGdW5jdGlvbikoKTsKKyAgICAg
ICAgRmlsbExheWVyKiBjdXJyQ2hpbGQgPSAoc3R5bGVSZXNvbHZlci0+c3R5bGUoKS0+KmFjY2Vz
c0xheWVyc0Z1bmN0aW9uKSgpOwogICAgICAgICBGaWxsTGF5ZXIqIHByZXZDaGlsZCA9IDA7Ci0g
ICAgICAgIGNvbnN0IEZpbGxMYXllciogY3VyclBhcmVudCA9IChzZWxlY3Rvci0+cGFyZW50U3R5
bGUoKS0+KmxheWVyc0Z1bmN0aW9uKSgpOworICAgICAgICBjb25zdCBGaWxsTGF5ZXIqIGN1cnJQ
YXJlbnQgPSAoc3R5bGVSZXNvbHZlci0+cGFyZW50U3R5bGUoKS0+KmxheWVyc0Z1bmN0aW9uKSgp
OwogICAgICAgICB3aGlsZSAoY3VyclBhcmVudCAmJiAoY3VyclBhcmVudC0+KnRlc3RGdW5jdGlv
bikoKSkgewogICAgICAgICAgICAgaWYgKCFjdXJyQ2hpbGQpIHsKICAgICAgICAgICAgICAgICAv
KiBOZWVkIHRvIG1ha2UgYSBuZXcgbGF5ZXIuKi8KQEAgLTUxMSwxNyArNTExLDE3IEBAIHB1Ymxp
YzoKICAgICAgICAgfQogICAgIH0KIAotICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5pdGlhbFZhbHVl
KFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yKQorICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5pdGlhbFZh
bHVlKFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIpCiAgICAgewotICAgICAgICBGaWxsTGF5
ZXIqIGN1cnJDaGlsZCA9IChzZWxlY3Rvci0+c3R5bGUoKS0+KmFjY2Vzc0xheWVyc0Z1bmN0aW9u
KSgpOworICAgICAgICBGaWxsTGF5ZXIqIGN1cnJDaGlsZCA9IChzdHlsZVJlc29sdmVyLT5zdHls
ZSgpLT4qYWNjZXNzTGF5ZXJzRnVuY3Rpb24pKCk7CiAgICAgICAgIChjdXJyQ2hpbGQtPipzZXRG
dW5jdGlvbikoKCppbml0aWFsRnVuY3Rpb24pKGZpbGxMYXllclR5cGUpKTsKICAgICAgICAgZm9y
IChjdXJyQ2hpbGQgPSBjdXJyQ2hpbGQtPm5leHQoKTsgY3VyckNoaWxkOyBjdXJyQ2hpbGQgPSBj
dXJyQ2hpbGQtPm5leHQoKSkKICAgICAgICAgICAgIChjdXJyQ2hpbGQtPipjbGVhckZ1bmN0aW9u
KSgpOwogICAgIH0KIAotICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUoU3R5bGVSZXNvbHZlciog
c2VsZWN0b3IsIENTU1ZhbHVlKiB2YWx1ZSkKKyAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlKFN0
eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlKiB2YWx1ZSkKICAgICB7Ci0gICAg
ICAgIEZpbGxMYXllciogY3VyckNoaWxkID0gKHNlbGVjdG9yLT5zdHlsZSgpLT4qYWNjZXNzTGF5
ZXJzRnVuY3Rpb24pKCk7CisgICAgICAgIEZpbGxMYXllciogY3VyckNoaWxkID0gKHN0eWxlUmVz
b2x2ZXItPnN0eWxlKCktPiphY2Nlc3NMYXllcnNGdW5jdGlvbikoKTsKICAgICAgICAgRmlsbExh
eWVyKiBwcmV2Q2hpbGQgPSAwOwogICAgICAgICBpZiAodmFsdWUtPmlzVmFsdWVMaXN0KCkKICNp
ZiBFTkFCTEUoQ1NTX0lNQUdFX1NFVCkKQEAgLTUzNiwxMiArNTM2LDEyIEBAIHB1YmxpYzoKICAg
ICAgICAgICAgICAgICAgICAgY3VyckNoaWxkID0gbmV3IEZpbGxMYXllcihmaWxsTGF5ZXJUeXBl
KTsKICAgICAgICAgICAgICAgICAgICAgcHJldkNoaWxkLT5zZXROZXh0KGN1cnJDaGlsZCk7CiAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIChzZWxlY3Rvci0+Km1hcEZpbGxGdW5j
dGlvbikocHJvcGVydHlJZCwgY3VyckNoaWxkLCB2YWx1ZUxpc3QtPml0ZW1XaXRob3V0Qm91bmRz
Q2hlY2soaSkpOworICAgICAgICAgICAgICAgIChzdHlsZVJlc29sdmVyLT4qbWFwRmlsbEZ1bmN0
aW9uKShwcm9wZXJ0eUlkLCBjdXJyQ2hpbGQsIHZhbHVlTGlzdC0+aXRlbVdpdGhvdXRCb3VuZHND
aGVjayhpKSk7CiAgICAgICAgICAgICAgICAgcHJldkNoaWxkID0gY3VyckNoaWxkOwogICAgICAg
ICAgICAgICAgIGN1cnJDaGlsZCA9IGN1cnJDaGlsZC0+bmV4dCgpOwogICAgICAgICAgICAgfQog
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgKHNlbGVjdG9yLT4qbWFwRmlsbEZ1bmN0aW9u
KShwcm9wZXJ0eUlkLCBjdXJyQ2hpbGQsIHZhbHVlKTsKKyAgICAgICAgICAgIChzdHlsZVJlc29s
dmVyLT4qbWFwRmlsbEZ1bmN0aW9uKShwcm9wZXJ0eUlkLCBjdXJyQ2hpbGQsIHZhbHVlKTsKICAg
ICAgICAgICAgIGN1cnJDaGlsZCA9IGN1cnJDaGlsZC0+bmV4dCgpOwogICAgICAgICB9CiAgICAg
ICAgIHdoaWxlIChjdXJyQ2hpbGQpIHsKQEAgLTU2Nyw3ICs1NjcsNyBAQCB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVCwKIGNsYXNzIEFwcGx5UHJvcGVydHlDb21wdXRlTGVuZ3RoIHsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgdm9pZCBzZXRWYWx1ZShSZW5kZXJTdHlsZSogc3R5bGUsIFQgdmFsdWUpIHsgKHN0
eWxlLT4qc2V0dGVyRnVuY3Rpb24pKHZhbHVlKTsgfQotICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFs
dWUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIENTU1ZhbHVlKiB2YWx1ZSkKKyAgICBzdGF0aWMg
dm9pZCBhcHBseVZhbHVlKFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlKiB2
YWx1ZSkKICAgICB7CiAgICAgICAgIC8vIG5vdGU6IENTU1Byb3BlcnR5TGV0dGVyL1dvcmRTcGFj
aW5nIHJpZ2h0IG5vdyBzZXRzIHRvIHplcm8gaWYgaXQncyBub3QgYSBwcmltaXRpdmUgdmFsdWUg
Zm9yIHNvbWUgcmVhc29uLi4uCiAgICAgICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUo
KSkKQEAgLTU4NiwxNCArNTg2LDE0IEBAIHB1YmxpYzoKICAgICAgICAgfSBlbHNlIGlmICh0aGlj
a25lc3NFbmFibGVkICYmIGlkZW50ID09IENTU1ZhbHVlVGhpY2spIHsKICAgICAgICAgICAgIGxl
bmd0aCA9IDU7CiAgICAgICAgIH0gZWxzZSBpZiAoaWRlbnQgPT0gQ1NTVmFsdWVJbnZhbGlkKSB7
Ci0gICAgICAgICAgICBmbG9hdCB6b29tID0gKHN2Z1pvb21FbmFibGVkICYmIHNlbGVjdG9yLT51
c2VTVkdab29tUnVsZXMoKSkgPyAxLjBmIDogc2VsZWN0b3ItPnN0eWxlKCktPmVmZmVjdGl2ZVpv
b20oKTsKLSAgICAgICAgICAgIGxlbmd0aCA9IHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3Ro
PFQ+KHNlbGVjdG9yLT5zdHlsZSgpLCBzZWxlY3Rvci0+cm9vdEVsZW1lbnRTdHlsZSgpLCB6b29t
KTsKKyAgICAgICAgICAgIGZsb2F0IHpvb20gPSAoc3ZnWm9vbUVuYWJsZWQgJiYgc3R5bGVSZXNv
bHZlci0+dXNlU1ZHWm9vbVJ1bGVzKCkpID8gMS4wZiA6IHN0eWxlUmVzb2x2ZXItPnN0eWxlKCkt
PmVmZmVjdGl2ZVpvb20oKTsKKyAgICAgICAgICAgIGxlbmd0aCA9IHByaW1pdGl2ZVZhbHVlLT5j
b21wdXRlTGVuZ3RoPFQ+KHN0eWxlUmVzb2x2ZXItPnN0eWxlKCksIHN0eWxlUmVzb2x2ZXItPnJv
b3RFbGVtZW50U3R5bGUoKSwgem9vbSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIGxlbmd0aCA9IDA7CiAgICAgICAgIH0K
IAotICAgICAgICBzZXRWYWx1ZShzZWxlY3Rvci0+c3R5bGUoKSwgbGVuZ3RoKTsKKyAgICAgICAg
c2V0VmFsdWUoc3R5bGVSZXNvbHZlci0+c3R5bGUoKSwgbGVuZ3RoKTsKICAgICB9CiAgICAgc3Rh
dGljIFByb3BlcnR5SGFuZGxlciBjcmVhdGVIYW5kbGVyKCkKICAgICB7CkBAIC02MDUsMjggKzYw
NSwyOCBAQCBwdWJsaWM6CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgVCAoRm9udERlc2NyaXB0aW9u
OjoqZ2V0dGVyRnVuY3Rpb24pKCkgY29uc3QsIHZvaWQgKEZvbnREZXNjcmlwdGlvbjo6KnNldHRl
ckZ1bmN0aW9uKShUKSwgVCBpbml0aWFsVmFsdWU+CiBjbGFzcyBBcHBseVByb3BlcnR5Rm9udCB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIHZvaWQgYXBwbHlJbmhlcml0VmFsdWUoU3R5bGVSZXNvbHZl
ciogc2VsZWN0b3IpCisgICAgc3RhdGljIHZvaWQgYXBwbHlJbmhlcml0VmFsdWUoU3R5bGVSZXNv
bHZlciogc3R5bGVSZXNvbHZlcikKICAgICB7Ci0gICAgICAgIEZvbnREZXNjcmlwdGlvbiBmb250
RGVzY3JpcHRpb24gPSBzZWxlY3Rvci0+Zm9udERlc2NyaXB0aW9uKCk7Ci0gICAgICAgIChmb250
RGVzY3JpcHRpb24uKnNldHRlckZ1bmN0aW9uKSgoc2VsZWN0b3ItPnBhcmVudEZvbnREZXNjcmlw
dGlvbigpLipnZXR0ZXJGdW5jdGlvbikoKSk7Ci0gICAgICAgIHNlbGVjdG9yLT5zZXRGb250RGVz
Y3JpcHRpb24oZm9udERlc2NyaXB0aW9uKTsKKyAgICAgICAgRm9udERlc2NyaXB0aW9uIGZvbnRE
ZXNjcmlwdGlvbiA9IHN0eWxlUmVzb2x2ZXItPmZvbnREZXNjcmlwdGlvbigpOworICAgICAgICAo
Zm9udERlc2NyaXB0aW9uLipzZXR0ZXJGdW5jdGlvbikoKHN0eWxlUmVzb2x2ZXItPnBhcmVudEZv
bnREZXNjcmlwdGlvbigpLipnZXR0ZXJGdW5jdGlvbikoKSk7CisgICAgICAgIHN0eWxlUmVzb2x2
ZXItPnNldEZvbnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pOwogICAgIH0KIAotICAgIHN0
YXRpYyB2b2lkIGFwcGx5SW5pdGlhbFZhbHVlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yKQorICAg
IHN0YXRpYyB2b2lkIGFwcGx5SW5pdGlhbFZhbHVlKFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2
ZXIpCiAgICAgewotICAgICAgICBGb250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uID0gc2Vs
ZWN0b3ItPmZvbnREZXNjcmlwdGlvbigpOworICAgICAgICBGb250RGVzY3JpcHRpb24gZm9udERl
c2NyaXB0aW9uID0gc3R5bGVSZXNvbHZlci0+Zm9udERlc2NyaXB0aW9uKCk7CiAgICAgICAgIChm
b250RGVzY3JpcHRpb24uKnNldHRlckZ1bmN0aW9uKShpbml0aWFsVmFsdWUpOwotICAgICAgICBz
ZWxlY3Rvci0+c2V0Rm9udERlc2NyaXB0aW9uKGZvbnREZXNjcmlwdGlvbik7CisgICAgICAgIHN0
eWxlUmVzb2x2ZXItPnNldEZvbnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pOwogICAgIH0K
IAotICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIENT
U1ZhbHVlKiB2YWx1ZSkKKyAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlKFN0eWxlUmVzb2x2ZXIq
IHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlKiB2YWx1ZSkKICAgICB7CiAgICAgICAgIGlmICghdmFs
dWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgQ1NT
UHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWUqPih2YWx1ZSk7Ci0gICAgICAgIEZvbnREZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb24g
PSBzZWxlY3Rvci0+Zm9udERlc2NyaXB0aW9uKCk7CisgICAgICAgIEZvbnREZXNjcmlwdGlvbiBm
b250RGVzY3JpcHRpb24gPSBzdHlsZVJlc29sdmVyLT5mb250RGVzY3JpcHRpb24oKTsKICAgICAg
ICAgKGZvbnREZXNjcmlwdGlvbi4qc2V0dGVyRnVuY3Rpb24pKCpwcmltaXRpdmVWYWx1ZSk7Ci0g
ICAgICAgIHNlbGVjdG9yLT5zZXRGb250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKTsKKyAg
ICAgICAgc3R5bGVSZXNvbHZlci0+c2V0Rm9udERlc2NyaXB0aW9uKGZvbnREZXNjcmlwdGlvbik7
CiAgICAgfQogCiAgICAgc3RhdGljIFByb3BlcnR5SGFuZGxlciBjcmVhdGVIYW5kbGVyKCkgeyBy
ZXR1cm4gUHJvcGVydHlIYW5kbGVyKCZhcHBseUluaGVyaXRWYWx1ZSwgJmFwcGx5SW5pdGlhbFZh
bHVlLCAmYXBwbHlWYWx1ZSk7IH0KQEAgLTY1MSw1MCArNjUxLDUwIEBAIHByaXZhdGU6CiAgICAg
ICAgIHJldHVybiBzaXplIC8gMS4yZjsKICAgICB9CiBwdWJsaWM6Ci0gICAgc3RhdGljIHZvaWQg
YXBwbHlJbmhlcml0VmFsdWUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IpCisgICAgc3RhdGljIHZv
aWQgYXBwbHlJbmhlcml0VmFsdWUoU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlcikKICAgICB7
Ci0gICAgICAgIGZsb2F0IHNpemUgPSBzZWxlY3Rvci0+cGFyZW50U3R5bGUoKS0+Zm9udERlc2Ny
aXB0aW9uKCkuc3BlY2lmaWVkU2l6ZSgpOworICAgICAgICBmbG9hdCBzaXplID0gc3R5bGVSZXNv
bHZlci0+cGFyZW50U3R5bGUoKS0+Zm9udERlc2NyaXB0aW9uKCkuc3BlY2lmaWVkU2l6ZSgpOwog
CiAgICAgICAgIGlmIChzaXplIDwgMCkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBG
b250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uID0gc2VsZWN0b3ItPnN0eWxlKCktPmZvbnRE
ZXNjcmlwdGlvbigpOwotICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0S2V5d29yZFNpemUoc2Vs
ZWN0b3ItPnBhcmVudFN0eWxlKCktPmZvbnREZXNjcmlwdGlvbigpLmtleXdvcmRTaXplKCkpOwot
ICAgICAgICBzZWxlY3Rvci0+c2V0Rm9udFNpemUoZm9udERlc2NyaXB0aW9uLCBzaXplKTsKLSAg
ICAgICAgc2VsZWN0b3ItPnNldEZvbnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pOworICAg
ICAgICBGb250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uID0gc3R5bGVSZXNvbHZlci0+c3R5
bGUoKS0+Zm9udERlc2NyaXB0aW9uKCk7CisgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRLZXl3
b3JkU2l6ZShzdHlsZVJlc29sdmVyLT5wYXJlbnRTdHlsZSgpLT5mb250RGVzY3JpcHRpb24oKS5r
ZXl3b3JkU2l6ZSgpKTsKKyAgICAgICAgc3R5bGVSZXNvbHZlci0+c2V0Rm9udFNpemUoZm9udERl
c2NyaXB0aW9uLCBzaXplKTsKKyAgICAgICAgc3R5bGVSZXNvbHZlci0+c2V0Rm9udERlc2NyaXB0
aW9uKGZvbnREZXNjcmlwdGlvbik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBzdGF0
aWMgdm9pZCBhcHBseUluaXRpYWxWYWx1ZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvcikKKyAgICBz
dGF0aWMgdm9pZCBhcHBseUluaXRpYWxWYWx1ZShTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVy
KQogICAgIHsKLSAgICAgICAgRm9udERlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbiA9IHNlbGVj
dG9yLT5zdHlsZSgpLT5mb250RGVzY3JpcHRpb24oKTsKLSAgICAgICAgZmxvYXQgc2l6ZSA9IHNl
bGVjdG9yLT5mb250U2l6ZUZvcktleXdvcmQoc2VsZWN0b3ItPmRvY3VtZW50KCksIENTU1ZhbHVl
TWVkaXVtLCBmb250RGVzY3JpcHRpb24udXNlRml4ZWREZWZhdWx0U2l6ZSgpKTsKKyAgICAgICAg
Rm9udERlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbiA9IHN0eWxlUmVzb2x2ZXItPnN0eWxlKCkt
PmZvbnREZXNjcmlwdGlvbigpOworICAgICAgICBmbG9hdCBzaXplID0gc3R5bGVSZXNvbHZlci0+
Zm9udFNpemVGb3JLZXl3b3JkKHN0eWxlUmVzb2x2ZXItPmRvY3VtZW50KCksIENTU1ZhbHVlTWVk
aXVtLCBmb250RGVzY3JpcHRpb24udXNlRml4ZWREZWZhdWx0U2l6ZSgpKTsKIAogICAgICAgICBp
ZiAoc2l6ZSA8IDApCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgZm9udERlc2NyaXB0
aW9uLnNldEtleXdvcmRTaXplKENTU1ZhbHVlTWVkaXVtIC0gQ1NTVmFsdWVYeFNtYWxsICsgMSk7
Ci0gICAgICAgIHNlbGVjdG9yLT5zZXRGb250U2l6ZShmb250RGVzY3JpcHRpb24sIHNpemUpOwot
ICAgICAgICBzZWxlY3Rvci0+c2V0Rm9udERlc2NyaXB0aW9uKGZvbnREZXNjcmlwdGlvbik7Cisg
ICAgICAgIHN0eWxlUmVzb2x2ZXItPnNldEZvbnRTaXplKGZvbnREZXNjcmlwdGlvbiwgc2l6ZSk7
CisgICAgICAgIHN0eWxlUmVzb2x2ZXItPnNldEZvbnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRp
b24pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1
ZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvciwgQ1NTVmFsdWUqIHZhbHVlKQorICAgIHN0YXRpYyB2
b2lkIGFwcGx5VmFsdWUoU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUqIHZh
bHVlKQogICAgIHsKICAgICAgICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAg
ICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVW
YWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOwogCi0gICAgICAg
IEZvbnREZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb24gPSBzZWxlY3Rvci0+c3R5bGUoKS0+Zm9u
dERlc2NyaXB0aW9uKCk7CisgICAgICAgIEZvbnREZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb24g
PSBzdHlsZVJlc29sdmVyLT5zdHlsZSgpLT5mb250RGVzY3JpcHRpb24oKTsKICAgICAgICAgZm9u
dERlc2NyaXB0aW9uLnNldEtleXdvcmRTaXplKDApOwogICAgICAgICBmbG9hdCBwYXJlbnRTaXpl
ID0gMDsKICAgICAgICAgYm9vbCBwYXJlbnRJc0Fic29sdXRlU2l6ZSA9IGZhbHNlOwogICAgICAg
ICBmbG9hdCBzaXplID0gMDsKIAotICAgICAgICBpZiAoc2VsZWN0b3ItPmhhc1BhcmVudE5vZGUo
KSkgewotICAgICAgICAgICAgcGFyZW50U2l6ZSA9IHNlbGVjdG9yLT5wYXJlbnRTdHlsZSgpLT5m
b250RGVzY3JpcHRpb24oKS5zcGVjaWZpZWRTaXplKCk7Ci0gICAgICAgICAgICBwYXJlbnRJc0Fi
c29sdXRlU2l6ZSA9IHNlbGVjdG9yLT5wYXJlbnRTdHlsZSgpLT5mb250RGVzY3JpcHRpb24oKS5p
c0Fic29sdXRlU2l6ZSgpOworICAgICAgICBpZiAoc3R5bGVSZXNvbHZlci0+aGFzUGFyZW50Tm9k
ZSgpKSB7CisgICAgICAgICAgICBwYXJlbnRTaXplID0gc3R5bGVSZXNvbHZlci0+cGFyZW50U3R5
bGUoKS0+Zm9udERlc2NyaXB0aW9uKCkuc3BlY2lmaWVkU2l6ZSgpOworICAgICAgICAgICAgcGFy
ZW50SXNBYnNvbHV0ZVNpemUgPSBzdHlsZVJlc29sdmVyLT5wYXJlbnRTdHlsZSgpLT5mb250RGVz
Y3JpcHRpb24oKS5pc0Fic29sdXRlU2l6ZSgpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKGlu
dCBpZGVudCA9IHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7CkBAIC03MDgsNyArNzA4LDcg
QEAgcHVibGljOgogICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVhMYXJnZToKICAgICAgICAgICAg
IGNhc2UgQ1NTVmFsdWVYeExhcmdlOgogICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVdlYmtpdFh4
eExhcmdlOgotICAgICAgICAgICAgICAgIHNpemUgPSBzZWxlY3Rvci0+Zm9udFNpemVGb3JLZXl3
b3JkKHNlbGVjdG9yLT5kb2N1bWVudCgpLCBpZGVudCwgZm9udERlc2NyaXB0aW9uLnVzZUZpeGVk
RGVmYXVsdFNpemUoKSk7CisgICAgICAgICAgICAgICAgc2l6ZSA9IHN0eWxlUmVzb2x2ZXItPmZv
bnRTaXplRm9yS2V5d29yZChzdHlsZVJlc29sdmVyLT5kb2N1bWVudCgpLCBpZGVudCwgZm9udERl
c2NyaXB0aW9uLnVzZUZpeGVkRGVmYXVsdFNpemUoKSk7CiAgICAgICAgICAgICAgICAgZm9udERl
c2NyaXB0aW9uLnNldEtleXdvcmRTaXplKGlkZW50IC0gQ1NTVmFsdWVYeFNtYWxsICsgMSk7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlTGFyZ2VyOgpA
QCAtNzI2LDEzICs3MjYsMTMgQEAgcHVibGljOgogICAgICAgICAgICAgZm9udERlc2NyaXB0aW9u
LnNldElzQWJzb2x1dGVTaXplKHBhcmVudElzQWJzb2x1dGVTaXplCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgIShwcmltaXRpdmVWYWx1ZS0+aXNQZXJj
ZW50YWdlKCkgfHwgcHJpbWl0aXZlVmFsdWUtPmlzRm9udFJlbGF0aXZlTGVuZ3RoKCkpKTsKICAg
ICAgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+aXNMZW5ndGgoKSkKLSAgICAgICAgICAgICAg
ICBzaXplID0gcHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGg8ZmxvYXQ+KHNlbGVjdG9yLT5w
YXJlbnRTdHlsZSgpLCBzZWxlY3Rvci0+cm9vdEVsZW1lbnRTdHlsZSgpLCAxLjAsIHRydWUpOwor
ICAgICAgICAgICAgICAgIHNpemUgPSBwcmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxlbmd0aDxmbG9h
dD4oc3R5bGVSZXNvbHZlci0+cGFyZW50U3R5bGUoKSwgc3R5bGVSZXNvbHZlci0+cm9vdEVsZW1l
bnRTdHlsZSgpLCAxLjAsIHRydWUpOwogICAgICAgICAgICAgZWxzZSBpZiAocHJpbWl0aXZlVmFs
dWUtPmlzUGVyY2VudGFnZSgpKQogICAgICAgICAgICAgICAgIHNpemUgPSAocHJpbWl0aXZlVmFs
dWUtPmdldEZsb2F0VmFsdWUoKSAqIHBhcmVudFNpemUpIC8gMTAwLjBmOwogICAgICAgICAgICAg
ZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUtPmlzQ2FsY3VsYXRlZFBlcmNlbnRhZ2VXaXRoTGVuZ3Ro
KCkpCi0gICAgICAgICAgICAgICAgc2l6ZSA9IHByaW1pdGl2ZVZhbHVlLT5jc3NDYWxjVmFsdWUo
KS0+dG9DYWxjVmFsdWUoc2VsZWN0b3ItPnBhcmVudFN0eWxlKCksIHNlbGVjdG9yLT5yb290RWxl
bWVudFN0eWxlKCkpLT5ldmFsdWF0ZShwYXJlbnRTaXplKTsgICAgICAgICAgICAgICAgCisgICAg
ICAgICAgICAgICAgc2l6ZSA9IHByaW1pdGl2ZVZhbHVlLT5jc3NDYWxjVmFsdWUoKS0+dG9DYWxj
VmFsdWUoc3R5bGVSZXNvbHZlci0+cGFyZW50U3R5bGUoKSwgc3R5bGVSZXNvbHZlci0+cm9vdEVs
ZW1lbnRTdHlsZSgpKS0+ZXZhbHVhdGUocGFyZW50U2l6ZSk7CiAgICAgICAgICAgICBlbHNlIGlm
IChwcmltaXRpdmVWYWx1ZS0+aXNWaWV3cG9ydFBlcmNlbnRhZ2VMZW5ndGgoKSkKLSAgICAgICAg
ICAgICAgICBzaXplID0gdmFsdWVGb3JMZW5ndGgocHJpbWl0aXZlVmFsdWUtPnZpZXdwb3J0UGVy
Y2VudGFnZUxlbmd0aCgpLCAwLCBzZWxlY3Rvci0+ZG9jdW1lbnQoKS0+cmVuZGVyVmlldygpKTsK
KyAgICAgICAgICAgICAgICBzaXplID0gdmFsdWVGb3JMZW5ndGgocHJpbWl0aXZlVmFsdWUtPnZp
ZXdwb3J0UGVyY2VudGFnZUxlbmd0aCgpLCAwLCBzdHlsZVJlc29sdmVyLT5kb2N1bWVudCgpLT5y
ZW5kZXJWaWV3KCkpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQpAQCAtNzQwLDggKzc0MCw4IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKHNpemUg
PCAwKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHNlbGVjdG9yLT5zZXRGb250U2l6
ZShmb250RGVzY3JpcHRpb24sIHNpemUpOwotICAgICAgICBzZWxlY3Rvci0+c2V0Rm9udERlc2Ny
aXB0aW9uKGZvbnREZXNjcmlwdGlvbik7CisgICAgICAgIHN0eWxlUmVzb2x2ZXItPnNldEZvbnRT
aXplKGZvbnREZXNjcmlwdGlvbiwgc2l6ZSk7CisgICAgICAgIHN0eWxlUmVzb2x2ZXItPnNldEZv
bnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CkBAIC03NTAsMTIgKzc1MCwxMiBAQCBwdWJsaWM6CiAKIGNsYXNzIEFwcGx5UHJvcGVydHlGb250
V2VpZ2h0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlKFN0eWxlUmVzb2x2
ZXIqIHNlbGVjdG9yLCBDU1NWYWx1ZSogdmFsdWUpCisgICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1
ZShTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyLCBDU1NWYWx1ZSogdmFsdWUpCiAgICAgewog
ICAgICAgICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19j
YXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOwotICAgICAgICBGb250RGVzY3JpcHRpb24g
Zm9udERlc2NyaXB0aW9uID0gc2VsZWN0b3ItPmZvbnREZXNjcmlwdGlvbigpOworICAgICAgICBG
b250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uID0gc3R5bGVSZXNvbHZlci0+Zm9udERlc2Ny
aXB0aW9uKCk7CiAgICAgICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpIHsK
ICAgICAgICAgY2FzZSBDU1NWYWx1ZUludmFsaWQ6CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKQEAgLTc2OSw3ICs3NjksNyBAQCBwdWJsaWM6CiAgICAgICAgIGRlZmF1bHQ6CiAg
ICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0V2VpZ2h0KCpwcmltaXRpdmVWYWx1ZSk7CiAg
ICAgICAgIH0KLSAgICAgICAgc2VsZWN0b3ItPnNldEZvbnREZXNjcmlwdGlvbihmb250RGVzY3Jp
cHRpb24pOworICAgICAgICBzdHlsZVJlc29sdmVyLT5zZXRGb250RGVzY3JpcHRpb24oZm9udERl
c2NyaXB0aW9uKTsKICAgICB9CiAgICAgc3RhdGljIFByb3BlcnR5SGFuZGxlciBjcmVhdGVIYW5k
bGVyKCkKICAgICB7CkBAIC03ODAsMzAgKzc4MCwzMCBAQCBwdWJsaWM6CiAKIGNsYXNzIEFwcGx5
UHJvcGVydHlGb250VmFyaWFudExpZ2F0dXJlcyB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHZvaWQg
YXBwbHlJbmhlcml0VmFsdWUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IpCisgICAgc3RhdGljIHZv
aWQgYXBwbHlJbmhlcml0VmFsdWUoU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlcikKICAgICB7
Ci0gICAgICAgIGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgcGFyZW50Rm9udERlc2NyaXB0aW9uID0g
c2VsZWN0b3ItPnBhcmVudEZvbnREZXNjcmlwdGlvbigpOwotICAgICAgICBGb250RGVzY3JpcHRp
b24gZm9udERlc2NyaXB0aW9uID0gc2VsZWN0b3ItPmZvbnREZXNjcmlwdGlvbigpOworICAgICAg
ICBjb25zdCBGb250RGVzY3JpcHRpb24mIHBhcmVudEZvbnREZXNjcmlwdGlvbiA9IHN0eWxlUmVz
b2x2ZXItPnBhcmVudEZvbnREZXNjcmlwdGlvbigpOworICAgICAgICBGb250RGVzY3JpcHRpb24g
Zm9udERlc2NyaXB0aW9uID0gc3R5bGVSZXNvbHZlci0+Zm9udERlc2NyaXB0aW9uKCk7CiAKICAg
ICAgICAgZm9udERlc2NyaXB0aW9uLnNldENvbW1vbkxpZ2F0dXJlc1N0YXRlKHBhcmVudEZvbnRE
ZXNjcmlwdGlvbi5jb21tb25MaWdhdHVyZXNTdGF0ZSgpKTsKICAgICAgICAgZm9udERlc2NyaXB0
aW9uLnNldERpc2NyZXRpb25hcnlMaWdhdHVyZXNTdGF0ZShwYXJlbnRGb250RGVzY3JpcHRpb24u
ZGlzY3JldGlvbmFyeUxpZ2F0dXJlc1N0YXRlKCkpOwogICAgICAgICBmb250RGVzY3JpcHRpb24u
c2V0SGlzdG9yaWNhbExpZ2F0dXJlc1N0YXRlKHBhcmVudEZvbnREZXNjcmlwdGlvbi5oaXN0b3Jp
Y2FsTGlnYXR1cmVzU3RhdGUoKSk7CiAKLSAgICAgICAgc2VsZWN0b3ItPnNldEZvbnREZXNjcmlw
dGlvbihmb250RGVzY3JpcHRpb24pOworICAgICAgICBzdHlsZVJlc29sdmVyLT5zZXRGb250RGVz
Y3JpcHRpb24oZm9udERlc2NyaXB0aW9uKTsKICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCBhcHBs
eUluaXRpYWxWYWx1ZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvcikKKyAgICBzdGF0aWMgdm9pZCBh
cHBseUluaXRpYWxWYWx1ZShTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyKQogICAgIHsKLSAg
ICAgICAgRm9udERlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbiA9IHNlbGVjdG9yLT5mb250RGVz
Y3JpcHRpb24oKTsKKyAgICAgICAgRm9udERlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbiA9IHN0
eWxlUmVzb2x2ZXItPmZvbnREZXNjcmlwdGlvbigpOwogCiAgICAgICAgIGZvbnREZXNjcmlwdGlv
bi5zZXRDb21tb25MaWdhdHVyZXNTdGF0ZShGb250RGVzY3JpcHRpb246Ok5vcm1hbExpZ2F0dXJl
c1N0YXRlKTsKICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldERpc2NyZXRpb25hcnlMaWdhdHVy
ZXNTdGF0ZShGb250RGVzY3JpcHRpb246Ok5vcm1hbExpZ2F0dXJlc1N0YXRlKTsKICAgICAgICAg
Zm9udERlc2NyaXB0aW9uLnNldEhpc3RvcmljYWxMaWdhdHVyZXNTdGF0ZShGb250RGVzY3JpcHRp
b246Ok5vcm1hbExpZ2F0dXJlc1N0YXRlKTsKIAotICAgICAgICBzZWxlY3Rvci0+c2V0Rm9udERl
c2NyaXB0aW9uKGZvbnREZXNjcmlwdGlvbik7CisgICAgICAgIHN0eWxlUmVzb2x2ZXItPnNldEZv
bnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pOwogICAgIH0KIAotICAgIHN0YXRpYyB2b2lk
IGFwcGx5VmFsdWUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIENTU1ZhbHVlKiB2YWx1ZSkKKyAg
ICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlKFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIsIENT
U1ZhbHVlKiB2YWx1ZSkKICAgICB7CiAgICAgICAgIEZvbnREZXNjcmlwdGlvbjo6TGlnYXR1cmVz
U3RhdGUgY29tbW9uTGlnYXR1cmVzU3RhdGUgPSBGb250RGVzY3JpcHRpb246Ok5vcm1hbExpZ2F0
dXJlc1N0YXRlOwogICAgICAgICBGb250RGVzY3JpcHRpb246OkxpZ2F0dXJlc1N0YXRlIGRpc2Ny
ZXRpb25hcnlMaWdhdHVyZXNTdGF0ZSA9IEZvbnREZXNjcmlwdGlvbjo6Tm9ybWFsTGlnYXR1cmVz
U3RhdGU7CkBAIC04NDksMTEgKzg0OSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIH0KICNlbmRpZgog
Ci0gICAgICAgIEZvbnREZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb24gPSBzZWxlY3Rvci0+Zm9u
dERlc2NyaXB0aW9uKCk7CisgICAgICAgIEZvbnREZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb24g
PSBzdHlsZVJlc29sdmVyLT5mb250RGVzY3JpcHRpb24oKTsKICAgICAgICAgZm9udERlc2NyaXB0
aW9uLnNldENvbW1vbkxpZ2F0dXJlc1N0YXRlKGNvbW1vbkxpZ2F0dXJlc1N0YXRlKTsKICAgICAg
ICAgZm9udERlc2NyaXB0aW9uLnNldERpc2NyZXRpb25hcnlMaWdhdHVyZXNTdGF0ZShkaXNjcmV0
aW9uYXJ5TGlnYXR1cmVzU3RhdGUpOwogICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0SGlzdG9y
aWNhbExpZ2F0dXJlc1N0YXRlKGhpc3RvcmljYWxMaWdhdHVyZXNTdGF0ZSk7Ci0gICAgICAgIHNl
bGVjdG9yLT5zZXRGb250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKTsKKyAgICAgICAgc3R5
bGVSZXNvbHZlci0+c2V0Rm9udERlc2NyaXB0aW9uKGZvbnREZXNjcmlwdGlvbik7CiAgICAgfQog
CiAgICAgc3RhdGljIFByb3BlcnR5SGFuZGxlciBjcmVhdGVIYW5kbGVyKCkKQEAgLTg2OSwxMyAr
ODY5LDEzIEBAIHRlbXBsYXRlIDxCb3JkZXJJbWFnZVR5cGUgYm9yZGVySW1hZ2VUeXBlLAogICAg
ICAgICAgIHZvaWQgKFJlbmRlclN0eWxlOjoqc2V0dGVyRnVuY3Rpb24pKGNvbnN0IE5pbmVQaWVj
ZUltYWdlJik+CiBjbGFzcyBBcHBseVByb3BlcnR5Qm9yZGVySW1hZ2UgewogcHVibGljOgotICAg
IHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIENTU1ZhbHVl
KiB2YWx1ZSkKKyAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlKFN0eWxlUmVzb2x2ZXIqIHN0eWxl
UmVzb2x2ZXIsIENTU1ZhbHVlKiB2YWx1ZSkKICAgICB7CiAgICAgICAgIE5pbmVQaWVjZUltYWdl
IGltYWdlOwogICAgICAgICBpZiAoYm9yZGVySW1hZ2VUeXBlID09IE1hc2spCiAgICAgICAgICAg
ICBpbWFnZS5zZXRNYXNrRGVmYXVsdHMoKTsKLSAgICAgICAgc2VsZWN0b3ItPm1hcE5pbmVQaWVj
ZUltYWdlKHByb3BlcnR5LCB2YWx1ZSwgaW1hZ2UpOwotICAgICAgICAoc2VsZWN0b3ItPnN0eWxl
KCktPipzZXR0ZXJGdW5jdGlvbikoaW1hZ2UpOworICAgICAgICBzdHlsZVJlc29sdmVyLT5tYXBO
aW5lUGllY2VJbWFnZShwcm9wZXJ0eSwgdmFsdWUsIGltYWdlKTsKKyAgICAgICAgKHN0eWxlUmVz
b2x2ZXItPnN0eWxlKCktPipzZXR0ZXJGdW5jdGlvbikoaW1hZ2UpOwogICAgIH0KIAogICAgIHN0
YXRpYyBQcm9wZXJ0eUhhbmRsZXIgY3JlYXRlSGFuZGxlcigpCkBAIC04OTIsMjkgKzg5MiwyOSBA
QCBwcml2YXRlOgogICAgIHN0YXRpYyBpbmxpbmUgY29uc3QgTmluZVBpZWNlSW1hZ2UmIGdldFZh
bHVlKFJlbmRlclN0eWxlKiBzdHlsZSkgeyByZXR1cm4gdHlwZSA9PSBJbWFnZSA/IHN0eWxlLT5i
b3JkZXJJbWFnZSgpIDogc3R5bGUtPm1hc2tCb3hJbWFnZSgpOyB9CiAgICAgc3RhdGljIGlubGlu
ZSB2b2lkIHNldFZhbHVlKFJlbmRlclN0eWxlKiBzdHlsZSwgY29uc3QgTmluZVBpZWNlSW1hZ2Um
IHZhbHVlKSB7IHJldHVybiB0eXBlID09IEltYWdlID8gc3R5bGUtPnNldEJvcmRlckltYWdlKHZh
bHVlKSA6IHN0eWxlLT5zZXRNYXNrQm94SW1hZ2UodmFsdWUpOyB9CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIHZvaWQgYXBwbHlJbmhlcml0VmFsdWUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IpCisgICAg
c3RhdGljIHZvaWQgYXBwbHlJbmhlcml0VmFsdWUoU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZl
cikKICAgICB7Ci0gICAgICAgIE5pbmVQaWVjZUltYWdlIGltYWdlKGdldFZhbHVlKHNlbGVjdG9y
LT5zdHlsZSgpKSk7CisgICAgICAgIE5pbmVQaWVjZUltYWdlIGltYWdlKGdldFZhbHVlKHN0eWxl
UmVzb2x2ZXItPnN0eWxlKCkpKTsKICAgICAgICAgc3dpdGNoIChtb2RpZmllcikgewogICAgICAg
ICBjYXNlIE91dHNldDoKLSAgICAgICAgICAgIGltYWdlLmNvcHlPdXRzZXRGcm9tKGdldFZhbHVl
KHNlbGVjdG9yLT5wYXJlbnRTdHlsZSgpKSk7CisgICAgICAgICAgICBpbWFnZS5jb3B5T3V0c2V0
RnJvbShnZXRWYWx1ZShzdHlsZVJlc29sdmVyLT5wYXJlbnRTdHlsZSgpKSk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBSZXBlYXQ6Ci0gICAgICAgICAgICBpbWFnZS5jb3B5UmVw
ZWF0RnJvbShnZXRWYWx1ZShzZWxlY3Rvci0+cGFyZW50U3R5bGUoKSkpOworICAgICAgICAgICAg
aW1hZ2UuY29weVJlcGVhdEZyb20oZ2V0VmFsdWUoc3R5bGVSZXNvbHZlci0+cGFyZW50U3R5bGUo
KSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgU2xpY2U6Ci0gICAgICAgICAg
ICBpbWFnZS5jb3B5SW1hZ2VTbGljZXNGcm9tKGdldFZhbHVlKHNlbGVjdG9yLT5wYXJlbnRTdHls
ZSgpKSk7CisgICAgICAgICAgICBpbWFnZS5jb3B5SW1hZ2VTbGljZXNGcm9tKGdldFZhbHVlKHN0
eWxlUmVzb2x2ZXItPnBhcmVudFN0eWxlKCkpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIFdpZHRoOgotICAgICAgICAgICAgaW1hZ2UuY29weUJvcmRlclNsaWNlc0Zyb20oZ2V0
VmFsdWUoc2VsZWN0b3ItPnBhcmVudFN0eWxlKCkpKTsKKyAgICAgICAgICAgIGltYWdlLmNvcHlC
b3JkZXJTbGljZXNGcm9tKGdldFZhbHVlKHN0eWxlUmVzb2x2ZXItPnBhcmVudFN0eWxlKCkpKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIHNldFZhbHVlKHNlbGVjdG9y
LT5zdHlsZSgpLCBpbWFnZSk7CisgICAgICAgIHNldFZhbHVlKHN0eWxlUmVzb2x2ZXItPnN0eWxl
KCksIGltYWdlKTsKICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCBhcHBseUluaXRpYWxWYWx1ZShT
dHlsZVJlc29sdmVyKiBzZWxlY3RvcikKKyAgICBzdGF0aWMgdm9pZCBhcHBseUluaXRpYWxWYWx1
ZShTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyKQogICAgIHsKLSAgICAgICAgTmluZVBpZWNl
SW1hZ2UgaW1hZ2UoZ2V0VmFsdWUoc2VsZWN0b3ItPnN0eWxlKCkpKTsKKyAgICAgICAgTmluZVBp
ZWNlSW1hZ2UgaW1hZ2UoZ2V0VmFsdWUoc3R5bGVSZXNvbHZlci0+c3R5bGUoKSkpOwogICAgICAg
ICBzd2l0Y2ggKG1vZGlmaWVyKSB7CiAgICAgICAgIGNhc2UgT3V0c2V0OgogICAgICAgICAgICAg
aW1hZ2Uuc2V0T3V0c2V0KExlbmd0aEJveCgwKSk7CkBAIC05MzMsMjcgKzkzMywyNyBAQCBwdWJs
aWM6CiAgICAgICAgICAgICBpbWFnZS5zZXRCb3JkZXJTbGljZXModHlwZSA9PSBJbWFnZSA/IExl
bmd0aEJveChMZW5ndGgoMSwgUmVsYXRpdmUpLCBMZW5ndGgoMSwgUmVsYXRpdmUpLCBMZW5ndGgo
MSwgUmVsYXRpdmUpLCBMZW5ndGgoMSwgUmVsYXRpdmUpKSA6IExlbmd0aEJveCgpKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIHNldFZhbHVlKHNlbGVjdG9yLT5zdHls
ZSgpLCBpbWFnZSk7CisgICAgICAgIHNldFZhbHVlKHN0eWxlUmVzb2x2ZXItPnN0eWxlKCksIGlt
YWdlKTsKICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlKFN0eWxlUmVzb2x2ZXIq
IHNlbGVjdG9yLCBDU1NWYWx1ZSogdmFsdWUpCisgICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZShT
dHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyLCBDU1NWYWx1ZSogdmFsdWUpCiAgICAgewotICAg
ICAgICBOaW5lUGllY2VJbWFnZSBpbWFnZShnZXRWYWx1ZShzZWxlY3Rvci0+c3R5bGUoKSkpOwor
ICAgICAgICBOaW5lUGllY2VJbWFnZSBpbWFnZShnZXRWYWx1ZShzdHlsZVJlc29sdmVyLT5zdHls
ZSgpKSk7CiAgICAgICAgIHN3aXRjaCAobW9kaWZpZXIpIHsKICAgICAgICAgY2FzZSBPdXRzZXQ6
Ci0gICAgICAgICAgICBpbWFnZS5zZXRPdXRzZXQoc2VsZWN0b3ItPm1hcE5pbmVQaWVjZUltYWdl
UXVhZCh2YWx1ZSkpOworICAgICAgICAgICAgaW1hZ2Uuc2V0T3V0c2V0KHN0eWxlUmVzb2x2ZXIt
Pm1hcE5pbmVQaWVjZUltYWdlUXVhZCh2YWx1ZSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgUmVwZWF0OgotICAgICAgICAgICAgc2VsZWN0b3ItPm1hcE5pbmVQaWVjZUltYWdl
UmVwZWF0KHZhbHVlLCBpbWFnZSk7CisgICAgICAgICAgICBzdHlsZVJlc29sdmVyLT5tYXBOaW5l
UGllY2VJbWFnZVJlcGVhdCh2YWx1ZSwgaW1hZ2UpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgU2xpY2U6Ci0gICAgICAgICAgICBzZWxlY3Rvci0+bWFwTmluZVBpZWNlSW1hZ2VT
bGljZSh2YWx1ZSwgaW1hZ2UpOworICAgICAgICAgICAgc3R5bGVSZXNvbHZlci0+bWFwTmluZVBp
ZWNlSW1hZ2VTbGljZSh2YWx1ZSwgaW1hZ2UpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGNhc2UgV2lkdGg6Ci0gICAgICAgICAgICBpbWFnZS5zZXRCb3JkZXJTbGljZXMoc2VsZWN0b3It
Pm1hcE5pbmVQaWVjZUltYWdlUXVhZCh2YWx1ZSkpOworICAgICAgICAgICAgaW1hZ2Uuc2V0Qm9y
ZGVyU2xpY2VzKHN0eWxlUmVzb2x2ZXItPm1hcE5pbmVQaWVjZUltYWdlUXVhZCh2YWx1ZSkpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgc2V0VmFsdWUoc2VsZWN0b3It
PnN0eWxlKCksIGltYWdlKTsKKyAgICAgICAgc2V0VmFsdWUoc3R5bGVSZXNvbHZlci0+c3R5bGUo
KSwgaW1hZ2UpOwogICAgIH0KIAogICAgIHN0YXRpYyBQcm9wZXJ0eUhhbmRsZXIgY3JlYXRlSGFu
ZGxlcigpIHsgcmV0dXJuIFByb3BlcnR5SGFuZGxlcigmYXBwbHlJbmhlcml0VmFsdWUsICZhcHBs
eUluaXRpYWxWYWx1ZSwgJmFwcGx5VmFsdWUpOyB9CkBAIC05NjIsNyArOTYyLDcgQEAgcHVibGlj
OgogdGVtcGxhdGUgPENTU1Byb3BlcnR5SUQgaWQsIFN0eWxlSW1hZ2UqIChSZW5kZXJTdHlsZTo6
KmdldHRlckZ1bmN0aW9uKSgpIGNvbnN0LCB2b2lkIChSZW5kZXJTdHlsZTo6KnNldHRlckZ1bmN0
aW9uKShQYXNzUmVmUHRyPFN0eWxlSW1hZ2U+KSwgU3R5bGVJbWFnZSogKCppbml0aWFsRnVuY3Rp
b24pKCk+CiBjbGFzcyBBcHBseVByb3BlcnR5Qm9yZGVySW1hZ2VTb3VyY2UgewogcHVibGljOgot
ICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIENTU1Zh
bHVlKiB2YWx1ZSkgeyAoc2VsZWN0b3ItPnN0eWxlKCktPipzZXR0ZXJGdW5jdGlvbikoc2VsZWN0
b3ItPnN0eWxlSW1hZ2UoaWQsIHZhbHVlKSk7IH0KKyAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVl
KFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlKiB2YWx1ZSkgeyAoc3R5bGVS
ZXNvbHZlci0+c3R5bGUoKS0+KnNldHRlckZ1bmN0aW9uKShzdHlsZVJlc29sdmVyLT5zdHlsZUlt
YWdlKGlkLCB2YWx1ZSkpOyB9CiAgICAgc3RhdGljIFByb3BlcnR5SGFuZGxlciBjcmVhdGVIYW5k
bGVyKCkKICAgICB7CiAgICAgICAgIFByb3BlcnR5SGFuZGxlciBoYW5kbGVyID0gQXBwbHlQcm9w
ZXJ0eURlZmF1bHRCYXNlPFN0eWxlSW1hZ2UqLCBnZXR0ZXJGdW5jdGlvbiwgUGFzc1JlZlB0cjxT
dHlsZUltYWdlPiwgc2V0dGVyRnVuY3Rpb24sIFN0eWxlSW1hZ2UqLCBpbml0aWFsRnVuY3Rpb24+
OjpjcmVhdGVIYW5kbGVyKCk7CkBAIC05NzUsMTAgKzk3NSwxMCBAQCB0ZW1wbGF0ZSA8Q291bnRl
ckJlaGF2aW9yIGNvdW50ZXJCZWhhdmlvcj4KIGNsYXNzIEFwcGx5UHJvcGVydHlDb3VudGVyIHsK
IHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBlbXB0eUZ1bmN0aW9uKFN0eWxlUmVzb2x2ZXIqKSB7
IH0KLSAgICBzdGF0aWMgdm9pZCBhcHBseUluaGVyaXRWYWx1ZShTdHlsZVJlc29sdmVyKiBzZWxl
Y3RvcikKKyAgICBzdGF0aWMgdm9pZCBhcHBseUluaGVyaXRWYWx1ZShTdHlsZVJlc29sdmVyKiBz
dHlsZVJlc29sdmVyKQogICAgIHsKLSAgICAgICAgQ291bnRlckRpcmVjdGl2ZU1hcCYgbWFwID0g
c2VsZWN0b3ItPnN0eWxlKCktPmFjY2Vzc0NvdW50ZXJEaXJlY3RpdmVzKCk7Ci0gICAgICAgIENv
dW50ZXJEaXJlY3RpdmVNYXAmIHBhcmVudE1hcCA9IHNlbGVjdG9yLT5wYXJlbnRTdHlsZSgpLT5h
Y2Nlc3NDb3VudGVyRGlyZWN0aXZlcygpOworICAgICAgICBDb3VudGVyRGlyZWN0aXZlTWFwJiBt
YXAgPSBzdHlsZVJlc29sdmVyLT5zdHlsZSgpLT5hY2Nlc3NDb3VudGVyRGlyZWN0aXZlcygpOwor
ICAgICAgICBDb3VudGVyRGlyZWN0aXZlTWFwJiBwYXJlbnRNYXAgPSBzdHlsZVJlc29sdmVyLT5w
YXJlbnRTdHlsZSgpLT5hY2Nlc3NDb3VudGVyRGlyZWN0aXZlcygpOwogCiAgICAgICAgIHR5cGVk
ZWYgQ291bnRlckRpcmVjdGl2ZU1hcDo6aXRlcmF0b3IgSXRlcmF0b3I7CiAgICAgICAgIEl0ZXJh
dG9yIGVuZCA9IHBhcmVudE1hcC5lbmQoKTsKQEAgLTEwMDIsMTQgKzEwMDIsMTQgQEAgcHVibGlj
OgogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQotICAgIHN0YXRpYyB2b2lkIGFwcGx5
VmFsdWUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIENTU1ZhbHVlKiB2YWx1ZSkKKyAgICBzdGF0
aWMgdm9pZCBhcHBseVZhbHVlKFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVl
KiB2YWx1ZSkKICAgICB7CiAgICAgICAgIGlmICghdmFsdWUtPmlzVmFsdWVMaXN0KCkpCiAgICAg
ICAgICAgICByZXR1cm47CiAKICAgICAgICAgQ1NTVmFsdWVMaXN0KiBsaXN0ID0gc3RhdGljX2Nh
c3Q8Q1NTVmFsdWVMaXN0Kj4odmFsdWUpOwogCi0gICAgICAgIENvdW50ZXJEaXJlY3RpdmVNYXAm
IG1hcCA9IHNlbGVjdG9yLT5zdHlsZSgpLT5hY2Nlc3NDb3VudGVyRGlyZWN0aXZlcygpOworICAg
ICAgICBDb3VudGVyRGlyZWN0aXZlTWFwJiBtYXAgPSBzdHlsZVJlc29sdmVyLT5zdHlsZSgpLT5h
Y2Nlc3NDb3VudGVyRGlyZWN0aXZlcygpOwogICAgICAgICB0eXBlZGVmIENvdW50ZXJEaXJlY3Rp
dmVNYXA6Oml0ZXJhdG9yIEl0ZXJhdG9yOwogCiAgICAgICAgIEl0ZXJhdG9yIGVuZCA9IG1hcC5l
bmQoKTsKQEAgLTEwNTMsNDIgKzEwNTMsNDIgQEAgcHVibGljOgogCiBjbGFzcyBBcHBseVByb3Bl
cnR5Q3Vyc29yIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgdm9pZCBhcHBseUluaGVyaXRWYWx1ZShT
dHlsZVJlc29sdmVyKiBzZWxlY3RvcikKKyAgICBzdGF0aWMgdm9pZCBhcHBseUluaGVyaXRWYWx1
ZShTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyKQogICAgIHsKLSAgICAgICAgc2VsZWN0b3It
PnN0eWxlKCktPnNldEN1cnNvcihzZWxlY3Rvci0+cGFyZW50U3R5bGUoKS0+Y3Vyc29yKCkpOwot
ICAgICAgICBzZWxlY3Rvci0+c3R5bGUoKS0+c2V0Q3Vyc29yTGlzdChzZWxlY3Rvci0+cGFyZW50
U3R5bGUoKS0+Y3Vyc29ycygpKTsKKyAgICAgICAgc3R5bGVSZXNvbHZlci0+c3R5bGUoKS0+c2V0
Q3Vyc29yKHN0eWxlUmVzb2x2ZXItPnBhcmVudFN0eWxlKCktPmN1cnNvcigpKTsKKyAgICAgICAg
c3R5bGVSZXNvbHZlci0+c3R5bGUoKS0+c2V0Q3Vyc29yTGlzdChzdHlsZVJlc29sdmVyLT5wYXJl
bnRTdHlsZSgpLT5jdXJzb3JzKCkpOwogICAgIH0KIAotICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5p
dGlhbFZhbHVlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yKQorICAgIHN0YXRpYyB2b2lkIGFwcGx5
SW5pdGlhbFZhbHVlKFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIpCiAgICAgewotICAgICAg
ICBzZWxlY3Rvci0+c3R5bGUoKS0+Y2xlYXJDdXJzb3JMaXN0KCk7Ci0gICAgICAgIHNlbGVjdG9y
LT5zdHlsZSgpLT5zZXRDdXJzb3IoUmVuZGVyU3R5bGU6OmluaXRpYWxDdXJzb3IoKSk7CisgICAg
ICAgIHN0eWxlUmVzb2x2ZXItPnN0eWxlKCktPmNsZWFyQ3Vyc29yTGlzdCgpOworICAgICAgICBz
dHlsZVJlc29sdmVyLT5zdHlsZSgpLT5zZXRDdXJzb3IoUmVuZGVyU3R5bGU6OmluaXRpYWxDdXJz
b3IoKSk7CiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZShTdHlsZVJlc29sdmVy
KiBzZWxlY3RvciwgQ1NTVmFsdWUqIHZhbHVlKQorICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUo
U3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUqIHZhbHVlKQogICAgIHsKLSAg
ICAgICAgc2VsZWN0b3ItPnN0eWxlKCktPmNsZWFyQ3Vyc29yTGlzdCgpOworICAgICAgICBzdHls
ZVJlc29sdmVyLT5zdHlsZSgpLT5jbGVhckN1cnNvckxpc3QoKTsKICAgICAgICAgaWYgKHZhbHVl
LT5pc1ZhbHVlTGlzdCgpKSB7CiAgICAgICAgICAgICBDU1NWYWx1ZUxpc3QqIGxpc3QgPSBzdGF0
aWNfY2FzdDxDU1NWYWx1ZUxpc3QqPih2YWx1ZSk7CiAgICAgICAgICAgICBpbnQgbGVuID0gbGlz
dC0+bGVuZ3RoKCk7Ci0gICAgICAgICAgICBzZWxlY3Rvci0+c3R5bGUoKS0+c2V0Q3Vyc29yKENV
UlNPUl9BVVRPKTsKKyAgICAgICAgICAgIHN0eWxlUmVzb2x2ZXItPnN0eWxlKCktPnNldEN1cnNv
cihDVVJTT1JfQVVUTyk7CiAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbjsgaSsr
KSB7CiAgICAgICAgICAgICAgICAgQ1NTVmFsdWUqIGl0ZW0gPSBsaXN0LT5pdGVtV2l0aG91dEJv
dW5kc0NoZWNrKGkpOwogICAgICAgICAgICAgICAgIGlmIChpdGVtLT5pc0N1cnNvckltYWdlVmFs
dWUoKSkgewogICAgICAgICAgICAgICAgICAgICBDU1NDdXJzb3JJbWFnZVZhbHVlKiBpbWFnZSA9
IHN0YXRpY19jYXN0PENTU0N1cnNvckltYWdlVmFsdWUqPihpdGVtKTsKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKGltYWdlLT51cGRhdGVJZlNWR0N1cnNvcklzVXNlZChzZWxlY3Rvci0+ZWxlbWVu
dCgpKSkgLy8gRWxlbWVudHMgd2l0aCBTVkcgY3Vyc29ycyBhcmUgbm90IGFsbG93ZWQgdG8gc2hh
cmUgc3R5bGUuCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Rvci0+c3R5bGUoKS0+c2V0
VW5pcXVlKCk7Ci0gICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yLT5zdHlsZSgpLT5hZGRDdXJz
b3Ioc2VsZWN0b3ItPmNhY2hlZE9yUGVuZGluZ0Zyb21WYWx1ZShDU1NQcm9wZXJ0eUN1cnNvciwg
aW1hZ2UpLCBpbWFnZS0+aG90U3BvdCgpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGltYWdl
LT51cGRhdGVJZlNWR0N1cnNvcklzVXNlZChzdHlsZVJlc29sdmVyLT5lbGVtZW50KCkpKSAvLyBF
bGVtZW50cyB3aXRoIFNWRyBjdXJzb3JzIGFyZSBub3QgYWxsb3dlZCB0byBzaGFyZSBzdHlsZS4K
KyAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlUmVzb2x2ZXItPnN0eWxlKCktPnNldFVuaXF1
ZSgpOworICAgICAgICAgICAgICAgICAgICBzdHlsZVJlc29sdmVyLT5zdHlsZSgpLT5hZGRDdXJz
b3Ioc3R5bGVSZXNvbHZlci0+Y2FjaGVkT3JQZW5kaW5nRnJvbVZhbHVlKENTU1Byb3BlcnR5Q3Vy
c29yLCBpbWFnZSksIGltYWdlLT5ob3RTcG90KCkpOwogICAgICAgICAgICAgICAgIH0gZWxzZSBp
ZiAoaXRlbS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7CiAgICAgICAgICAgICAgICAgICAgIENTU1By
aW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlKj4oaXRlbSk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+aXNJ
ZGVudCgpKQotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3ItPnN0eWxlKCktPnNldEN1
cnNvcigqcHJpbWl0aXZlVmFsdWUpOworICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGVSZXNv
bHZlci0+c3R5bGUoKS0+c2V0Q3Vyc29yKCpwcmltaXRpdmVWYWx1ZSk7CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgaWYgKHZhbHVlLT5pc1ByaW1pdGl2
ZVZhbHVlKCkpIHsKICAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1
ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOwotICAgICAgICAgICAg
aWYgKHByaW1pdGl2ZVZhbHVlLT5pc0lkZW50KCkgJiYgc2VsZWN0b3ItPnN0eWxlKCktPmN1cnNv
cigpICE9IEVDdXJzb3IoKnByaW1pdGl2ZVZhbHVlKSkKLSAgICAgICAgICAgICAgICBzZWxlY3Rv
ci0+c3R5bGUoKS0+c2V0Q3Vyc29yKCpwcmltaXRpdmVWYWx1ZSk7CisgICAgICAgICAgICBpZiAo
cHJpbWl0aXZlVmFsdWUtPmlzSWRlbnQoKSAmJiBzdHlsZVJlc29sdmVyLT5zdHlsZSgpLT5jdXJz
b3IoKSAhPSBFQ3Vyc29yKCpwcmltaXRpdmVWYWx1ZSkpCisgICAgICAgICAgICAgICAgc3R5bGVS
ZXNvbHZlci0+c3R5bGUoKS0+c2V0Q3Vyc29yKCpwcmltaXRpdmVWYWx1ZSk7CiAgICAgICAgIH0K
ICAgICB9CiAKQEAgLTEwOTcsNyArMTA5Nyw3IEBAIHB1YmxpYzoKIAogY2xhc3MgQXBwbHlQcm9w
ZXJ0eVRleHRBbGlnbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZShTdHls
ZVJlc29sdmVyKiBzZWxlY3RvciwgQ1NTVmFsdWUqIHZhbHVlKQorICAgIHN0YXRpYyB2b2lkIGFw
cGx5VmFsdWUoU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUqIHZhbHVlKQog
ICAgIHsKICAgICAgICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAgICAg
ICAgcmV0dXJuOwpAQCAtMTEwNSwxMyArMTEwNSwxMyBAQCBwdWJsaWM6CiAgICAgICAgIENTU1By
aW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlKj4odmFsdWUpOwogCiAgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSAh
PSBDU1NWYWx1ZVdlYmtpdE1hdGNoUGFyZW50KQotICAgICAgICAgICAgc2VsZWN0b3ItPnN0eWxl
KCktPnNldFRleHRBbGlnbigqcHJpbWl0aXZlVmFsdWUpOwotICAgICAgICBlbHNlIGlmIChzZWxl
Y3Rvci0+cGFyZW50U3R5bGUoKS0+dGV4dEFsaWduKCkgPT0gVEFTVEFSVCkKLSAgICAgICAgICAg
IHNlbGVjdG9yLT5zdHlsZSgpLT5zZXRUZXh0QWxpZ24oc2VsZWN0b3ItPnBhcmVudFN0eWxlKCkt
PmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IExFRlQgOiBSSUdIVCk7Ci0gICAgICAgIGVsc2Ug
aWYgKHNlbGVjdG9yLT5wYXJlbnRTdHlsZSgpLT50ZXh0QWxpZ24oKSA9PSBUQUVORCkKLSAgICAg
ICAgICAgIHNlbGVjdG9yLT5zdHlsZSgpLT5zZXRUZXh0QWxpZ24oc2VsZWN0b3ItPnBhcmVudFN0
eWxlKCktPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IFJJR0hUIDogTEVGVCk7CisgICAgICAg
ICAgICBzdHlsZVJlc29sdmVyLT5zdHlsZSgpLT5zZXRUZXh0QWxpZ24oKnByaW1pdGl2ZVZhbHVl
KTsKKyAgICAgICAgZWxzZSBpZiAoc3R5bGVSZXNvbHZlci0+cGFyZW50U3R5bGUoKS0+dGV4dEFs
aWduKCkgPT0gVEFTVEFSVCkKKyAgICAgICAgICAgIHN0eWxlUmVzb2x2ZXItPnN0eWxlKCktPnNl
dFRleHRBbGlnbihzdHlsZVJlc29sdmVyLT5wYXJlbnRTdHlsZSgpLT5pc0xlZnRUb1JpZ2h0RGly
ZWN0aW9uKCkgPyBMRUZUIDogUklHSFQpOworICAgICAgICBlbHNlIGlmIChzdHlsZVJlc29sdmVy
LT5wYXJlbnRTdHlsZSgpLT50ZXh0QWxpZ24oKSA9PSBUQUVORCkKKyAgICAgICAgICAgIHN0eWxl
UmVzb2x2ZXItPnN0eWxlKCktPnNldFRleHRBbGlnbihzdHlsZVJlc29sdmVyLT5wYXJlbnRTdHls
ZSgpLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBSSUdIVCA6IExFRlQpOwogICAgICAgICBl
bHNlCi0gICAgICAgICAgICBzZWxlY3Rvci0+c3R5bGUoKS0+c2V0VGV4dEFsaWduKHNlbGVjdG9y
LT5wYXJlbnRTdHlsZSgpLT50ZXh0QWxpZ24oKSk7CisgICAgICAgICAgICBzdHlsZVJlc29sdmVy
LT5zdHlsZSgpLT5zZXRUZXh0QWxpZ24oc3R5bGVSZXNvbHZlci0+cGFyZW50U3R5bGUoKS0+dGV4
dEFsaWduKCkpOwogICAgIH0KICAgICBzdGF0aWMgUHJvcGVydHlIYW5kbGVyIGNyZWF0ZUhhbmRs
ZXIoKQogICAgIHsKQEAgLTExMjIsNyArMTEyMiw3IEBAIHB1YmxpYzoKIAogY2xhc3MgQXBwbHlQ
cm9wZXJ0eVRleHREZWNvcmF0aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgdm9pZCBhcHBseVZh
bHVlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBDU1NWYWx1ZSogdmFsdWUpCisgICAgc3RhdGlj
IHZvaWQgYXBwbHlWYWx1ZShTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyLCBDU1NWYWx1ZSog
dmFsdWUpCiAgICAgewogICAgICAgICBFVGV4dERlY29yYXRpb24gdCA9IFJlbmRlclN0eWxlOjpp
bml0aWFsVGV4dERlY29yYXRpb24oKTsKICAgICAgICAgZm9yIChDU1NWYWx1ZUxpc3RJdGVyYXRv
ciBpKHZhbHVlKTsgaS5oYXNNb3JlKCk7IGkuYWR2YW5jZSgpKSB7CkBAIC0xMTMwLDcgKzExMzAs
NyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBBU1NFUlQoaXRlbS0+aXNQcmltaXRpdmVWYWx1ZSgp
KTsKICAgICAgICAgICAgIHQgfD0gKnN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oaXRl
bSk7CiAgICAgICAgIH0KLSAgICAgICAgc2VsZWN0b3ItPnN0eWxlKCktPnNldFRleHREZWNvcmF0
aW9uKHQpOworICAgICAgICBzdHlsZVJlc29sdmVyLT5zdHlsZSgpLT5zZXRUZXh0RGVjb3JhdGlv
bih0KTsKICAgICB9CiAgICAgc3RhdGljIFByb3BlcnR5SGFuZGxlciBjcmVhdGVIYW5kbGVyKCkK
ICAgICB7CkBAIC0xMTQxLDcgKzExNDEsNyBAQCBwdWJsaWM6CiAKIGNsYXNzIEFwcGx5UHJvcGVy
dHlVbmljb2RlQmlkaSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZShTdHls
ZVJlc29sdmVyKiBzZWxlY3RvciwgQ1NTVmFsdWUqIHZhbHVlKQorICAgIHN0YXRpYyB2b2lkIGFw
cGx5VmFsdWUoU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUqIHZhbHVlKQog
ICAgIHsKICAgICAgICAgaWYgKHZhbHVlLT5pc1ZhbHVlTGlzdCgpKSB7CiAgICAgICAgICAgICBF
VW5pY29kZUJpZGkgcmVuZGVyZXJVbmljb2RlQmlkaSA9IFJlbmRlclN0eWxlOjppbml0aWFsVW5p
Y29kZUJpZGkoKTsKQEAgLTExNTUsMTIgKzExNTUsMTIgQEAgcHVibGljOgogICAgICAgICAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgcmVuZGVyZXJVbmljb2RlQmlkaSA9IGN1cnJl
bnRWYWx1ZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHNlbGVjdG9yLT5zdHlsZSgpLT5z
ZXRVbmljb2RlQmlkaShyZW5kZXJlclVuaWNvZGVCaWRpKTsKKyAgICAgICAgICAgIHN0eWxlUmVz
b2x2ZXItPnN0eWxlKCktPnNldFVuaWNvZGVCaWRpKHJlbmRlcmVyVW5pY29kZUJpZGkpOwogICAg
ICAgICB9CiAgICAgICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0g
c3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7Ci0gICAgICAgIHNlbGVjdG9y
LT5zdHlsZSgpLT5zZXRVbmljb2RlQmlkaSgqcHJpbWl0aXZlVmFsdWUpOworICAgICAgICBzdHls
ZVJlc29sdmVyLT5zdHlsZSgpLT5zZXRVbmljb2RlQmlkaSgqcHJpbWl0aXZlVmFsdWUpOwogICAg
IH0KICAgICBzdGF0aWMgUHJvcGVydHlIYW5kbGVyIGNyZWF0ZUhhbmRsZXIoKQogICAgIHsKQEAg
LTExNzEsNyArMTE3MSw3IEBAIHB1YmxpYzoKIAogY2xhc3MgQXBwbHlQcm9wZXJ0eUxpbmVIZWln
aHQgewogcHVibGljOgotICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUoU3R5bGVSZXNvbHZlciog
c2VsZWN0b3IsIENTU1ZhbHVlKiB2YWx1ZSkKKyAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlKFN0
eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlKiB2YWx1ZSkKICAgICB7CiAgICAg
ICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgICAgIHJldHVybjsK
QEAgLTExODIsMTUgKzExODIsMTUgQEAgcHVibGljOgogICAgICAgICBpZiAocHJpbWl0aXZlVmFs
dWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVOb3JtYWwpCiAgICAgICAgICAgICBsaW5lSGVpZ2h0
ID0gTGVuZ3RoKC0xMDAuMCwgUGVyY2VudCk7CiAgICAgICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZh
bHVlLT5pc0xlbmd0aCgpKSB7Ci0gICAgICAgICAgICBkb3VibGUgbXVsdGlwbGllciA9IHNlbGVj
dG9yLT5zdHlsZSgpLT5lZmZlY3RpdmVab29tKCk7Ci0gICAgICAgICAgICBpZiAoc2VsZWN0b3It
PnN0eWxlKCktPnRleHRTaXplQWRqdXN0KCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoRnJhbWUq
IGZyYW1lID0gc2VsZWN0b3ItPmRvY3VtZW50KCktPmZyYW1lKCkpCisgICAgICAgICAgICBkb3Vi
bGUgbXVsdGlwbGllciA9IHN0eWxlUmVzb2x2ZXItPnN0eWxlKCktPmVmZmVjdGl2ZVpvb20oKTsK
KyAgICAgICAgICAgIGlmIChzdHlsZVJlc29sdmVyLT5zdHlsZSgpLT50ZXh0U2l6ZUFkanVzdCgp
KSB7CisgICAgICAgICAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IHN0eWxlUmVzb2x2ZXItPmRv
Y3VtZW50KCktPmZyYW1lKCkpCiAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxpZXIgKj0gZnJh
bWUtPnRleHRab29tRmFjdG9yKCk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBsaW5lSGVp
Z2h0ID0gcHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGg8TGVuZ3RoPihzZWxlY3Rvci0+c3R5
bGUoKSwgc2VsZWN0b3ItPnJvb3RFbGVtZW50U3R5bGUoKSwgbXVsdGlwbGllcik7CisgICAgICAg
ICAgICBsaW5lSGVpZ2h0ID0gcHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGg8TGVuZ3RoPihz
dHlsZVJlc29sdmVyLT5zdHlsZSgpLCBzdHlsZVJlc29sdmVyLT5yb290RWxlbWVudFN0eWxlKCks
IG11bHRpcGxpZXIpOwogICAgICAgICB9IGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5pc1BlcmNl
bnRhZ2UoKSkgewogICAgICAgICAgICAgLy8gRklYTUU6IHBlcmNlbnRhZ2Ugc2hvdWxkIG5vdCBi
ZSByZXN0cmljdGVkIHRvIGFuIGludGVnZXIgaGVyZS4KLSAgICAgICAgICAgIGxpbmVIZWlnaHQg
PSBMZW5ndGgoKHNlbGVjdG9yLT5zdHlsZSgpLT5mb250U2l6ZSgpICogcHJpbWl0aXZlVmFsdWUt
PmdldEludFZhbHVlKCkpIC8gMTAwLCBGaXhlZCk7CisgICAgICAgICAgICBsaW5lSGVpZ2h0ID0g
TGVuZ3RoKChzdHlsZVJlc29sdmVyLT5zdHlsZSgpLT5mb250U2l6ZSgpICogcHJpbWl0aXZlVmFs
dWUtPmdldEludFZhbHVlKCkpIC8gMTAwLCBGaXhlZCk7CiAgICAgICAgIH0gZWxzZSBpZiAocHJp
bWl0aXZlVmFsdWUtPmlzTnVtYmVyKCkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBudW1iZXIg
YW5kIHBlcmNlbnRhZ2UgdmFsdWVzIHNob3VsZCBwcm9kdWNlIHRoZSBzYW1lIHR5cGUgb2YgTGVu
Z3RoIChpZS4gRml4ZWQgb3IgUGVyY2VudCkuCiAgICAgICAgICAgICBsaW5lSGVpZ2h0ID0gTGVu
Z3RoKHByaW1pdGl2ZVZhbHVlLT5nZXREb3VibGVWYWx1ZSgpICogMTAwLjAsIFBlcmNlbnQpOwpA
QCAtMTE5OCw3ICsxMTk4LDcgQEAgcHVibGljOgogICAgICAgICAgICAgbGluZUhlaWdodCA9IHBy
aW1pdGl2ZVZhbHVlLT52aWV3cG9ydFBlcmNlbnRhZ2VMZW5ndGgoKTsKICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBzZWxlY3Rvci0+c3R5bGUoKS0+c2V0TGluZUhl
aWdodChsaW5lSGVpZ2h0KTsKKyAgICAgICAgc3R5bGVSZXNvbHZlci0+c3R5bGUoKS0+c2V0TGlu
ZUhlaWdodChsaW5lSGVpZ2h0KTsKICAgICB9CiAgICAgc3RhdGljIFByb3BlcnR5SGFuZGxlciBj
cmVhdGVIYW5kbGVyKCkKICAgICB7CkBAIC0xMjg3LDkgKzEyODcsOSBAQCBwcml2YXRlOgogcHVi
bGljOgogICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5oZXJpdFZhbHVlKFN0eWxlUmVzb2x2ZXIqKSB7
IH0KICAgICBzdGF0aWMgdm9pZCBhcHBseUluaXRpYWxWYWx1ZShTdHlsZVJlc29sdmVyKikgeyB9
Ci0gICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvciwgQ1NT
VmFsdWUqIHZhbHVlKQorICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUoU3R5bGVSZXNvbHZlciog
c3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUqIHZhbHVlKQogICAgIHsKLSAgICAgICAgc2VsZWN0b3It
PnN0eWxlKCktPnJlc2V0UGFnZVNpemVUeXBlKCk7CisgICAgICAgIHN0eWxlUmVzb2x2ZXItPnN0
eWxlKCktPnJlc2V0UGFnZVNpemVUeXBlKCk7CiAgICAgICAgIExlbmd0aCB3aWR0aDsKICAgICAg
ICAgTGVuZ3RoIGhlaWdodDsKICAgICAgICAgUGFnZVNpemVUeXBlIHBhZ2VTaXplVHlwZSA9IFBB
R0VfU0laRV9BVVRPOwpAQCAtMTMwNSw4ICsxMzA1LDggQEAgcHVibGljOgogICAgICAgICAgICAg
ICAgIC8vIDxsZW5ndGg+ezJ9CiAgICAgICAgICAgICAgICAgaWYgKCFzZWNvbmQtPmlzTGVuZ3Ro
KCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICB3aWR0aCA9
IGZpcnN0LT5jb21wdXRlTGVuZ3RoPExlbmd0aD4oc2VsZWN0b3ItPnN0eWxlKCksIHNlbGVjdG9y
LT5yb290RWxlbWVudFN0eWxlKCkpOwotICAgICAgICAgICAgICAgIGhlaWdodCA9IHNlY29uZC0+
Y29tcHV0ZUxlbmd0aDxMZW5ndGg+KHNlbGVjdG9yLT5zdHlsZSgpLCBzZWxlY3Rvci0+cm9vdEVs
ZW1lbnRTdHlsZSgpKTsKKyAgICAgICAgICAgICAgICB3aWR0aCA9IGZpcnN0LT5jb21wdXRlTGVu
Z3RoPExlbmd0aD4oc3R5bGVSZXNvbHZlci0+c3R5bGUoKSwgc3R5bGVSZXNvbHZlci0+cm9vdEVs
ZW1lbnRTdHlsZSgpKTsKKyAgICAgICAgICAgICAgICBoZWlnaHQgPSBzZWNvbmQtPmNvbXB1dGVM
ZW5ndGg8TGVuZ3RoPihzdHlsZVJlc29sdmVyLT5zdHlsZSgpLCBzdHlsZVJlc29sdmVyLT5yb290
RWxlbWVudFN0eWxlKCkpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAv
LyA8cGFnZS1zaXplPiA8b3JpZW50YXRpb24+CiAgICAgICAgICAgICAgICAgLy8gVGhlIHZhbHVl
IG9yZGVyIGlzIGd1YXJhbnRlZWQuIFNlZSBDU1NQYXJzZXI6OnBhcnNlU2l6ZVBhcmFtZXRlci4K
QEAgLTEzMjQsNyArMTMyNCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGlmIChwcmltaXRpdmVW
YWx1ZS0+aXNMZW5ndGgoKSkgewogICAgICAgICAgICAgICAgIC8vIDxsZW5ndGg+CiAgICAgICAg
ICAgICAgICAgcGFnZVNpemVUeXBlID0gUEFHRV9TSVpFX1JFU09MVkVEOwotICAgICAgICAgICAg
ICAgIHdpZHRoID0gaGVpZ2h0ID0gcHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGg8TGVuZ3Ro
PihzZWxlY3Rvci0+c3R5bGUoKSwgc2VsZWN0b3ItPnJvb3RFbGVtZW50U3R5bGUoKSk7CisgICAg
ICAgICAgICAgICAgd2lkdGggPSBoZWlnaHQgPSBwcmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxlbmd0
aDxMZW5ndGg+KHN0eWxlUmVzb2x2ZXItPnN0eWxlKCksIHN0eWxlUmVzb2x2ZXItPnJvb3RFbGVt
ZW50U3R5bGUoKSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIHN3aXRj
aCAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpIHsKICAgICAgICAgICAgICAgICBjYXNlIDA6
CkBAIC0xMzUwLDI5ICsxMzUwLDI5IEBAIHB1YmxpYzoKICAgICAgICAgZGVmYXVsdDoKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBzZWxlY3Rvci0+c3R5bGUoKS0+c2V0
UGFnZVNpemVUeXBlKHBhZ2VTaXplVHlwZSk7Ci0gICAgICAgIHNlbGVjdG9yLT5zdHlsZSgpLT5z
ZXRQYWdlU2l6ZShMZW5ndGhTaXplKHdpZHRoLCBoZWlnaHQpKTsKKyAgICAgICAgc3R5bGVSZXNv
bHZlci0+c3R5bGUoKS0+c2V0UGFnZVNpemVUeXBlKHBhZ2VTaXplVHlwZSk7CisgICAgICAgIHN0
eWxlUmVzb2x2ZXItPnN0eWxlKCktPnNldFBhZ2VTaXplKExlbmd0aFNpemUod2lkdGgsIGhlaWdo
dCkpOwogICAgIH0KICAgICBzdGF0aWMgUHJvcGVydHlIYW5kbGVyIGNyZWF0ZUhhbmRsZXIoKSB7
IHJldHVybiBQcm9wZXJ0eUhhbmRsZXIoJmFwcGx5SW5oZXJpdFZhbHVlLCAmYXBwbHlJbml0aWFs
VmFsdWUsICZhcHBseVZhbHVlKTsgfQogfTsKIAogY2xhc3MgQXBwbHlQcm9wZXJ0eVRleHRFbXBo
YXNpc1N0eWxlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgdm9pZCBhcHBseUluaGVyaXRWYWx1ZShT
dHlsZVJlc29sdmVyKiBzZWxlY3RvcikKKyAgICBzdGF0aWMgdm9pZCBhcHBseUluaGVyaXRWYWx1
ZShTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyKQogICAgIHsKLSAgICAgICAgc2VsZWN0b3It
PnN0eWxlKCktPnNldFRleHRFbXBoYXNpc0ZpbGwoc2VsZWN0b3ItPnBhcmVudFN0eWxlKCktPnRl
eHRFbXBoYXNpc0ZpbGwoKSk7Ci0gICAgICAgIHNlbGVjdG9yLT5zdHlsZSgpLT5zZXRUZXh0RW1w
aGFzaXNNYXJrKHNlbGVjdG9yLT5wYXJlbnRTdHlsZSgpLT50ZXh0RW1waGFzaXNNYXJrKCkpOwot
ICAgICAgICBzZWxlY3Rvci0+c3R5bGUoKS0+c2V0VGV4dEVtcGhhc2lzQ3VzdG9tTWFyayhzZWxl
Y3Rvci0+cGFyZW50U3R5bGUoKS0+dGV4dEVtcGhhc2lzQ3VzdG9tTWFyaygpKTsKKyAgICAgICAg
c3R5bGVSZXNvbHZlci0+c3R5bGUoKS0+c2V0VGV4dEVtcGhhc2lzRmlsbChzdHlsZVJlc29sdmVy
LT5wYXJlbnRTdHlsZSgpLT50ZXh0RW1waGFzaXNGaWxsKCkpOworICAgICAgICBzdHlsZVJlc29s
dmVyLT5zdHlsZSgpLT5zZXRUZXh0RW1waGFzaXNNYXJrKHN0eWxlUmVzb2x2ZXItPnBhcmVudFN0
eWxlKCktPnRleHRFbXBoYXNpc01hcmsoKSk7CisgICAgICAgIHN0eWxlUmVzb2x2ZXItPnN0eWxl
KCktPnNldFRleHRFbXBoYXNpc0N1c3RvbU1hcmsoc3R5bGVSZXNvbHZlci0+cGFyZW50U3R5bGUo
KS0+dGV4dEVtcGhhc2lzQ3VzdG9tTWFyaygpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCBh
cHBseUluaXRpYWxWYWx1ZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvcikKKyAgICBzdGF0aWMgdm9p
ZCBhcHBseUluaXRpYWxWYWx1ZShTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyKQogICAgIHsK
LSAgICAgICAgc2VsZWN0b3ItPnN0eWxlKCktPnNldFRleHRFbXBoYXNpc0ZpbGwoUmVuZGVyU3R5
bGU6OmluaXRpYWxUZXh0RW1waGFzaXNGaWxsKCkpOwotICAgICAgICBzZWxlY3Rvci0+c3R5bGUo
KS0+c2V0VGV4dEVtcGhhc2lzTWFyayhSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRFbXBoYXNpc01h
cmsoKSk7Ci0gICAgICAgIHNlbGVjdG9yLT5zdHlsZSgpLT5zZXRUZXh0RW1waGFzaXNDdXN0b21N
YXJrKFJlbmRlclN0eWxlOjppbml0aWFsVGV4dEVtcGhhc2lzQ3VzdG9tTWFyaygpKTsKKyAgICAg
ICAgc3R5bGVSZXNvbHZlci0+c3R5bGUoKS0+c2V0VGV4dEVtcGhhc2lzRmlsbChSZW5kZXJTdHls
ZTo6aW5pdGlhbFRleHRFbXBoYXNpc0ZpbGwoKSk7CisgICAgICAgIHN0eWxlUmVzb2x2ZXItPnN0
eWxlKCktPnNldFRleHRFbXBoYXNpc01hcmsoUmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0RW1waGFz
aXNNYXJrKCkpOworICAgICAgICBzdHlsZVJlc29sdmVyLT5zdHlsZSgpLT5zZXRUZXh0RW1waGFz
aXNDdXN0b21NYXJrKFJlbmRlclN0eWxlOjppbml0aWFsVGV4dEVtcGhhc2lzQ3VzdG9tTWFyaygp
KTsKICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlKFN0eWxlUmVzb2x2ZXIqIHNl
bGVjdG9yLCBDU1NWYWx1ZSogdmFsdWUpCisgICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZShTdHls
ZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyLCBDU1NWYWx1ZSogdmFsdWUpCiAgICAgewogICAgICAg
ICBpZiAodmFsdWUtPmlzVmFsdWVMaXN0KCkpIHsKICAgICAgICAgICAgIENTU1ZhbHVlTGlzdCog
bGlzdCA9IHN0YXRpY19jYXN0PENTU1ZhbHVlTGlzdCo+KHZhbHVlKTsKQEAgLTEzODYsMTEgKzEz
ODYsMTEgQEAgcHVibGljOgogCiAgICAgICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHZh
bHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihpdGVtKTsKICAgICAgICAgICAg
ICAgICBpZiAodmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVGaWxsZWQgfHwgdmFsdWUtPmdl
dElkZW50KCkgPT0gQ1NTVmFsdWVPcGVuKQotICAgICAgICAgICAgICAgICAgICBzZWxlY3Rvci0+
c3R5bGUoKS0+c2V0VGV4dEVtcGhhc2lzRmlsbCgqdmFsdWUpOworICAgICAgICAgICAgICAgICAg
ICBzdHlsZVJlc29sdmVyLT5zdHlsZSgpLT5zZXRUZXh0RW1waGFzaXNGaWxsKCp2YWx1ZSk7CiAg
ICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBzZWxlY3Rvci0+c3R5bGUo
KS0+c2V0VGV4dEVtcGhhc2lzTWFyaygqdmFsdWUpOworICAgICAgICAgICAgICAgICAgICBzdHls
ZVJlc29sdmVyLT5zdHlsZSgpLT5zZXRUZXh0RW1waGFzaXNNYXJrKCp2YWx1ZSk7CiAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBzZWxlY3Rvci0+c3R5bGUoKS0+c2V0VGV4dEVtcGhhc2lzQ3Vz
dG9tTWFyayhudWxsQXRvbSk7CisgICAgICAgICAgICBzdHlsZVJlc29sdmVyLT5zdHlsZSgpLT5z
ZXRUZXh0RW1waGFzaXNDdXN0b21NYXJrKG51bGxBdG9tKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogCkBAIC0xMzk5LDIwICsxMzk5LDIwIEBAIHB1YmxpYzoKICAgICAgICAgQ1NT
UHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWUqPih2YWx1ZSk7CiAKICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5pc1N0cmluZygp
KSB7Ci0gICAgICAgICAgICBzZWxlY3Rvci0+c3R5bGUoKS0+c2V0VGV4dEVtcGhhc2lzRmlsbChU
ZXh0RW1waGFzaXNGaWxsRmlsbGVkKTsKLSAgICAgICAgICAgIHNlbGVjdG9yLT5zdHlsZSgpLT5z
ZXRUZXh0RW1waGFzaXNNYXJrKFRleHRFbXBoYXNpc01hcmtDdXN0b20pOwotICAgICAgICAgICAg
c2VsZWN0b3ItPnN0eWxlKCktPnNldFRleHRFbXBoYXNpc0N1c3RvbU1hcmsocHJpbWl0aXZlVmFs
dWUtPmdldFN0cmluZ1ZhbHVlKCkpOworICAgICAgICAgICAgc3R5bGVSZXNvbHZlci0+c3R5bGUo
KS0+c2V0VGV4dEVtcGhhc2lzRmlsbChUZXh0RW1waGFzaXNGaWxsRmlsbGVkKTsKKyAgICAgICAg
ICAgIHN0eWxlUmVzb2x2ZXItPnN0eWxlKCktPnNldFRleHRFbXBoYXNpc01hcmsoVGV4dEVtcGhh
c2lzTWFya0N1c3RvbSk7CisgICAgICAgICAgICBzdHlsZVJlc29sdmVyLT5zdHlsZSgpLT5zZXRU
ZXh0RW1waGFzaXNDdXN0b21NYXJrKHByaW1pdGl2ZVZhbHVlLT5nZXRTdHJpbmdWYWx1ZSgpKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIHNlbGVjdG9yLT5zdHls
ZSgpLT5zZXRUZXh0RW1waGFzaXNDdXN0b21NYXJrKG51bGxBdG9tKTsKKyAgICAgICAgc3R5bGVS
ZXNvbHZlci0+c3R5bGUoKS0+c2V0VGV4dEVtcGhhc2lzQ3VzdG9tTWFyayhudWxsQXRvbSk7CiAK
ICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlRmlsbGVk
IHx8IHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlT3BlbikgewotICAgICAg
ICAgICAgc2VsZWN0b3ItPnN0eWxlKCktPnNldFRleHRFbXBoYXNpc0ZpbGwoKnByaW1pdGl2ZVZh
bHVlKTsKLSAgICAgICAgICAgIHNlbGVjdG9yLT5zdHlsZSgpLT5zZXRUZXh0RW1waGFzaXNNYXJr
KFRleHRFbXBoYXNpc01hcmtBdXRvKTsKKyAgICAgICAgICAgIHN0eWxlUmVzb2x2ZXItPnN0eWxl
KCktPnNldFRleHRFbXBoYXNpc0ZpbGwoKnByaW1pdGl2ZVZhbHVlKTsKKyAgICAgICAgICAgIHN0
eWxlUmVzb2x2ZXItPnN0eWxlKCktPnNldFRleHRFbXBoYXNpc01hcmsoVGV4dEVtcGhhc2lzTWFy
a0F1dG8pOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgc2VsZWN0b3ItPnN0eWxlKCkt
PnNldFRleHRFbXBoYXNpc0ZpbGwoVGV4dEVtcGhhc2lzRmlsbEZpbGxlZCk7Ci0gICAgICAgICAg
ICBzZWxlY3Rvci0+c3R5bGUoKS0+c2V0VGV4dEVtcGhhc2lzTWFyaygqcHJpbWl0aXZlVmFsdWUp
OworICAgICAgICAgICAgc3R5bGVSZXNvbHZlci0+c3R5bGUoKS0+c2V0VGV4dEVtcGhhc2lzRmls
bChUZXh0RW1waGFzaXNGaWxsRmlsbGVkKTsKKyAgICAgICAgICAgIHN0eWxlUmVzb2x2ZXItPnN0
eWxlKCktPnNldFRleHRFbXBoYXNpc01hcmsoKnByaW1pdGl2ZVZhbHVlKTsKICAgICAgICAgfQog
ICAgIH0KIApAQCAtMTQzNSwxNCArMTQzNSwxNCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wg
dGVzdChjb25zdCBBbmltYXRpb24qIGFuaW1hdGlvbikgeyByZXR1cm4gKGFuaW1hdGlvbi0+KnRl
c3RGdW5jdGlvbikoKTsgfQogICAgIHN0YXRpYyB2b2lkIGNsZWFyKEFuaW1hdGlvbiogYW5pbWF0
aW9uKSB7IChhbmltYXRpb24tPipjbGVhckZ1bmN0aW9uKSgpOyB9CiAgICAgc3RhdGljIFQgaW5p
dGlhbCgpIHsgcmV0dXJuICgqaW5pdGlhbEZ1bmN0aW9uKSgpOyB9Ci0gICAgc3RhdGljIHZvaWQg
bWFwKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBBbmltYXRpb24qIGFuaW1hdGlvbiwgQ1NTVmFs
dWUqIHZhbHVlKSB7IChzZWxlY3Rvci0+Km1hcEZ1bmN0aW9uKShhbmltYXRpb24sIHZhbHVlKTsg
fQorICAgIHN0YXRpYyB2b2lkIG1hcChTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyLCBBbmlt
YXRpb24qIGFuaW1hdGlvbiwgQ1NTVmFsdWUqIHZhbHVlKSB7IChzdHlsZVJlc29sdmVyLT4qbWFw
RnVuY3Rpb24pKGFuaW1hdGlvbiwgdmFsdWUpOyB9CiAgICAgc3RhdGljIEFuaW1hdGlvbkxpc3Qq
IGFjY2Vzc0FuaW1hdGlvbnMoUmVuZGVyU3R5bGUqIHN0eWxlKSB7IHJldHVybiAoc3R5bGUtPiph
bmltYXRpb25HZXR0ZXJGdW5jdGlvbikoKTsgfQogICAgIHN0YXRpYyBjb25zdCBBbmltYXRpb25M
aXN0KiBhbmltYXRpb25zKFJlbmRlclN0eWxlKiBzdHlsZSkgeyByZXR1cm4gKHN0eWxlLT4qaW1t
dXRhYmxlQW5pbWF0aW9uR2V0dGVyRnVuY3Rpb24pKCk7IH0KIAotICAgIHN0YXRpYyB2b2lkIGFw
cGx5SW5oZXJpdFZhbHVlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yKQorICAgIHN0YXRpYyB2b2lk
IGFwcGx5SW5oZXJpdFZhbHVlKFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIpCiAgICAgewot
ICAgICAgICBBbmltYXRpb25MaXN0KiBsaXN0ID0gYWNjZXNzQW5pbWF0aW9ucyhzZWxlY3Rvci0+
c3R5bGUoKSk7Ci0gICAgICAgIGNvbnN0IEFuaW1hdGlvbkxpc3QqIHBhcmVudExpc3QgPSBhbmlt
YXRpb25zKHNlbGVjdG9yLT5wYXJlbnRTdHlsZSgpKTsKKyAgICAgICAgQW5pbWF0aW9uTGlzdCog
bGlzdCA9IGFjY2Vzc0FuaW1hdGlvbnMoc3R5bGVSZXNvbHZlci0+c3R5bGUoKSk7CisgICAgICAg
IGNvbnN0IEFuaW1hdGlvbkxpc3QqIHBhcmVudExpc3QgPSBhbmltYXRpb25zKHN0eWxlUmVzb2x2
ZXItPnBhcmVudFN0eWxlKCkpOwogICAgICAgICBzaXplX3QgaSA9IDAsIHBhcmVudFNpemUgPSBw
YXJlbnRMaXN0ID8gcGFyZW50TGlzdC0+c2l6ZSgpIDogMDsKICAgICAgICAgZm9yICggOyBpIDwg
cGFyZW50U2l6ZSAmJiB0ZXN0KHBhcmVudExpc3QtPmFuaW1hdGlvbihpKSk7ICsraSkgewogICAg
ICAgICAgICAgaWYgKGxpc3QtPnNpemUoKSA8PSBpKQpAQCAtMTQ1Niw5ICsxNDU2LDkgQEAgcHVi
bGljOgogICAgICAgICAgICAgY2xlYXIobGlzdC0+YW5pbWF0aW9uKGkpKTsKICAgICB9CiAKLSAg
ICBzdGF0aWMgdm9pZCBhcHBseUluaXRpYWxWYWx1ZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvcikK
KyAgICBzdGF0aWMgdm9pZCBhcHBseUluaXRpYWxWYWx1ZShTdHlsZVJlc29sdmVyKiBzdHlsZVJl
c29sdmVyKQogICAgIHsKLSAgICAgICAgQW5pbWF0aW9uTGlzdCogbGlzdCA9IGFjY2Vzc0FuaW1h
dGlvbnMoc2VsZWN0b3ItPnN0eWxlKCkpOworICAgICAgICBBbmltYXRpb25MaXN0KiBsaXN0ID0g
YWNjZXNzQW5pbWF0aW9ucyhzdHlsZVJlc29sdmVyLT5zdHlsZSgpKTsKICAgICAgICAgaWYgKGxp
c3QtPmlzRW1wdHkoKSkKICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChBbmltYXRpb246OmNyZWF0
ZSgpKTsKICAgICAgICAgc2V0VmFsdWUobGlzdC0+YW5pbWF0aW9uKDApLCBpbml0aWFsKCkpOwpA
QCAtMTQ2NiwyMiArMTQ2NiwyMiBAQCBwdWJsaWM6CiAgICAgICAgICAgICBjbGVhcihsaXN0LT5h
bmltYXRpb24oaSkpOwogICAgIH0KIAotICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUoU3R5bGVS
ZXNvbHZlciogc2VsZWN0b3IsIENTU1ZhbHVlKiB2YWx1ZSkKKyAgICBzdGF0aWMgdm9pZCBhcHBs
eVZhbHVlKFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlKiB2YWx1ZSkKICAg
ICB7Ci0gICAgICAgIEFuaW1hdGlvbkxpc3QqIGxpc3QgPSBhY2Nlc3NBbmltYXRpb25zKHNlbGVj
dG9yLT5zdHlsZSgpKTsKKyAgICAgICAgQW5pbWF0aW9uTGlzdCogbGlzdCA9IGFjY2Vzc0FuaW1h
dGlvbnMoc3R5bGVSZXNvbHZlci0+c3R5bGUoKSk7CiAgICAgICAgIHNpemVfdCBjaGlsZEluZGV4
ID0gMDsKICAgICAgICAgaWYgKHZhbHVlLT5pc1ZhbHVlTGlzdCgpKSB7CiAgICAgICAgICAgICAv
KiBXYWxrIGVhY2ggdmFsdWUgYW5kIHB1dCBpdCBpbnRvIGFuIGFuaW1hdGlvbiwgY3JlYXRpbmcg
bmV3IGFuaW1hdGlvbnMgYXMgbmVlZGVkLiAqLwogICAgICAgICAgICAgZm9yIChDU1NWYWx1ZUxp
c3RJdGVyYXRvciBpID0gdmFsdWU7IGkuaGFzTW9yZSgpOyBpLmFkdmFuY2UoKSkgewogICAgICAg
ICAgICAgICAgIGlmIChjaGlsZEluZGV4IDw9IGxpc3QtPnNpemUoKSkKICAgICAgICAgICAgICAg
ICAgICAgbGlzdC0+YXBwZW5kKEFuaW1hdGlvbjo6Y3JlYXRlKCkpOwotICAgICAgICAgICAgICAg
IG1hcChzZWxlY3RvciwgbGlzdC0+YW5pbWF0aW9uKGNoaWxkSW5kZXgpLCBpLnZhbHVlKCkpOwor
ICAgICAgICAgICAgICAgIG1hcChzdHlsZVJlc29sdmVyLCBsaXN0LT5hbmltYXRpb24oY2hpbGRJ
bmRleCksIGkudmFsdWUoKSk7CiAgICAgICAgICAgICAgICAgKytjaGlsZEluZGV4OwogICAgICAg
ICAgICAgfQogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgaWYgKGxpc3QtPmlzRW1wdHko
KSkKICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoQW5pbWF0aW9uOjpjcmVhdGUoKSk7Ci0g
ICAgICAgICAgICBtYXAoc2VsZWN0b3IsIGxpc3QtPmFuaW1hdGlvbihjaGlsZEluZGV4KSwgdmFs
dWUpOworICAgICAgICAgICAgbWFwKHN0eWxlUmVzb2x2ZXIsIGxpc3QtPmFuaW1hdGlvbihjaGls
ZEluZGV4KSwgdmFsdWUpOwogICAgICAgICAgICAgY2hpbGRJbmRleCA9IDE7CiAgICAgICAgIH0K
ICAgICAgICAgZm9yICggOyBjaGlsZEluZGV4IDwgbGlzdC0+c2l6ZSgpOyArK2NoaWxkSW5kZXgp
IHsKQEAgLTE0OTUsMjIgKzE0OTUsMjIgQEAgcHVibGljOgogCiBjbGFzcyBBcHBseVByb3BlcnR5
T3V0bGluZVN0eWxlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgdm9pZCBhcHBseUluaGVyaXRWYWx1
ZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvcikKKyAgICBzdGF0aWMgdm9pZCBhcHBseUluaGVyaXRW
YWx1ZShTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyKQogICAgIHsKLSAgICAgICAgQXBwbHlQ
cm9wZXJ0eURlZmF1bHRCYXNlPE91dGxpbmVJc0F1dG8sICZSZW5kZXJTdHlsZTo6b3V0bGluZVN0
eWxlSXNBdXRvLCBPdXRsaW5lSXNBdXRvLCAmUmVuZGVyU3R5bGU6OnNldE91dGxpbmVTdHlsZUlz
QXV0bywgT3V0bGluZUlzQXV0bywgJlJlbmRlclN0eWxlOjppbml0aWFsT3V0bGluZVN0eWxlSXNB
dXRvPjo6YXBwbHlJbmhlcml0VmFsdWUoc2VsZWN0b3IpOwotICAgICAgICBBcHBseVByb3BlcnR5
RGVmYXVsdEJhc2U8RUJvcmRlclN0eWxlLCAmUmVuZGVyU3R5bGU6Om91dGxpbmVTdHlsZSwgRUJv
cmRlclN0eWxlLCAmUmVuZGVyU3R5bGU6OnNldE91dGxpbmVTdHlsZSwgRUJvcmRlclN0eWxlLCAm
UmVuZGVyU3R5bGU6OmluaXRpYWxCb3JkZXJTdHlsZT46OmFwcGx5SW5oZXJpdFZhbHVlKHNlbGVj
dG9yKTsKKyAgICAgICAgQXBwbHlQcm9wZXJ0eURlZmF1bHRCYXNlPE91dGxpbmVJc0F1dG8sICZS
ZW5kZXJTdHlsZTo6b3V0bGluZVN0eWxlSXNBdXRvLCBPdXRsaW5lSXNBdXRvLCAmUmVuZGVyU3R5
bGU6OnNldE91dGxpbmVTdHlsZUlzQXV0bywgT3V0bGluZUlzQXV0bywgJlJlbmRlclN0eWxlOjpp
bml0aWFsT3V0bGluZVN0eWxlSXNBdXRvPjo6YXBwbHlJbmhlcml0VmFsdWUoc3R5bGVSZXNvbHZl
cik7CisgICAgICAgIEFwcGx5UHJvcGVydHlEZWZhdWx0QmFzZTxFQm9yZGVyU3R5bGUsICZSZW5k
ZXJTdHlsZTo6b3V0bGluZVN0eWxlLCBFQm9yZGVyU3R5bGUsICZSZW5kZXJTdHlsZTo6c2V0T3V0
bGluZVN0eWxlLCBFQm9yZGVyU3R5bGUsICZSZW5kZXJTdHlsZTo6aW5pdGlhbEJvcmRlclN0eWxl
Pjo6YXBwbHlJbmhlcml0VmFsdWUoc3R5bGVSZXNvbHZlcik7CiAgICAgfQogCi0gICAgc3RhdGlj
IHZvaWQgYXBwbHlJbml0aWFsVmFsdWUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IpCisgICAgc3Rh
dGljIHZvaWQgYXBwbHlJbml0aWFsVmFsdWUoU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlcikK
ICAgICB7Ci0gICAgICAgIEFwcGx5UHJvcGVydHlEZWZhdWx0QmFzZTxPdXRsaW5lSXNBdXRvLCAm
UmVuZGVyU3R5bGU6Om91dGxpbmVTdHlsZUlzQXV0bywgT3V0bGluZUlzQXV0bywgJlJlbmRlclN0
eWxlOjpzZXRPdXRsaW5lU3R5bGVJc0F1dG8sIE91dGxpbmVJc0F1dG8sICZSZW5kZXJTdHlsZTo6
aW5pdGlhbE91dGxpbmVTdHlsZUlzQXV0bz46OmFwcGx5SW5pdGlhbFZhbHVlKHNlbGVjdG9yKTsK
LSAgICAgICAgQXBwbHlQcm9wZXJ0eURlZmF1bHRCYXNlPEVCb3JkZXJTdHlsZSwgJlJlbmRlclN0
eWxlOjpvdXRsaW5lU3R5bGUsIEVCb3JkZXJTdHlsZSwgJlJlbmRlclN0eWxlOjpzZXRPdXRsaW5l
U3R5bGUsIEVCb3JkZXJTdHlsZSwgJlJlbmRlclN0eWxlOjppbml0aWFsQm9yZGVyU3R5bGU+Ojph
cHBseUluaXRpYWxWYWx1ZShzZWxlY3Rvcik7CisgICAgICAgIEFwcGx5UHJvcGVydHlEZWZhdWx0
QmFzZTxPdXRsaW5lSXNBdXRvLCAmUmVuZGVyU3R5bGU6Om91dGxpbmVTdHlsZUlzQXV0bywgT3V0
bGluZUlzQXV0bywgJlJlbmRlclN0eWxlOjpzZXRPdXRsaW5lU3R5bGVJc0F1dG8sIE91dGxpbmVJ
c0F1dG8sICZSZW5kZXJTdHlsZTo6aW5pdGlhbE91dGxpbmVTdHlsZUlzQXV0bz46OmFwcGx5SW5p
dGlhbFZhbHVlKHN0eWxlUmVzb2x2ZXIpOworICAgICAgICBBcHBseVByb3BlcnR5RGVmYXVsdEJh
c2U8RUJvcmRlclN0eWxlLCAmUmVuZGVyU3R5bGU6Om91dGxpbmVTdHlsZSwgRUJvcmRlclN0eWxl
LCAmUmVuZGVyU3R5bGU6OnNldE91dGxpbmVTdHlsZSwgRUJvcmRlclN0eWxlLCAmUmVuZGVyU3R5
bGU6OmluaXRpYWxCb3JkZXJTdHlsZT46OmFwcGx5SW5pdGlhbFZhbHVlKHN0eWxlUmVzb2x2ZXIp
OwogICAgIH0KIAotICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUoU3R5bGVSZXNvbHZlciogc2Vs
ZWN0b3IsIENTU1ZhbHVlKiB2YWx1ZSkKKyAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlKFN0eWxl
UmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlKiB2YWx1ZSkKICAgICB7Ci0gICAgICAg
IEFwcGx5UHJvcGVydHlEZWZhdWx0PE91dGxpbmVJc0F1dG8sICZSZW5kZXJTdHlsZTo6b3V0bGlu
ZVN0eWxlSXNBdXRvLCBPdXRsaW5lSXNBdXRvLCAmUmVuZGVyU3R5bGU6OnNldE91dGxpbmVTdHls
ZUlzQXV0bywgT3V0bGluZUlzQXV0bywgJlJlbmRlclN0eWxlOjppbml0aWFsT3V0bGluZVN0eWxl
SXNBdXRvPjo6YXBwbHlWYWx1ZShzZWxlY3RvciwgdmFsdWUpOwotICAgICAgICBBcHBseVByb3Bl
cnR5RGVmYXVsdDxFQm9yZGVyU3R5bGUsICZSZW5kZXJTdHlsZTo6b3V0bGluZVN0eWxlLCBFQm9y
ZGVyU3R5bGUsICZSZW5kZXJTdHlsZTo6c2V0T3V0bGluZVN0eWxlLCBFQm9yZGVyU3R5bGUsICZS
ZW5kZXJTdHlsZTo6aW5pdGlhbEJvcmRlclN0eWxlPjo6YXBwbHlWYWx1ZShzZWxlY3RvciwgdmFs
dWUpOworICAgICAgICBBcHBseVByb3BlcnR5RGVmYXVsdDxPdXRsaW5lSXNBdXRvLCAmUmVuZGVy
U3R5bGU6Om91dGxpbmVTdHlsZUlzQXV0bywgT3V0bGluZUlzQXV0bywgJlJlbmRlclN0eWxlOjpz
ZXRPdXRsaW5lU3R5bGVJc0F1dG8sIE91dGxpbmVJc0F1dG8sICZSZW5kZXJTdHlsZTo6aW5pdGlh
bE91dGxpbmVTdHlsZUlzQXV0bz46OmFwcGx5VmFsdWUoc3R5bGVSZXNvbHZlciwgdmFsdWUpOwor
ICAgICAgICBBcHBseVByb3BlcnR5RGVmYXVsdDxFQm9yZGVyU3R5bGUsICZSZW5kZXJTdHlsZTo6
b3V0bGluZVN0eWxlLCBFQm9yZGVyU3R5bGUsICZSZW5kZXJTdHlsZTo6c2V0T3V0bGluZVN0eWxl
LCBFQm9yZGVyU3R5bGUsICZSZW5kZXJTdHlsZTo6aW5pdGlhbEJvcmRlclN0eWxlPjo6YXBwbHlW
YWx1ZShzdHlsZVJlc29sdmVyLCB2YWx1ZSk7CiAgICAgfQogCiAgICAgc3RhdGljIFByb3BlcnR5
SGFuZGxlciBjcmVhdGVIYW5kbGVyKCkgeyByZXR1cm4gUHJvcGVydHlIYW5kbGVyKCZhcHBseUlu
aGVyaXRWYWx1ZSwgJmFwcGx5SW5pdGlhbFZhbHVlLCAmYXBwbHlWYWx1ZSk7IH0KQEAgLTE1MTgs
NyArMTUxOCw3IEBAIHB1YmxpYzoKIAogY2xhc3MgQXBwbHlQcm9wZXJ0eVJlc2l6ZSB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZShTdHlsZVJlc29sdmVyKiBzZWxlY3Rvciwg
Q1NTVmFsdWUqIHZhbHVlKQorICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUoU3R5bGVSZXNvbHZl
ciogc3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUqIHZhbHVlKQogICAgIHsKICAgICAgICAgaWYgKCF2
YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTUzMCwx
MyArMTUzMCwxMyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgY2FzZSBDU1NWYWx1ZUF1dG86Ci0gICAgICAgICAgICBpZiAoU2V0dGluZ3Mq
IHNldHRpbmdzID0gc2VsZWN0b3ItPmRvY3VtZW50KCktPnNldHRpbmdzKCkpCisgICAgICAgICAg
ICBpZiAoU2V0dGluZ3MqIHNldHRpbmdzID0gc3R5bGVSZXNvbHZlci0+ZG9jdW1lbnQoKS0+c2V0
dGluZ3MoKSkKICAgICAgICAgICAgICAgICByID0gc2V0dGluZ3MtPnRleHRBcmVhc0FyZVJlc2l6
YWJsZSgpID8gUkVTSVpFX0JPVEggOiBSRVNJWkVfTk9ORTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgciA9ICpwcmltaXRpdmVWYWx1ZTsKICAgICAg
ICAgfQotICAgICAgICBzZWxlY3Rvci0+c3R5bGUoKS0+c2V0UmVzaXplKHIpOworICAgICAgICBz
dHlsZVJlc29sdmVyLT5zdHlsZSgpLT5zZXRSZXNpemUocik7CiAgICAgfQogCiAgICAgc3RhdGlj
IFByb3BlcnR5SGFuZGxlciBjcmVhdGVIYW5kbGVyKCkKQEAgLTE1NDgsNyArMTU0OCw3IEBAIHB1
YmxpYzoKIAogY2xhc3MgQXBwbHlQcm9wZXJ0eVZlcnRpY2FsQWxpZ24gewogcHVibGljOgotICAg
IHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIENTU1ZhbHVl
KiB2YWx1ZSkKKyAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlKFN0eWxlUmVzb2x2ZXIqIHN0eWxl
UmVzb2x2ZXIsIENTU1ZhbHVlKiB2YWx1ZSkKICAgICB7CiAgICAgICAgIGlmICghdmFsdWUtPmlz
UHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE1NTYsOSArMTU1Niw5
IEBAIHB1YmxpYzoKICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0g
c3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CiAKICAgICAgICAgaWYgKHBy
aW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKQotICAgICAgICAgICAgcmV0dXJuIHNlbGVjdG9yLT5z
dHlsZSgpLT5zZXRWZXJ0aWNhbEFsaWduKCpwcmltaXRpdmVWYWx1ZSk7CisgICAgICAgICAgICBy
ZXR1cm4gc3R5bGVSZXNvbHZlci0+c3R5bGUoKS0+c2V0VmVydGljYWxBbGlnbigqcHJpbWl0aXZl
VmFsdWUpOwogCi0gICAgICAgIHNlbGVjdG9yLT5zdHlsZSgpLT5zZXRWZXJ0aWNhbEFsaWduTGVu
Z3RoKHByaW1pdGl2ZVZhbHVlLT5jb252ZXJ0VG9MZW5ndGg8Rml4ZWRJbnRlZ2VyQ29udmVyc2lv
biB8IFBlcmNlbnRDb252ZXJzaW9uIHwgQ2FsY3VsYXRlZENvbnZlcnNpb24gfCBWaWV3cG9ydFBl
cmNlbnRhZ2VDb252ZXJzaW9uPihzZWxlY3Rvci0+c3R5bGUoKSwgc2VsZWN0b3ItPnJvb3RFbGVt
ZW50U3R5bGUoKSwgc2VsZWN0b3ItPnN0eWxlKCktPmVmZmVjdGl2ZVpvb20oKSkpOworICAgICAg
ICBzdHlsZVJlc29sdmVyLT5zdHlsZSgpLT5zZXRWZXJ0aWNhbEFsaWduTGVuZ3RoKHByaW1pdGl2
ZVZhbHVlLT5jb252ZXJ0VG9MZW5ndGg8Rml4ZWRJbnRlZ2VyQ29udmVyc2lvbiB8IFBlcmNlbnRD
b252ZXJzaW9uIHwgQ2FsY3VsYXRlZENvbnZlcnNpb24gfCBWaWV3cG9ydFBlcmNlbnRhZ2VDb252
ZXJzaW9uPihzdHlsZVJlc29sdmVyLT5zdHlsZSgpLCBzdHlsZVJlc29sdmVyLT5yb290RWxlbWVu
dFN0eWxlKCksIHN0eWxlUmVzb2x2ZXItPnN0eWxlKCktPmVmZmVjdGl2ZVpvb20oKSkpOwogICAg
IH0KIAogICAgIHN0YXRpYyBQcm9wZXJ0eUhhbmRsZXIgY3JlYXRlSGFuZGxlcigpCkBAIC0xNTcw
LDMyICsxNTcwLDMyIEBAIHB1YmxpYzoKIAogY2xhc3MgQXBwbHlQcm9wZXJ0eUFzcGVjdFJhdGlv
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgdm9pZCBhcHBseUluaGVyaXRWYWx1ZShTdHlsZVJlc29s
dmVyKiBzZWxlY3RvcikKKyAgICBzdGF0aWMgdm9pZCBhcHBseUluaGVyaXRWYWx1ZShTdHlsZVJl
c29sdmVyKiBzdHlsZVJlc29sdmVyKQogICAgIHsKLSAgICAgICAgaWYgKCFzZWxlY3Rvci0+cGFy
ZW50U3R5bGUoKS0+aGFzQXNwZWN0UmF0aW8oKSkKKyAgICAgICAgaWYgKCFzdHlsZVJlc29sdmVy
LT5wYXJlbnRTdHlsZSgpLT5oYXNBc3BlY3RSYXRpbygpKQogICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICBzZWxlY3Rvci0+c3R5bGUoKS0+c2V0SGFzQXNwZWN0UmF0aW8odHJ1ZSk7Ci0gICAg
ICAgIHNlbGVjdG9yLT5zdHlsZSgpLT5zZXRBc3BlY3RSYXRpb0Rlbm9taW5hdG9yKHNlbGVjdG9y
LT5wYXJlbnRTdHlsZSgpLT5hc3BlY3RSYXRpb0Rlbm9taW5hdG9yKCkpOwotICAgICAgICBzZWxl
Y3Rvci0+c3R5bGUoKS0+c2V0QXNwZWN0UmF0aW9OdW1lcmF0b3Ioc2VsZWN0b3ItPnBhcmVudFN0
eWxlKCktPmFzcGVjdFJhdGlvTnVtZXJhdG9yKCkpOworICAgICAgICBzdHlsZVJlc29sdmVyLT5z
dHlsZSgpLT5zZXRIYXNBc3BlY3RSYXRpbyh0cnVlKTsKKyAgICAgICAgc3R5bGVSZXNvbHZlci0+
c3R5bGUoKS0+c2V0QXNwZWN0UmF0aW9EZW5vbWluYXRvcihzdHlsZVJlc29sdmVyLT5wYXJlbnRT
dHlsZSgpLT5hc3BlY3RSYXRpb0Rlbm9taW5hdG9yKCkpOworICAgICAgICBzdHlsZVJlc29sdmVy
LT5zdHlsZSgpLT5zZXRBc3BlY3RSYXRpb051bWVyYXRvcihzdHlsZVJlc29sdmVyLT5wYXJlbnRT
dHlsZSgpLT5hc3BlY3RSYXRpb051bWVyYXRvcigpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgdm9p
ZCBhcHBseUluaXRpYWxWYWx1ZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvcikKKyAgICBzdGF0aWMg
dm9pZCBhcHBseUluaXRpYWxWYWx1ZShTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyKQogICAg
IHsKLSAgICAgICAgc2VsZWN0b3ItPnN0eWxlKCktPnNldEhhc0FzcGVjdFJhdGlvKFJlbmRlclN0
eWxlOjppbml0aWFsSGFzQXNwZWN0UmF0aW8oKSk7Ci0gICAgICAgIHNlbGVjdG9yLT5zdHlsZSgp
LT5zZXRBc3BlY3RSYXRpb0Rlbm9taW5hdG9yKFJlbmRlclN0eWxlOjppbml0aWFsQXNwZWN0UmF0
aW9EZW5vbWluYXRvcigpKTsKLSAgICAgICAgc2VsZWN0b3ItPnN0eWxlKCktPnNldEFzcGVjdFJh
dGlvTnVtZXJhdG9yKFJlbmRlclN0eWxlOjppbml0aWFsQXNwZWN0UmF0aW9OdW1lcmF0b3IoKSk7
CisgICAgICAgIHN0eWxlUmVzb2x2ZXItPnN0eWxlKCktPnNldEhhc0FzcGVjdFJhdGlvKFJlbmRl
clN0eWxlOjppbml0aWFsSGFzQXNwZWN0UmF0aW8oKSk7CisgICAgICAgIHN0eWxlUmVzb2x2ZXIt
PnN0eWxlKCktPnNldEFzcGVjdFJhdGlvRGVub21pbmF0b3IoUmVuZGVyU3R5bGU6OmluaXRpYWxB
c3BlY3RSYXRpb0Rlbm9taW5hdG9yKCkpOworICAgICAgICBzdHlsZVJlc29sdmVyLT5zdHlsZSgp
LT5zZXRBc3BlY3RSYXRpb051bWVyYXRvcihSZW5kZXJTdHlsZTo6aW5pdGlhbEFzcGVjdFJhdGlv
TnVtZXJhdG9yKCkpOwogICAgIH0KIAotICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUoU3R5bGVS
ZXNvbHZlciogc2VsZWN0b3IsIENTU1ZhbHVlKiB2YWx1ZSkKKyAgICBzdGF0aWMgdm9pZCBhcHBs
eVZhbHVlKFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlKiB2YWx1ZSkKICAg
ICB7CiAgICAgICAgIGlmICghdmFsdWUtPmlzQXNwZWN0UmF0aW9WYWx1ZSgpKSB7Ci0gICAgICAg
ICAgICBzZWxlY3Rvci0+c3R5bGUoKS0+c2V0SGFzQXNwZWN0UmF0aW8oZmFsc2UpOworICAgICAg
ICAgICAgc3R5bGVSZXNvbHZlci0+c3R5bGUoKS0+c2V0SGFzQXNwZWN0UmF0aW8oZmFsc2UpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIENTU0FzcGVjdFJhdGlvVmFs
dWUqIGFzcGVjdFJhdGlvVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NBc3BlY3RSYXRpb1ZhbHVlKj4o
dmFsdWUpOwotICAgICAgICBzZWxlY3Rvci0+c3R5bGUoKS0+c2V0SGFzQXNwZWN0UmF0aW8odHJ1
ZSk7Ci0gICAgICAgIHNlbGVjdG9yLT5zdHlsZSgpLT5zZXRBc3BlY3RSYXRpb0Rlbm9taW5hdG9y
KGFzcGVjdFJhdGlvVmFsdWUtPmRlbm9taW5hdG9yVmFsdWUoKSk7Ci0gICAgICAgIHNlbGVjdG9y
LT5zdHlsZSgpLT5zZXRBc3BlY3RSYXRpb051bWVyYXRvcihhc3BlY3RSYXRpb1ZhbHVlLT5udW1l
cmF0b3JWYWx1ZSgpKTsKKyAgICAgICAgc3R5bGVSZXNvbHZlci0+c3R5bGUoKS0+c2V0SGFzQXNw
ZWN0UmF0aW8odHJ1ZSk7CisgICAgICAgIHN0eWxlUmVzb2x2ZXItPnN0eWxlKCktPnNldEFzcGVj
dFJhdGlvRGVub21pbmF0b3IoYXNwZWN0UmF0aW9WYWx1ZS0+ZGVub21pbmF0b3JWYWx1ZSgpKTsK
KyAgICAgICAgc3R5bGVSZXNvbHZlci0+c3R5bGUoKS0+c2V0QXNwZWN0UmF0aW9OdW1lcmF0b3Io
YXNwZWN0UmF0aW9WYWx1ZS0+bnVtZXJhdG9yVmFsdWUoKSk7CiAgICAgfQogCiAgICAgc3RhdGlj
IFByb3BlcnR5SGFuZGxlciBjcmVhdGVIYW5kbGVyKCkKQEAgLTE2MDYsNDggKzE2MDYsNDggQEAg
cHVibGljOgogCiBjbGFzcyBBcHBseVByb3BlcnR5Wm9vbSB7CiBwcml2YXRlOgotICAgIHN0YXRp
YyB2b2lkIHJlc2V0RWZmZWN0aXZlWm9vbShTdHlsZVJlc29sdmVyKiBzZWxlY3RvcikKKyAgICBz
dGF0aWMgdm9pZCByZXNldEVmZmVjdGl2ZVpvb20oU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZl
cikKICAgICB7CiAgICAgICAgIC8vIFJlc2V0IHRoZSB6b29tIGluIGVmZmVjdC4gVGhpcyBhbGxv
d3MgdGhlIHNldFpvb20gbWV0aG9kIHRvIGFjY3VyYXRlbHkgY29tcHV0ZSBhIG5ldyB6b29tIGlu
IGVmZmVjdC4KLSAgICAgICAgc2VsZWN0b3ItPnNldEVmZmVjdGl2ZVpvb20oc2VsZWN0b3ItPnBh
cmVudFN0eWxlKCkgPyBzZWxlY3Rvci0+cGFyZW50U3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpIDog
UmVuZGVyU3R5bGU6OmluaXRpYWxab29tKCkpOworICAgICAgICBzdHlsZVJlc29sdmVyLT5zZXRF
ZmZlY3RpdmVab29tKHN0eWxlUmVzb2x2ZXItPnBhcmVudFN0eWxlKCkgPyBzdHlsZVJlc29sdmVy
LT5wYXJlbnRTdHlsZSgpLT5lZmZlY3RpdmVab29tKCkgOiBSZW5kZXJTdHlsZTo6aW5pdGlhbFpv
b20oKSk7CiAgICAgfQogCiBwdWJsaWM6Ci0gICAgc3RhdGljIHZvaWQgYXBwbHlJbmhlcml0VmFs
dWUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IpCisgICAgc3RhdGljIHZvaWQgYXBwbHlJbmhlcml0
VmFsdWUoU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlcikKICAgICB7Ci0gICAgICAgIHJlc2V0
RWZmZWN0aXZlWm9vbShzZWxlY3Rvcik7Ci0gICAgICAgIHNlbGVjdG9yLT5zZXRab29tKHNlbGVj
dG9yLT5wYXJlbnRTdHlsZSgpLT56b29tKCkpOworICAgICAgICByZXNldEVmZmVjdGl2ZVpvb20o
c3R5bGVSZXNvbHZlcik7CisgICAgICAgIHN0eWxlUmVzb2x2ZXItPnNldFpvb20oc3R5bGVSZXNv
bHZlci0+cGFyZW50U3R5bGUoKS0+em9vbSgpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCBh
cHBseUluaXRpYWxWYWx1ZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvcikKKyAgICBzdGF0aWMgdm9p
ZCBhcHBseUluaXRpYWxWYWx1ZShTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyKQogICAgIHsK
LSAgICAgICAgcmVzZXRFZmZlY3RpdmVab29tKHNlbGVjdG9yKTsKLSAgICAgICAgc2VsZWN0b3It
PnNldFpvb20oUmVuZGVyU3R5bGU6OmluaXRpYWxab29tKCkpOworICAgICAgICByZXNldEVmZmVj
dGl2ZVpvb20oc3R5bGVSZXNvbHZlcik7CisgICAgICAgIHN0eWxlUmVzb2x2ZXItPnNldFpvb20o
UmVuZGVyU3R5bGU6OmluaXRpYWxab29tKCkpOwogICAgIH0KIAotICAgIHN0YXRpYyB2b2lkIGFw
cGx5VmFsdWUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIENTU1ZhbHVlKiB2YWx1ZSkKKyAgICBz
dGF0aWMgdm9pZCBhcHBseVZhbHVlKFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIsIENTU1Zh
bHVlKiB2YWx1ZSkKICAgICB7CiAgICAgICAgIEFTU0VSVCh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1
ZSgpKTsKICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGlj
X2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CiAKICAgICAgICAgaWYgKHByaW1pdGl2
ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlTm9ybWFsKSB7Ci0gICAgICAgICAgICByZXNl
dEVmZmVjdGl2ZVpvb20oc2VsZWN0b3IpOwotICAgICAgICAgICAgc2VsZWN0b3ItPnNldFpvb20o
UmVuZGVyU3R5bGU6OmluaXRpYWxab29tKCkpOworICAgICAgICAgICAgcmVzZXRFZmZlY3RpdmVa
b29tKHN0eWxlUmVzb2x2ZXIpOworICAgICAgICAgICAgc3R5bGVSZXNvbHZlci0+c2V0Wm9vbShS
ZW5kZXJTdHlsZTo6aW5pdGlhbFpvb20oKSk7CiAgICAgICAgIH0gZWxzZSBpZiAocHJpbWl0aXZl
VmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVSZXNldCkgewotICAgICAgICAgICAgc2VsZWN0
b3ItPnNldEVmZmVjdGl2ZVpvb20oUmVuZGVyU3R5bGU6OmluaXRpYWxab29tKCkpOwotICAgICAg
ICAgICAgc2VsZWN0b3ItPnNldFpvb20oUmVuZGVyU3R5bGU6OmluaXRpYWxab29tKCkpOworICAg
ICAgICAgICAgc3R5bGVSZXNvbHZlci0+c2V0RWZmZWN0aXZlWm9vbShSZW5kZXJTdHlsZTo6aW5p
dGlhbFpvb20oKSk7CisgICAgICAgICAgICBzdHlsZVJlc29sdmVyLT5zZXRab29tKFJlbmRlclN0
eWxlOjppbml0aWFsWm9vbSgpKTsKICAgICAgICAgfSBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS0+
Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZURvY3VtZW50KSB7Ci0gICAgICAgICAgICBmbG9hdCBkb2Na
b29tID0gc2VsZWN0b3ItPnJvb3RFbGVtZW50U3R5bGUoKSA/IHNlbGVjdG9yLT5yb290RWxlbWVu
dFN0eWxlKCktPnpvb20oKSA6IFJlbmRlclN0eWxlOjppbml0aWFsWm9vbSgpOwotICAgICAgICAg
ICAgc2VsZWN0b3ItPnNldEVmZmVjdGl2ZVpvb20oZG9jWm9vbSk7Ci0gICAgICAgICAgICBzZWxl
Y3Rvci0+c2V0Wm9vbShkb2Nab29tKTsKKyAgICAgICAgICAgIGZsb2F0IGRvY1pvb20gPSBzdHls
ZVJlc29sdmVyLT5yb290RWxlbWVudFN0eWxlKCkgPyBzdHlsZVJlc29sdmVyLT5yb290RWxlbWVu
dFN0eWxlKCktPnpvb20oKSA6IFJlbmRlclN0eWxlOjppbml0aWFsWm9vbSgpOworICAgICAgICAg
ICAgc3R5bGVSZXNvbHZlci0+c2V0RWZmZWN0aXZlWm9vbShkb2Nab29tKTsKKyAgICAgICAgICAg
IHN0eWxlUmVzb2x2ZXItPnNldFpvb20oZG9jWm9vbSk7CiAgICAgICAgIH0gZWxzZSBpZiAocHJp
bWl0aXZlVmFsdWUtPmlzUGVyY2VudGFnZSgpKSB7Ci0gICAgICAgICAgICByZXNldEVmZmVjdGl2
ZVpvb20oc2VsZWN0b3IpOworICAgICAgICAgICAgcmVzZXRFZmZlY3RpdmVab29tKHN0eWxlUmVz
b2x2ZXIpOwogICAgICAgICAgICAgaWYgKGZsb2F0IHBlcmNlbnQgPSBwcmltaXRpdmVWYWx1ZS0+
Z2V0RmxvYXRWYWx1ZSgpKQotICAgICAgICAgICAgICAgIHNlbGVjdG9yLT5zZXRab29tKHBlcmNl
bnQgLyAxMDAuMGYpOworICAgICAgICAgICAgICAgIHN0eWxlUmVzb2x2ZXItPnNldFpvb20ocGVy
Y2VudCAvIDEwMC4wZik7CiAgICAgICAgIH0gZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUtPmlzTnVt
YmVyKCkpIHsKLSAgICAgICAgICAgIHJlc2V0RWZmZWN0aXZlWm9vbShzZWxlY3Rvcik7CisgICAg
ICAgICAgICByZXNldEVmZmVjdGl2ZVpvb20oc3R5bGVSZXNvbHZlcik7CiAgICAgICAgICAgICBp
ZiAoZmxvYXQgbnVtYmVyID0gcHJpbWl0aXZlVmFsdWUtPmdldEZsb2F0VmFsdWUoKSkKLSAgICAg
ICAgICAgICAgICBzZWxlY3Rvci0+c2V0Wm9vbShudW1iZXIpOworICAgICAgICAgICAgICAgIHN0
eWxlUmVzb2x2ZXItPnNldFpvb20obnVtYmVyKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTY1
OSw0MiArMTY1OSw0MiBAQCBwdWJsaWM6CiAKIGNsYXNzIEFwcGx5UHJvcGVydHlEaXNwbGF5IHsK
IHByaXZhdGU6Ci0gICAgc3RhdGljIGlubGluZSBib29sIGlzVmFsaWREaXNwbGF5VmFsdWUoU3R5
bGVSZXNvbHZlciogc2VsZWN0b3IsIEVEaXNwbGF5IGRpc3BsYXlQcm9wZXJ0eVZhbHVlKQorICAg
IHN0YXRpYyBpbmxpbmUgYm9vbCBpc1ZhbGlkRGlzcGxheVZhbHVlKFN0eWxlUmVzb2x2ZXIqIHN0
eWxlUmVzb2x2ZXIsIEVEaXNwbGF5IGRpc3BsYXlQcm9wZXJ0eVZhbHVlKQogICAgIHsKICNpZiBF
TkFCTEUoU1ZHKQotICAgICAgICBpZiAoc2VsZWN0b3ItPmVsZW1lbnQoKSAmJiBzZWxlY3Rvci0+
ZWxlbWVudCgpLT5pc1NWR0VsZW1lbnQoKSAmJiBzZWxlY3Rvci0+c3R5bGUoKS0+c3R5bGVUeXBl
KCkgPT0gTk9QU0VVRE8pCisgICAgICAgIGlmIChzdHlsZVJlc29sdmVyLT5lbGVtZW50KCkgJiYg
c3R5bGVSZXNvbHZlci0+ZWxlbWVudCgpLT5pc1NWR0VsZW1lbnQoKSAmJiBzdHlsZVJlc29sdmVy
LT5zdHlsZSgpLT5zdHlsZVR5cGUoKSA9PSBOT1BTRVVETykKICAgICAgICAgICAgIHJldHVybiAo
ZGlzcGxheVByb3BlcnR5VmFsdWUgPT0gSU5MSU5FIHx8IGRpc3BsYXlQcm9wZXJ0eVZhbHVlID09
IEJMT0NLIHx8IGRpc3BsYXlQcm9wZXJ0eVZhbHVlID09IE5PTkUpOwogI2Vsc2UKLSAgICAgICAg
VU5VU0VEX1BBUkFNKHNlbGVjdG9yKTsKKyAgICAgICAgVU5VU0VEX1BBUkFNKHN0eWxlUmVzb2x2
ZXIpOwogICAgICAgICBVTlVTRURfUEFSQU0oZGlzcGxheVByb3BlcnR5VmFsdWUpOwogI2VuZGlm
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIHB1YmxpYzoKLSAgICBzdGF0aWMgdm9pZCBh
cHBseUluaGVyaXRWYWx1ZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvcikKKyAgICBzdGF0aWMgdm9p
ZCBhcHBseUluaGVyaXRWYWx1ZShTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyKQogICAgIHsK
LSAgICAgICAgRURpc3BsYXkgZGlzcGxheSA9IHNlbGVjdG9yLT5wYXJlbnRTdHlsZSgpLT5kaXNw
bGF5KCk7Ci0gICAgICAgIGlmICghaXNWYWxpZERpc3BsYXlWYWx1ZShzZWxlY3RvciwgZGlzcGxh
eSkpCisgICAgICAgIEVEaXNwbGF5IGRpc3BsYXkgPSBzdHlsZVJlc29sdmVyLT5wYXJlbnRTdHls
ZSgpLT5kaXNwbGF5KCk7CisgICAgICAgIGlmICghaXNWYWxpZERpc3BsYXlWYWx1ZShzdHlsZVJl
c29sdmVyLCBkaXNwbGF5KSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgc2VsZWN0b3It
PnN0eWxlKCktPnNldERpc3BsYXkoZGlzcGxheSk7CisgICAgICAgIHN0eWxlUmVzb2x2ZXItPnN0
eWxlKCktPnNldERpc3BsYXkoZGlzcGxheSk7CiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQgYXBw
bHlJbml0aWFsVmFsdWUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IpCisgICAgc3RhdGljIHZvaWQg
YXBwbHlJbml0aWFsVmFsdWUoU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlcikKICAgICB7Ci0g
ICAgICAgIHNlbGVjdG9yLT5zdHlsZSgpLT5zZXREaXNwbGF5KFJlbmRlclN0eWxlOjppbml0aWFs
RGlzcGxheSgpKTsKKyAgICAgICAgc3R5bGVSZXNvbHZlci0+c3R5bGUoKS0+c2V0RGlzcGxheShS
ZW5kZXJTdHlsZTo6aW5pdGlhbERpc3BsYXkoKSk7CiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQg
YXBwbHlWYWx1ZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvciwgQ1NTVmFsdWUqIHZhbHVlKQorICAg
IHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUoU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciwgQ1NT
VmFsdWUqIHZhbHVlKQogICAgIHsKICAgICAgICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1
ZSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIEVEaXNwbGF5IGRpc3BsYXkgPSAq
c3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CiAKLSAgICAgICAgaWYgKCFp
c1ZhbGlkRGlzcGxheVZhbHVlKHNlbGVjdG9yLCBkaXNwbGF5KSkKKyAgICAgICAgaWYgKCFpc1Zh
bGlkRGlzcGxheVZhbHVlKHN0eWxlUmVzb2x2ZXIsIGRpc3BsYXkpKQogICAgICAgICAgICAgcmV0
dXJuOwogCi0gICAgICAgIHNlbGVjdG9yLT5zdHlsZSgpLT5zZXREaXNwbGF5KGRpc3BsYXkpOwor
ICAgICAgICBzdHlsZVJlc29sdmVyLT5zdHlsZSgpLT5zZXREaXNwbGF5KGRpc3BsYXkpOwogICAg
IH0KIAogICAgIHN0YXRpYyBQcm9wZXJ0eUhhbmRsZXIgY3JlYXRlSGFuZGxlcigpCkBAIC0xNzA1
LDI2ICsxNzA1LDI2IEBAIHB1YmxpYzoKIAogY2xhc3MgQXBwbHlQcm9wZXJ0eUZsZXggewogcHVi
bGljOgotICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5oZXJpdFZhbHVlKFN0eWxlUmVzb2x2ZXIqIHNl
bGVjdG9yKQorICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5oZXJpdFZhbHVlKFN0eWxlUmVzb2x2ZXIq
IHN0eWxlUmVzb2x2ZXIpCiAgICAgewotICAgICAgICBBcHBseVByb3BlcnR5RGVmYXVsdEJhc2U8
ZmxvYXQsICZSZW5kZXJTdHlsZTo6cG9zaXRpdmVGbGV4LCBmbG9hdCwgJlJlbmRlclN0eWxlOjpz
ZXRQb3NpdGl2ZUZsZXgsIGZsb2F0LCAmUmVuZGVyU3R5bGU6OmluaXRpYWxOZWdhdGl2ZUZsZXg+
OjphcHBseUluaGVyaXRWYWx1ZShzZWxlY3Rvcik7Ci0gICAgICAgIEFwcGx5UHJvcGVydHlEZWZh
dWx0QmFzZTxmbG9hdCwgJlJlbmRlclN0eWxlOjpuZWdhdGl2ZUZsZXgsIGZsb2F0LCAmUmVuZGVy
U3R5bGU6OnNldE5lZ2F0aXZlRmxleCwgZmxvYXQsICZSZW5kZXJTdHlsZTo6aW5pdGlhbFBvc2l0
aXZlRmxleD46OmFwcGx5SW5oZXJpdFZhbHVlKHNlbGVjdG9yKTsKLSAgICAgICAgQXBwbHlQcm9w
ZXJ0eURlZmF1bHRCYXNlPExlbmd0aCwgJlJlbmRlclN0eWxlOjpmbGV4UHJlZmVycmVkU2l6ZSwg
TGVuZ3RoLCAmUmVuZGVyU3R5bGU6OnNldEZsZXhQcmVmZXJyZWRTaXplLCBMZW5ndGgsICZSZW5k
ZXJTdHlsZTo6aW5pdGlhbEZsZXhQcmVmZXJyZWRTaXplPjo6YXBwbHlJbmhlcml0VmFsdWUoc2Vs
ZWN0b3IpOworICAgICAgICBBcHBseVByb3BlcnR5RGVmYXVsdEJhc2U8ZmxvYXQsICZSZW5kZXJT
dHlsZTo6cG9zaXRpdmVGbGV4LCBmbG9hdCwgJlJlbmRlclN0eWxlOjpzZXRQb3NpdGl2ZUZsZXgs
IGZsb2F0LCAmUmVuZGVyU3R5bGU6OmluaXRpYWxOZWdhdGl2ZUZsZXg+OjphcHBseUluaGVyaXRW
YWx1ZShzdHlsZVJlc29sdmVyKTsKKyAgICAgICAgQXBwbHlQcm9wZXJ0eURlZmF1bHRCYXNlPGZs
b2F0LCAmUmVuZGVyU3R5bGU6Om5lZ2F0aXZlRmxleCwgZmxvYXQsICZSZW5kZXJTdHlsZTo6c2V0
TmVnYXRpdmVGbGV4LCBmbG9hdCwgJlJlbmRlclN0eWxlOjppbml0aWFsUG9zaXRpdmVGbGV4Pjo6
YXBwbHlJbmhlcml0VmFsdWUoc3R5bGVSZXNvbHZlcik7CisgICAgICAgIEFwcGx5UHJvcGVydHlE
ZWZhdWx0QmFzZTxMZW5ndGgsICZSZW5kZXJTdHlsZTo6ZmxleFByZWZlcnJlZFNpemUsIExlbmd0
aCwgJlJlbmRlclN0eWxlOjpzZXRGbGV4UHJlZmVycmVkU2l6ZSwgTGVuZ3RoLCAmUmVuZGVyU3R5
bGU6OmluaXRpYWxGbGV4UHJlZmVycmVkU2l6ZT46OmFwcGx5SW5oZXJpdFZhbHVlKHN0eWxlUmVz
b2x2ZXIpOwogICAgIH0KIAotICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5pdGlhbFZhbHVlKFN0eWxl
UmVzb2x2ZXIqIHNlbGVjdG9yKQorICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5pdGlhbFZhbHVlKFN0
eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIpCiAgICAgewotICAgICAgICBzZWxlY3Rvci0+c3R5
bGUoKS0+c2V0UG9zaXRpdmVGbGV4KFJlbmRlclN0eWxlOjppbml0aWFsUG9zaXRpdmVGbGV4KCkp
OwotICAgICAgICBzZWxlY3Rvci0+c3R5bGUoKS0+c2V0TmVnYXRpdmVGbGV4KFJlbmRlclN0eWxl
Ojppbml0aWFsTmVnYXRpdmVGbGV4KCkpOwotICAgICAgICBzZWxlY3Rvci0+c3R5bGUoKS0+c2V0
RmxleFByZWZlcnJlZFNpemUoUmVuZGVyU3R5bGU6OmluaXRpYWxGbGV4UHJlZmVycmVkU2l6ZSgp
KTsKKyAgICAgICAgc3R5bGVSZXNvbHZlci0+c3R5bGUoKS0+c2V0UG9zaXRpdmVGbGV4KFJlbmRl
clN0eWxlOjppbml0aWFsUG9zaXRpdmVGbGV4KCkpOworICAgICAgICBzdHlsZVJlc29sdmVyLT5z
dHlsZSgpLT5zZXROZWdhdGl2ZUZsZXgoUmVuZGVyU3R5bGU6OmluaXRpYWxOZWdhdGl2ZUZsZXgo
KSk7CisgICAgICAgIHN0eWxlUmVzb2x2ZXItPnN0eWxlKCktPnNldEZsZXhQcmVmZXJyZWRTaXpl
KFJlbmRlclN0eWxlOjppbml0aWFsRmxleFByZWZlcnJlZFNpemUoKSk7CiAgICAgfQogCi0gICAg
c3RhdGljIHZvaWQgYXBwbHlWYWx1ZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvciwgQ1NTVmFsdWUq
IHZhbHVlKQorICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUoU3R5bGVSZXNvbHZlciogc3R5bGVS
ZXNvbHZlciwgQ1NTVmFsdWUqIHZhbHVlKQogICAgIHsKICAgICAgICAgaWYgKHZhbHVlLT5pc1By
aW1pdGl2ZVZhbHVlKCkpIHsKICAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRp
dmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOwogICAgICAg
ICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlTm9uZSkKLSAg
ICAgICAgICAgICAgICBhcHBseUluaXRpYWxWYWx1ZShzZWxlY3Rvcik7CisgICAgICAgICAgICAg
ICAgYXBwbHlJbml0aWFsVmFsdWUoc3R5bGVSZXNvbHZlcik7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIApAQCAtMTczNywxMyArMTczNywxMyBAQCBwdWJsaWM6CiAgICAgICAgIGZs
b2F0IGZsZXhWYWx1ZSA9IDA7CiAgICAgICAgIGlmICghZ2V0RmxleFZhbHVlKHZhbHVlTGlzdC0+
aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygwKSwgZmxleFZhbHVlKSkKICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgc2VsZWN0b3ItPnN0eWxlKCktPnNldFBvc2l0aXZlRmxleChmbGV4VmFsdWUp
OworICAgICAgICBzdHlsZVJlc29sdmVyLT5zdHlsZSgpLT5zZXRQb3NpdGl2ZUZsZXgoZmxleFZh
bHVlKTsKIAogICAgICAgICBpZiAoIWdldEZsZXhWYWx1ZSh2YWx1ZUxpc3QtPml0ZW1XaXRob3V0
Qm91bmRzQ2hlY2soMSksIGZsZXhWYWx1ZSkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IHNlbGVjdG9yLT5zdHlsZSgpLT5zZXROZWdhdGl2ZUZsZXgoZmxleFZhbHVlKTsKKyAgICAgICAg
c3R5bGVSZXNvbHZlci0+c3R5bGUoKS0+c2V0TmVnYXRpdmVGbGV4KGZsZXhWYWx1ZSk7CiAKLSAg
ICAgICAgQXBwbHlQcm9wZXJ0eUxlbmd0aDwmUmVuZGVyU3R5bGU6OmZsZXhQcmVmZXJyZWRTaXpl
LCAmUmVuZGVyU3R5bGU6OnNldEZsZXhQcmVmZXJyZWRTaXplLCAmUmVuZGVyU3R5bGU6OmluaXRp
YWxGbGV4UHJlZmVycmVkU2l6ZSwgQXV0b0VuYWJsZWQ+OjphcHBseVZhbHVlKHNlbGVjdG9yLCB2
YWx1ZUxpc3QtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMikpOworICAgICAgICBBcHBseVByb3Bl
cnR5TGVuZ3RoPCZSZW5kZXJTdHlsZTo6ZmxleFByZWZlcnJlZFNpemUsICZSZW5kZXJTdHlsZTo6
c2V0RmxleFByZWZlcnJlZFNpemUsICZSZW5kZXJTdHlsZTo6aW5pdGlhbEZsZXhQcmVmZXJyZWRT
aXplLCBBdXRvRW5hYmxlZD46OmFwcGx5VmFsdWUoc3R5bGVSZXNvbHZlciwgdmFsdWVMaXN0LT5p
dGVtV2l0aG91dEJvdW5kc0NoZWNrKDIpKTsKICAgICB9CiAKICAgICBzdGF0aWMgUHJvcGVydHlI
YW5kbGVyIGNyZWF0ZUhhbmRsZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlQnVpbGRlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlci5oCmluZGV4IGJj
Y2U4ZjRiODEyNjNmNjEwY2YwMDdlNDVmMTA4ODc2NGQ1YzM0NTUuLmE3MjIxY2I0ZWVkMjVkZjZh
MThiZTMzNWFhYzFlZDk3NGQ4MWIzZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZUJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyLmgKQEAg
LTQyLDkgKzQyLDkgQEAgcHVibGljOgogICAgIHR5cGVkZWYgdm9pZCAoKkFwcGx5RnVuY3Rpb24p
KFN0eWxlUmVzb2x2ZXIqLCBDU1NWYWx1ZSopOwogICAgIFByb3BlcnR5SGFuZGxlcigpIDogbV9p
bmhlcml0KDApLCBtX2luaXRpYWwoMCksIG1fYXBwbHkoMCkgeyB9CiAgICAgUHJvcGVydHlIYW5k
bGVyKEluaGVyaXRGdW5jdGlvbiBpbmhlcml0LCBJbml0aWFsRnVuY3Rpb24gaW5pdGlhbCwgQXBw
bHlGdW5jdGlvbiBhcHBseSkgOiBtX2luaGVyaXQoaW5oZXJpdCksIG1faW5pdGlhbChpbml0aWFs
KSwgbV9hcHBseShhcHBseSkgeyB9Ci0gICAgdm9pZCBhcHBseUluaGVyaXRWYWx1ZShTdHlsZVJl
c29sdmVyKiBzZWxlY3RvcikgY29uc3QgeyBBU1NFUlQobV9pbmhlcml0KTsgKCptX2luaGVyaXQp
KHNlbGVjdG9yKTsgfQotICAgIHZvaWQgYXBwbHlJbml0aWFsVmFsdWUoU3R5bGVSZXNvbHZlciog
c2VsZWN0b3IpIGNvbnN0IHsgQVNTRVJUKG1faW5pdGlhbCk7ICgqbV9pbml0aWFsKShzZWxlY3Rv
cik7IH0KLSAgICB2b2lkIGFwcGx5VmFsdWUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIENTU1Zh
bHVlKiB2YWx1ZSkgY29uc3QgeyBBU1NFUlQobV9hcHBseSk7ICgqbV9hcHBseSkoc2VsZWN0b3Is
IHZhbHVlKTsgfQorICAgIHZvaWQgYXBwbHlJbmhlcml0VmFsdWUoU3R5bGVSZXNvbHZlciogc3R5
bGVSZXNvbHZlcikgY29uc3QgeyBBU1NFUlQobV9pbmhlcml0KTsgKCptX2luaGVyaXQpKHN0eWxl
UmVzb2x2ZXIpOyB9CisgICAgdm9pZCBhcHBseUluaXRpYWxWYWx1ZShTdHlsZVJlc29sdmVyKiBz
dHlsZVJlc29sdmVyKSBjb25zdCB7IEFTU0VSVChtX2luaXRpYWwpOyAoKm1faW5pdGlhbCkoc3R5
bGVSZXNvbHZlcik7IH0KKyAgICB2b2lkIGFwcGx5VmFsdWUoU3R5bGVSZXNvbHZlciogc3R5bGVS
ZXNvbHZlciwgQ1NTVmFsdWUqIHZhbHVlKSBjb25zdCB7IEFTU0VSVChtX2FwcGx5KTsgKCptX2Fw
cGx5KShzdHlsZVJlc29sdmVyLCB2YWx1ZSk7IH0KICAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7
IHJldHVybiBtX2luaGVyaXQgJiYgbV9pbml0aWFsICYmIG1fYXBwbHk7IH0KICAgICBJbmhlcml0
RnVuY3Rpb24gaW5oZXJpdEZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pbmhlcml0OyB9CiAg
ICAgSW5pdGlhbEZ1bmN0aW9uIGluaXRpYWxGdW5jdGlvbigpIHsgcmV0dXJuIG1faW5pdGlhbDsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlTWVkaWEuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlTWVkaWEuY3BwCmluZGV4IDFhN2MzMTIzNGU5ZjllOWI3Yzk1YTRl
ZjVhZmUzNjI0YzIwMjhiNGMuLjkzMWU2YmIyNGM4OGMwODNjOTY0YjUzMTc1OGMzOGUzYzMxNzc2
YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZU1lZGlhLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVNZWRpYS5jcHAKQEAgLTYwLDExICs2MCwxMSBAQCBib29s
IFN0eWxlTWVkaWE6Om1hdGNoTWVkaXVtKGNvbnN0IFN0cmluZyYgcXVlcnkpIGNvbnN0CiAgICAg
aWYgKCFkb2N1bWVudEVsZW1lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFN0eWxl
UmVzb2x2ZXIqIHN0eWxlU2VsZWN0b3IgPSBkb2N1bWVudC0+c3R5bGVTZWxlY3RvcigpOwotICAg
IGlmICghc3R5bGVTZWxlY3RvcikKKyAgICBTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyID0g
ZG9jdW1lbnQtPnN0eWxlUmVzb2x2ZXIoKTsKKyAgICBpZiAoIXN0eWxlUmVzb2x2ZXIpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gcm9vdFN0eWxlID0g
c3R5bGVTZWxlY3Rvci0+c3R5bGVGb3JFbGVtZW50KGRvY3VtZW50RWxlbWVudCwgMCAvKmRlZmF1
bHRQYXJlbnQqLywgRGlzYWxsb3dTdHlsZVNoYXJpbmcsIE1hdGNoT25seVVzZXJBZ2VudFJ1bGVz
KTsKKyAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IHJvb3RTdHlsZSA9IHN0eWxlUmVzb2x2ZXItPnN0
eWxlRm9yRWxlbWVudChkb2N1bWVudEVsZW1lbnQsIDAgLypkZWZhdWx0UGFyZW50Ki8sIERpc2Fs
bG93U3R5bGVTaGFyaW5nLCBNYXRjaE9ubHlVc2VyQWdlbnRSdWxlcyk7CiAKICAgICBSZWZQdHI8
TWVkaWFRdWVyeVNldD4gbWVkaWEgPSBNZWRpYVF1ZXJ5U2V0OjpjcmVhdGUoKTsKICAgICBpZiAo
IW1lZGlhLT5wYXJzZShxdWVyeSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBhZmFkNmI2
ODUyOGMzMmI0ZWRhZDZkMGJiYWE3NzI2MGU5N2FlZjgwLi5lMWViNzRiNTI1ZWFlMGMxYTg2NzE3
ODRkOGMxOTU2NDgyOWE4NWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTUyNyw4ICs1
MjcsOCBAQCBEb2N1bWVudDo6RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmws
IGJvb2wgaXNYSFRNTCwgYm9vbCBpc0hUTUwpCiAKICAgICBtX2dvdG9BbmNob3JOZWVkZWRBZnRl
clN0eWxlc2hlZXRzTG9hZCA9IGZhbHNlOwogCi0gICAgbV9kaWRDYWxjdWxhdGVTdHlsZVNlbGVj
dG9yID0gZmFsc2U7Ci0gICAgbV9oYXNEaXJ0eVN0eWxlU2VsZWN0b3IgPSBmYWxzZTsKKyAgICBt
X2RpZENhbGN1bGF0ZVN0eWxlUmVzb2x2ZXIgPSBmYWxzZTsKKyAgICBtX2hhc0RpcnR5U3R5bGVS
ZXNvbHZlciA9IGZhbHNlOwogICAgIG1fcGVuZGluZ1N0eWxlc2hlZXRzID0gMDsKICAgICBtX2ln
bm9yZVBlbmRpbmdTdHlsZXNoZWV0cyA9IGZhbHNlOwogICAgIG1faGFzTm9kZXNXaXRoUGxhY2Vo
b2xkZXJTdHlsZSA9IGZhbHNlOwpAQCAtNjE2LDcgKzYxNiw3IEBAIERvY3VtZW50Ojp+RG9jdW1l
bnQoKQogICAgIGlmIChtX21lZGlhUXVlcnlNYXRjaGVyKQogICAgICAgICBtX21lZGlhUXVlcnlN
YXRjaGVyLT5kb2N1bWVudERlc3Ryb3llZCgpOwogCi0gICAgY2xlYXJTdHlsZVNlbGVjdG9yKCk7
IC8vIFdlIG5lZWQgdG8gZGVzdG9yeSBDU1NGb250U2VsZWN0b3IgYmVmb3JlIGRlc3Ryb3lpbmcg
bV9jYWNoZWRSZXNvdXJjZUxvYWRlci4KKyAgICBjbGVhclN0eWxlUmVzb2x2ZXIoKTsgLy8gV2Ug
bmVlZCB0byBkZXN0b3J5IENTU0ZvbnRTZWxlY3RvciBiZWZvcmUgZGVzdHJveWluZyBtX2NhY2hl
ZFJlc291cmNlTG9hZGVyLgogICAgIG1fY2FjaGVkUmVzb3VyY2VMb2FkZXIuY2xlYXIoKTsKIAog
ICAgIC8vIFdlIG11c3QgY2FsbCBjbGVhclJhcmVEYXRhKCkgaGVyZSBzaW5jZSBhIERvY3VtZW50
IGNsYXNzIGluaGVyaXRzIFRyZWVTY29wZQpAQCAtNzcxLDcgKzc3MSw3IEBAIHZvaWQgRG9jdW1l
bnQ6OnNldERvY1R5cGUoUGFzc1JlZlB0cjxEb2N1bWVudFR5cGU+IGRvY1R5cGUpCiAgICAgaWYg
KG1fZG9jVHlwZSkKICAgICAgICAgdGhpcy0+YWRvcHRJZk5lZWRlZChtX2RvY1R5cGUuZ2V0KCkp
OwogICAgIC8vIERvY3R5cGUgYWZmZWN0cyB0aGUgaW50ZXJwcmV0YXRpb24gb2YgdGhlIHN0eWxl
c2hlZXRzLgotICAgIGNsZWFyU3R5bGVTZWxlY3RvcigpOworICAgIGNsZWFyU3R5bGVSZXNvbHZl
cigpOwogfQogCiBET01JbXBsZW1lbnRhdGlvbiogRG9jdW1lbnQ6OmltcGxlbWVudGF0aW9uKCkK
QEAgLTc5MCw3ICs3OTAsNyBAQCB2b2lkIERvY3VtZW50OjpjaGlsZHJlbkNoYW5nZWQoYm9vbCBj
aGFuZ2VkQnlQYXJzZXIsIE5vZGUqIGJlZm9yZUNoYW5nZSwgTm9kZSogYQogICAgICAgICByZXR1
cm47CiAgICAgbV9kb2N1bWVudEVsZW1lbnQgPSBuZXdEb2N1bWVudEVsZW1lbnQ7CiAgICAgLy8g
VGhlIHJvb3Qgc3R5bGUgdXNlZCBmb3IgbWVkaWEgcXVlcnkgbWF0Y2hpbmcgZGVwZW5kcyBvbiB0
aGUgZG9jdW1lbnQgZWxlbWVudC4KLSAgICBjbGVhclN0eWxlU2VsZWN0b3IoKTsKKyAgICBjbGVh
clN0eWxlUmVzb2x2ZXIoKTsKIH0KIAogUGFzc1JlZlB0cjxFbGVtZW50PiBEb2N1bWVudDo6Y3Jl
YXRlRWxlbWVudChjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQpA
QCAtMTI0NSw3ICsxMjQ1LDcgQEAgdm9pZCBEb2N1bWVudDo6c2V0Q29udGVudExhbmd1YWdlKGNv
bnN0IFN0cmluZyYgbGFuZ3VhZ2UpCiAgICAgbV9jb250ZW50TGFuZ3VhZ2UgPSBsYW5ndWFnZTsK
IAogICAgIC8vIFJlY2FsY3VsYXRlIHN0eWxlIHNvIGxhbmd1YWdlIGlzIHVzZWQgd2hlbiBzZWxl
Y3RpbmcgdGhlIGluaXRpYWwgZm9udC4KLSAgICBzdHlsZVNlbGVjdG9yQ2hhbmdlZChEZWZlclJl
Y2FsY1N0eWxlKTsKKyAgICBzdHlsZVJlc29sdmVyQ2hhbmdlZChEZWZlclJlY2FsY1N0eWxlKTsK
IH0KIAogdm9pZCBEb2N1bWVudDo6c2V0WE1MVmVyc2lvbihjb25zdCBTdHJpbmcmIHZlcnNpb24s
IEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtMTY5Niw3ICsxNjk2LDcgQEAgdm9pZCBEb2N1bWVudDo6
cmVjYWxjU3R5bGUoU3R5bGVDaGFuZ2UgY2hhbmdlKQogICAgIGlmIChtX2luU3R5bGVSZWNhbGMp
CiAgICAgICAgIHJldHVybjsgLy8gR3VhcmQgYWdhaW5zdCByZS1lbnRyYW5jeS4gLWR3aAogICAg
IAotICAgIGlmIChtX2hhc0RpcnR5U3R5bGVTZWxlY3RvcikKKyAgICBpZiAobV9oYXNEaXJ0eVN0
eWxlUmVzb2x2ZXIpCiAgICAgICAgIHVwZGF0ZUFjdGl2ZVN0eWxlc2hlZXRzKFJlY2FsY1N0eWxl
SW1tZWRpYXRlbHkpOwogCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tp
ZSA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJlY2FsY3VsYXRlU3R5bGUodGhpcyk7
CkBAIC0xNzI1LDcgKzE3MjUsNyBAQCB2b2lkIERvY3VtZW50OjpyZWNhbGNTdHlsZShTdHlsZUNo
YW5nZSBjaGFuZ2UpCiAgICAgICAgIC8vIHN0eWxlIHNlbGVjdG9yIG1heSBzZXQgdGhpcyBhZ2Fp
biBkdXJpbmcgcmVjYWxjCiAgICAgICAgIG1faGFzTm9kZXNXaXRoUGxhY2Vob2xkZXJTdHlsZSA9
IGZhbHNlOwogICAgICAgICAKLSAgICAgICAgUmVmUHRyPFJlbmRlclN0eWxlPiBkb2N1bWVudFN0
eWxlID0gU3R5bGVSZXNvbHZlcjo6c3R5bGVGb3JEb2N1bWVudCh0aGlzLCBtX3N0eWxlU2VsZWN0
b3IgPyBtX3N0eWxlU2VsZWN0b3ItPmZvbnRTZWxlY3RvcigpIDogMCk7CisgICAgICAgIFJlZlB0
cjxSZW5kZXJTdHlsZT4gZG9jdW1lbnRTdHlsZSA9IFN0eWxlUmVzb2x2ZXI6OnN0eWxlRm9yRG9j
dW1lbnQodGhpcywgbV9zdHlsZVJlc29sdmVyID8gbV9zdHlsZVJlc29sdmVyLT5mb250U2VsZWN0
b3IoKSA6IDApOwogICAgICAgICBTdHlsZUNoYW5nZSBjaCA9IE5vZGU6OmRpZmYoZG9jdW1lbnRT
dHlsZS5nZXQoKSwgcmVuZGVyZXIoKS0+c3R5bGUoKSwgdGhpcyk7CiAgICAgICAgIGlmIChjaCAh
PSBOb0NoYW5nZSkKICAgICAgICAgICAgIHJlbmRlcmVyKCktPnNldFN0eWxlKGRvY3VtZW50U3R5
bGUucmVsZWFzZSgpKTsKQEAgLTE3NTYsNyArMTc1Niw3IEBAIGJhaWxfb3V0OgogICAgIG1faW5T
dHlsZVJlY2FsYyA9IGZhbHNlOwogICAgIAogICAgIC8vIFBzZXVkbyBlbGVtZW50IHJlbW92YWwg
YW5kIHNpbWlsYXIgbWF5IG9ubHkgd29yayB3aXRoIHRoZXNlIGZsYWdzIHN0aWxsIHNldC4gUmVz
ZXQgdGhlbSBhZnRlciB0aGUgc3R5bGUgcmVjYWxjLgotICAgIGlmIChtX3N0eWxlU2VsZWN0b3Ip
CisgICAgaWYgKG1fc3R5bGVSZXNvbHZlcikKICAgICAgICAgcmVzZXRDU1NGZWF0dXJlRmxhZ3Mo
KTsKIAogICAgIGlmIChmcmFtZVZpZXcpIHsKQEAgLTE4NDIsNyArMTg0Miw3IEBAIHZvaWQgRG9j
dW1lbnQ6OnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpCiAgICAgICAgIEhU
TUxFbGVtZW50KiBib2R5RWxlbWVudCA9IGJvZHkoKTsKICAgICAgICAgaWYgKGJvZHlFbGVtZW50
ICYmICFib2R5RWxlbWVudC0+cmVuZGVyZXIoKSAmJiBtX3BlbmRpbmdTaGVldExheW91dCA9PSBO
b0xheW91dFdpdGhQZW5kaW5nU2hlZXRzKSB7CiAgICAgICAgICAgICBtX3BlbmRpbmdTaGVldExh
eW91dCA9IERpZExheW91dFdpdGhQZW5kaW5nU2hlZXRzOwotICAgICAgICAgICAgc3R5bGVTZWxl
Y3RvckNoYW5nZWQoUmVjYWxjU3R5bGVJbW1lZGlhdGVseSk7CisgICAgICAgICAgICBzdHlsZVJl
c29sdmVyQ2hhbmdlZChSZWNhbGNTdHlsZUltbWVkaWF0ZWx5KTsKICAgICAgICAgfSBlbHNlIGlm
IChtX2hhc05vZGVzV2l0aFBsYWNlaG9sZGVyU3R5bGUpCiAgICAgICAgICAgICAvLyBJZiBuZXcg
bm9kZXMgaGF2ZSBiZWVuIGFkZGVkIG9yIHN0eWxlIHJlY2FsYyBoYXMgYmVlbiBkb25lIHdpdGgg
c3R5bGUgc2hlZXRzIHN0aWxsIHBlbmRpbmcsIHNvbWUgbm9kZXMgCiAgICAgICAgICAgICAvLyBt
YXkgbm90IGhhdmUgaGFkIHRoZWlyIHJlYWwgc3R5bGUgY2FsY3VsYXRlZCB5ZXQuIE5vcm1hbGx5
IHRoaXMgZ2V0cyBjbGVhbmVkIHdoZW4gc3R5bGUgc2hlZXRzIGFycml2ZSAKQEAgLTE4NjEsMTQg
KzE4NjEsMTQgQEAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gRG9jdW1lbnQ6OnN0eWxlRm9yRWxl
bWVudElnbm9yaW5nUGVuZGluZ1N0eWxlc2hlZXRzKEVsZW0KIAogICAgIGJvb2wgb2xkSWdub3Jl
ID0gbV9pZ25vcmVQZW5kaW5nU3R5bGVzaGVldHM7CiAgICAgbV9pZ25vcmVQZW5kaW5nU3R5bGVz
aGVldHMgPSB0cnVlOwotICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gc3R5bGUgPSBzdHlsZVNlbGVj
dG9yKCktPnN0eWxlRm9yRWxlbWVudChlbGVtZW50LCBlbGVtZW50LT5wYXJlbnROb2RlKCkgPyBl
bGVtZW50LT5wYXJlbnROb2RlKCktPmNvbXB1dGVkU3R5bGUoKSA6IDApOworICAgIFJlZlB0cjxS
ZW5kZXJTdHlsZT4gc3R5bGUgPSBzdHlsZVJlc29sdmVyKCktPnN0eWxlRm9yRWxlbWVudChlbGVt
ZW50LCBlbGVtZW50LT5wYXJlbnROb2RlKCkgPyBlbGVtZW50LT5wYXJlbnROb2RlKCktPmNvbXB1
dGVkU3R5bGUoKSA6IDApOwogICAgIG1faWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzID0gb2xkSWdu
b3JlOwogICAgIHJldHVybiBzdHlsZS5yZWxlYXNlKCk7CiB9CiAKIFBhc3NSZWZQdHI8UmVuZGVy
U3R5bGU+IERvY3VtZW50OjpzdHlsZUZvclBhZ2UoaW50IHBhZ2VJbmRleCkKIHsKLSAgICBSZWZQ
dHI8UmVuZGVyU3R5bGU+IHN0eWxlID0gc3R5bGVTZWxlY3RvcigpLT5zdHlsZUZvclBhZ2UocGFn
ZUluZGV4KTsKKyAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IHN0eWxlID0gc3R5bGVSZXNvbHZlcigp
LT5zdHlsZUZvclBhZ2UocGFnZUluZGV4KTsKICAgICByZXR1cm4gc3R5bGUucmVsZWFzZSgpOwog
fQogCkBAIC0xOTQzLDMyICsxOTQzLDMyIEBAIHZvaWQgRG9jdW1lbnQ6OnNldElzVmlld1NvdXJj
ZShib29sIGlzVmlld1NvdXJjZSkKIHZvaWQgRG9jdW1lbnQ6OmNvbWJpbmVDU1NGZWF0dXJlRmxh
Z3MoKQogewogICAgIC8vIERlbGF5IHJlc2V0dGluZyB0aGUgZmxhZ3MgdW50aWwgYWZ0ZXIgbmV4
dCBzdHlsZSByZWNhbGMgc2luY2UgdW5hcHBseWluZyB0aGUgc3R5bGUgbWF5IG5vdCB3b3JrIHdp
dGhvdXQgdGhlc2Ugc2V0ICh0aGlzIGlzIHRydWUgYXQgbGVhc3Qgd2l0aCBiZWZvcmUvYWZ0ZXIp
LgotICAgIG1fdXNlc1NpYmxpbmdSdWxlcyA9IG1fdXNlc1NpYmxpbmdSdWxlcyB8fCBtX3N0eWxl
U2VsZWN0b3ItPnVzZXNTaWJsaW5nUnVsZXMoKTsKLSAgICBtX3VzZXNGaXJzdExpbmVSdWxlcyA9
IG1fdXNlc0ZpcnN0TGluZVJ1bGVzIHx8IG1fc3R5bGVTZWxlY3Rvci0+dXNlc0ZpcnN0TGluZVJ1
bGVzKCk7Ci0gICAgbV91c2VzQmVmb3JlQWZ0ZXJSdWxlcyA9IG1fdXNlc0JlZm9yZUFmdGVyUnVs
ZXMgfHwgbV9zdHlsZVNlbGVjdG9yLT51c2VzQmVmb3JlQWZ0ZXJSdWxlcygpOwotICAgIG1fdXNl
c0xpbmtSdWxlcyA9IG1fdXNlc0xpbmtSdWxlcyB8fCBtX3N0eWxlU2VsZWN0b3ItPnVzZXNMaW5r
UnVsZXMoKTsKKyAgICBtX3VzZXNTaWJsaW5nUnVsZXMgPSBtX3VzZXNTaWJsaW5nUnVsZXMgfHwg
bV9zdHlsZVJlc29sdmVyLT51c2VzU2libGluZ1J1bGVzKCk7CisgICAgbV91c2VzRmlyc3RMaW5l
UnVsZXMgPSBtX3VzZXNGaXJzdExpbmVSdWxlcyB8fCBtX3N0eWxlUmVzb2x2ZXItPnVzZXNGaXJz
dExpbmVSdWxlcygpOworICAgIG1fdXNlc0JlZm9yZUFmdGVyUnVsZXMgPSBtX3VzZXNCZWZvcmVB
ZnRlclJ1bGVzIHx8IG1fc3R5bGVSZXNvbHZlci0+dXNlc0JlZm9yZUFmdGVyUnVsZXMoKTsKKyAg
ICBtX3VzZXNMaW5rUnVsZXMgPSBtX3VzZXNMaW5rUnVsZXMgfHwgbV9zdHlsZVJlc29sdmVyLT51
c2VzTGlua1J1bGVzKCk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OnJlc2V0Q1NTRmVhdHVyZUZsYWdz
KCkKIHsKLSAgICBtX3VzZXNTaWJsaW5nUnVsZXMgPSBtX3N0eWxlU2VsZWN0b3ItPnVzZXNTaWJs
aW5nUnVsZXMoKTsKLSAgICBtX3VzZXNGaXJzdExpbmVSdWxlcyA9IG1fc3R5bGVTZWxlY3Rvci0+
dXNlc0ZpcnN0TGluZVJ1bGVzKCk7Ci0gICAgbV91c2VzQmVmb3JlQWZ0ZXJSdWxlcyA9IG1fc3R5
bGVTZWxlY3Rvci0+dXNlc0JlZm9yZUFmdGVyUnVsZXMoKTsKLSAgICBtX3VzZXNMaW5rUnVsZXMg
PSBtX3N0eWxlU2VsZWN0b3ItPnVzZXNMaW5rUnVsZXMoKTsKKyAgICBtX3VzZXNTaWJsaW5nUnVs
ZXMgPSBtX3N0eWxlUmVzb2x2ZXItPnVzZXNTaWJsaW5nUnVsZXMoKTsKKyAgICBtX3VzZXNGaXJz
dExpbmVSdWxlcyA9IG1fc3R5bGVSZXNvbHZlci0+dXNlc0ZpcnN0TGluZVJ1bGVzKCk7CisgICAg
bV91c2VzQmVmb3JlQWZ0ZXJSdWxlcyA9IG1fc3R5bGVSZXNvbHZlci0+dXNlc0JlZm9yZUFmdGVy
UnVsZXMoKTsKKyAgICBtX3VzZXNMaW5rUnVsZXMgPSBtX3N0eWxlUmVzb2x2ZXItPnVzZXNMaW5r
UnVsZXMoKTsKIH0KIAotdm9pZCBEb2N1bWVudDo6Y3JlYXRlU3R5bGVTZWxlY3RvcigpCit2b2lk
IERvY3VtZW50OjpjcmVhdGVTdHlsZVJlc29sdmVyKCkKIHsKICAgICBib29sIG1hdGNoQXV0aG9y
QW5kVXNlclN0eWxlcyA9IHRydWU7CiAgICAgaWYgKFNldHRpbmdzKiBkb2NTZXR0aW5ncyA9IHNl
dHRpbmdzKCkpCiAgICAgICAgIG1hdGNoQXV0aG9yQW5kVXNlclN0eWxlcyA9IGRvY1NldHRpbmdz
LT5hdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZCgpOwotICAgIG1fc3R5bGVTZWxlY3RvciA9IGFk
b3B0UHRyKG5ldyBTdHlsZVJlc29sdmVyKHRoaXMsIG1hdGNoQXV0aG9yQW5kVXNlclN0eWxlcykp
OworICAgIG1fc3R5bGVSZXNvbHZlciA9IGFkb3B0UHRyKG5ldyBTdHlsZVJlc29sdmVyKHRoaXMs
IG1hdGNoQXV0aG9yQW5kVXNlclN0eWxlcykpOwogICAgIGNvbWJpbmVDU1NGZWF0dXJlRmxhZ3Mo
KTsKIH0KIAotaW5saW5lIHZvaWQgRG9jdW1lbnQ6OmNsZWFyU3R5bGVTZWxlY3RvcigpCitpbmxp
bmUgdm9pZCBEb2N1bWVudDo6Y2xlYXJTdHlsZVJlc29sdmVyKCkKIHsKLSAgICBtX3N0eWxlU2Vs
ZWN0b3IuY2xlYXIoKTsKKyAgICBtX3N0eWxlUmVzb2x2ZXIuY2xlYXIoKTsKIH0KIAogdm9pZCBE
b2N1bWVudDo6YXR0YWNoKCkKQEAgLTI3ODMsNyArMjc4Myw3IEBAIHZvaWQgRG9jdW1lbnQ6OmNs
ZWFyUGFnZVVzZXJTaGVldCgpCiB7CiAgICAgaWYgKG1fcGFnZVVzZXJTaGVldCkgewogICAgICAg
ICBtX3BhZ2VVc2VyU2hlZXQgPSAwOwotICAgICAgICBzdHlsZVNlbGVjdG9yQ2hhbmdlZChEZWZl
clJlY2FsY1N0eWxlKTsKKyAgICAgICAgc3R5bGVSZXNvbHZlckNoYW5nZWQoRGVmZXJSZWNhbGNT
dHlsZSk7CiAgICAgfQogfQogCkBAIC0yNzkxLDcgKzI3OTEsNyBAQCB2b2lkIERvY3VtZW50Ojp1
cGRhdGVQYWdlVXNlclNoZWV0KCkKIHsKICAgICBjbGVhclBhZ2VVc2VyU2hlZXQoKTsKICAgICBp
ZiAocGFnZVVzZXJTaGVldCgpKQotICAgICAgICBzdHlsZVNlbGVjdG9yQ2hhbmdlZChSZWNhbGNT
dHlsZUltbWVkaWF0ZWx5KTsKKyAgICAgICAgc3R5bGVSZXNvbHZlckNoYW5nZWQoUmVjYWxjU3R5
bGVJbW1lZGlhdGVseSk7CiB9CiAKIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3R5bGVTaGVldEludGVy
bmFsPiA+KiBEb2N1bWVudDo6cGFnZUdyb3VwVXNlclNoZWV0cygpIGNvbnN0CkBAIC0yODM2LDcg
KzI4MzYsNyBAQCB2b2lkIERvY3VtZW50OjpjbGVhclBhZ2VHcm91cFVzZXJTaGVldHMoKQogICAg
IG1fcGFnZUdyb3VwVXNlclNoZWV0Q2FjaGVWYWxpZCA9IGZhbHNlOwogICAgIGlmIChtX3BhZ2VH
cm91cFVzZXJTaGVldHMgJiYgbV9wYWdlR3JvdXBVc2VyU2hlZXRzLT5zaXplKCkpIHsKICAgICAg
ICAgbV9wYWdlR3JvdXBVc2VyU2hlZXRzLT5jbGVhcigpOwotICAgICAgICBzdHlsZVNlbGVjdG9y
Q2hhbmdlZChEZWZlclJlY2FsY1N0eWxlKTsKKyAgICAgICAgc3R5bGVSZXNvbHZlckNoYW5nZWQo
RGVmZXJSZWNhbGNTdHlsZSk7CiAgICAgfQogfQogCkBAIC0yODQ0LDcgKzI4NDQsNyBAQCB2b2lk
IERvY3VtZW50Ojp1cGRhdGVQYWdlR3JvdXBVc2VyU2hlZXRzKCkKIHsKICAgICBjbGVhclBhZ2VH
cm91cFVzZXJTaGVldHMoKTsKICAgICBpZiAocGFnZUdyb3VwVXNlclNoZWV0cygpICYmIHBhZ2VH
cm91cFVzZXJTaGVldHMoKS0+c2l6ZSgpKQotICAgICAgICBzdHlsZVNlbGVjdG9yQ2hhbmdlZChS
ZWNhbGNTdHlsZUltbWVkaWF0ZWx5KTsKKyAgICAgICAgc3R5bGVSZXNvbHZlckNoYW5nZWQoUmVj
YWxjU3R5bGVJbW1lZGlhdGVseSk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OmFkZFVzZXJTaGVldChQ
YXNzUmVmUHRyPFN0eWxlU2hlZXRJbnRlcm5hbD4gdXNlclNoZWV0KQpAQCAtMjg1Miw3ICsyODUy
LDcgQEAgdm9pZCBEb2N1bWVudDo6YWRkVXNlclNoZWV0KFBhc3NSZWZQdHI8U3R5bGVTaGVldElu
dGVybmFsPiB1c2VyU2hlZXQpCiAgICAgaWYgKCFtX3VzZXJTaGVldHMpCiAgICAgICAgIG1fdXNl
clNoZWV0cyA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8UmVmUHRyPFN0eWxlU2hlZXRJbnRlcm5hbD4g
Pik7CiAgICAgbV91c2VyU2hlZXRzLT5hcHBlbmQodXNlclNoZWV0KTsKLSAgICBzdHlsZVNlbGVj
dG9yQ2hhbmdlZChSZWNhbGNTdHlsZUltbWVkaWF0ZWx5KTsKKyAgICBzdHlsZVJlc29sdmVyQ2hh
bmdlZChSZWNhbGNTdHlsZUltbWVkaWF0ZWx5KTsKIH0KIAogQ1NTU3R5bGVTaGVldCogRG9jdW1l
bnQ6OmVsZW1lbnRTaGVldCgpCkBAIC0yODk1LDcgKzI4OTUsNyBAQCB2b2lkIERvY3VtZW50Ojpw
cm9jZXNzSHR0cEVxdWl2KGNvbnN0IFN0cmluZyYgZXF1aXYsIGNvbnN0IFN0cmluZyYgY29udGVu
dCkKICAgICAgICAgLy8gLWR3aAogICAgICAgICBtX3NlbGVjdGVkU3R5bGVzaGVldFNldCA9IGNv
bnRlbnQ7CiAgICAgICAgIG1fcHJlZmVycmVkU3R5bGVzaGVldFNldCA9IGNvbnRlbnQ7Ci0gICAg
ICAgIHN0eWxlU2VsZWN0b3JDaGFuZ2VkKERlZmVyUmVjYWxjU3R5bGUpOworICAgICAgICBzdHls
ZVJlc29sdmVyQ2hhbmdlZChEZWZlclJlY2FsY1N0eWxlKTsKICAgICB9IGVsc2UgaWYgKGVxdWFs
SWdub3JpbmdDYXNlKGVxdWl2LCAicmVmcmVzaCIpKSB7CiAgICAgICAgIGRvdWJsZSBkZWxheTsK
ICAgICAgICAgU3RyaW5nIHVybDsKQEAgLTMxNzUsNyArMzE3NSw3IEBAIFN0cmluZyBEb2N1bWVu
dDo6c2VsZWN0ZWRTdHlsZXNoZWV0U2V0KCkgY29uc3QKIHZvaWQgRG9jdW1lbnQ6OnNldFNlbGVj
dGVkU3R5bGVzaGVldFNldChjb25zdCBTdHJpbmcmIGFTdHJpbmcpCiB7CiAgICAgbV9zZWxlY3Rl
ZFN0eWxlc2hlZXRTZXQgPSBhU3RyaW5nOwotICAgIHN0eWxlU2VsZWN0b3JDaGFuZ2VkKERlZmVy
UmVjYWxjU3R5bGUpOworICAgIHN0eWxlUmVzb2x2ZXJDaGFuZ2VkKERlZmVyUmVjYWxjU3R5bGUp
OwogfQogCiAvLyBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgd2hlbmV2ZXIgYSB0b3AtbGV2ZWwgc3R5
bGVzaGVldCBoYXMgZmluaXNoZWQgbG9hZGluZy4KQEAgLTMxOTQsNyArMzE5NCw3IEBAIHZvaWQg
RG9jdW1lbnQ6OnJlbW92ZVBlbmRpbmdTaGVldCgpCiAgICAgaWYgKG1fcGVuZGluZ1N0eWxlc2hl
ZXRzKQogICAgICAgICByZXR1cm47CiAKLSAgICBzdHlsZVNlbGVjdG9yQ2hhbmdlZChSZWNhbGNT
dHlsZUlmTmVlZGVkKTsKKyAgICBzdHlsZVJlc29sdmVyQ2hhbmdlZChSZWNhbGNTdHlsZUlmTmVl
ZGVkKTsKIAogICAgIGlmIChTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIqIHBhcnNlciA9IHNjcmlw
dGFibGVEb2N1bWVudFBhcnNlcigpKQogICAgICAgICBwYXJzZXItPmV4ZWN1dGVTY3JpcHRzV2Fp
dGluZ0ZvclN0eWxlc2hlZXRzKCk7CkBAIC0zMjA2LDE1ICszMjA2LDE1IEBAIHZvaWQgRG9jdW1l
bnQ6OnJlbW92ZVBlbmRpbmdTaGVldCgpCiB2b2lkIERvY3VtZW50OjpldmFsdWF0ZU1lZGlhUXVl
cnlMaXN0KCkKIHsKICAgICBpZiAobV9tZWRpYVF1ZXJ5TWF0Y2hlcikKLSAgICAgICAgbV9tZWRp
YVF1ZXJ5TWF0Y2hlci0+c3R5bGVTZWxlY3RvckNoYW5nZWQoKTsKKyAgICAgICAgbV9tZWRpYVF1
ZXJ5TWF0Y2hlci0+c3R5bGVSZXNvbHZlckNoYW5nZWQoKTsKIH0KIAotdm9pZCBEb2N1bWVudDo6
c3R5bGVTZWxlY3RvckNoYW5nZWQoU3R5bGVTZWxlY3RvclVwZGF0ZUZsYWcgdXBkYXRlRmxhZykK
K3ZvaWQgRG9jdW1lbnQ6OnN0eWxlUmVzb2x2ZXJDaGFuZ2VkKFN0eWxlUmVzb2x2ZXJVcGRhdGVG
bGFnIHVwZGF0ZUZsYWcpCiB7CiAgICAgLy8gRG9uJ3QgYm90aGVyIHVwZGF0aW5nLCBzaW5jZSB3
ZSBoYXZlbid0IGxvYWRlZCBhbGwgb3VyIHN0eWxlIGluZm8geWV0CiAgICAgLy8gYW5kIGhhdmVu
J3QgY2FsY3VsYXRlZCB0aGUgc3R5bGUgc2VsZWN0b3IgZm9yIHRoZSBmaXJzdCB0aW1lLgotICAg
IGlmICghYXR0YWNoZWQoKSB8fCAoIW1fZGlkQ2FsY3VsYXRlU3R5bGVTZWxlY3RvciAmJiAhaGF2
ZVN0eWxlc2hlZXRzTG9hZGVkKCkpKSB7Ci0gICAgICAgIG1fc3R5bGVTZWxlY3Rvci5jbGVhcigp
OworICAgIGlmICghYXR0YWNoZWQoKSB8fCAoIW1fZGlkQ2FsY3VsYXRlU3R5bGVSZXNvbHZlciAm
JiAhaGF2ZVN0eWxlc2hlZXRzTG9hZGVkKCkpKSB7CisgICAgICAgIG1fc3R5bGVSZXNvbHZlci5j
bGVhcigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zNDE5LDkgKzM0MTksOSBAQCBi
b29sIERvY3VtZW50Ojp0ZXN0QWRkZWRTdHlsZXNoZWV0UmVxdWlyZXNTdHlsZVJlY2FsYyhTdHls
ZVNoZWV0SW50ZXJuYWwqIHN0eWxlcwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBEb2N1
bWVudDo6YW5hbHl6ZVN0eWxlc2hlZXRDaGFuZ2UoU3R5bGVTZWxlY3RvclVwZGF0ZUZsYWcgdXBk
YXRlRmxhZywgY29uc3QgVmVjdG9yPFJlZlB0cjxTdHlsZVNoZWV0PiA+JiBuZXdTdHlsZXNoZWV0
cywgYm9vbCYgcmVxdWlyZXNTdHlsZVNlbGVjdG9yUmVzZXQsIGJvb2wmIHJlcXVpcmVzRnVsbFN0
eWxlUmVjYWxjKQordm9pZCBEb2N1bWVudDo6YW5hbHl6ZVN0eWxlc2hlZXRDaGFuZ2UoU3R5bGVS
ZXNvbHZlclVwZGF0ZUZsYWcgdXBkYXRlRmxhZywgY29uc3QgVmVjdG9yPFJlZlB0cjxTdHlsZVNo
ZWV0PiA+JiBuZXdTdHlsZXNoZWV0cywgYm9vbCYgcmVxdWlyZXNTdHlsZVJlc29sdmVyUmVzZXQs
IGJvb2wmIHJlcXVpcmVzRnVsbFN0eWxlUmVjYWxjKQogewotICAgIHJlcXVpcmVzU3R5bGVTZWxl
Y3RvclJlc2V0ID0gdHJ1ZTsKKyAgICByZXF1aXJlc1N0eWxlUmVzb2x2ZXJSZXNldCA9IHRydWU7
CiAgICAgcmVxdWlyZXNGdWxsU3R5bGVSZWNhbGMgPSB0cnVlOwogICAgIAogICAgIC8vIFN0eWxl
c2hlZXRzIG9mIDxzdHlsZT4gZWxlbWVudHMgdGhhdCBAaW1wb3J0IHN0eWxlc2hlZXRzIGFyZSBh
Y3RpdmUgYnV0IGxvYWRpbmcuIFdlIG5lZWQgdG8gdHJpZ2dlciBhIGZ1bGwgcmVjYWxjIHdoZW4g
c3VjaCBsb2FkcyBhcmUgZG9uZS4KQEAgLTM0MzksNyArMzQzOSw3IEBAIHZvaWQgRG9jdW1lbnQ6
OmFuYWx5emVTdHlsZXNoZWV0Q2hhbmdlKFN0eWxlU2VsZWN0b3JVcGRhdGVGbGFnIHVwZGF0ZUZs
YWcsIGNvbnN0CiAKICAgICBpZiAodXBkYXRlRmxhZyAhPSBSZWNhbGNTdHlsZUlmTmVlZGVkKQog
ICAgICAgICByZXR1cm47Ci0gICAgaWYgKCFtX3N0eWxlU2VsZWN0b3IpCisgICAgaWYgKCFtX3N0
eWxlUmVzb2x2ZXIpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFNlZSBpZiB3ZSBhcmUganVz
dCBhZGRpbmcgc3R5bGVzaGVldHMuCkBAIC0zNDUwLDcgKzM0NTAsNyBAQCB2b2lkIERvY3VtZW50
OjphbmFseXplU3R5bGVzaGVldENoYW5nZShTdHlsZVNlbGVjdG9yVXBkYXRlRmxhZyB1cGRhdGVG
bGFnLCBjb25zdAogICAgICAgICBpZiAobV9zdHlsZVNoZWV0cy0+aXRlbShpKSAhPSBuZXdTdHls
ZXNoZWV0c1tpXSkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgcmVxdWlyZXNTdHls
ZVNlbGVjdG9yUmVzZXQgPSBmYWxzZTsKKyAgICByZXF1aXJlc1N0eWxlUmVzb2x2ZXJSZXNldCA9
IGZhbHNlOwogCiAgICAgLy8gSWYgd2UgYXJlIGFscmVhZHkgcGFyc2luZyB0aGUgYm9keSBhbmQg
c28gbWF5IGhhdmUgc2lnbmlmaWNhbnQgYW1vdW50IG9mIGVsZW1lbnRzLCBwdXQgc29tZSBlZmZv
cnQgaW50byB0cnlpbmcgdG8gYXZvaWQgc3R5bGUgcmVjYWxjcy4KICAgICBpZiAoIWJvZHkoKSB8
fCBtX2hhc05vZGVzV2l0aFBsYWNlaG9sZGVyU3R5bGUpCkBAIC0zNDc3LDEzICszNDc3LDEzIEBA
IHN0YXRpYyBib29sIHN0eWxlU2hlZXRzVXNlUmVtVW5pdHMoY29uc3QgVmVjdG9yPFJlZlB0cjxT
dHlsZVNoZWV0PiA+JiBzaGVldHMpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIERvY3Vt
ZW50Ojp1cGRhdGVBY3RpdmVTdHlsZXNoZWV0cyhTdHlsZVNlbGVjdG9yVXBkYXRlRmxhZyB1cGRh
dGVGbGFnKQorYm9vbCBEb2N1bWVudDo6dXBkYXRlQWN0aXZlU3R5bGVzaGVldHMoU3R5bGVSZXNv
bHZlclVwZGF0ZUZsYWcgdXBkYXRlRmxhZykKIHsKICAgICBpZiAobV9pblN0eWxlUmVjYWxjKSB7
CiAgICAgICAgIC8vIFNWRyA8dXNlPiBlbGVtZW50IG1heSBtYW5hZ2UgdG8gaW52YWxpZGF0ZSBz
dHlsZSBzZWxlY3RvciBpbiB0aGUgbWlkZGxlIG9mIGEgc3R5bGUgcmVjYWxjLgogICAgICAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQzNDQKICAgICAgICAg
Ly8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIGZpeGVkIGluIFNWRyBhbmQgdGhpcyBjb2RlIHJlcGxh
Y2VkIHdpdGggQVNTRVJUKCFtX2luU3R5bGVSZWNhbGMpLgotICAgICAgICBtX2hhc0RpcnR5U3R5
bGVTZWxlY3RvciA9IHRydWU7CisgICAgICAgIG1faGFzRGlydHlTdHlsZVJlc29sdmVyID0gdHJ1
ZTsKICAgICAgICAgc2NoZWR1bGVGb3JjZWRTdHlsZVJlY2FsYygpOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQpAQCAtMzQ5MywyMSArMzQ5MywyMSBAQCBib29sIERvY3VtZW50Ojp1cGRh
dGVBY3RpdmVTdHlsZXNoZWV0cyhTdHlsZVNlbGVjdG9yVXBkYXRlRmxhZyB1cGRhdGVGbGFnKQog
ICAgIFN0eWxlU2hlZXRWZWN0b3IgbmV3U3R5bGVzaGVldHM7CiAgICAgY29sbGVjdEFjdGl2ZVN0
eWxlc2hlZXRzKG5ld1N0eWxlc2hlZXRzKTsKIAotICAgIGJvb2wgcmVxdWlyZXNTdHlsZVNlbGVj
dG9yUmVzZXQ7CisgICAgYm9vbCByZXF1aXJlc1N0eWxlUmVzb2x2ZXJSZXNldDsKICAgICBib29s
IHJlcXVpcmVzRnVsbFN0eWxlUmVjYWxjOwotICAgIGFuYWx5emVTdHlsZXNoZWV0Q2hhbmdlKHVw
ZGF0ZUZsYWcsIG5ld1N0eWxlc2hlZXRzLCByZXF1aXJlc1N0eWxlU2VsZWN0b3JSZXNldCwgcmVx
dWlyZXNGdWxsU3R5bGVSZWNhbGMpOworICAgIGFuYWx5emVTdHlsZXNoZWV0Q2hhbmdlKHVwZGF0
ZUZsYWcsIG5ld1N0eWxlc2hlZXRzLCByZXF1aXJlc1N0eWxlUmVzb2x2ZXJSZXNldCwgcmVxdWly
ZXNGdWxsU3R5bGVSZWNhbGMpOwogCi0gICAgaWYgKHJlcXVpcmVzU3R5bGVTZWxlY3RvclJlc2V0
KQotICAgICAgICBjbGVhclN0eWxlU2VsZWN0b3IoKTsKKyAgICBpZiAocmVxdWlyZXNTdHlsZVJl
c29sdmVyUmVzZXQpCisgICAgICAgIGNsZWFyU3R5bGVSZXNvbHZlcigpOwogICAgIGVsc2Ugewot
ICAgICAgICBtX3N0eWxlU2VsZWN0b3ItPmFwcGVuZEF1dGhvclN0eWxlc2hlZXRzKG1fc3R5bGVT
aGVldHMtPmxlbmd0aCgpLCBuZXdTdHlsZXNoZWV0cyk7CisgICAgICAgIG1fc3R5bGVSZXNvbHZl
ci0+YXBwZW5kQXV0aG9yU3R5bGVzaGVldHMobV9zdHlsZVNoZWV0cy0+bGVuZ3RoKCksIG5ld1N0
eWxlc2hlZXRzKTsKICAgICAgICAgcmVzZXRDU1NGZWF0dXJlRmxhZ3MoKTsKICAgICB9CiAgICAg
bV9zdHlsZVNoZWV0cy0+c3dhcChuZXdTdHlsZXNoZWV0cyk7CiAKICAgICBtX3VzZXNSZW1Vbml0
cyA9IHN0eWxlU2hlZXRzVXNlUmVtVW5pdHMobV9zdHlsZVNoZWV0cy0+dmVjdG9yKCkpOwotICAg
IG1fZGlkQ2FsY3VsYXRlU3R5bGVTZWxlY3RvciA9IHRydWU7Ci0gICAgbV9oYXNEaXJ0eVN0eWxl
U2VsZWN0b3IgPSBmYWxzZTsKKyAgICBtX2RpZENhbGN1bGF0ZVN0eWxlUmVzb2x2ZXIgPSB0cnVl
OworICAgIG1faGFzRGlydHlTdHlsZVJlc29sdmVyID0gZmFsc2U7CiAgICAgCiAgICAgcmV0dXJu
IHJlcXVpcmVzRnVsbFN0eWxlUmVjYWxjOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCAxYjQy
NWI1Nzc2ZTNjZDE1MjZhOGJiZjUxZTI5NTJkMDI4MTE1MzYyLi4zNWQ0ZmViYmU4Y2Q2YmRkZDFi
YjFkYTVlNWEzZDE2ODRlMzA3MGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMjEzLDcgKzIx
Myw3IEBAIGVudW0gUGFnZXNob3dFdmVudFBlcnNpc3RlbmNlIHsKICAgICBQYWdlc2hvd0V2ZW50
UGVyc2lzdGVkID0gMQogfTsKIAotZW51bSBTdHlsZVNlbGVjdG9yVXBkYXRlRmxhZyB7IFJlY2Fs
Y1N0eWxlSW1tZWRpYXRlbHksIERlZmVyUmVjYWxjU3R5bGUsIFJlY2FsY1N0eWxlSWZOZWVkZWQg
fTsKK2VudW0gU3R5bGVSZXNvbHZlclVwZGF0ZUZsYWcgeyBSZWNhbGNTdHlsZUltbWVkaWF0ZWx5
LCBEZWZlclJlY2FsY1N0eWxlLCBSZWNhbGNTdHlsZUlmTmVlZGVkIH07CiAKIGNsYXNzIERvY3Vt
ZW50IDogcHVibGljIENvbnRhaW5lck5vZGUsIHB1YmxpYyBUcmVlU2NvcGUsIHB1YmxpYyBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0IHsKIHB1YmxpYzoKQEAgLTQ1NCwxOCArNDU0LDE4IEBAIHB1Ymxp
YzoKIAogICAgIGJvb2wgaXNTcmNkb2NEb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1faXNTcmNk
b2NEb2N1bWVudDsgfQogCi0gICAgU3R5bGVSZXNvbHZlciogc3R5bGVTZWxlY3RvcklmRXhpc3Rz
KCkgY29uc3QgeyByZXR1cm4gbV9zdHlsZVNlbGVjdG9yLmdldCgpOyB9CisgICAgU3R5bGVSZXNv
bHZlciogc3R5bGVSZXNvbHZlcklmRXhpc3RzKCkgY29uc3QgeyByZXR1cm4gbV9zdHlsZVJlc29s
dmVyLmdldCgpOyB9CiAKICAgICBib29sIGlzVmlld1NvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNWaWV3U291cmNlOyB9CiAgICAgdm9pZCBzZXRJc1ZpZXdTb3VyY2UoYm9vbCk7CiAKICAgICBi
b29sIHNhd0VsZW1lbnRzSW5Lbm93bk5hbWVzcGFjZXMoKSBjb25zdCB7IHJldHVybiBtX3Nhd0Vs
ZW1lbnRzSW5Lbm93bk5hbWVzcGFjZXM7IH0KIAotICAgIFN0eWxlUmVzb2x2ZXIqIHN0eWxlU2Vs
ZWN0b3IoKQorICAgIFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIoKQogICAgIHsgCi0gICAg
ICAgIGlmICghbV9zdHlsZVNlbGVjdG9yKQotICAgICAgICAgICAgY3JlYXRlU3R5bGVTZWxlY3Rv
cigpOwotICAgICAgICByZXR1cm4gbV9zdHlsZVNlbGVjdG9yLmdldCgpOworICAgICAgICBpZiAo
IW1fc3R5bGVSZXNvbHZlcikKKyAgICAgICAgICAgIGNyZWF0ZVN0eWxlUmVzb2x2ZXIoKTsKKyAg
ICAgICAgcmV0dXJuIG1fc3R5bGVSZXNvbHZlci5nZXQoKTsKICAgICB9CiAKICAgICAvKioKQEAg
LTQ5NywxMyArNDk3LDEzIEBAIHB1YmxpYzoKICAgICAvKioKICAgICAgKiBDYWxsZWQgd2hlbiBv
bmUgb3IgbW9yZSBzdHlsZXNoZWV0cyBpbiB0aGUgZG9jdW1lbnQgbWF5IGhhdmUgYmVlbiBhZGRl
ZCwgcmVtb3ZlZCBvciBjaGFuZ2VkLgogICAgICAqCi0gICAgICogQ3JlYXRlcyBhIG5ldyBzdHls
ZSBzZWxlY3RvciBhbmQgYXNzaWduIGl0IHRvIHRoaXMgZG9jdW1lbnQuIFRoaXMgaXMgZG9uZSBi
eSBpdGVyYXRpbmcgdGhyb3VnaCBhbGwgbm9kZXMgaW4KKyAgICAgKiBDcmVhdGVzIGEgbmV3IHN0
eWxlIHJlc29sdmVyIGFuZCBhc3NpZ24gaXQgdG8gdGhpcyBkb2N1bWVudC4gVGhpcyBpcyBkb25l
IGJ5IGl0ZXJhdGluZyB0aHJvdWdoIGFsbCBub2RlcyBpbgogICAgICAqIGRvY3VtZW50IChvciB0
aG9zZSBiZWZvcmUgPEJPRFk+IGluIGEgSFRNTCBkb2N1bWVudCksIHNlYXJjaGluZyBmb3Igc3R5
bGVzaGVldHMuIFN0eWxlc2hlZXRzIGNhbiBiZSBjb250YWluZWQgaW4KICAgICAgKiA8TElOSz4s
IDxTVFlMRT4gb3IgPEJPRFk+IGVsZW1lbnRzLCBhcyB3ZWxsIGFzIHByb2Nlc3NpbmcgaW5zdHJ1
Y3Rpb25zIChYTUwgZG9jdW1lbnRzIG9ubHkpLiBBIGxpc3QgaXMKICAgICAgKiBjb25zdHJ1Y3Rl
ZCBmcm9tIHRoZXNlIHdoaWNoIGlzIHVzZWQgdG8gY3JlYXRlIHRoZSBhIG5ldyBzdHlsZSBzZWxl
Y3RvciB3aGljaCBjb2xsYXRlcyBhbGwgb2YgdGhlIHN0eWxlc2hlZXRzCiAgICAgICogZm91bmQg
YW5kIGlzIHVzZWQgdG8gY2FsY3VsYXRlIHRoZSBkZXJpdmVkIHN0eWxlcyBmb3IgYWxsIHJlbmRl
cmluZyBvYmplY3RzLgogICAgICAqLwotICAgIHZvaWQgc3R5bGVTZWxlY3RvckNoYW5nZWQoU3R5
bGVTZWxlY3RvclVwZGF0ZUZsYWcpOworICAgIHZvaWQgc3R5bGVSZXNvbHZlckNoYW5nZWQoU3R5
bGVSZXNvbHZlclVwZGF0ZUZsYWcpOwogCiAgICAgdm9pZCBldmFsdWF0ZU1lZGlhUXVlcnlMaXN0
KCk7CiAKQEAgLTExODUsMTUgKzExODUsMTUgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgYnVpbGRB
Y2Nlc3NLZXlNYXAoVHJlZVNjb3BlKiByb290KTsKIAotICAgIHZvaWQgY3JlYXRlU3R5bGVTZWxl
Y3RvcigpOwotICAgIHZvaWQgY2xlYXJTdHlsZVNlbGVjdG9yKCk7CisgICAgdm9pZCBjcmVhdGVT
dHlsZVJlc29sdmVyKCk7CisgICAgdm9pZCBjbGVhclN0eWxlUmVzb2x2ZXIoKTsKICAgICB2b2lk
IGNvbWJpbmVDU1NGZWF0dXJlRmxhZ3MoKTsKICAgICB2b2lkIHJlc2V0Q1NTRmVhdHVyZUZsYWdz
KCk7CiAgICAgCi0gICAgYm9vbCB1cGRhdGVBY3RpdmVTdHlsZXNoZWV0cyhTdHlsZVNlbGVjdG9y
VXBkYXRlRmxhZyk7CisgICAgYm9vbCB1cGRhdGVBY3RpdmVTdHlsZXNoZWV0cyhTdHlsZVJlc29s
dmVyVXBkYXRlRmxhZyk7CiAgICAgdm9pZCBjb2xsZWN0QWN0aXZlU3R5bGVzaGVldHMoVmVjdG9y
PFJlZlB0cjxTdHlsZVNoZWV0PiA+Jik7CiAgICAgYm9vbCB0ZXN0QWRkZWRTdHlsZXNoZWV0UmVx
dWlyZXNTdHlsZVJlY2FsYyhTdHlsZVNoZWV0SW50ZXJuYWwqKTsKLSAgICB2b2lkIGFuYWx5emVT
dHlsZXNoZWV0Q2hhbmdlKFN0eWxlU2VsZWN0b3JVcGRhdGVGbGFnLCBjb25zdCBWZWN0b3I8UmVm
UHRyPFN0eWxlU2hlZXQ+ID4mIG5ld1N0eWxlc2hlZXRzLCBib29sJiByZXF1aXJlc1N0eWxlU2Vs
ZWN0b3JSZXNldCwgYm9vbCYgcmVxdWlyZXNGdWxsU3R5bGVSZWNhbGMpOworICAgIHZvaWQgYW5h
bHl6ZVN0eWxlc2hlZXRDaGFuZ2UoU3R5bGVSZXNvbHZlclVwZGF0ZUZsYWcsIGNvbnN0IFZlY3Rv
cjxSZWZQdHI8U3R5bGVTaGVldD4gPiYgbmV3U3R5bGVzaGVldHMsIGJvb2wmIHJlcXVpcmVzU3R5
bGVSZXNvbHZlclJlc2V0LCBib29sJiByZXF1aXJlc0Z1bGxTdHlsZVJlY2FsYyk7CiAKICAgICB2
b2lkIGRlbGV0ZUN1c3RvbUZvbnRzKCk7CiAKQEAgLTEyMjQsOSArMTIyNCw5IEBAIHByaXZhdGU6
CiAKICAgICBpbnQgbV9ndWFyZFJlZkNvdW50OwogCi0gICAgT3duUHRyPFN0eWxlUmVzb2x2ZXI+
IG1fc3R5bGVTZWxlY3RvcjsKLSAgICBib29sIG1fZGlkQ2FsY3VsYXRlU3R5bGVTZWxlY3RvcjsK
LSAgICBib29sIG1faGFzRGlydHlTdHlsZVNlbGVjdG9yOworICAgIE93blB0cjxTdHlsZVJlc29s
dmVyPiBtX3N0eWxlUmVzb2x2ZXI7CisgICAgYm9vbCBtX2RpZENhbGN1bGF0ZVN0eWxlUmVzb2x2
ZXI7CisgICAgYm9vbCBtX2hhc0RpcnR5U3R5bGVSZXNvbHZlcjsKICAgICBWZWN0b3I8T3duUHRy
PEZvbnREYXRhPiA+IG1fY3VzdG9tRm9udHM7CiAKICAgICBGcmFtZSogbV9mcmFtZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmNwcAppbmRleCA3OTcxZjYyOGNjOGE0MDc4MTA3YTJjNzBmZTMxMGY2YzE3MGFm
YTg1Li43NWViZjNmNzkwNzM1YWQ1NTUzMDZhOTIxZjM3Njg0MWQxMzQ1Yjg5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuY3BwCkBAIC04MywzOCArODMsMzggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdXNp
bmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIHVzaW5nIG5hbWVzcGFjZSBYTUxOYW1lczsKICAgICAK
LWNsYXNzIFN0eWxlU2VsZWN0b3JQYXJlbnRQdXNoZXIgeworY2xhc3MgU3R5bGVSZXNvbHZlclBh
cmVudFB1c2hlciB7CiBwdWJsaWM6Ci0gICAgU3R5bGVTZWxlY3RvclBhcmVudFB1c2hlcihFbGVt
ZW50KiBwYXJlbnQpCisgICAgU3R5bGVSZXNvbHZlclBhcmVudFB1c2hlcihFbGVtZW50KiBwYXJl
bnQpCiAgICAgICAgIDogbV9wYXJlbnQocGFyZW50KQotICAgICAgICAsIG1fcHVzaGVkU3R5bGVT
ZWxlY3RvcigwKQorICAgICAgICAsIG1fcHVzaGVkU3R5bGVSZXNvbHZlcigwKQogICAgIHsKICAg
ICB9CiAgICAgdm9pZCBwdXNoKCkKICAgICB7Ci0gICAgICAgIGlmIChtX3B1c2hlZFN0eWxlU2Vs
ZWN0b3IpCisgICAgICAgIGlmIChtX3B1c2hlZFN0eWxlUmVzb2x2ZXIpCiAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIG1fcHVzaGVkU3R5bGVTZWxlY3RvciA9IG1fcGFyZW50LT5kb2N1bWVu
dCgpLT5zdHlsZVNlbGVjdG9yKCk7Ci0gICAgICAgIG1fcHVzaGVkU3R5bGVTZWxlY3Rvci0+cHVz
aFBhcmVudEVsZW1lbnQobV9wYXJlbnQpOworICAgICAgICBtX3B1c2hlZFN0eWxlUmVzb2x2ZXIg
PSBtX3BhcmVudC0+ZG9jdW1lbnQoKS0+c3R5bGVSZXNvbHZlcigpOworICAgICAgICBtX3B1c2hl
ZFN0eWxlUmVzb2x2ZXItPnB1c2hQYXJlbnRFbGVtZW50KG1fcGFyZW50KTsKICAgICB9Ci0gICAg
flN0eWxlU2VsZWN0b3JQYXJlbnRQdXNoZXIoKSAKKyAgICB+U3R5bGVSZXNvbHZlclBhcmVudFB1
c2hlcigpCiAgICAgewogCi0gICAgICAgIGlmICghbV9wdXNoZWRTdHlsZVNlbGVjdG9yKQorICAg
ICAgICBpZiAoIW1fcHVzaGVkU3R5bGVSZXNvbHZlcikKICAgICAgICAgICAgIHJldHVybjsKIAog
ICAgICAgICAvLyBUaGlzIHRlbGxzIHVzIHRoYXQgb3VyIHB1c2hlZCBzdHlsZSBzZWxlY3RvciBp
cyBpbiBhIGJhZCBzdGF0ZSwKICAgICAgICAgLy8gc28gd2Ugc2hvdWxkIGp1c3QgYmFpbCBvdXQg
aW4gdGhhdCBzY2VuYXJpby4KLSAgICAgICAgQVNTRVJUKG1fcHVzaGVkU3R5bGVTZWxlY3RvciA9
PSBtX3BhcmVudC0+ZG9jdW1lbnQoKS0+c3R5bGVTZWxlY3RvcigpKTsKLSAgICAgICAgaWYgKG1f
cHVzaGVkU3R5bGVTZWxlY3RvciAhPSBtX3BhcmVudC0+ZG9jdW1lbnQoKS0+c3R5bGVTZWxlY3Rv
cigpKQorICAgICAgICBBU1NFUlQobV9wdXNoZWRTdHlsZVJlc29sdmVyID09IG1fcGFyZW50LT5k
b2N1bWVudCgpLT5zdHlsZVJlc29sdmVyKCkpOworICAgICAgICBpZiAobV9wdXNoZWRTdHlsZVJl
c29sdmVyICE9IG1fcGFyZW50LT5kb2N1bWVudCgpLT5zdHlsZVJlc29sdmVyKCkpCiAgICAgICAg
ICAgICByZXR1cm47CiAKLSAgICAgICAgbV9wdXNoZWRTdHlsZVNlbGVjdG9yLT5wb3BQYXJlbnRF
bGVtZW50KG1fcGFyZW50KTsgCisgICAgICAgIG1fcHVzaGVkU3R5bGVSZXNvbHZlci0+cG9wUGFy
ZW50RWxlbWVudChtX3BhcmVudCk7CiAgICAgfQogCiBwcml2YXRlOgogICAgIEVsZW1lbnQqIG1f
cGFyZW50OwotICAgIFN0eWxlUmVzb2x2ZXIqIG1fcHVzaGVkU3R5bGVTZWxlY3RvcjsKKyAgICBT
dHlsZVJlc29sdmVyKiBtX3B1c2hlZFN0eWxlUmVzb2x2ZXI7CiB9OwogCiBQYXNzUmVmUHRyPEVs
ZW1lbnQ+IEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1
bWVudCogZG9jdW1lbnQpCkBAIC02OTcsOCArNjk3LDggQEAgdm9pZCBFbGVtZW50OjphdHRyaWJ1
dGVDaGFuZ2VkKEF0dHJpYnV0ZSogYXR0cikKICAgICAgICAgc2V0SGFzTmFtZSghYXR0ci0+aXNO
dWxsKCkpOwogCiAgICAgaWYgKCFuZWVkc1N0eWxlUmVjYWxjKCkgJiYgZG9jdW1lbnQoKS0+YXR0
YWNoZWQoKSkgewotICAgICAgICBTdHlsZVJlc29sdmVyKiBzdHlsZVNlbGVjdG9yID0gZG9jdW1l
bnQoKS0+c3R5bGVTZWxlY3RvcklmRXhpc3RzKCk7Ci0gICAgICAgIGlmICghc3R5bGVTZWxlY3Rv
ciB8fCBzdHlsZVNlbGVjdG9yLT5oYXNTZWxlY3RvckZvckF0dHJpYnV0ZShhdHRyLT5uYW1lKCku
bG9jYWxOYW1lKCkpKQorICAgICAgICBTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyID0gZG9j
dW1lbnQoKS0+c3R5bGVSZXNvbHZlcklmRXhpc3RzKCk7CisgICAgICAgIGlmICghc3R5bGVSZXNv
bHZlciB8fCBzdHlsZVJlc29sdmVyLT5oYXNTZWxlY3RvckZvckF0dHJpYnV0ZShhdHRyLT5uYW1l
KCkubG9jYWxOYW1lKCkpKQogICAgICAgICAgICAgc2V0TmVlZHNTdHlsZVJlY2FsYygpOwogICAg
IH0KIApAQCAtOTU4LDcgKzk1OCw3IEBAIHZvaWQgRWxlbWVudDo6YXR0YWNoKCkKICAgICBSZW5k
ZXJXaWRnZXQ6OnN1c3BlbmRXaWRnZXRIaWVyYXJjaHlVcGRhdGVzKCk7CiAKICAgICBjcmVhdGVS
ZW5kZXJlcklmTmVlZGVkKCk7Ci0gICAgU3R5bGVTZWxlY3RvclBhcmVudFB1c2hlciBwYXJlbnRQ
dXNoZXIodGhpcyk7CisgICAgU3R5bGVSZXNvbHZlclBhcmVudFB1c2hlciBwYXJlbnRQdXNoZXIo
dGhpcyk7CiAKICAgICAvLyBXaGVuIGEgc2hhZG93IHJvb3QgZXhpc3RzLCBpdCBkb2VzIHRoZSB3
b3JrIG9mIGF0dGFjaGluZyB0aGUgY2hpbGRyZW4uCiAgICAgaWYgKFNoYWRvd1RyZWUqIHRyZWUg
PSBzaGFkb3dUcmVlKCkpIHsKQEAgLTEwNTEsNyArMTA1MSw3IEBAIFBhc3NSZWZQdHI8UmVuZGVy
U3R5bGU+IEVsZW1lbnQ6OnN0eWxlRm9yUmVuZGVyZXIoKQogewogICAgIGlmIChoYXNDdXN0b21T
dHlsZUZvclJlbmRlcmVyKCkpCiAgICAgICAgIHJldHVybiBjdXN0b21TdHlsZUZvclJlbmRlcmVy
KCk7Ci0gICAgcmV0dXJuIGRvY3VtZW50KCktPnN0eWxlU2VsZWN0b3IoKS0+c3R5bGVGb3JFbGVt
ZW50KHN0YXRpY19jYXN0PEVsZW1lbnQqPih0aGlzKSk7CisgICAgcmV0dXJuIGRvY3VtZW50KCkt
PnN0eWxlUmVzb2x2ZXIoKS0+c3R5bGVGb3JFbGVtZW50KHN0YXRpY19jYXN0PEVsZW1lbnQqPih0
aGlzKSk7CiB9CiAKIHZvaWQgRWxlbWVudDo6cmVjYWxjU3R5bGUoU3R5bGVDaGFuZ2UgY2hhbmdl
KQpAQCAtMTEyNiw3ICsxMTI2LDcgQEAgdm9pZCBFbGVtZW50OjpyZWNhbGNTdHlsZShTdHlsZUNo
YW5nZSBjaGFuZ2UpCiAgICAgICAgIC8vIGFsbCB0aGUgd2F5IGRvd24gdGhlIHRyZWUuIFRoaXMg
aXMgc2ltcGxlciB0aGFuIGhhdmluZyB0byBtYWludGFpbiBhIGNhY2hlIG9mIG9iamVjdHMgKGFu
ZCBzdWNoIGZvbnQgc2l6ZSBjaGFuZ2VzIHNob3VsZCBiZSByYXJlIGFueXdheSkuCiAgICAgICAg
IGlmIChkb2N1bWVudCgpLT51c2VzUmVtVW5pdHMoKSAmJiBkb2N1bWVudCgpLT5kb2N1bWVudEVs
ZW1lbnQoKSA9PSB0aGlzICYmIGNoICE9IE5vQ2hhbmdlICYmIGN1cnJlbnRTdHlsZSAmJiBuZXdT
dHlsZSAmJiBjdXJyZW50U3R5bGUtPmZvbnRTaXplKCkgIT0gbmV3U3R5bGUtPmZvbnRTaXplKCkp
IHsKICAgICAgICAgICAgIC8vIENhY2hlZCBSZW5kZXJTdHlsZXMgbWF5IGRlcGVuZCBvbiB0aGUg
cmVtIHVuaXRzLgotICAgICAgICAgICAgZG9jdW1lbnQoKS0+c3R5bGVTZWxlY3RvcigpLT5pbnZh
bGlkYXRlTWF0Y2hlZFByb3BlcnRpZXNDYWNoZSgpOworICAgICAgICAgICAgZG9jdW1lbnQoKS0+
c3R5bGVSZXNvbHZlcigpLT5pbnZhbGlkYXRlTWF0Y2hlZFByb3BlcnRpZXNDYWNoZSgpOwogICAg
ICAgICAgICAgY2hhbmdlID0gRm9yY2U7CiAgICAgICAgIH0KIApAQCAtMTEzNyw3ICsxMTM3LDcg
QEAgdm9pZCBFbGVtZW50OjpyZWNhbGNTdHlsZShTdHlsZUNoYW5nZSBjaGFuZ2UpCiAgICAgICAg
ICAgICAgICAgY2hhbmdlID0gY2g7CiAgICAgICAgIH0KICAgICB9Ci0gICAgU3R5bGVTZWxlY3Rv
clBhcmVudFB1c2hlciBwYXJlbnRQdXNoZXIodGhpcyk7CisgICAgU3R5bGVSZXNvbHZlclBhcmVu
dFB1c2hlciBwYXJlbnRQdXNoZXIodGhpcyk7CiAgICAgLy8gRklYTUU6IFRoaXMgY2hlY2sgaXMg
Z29vZCBlbm91Z2ggZm9yIDpob3ZlciArIGZvbywgYnV0IGl0IGlzIG5vdCBnb29kIGVub3VnaCBm
b3IgOmhvdmVyICsgZm9vICsgYmFyLgogICAgIC8vIEZvciBub3cgd2Ugd2lsbCBqdXN0IHdvcnJ5
IGFib3V0IHRoZSBjb21tb24gY2FzZSwgc2luY2UgaXQncyBhIGxvdCB0cmlja2llciB0byBnZXQg
dGhlIHNlY29uZCBjYXNlIHJpZ2h0CiAgICAgLy8gd2l0aG91dCBkb2luZyB3YXkgdG9vIG11Y2gg
cmUtcmVzb2x1dGlvbi4KQEAgLTEzNDgsOSArMTM0OCw5IEBAIHZvaWQgRWxlbWVudDo6Y2hpbGRy
ZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyLCBOb2RlKiBiZWZvcmVDaGFuZ2UsIE5vZGUq
IGFmCiB2b2lkIEVsZW1lbnQ6OmJlZ2luUGFyc2luZ0NoaWxkcmVuKCkKIHsKICAgICBjbGVhcklz
UGFyc2luZ0NoaWxkcmVuRmluaXNoZWQoKTsKLSAgICBTdHlsZVJlc29sdmVyKiBzdHlsZVNlbGVj
dG9yID0gZG9jdW1lbnQoKS0+c3R5bGVTZWxlY3RvcklmRXhpc3RzKCk7Ci0gICAgaWYgKHN0eWxl
U2VsZWN0b3IgJiYgYXR0YWNoZWQoKSkKLSAgICAgICAgc3R5bGVTZWxlY3Rvci0+cHVzaFBhcmVu
dEVsZW1lbnQodGhpcyk7CisgICAgU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciA9IGRvY3Vt
ZW50KCktPnN0eWxlUmVzb2x2ZXJJZkV4aXN0cygpOworICAgIGlmIChzdHlsZVJlc29sdmVyICYm
IGF0dGFjaGVkKCkpCisgICAgICAgIHN0eWxlUmVzb2x2ZXItPnB1c2hQYXJlbnRFbGVtZW50KHRo
aXMpOwogfQogCiB2b2lkIEVsZW1lbnQ6OmZpbmlzaFBhcnNpbmdDaGlsZHJlbigpCkBAIC0xMzU4
LDggKzEzNTgsOCBAQCB2b2lkIEVsZW1lbnQ6OmZpbmlzaFBhcnNpbmdDaGlsZHJlbigpCiAgICAg
Q29udGFpbmVyTm9kZTo6ZmluaXNoUGFyc2luZ0NoaWxkcmVuKCk7CiAgICAgc2V0SXNQYXJzaW5n
Q2hpbGRyZW5GaW5pc2hlZCgpOwogICAgIGNoZWNrRm9yU2libGluZ1N0eWxlQ2hhbmdlcyh0aGlz
LCByZW5kZXJTdHlsZSgpLCB0cnVlLCBsYXN0Q2hpbGQoKSwgMCwgMCk7Ci0gICAgaWYgKFN0eWxl
UmVzb2x2ZXIqIHN0eWxlU2VsZWN0b3IgPSBkb2N1bWVudCgpLT5zdHlsZVNlbGVjdG9ySWZFeGlz
dHMoKSkKLSAgICAgICAgc3R5bGVTZWxlY3Rvci0+cG9wUGFyZW50RWxlbWVudCh0aGlzKTsKKyAg
ICBpZiAoU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciA9IGRvY3VtZW50KCktPnN0eWxlUmVz
b2x2ZXJJZkV4aXN0cygpKQorICAgICAgICBzdHlsZVJlc29sdmVyLT5wb3BQYXJlbnRFbGVtZW50
KHRoaXMpOwogfQogCiAjaWZuZGVmIE5ERUJVRwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vz
c2luZ0luc3RydWN0aW9uLmNwcAppbmRleCBiOGE3YzJmNWI3YjliOTc2M2M2ZWUwN2UzZjc2NDY4
NjcwZWE0Yjk4Li5lNzE4YTU1OGJkYWJlNjNkMTI4YzMxZDlmMmZjMmVlMzNkMDViNmRhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcApAQCAtMzA3LDcg
KzMwNyw3IEBAIHZvaWQgUHJvY2Vzc2luZ0luc3RydWN0aW9uOjpyZW1vdmVkRnJvbShOb2RlKiBp
bnNlcnRpb25Qb2ludCkKICAgICB9CiAKICAgICBpZiAobV9jYWNoZWRTaGVldCkKLSAgICAgICAg
ZG9jdW1lbnQoKS0+c3R5bGVTZWxlY3RvckNoYW5nZWQoRGVmZXJSZWNhbGNTdHlsZSk7CisgICAg
ICAgIGRvY3VtZW50KCktPnN0eWxlUmVzb2x2ZXJDaGFuZ2VkKERlZmVyUmVjYWxjU3R5bGUpOwog
fQogCiB2b2lkIFByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6ZmluaXNoUGFyc2luZ0NoaWxkcmVuKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcAppbmRleCAxOTRhNTZmZTdjNDNjYWYzODg3MWEzMmEx
ZjY1YWU0NWNkOThkODM4Li43YjQ0MGVlNjA1YWU1MGE1YmFiYWE0MTk3MDEyNzMxZGI0ODc3YWRj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCkBAIC0yMDAsMTAgKzIwMCwxMCBAQCB2b2lk
IFNoYWRvd1Jvb3Q6OnNldEFwcGx5QXV0aG9yU2hlZXRzKGJvb2wgdmFsdWUpCiAKIHZvaWQgU2hh
ZG93Um9vdDo6YXR0YWNoKCkKIHsKLSAgICBTdHlsZVJlc29sdmVyKiBzdHlsZVNlbGVjdG9yID0g
ZG9jdW1lbnQoKS0+c3R5bGVTZWxlY3RvcigpOwotICAgIHN0eWxlU2VsZWN0b3ItPnB1c2hQYXJl
bnRTaGFkb3dSb290KHRoaXMpOworICAgIFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIgPSBk
b2N1bWVudCgpLT5zdHlsZVJlc29sdmVyKCk7CisgICAgc3R5bGVSZXNvbHZlci0+cHVzaFBhcmVu
dFNoYWRvd1Jvb3QodGhpcyk7CiAgICAgRG9jdW1lbnRGcmFnbWVudDo6YXR0YWNoKCk7Ci0gICAg
c3R5bGVTZWxlY3Rvci0+cG9wUGFyZW50U2hhZG93Um9vdCh0aGlzKTsKKyAgICBzdHlsZVJlc29s
dmVyLT5wb3BQYXJlbnRTaGFkb3dSb290KHRoaXMpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2hhZG93VHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93
VHJlZS5jcHAKaW5kZXggN2E2MGI3ZTUxYzk0MTEzN2RhODk4NDc2ZmEzOWU5MjY4NzJmZjk2MC4u
NDQwOTJmNzVkNGZkNWJhMmNjNTNiNGJkMzM1ZWY3MWNmODVlNmMwNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1RyZWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9T
aGFkb3dUcmVlLmNwcApAQCAtMjIxLDE2ICsyMjEsMTYgQEAgdm9pZCBTaGFkb3dUcmVlOjpyZWNh
bGNTaGFkb3dUcmVlU3R5bGUoTm9kZTo6U3R5bGVDaGFuZ2UgY2hhbmdlKQogICAgIGlmIChuZWVk
c1JlYXR0YWNoSG9zdENoaWxkcmVuQW5kU2hhZG93KCkpCiAgICAgICAgIHJlYXR0YWNoSG9zdENo
aWxkcmVuQW5kU2hhZG93KCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIFN0eWxlUmVzb2x2ZXIqIHN0
eWxlU2VsZWN0b3IgPSB5b3VuZ2VzdC0+ZG9jdW1lbnQoKS0+c3R5bGVTZWxlY3RvcigpOworICAg
ICAgICBTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyID0geW91bmdlc3QtPmRvY3VtZW50KCkt
PnN0eWxlUmVzb2x2ZXIoKTsKIAotICAgICAgICBzdHlsZVNlbGVjdG9yLT5wdXNoUGFyZW50U2hh
ZG93Um9vdCh5b3VuZ2VzdCk7CisgICAgICAgIHN0eWxlUmVzb2x2ZXItPnB1c2hQYXJlbnRTaGFk
b3dSb290KHlvdW5nZXN0KTsKICAgICAgICAgZm9yIChOb2RlKiBuID0geW91bmdlc3QtPmZpcnN0
Q2hpbGQoKTsgbjsgbiA9IG4tPm5leHRTaWJsaW5nKCkpIHsKICAgICAgICAgICAgIGlmIChuLT5p
c0VsZW1lbnROb2RlKCkpCiAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG4p
LT5yZWNhbGNTdHlsZShjaGFuZ2UpOwogICAgICAgICAgICAgZWxzZSBpZiAobi0+aXNUZXh0Tm9k
ZSgpKQogICAgICAgICAgICAgICAgIHRvVGV4dChuKS0+cmVjYWxjVGV4dFN0eWxlKGNoYW5nZSk7
CiAgICAgICAgIH0KLSAgICAgICAgc3R5bGVTZWxlY3Rvci0+cG9wUGFyZW50U2hhZG93Um9vdCh5
b3VuZ2VzdCk7CisgICAgICAgIHN0eWxlUmVzb2x2ZXItPnBvcFBhcmVudFNoYWRvd1Jvb3QoeW91
bmdlc3QpOwogICAgIH0KIAogICAgIGNsZWFyTmVlZHNSZWF0dGFjaEhvc3RDaGlsZHJlbkFuZFNo
YWRvdygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVFbGVtZW50LmNwcAppbmRleCA1YzM0ZjI1N2U4MTcy
MmQ5ZmMxNGMwNmE2MmRkODNjN2IyODFkMDA3Li40MjE2OGZiMmMzZWMyMGQzZjc4ZjNhMDBhNzZh
ZGJhMDk0Y2MzOWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVFbGVtZW50LmNwcApAQCAtNzksNyAr
NzksNyBAQCB2b2lkIFN0eWxlRWxlbWVudDo6cmVtb3ZlZEZyb21Eb2N1bWVudChEb2N1bWVudCog
ZG9jdW1lbnQsIEVsZW1lbnQqIGVsZW1lbnQpCiAKICAgICAvLyBJZiB3ZSdyZSBpbiBkb2N1bWVu
dCB0ZWFyZG93biwgdGhlbiB3ZSBkb24ndCBuZWVkIHRvIGRvIGFueSBub3RpZmljYXRpb24gb2Yg
b3VyIHNoZWV0J3MgcmVtb3ZhbC4KICAgICBpZiAoZG9jdW1lbnQtPnJlbmRlcmVyKCkpCi0gICAg
ICAgIGRvY3VtZW50LT5zdHlsZVNlbGVjdG9yQ2hhbmdlZChEZWZlclJlY2FsY1N0eWxlKTsKKyAg
ICAgICAgZG9jdW1lbnQtPnN0eWxlUmVzb2x2ZXJDaGFuZ2VkKERlZmVyUmVjYWxjU3R5bGUpOwog
fQogCiB2b2lkIFN0eWxlRWxlbWVudDo6Y2xlYXJEb2N1bWVudERhdGEoRG9jdW1lbnQqIGRvY3Vt
ZW50LCBFbGVtZW50KiBlbGVtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0aW5nU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUu
Y3BwCmluZGV4IGI2OTZjZjQwNDhkOTcyYTdjYTMzM2YzYWE4NGE0MDkxNTFjNTEwMjguLjI2NDdl
NDA0OTBmNThmNTJiZTBiYWNlMTQ5NDBmZTQ0MjhkNDk1YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRpbmdTdHlsZS5jcHAKQEAgLTEwMzAsNyArMTAzMCw3IEBAIHZvaWQgRWRpdGluZ1N0
eWxlOjptZXJnZVN0eWxlKGNvbnN0IFN0eWxlUHJvcGVydHlTZXQqIHN0eWxlLCBDU1NQcm9wZXJ0
eU92ZXJyaWRlCiBzdGF0aWMgUGFzc1JlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBzdHlsZUZyb21N
YXRjaGVkUnVsZXNGb3JFbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQsIHVuc2lnbmVkIHJ1bGVzVG9J
bmNsdWRlKQogewogICAgIFJlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBzdHlsZSA9IFN0eWxlUHJv
cGVydHlTZXQ6OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxDU1NSdWxlTGlzdD4gbWF0Y2hlZFJ1bGVz
ID0gZWxlbWVudC0+ZG9jdW1lbnQoKS0+c3R5bGVTZWxlY3RvcigpLT5zdHlsZVJ1bGVzRm9yRWxl
bWVudChlbGVtZW50LCBydWxlc1RvSW5jbHVkZSk7CisgICAgUmVmUHRyPENTU1J1bGVMaXN0PiBt
YXRjaGVkUnVsZXMgPSBlbGVtZW50LT5kb2N1bWVudCgpLT5zdHlsZVJlc29sdmVyKCktPnN0eWxl
UnVsZXNGb3JFbGVtZW50KGVsZW1lbnQsIHJ1bGVzVG9JbmNsdWRlKTsKICAgICBpZiAobWF0Y2hl
ZFJ1bGVzKSB7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtYXRjaGVkUnVsZXMt
Pmxlbmd0aCgpOyBpKyspIHsKICAgICAgICAgICAgIGlmIChtYXRjaGVkUnVsZXMtPml0ZW0oaSkt
PnR5cGUoKSA9PSBDU1NSdWxlOjpTVFlMRV9SVUxFKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9oaXN0b3J5L0NhY2hlZFBhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNo
ZWRQYWdlLmNwcAppbmRleCAxOWVlZWExYzVhMDI2Yjg3MjAxZWM4YjRiMjVhZDdhNjIxYTExMTU3
Li4zYWNhZjhlMzgwNTExZTc2NjY1NDQzZDBiYzY3N2Y4ODExYTUyOGUxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZFBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2hpc3RvcnkvQ2FjaGVkUGFnZS5jcHAKQEAgLTg4LDggKzg4LDggQEAgdm9pZCBDYWNoZWRQYWdl
OjpyZXN0b3JlKFBhZ2UqIHBhZ2UpCiAKICAgICBpZiAobV9uZWVkU3R5bGVSZWNhbGNGb3JWaXNp
dGVkTGlua3MpIHsKICAgICAgICAgZm9yIChGcmFtZSogZnJhbWUgPSBwYWdlLT5tYWluRnJhbWUo
KTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KCkpIHsKLSAgICAg
ICAgICAgIGlmIChTdHlsZVJlc29sdmVyKiBzdHlsZVNlbGVjdG9yID0gZnJhbWUtPmRvY3VtZW50
KCktPnN0eWxlU2VsZWN0b3IoKSkKLSAgICAgICAgICAgICAgICBzdHlsZVNlbGVjdG9yLT5hbGxW
aXNpdGVkU3RhdGVDaGFuZ2VkKCk7CisgICAgICAgICAgICBpZiAoU3R5bGVSZXNvbHZlciogc3R5
bGVSZXNvbHZlciA9IGZyYW1lLT5kb2N1bWVudCgpLT5zdHlsZVJlc29sdmVyKCkpCisgICAgICAg
ICAgICAgICAgc3R5bGVSZXNvbHZlci0+YWxsVmlzaXRlZFN0YXRlQ2hhbmdlZCgpOwogICAgICAg
ICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCmlu
ZGV4IDAzYTQ5MDhjNWM3N2EyZGUxYTg5Y2M3N2JkMjRkYTJmMWUwNTUzYTUuLmU4YmY0MWZkMjU2
MjE4NmYyYzU0MWY3YjY3ZjFiNjIwNDYwMDBmZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TENhbnZhc0VsZW1lbnQuY3BwCkBAIC00NjMsOSArNDYzLDkgQEAgU2VjdXJpdHlPcmlnaW4qIEhU
TUxDYW52YXNFbGVtZW50OjpzZWN1cml0eU9yaWdpbigpIGNvbnN0CiAgICAgcmV0dXJuIGRvY3Vt
ZW50KCktPnNlY3VyaXR5T3JpZ2luKCk7CiB9CiAKLVN0eWxlUmVzb2x2ZXIqIEhUTUxDYW52YXNF
bGVtZW50OjpzdHlsZVNlbGVjdG9yKCkKK1N0eWxlUmVzb2x2ZXIqIEhUTUxDYW52YXNFbGVtZW50
OjpzdHlsZVJlc29sdmVyKCkKIHsKLSAgICByZXR1cm4gZG9jdW1lbnQoKS0+c3R5bGVTZWxlY3Rv
cigpOworICAgIHJldHVybiBkb2N1bWVudCgpLT5zdHlsZVJlc29sdmVyKCk7CiB9CiAKIGJvb2wg
SFRNTENhbnZhc0VsZW1lbnQ6OnNob3VsZEFjY2VsZXJhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSkg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaAppbmRleCAyMGEyMjVi
MDcyOTVmNTllN2E3NmFhOTIxNjE5MzdjMzNmYWE4YTI0Li42ODcyMDIxZmE3ZjdlNDUxZWI2YmM2
MjkwYzE5MzY3MDU4MWRiNTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxD
YW52YXNFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVu
dC5oCkBAIC0xMjIsNyArMTIyLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0T3JpZ2luVGFpbnRl
ZCgpIHsgbV9vcmlnaW5DbGVhbiA9IGZhbHNlOyB9CiAgICAgYm9vbCBvcmlnaW5DbGVhbigpIGNv
bnN0IHsgcmV0dXJuIG1fb3JpZ2luQ2xlYW47IH0KIAotICAgIFN0eWxlUmVzb2x2ZXIqIHN0eWxl
U2VsZWN0b3IoKTsKKyAgICBTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyKCk7CiAKICAgICBB
ZmZpbmVUcmFuc2Zvcm0gYmFzZVRyYW5zZm9ybSgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxMaW5rRWxlbWVudC5jcHAKaW5kZXggMGZhNGYyZDhkMzg0Zjk0ZGU5NmMxY2FmMjU0NzRm
NDlkNjA0OGNjYS4uMDY5YjkzZTJmZWMzNjliZjQ0MzE2YTYzNzA5MTU0MzRmYWRkYWRjNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcApAQCAtMTIzLDcgKzEyMyw3IEBA
IHZvaWQgSFRNTExpbmtFbGVtZW50OjpzZXREaXNhYmxlZFN0YXRlKGJvb2wgZGlzYWJsZWQpCiAg
ICAgICAgIGlmICghbV9zaGVldCAmJiBtX2Rpc2FibGVkU3RhdGUgPT0gRW5hYmxlZFZpYVNjcmlw
dCkKICAgICAgICAgICAgIHByb2Nlc3MoKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgZG9j
dW1lbnQoKS0+c3R5bGVTZWxlY3RvckNoYW5nZWQoRGVmZXJSZWNhbGNTdHlsZSk7IC8vIFVwZGF0
ZSB0aGUgc3R5bGUgc2VsZWN0b3IuCisgICAgICAgICAgICBkb2N1bWVudCgpLT5zdHlsZVJlc29s
dmVyQ2hhbmdlZChEZWZlclJlY2FsY1N0eWxlKTsgLy8gVXBkYXRlIHRoZSBzdHlsZSBzZWxlY3Rv
ci4KICAgICB9CiB9CiAKQEAgLTIzMSw3ICsyMzEsNyBAQCB2b2lkIEhUTUxMaW5rRWxlbWVudDo6
cHJvY2VzcygpCiAgICAgfSBlbHNlIGlmIChtX3NoZWV0KSB7CiAgICAgICAgIC8vIHdlIG5vIGxv
bmdlciBjb250YWluIGEgc3R5bGVzaGVldCwgZS5nLiBwZXJoYXBzIHJlbCBvciB0eXBlIHdhcyBj
aGFuZ2VkCiAgICAgICAgIGNsZWFyU2hlZXQoKTsKLSAgICAgICAgZG9jdW1lbnQoKS0+c3R5bGVT
ZWxlY3RvckNoYW5nZWQoRGVmZXJSZWNhbGNTdHlsZSk7CisgICAgICAgIGRvY3VtZW50KCktPnN0
eWxlUmVzb2x2ZXJDaGFuZ2VkKERlZmVyUmVjYWxjU3R5bGUpOwogICAgIH0KIH0KIApAQCAtMjc4
LDcgKzI3OCw3IEBAIHZvaWQgSFRNTExpbmtFbGVtZW50OjpyZW1vdmVkRnJvbShOb2RlKiBpbnNl
cnRpb25Qb2ludCkKICAgICAgICAgcmVtb3ZlUGVuZGluZ1NoZWV0KCk7CiAKICAgICBpZiAoZG9j
dW1lbnQoKS0+cmVuZGVyZXIoKSkKLSAgICAgICAgZG9jdW1lbnQoKS0+c3R5bGVTZWxlY3RvckNo
YW5nZWQoRGVmZXJSZWNhbGNTdHlsZSk7CisgICAgICAgIGRvY3VtZW50KCktPnN0eWxlUmVzb2x2
ZXJDaGFuZ2VkKERlZmVyUmVjYWxjU3R5bGUpOwogfQogCiB2b2lkIEhUTUxMaW5rRWxlbWVudDo6
ZmluaXNoUGFyc2luZ0NoaWxkcmVuKCkKQEAgLTQzMSw3ICs0MzEsNyBAQCB2b2lkIEhUTUxMaW5r
RWxlbWVudDo6cmVtb3ZlUGVuZGluZ1NoZWV0KCkKICAgICAgICAgcmV0dXJuOwogICAgIGlmICh0
eXBlID09IE5vbkJsb2NraW5nKSB7CiAgICAgICAgIC8vIERvY3VtZW50OjpyZW1vdmVQZW5kaW5n
U2hlZXQoKSB0cmlnZ2VycyB0aGUgc3R5bGUgc2VsZWN0b3IgcmVjYWxjIGZvciBibG9ja2luZyBz
aGVldHMuCi0gICAgICAgIGRvY3VtZW50KCktPnN0eWxlU2VsZWN0b3JDaGFuZ2VkKFJlY2FsY1N0
eWxlSW1tZWRpYXRlbHkpOworICAgICAgICBkb2N1bWVudCgpLT5zdHlsZVJlc29sdmVyQ2hhbmdl
ZChSZWNhbGNTdHlsZUltbWVkaWF0ZWx5KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBk
b2N1bWVudCgpLT5yZW1vdmVQZW5kaW5nU2hlZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxT
dHlsZUVsZW1lbnQuY3BwCmluZGV4IDc3ZDA4MWYzYThmNjQ4YzljYzRjODM3OTQ1YmY2OTRlNmQ1
N2Y5NDUuLjM3MWZmZGRlMDdiN2ZkNTVhZmY0MWViZTQyNDg4ZGI5MWFjMDJlMWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50LmNwcApAQCAtMTIyLDcgKzEyMiw3IEBAIHZv
aWQgSFRNTFN0eWxlRWxlbWVudDo6cmVnaXN0ZXJXaXRoU2NvcGluZ05vZGUoKQogICAgIHNjb3Bl
LT5yZWdpc3RlclNjb3BlZEhUTUxTdHlsZUNoaWxkKCk7CiAgICAgc2NvcGUtPnNldE5lZWRzU3R5
bGVSZWNhbGMoKTsKICAgICBpZiAoaW5Eb2N1bWVudCgpICYmICFkb2N1bWVudCgpLT5wYXJzaW5n
KCkgJiYgZG9jdW1lbnQoKS0+cmVuZGVyZXIoKSkKLSAgICAgICAgZG9jdW1lbnQoKS0+c3R5bGVT
ZWxlY3RvckNoYW5nZWQoRGVmZXJSZWNhbGNTdHlsZSk7CisgICAgICAgIGRvY3VtZW50KCktPnN0
eWxlUmVzb2x2ZXJDaGFuZ2VkKERlZmVyUmVjYWxjU3R5bGUpOwogCiAgICAgbV9pc1JlZ2lzdGVy
ZWRXaXRoU2NvcGluZ05vZGUgPSB0cnVlOwogfQpAQCAtMTQ1LDcgKzE0NSw3IEBAIHZvaWQgSFRN
TFN0eWxlRWxlbWVudDo6dW5yZWdpc3RlcldpdGhTY29waW5nTm9kZSgpCiAgICAgICAgIHNjb3Bl
LT5zZXROZWVkc1N0eWxlUmVjYWxjKCk7CiAgICAgfQogICAgIGlmIChpbkRvY3VtZW50KCkgJiYg
IWRvY3VtZW50KCktPnBhcnNpbmcoKSAmJiBkb2N1bWVudCgpLT5yZW5kZXJlcigpKQotICAgICAg
ICBkb2N1bWVudCgpLT5zdHlsZVNlbGVjdG9yQ2hhbmdlZChEZWZlclJlY2FsY1N0eWxlKTsKKyAg
ICAgICAgZG9jdW1lbnQoKS0+c3R5bGVSZXNvbHZlckNoYW5nZWQoRGVmZXJSZWNhbGNTdHlsZSk7
CiAKICAgICBtX2lzUmVnaXN0ZXJlZFdpdGhTY29waW5nTm9kZSA9IGZhbHNlOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RC5jcHAKaW5kZXggODk5NzE1ZTU1ZDA2NjgxNzA2ODgwNmQyYWRjMDA1ZDQyMWQxYzZlNS4uM2I5
MjQ1NTljZmYwMmZjYTgyYThhNmYwMWM3OGUyOTgxNTdkNDg2YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCkBA
IC0xOTQzLDIzICsxOTQzLDIzIEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRG
b250KGNvbnN0IFN0cmluZyYgbmV3Rm9udCkKICAgICBuZXdTdHlsZS0+Zm9udCgpLnVwZGF0ZShu
ZXdTdHlsZS0+Zm9udCgpLmZvbnRTZWxlY3RvcigpKTsKIAogICAgIC8vIE5vdyBtYXAgdGhlIGZv
bnQgcHJvcGVydHkgbG9uZ2hhbmRzIGludG8gdGhlIHN0eWxlLgotICAgIFN0eWxlUmVzb2x2ZXIq
IHN0eWxlU2VsZWN0b3IgPSBjYW52YXMoKS0+c3R5bGVTZWxlY3RvcigpOwotICAgIHN0eWxlU2Vs
ZWN0b3ItPmFwcGx5UHJvcGVydHlUb1N0eWxlKENTU1Byb3BlcnR5Rm9udEZhbWlseSwgdGVtcERl
Y2wtPmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlGb250RmFtaWx5KS5nZXQoKSwgbmV3
U3R5bGUuZ2V0KCkpOwotICAgIHN0eWxlU2VsZWN0b3ItPmFwcGx5UHJvcGVydHlUb0N1cnJlbnRT
dHlsZShDU1NQcm9wZXJ0eUZvbnRTdHlsZSwgdGVtcERlY2wtPmdldFByb3BlcnR5Q1NTVmFsdWUo
Q1NTUHJvcGVydHlGb250U3R5bGUpLmdldCgpKTsKLSAgICBzdHlsZVNlbGVjdG9yLT5hcHBseVBy
b3BlcnR5VG9DdXJyZW50U3R5bGUoQ1NTUHJvcGVydHlGb250VmFyaWFudCwgdGVtcERlY2wtPmdl
dFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlGb250VmFyaWFudCkuZ2V0KCkpOwotICAgIHN0
eWxlU2VsZWN0b3ItPmFwcGx5UHJvcGVydHlUb0N1cnJlbnRTdHlsZShDU1NQcm9wZXJ0eUZvbnRX
ZWlnaHQsIHRlbXBEZWNsLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5Rm9udFdlaWdo
dCkuZ2V0KCkpOworICAgIFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIgPSBjYW52YXMoKS0+
c3R5bGVSZXNvbHZlcigpOworICAgIHN0eWxlUmVzb2x2ZXItPmFwcGx5UHJvcGVydHlUb1N0eWxl
KENTU1Byb3BlcnR5Rm9udEZhbWlseSwgdGVtcERlY2wtPmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NT
UHJvcGVydHlGb250RmFtaWx5KS5nZXQoKSwgbmV3U3R5bGUuZ2V0KCkpOworICAgIHN0eWxlUmVz
b2x2ZXItPmFwcGx5UHJvcGVydHlUb0N1cnJlbnRTdHlsZShDU1NQcm9wZXJ0eUZvbnRTdHlsZSwg
dGVtcERlY2wtPmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlGb250U3R5bGUpLmdldCgp
KTsKKyAgICBzdHlsZVJlc29sdmVyLT5hcHBseVByb3BlcnR5VG9DdXJyZW50U3R5bGUoQ1NTUHJv
cGVydHlGb250VmFyaWFudCwgdGVtcERlY2wtPmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVy
dHlGb250VmFyaWFudCkuZ2V0KCkpOworICAgIHN0eWxlUmVzb2x2ZXItPmFwcGx5UHJvcGVydHlU
b0N1cnJlbnRTdHlsZShDU1NQcm9wZXJ0eUZvbnRXZWlnaHQsIHRlbXBEZWNsLT5nZXRQcm9wZXJ0
eUNTU1ZhbHVlKENTU1Byb3BlcnR5Rm9udFdlaWdodCkuZ2V0KCkpOwogCiAgICAgLy8gQXMgZGVz
Y3JpYmVkIGluIEJVRzY2MjkxLCBzZXR0aW5nIGZvbnQtc2l6ZSBvbiBhIGZvbnQgbWF5IGVudGFp
bCBhIENTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlTGVuZ3RoRG91YmxlIGNhbGwsCiAgICAgLy8g
d2hpY2ggYXNzdW1lcyB0aGUgZm9udE1ldHJpY3MgYXJlIGF2YWlsYWJsZSBmb3IgdGhlIGFmZmVj
dGVkIGZvbnQsIG90aGVyd2lzZSBhIGNyYXNoIG9jY3VycyAoc2VlIGh0dHA6Ly90cmFjLndlYmtp
dC5vcmcvY2hhbmdlc2V0Lzk2MTIyKS4KICAgICAvLyBUaGUgdXBkYXRlRm9udCgpIGNhbGwgYmVs
b3cgdXBkYXRlcyB0aGUgZm9udE1ldHJpY3MgYW5kIGVuc3VyZXMgdGhlIHByb3BlciBzZXR0aW5n
IG9mIGZvbnQtc2l6ZS4KLSAgICBzdHlsZVNlbGVjdG9yLT51cGRhdGVGb250KCk7Ci0gICAgc3R5
bGVTZWxlY3Rvci0+YXBwbHlQcm9wZXJ0eVRvQ3VycmVudFN0eWxlKENTU1Byb3BlcnR5Rm9udFNp
emUsIHRlbXBEZWNsLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5Rm9udFNpemUpLmdl
dCgpKTsKLSAgICBzdHlsZVNlbGVjdG9yLT5hcHBseVByb3BlcnR5VG9DdXJyZW50U3R5bGUoQ1NT
UHJvcGVydHlMaW5lSGVpZ2h0LCB0ZW1wRGVjbC0+Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9w
ZXJ0eUxpbmVIZWlnaHQpLmdldCgpKTsKKyAgICBzdHlsZVJlc29sdmVyLT51cGRhdGVGb250KCk7
CisgICAgc3R5bGVSZXNvbHZlci0+YXBwbHlQcm9wZXJ0eVRvQ3VycmVudFN0eWxlKENTU1Byb3Bl
cnR5Rm9udFNpemUsIHRlbXBEZWNsLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5Rm9u
dFNpemUpLmdldCgpKTsKKyAgICBzdHlsZVJlc29sdmVyLT5hcHBseVByb3BlcnR5VG9DdXJyZW50
U3R5bGUoQ1NTUHJvcGVydHlMaW5lSGVpZ2h0LCB0ZW1wRGVjbC0+Z2V0UHJvcGVydHlDU1NWYWx1
ZShDU1NQcm9wZXJ0eUxpbmVIZWlnaHQpLmdldCgpKTsKIAogICAgIHN0YXRlKCkubV9mb250ID0g
bmV3U3R5bGUtPmZvbnQoKTsKLSAgICBzdGF0ZSgpLm1fZm9udC51cGRhdGUoc3R5bGVTZWxlY3Rv
ci0+Zm9udFNlbGVjdG9yKCkpOworICAgIHN0YXRlKCkubV9mb250LnVwZGF0ZShzdHlsZVJlc29s
dmVyLT5mb250U2VsZWN0b3IoKSk7CiAgICAgc3RhdGUoKS5tX3JlYWxpemVkRm9udCA9IHRydWU7
Ci0gICAgc3R5bGVTZWxlY3Rvci0+Zm9udFNlbGVjdG9yKCktPnJlZ2lzdGVyRm9ySW52YWxpZGF0
aW9uQ2FsbGJhY2tzKCZzdGF0ZSgpKTsKKyAgICBzdHlsZVJlc29sdmVyLT5mb250U2VsZWN0b3Io
KS0+cmVnaXN0ZXJGb3JJbnZhbGlkYXRpb25DYWxsYmFja3MoJnN0YXRlKCkpOwogfQogCiBTdHJp
bmcgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjp0ZXh0QWxpZ24oKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKaW5kZXggNTdiYzVjYjFl
MWE2NGM1YTVhMjFjM2Y0MDViNDI0NWE4MDg0MWY5Ny4uMTVkM2NmZWE3ZDZjYWY1NTk2MmZmMWQy
NDk4NzJjMzQ0ZDYxYjZiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckNTU0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ1NTQWdlbnQuY3BwCkBAIC01NjAsNyArNTYwLDcgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2Vu
dDo6cmVjYWxjU3R5bGVGb3JQc2V1ZG9TdGF0ZUlmTmVlZGVkKEVsZW1lbnQqIGVsZW1lbnQsIElu
c3AKICAgICBtX2xhc3RQc2V1ZG9TdGF0ZSA9IGZvcmNlUHNldWRvU3RhdGU7CiAgICAgbV9sYXN0
RWxlbWVudFdpdGhQc2V1ZG9TdGF0ZSA9IGVsZW1lbnQ7CiAgICAgaWYgKG5lZWRTdHlsZVJlY2Fs
YykKLSAgICAgICAgZWxlbWVudC0+b3duZXJEb2N1bWVudCgpLT5zdHlsZVNlbGVjdG9yQ2hhbmdl
ZChSZWNhbGNTdHlsZUltbWVkaWF0ZWx5KTsKKyAgICAgICAgZWxlbWVudC0+b3duZXJEb2N1bWVu
dCgpLT5zdHlsZVJlc29sdmVyQ2hhbmdlZChSZWNhbGNTdHlsZUltbWVkaWF0ZWx5KTsKIH0KIAog
dm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0TWF0Y2hlZFN0eWxlc0Zvck5vZGUoRXJyb3JTdHJp
bmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+
KiBmb3JjZWRQc2V1ZG9DbGFzc2VzLCBjb25zdCBib29sKiBpbmNsdWRlUHNldWRvLCBjb25zdCBi
b29sKiBpbmNsdWRlSW5oZXJpdGVkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWls
ZGVyOjpDU1M6OkNTU1J1bGU+ID4mIG1hdGNoZWRDU1NSdWxlcywgUmVmUHRyPFR5cGVCdWlsZGVy
OjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpQc2V1ZG9JZFJ1bGVzPiA+JiBwc2V1ZG9JZFJ1bGVz
LCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OkluaGVyaXRlZFN0
eWxlRW50cnk+ID4mIGluaGVyaXRlZEVudHJpZXMpCkBAIC01NzIsMTkgKzU3MiwxOSBAQCB2b2lk
IEluc3BlY3RvckNTU0FnZW50OjpnZXRNYXRjaGVkU3R5bGVzRm9yTm9kZShFcnJvclN0cmluZyog
ZXJyb3JTdHJpbmcsIGludCBubwogICAgIHJlY2FsY1N0eWxlRm9yUHNldWRvU3RhdGVJZk5lZWRl
ZChlbGVtZW50LCBmb3JjZWRQc2V1ZG9DbGFzc2VzID8gZm9yY2VkUHNldWRvQ2xhc3Nlcy0+Z2V0
KCkgOiAwKTsKIAogICAgIC8vIE1hdGNoZWQgcnVsZXMuCi0gICAgU3R5bGVSZXNvbHZlciogc2Vs
ZWN0b3IgPSBlbGVtZW50LT5vd25lckRvY3VtZW50KCktPnN0eWxlU2VsZWN0b3IoKTsKLSAgICBS
ZWZQdHI8Q1NTUnVsZUxpc3Q+IG1hdGNoZWRSdWxlcyA9IHNlbGVjdG9yLT5zdHlsZVJ1bGVzRm9y
RWxlbWVudChlbGVtZW50LCBTdHlsZVJlc29sdmVyOjpBbGxDU1NSdWxlcyk7Ci0gICAgbWF0Y2hl
ZENTU1J1bGVzID0gYnVpbGRBcnJheUZvclJ1bGVMaXN0KG1hdGNoZWRSdWxlcy5nZXQoKSwgc2Vs
ZWN0b3IpOworICAgIFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIgPSBlbGVtZW50LT5vd25l
ckRvY3VtZW50KCktPnN0eWxlUmVzb2x2ZXIoKTsKKyAgICBSZWZQdHI8Q1NTUnVsZUxpc3Q+IG1h
dGNoZWRSdWxlcyA9IHN0eWxlUmVzb2x2ZXItPnN0eWxlUnVsZXNGb3JFbGVtZW50KGVsZW1lbnQs
IFN0eWxlUmVzb2x2ZXI6OkFsbENTU1J1bGVzKTsKKyAgICBtYXRjaGVkQ1NTUnVsZXMgPSBidWls
ZEFycmF5Rm9yUnVsZUxpc3QobWF0Y2hlZFJ1bGVzLmdldCgpLCBzdHlsZVJlc29sdmVyKTsKIAog
ICAgIC8vIFBzZXVkbyBlbGVtZW50cy4KICAgICBpZiAoIWluY2x1ZGVQc2V1ZG8gfHwgKmluY2x1
ZGVQc2V1ZG8pIHsKICAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRl
cjo6Q1NTOjpQc2V1ZG9JZFJ1bGVzPiA+IHBzZXVkb0VsZW1lbnRzID0gVHlwZUJ1aWxkZXI6OkFy
cmF5PFR5cGVCdWlsZGVyOjpDU1M6OlBzZXVkb0lkUnVsZXM+OjpjcmVhdGUoKTsKICAgICAgICAg
Zm9yIChQc2V1ZG9JZCBwc2V1ZG9JZCA9IEZJUlNUX1BVQkxJQ19QU0VVRE9JRDsgcHNldWRvSWQg
PCBBRlRFUl9MQVNUX0lOVEVSTkFMX1BTRVVET0lEOyBwc2V1ZG9JZCA9IHN0YXRpY19jYXN0PFBz
ZXVkb0lkPihwc2V1ZG9JZCArIDEpKSB7Ci0gICAgICAgICAgICBSZWZQdHI8Q1NTUnVsZUxpc3Q+
IG1hdGNoZWRSdWxlcyA9IHNlbGVjdG9yLT5wc2V1ZG9TdHlsZVJ1bGVzRm9yRWxlbWVudChlbGVt
ZW50LCBwc2V1ZG9JZCwgU3R5bGVSZXNvbHZlcjo6QWxsQ1NTUnVsZXMpOworICAgICAgICAgICAg
UmVmUHRyPENTU1J1bGVMaXN0PiBtYXRjaGVkUnVsZXMgPSBzdHlsZVJlc29sdmVyLT5wc2V1ZG9T
dHlsZVJ1bGVzRm9yRWxlbWVudChlbGVtZW50LCBwc2V1ZG9JZCwgU3R5bGVSZXNvbHZlcjo6QWxs
Q1NTUnVsZXMpOwogICAgICAgICAgICAgaWYgKG1hdGNoZWRSdWxlcyAmJiBtYXRjaGVkUnVsZXMt
Pmxlbmd0aCgpKSB7CiAgICAgICAgICAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OlBz
ZXVkb0lkUnVsZXM+IHBzZXVkb1N0eWxlcyA9IFR5cGVCdWlsZGVyOjpDU1M6OlBzZXVkb0lkUnVs
ZXM6OmNyZWF0ZSgpCiAgICAgICAgICAgICAgICAgICAgIC5zZXRQc2V1ZG9JZChzdGF0aWNfY2Fz
dDxpbnQ+KHBzZXVkb0lkKSkKLSAgICAgICAgICAgICAgICAgICAgLnNldFJ1bGVzKGJ1aWxkQXJy
YXlGb3JSdWxlTGlzdChtYXRjaGVkUnVsZXMuZ2V0KCksIHNlbGVjdG9yKSk7CisgICAgICAgICAg
ICAgICAgICAgIC5zZXRSdWxlcyhidWlsZEFycmF5Rm9yUnVsZUxpc3QobWF0Y2hlZFJ1bGVzLmdl
dCgpLCBzdHlsZVJlc29sdmVyKSk7CiAgICAgICAgICAgICAgICAgcHNldWRvRWxlbWVudHMtPmFk
ZEl0ZW0ocHNldWRvU3R5bGVzLnJlbGVhc2UoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
QEAgLTU5NywxMCArNTk3LDEwIEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE1hdGNoZWRT
dHlsZXNGb3JOb2RlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vCiAgICAgICAgIFJl
ZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6SW5oZXJpdGVkU3R5bGVF
bnRyeT4gPiBpbmhlcml0ZWRTdHlsZXMgPSBUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6
OkNTUzo6SW5oZXJpdGVkU3R5bGVFbnRyeT46OmNyZWF0ZSgpOwogICAgICAgICBFbGVtZW50KiBw
YXJlbnRFbGVtZW50ID0gZWxlbWVudC0+cGFyZW50RWxlbWVudCgpOwogICAgICAgICB3aGlsZSAo
cGFyZW50RWxlbWVudCkgewotICAgICAgICAgICAgU3R5bGVSZXNvbHZlciogcGFyZW50U2VsZWN0
b3IgPSBwYXJlbnRFbGVtZW50LT5vd25lckRvY3VtZW50KCktPnN0eWxlU2VsZWN0b3IoKTsKLSAg
ICAgICAgICAgIFJlZlB0cjxDU1NSdWxlTGlzdD4gcGFyZW50TWF0Y2hlZFJ1bGVzID0gcGFyZW50
U2VsZWN0b3ItPnN0eWxlUnVsZXNGb3JFbGVtZW50KHBhcmVudEVsZW1lbnQsIFN0eWxlUmVzb2x2
ZXI6OkFsbENTU1J1bGVzKTsKKyAgICAgICAgICAgIFN0eWxlUmVzb2x2ZXIqIHBhcmVudFN0eWxl
UmVzb2x2ZXI9IHBhcmVudEVsZW1lbnQtPm93bmVyRG9jdW1lbnQoKS0+c3R5bGVSZXNvbHZlcigp
OworICAgICAgICAgICAgUmVmUHRyPENTU1J1bGVMaXN0PiBwYXJlbnRNYXRjaGVkUnVsZXMgPSBw
YXJlbnRTdHlsZVJlc29sdmVyLT5zdHlsZVJ1bGVzRm9yRWxlbWVudChwYXJlbnRFbGVtZW50LCBT
dHlsZVJlc29sdmVyOjpBbGxDU1NSdWxlcyk7CiAgICAgICAgICAgICBSZWZQdHI8VHlwZUJ1aWxk
ZXI6OkNTUzo6SW5oZXJpdGVkU3R5bGVFbnRyeT4gcGFyZW50U3R5bGUgPSBUeXBlQnVpbGRlcjo6
Q1NTOjpJbmhlcml0ZWRTdHlsZUVudHJ5OjpjcmVhdGUoKQotICAgICAgICAgICAgICAgIC5zZXRN
YXRjaGVkQ1NTUnVsZXMoYnVpbGRBcnJheUZvclJ1bGVMaXN0KHBhcmVudE1hdGNoZWRSdWxlcy5n
ZXQoKSwgc2VsZWN0b3IpKTsKKyAgICAgICAgICAgICAgICAuc2V0TWF0Y2hlZENTU1J1bGVzKGJ1
aWxkQXJyYXlGb3JSdWxlTGlzdChwYXJlbnRNYXRjaGVkUnVsZXMuZ2V0KCksIHN0eWxlUmVzb2x2
ZXIpKTsKICAgICAgICAgICAgIGlmIChwYXJlbnRFbGVtZW50LT5zdHlsZSgpICYmIHBhcmVudEVs
ZW1lbnQtPnN0eWxlKCktPmxlbmd0aCgpKSB7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yU3R5
bGVTaGVldEZvcklubGluZVN0eWxlKiBzdHlsZVNoZWV0ID0gYXNJbnNwZWN0b3JTdHlsZVNoZWV0
KHBhcmVudEVsZW1lbnQpOwogICAgICAgICAgICAgICAgIGlmIChzdHlsZVNoZWV0KQpAQCAtOTQ0
LDcgKzk0NCw3IEBAIFR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU6Ok9yaWdpbjo6RW51bSBJbnNw
ZWN0b3JDU1NBZ2VudDo6ZGV0ZWN0T3JpZ2luKENTU1N0eWxlCiAgICAgcmV0dXJuIG9yaWdpbjsK
IH0KIAotUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NT
UnVsZT4gPiBJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRBcnJheUZvclJ1bGVMaXN0KENTU1J1bGVM
aXN0KiBydWxlTGlzdCwgU3R5bGVSZXNvbHZlciogc3R5bGVTZWxlY3RvcikKK1Bhc3NSZWZQdHI8
VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+ID4gSW5zcGVjdG9y
Q1NTQWdlbnQ6OmJ1aWxkQXJyYXlGb3JSdWxlTGlzdChDU1NSdWxlTGlzdCogcnVsZUxpc3QsIFN0
eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIpCiB7CiAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpB
cnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPiA+IHJlc3VsdCA9IFR5cGVCdWlsZGVyOjpB
cnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPjo6Y3JlYXRlKCk7CiAgICAgaWYgKCFydWxl
TGlzdCkKQEAgLTk1OSw3ICs5NTksNyBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxU
eXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPiA+IEluc3BlY3RvckNTU0FnZW50OjpidQogICAgICAg
ICAvLyBTaW5jZSB0aGUgaW5zcGVjdG9yIHdhbnRzIHRvIHdhbGsgdGhlIHBhcmVudCBjaGFpbiwg
d2UgY29uc3RydWN0IHRoZSBmdWxsIHdyYXBwZXJzIGhlcmUuCiAgICAgICAgIC8vIEZJWE1FOiBU
aGlzIGNvdWxkIGJlIGZhY3RvcmVkIGJldHRlci4gU3R5bGVSZXNvbHZlcjo6c3R5bGVSdWxlc0Zv
ckVsZW1lbnQgc2hvdWxkIHJldHVybiBhIFN0eWxlUnVsZSB2ZWN0b3IsIG5vdCBhIENTU1J1bGVM
aXN0LgogICAgICAgICBpZiAoIXJ1bGUtPnBhcmVudFN0eWxlU2hlZXQoKSkgewotICAgICAgICAg
ICAgcnVsZSA9IHN0eWxlU2VsZWN0b3ItPmVuc3VyZUZ1bGxDU1NPTVdyYXBwZXJGb3JJbnNwZWN0
b3IocnVsZS0+c3R5bGVSdWxlKCkpOworICAgICAgICAgICAgcnVsZSA9IHN0eWxlUmVzb2x2ZXIt
PmVuc3VyZUZ1bGxDU1NPTVdyYXBwZXJGb3JJbnNwZWN0b3IocnVsZS0+c3R5bGVSdWxlKCkpOwog
ICAgICAgICAgICAgaWYgKCFydWxlKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICB9CkBAIC0xMDMyLDcgKzEwMzIsNyBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpjbGVhclBz
ZXVkb1N0YXRlKGJvb2wgcmVjYWxjU3R5bGVzKQogICAgIGlmIChyZWNhbGNTdHlsZXMgJiYgZWxl
bWVudCkgewogICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBlbGVtZW50LT5vd25lckRvY3Vt
ZW50KCk7CiAgICAgICAgIGlmIChkb2N1bWVudCkKLSAgICAgICAgICAgIGRvY3VtZW50LT5zdHls
ZVNlbGVjdG9yQ2hhbmdlZChSZWNhbGNTdHlsZUltbWVkaWF0ZWx5KTsKKyAgICAgICAgICAgIGRv
Y3VtZW50LT5zdHlsZVJlc29sdmVyQ2hhbmdlZChSZWNhbGNTdHlsZUltbWVkaWF0ZWx5KTsKICAg
ICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQ
YWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2Vu
dC5jcHAKaW5kZXggNDQ2ZGEwM2JmZGY3YzZmYmIxN2IyYzdjZGQ0NzQwMGZmYWMxZTc4OS4uMGU3
NmQ2ZjUyODE1NTQwMDU3ZjIzYTZhYzgxZWM3YTlmNzliYjM1OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKQEAgLTkxNyw3ICs5MTcsNyBA
QCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6dXBkYXRlVmlld01ldHJpY3MoaW50IHdpZHRoLCBp
bnQgaGVpZ2h0LCBkb3VibGUgZm9udFNjYQogICAgIG1fY2xpZW50LT5vdmVycmlkZURldmljZU1l
dHJpY3Mod2lkdGgsIGhlaWdodCwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGZvbnRTY2FsZUZhY3Rvciks
IGZpdFdpbmRvdyk7CiAKICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBtYWluRnJhbWUoKS0+ZG9j
dW1lbnQoKTsKLSAgICBkb2N1bWVudC0+c3R5bGVTZWxlY3RvckNoYW5nZWQoUmVjYWxjU3R5bGVJ
bW1lZGlhdGVseSk7CisgICAgZG9jdW1lbnQtPnN0eWxlUmVzb2x2ZXJDaGFuZ2VkKFJlY2FsY1N0
eWxlSW1tZWRpYXRlbHkpOwogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bWVkaWFRdWVy
eVJlc3VsdENoYW5nZWQoZG9jdW1lbnQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAK
aW5kZXggODVkYTE2NmQ0OWU3MjFhYzlkYTY2YmJiNTc3NjU1ZmE4MTVkZWQxMy4uMDUyODcxZGFi
NmJjNTAxZjczNDYxYjM2ODMwN2NkODBmNjNhYWExMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93
LmNwcApAQCAtMTI5Nyw3ICsxMjk3LDcgQEAgUGFzc1JlZlB0cjxDU1NSdWxlTGlzdD4gRE9NV2lu
ZG93OjpnZXRNYXRjaGVkQ1NTUnVsZXMoRWxlbWVudCogZWxlbWVudCwgY29uc3QgU3QKICAgICAK
ICAgICBQc2V1ZG9JZCBwc2V1ZG9JZCA9IENTU1NlbGVjdG9yOjpwc2V1ZG9JZChDU1NTZWxlY3Rv
cjo6cGFyc2VQc2V1ZG9UeXBlKHBzZXVkb0VsZW1lbnQpKTsKICAKLSAgICByZXR1cm4gbV9mcmFt
ZS0+ZG9jdW1lbnQoKS0+c3R5bGVTZWxlY3RvcigpLT5wc2V1ZG9TdHlsZVJ1bGVzRm9yRWxlbWVu
dChlbGVtZW50LCBwc2V1ZG9JZCwgcnVsZXNUb0luY2x1ZGUpOworICAgIHJldHVybiBtX2ZyYW1l
LT5kb2N1bWVudCgpLT5zdHlsZVJlc29sdmVyKCktPnBzZXVkb1N0eWxlUnVsZXNGb3JFbGVtZW50
KGVsZW1lbnQsIHBzZXVkb0lkLCBydWxlc1RvSW5jbHVkZSk7CiB9CiAKIFBhc3NSZWZQdHI8V2Vi
S2l0UG9pbnQ+IERPTVdpbmRvdzo6d2Via2l0Q29udmVydFBvaW50RnJvbU5vZGVUb1BhZ2UoTm9k
ZSogbm9kZSwgY29uc3QgV2ViS2l0UG9pbnQqIHApIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCmlu
ZGV4IDU5MDRjNjJmY2NlOGY1NTY3NTJiMzc1ZGY2YjI0YTI4YzAxYjk0ZjUuLjViOWJmZTgwMDg3
ZGVkMzY1YjIwNWI0ZWZmMDY3NDU3OTAzYzAzZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBAIC01
MjAsNyArNTIwLDcgQEAgdm9pZCBGcmFtZTo6c2V0UHJpbnRpbmcoYm9vbCBwcmludGluZywgY29u
c3QgRmxvYXRTaXplJiBwYWdlU2l6ZSwgY29uc3QgRmxvYXRTaXoKICAgICBtX2RvYy0+c2V0UHJp
bnRpbmcocHJpbnRpbmcpOwogICAgIHZpZXcoKS0+YWRqdXN0TWVkaWFUeXBlRm9yUHJpbnRpbmco
cHJpbnRpbmcpOwogCi0gICAgbV9kb2MtPnN0eWxlU2VsZWN0b3JDaGFuZ2VkKFJlY2FsY1N0eWxl
SW1tZWRpYXRlbHkpOworICAgIG1fZG9jLT5zdHlsZVJlc29sdmVyQ2hhbmdlZChSZWNhbGNTdHls
ZUltbWVkaWF0ZWx5KTsKICAgICBpZiAocHJpbnRpbmcpCiAgICAgICAgIHZpZXcoKS0+Zm9yY2VM
YXlvdXRGb3JQYWdpbmF0aW9uKHBhZ2VTaXplLCBvcmlnaW5hbFBhZ2VTaXplLCBtYXhpbXVtU2hy
aW5rUmF0aW8sIHNob3VsZEFkanVzdFZpZXdTaXplKTsKICAgICBlbHNlIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmNwcAppbmRleCBhMmI1YjFlN2ExNjM0ZTUyMjdiMzAwNmRhMDk3MzNhOGE4ZTdl
N2NiLi5hZjQwYmQxZjViYmI1ZDk0NGY2M2ZlNWNlNzBhNGY2Y2Q5OGY1OTBhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVZpZXcuY3BwCkBAIC05ODUsOCArOTg1LDggQEAgdm9pZCBGcmFtZVZpZXc6Omxh
eW91dChib29sIGFsbG93U3VidHJlZSkKIAogICAgICAgICAvLyBWaWV3cG9ydC1kZXBlbmRlbnQg
bWVkaWEgcXVlcmllcyBtYXkgY2F1c2UgdXMgdG8gbmVlZCBjb21wbGV0ZWx5IGRpZmZlcmVudCBz
dHlsZSBpbmZvcm1hdGlvbi4KICAgICAgICAgLy8gQ2hlY2sgdGhhdCBoZXJlLgotICAgICAgICBp
ZiAoZG9jdW1lbnQtPnN0eWxlU2VsZWN0b3IoKS0+YWZmZWN0ZWRCeVZpZXdwb3J0Q2hhbmdlKCkp
IHsKLSAgICAgICAgICAgIGRvY3VtZW50LT5zdHlsZVNlbGVjdG9yQ2hhbmdlZChSZWNhbGNTdHls
ZUltbWVkaWF0ZWx5KTsKKyAgICAgICAgaWYgKGRvY3VtZW50LT5zdHlsZVJlc29sdmVyKCktPmFm
ZmVjdGVkQnlWaWV3cG9ydENoYW5nZSgpKSB7CisgICAgICAgICAgICBkb2N1bWVudC0+c3R5bGVS
ZXNvbHZlckNoYW5nZWQoUmVjYWxjU3R5bGVJbW1lZGlhdGVseSk7CiAgICAgICAgICAgICBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246Om1lZGlhUXVlcnlSZXN1bHRDaGFuZ2VkKGRvY3VtZW50KTsK
ICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBkb2N1bWVudC0+ZXZhbHVhdGVNZWRpYVF1ZXJ5
TGlzdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggMDMxNTA2OWEwNjBiZWI0OGM0NTQyMmNhMGEw
OTUzZjg0YzQxMGI5OS4uYWQxOWU1NmJlZDU5NTg0OTJjNWY5NTI4OWFiNjUyYTAwODBmN2VjMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0yNTMsNyArMjUzLDcgQEAgdm9pZCBQYWdlOjpzZXRWaWV3
TW9kZShWaWV3TW9kZSB2aWV3TW9kZSkKICAgICAgICAgbV9tYWluRnJhbWUtPnZpZXcoKS0+Zm9y
Y2VMYXlvdXQoKTsKIAogICAgIGlmIChtX21haW5GcmFtZS0+ZG9jdW1lbnQoKSkKLSAgICAgICAg
bV9tYWluRnJhbWUtPmRvY3VtZW50KCktPnN0eWxlU2VsZWN0b3JDaGFuZ2VkKFJlY2FsY1N0eWxl
SW1tZWRpYXRlbHkpOworICAgICAgICBtX21haW5GcmFtZS0+ZG9jdW1lbnQoKS0+c3R5bGVSZXNv
bHZlckNoYW5nZWQoUmVjYWxjU3R5bGVJbW1lZGlhdGVseSk7CiB9CiAKIHZvaWQgUGFnZTo6c2V0
TWFpbkZyYW1lKFBhc3NSZWZQdHI8RnJhbWU+IG1haW5GcmFtZSkKQEAgLTM5Myw3ICszOTMsNyBA
QCB2b2lkIFBhZ2U6OnNjaGVkdWxlRm9yY2VkU3R5bGVSZWNhbGNGb3JBbGxQYWdlcygpCiB2b2lk
IFBhZ2U6OnNldE5lZWRzUmVjYWxjU3R5bGVJbkFsbEZyYW1lcygpCiB7CiAgICAgZm9yIChGcmFt
ZSogZnJhbWUgPSBtYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJh
dmVyc2VOZXh0KCkpCi0gICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLT5zdHlsZVNlbGVjdG9yQ2hh
bmdlZChEZWZlclJlY2FsY1N0eWxlKTsKKyAgICAgICAgZnJhbWUtPmRvY3VtZW50KCktPnN0eWxl
UmVzb2x2ZXJDaGFuZ2VkKERlZmVyUmVjYWxjU3R5bGUpOwogfQogCiB2b2lkIFBhZ2U6OnJlZnJl
c2hQbHVnaW5zKGJvb2wgcmVsb2FkKQpAQCAtODM0LDggKzgzNCw4IEBAIHZvaWQgUGFnZTo6YWxs
VmlzaXRlZFN0YXRlQ2hhbmdlZChQYWdlR3JvdXAqIGdyb3VwKQogICAgICAgICBpZiAocGFnZS0+
bV9ncm91cCAhPSBncm91cCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBmb3IgKEZy
YW1lKiBmcmFtZSA9IHBhZ2UtPm1fbWFpbkZyYW1lLmdldCgpOyBmcmFtZTsgZnJhbWUgPSBmcmFt
ZS0+dHJlZSgpLT50cmF2ZXJzZU5leHQoKSkgewotICAgICAgICAgICAgaWYgKFN0eWxlUmVzb2x2
ZXIqIHN0eWxlU2VsZWN0b3IgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+c3R5bGVTZWxlY3RvcigpKQot
ICAgICAgICAgICAgICAgIHN0eWxlU2VsZWN0b3ItPmFsbFZpc2l0ZWRTdGF0ZUNoYW5nZWQoKTsK
KyAgICAgICAgICAgIGlmIChTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyID0gZnJhbWUtPmRv
Y3VtZW50KCktPnN0eWxlUmVzb2x2ZXIoKSkKKyAgICAgICAgICAgICAgICBzdHlsZVJlc29sdmVy
LT5hbGxWaXNpdGVkU3RhdGVDaGFuZ2VkKCk7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC04NTIs
OCArODUyLDggQEAgdm9pZCBQYWdlOjp2aXNpdGVkU3RhdGVDaGFuZ2VkKFBhZ2VHcm91cCogZ3Jv
dXAsIExpbmtIYXNoIHZpc2l0ZWRMaW5rSGFzaCkKICAgICAgICAgaWYgKHBhZ2UtPm1fZ3JvdXAg
IT0gZ3JvdXApCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgZm9yIChGcmFtZSogZnJh
bWUgPSBwYWdlLT5tX21haW5GcmFtZS5nZXQoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUo
KS0+dHJhdmVyc2VOZXh0KCkpIHsKLSAgICAgICAgICAgIGlmIChTdHlsZVJlc29sdmVyKiBzdHls
ZVNlbGVjdG9yID0gZnJhbWUtPmRvY3VtZW50KCktPnN0eWxlU2VsZWN0b3IoKSkKLSAgICAgICAg
ICAgICAgICBzdHlsZVNlbGVjdG9yLT52aXNpdGVkU3RhdGVDaGFuZ2VkKHZpc2l0ZWRMaW5rSGFz
aCk7CisgICAgICAgICAgICBpZiAoU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciA9IGZyYW1l
LT5kb2N1bWVudCgpLT5zdHlsZVJlc29sdmVyKCkpCisgICAgICAgICAgICAgICAgc3R5bGVSZXNv
bHZlci0+dmlzaXRlZFN0YXRlQ2hhbmdlZCh2aXNpdGVkTGlua0hhc2gpOwogICAgICAgICB9CiAg
ICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vS2V5ZnJh
bWVBbmltYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vS2V5ZnJhbWVB
bmltYXRpb24uY3BwCmluZGV4IDA2ZjMwMjNjMGQwYTk0OWZkOTA3NGNmYTQ0YWZmN2VjMDlkMTAy
MTguLjY3MGNmYjQ5ZTczNzFkMjEwNzM3OWEwMTRjMTU4MjliMGU3NDQ1NDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0tleWZyYW1lQW5pbWF0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9LZXlmcmFtZUFuaW1hdGlvbi5jcHAKQEAg
LTUxLDcgKzUxLDcgQEAgS2V5ZnJhbWVBbmltYXRpb246OktleWZyYW1lQW5pbWF0aW9uKGNvbnN0
IEFuaW1hdGlvbiogYW5pbWF0aW9uLCBSZW5kZXJPYmplY3QqIHIKIHsKICAgICAvLyBHZXQgdGhl
IGtleWZyYW1lIFJlbmRlclN0eWxlcwogICAgIGlmIChtX29iamVjdCAmJiBtX29iamVjdC0+bm9k
ZSgpICYmIG1fb2JqZWN0LT5ub2RlKCktPmlzRWxlbWVudE5vZGUoKSkKLSAgICAgICAgbV9vYmpl
Y3QtPmRvY3VtZW50KCktPnN0eWxlU2VsZWN0b3IoKS0+a2V5ZnJhbWVTdHlsZXNGb3JBbmltYXRp
b24oc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG1fb2JqZWN0LT5ub2RlKCkpLCB1bmFuaW1hdGVkU3R5
bGUsIG1fa2V5ZnJhbWVzKTsKKyAgICAgICAgbV9vYmplY3QtPmRvY3VtZW50KCktPnN0eWxlUmVz
b2x2ZXIoKS0+a2V5ZnJhbWVTdHlsZXNGb3JBbmltYXRpb24oc3RhdGljX2Nhc3Q8RWxlbWVudCo+
KG1fb2JqZWN0LT5ub2RlKCkpLCB1bmFuaW1hdGVkU3R5bGUsIG1fa2V5ZnJhbWVzKTsKIAogICAg
IC8vIFVwZGF0ZSB0aGUgbV90cmFuc2Zvcm1GdW5jdGlvbkxpc3RWYWxpZCBmbGFnIGJhc2VkIG9u
IHdoZXRoZXIgdGhlIGZ1bmN0aW9uIGxpc3RzIGluIHRoZSBrZXlmcmFtZXMgbWF0Y2guCiAgICAg
dmFsaWRhdGVUcmFuc2Zvcm1GdW5jdGlvbkxpc3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VmbC9SZW5kZXJUaGVtZUVmbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwuY3BwCmluZGV4IDJkNGU1Yjg2ODA2ZDVhMTJhMDQ5MGNm
MjYyMGVkNzI3NDVmMDQ3OTYuLjU4NTFhNjA0MTVkMDlhODY0NjQ0M2E0MzU0NzEwZDk3MWY3NmEz
ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9SZW5kZXJUaGVtZUVm
bC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1JlbmRlclRoZW1lRWZsLmNw
cApAQCAtODQ0LDEwICs4NDQsMTAgQEAgYm9vbCBSZW5kZXJUaGVtZUVmbDo6cGFpbnRTbGlkZXJU
cmFjayhSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgUGFpbnRJbmZvJiBpbmYKICAgICByZXR1
cm4gcGFpbnRUaGVtZVBhcnQob2JqZWN0LCBTbGlkZXJWZXJ0aWNhbCwgaW5mbywgcmVjdCk7CiB9
CiAKLXZvaWQgUmVuZGVyVGhlbWVFZmw6OmFkanVzdFNsaWRlclRyYWNrU3R5bGUoU3R5bGVSZXNv
bHZlciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZWxlbWVudCkgY29u
c3QKK3ZvaWQgUmVuZGVyVGhlbWVFZmw6OmFkanVzdFNsaWRlclRyYWNrU3R5bGUoU3R5bGVSZXNv
bHZlciogc3R5bGVSZXNvbHZlciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlbGVtZW50
KSBjb25zdAogewogICAgIGlmICghbV9wYWdlICYmIGVsZW1lbnQgJiYgZWxlbWVudC0+ZG9jdW1l
bnQoKS0+cGFnZSgpKSB7Ci0gICAgICAgIHN0YXRpY19jYXN0PFJlbmRlclRoZW1lRWZsKj4oZWxl
bWVudC0+ZG9jdW1lbnQoKS0+cGFnZSgpLT50aGVtZSgpKS0+YWRqdXN0U2xpZGVyVHJhY2tTdHls
ZShzZWxlY3Rvciwgc3R5bGUsIGVsZW1lbnQpOworICAgICAgICBzdGF0aWNfY2FzdDxSZW5kZXJU
aGVtZUVmbCo+KGVsZW1lbnQtPmRvY3VtZW50KCktPnBhZ2UoKS0+dGhlbWUoKSktPmFkanVzdFNs
aWRlclRyYWNrU3R5bGUoc3R5bGVSZXNvbHZlciwgc3R5bGUsIGVsZW1lbnQpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkBAIC04NjEsMTAgKzg2MSwxMCBAQCB2b2lkIFJlbmRlclRoZW1lRWZs
OjphZGp1c3RTbGlkZXJUcmFja1N0eWxlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBSZW5kZXJT
dHlsZQogICAgICAgICBzdHlsZS0+c2V0SGVpZ2h0KGRlc2MtPm1pbi5oZWlnaHQoKSk7CiB9CiAK
LXZvaWQgUmVuZGVyVGhlbWVFZmw6OmFkanVzdFNsaWRlclRodW1iU3R5bGUoU3R5bGVSZXNvbHZl
ciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZWxlbWVudCkgY29uc3QK
K3ZvaWQgUmVuZGVyVGhlbWVFZmw6OmFkanVzdFNsaWRlclRodW1iU3R5bGUoU3R5bGVSZXNvbHZl
ciogc3R5bGVSZXNvbHZlciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlbGVtZW50KSBj
b25zdAogewotICAgIFJlbmRlclRoZW1lOjphZGp1c3RTbGlkZXJUaHVtYlN0eWxlKHNlbGVjdG9y
LCBzdHlsZSwgZWxlbWVudCk7Ci0gICAgYWRqdXN0U2xpZGVyVHJhY2tTdHlsZShzZWxlY3Rvciwg
c3R5bGUsIGVsZW1lbnQpOworICAgIFJlbmRlclRoZW1lOjphZGp1c3RTbGlkZXJUaHVtYlN0eWxl
KHN0eWxlUmVzb2x2ZXIsIHN0eWxlLCBlbGVtZW50KTsKKyAgICBhZGp1c3RTbGlkZXJUcmFja1N0
eWxlKHN0eWxlUmVzb2x2ZXIsIHN0eWxlLCBlbGVtZW50KTsKIH0KIAogdm9pZCBSZW5kZXJUaGVt
ZUVmbDo6YWRqdXN0U2xpZGVyVGh1bWJTaXplKFJlbmRlclN0eWxlKiBzdHlsZSkgY29uc3QKQEAg
LTg4OCwxMCArODg4LDEwIEBAIGJvb2wgUmVuZGVyVGhlbWVFZmw6OnBhaW50U2xpZGVyVGh1bWIo
UmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IFBhaW50SW5mbyYgaW5mCiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCi12b2lkIFJlbmRlclRoZW1lRWZsOjphZGp1c3RDaGVja2JveFN0eWxlKFN0eWxl
UmVzb2x2ZXIqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGVsZW1lbnQp
IGNvbnN0Cit2b2lkIFJlbmRlclRoZW1lRWZsOjphZGp1c3RDaGVja2JveFN0eWxlKFN0eWxlUmVz
b2x2ZXIqIHN0eWxlUmVzb2x2ZXIsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZWxlbWVu
dCkgY29uc3QKIHsKICAgICBpZiAoIW1fcGFnZSAmJiBlbGVtZW50ICYmIGVsZW1lbnQtPmRvY3Vt
ZW50KCktPnBhZ2UoKSkgewotICAgICAgICBzdGF0aWNfY2FzdDxSZW5kZXJUaGVtZUVmbCo+KGVs
ZW1lbnQtPmRvY3VtZW50KCktPnBhZ2UoKS0+dGhlbWUoKSktPmFkanVzdENoZWNrYm94U3R5bGUo
c2VsZWN0b3IsIHN0eWxlLCBlbGVtZW50KTsKKyAgICAgICAgc3RhdGljX2Nhc3Q8UmVuZGVyVGhl
bWVFZmwqPihlbGVtZW50LT5kb2N1bWVudCgpLT5wYWdlKCktPnRoZW1lKCkpLT5hZGp1c3RDaGVj
a2JveFN0eWxlKHN0eWxlUmVzb2x2ZXIsIHN0eWxlLCBlbGVtZW50KTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICBhZGp1c3RTaXplQ29uc3RyYWludHMoc3R5bGUsIENoZWNrQm94KTsKQEAg
LTkwOSwxMCArOTA5LDEwIEBAIGJvb2wgUmVuZGVyVGhlbWVFZmw6OnBhaW50Q2hlY2tib3goUmVu
ZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IFBhaW50SW5mbyYgaW5mbywKICAgICByZXR1cm4gcGFp
bnRUaGVtZVBhcnQob2JqZWN0LCBDaGVja0JveCwgaW5mbywgcmVjdCk7CiB9CiAKLXZvaWQgUmVu
ZGVyVGhlbWVFZmw6OmFkanVzdFJhZGlvU3R5bGUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIFJl
bmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZWxlbWVudCkgY29uc3QKK3ZvaWQgUmVuZGVyVGhl
bWVFZmw6OmFkanVzdFJhZGlvU3R5bGUoU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciwgUmVu
ZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlbGVtZW50KSBjb25zdAogewogICAgIGlmICghbV9w
YWdlICYmIGVsZW1lbnQgJiYgZWxlbWVudC0+ZG9jdW1lbnQoKS0+cGFnZSgpKSB7Ci0gICAgICAg
IHN0YXRpY19jYXN0PFJlbmRlclRoZW1lRWZsKj4oZWxlbWVudC0+ZG9jdW1lbnQoKS0+cGFnZSgp
LT50aGVtZSgpKS0+YWRqdXN0UmFkaW9TdHlsZShzZWxlY3Rvciwgc3R5bGUsIGVsZW1lbnQpOwor
ICAgICAgICBzdGF0aWNfY2FzdDxSZW5kZXJUaGVtZUVmbCo+KGVsZW1lbnQtPmRvY3VtZW50KCkt
PnBhZ2UoKS0+dGhlbWUoKSktPmFkanVzdFJhZGlvU3R5bGUoc3R5bGVSZXNvbHZlciwgc3R5bGUs
IGVsZW1lbnQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGFkanVzdFNpemVDb25zdHJh
aW50cyhzdHlsZSwgUmFkaW9CdXR0b24pOwpAQCAtOTMwLDEwICs5MzAsMTAgQEAgYm9vbCBSZW5k
ZXJUaGVtZUVmbDo6cGFpbnRSYWRpbyhSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgUGFpbnRJ
bmZvJiBpbmZvLCBjb24KICAgICByZXR1cm4gcGFpbnRUaGVtZVBhcnQob2JqZWN0LCBSYWRpb0J1
dHRvbiwgaW5mbywgcmVjdCk7CiB9CiAKLXZvaWQgUmVuZGVyVGhlbWVFZmw6OmFkanVzdEJ1dHRv
blN0eWxlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1l
bnQqIGVsZW1lbnQpIGNvbnN0Cit2b2lkIFJlbmRlclRoZW1lRWZsOjphZGp1c3RCdXR0b25TdHls
ZShTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1l
bnQqIGVsZW1lbnQpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3BhZ2UgJiYgZWxlbWVudCAmJiBlbGVt
ZW50LT5kb2N1bWVudCgpLT5wYWdlKCkpIHsKLSAgICAgICAgc3RhdGljX2Nhc3Q8UmVuZGVyVGhl
bWVFZmwqPihlbGVtZW50LT5kb2N1bWVudCgpLT5wYWdlKCktPnRoZW1lKCkpLT5hZGp1c3RCdXR0
b25TdHlsZShzZWxlY3Rvciwgc3R5bGUsIGVsZW1lbnQpOworICAgICAgICBzdGF0aWNfY2FzdDxS
ZW5kZXJUaGVtZUVmbCo+KGVsZW1lbnQtPmRvY3VtZW50KCktPnBhZ2UoKS0+dGhlbWUoKSktPmFk
anVzdEJ1dHRvblN0eWxlKHN0eWxlUmVzb2x2ZXIsIHN0eWxlLCBlbGVtZW50KTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApAQCAtOTUzLDEwICs5NTMsMTAgQEAgYm9vbCBSZW5kZXJUaGVtZUVm
bDo6cGFpbnRCdXR0b24oUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IFBhaW50SW5mbyYgaW5m
bywgY28KICAgICByZXR1cm4gcGFpbnRUaGVtZVBhcnQob2JqZWN0LCBCdXR0b24sIGluZm8sIHJl
Y3QpOwogfQogCi12b2lkIFJlbmRlclRoZW1lRWZsOjphZGp1c3RNZW51TGlzdFN0eWxlKFN0eWxl
UmVzb2x2ZXIqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGVsZW1lbnQp
IGNvbnN0Cit2b2lkIFJlbmRlclRoZW1lRWZsOjphZGp1c3RNZW51TGlzdFN0eWxlKFN0eWxlUmVz
b2x2ZXIqIHN0eWxlUmVzb2x2ZXIsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZWxlbWVu
dCkgY29uc3QKIHsKICAgICBpZiAoIW1fcGFnZSAmJiBlbGVtZW50ICYmIGVsZW1lbnQtPmRvY3Vt
ZW50KCktPnBhZ2UoKSkgewotICAgICAgICBzdGF0aWNfY2FzdDxSZW5kZXJUaGVtZUVmbCo+KGVs
ZW1lbnQtPmRvY3VtZW50KCktPnBhZ2UoKS0+dGhlbWUoKSktPmFkanVzdE1lbnVMaXN0U3R5bGUo
c2VsZWN0b3IsIHN0eWxlLCBlbGVtZW50KTsKKyAgICAgICAgc3RhdGljX2Nhc3Q8UmVuZGVyVGhl
bWVFZmwqPihlbGVtZW50LT5kb2N1bWVudCgpLT5wYWdlKCktPnRoZW1lKCkpLT5hZGp1c3RNZW51
TGlzdFN0eWxlKHN0eWxlUmVzb2x2ZXIsIHN0eWxlLCBlbGVtZW50KTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICBhZGp1c3RTaXplQ29uc3RyYWludHMoc3R5bGUsIENvbWJvQm94KTsKQEAg
LTk3MSw5ICs5NzEsOSBAQCBib29sIFJlbmRlclRoZW1lRWZsOjpwYWludE1lbnVMaXN0KFJlbmRl
ck9iamVjdCogb2JqZWN0LCBjb25zdCBQYWludEluZm8mIGluZm8sCiAgICAgcmV0dXJuIHBhaW50
VGhlbWVQYXJ0KG9iamVjdCwgQ29tYm9Cb3gsIGluZm8sIHJlY3QpOwogfQogCi12b2lkIFJlbmRl
clRoZW1lRWZsOjphZGp1c3RNZW51TGlzdEJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXIqIHNlbGVj
dG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0Cit2b2lkIFJl
bmRlclRoZW1lRWZsOjphZGp1c3RNZW51TGlzdEJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXIqIHN0
eWxlUmVzb2x2ZXIsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZWxlbWVudCkgY29uc3QK
IHsKLSAgICBhZGp1c3RNZW51TGlzdFN0eWxlKHNlbGVjdG9yLCBzdHlsZSwgZWxlbWVudCk7Cisg
ICAgYWRqdXN0TWVudUxpc3RTdHlsZShzdHlsZVJlc29sdmVyLCBzdHlsZSwgZWxlbWVudCk7CiB9
CiAKIGJvb2wgUmVuZGVyVGhlbWVFZmw6OnBhaW50TWVudUxpc3RCdXR0b24oUmVuZGVyT2JqZWN0
KiBvYmplY3QsIGNvbnN0IFBhaW50SW5mbyYgaW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCkKQEAg
LTk4MSwxMCArOTgxLDEwIEBAIGJvb2wgUmVuZGVyVGhlbWVFZmw6OnBhaW50TWVudUxpc3RCdXR0
b24oUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IFBhaW50SW5mbyYKICAgICByZXR1cm4gcGFp
bnRNZW51TGlzdChvYmplY3QsIGluZm8sIHJlY3QpOwogfQogCi12b2lkIFJlbmRlclRoZW1lRWZs
OjphZGp1c3RUZXh0RmllbGRTdHlsZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvciwgUmVuZGVyU3R5
bGUqIHN0eWxlLCBFbGVtZW50KiBlbGVtZW50KSBjb25zdAordm9pZCBSZW5kZXJUaGVtZUVmbDo6
YWRqdXN0VGV4dEZpZWxkU3R5bGUoU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciwgUmVuZGVy
U3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlbGVtZW50KSBjb25zdAogewogICAgIGlmICghbV9wYWdl
ICYmIGVsZW1lbnQgJiYgZWxlbWVudC0+ZG9jdW1lbnQoKS0+cGFnZSgpKSB7Ci0gICAgICAgIHN0
YXRpY19jYXN0PFJlbmRlclRoZW1lRWZsKj4oZWxlbWVudC0+ZG9jdW1lbnQoKS0+cGFnZSgpLT50
aGVtZSgpKS0+YWRqdXN0VGV4dEZpZWxkU3R5bGUoc2VsZWN0b3IsIHN0eWxlLCBlbGVtZW50KTsK
KyAgICAgICAgc3RhdGljX2Nhc3Q8UmVuZGVyVGhlbWVFZmwqPihlbGVtZW50LT5kb2N1bWVudCgp
LT5wYWdlKCktPnRoZW1lKCkpLT5hZGp1c3RUZXh0RmllbGRTdHlsZShzdHlsZVJlc29sdmVyLCBz
dHlsZSwgZWxlbWVudCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgYWRqdXN0U2l6ZUNv
bnN0cmFpbnRzKHN0eWxlLCBUZXh0RmllbGQpOwpAQCAtOTk5LDkgKzk5OSw5IEBAIGJvb2wgUmVu
ZGVyVGhlbWVFZmw6OnBhaW50VGV4dEZpZWxkKFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBQ
YWludEluZm8mIGluZm8sCiAgICAgcmV0dXJuIHBhaW50VGhlbWVQYXJ0KG9iamVjdCwgVGV4dEZp
ZWxkLCBpbmZvLCByZWN0KTsKIH0KIAotdm9pZCBSZW5kZXJUaGVtZUVmbDo6YWRqdXN0VGV4dEFy
ZWFTdHlsZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVt
ZW50KiBlbGVtZW50KSBjb25zdAordm9pZCBSZW5kZXJUaGVtZUVmbDo6YWRqdXN0VGV4dEFyZWFT
dHlsZShTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVs
ZW1lbnQqIGVsZW1lbnQpIGNvbnN0CiB7Ci0gICAgYWRqdXN0VGV4dEZpZWxkU3R5bGUoc2VsZWN0
b3IsIHN0eWxlLCBlbGVtZW50KTsKKyAgICBhZGp1c3RUZXh0RmllbGRTdHlsZShzdHlsZVJlc29s
dmVyLCBzdHlsZSwgZWxlbWVudCk7CiB9CiAKIGJvb2wgUmVuZGVyVGhlbWVFZmw6OnBhaW50VGV4
dEFyZWEoUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IFBhaW50SW5mbyYgaW5mbywgY29uc3Qg
SW50UmVjdCYgcmVjdCkKQEAgLTEwMDksMTAgKzEwMDksMTAgQEAgYm9vbCBSZW5kZXJUaGVtZUVm
bDo6cGFpbnRUZXh0QXJlYShSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgUGFpbnRJbmZvJiBp
bmZvLAogICAgIHJldHVybiBwYWludFRleHRGaWVsZChvYmplY3QsIGluZm8sIHJlY3QpOwogfQog
Ci12b2lkIFJlbmRlclRoZW1lRWZsOjphZGp1c3RTZWFyY2hGaWVsZERlY29yYXRpb25TdHlsZShT
dHlsZVJlc29sdmVyKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlbGVt
ZW50KSBjb25zdAordm9pZCBSZW5kZXJUaGVtZUVmbDo6YWRqdXN0U2VhcmNoRmllbGREZWNvcmF0
aW9uU3R5bGUoU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciwgUmVuZGVyU3R5bGUqIHN0eWxl
LCBFbGVtZW50KiBlbGVtZW50KSBjb25zdAogewogICAgIGlmICghbV9wYWdlICYmIGVsZW1lbnQg
JiYgZWxlbWVudC0+ZG9jdW1lbnQoKS0+cGFnZSgpKSB7Ci0gICAgICAgIHN0YXRpY19jYXN0PFJl
bmRlclRoZW1lRWZsKj4oZWxlbWVudC0+ZG9jdW1lbnQoKS0+cGFnZSgpLT50aGVtZSgpKS0+YWRq
dXN0U2VhcmNoRmllbGREZWNvcmF0aW9uU3R5bGUoc2VsZWN0b3IsIHN0eWxlLCBlbGVtZW50KTsK
KyAgICAgICAgc3RhdGljX2Nhc3Q8UmVuZGVyVGhlbWVFZmwqPihlbGVtZW50LT5kb2N1bWVudCgp
LT5wYWdlKCktPnRoZW1lKCkpLT5hZGp1c3RTZWFyY2hGaWVsZERlY29yYXRpb25TdHlsZShzdHls
ZVJlc29sdmVyLCBzdHlsZSwgZWxlbWVudCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
YWRqdXN0U2l6ZUNvbnN0cmFpbnRzKHN0eWxlLCBTZWFyY2hGaWVsZERlY29yYXRpb24pOwpAQCAt
MTAyNSwxMCArMTAyNSwxMCBAQCBib29sIFJlbmRlclRoZW1lRWZsOjpwYWludFNlYXJjaEZpZWxk
RGVjb3JhdGlvbihSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgUGFpbgogICAgIHJldHVybiBw
YWludFRoZW1lUGFydChvYmplY3QsIFNlYXJjaEZpZWxkRGVjb3JhdGlvbiwgaW5mbywgcmVjdCk7
CiB9CiAKLXZvaWQgUmVuZGVyVGhlbWVFZmw6OmFkanVzdFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRv
blN0eWxlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1l
bnQqIGVsZW1lbnQpIGNvbnN0Cit2b2lkIFJlbmRlclRoZW1lRWZsOjphZGp1c3RTZWFyY2hGaWVs
ZFJlc3VsdHNCdXR0b25TdHlsZShTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyLCBSZW5kZXJT
dHlsZSogc3R5bGUsIEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3BhZ2Ug
JiYgZWxlbWVudCAmJiBlbGVtZW50LT5kb2N1bWVudCgpLT5wYWdlKCkpIHsKLSAgICAgICAgc3Rh
dGljX2Nhc3Q8UmVuZGVyVGhlbWVFZmwqPihlbGVtZW50LT5kb2N1bWVudCgpLT5wYWdlKCktPnRo
ZW1lKCkpLT5hZGp1c3RTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25TdHlsZShzZWxlY3Rvciwgc3R5
bGUsIGVsZW1lbnQpOworICAgICAgICBzdGF0aWNfY2FzdDxSZW5kZXJUaGVtZUVmbCo+KGVsZW1l
bnQtPmRvY3VtZW50KCktPnBhZ2UoKS0+dGhlbWUoKSktPmFkanVzdFNlYXJjaEZpZWxkUmVzdWx0
c0J1dHRvblN0eWxlKHN0eWxlUmVzb2x2ZXIsIHN0eWxlLCBlbGVtZW50KTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICBhZGp1c3RTaXplQ29uc3RyYWludHMoc3R5bGUsIFNlYXJjaEZpZWxk
UmVzdWx0c0J1dHRvbik7CkBAIC0xMDQxLDEwICsxMDQxLDEwIEBAIGJvb2wgUmVuZGVyVGhlbWVF
Zmw6OnBhaW50U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uKFJlbmRlck9iamVjdCogb2JqZWN0LCBj
b25zdCBQCiAgICAgcmV0dXJuIHBhaW50VGhlbWVQYXJ0KG9iamVjdCwgU2VhcmNoRmllbGRSZXN1
bHRzQnV0dG9uLCBpbmZvLCByZWN0KTsKIH0KIAotdm9pZCBSZW5kZXJUaGVtZUVmbDo6YWRqdXN0
U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvblN0eWxlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9y
LCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0Cit2b2lkIFJlbmRl
clRoZW1lRWZsOjphZGp1c3RTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uU3R5bGUoU3R5bGVS
ZXNvbHZlciogc3R5bGVSZXNvbHZlciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlbGVt
ZW50KSBjb25zdAogewogICAgIGlmICghbV9wYWdlICYmIGVsZW1lbnQgJiYgZWxlbWVudC0+ZG9j
dW1lbnQoKS0+cGFnZSgpKSB7Ci0gICAgICAgIHN0YXRpY19jYXN0PFJlbmRlclRoZW1lRWZsKj4o
ZWxlbWVudC0+ZG9jdW1lbnQoKS0+cGFnZSgpLT50aGVtZSgpKS0+YWRqdXN0U2VhcmNoRmllbGRS
ZXN1bHRzRGVjb3JhdGlvblN0eWxlKHNlbGVjdG9yLCBzdHlsZSwgZWxlbWVudCk7CisgICAgICAg
IHN0YXRpY19jYXN0PFJlbmRlclRoZW1lRWZsKj4oZWxlbWVudC0+ZG9jdW1lbnQoKS0+cGFnZSgp
LT50aGVtZSgpKS0+YWRqdXN0U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvblN0eWxlKHN0eWxl
UmVzb2x2ZXIsIHN0eWxlLCBlbGVtZW50KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBh
ZGp1c3RTaXplQ29uc3RyYWludHMoc3R5bGUsIFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRpb24p
OwpAQCAtMTA1NywxMCArMTA1NywxMCBAQCBib29sIFJlbmRlclRoZW1lRWZsOjpwYWludFNlYXJj
aEZpZWxkUmVzdWx0c0RlY29yYXRpb24oUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbgogICAgIHJl
dHVybiBwYWludFRoZW1lUGFydChvYmplY3QsIFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRpb24s
IGluZm8sIHJlY3QpOwogfQogCi12b2lkIFJlbmRlclRoZW1lRWZsOjphZGp1c3RTZWFyY2hGaWVs
ZENhbmNlbEJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSog
c3R5bGUsIEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0Cit2b2lkIFJlbmRlclRoZW1lRWZsOjphZGp1
c3RTZWFyY2hGaWVsZENhbmNlbEJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2
ZXIsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZWxlbWVudCkgY29uc3QKIHsKICAgICBp
ZiAoIW1fcGFnZSAmJiBlbGVtZW50ICYmIGVsZW1lbnQtPmRvY3VtZW50KCktPnBhZ2UoKSkgewot
ICAgICAgICBzdGF0aWNfY2FzdDxSZW5kZXJUaGVtZUVmbCo+KGVsZW1lbnQtPmRvY3VtZW50KCkt
PnBhZ2UoKS0+dGhlbWUoKSktPmFkanVzdFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uU3R5bGUoc2Vs
ZWN0b3IsIHN0eWxlLCBlbGVtZW50KTsKKyAgICAgICAgc3RhdGljX2Nhc3Q8UmVuZGVyVGhlbWVF
ZmwqPihlbGVtZW50LT5kb2N1bWVudCgpLT5wYWdlKCktPnRoZW1lKCkpLT5hZGp1c3RTZWFyY2hG
aWVsZENhbmNlbEJ1dHRvblN0eWxlKHN0eWxlUmVzb2x2ZXIsIHN0eWxlLCBlbGVtZW50KTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICBhZGp1c3RTaXplQ29uc3RyYWludHMoc3R5bGUsIFNl
YXJjaEZpZWxkQ2FuY2VsQnV0dG9uKTsKQEAgLTEwNzMsMTAgKzEwNzMsMTAgQEAgYm9vbCBSZW5k
ZXJUaGVtZUVmbDo6cGFpbnRTZWFyY2hGaWVsZENhbmNlbEJ1dHRvbihSZW5kZXJPYmplY3QqIG9i
amVjdCwgY29uc3QgUGEKICAgICByZXR1cm4gcGFpbnRUaGVtZVBhcnQob2JqZWN0LCBTZWFyY2hG
aWVsZENhbmNlbEJ1dHRvbiwgaW5mbywgcmVjdCk7CiB9CiAKLXZvaWQgUmVuZGVyVGhlbWVFZmw6
OmFkanVzdFNlYXJjaEZpZWxkU3R5bGUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIFJlbmRlclN0
eWxlKiBzdHlsZSwgRWxlbWVudCogZWxlbWVudCkgY29uc3QKK3ZvaWQgUmVuZGVyVGhlbWVFZmw6
OmFkanVzdFNlYXJjaEZpZWxkU3R5bGUoU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciwgUmVu
ZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlbGVtZW50KSBjb25zdAogewogICAgIGlmICghbV9w
YWdlICYmIGVsZW1lbnQgJiYgZWxlbWVudC0+ZG9jdW1lbnQoKS0+cGFnZSgpKSB7Ci0gICAgICAg
IHN0YXRpY19jYXN0PFJlbmRlclRoZW1lRWZsKj4oZWxlbWVudC0+ZG9jdW1lbnQoKS0+cGFnZSgp
LT50aGVtZSgpKS0+YWRqdXN0U2VhcmNoRmllbGRTdHlsZShzZWxlY3Rvciwgc3R5bGUsIGVsZW1l
bnQpOworICAgICAgICBzdGF0aWNfY2FzdDxSZW5kZXJUaGVtZUVmbCo+KGVsZW1lbnQtPmRvY3Vt
ZW50KCktPnBhZ2UoKS0+dGhlbWUoKSktPmFkanVzdFNlYXJjaEZpZWxkU3R5bGUoc3R5bGVSZXNv
bHZlciwgc3R5bGUsIGVsZW1lbnQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGFkanVz
dFNpemVDb25zdHJhaW50cyhzdHlsZSwgU2VhcmNoRmllbGQpOwpAQCAtMTExMiw3ICsxMTEyLDcg
QEAgdm9pZCBSZW5kZXJUaGVtZUVmbDo6c3lzdGVtRm9udChpbnQgcHJvcElkLCBGb250RGVzY3Jp
cHRpb24mIGZvbnREZXNjcmlwdGlvbikgY28KIH0KIAogI2lmIEVOQUJMRShQUk9HUkVTU19UQUcp
Ci12b2lkIFJlbmRlclRoZW1lRWZsOjphZGp1c3RQcm9ncmVzc0JhclN0eWxlKFN0eWxlUmVzb2x2
ZXIqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0
Cit2b2lkIFJlbmRlclRoZW1lRWZsOjphZGp1c3RQcm9ncmVzc0JhclN0eWxlKFN0eWxlUmVzb2x2
ZXIqLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqKSBjb25zdAogewogICAgIHN0eWxlLT5z
ZXRCb3hTaGFkb3cobnVsbHB0cik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L1JlbmRlclRoZW1lR3RrLmNwcAppbmRleCAxMThkNjY0MDFlMGI1ZjdlZTIwNTE1N2UyZDAyYWQz
MTc5YWM3NmZhLi5lNzFkOTlhZjNmNzA1M2Q5MGIzM2I5OTNmMmEzMGNjZjVlODIwODVjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5jcHAKQEAgLTIw
NCwxNCArMjA0LDE0IEBAIHN0YXRpYyBHdGtTdGF0ZVR5cGUgZ3RrSWNvblN0YXRlKFJlbmRlclRo
ZW1lKiB0aGVtZSwgUmVuZGVyT2JqZWN0KiByZW5kZXJPYmplY3QpCiAgICAgcmV0dXJuIEdUS19T
VEFURV9OT1JNQUw7CiB9CiAKLXZvaWQgUmVuZGVyVGhlbWVHdGs6OmFkanVzdEJ1dHRvblN0eWxl
KFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIFdlYkNvcmU6OkVs
ZW1lbnQqIGUpIGNvbnN0Cit2b2lkIFJlbmRlclRoZW1lR3RrOjphZGp1c3RCdXR0b25TdHlsZShT
dHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqIHN0eWxlLCBXZWJDb3JlOjpFbGVtZW50KikgY29u
c3QKIHsKICAgICAvLyBTb21lIGxheW91dCB0ZXN0cyBjaGVjayBleHBsaWNpdGx5IHRoYXQgYnV0
dG9ucyBpZ25vcmUgbGluZS1oZWlnaHQuCiAgICAgaWYgKHN0eWxlLT5hcHBlYXJhbmNlKCkgPT0g
UHVzaEJ1dHRvblBhcnQpCiAgICAgICAgIHN0eWxlLT5zZXRMaW5lSGVpZ2h0KFJlbmRlclN0eWxl
Ojppbml0aWFsTGluZUhlaWdodCgpKTsKIH0KIAotdm9pZCBSZW5kZXJUaGVtZUd0azo6YWRqdXN0
TWVudUxpc3RTdHlsZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxl
LCBFbGVtZW50KiBlKSBjb25zdAordm9pZCBSZW5kZXJUaGVtZUd0azo6YWRqdXN0TWVudUxpc3RT
dHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KikgY29uc3QK
IHsKICAgICAvLyBUaGUgdGVzdHMgY2hlY2sgZXhwbGljaXRseSB0aGF0IHNlbGVjdCBtZW51IGJ1
dHRvbnMgaWdub3JlIGxpbmUgaGVpZ2h0LgogICAgIHN0eWxlLT5zZXRMaW5lSGVpZ2h0KFJlbmRl
clN0eWxlOjppbml0aWFsTGluZUhlaWdodCgpKTsKQEAgLTIyMCw5ICsyMjAsOSBAQCB2b2lkIFJl
bmRlclRoZW1lR3RrOjphZGp1c3RNZW51TGlzdFN0eWxlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9y
LCBSZW5kZXJTdHlsZSogcwogICAgIHN0eWxlLT5yZXNldEJvcmRlclJhZGl1cygpOwogfQogCi12
b2lkIFJlbmRlclRoZW1lR3RrOjphZGp1c3RNZW51TGlzdEJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2
ZXIqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGUpIGNvbnN0Cit2b2lk
IFJlbmRlclRoZW1lR3RrOjphZGp1c3RNZW51TGlzdEJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXIq
IHN0eWxlUmVzb2x2ZXIsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZSkgY29uc3QKIHsK
LSAgICBhZGp1c3RNZW51TGlzdFN0eWxlKHNlbGVjdG9yLCBzdHlsZSwgZSk7CisgICAgYWRqdXN0
TWVudUxpc3RTdHlsZShzdHlsZVJlc29sdmVyLCBzdHlsZSwgZSk7CiB9CiAKIGJvb2wgUmVuZGVy
VGhlbWVHdGs6OnBhaW50TWVudUxpc3RCdXR0b24oUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0
IFBhaW50SW5mbyYgaW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCkKQEAgLTI3Niw5ICsyNzYsOSBA
QCBzdGF0aWMgR3RrSWNvblNpemUgZ2V0SWNvblNpemVGb3JQaXhlbFNpemUoZ2ludCBwaXhlbFNp
emUpCiAgICAgcmV0dXJuIEdUS19JQ09OX1NJWkVfRElBTE9HOwogfQogCi12b2lkIFJlbmRlclRo
ZW1lR3RrOjphZGp1c3RTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25TdHlsZShTdHlsZVJlc29sdmVy
KiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlKSBjb25zdAordm9pZCBS
ZW5kZXJUaGVtZUd0azo6YWRqdXN0U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uU3R5bGUoU3R5bGVS
ZXNvbHZlciogc3R5bGVSZXNvbHZlciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlKSBj
b25zdAogewotICAgIGFkanVzdFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uU3R5bGUoc2VsZWN0b3Is
IHN0eWxlLCBlKTsKKyAgICBhZGp1c3RTZWFyY2hGaWVsZENhbmNlbEJ1dHRvblN0eWxlKHN0eWxl
UmVzb2x2ZXIsIHN0eWxlLCBlKTsKIH0KIAogYm9vbCBSZW5kZXJUaGVtZUd0azo6cGFpbnRTZWFy
Y2hGaWVsZFJlc3VsdHNCdXR0b24oUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIGks
IGNvbnN0IEludFJlY3QmIHJlY3QpCkBAIC0zMDQsNyArMzA0LDcgQEAgc3RhdGljIHZvaWQgYWRq
dXN0U2VhcmNoRmllbGRJY29uU3R5bGUoUmVuZGVyU3R5bGUqIHN0eWxlKQogICAgIHN0eWxlLT5z
ZXRIZWlnaHQoTGVuZ3RoKGhlaWdodCwgRml4ZWQpKTsKIH0KIAotdm9pZCBSZW5kZXJUaGVtZUd0
azo6YWRqdXN0U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvblN0eWxlKFN0eWxlUmVzb2x2ZXIq
IHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGUpIGNvbnN0Cit2b2lkIFJl
bmRlclRoZW1lR3RrOjphZGp1c3RTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uU3R5bGUoU3R5
bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCopIGNvbnN0CiB7CiAgICAg
YWRqdXN0U2VhcmNoRmllbGRJY29uU3R5bGUoc3R5bGUpOwogfQpAQCAtMzQxLDcgKzM0MSw3IEBA
IGJvb2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvbihS
ZW5kZXJPYmplY3QqIHJlbmRlck9iamVjCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFJl
bmRlclRoZW1lR3RrOjphZGp1c3RTZWFyY2hGaWVsZENhbmNlbEJ1dHRvblN0eWxlKFN0eWxlUmVz
b2x2ZXIqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGUpIGNvbnN0Cit2
b2lkIFJlbmRlclRoZW1lR3RrOjphZGp1c3RTZWFyY2hGaWVsZENhbmNlbEJ1dHRvblN0eWxlKFN0
eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqKSBjb25zdAogewogICAg
IGFkanVzdFNlYXJjaEZpZWxkSWNvblN0eWxlKHN0eWxlKTsKIH0KQEAgLTM2MCw3ICszNjAsNyBA
QCBib29sIFJlbmRlclRoZW1lR3RrOjpwYWludFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uKFJlbmRl
ck9iamVjdCogcmVuZGVyT2JqZWN0LCBjbwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBS
ZW5kZXJUaGVtZUd0azo6YWRqdXN0U2VhcmNoRmllbGRTdHlsZShTdHlsZVJlc29sdmVyKiBzZWxl
Y3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlKSBjb25zdAordm9pZCBSZW5kZXJU
aGVtZUd0azo6YWRqdXN0U2VhcmNoRmllbGRTdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5
bGUqIHN0eWxlLCBFbGVtZW50KikgY29uc3QKIHsKICAgICAvLyBXZSBjYW5ub3QgZ2l2ZSBhIHBy
b3BlciByZW5kZXJpbmcgd2hlbiBib3JkZXIgcmFkaXVzIGlzIGFjdGl2ZSwgdW5mb3J0dW5hdGVs
eS4KICAgICBzdHlsZS0+cmVzZXRCb3JkZXJSYWRpdXMoKTsKQEAgLTQwMiw5ICs0MDIsOSBAQCB2
b2lkIFJlbmRlclRoZW1lR3RrOjphZGp1c3RTbGlkZXJUcmFja1N0eWxlKFN0eWxlUmVzb2x2ZXIq
LCBSZW5kZXJTdHlsZSogc3R5bGUsCiAgICAgc3R5bGUtPnNldEJveFNoYWRvdyhudWxscHRyKTsK
IH0KIAotdm9pZCBSZW5kZXJUaGVtZUd0azo6YWRqdXN0U2xpZGVyVGh1bWJTdHlsZShTdHlsZVJl
c29sdmVyKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlbGVtZW50KSBj
b25zdAordm9pZCBSZW5kZXJUaGVtZUd0azo6YWRqdXN0U2xpZGVyVGh1bWJTdHlsZShTdHlsZVJl
c29sdmVyKiBzdHlsZVJlc29sdmVyLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGVsZW1l
bnQpIGNvbnN0CiB7Ci0gICAgUmVuZGVyVGhlbWU6OmFkanVzdFNsaWRlclRodW1iU3R5bGUoc2Vs
ZWN0b3IsIHN0eWxlLCBlbGVtZW50KTsKKyAgICBSZW5kZXJUaGVtZTo6YWRqdXN0U2xpZGVyVGh1
bWJTdHlsZShzdHlsZVJlc29sdmVyLCBzdHlsZSwgZWxlbWVudCk7CiAgICAgc3R5bGUtPnNldEJv
eFNoYWRvdyhudWxscHRyKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vcXQvUmVuZGVyVGhlbWVRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9SZW5k
ZXJUaGVtZVF0LmNwcAppbmRleCAyNjg4ZjlkZmFmY2MzZjY5ZThkOTliOGFiZTI3YjM4NjI2YTI1
ZGJiLi4xMWJmM2U3ODgyNmQ0N2ExMTA5NjRiYjdjY2U5ZTg1NTNiMjlkYmMwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9SZW5kZXJUaGVtZVF0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9SZW5kZXJUaGVtZVF0LmNwcApAQCAtMzk0LDkgKzM5NCw5
IEBAIHZvaWQgUmVuZGVyVGhlbWVRdDo6YWRqdXN0U2xpZGVyVHJhY2tTdHlsZShTdHlsZVJlc29s
dmVyKiwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFCiAgICAgc3R5bGUtPnNldEJveFNoYWRvdyhudWxs
cHRyKTsKIH0KIAotdm9pZCBSZW5kZXJUaGVtZVF0OjphZGp1c3RTbGlkZXJUaHVtYlN0eWxlKFN0
eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGVsZW1l
bnQpIGNvbnN0Cit2b2lkIFJlbmRlclRoZW1lUXQ6OmFkanVzdFNsaWRlclRodW1iU3R5bGUoU3R5
bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBl
bGVtZW50KSBjb25zdAogewotICAgIFJlbmRlclRoZW1lOjphZGp1c3RTbGlkZXJUaHVtYlN0eWxl
KHNlbGVjdG9yLCBzdHlsZSwgZWxlbWVudCk7CisgICAgUmVuZGVyVGhlbWU6OmFkanVzdFNsaWRl
clRodW1iU3R5bGUoc3R5bGVSZXNvbHZlciwgc3R5bGUsIGVsZW1lbnQpOwogICAgIHN0eWxlLT5z
ZXRCb3hTaGFkb3cobnVsbHB0cik7CiB9CiAKQEAgLTQwNiw4ICs0MDYsNyBAQCBib29sIFJlbmRl
clRoZW1lUXQ6OnBhaW50U2VhcmNoRmllbGQoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludElu
Zm8mIHBpLAogICAgIHJldHVybiBwYWludFRleHRGaWVsZChvLCBwaSwgcik7CiB9CiAKLXZvaWQg
UmVuZGVyVGhlbWVRdDo6YWRqdXN0U2VhcmNoRmllbGRTdHlsZShTdHlsZVJlc29sdmVyKiBzZWxl
Y3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEVsZW1lbnQqIGUpIGNvbnN0Cit2b2lkIFJlbmRlclRoZW1lUXQ6OmFkanVz
dFNlYXJjaEZpZWxkU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxl
bWVudCopIGNvbnN0CiB7CiAgICAgLy8gUmVzZXR0aW5nIHRoZSBzdHlsZSBsaWtlIHRoaXMgbGVh
ZHMgdG8gZGlmZmVyZW5jZXMgbGlrZToKICAgICAvLyAtIFJlbmRlclRleHRDb250cm9sIHtJTlBV
VH0gYXQgKDIsMikgc2l6ZSAxNjh4MjUgW2JnY29sb3I9I0ZGRkZGRl0gYm9yZGVyOiAoMnB4IGlu
c2V0ICMwMDAwMDApXQpAQCAtNDIwLDggKzQxOSw3IEBAIHZvaWQgUmVuZGVyVGhlbWVRdDo6YWRq
dXN0U2VhcmNoRmllbGRTdHlsZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUq
CiAgICAgY29tcHV0ZVNpemVCYXNlZE9uU3R5bGUoc3R5bGUpOwogfQogCi12b2lkIFJlbmRlclRo
ZW1lUXQ6OmFkanVzdFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZlciog
c2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbGVtZW50KiBlKSBjb25zdAordm9pZCBSZW5k
ZXJUaGVtZVF0OjphZGp1c3RTZWFyY2hGaWVsZENhbmNlbEJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2
ZXIqLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqKSBjb25zdAogewogICAgIC8vIExvZ2lj
IHRha2VuIGZyb20gUmVuZGVyVGhlbWVDaHJvbWl1bS5jcHAuCiAgICAgLy8gU2NhbGUgdGhlIGJ1
dHRvbiBzaXplIGJhc2VkIG9uIHRoZSBmb250IHNpemUuCkBAIC00NzIsMTEgKzQ3MCwxMCBAQCBi
b29sIFJlbmRlclRoZW1lUXQ6OnBhaW50U2VhcmNoRmllbGRDYW5jZWxCdXR0b24oUmVuZGVyT2Jq
ZWN0KiBvLCBjb25zdCBQYWludEluZgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBSZW5k
ZXJUaGVtZVF0OjphZGp1c3RTZWFyY2hGaWVsZERlY29yYXRpb25TdHlsZShTdHlsZVJlc29sdmVy
KiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbGVtZW50KiBlKSBjb25zdAordm9pZCBSZW5k
ZXJUaGVtZVF0OjphZGp1c3RTZWFyY2hGaWVsZERlY29yYXRpb25TdHlsZShTdHlsZVJlc29sdmVy
KiBzdHlsZVJlc29sdmVyLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGUpIGNvbnN0CiB7
CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICBSZW5kZXJUaGVtZTo6YWRqdXN0U2VhcmNoRmll
bGREZWNvcmF0aW9uU3R5bGUoc2VsZWN0b3IsIHN0eWxlLCBlKTsKKyAgICBSZW5kZXJUaGVtZTo6
YWRqdXN0U2VhcmNoRmllbGREZWNvcmF0aW9uU3R5bGUoc3R5bGVSZXNvbHZlciwgc3R5bGUsIGUp
OwogfQogCiBib29sIFJlbmRlclRoZW1lUXQ6OnBhaW50U2VhcmNoRmllbGREZWNvcmF0aW9uKFJl
bmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBwaSwKQEAgLTQ4NiwxMSArNDgzLDEwIEBA
IGJvb2wgUmVuZGVyVGhlbWVRdDo6cGFpbnRTZWFyY2hGaWVsZERlY29yYXRpb24oUmVuZGVyT2Jq
ZWN0KiBvLCBjb25zdCBQYWludEluZm8mCiAgICAgcmV0dXJuIFJlbmRlclRoZW1lOjpwYWludFNl
YXJjaEZpZWxkRGVjb3JhdGlvbihvLCBwaSwgcik7CiB9CiAKLXZvaWQgUmVuZGVyVGhlbWVRdDo6
YWRqdXN0U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvblN0eWxlKFN0eWxlUmVzb2x2ZXIqIHNl
bGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbGVtZW50KiBlKSBjb25zdAordm9pZCBS
ZW5kZXJUaGVtZVF0OjphZGp1c3RTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uU3R5bGUoU3R5
bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBl
KSBjb25zdAogewogICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgUmVuZGVyVGhlbWU6OmFkanVz
dFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRpb25TdHlsZShzZWxlY3Rvciwgc3R5bGUsIGUpOwor
ICAgIFJlbmRlclRoZW1lOjphZGp1c3RTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uU3R5bGUo
c3R5bGVSZXNvbHZlciwgc3R5bGUsIGUpOwogfQogCiBib29sIFJlbmRlclRoZW1lUXQ6OnBhaW50
U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvbihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50
SW5mbyYgcGksCkBAIC01MDEsOCArNDk3LDcgQEAgYm9vbCBSZW5kZXJUaGVtZVF0OjpwYWludFNl
YXJjaEZpZWxkUmVzdWx0c0RlY29yYXRpb24oUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWkKIH0K
IAogI2lmbmRlZiBRVF9OT19TUElOQk9YCi12b2lkIFJlbmRlclRoZW1lUXQ6OmFkanVzdElubmVy
U3BpbkJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5
bGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVsZW1l
bnQqIGUpIGNvbnN0Cit2b2lkIFJlbmRlclRoZW1lUXQ6OmFkanVzdElubmVyU3BpbkJ1dHRvblN0
eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqKSBjb25zdAog
ewogICAgIC8vIFVzZSB0aGUgc2FtZSB3aWR0aCBhcyBvdXIgbmF0aXZlIHNjcm9sbGJhcgogICAg
IGludCB3aWR0aCA9IFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLT5zY3JvbGxiYXJUaGlja25lc3Mo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1JlbmRlclRoZW1lUXRN
b2JpbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvUmVuZGVyVGhlbWVRdE1vYmls
ZS5jcHAKaW5kZXggYmEyMzdjMmQ2YzViZTMxOTZiMzE3NjcyNjEwYmE4NjEwODkzMzYyMC4uM2Q4
YjU2NWQ3NWY0OTY2OGI3N2Y2ZTQ5MGNjZGRiODNmOGIwYzdiMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vcXQvUmVuZGVyVGhlbWVRdE1vYmlsZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vcXQvUmVuZGVyVGhlbWVRdE1vYmlsZS5jcHAKQEAgLTYzMCw3ICs2
MzAsNyBAQCB2b2lkIFJlbmRlclRoZW1lUXRNb2JpbGU6OmNvbXB1dGVTaXplQmFzZWRPblN0eWxl
KFJlbmRlclN0eWxlKiByZW5kZXJTdHlsZSkgY29ucwogICAgICAgICByZW5kZXJTdHlsZS0+c2V0
TWluSGVpZ2h0KExlbmd0aChzaXplLmhlaWdodCgpLCBGaXhlZCkpOwogfQogCi12b2lkIFJlbmRl
clRoZW1lUXRNb2JpbGU6OmFkanVzdEJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9y
LCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqKSBjb25zdAordm9pZCBSZW5kZXJUaGVtZVF0
TW9iaWxlOjphZGp1c3RCdXR0b25TdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqIHN0
eWxlLCBFbGVtZW50KikgY29uc3QKIHsKICAgICAvLyBEaXRjaCB0aGUgYm9yZGVyLgogICAgIHN0
eWxlLT5yZXNldEJvcmRlcigpOwpAQCAtNzIxLDkgKzcyMSw5IEBAIGJvb2wgUmVuZGVyVGhlbWVR
dE1vYmlsZTo6cGFpbnRUZXh0RmllbGQoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8m
IGksIGNvCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFJlbmRlclRoZW1lUXRNb2JpbGU6
OmFkanVzdE1lbnVMaXN0U3R5bGUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIFJlbmRlclN0eWxl
KiBzdHlsZSwgRWxlbWVudCogZSkgY29uc3QKK3ZvaWQgUmVuZGVyVGhlbWVRdE1vYmlsZTo6YWRq
dXN0TWVudUxpc3RTdHlsZShTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyLCBSZW5kZXJTdHls
ZSogc3R5bGUsIEVsZW1lbnQqIGUpIGNvbnN0CiB7Ci0gICAgUmVuZGVyVGhlbWVRdDo6YWRqdXN0
TWVudUxpc3RTdHlsZShzZWxlY3Rvciwgc3R5bGUsIGUpOworICAgIFJlbmRlclRoZW1lUXQ6OmFk
anVzdE1lbnVMaXN0U3R5bGUoc3R5bGVSZXNvbHZlciwgc3R5bGUsIGUpOwogICAgIHN0eWxlLT5z
ZXRQYWRkaW5nTGVmdChMZW5ndGgobWVudUxpc3RQYWRkaW5nLCBGaXhlZCkpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93eC9SZW5kZXJUaGVtZVd4LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3d4L1JlbmRlclRoZW1lV3guY3BwCmluZGV4IDhhYzhhOWE2
MWE3MzIyNzU1MGQ1NGU1Mjk1MGM0ZGFjNWQ2MmQ5NzEuLjI2OTFlN2Y0MzAxYTQ5ZjhiYzQ5ZTZk
OWQzZTMzYzI4NDcxNTg3MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3d4
L1JlbmRlclRoZW1lV3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3d4L1JlbmRl
clRoZW1lV3guY3BwCkBAIC0yNTcsNyArMjU3LDcgQEAgYm9vbCBSZW5kZXJUaGVtZVd4OjpzdXBw
b3J0c0ZvY3VzKENvbnRyb2xQYXJ0IHBhcnQpIGNvbnN0CiAgICAgfQogfQogCi12b2lkIFJlbmRl
clRoZW1lV3g6OmFkanVzdEJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBSZW5k
ZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGUpIGNvbnN0Cit2b2lkIFJlbmRlclRoZW1lV3g6OmFk
anVzdEJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1l
bnQqKSBjb25zdAogewogICAgIGFkZEludHJpbnNpY01hcmdpbnMoc3R5bGUpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCmluZGV4IDJkOTM0ZDFhNzYwNmQx
NTI2YTlmODM3NWEzMWU4OTYxNzhiZWQxM2EuLjM2MzM2ZmJhMzNkODA1MjZjMTNlYTk1Yzk3MzEw
NjVhNDY4NGQ1ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
aXN0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5j
cHAKQEAgLTEyNSw3ICsxMjUsNyBAQCB2b2lkIFJlbmRlckxpc3RCb3g6OnVwZGF0ZUZyb21FbGVt
ZW50KCkKICAgICAgICAgICAgICAgICBGb250RGVzY3JpcHRpb24gZCA9IGl0ZW1Gb250LmZvbnRE
ZXNjcmlwdGlvbigpOwogICAgICAgICAgICAgICAgIGQuc2V0V2VpZ2h0KGQuYm9sZGVyV2VpZ2h0
KCkpOwogICAgICAgICAgICAgICAgIGl0ZW1Gb250ID0gRm9udChkLCBpdGVtRm9udC5sZXR0ZXJT
cGFjaW5nKCksIGl0ZW1Gb250LndvcmRTcGFjaW5nKCkpOwotICAgICAgICAgICAgICAgIGl0ZW1G
b250LnVwZGF0ZShkb2N1bWVudCgpLT5zdHlsZVNlbGVjdG9yKCktPmZvbnRTZWxlY3RvcigpKTsK
KyAgICAgICAgICAgICAgICBpdGVtRm9udC51cGRhdGUoZG9jdW1lbnQoKS0+c3R5bGVSZXNvbHZl
cigpLT5mb250U2VsZWN0b3IoKSk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmICgh
dGV4dC5pc0VtcHR5KCkpIHsKQEAgLTQxOCw3ICs0MTgsNyBAQCB2b2lkIFJlbmRlckxpc3RCb3g6
OnBhaW50SXRlbUZvcmVncm91bmQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBv
aW50JgogICAgICAgICBGb250RGVzY3JpcHRpb24gZCA9IGl0ZW1Gb250LmZvbnREZXNjcmlwdGlv
bigpOwogICAgICAgICBkLnNldFdlaWdodChkLmJvbGRlcldlaWdodCgpKTsKICAgICAgICAgaXRl
bUZvbnQgPSBGb250KGQsIGl0ZW1Gb250LmxldHRlclNwYWNpbmcoKSwgaXRlbUZvbnQud29yZFNw
YWNpbmcoKSk7Ci0gICAgICAgIGl0ZW1Gb250LnVwZGF0ZShkb2N1bWVudCgpLT5zdHlsZVNlbGVj
dG9yKCktPmZvbnRTZWxlY3RvcigpKTsKKyAgICAgICAgaXRlbUZvbnQudXBkYXRlKGRvY3VtZW50
KCktPnN0eWxlUmVzb2x2ZXIoKS0+Zm9udFNlbGVjdG9yKCkpOwogICAgIH0KIAogICAgIC8vIERy
YXcgdGhlIGl0ZW0gdGV4dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck1lbnVMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlz
dC5jcHAKaW5kZXggZWU5NmZjMTMyZDA3YjAyMDBmZDIzOGY4NWZkNGQwZWFkMjg1Njc2Zi4uZWQw
MDQ0MzkzZTdlMzI2ODU1YzdmOTVlNTBkOTIxOTU2YTA5OWRkOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwCkBAIC01NzYsNyArNTc2LDcgQEAgdm9pZCBS
ZW5kZXJNZW51TGlzdDo6c2V0VGV4dEZyb21JdGVtKHVuc2lnbmVkIGxpc3RJbmRleCkKIAogRm9u
dFNlbGVjdG9yKiBSZW5kZXJNZW51TGlzdDo6Zm9udFNlbGVjdG9yKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gZG9jdW1lbnQoKS0+c3R5bGVTZWxlY3RvcigpLT5mb250U2VsZWN0b3IoKTsKKyAgICBy
ZXR1cm4gZG9jdW1lbnQoKS0+c3R5bGVSZXNvbHZlcigpLT5mb250U2VsZWN0b3IoKTsKIH0KIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAppbmRleCAyNTA0YWYw
MmJhNDJhY2UwZjQyYWIyMGYzNTkwOTQ2ZTc5Y2E1ZWE3Li43MGU5OWI0MWNmODlhMDQ4NTcxYjY4
OWEzMzAzMTk4YTY1MWMyZWZlIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0LmNwcApAQCAtMjU1OSwxMSArMjU1OSwxMSBAQCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBS
ZW5kZXJPYmplY3Q6OmdldFVuY2FjaGVkUHNldWRvU3R5bGUoUHNldWRvSWQgcHNldWRvLCBSZQog
ICAgIEVsZW1lbnQqIGVsZW1lbnQgPSB0b0VsZW1lbnQobik7CiAKICAgICBpZiAocHNldWRvID09
IEZJUlNUX0xJTkVfSU5IRVJJVEVEKSB7Ci0gICAgICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gcmVz
dWx0ID0gZG9jdW1lbnQoKS0+c3R5bGVTZWxlY3RvcigpLT5zdHlsZUZvckVsZW1lbnQoZWxlbWVu
dCwgcGFyZW50U3R5bGUsIERpc2FsbG93U3R5bGVTaGFyaW5nKTsKKyAgICAgICAgUmVmUHRyPFJl
bmRlclN0eWxlPiByZXN1bHQgPSBkb2N1bWVudCgpLT5zdHlsZVJlc29sdmVyKCktPnN0eWxlRm9y
RWxlbWVudChlbGVtZW50LCBwYXJlbnRTdHlsZSwgRGlzYWxsb3dTdHlsZVNoYXJpbmcpOwogICAg
ICAgICByZXN1bHQtPnNldFN0eWxlVHlwZShGSVJTVF9MSU5FX0lOSEVSSVRFRCk7CiAgICAgICAg
IHJldHVybiByZXN1bHQucmVsZWFzZSgpOwogICAgIH0KLSAgICByZXR1cm4gZG9jdW1lbnQoKS0+
c3R5bGVTZWxlY3RvcigpLT5wc2V1ZG9TdHlsZUZvckVsZW1lbnQocHNldWRvLCBlbGVtZW50LCBw
YXJlbnRTdHlsZSk7CisgICAgcmV0dXJuIGRvY3VtZW50KCktPnN0eWxlUmVzb2x2ZXIoKS0+cHNl
dWRvU3R5bGVGb3JFbGVtZW50KHBzZXVkbywgZWxlbWVudCwgcGFyZW50U3R5bGUpOwogfQogCiBz
dGF0aWMgQ29sb3IgZGVjb3JhdGlvbkNvbG9yKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uY3BwCmluZGV4IDE2MWU1MDlhYmUzZTY1
MTExZTAwYTE5MGVmN2ZlOGMyZGE3ZGU2YzcuLjUxMDQ0Njk1MTBlNTIxYzNlZmQzYzJkMjlmZjk3
YmQzN2Y2MGYzY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJS
ZWdpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uY3Bw
CkBAIC0xNzUsNyArMTc1LDcgQEAgdm9pZCBSZW5kZXJSZWdpb246OnN0eWxlRGlkQ2hhbmdlKFN0
eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3QKICAgICBib29sIGN1
c3RvbVJlZ2lvblN0eWxlID0gZmFsc2U7CiAgICAgaWYgKG5vZGUoKSkgewogICAgICAgICBFbGVt
ZW50KiByZWdpb25FbGVtZW50ID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUoKSk7Ci0gICAg
ICAgIGN1c3RvbVJlZ2lvblN0eWxlID0gdmlldygpLT5kb2N1bWVudCgpLT5zdHlsZVNlbGVjdG9y
KCktPmNoZWNrUmVnaW9uU3R5bGUocmVnaW9uRWxlbWVudCk7CisgICAgICAgIGN1c3RvbVJlZ2lv
blN0eWxlID0gdmlldygpLT5kb2N1bWVudCgpLT5zdHlsZVJlc29sdmVyKCktPmNoZWNrUmVnaW9u
U3R5bGUocmVnaW9uRWxlbWVudCk7CiAgICAgfQogICAgIHNldEhhc0N1c3RvbVJlZ2lvblN0eWxl
KGN1c3RvbVJlZ2lvblN0eWxlKTsKIH0KQEAgLTMwMCw3ICszMDAsNyBAQCBQYXNzUmVmUHRyPFJl
bmRlclN0eWxlPiBSZW5kZXJSZWdpb246OmNvbXB1dGVTdHlsZUluUmVnaW9uKGNvbnN0IFJlbmRl
ckJveCogYm94KQogICAgIEFTU0VSVChib3gtPm5vZGUoKSAmJiBib3gtPm5vZGUoKS0+aXNFbGVt
ZW50Tm9kZSgpKTsKIAogICAgIEVsZW1lbnQqIGVsZW1lbnQgPSB0b0VsZW1lbnQoYm94LT5ub2Rl
KCkpOwotICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gcmVuZGVyQm94UmVnaW9uU3R5bGUgPSBib3gt
PnZpZXcoKS0+ZG9jdW1lbnQoKS0+c3R5bGVTZWxlY3RvcigpLT5zdHlsZUZvckVsZW1lbnQoZWxl
bWVudCwgMCwgRGlzYWxsb3dTdHlsZVNoYXJpbmcsIE1hdGNoQWxsUnVsZXMsIHRoaXMpOworICAg
IFJlZlB0cjxSZW5kZXJTdHlsZT4gcmVuZGVyQm94UmVnaW9uU3R5bGUgPSBib3gtPnZpZXcoKS0+
ZG9jdW1lbnQoKS0+c3R5bGVSZXNvbHZlcigpLT5zdHlsZUZvckVsZW1lbnQoZWxlbWVudCwgMCwg
RGlzYWxsb3dTdHlsZVNoYXJpbmcsIE1hdGNoQWxsUnVsZXMsIHRoaXMpOwogICAgIG1fcmVuZGVy
Qm94UmVnaW9uU3R5bGUuYWRkKGJveCwgcmVuZGVyQm94UmVnaW9uU3R5bGUpOwogCiAgICAgaWYg
KCFib3gtPmhhc0JveERlY29yYXRpb25zKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHAKaW5kZXggMjJiZDYz
ZGRkOTU0ZGZmOTJhY2ZjOGUyZjhlMjYzZDcwNzBkMjRlOS4uOWVjZmM1ZDZmM2E0YzE2M2YwNGZh
NmQwOTQyOTlmMWQ0Y2E4ZjA0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHAKQEAgLTY3NCw3ICs2NzQsNyBA
QCB2b2lkIFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6c2V0VGV4dEZyb21JdGVtKHVuc2ln
bmVkIGxpc3RJbmRleCkKIAogRm9udFNlbGVjdG9yKiBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxp
bmU6OmZvbnRTZWxlY3RvcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGRvY3VtZW50KCktPnN0eWxl
U2VsZWN0b3IoKS0+Zm9udFNlbGVjdG9yKCk7CisgICAgcmV0dXJuIGRvY3VtZW50KCktPnN0eWxl
UmVzb2x2ZXIoKS0+Zm9udFNlbGVjdG9yKCk7CiB9CiAKIEhvc3RXaW5kb3cqIFJlbmRlclRleHRD
b250cm9sU2luZ2xlTGluZTo6aG9zdFdpbmRvdygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lLmNwcAppbmRleCBhZTc1NWNlZjZmZGRkNWE1MGYwN2Y0Mjg2ODM0Njhh
MDVjZjRkNWQ1Li40YzQxZmIzYzQyZjlkZmNmNWVkNDlmYmIwYzEzZTk5MmNlMjgzNTkwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKQEAgLTcyLDcgKzcyLDcgQEAg
UmVuZGVyVGhlbWU6OlJlbmRlclRoZW1lKCkKIHsKIH0KIAotdm9pZCBSZW5kZXJUaGVtZTo6YWRq
dXN0U3R5bGUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxl
bWVudCogZSwKK3ZvaWQgUmVuZGVyVGhlbWU6OmFkanVzdFN0eWxlKFN0eWxlUmVzb2x2ZXIqIHN0
eWxlUmVzb2x2ZXIsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJvb2wgVUFIYXNBcHBlYXJhbmNlLCBjb25zdCBCb3JkZXJEYXRh
JiBib3JkZXIsIGNvbnN0IEZpbGxMYXllciYgYmFja2dyb3VuZCwgY29uc3QgQ29sb3ImIGJhY2tn
cm91bmRDb2xvcikKIHsKICAgICAvLyBGb3JjZSBpbmxpbmUgYW5kIHRhYmxlIGRpc3BsYXkgc3R5
bGVzIHRvIGJlIGlubGluZS1ibG9jayAoZXhjZXB0IGZvciB0YWJsZS0gd2hpY2ggaXMgYmxvY2sp
CkBAIC0xODMsNDcgKzE4Myw0NyBAQCB2b2lkIFJlbmRlclRoZW1lOjphZGp1c3RTdHlsZShTdHls
ZVJlc29sdmVyKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZQogICAgIHN3aXRj
aCAoc3R5bGUtPmFwcGVhcmFuY2UoKSkgewogI2lmICFVU0UoTkVXX1RIRU1FKQogICAgICAgICBj
YXNlIENoZWNrYm94UGFydDoKLSAgICAgICAgICAgIHJldHVybiBhZGp1c3RDaGVja2JveFN0eWxl
KHNlbGVjdG9yLCBzdHlsZSwgZSk7CisgICAgICAgICAgICByZXR1cm4gYWRqdXN0Q2hlY2tib3hT
dHlsZShzdHlsZVJlc29sdmVyLCBzdHlsZSwgZSk7CiAgICAgICAgIGNhc2UgUmFkaW9QYXJ0Ogot
ICAgICAgICAgICAgcmV0dXJuIGFkanVzdFJhZGlvU3R5bGUoc2VsZWN0b3IsIHN0eWxlLCBlKTsK
KyAgICAgICAgICAgIHJldHVybiBhZGp1c3RSYWRpb1N0eWxlKHN0eWxlUmVzb2x2ZXIsIHN0eWxl
LCBlKTsKICAgICAgICAgY2FzZSBQdXNoQnV0dG9uUGFydDoKICAgICAgICAgY2FzZSBTcXVhcmVC
dXR0b25QYXJ0OgogICAgICAgICBjYXNlIERlZmF1bHRCdXR0b25QYXJ0OgogICAgICAgICBjYXNl
IEJ1dHRvblBhcnQ6Ci0gICAgICAgICAgICByZXR1cm4gYWRqdXN0QnV0dG9uU3R5bGUoc2VsZWN0
b3IsIHN0eWxlLCBlKTsKKyAgICAgICAgICAgIHJldHVybiBhZGp1c3RCdXR0b25TdHlsZShzdHls
ZVJlc29sdmVyLCBzdHlsZSwgZSk7CiAgICAgICAgIGNhc2UgSW5uZXJTcGluQnV0dG9uUGFydDoK
LSAgICAgICAgICAgIHJldHVybiBhZGp1c3RJbm5lclNwaW5CdXR0b25TdHlsZShzZWxlY3Rvciwg
c3R5bGUsIGUpOworICAgICAgICAgICAgcmV0dXJuIGFkanVzdElubmVyU3BpbkJ1dHRvblN0eWxl
KHN0eWxlUmVzb2x2ZXIsIHN0eWxlLCBlKTsKICNlbmRpZgogICAgICAgICBjYXNlIFRleHRGaWVs
ZFBhcnQ6Ci0gICAgICAgICAgICByZXR1cm4gYWRqdXN0VGV4dEZpZWxkU3R5bGUoc2VsZWN0b3Is
IHN0eWxlLCBlKTsKKyAgICAgICAgICAgIHJldHVybiBhZGp1c3RUZXh0RmllbGRTdHlsZShzdHls
ZVJlc29sdmVyLCBzdHlsZSwgZSk7CiAgICAgICAgIGNhc2UgVGV4dEFyZWFQYXJ0OgotICAgICAg
ICAgICAgcmV0dXJuIGFkanVzdFRleHRBcmVhU3R5bGUoc2VsZWN0b3IsIHN0eWxlLCBlKTsKKyAg
ICAgICAgICAgIHJldHVybiBhZGp1c3RUZXh0QXJlYVN0eWxlKHN0eWxlUmVzb2x2ZXIsIHN0eWxl
LCBlKTsKICAgICAgICAgY2FzZSBNZW51bGlzdFBhcnQ6Ci0gICAgICAgICAgICByZXR1cm4gYWRq
dXN0TWVudUxpc3RTdHlsZShzZWxlY3Rvciwgc3R5bGUsIGUpOworICAgICAgICAgICAgcmV0dXJu
IGFkanVzdE1lbnVMaXN0U3R5bGUoc3R5bGVSZXNvbHZlciwgc3R5bGUsIGUpOwogICAgICAgICBj
YXNlIE1lbnVsaXN0QnV0dG9uUGFydDoKLSAgICAgICAgICAgIHJldHVybiBhZGp1c3RNZW51TGlz
dEJ1dHRvblN0eWxlKHNlbGVjdG9yLCBzdHlsZSwgZSk7CisgICAgICAgICAgICByZXR1cm4gYWRq
dXN0TWVudUxpc3RCdXR0b25TdHlsZShzdHlsZVJlc29sdmVyLCBzdHlsZSwgZSk7CiAgICAgICAg
IGNhc2UgTWVkaWFTbGlkZXJQYXJ0OgogICAgICAgICBjYXNlIE1lZGlhVm9sdW1lU2xpZGVyUGFy
dDoKICAgICAgICAgY2FzZSBNZWRpYUZ1bGxTY3JlZW5Wb2x1bWVTbGlkZXJQYXJ0OgogICAgICAg
ICBjYXNlIFNsaWRlckhvcml6b250YWxQYXJ0OgogICAgICAgICBjYXNlIFNsaWRlclZlcnRpY2Fs
UGFydDoKLSAgICAgICAgICAgIHJldHVybiBhZGp1c3RTbGlkZXJUcmFja1N0eWxlKHNlbGVjdG9y
LCBzdHlsZSwgZSk7CisgICAgICAgICAgICByZXR1cm4gYWRqdXN0U2xpZGVyVHJhY2tTdHlsZShz
dHlsZVJlc29sdmVyLCBzdHlsZSwgZSk7CiAgICAgICAgIGNhc2UgU2xpZGVyVGh1bWJIb3Jpem9u
dGFsUGFydDoKICAgICAgICAgY2FzZSBTbGlkZXJUaHVtYlZlcnRpY2FsUGFydDoKLSAgICAgICAg
ICAgIHJldHVybiBhZGp1c3RTbGlkZXJUaHVtYlN0eWxlKHNlbGVjdG9yLCBzdHlsZSwgZSk7Cisg
ICAgICAgICAgICByZXR1cm4gYWRqdXN0U2xpZGVyVGh1bWJTdHlsZShzdHlsZVJlc29sdmVyLCBz
dHlsZSwgZSk7CiAgICAgICAgIGNhc2UgU2VhcmNoRmllbGRQYXJ0OgotICAgICAgICAgICAgcmV0
dXJuIGFkanVzdFNlYXJjaEZpZWxkU3R5bGUoc2VsZWN0b3IsIHN0eWxlLCBlKTsKKyAgICAgICAg
ICAgIHJldHVybiBhZGp1c3RTZWFyY2hGaWVsZFN0eWxlKHN0eWxlUmVzb2x2ZXIsIHN0eWxlLCBl
KTsKICAgICAgICAgY2FzZSBTZWFyY2hGaWVsZENhbmNlbEJ1dHRvblBhcnQ6Ci0gICAgICAgICAg
ICByZXR1cm4gYWRqdXN0U2VhcmNoRmllbGRDYW5jZWxCdXR0b25TdHlsZShzZWxlY3Rvciwgc3R5
bGUsIGUpOworICAgICAgICAgICAgcmV0dXJuIGFkanVzdFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9u
U3R5bGUoc3R5bGVSZXNvbHZlciwgc3R5bGUsIGUpOwogICAgICAgICBjYXNlIFNlYXJjaEZpZWxk
RGVjb3JhdGlvblBhcnQ6Ci0gICAgICAgICAgICByZXR1cm4gYWRqdXN0U2VhcmNoRmllbGREZWNv
cmF0aW9uU3R5bGUoc2VsZWN0b3IsIHN0eWxlLCBlKTsKKyAgICAgICAgICAgIHJldHVybiBhZGp1
c3RTZWFyY2hGaWVsZERlY29yYXRpb25TdHlsZShzdHlsZVJlc29sdmVyLCBzdHlsZSwgZSk7CiAg
ICAgICAgIGNhc2UgU2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvblBhcnQ6Ci0gICAgICAgICAg
ICByZXR1cm4gYWRqdXN0U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvblN0eWxlKHNlbGVjdG9y
LCBzdHlsZSwgZSk7CisgICAgICAgICAgICByZXR1cm4gYWRqdXN0U2VhcmNoRmllbGRSZXN1bHRz
RGVjb3JhdGlvblN0eWxlKHN0eWxlUmVzb2x2ZXIsIHN0eWxlLCBlKTsKICAgICAgICAgY2FzZSBT
ZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25QYXJ0OgotICAgICAgICAgICAgcmV0dXJuIGFkanVzdFNl
YXJjaEZpZWxkUmVzdWx0c0J1dHRvblN0eWxlKHNlbGVjdG9yLCBzdHlsZSwgZSk7CisgICAgICAg
ICAgICByZXR1cm4gYWRqdXN0U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uU3R5bGUoc3R5bGVSZXNv
bHZlciwgc3R5bGUsIGUpOwogI2lmIEVOQUJMRShQUk9HUkVTU19UQUcpCiAgICAgICAgIGNhc2Ug
UHJvZ3Jlc3NCYXJQYXJ0OgotICAgICAgICAgICAgcmV0dXJuIGFkanVzdFByb2dyZXNzQmFyU3R5
bGUoc2VsZWN0b3IsIHN0eWxlLCBlKTsKKyAgICAgICAgICAgIHJldHVybiBhZGp1c3RQcm9ncmVz
c0JhclN0eWxlKHN0eWxlUmVzb2x2ZXIsIHN0eWxlLCBlKTsKICNlbmRpZgogI2lmIEVOQUJMRShN
RVRFUl9UQUcpCiAgICAgICAgIGNhc2UgTWV0ZXJQYXJ0OgpAQCAtMjMxLDExICsyMzEsMTEgQEAg
dm9pZCBSZW5kZXJUaGVtZTo6YWRqdXN0U3R5bGUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIFJl
bmRlclN0eWxlKiBzdHlsZSwgRWxlbWUKICAgICAgICAgY2FzZSBDb250aW51b3VzQ2FwYWNpdHlM
ZXZlbEluZGljYXRvclBhcnQ6CiAgICAgICAgIGNhc2UgRGlzY3JldGVDYXBhY2l0eUxldmVsSW5k
aWNhdG9yUGFydDoKICAgICAgICAgY2FzZSBSYXRpbmdMZXZlbEluZGljYXRvclBhcnQ6Ci0gICAg
ICAgICAgICByZXR1cm4gYWRqdXN0TWV0ZXJTdHlsZShzZWxlY3Rvciwgc3R5bGUsIGUpOworICAg
ICAgICAgICAgcmV0dXJuIGFkanVzdE1ldGVyU3R5bGUoc3R5bGVSZXNvbHZlciwgc3R5bGUsIGUp
OwogI2VuZGlmCiAjaWYgRU5BQkxFKElOUFVUX1NQRUVDSCkKICAgICAgICAgY2FzZSBJbnB1dFNw
ZWVjaEJ1dHRvblBhcnQ6Ci0gICAgICAgICAgICByZXR1cm4gYWRqdXN0SW5wdXRGaWVsZFNwZWVj
aEJ1dHRvblN0eWxlKHNlbGVjdG9yLCBzdHlsZSwgZSk7CisgICAgICAgICAgICByZXR1cm4gYWRq
dXN0SW5wdXRGaWVsZFNwZWVjaEJ1dHRvblN0eWxlKHN0eWxlUmVzb2x2ZXIsIHN0eWxlLCBlKTsK
ICNlbmRpZgogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgYnJlYWs7CkBAIC05MDMsOSAr
OTAzLDkgQEAgdm9pZCBSZW5kZXJUaGVtZTo6YWRqdXN0TWVudUxpc3RTdHlsZShTdHlsZVJlc29s
dmVyKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY28KIH0KIAogI2lmIEVOQUJMRShJTlBVVF9T
UEVFQ0gpCi12b2lkIFJlbmRlclRoZW1lOjphZGp1c3RJbnB1dEZpZWxkU3BlZWNoQnV0dG9uU3R5
bGUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCog
ZWxlbWVudCkgY29uc3QKK3ZvaWQgUmVuZGVyVGhlbWU6OmFkanVzdElucHV0RmllbGRTcGVlY2hC
dXR0b25TdHlsZShTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyLCBSZW5kZXJTdHlsZSogc3R5
bGUsIEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0CiB7Ci0gICAgUmVuZGVySW5wdXRTcGVlY2g6OmFk
anVzdElucHV0RmllbGRTcGVlY2hCdXR0b25TdHlsZShzZWxlY3Rvciwgc3R5bGUsIGVsZW1lbnQp
OworICAgIFJlbmRlcklucHV0U3BlZWNoOjphZGp1c3RJbnB1dEZpZWxkU3BlZWNoQnV0dG9uU3R5
bGUoc3R5bGVSZXNvbHZlciwgc3R5bGUsIGVsZW1lbnQpOwogfQogCiBib29sIFJlbmRlclRoZW1l
OjpwYWludElucHV0RmllbGRTcGVlY2hCdXR0b24oUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0
IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByZWN0KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1Ta2lhLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtU2tpYS5jcHAKaW5kZXgg
NDBiYjBhMzliZDM3Y2EwZjJlNDE0YzRkZTc4NGE3N2E2ZWI4ODc5NC4uM2M0Yjg5NzdhZDZhNzYz
OWRlOTkwMDMyNzIzODI3NzNkZGNlOWFiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1Ta2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bVNraWEuY3BwCkBAIC00NjYsMTUgKzQ2NiwxNSBA
QCBib29sIFJlbmRlclRoZW1lQ2hyb21pdW1Ta2lhOjpwYWludE1lZGlhTXV0ZUJ1dHRvbihSZW5k
ZXJPYmplY3QqIG9iamVjdCwgY29uc3QgUAogI2VuZGlmCiB9CiAKLXZvaWQgUmVuZGVyVGhlbWVD
aHJvbWl1bVNraWE6OmFkanVzdE1lbnVMaXN0U3R5bGUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3Is
IFJlbmRlclN0eWxlKiBzdHlsZSwgV2ViQ29yZTo6RWxlbWVudCogZSkgY29uc3QKK3ZvaWQgUmVu
ZGVyVGhlbWVDaHJvbWl1bVNraWE6OmFkanVzdE1lbnVMaXN0U3R5bGUoU3R5bGVSZXNvbHZlcios
IFJlbmRlclN0eWxlKiBzdHlsZSwgV2ViQ29yZTo6RWxlbWVudCopIGNvbnN0CiB7CiAgICAgLy8g
SGVpZ2h0IGlzIGxvY2tlZCB0byBhdXRvIG9uIGFsbCBicm93c2Vycy4KICAgICBzdHlsZS0+c2V0
TGluZUhlaWdodChSZW5kZXJTdHlsZTo6aW5pdGlhbExpbmVIZWlnaHQoKSk7CiB9CiAKLXZvaWQg
UmVuZGVyVGhlbWVDaHJvbWl1bVNraWE6OmFkanVzdE1lbnVMaXN0QnV0dG9uU3R5bGUoU3R5bGVS
ZXNvbHZlciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZSkgY29uc3QK
K3ZvaWQgUmVuZGVyVGhlbWVDaHJvbWl1bVNraWE6OmFkanVzdE1lbnVMaXN0QnV0dG9uU3R5bGUo
U3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50
KiBlKSBjb25zdAogewotICAgIGFkanVzdE1lbnVMaXN0U3R5bGUoc2VsZWN0b3IsIHN0eWxlLCBl
KTsKKyAgICBhZGp1c3RNZW51TGlzdFN0eWxlKHN0eWxlUmVzb2x2ZXIsIHN0eWxlLCBlKTsKIH0K
IAogLy8gVXNlZCB0byBwYWludCBzdHlsZWQgbWVudWxpc3RzIChpLmUuIHdpdGggYSBub24tZGVm
YXVsdCBib3JkZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0K
aW5kZXggNGNiYjhhZjJmOTE4MjE1ZmU0NjhkZmY4YjkxYzQwZjYxZWEwODdhYi4uMjQxZjVjNGI1
MTI3OThmZTVhODNlYWNjZTE0N2VjMGEyOTA0OGMwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUaGVtZU1hYy5tbQpAQCAtMTE5Nyw3ICsxMTk3LDcgQEAgc3RhdGljIGNvbnN0
IEludFNpemUqIG1lbnVMaXN0QnV0dG9uU2l6ZXMoKQogICAgIHJldHVybiBzaXplczsKIH0KIAot
dm9pZCBSZW5kZXJUaGVtZU1hYzo6YWRqdXN0TWVudUxpc3RTdHlsZShTdHlsZVJlc29sdmVyKiBz
ZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlKSBjb25zdAordm9pZCBSZW5k
ZXJUaGVtZU1hYzo6YWRqdXN0TWVudUxpc3RTdHlsZShTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29s
dmVyLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGUpIGNvbnN0CiB7CiAgICAgTlNDb250
cm9sU2l6ZSBjb250cm9sU2l6ZSA9IGNvbnRyb2xTaXplRm9yRm9udChzdHlsZSk7CiAKQEAgLTEy
MjAsNyArMTIyMCw3IEBAIHZvaWQgUmVuZGVyVGhlbWVNYWM6OmFkanVzdE1lbnVMaXN0U3R5bGUo
U3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzCiAgICAgLy8gT3VyIGZvbnQg
aXMgbG9ja2VkIHRvIHRoZSBhcHByb3ByaWF0ZSBzeXN0ZW0gZm9udCBzaXplIGZvciB0aGUgY29u
dHJvbC4gIFRvIGNsYXJpZnksIHdlIGZpcnN0IHVzZSB0aGUgQ1NTLXNwZWNpZmllZCBmb250IHRv
IGZpZ3VyZSBvdXQKICAgICAvLyBhIHJlYXNvbmFibGUgY29udHJvbCBzaXplLCBidXQgb25jZSB0
aGF0IGNvbnRyb2wgc2l6ZSBpcyBkZXRlcm1pbmVkLCB3ZSB0aHJvdyB0aGF0IGZvbnQgYXdheSBh
bmQgdXNlIHRoZSBhcHByb3ByaWF0ZQogICAgIC8vIHN5c3RlbSBmb250IGZvciB0aGUgY29udHJv
bCBzaXplIGluc3RlYWQuCi0gICAgc2V0Rm9udEZyb21Db250cm9sU2l6ZShzZWxlY3Rvciwgc3R5
bGUsIGNvbnRyb2xTaXplKTsKKyAgICBzZXRGb250RnJvbUNvbnRyb2xTaXplKHN0eWxlUmVzb2x2
ZXIsIHN0eWxlLCBjb250cm9sU2l6ZSk7CiAKICAgICBzdHlsZS0+c2V0Qm94U2hhZG93KG51bGxw
dHIpOwogfQpAQCAtMTM0OCw5ICsxMzQ4LDkgQEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRT
bGlkZXJUcmFjayhSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmYKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgUmVuZGVyVGhlbWVNYWM6OmFkanVzdFNsaWRlclRo
dW1iU3R5bGUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxl
bWVudCogZWxlbWVudCkgY29uc3QKK3ZvaWQgUmVuZGVyVGhlbWVNYWM6OmFkanVzdFNsaWRlclRo
dW1iU3R5bGUoU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciwgUmVuZGVyU3R5bGUqIHN0eWxl
LCBFbGVtZW50KiBlbGVtZW50KSBjb25zdAogewotICAgIFJlbmRlclRoZW1lOjphZGp1c3RTbGlk
ZXJUaHVtYlN0eWxlKHNlbGVjdG9yLCBzdHlsZSwgZWxlbWVudCk7CisgICAgUmVuZGVyVGhlbWU6
OmFkanVzdFNsaWRlclRodW1iU3R5bGUoc3R5bGVSZXNvbHZlciwgc3R5bGUsIGVsZW1lbnQpOwog
ICAgIHN0eWxlLT5zZXRCb3hTaGFkb3cobnVsbHB0cik7CiB9CiAKQEAgLTE0NzksNyArMTQ3OSw3
IEBAIHZvaWQgUmVuZGVyVGhlbWVNYWM6OnNldFNlYXJjaEZpZWxkU2l6ZShSZW5kZXJTdHlsZSog
c3R5bGUpIGNvbnN0CiAgICAgc2V0U2l6ZUZyb21Gb250KHN0eWxlLCBzZWFyY2hGaWVsZFNpemVz
KCkpOwogfQogCi12b2lkIFJlbmRlclRoZW1lTWFjOjphZGp1c3RTZWFyY2hGaWVsZFN0eWxlKFN0
eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqKSBjb25z
dAordm9pZCBSZW5kZXJUaGVtZU1hYzo6YWRqdXN0U2VhcmNoRmllbGRTdHlsZShTdHlsZVJlc29s
dmVyKiBzdHlsZVJlc29sdmVyLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqKSBjb25zdAog
ewogICAgIC8vIE92ZXJyaWRlIGJvcmRlci4KICAgICBzdHlsZS0+cmVzZXRCb3JkZXIoKTsKQEAg
LTE1MDUsNyArMTUwNSw3IEBAIHZvaWQgUmVuZGVyVGhlbWVNYWM6OmFkanVzdFNlYXJjaEZpZWxk
U3R5bGUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIFJlbmRlclN0eWxlCiAgICAgc3R5bGUtPnNl
dFBhZGRpbmdCb3R0b20oTGVuZ3RoKHBhZGRpbmcsIEZpeGVkKSk7CiAgICAgCiAgICAgTlNDb250
cm9sU2l6ZSBjb250cm9sU2l6ZSA9IGNvbnRyb2xTaXplRm9yRm9udChzdHlsZSk7Ci0gICAgc2V0
Rm9udEZyb21Db250cm9sU2l6ZShzZWxlY3Rvciwgc3R5bGUsIGNvbnRyb2xTaXplKTsKKyAgICBz
ZXRGb250RnJvbUNvbnRyb2xTaXplKHN0eWxlUmVzb2x2ZXIsIHN0eWxlLCBjb250cm9sU2l6ZSk7
CiAKICAgICBzdHlsZS0+c2V0Qm94U2hhZG93KG51bGxwdHIpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lU2FmYXJpLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVNhZmFyaS5jcHAKaW5kZXggMTJjOTI1Y2IzOWI3ZmJm
YmE0Y2UyYjdiZDJlM2MwNDNlODk1ZDE2OC4uNDFkYTVjMGNlZWI2M2I0NjljMWFhNTY3YTMxMDQ0
YmM1ZTIxNmE5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lU2FmYXJpLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVT
YWZhcmkuY3BwCkBAIC0zODMsNyArMzgzLDcgQEAgdm9pZCBSZW5kZXJUaGVtZVNhZmFyaTo6c2V0
U2l6ZUZyb21Gb250KFJlbmRlclN0eWxlKiBzdHlsZSwgY29uc3QgSW50U2l6ZSogc2l6ZXMKICAg
ICAgICAgc3R5bGUtPnNldEhlaWdodChMZW5ndGgoc2l6ZS5oZWlnaHQoKSwgRml4ZWQpKTsKIH0K
IAotdm9pZCBSZW5kZXJUaGVtZVNhZmFyaTo6c2V0Rm9udEZyb21Db250cm9sU2l6ZShTdHlsZVJl
c29sdmVyKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBOU0NvbnRyb2xTaXplIGNvbnRy
b2xTaXplKSBjb25zdAordm9pZCBSZW5kZXJUaGVtZVNhZmFyaTo6c2V0Rm9udEZyb21Db250cm9s
U2l6ZShTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyLCBSZW5kZXJTdHlsZSogc3R5bGUsIE5T
Q29udHJvbFNpemUgY29udHJvbFNpemUpIGNvbnN0CiB7CiAgICAgRm9udERlc2NyaXB0aW9uIGZv
bnREZXNjcmlwdGlvbjsKICAgICBmb250RGVzY3JpcHRpb24uc2V0SXNBYnNvbHV0ZVNpemUodHJ1
ZSk7CkBAIC0zOTgsNyArMzk4LDcgQEAgdm9pZCBSZW5kZXJUaGVtZVNhZmFyaTo6c2V0Rm9udEZy
b21Db250cm9sU2l6ZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvciwgUmVuZGVyU3QKICAgICBzdHls
ZS0+c2V0TGluZUhlaWdodChSZW5kZXJTdHlsZTo6aW5pdGlhbExpbmVIZWlnaHQoKSk7CiAKICAg
ICBpZiAoc3R5bGUtPnNldEZvbnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pKQotICAgICAg
ICBzdHlsZS0+Zm9udCgpLnVwZGF0ZShzZWxlY3Rvci0+Zm9udFNlbGVjdG9yKCkpOworICAgICAg
ICBzdHlsZS0+Zm9udCgpLnVwZGF0ZShzdHlsZVJlc29sdmVyLT5mb250U2VsZWN0b3IoKSk7CiB9
CiAKIE5TQ29udHJvbFNpemUgUmVuZGVyVGhlbWVTYWZhcmk6OmNvbnRyb2xTaXplRm9yU3lzdGVt
Rm9udChSZW5kZXJTdHlsZSogc3R5bGUpIGNvbnN0CkBAIC01MDMsNyArNTAzLDcgQEAgdm9pZCBS
ZW5kZXJUaGVtZVNhZmFyaTo6c2V0QnV0dG9uUGFkZGluZ0Zyb21Db250cm9sU2l6ZShSZW5kZXJT
dHlsZSogc3R5bGUsIE5TQ28KICAgICBzdHlsZS0+c2V0UGFkZGluZ0JvdHRvbShMZW5ndGgoMCwg
Rml4ZWQpKTsKIH0KIAotdm9pZCBSZW5kZXJUaGVtZVNhZmFyaTo6YWRqdXN0QnV0dG9uU3R5bGUo
U3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZSkg
Y29uc3QKK3ZvaWQgUmVuZGVyVGhlbWVTYWZhcmk6OmFkanVzdEJ1dHRvblN0eWxlKFN0eWxlUmVz
b2x2ZXIqIHN0eWxlUmVzb2x2ZXIsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZSkgY29u
c3QKIHsKICAgICAvLyBUaGVyZSBhcmUgdGhyZWUgYXBwZWFyYW5jZSBjb25zdGFudHMgZm9yIGJ1
dHRvbnMuCiAgICAgLy8gKDEpIFB1c2gtYnV0dG9uIGlzIHRoZSBjb25zdGFudCBmb3IgdGhlIGRl
ZmF1bHQgQXF1YSBzeXN0ZW0gYnV0dG9uLiAgUHVzaCBidXR0b25zIHdpbGwgbm90IHNjYWxlIHZl
cnRpY2FsbHkgYW5kIHdpbGwgbm90IGFsbG93CkBAIC01MzYsNyArNTM2LDcgQEAgdm9pZCBSZW5k
ZXJUaGVtZVNhZmFyaTo6YWRqdXN0QnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3Is
IFJlbmRlclN0eWxlKgogICAgICAgICAvLyBPdXIgZm9udCBpcyBsb2NrZWQgdG8gdGhlIGFwcHJv
cHJpYXRlIHN5c3RlbSBmb250IHNpemUgZm9yIHRoZSBjb250cm9sLiAgVG8gY2xhcmlmeSwgd2Ug
Zmlyc3QgdXNlIHRoZSBDU1Mtc3BlY2lmaWVkIGZvbnQgdG8gZmlndXJlIG91dAogICAgICAgICAv
LyBhIHJlYXNvbmFibGUgY29udHJvbCBzaXplLCBidXQgb25jZSB0aGF0IGNvbnRyb2wgc2l6ZSBp
cyBkZXRlcm1pbmVkLCB3ZSB0aHJvdyB0aGF0IGZvbnQgYXdheSBhbmQgdXNlIHRoZSBhcHByb3By
aWF0ZQogICAgICAgICAvLyBzeXN0ZW0gZm9udCBmb3IgdGhlIGNvbnRyb2wgc2l6ZSBpbnN0ZWFk
LgotICAgICAgICBzZXRGb250RnJvbUNvbnRyb2xTaXplKHNlbGVjdG9yLCBzdHlsZSwgY29udHJv
bFNpemUpOworICAgICAgICBzZXRGb250RnJvbUNvbnRyb2xTaXplKHN0eWxlUmVzb2x2ZXIsIHN0
eWxlLCBjb250cm9sU2l6ZSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gU2V0IGEgbWluLWhl
aWdodCBzbyB0aGF0IHdlIGNhbid0IGdldCBzbWFsbGVyIHRoYW4gdGhlIG1pbmkgYnV0dG9uLgog
ICAgICAgICBzdHlsZS0+c2V0TWluSGVpZ2h0KExlbmd0aCgxNSwgRml4ZWQpKTsKQEAgLTg1OSw3
ICs4NTksNyBAQCBib29sIFJlbmRlclRoZW1lU2FmYXJpOjpwYWludE1lbnVMaXN0QnV0dG9uKFJl
bmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBwYQogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotdm9pZCBSZW5kZXJUaGVtZVNhZmFyaTo6YWRqdXN0TWVudUxpc3RTdHlsZShTdHlsZVJlc29s
dmVyKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlKSBjb25zdAordm9p
ZCBSZW5kZXJUaGVtZVNhZmFyaTo6YWRqdXN0TWVudUxpc3RTdHlsZShTdHlsZVJlc29sdmVyKiBz
dHlsZVJlc29sdmVyLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGUpIGNvbnN0CiB7CiAg
ICAgTlNDb250cm9sU2l6ZSBjb250cm9sU2l6ZSA9IGNvbnRyb2xTaXplRm9yRm9udChzdHlsZSk7
CiAKQEAgLTg4Miw3ICs4ODIsNyBAQCB2b2lkIFJlbmRlclRoZW1lU2FmYXJpOjphZGp1c3RNZW51
TGlzdFN0eWxlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZQogICAgIC8vIE91
ciBmb250IGlzIGxvY2tlZCB0byB0aGUgYXBwcm9wcmlhdGUgc3lzdGVtIGZvbnQgc2l6ZSBmb3Ig
dGhlIGNvbnRyb2wuICBUbyBjbGFyaWZ5LCB3ZSBmaXJzdCB1c2UgdGhlIENTUy1zcGVjaWZpZWQg
Zm9udCB0byBmaWd1cmUgb3V0CiAgICAgLy8gYSByZWFzb25hYmxlIGNvbnRyb2wgc2l6ZSwgYnV0
IG9uY2UgdGhhdCBjb250cm9sIHNpemUgaXMgZGV0ZXJtaW5lZCwgd2UgdGhyb3cgdGhhdCBmb250
IGF3YXkgYW5kIHVzZSB0aGUgYXBwcm9wcmlhdGUKICAgICAvLyBzeXN0ZW0gZm9udCBmb3IgdGhl
IGNvbnRyb2wgc2l6ZSBpbnN0ZWFkLgotICAgIHNldEZvbnRGcm9tQ29udHJvbFNpemUoc2VsZWN0
b3IsIHN0eWxlLCBjb250cm9sU2l6ZSk7CisgICAgc2V0Rm9udEZyb21Db250cm9sU2l6ZShzdHls
ZVJlc29sdmVyLCBzdHlsZSwgY29udHJvbFNpemUpOwogfQogCiBpbnQgUmVuZGVyVGhlbWVTYWZh
cmk6OnBvcHVwSW50ZXJuYWxQYWRkaW5nTGVmdChSZW5kZXJTdHlsZSogc3R5bGUpIGNvbnN0CkBA
IC05MjQsNyArOTI0LDcgQEAgaW50IFJlbmRlclRoZW1lU2FmYXJpOjpwb3B1cEludGVybmFsUGFk
ZGluZ0JvdHRvbShSZW5kZXJTdHlsZSogc3R5bGUpIGNvbnN0CiAgICAgcmV0dXJuIDA7CiB9CiAK
LXZvaWQgUmVuZGVyVGhlbWVTYWZhcmk6OmFkanVzdE1lbnVMaXN0QnV0dG9uU3R5bGUoU3R5bGVS
ZXNvbHZlciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZSkgY29uc3QK
K3ZvaWQgUmVuZGVyVGhlbWVTYWZhcmk6OmFkanVzdE1lbnVMaXN0QnV0dG9uU3R5bGUoU3R5bGVS
ZXNvbHZlciosIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCopIGNvbnN0CiB7CiAgICAgZmxv
YXQgZm9udFNjYWxlID0gc3R5bGUtPmZvbnRTaXplKCkgLyBiYXNlRm9udFNpemU7CiAgICAgCkBA
IC05ODgsOSArOTg4LDkgQEAgYm9vbCBSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRTbGlkZXJUcmFj
ayhSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgcGFpbnQKICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKLXZvaWQgUmVuZGVyVGhlbWVTYWZhcmk6OmFkanVzdFNsaWRlclRodW1iU3R5bGUo
U3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZSkg
Y29uc3QgCit2b2lkIFJlbmRlclRoZW1lU2FmYXJpOjphZGp1c3RTbGlkZXJUaHVtYlN0eWxlKFN0
eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCog
ZSkgY29uc3QgCiB7IAotICAgIFJlbmRlclRoZW1lOjphZGp1c3RTbGlkZXJUaHVtYlN0eWxlKHNl
bGVjdG9yLCBzdHlsZSwgZSk7CisgICAgUmVuZGVyVGhlbWU6OmFkanVzdFNsaWRlclRodW1iU3R5
bGUoc3R5bGVSZXNvbHZlciwgc3R5bGUsIGUpOwogICAgIHN0eWxlLT5zZXRCb3hTaGFkb3cobnVs
bHB0cik7IAogfSAKIApAQCAtMTA0Miw3ICsxMDQyLDcgQEAgdm9pZCBSZW5kZXJUaGVtZVNhZmFy
aTo6c2V0U2VhcmNoRmllbGRTaXplKFJlbmRlclN0eWxlKiBzdHlsZSkgY29uc3QKICAgICBzZXRT
aXplRnJvbUZvbnQoc3R5bGUsIHNlYXJjaEZpZWxkU2l6ZXMoKSk7CiB9CiAKLXZvaWQgUmVuZGVy
VGhlbWVTYWZhcmk6OmFkanVzdFNlYXJjaEZpZWxkU3R5bGUoU3R5bGVSZXNvbHZlciogc2VsZWN0
b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZSkgY29uc3QKK3ZvaWQgUmVuZGVyVGhl
bWVTYWZhcmk6OmFkanVzdFNlYXJjaEZpZWxkU3R5bGUoU3R5bGVSZXNvbHZlciogc3R5bGVSZXNv
bHZlciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlKSBjb25zdAogewogICAgIC8vIE92
ZXJyaWRlIGJvcmRlci4KICAgICBzdHlsZS0+cmVzZXRCb3JkZXIoKTsKQEAgLTEwNjgsNyArMTA2
OCw3IEBAIHZvaWQgUmVuZGVyVGhlbWVTYWZhcmk6OmFkanVzdFNlYXJjaEZpZWxkU3R5bGUoU3R5
bGVSZXNvbHZlciogc2VsZWN0b3IsIFJlbmRlclN0CiAgICAgc3R5bGUtPnNldFBhZGRpbmdCb3R0
b20oTGVuZ3RoKHBhZGRpbmcsIEZpeGVkKSk7CiAgICAgCiAgICAgTlNDb250cm9sU2l6ZSBjb250
cm9sU2l6ZSA9IGNvbnRyb2xTaXplRm9yRm9udChzdHlsZSk7Ci0gICAgc2V0Rm9udEZyb21Db250
cm9sU2l6ZShzZWxlY3Rvciwgc3R5bGUsIGNvbnRyb2xTaXplKTsKKyAgICBzZXRGb250RnJvbUNv
bnRyb2xTaXplKHN0eWxlUmVzb2x2ZXIsIHN0eWxlLCBjb250cm9sU2l6ZSk7CiB9CiAKIGJvb2wg
UmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50U2VhcmNoRmllbGRDYW5jZWxCdXR0b24oUmVuZGVyT2Jq
ZWN0KiBvLCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYpCkBAIC0x
MDkyLDcgKzEwOTIsNyBAQCBjb25zdCBJbnRTaXplKiBSZW5kZXJUaGVtZVNhZmFyaTo6Y2FuY2Vs
QnV0dG9uU2l6ZXMoKSBjb25zdAogICAgIHJldHVybiBzaXplczsKIH0KIAotdm9pZCBSZW5kZXJU
aGVtZVNhZmFyaTo6YWRqdXN0U2VhcmNoRmllbGRDYW5jZWxCdXR0b25TdHlsZShTdHlsZVJlc29s
dmVyKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlKSBjb25zdAordm9p
ZCBSZW5kZXJUaGVtZVNhZmFyaTo6YWRqdXN0U2VhcmNoRmllbGRDYW5jZWxCdXR0b25TdHlsZShT
dHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KikgY29uc3QKIHsKICAg
ICBJbnRTaXplIHNpemUgPSBzaXplRm9yU3lzdGVtRm9udChzdHlsZSwgY2FuY2VsQnV0dG9uU2l6
ZXMoKSk7CiAgICAgc3R5bGUtPnNldFdpZHRoKExlbmd0aChzaXplLndpZHRoKCksIEZpeGVkKSk7
CkBAIC0xMTA2LDcgKzExMDYsNyBAQCBjb25zdCBJbnRTaXplKiBSZW5kZXJUaGVtZVNhZmFyaTo6
cmVzdWx0c0J1dHRvblNpemVzKCkgY29uc3QKIH0KIAogY29uc3QgaW50IGVtcHR5UmVzdWx0c09m
ZnNldCA9IDk7Ci12b2lkIFJlbmRlclRoZW1lU2FmYXJpOjphZGp1c3RTZWFyY2hGaWVsZERlY29y
YXRpb25TdHlsZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBF
bGVtZW50KiBlKSBjb25zdAordm9pZCBSZW5kZXJUaGVtZVNhZmFyaTo6YWRqdXN0U2VhcmNoRmll
bGREZWNvcmF0aW9uU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxl
bWVudCopIGNvbnN0CiB7CiAgICAgSW50U2l6ZSBzaXplID0gc2l6ZUZvclN5c3RlbUZvbnQoc3R5
bGUsIHJlc3VsdHNCdXR0b25TaXplcygpKTsKICAgICBzdHlsZS0+c2V0V2lkdGgoTGVuZ3RoKHNp
emUud2lkdGgoKSAtIGVtcHR5UmVzdWx0c09mZnNldCwgRml4ZWQpKTsKQEAgLTExMTgsNyArMTEx
OCw3IEBAIGJvb2wgUmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50U2VhcmNoRmllbGREZWNvcmF0aW9u
KFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12
b2lkIFJlbmRlclRoZW1lU2FmYXJpOjphZGp1c3RTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9u
U3R5bGUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVu
dCogZSkgY29uc3QKK3ZvaWQgUmVuZGVyVGhlbWVTYWZhcmk6OmFkanVzdFNlYXJjaEZpZWxkUmVz
dWx0c0RlY29yYXRpb25TdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqIHN0eWxlLCBF
bGVtZW50KikgY29uc3QKIHsKICAgICBJbnRTaXplIHNpemUgPSBzaXplRm9yU3lzdGVtRm9udChz
dHlsZSwgcmVzdWx0c0J1dHRvblNpemVzKCkpOwogICAgIHN0eWxlLT5zZXRXaWR0aChMZW5ndGgo
c2l6ZS53aWR0aCgpLCBGaXhlZCkpOwpAQCAtMTE0MSw3ICsxMTQxLDcgQEAgYm9vbCBSZW5kZXJU
aGVtZVNhZmFyaTo6cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uKFJlbmRlck9iamVj
dCogbywgY29uc3QKIH0KIAogY29uc3QgaW50IHJlc3VsdHNBcnJvd1dpZHRoID0gNTsKLXZvaWQg
UmVuZGVyVGhlbWVTYWZhcmk6OmFkanVzdFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvblN0eWxlKFN0
eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGUpIGNv
bnN0Cit2b2lkIFJlbmRlclRoZW1lU2FmYXJpOjphZGp1c3RTZWFyY2hGaWVsZFJlc3VsdHNCdXR0
b25TdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KikgY29u
c3QKIHsKICAgICBJbnRTaXplIHNpemUgPSBzaXplRm9yU3lzdGVtRm9udChzdHlsZSwgcmVzdWx0
c0J1dHRvblNpemVzKCkpOwogICAgIHN0eWxlLT5zZXRXaWR0aChMZW5ndGgoc2l6ZS53aWR0aCgp
ICsgcmVzdWx0c0Fycm93V2lkdGgsIEZpeGVkKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lV2luLmNwcAppbmRleCAwNGQ1NGIyOTQ3ZDNjZWU1YTk0YmZiMjVhNjY2ZTQ3
YTRhMTJhOGM4Li5lNThiYWQ5ZTFlY2U2ZDg0NjJlY2UyNWYzMGRhNzczYWFiMDZhYjc3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHAKQEAgLTY4Nyw3ICs2
ODcsNyBAQCBib29sIFJlbmRlclRoZW1lV2luOjpwYWludEJ1dHRvbihSZW5kZXJPYmplY3QqIG8s
IGNvbnN0IFBhaW50SW5mbyYgaSwgY29uc3QgSW50UgogICAgIHJldHVybiBmYWxzZTsKIH0KIAot
dm9pZCBSZW5kZXJUaGVtZVdpbjo6YWRqdXN0SW5uZXJTcGluQnV0dG9uU3R5bGUoU3R5bGVSZXNv
bHZlciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZSkgY29uc3QKK3Zv
aWQgUmVuZGVyVGhlbWVXaW46OmFkanVzdElubmVyU3BpbkJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2
ZXIqIHN0eWxlUmVzb2x2ZXIsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZSkgY29uc3QK
IHsKICAgICBpbnQgd2lkdGggPSA6OkdldFN5c3RlbU1ldHJpY3MoU01fQ1hWU0NST0xMKTsKICAg
ICBpZiAod2lkdGggPD0gMCkKQEAgLTc1NCwxMyArNzU0LDEzIEBAIGJvb2wgUmVuZGVyVGhlbWVX
aW46OnBhaW50TWVudUxpc3QoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIGksIGNv
bnN0IEluCiAgICAgcmV0dXJuIHBhaW50TWVudUxpc3RCdXR0b24obywgaSwgcik7CiB9CiAKLXZv
aWQgUmVuZGVyVGhlbWVXaW46OmFkanVzdE1lbnVMaXN0U3R5bGUoU3R5bGVSZXNvbHZlciogc2Vs
ZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZSkgY29uc3QKK3ZvaWQgUmVuZGVy
VGhlbWVXaW46OmFkanVzdE1lbnVMaXN0U3R5bGUoU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZl
ciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlKSBjb25zdAogewogICAgIHN0eWxlLT5y
ZXNldEJvcmRlcigpOwotICAgIGFkanVzdE1lbnVMaXN0QnV0dG9uU3R5bGUoc2VsZWN0b3IsIHN0
eWxlLCBlKTsKKyAgICBhZGp1c3RNZW51TGlzdEJ1dHRvblN0eWxlKHN0eWxlUmVzb2x2ZXIsIHN0
eWxlLCBlKTsKIH0KIAotdm9pZCBSZW5kZXJUaGVtZVdpbjo6YWRqdXN0TWVudUxpc3RCdXR0b25T
dHlsZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50
KiBlKSBjb25zdAordm9pZCBSZW5kZXJUaGVtZVdpbjo6YWRqdXN0TWVudUxpc3RCdXR0b25TdHls
ZShTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1l
bnQqIGUpIGNvbnN0CiB7CiAgICAgLy8gVGhlc2UgYXJlIHRoZSBwYWRkaW5ncyBuZWVkZWQgdG8g
cGxhY2UgdGhlIHRleHQgY29ycmVjdGx5IGluIHRoZSA8c2VsZWN0PiBib3gKICAgICBjb25zdCBp
bnQgZHJvcERvd25Cb3hQYWRkaW5nVG9wICAgID0gMjsKQEAgLTg2Miw3ICs4NjIsNyBAQCBib29s
IFJlbmRlclRoZW1lV2luOjpwYWludFNlYXJjaEZpZWxkKFJlbmRlck9iamVjdCogbywgY29uc3Qg
UGFpbnRJbmZvJiBpLCBjb25zdAogICAgIHJldHVybiBwYWludFRleHRGaWVsZChvLCBpLCByKTsK
IH0KIAotdm9pZCBSZW5kZXJUaGVtZVdpbjo6YWRqdXN0U2VhcmNoRmllbGRTdHlsZShTdHlsZVJl
c29sdmVyKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlKSBjb25zdAor
dm9pZCBSZW5kZXJUaGVtZVdpbjo6YWRqdXN0U2VhcmNoRmllbGRTdHlsZShTdHlsZVJlc29sdmVy
KiBzdHlsZVJlc29sdmVyLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGUpIGNvbnN0CiB7
CiAgICAgLy8gT3ZlcnJpZGUgcGFkZGluZ1NpemUgdG8gbWF0Y2ggQXBwS2l0IHRleHQgcG9zaXRp
b25pbmcuCiAgICAgY29uc3QgaW50IHBhZGRpbmcgPSAxOwpAQCAtODk5LDcgKzg5OSw3IEBAIGJv
b2wgUmVuZGVyVGhlbWVXaW46OnBhaW50U2VhcmNoRmllbGRDYW5jZWxCdXR0b24oUmVuZGVyT2Jq
ZWN0KiBvLCBjb25zdCBQYWludEluCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFJlbmRl
clRoZW1lV2luOjphZGp1c3RTZWFyY2hGaWVsZENhbmNlbEJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2
ZXIqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGUpIGNvbnN0Cit2b2lk
IFJlbmRlclRoZW1lV2luOjphZGp1c3RTZWFyY2hGaWVsZENhbmNlbEJ1dHRvblN0eWxlKFN0eWxl
UmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqKSBjb25zdAogewogICAgIC8v
IFNjYWxlIHRoZSBidXR0b24gc2l6ZSBiYXNlZCBvbiB0aGUgZm9udCBzaXplCiAgICAgZmxvYXQg
Zm9udFNjYWxlID0gc3R5bGUtPmZvbnRTaXplKCkgLyBkZWZhdWx0Q29udHJvbEZvbnRQaXhlbFNp
emU7CkBAIC05MDgsMTQgKzkwOCwxNCBAQCB2b2lkIFJlbmRlclRoZW1lV2luOjphZGp1c3RTZWFy
Y2hGaWVsZENhbmNlbEJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLAogICAgIHN0
eWxlLT5zZXRIZWlnaHQoTGVuZ3RoKGNhbmNlbEJ1dHRvblNpemUsIEZpeGVkKSk7CiB9CiAKLXZv
aWQgUmVuZGVyVGhlbWVXaW46OmFkanVzdFNlYXJjaEZpZWxkRGVjb3JhdGlvblN0eWxlKFN0eWxl
UmVzb2x2ZXIqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGUpIGNvbnN0
Cit2b2lkIFJlbmRlclRoZW1lV2luOjphZGp1c3RTZWFyY2hGaWVsZERlY29yYXRpb25TdHlsZShT
dHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KikgY29uc3QKIHsKICAg
ICBJbnRTaXplIGVtcHR5U2l6ZSgxLCAxMSk7CiAgICAgc3R5bGUtPnNldFdpZHRoKExlbmd0aChl
bXB0eVNpemUud2lkdGgoKSwgRml4ZWQpKTsKICAgICBzdHlsZS0+c2V0SGVpZ2h0KExlbmd0aChl
bXB0eVNpemUuaGVpZ2h0KCksIEZpeGVkKSk7CiB9CiAKLXZvaWQgUmVuZGVyVGhlbWVXaW46OmFk
anVzdFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRpb25TdHlsZShTdHlsZVJlc29sdmVyKiBzZWxl
Y3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlKSBjb25zdAordm9pZCBSZW5kZXJU
aGVtZVdpbjo6YWRqdXN0U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvblN0eWxlKFN0eWxlUmVz
b2x2ZXIqLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqKSBjb25zdAogewogICAgIC8vIFNj
YWxlIHRoZSBkZWNvcmF0aW9uIHNpemUgYmFzZWQgb24gdGhlIGZvbnQgc2l6ZQogICAgIGZsb2F0
IGZvbnRTY2FsZSA9IHN0eWxlLT5mb250U2l6ZSgpIC8gZGVmYXVsdENvbnRyb2xGb250UGl4ZWxT
aXplOwpAQCAtOTQ4LDcgKzk0OCw3IEBAIGJvb2wgUmVuZGVyVGhlbWVXaW46OnBhaW50U2VhcmNo
RmllbGRSZXN1bHRzRGVjb3JhdGlvbihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhCiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCi12b2lkIFJlbmRlclRoZW1lV2luOjphZGp1c3RTZWFyY2hGaWVsZFJl
c3VsdHNCdXR0b25TdHlsZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0
eWxlLCBFbGVtZW50KiBlKSBjb25zdAordm9pZCBSZW5kZXJUaGVtZVdpbjo6YWRqdXN0U2VhcmNo
RmllbGRSZXN1bHRzQnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiBzdHls
ZSwgRWxlbWVudCopIGNvbnN0CiB7CiAgICAgLy8gU2NhbGUgdGhlIGJ1dHRvbiBzaXplIGJhc2Vk
IG9uIHRoZSBmb250IHNpemUKICAgICBmbG9hdCBmb250U2NhbGUgPSBzdHlsZS0+Zm9udFNpemUo
KSAvIGRlZmF1bHRDb250cm9sRm9udFBpeGVsU2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbkNFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUaGVtZVdpbkNFLmNwcAppbmRleCA1NjkwZDVmN2Y5N2ViMDZjZTgzNTVkOGI2
NjAyODI1ODRkNjQwZDdmLi5kODkyNTdkMDRhOWY0ZmViZThhYzVmMmRmM2Q1N2JjZjM3YTgwNjFh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW5DRS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luQ0UuY3BwCkBA
IC0yMzUsMTAgKzIzNSwxMCBAQCBib29sIFJlbmRlclRoZW1lV2luQ0U6OnBhaW50VGV4dEZpZWxk
KFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBpLCBjb25zdAogICAgIHJldHVybiBm
YWxzZTsKIH0KIAotdm9pZCBSZW5kZXJUaGVtZVdpbkNFOjphZGp1c3RNZW51TGlzdFN0eWxlKFN0
eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGUpIGNv
bnN0Cit2b2lkIFJlbmRlclRoZW1lV2luQ0U6OmFkanVzdE1lbnVMaXN0U3R5bGUoU3R5bGVSZXNv
bHZlciogc3R5bGVSZXNvbHZlciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlKSBjb25z
dAogewogICAgIHN0eWxlLT5yZXNldEJvcmRlcigpOwotICAgIGFkanVzdE1lbnVMaXN0QnV0dG9u
U3R5bGUoc2VsZWN0b3IsIHN0eWxlLCBlKTsKKyAgICBhZGp1c3RNZW51TGlzdEJ1dHRvblN0eWxl
KHN0eWxlUmVzb2x2ZXIsIHN0eWxlLCBlKTsKIH0KIAogYm9vbCBSZW5kZXJUaGVtZVdpbkNFOjpw
YWludE1lbnVMaXN0KFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBpLCBjb25zdCBJ
bnRSZWN0JiByKQpAQCAtMzUyLDcgKzM1Miw3IEBAIHZvaWQgUmVuZGVyVGhlbWVXaW5DRTo6YWRq
dXN0QnV0dG9uSW5uZXJTdHlsZShSZW5kZXJTdHlsZSogc3R5bGUpIGNvbnN0CiAgICAgc3R5bGUt
PnNldFBhZGRpbmdMZWZ0KExlbmd0aCgzLCBGaXhlZCkpOwogfQogCi12b2lkIFJlbmRlclRoZW1l
V2luQ0U6OmFkanVzdFNlYXJjaEZpZWxkU3R5bGUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIFJl
bmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZSkgY29uc3QKK3ZvaWQgUmVuZGVyVGhlbWVXaW5D
RTo6YWRqdXN0U2VhcmNoRmllbGRTdHlsZShTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyLCBS
ZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGUpIGNvbnN0CiB7CiAgICAgLy8gT3ZlcnJpZGUg
cGFkZGluZyBzaXplIHRvIG1hdGNoIEFwcEtpdCB0ZXh0IHBvc2l0aW9uaW5nLgogICAgIGNvbnN0
IGludCBwYWRkaW5nID0gMTsKQEAgLTM5MiwyMSArMzkyLDIxIEBAIGJvb2wgUmVuZGVyVGhlbWVX
aW5DRTo6cGFpbnRTZWFyY2hGaWVsZENhbmNlbEJ1dHRvbihSZW5kZXJPYmplY3QqIG8sIGNvbnN0
IFBhaW50CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFJlbmRlclRoZW1lV2luQ0U6OmFk
anVzdFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3Is
IFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZSkgY29uc3QKK3ZvaWQgUmVuZGVyVGhlbWVX
aW5DRTo6YWRqdXN0U2VhcmNoRmllbGRDYW5jZWxCdXR0b25TdHlsZShTdHlsZVJlc29sdmVyKiwg
UmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KikgY29uc3QKIHsKICAgICBJbnRTaXplIGNhbmNl
bFNpemUoMTMsIDExKTsKICAgICBzdHlsZS0+c2V0V2lkdGgoTGVuZ3RoKGNhbmNlbFNpemUud2lk
dGgoKSwgRml4ZWQpKTsKICAgICBzdHlsZS0+c2V0SGVpZ2h0KExlbmd0aChjYW5jZWxTaXplLmhl
aWdodCgpLCBGaXhlZCkpOwogfQogCi12b2lkIFJlbmRlclRoZW1lV2luQ0U6OmFkanVzdFNlYXJj
aEZpZWxkRGVjb3JhdGlvblN0eWxlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBSZW5kZXJTdHls
ZSogc3R5bGUsIEVsZW1lbnQqIGUpIGNvbnN0Cit2b2lkIFJlbmRlclRoZW1lV2luQ0U6OmFkanVz
dFNlYXJjaEZpZWxkRGVjb3JhdGlvblN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSog
c3R5bGUsIEVsZW1lbnQqKSBjb25zdAogewogICAgIEludFNpemUgZW1wdHlTaXplKDEsIDExKTsK
ICAgICBzdHlsZS0+c2V0V2lkdGgoTGVuZ3RoKGVtcHR5U2l6ZS53aWR0aCgpLCBGaXhlZCkpOwog
ICAgIHN0eWxlLT5zZXRIZWlnaHQoTGVuZ3RoKGVtcHR5U2l6ZS5oZWlnaHQoKSwgRml4ZWQpKTsK
IH0KIAotdm9pZCBSZW5kZXJUaGVtZVdpbkNFOjphZGp1c3RTZWFyY2hGaWVsZFJlc3VsdHNEZWNv
cmF0aW9uU3R5bGUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwg
RWxlbWVudCogZSkgY29uc3QKK3ZvaWQgUmVuZGVyVGhlbWVXaW5DRTo6YWRqdXN0U2VhcmNoRmll
bGRSZXN1bHRzRGVjb3JhdGlvblN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSogc3R5
bGUsIEVsZW1lbnQqKSBjb25zdAogewogICAgIEludFNpemUgbWFnbmlmaWVyU2l6ZSgxNSwgMTEp
OwogICAgIHN0eWxlLT5zZXRXaWR0aChMZW5ndGgobWFnbmlmaWVyU2l6ZS53aWR0aCgpLCBGaXhl
ZCkpOwpAQCAtNDE5LDcgKzQxOSw3IEBAIGJvb2wgUmVuZGVyVGhlbWVXaW5DRTo6cGFpbnRTZWFy
Y2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uKFJlbmRlck9iamVjdCogbywgY29uc3QKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKLXZvaWQgUmVuZGVyVGhlbWVXaW5DRTo6YWRqdXN0U2VhcmNoRmllbGRS
ZXN1bHRzQnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBz
dHlsZSwgRWxlbWVudCogZSkgY29uc3QKK3ZvaWQgUmVuZGVyVGhlbWVXaW5DRTo6YWRqdXN0U2Vh
cmNoRmllbGRSZXN1bHRzQnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiBz
dHlsZSwgRWxlbWVudCopIGNvbnN0CiB7CiAgICAgSW50U2l6ZSBtYWduaWZpZXJTaXplKDE1LCAx
MSk7CiAgICAgc3R5bGUtPnNldFdpZHRoKExlbmd0aChtYWduaWZpZXJTaXplLndpZHRoKCksIEZp
eGVkKSk7CkBAIC00MzIsNyArNDMyLDcgQEAgYm9vbCBSZW5kZXJUaGVtZVdpbkNFOjpwYWludFNl
YXJjaEZpZWxkUmVzdWx0c0J1dHRvbihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW4KICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgUmVuZGVyVGhlbWVXaW5DRTo6YWRqdXN0TWVudUxpc3RC
dXR0b25TdHlsZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBF
bGVtZW50KiBlKSBjb25zdAordm9pZCBSZW5kZXJUaGVtZVdpbkNFOjphZGp1c3RNZW51TGlzdEJ1
dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqKSBj
b25zdAogewogICAgIC8vIFRoZXNlIGFyZSB0aGUgcGFkZGluZ3MgbmVlZGVkIHRvIHBsYWNlIHRo
ZSB0ZXh0IGNvcnJlY3RseSBpbiB0aGUgPHNlbGVjdD4gYm94CiAgICAgY29uc3QgaW50IGRyb3BE
b3duQm94UGFkZGluZ1RvcCAgICA9IDI7CkBAIC01MjksNyArNTI5LDcgQEAgYm9vbCBSZW5kZXJU
aGVtZVdpbkNFOjpwYWludFNsaWRlclRodW1iKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJ
bmZvJiBpLCBjb24KICAgICByZXR1cm4gcmM7CiB9CiAKLXZvaWQgUmVuZGVyVGhlbWVXaW5DRTo6
YWRqdXN0U2VhcmNoRmllbGRTdHlsZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvciwgUmVuZGVyU3R5
bGUqIHN0eWxlLCBFbGVtZW50KiBlKSBjb25zdAordm9pZCBSZW5kZXJUaGVtZVdpbkNFOjphZGp1
c3RTZWFyY2hGaWVsZFN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVs
ZW1lbnQqKSBjb25zdAogewogICAgIGNvbnN0IGludCBwYWRkaW5nID0gMTsKICAgICBzdHlsZS0+
c2V0UGFkZGluZ0xlZnQoTGVuZ3RoKHBhZGRpbmcsIEZpeGVkKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHZW5lcmF0ZWRJbWFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHZW5lcmF0ZWRJbWFnZS5jcHAKaW5kZXgg
YzUyYzc0ZjZkZjZkNzczZTk4NzBjZjEyZGQxYTAyNmRiZTdhZDZlMC4uZjlhNjlhYTJkODY4OTM1
Mjk2ZDY1M2UwMDljMGE0M2YyODk1MzI0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJhdGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmNwcApAQCAtODUsNyArODUsNyBA
QCB2b2lkIFN0eWxlR2VuZXJhdGVkSW1hZ2U6OnJlbW92ZUNsaWVudChSZW5kZXJPYmplY3QqIHJl
bmRlcmVyKQogCiBQYXNzUmVmUHRyPEltYWdlPiBTdHlsZUdlbmVyYXRlZEltYWdlOjppbWFnZShS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBJbnRTaXplJiBzaXplKSBjb25zdAogewotICAg
IHJlbmRlcmVyLT5kb2N1bWVudCgpLT5zdHlsZVNlbGVjdG9yKCktPnNldFN0eWxlKHJlbmRlcmVy
LT5zdHlsZSgpKTsKKyAgICByZW5kZXJlci0+ZG9jdW1lbnQoKS0+c3R5bGVSZXNvbHZlcigpLT5z
ZXRTdHlsZShyZW5kZXJlci0+c3R5bGUoKSk7CiAgICAgcmV0dXJuIG1faW1hZ2VHZW5lcmF0b3JW
YWx1ZS0+aW1hZ2UocmVuZGVyZXIsIHNpemUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZVRleHQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmVUZXh0LmNwcAppbmRleCA5YTdiMjNiMmNi
OTM3NWY1YzNjMDZmOTdlNGFhOWU0ODEzNzZlNjk1Li5lZTExNWNiNjEyZWNkZGU0NjM1Mzk4M2Rm
YzcwOTBhYWRkNGYyZTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR0lubGluZVRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHSW5saW5lVGV4dC5jcHAKQEAgLTI1NCw4ICsyNTQsOCBAQCB2b2lkIFJlbmRl
clNWR0lubGluZVRleHQ6OmNvbXB1dGVOZXdTY2FsZWRGb250Rm9yU3R5bGUoUmVuZGVyT2JqZWN0
KiByZW5kZXJlciwgYwogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHJlbmRlcmVyLT5kb2N1bWVu
dCgpOwogICAgIEFTU0VSVChkb2N1bWVudCk7CiAgICAgCi0gICAgU3R5bGVSZXNvbHZlciogc3R5
bGVTZWxlY3RvciA9IGRvY3VtZW50LT5zdHlsZVNlbGVjdG9yKCk7Ci0gICAgQVNTRVJUKHN0eWxl
U2VsZWN0b3IpOworICAgIFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIgPSBkb2N1bWVudC0+
c3R5bGVSZXNvbHZlcigpOworICAgIEFTU0VSVChzdHlsZVJlc29sdmVyKTsKIAogICAgIC8vIEFs
dGVyIGZvbnQtc2l6ZSB0byB0aGUgcmlnaHQgb24tc2NyZWVuIHZhbHVlIHRvIGF2b2lkIHNjYWxp
bmcgdGhlIGdseXBocyB0aGVtc2VsdmVzLCBleGNlcHQgd2hlbiBHZW9tZXRyaWNQcmVjaXNpb24g
aXMgc3BlY2lmaWVkCiAgICAgQWZmaW5lVHJhbnNmb3JtIGN0bTsKQEAgLTI3Myw3ICsyNzMsNyBA
QCB2b2lkIFJlbmRlclNWR0lubGluZVRleHQ6OmNvbXB1dGVOZXdTY2FsZWRGb250Rm9yU3R5bGUo
UmVuZGVyT2JqZWN0KiByZW5kZXJlciwgYwogICAgIGZvbnREZXNjcmlwdGlvbi5zZXRDb21wdXRl
ZFNpemUoU3R5bGVSZXNvbHZlcjo6Z2V0Q29tcHV0ZWRTaXplRnJvbVNwZWNpZmllZFNpemUoZG9j
dW1lbnQsIHNjYWxpbmdGYWN0b3IsIGZvbnREZXNjcmlwdGlvbi5pc0Fic29sdXRlU2l6ZSgpLCBm
b250RGVzY3JpcHRpb24uY29tcHV0ZWRTaXplKCksIERvTm90VXNlU21hcnRNaW5pbXVtRm9yRm9u
dFNpemUpKTsKIAogICAgIHNjYWxlZEZvbnQgPSBGb250KGZvbnREZXNjcmlwdGlvbiwgMCwgMCk7
Ci0gICAgc2NhbGVkRm9udC51cGRhdGUoc3R5bGVTZWxlY3Rvci0+Zm9udFNlbGVjdG9yKCkpOwor
ICAgIHNjYWxlZEZvbnQudXBkYXRlKHN0eWxlUmVzb2x2ZXItPmZvbnRTZWxlY3RvcigpKTsKIH0K
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCmluZGV4IDBiOWQ1MGMyNDg1M2QyMzZmMjkx
Y2UxZWJhNWM1ZGI1MDQ0OGEzOTQuLjYzODViNWMxOTg2OTFjNzU5NjgyYTcyMWM2ZjM3NzFkZDY2
NmUyYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKQEAgLTQ4MSw3ICs0ODEsNyBAQCB2
b2lkIFNWR0VsZW1lbnQ6OnN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2Uodm9pZCogY29udGV4dEVs
ZW1lbnQpCiBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBTVkdFbGVtZW50OjpjdXN0b21TdHlsZUZv
clJlbmRlcmVyKCkKIHsKICAgICBpZiAoIWNvcnJlc3BvbmRpbmdFbGVtZW50KCkpCi0gICAgICAg
IHJldHVybiBkb2N1bWVudCgpLT5zdHlsZVNlbGVjdG9yKCktPnN0eWxlRm9yRWxlbWVudCh0aGlz
KTsKKyAgICAgICAgcmV0dXJuIGRvY3VtZW50KCktPnN0eWxlUmVzb2x2ZXIoKS0+c3R5bGVGb3JF
bGVtZW50KHRoaXMpOwogCiAgICAgUmVuZGVyU3R5bGUqIHN0eWxlID0gMDsKICAgICBpZiAoRWxl
bWVudCogcGFyZW50ID0gcGFyZW50T3JIb3N0RWxlbWVudCgpKSB7CkBAIC00ODksNyArNDg5LDcg
QEAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gU1ZHRWxlbWVudDo6Y3VzdG9tU3R5bGVGb3JSZW5k
ZXJlcigpCiAgICAgICAgICAgICBzdHlsZSA9IHJlbmRlcmVyLT5zdHlsZSgpOwogICAgIH0KIAot
ICAgIHJldHVybiBkb2N1bWVudCgpLT5zdHlsZVNlbGVjdG9yKCktPnN0eWxlRm9yRWxlbWVudChj
b3JyZXNwb25kaW5nRWxlbWVudCgpLCBzdHlsZSwgRGlzYWxsb3dTdHlsZVNoYXJpbmcpOworICAg
IHJldHVybiBkb2N1bWVudCgpLT5zdHlsZVJlc29sdmVyKCktPnN0eWxlRm9yRWxlbWVudChjb3Jy
ZXNwb25kaW5nRWxlbWVudCgpLCBzdHlsZSwgRGlzYWxsb3dTdHlsZVNoYXJpbmcpOwogfQogCiBT
dHlsZVByb3BlcnR5U2V0KiBTVkdFbGVtZW50OjphbmltYXRlZFNNSUxTdHlsZVByb3BlcnRpZXMo
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VFbGVtZW50LmNwcAppbmRleCA5
MTE5NzY3MzJmYmFjMDA3Y2NmNDUzNTkyNGQyNmM3NTMzYjliMWVkLi43OTZmMWE3NzZlMTFlNWEw
MDFjMWIzNjdhZjZjZWY3YjAwYjdkYzc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRm9udEZhY2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZh
Y2VFbGVtZW50LmNwcApAQCAtMzEyLDcgKzMxMiw3IEBAIHZvaWQgU1ZHRm9udEZhY2VFbGVtZW50
OjpyZWJ1aWxkRm9udEZhY2UoKQogICAgICAgICB9CiAgICAgfQogCi0gICAgZG9jdW1lbnQoKS0+
c3R5bGVTZWxlY3RvckNoYW5nZWQoRGVmZXJSZWNhbGNTdHlsZSk7CisgICAgZG9jdW1lbnQoKS0+
c3R5bGVSZXNvbHZlckNoYW5nZWQoRGVmZXJSZWNhbGNTdHlsZSk7CiB9CiAKIE5vZGU6Okluc2Vy
dGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgU1ZHRm9udEZhY2VFbGVtZW50OjppbnNlcnRlZEludG8o
Tm9kZSogcm9vdFBhcmVudCkKQEAgLTMzNCw3ICszMzQsNyBAQCB2b2lkIFNWR0ZvbnRGYWNlRWxl
bWVudDo6cmVtb3ZlZEZyb20oTm9kZSogcm9vdFBhcmVudCkKICAgICAgICAgZG9jdW1lbnQoKS0+
YWNjZXNzU1ZHRXh0ZW5zaW9ucygpLT51bnJlZ2lzdGVyU1ZHRm9udEZhY2VFbGVtZW50KHRoaXMp
OwogICAgICAgICBtX2ZvbnRGYWNlUnVsZS0+cHJvcGVydGllcygpLT5wYXJzZURlY2xhcmF0aW9u
KGVtcHR5U3RyaW5nKCksIDApOwogCi0gICAgICAgIGRvY3VtZW50KCktPnN0eWxlU2VsZWN0b3JD
aGFuZ2VkKERlZmVyUmVjYWxjU3R5bGUpOworICAgICAgICBkb2N1bWVudCgpLT5zdHlsZVJlc29s
dmVyQ2hhbmdlZChEZWZlclJlY2FsY1N0eWxlKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3htbC9YTUxUcmVlVmlld2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9Y
TUxUcmVlVmlld2VyLmNwcAppbmRleCA3MzNmM2M0ODJkMDlhMTE3N2I5YTU1M2Y0ZWM4YjQ1NTg1
ODhkYWE2Li45YjViNzA2NjE2YTUyN2U2Y2JiOGFiNjQwYWViYjJiNTY0MjE4YTcxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MVHJlZVZpZXdlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUveG1sL1hNTFRyZWVWaWV3ZXIuY3BwCkBAIC04MCw3ICs4MCw3IEBAIHZvaWQgWE1MVHJl
ZVZpZXdlcjo6dHJhbnNmb3JtRG9jdW1lbnRUb1RyZWVWaWV3KCkKICAgICBSZWZQdHI8VGV4dD4g
dGV4dCA9IG1fZG9jdW1lbnQtPmNyZWF0ZVRleHROb2RlKGNzc1N0cmluZyk7CiAgICAgRXhjZXB0
aW9uQ29kZSBleGNlcHRpb25Db2RlOwogICAgIG1fZG9jdW1lbnQtPmdldEVsZW1lbnRCeUlkKCJ4
bWwtdmlld2VyLXN0eWxlIiktPmFwcGVuZENoaWxkKHRleHQsIGV4Y2VwdGlvbkNvZGUpOwotICAg
IG1fZG9jdW1lbnQtPnN0eWxlU2VsZWN0b3JDaGFuZ2VkKFJlY2FsY1N0eWxlSW1tZWRpYXRlbHkp
OworICAgIG1fZG9jdW1lbnQtPnN0eWxlUmVzb2x2ZXJDaGFuZ2VkKFJlY2FsY1N0eWxlSW1tZWRp
YXRlbHkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4IGFmZTRlZTViMzkwZTMxNzZm
OWExNDViOGY5N2Q4MDM1ODliYzJhYmQuLjZhNDk4MTQ1ZDlkMjU3MDVhZTMzNjk2ZGM2M2I3Mzgx
MjJhNjI5NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1l
bnRQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQ
YXJzZXIuY3BwCkBAIC0yMDQsNyArMjA0LDcgQEAgdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6ZW5k
KCkKICAgICAgICAgaW5zZXJ0RXJyb3JNZXNzYWdlQmxvY2soKTsKICAgICBlbHNlIHsKICAgICAg
ICAgZXhpdFRleHQoKTsKLSAgICAgICAgZG9jdW1lbnQoKS0+c3R5bGVTZWxlY3RvckNoYW5nZWQo
UmVjYWxjU3R5bGVJbW1lZGlhdGVseSk7CisgICAgICAgIGRvY3VtZW50KCktPnN0eWxlUmVzb2x2
ZXJDaGFuZ2VkKFJlY2FsY1N0eWxlSW1tZWRpYXRlbHkpOwogICAgIH0KIAogICAgIGlmIChpc1Bh
cnNpbmcoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1l
bnRQYXJzZXJMaWJ4bWwyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1l
bnRQYXJzZXJMaWJ4bWwyLmNwcAppbmRleCBlMTI4ZDJiZjdlMDdmMDBiY2Y2OTA4MGNjZGM2ZDlh
MTVlNDNmMDFmLi44OWY3Y2Y3YTIxMjhhYjg4NzU5OWI2N2JlY2UwMTUwMTUxNjg0MjEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1s
Mi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxp
YnhtbDIuY3BwCkBAIC0xMzI4LDcgKzEzMjgsNyBAQCB2b2lkIFhNTERvY3VtZW50UGFyc2VyOjpk
b0VuZCgpCiAgICAgICAgIGRvY3VtZW50KCktPnNldFRyYW5zZm9ybVNvdXJjZShhZG9wdFB0cihu
ZXcgVHJhbnNmb3JtU291cmNlKGRvYykpKTsKIAogICAgICAgICBkb2N1bWVudCgpLT5zZXRQYXJz
aW5nKGZhbHNlKTsgLy8gTWFrZSB0aGUgZG9jdW1lbnQgdGhpbmsgaXQncyBkb25lLCBzbyBpdCB3
aWxsIGFwcGx5IFhTTCBzdHlsZXNoZWV0cy4KLSAgICAgICAgZG9jdW1lbnQoKS0+c3R5bGVTZWxl
Y3RvckNoYW5nZWQoUmVjYWxjU3R5bGVJbW1lZGlhdGVseSk7CisgICAgICAgIGRvY3VtZW50KCkt
PnN0eWxlUmVzb2x2ZXJDaGFuZ2VkKFJlY2FsY1N0eWxlSW1tZWRpYXRlbHkpOwogICAgICAgICBk
b2N1bWVudCgpLT5zZXRQYXJzaW5nKHRydWUpOwogCiAgICAgICAgIERvY3VtZW50UGFyc2VyOjpz
dG9wUGFyc2luZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxE
b2N1bWVudFBhcnNlclF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1l
bnRQYXJzZXJRdC5jcHAKaW5kZXggZmJmZmJmZjhlOTBjODczOTU3YjkwOGRlZGIwOGI4YWU4OWVk
YzkwOS4uM2JlZDFlNDJiZmFiNGMxY2RkOTk4ODkxZDNhMjIxODFlZjMwMTAzZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlclF0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyUXQuY3BwCkBAIC0y
MDIsNyArMjAyLDcgQEAgdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6ZG9FbmQoKQogICAgIGlmICht
X3Nhd1hTTFRyYW5zZm9ybSkgewogICAgICAgICBkb2N1bWVudCgpLT5zZXRUcmFuc2Zvcm1Tb3Vy
Y2UoYWRvcHRQdHIobmV3IFRyYW5zZm9ybVNvdXJjZShtX29yaWdpbmFsU291cmNlRm9yVHJhbnNm
b3JtKSkpOwogICAgICAgICBkb2N1bWVudCgpLT5zZXRQYXJzaW5nKGZhbHNlKTsgLy8gTWFrZSB0
aGUgZG9jIHRoaW5rIGl0J3MgZG9uZSwgc28gaXQgd2lsbCBhcHBseSB4c2wgc2hlZXRzLgotICAg
ICAgICBkb2N1bWVudCgpLT5zdHlsZVNlbGVjdG9yQ2hhbmdlZChSZWNhbGNTdHlsZUltbWVkaWF0
ZWx5KTsKKyAgICAgICAgZG9jdW1lbnQoKS0+c3R5bGVSZXNvbHZlckNoYW5nZWQoUmVjYWxjU3R5
bGVJbW1lZGlhdGVseSk7CiAgICAgICAgIGRvY3VtZW50KCktPnNldFBhcnNpbmcodHJ1ZSk7CiAg
ICAgICAgIERvY3VtZW50UGFyc2VyOjpzdG9wUGFyc2luZygpOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0F1dG9maWxsUG9wdXBNZW51Q2xpZW50LmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0F1dG9maWxsUG9wdXBNZW51Q2xpZW50LmNwcApp
bmRleCAyOGE3Y2U3YWU1ZTMyMzA5MzE3YzhiN2I5Mjg2ZWNmZTNhZmMyZmM1Li42YTBjNTRlMTBh
ZWI2OGYxMzAyMzAwNzg2ZTdjODc4NGZjZWY3YTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9BdXRvZmlsbFBvcHVwTWVudUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvQXV0b2ZpbGxQb3B1cE1lbnVDbGllbnQuY3BwCkBAIC0yMjYsNyAr
MjI2LDcgQEAgdm9pZCBBdXRvZmlsbFBvcHVwTWVudUNsaWVudDo6c2V0VGV4dEZyb21JdGVtKHVu
c2lnbmVkIGxpc3RJbmRleCkKIAogRm9udFNlbGVjdG9yKiBBdXRvZmlsbFBvcHVwTWVudUNsaWVu
dDo6Zm9udFNlbGVjdG9yKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV90ZXh0RmllbGQtPmRvY3Vt
ZW50KCktPnN0eWxlU2VsZWN0b3IoKS0+Zm9udFNlbGVjdG9yKCk7CisgICAgcmV0dXJuIG1fdGV4
dEZpZWxkLT5kb2N1bWVudCgpLT5zdHlsZVJlc29sdmVyKCktPmZvbnRTZWxlY3RvcigpOwogfQog
CiBIb3N0V2luZG93KiBBdXRvZmlsbFBvcHVwTWVudUNsaWVudDo6aG9zdFdpbmRvdygpIGNvbnN0
CkBAIC0yODUsNyArMjg1LDcgQEAgdm9pZCBBdXRvZmlsbFBvcHVwTWVudUNsaWVudDo6aW5pdGlh
bGl6ZSgKICAgICByZWd1bGFyRm9udERlc2NyaXB0aW9uLnNldENvbXB1dGVkU2l6ZShzdHlsZS0+
Zm9udERlc2NyaXB0aW9uKCkuY29tcHV0ZWRTaXplKCkpOwogCiAgICAgRm9udCByZWd1bGFyRm9u
dChyZWd1bGFyRm9udERlc2NyaXB0aW9uLCAwLCAwKTsKLSAgICByZWd1bGFyRm9udC51cGRhdGUo
dGV4dEZpZWxkLT5kb2N1bWVudCgpLT5zdHlsZVNlbGVjdG9yKCktPmZvbnRTZWxlY3RvcigpKTsK
KyAgICByZWd1bGFyRm9udC51cGRhdGUodGV4dEZpZWxkLT5kb2N1bWVudCgpLT5zdHlsZVJlc29s
dmVyKCktPmZvbnRTZWxlY3RvcigpKTsKICAgICAvLyBUaGUgZGlyZWN0aW9uIG9mIHRleHQgaW4g
cG9wdXAgbWVudSBpcyBzZXQgdGhlIHNhbWUgYXMgdGhlIGRpcmVjdGlvbiBvZgogICAgIC8vIHRo
ZSBpbnB1dCBlbGVtZW50OiB0ZXh0RmllbGQuCiAgICAgbV9yZWd1bGFyU3R5bGUgPSBhZG9wdFB0
cihuZXcgUG9wdXBNZW51U3R5bGUoQ29sb3I6OmJsYWNrLCBDb2xvcjo6d2hpdGUsIHJlZ3VsYXJG
b250LCB0cnVlLCBmYWxzZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkRldlRvb2xzQWdlbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkRldlRvb2xzQWdlbnRJbXBsLmNwcAppbmRleCA5ZTE4NDc1NzFlY2ZlNmI5MjMwMTk1ODE3YzJh
NDkzNzBmNTg3MDY1Li45MTRjY2U1YjgxMjJiMWNjNTQ5MzU4YjM5YzJiMGViNGQ5N2QyOGEwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50SW1w
bC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNBZ2VudElt
cGwuY3BwCkBAIC0yMzYsNyArMjM2LDcgQEAgcHVibGljOgogICAgICAgICBkb3VibGUgc2l6ZVJh
dGlvID0gc3RhdGljX2Nhc3Q8ZG91YmxlPihzY2FsZWRGcmFtZVNpemUud2lkdGgpIC8gbV9lbXVs
YXRlZEZyYW1lU2l6ZS53aWR0aDsKICAgICAgICAgZnJhbWUtPnNldFBhZ2VBbmRUZXh0Wm9vbUZh
Y3RvcnMoc2l6ZVJhdGlvICogbV9vcmlnaW5hbFpvb21GYWN0b3IsIG1fd2ViVmlldy0+ZW11bGF0
ZWRUZXh0Wm9vbUZhY3RvcigpKTsKICAgICAgICAgRG9jdW1lbnQqIGRvYyA9IGZyYW1lLT5kb2N1
bWVudCgpOwotICAgICAgICBkb2MtPnN0eWxlU2VsZWN0b3JDaGFuZ2VkKFJlY2FsY1N0eWxlSW1t
ZWRpYXRlbHkpOworICAgICAgICBkb2MtPnN0eWxlUmVzb2x2ZXJDaGFuZ2VkKFJlY2FsY1N0eWxl
SW1tZWRpYXRlbHkpOwogICAgICAgICBkb2MtPnVwZGF0ZUxheW91dCgpOwogICAgIH0KIApAQCAt
MzM4LDcgKzMzOCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBmcmFtZVZpZXctPnJlc2l6ZShv
dmVycmlkZVdpZHRoLCBvdmVycmlkZUhlaWdodCk7CiAKICAgICAgICAgRG9jdW1lbnQqIGRvYyA9
IGZyYW1lVmlldy0+ZnJhbWUoKS0+ZG9jdW1lbnQoKTsKLSAgICAgICAgZG9jLT5zdHlsZVNlbGVj
dG9yQ2hhbmdlZChSZWNhbGNTdHlsZUltbWVkaWF0ZWx5KTsKKyAgICAgICAgZG9jLT5zdHlsZVJl
c29sdmVyQ2hhbmdlZChSZWNhbGNTdHlsZUltbWVkaWF0ZWx5KTsKICAgICAgICAgZG9jLT51cGRh
dGVMYXlvdXQoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViSFRNTFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3
Lm1tCmluZGV4IGE5YjI5MWU0OTlmODAyOTdjYzc1Njc5ZjM5MGVmNmJkZTA2MWM0YTQuLjQyZGQx
MDQ5MmJhNGQxMGVkZTk0ODZhZmYxZTg1MTJjOGJiNDk2ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJIVE1MVmlldy5tbQpAQCAtMzAxOCw3ICszMDE4LDcgQEAgV0VCQ09SRV9DT01N
QU5EKHlhbmtBbmRTZWxlY3QpCiAjZW5kaWYKIAogICAgIGlmIChGcmFtZSogY29yZUZyYW1lID0g
Y29yZShbc2VsZiBfZnJhbWVdKSkKLSAgICAgICAgY29yZUZyYW1lLT5kb2N1bWVudCgpLT5zdHls
ZVNlbGVjdG9yQ2hhbmdlZChSZWNhbGNTdHlsZUltbWVkaWF0ZWx5KTsKKyAgICAgICAgY29yZUZy
YW1lLT5kb2N1bWVudCgpLT5zdHlsZVJlc29sdmVyQ2hhbmdlZChSZWNhbGNTdHlsZUltbWVkaWF0
ZWx5KTsKICAgICAKICNpZmRlZiBMT0dfVElNRVMgICAgICAgIAogICAgIGRvdWJsZSB0aGlzVGlt
ZSA9IENGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgpIC0gc3RhcnQ7CkBAIC0zOTIzLDcgKzM5MjMs
NyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxLZXlib2FyZEV2ZW50PiBjdXJyZW50S2V5Ym9hcmRFdmVu
dChGcmFtZSogY29yZUZyYW1lKQogCiAgICAgICAgICAgICBkb2N1bWVudC0+c2V0UGFnaW5hdGVk
Rm9yU2NyZWVuKF9wcml2YXRlLT5wYWdpbmF0ZVNjcmVlbkNvbnRlbnQpOwogICAgICAgICAgICAg
ZG9jdW1lbnQtPnNldFByaW50aW5nKF9wcml2YXRlLT5wcmludGluZyk7Ci0gICAgICAgICAgICBk
b2N1bWVudC0+c3R5bGVTZWxlY3RvckNoYW5nZWQoUmVjYWxjU3R5bGVJbW1lZGlhdGVseSk7Cisg
ICAgICAgICAgICBkb2N1bWVudC0+c3R5bGVSZXNvbHZlckNoYW5nZWQoUmVjYWxjU3R5bGVJbW1l
ZGlhdGVseSk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
cXQvQXBpL3F3ZWJlbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJlbGVtZW50
LmNwcAppbmRleCBiMDUzMjk4ZGUzOTQzZGFkM2IwY2U3ZGVlM2JiOGEwNzU0YjU2Mzc3Li4wNjZl
NTI0NDAwMmY1Y2Y5Yjg0MjY5MjU0M2M0NDhiOTM1NDgyZWFkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L3F0L0FwaS9xd2ViZWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9BcGkv
cXdlYmVsZW1lbnQuY3BwCkBAIC04NjIsNyArODYyLDcgQEAgUVN0cmluZyBRV2ViRWxlbWVudDo6
c3R5bGVQcm9wZXJ0eShjb25zdCBRU3RyaW5nICZuYW1lLCBTdHlsZVJlc29sdmVTdHJhdGVneSBz
dHIKICAgICAgICAgLy8gZGVjbGFyYXRpb25zLCBhcyB3ZWxsIGFzIGVtYmVkZGVkIGFuZCBpbmxp
bmUgc3R5bGUgZGVjbGFyYXRpb25zLgogCiAgICAgICAgIERvY3VtZW50KiBkb2MgPSBtX2VsZW1l
bnQtPmRvY3VtZW50KCk7Ci0gICAgICAgIGlmIChSZWZQdHI8Q1NTUnVsZUxpc3Q+IHJ1bGVzID0g
ZG9jLT5zdHlsZVNlbGVjdG9yKCktPnN0eWxlUnVsZXNGb3JFbGVtZW50KG1fZWxlbWVudCwgLyph
dXRob3JPbmx5Ki8gdHJ1ZSkpIHsKKyAgICAgICAgaWYgKFJlZlB0cjxDU1NSdWxlTGlzdD4gcnVs
ZXMgPSBkb2MtPnN0eWxlUmVzb2x2ZXIoKS0+c3R5bGVSdWxlc0ZvckVsZW1lbnQobV9lbGVtZW50
LCAvKmF1dGhvck9ubHkqLyB0cnVlKSkgewogICAgICAgICAgICAgZm9yIChpbnQgaSA9IHJ1bGVz
LT5sZW5ndGgoKTsgaSA+IDA7IC0taSkgewogICAgICAgICAgICAgICAgIENTU1N0eWxlUnVsZSog
cnVsZSA9IHN0YXRpY19jYXN0PENTU1N0eWxlUnVsZSo+KHJ1bGVzLT5pdGVtKGkgLSAxKSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRy
ZWVTdXBwb3J0UXQuY3BwIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVu
ZGVyVHJlZVN1cHBvcnRRdC5jcHAKaW5kZXggZmY3YzA5NDE3ZDhmMWRjODg4ZTk2NGI1Y2ZiMTJh
NDAzZGNiZDA3NS4uMWQ2OWE2MDEyNDc4YzViYmI3ZTUxZmIwMGNkYjcwMzRlYzgwNWIyNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1
cHBvcnRRdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVu
ZGVyVHJlZVN1cHBvcnRRdC5jcHAKQEAgLTUzMCw3ICs1MzAsNyBAQCB2b2lkIER1bXBSZW5kZXJU
cmVlU3VwcG9ydFF0OjpzZXRNZWRpYVR5cGUoUVdlYkZyYW1lKiBmcmFtZSwgY29uc3QgUVN0cmlu
ZyYgdHlwZQogICAgIFdlYkNvcmU6OkZyYW1lKiBjb3JlRnJhbWUgPSBRV2ViRnJhbWVQcml2YXRl
Ojpjb3JlKGZyYW1lKTsKICAgICBXZWJDb3JlOjpGcmFtZVZpZXcqIHZpZXcgPSBjb3JlRnJhbWUt
PnZpZXcoKTsKICAgICB2aWV3LT5zZXRNZWRpYVR5cGUodHlwZSk7Ci0gICAgY29yZUZyYW1lLT5k
b2N1bWVudCgpLT5zdHlsZVNlbGVjdG9yQ2hhbmdlZChSZWNhbGNTdHlsZUltbWVkaWF0ZWx5KTsK
KyAgICBjb3JlRnJhbWUtPmRvY3VtZW50KCktPnN0eWxlUmVzb2x2ZXJDaGFuZ2VkKFJlY2FsY1N0
eWxlSW1tZWRpYXRlbHkpOwogICAgIHZpZXctPmxheW91dCgpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1JlbmRlclRoZW1lUVN0eWxlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUmVuZGVyVGhlbWVRU3R5bGUuY3BwCmluZGV4
IGYyNGZmNGMwMWM1Y2M1ZTA1MjI1OGRjNmNhYTMxOTA5OWFlYjUxOWEuLmMxMTkzZjJiYTBmN2Iz
YjllMGJhZjgwYWJhMTYyOWM4MDVlOWI1ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQv
V2ViQ29yZVN1cHBvcnQvUmVuZGVyVGhlbWVRU3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
cXQvV2ViQ29yZVN1cHBvcnQvUmVuZGVyVGhlbWVRU3R5bGUuY3BwCkBAIC0yODksNyArMjg5LDcg
QEAgdm9pZCBSZW5kZXJUaGVtZVFTdHlsZTo6Y29tcHV0ZVNpemVCYXNlZE9uU3R5bGUoUmVuZGVy
U3R5bGUqIHJlbmRlclN0eWxlKSBjb25zdAogCiAKIAotdm9pZCBSZW5kZXJUaGVtZVFTdHlsZTo6
YWRqdXN0QnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBz
dHlsZSwgRWxlbWVudCopIGNvbnN0Cit2b2lkIFJlbmRlclRoZW1lUVN0eWxlOjphZGp1c3RCdXR0
b25TdHlsZShTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyLCBSZW5kZXJTdHlsZSogc3R5bGUs
IEVsZW1lbnQqKSBjb25zdAogewogICAgIC8vIERpdGNoIHRoZSBib3JkZXIuCiAgICAgc3R5bGUt
PnJlc2V0Qm9yZGVyKCk7CkBAIC0zMTcsNyArMzE3LDcgQEAgdm9pZCBSZW5kZXJUaGVtZVFTdHls
ZTo6YWRqdXN0QnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIFJlbmRlclN0eWxl
KgogICAgIGZvbnRGYW1pbHkuc2V0RmFtaWx5KG1fYnV0dG9uRm9udEZhbWlseSk7CiAgICAgZm9u
dERlc2NyaXB0aW9uLnNldEZhbWlseShmb250RmFtaWx5KTsKICAgICBzdHlsZS0+c2V0Rm9udERl
c2NyaXB0aW9uKGZvbnREZXNjcmlwdGlvbik7Ci0gICAgc3R5bGUtPmZvbnQoKS51cGRhdGUoc2Vs
ZWN0b3ItPmZvbnRTZWxlY3RvcigpKTsKKyAgICBzdHlsZS0+Zm9udCgpLnVwZGF0ZShzdHlsZVJl
c29sdmVyLT5mb250U2VsZWN0b3IoKSk7CiAgICAgc3R5bGUtPnNldExpbmVIZWlnaHQoUmVuZGVy
U3R5bGU6OmluaXRpYWxMaW5lSGVpZ2h0KCkpOwogICAgIHNldEJ1dHRvblNpemUoc3R5bGUpOwog
ICAgIHNldEJ1dHRvblBhZGRpbmcoc3R5bGUpOwpAQCAtNDA3LDkgKzQwNyw5IEBAIGJvb2wgUmVu
ZGVyVGhlbWVRU3R5bGU6OnBhaW50VGV4dEZpZWxkKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFp
bnRJbmZvJiBpLCBjb25zCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFJlbmRlclRoZW1l
UVN0eWxlOjphZGp1c3RUZXh0QXJlYVN0eWxlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBSZW5k
ZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0Cit2b2lkIFJlbmRlclRoZW1l
UVN0eWxlOjphZGp1c3RUZXh0QXJlYVN0eWxlKFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIs
IFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZWxlbWVudCkgY29uc3QKIHsKLSAgICBhZGp1
c3RUZXh0RmllbGRTdHlsZShzZWxlY3Rvciwgc3R5bGUsIGVsZW1lbnQpOworICAgIGFkanVzdFRl
eHRGaWVsZFN0eWxlKHN0eWxlUmVzb2x2ZXIsIHN0eWxlLCBlbGVtZW50KTsKIH0KIAogYm9vbCBS
ZW5kZXJUaGVtZVFTdHlsZTo6cGFpbnRUZXh0QXJlYShSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBh
aW50SW5mbyYgaSwgY29uc3QgSW50UmVjdCYgcikKQEAgLTQ2MywxMyArNDYzLDEzIEBAIGJvb2wg
UmVuZGVyVGhlbWVRU3R5bGU6OnBhaW50TWVudUxpc3QoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQ
YWludEluZm8mIGksIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFJlbmRlclRo
ZW1lUVN0eWxlOjphZGp1c3RNZW51TGlzdEJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXIqIHNlbGVj
dG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGUpIGNvbnN0Cit2b2lkIFJlbmRlclRo
ZW1lUVN0eWxlOjphZGp1c3RNZW51TGlzdEJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXIqIHN0eWxl
UmVzb2x2ZXIsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZSkgY29uc3QKIHsKICAgICAv
LyBXT1JLQVJPVU5EIGJlY2F1c2UgaHRtbC5jc3Mgc3BlY2lmaWVzIC13ZWJraXQtYm9yZGVyLXJh
ZGl1cyBmb3IgPHNlbGVjdD4gc28gd2Ugb3ZlcnJpZGUgaXQgaGVyZQogICAgIC8vIHNlZSBhbHNv
IGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mzk5CiAgICAgc3R5bGUt
PnJlc2V0Qm9yZGVyUmFkaXVzKCk7CiAKLSAgICBSZW5kZXJUaGVtZVF0OjphZGp1c3RNZW51TGlz
dEJ1dHRvblN0eWxlKHNlbGVjdG9yLCBzdHlsZSwgZSk7CisgICAgUmVuZGVyVGhlbWVRdDo6YWRq
dXN0TWVudUxpc3RCdXR0b25TdHlsZShzdHlsZVJlc29sdmVyLCBzdHlsZSwgZSk7CiB9CiAKIGJv
b2wgUmVuZGVyVGhlbWVRU3R5bGU6OnBhaW50TWVudUxpc3RCdXR0b24oUmVuZGVyT2JqZWN0KiBv
LCBjb25zdCBQYWludEluZm8mIGksCkBAIC02MjcsOSArNjI3LDkgQEAgYm9vbCBSZW5kZXJUaGVt
ZVFTdHlsZTo6cGFpbnRTbGlkZXJUaHVtYihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5m
byYgcGksCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFJlbmRlclRoZW1lUVN0eWxlOjph
ZGp1c3RTbGlkZXJUaHVtYlN0eWxlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBSZW5kZXJTdHls
ZSogc3R5bGUsIEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0Cit2b2lkIFJlbmRlclRoZW1lUVN0eWxl
OjphZGp1c3RTbGlkZXJUaHVtYlN0eWxlKFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIsIFJl
bmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZWxlbWVudCkgY29uc3QKIHsKLSAgICBSZW5kZXJU
aGVtZTo6YWRqdXN0U2xpZGVyVGh1bWJTdHlsZShzZWxlY3Rvciwgc3R5bGUsIGVsZW1lbnQpOwor
ICAgIFJlbmRlclRoZW1lOjphZGp1c3RTbGlkZXJUaHVtYlN0eWxlKHN0eWxlUmVzb2x2ZXIsIHN0
eWxlLCBlbGVtZW50KTsKICAgICBzdHlsZS0+c2V0Qm94U2hhZG93KG51bGxwdHIpOwogfQogCkBA
IC02MzksMTEgKzYzOSwxMCBAQCBib29sIFJlbmRlclRoZW1lUVN0eWxlOjpwYWludFNlYXJjaEZp
ZWxkKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBwaSwKICAgICByZXR1cm4gcGFp
bnRUZXh0RmllbGQobywgcGksIHIpOwogfQogCi12b2lkIFJlbmRlclRoZW1lUVN0eWxlOjphZGp1
c3RTZWFyY2hGaWVsZERlY29yYXRpb25TdHlsZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvciwgUmVu
ZGVyU3R5bGUqIHN0eWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBFbGVtZW50KiBlKSBjb25zdAordm9pZCBSZW5kZXJUaGVtZVFTdHlsZTo6
YWRqdXN0U2VhcmNoRmllbGREZWNvcmF0aW9uU3R5bGUoU3R5bGVSZXNvbHZlciogc3R5bGVSZXNv
bHZlciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlKSBjb25zdAogewogICAgIG5vdElt
cGxlbWVudGVkKCk7Ci0gICAgUmVuZGVyVGhlbWU6OmFkanVzdFNlYXJjaEZpZWxkRGVjb3JhdGlv
blN0eWxlKHNlbGVjdG9yLCBzdHlsZSwgZSk7CisgICAgUmVuZGVyVGhlbWU6OmFkanVzdFNlYXJj
aEZpZWxkRGVjb3JhdGlvblN0eWxlKHN0eWxlUmVzb2x2ZXIsIHN0eWxlLCBlKTsKIH0KIAogYm9v
bCBSZW5kZXJUaGVtZVFTdHlsZTo6cGFpbnRTZWFyY2hGaWVsZERlY29yYXRpb24oUmVuZGVyT2Jq
ZWN0KiBvLCBjb25zdCBQYWludEluZm8mIHBpLApAQCAtNjUzLDExICs2NTIsMTAgQEAgYm9vbCBS
ZW5kZXJUaGVtZVFTdHlsZTo6cGFpbnRTZWFyY2hGaWVsZERlY29yYXRpb24oUmVuZGVyT2JqZWN0
KiBvLCBjb25zdCBQYWludEkKICAgICByZXR1cm4gUmVuZGVyVGhlbWU6OnBhaW50U2VhcmNoRmll
bGREZWNvcmF0aW9uKG8sIHBpLCByKTsKIH0KIAotdm9pZCBSZW5kZXJUaGVtZVFTdHlsZTo6YWRq
dXN0U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvblN0eWxlKFN0eWxlUmVzb2x2ZXIqIHNlbGVj
dG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbGVtZW50KiBlKSBjb25zdAordm9pZCBSZW5k
ZXJUaGVtZVFTdHlsZTo6YWRqdXN0U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvblN0eWxlKFN0
eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCog
ZSkgY29uc3QKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIFJlbmRlclRoZW1lOjphZGp1
c3RTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uU3R5bGUoc2VsZWN0b3IsIHN0eWxlLCBlKTsK
KyAgICBSZW5kZXJUaGVtZTo6YWRqdXN0U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvblN0eWxl
KHN0eWxlUmVzb2x2ZXIsIHN0eWxlLCBlKTsKIH0KIAogYm9vbCBSZW5kZXJUaGVtZVFTdHlsZTo6
cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uKFJlbmRlck9iamVjdCogbywgY29uc3Qg
UGFpbnRJbmZvJiBwaSwK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>138650</attachid>
            <date>2012-04-24 14:46:15 -0700</date>
            <delta_ts>2012-04-24 16:51:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84765-20120424184557.patch</filename>
            <type>text/plain</type>
            <size>227728</size>
            <attacher name="Alexis Menard (darktears)">menard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE1MDk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzliNDFlMjU3OTgzMjNk
Nzg5NzRkMjkzNGRlMDAwMzZkNmQwYzJmMC4uNTY1ZWZjZjlhN2NiNTM2YzdiM2E2YTc4ZmZkYTUw
MDAyOTM5YzM0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDMxNiBAQAogMjAxMi0wNC0yNCAgQWxl
eGlzIE1lbmFyZCAgPGFsZXhpcy5tZW5hcmRAb3BlbmJvc3NhLm9yZz4KIAorICAgICAgICBSZXBs
YWNlIG9jY3VyZW5jZXMgb2Ygc3R5bGUgc2VsZWN0b3IgZnJvbSB2YXJpYWJsZXMgYW5kIG1ldGhv
ZHMgbmFtZXMgYnkgc3R5bGUgcmVzb2x2ZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD04NDc2NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFJlbmFtZSBtZXRob2RzIGFuZCB2YXJpYWJsZXMgdG8gZm9sbG93
IHRoZSBuZXcgbmFtZSBTdHlsZVJlc29sdmVyLiBJdCByZXF1aXJlcyB0byB1cGRhdGUgdGhlCisg
ICAgICAgIGxvY2FsIHZhcmlhYmxlcywgbWV0aG9kcyBwYXJhbWV0ZXJzLCBhbmQgZnVuY3Rpb24g
bmFtZXMgdG8gbWF0Y2ggdGhlIG5ldyBuYW1lIGFuZCB0byByZW1vdmUKKyAgICAgICAgdGhlIGNv
bmNlcHQgb2YgInNlbGVjdG9yIiB0byBhdm9pZCBjbGFzaGluZyB3aXRoIHRoZSBDU1MgY29uY2Vw
dC4gVGhlIG5leHQgYW5kIGxhc3QgcGF0Y2gKKyAgICAgICAgd2lsbCBiZSB0byByZW5hbWUgQ1NT
U3R5bGVTZWxlY3RvciBmaWxlIGFuZCB1cGRhdGUgdGhlIGluY2x1ZGVzLgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cyA6IGp1c3QgcmVuYW1pbmcgdGhlIHZhcmlhYmxlcyBhbmQgbWV0aG9kIG5hbWVz
LiBObyBiZWhhdmlvciBjaGFuZ2VzIGV4cGVjdGVkLgorCisgICAgICAgICogY3NzL0NTU0ZvbnRT
ZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250U2VsZWN0b3I6OmRpc3BhdGNo
SW52YWxpZGF0aW9uQ2FsbGJhY2tzKToKKyAgICAgICAgKiBjc3MvQ1NTR3JhZGllbnRWYWx1ZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NHcmFkaWVudFZhbHVlOjphZGRTdG9wcyk6CisgICAg
ICAgICogY3NzL0NTU1BhZ2VSdWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhZ2VSdWxl
OjpzZXRTZWxlY3RvclRleHQpOgorICAgICAgICAqIGNzcy9DU1NTdHlsZVJ1bGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVSdWxlOjpzZXRTZWxlY3RvclRleHQpOgorICAgICAgICAq
IGNzcy9DU1NTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlU2hlZXRJbnRl
cm5hbDo6c3R5bGVTaGVldENoYW5nZWQpOgorICAgICAgICAqIGNzcy9NZWRpYVF1ZXJ5RXZhbHVh
dG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUXVlcnlFdmFsdWF0b3I6OmV2YWwpOgor
ICAgICAgICAqIGNzcy9NZWRpYVF1ZXJ5TWF0Y2hlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVF1ZXJ5TWF0Y2hlcjo6cHJlcGFyZUV2YWx1YXRvcik6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVF1ZXJ5TWF0Y2hlcjo6c3R5bGVSZXNvbHZlckNoYW5nZWQpOgorICAgICAgICAqIGNzcy9N
ZWRpYVF1ZXJ5TWF0Y2hlci5oOgorICAgICAgICAoTWVkaWFRdWVyeU1hdGNoZXIpOgorICAgICAg
ICAqIGNzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGVSdWxlQ1NTU3R5bGVEZWNsYXJhdGlvbjo6c2V0TmVlZHNTdHlsZVJlY2FsYyk6
CisgICAgICAgICogY3NzL1N0eWxlQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBs
eVByb3BlcnR5RXhwYW5kaW5nOjphcHBseUluaGVyaXRWYWx1ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpBcHBseVByb3BlcnR5RXhwYW5kaW5nOjphcHBseUluaXRpYWxWYWx1ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpBcHBseVByb3BlcnR5RXhwYW5kaW5nOjphcHBseVZhbHVlKToKKyAgICAgICAgKFdl
YkNvcmU6OkFwcGx5UHJvcGVydHlEZWZhdWx0QmFzZTo6YXBwbHlJbmhlcml0VmFsdWUpOgorICAg
ICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eURlZmF1bHRCYXNlOjphcHBseUluaXRpYWxWYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5RGVmYXVsdDo6YXBwbHlWYWx1ZSk6
CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5TnVtYmVyOjphcHBseVZhbHVlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlTdHlsZUltYWdlOjphcHBseVZhbHVlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlBdXRvOjphcHBseUluaGVyaXRWYWx1ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5QXV0bzo6YXBwbHlJbml0aWFsVmFsdWUpOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUF1dG86OmFwcGx5VmFsdWUpOgorICAgICAg
ICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUNsaXA6OmNvbnZlcnRUb0xlbmd0aCk6CisgICAgICAg
IChXZWJDb3JlOjpBcHBseVByb3BlcnR5Q2xpcDo6YXBwbHlJbmhlcml0VmFsdWUpOgorICAgICAg
ICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUNsaXA6OmFwcGx5SW5pdGlhbFZhbHVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlDbGlwOjphcHBseVZhbHVlKToKKyAgICAgICAgKFdl
YkNvcmU6OkFwcGx5UHJvcGVydHlDb2xvcjo6YXBwbHlJbmhlcml0VmFsdWUpOgorICAgICAgICAo
V2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUNvbG9yOjphcHBseUluaXRpYWxWYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpBcHBseVByb3BlcnR5Q29sb3I6OmFwcGx5VmFsdWUpOgorICAgICAgICAoV2Vi
Q29yZTo6QXBwbHlQcm9wZXJ0eUNvbG9yOjphcHBseUNvbG9yVmFsdWUpOgorICAgICAgICAoV2Vi
Q29yZTo6QXBwbHlQcm9wZXJ0eURpcmVjdGlvbjo6YXBwbHlWYWx1ZSk6CisgICAgICAgIChXZWJD
b3JlOjpBcHBseVByb3BlcnR5TGVuZ3RoOjphcHBseVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6
OkFwcGx5UHJvcGVydHlTdHJpbmc6OmFwcGx5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBw
bHlQcm9wZXJ0eUJvcmRlclJhZGl1czo6YXBwbHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpB
cHBseVByb3BlcnR5RmlsbExheWVyOjphcHBseUluaGVyaXRWYWx1ZSk6CisgICAgICAgIChXZWJD
b3JlOjpBcHBseVByb3BlcnR5RmlsbExheWVyOjphcHBseUluaXRpYWxWYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpBcHBseVByb3BlcnR5RmlsbExheWVyOjphcHBseVZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OkFwcGx5UHJvcGVydHlDb21wdXRlTGVuZ3RoOjphcHBseVZhbHVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlGb250OjphcHBseUluaGVyaXRWYWx1ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5Rm9udDo6YXBwbHlJbml0aWFsVmFsdWUpOgorICAg
ICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUZvbnQ6OmFwcGx5VmFsdWUpOgorICAgICAgICAo
V2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUZvbnRTaXplOjphcHBseUluaGVyaXRWYWx1ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5Rm9udFNpemU6OmFwcGx5SW5pdGlhbFZhbHVlKToK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlGb250U2l6ZTo6YXBwbHlWYWx1ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5Rm9udFdlaWdodDo6YXBwbHlWYWx1ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5Rm9udFZhcmlhbnRMaWdhdHVyZXM6OmFwcGx5
SW5oZXJpdFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlGb250VmFyaWFu
dExpZ2F0dXJlczo6YXBwbHlJbml0aWFsVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQ
cm9wZXJ0eUZvbnRWYXJpYW50TGlnYXR1cmVzOjphcHBseVZhbHVlKToKKyAgICAgICAgKFdlYkNv
cmU6OkFwcGx5UHJvcGVydHlCb3JkZXJJbWFnZTo6YXBwbHlWYWx1ZSk6CisgICAgICAgIChXZWJD
b3JlOjpBcHBseVByb3BlcnR5Qm9yZGVySW1hZ2VNb2RpZmllcjo6YXBwbHlJbmhlcml0VmFsdWUp
OgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUJvcmRlckltYWdlTW9kaWZpZXI6OmFw
cGx5SW5pdGlhbFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlCb3JkZXJJ
bWFnZU1vZGlmaWVyOjphcHBseVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVy
dHlCb3JkZXJJbWFnZVNvdXJjZTo6YXBwbHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBs
eVByb3BlcnR5Q291bnRlcjo6YXBwbHlJbmhlcml0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6
QXBwbHlQcm9wZXJ0eUNvdW50ZXI6OmFwcGx5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBw
bHlQcm9wZXJ0eUN1cnNvcjo6YXBwbHlJbmhlcml0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6
QXBwbHlQcm9wZXJ0eUN1cnNvcjo6YXBwbHlJbml0aWFsVmFsdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6QXBwbHlQcm9wZXJ0eUN1cnNvcjo6YXBwbHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpB
cHBseVByb3BlcnR5VGV4dEFsaWduOjphcHBseVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFw
cGx5UHJvcGVydHlUZXh0RGVjb3JhdGlvbjo6YXBwbHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpBcHBseVByb3BlcnR5VW5pY29kZUJpZGk6OmFwcGx5VmFsdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6QXBwbHlQcm9wZXJ0eUxpbmVIZWlnaHQ6OmFwcGx5VmFsdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6QXBwbHlQcm9wZXJ0eVBhZ2VTaXplOjphcHBseVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6
OkFwcGx5UHJvcGVydHlUZXh0RW1waGFzaXNTdHlsZTo6YXBwbHlJbmhlcml0VmFsdWUpOgorICAg
ICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eVRleHRFbXBoYXNpc1N0eWxlOjphcHBseUluaXRp
YWxWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5VGV4dEVtcGhhc2lzU3R5
bGU6OmFwcGx5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUFuaW1hdGlv
bjo6bWFwKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlBbmltYXRpb246OmFwcGx5
SW5oZXJpdFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlBbmltYXRpb246
OmFwcGx5SW5pdGlhbFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlBbmlt
YXRpb246OmFwcGx5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eU91dGxp
bmVTdHlsZTo6YXBwbHlJbmhlcml0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9w
ZXJ0eU91dGxpbmVTdHlsZTo6YXBwbHlJbml0aWFsVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6
QXBwbHlQcm9wZXJ0eU91dGxpbmVTdHlsZTo6YXBwbHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpBcHBseVByb3BlcnR5UmVzaXplOjphcHBseVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFw
cGx5UHJvcGVydHlWZXJ0aWNhbEFsaWduOjphcHBseVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6
OkFwcGx5UHJvcGVydHlBc3BlY3RSYXRpbzo6YXBwbHlJbmhlcml0VmFsdWUpOgorICAgICAgICAo
V2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUFzcGVjdFJhdGlvOjphcHBseUluaXRpYWxWYWx1ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5QXNwZWN0UmF0aW86OmFwcGx5VmFsdWUpOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eVpvb206OnJlc2V0RWZmZWN0aXZlWm9vbSk6
CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5Wm9vbTo6YXBwbHlJbmhlcml0VmFsdWUp
OgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eVpvb206OmFwcGx5SW5pdGlhbFZhbHVl
KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlab29tOjphcHBseVZhbHVlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlEaXNwbGF5Ojppc1ZhbGlkRGlzcGxheVZhbHVl
KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlEaXNwbGF5OjphcHBseUluaGVyaXRW
YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5RGlzcGxheTo6YXBwbHlJbml0
aWFsVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eURpc3BsYXk6OmFwcGx5
VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUZsZXg6OmFwcGx5SW5oZXJp
dFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlGbGV4OjphcHBseUluaXRp
YWxWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5RmxleDo6YXBwbHlWYWx1
ZSk6CisgICAgICAgICogY3NzL1N0eWxlQnVpbGRlci5oOgorICAgICAgICAoV2ViQ29yZTo6UHJv
cGVydHlIYW5kbGVyOjphcHBseUluaGVyaXRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpQcm9w
ZXJ0eUhhbmRsZXI6OmFwcGx5SW5pdGlhbFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlByb3Bl
cnR5SGFuZGxlcjo6YXBwbHlWYWx1ZSk6CisgICAgICAgICogY3NzL1N0eWxlTWVkaWEuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGVNZWRpYTo6bWF0Y2hNZWRpdW0pOgorICAgICAgICAqIGRv
bS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6RG9jdW1lbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6On5Eb2N1bWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6c2V0RG9jVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Y2hp
bGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzZXRDb250ZW50TGFu
Z3VhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlY2FsY1N0eWxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp1cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVl
dHMpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnN0eWxlRm9yRWxlbWVudElnbm9yaW5n
UGVuZGluZ1N0eWxlc2hlZXRzKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzdHlsZUZv
clBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNvbWJpbmVDU1NGZWF0dXJlRmxh
Z3MpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlc2V0Q1NTRmVhdHVyZUZsYWdzKToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpjcmVhdGVTdHlsZVJlc29sdmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50OjpjbGVhclN0eWxlUmVzb2x2ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6OmNsZWFyUGFnZVVzZXJTaGVldCk6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudDo6dXBkYXRlUGFnZVVzZXJTaGVldCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6Y2xlYXJQYWdlR3JvdXBVc2VyU2hlZXRzKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
Ojp1cGRhdGVQYWdlR3JvdXBVc2VyU2hlZXRzKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
OjphZGRVc2VyU2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnByb2Nlc3NIdHRw
RXF1aXYpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldFNlbGVjdGVkU3R5bGVzaGVl
dFNldCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cmVtb3ZlUGVuZGluZ1NoZWV0KToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpldmFsdWF0ZU1lZGlhUXVlcnlMaXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzdHlsZVJlc29sdmVyQ2hhbmdlZCk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6YW5hbHl6ZVN0eWxlc2hlZXRDaGFuZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnQ6OnVwZGF0ZUFjdGl2ZVN0eWxlc2hlZXRzKToKKyAgICAgICAgKiBk
b20vRG9jdW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzdHlsZVJlc29sdmVy
SWZFeGlzdHMpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnN0eWxlUmVzb2x2ZXIpOgor
ICAgICAgICAoRG9jdW1lbnQpOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXJQYXJlbnRQdXNoZXI6OlN0eWxlUmVzb2x2ZXJQYXJlbnRQ
dXNoZXIpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlclBhcmVudFB1c2hlcjo6cHVz
aCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyUGFyZW50UHVzaGVyOjp+U3R5bGVS
ZXNvbHZlclBhcmVudFB1c2hlcik6CisgICAgICAgIChTdHlsZVJlc29sdmVyUGFyZW50UHVzaGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6RWxlbWVudDo6YXR0YWNoKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6
OnN0eWxlRm9yUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6cmVjYWxjU3R5
bGUpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6YmVnaW5QYXJzaW5nQ2hpbGRyZW4pOgor
ICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6ZmluaXNoUGFyc2luZ0NoaWxkcmVuKToKKyAgICAg
ICAgKiBkb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBy
b2Nlc3NpbmdJbnN0cnVjdGlvbjo6cmVtb3ZlZEZyb20pOgorICAgICAgICAqIGRvbS9TaGFkb3dS
b290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OmF0dGFjaCk6CisgICAgICAg
ICogZG9tL1NoYWRvd1RyZWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93VHJlZTo6cmVj
YWxjU2hhZG93VHJlZVN0eWxlKToKKyAgICAgICAgKiBkb20vU3R5bGVFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlRWxlbWVudDo6cmVtb3ZlZEZyb21Eb2N1bWVudCk6CisgICAg
ICAgICogZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c3R5bGVG
cm9tTWF0Y2hlZFJ1bGVzRm9yRWxlbWVudCk6CisgICAgICAgICogaGlzdG9yeS9DYWNoZWRQYWdl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFBhZ2U6OnJlc3RvcmUpOgorICAgICAgICAq
IGh0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENhbnZh
c0VsZW1lbnQ6OnN0eWxlUmVzb2x2ZXIpOgorICAgICAgICAqIGh0bWwvSFRNTENhbnZhc0VsZW1l
bnQuaDoKKyAgICAgICAgKEhUTUxDYW52YXNFbGVtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxM
aW5rRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OnNldERp
c2FibGVkU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50Ojpwcm9jZXNz
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVudDo6cmVtb3ZlZEZyb20pOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50OjpyZW1vdmVQZW5kaW5nU2hlZXQpOgorICAg
ICAgICAqIGh0bWwvSFRNTFN0eWxlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
U3R5bGVFbGVtZW50OjpyZWdpc3RlcldpdGhTY29waW5nTm9kZSk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MU3R5bGVFbGVtZW50Ojp1bnJlZ2lzdGVyV2l0aFNjb3BpbmdOb2RlKToKKyAgICAgICAg
KiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRGb250KToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
Q1NTQWdlbnQ6OnJlY2FsY1N0eWxlRm9yUHNldWRvU3RhdGVJZk5lZWRlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0TWF0Y2hlZFN0eWxlc0Zvck5vZGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkQXJyYXlGb3JSdWxlTGlzdCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6Y2xlYXJQc2V1ZG9TdGF0ZSk6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OnVwZGF0ZVZpZXdNZXRyaWNzKToKKyAgICAgICAg
KiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmdldE1h
dGNoZWRDU1NSdWxlcyk6CisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZTo6c2V0UHJpbnRpbmcpOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6bGF5b3V0KToKKyAgICAgICAgKiBwYWdlL1Bh
Z2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2V0Vmlld01vZGUpOgorICAgICAgICAo
V2ViQ29yZTo6UGFnZTo6c2V0TmVlZHNSZWNhbGNTdHlsZUluQWxsRnJhbWVzKToKKyAgICAgICAg
KFdlYkNvcmU6OlBhZ2U6OmFsbFZpc2l0ZWRTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6UGFnZTo6dmlzaXRlZFN0YXRlQ2hhbmdlZCk6CisgICAgICAgICogcGFnZS9hbmltYXRpb24v
S2V5ZnJhbWVBbmltYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZnJhbWVBbmltYXRp
b246OktleWZyYW1lQW5pbWF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvUmVuZGVyVGhl
bWVFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVFZmw6OmFkanVzdFNsaWRl
clRyYWNrU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVFZmw6OmFkanVzdFNs
aWRlclRodW1iU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVFZmw6OmFkanVz
dENoZWNrYm94U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVFZmw6OmFkanVz
dFJhZGlvU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVFZmw6OmFkanVzdEJ1
dHRvblN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lRWZsOjphZGp1c3RNZW51
TGlzdFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lRWZsOjphZGp1c3RNZW51
TGlzdEJ1dHRvblN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lRWZsOjphZGp1
c3RUZXh0RmllbGRTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUVmbDo6YWRq
dXN0VGV4dEFyZWFTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUVmbDo6YWRq
dXN0U2VhcmNoRmllbGREZWNvcmF0aW9uU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGhlbWVFZmw6OmFkanVzdFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvblN0eWxlKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRoZW1lRWZsOjphZGp1c3RTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0
aW9uU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVFZmw6OmFkanVzdFNlYXJj
aEZpZWxkQ2FuY2VsQnV0dG9uU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVF
Zmw6OmFkanVzdFNlYXJjaEZpZWxkU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhl
bWVFZmw6OmFkanVzdFByb2dyZXNzQmFyU3R5bGUpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9S
ZW5kZXJUaGVtZUd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUd0azo6YWRq
dXN0QnV0dG9uU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6OmFkanVz
dE1lbnVMaXN0U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6OmFkanVz
dE1lbnVMaXN0QnV0dG9uU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6
OmFkanVzdFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvblN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRoZW1lR3RrOjphZGp1c3RTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uU3R5bGUp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6OmFkanVzdFNlYXJjaEZpZWxkQ2Fu
Y2VsQnV0dG9uU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6OmFkanVz
dFNlYXJjaEZpZWxkU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6OmFk
anVzdFNsaWRlclRodW1iU3R5bGUpOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1JlbmRlclRoZW1l
UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVRdDo6YWRqdXN0U2xpZGVyVGh1
bWJTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVF0OjphZGp1c3RTZWFyY2hG
aWVsZFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lUXQ6OmFkanVzdFNlYXJj
aEZpZWxkQ2FuY2VsQnV0dG9uU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVR
dDo6YWRqdXN0U2VhcmNoRmllbGREZWNvcmF0aW9uU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGhlbWVRdDo6YWRqdXN0U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvblN0eWxlKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lUXQ6OmFkanVzdElubmVyU3BpbkJ1dHRvblN0
eWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9SZW5kZXJUaGVtZVF0TW9iaWxlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lUXRNb2JpbGU6OmFkanVzdEJ1dHRvblN0eWxlKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lUXRNb2JpbGU6OmFkanVzdE1lbnVMaXN0U3R5
bGUpOgorICAgICAgICAqIHBsYXRmb3JtL3d4L1JlbmRlclRoZW1lV3guY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGhlbWVXeDo6YWRqdXN0QnV0dG9uU3R5bGUpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RC
b3g6OnVwZGF0ZUZyb21FbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RCb3g6
OnBhaW50SXRlbUZvcmVncm91bmQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNZW51TGlz
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNZW51TGlzdDo6Zm9udFNlbGVjdG9yKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck9iamVjdDo6Z2V0VW5jYWNoZWRQc2V1ZG9TdHlsZSk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclJlZ2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZWdpb246OnN0
eWxlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJlZ2lvbjo6Y29tcHV0ZVN0
eWxlSW5SZWdpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmds
ZUxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5l
Ojpmb250U2VsZWN0b3IpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6YWRqdXN0U3R5bGUpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGhlbWU6OmFkanVzdElucHV0RmllbGRTcGVlY2hCdXR0b25TdHlsZSk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1Ta2lhLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRoZW1lQ2hyb21pdW1Ta2lhOjphZGp1c3RNZW51TGlzdFN0eWxlKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQ2hyb21pdW1Ta2lhOjphZGp1c3RNZW51TGlz
dEJ1dHRvblN0eWxlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW06Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6YWRqdXN0TWVudUxpc3RTdHlsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6YWRqdXN0U2xpZGVyVGh1bWJTdHlsZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6YWRqdXN0U2VhcmNoRmllbGRTdHls
ZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lU2FmYXJpLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRoZW1lU2FmYXJpOjpzZXRGb250RnJvbUNvbnRyb2xTaXplKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lU2FmYXJpOjphZGp1c3RCdXR0b25TdHlsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVNhZmFyaTo6YWRqdXN0TWVudUxpc3RTdHlsZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVNhZmFyaTo6YWRqdXN0TWVudUxpc3RCdXR0
b25TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVNhZmFyaTo6YWRqdXN0U2xp
ZGVyVGh1bWJTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVNhZmFyaTo6YWRq
dXN0U2VhcmNoRmllbGRTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVNhZmFy
aTo6YWRqdXN0U2VhcmNoRmllbGRDYW5jZWxCdXR0b25TdHlsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUaGVtZVNhZmFyaTo6YWRqdXN0U2VhcmNoRmllbGREZWNvcmF0aW9uU3R5bGUpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVTYWZhcmk6OmFkanVzdFNlYXJjaEZpZWxkUmVz
dWx0c0RlY29yYXRpb25TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVNhZmFy
aTo6YWRqdXN0U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uU3R5bGUpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJUaGVtZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVdp
bjo6YWRqdXN0SW5uZXJTcGluQnV0dG9uU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGhlbWVXaW46OmFkanVzdE1lbnVMaXN0U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGhlbWVXaW46OmFkanVzdE1lbnVMaXN0QnV0dG9uU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGhlbWVXaW46OmFkanVzdFNlYXJjaEZpZWxkU3R5bGUpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGhlbWVXaW46OmFkanVzdFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uU3R5bGUpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVXaW46OmFkanVzdFNlYXJjaEZpZWxkRGVjb3Jh
dGlvblN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lV2luOjphZGp1c3RTZWFy
Y2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGhlbWVXaW46OmFkanVzdFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvblN0eWxlKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW5DRS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZVdpbkNFOjphZGp1c3RNZW51TGlzdFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRoZW1lV2luQ0U6OmFkanVzdFNlYXJjaEZpZWxkU3R5bGUpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGhlbWVXaW5DRTo6YWRqdXN0U2VhcmNoRmllbGRDYW5jZWxCdXR0b25TdHlsZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVdpbkNFOjphZGp1c3RTZWFyY2hGaWVsZERl
Y29yYXRpb25TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVdpbkNFOjphZGp1
c3RTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGhlbWVXaW5DRTo6YWRqdXN0U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uU3R5bGUpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVXaW5DRTo6YWRqdXN0TWVudUxpc3RCdXR0b25T
dHlsZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJhdGVkSW1hZ2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVHZW5lcmF0ZWRJbWFnZTo6aW1hZ2UpOgorICAgICAg
ICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lVGV4dC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTVkdJbmxpbmVUZXh0Ojpjb21wdXRlTmV3U2NhbGVkRm9udEZvclN0eWxlKToK
KyAgICAgICAgKiBzdmcvU1ZHRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVt
ZW50OjpjdXN0b21TdHlsZUZvclJlbmRlcmVyKToKKyAgICAgICAgKiBzdmcvU1ZHRm9udEZhY2VF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZvbnRGYWNlRWxlbWVudDo6cmVidWls
ZEZvbnRGYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZvbnRGYWNlRWxlbWVudDo6cmVtb3Zl
ZEZyb20pOgorICAgICAgICAqIHhtbC9YTUxUcmVlVmlld2VyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlhNTFRyZWVWaWV3ZXI6OnRyYW5zZm9ybURvY3VtZW50VG9UcmVlVmlldyk6CisgICAgICAg
ICogeG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpY
TUxEb2N1bWVudFBhcnNlcjo6ZW5kKToKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50
UGFyc2VyTGlieG1sMi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxEb2N1bWVudFBhcnNlcjo6
ZG9FbmQpOgorICAgICAgICAqIHhtbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJRdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpYTUxEb2N1bWVudFBhcnNlcjo6ZG9FbmQpOgorICAgICAgICAqIFdl
YkNvcmUuZXhwLmluOgorCisyMDEyLTA0LTI0ICBBbGV4aXMgTWVuYXJkICA8YWxleGlzLm1lbmFy
ZEBvcGVuYm9zc2Eub3JnPgorCiAgICAgICAgIFJlbmFtZSBDU1NTdHlsZVNlbGVjdG9yIGNsYXNz
IHRvIFN0eWxlUmVzb2x2ZXIuCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD04NDczNAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDliMmZjZjc1
YjZjYjQ1YzViNGYwNDhiNTM2MDRlNzllNjcxOTZmMGQuLmJhNzBkZmJmNDdjMzM3NjUyOGVlODRj
NDY2NGEzOTMzNTVhNGM2ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjIgQEAKKzIwMTItMDQtMjQgIEFsZXhpcyBNZW5hcmQgIDxhbGV4aXMubWVuYXJkQG9wZW5ib3Nz
YS5vcmc+CisKKyAgICAgICAgUmVwbGFjZSBvY2N1cmVuY2VzIG9mIHN0eWxlIHNlbGVjdG9yIGZy
b20gdmFyaWFibGVzIGFuZCBtZXRob2RzIG5hbWVzIGJ5IHN0eWxlIHJlc29sdmVyLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQ3NjUKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW5hbWUgbWV0aG9kcyBh
bmQgdmFyaWFibGVzIHRvIGZvbGxvdyB0aGUgbmV3IG5hbWUgU3R5bGVSZXNvbHZlci4gSXQgcmVx
dWlyZXMgdG8gdXBkYXRlIHRoZQorICAgICAgICBsb2NhbCB2YXJpYWJsZXMsIG1ldGhvZHMgcGFy
YW1ldGVycywgYW5kIGZ1bmN0aW9uIG5hbWVzIHRvIG1hdGNoIHRoZSBuZXcgbmFtZSBhbmQgdG8g
cmVtb3ZlCisgICAgICAgIHRoZSBjb25jZXB0IG9mICJzZWxlY3RvciIgdG8gYXZvaWQgY2xhc2hp
bmcgd2l0aCB0aGUgQ1NTIGNvbmNlcHQuIFRoZSBuZXh0IGFuZCBsYXN0IHBhdGNoCisgICAgICAg
IHdpbGwgYmUgdG8gcmVuYW1lIENTU1N0eWxlU2VsZWN0b3IgZmlsZSBhbmQgdXBkYXRlIHRoZSBp
bmNsdWRlcy4KKworICAgICAgICAqIHNyYy9BdXRvZmlsbFBvcHVwTWVudUNsaWVudC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OkF1dG9maWxsUG9wdXBNZW51Q2xpZW50Ojpmb250U2VsZWN0b3IpOgor
ICAgICAgICAoV2ViS2l0OjpBdXRvZmlsbFBvcHVwTWVudUNsaWVudDo6aW5pdGlhbGl6ZSk6Cisg
ICAgICAgICogc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
RGV2aWNlTWV0cmljc1N1cHBvcnQ6OmF1dG9ab29tUGFnZVRvRml0V2lkdGgpOgorICAgICAgICAo
V2ViS2l0OjpEZXZpY2VNZXRyaWNzU3VwcG9ydDo6YXBwbHlTaXplT3ZlcnJpZGVJbnRlcm5hbCk6
CisKIDIwMTItMDQtMjQgIFNhbWkgS3lvc3RpbGEgIDxza3lvc3RpbEBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgW2Nocm9taXVtXSBEb24ndCBrZWVwIHBvaW50ZXJzIHRvIHJlbGVhc2VkIGxheWVy
IHRyZWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCAyYTEwZDFlNGY2MjI1NGI0NTEwYjhhYTU0Yjk3OWRl
NmUwZTRmZGY4Li40ZTQ0NWJlZjNkM2QwYTg5OThiMjM1MTIzZTIyNzkzOGFkNWNiOTQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9t
YWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTItMDQtMjQgIEFsZXhpcyBNZW5hcmQg
IDxhbGV4aXMubWVuYXJkQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgUmVwbGFjZSBvY2N1cmVu
Y2VzIG9mIHN0eWxlIHNlbGVjdG9yIGZyb20gdmFyaWFibGVzIGFuZCBtZXRob2RzIG5hbWVzIGJ5
IHN0eWxlIHJlc29sdmVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9ODQ3NjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBSZW5hbWUgbWV0aG9kcyBhbmQgdmFyaWFibGVzIHRvIGZvbGxvdyB0aGUgbmV3IG5h
bWUgU3R5bGVSZXNvbHZlci4gSXQgcmVxdWlyZXMgdG8gdXBkYXRlIHRoZQorICAgICAgICBsb2Nh
bCB2YXJpYWJsZXMsIG1ldGhvZHMgcGFyYW1ldGVycywgYW5kIGZ1bmN0aW9uIG5hbWVzIHRvIG1h
dGNoIHRoZSBuZXcgbmFtZSBhbmQgdG8gcmVtb3ZlCisgICAgICAgIHRoZSBjb25jZXB0IG9mICJz
ZWxlY3RvciIgdG8gYXZvaWQgY2xhc2hpbmcgd2l0aCB0aGUgQ1NTIGNvbmNlcHQuIFRoZSBuZXh0
IGFuZCBsYXN0IHBhdGNoCisgICAgICAgIHdpbGwgYmUgdG8gcmVuYW1lIENTU1N0eWxlU2VsZWN0
b3IgZmlsZSBhbmQgdXBkYXRlIHRoZSBpbmNsdWRlcy4KKworICAgICAgICAqIFdlYlZpZXcvV2Vi
SFRNTFZpZXcubW06CisgICAgICAgICgtW1dlYkhUTUxWaWV3IHJlYXBwbHlTdHlsZXNdKToKKyAg
ICAgICAgKC1bV2ViSFRNTFZpZXcgX3NldFByaW50aW5nOm1pbmltdW1QYWdlTG9naWNhbFdpZHRo
OmxvZ2ljYWxIZWlnaHQ6b3JpZ2luYWxQYWdlV2lkdGg6b3JpZ2luYWxQYWdlSGVpZ2h0Om1heGlt
dW1TaHJpbmtSYXRpbzphZGp1c3RWaWV3U2l6ZTpwYWdpbmF0ZVNjcmVlbkNvbnRlbnQ6XSk6CisK
IDIwMTItMDQtMjMgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIElu
Y3JlbWVudGFsIHJlbmRlcmluZyBzaG91bGQgYmUgdW5zdXBwcmVzc2VkIGFmdGVyIHRoZSBsb2Fk
IGV2ZW50IG9yIGEgY29uZmlndXJhYmxlIHRpbWVvdXQsIHdoaWNoZXZlciBvY2N1cnMgZmlyc3Qu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
cXQvQ2hhbmdlTG9nCmluZGV4IDZjMjMwMTIyMmJiYmNlMzQ3M2IzZGMyYTNkMmYyYjVkY2JhYTBl
NzguLjMwZTc5NGI0YTliYzUwNTBjMTdhNGY4NzYwNDc4NjRkZDYyM2VlNWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdl
TG9nCkBAIC0xLDUgKzEsMjkgQEAKIDIwMTItMDQtMjQgIEFsZXhpcyBNZW5hcmQgIDxhbGV4aXMu
bWVuYXJkQG9wZW5ib3NzYS5vcmc+CiAKKyAgICAgICAgUmVwbGFjZSBvY2N1cmVuY2VzIG9mIHN0
eWxlIHNlbGVjdG9yIGZyb20gdmFyaWFibGVzIGFuZCBtZXRob2RzIG5hbWVzIGJ5IHN0eWxlIHJl
c29sdmVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODQ3NjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBS
ZW5hbWUgbWV0aG9kcyBhbmQgdmFyaWFibGVzIHRvIGZvbGxvdyB0aGUgbmV3IG5hbWUgU3R5bGVS
ZXNvbHZlci4gSXQgcmVxdWlyZXMgdG8gdXBkYXRlIHRoZQorICAgICAgICBsb2NhbCB2YXJpYWJs
ZXMsIG1ldGhvZHMgcGFyYW1ldGVycywgYW5kIGZ1bmN0aW9uIG5hbWVzIHRvIG1hdGNoIHRoZSBu
ZXcgbmFtZSBhbmQgdG8gcmVtb3ZlCisgICAgICAgIHRoZSBjb25jZXB0IG9mICJzZWxlY3RvciIg
dG8gYXZvaWQgY2xhc2hpbmcgd2l0aCB0aGUgQ1NTIGNvbmNlcHQuIFRoZSBuZXh0IGFuZCBsYXN0
IHBhdGNoCisgICAgICAgIHdpbGwgYmUgdG8gcmVuYW1lIENTU1N0eWxlU2VsZWN0b3IgZmlsZSBh
bmQgdXBkYXRlIHRoZSBpbmNsdWRlcy4KKworICAgICAgICAqIEFwaS9xd2ViZWxlbWVudC5jcHA6
CisgICAgICAgIChRV2ViRWxlbWVudDo6c3R5bGVQcm9wZXJ0eSk6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwOgorICAgICAgICAoRHVtcFJlbmRl
clRyZWVTdXBwb3J0UXQ6OnNldE1lZGlhVHlwZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
UmVuZGVyVGhlbWVRU3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVRU3R5
bGU6OmFkanVzdEJ1dHRvblN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lUVN0
eWxlOjphZGp1c3RUZXh0QXJlYVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1l
UVN0eWxlOjphZGp1c3RNZW51TGlzdEJ1dHRvblN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRoZW1lUVN0eWxlOjphZGp1c3RTbGlkZXJUaHVtYlN0eWxlKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRoZW1lUVN0eWxlOjphZGp1c3RTZWFyY2hGaWVsZERlY29yYXRpb25TdHlsZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVFTdHlsZTo6YWRqdXN0U2VhcmNoRmllbGRS
ZXN1bHRzRGVjb3JhdGlvblN0eWxlKToKKworMjAxMi0wNC0yNCAgQWxleGlzIE1lbmFyZCAgPGFs
ZXhpcy5tZW5hcmRAb3BlbmJvc3NhLm9yZz4KKwogICAgICAgICBSZW5hbWUgQ1NTU3R5bGVTZWxl
Y3RvciBjbGFzcyB0byBTdHlsZVJlc29sdmVyLgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQ3MzQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCBkZWRh
OWNlMzcyYzllNDhlZmM4ZWM1OTc5ZDU3NTMwY2RlMjAyYWY3Li5hNDZmMmIxZDZiN2Q5MjkwZDQ4
MGI3NzYxZjBlNTgyODY4ZjM4OTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtOTYxLDcgKzk2
MSw3IEBAIF9fWk43V2ViQ29yZThEb2N1bWVudDEydXBkYXRlTGF5b3V0RXYKIF9fWk43V2ViQ29y
ZThEb2N1bWVudDE0c2V0Rm9jdXNlZE5vZGVFTjNXVEYxMFBhc3NSZWZQdHJJTlNfNE5vZGVFRUUK
IF9fWk43V2ViQ29yZThEb2N1bWVudDE2aXNQYWdlQm94VmlzaWJsZUVpCiBfX1pON1dlYkNvcmU4
RG9jdW1lbnQxN2dldEZvY3VzYWJsZU5vZGVzRVJOM1dURjZWZWN0b3JJTlMxXzZSZWZQdHJJTlNf
NE5vZGVFRUVMbTBFRUUKLV9fWk43V2ViQ29yZThEb2N1bWVudDIwc3R5bGVTZWxlY3RvckNoYW5n
ZWRFTlNfMjNTdHlsZVNlbGVjdG9yVXBkYXRlRmxhZ0UKK19fWk43V2ViQ29yZThEb2N1bWVudDIw
c3R5bGVSZXNvbHZlckNoYW5nZWRFTlNfMjNTdHlsZVJlc29sdmVyVXBkYXRlRmxhZ0UKIF9fWk43
V2ViQ29yZThEb2N1bWVudDIyY3JlYXRlRG9jdW1lbnRGcmFnbWVudEV2CiBfX1pON1dlYkNvcmU4
RG9jdW1lbnQyM2RpZEFkZFdoZWVsRXZlbnRIYW5kbGVyRXYKIF9fWk43V2ViQ29yZThEb2N1bWVu
dDI0YWRkTWVkaWFDYW5TdGFydExpc3RlbmVyRVBOU18yMU1lZGlhQ2FuU3RhcnRMaXN0ZW5lckUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAKaW5kZXggZDhmYzhjM2RhYzVmMGNi
NjYyYjhlZDE5ZTc3MGMwNTA3NzEzYzFkMi4uYmY1YzRhYTZlNjg2ZWY2M2FjMWZkNzRhYTg2OGRl
YTQ4M2UzMzU5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rv
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAKQEAgLTMz
Myw4ICszMzMsOCBAQCB2b2lkIENTU0ZvbnRTZWxlY3Rvcjo6ZGlzcGF0Y2hJbnZhbGlkYXRpb25D
YWxsYmFja3MoKQogICAgIC8vIEZJWE1FOiBNYWtlIERvY3VtZW50IGEgRm9udFNlbGVjdG9yQ2xp
ZW50IHNvIHRoYXQgaXQgY2FuIHNpbXBseSByZWdpc3RlciBmb3IgaW52YWxpZGF0aW9uIGNhbGxi
YWNrcy4KICAgICBpZiAoIW1fZG9jdW1lbnQpCiAgICAgICAgIHJldHVybjsKLSAgICBpZiAoU3R5
bGVSZXNvbHZlciogc3R5bGVTZWxlY3RvciA9IG1fZG9jdW1lbnQtPnN0eWxlU2VsZWN0b3JJZkV4
aXN0cygpKQotICAgICAgICBzdHlsZVNlbGVjdG9yLT5pbnZhbGlkYXRlTWF0Y2hlZFByb3BlcnRp
ZXNDYWNoZSgpOworICAgIGlmIChTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyID0gbV9kb2N1
bWVudC0+c3R5bGVSZXNvbHZlcklmRXhpc3RzKCkpCisgICAgICAgIHN0eWxlUmVzb2x2ZXItPmlu
dmFsaWRhdGVNYXRjaGVkUHJvcGVydGllc0NhY2hlKCk7CiAgICAgaWYgKG1fZG9jdW1lbnQtPmlu
UGFnZUNhY2hlKCkgfHwgIW1fZG9jdW1lbnQtPnJlbmRlcmVyKCkpCiAgICAgICAgIHJldHVybjsK
ICAgICBtX2RvY3VtZW50LT5zY2hlZHVsZUZvcmNlZFN0eWxlUmVjYWxjKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAKaW5kZXggZWFiYzUyMTA0YzQ5NWE3Y2FmMDY1OGQ5
MmJlZDJmOTNiMTlkODQ0Ny4uMjcxYjI5NzA0ZWZmYjY4ZDYyYjNmNGEwMmMyNzBiZDQ0MmM3NGRl
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmNwcApAQCAtMTE1LDcgKzEx
NSw3IEBAIHZvaWQgQ1NTR3JhZGllbnRWYWx1ZTo6YWRkU3RvcHMoR3JhZGllbnQqIGdyYWRpZW50
LCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBSZW5kCiAgICAgICAgIC8vIFdlIGhhdmUgdG8gcmVz
b2x2ZSBjb2xvcnMuCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3N0b3BzLnNp
emUoKTsgaSsrKSB7CiAgICAgICAgICAgICBjb25zdCBDU1NHcmFkaWVudENvbG9yU3RvcCYgc3Rv
cCA9IG1fc3RvcHNbaV07Ci0gICAgICAgICAgICBDb2xvciBjb2xvciA9IHJlbmRlcmVyLT5kb2N1
bWVudCgpLT5zdHlsZVNlbGVjdG9yKCktPmNvbG9yRnJvbVByaW1pdGl2ZVZhbHVlKHN0b3AubV9j
b2xvci5nZXQoKSk7CisgICAgICAgICAgICBDb2xvciBjb2xvciA9IHJlbmRlcmVyLT5kb2N1bWVu
dCgpLT5zdHlsZVJlc29sdmVyKCktPmNvbG9yRnJvbVByaW1pdGl2ZVZhbHVlKHN0b3AubV9jb2xv
ci5nZXQoKSk7CiAKICAgICAgICAgICAgIGZsb2F0IG9mZnNldDsKICAgICAgICAgICAgIGlmIChz
dG9wLm1fcG9zaXRpb24tPmlzUGVyY2VudGFnZSgpKQpAQCAtMTQ4LDcgKzE0OCw3IEBAIHZvaWQg
Q1NTR3JhZGllbnRWYWx1ZTo6YWRkU3RvcHMoR3JhZGllbnQqIGdyYWRpZW50LCBSZW5kZXJPYmpl
Y3QqIHJlbmRlcmVyLCBSZW5kCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1TdG9wczsg
KytpKSB7CiAgICAgICAgIGNvbnN0IENTU0dyYWRpZW50Q29sb3JTdG9wJiBzdG9wID0gbV9zdG9w
c1tpXTsKIAotICAgICAgICBzdG9wc1tpXS5jb2xvciA9IHJlbmRlcmVyLT5kb2N1bWVudCgpLT5z
dHlsZVNlbGVjdG9yKCktPmNvbG9yRnJvbVByaW1pdGl2ZVZhbHVlKHN0b3AubV9jb2xvci5nZXQo
KSk7CisgICAgICAgIHN0b3BzW2ldLmNvbG9yID0gcmVuZGVyZXItPmRvY3VtZW50KCktPnN0eWxl
UmVzb2x2ZXIoKS0+Y29sb3JGcm9tUHJpbWl0aXZlVmFsdWUoc3RvcC5tX2NvbG9yLmdldCgpKTsK
IAogICAgICAgICBpZiAoc3RvcC5tX3Bvc2l0aW9uKSB7CiAgICAgICAgICAgICBpZiAoc3RvcC5t
X3Bvc2l0aW9uLT5pc1BlcmNlbnRhZ2UoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQYWdlUnVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFnZVJ1bGUuY3BwCmlu
ZGV4IDY4ZTU3Yjc2NmUyZDkyYzMyYTQyZDM0N2JkNTQwMzk4MTljMDkxZTcuLjZiYzk0MDg3MGU1
NzM2YTY0ZWFhNjBhNmMxNmY3MTE1NWUwZmY4ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQYWdlUnVsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhZ2VSdWxl
LmNwcApAQCAtODIsNyArODIsNyBAQCB2b2lkIENTU1BhZ2VSdWxlOjpzZXRTZWxlY3RvclRleHQo
Y29uc3QgU3RyaW5nJiBzZWxlY3RvclRleHQpCiAgICAgCiAgICAgaWYgKHRoaXMtPnNlbGVjdG9y
VGV4dCgpID09IG9sZFNlbGVjdG9yVGV4dCkKICAgICAgICAgcmV0dXJuOwotICAgIGRvYy0+c3R5
bGVTZWxlY3RvckNoYW5nZWQoRGVmZXJSZWNhbGNTdHlsZSk7CisgICAgZG9jLT5zdHlsZVJlc29s
dmVyQ2hhbmdlZChEZWZlclJlY2FsY1N0eWxlKTsKIH0KIAogU3RyaW5nIENTU1BhZ2VSdWxlOjpj
c3NUZXh0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVJ1
bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlUnVsZS5jcHAKaW5kZXggZjFkNDlh
NDM3MDAyMjNmZDczY2M2YTBlYWQzOGQ4ZjFhZmQ1ZjkwMC4uNjY0OGVmZTIyZmU3N2JiMzExZTI1
NzBiYjhmNjVjODRiOWIxNTE4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0
eWxlUnVsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlUnVsZS5jcHAKQEAg
LTExMSw3ICsxMTEsNyBAQCB2b2lkIENTU1N0eWxlUnVsZTo6c2V0U2VsZWN0b3JUZXh0KGNvbnN0
IFN0cmluZyYgc2VsZWN0b3JUZXh0KQogICAgICAgICBzZWxlY3RvclRleHRDYWNoZSgpLnNldCh0
aGlzLCBnZW5lcmF0ZVNlbGVjdG9yVGV4dCgpKTsKICAgICB9CiAKLSAgICBkb2MtPnN0eWxlU2Vs
ZWN0b3JDaGFuZ2VkKERlZmVyUmVjYWxjU3R5bGUpOworICAgIGRvYy0+c3R5bGVSZXNvbHZlckNo
YW5nZWQoRGVmZXJSZWNhbGNTdHlsZSk7CiB9CiAKIFN0cmluZyBDU1NTdHlsZVJ1bGU6OmNzc1Rl
eHQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCmluZGV4IDE3ODU2N2E3
MGQyMTA5ZTdmNzJlMmZlY2Q3ZWY2ZjM5MjUxMGJmYmMuLjM5OTEyODIxN2IxZTQ5NTE2MDgxM2E1
NDMzOTEzODAwNzE5ZDBmMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHls
ZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAKQEAg
LTM4MiwxMiArMzgyLDEyIEBAIHZvaWQgU3R5bGVTaGVldEludGVybmFsOjpzdHlsZVNoZWV0Q2hh
bmdlZCgpCiAgICAgd2hpbGUgKFN0eWxlU2hlZXRJbnRlcm5hbCogcGFyZW50ID0gcm9vdFNoZWV0
LT5wYXJlbnRTdHlsZVNoZWV0KCkpCiAgICAgICAgIHJvb3RTaGVldCA9IHBhcmVudDsKIAotICAg
IC8qIEZJWE1FOiBXZSBkb24ndCBuZWVkIHRvIGRvIGV2ZXJ5dGhpbmcgdXBkYXRlU3R5bGVTZWxl
Y3RvciBkb2VzLAorICAgIC8qIEZJWE1FOiBXZSBkb24ndCBuZWVkIHRvIGRvIGV2ZXJ5dGhpbmcg
c3R5bGVSZXNvbHZlckNoYW5nZWQgZG9lcywKICAgICAgKiBiYXNpY2FsbHkgd2UganVzdCBuZWVk
IHRvIHJlY3JlYXRlIHRoZSBkb2N1bWVudCdzIHNlbGVjdG9yIHdpdGggdGhlCiAgICAgICogYWxy
ZWFkeSBleGlzdGluZyBzdHlsZSBzaGVldHMuCiAgICAgICovCiAgICAgaWYgKERvY3VtZW50KiBk
b2N1bWVudFRvVXBkYXRlID0gcm9vdFNoZWV0LT5maW5kRG9jdW1lbnQoKSkKLSAgICAgICAgZG9j
dW1lbnRUb1VwZGF0ZS0+c3R5bGVTZWxlY3RvckNoYW5nZWQoRGVmZXJSZWNhbGNTdHlsZSk7Cisg
ICAgICAgIGRvY3VtZW50VG9VcGRhdGUtPnN0eWxlUmVzb2x2ZXJDaGFuZ2VkKERlZmVyUmVjYWxj
U3R5bGUpOwogfQogCiB2b2lkIFN0eWxlU2hlZXRJbnRlcm5hbDo6dXBkYXRlQmFzZVVSTCgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV2YWx1YXRvci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV2YWx1YXRvci5jcHAKaW5kZXggOGU1N2NkOTJi
MDUyOGUzNjM5NWEyOGVjODA3YzllNmY5ZmNhN2ZkNy4uYTE4ODBlMmE4YWNiMDUwODRiYjkzOTk3
N2IxMmM1MjcyMmYxYmYwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVl
cnlFdmFsdWF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXZhbHVh
dG9yLmNwcApAQCAtMTMwLDcgKzEzMCw3IEBAIHN0YXRpYyBib29sIGFwcGx5UmVzdHJpY3RvcihN
ZWRpYVF1ZXJ5OjpSZXN0cmljdG9yIHIsIGJvb2wgdmFsdWUpCiAgICAgcmV0dXJuIHIgPT0gTWVk
aWFRdWVyeTo6Tm90ID8gIXZhbHVlIDogdmFsdWU7CiB9CiAKLWJvb2wgTWVkaWFRdWVyeUV2YWx1
YXRvcjo6ZXZhbChjb25zdCBNZWRpYVF1ZXJ5U2V0KiBxdWVyeVNldCwgU3R5bGVSZXNvbHZlciog
c3R5bGVTZWxlY3RvcikgY29uc3QKK2Jvb2wgTWVkaWFRdWVyeUV2YWx1YXRvcjo6ZXZhbChjb25z
dCBNZWRpYVF1ZXJ5U2V0KiBxdWVyeVNldCwgU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlcikg
Y29uc3QKIHsKICAgICBpZiAoIXF1ZXJ5U2V0KQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE1
NCw4ICsxNTQsOCBAQCBib29sIE1lZGlhUXVlcnlFdmFsdWF0b3I6OmV2YWwoY29uc3QgTWVkaWFR
dWVyeVNldCogcXVlcnlTZXQsIFN0eWxlUmVzb2x2ZXIqIHN0eQogICAgICAgICAgICAgc2l6ZV90
IGogPSAwOwogICAgICAgICAgICAgZm9yICg7IGogPCBleHBzLT5zaXplKCk7ICsraikgewogICAg
ICAgICAgICAgICAgIGJvb2wgZXhwclJlc3VsdCA9IGV2YWwoZXhwcy0+YXQoaikuZ2V0KCkpOwot
ICAgICAgICAgICAgICAgIGlmIChzdHlsZVNlbGVjdG9yICYmIGV4cHMtPmF0KGopLT5pc1ZpZXdw
b3J0RGVwZW5kZW50KCkpCi0gICAgICAgICAgICAgICAgICAgIHN0eWxlU2VsZWN0b3ItPmFkZFZp
ZXdwb3J0RGVwZW5kZW50TWVkaWFRdWVyeVJlc3VsdChleHBzLT5hdChqKS5nZXQoKSwgZXhwclJl
c3VsdCk7CisgICAgICAgICAgICAgICAgaWYgKHN0eWxlUmVzb2x2ZXIgJiYgZXhwcy0+YXQoaikt
PmlzVmlld3BvcnREZXBlbmRlbnQoKSkKKyAgICAgICAgICAgICAgICAgICAgc3R5bGVSZXNvbHZl
ci0+YWRkVmlld3BvcnREZXBlbmRlbnRNZWRpYVF1ZXJ5UmVzdWx0KGV4cHMtPmF0KGopLmdldCgp
LCBleHByUmVzdWx0KTsKICAgICAgICAgICAgICAgICBpZiAoIWV4cHJSZXN1bHQpCiAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL01lZGlhUXVlcnlNYXRjaGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRp
YVF1ZXJ5TWF0Y2hlci5jcHAKaW5kZXggZWVmMGI5MDkyYTI0MzU5OGNhOWYxMjUwNTE4YzY4ODAy
MWRhMmQxZC4uNjYwMTQxMWFhOGNhMzg0NmMzNWUwZTAyZjc2YzYzZWQyZjE2YTI0YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlNYXRjaGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeU1hdGNoZXIuY3BwCkBAIC04NCwxMSArODQsMTEgQEAg
UGFzc093blB0cjxNZWRpYVF1ZXJ5RXZhbHVhdG9yPiBNZWRpYVF1ZXJ5TWF0Y2hlcjo6cHJlcGFy
ZUV2YWx1YXRvcigpIGNvbnN0CiAgICAgaWYgKCFkb2N1bWVudEVsZW1lbnQpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCi0gICAgU3R5bGVSZXNvbHZlciogc3R5bGVTZWxlY3RvciA9IG1fZG9j
dW1lbnQtPnN0eWxlU2VsZWN0b3IoKTsKLSAgICBpZiAoIXN0eWxlU2VsZWN0b3IpCisgICAgU3R5
bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciA9IG1fZG9jdW1lbnQtPnN0eWxlUmVzb2x2ZXIoKTsK
KyAgICBpZiAoIXN0eWxlUmVzb2x2ZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAg
UmVmUHRyPFJlbmRlclN0eWxlPiByb290U3R5bGUgPSBzdHlsZVNlbGVjdG9yLT5zdHlsZUZvckVs
ZW1lbnQoZG9jdW1lbnRFbGVtZW50LCAwIC8qZGVmYXVsdFBhcmVudCovLCBEaXNhbGxvd1N0eWxl
U2hhcmluZywgTWF0Y2hPbmx5VXNlckFnZW50UnVsZXMpOworICAgIFJlZlB0cjxSZW5kZXJTdHls
ZT4gcm9vdFN0eWxlID0gc3R5bGVSZXNvbHZlci0+c3R5bGVGb3JFbGVtZW50KGRvY3VtZW50RWxl
bWVudCwgMCAvKmRlZmF1bHRQYXJlbnQqLywgRGlzYWxsb3dTdHlsZVNoYXJpbmcsIE1hdGNoT25s
eVVzZXJBZ2VudFJ1bGVzKTsKIAogICAgIHJldHVybiBhZG9wdFB0cihuZXcgTWVkaWFRdWVyeUV2
YWx1YXRvcihtZWRpYVR5cGUoKSwgbV9kb2N1bWVudC0+ZnJhbWUoKSwgcm9vdFN0eWxlLmdldCgp
KSk7CiB9CkBAIC0xMzcsNyArMTM3LDcgQEAgdm9pZCBNZWRpYVF1ZXJ5TWF0Y2hlcjo6cmVtb3Zl
TGlzdGVuZXIoTWVkaWFRdWVyeUxpc3RMaXN0ZW5lciogbGlzdGVuZXIsIE1lZGlhUXUKICAgICB9
CiB9CiAKLXZvaWQgTWVkaWFRdWVyeU1hdGNoZXI6OnN0eWxlU2VsZWN0b3JDaGFuZ2VkKCkKK3Zv
aWQgTWVkaWFRdWVyeU1hdGNoZXI6OnN0eWxlUmVzb2x2ZXJDaGFuZ2VkKCkKIHsKICAgICBBU1NF
UlQobV9kb2N1bWVudCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1
ZXJ5TWF0Y2hlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlNYXRjaGVyLmgKaW5k
ZXggMjY5ZTdlYmUwYjAyNjZjNWUxYjcyZTc5N2I0NDUzYWJjNTliMTgyNy4uNmVhZTM1ZjRlZjM4
OTAwYWM4NTUwOGZmOTExMWU1OTVhNTU4ODQ1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL01lZGlhUXVlcnlNYXRjaGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVl
cnlNYXRjaGVyLmgKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8TWVk
aWFRdWVyeUxpc3Q+IG1hdGNoTWVkaWEoY29uc3QgU3RyaW5nJik7CiAKICAgICB1bnNpZ25lZCBl
dmFsdWF0aW9uUm91bmQoKSBjb25zdCB7IHJldHVybiBtX2V2YWx1YXRpb25Sb3VuZDsgfQotICAg
IHZvaWQgc3R5bGVTZWxlY3RvckNoYW5nZWQoKTsKKyAgICB2b2lkIHN0eWxlUmVzb2x2ZXJDaGFu
Z2VkKCk7CiAgICAgYm9vbCBldmFsdWF0ZShjb25zdCBNZWRpYVF1ZXJ5U2V0Kik7CiAKIHByaXZh
dGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURl
Y2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVj
bGFyYXRpb24uY3BwCmluZGV4IDUzZDQ3NGNkMWQ5OWEzOTNhYzkzMjM0M2RmM2Q4NTdmMzRjNWQ4
MGUuLjUwNWQ0ZGQ4NGRlNzQzYTFmMzllNDcyYjBiYTllODY2OWI5OTQ2ZmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3Bw
CkBAIC0zNDIsNyArMzQyLDcgQEAgdm9pZCBTdHlsZVJ1bGVDU1NTdHlsZURlY2xhcmF0aW9uOjpz
ZXROZWVkc1N0eWxlUmVjYWxjKCkKIHsKICAgICBpZiAoQ1NTU3R5bGVTaGVldCogc3R5bGVTaGVl
dCA9IHBhcmVudFN0eWxlU2hlZXQoKSkgewogICAgICAgICBpZiAoRG9jdW1lbnQqIGRvY3VtZW50
ID0gc3R5bGVTaGVldC0+ZmluZERvY3VtZW50KCkpCi0gICAgICAgICAgICBkb2N1bWVudC0+c3R5
bGVTZWxlY3RvckNoYW5nZWQoRGVmZXJSZWNhbGNTdHlsZSk7CisgICAgICAgICAgICBkb2N1bWVu
dC0+c3R5bGVSZXNvbHZlckNoYW5nZWQoRGVmZXJSZWNhbGNTdHlsZSk7CiAgICAgfQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXIuY3BwCmluZGV4IGU0MjMxZjcxNzZjY2I4ZWFhNTk3OGJh
YjZhNDRmMjEyZjMyNzMwMjIuLjU3NDE2YWY3NGI2MTRmOTgzNWU0ZjVjOTE0ZWQ1NjM2MGQ5MDNm
ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXIuY3BwCkBAIC01Myw3ICs1Myw3IEBAIGNs
YXNzIEFwcGx5UHJvcGVydHlFeHBhbmRpbmcgewogcHVibGljOgogCiAgICAgdGVtcGxhdGUgPENT
U1Byb3BlcnR5SUQgaWQ+Ci0gICAgc3RhdGljIGlubGluZSB2b2lkIGFwcGx5SW5oZXJpdFZhbHVl
KFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yKQorICAgIHN0YXRpYyBpbmxpbmUgdm9pZCBhcHBseUlu
aGVyaXRWYWx1ZShTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyKQogICAgIHsKICAgICAgICAg
aWYgKGlkID09IENTU1Byb3BlcnR5SW52YWxpZCkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTYx
LDIwICs2MSwyMCBAQCBwdWJsaWM6CiAgICAgICAgIGNvbnN0IFN0eWxlQnVpbGRlciYgdGFibGUg
PSBTdHlsZUJ1aWxkZXI6OnNoYXJlZFN0eWxlQnVpbGRlcigpOwogICAgICAgICBjb25zdCBQcm9w
ZXJ0eUhhbmRsZXImIGhhbmRsZXIgPSB0YWJsZS5wcm9wZXJ0eUhhbmRsZXIoaWQpOwogICAgICAg
ICBpZiAoaGFuZGxlci5pc1ZhbGlkKCkpCi0gICAgICAgICAgICBoYW5kbGVyLmFwcGx5SW5oZXJp
dFZhbHVlKHNlbGVjdG9yKTsKKyAgICAgICAgICAgIGhhbmRsZXIuYXBwbHlJbmhlcml0VmFsdWUo
c3R5bGVSZXNvbHZlcik7CiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQgYXBwbHlJbmhlcml0VmFs
dWUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IpCisgICAgc3RhdGljIHZvaWQgYXBwbHlJbmhlcml0
VmFsdWUoU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlcikKICAgICB7Ci0gICAgICAgIGFwcGx5
SW5oZXJpdFZhbHVlPG9uZT4oc2VsZWN0b3IpOwotICAgICAgICBhcHBseUluaGVyaXRWYWx1ZTx0
d28+KHNlbGVjdG9yKTsKLSAgICAgICAgYXBwbHlJbmhlcml0VmFsdWU8dGhyZWU+KHNlbGVjdG9y
KTsKLSAgICAgICAgYXBwbHlJbmhlcml0VmFsdWU8Zm91cj4oc2VsZWN0b3IpOwotICAgICAgICBh
cHBseUluaGVyaXRWYWx1ZTxmaXZlPihzZWxlY3Rvcik7CisgICAgICAgIGFwcGx5SW5oZXJpdFZh
bHVlPG9uZT4oc3R5bGVSZXNvbHZlcik7CisgICAgICAgIGFwcGx5SW5oZXJpdFZhbHVlPHR3bz4o
c3R5bGVSZXNvbHZlcik7CisgICAgICAgIGFwcGx5SW5oZXJpdFZhbHVlPHRocmVlPihzdHlsZVJl
c29sdmVyKTsKKyAgICAgICAgYXBwbHlJbmhlcml0VmFsdWU8Zm91cj4oc3R5bGVSZXNvbHZlcik7
CisgICAgICAgIGFwcGx5SW5oZXJpdFZhbHVlPGZpdmU+KHN0eWxlUmVzb2x2ZXIpOwogICAgIH0K
IAogICAgIHRlbXBsYXRlIDxDU1NQcm9wZXJ0eUlEIGlkPgotICAgIHN0YXRpYyBpbmxpbmUgdm9p
ZCBhcHBseUluaXRpYWxWYWx1ZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvcikKKyAgICBzdGF0aWMg
aW5saW5lIHZvaWQgYXBwbHlJbml0aWFsVmFsdWUoU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZl
cikKICAgICB7CiAgICAgICAgIGlmIChpZCA9PSBDU1NQcm9wZXJ0eUludmFsaWQpCiAgICAgICAg
ICAgICByZXR1cm47CkBAIC04MiwyMCArODIsMjAgQEAgcHVibGljOgogICAgICAgICBjb25zdCBT
dHlsZUJ1aWxkZXImIHRhYmxlID0gU3R5bGVCdWlsZGVyOjpzaGFyZWRTdHlsZUJ1aWxkZXIoKTsK
ICAgICAgICAgY29uc3QgUHJvcGVydHlIYW5kbGVyJiBoYW5kbGVyID0gdGFibGUucHJvcGVydHlI
YW5kbGVyKGlkKTsKICAgICAgICAgaWYgKGhhbmRsZXIuaXNWYWxpZCgpKQotICAgICAgICAgICAg
aGFuZGxlci5hcHBseUluaXRpYWxWYWx1ZShzZWxlY3Rvcik7CisgICAgICAgICAgICBoYW5kbGVy
LmFwcGx5SW5pdGlhbFZhbHVlKHN0eWxlUmVzb2x2ZXIpOwogICAgIH0KIAotICAgIHN0YXRpYyB2
b2lkIGFwcGx5SW5pdGlhbFZhbHVlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yKQorICAgIHN0YXRp
YyB2b2lkIGFwcGx5SW5pdGlhbFZhbHVlKFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIpCiAg
ICAgewotICAgICAgICBhcHBseUluaXRpYWxWYWx1ZTxvbmU+KHNlbGVjdG9yKTsKLSAgICAgICAg
YXBwbHlJbml0aWFsVmFsdWU8dHdvPihzZWxlY3Rvcik7Ci0gICAgICAgIGFwcGx5SW5pdGlhbFZh
bHVlPHRocmVlPihzZWxlY3Rvcik7Ci0gICAgICAgIGFwcGx5SW5pdGlhbFZhbHVlPGZvdXI+KHNl
bGVjdG9yKTsKLSAgICAgICAgYXBwbHlJbml0aWFsVmFsdWU8Zml2ZT4oc2VsZWN0b3IpOworICAg
ICAgICBhcHBseUluaXRpYWxWYWx1ZTxvbmU+KHN0eWxlUmVzb2x2ZXIpOworICAgICAgICBhcHBs
eUluaXRpYWxWYWx1ZTx0d28+KHN0eWxlUmVzb2x2ZXIpOworICAgICAgICBhcHBseUluaXRpYWxW
YWx1ZTx0aHJlZT4oc3R5bGVSZXNvbHZlcik7CisgICAgICAgIGFwcGx5SW5pdGlhbFZhbHVlPGZv
dXI+KHN0eWxlUmVzb2x2ZXIpOworICAgICAgICBhcHBseUluaXRpYWxWYWx1ZTxmaXZlPihzdHls
ZVJlc29sdmVyKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZSA8Q1NTUHJvcGVydHlJRCBpZD4KLSAg
ICBzdGF0aWMgaW5saW5lIHZvaWQgYXBwbHlWYWx1ZShTdHlsZVJlc29sdmVyKiBzZWxlY3Rvciwg
Q1NTVmFsdWUqIHZhbHVlKQorICAgIHN0YXRpYyBpbmxpbmUgdm9pZCBhcHBseVZhbHVlKFN0eWxl
UmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlKiB2YWx1ZSkKICAgICB7CiAgICAgICAg
IGlmIChpZCA9PSBDU1NQcm9wZXJ0eUludmFsaWQpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0x
MDMsMTkgKzEwMywxOSBAQCBwdWJsaWM6CiAgICAgICAgIGNvbnN0IFN0eWxlQnVpbGRlciYgdGFi
bGUgPSBTdHlsZUJ1aWxkZXI6OnNoYXJlZFN0eWxlQnVpbGRlcigpOwogICAgICAgICBjb25zdCBQ
cm9wZXJ0eUhhbmRsZXImIGhhbmRsZXIgPSB0YWJsZS5wcm9wZXJ0eUhhbmRsZXIoaWQpOwogICAg
ICAgICBpZiAoaGFuZGxlci5pc1ZhbGlkKCkpCi0gICAgICAgICAgICBoYW5kbGVyLmFwcGx5VmFs
dWUoc2VsZWN0b3IsIHZhbHVlKTsKKyAgICAgICAgICAgIGhhbmRsZXIuYXBwbHlWYWx1ZShzdHls
ZVJlc29sdmVyLCB2YWx1ZSk7CiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZShT
dHlsZVJlc29sdmVyKiBzZWxlY3RvciwgQ1NTVmFsdWUqIHZhbHVlKQorICAgIHN0YXRpYyB2b2lk
IGFwcGx5VmFsdWUoU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUqIHZhbHVl
KQogICAgIHsKICAgICAgICAgaWYgKCFleHBhbmRWYWx1ZSkKICAgICAgICAgICAgIHJldHVybjsK
IAotICAgICAgICBhcHBseVZhbHVlPG9uZT4oc2VsZWN0b3IsIHZhbHVlKTsKLSAgICAgICAgYXBw
bHlWYWx1ZTx0d28+KHNlbGVjdG9yLCB2YWx1ZSk7Ci0gICAgICAgIGFwcGx5VmFsdWU8dGhyZWU+
KHNlbGVjdG9yLCB2YWx1ZSk7Ci0gICAgICAgIGFwcGx5VmFsdWU8Zm91cj4oc2VsZWN0b3IsIHZh
bHVlKTsKLSAgICAgICAgYXBwbHlWYWx1ZTxmaXZlPihzZWxlY3RvciwgdmFsdWUpOworICAgICAg
ICBhcHBseVZhbHVlPG9uZT4oc3R5bGVSZXNvbHZlciwgdmFsdWUpOworICAgICAgICBhcHBseVZh
bHVlPHR3bz4oc3R5bGVSZXNvbHZlciwgdmFsdWUpOworICAgICAgICBhcHBseVZhbHVlPHRocmVl
PihzdHlsZVJlc29sdmVyLCB2YWx1ZSk7CisgICAgICAgIGFwcGx5VmFsdWU8Zm91cj4oc3R5bGVS
ZXNvbHZlciwgdmFsdWUpOworICAgICAgICBhcHBseVZhbHVlPGZpdmU+KHN0eWxlUmVzb2x2ZXIs
IHZhbHVlKTsKICAgICB9CiAgICAgc3RhdGljIFByb3BlcnR5SGFuZGxlciBjcmVhdGVIYW5kbGVy
KCkgeyByZXR1cm4gUHJvcGVydHlIYW5kbGVyKCZhcHBseUluaGVyaXRWYWx1ZSwgJmFwcGx5SW5p
dGlhbFZhbHVlLCAmYXBwbHlWYWx1ZSk7IH0KIH07CkBAIC0xMjYsOCArMTI2LDggQEAgcHVibGlj
OgogICAgIHN0YXRpYyB2b2lkIHNldFZhbHVlKFJlbmRlclN0eWxlKiBzdHlsZSwgU2V0dGVyVHlw
ZSB2YWx1ZSkgeyAoc3R5bGUtPipzZXR0ZXJGdW5jdGlvbikodmFsdWUpOyB9CiAgICAgc3RhdGlj
IEdldHRlclR5cGUgdmFsdWUoUmVuZGVyU3R5bGUqIHN0eWxlKSB7IHJldHVybiAoc3R5bGUtPipn
ZXR0ZXJGdW5jdGlvbikoKTsgfQogICAgIHN0YXRpYyBJbml0aWFsVHlwZSBpbml0aWFsKCkgeyBy
ZXR1cm4gKCppbml0aWFsRnVuY3Rpb24pKCk7IH0KLSAgICBzdGF0aWMgdm9pZCBhcHBseUluaGVy
aXRWYWx1ZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvcikgeyBzZXRWYWx1ZShzZWxlY3Rvci0+c3R5
bGUoKSwgdmFsdWUoc2VsZWN0b3ItPnBhcmVudFN0eWxlKCkpKTsgfQotICAgIHN0YXRpYyB2b2lk
IGFwcGx5SW5pdGlhbFZhbHVlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yKSB7IHNldFZhbHVlKHNl
bGVjdG9yLT5zdHlsZSgpLCBpbml0aWFsKCkpOyB9CisgICAgc3RhdGljIHZvaWQgYXBwbHlJbmhl
cml0VmFsdWUoU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlcikgeyBzZXRWYWx1ZShzdHlsZVJl
c29sdmVyLT5zdHlsZSgpLCB2YWx1ZShzdHlsZVJlc29sdmVyLT5wYXJlbnRTdHlsZSgpKSk7IH0K
KyAgICBzdGF0aWMgdm9pZCBhcHBseUluaXRpYWxWYWx1ZShTdHlsZVJlc29sdmVyKiBzdHlsZVJl
c29sdmVyKSB7IHNldFZhbHVlKHN0eWxlUmVzb2x2ZXItPnN0eWxlKCksIGluaXRpYWwoKSk7IH0K
ICAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlKFN0eWxlUmVzb2x2ZXIqLCBDU1NWYWx1ZSopIHsg
fQogICAgIHN0YXRpYyBQcm9wZXJ0eUhhbmRsZXIgY3JlYXRlSGFuZGxlcigpIHsgcmV0dXJuIFBy
b3BlcnR5SGFuZGxlcigmYXBwbHlJbmhlcml0VmFsdWUsICZhcHBseUluaXRpYWxWYWx1ZSwgJmFw
cGx5VmFsdWUpOyB9CiB9OwpAQCAtMTM2LDEwICsxMzYsMTAgQEAgdGVtcGxhdGUgPHR5cGVuYW1l
IEdldHRlclR5cGUsIEdldHRlclR5cGUgKFJlbmRlclN0eWxlOjoqZ2V0dGVyRnVuY3Rpb24pKCkg
Y29uc3QKIGNsYXNzIEFwcGx5UHJvcGVydHlEZWZhdWx0IHsKIHB1YmxpYzoKICAgICBzdGF0aWMg
dm9pZCBzZXRWYWx1ZShSZW5kZXJTdHlsZSogc3R5bGUsIFNldHRlclR5cGUgdmFsdWUpIHsgKHN0
eWxlLT4qc2V0dGVyRnVuY3Rpb24pKHZhbHVlKTsgfQotICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFs
dWUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIENTU1ZhbHVlKiB2YWx1ZSkKKyAgICBzdGF0aWMg
dm9pZCBhcHBseVZhbHVlKFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlKiB2
YWx1ZSkKICAgICB7CiAgICAgICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQotICAg
ICAgICAgICAgc2V0VmFsdWUoc2VsZWN0b3ItPnN0eWxlKCksICpzdGF0aWNfY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZSo+KHZhbHVlKSk7CisgICAgICAgICAgICBzZXRWYWx1ZShzdHlsZVJlc29sdmVy
LT5zdHlsZSgpLCAqc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSkpOwogICAg
IH0KICAgICBzdGF0aWMgUHJvcGVydHlIYW5kbGVyIGNyZWF0ZUhhbmRsZXIoKQogICAgIHsKQEAg
LTE1MiwxNiArMTUyLDE2IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBOdW1iZXJUeXBlLCBOdW1iZXJU
eXBlIChSZW5kZXJTdHlsZTo6KmdldHRlckZ1bmN0aW9uKSgpIGNvbnN0CiBjbGFzcyBBcHBseVBy
b3BlcnR5TnVtYmVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBzZXRWYWx1ZShSZW5kZXJT
dHlsZSogc3R5bGUsIE51bWJlclR5cGUgdmFsdWUpIHsgKHN0eWxlLT4qc2V0dGVyRnVuY3Rpb24p
KHZhbHVlKTsgfQotICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUoU3R5bGVSZXNvbHZlciogc2Vs
ZWN0b3IsIENTU1ZhbHVlKiB2YWx1ZSkKKyAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlKFN0eWxl
UmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlKiB2YWx1ZSkKICAgICB7CiAgICAgICAg
IGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgICAgIHJldHVybjsKIAog
ICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5n
ZXRJZGVudCgpID09IGlkTWFwc1RvTWludXNPbmUpCi0gICAgICAgICAgICBzZXRWYWx1ZShzZWxl
Y3Rvci0+c3R5bGUoKSwgLTEpOworICAgICAgICAgICAgc2V0VmFsdWUoc3R5bGVSZXNvbHZlci0+
c3R5bGUoKSwgLTEpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBzZXRWYWx1ZShzZWxlY3Rv
ci0+c3R5bGUoKSwgcHJpbWl0aXZlVmFsdWUtPmdldFZhbHVlPE51bWJlclR5cGU+KENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfTlVNQkVSKSk7CisgICAgICAgICAgICBzZXRWYWx1ZShzdHlsZVJlc29s
dmVyLT5zdHlsZSgpLCBwcmltaXRpdmVWYWx1ZS0+Z2V0VmFsdWU8TnVtYmVyVHlwZT4oQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpKTsKICAgICB9CiAgICAgc3RhdGljIFByb3BlcnR5SGFu
ZGxlciBjcmVhdGVIYW5kbGVyKCkKICAgICB7CkBAIC0xNzMsNyArMTczLDcgQEAgcHVibGljOgog
dGVtcGxhdGUgPFN0eWxlSW1hZ2UqIChSZW5kZXJTdHlsZTo6KmdldHRlckZ1bmN0aW9uKSgpIGNv
bnN0LCB2b2lkIChSZW5kZXJTdHlsZTo6KnNldHRlckZ1bmN0aW9uKShQYXNzUmVmUHRyPFN0eWxl
SW1hZ2U+KSwgU3R5bGVJbWFnZSogKCppbml0aWFsRnVuY3Rpb24pKCksIENTU1Byb3BlcnR5SUQg
cHJvcGVydHk+CiBjbGFzcyBBcHBseVByb3BlcnR5U3R5bGVJbWFnZSB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIHZvaWQgYXBwbHlWYWx1ZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvciwgQ1NTVmFsdWUq
IHZhbHVlKSB7IChzZWxlY3Rvci0+c3R5bGUoKS0+KnNldHRlckZ1bmN0aW9uKShzZWxlY3Rvci0+
c3R5bGVJbWFnZShwcm9wZXJ0eSwgdmFsdWUpKTsgfQorICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFs
dWUoU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUqIHZhbHVlKSB7IChzdHls
ZVJlc29sdmVyLT5zdHlsZSgpLT4qc2V0dGVyRnVuY3Rpb24pKHN0eWxlUmVzb2x2ZXItPnN0eWxl
SW1hZ2UocHJvcGVydHksIHZhbHVlKSk7IH0KICAgICBzdGF0aWMgUHJvcGVydHlIYW5kbGVyIGNy
ZWF0ZUhhbmRsZXIoKQogICAgIHsKICAgICAgICAgUHJvcGVydHlIYW5kbGVyIGhhbmRsZXIgPSBB
cHBseVByb3BlcnR5RGVmYXVsdEJhc2U8U3R5bGVJbWFnZSosIGdldHRlckZ1bmN0aW9uLCBQYXNz
UmVmUHRyPFN0eWxlSW1hZ2U+LCBzZXR0ZXJGdW5jdGlvbiwgU3R5bGVJbWFnZSosIGluaXRpYWxG
dW5jdGlvbj46OmNyZWF0ZUhhbmRsZXIoKTsKQEAgLTE5MCwyOCArMTkwLDI4IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgYm9vbCBoYXNBdXRvKFJlbmRlclN0eWxlKiBzdHlsZSkgeyByZXR1cm4gKHN0
eWxlLT4qaGFzQXV0b0Z1bmN0aW9uKSgpOyB9CiAgICAgc3RhdGljIHZvaWQgc2V0QXV0byhSZW5k
ZXJTdHlsZSogc3R5bGUpIHsgKHN0eWxlLT4qc2V0QXV0b0Z1bmN0aW9uKSgpOyB9CiAKLSAgICBz
dGF0aWMgdm9pZCBhcHBseUluaGVyaXRWYWx1ZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvcikKKyAg
ICBzdGF0aWMgdm9pZCBhcHBseUluaGVyaXRWYWx1ZShTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29s
dmVyKQogICAgIHsKLSAgICAgICAgaWYgKGhhc0F1dG8oc2VsZWN0b3ItPnBhcmVudFN0eWxlKCkp
KQotICAgICAgICAgICAgc2V0QXV0byhzZWxlY3Rvci0+c3R5bGUoKSk7CisgICAgICAgIGlmICho
YXNBdXRvKHN0eWxlUmVzb2x2ZXItPnBhcmVudFN0eWxlKCkpKQorICAgICAgICAgICAgc2V0QXV0
byhzdHlsZVJlc29sdmVyLT5zdHlsZSgpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgc2V0
VmFsdWUoc2VsZWN0b3ItPnN0eWxlKCksIHZhbHVlKHNlbGVjdG9yLT5wYXJlbnRTdHlsZSgpKSk7
CisgICAgICAgICAgICBzZXRWYWx1ZShzdHlsZVJlc29sdmVyLT5zdHlsZSgpLCB2YWx1ZShzdHls
ZVJlc29sdmVyLT5wYXJlbnRTdHlsZSgpKSk7CiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQgYXBw
bHlJbml0aWFsVmFsdWUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IpIHsgc2V0QXV0byhzZWxlY3Rv
ci0+c3R5bGUoKSk7IH0KKyAgICBzdGF0aWMgdm9pZCBhcHBseUluaXRpYWxWYWx1ZShTdHlsZVJl
c29sdmVyKiBzdHlsZVJlc29sdmVyKSB7IHNldEF1dG8oc3R5bGVSZXNvbHZlci0+c3R5bGUoKSk7
IH0KIAotICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3Is
IENTU1ZhbHVlKiB2YWx1ZSkKKyAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlKFN0eWxlUmVzb2x2
ZXIqIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlKiB2YWx1ZSkKICAgICB7CiAgICAgICAgIGlmICgh
dmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAg
ICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZSo+KHZhbHVlKTsKICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVu
dCgpID09IGF1dG9JZGVudGl0eSkKLSAgICAgICAgICAgIHNldEF1dG8oc2VsZWN0b3ItPnN0eWxl
KCkpOworICAgICAgICAgICAgc2V0QXV0byhzdHlsZVJlc29sdmVyLT5zdHlsZSgpKTsKICAgICAg
ICAgZWxzZSBpZiAodmFsdWVUeXBlID09IE51bWJlcikKLSAgICAgICAgICAgIHNldFZhbHVlKHNl
bGVjdG9yLT5zdHlsZSgpLCAqcHJpbWl0aXZlVmFsdWUpOworICAgICAgICAgICAgc2V0VmFsdWUo
c3R5bGVSZXNvbHZlci0+c3R5bGUoKSwgKnByaW1pdGl2ZVZhbHVlKTsKICAgICAgICAgZWxzZSBp
ZiAodmFsdWVUeXBlID09IENvbXB1dGVMZW5ndGgpCi0gICAgICAgICAgICBzZXRWYWx1ZShzZWxl
Y3Rvci0+c3R5bGUoKSwgcHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGg8VD4oc2VsZWN0b3It
PnN0eWxlKCksIHNlbGVjdG9yLT5yb290RWxlbWVudFN0eWxlKCksIHNlbGVjdG9yLT5zdHlsZSgp
LT5lZmZlY3RpdmVab29tKCkpKTsKKyAgICAgICAgICAgIHNldFZhbHVlKHN0eWxlUmVzb2x2ZXIt
PnN0eWxlKCksIHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3RoPFQ+KHN0eWxlUmVzb2x2ZXIt
PnN0eWxlKCksIHN0eWxlUmVzb2x2ZXItPnJvb3RFbGVtZW50U3R5bGUoKSwgc3R5bGVSZXNvbHZl
ci0+c3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpKSk7CiAgICAgfQogCiAgICAgc3RhdGljIFByb3Bl
cnR5SGFuZGxlciBjcmVhdGVIYW5kbGVyKCkgeyByZXR1cm4gUHJvcGVydHlIYW5kbGVyKCZhcHBs
eUluaGVyaXRWYWx1ZSwgJmFwcGx5SW5pdGlhbFZhbHVlLCAmYXBwbHlWYWx1ZSk7IH0KQEAgLTIx
OSwyNyArMjE5LDI3IEBAIHB1YmxpYzoKIAogY2xhc3MgQXBwbHlQcm9wZXJ0eUNsaXAgewogcHJp
dmF0ZToKLSAgICBzdGF0aWMgTGVuZ3RoIGNvbnZlcnRUb0xlbmd0aChTdHlsZVJlc29sdmVyKiBz
ZWxlY3RvciwgQ1NTUHJpbWl0aXZlVmFsdWUqIHZhbHVlKQorICAgIHN0YXRpYyBMZW5ndGggY29u
dmVydFRvTGVuZ3RoKFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIsIENTU1ByaW1pdGl2ZVZh
bHVlKiB2YWx1ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiB2YWx1ZS0+Y29udmVydFRvTGVuZ3Ro
PEZpeGVkSW50ZWdlckNvbnZlcnNpb24gfCBQZXJjZW50Q29udmVyc2lvbiB8IEZyYWN0aW9uQ29u
dmVyc2lvbiB8IEF1dG9Db252ZXJzaW9uPihzZWxlY3Rvci0+c3R5bGUoKSwgc2VsZWN0b3ItPnJv
b3RFbGVtZW50U3R5bGUoKSwgc2VsZWN0b3ItPnN0eWxlKCktPmVmZmVjdGl2ZVpvb20oKSk7Cisg
ICAgICAgIHJldHVybiB2YWx1ZS0+Y29udmVydFRvTGVuZ3RoPEZpeGVkSW50ZWdlckNvbnZlcnNp
b24gfCBQZXJjZW50Q29udmVyc2lvbiB8IEZyYWN0aW9uQ29udmVyc2lvbiB8IEF1dG9Db252ZXJz
aW9uPihzdHlsZVJlc29sdmVyLT5zdHlsZSgpLCBzdHlsZVJlc29sdmVyLT5yb290RWxlbWVudFN0
eWxlKCksIHN0eWxlUmVzb2x2ZXItPnN0eWxlKCktPmVmZmVjdGl2ZVpvb20oKSk7CiAgICAgfQog
cHVibGljOgotICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5oZXJpdFZhbHVlKFN0eWxlUmVzb2x2ZXIq
IHNlbGVjdG9yKQorICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5oZXJpdFZhbHVlKFN0eWxlUmVzb2x2
ZXIqIHN0eWxlUmVzb2x2ZXIpCiAgICAgewotICAgICAgICBSZW5kZXJTdHlsZSogcGFyZW50U3R5
bGUgPSBzZWxlY3Rvci0+cGFyZW50U3R5bGUoKTsKKyAgICAgICAgUmVuZGVyU3R5bGUqIHBhcmVu
dFN0eWxlID0gc3R5bGVSZXNvbHZlci0+cGFyZW50U3R5bGUoKTsKICAgICAgICAgaWYgKCFwYXJl
bnRTdHlsZS0+aGFzQ2xpcCgpKQotICAgICAgICAgICAgcmV0dXJuIGFwcGx5SW5pdGlhbFZhbHVl
KHNlbGVjdG9yKTsKLSAgICAgICAgc2VsZWN0b3ItPnN0eWxlKCktPnNldENsaXAocGFyZW50U3R5
bGUtPmNsaXBUb3AoKSwgcGFyZW50U3R5bGUtPmNsaXBSaWdodCgpLCBwYXJlbnRTdHlsZS0+Y2xp
cEJvdHRvbSgpLCBwYXJlbnRTdHlsZS0+Y2xpcExlZnQoKSk7Ci0gICAgICAgIHNlbGVjdG9yLT5z
dHlsZSgpLT5zZXRIYXNDbGlwKHRydWUpOworICAgICAgICAgICAgcmV0dXJuIGFwcGx5SW5pdGlh
bFZhbHVlKHN0eWxlUmVzb2x2ZXIpOworICAgICAgICBzdHlsZVJlc29sdmVyLT5zdHlsZSgpLT5z
ZXRDbGlwKHBhcmVudFN0eWxlLT5jbGlwVG9wKCksIHBhcmVudFN0eWxlLT5jbGlwUmlnaHQoKSwg
cGFyZW50U3R5bGUtPmNsaXBCb3R0b20oKSwgcGFyZW50U3R5bGUtPmNsaXBMZWZ0KCkpOworICAg
ICAgICBzdHlsZVJlc29sdmVyLT5zdHlsZSgpLT5zZXRIYXNDbGlwKHRydWUpOwogICAgIH0KIAot
ICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5pdGlhbFZhbHVlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9y
KQorICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5pdGlhbFZhbHVlKFN0eWxlUmVzb2x2ZXIqIHN0eWxl
UmVzb2x2ZXIpCiAgICAgewotICAgICAgICBzZWxlY3Rvci0+c3R5bGUoKS0+c2V0Q2xpcChMZW5n
dGgoKSwgTGVuZ3RoKCksIExlbmd0aCgpLCBMZW5ndGgoKSk7Ci0gICAgICAgIHNlbGVjdG9yLT5z
dHlsZSgpLT5zZXRIYXNDbGlwKGZhbHNlKTsKKyAgICAgICAgc3R5bGVSZXNvbHZlci0+c3R5bGUo
KS0+c2V0Q2xpcChMZW5ndGgoKSwgTGVuZ3RoKCksIExlbmd0aCgpLCBMZW5ndGgoKSk7CisgICAg
ICAgIHN0eWxlUmVzb2x2ZXItPnN0eWxlKCktPnNldEhhc0NsaXAoZmFsc2UpOwogICAgIH0KIAot
ICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIENTU1Zh
bHVlKiB2YWx1ZSkKKyAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlKFN0eWxlUmVzb2x2ZXIqIHN0
eWxlUmVzb2x2ZXIsIENTU1ZhbHVlKiB2YWx1ZSkKICAgICB7CiAgICAgICAgIGlmICghdmFsdWUt
PmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTI0NywxNSArMjQ3
LDE1IEBAIHB1YmxpYzoKICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVl
ID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CiAKICAgICAgICAgaWYg
KFJlY3QqIHJlY3QgPSBwcmltaXRpdmVWYWx1ZS0+Z2V0UmVjdFZhbHVlKCkpIHsKLSAgICAgICAg
ICAgIExlbmd0aCB0b3AgPSBjb252ZXJ0VG9MZW5ndGgoc2VsZWN0b3IsIHJlY3QtPnRvcCgpKTsK
LSAgICAgICAgICAgIExlbmd0aCByaWdodCA9IGNvbnZlcnRUb0xlbmd0aChzZWxlY3RvciwgcmVj
dC0+cmlnaHQoKSk7Ci0gICAgICAgICAgICBMZW5ndGggYm90dG9tID0gY29udmVydFRvTGVuZ3Ro
KHNlbGVjdG9yLCByZWN0LT5ib3R0b20oKSk7Ci0gICAgICAgICAgICBMZW5ndGggbGVmdCA9IGNv
bnZlcnRUb0xlbmd0aChzZWxlY3RvciwgcmVjdC0+bGVmdCgpKTsKLSAgICAgICAgICAgIHNlbGVj
dG9yLT5zdHlsZSgpLT5zZXRDbGlwKHRvcCwgcmlnaHQsIGJvdHRvbSwgbGVmdCk7Ci0gICAgICAg
ICAgICBzZWxlY3Rvci0+c3R5bGUoKS0+c2V0SGFzQ2xpcCh0cnVlKTsKKyAgICAgICAgICAgIExl
bmd0aCB0b3AgPSBjb252ZXJ0VG9MZW5ndGgoc3R5bGVSZXNvbHZlciwgcmVjdC0+dG9wKCkpOwor
ICAgICAgICAgICAgTGVuZ3RoIHJpZ2h0ID0gY29udmVydFRvTGVuZ3RoKHN0eWxlUmVzb2x2ZXIs
IHJlY3QtPnJpZ2h0KCkpOworICAgICAgICAgICAgTGVuZ3RoIGJvdHRvbSA9IGNvbnZlcnRUb0xl
bmd0aChzdHlsZVJlc29sdmVyLCByZWN0LT5ib3R0b20oKSk7CisgICAgICAgICAgICBMZW5ndGgg
bGVmdCA9IGNvbnZlcnRUb0xlbmd0aChzdHlsZVJlc29sdmVyLCByZWN0LT5sZWZ0KCkpOworICAg
ICAgICAgICAgc3R5bGVSZXNvbHZlci0+c3R5bGUoKS0+c2V0Q2xpcCh0b3AsIHJpZ2h0LCBib3R0
b20sIGxlZnQpOworICAgICAgICAgICAgc3R5bGVSZXNvbHZlci0+c3R5bGUoKS0+c2V0SGFzQ2xp
cCh0cnVlKTsKICAgICAgICAgfSBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9
PSBDU1NWYWx1ZUF1dG8pIHsKLSAgICAgICAgICAgIHNlbGVjdG9yLT5zdHlsZSgpLT5zZXRDbGlw
KExlbmd0aCgpLCBMZW5ndGgoKSwgTGVuZ3RoKCksIExlbmd0aCgpKTsKLSAgICAgICAgICAgIHNl
bGVjdG9yLT5zdHlsZSgpLT5zZXRIYXNDbGlwKHRydWUpOworICAgICAgICAgICAgc3R5bGVSZXNv
bHZlci0+c3R5bGUoKS0+c2V0Q2xpcChMZW5ndGgoKSwgTGVuZ3RoKCksIExlbmd0aCgpLCBMZW5n
dGgoKSk7CisgICAgICAgICAgICBzdHlsZVJlc29sdmVyLT5zdHlsZSgpLT5zZXRIYXNDbGlwKHRy
dWUpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0yNzMsNDAgKzI3Myw0MCBAQCB0ZW1wbGF0ZSA8
Q29sb3JJbmhlcml0IGluaGVyaXRDb2xvckZyb21QYXJlbnQsCiAgICAgICAgICAgQ29sb3IgKCpp
bml0aWFsRnVuY3Rpb24pKCkgPSAmZGVmYXVsdEluaXRpYWxDb2xvcj4KIGNsYXNzIEFwcGx5UHJv
cGVydHlDb2xvciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHZvaWQgYXBwbHlJbmhlcml0VmFsdWUo
U3R5bGVSZXNvbHZlciogc2VsZWN0b3IpCisgICAgc3RhdGljIHZvaWQgYXBwbHlJbmhlcml0VmFs
dWUoU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlcikKICAgICB7CiAgICAgICAgIC8vIFZpc2l0
ZWQgbGluayBzdHlsZSBjYW4gbmV2ZXIgZXhwbGljaXRseSBpbmhlcml0IGZyb20gcGFyZW50IHZp
c2l0ZWQgbGluayBzdHlsZSBzbyBubyBzZXBhcmF0ZSBnZXR0ZXJzIGFyZSBuZWVkZWQuCi0gICAg
ICAgIENvbG9yIGNvbG9yID0gKHNlbGVjdG9yLT5wYXJlbnRTdHlsZSgpLT4qZ2V0dGVyRnVuY3Rp
b24pKCk7Ci0gICAgICAgIGFwcGx5Q29sb3JWYWx1ZShzZWxlY3RvciwgY29sb3IuaXNWYWxpZCgp
ID8gY29sb3IgOiAoc2VsZWN0b3ItPnBhcmVudFN0eWxlKCktPipkZWZhdWx0RnVuY3Rpb24pKCkp
OworICAgICAgICBDb2xvciBjb2xvciA9IChzdHlsZVJlc29sdmVyLT5wYXJlbnRTdHlsZSgpLT4q
Z2V0dGVyRnVuY3Rpb24pKCk7CisgICAgICAgIGFwcGx5Q29sb3JWYWx1ZShzdHlsZVJlc29sdmVy
LCBjb2xvci5pc1ZhbGlkKCkgPyBjb2xvciA6IChzdHlsZVJlc29sdmVyLT5wYXJlbnRTdHlsZSgp
LT4qZGVmYXVsdEZ1bmN0aW9uKSgpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCBhcHBseUlu
aXRpYWxWYWx1ZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvcikKKyAgICBzdGF0aWMgdm9pZCBhcHBs
eUluaXRpYWxWYWx1ZShTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyKQogICAgIHsKLSAgICAg
ICAgYXBwbHlDb2xvclZhbHVlKHNlbGVjdG9yLCBpbml0aWFsRnVuY3Rpb24oKSk7CisgICAgICAg
IGFwcGx5Q29sb3JWYWx1ZShzdHlsZVJlc29sdmVyLCBpbml0aWFsRnVuY3Rpb24oKSk7CiAgICAg
fQogCi0gICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZShTdHlsZVJlc29sdmVyKiBzZWxlY3Rvciwg
Q1NTVmFsdWUqIHZhbHVlKQorICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUoU3R5bGVSZXNvbHZl
ciogc3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUqIHZhbHVlKQogICAgIHsKICAgICAgICAgaWYgKCF2
YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAg
IENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlKj4odmFsdWUpOwogICAgICAgICBpZiAoaW5oZXJpdENvbG9yRnJvbVBhcmVudCAm
JiBwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUN1cnJlbnRjb2xvcikKLSAg
ICAgICAgICAgIGFwcGx5SW5oZXJpdFZhbHVlKHNlbGVjdG9yKTsKKyAgICAgICAgICAgIGFwcGx5
SW5oZXJpdFZhbHVlKHN0eWxlUmVzb2x2ZXIpOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAg
IGlmIChzZWxlY3Rvci0+YXBwbHlQcm9wZXJ0eVRvUmVndWxhclN0eWxlKCkpCi0gICAgICAgICAg
ICAgICAgKHNlbGVjdG9yLT5zdHlsZSgpLT4qc2V0dGVyRnVuY3Rpb24pKHNlbGVjdG9yLT5jb2xv
ckZyb21QcmltaXRpdmVWYWx1ZShwcmltaXRpdmVWYWx1ZSkpOwotICAgICAgICAgICAgaWYgKHNl
bGVjdG9yLT5hcHBseVByb3BlcnR5VG9WaXNpdGVkTGlua1N0eWxlKCkpCi0gICAgICAgICAgICAg
ICAgKHNlbGVjdG9yLT5zdHlsZSgpLT4qdmlzaXRlZExpbmtTZXR0ZXJGdW5jdGlvbikoc2VsZWN0
b3ItPmNvbG9yRnJvbVByaW1pdGl2ZVZhbHVlKHByaW1pdGl2ZVZhbHVlLCAvKiBmb3JWaXNpdGVk
TGluayAqLyB0cnVlKSk7CisgICAgICAgICAgICBpZiAoc3R5bGVSZXNvbHZlci0+YXBwbHlQcm9w
ZXJ0eVRvUmVndWxhclN0eWxlKCkpCisgICAgICAgICAgICAgICAgKHN0eWxlUmVzb2x2ZXItPnN0
eWxlKCktPipzZXR0ZXJGdW5jdGlvbikoc3R5bGVSZXNvbHZlci0+Y29sb3JGcm9tUHJpbWl0aXZl
VmFsdWUocHJpbWl0aXZlVmFsdWUpKTsKKyAgICAgICAgICAgIGlmIChzdHlsZVJlc29sdmVyLT5h
cHBseVByb3BlcnR5VG9WaXNpdGVkTGlua1N0eWxlKCkpCisgICAgICAgICAgICAgICAgKHN0eWxl
UmVzb2x2ZXItPnN0eWxlKCktPip2aXNpdGVkTGlua1NldHRlckZ1bmN0aW9uKShzdHlsZVJlc29s
dmVyLT5jb2xvckZyb21QcmltaXRpdmVWYWx1ZShwcmltaXRpdmVWYWx1ZSwgLyogZm9yVmlzaXRl
ZExpbmsgKi8gdHJ1ZSkpOwogICAgICAgICB9CiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQgYXBw
bHlDb2xvclZhbHVlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBjb25zdCBDb2xvciYgY29sb3Ip
CisgICAgc3RhdGljIHZvaWQgYXBwbHlDb2xvclZhbHVlKFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVz
b2x2ZXIsIGNvbnN0IENvbG9yJiBjb2xvcikKICAgICB7Ci0gICAgICAgIGlmIChzZWxlY3Rvci0+
YXBwbHlQcm9wZXJ0eVRvUmVndWxhclN0eWxlKCkpCi0gICAgICAgICAgICAoc2VsZWN0b3ItPnN0
eWxlKCktPipzZXR0ZXJGdW5jdGlvbikoY29sb3IpOwotICAgICAgICBpZiAoc2VsZWN0b3ItPmFw
cGx5UHJvcGVydHlUb1Zpc2l0ZWRMaW5rU3R5bGUoKSkKLSAgICAgICAgICAgIChzZWxlY3Rvci0+
c3R5bGUoKS0+KnZpc2l0ZWRMaW5rU2V0dGVyRnVuY3Rpb24pKGNvbG9yKTsKKyAgICAgICAgaWYg
KHN0eWxlUmVzb2x2ZXItPmFwcGx5UHJvcGVydHlUb1JlZ3VsYXJTdHlsZSgpKQorICAgICAgICAg
ICAgKHN0eWxlUmVzb2x2ZXItPnN0eWxlKCktPipzZXR0ZXJGdW5jdGlvbikoY29sb3IpOworICAg
ICAgICBpZiAoc3R5bGVSZXNvbHZlci0+YXBwbHlQcm9wZXJ0eVRvVmlzaXRlZExpbmtTdHlsZSgp
KQorICAgICAgICAgICAgKHN0eWxlUmVzb2x2ZXItPnN0eWxlKCktPip2aXNpdGVkTGlua1NldHRl
ckZ1bmN0aW9uKShjb2xvcik7CiAgICAgfQogCiAgICAgc3RhdGljIFByb3BlcnR5SGFuZGxlciBj
cmVhdGVIYW5kbGVyKCkgeyByZXR1cm4gUHJvcGVydHlIYW5kbGVyKCZhcHBseUluaGVyaXRWYWx1
ZSwgJmFwcGx5SW5pdGlhbFZhbHVlLCAmYXBwbHlWYWx1ZSk7IH0KQEAgLTMxNSwxMSArMzE1LDEx
IEBAIHB1YmxpYzoKIHRlbXBsYXRlIDxUZXh0RGlyZWN0aW9uIChSZW5kZXJTdHlsZTo6KmdldHRl
ckZ1bmN0aW9uKSgpIGNvbnN0LCB2b2lkIChSZW5kZXJTdHlsZTo6KnNldHRlckZ1bmN0aW9uKShU
ZXh0RGlyZWN0aW9uKSwgVGV4dERpcmVjdGlvbiAoKmluaXRpYWxGdW5jdGlvbikoKT4KIGNsYXNz
IEFwcGx5UHJvcGVydHlEaXJlY3Rpb24gewogcHVibGljOgotICAgIHN0YXRpYyB2b2lkIGFwcGx5
VmFsdWUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIENTU1ZhbHVlKiB2YWx1ZSkKKyAgICBzdGF0
aWMgdm9pZCBhcHBseVZhbHVlKFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVl
KiB2YWx1ZSkKICAgICB7Ci0gICAgICAgIEFwcGx5UHJvcGVydHlEZWZhdWx0PFRleHREaXJlY3Rp
b24sIGdldHRlckZ1bmN0aW9uLCBUZXh0RGlyZWN0aW9uLCBzZXR0ZXJGdW5jdGlvbiwgVGV4dERp
cmVjdGlvbiwgaW5pdGlhbEZ1bmN0aW9uPjo6YXBwbHlWYWx1ZShzZWxlY3RvciwgdmFsdWUpOwot
ICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0gc2VsZWN0b3ItPmVsZW1lbnQoKTsKLSAgICAgICAg
aWYgKGVsZW1lbnQgJiYgc2VsZWN0b3ItPmVsZW1lbnQoKSA9PSBlbGVtZW50LT5kb2N1bWVudCgp
LT5kb2N1bWVudEVsZW1lbnQoKSkKKyAgICAgICAgQXBwbHlQcm9wZXJ0eURlZmF1bHQ8VGV4dERp
cmVjdGlvbiwgZ2V0dGVyRnVuY3Rpb24sIFRleHREaXJlY3Rpb24sIHNldHRlckZ1bmN0aW9uLCBU
ZXh0RGlyZWN0aW9uLCBpbml0aWFsRnVuY3Rpb24+OjphcHBseVZhbHVlKHN0eWxlUmVzb2x2ZXIs
IHZhbHVlKTsKKyAgICAgICAgRWxlbWVudCogZWxlbWVudCA9IHN0eWxlUmVzb2x2ZXItPmVsZW1l
bnQoKTsKKyAgICAgICAgaWYgKGVsZW1lbnQgJiYgc3R5bGVSZXNvbHZlci0+ZWxlbWVudCgpID09
IGVsZW1lbnQtPmRvY3VtZW50KCktPmRvY3VtZW50RWxlbWVudCgpKQogICAgICAgICAgICAgZWxl
bWVudC0+ZG9jdW1lbnQoKS0+c2V0RGlyZWN0aW9uU2V0T25Eb2N1bWVudEVsZW1lbnQodHJ1ZSk7
CiAgICAgfQogCkBAIC0zNDYsNyArMzQ2LDcgQEAgdGVtcGxhdGUgPExlbmd0aCAoUmVuZGVyU3R5
bGU6OipnZXR0ZXJGdW5jdGlvbikoKSBjb25zdCwKIGNsYXNzIEFwcGx5UHJvcGVydHlMZW5ndGgg
ewogcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHNldFZhbHVlKFJlbmRlclN0eWxlKiBzdHlsZSwg
TGVuZ3RoIHZhbHVlKSB7IChzdHlsZS0+KnNldHRlckZ1bmN0aW9uKSh2YWx1ZSk7IH0KLSAgICBz
dGF0aWMgdm9pZCBhcHBseVZhbHVlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBDU1NWYWx1ZSog
dmFsdWUpCisgICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZShTdHlsZVJlc29sdmVyKiBzdHlsZVJl
c29sdmVyLCBDU1NWYWx1ZSogdmFsdWUpCiAgICAgewogICAgICAgICBpZiAoIXZhbHVlLT5pc1By
aW1pdGl2ZVZhbHVlKCkpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0zNTQsMjYgKzM1NCwyNiBA
QCBwdWJsaWM6CiAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0
YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOwogICAgICAgICBpZiAobm9uZUVu
YWJsZWQgJiYgcHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVOb25lKQogICAg
ICAgICAgICAgaWYgKG5vbmVVbmRlZmluZWQpCi0gICAgICAgICAgICAgICAgc2V0VmFsdWUoc2Vs
ZWN0b3ItPnN0eWxlKCksIExlbmd0aChVbmRlZmluZWQpKTsKKyAgICAgICAgICAgICAgICBzZXRW
YWx1ZShzdHlsZVJlc29sdmVyLT5zdHlsZSgpLCBMZW5ndGgoVW5kZWZpbmVkKSk7CiAgICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgc2V0VmFsdWUoc2VsZWN0b3ItPnN0eWxlKCksIExl
bmd0aCgpKTsKKyAgICAgICAgICAgICAgICBzZXRWYWx1ZShzdHlsZVJlc29sdmVyLT5zdHlsZSgp
LCBMZW5ndGgoKSk7CiAgICAgICAgIGVsc2UgaWYgKGludHJpbnNpY0VuYWJsZWQgJiYgcHJpbWl0
aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVJbnRyaW5zaWMpCi0gICAgICAgICAgICBz
ZXRWYWx1ZShzZWxlY3Rvci0+c3R5bGUoKSwgTGVuZ3RoKEludHJpbnNpYykpOworICAgICAgICAg
ICAgc2V0VmFsdWUoc3R5bGVSZXNvbHZlci0+c3R5bGUoKSwgTGVuZ3RoKEludHJpbnNpYykpOwog
ICAgICAgICBlbHNlIGlmIChtaW5JbnRyaW5zaWNFbmFibGVkICYmIHByaW1pdGl2ZVZhbHVlLT5n
ZXRJZGVudCgpID09IENTU1ZhbHVlTWluSW50cmluc2ljKQotICAgICAgICAgICAgc2V0VmFsdWUo
c2VsZWN0b3ItPnN0eWxlKCksIExlbmd0aChNaW5JbnRyaW5zaWMpKTsKKyAgICAgICAgICAgIHNl
dFZhbHVlKHN0eWxlUmVzb2x2ZXItPnN0eWxlKCksIExlbmd0aChNaW5JbnRyaW5zaWMpKTsKICAg
ICAgICAgZWxzZSBpZiAoYXV0b0VuYWJsZWQgJiYgcHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkg
PT0gQ1NTVmFsdWVBdXRvKQotICAgICAgICAgICAgc2V0VmFsdWUoc2VsZWN0b3ItPnN0eWxlKCks
IExlbmd0aCgpKTsKKyAgICAgICAgICAgIHNldFZhbHVlKHN0eWxlUmVzb2x2ZXItPnN0eWxlKCks
IExlbmd0aCgpKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBpZiAocHJpbWl0aXZlVmFs
dWUtPmlzTGVuZ3RoKCkpIHsKLSAgICAgICAgICAgICAgICBMZW5ndGggbGVuZ3RoID0gcHJpbWl0
aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGg8TGVuZ3RoPihzZWxlY3Rvci0+c3R5bGUoKSwgc2VsZWN0
b3ItPnJvb3RFbGVtZW50U3R5bGUoKSwgc2VsZWN0b3ItPnN0eWxlKCktPmVmZmVjdGl2ZVpvb20o
KSk7CisgICAgICAgICAgICAgICAgTGVuZ3RoIGxlbmd0aCA9IHByaW1pdGl2ZVZhbHVlLT5jb21w
dXRlTGVuZ3RoPExlbmd0aD4oc3R5bGVSZXNvbHZlci0+c3R5bGUoKSwgc3R5bGVSZXNvbHZlci0+
cm9vdEVsZW1lbnRTdHlsZSgpLCBzdHlsZVJlc29sdmVyLT5zdHlsZSgpLT5lZmZlY3RpdmVab29t
KCkpOwogICAgICAgICAgICAgICAgIGxlbmd0aC5zZXRRdWlyayhwcmltaXRpdmVWYWx1ZS0+aXNR
dWlya1ZhbHVlKCkpOwotICAgICAgICAgICAgICAgIHNldFZhbHVlKHNlbGVjdG9yLT5zdHlsZSgp
LCBsZW5ndGgpOworICAgICAgICAgICAgICAgIHNldFZhbHVlKHN0eWxlUmVzb2x2ZXItPnN0eWxl
KCksIGxlbmd0aCk7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5pc1Bl
cmNlbnRhZ2UoKSkKLSAgICAgICAgICAgICAgICBzZXRWYWx1ZShzZWxlY3Rvci0+c3R5bGUoKSwg
TGVuZ3RoKHByaW1pdGl2ZVZhbHVlLT5nZXREb3VibGVWYWx1ZSgpLCBQZXJjZW50KSk7CisgICAg
ICAgICAgICAgICAgc2V0VmFsdWUoc3R5bGVSZXNvbHZlci0+c3R5bGUoKSwgTGVuZ3RoKHByaW1p
dGl2ZVZhbHVlLT5nZXREb3VibGVWYWx1ZSgpLCBQZXJjZW50KSk7CiAgICAgICAgICAgICBlbHNl
IGlmIChwcmltaXRpdmVWYWx1ZS0+aXNDYWxjdWxhdGVkUGVyY2VudGFnZVdpdGhMZW5ndGgoKSkK
LSAgICAgICAgICAgICAgICBzZXRWYWx1ZShzZWxlY3Rvci0+c3R5bGUoKSwgTGVuZ3RoKHByaW1p
dGl2ZVZhbHVlLT5jc3NDYWxjVmFsdWUoKS0+dG9DYWxjVmFsdWUoc2VsZWN0b3ItPnN0eWxlKCks
IHNlbGVjdG9yLT5yb290RWxlbWVudFN0eWxlKCksIHNlbGVjdG9yLT5zdHlsZSgpLT5lZmZlY3Rp
dmVab29tKCkpKSk7ICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgc2V0VmFsdWUoc3R5bGVS
ZXNvbHZlci0+c3R5bGUoKSwgTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLT5jc3NDYWxjVmFsdWUoKS0+
dG9DYWxjVmFsdWUoc3R5bGVSZXNvbHZlci0+c3R5bGUoKSwgc3R5bGVSZXNvbHZlci0+cm9vdEVs
ZW1lbnRTdHlsZSgpLCBzdHlsZVJlc29sdmVyLT5zdHlsZSgpLT5lZmZlY3RpdmVab29tKCkpKSk7
CiAgICAgICAgICAgICBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS0+aXNWaWV3cG9ydFBlcmNlbnRh
Z2VMZW5ndGgoKSkKLSAgICAgICAgICAgICAgICBzZXRWYWx1ZShzZWxlY3Rvci0+c3R5bGUoKSwg
cHJpbWl0aXZlVmFsdWUtPnZpZXdwb3J0UGVyY2VudGFnZUxlbmd0aCgpKTsKKyAgICAgICAgICAg
ICAgICBzZXRWYWx1ZShzdHlsZVJlc29sdmVyLT5zdHlsZSgpLCBwcmltaXRpdmVWYWx1ZS0+dmll
d3BvcnRQZXJjZW50YWdlTGVuZ3RoKCkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0zODksMTYg
KzM4OSwxNiBAQCB0ZW1wbGF0ZSA8U3RyaW5nSWRlbnRCZWhhdmlvciBpZGVudEJlaGF2aW9yLCBj
b25zdCBBdG9taWNTdHJpbmcmIChSZW5kZXJTdHlsZTo6KgogY2xhc3MgQXBwbHlQcm9wZXJ0eVN0
cmluZyB7CiBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgc2V0VmFsdWUoUmVuZGVyU3R5bGUqIHN0
eWxlLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKSB7IChzdHlsZS0+KnNldHRlckZ1bmN0aW9u
KSh2YWx1ZSk7IH0KLSAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlKFN0eWxlUmVzb2x2ZXIqIHNl
bGVjdG9yLCBDU1NWYWx1ZSogdmFsdWUpCisgICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZShTdHls
ZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyLCBDU1NWYWx1ZSogdmFsdWUpCiAgICAgewogICAgICAg
ICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENT
U1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOwogICAgICAgICBpZiAoKGlkZW50QmVoYXZpb3IgPT0g
TWFwTm9uZVRvTnVsbCAmJiBwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZU5v
bmUpCiAgICAgICAgICAgICB8fCAoaWRlbnRCZWhhdmlvciA9PSBNYXBBdXRvVG9OdWxsICYmIHBy
aW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlQXV0bykpCi0gICAgICAgICAgICBz
ZXRWYWx1ZShzZWxlY3Rvci0+c3R5bGUoKSwgbnVsbEF0b20pOworICAgICAgICAgICAgc2V0VmFs
dWUoc3R5bGVSZXNvbHZlci0+c3R5bGUoKSwgbnVsbEF0b20pOwogICAgICAgICBlbHNlCi0gICAg
ICAgICAgICBzZXRWYWx1ZShzZWxlY3Rvci0+c3R5bGUoKSwgcHJpbWl0aXZlVmFsdWUtPmdldFN0
cmluZ1ZhbHVlKCkpOworICAgICAgICAgICAgc2V0VmFsdWUoc3R5bGVSZXNvbHZlci0+c3R5bGUo
KSwgcHJpbWl0aXZlVmFsdWUtPmdldFN0cmluZ1ZhbHVlKCkpOwogICAgIH0KICAgICBzdGF0aWMg
UHJvcGVydHlIYW5kbGVyIGNyZWF0ZUhhbmRsZXIoKQogICAgIHsKQEAgLTQxMSw3ICs0MTEsNyBA
QCB0ZW1wbGF0ZSA8TGVuZ3RoU2l6ZSAoUmVuZGVyU3R5bGU6OipnZXR0ZXJGdW5jdGlvbikoKSBj
b25zdCwgdm9pZCAoUmVuZGVyU3R5bGU6OgogY2xhc3MgQXBwbHlQcm9wZXJ0eUJvcmRlclJhZGl1
cyB7CiBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgc2V0VmFsdWUoUmVuZGVyU3R5bGUqIHN0eWxl
LCBMZW5ndGhTaXplIHZhbHVlKSB7IChzdHlsZS0+KnNldHRlckZ1bmN0aW9uKSh2YWx1ZSk7IH0K
LSAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBDU1NW
YWx1ZSogdmFsdWUpCisgICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZShTdHlsZVJlc29sdmVyKiBz
dHlsZVJlc29sdmVyLCBDU1NWYWx1ZSogdmFsdWUpCiAgICAgewogICAgICAgICBpZiAoIXZhbHVl
LT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAgICAgICAgICByZXR1cm47CkBAIC00MzIsNyArNDMy
LDcgQEAgcHVibGljOgogICAgICAgICAgICAgLy8gaGFuZGxlIHRoaXMgY2FzZQogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHJhZGl1c1dpZHRoID0gcGFp
ci0+Zmlyc3QoKS0+Y29tcHV0ZUxlbmd0aDxMZW5ndGg+KHNlbGVjdG9yLT5zdHlsZSgpLCBzZWxl
Y3Rvci0+cm9vdEVsZW1lbnRTdHlsZSgpLCBzZWxlY3Rvci0+c3R5bGUoKS0+ZWZmZWN0aXZlWm9v
bSgpKTsKKyAgICAgICAgICAgIHJhZGl1c1dpZHRoID0gcGFpci0+Zmlyc3QoKS0+Y29tcHV0ZUxl
bmd0aDxMZW5ndGg+KHN0eWxlUmVzb2x2ZXItPnN0eWxlKCksIHN0eWxlUmVzb2x2ZXItPnJvb3RF
bGVtZW50U3R5bGUoKSwgc3R5bGVSZXNvbHZlci0+c3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpKTsK
ICAgICAgICAgaWYgKHBhaXItPnNlY29uZCgpLT5pc1BlcmNlbnRhZ2UoKSkKICAgICAgICAgICAg
IHJhZGl1c0hlaWdodCA9IExlbmd0aChwYWlyLT5zZWNvbmQoKS0+Z2V0RG91YmxlVmFsdWUoKSwg
UGVyY2VudCk7CiAgICAgICAgIGVsc2UgaWYgKHBhaXItPnNlY29uZCgpLT5pc1ZpZXdwb3J0UGVy
Y2VudGFnZUxlbmd0aCgpKQpAQCAtNDQyLDcgKzQ0Miw3IEBAIHB1YmxpYzoKICAgICAgICAgICAg
IC8vIGhhbmRsZSB0aGlzIGNhc2UKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfSBlbHNl
Ci0gICAgICAgICAgICByYWRpdXNIZWlnaHQgPSBwYWlyLT5zZWNvbmQoKS0+Y29tcHV0ZUxlbmd0
aDxMZW5ndGg+KHNlbGVjdG9yLT5zdHlsZSgpLCBzZWxlY3Rvci0+cm9vdEVsZW1lbnRTdHlsZSgp
LCBzZWxlY3Rvci0+c3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpKTsKKyAgICAgICAgICAgIHJhZGl1
c0hlaWdodCA9IHBhaXItPnNlY29uZCgpLT5jb21wdXRlTGVuZ3RoPExlbmd0aD4oc3R5bGVSZXNv
bHZlci0+c3R5bGUoKSwgc3R5bGVSZXNvbHZlci0+cm9vdEVsZW1lbnRTdHlsZSgpLCBzdHlsZVJl
c29sdmVyLT5zdHlsZSgpLT5lZmZlY3RpdmVab29tKCkpOwogICAgICAgICBpbnQgd2lkdGggPSBy
YWRpdXNXaWR0aC52YWx1ZSgpOwogICAgICAgICBpbnQgaGVpZ2h0ID0gcmFkaXVzSGVpZ2h0LnZh
bHVlKCk7CiAgICAgICAgIGlmICh3aWR0aCA8IDAgfHwgaGVpZ2h0IDwgMCkKQEAgLTQ1Myw3ICs0
NTMsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByYWRpdXNXaWR0aCA9IHJhZGl1c0hlaWdodDsg
Ly8gTnVsbCBvdXQgdGhlIG90aGVyIHZhbHVlLgogCiAgICAgICAgIExlbmd0aFNpemUgc2l6ZShy
YWRpdXNXaWR0aCwgcmFkaXVzSGVpZ2h0KTsKLSAgICAgICAgc2V0VmFsdWUoc2VsZWN0b3ItPnN0
eWxlKCksIHNpemUpOworICAgICAgICBzZXRWYWx1ZShzdHlsZVJlc29sdmVyLT5zdHlsZSgpLCBz
aXplKTsKICAgICB9CiAgICAgc3RhdGljIFByb3BlcnR5SGFuZGxlciBjcmVhdGVIYW5kbGVyKCkK
ICAgICB7CkBAIC00ODcsMTEgKzQ4NywxMSBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwKICAgICAg
ICAgICB2b2lkIChTdHlsZVJlc29sdmVyOjoqbWFwRmlsbEZ1bmN0aW9uKShDU1NQcm9wZXJ0eUlE
LCBGaWxsTGF5ZXIqLCBDU1NWYWx1ZSopPgogY2xhc3MgQXBwbHlQcm9wZXJ0eUZpbGxMYXllciB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIHZvaWQgYXBwbHlJbmhlcml0VmFsdWUoU3R5bGVSZXNvbHZl
ciogc2VsZWN0b3IpCisgICAgc3RhdGljIHZvaWQgYXBwbHlJbmhlcml0VmFsdWUoU3R5bGVSZXNv
bHZlciogc3R5bGVSZXNvbHZlcikKICAgICB7Ci0gICAgICAgIEZpbGxMYXllciogY3VyckNoaWxk
ID0gKHNlbGVjdG9yLT5zdHlsZSgpLT4qYWNjZXNzTGF5ZXJzRnVuY3Rpb24pKCk7CisgICAgICAg
IEZpbGxMYXllciogY3VyckNoaWxkID0gKHN0eWxlUmVzb2x2ZXItPnN0eWxlKCktPiphY2Nlc3NM
YXllcnNGdW5jdGlvbikoKTsKICAgICAgICAgRmlsbExheWVyKiBwcmV2Q2hpbGQgPSAwOwotICAg
ICAgICBjb25zdCBGaWxsTGF5ZXIqIGN1cnJQYXJlbnQgPSAoc2VsZWN0b3ItPnBhcmVudFN0eWxl
KCktPipsYXllcnNGdW5jdGlvbikoKTsKKyAgICAgICAgY29uc3QgRmlsbExheWVyKiBjdXJyUGFy
ZW50ID0gKHN0eWxlUmVzb2x2ZXItPnBhcmVudFN0eWxlKCktPipsYXllcnNGdW5jdGlvbikoKTsK
ICAgICAgICAgd2hpbGUgKGN1cnJQYXJlbnQgJiYgKGN1cnJQYXJlbnQtPip0ZXN0RnVuY3Rpb24p
KCkpIHsKICAgICAgICAgICAgIGlmICghY3VyckNoaWxkKSB7CiAgICAgICAgICAgICAgICAgLyog
TmVlZCB0byBtYWtlIGEgbmV3IGxheWVyLiovCkBAIC01MTEsMTcgKzUxMSwxNyBAQCBwdWJsaWM6
CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCBhcHBseUluaXRpYWxWYWx1ZShT
dHlsZVJlc29sdmVyKiBzZWxlY3RvcikKKyAgICBzdGF0aWMgdm9pZCBhcHBseUluaXRpYWxWYWx1
ZShTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyKQogICAgIHsKLSAgICAgICAgRmlsbExheWVy
KiBjdXJyQ2hpbGQgPSAoc2VsZWN0b3ItPnN0eWxlKCktPiphY2Nlc3NMYXllcnNGdW5jdGlvbiko
KTsKKyAgICAgICAgRmlsbExheWVyKiBjdXJyQ2hpbGQgPSAoc3R5bGVSZXNvbHZlci0+c3R5bGUo
KS0+KmFjY2Vzc0xheWVyc0Z1bmN0aW9uKSgpOwogICAgICAgICAoY3VyckNoaWxkLT4qc2V0RnVu
Y3Rpb24pKCgqaW5pdGlhbEZ1bmN0aW9uKShmaWxsTGF5ZXJUeXBlKSk7CiAgICAgICAgIGZvciAo
Y3VyckNoaWxkID0gY3VyckNoaWxkLT5uZXh0KCk7IGN1cnJDaGlsZDsgY3VyckNoaWxkID0gY3Vy
ckNoaWxkLT5uZXh0KCkpCiAgICAgICAgICAgICAoY3VyckNoaWxkLT4qY2xlYXJGdW5jdGlvbiko
KTsKICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlKFN0eWxlUmVzb2x2ZXIqIHNl
bGVjdG9yLCBDU1NWYWx1ZSogdmFsdWUpCisgICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZShTdHls
ZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyLCBDU1NWYWx1ZSogdmFsdWUpCiAgICAgewotICAgICAg
ICBGaWxsTGF5ZXIqIGN1cnJDaGlsZCA9IChzZWxlY3Rvci0+c3R5bGUoKS0+KmFjY2Vzc0xheWVy
c0Z1bmN0aW9uKSgpOworICAgICAgICBGaWxsTGF5ZXIqIGN1cnJDaGlsZCA9IChzdHlsZVJlc29s
dmVyLT5zdHlsZSgpLT4qYWNjZXNzTGF5ZXJzRnVuY3Rpb24pKCk7CiAgICAgICAgIEZpbGxMYXll
ciogcHJldkNoaWxkID0gMDsKICAgICAgICAgaWYgKHZhbHVlLT5pc1ZhbHVlTGlzdCgpCiAjaWYg
RU5BQkxFKENTU19JTUFHRV9TRVQpCkBAIC01MzYsMTIgKzUzNiwxMiBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICAgICAgICAgIGN1cnJDaGlsZCA9IG5ldyBGaWxsTGF5ZXIoZmlsbExheWVyVHlwZSk7
CiAgICAgICAgICAgICAgICAgICAgIHByZXZDaGlsZC0+c2V0TmV4dChjdXJyQ2hpbGQpOwogICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAoc2VsZWN0b3ItPiptYXBGaWxsRnVuY3Rp
b24pKHByb3BlcnR5SWQsIGN1cnJDaGlsZCwgdmFsdWVMaXN0LT5pdGVtV2l0aG91dEJvdW5kc0No
ZWNrKGkpKTsKKyAgICAgICAgICAgICAgICAoc3R5bGVSZXNvbHZlci0+Km1hcEZpbGxGdW5jdGlv
bikocHJvcGVydHlJZCwgY3VyckNoaWxkLCB2YWx1ZUxpc3QtPml0ZW1XaXRob3V0Qm91bmRzQ2hl
Y2soaSkpOwogICAgICAgICAgICAgICAgIHByZXZDaGlsZCA9IGN1cnJDaGlsZDsKICAgICAgICAg
ICAgICAgICBjdXJyQ2hpbGQgPSBjdXJyQ2hpbGQtPm5leHQoKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIChzZWxlY3Rvci0+Km1hcEZpbGxGdW5jdGlvbiko
cHJvcGVydHlJZCwgY3VyckNoaWxkLCB2YWx1ZSk7CisgICAgICAgICAgICAoc3R5bGVSZXNvbHZl
ci0+Km1hcEZpbGxGdW5jdGlvbikocHJvcGVydHlJZCwgY3VyckNoaWxkLCB2YWx1ZSk7CiAgICAg
ICAgICAgICBjdXJyQ2hpbGQgPSBjdXJyQ2hpbGQtPm5leHQoKTsKICAgICAgICAgfQogICAgICAg
ICB3aGlsZSAoY3VyckNoaWxkKSB7CkBAIC01NjcsNyArNTY3LDcgQEAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQsCiBjbGFzcyBBcHBseVByb3BlcnR5Q29tcHV0ZUxlbmd0aCB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIHZvaWQgc2V0VmFsdWUoUmVuZGVyU3R5bGUqIHN0eWxlLCBUIHZhbHVlKSB7IChzdHls
ZS0+KnNldHRlckZ1bmN0aW9uKSh2YWx1ZSk7IH0KLSAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVl
KFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBDU1NWYWx1ZSogdmFsdWUpCisgICAgc3RhdGljIHZv
aWQgYXBwbHlWYWx1ZShTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyLCBDU1NWYWx1ZSogdmFs
dWUpCiAgICAgewogICAgICAgICAvLyBub3RlOiBDU1NQcm9wZXJ0eUxldHRlci9Xb3JkU3BhY2lu
ZyByaWdodCBub3cgc2V0cyB0byB6ZXJvIGlmIGl0J3Mgbm90IGEgcHJpbWl0aXZlIHZhbHVlIGZv
ciBzb21lIHJlYXNvbi4uLgogICAgICAgICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkp
CkBAIC01ODYsMTQgKzU4NiwxNCBAQCBwdWJsaWM6CiAgICAgICAgIH0gZWxzZSBpZiAodGhpY2tu
ZXNzRW5hYmxlZCAmJiBpZGVudCA9PSBDU1NWYWx1ZVRoaWNrKSB7CiAgICAgICAgICAgICBsZW5n
dGggPSA1OwogICAgICAgICB9IGVsc2UgaWYgKGlkZW50ID09IENTU1ZhbHVlSW52YWxpZCkgewot
ICAgICAgICAgICAgZmxvYXQgem9vbSA9IChzdmdab29tRW5hYmxlZCAmJiBzZWxlY3Rvci0+dXNl
U1ZHWm9vbVJ1bGVzKCkpID8gMS4wZiA6IHNlbGVjdG9yLT5zdHlsZSgpLT5lZmZlY3RpdmVab29t
KCk7Ci0gICAgICAgICAgICBsZW5ndGggPSBwcmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxlbmd0aDxU
PihzZWxlY3Rvci0+c3R5bGUoKSwgc2VsZWN0b3ItPnJvb3RFbGVtZW50U3R5bGUoKSwgem9vbSk7
CisgICAgICAgICAgICBmbG9hdCB6b29tID0gKHN2Z1pvb21FbmFibGVkICYmIHN0eWxlUmVzb2x2
ZXItPnVzZVNWR1pvb21SdWxlcygpKSA/IDEuMGYgOiBzdHlsZVJlc29sdmVyLT5zdHlsZSgpLT5l
ZmZlY3RpdmVab29tKCk7CisgICAgICAgICAgICBsZW5ndGggPSBwcmltaXRpdmVWYWx1ZS0+Y29t
cHV0ZUxlbmd0aDxUPihzdHlsZVJlc29sdmVyLT5zdHlsZSgpLCBzdHlsZVJlc29sdmVyLT5yb290
RWxlbWVudFN0eWxlKCksIHpvb20pOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICBsZW5ndGggPSAwOwogICAgICAgICB9CiAK
LSAgICAgICAgc2V0VmFsdWUoc2VsZWN0b3ItPnN0eWxlKCksIGxlbmd0aCk7CisgICAgICAgIHNl
dFZhbHVlKHN0eWxlUmVzb2x2ZXItPnN0eWxlKCksIGxlbmd0aCk7CiAgICAgfQogICAgIHN0YXRp
YyBQcm9wZXJ0eUhhbmRsZXIgY3JlYXRlSGFuZGxlcigpCiAgICAgewpAQCAtNjA1LDI4ICs2MDUs
MjggQEAgcHVibGljOgogdGVtcGxhdGUgPHR5cGVuYW1lIFQsIFQgKEZvbnREZXNjcmlwdGlvbjo6
KmdldHRlckZ1bmN0aW9uKSgpIGNvbnN0LCB2b2lkIChGb250RGVzY3JpcHRpb246OipzZXR0ZXJG
dW5jdGlvbikoVCksIFQgaW5pdGlhbFZhbHVlPgogY2xhc3MgQXBwbHlQcm9wZXJ0eUZvbnQgewog
cHVibGljOgotICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5oZXJpdFZhbHVlKFN0eWxlUmVzb2x2ZXIq
IHNlbGVjdG9yKQorICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5oZXJpdFZhbHVlKFN0eWxlUmVzb2x2
ZXIqIHN0eWxlUmVzb2x2ZXIpCiAgICAgewotICAgICAgICBGb250RGVzY3JpcHRpb24gZm9udERl
c2NyaXB0aW9uID0gc2VsZWN0b3ItPmZvbnREZXNjcmlwdGlvbigpOwotICAgICAgICAoZm9udERl
c2NyaXB0aW9uLipzZXR0ZXJGdW5jdGlvbikoKHNlbGVjdG9yLT5wYXJlbnRGb250RGVzY3JpcHRp
b24oKS4qZ2V0dGVyRnVuY3Rpb24pKCkpOwotICAgICAgICBzZWxlY3Rvci0+c2V0Rm9udERlc2Ny
aXB0aW9uKGZvbnREZXNjcmlwdGlvbik7CisgICAgICAgIEZvbnREZXNjcmlwdGlvbiBmb250RGVz
Y3JpcHRpb24gPSBzdHlsZVJlc29sdmVyLT5mb250RGVzY3JpcHRpb24oKTsKKyAgICAgICAgKGZv
bnREZXNjcmlwdGlvbi4qc2V0dGVyRnVuY3Rpb24pKChzdHlsZVJlc29sdmVyLT5wYXJlbnRGb250
RGVzY3JpcHRpb24oKS4qZ2V0dGVyRnVuY3Rpb24pKCkpOworICAgICAgICBzdHlsZVJlc29sdmVy
LT5zZXRGb250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKTsKICAgICB9CiAKLSAgICBzdGF0
aWMgdm9pZCBhcHBseUluaXRpYWxWYWx1ZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvcikKKyAgICBz
dGF0aWMgdm9pZCBhcHBseUluaXRpYWxWYWx1ZShTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVy
KQogICAgIHsKLSAgICAgICAgRm9udERlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbiA9IHNlbGVj
dG9yLT5mb250RGVzY3JpcHRpb24oKTsKKyAgICAgICAgRm9udERlc2NyaXB0aW9uIGZvbnREZXNj
cmlwdGlvbiA9IHN0eWxlUmVzb2x2ZXItPmZvbnREZXNjcmlwdGlvbigpOwogICAgICAgICAoZm9u
dERlc2NyaXB0aW9uLipzZXR0ZXJGdW5jdGlvbikoaW5pdGlhbFZhbHVlKTsKLSAgICAgICAgc2Vs
ZWN0b3ItPnNldEZvbnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pOworICAgICAgICBzdHls
ZVJlc29sdmVyLT5zZXRGb250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKTsKICAgICB9CiAK
LSAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBDU1NW
YWx1ZSogdmFsdWUpCisgICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZShTdHlsZVJlc29sdmVyKiBz
dHlsZVJlc29sdmVyLCBDU1NWYWx1ZSogdmFsdWUpCiAgICAgewogICAgICAgICBpZiAoIXZhbHVl
LT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIENTU1By
aW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlKj4odmFsdWUpOwotICAgICAgICBGb250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uID0g
c2VsZWN0b3ItPmZvbnREZXNjcmlwdGlvbigpOworICAgICAgICBGb250RGVzY3JpcHRpb24gZm9u
dERlc2NyaXB0aW9uID0gc3R5bGVSZXNvbHZlci0+Zm9udERlc2NyaXB0aW9uKCk7CiAgICAgICAg
IChmb250RGVzY3JpcHRpb24uKnNldHRlckZ1bmN0aW9uKSgqcHJpbWl0aXZlVmFsdWUpOwotICAg
ICAgICBzZWxlY3Rvci0+c2V0Rm9udERlc2NyaXB0aW9uKGZvbnREZXNjcmlwdGlvbik7CisgICAg
ICAgIHN0eWxlUmVzb2x2ZXItPnNldEZvbnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pOwog
ICAgIH0KIAogICAgIHN0YXRpYyBQcm9wZXJ0eUhhbmRsZXIgY3JlYXRlSGFuZGxlcigpIHsgcmV0
dXJuIFByb3BlcnR5SGFuZGxlcigmYXBwbHlJbmhlcml0VmFsdWUsICZhcHBseUluaXRpYWxWYWx1
ZSwgJmFwcGx5VmFsdWUpOyB9CkBAIC02NTEsNTAgKzY1MSw1MCBAQCBwcml2YXRlOgogICAgICAg
ICByZXR1cm4gc2l6ZSAvIDEuMmY7CiAgICAgfQogcHVibGljOgotICAgIHN0YXRpYyB2b2lkIGFw
cGx5SW5oZXJpdFZhbHVlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yKQorICAgIHN0YXRpYyB2b2lk
IGFwcGx5SW5oZXJpdFZhbHVlKFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIpCiAgICAgewot
ICAgICAgICBmbG9hdCBzaXplID0gc2VsZWN0b3ItPnBhcmVudFN0eWxlKCktPmZvbnREZXNjcmlw
dGlvbigpLnNwZWNpZmllZFNpemUoKTsKKyAgICAgICAgZmxvYXQgc2l6ZSA9IHN0eWxlUmVzb2x2
ZXItPnBhcmVudFN0eWxlKCktPmZvbnREZXNjcmlwdGlvbigpLnNwZWNpZmllZFNpemUoKTsKIAog
ICAgICAgICBpZiAoc2l6ZSA8IDApCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgRm9u
dERlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbiA9IHNlbGVjdG9yLT5zdHlsZSgpLT5mb250RGVz
Y3JpcHRpb24oKTsKLSAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldEtleXdvcmRTaXplKHNlbGVj
dG9yLT5wYXJlbnRTdHlsZSgpLT5mb250RGVzY3JpcHRpb24oKS5rZXl3b3JkU2l6ZSgpKTsKLSAg
ICAgICAgc2VsZWN0b3ItPnNldEZvbnRTaXplKGZvbnREZXNjcmlwdGlvbiwgc2l6ZSk7Ci0gICAg
ICAgIHNlbGVjdG9yLT5zZXRGb250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKTsKKyAgICAg
ICAgRm9udERlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbiA9IHN0eWxlUmVzb2x2ZXItPnN0eWxl
KCktPmZvbnREZXNjcmlwdGlvbigpOworICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0S2V5d29y
ZFNpemUoc3R5bGVSZXNvbHZlci0+cGFyZW50U3R5bGUoKS0+Zm9udERlc2NyaXB0aW9uKCkua2V5
d29yZFNpemUoKSk7CisgICAgICAgIHN0eWxlUmVzb2x2ZXItPnNldEZvbnRTaXplKGZvbnREZXNj
cmlwdGlvbiwgc2l6ZSk7CisgICAgICAgIHN0eWxlUmVzb2x2ZXItPnNldEZvbnREZXNjcmlwdGlv
bihmb250RGVzY3JpcHRpb24pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgc3RhdGlj
IHZvaWQgYXBwbHlJbml0aWFsVmFsdWUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IpCisgICAgc3Rh
dGljIHZvaWQgYXBwbHlJbml0aWFsVmFsdWUoU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlcikK
ICAgICB7Ci0gICAgICAgIEZvbnREZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb24gPSBzZWxlY3Rv
ci0+c3R5bGUoKS0+Zm9udERlc2NyaXB0aW9uKCk7Ci0gICAgICAgIGZsb2F0IHNpemUgPSBzZWxl
Y3Rvci0+Zm9udFNpemVGb3JLZXl3b3JkKHNlbGVjdG9yLT5kb2N1bWVudCgpLCBDU1NWYWx1ZU1l
ZGl1bSwgZm9udERlc2NyaXB0aW9uLnVzZUZpeGVkRGVmYXVsdFNpemUoKSk7CisgICAgICAgIEZv
bnREZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb24gPSBzdHlsZVJlc29sdmVyLT5zdHlsZSgpLT5m
b250RGVzY3JpcHRpb24oKTsKKyAgICAgICAgZmxvYXQgc2l6ZSA9IHN0eWxlUmVzb2x2ZXItPmZv
bnRTaXplRm9yS2V5d29yZChzdHlsZVJlc29sdmVyLT5kb2N1bWVudCgpLCBDU1NWYWx1ZU1lZGl1
bSwgZm9udERlc2NyaXB0aW9uLnVzZUZpeGVkRGVmYXVsdFNpemUoKSk7CiAKICAgICAgICAgaWYg
KHNpemUgPCAwKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGZvbnREZXNjcmlwdGlv
bi5zZXRLZXl3b3JkU2l6ZShDU1NWYWx1ZU1lZGl1bSAtIENTU1ZhbHVlWHhTbWFsbCArIDEpOwot
ICAgICAgICBzZWxlY3Rvci0+c2V0Rm9udFNpemUoZm9udERlc2NyaXB0aW9uLCBzaXplKTsKLSAg
ICAgICAgc2VsZWN0b3ItPnNldEZvbnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pOworICAg
ICAgICBzdHlsZVJlc29sdmVyLT5zZXRGb250U2l6ZShmb250RGVzY3JpcHRpb24sIHNpemUpOwor
ICAgICAgICBzdHlsZVJlc29sdmVyLT5zZXRGb250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9u
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUo
U3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIENTU1ZhbHVlKiB2YWx1ZSkKKyAgICBzdGF0aWMgdm9p
ZCBhcHBseVZhbHVlKFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlKiB2YWx1
ZSkKICAgICB7CiAgICAgICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAg
ICAgICAgIHJldHVybjsKIAogICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFs
dWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKIAotICAgICAgICBG
b250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uID0gc2VsZWN0b3ItPnN0eWxlKCktPmZvbnRE
ZXNjcmlwdGlvbigpOworICAgICAgICBGb250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uID0g
c3R5bGVSZXNvbHZlci0+c3R5bGUoKS0+Zm9udERlc2NyaXB0aW9uKCk7CiAgICAgICAgIGZvbnRE
ZXNjcmlwdGlvbi5zZXRLZXl3b3JkU2l6ZSgwKTsKICAgICAgICAgZmxvYXQgcGFyZW50U2l6ZSA9
IDA7CiAgICAgICAgIGJvb2wgcGFyZW50SXNBYnNvbHV0ZVNpemUgPSBmYWxzZTsKICAgICAgICAg
ZmxvYXQgc2l6ZSA9IDA7CiAKLSAgICAgICAgaWYgKHNlbGVjdG9yLT5oYXNQYXJlbnROb2RlKCkp
IHsKLSAgICAgICAgICAgIHBhcmVudFNpemUgPSBzZWxlY3Rvci0+cGFyZW50U3R5bGUoKS0+Zm9u
dERlc2NyaXB0aW9uKCkuc3BlY2lmaWVkU2l6ZSgpOwotICAgICAgICAgICAgcGFyZW50SXNBYnNv
bHV0ZVNpemUgPSBzZWxlY3Rvci0+cGFyZW50U3R5bGUoKS0+Zm9udERlc2NyaXB0aW9uKCkuaXNB
YnNvbHV0ZVNpemUoKTsKKyAgICAgICAgaWYgKHN0eWxlUmVzb2x2ZXItPmhhc1BhcmVudE5vZGUo
KSkgeworICAgICAgICAgICAgcGFyZW50U2l6ZSA9IHN0eWxlUmVzb2x2ZXItPnBhcmVudFN0eWxl
KCktPmZvbnREZXNjcmlwdGlvbigpLnNwZWNpZmllZFNpemUoKTsKKyAgICAgICAgICAgIHBhcmVu
dElzQWJzb2x1dGVTaXplID0gc3R5bGVSZXNvbHZlci0+cGFyZW50U3R5bGUoKS0+Zm9udERlc2Ny
aXB0aW9uKCkuaXNBYnNvbHV0ZVNpemUoKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChpbnQg
aWRlbnQgPSBwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkgewpAQCAtNzA4LDcgKzcwOCw3IEBA
IHB1YmxpYzoKICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVYTGFyZ2U6CiAgICAgICAgICAgICBj
YXNlIENTU1ZhbHVlWHhMYXJnZToKICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVXZWJraXRYeHhM
YXJnZToKLSAgICAgICAgICAgICAgICBzaXplID0gc2VsZWN0b3ItPmZvbnRTaXplRm9yS2V5d29y
ZChzZWxlY3Rvci0+ZG9jdW1lbnQoKSwgaWRlbnQsIGZvbnREZXNjcmlwdGlvbi51c2VGaXhlZERl
ZmF1bHRTaXplKCkpOworICAgICAgICAgICAgICAgIHNpemUgPSBzdHlsZVJlc29sdmVyLT5mb250
U2l6ZUZvcktleXdvcmQoc3R5bGVSZXNvbHZlci0+ZG9jdW1lbnQoKSwgaWRlbnQsIGZvbnREZXNj
cmlwdGlvbi51c2VGaXhlZERlZmF1bHRTaXplKCkpOwogICAgICAgICAgICAgICAgIGZvbnREZXNj
cmlwdGlvbi5zZXRLZXl3b3JkU2l6ZShpZGVudCAtIENTU1ZhbHVlWHhTbWFsbCArIDEpOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUxhcmdlcjoKQEAg
LTcyNiwxMyArNzI2LDEzIEBAIHB1YmxpYzoKICAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5z
ZXRJc0Fic29sdXRlU2l6ZShwYXJlbnRJc0Fic29sdXRlU2l6ZQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICEocHJpbWl0aXZlVmFsdWUtPmlzUGVyY2Vu
dGFnZSgpIHx8IHByaW1pdGl2ZVZhbHVlLT5pc0ZvbnRSZWxhdGl2ZUxlbmd0aCgpKSk7CiAgICAg
ICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmlzTGVuZ3RoKCkpCi0gICAgICAgICAgICAgICAg
c2l6ZSA9IHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3RoPGZsb2F0PihzZWxlY3Rvci0+cGFy
ZW50U3R5bGUoKSwgc2VsZWN0b3ItPnJvb3RFbGVtZW50U3R5bGUoKSwgMS4wLCB0cnVlKTsKKyAg
ICAgICAgICAgICAgICBzaXplID0gcHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGg8ZmxvYXQ+
KHN0eWxlUmVzb2x2ZXItPnBhcmVudFN0eWxlKCksIHN0eWxlUmVzb2x2ZXItPnJvb3RFbGVtZW50
U3R5bGUoKSwgMS4wLCB0cnVlKTsKICAgICAgICAgICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVl
LT5pc1BlcmNlbnRhZ2UoKSkKICAgICAgICAgICAgICAgICBzaXplID0gKHByaW1pdGl2ZVZhbHVl
LT5nZXRGbG9hdFZhbHVlKCkgKiBwYXJlbnRTaXplKSAvIDEwMC4wZjsKICAgICAgICAgICAgIGVs
c2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5pc0NhbGN1bGF0ZWRQZXJjZW50YWdlV2l0aExlbmd0aCgp
KQotICAgICAgICAgICAgICAgIHNpemUgPSBwcmltaXRpdmVWYWx1ZS0+Y3NzQ2FsY1ZhbHVlKCkt
PnRvQ2FsY1ZhbHVlKHNlbGVjdG9yLT5wYXJlbnRTdHlsZSgpLCBzZWxlY3Rvci0+cm9vdEVsZW1l
bnRTdHlsZSgpKS0+ZXZhbHVhdGUocGFyZW50U2l6ZSk7ICAgICAgICAgICAgICAgIAorICAgICAg
ICAgICAgICAgIHNpemUgPSBwcmltaXRpdmVWYWx1ZS0+Y3NzQ2FsY1ZhbHVlKCktPnRvQ2FsY1Zh
bHVlKHN0eWxlUmVzb2x2ZXItPnBhcmVudFN0eWxlKCksIHN0eWxlUmVzb2x2ZXItPnJvb3RFbGVt
ZW50U3R5bGUoKSktPmV2YWx1YXRlKHBhcmVudFNpemUpOwogICAgICAgICAgICAgZWxzZSBpZiAo
cHJpbWl0aXZlVmFsdWUtPmlzVmlld3BvcnRQZXJjZW50YWdlTGVuZ3RoKCkpCi0gICAgICAgICAg
ICAgICAgc2l6ZSA9IHZhbHVlRm9yTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLT52aWV3cG9ydFBlcmNl
bnRhZ2VMZW5ndGgoKSwgMCwgc2VsZWN0b3ItPmRvY3VtZW50KCktPnJlbmRlclZpZXcoKSk7Cisg
ICAgICAgICAgICAgICAgc2l6ZSA9IHZhbHVlRm9yTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLT52aWV3
cG9ydFBlcmNlbnRhZ2VMZW5ndGgoKSwgMCwgc3R5bGVSZXNvbHZlci0+ZG9jdW1lbnQoKS0+cmVu
ZGVyVmlldygpKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KQEAgLTc0MCw4ICs3NDAsOCBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChzaXplIDwg
MCkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBzZWxlY3Rvci0+c2V0Rm9udFNpemUo
Zm9udERlc2NyaXB0aW9uLCBzaXplKTsKLSAgICAgICAgc2VsZWN0b3ItPnNldEZvbnREZXNjcmlw
dGlvbihmb250RGVzY3JpcHRpb24pOworICAgICAgICBzdHlsZVJlc29sdmVyLT5zZXRGb250U2l6
ZShmb250RGVzY3JpcHRpb24sIHNpemUpOworICAgICAgICBzdHlsZVJlc29sdmVyLT5zZXRGb250
RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApA
QCAtNzUwLDEyICs3NTAsMTIgQEAgcHVibGljOgogCiBjbGFzcyBBcHBseVByb3BlcnR5Rm9udFdl
aWdodCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZShTdHlsZVJlc29sdmVy
KiBzZWxlY3RvciwgQ1NTVmFsdWUqIHZhbHVlKQorICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUo
U3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUqIHZhbHVlKQogICAgIHsKICAg
ICAgICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKLSAgICAgICAgRm9udERlc2NyaXB0aW9uIGZv
bnREZXNjcmlwdGlvbiA9IHNlbGVjdG9yLT5mb250RGVzY3JpcHRpb24oKTsKKyAgICAgICAgRm9u
dERlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbiA9IHN0eWxlUmVzb2x2ZXItPmZvbnREZXNjcmlw
dGlvbigpOwogICAgICAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7CiAg
ICAgICAgIGNhc2UgQ1NTVmFsdWVJbnZhbGlkOgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CkBAIC03NjksNyArNzY5LDcgQEAgcHVibGljOgogICAgICAgICBkZWZhdWx0OgogICAg
ICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldFdlaWdodCgqcHJpbWl0aXZlVmFsdWUpOwogICAg
ICAgICB9Ci0gICAgICAgIHNlbGVjdG9yLT5zZXRGb250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0
aW9uKTsKKyAgICAgICAgc3R5bGVSZXNvbHZlci0+c2V0Rm9udERlc2NyaXB0aW9uKGZvbnREZXNj
cmlwdGlvbik7CiAgICAgfQogICAgIHN0YXRpYyBQcm9wZXJ0eUhhbmRsZXIgY3JlYXRlSGFuZGxl
cigpCiAgICAgewpAQCAtNzgwLDMwICs3ODAsMzAgQEAgcHVibGljOgogCiBjbGFzcyBBcHBseVBy
b3BlcnR5Rm9udFZhcmlhbnRMaWdhdHVyZXMgewogcHVibGljOgotICAgIHN0YXRpYyB2b2lkIGFw
cGx5SW5oZXJpdFZhbHVlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yKQorICAgIHN0YXRpYyB2b2lk
IGFwcGx5SW5oZXJpdFZhbHVlKFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIpCiAgICAgewot
ICAgICAgICBjb25zdCBGb250RGVzY3JpcHRpb24mIHBhcmVudEZvbnREZXNjcmlwdGlvbiA9IHNl
bGVjdG9yLT5wYXJlbnRGb250RGVzY3JpcHRpb24oKTsKLSAgICAgICAgRm9udERlc2NyaXB0aW9u
IGZvbnREZXNjcmlwdGlvbiA9IHNlbGVjdG9yLT5mb250RGVzY3JpcHRpb24oKTsKKyAgICAgICAg
Y29uc3QgRm9udERlc2NyaXB0aW9uJiBwYXJlbnRGb250RGVzY3JpcHRpb24gPSBzdHlsZVJlc29s
dmVyLT5wYXJlbnRGb250RGVzY3JpcHRpb24oKTsKKyAgICAgICAgRm9udERlc2NyaXB0aW9uIGZv
bnREZXNjcmlwdGlvbiA9IHN0eWxlUmVzb2x2ZXItPmZvbnREZXNjcmlwdGlvbigpOwogCiAgICAg
ICAgIGZvbnREZXNjcmlwdGlvbi5zZXRDb21tb25MaWdhdHVyZXNTdGF0ZShwYXJlbnRGb250RGVz
Y3JpcHRpb24uY29tbW9uTGlnYXR1cmVzU3RhdGUoKSk7CiAgICAgICAgIGZvbnREZXNjcmlwdGlv
bi5zZXREaXNjcmV0aW9uYXJ5TGlnYXR1cmVzU3RhdGUocGFyZW50Rm9udERlc2NyaXB0aW9uLmRp
c2NyZXRpb25hcnlMaWdhdHVyZXNTdGF0ZSgpKTsKICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNl
dEhpc3RvcmljYWxMaWdhdHVyZXNTdGF0ZShwYXJlbnRGb250RGVzY3JpcHRpb24uaGlzdG9yaWNh
bExpZ2F0dXJlc1N0YXRlKCkpOwogCi0gICAgICAgIHNlbGVjdG9yLT5zZXRGb250RGVzY3JpcHRp
b24oZm9udERlc2NyaXB0aW9uKTsKKyAgICAgICAgc3R5bGVSZXNvbHZlci0+c2V0Rm9udERlc2Ny
aXB0aW9uKGZvbnREZXNjcmlwdGlvbik7CiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQgYXBwbHlJ
bml0aWFsVmFsdWUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IpCisgICAgc3RhdGljIHZvaWQgYXBw
bHlJbml0aWFsVmFsdWUoU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlcikKICAgICB7Ci0gICAg
ICAgIEZvbnREZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb24gPSBzZWxlY3Rvci0+Zm9udERlc2Ny
aXB0aW9uKCk7CisgICAgICAgIEZvbnREZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb24gPSBzdHls
ZVJlc29sdmVyLT5mb250RGVzY3JpcHRpb24oKTsKIAogICAgICAgICBmb250RGVzY3JpcHRpb24u
c2V0Q29tbW9uTGlnYXR1cmVzU3RhdGUoRm9udERlc2NyaXB0aW9uOjpOb3JtYWxMaWdhdHVyZXNT
dGF0ZSk7CiAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXREaXNjcmV0aW9uYXJ5TGlnYXR1cmVz
U3RhdGUoRm9udERlc2NyaXB0aW9uOjpOb3JtYWxMaWdhdHVyZXNTdGF0ZSk7CiAgICAgICAgIGZv
bnREZXNjcmlwdGlvbi5zZXRIaXN0b3JpY2FsTGlnYXR1cmVzU3RhdGUoRm9udERlc2NyaXB0aW9u
OjpOb3JtYWxMaWdhdHVyZXNTdGF0ZSk7CiAKLSAgICAgICAgc2VsZWN0b3ItPnNldEZvbnREZXNj
cmlwdGlvbihmb250RGVzY3JpcHRpb24pOworICAgICAgICBzdHlsZVJlc29sdmVyLT5zZXRGb250
RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKTsKICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCBh
cHBseVZhbHVlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBDU1NWYWx1ZSogdmFsdWUpCisgICAg
c3RhdGljIHZvaWQgYXBwbHlWYWx1ZShTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyLCBDU1NW
YWx1ZSogdmFsdWUpCiAgICAgewogICAgICAgICBGb250RGVzY3JpcHRpb246OkxpZ2F0dXJlc1N0
YXRlIGNvbW1vbkxpZ2F0dXJlc1N0YXRlID0gRm9udERlc2NyaXB0aW9uOjpOb3JtYWxMaWdhdHVy
ZXNTdGF0ZTsKICAgICAgICAgRm9udERlc2NyaXB0aW9uOjpMaWdhdHVyZXNTdGF0ZSBkaXNjcmV0
aW9uYXJ5TGlnYXR1cmVzU3RhdGUgPSBGb250RGVzY3JpcHRpb246Ok5vcm1hbExpZ2F0dXJlc1N0
YXRlOwpAQCAtODQ5LDExICs4NDksMTEgQEAgcHVibGljOgogICAgICAgICB9CiAjZW5kaWYKIAot
ICAgICAgICBGb250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uID0gc2VsZWN0b3ItPmZvbnRE
ZXNjcmlwdGlvbigpOworICAgICAgICBGb250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uID0g
c3R5bGVSZXNvbHZlci0+Zm9udERlc2NyaXB0aW9uKCk7CiAgICAgICAgIGZvbnREZXNjcmlwdGlv
bi5zZXRDb21tb25MaWdhdHVyZXNTdGF0ZShjb21tb25MaWdhdHVyZXNTdGF0ZSk7CiAgICAgICAg
IGZvbnREZXNjcmlwdGlvbi5zZXREaXNjcmV0aW9uYXJ5TGlnYXR1cmVzU3RhdGUoZGlzY3JldGlv
bmFyeUxpZ2F0dXJlc1N0YXRlKTsKICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldEhpc3Rvcmlj
YWxMaWdhdHVyZXNTdGF0ZShoaXN0b3JpY2FsTGlnYXR1cmVzU3RhdGUpOwotICAgICAgICBzZWxl
Y3Rvci0+c2V0Rm9udERlc2NyaXB0aW9uKGZvbnREZXNjcmlwdGlvbik7CisgICAgICAgIHN0eWxl
UmVzb2x2ZXItPnNldEZvbnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pOwogICAgIH0KIAog
ICAgIHN0YXRpYyBQcm9wZXJ0eUhhbmRsZXIgY3JlYXRlSGFuZGxlcigpCkBAIC04NjksMTMgKzg2
OSwxMyBAQCB0ZW1wbGF0ZSA8Qm9yZGVySW1hZ2VUeXBlIGJvcmRlckltYWdlVHlwZSwKICAgICAg
ICAgICB2b2lkIChSZW5kZXJTdHlsZTo6KnNldHRlckZ1bmN0aW9uKShjb25zdCBOaW5lUGllY2VJ
bWFnZSYpPgogY2xhc3MgQXBwbHlQcm9wZXJ0eUJvcmRlckltYWdlIHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgdm9pZCBhcHBseVZhbHVlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBDU1NWYWx1ZSog
dmFsdWUpCisgICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZShTdHlsZVJlc29sdmVyKiBzdHlsZVJl
c29sdmVyLCBDU1NWYWx1ZSogdmFsdWUpCiAgICAgewogICAgICAgICBOaW5lUGllY2VJbWFnZSBp
bWFnZTsKICAgICAgICAgaWYgKGJvcmRlckltYWdlVHlwZSA9PSBNYXNrKQogICAgICAgICAgICAg
aW1hZ2Uuc2V0TWFza0RlZmF1bHRzKCk7Ci0gICAgICAgIHNlbGVjdG9yLT5tYXBOaW5lUGllY2VJ
bWFnZShwcm9wZXJ0eSwgdmFsdWUsIGltYWdlKTsKLSAgICAgICAgKHNlbGVjdG9yLT5zdHlsZSgp
LT4qc2V0dGVyRnVuY3Rpb24pKGltYWdlKTsKKyAgICAgICAgc3R5bGVSZXNvbHZlci0+bWFwTmlu
ZVBpZWNlSW1hZ2UocHJvcGVydHksIHZhbHVlLCBpbWFnZSk7CisgICAgICAgIChzdHlsZVJlc29s
dmVyLT5zdHlsZSgpLT4qc2V0dGVyRnVuY3Rpb24pKGltYWdlKTsKICAgICB9CiAKICAgICBzdGF0
aWMgUHJvcGVydHlIYW5kbGVyIGNyZWF0ZUhhbmRsZXIoKQpAQCAtODkyLDI5ICs4OTIsMjkgQEAg
cHJpdmF0ZToKICAgICBzdGF0aWMgaW5saW5lIGNvbnN0IE5pbmVQaWVjZUltYWdlJiBnZXRWYWx1
ZShSZW5kZXJTdHlsZSogc3R5bGUpIHsgcmV0dXJuIHR5cGUgPT0gSW1hZ2UgPyBzdHlsZS0+Ym9y
ZGVySW1hZ2UoKSA6IHN0eWxlLT5tYXNrQm94SW1hZ2UoKTsgfQogICAgIHN0YXRpYyBpbmxpbmUg
dm9pZCBzZXRWYWx1ZShSZW5kZXJTdHlsZSogc3R5bGUsIGNvbnN0IE5pbmVQaWVjZUltYWdlJiB2
YWx1ZSkgeyByZXR1cm4gdHlwZSA9PSBJbWFnZSA/IHN0eWxlLT5zZXRCb3JkZXJJbWFnZSh2YWx1
ZSkgOiBzdHlsZS0+c2V0TWFza0JveEltYWdlKHZhbHVlKTsgfQogcHVibGljOgotICAgIHN0YXRp
YyB2b2lkIGFwcGx5SW5oZXJpdFZhbHVlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yKQorICAgIHN0
YXRpYyB2b2lkIGFwcGx5SW5oZXJpdFZhbHVlKFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIp
CiAgICAgewotICAgICAgICBOaW5lUGllY2VJbWFnZSBpbWFnZShnZXRWYWx1ZShzZWxlY3Rvci0+
c3R5bGUoKSkpOworICAgICAgICBOaW5lUGllY2VJbWFnZSBpbWFnZShnZXRWYWx1ZShzdHlsZVJl
c29sdmVyLT5zdHlsZSgpKSk7CiAgICAgICAgIHN3aXRjaCAobW9kaWZpZXIpIHsKICAgICAgICAg
Y2FzZSBPdXRzZXQ6Ci0gICAgICAgICAgICBpbWFnZS5jb3B5T3V0c2V0RnJvbShnZXRWYWx1ZShz
ZWxlY3Rvci0+cGFyZW50U3R5bGUoKSkpOworICAgICAgICAgICAgaW1hZ2UuY29weU91dHNldEZy
b20oZ2V0VmFsdWUoc3R5bGVSZXNvbHZlci0+cGFyZW50U3R5bGUoKSkpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgUmVwZWF0OgotICAgICAgICAgICAgaW1hZ2UuY29weVJlcGVh
dEZyb20oZ2V0VmFsdWUoc2VsZWN0b3ItPnBhcmVudFN0eWxlKCkpKTsKKyAgICAgICAgICAgIGlt
YWdlLmNvcHlSZXBlYXRGcm9tKGdldFZhbHVlKHN0eWxlUmVzb2x2ZXItPnBhcmVudFN0eWxlKCkp
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFNsaWNlOgotICAgICAgICAgICAg
aW1hZ2UuY29weUltYWdlU2xpY2VzRnJvbShnZXRWYWx1ZShzZWxlY3Rvci0+cGFyZW50U3R5bGUo
KSkpOworICAgICAgICAgICAgaW1hZ2UuY29weUltYWdlU2xpY2VzRnJvbShnZXRWYWx1ZShzdHls
ZVJlc29sdmVyLT5wYXJlbnRTdHlsZSgpKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBXaWR0aDoKLSAgICAgICAgICAgIGltYWdlLmNvcHlCb3JkZXJTbGljZXNGcm9tKGdldFZh
bHVlKHNlbGVjdG9yLT5wYXJlbnRTdHlsZSgpKSk7CisgICAgICAgICAgICBpbWFnZS5jb3B5Qm9y
ZGVyU2xpY2VzRnJvbShnZXRWYWx1ZShzdHlsZVJlc29sdmVyLT5wYXJlbnRTdHlsZSgpKSk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBzZXRWYWx1ZShzZWxlY3Rvci0+
c3R5bGUoKSwgaW1hZ2UpOworICAgICAgICBzZXRWYWx1ZShzdHlsZVJlc29sdmVyLT5zdHlsZSgp
LCBpbWFnZSk7CiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQgYXBwbHlJbml0aWFsVmFsdWUoU3R5
bGVSZXNvbHZlciogc2VsZWN0b3IpCisgICAgc3RhdGljIHZvaWQgYXBwbHlJbml0aWFsVmFsdWUo
U3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlcikKICAgICB7Ci0gICAgICAgIE5pbmVQaWVjZUlt
YWdlIGltYWdlKGdldFZhbHVlKHNlbGVjdG9yLT5zdHlsZSgpKSk7CisgICAgICAgIE5pbmVQaWVj
ZUltYWdlIGltYWdlKGdldFZhbHVlKHN0eWxlUmVzb2x2ZXItPnN0eWxlKCkpKTsKICAgICAgICAg
c3dpdGNoIChtb2RpZmllcikgewogICAgICAgICBjYXNlIE91dHNldDoKICAgICAgICAgICAgIGlt
YWdlLnNldE91dHNldChMZW5ndGhCb3goMCkpOwpAQCAtOTMzLDI3ICs5MzMsMjcgQEAgcHVibGlj
OgogICAgICAgICAgICAgaW1hZ2Uuc2V0Qm9yZGVyU2xpY2VzKHR5cGUgPT0gSW1hZ2UgPyBMZW5n
dGhCb3goTGVuZ3RoKDEsIFJlbGF0aXZlKSwgTGVuZ3RoKDEsIFJlbGF0aXZlKSwgTGVuZ3RoKDEs
IFJlbGF0aXZlKSwgTGVuZ3RoKDEsIFJlbGF0aXZlKSkgOiBMZW5ndGhCb3goKSk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBzZXRWYWx1ZShzZWxlY3Rvci0+c3R5bGUo
KSwgaW1hZ2UpOworICAgICAgICBzZXRWYWx1ZShzdHlsZVJlc29sdmVyLT5zdHlsZSgpLCBpbWFn
ZSk7CiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZShTdHlsZVJlc29sdmVyKiBz
ZWxlY3RvciwgQ1NTVmFsdWUqIHZhbHVlKQorICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUoU3R5
bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUqIHZhbHVlKQogICAgIHsKLSAgICAg
ICAgTmluZVBpZWNlSW1hZ2UgaW1hZ2UoZ2V0VmFsdWUoc2VsZWN0b3ItPnN0eWxlKCkpKTsKKyAg
ICAgICAgTmluZVBpZWNlSW1hZ2UgaW1hZ2UoZ2V0VmFsdWUoc3R5bGVSZXNvbHZlci0+c3R5bGUo
KSkpOwogICAgICAgICBzd2l0Y2ggKG1vZGlmaWVyKSB7CiAgICAgICAgIGNhc2UgT3V0c2V0Ogot
ICAgICAgICAgICAgaW1hZ2Uuc2V0T3V0c2V0KHNlbGVjdG9yLT5tYXBOaW5lUGllY2VJbWFnZVF1
YWQodmFsdWUpKTsKKyAgICAgICAgICAgIGltYWdlLnNldE91dHNldChzdHlsZVJlc29sdmVyLT5t
YXBOaW5lUGllY2VJbWFnZVF1YWQodmFsdWUpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIFJlcGVhdDoKLSAgICAgICAgICAgIHNlbGVjdG9yLT5tYXBOaW5lUGllY2VJbWFnZVJl
cGVhdCh2YWx1ZSwgaW1hZ2UpOworICAgICAgICAgICAgc3R5bGVSZXNvbHZlci0+bWFwTmluZVBp
ZWNlSW1hZ2VSZXBlYXQodmFsdWUsIGltYWdlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIFNsaWNlOgotICAgICAgICAgICAgc2VsZWN0b3ItPm1hcE5pbmVQaWVjZUltYWdlU2xp
Y2UodmFsdWUsIGltYWdlKTsKKyAgICAgICAgICAgIHN0eWxlUmVzb2x2ZXItPm1hcE5pbmVQaWVj
ZUltYWdlU2xpY2UodmFsdWUsIGltYWdlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBj
YXNlIFdpZHRoOgotICAgICAgICAgICAgaW1hZ2Uuc2V0Qm9yZGVyU2xpY2VzKHNlbGVjdG9yLT5t
YXBOaW5lUGllY2VJbWFnZVF1YWQodmFsdWUpKTsKKyAgICAgICAgICAgIGltYWdlLnNldEJvcmRl
clNsaWNlcyhzdHlsZVJlc29sdmVyLT5tYXBOaW5lUGllY2VJbWFnZVF1YWQodmFsdWUpKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIHNldFZhbHVlKHNlbGVjdG9yLT5z
dHlsZSgpLCBpbWFnZSk7CisgICAgICAgIHNldFZhbHVlKHN0eWxlUmVzb2x2ZXItPnN0eWxlKCks
IGltYWdlKTsKICAgICB9CiAKICAgICBzdGF0aWMgUHJvcGVydHlIYW5kbGVyIGNyZWF0ZUhhbmRs
ZXIoKSB7IHJldHVybiBQcm9wZXJ0eUhhbmRsZXIoJmFwcGx5SW5oZXJpdFZhbHVlLCAmYXBwbHlJ
bml0aWFsVmFsdWUsICZhcHBseVZhbHVlKTsgfQpAQCAtOTYyLDcgKzk2Miw3IEBAIHB1YmxpYzoK
IHRlbXBsYXRlIDxDU1NQcm9wZXJ0eUlEIGlkLCBTdHlsZUltYWdlKiAoUmVuZGVyU3R5bGU6Oipn
ZXR0ZXJGdW5jdGlvbikoKSBjb25zdCwgdm9pZCAoUmVuZGVyU3R5bGU6OipzZXR0ZXJGdW5jdGlv
bikoUGFzc1JlZlB0cjxTdHlsZUltYWdlPiksIFN0eWxlSW1hZ2UqICgqaW5pdGlhbEZ1bmN0aW9u
KSgpPgogY2xhc3MgQXBwbHlQcm9wZXJ0eUJvcmRlckltYWdlU291cmNlIHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBDU1NWYWx1
ZSogdmFsdWUpIHsgKHNlbGVjdG9yLT5zdHlsZSgpLT4qc2V0dGVyRnVuY3Rpb24pKHNlbGVjdG9y
LT5zdHlsZUltYWdlKGlkLCB2YWx1ZSkpOyB9CisgICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZShT
dHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyLCBDU1NWYWx1ZSogdmFsdWUpIHsgKHN0eWxlUmVz
b2x2ZXItPnN0eWxlKCktPipzZXR0ZXJGdW5jdGlvbikoc3R5bGVSZXNvbHZlci0+c3R5bGVJbWFn
ZShpZCwgdmFsdWUpKTsgfQogICAgIHN0YXRpYyBQcm9wZXJ0eUhhbmRsZXIgY3JlYXRlSGFuZGxl
cigpCiAgICAgewogICAgICAgICBQcm9wZXJ0eUhhbmRsZXIgaGFuZGxlciA9IEFwcGx5UHJvcGVy
dHlEZWZhdWx0QmFzZTxTdHlsZUltYWdlKiwgZ2V0dGVyRnVuY3Rpb24sIFBhc3NSZWZQdHI8U3R5
bGVJbWFnZT4sIHNldHRlckZ1bmN0aW9uLCBTdHlsZUltYWdlKiwgaW5pdGlhbEZ1bmN0aW9uPjo6
Y3JlYXRlSGFuZGxlcigpOwpAQCAtOTc1LDEwICs5NzUsMTAgQEAgdGVtcGxhdGUgPENvdW50ZXJC
ZWhhdmlvciBjb3VudGVyQmVoYXZpb3I+CiBjbGFzcyBBcHBseVByb3BlcnR5Q291bnRlciB7CiBw
dWJsaWM6CiAgICAgc3RhdGljIHZvaWQgZW1wdHlGdW5jdGlvbihTdHlsZVJlc29sdmVyKikgeyB9
Ci0gICAgc3RhdGljIHZvaWQgYXBwbHlJbmhlcml0VmFsdWUoU3R5bGVSZXNvbHZlciogc2VsZWN0
b3IpCisgICAgc3RhdGljIHZvaWQgYXBwbHlJbmhlcml0VmFsdWUoU3R5bGVSZXNvbHZlciogc3R5
bGVSZXNvbHZlcikKICAgICB7Ci0gICAgICAgIENvdW50ZXJEaXJlY3RpdmVNYXAmIG1hcCA9IHNl
bGVjdG9yLT5zdHlsZSgpLT5hY2Nlc3NDb3VudGVyRGlyZWN0aXZlcygpOwotICAgICAgICBDb3Vu
dGVyRGlyZWN0aXZlTWFwJiBwYXJlbnRNYXAgPSBzZWxlY3Rvci0+cGFyZW50U3R5bGUoKS0+YWNj
ZXNzQ291bnRlckRpcmVjdGl2ZXMoKTsKKyAgICAgICAgQ291bnRlckRpcmVjdGl2ZU1hcCYgbWFw
ID0gc3R5bGVSZXNvbHZlci0+c3R5bGUoKS0+YWNjZXNzQ291bnRlckRpcmVjdGl2ZXMoKTsKKyAg
ICAgICAgQ291bnRlckRpcmVjdGl2ZU1hcCYgcGFyZW50TWFwID0gc3R5bGVSZXNvbHZlci0+cGFy
ZW50U3R5bGUoKS0+YWNjZXNzQ291bnRlckRpcmVjdGl2ZXMoKTsKIAogICAgICAgICB0eXBlZGVm
IENvdW50ZXJEaXJlY3RpdmVNYXA6Oml0ZXJhdG9yIEl0ZXJhdG9yOwogICAgICAgICBJdGVyYXRv
ciBlbmQgPSBwYXJlbnRNYXAuZW5kKCk7CkBAIC0xMDAyLDE0ICsxMDAyLDE0IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KLSAgICBzdGF0aWMgdm9pZCBhcHBseVZh
bHVlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBDU1NWYWx1ZSogdmFsdWUpCisgICAgc3RhdGlj
IHZvaWQgYXBwbHlWYWx1ZShTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyLCBDU1NWYWx1ZSog
dmFsdWUpCiAgICAgewogICAgICAgICBpZiAoIXZhbHVlLT5pc1ZhbHVlTGlzdCgpKQogICAgICAg
ICAgICAgcmV0dXJuOwogCiAgICAgICAgIENTU1ZhbHVlTGlzdCogbGlzdCA9IHN0YXRpY19jYXN0
PENTU1ZhbHVlTGlzdCo+KHZhbHVlKTsKIAotICAgICAgICBDb3VudGVyRGlyZWN0aXZlTWFwJiBt
YXAgPSBzZWxlY3Rvci0+c3R5bGUoKS0+YWNjZXNzQ291bnRlckRpcmVjdGl2ZXMoKTsKKyAgICAg
ICAgQ291bnRlckRpcmVjdGl2ZU1hcCYgbWFwID0gc3R5bGVSZXNvbHZlci0+c3R5bGUoKS0+YWNj
ZXNzQ291bnRlckRpcmVjdGl2ZXMoKTsKICAgICAgICAgdHlwZWRlZiBDb3VudGVyRGlyZWN0aXZl
TWFwOjppdGVyYXRvciBJdGVyYXRvcjsKIAogICAgICAgICBJdGVyYXRvciBlbmQgPSBtYXAuZW5k
KCk7CkBAIC0xMDUzLDQyICsxMDUzLDQyIEBAIHB1YmxpYzoKIAogY2xhc3MgQXBwbHlQcm9wZXJ0
eUN1cnNvciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHZvaWQgYXBwbHlJbmhlcml0VmFsdWUoU3R5
bGVSZXNvbHZlciogc2VsZWN0b3IpCisgICAgc3RhdGljIHZvaWQgYXBwbHlJbmhlcml0VmFsdWUo
U3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlcikKICAgICB7Ci0gICAgICAgIHNlbGVjdG9yLT5z
dHlsZSgpLT5zZXRDdXJzb3Ioc2VsZWN0b3ItPnBhcmVudFN0eWxlKCktPmN1cnNvcigpKTsKLSAg
ICAgICAgc2VsZWN0b3ItPnN0eWxlKCktPnNldEN1cnNvckxpc3Qoc2VsZWN0b3ItPnBhcmVudFN0
eWxlKCktPmN1cnNvcnMoKSk7CisgICAgICAgIHN0eWxlUmVzb2x2ZXItPnN0eWxlKCktPnNldEN1
cnNvcihzdHlsZVJlc29sdmVyLT5wYXJlbnRTdHlsZSgpLT5jdXJzb3IoKSk7CisgICAgICAgIHN0
eWxlUmVzb2x2ZXItPnN0eWxlKCktPnNldEN1cnNvckxpc3Qoc3R5bGVSZXNvbHZlci0+cGFyZW50
U3R5bGUoKS0+Y3Vyc29ycygpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCBhcHBseUluaXRp
YWxWYWx1ZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvcikKKyAgICBzdGF0aWMgdm9pZCBhcHBseUlu
aXRpYWxWYWx1ZShTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyKQogICAgIHsKLSAgICAgICAg
c2VsZWN0b3ItPnN0eWxlKCktPmNsZWFyQ3Vyc29yTGlzdCgpOwotICAgICAgICBzZWxlY3Rvci0+
c3R5bGUoKS0+c2V0Q3Vyc29yKFJlbmRlclN0eWxlOjppbml0aWFsQ3Vyc29yKCkpOworICAgICAg
ICBzdHlsZVJlc29sdmVyLT5zdHlsZSgpLT5jbGVhckN1cnNvckxpc3QoKTsKKyAgICAgICAgc3R5
bGVSZXNvbHZlci0+c3R5bGUoKS0+c2V0Q3Vyc29yKFJlbmRlclN0eWxlOjppbml0aWFsQ3Vyc29y
KCkpOwogICAgIH0KIAotICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUoU3R5bGVSZXNvbHZlciog
c2VsZWN0b3IsIENTU1ZhbHVlKiB2YWx1ZSkKKyAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlKFN0
eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlKiB2YWx1ZSkKICAgICB7Ci0gICAg
ICAgIHNlbGVjdG9yLT5zdHlsZSgpLT5jbGVhckN1cnNvckxpc3QoKTsKKyAgICAgICAgc3R5bGVS
ZXNvbHZlci0+c3R5bGUoKS0+Y2xlYXJDdXJzb3JMaXN0KCk7CiAgICAgICAgIGlmICh2YWx1ZS0+
aXNWYWx1ZUxpc3QoKSkgewogICAgICAgICAgICAgQ1NTVmFsdWVMaXN0KiBsaXN0ID0gc3RhdGlj
X2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4odmFsdWUpOwogICAgICAgICAgICAgaW50IGxlbiA9IGxpc3Qt
Pmxlbmd0aCgpOwotICAgICAgICAgICAgc2VsZWN0b3ItPnN0eWxlKCktPnNldEN1cnNvcihDVVJT
T1JfQVVUTyk7CisgICAgICAgICAgICBzdHlsZVJlc29sdmVyLT5zdHlsZSgpLT5zZXRDdXJzb3Io
Q1VSU09SX0FVVE8pOwogICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW47IGkrKykg
ewogICAgICAgICAgICAgICAgIENTU1ZhbHVlKiBpdGVtID0gbGlzdC0+aXRlbVdpdGhvdXRCb3Vu
ZHNDaGVjayhpKTsKICAgICAgICAgICAgICAgICBpZiAoaXRlbS0+aXNDdXJzb3JJbWFnZVZhbHVl
KCkpIHsKICAgICAgICAgICAgICAgICAgICAgQ1NTQ3Vyc29ySW1hZ2VWYWx1ZSogaW1hZ2UgPSBz
dGF0aWNfY2FzdDxDU1NDdXJzb3JJbWFnZVZhbHVlKj4oaXRlbSk7Ci0gICAgICAgICAgICAgICAg
ICAgIGlmIChpbWFnZS0+dXBkYXRlSWZTVkdDdXJzb3JJc1VzZWQoc2VsZWN0b3ItPmVsZW1lbnQo
KSkpIC8vIEVsZW1lbnRzIHdpdGggU1ZHIGN1cnNvcnMgYXJlIG5vdCBhbGxvd2VkIHRvIHNoYXJl
IHN0eWxlLgotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3ItPnN0eWxlKCktPnNldFVu
aXF1ZSgpOwotICAgICAgICAgICAgICAgICAgICBzZWxlY3Rvci0+c3R5bGUoKS0+YWRkQ3Vyc29y
KHNlbGVjdG9yLT5jYWNoZWRPclBlbmRpbmdGcm9tVmFsdWUoQ1NTUHJvcGVydHlDdXJzb3IsIGlt
YWdlKSwgaW1hZ2UtPmhvdFNwb3QoKSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChpbWFnZS0+
dXBkYXRlSWZTVkdDdXJzb3JJc1VzZWQoc3R5bGVSZXNvbHZlci0+ZWxlbWVudCgpKSkgLy8gRWxl
bWVudHMgd2l0aCBTVkcgY3Vyc29ycyBhcmUgbm90IGFsbG93ZWQgdG8gc2hhcmUgc3R5bGUuCisg
ICAgICAgICAgICAgICAgICAgICAgICBzdHlsZVJlc29sdmVyLT5zdHlsZSgpLT5zZXRVbmlxdWUo
KTsKKyAgICAgICAgICAgICAgICAgICAgc3R5bGVSZXNvbHZlci0+c3R5bGUoKS0+YWRkQ3Vyc29y
KHN0eWxlUmVzb2x2ZXItPmNhY2hlZE9yUGVuZGluZ0Zyb21WYWx1ZShDU1NQcm9wZXJ0eUN1cnNv
ciwgaW1hZ2UpLCBpbWFnZS0+aG90U3BvdCgpKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgaWYg
KGl0ZW0tPmlzUHJpbWl0aXZlVmFsdWUoKSkgewogICAgICAgICAgICAgICAgICAgICBDU1NQcmlt
aXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZSo+KGl0ZW0pOwogICAgICAgICAgICAgICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmlzSWRl
bnQoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yLT5zdHlsZSgpLT5zZXRDdXJz
b3IoKnByaW1pdGl2ZVZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlUmVzb2x2
ZXItPnN0eWxlKCktPnNldEN1cnNvcigqcHJpbWl0aXZlVmFsdWUpOwogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVW
YWx1ZSgpKSB7CiAgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUg
PSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKLSAgICAgICAgICAgIGlm
IChwcmltaXRpdmVWYWx1ZS0+aXNJZGVudCgpICYmIHNlbGVjdG9yLT5zdHlsZSgpLT5jdXJzb3Io
KSAhPSBFQ3Vyc29yKCpwcmltaXRpdmVWYWx1ZSkpCi0gICAgICAgICAgICAgICAgc2VsZWN0b3It
PnN0eWxlKCktPnNldEN1cnNvcigqcHJpbWl0aXZlVmFsdWUpOworICAgICAgICAgICAgaWYgKHBy
aW1pdGl2ZVZhbHVlLT5pc0lkZW50KCkgJiYgc3R5bGVSZXNvbHZlci0+c3R5bGUoKS0+Y3Vyc29y
KCkgIT0gRUN1cnNvcigqcHJpbWl0aXZlVmFsdWUpKQorICAgICAgICAgICAgICAgIHN0eWxlUmVz
b2x2ZXItPnN0eWxlKCktPnNldEN1cnNvcigqcHJpbWl0aXZlVmFsdWUpOwogICAgICAgICB9CiAg
ICAgfQogCkBAIC0xMDk3LDcgKzEwOTcsNyBAQCBwdWJsaWM6CiAKIGNsYXNzIEFwcGx5UHJvcGVy
dHlUZXh0QWxpZ24gewogcHVibGljOgotICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUoU3R5bGVS
ZXNvbHZlciogc2VsZWN0b3IsIENTU1ZhbHVlKiB2YWx1ZSkKKyAgICBzdGF0aWMgdm9pZCBhcHBs
eVZhbHVlKFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlKiB2YWx1ZSkKICAg
ICB7CiAgICAgICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgICAg
IHJldHVybjsKQEAgLTExMDUsMTMgKzExMDUsMTMgQEAgcHVibGljOgogICAgICAgICBDU1NQcmlt
aXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZSo+KHZhbHVlKTsKIAogICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgIT0g
Q1NTVmFsdWVXZWJraXRNYXRjaFBhcmVudCkKLSAgICAgICAgICAgIHNlbGVjdG9yLT5zdHlsZSgp
LT5zZXRUZXh0QWxpZ24oKnByaW1pdGl2ZVZhbHVlKTsKLSAgICAgICAgZWxzZSBpZiAoc2VsZWN0
b3ItPnBhcmVudFN0eWxlKCktPnRleHRBbGlnbigpID09IFRBU1RBUlQpCi0gICAgICAgICAgICBz
ZWxlY3Rvci0+c3R5bGUoKS0+c2V0VGV4dEFsaWduKHNlbGVjdG9yLT5wYXJlbnRTdHlsZSgpLT5p
c0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBMRUZUIDogUklHSFQpOwotICAgICAgICBlbHNlIGlm
IChzZWxlY3Rvci0+cGFyZW50U3R5bGUoKS0+dGV4dEFsaWduKCkgPT0gVEFFTkQpCi0gICAgICAg
ICAgICBzZWxlY3Rvci0+c3R5bGUoKS0+c2V0VGV4dEFsaWduKHNlbGVjdG9yLT5wYXJlbnRTdHls
ZSgpLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBSSUdIVCA6IExFRlQpOworICAgICAgICAg
ICAgc3R5bGVSZXNvbHZlci0+c3R5bGUoKS0+c2V0VGV4dEFsaWduKCpwcmltaXRpdmVWYWx1ZSk7
CisgICAgICAgIGVsc2UgaWYgKHN0eWxlUmVzb2x2ZXItPnBhcmVudFN0eWxlKCktPnRleHRBbGln
bigpID09IFRBU1RBUlQpCisgICAgICAgICAgICBzdHlsZVJlc29sdmVyLT5zdHlsZSgpLT5zZXRU
ZXh0QWxpZ24oc3R5bGVSZXNvbHZlci0+cGFyZW50U3R5bGUoKS0+aXNMZWZ0VG9SaWdodERpcmVj
dGlvbigpID8gTEVGVCA6IFJJR0hUKTsKKyAgICAgICAgZWxzZSBpZiAoc3R5bGVSZXNvbHZlci0+
cGFyZW50U3R5bGUoKS0+dGV4dEFsaWduKCkgPT0gVEFFTkQpCisgICAgICAgICAgICBzdHlsZVJl
c29sdmVyLT5zdHlsZSgpLT5zZXRUZXh0QWxpZ24oc3R5bGVSZXNvbHZlci0+cGFyZW50U3R5bGUo
KS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gUklHSFQgOiBMRUZUKTsKICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgc2VsZWN0b3ItPnN0eWxlKCktPnNldFRleHRBbGlnbihzZWxlY3Rvci0+
cGFyZW50U3R5bGUoKS0+dGV4dEFsaWduKCkpOworICAgICAgICAgICAgc3R5bGVSZXNvbHZlci0+
c3R5bGUoKS0+c2V0VGV4dEFsaWduKHN0eWxlUmVzb2x2ZXItPnBhcmVudFN0eWxlKCktPnRleHRB
bGlnbigpKTsKICAgICB9CiAgICAgc3RhdGljIFByb3BlcnR5SGFuZGxlciBjcmVhdGVIYW5kbGVy
KCkKICAgICB7CkBAIC0xMTIyLDcgKzExMjIsNyBAQCBwdWJsaWM6CiAKIGNsYXNzIEFwcGx5UHJv
cGVydHlUZXh0RGVjb3JhdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1
ZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvciwgQ1NTVmFsdWUqIHZhbHVlKQorICAgIHN0YXRpYyB2
b2lkIGFwcGx5VmFsdWUoU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUqIHZh
bHVlKQogICAgIHsKICAgICAgICAgRVRleHREZWNvcmF0aW9uIHQgPSBSZW5kZXJTdHlsZTo6aW5p
dGlhbFRleHREZWNvcmF0aW9uKCk7CiAgICAgICAgIGZvciAoQ1NTVmFsdWVMaXN0SXRlcmF0b3Ig
aSh2YWx1ZSk7IGkuaGFzTW9yZSgpOyBpLmFkdmFuY2UoKSkgewpAQCAtMTEzMCw3ICsxMTMwLDcg
QEAgcHVibGljOgogICAgICAgICAgICAgQVNTRVJUKGl0ZW0tPmlzUHJpbWl0aXZlVmFsdWUoKSk7
CiAgICAgICAgICAgICB0IHw9ICpzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KGl0ZW0p
OwogICAgICAgICB9Ci0gICAgICAgIHNlbGVjdG9yLT5zdHlsZSgpLT5zZXRUZXh0RGVjb3JhdGlv
bih0KTsKKyAgICAgICAgc3R5bGVSZXNvbHZlci0+c3R5bGUoKS0+c2V0VGV4dERlY29yYXRpb24o
dCk7CiAgICAgfQogICAgIHN0YXRpYyBQcm9wZXJ0eUhhbmRsZXIgY3JlYXRlSGFuZGxlcigpCiAg
ICAgewpAQCAtMTE0MSw3ICsxMTQxLDcgQEAgcHVibGljOgogCiBjbGFzcyBBcHBseVByb3BlcnR5
VW5pY29kZUJpZGkgewogcHVibGljOgotICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUoU3R5bGVS
ZXNvbHZlciogc2VsZWN0b3IsIENTU1ZhbHVlKiB2YWx1ZSkKKyAgICBzdGF0aWMgdm9pZCBhcHBs
eVZhbHVlKFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlKiB2YWx1ZSkKICAg
ICB7CiAgICAgICAgIGlmICh2YWx1ZS0+aXNWYWx1ZUxpc3QoKSkgewogICAgICAgICAgICAgRVVu
aWNvZGVCaWRpIHJlbmRlcmVyVW5pY29kZUJpZGkgPSBSZW5kZXJTdHlsZTo6aW5pdGlhbFVuaWNv
ZGVCaWRpKCk7CkBAIC0xMTU1LDEyICsxMTU1LDEyIEBAIHB1YmxpYzoKICAgICAgICAgICAgICAg
ICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIHJlbmRlcmVyVW5pY29kZUJpZGkgPSBjdXJyZW50
VmFsdWU7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBzZWxlY3Rvci0+c3R5bGUoKS0+c2V0
VW5pY29kZUJpZGkocmVuZGVyZXJVbmljb2RlQmlkaSk7CisgICAgICAgICAgICBzdHlsZVJlc29s
dmVyLT5zdHlsZSgpLT5zZXRVbmljb2RlQmlkaShyZW5kZXJlclVuaWNvZGVCaWRpKTsKICAgICAg
ICAgfQogICAgICAgICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0
YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOwotICAgICAgICBzZWxlY3Rvci0+
c3R5bGUoKS0+c2V0VW5pY29kZUJpZGkoKnByaW1pdGl2ZVZhbHVlKTsKKyAgICAgICAgc3R5bGVS
ZXNvbHZlci0+c3R5bGUoKS0+c2V0VW5pY29kZUJpZGkoKnByaW1pdGl2ZVZhbHVlKTsKICAgICB9
CiAgICAgc3RhdGljIFByb3BlcnR5SGFuZGxlciBjcmVhdGVIYW5kbGVyKCkKICAgICB7CkBAIC0x
MTcxLDcgKzExNzEsNyBAQCBwdWJsaWM6CiAKIGNsYXNzIEFwcGx5UHJvcGVydHlMaW5lSGVpZ2h0
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlKFN0eWxlUmVzb2x2ZXIqIHNl
bGVjdG9yLCBDU1NWYWx1ZSogdmFsdWUpCisgICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZShTdHls
ZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyLCBDU1NWYWx1ZSogdmFsdWUpCiAgICAgewogICAgICAg
ICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAgICAgICAgICByZXR1cm47CkBA
IC0xMTgyLDE1ICsxMTgyLDE1IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVl
LT5nZXRJZGVudCgpID09IENTU1ZhbHVlTm9ybWFsKQogICAgICAgICAgICAgbGluZUhlaWdodCA9
IExlbmd0aCgtMTAwLjAsIFBlcmNlbnQpOwogICAgICAgICBlbHNlIGlmIChwcmltaXRpdmVWYWx1
ZS0+aXNMZW5ndGgoKSkgewotICAgICAgICAgICAgZG91YmxlIG11bHRpcGxpZXIgPSBzZWxlY3Rv
ci0+c3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpOwotICAgICAgICAgICAgaWYgKHNlbGVjdG9yLT5z
dHlsZSgpLT50ZXh0U2l6ZUFkanVzdCgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKEZyYW1lKiBm
cmFtZSA9IHNlbGVjdG9yLT5kb2N1bWVudCgpLT5mcmFtZSgpKQorICAgICAgICAgICAgZG91Ymxl
IG11bHRpcGxpZXIgPSBzdHlsZVJlc29sdmVyLT5zdHlsZSgpLT5lZmZlY3RpdmVab29tKCk7Cisg
ICAgICAgICAgICBpZiAoc3R5bGVSZXNvbHZlci0+c3R5bGUoKS0+dGV4dFNpemVBZGp1c3QoKSkg
eworICAgICAgICAgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBzdHlsZVJlc29sdmVyLT5kb2N1
bWVudCgpLT5mcmFtZSgpKQogICAgICAgICAgICAgICAgICAgICBtdWx0aXBsaWVyICo9IGZyYW1l
LT50ZXh0Wm9vbUZhY3RvcigpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgbGluZUhlaWdo
dCA9IHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3RoPExlbmd0aD4oc2VsZWN0b3ItPnN0eWxl
KCksIHNlbGVjdG9yLT5yb290RWxlbWVudFN0eWxlKCksIG11bHRpcGxpZXIpOworICAgICAgICAg
ICAgbGluZUhlaWdodCA9IHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3RoPExlbmd0aD4oc3R5
bGVSZXNvbHZlci0+c3R5bGUoKSwgc3R5bGVSZXNvbHZlci0+cm9vdEVsZW1lbnRTdHlsZSgpLCBt
dWx0aXBsaWVyKTsKICAgICAgICAgfSBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS0+aXNQZXJjZW50
YWdlKCkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBwZXJjZW50YWdlIHNob3VsZCBub3QgYmUg
cmVzdHJpY3RlZCB0byBhbiBpbnRlZ2VyIGhlcmUuCi0gICAgICAgICAgICBsaW5lSGVpZ2h0ID0g
TGVuZ3RoKChzZWxlY3Rvci0+c3R5bGUoKS0+Zm9udFNpemUoKSAqIHByaW1pdGl2ZVZhbHVlLT5n
ZXRJbnRWYWx1ZSgpKSAvIDEwMCwgRml4ZWQpOworICAgICAgICAgICAgbGluZUhlaWdodCA9IExl
bmd0aCgoc3R5bGVSZXNvbHZlci0+c3R5bGUoKS0+Zm9udFNpemUoKSAqIHByaW1pdGl2ZVZhbHVl
LT5nZXRJbnRWYWx1ZSgpKSAvIDEwMCwgRml4ZWQpOwogICAgICAgICB9IGVsc2UgaWYgKHByaW1p
dGl2ZVZhbHVlLT5pc051bWJlcigpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogbnVtYmVyIGFu
ZCBwZXJjZW50YWdlIHZhbHVlcyBzaG91bGQgcHJvZHVjZSB0aGUgc2FtZSB0eXBlIG9mIExlbmd0
aCAoaWUuIEZpeGVkIG9yIFBlcmNlbnQpLgogICAgICAgICAgICAgbGluZUhlaWdodCA9IExlbmd0
aChwcmltaXRpdmVWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKSAqIDEwMC4wLCBQZXJjZW50KTsKQEAg
LTExOTgsNyArMTE5OCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGxpbmVIZWlnaHQgPSBwcmlt
aXRpdmVWYWx1ZS0+dmlld3BvcnRQZXJjZW50YWdlTGVuZ3RoKCk7CiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgc2VsZWN0b3ItPnN0eWxlKCktPnNldExpbmVIZWln
aHQobGluZUhlaWdodCk7CisgICAgICAgIHN0eWxlUmVzb2x2ZXItPnN0eWxlKCktPnNldExpbmVI
ZWlnaHQobGluZUhlaWdodCk7CiAgICAgfQogICAgIHN0YXRpYyBQcm9wZXJ0eUhhbmRsZXIgY3Jl
YXRlSGFuZGxlcigpCiAgICAgewpAQCAtMTI4Nyw5ICsxMjg3LDkgQEAgcHJpdmF0ZToKIHB1Ymxp
YzoKICAgICBzdGF0aWMgdm9pZCBhcHBseUluaGVyaXRWYWx1ZShTdHlsZVJlc29sdmVyKikgeyB9
CiAgICAgc3RhdGljIHZvaWQgYXBwbHlJbml0aWFsVmFsdWUoU3R5bGVSZXNvbHZlciopIHsgfQot
ICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIENTU1Zh
bHVlKiB2YWx1ZSkKKyAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlKFN0eWxlUmVzb2x2ZXIqIHN0
eWxlUmVzb2x2ZXIsIENTU1ZhbHVlKiB2YWx1ZSkKICAgICB7Ci0gICAgICAgIHNlbGVjdG9yLT5z
dHlsZSgpLT5yZXNldFBhZ2VTaXplVHlwZSgpOworICAgICAgICBzdHlsZVJlc29sdmVyLT5zdHls
ZSgpLT5yZXNldFBhZ2VTaXplVHlwZSgpOwogICAgICAgICBMZW5ndGggd2lkdGg7CiAgICAgICAg
IExlbmd0aCBoZWlnaHQ7CiAgICAgICAgIFBhZ2VTaXplVHlwZSBwYWdlU2l6ZVR5cGUgPSBQQUdF
X1NJWkVfQVVUTzsKQEAgLTEzMDUsOCArMTMwNSw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAg
ICAvLyA8bGVuZ3RoPnsyfQogICAgICAgICAgICAgICAgIGlmICghc2Vjb25kLT5pc0xlbmd0aCgp
KQogICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgd2lkdGggPSBm
aXJzdC0+Y29tcHV0ZUxlbmd0aDxMZW5ndGg+KHNlbGVjdG9yLT5zdHlsZSgpLCBzZWxlY3Rvci0+
cm9vdEVsZW1lbnRTdHlsZSgpKTsKLSAgICAgICAgICAgICAgICBoZWlnaHQgPSBzZWNvbmQtPmNv
bXB1dGVMZW5ndGg8TGVuZ3RoPihzZWxlY3Rvci0+c3R5bGUoKSwgc2VsZWN0b3ItPnJvb3RFbGVt
ZW50U3R5bGUoKSk7CisgICAgICAgICAgICAgICAgd2lkdGggPSBmaXJzdC0+Y29tcHV0ZUxlbmd0
aDxMZW5ndGg+KHN0eWxlUmVzb2x2ZXItPnN0eWxlKCksIHN0eWxlUmVzb2x2ZXItPnJvb3RFbGVt
ZW50U3R5bGUoKSk7CisgICAgICAgICAgICAgICAgaGVpZ2h0ID0gc2Vjb25kLT5jb21wdXRlTGVu
Z3RoPExlbmd0aD4oc3R5bGVSZXNvbHZlci0+c3R5bGUoKSwgc3R5bGVSZXNvbHZlci0+cm9vdEVs
ZW1lbnRTdHlsZSgpKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgLy8g
PHBhZ2Utc2l6ZT4gPG9yaWVudGF0aW9uPgogICAgICAgICAgICAgICAgIC8vIFRoZSB2YWx1ZSBv
cmRlciBpcyBndWFyYW50ZWVkLiBTZWUgQ1NTUGFyc2VyOjpwYXJzZVNpemVQYXJhbWV0ZXIuCkBA
IC0xMzI0LDcgKzEzMjQsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBpZiAocHJpbWl0aXZlVmFs
dWUtPmlzTGVuZ3RoKCkpIHsKICAgICAgICAgICAgICAgICAvLyA8bGVuZ3RoPgogICAgICAgICAg
ICAgICAgIHBhZ2VTaXplVHlwZSA9IFBBR0VfU0laRV9SRVNPTFZFRDsKLSAgICAgICAgICAgICAg
ICB3aWR0aCA9IGhlaWdodCA9IHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3RoPExlbmd0aD4o
c2VsZWN0b3ItPnN0eWxlKCksIHNlbGVjdG9yLT5yb290RWxlbWVudFN0eWxlKCkpOworICAgICAg
ICAgICAgICAgIHdpZHRoID0gaGVpZ2h0ID0gcHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGg8
TGVuZ3RoPihzdHlsZVJlc29sdmVyLT5zdHlsZSgpLCBzdHlsZVJlc29sdmVyLT5yb290RWxlbWVu
dFN0eWxlKCkpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBzd2l0Y2gg
KHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7CiAgICAgICAgICAgICAgICAgY2FzZSAwOgpA
QCAtMTM1MCwyOSArMTM1MCwyOSBAQCBwdWJsaWM6CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgc2VsZWN0b3ItPnN0eWxlKCktPnNldFBh
Z2VTaXplVHlwZShwYWdlU2l6ZVR5cGUpOwotICAgICAgICBzZWxlY3Rvci0+c3R5bGUoKS0+c2V0
UGFnZVNpemUoTGVuZ3RoU2l6ZSh3aWR0aCwgaGVpZ2h0KSk7CisgICAgICAgIHN0eWxlUmVzb2x2
ZXItPnN0eWxlKCktPnNldFBhZ2VTaXplVHlwZShwYWdlU2l6ZVR5cGUpOworICAgICAgICBzdHls
ZVJlc29sdmVyLT5zdHlsZSgpLT5zZXRQYWdlU2l6ZShMZW5ndGhTaXplKHdpZHRoLCBoZWlnaHQp
KTsKICAgICB9CiAgICAgc3RhdGljIFByb3BlcnR5SGFuZGxlciBjcmVhdGVIYW5kbGVyKCkgeyBy
ZXR1cm4gUHJvcGVydHlIYW5kbGVyKCZhcHBseUluaGVyaXRWYWx1ZSwgJmFwcGx5SW5pdGlhbFZh
bHVlLCAmYXBwbHlWYWx1ZSk7IH0KIH07CiAKIGNsYXNzIEFwcGx5UHJvcGVydHlUZXh0RW1waGFz
aXNTdHlsZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHZvaWQgYXBwbHlJbmhlcml0VmFsdWUoU3R5
bGVSZXNvbHZlciogc2VsZWN0b3IpCisgICAgc3RhdGljIHZvaWQgYXBwbHlJbmhlcml0VmFsdWUo
U3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlcikKICAgICB7Ci0gICAgICAgIHNlbGVjdG9yLT5z
dHlsZSgpLT5zZXRUZXh0RW1waGFzaXNGaWxsKHNlbGVjdG9yLT5wYXJlbnRTdHlsZSgpLT50ZXh0
RW1waGFzaXNGaWxsKCkpOwotICAgICAgICBzZWxlY3Rvci0+c3R5bGUoKS0+c2V0VGV4dEVtcGhh
c2lzTWFyayhzZWxlY3Rvci0+cGFyZW50U3R5bGUoKS0+dGV4dEVtcGhhc2lzTWFyaygpKTsKLSAg
ICAgICAgc2VsZWN0b3ItPnN0eWxlKCktPnNldFRleHRFbXBoYXNpc0N1c3RvbU1hcmsoc2VsZWN0
b3ItPnBhcmVudFN0eWxlKCktPnRleHRFbXBoYXNpc0N1c3RvbU1hcmsoKSk7CisgICAgICAgIHN0
eWxlUmVzb2x2ZXItPnN0eWxlKCktPnNldFRleHRFbXBoYXNpc0ZpbGwoc3R5bGVSZXNvbHZlci0+
cGFyZW50U3R5bGUoKS0+dGV4dEVtcGhhc2lzRmlsbCgpKTsKKyAgICAgICAgc3R5bGVSZXNvbHZl
ci0+c3R5bGUoKS0+c2V0VGV4dEVtcGhhc2lzTWFyayhzdHlsZVJlc29sdmVyLT5wYXJlbnRTdHls
ZSgpLT50ZXh0RW1waGFzaXNNYXJrKCkpOworICAgICAgICBzdHlsZVJlc29sdmVyLT5zdHlsZSgp
LT5zZXRUZXh0RW1waGFzaXNDdXN0b21NYXJrKHN0eWxlUmVzb2x2ZXItPnBhcmVudFN0eWxlKCkt
PnRleHRFbXBoYXNpc0N1c3RvbU1hcmsoKSk7CiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQgYXBw
bHlJbml0aWFsVmFsdWUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IpCisgICAgc3RhdGljIHZvaWQg
YXBwbHlJbml0aWFsVmFsdWUoU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlcikKICAgICB7Ci0g
ICAgICAgIHNlbGVjdG9yLT5zdHlsZSgpLT5zZXRUZXh0RW1waGFzaXNGaWxsKFJlbmRlclN0eWxl
Ojppbml0aWFsVGV4dEVtcGhhc2lzRmlsbCgpKTsKLSAgICAgICAgc2VsZWN0b3ItPnN0eWxlKCkt
PnNldFRleHRFbXBoYXNpc01hcmsoUmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0RW1waGFzaXNNYXJr
KCkpOwotICAgICAgICBzZWxlY3Rvci0+c3R5bGUoKS0+c2V0VGV4dEVtcGhhc2lzQ3VzdG9tTWFy
ayhSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRFbXBoYXNpc0N1c3RvbU1hcmsoKSk7CisgICAgICAg
IHN0eWxlUmVzb2x2ZXItPnN0eWxlKCktPnNldFRleHRFbXBoYXNpc0ZpbGwoUmVuZGVyU3R5bGU6
OmluaXRpYWxUZXh0RW1waGFzaXNGaWxsKCkpOworICAgICAgICBzdHlsZVJlc29sdmVyLT5zdHls
ZSgpLT5zZXRUZXh0RW1waGFzaXNNYXJrKFJlbmRlclN0eWxlOjppbml0aWFsVGV4dEVtcGhhc2lz
TWFyaygpKTsKKyAgICAgICAgc3R5bGVSZXNvbHZlci0+c3R5bGUoKS0+c2V0VGV4dEVtcGhhc2lz
Q3VzdG9tTWFyayhSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRFbXBoYXNpc0N1c3RvbU1hcmsoKSk7
CiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZShTdHlsZVJlc29sdmVyKiBzZWxl
Y3RvciwgQ1NTVmFsdWUqIHZhbHVlKQorICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUoU3R5bGVS
ZXNvbHZlciogc3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUqIHZhbHVlKQogICAgIHsKICAgICAgICAg
aWYgKHZhbHVlLT5pc1ZhbHVlTGlzdCgpKSB7CiAgICAgICAgICAgICBDU1NWYWx1ZUxpc3QqIGxp
c3QgPSBzdGF0aWNfY2FzdDxDU1NWYWx1ZUxpc3QqPih2YWx1ZSk7CkBAIC0xMzg2LDExICsxMzg2
LDExIEBAIHB1YmxpYzoKIAogICAgICAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiB2YWx1
ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oaXRlbSk7CiAgICAgICAgICAgICAg
ICAgaWYgKHZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlRmlsbGVkIHx8IHZhbHVlLT5nZXRJ
ZGVudCgpID09IENTU1ZhbHVlT3BlbikKLSAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3ItPnN0
eWxlKCktPnNldFRleHRFbXBoYXNpc0ZpbGwoKnZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAg
c3R5bGVSZXNvbHZlci0+c3R5bGUoKS0+c2V0VGV4dEVtcGhhc2lzRmlsbCgqdmFsdWUpOwogICAg
ICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3ItPnN0eWxlKCkt
PnNldFRleHRFbXBoYXNpc01hcmsoKnZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgc3R5bGVS
ZXNvbHZlci0+c3R5bGUoKS0+c2V0VGV4dEVtcGhhc2lzTWFyaygqdmFsdWUpOwogICAgICAgICAg
ICAgfQotICAgICAgICAgICAgc2VsZWN0b3ItPnN0eWxlKCktPnNldFRleHRFbXBoYXNpc0N1c3Rv
bU1hcmsobnVsbEF0b20pOworICAgICAgICAgICAgc3R5bGVSZXNvbHZlci0+c3R5bGUoKS0+c2V0
VGV4dEVtcGhhc2lzQ3VzdG9tTWFyayhudWxsQXRvbSk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KIApAQCAtMTM5OSwyMCArMTM5OSwyMCBAQCBwdWJsaWM6CiAgICAgICAgIENTU1By
aW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlKj4odmFsdWUpOwogCiAgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+aXNTdHJpbmcoKSkg
ewotICAgICAgICAgICAgc2VsZWN0b3ItPnN0eWxlKCktPnNldFRleHRFbXBoYXNpc0ZpbGwoVGV4
dEVtcGhhc2lzRmlsbEZpbGxlZCk7Ci0gICAgICAgICAgICBzZWxlY3Rvci0+c3R5bGUoKS0+c2V0
VGV4dEVtcGhhc2lzTWFyayhUZXh0RW1waGFzaXNNYXJrQ3VzdG9tKTsKLSAgICAgICAgICAgIHNl
bGVjdG9yLT5zdHlsZSgpLT5zZXRUZXh0RW1waGFzaXNDdXN0b21NYXJrKHByaW1pdGl2ZVZhbHVl
LT5nZXRTdHJpbmdWYWx1ZSgpKTsKKyAgICAgICAgICAgIHN0eWxlUmVzb2x2ZXItPnN0eWxlKCkt
PnNldFRleHRFbXBoYXNpc0ZpbGwoVGV4dEVtcGhhc2lzRmlsbEZpbGxlZCk7CisgICAgICAgICAg
ICBzdHlsZVJlc29sdmVyLT5zdHlsZSgpLT5zZXRUZXh0RW1waGFzaXNNYXJrKFRleHRFbXBoYXNp
c01hcmtDdXN0b20pOworICAgICAgICAgICAgc3R5bGVSZXNvbHZlci0+c3R5bGUoKS0+c2V0VGV4
dEVtcGhhc2lzQ3VzdG9tTWFyayhwcmltaXRpdmVWYWx1ZS0+Z2V0U3RyaW5nVmFsdWUoKSk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBzZWxlY3Rvci0+c3R5bGUo
KS0+c2V0VGV4dEVtcGhhc2lzQ3VzdG9tTWFyayhudWxsQXRvbSk7CisgICAgICAgIHN0eWxlUmVz
b2x2ZXItPnN0eWxlKCktPnNldFRleHRFbXBoYXNpc0N1c3RvbU1hcmsobnVsbEF0b20pOwogCiAg
ICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUZpbGxlZCB8
fCBwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZU9wZW4pIHsKLSAgICAgICAg
ICAgIHNlbGVjdG9yLT5zdHlsZSgpLT5zZXRUZXh0RW1waGFzaXNGaWxsKCpwcmltaXRpdmVWYWx1
ZSk7Ci0gICAgICAgICAgICBzZWxlY3Rvci0+c3R5bGUoKS0+c2V0VGV4dEVtcGhhc2lzTWFyayhU
ZXh0RW1waGFzaXNNYXJrQXV0byk7CisgICAgICAgICAgICBzdHlsZVJlc29sdmVyLT5zdHlsZSgp
LT5zZXRUZXh0RW1waGFzaXNGaWxsKCpwcmltaXRpdmVWYWx1ZSk7CisgICAgICAgICAgICBzdHls
ZVJlc29sdmVyLT5zdHlsZSgpLT5zZXRUZXh0RW1waGFzaXNNYXJrKFRleHRFbXBoYXNpc01hcmtB
dXRvKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHNlbGVjdG9yLT5zdHlsZSgpLT5z
ZXRUZXh0RW1waGFzaXNGaWxsKFRleHRFbXBoYXNpc0ZpbGxGaWxsZWQpOwotICAgICAgICAgICAg
c2VsZWN0b3ItPnN0eWxlKCktPnNldFRleHRFbXBoYXNpc01hcmsoKnByaW1pdGl2ZVZhbHVlKTsK
KyAgICAgICAgICAgIHN0eWxlUmVzb2x2ZXItPnN0eWxlKCktPnNldFRleHRFbXBoYXNpc0ZpbGwo
VGV4dEVtcGhhc2lzRmlsbEZpbGxlZCk7CisgICAgICAgICAgICBzdHlsZVJlc29sdmVyLT5zdHls
ZSgpLT5zZXRUZXh0RW1waGFzaXNNYXJrKCpwcmltaXRpdmVWYWx1ZSk7CiAgICAgICAgIH0KICAg
ICB9CiAKQEAgLTE0MzUsMTQgKzE0MzUsMTQgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIHRl
c3QoY29uc3QgQW5pbWF0aW9uKiBhbmltYXRpb24pIHsgcmV0dXJuIChhbmltYXRpb24tPip0ZXN0
RnVuY3Rpb24pKCk7IH0KICAgICBzdGF0aWMgdm9pZCBjbGVhcihBbmltYXRpb24qIGFuaW1hdGlv
bikgeyAoYW5pbWF0aW9uLT4qY2xlYXJGdW5jdGlvbikoKTsgfQogICAgIHN0YXRpYyBUIGluaXRp
YWwoKSB7IHJldHVybiAoKmluaXRpYWxGdW5jdGlvbikoKTsgfQotICAgIHN0YXRpYyB2b2lkIG1h
cChTdHlsZVJlc29sdmVyKiBzZWxlY3RvciwgQW5pbWF0aW9uKiBhbmltYXRpb24sIENTU1ZhbHVl
KiB2YWx1ZSkgeyAoc2VsZWN0b3ItPiptYXBGdW5jdGlvbikoYW5pbWF0aW9uLCB2YWx1ZSk7IH0K
KyAgICBzdGF0aWMgdm9pZCBtYXAoU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciwgQW5pbWF0
aW9uKiBhbmltYXRpb24sIENTU1ZhbHVlKiB2YWx1ZSkgeyAoc3R5bGVSZXNvbHZlci0+Km1hcEZ1
bmN0aW9uKShhbmltYXRpb24sIHZhbHVlKTsgfQogICAgIHN0YXRpYyBBbmltYXRpb25MaXN0KiBh
Y2Nlc3NBbmltYXRpb25zKFJlbmRlclN0eWxlKiBzdHlsZSkgeyByZXR1cm4gKHN0eWxlLT4qYW5p
bWF0aW9uR2V0dGVyRnVuY3Rpb24pKCk7IH0KICAgICBzdGF0aWMgY29uc3QgQW5pbWF0aW9uTGlz
dCogYW5pbWF0aW9ucyhSZW5kZXJTdHlsZSogc3R5bGUpIHsgcmV0dXJuIChzdHlsZS0+KmltbXV0
YWJsZUFuaW1hdGlvbkdldHRlckZ1bmN0aW9uKSgpOyB9CiAKLSAgICBzdGF0aWMgdm9pZCBhcHBs
eUluaGVyaXRWYWx1ZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvcikKKyAgICBzdGF0aWMgdm9pZCBh
cHBseUluaGVyaXRWYWx1ZShTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyKQogICAgIHsKLSAg
ICAgICAgQW5pbWF0aW9uTGlzdCogbGlzdCA9IGFjY2Vzc0FuaW1hdGlvbnMoc2VsZWN0b3ItPnN0
eWxlKCkpOwotICAgICAgICBjb25zdCBBbmltYXRpb25MaXN0KiBwYXJlbnRMaXN0ID0gYW5pbWF0
aW9ucyhzZWxlY3Rvci0+cGFyZW50U3R5bGUoKSk7CisgICAgICAgIEFuaW1hdGlvbkxpc3QqIGxp
c3QgPSBhY2Nlc3NBbmltYXRpb25zKHN0eWxlUmVzb2x2ZXItPnN0eWxlKCkpOworICAgICAgICBj
b25zdCBBbmltYXRpb25MaXN0KiBwYXJlbnRMaXN0ID0gYW5pbWF0aW9ucyhzdHlsZVJlc29sdmVy
LT5wYXJlbnRTdHlsZSgpKTsKICAgICAgICAgc2l6ZV90IGkgPSAwLCBwYXJlbnRTaXplID0gcGFy
ZW50TGlzdCA/IHBhcmVudExpc3QtPnNpemUoKSA6IDA7CiAgICAgICAgIGZvciAoIDsgaSA8IHBh
cmVudFNpemUgJiYgdGVzdChwYXJlbnRMaXN0LT5hbmltYXRpb24oaSkpOyArK2kpIHsKICAgICAg
ICAgICAgIGlmIChsaXN0LT5zaXplKCkgPD0gaSkKQEAgLTE0NTYsOSArMTQ1Niw5IEBAIHB1Ymxp
YzoKICAgICAgICAgICAgIGNsZWFyKGxpc3QtPmFuaW1hdGlvbihpKSk7CiAgICAgfQogCi0gICAg
c3RhdGljIHZvaWQgYXBwbHlJbml0aWFsVmFsdWUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IpCisg
ICAgc3RhdGljIHZvaWQgYXBwbHlJbml0aWFsVmFsdWUoU3R5bGVSZXNvbHZlciogc3R5bGVSZXNv
bHZlcikKICAgICB7Ci0gICAgICAgIEFuaW1hdGlvbkxpc3QqIGxpc3QgPSBhY2Nlc3NBbmltYXRp
b25zKHNlbGVjdG9yLT5zdHlsZSgpKTsKKyAgICAgICAgQW5pbWF0aW9uTGlzdCogbGlzdCA9IGFj
Y2Vzc0FuaW1hdGlvbnMoc3R5bGVSZXNvbHZlci0+c3R5bGUoKSk7CiAgICAgICAgIGlmIChsaXN0
LT5pc0VtcHR5KCkpCiAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoQW5pbWF0aW9uOjpjcmVhdGUo
KSk7CiAgICAgICAgIHNldFZhbHVlKGxpc3QtPmFuaW1hdGlvbigwKSwgaW5pdGlhbCgpKTsKQEAg
LTE0NjYsMjIgKzE0NjYsMjIgQEAgcHVibGljOgogICAgICAgICAgICAgY2xlYXIobGlzdC0+YW5p
bWF0aW9uKGkpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlKFN0eWxlUmVz
b2x2ZXIqIHNlbGVjdG9yLCBDU1NWYWx1ZSogdmFsdWUpCisgICAgc3RhdGljIHZvaWQgYXBwbHlW
YWx1ZShTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyLCBDU1NWYWx1ZSogdmFsdWUpCiAgICAg
ewotICAgICAgICBBbmltYXRpb25MaXN0KiBsaXN0ID0gYWNjZXNzQW5pbWF0aW9ucyhzZWxlY3Rv
ci0+c3R5bGUoKSk7CisgICAgICAgIEFuaW1hdGlvbkxpc3QqIGxpc3QgPSBhY2Nlc3NBbmltYXRp
b25zKHN0eWxlUmVzb2x2ZXItPnN0eWxlKCkpOwogICAgICAgICBzaXplX3QgY2hpbGRJbmRleCA9
IDA7CiAgICAgICAgIGlmICh2YWx1ZS0+aXNWYWx1ZUxpc3QoKSkgewogICAgICAgICAgICAgLyog
V2FsayBlYWNoIHZhbHVlIGFuZCBwdXQgaXQgaW50byBhbiBhbmltYXRpb24sIGNyZWF0aW5nIG5l
dyBhbmltYXRpb25zIGFzIG5lZWRlZC4gKi8KICAgICAgICAgICAgIGZvciAoQ1NTVmFsdWVMaXN0
SXRlcmF0b3IgaSA9IHZhbHVlOyBpLmhhc01vcmUoKTsgaS5hZHZhbmNlKCkpIHsKICAgICAgICAg
ICAgICAgICBpZiAoY2hpbGRJbmRleCA8PSBsaXN0LT5zaXplKCkpCiAgICAgICAgICAgICAgICAg
ICAgIGxpc3QtPmFwcGVuZChBbmltYXRpb246OmNyZWF0ZSgpKTsKLSAgICAgICAgICAgICAgICBt
YXAoc2VsZWN0b3IsIGxpc3QtPmFuaW1hdGlvbihjaGlsZEluZGV4KSwgaS52YWx1ZSgpKTsKKyAg
ICAgICAgICAgICAgICBtYXAoc3R5bGVSZXNvbHZlciwgbGlzdC0+YW5pbWF0aW9uKGNoaWxkSW5k
ZXgpLCBpLnZhbHVlKCkpOwogICAgICAgICAgICAgICAgICsrY2hpbGRJbmRleDsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlmIChsaXN0LT5pc0VtcHR5KCkp
CiAgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKEFuaW1hdGlvbjo6Y3JlYXRlKCkpOwotICAg
ICAgICAgICAgbWFwKHNlbGVjdG9yLCBsaXN0LT5hbmltYXRpb24oY2hpbGRJbmRleCksIHZhbHVl
KTsKKyAgICAgICAgICAgIG1hcChzdHlsZVJlc29sdmVyLCBsaXN0LT5hbmltYXRpb24oY2hpbGRJ
bmRleCksIHZhbHVlKTsKICAgICAgICAgICAgIGNoaWxkSW5kZXggPSAxOwogICAgICAgICB9CiAg
ICAgICAgIGZvciAoIDsgY2hpbGRJbmRleCA8IGxpc3QtPnNpemUoKTsgKytjaGlsZEluZGV4KSB7
CkBAIC0xNDk1LDIyICsxNDk1LDIyIEBAIHB1YmxpYzoKIAogY2xhc3MgQXBwbHlQcm9wZXJ0eU91
dGxpbmVTdHlsZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHZvaWQgYXBwbHlJbmhlcml0VmFsdWUo
U3R5bGVSZXNvbHZlciogc2VsZWN0b3IpCisgICAgc3RhdGljIHZvaWQgYXBwbHlJbmhlcml0VmFs
dWUoU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlcikKICAgICB7Ci0gICAgICAgIEFwcGx5UHJv
cGVydHlEZWZhdWx0QmFzZTxPdXRsaW5lSXNBdXRvLCAmUmVuZGVyU3R5bGU6Om91dGxpbmVTdHls
ZUlzQXV0bywgT3V0bGluZUlzQXV0bywgJlJlbmRlclN0eWxlOjpzZXRPdXRsaW5lU3R5bGVJc0F1
dG8sIE91dGxpbmVJc0F1dG8sICZSZW5kZXJTdHlsZTo6aW5pdGlhbE91dGxpbmVTdHlsZUlzQXV0
bz46OmFwcGx5SW5oZXJpdFZhbHVlKHNlbGVjdG9yKTsKLSAgICAgICAgQXBwbHlQcm9wZXJ0eURl
ZmF1bHRCYXNlPEVCb3JkZXJTdHlsZSwgJlJlbmRlclN0eWxlOjpvdXRsaW5lU3R5bGUsIEVCb3Jk
ZXJTdHlsZSwgJlJlbmRlclN0eWxlOjpzZXRPdXRsaW5lU3R5bGUsIEVCb3JkZXJTdHlsZSwgJlJl
bmRlclN0eWxlOjppbml0aWFsQm9yZGVyU3R5bGU+OjphcHBseUluaGVyaXRWYWx1ZShzZWxlY3Rv
cik7CisgICAgICAgIEFwcGx5UHJvcGVydHlEZWZhdWx0QmFzZTxPdXRsaW5lSXNBdXRvLCAmUmVu
ZGVyU3R5bGU6Om91dGxpbmVTdHlsZUlzQXV0bywgT3V0bGluZUlzQXV0bywgJlJlbmRlclN0eWxl
OjpzZXRPdXRsaW5lU3R5bGVJc0F1dG8sIE91dGxpbmVJc0F1dG8sICZSZW5kZXJTdHlsZTo6aW5p
dGlhbE91dGxpbmVTdHlsZUlzQXV0bz46OmFwcGx5SW5oZXJpdFZhbHVlKHN0eWxlUmVzb2x2ZXIp
OworICAgICAgICBBcHBseVByb3BlcnR5RGVmYXVsdEJhc2U8RUJvcmRlclN0eWxlLCAmUmVuZGVy
U3R5bGU6Om91dGxpbmVTdHlsZSwgRUJvcmRlclN0eWxlLCAmUmVuZGVyU3R5bGU6OnNldE91dGxp
bmVTdHlsZSwgRUJvcmRlclN0eWxlLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxCb3JkZXJTdHlsZT46
OmFwcGx5SW5oZXJpdFZhbHVlKHN0eWxlUmVzb2x2ZXIpOwogICAgIH0KIAotICAgIHN0YXRpYyB2
b2lkIGFwcGx5SW5pdGlhbFZhbHVlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yKQorICAgIHN0YXRp
YyB2b2lkIGFwcGx5SW5pdGlhbFZhbHVlKFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIpCiAg
ICAgewotICAgICAgICBBcHBseVByb3BlcnR5RGVmYXVsdEJhc2U8T3V0bGluZUlzQXV0bywgJlJl
bmRlclN0eWxlOjpvdXRsaW5lU3R5bGVJc0F1dG8sIE91dGxpbmVJc0F1dG8sICZSZW5kZXJTdHls
ZTo6c2V0T3V0bGluZVN0eWxlSXNBdXRvLCBPdXRsaW5lSXNBdXRvLCAmUmVuZGVyU3R5bGU6Omlu
aXRpYWxPdXRsaW5lU3R5bGVJc0F1dG8+OjphcHBseUluaXRpYWxWYWx1ZShzZWxlY3Rvcik7Ci0g
ICAgICAgIEFwcGx5UHJvcGVydHlEZWZhdWx0QmFzZTxFQm9yZGVyU3R5bGUsICZSZW5kZXJTdHls
ZTo6b3V0bGluZVN0eWxlLCBFQm9yZGVyU3R5bGUsICZSZW5kZXJTdHlsZTo6c2V0T3V0bGluZVN0
eWxlLCBFQm9yZGVyU3R5bGUsICZSZW5kZXJTdHlsZTo6aW5pdGlhbEJvcmRlclN0eWxlPjo6YXBw
bHlJbml0aWFsVmFsdWUoc2VsZWN0b3IpOworICAgICAgICBBcHBseVByb3BlcnR5RGVmYXVsdEJh
c2U8T3V0bGluZUlzQXV0bywgJlJlbmRlclN0eWxlOjpvdXRsaW5lU3R5bGVJc0F1dG8sIE91dGxp
bmVJc0F1dG8sICZSZW5kZXJTdHlsZTo6c2V0T3V0bGluZVN0eWxlSXNBdXRvLCBPdXRsaW5lSXNB
dXRvLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxPdXRsaW5lU3R5bGVJc0F1dG8+OjphcHBseUluaXRp
YWxWYWx1ZShzdHlsZVJlc29sdmVyKTsKKyAgICAgICAgQXBwbHlQcm9wZXJ0eURlZmF1bHRCYXNl
PEVCb3JkZXJTdHlsZSwgJlJlbmRlclN0eWxlOjpvdXRsaW5lU3R5bGUsIEVCb3JkZXJTdHlsZSwg
JlJlbmRlclN0eWxlOjpzZXRPdXRsaW5lU3R5bGUsIEVCb3JkZXJTdHlsZSwgJlJlbmRlclN0eWxl
Ojppbml0aWFsQm9yZGVyU3R5bGU+OjphcHBseUluaXRpYWxWYWx1ZShzdHlsZVJlc29sdmVyKTsK
ICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlKFN0eWxlUmVzb2x2ZXIqIHNlbGVj
dG9yLCBDU1NWYWx1ZSogdmFsdWUpCisgICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZShTdHlsZVJl
c29sdmVyKiBzdHlsZVJlc29sdmVyLCBDU1NWYWx1ZSogdmFsdWUpCiAgICAgewotICAgICAgICBB
cHBseVByb3BlcnR5RGVmYXVsdDxPdXRsaW5lSXNBdXRvLCAmUmVuZGVyU3R5bGU6Om91dGxpbmVT
dHlsZUlzQXV0bywgT3V0bGluZUlzQXV0bywgJlJlbmRlclN0eWxlOjpzZXRPdXRsaW5lU3R5bGVJ
c0F1dG8sIE91dGxpbmVJc0F1dG8sICZSZW5kZXJTdHlsZTo6aW5pdGlhbE91dGxpbmVTdHlsZUlz
QXV0bz46OmFwcGx5VmFsdWUoc2VsZWN0b3IsIHZhbHVlKTsKLSAgICAgICAgQXBwbHlQcm9wZXJ0
eURlZmF1bHQ8RUJvcmRlclN0eWxlLCAmUmVuZGVyU3R5bGU6Om91dGxpbmVTdHlsZSwgRUJvcmRl
clN0eWxlLCAmUmVuZGVyU3R5bGU6OnNldE91dGxpbmVTdHlsZSwgRUJvcmRlclN0eWxlLCAmUmVu
ZGVyU3R5bGU6OmluaXRpYWxCb3JkZXJTdHlsZT46OmFwcGx5VmFsdWUoc2VsZWN0b3IsIHZhbHVl
KTsKKyAgICAgICAgQXBwbHlQcm9wZXJ0eURlZmF1bHQ8T3V0bGluZUlzQXV0bywgJlJlbmRlclN0
eWxlOjpvdXRsaW5lU3R5bGVJc0F1dG8sIE91dGxpbmVJc0F1dG8sICZSZW5kZXJTdHlsZTo6c2V0
T3V0bGluZVN0eWxlSXNBdXRvLCBPdXRsaW5lSXNBdXRvLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxP
dXRsaW5lU3R5bGVJc0F1dG8+OjphcHBseVZhbHVlKHN0eWxlUmVzb2x2ZXIsIHZhbHVlKTsKKyAg
ICAgICAgQXBwbHlQcm9wZXJ0eURlZmF1bHQ8RUJvcmRlclN0eWxlLCAmUmVuZGVyU3R5bGU6Om91
dGxpbmVTdHlsZSwgRUJvcmRlclN0eWxlLCAmUmVuZGVyU3R5bGU6OnNldE91dGxpbmVTdHlsZSwg
RUJvcmRlclN0eWxlLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxCb3JkZXJTdHlsZT46OmFwcGx5VmFs
dWUoc3R5bGVSZXNvbHZlciwgdmFsdWUpOwogICAgIH0KIAogICAgIHN0YXRpYyBQcm9wZXJ0eUhh
bmRsZXIgY3JlYXRlSGFuZGxlcigpIHsgcmV0dXJuIFByb3BlcnR5SGFuZGxlcigmYXBwbHlJbmhl
cml0VmFsdWUsICZhcHBseUluaXRpYWxWYWx1ZSwgJmFwcGx5VmFsdWUpOyB9CkBAIC0xNTE4LDcg
KzE1MTgsNyBAQCBwdWJsaWM6CiAKIGNsYXNzIEFwcGx5UHJvcGVydHlSZXNpemUgewogcHVibGlj
OgotICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIENT
U1ZhbHVlKiB2YWx1ZSkKKyAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlKFN0eWxlUmVzb2x2ZXIq
IHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlKiB2YWx1ZSkKICAgICB7CiAgICAgICAgIGlmICghdmFs
dWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE1MzAsMTMg
KzE1MzAsMTMgQEAgcHVibGljOgogICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIGNhc2UgQ1NTVmFsdWVBdXRvOgotICAgICAgICAgICAgaWYgKFNldHRpbmdzKiBz
ZXR0aW5ncyA9IHNlbGVjdG9yLT5kb2N1bWVudCgpLT5zZXR0aW5ncygpKQorICAgICAgICAgICAg
aWYgKFNldHRpbmdzKiBzZXR0aW5ncyA9IHN0eWxlUmVzb2x2ZXItPmRvY3VtZW50KCktPnNldHRp
bmdzKCkpCiAgICAgICAgICAgICAgICAgciA9IHNldHRpbmdzLT50ZXh0QXJlYXNBcmVSZXNpemFi
bGUoKSA/IFJFU0laRV9CT1RIIDogUkVTSVpFX05PTkU7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHIgPSAqcHJpbWl0aXZlVmFsdWU7CiAgICAgICAg
IH0KLSAgICAgICAgc2VsZWN0b3ItPnN0eWxlKCktPnNldFJlc2l6ZShyKTsKKyAgICAgICAgc3R5
bGVSZXNvbHZlci0+c3R5bGUoKS0+c2V0UmVzaXplKHIpOwogICAgIH0KIAogICAgIHN0YXRpYyBQ
cm9wZXJ0eUhhbmRsZXIgY3JlYXRlSGFuZGxlcigpCkBAIC0xNTQ4LDcgKzE1NDgsNyBAQCBwdWJs
aWM6CiAKIGNsYXNzIEFwcGx5UHJvcGVydHlWZXJ0aWNhbEFsaWduIHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgdm9pZCBhcHBseVZhbHVlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBDU1NWYWx1ZSog
dmFsdWUpCisgICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZShTdHlsZVJlc29sdmVyKiBzdHlsZVJl
c29sdmVyLCBDU1NWYWx1ZSogdmFsdWUpCiAgICAgewogICAgICAgICBpZiAoIXZhbHVlLT5pc1By
aW1pdGl2ZVZhbHVlKCkpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xNTU2LDkgKzE1NTYsOSBA
QCBwdWJsaWM6CiAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0
YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOwogCiAgICAgICAgIGlmIChwcmlt
aXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkKLSAgICAgICAgICAgIHJldHVybiBzZWxlY3Rvci0+c3R5
bGUoKS0+c2V0VmVydGljYWxBbGlnbigqcHJpbWl0aXZlVmFsdWUpOworICAgICAgICAgICAgcmV0
dXJuIHN0eWxlUmVzb2x2ZXItPnN0eWxlKCktPnNldFZlcnRpY2FsQWxpZ24oKnByaW1pdGl2ZVZh
bHVlKTsKIAotICAgICAgICBzZWxlY3Rvci0+c3R5bGUoKS0+c2V0VmVydGljYWxBbGlnbkxlbmd0
aChwcmltaXRpdmVWYWx1ZS0+Y29udmVydFRvTGVuZ3RoPEZpeGVkSW50ZWdlckNvbnZlcnNpb24g
fCBQZXJjZW50Q29udmVyc2lvbiB8IENhbGN1bGF0ZWRDb252ZXJzaW9uIHwgVmlld3BvcnRQZXJj
ZW50YWdlQ29udmVyc2lvbj4oc2VsZWN0b3ItPnN0eWxlKCksIHNlbGVjdG9yLT5yb290RWxlbWVu
dFN0eWxlKCksIHNlbGVjdG9yLT5zdHlsZSgpLT5lZmZlY3RpdmVab29tKCkpKTsKKyAgICAgICAg
c3R5bGVSZXNvbHZlci0+c3R5bGUoKS0+c2V0VmVydGljYWxBbGlnbkxlbmd0aChwcmltaXRpdmVW
YWx1ZS0+Y29udmVydFRvTGVuZ3RoPEZpeGVkSW50ZWdlckNvbnZlcnNpb24gfCBQZXJjZW50Q29u
dmVyc2lvbiB8IENhbGN1bGF0ZWRDb252ZXJzaW9uIHwgVmlld3BvcnRQZXJjZW50YWdlQ29udmVy
c2lvbj4oc3R5bGVSZXNvbHZlci0+c3R5bGUoKSwgc3R5bGVSZXNvbHZlci0+cm9vdEVsZW1lbnRT
dHlsZSgpLCBzdHlsZVJlc29sdmVyLT5zdHlsZSgpLT5lZmZlY3RpdmVab29tKCkpKTsKICAgICB9
CiAKICAgICBzdGF0aWMgUHJvcGVydHlIYW5kbGVyIGNyZWF0ZUhhbmRsZXIoKQpAQCAtMTU3MCwz
MiArMTU3MCwzMiBAQCBwdWJsaWM6CiAKIGNsYXNzIEFwcGx5UHJvcGVydHlBc3BlY3RSYXRpbyB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIHZvaWQgYXBwbHlJbmhlcml0VmFsdWUoU3R5bGVSZXNvbHZl
ciogc2VsZWN0b3IpCisgICAgc3RhdGljIHZvaWQgYXBwbHlJbmhlcml0VmFsdWUoU3R5bGVSZXNv
bHZlciogc3R5bGVSZXNvbHZlcikKICAgICB7Ci0gICAgICAgIGlmICghc2VsZWN0b3ItPnBhcmVu
dFN0eWxlKCktPmhhc0FzcGVjdFJhdGlvKCkpCisgICAgICAgIGlmICghc3R5bGVSZXNvbHZlci0+
cGFyZW50U3R5bGUoKS0+aGFzQXNwZWN0UmF0aW8oKSkKICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgc2VsZWN0b3ItPnN0eWxlKCktPnNldEhhc0FzcGVjdFJhdGlvKHRydWUpOwotICAgICAg
ICBzZWxlY3Rvci0+c3R5bGUoKS0+c2V0QXNwZWN0UmF0aW9EZW5vbWluYXRvcihzZWxlY3Rvci0+
cGFyZW50U3R5bGUoKS0+YXNwZWN0UmF0aW9EZW5vbWluYXRvcigpKTsKLSAgICAgICAgc2VsZWN0
b3ItPnN0eWxlKCktPnNldEFzcGVjdFJhdGlvTnVtZXJhdG9yKHNlbGVjdG9yLT5wYXJlbnRTdHls
ZSgpLT5hc3BlY3RSYXRpb051bWVyYXRvcigpKTsKKyAgICAgICAgc3R5bGVSZXNvbHZlci0+c3R5
bGUoKS0+c2V0SGFzQXNwZWN0UmF0aW8odHJ1ZSk7CisgICAgICAgIHN0eWxlUmVzb2x2ZXItPnN0
eWxlKCktPnNldEFzcGVjdFJhdGlvRGVub21pbmF0b3Ioc3R5bGVSZXNvbHZlci0+cGFyZW50U3R5
bGUoKS0+YXNwZWN0UmF0aW9EZW5vbWluYXRvcigpKTsKKyAgICAgICAgc3R5bGVSZXNvbHZlci0+
c3R5bGUoKS0+c2V0QXNwZWN0UmF0aW9OdW1lcmF0b3Ioc3R5bGVSZXNvbHZlci0+cGFyZW50U3R5
bGUoKS0+YXNwZWN0UmF0aW9OdW1lcmF0b3IoKSk7CiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQg
YXBwbHlJbml0aWFsVmFsdWUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IpCisgICAgc3RhdGljIHZv
aWQgYXBwbHlJbml0aWFsVmFsdWUoU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlcikKICAgICB7
Ci0gICAgICAgIHNlbGVjdG9yLT5zdHlsZSgpLT5zZXRIYXNBc3BlY3RSYXRpbyhSZW5kZXJTdHls
ZTo6aW5pdGlhbEhhc0FzcGVjdFJhdGlvKCkpOwotICAgICAgICBzZWxlY3Rvci0+c3R5bGUoKS0+
c2V0QXNwZWN0UmF0aW9EZW5vbWluYXRvcihSZW5kZXJTdHlsZTo6aW5pdGlhbEFzcGVjdFJhdGlv
RGVub21pbmF0b3IoKSk7Ci0gICAgICAgIHNlbGVjdG9yLT5zdHlsZSgpLT5zZXRBc3BlY3RSYXRp
b051bWVyYXRvcihSZW5kZXJTdHlsZTo6aW5pdGlhbEFzcGVjdFJhdGlvTnVtZXJhdG9yKCkpOwor
ICAgICAgICBzdHlsZVJlc29sdmVyLT5zdHlsZSgpLT5zZXRIYXNBc3BlY3RSYXRpbyhSZW5kZXJT
dHlsZTo6aW5pdGlhbEhhc0FzcGVjdFJhdGlvKCkpOworICAgICAgICBzdHlsZVJlc29sdmVyLT5z
dHlsZSgpLT5zZXRBc3BlY3RSYXRpb0Rlbm9taW5hdG9yKFJlbmRlclN0eWxlOjppbml0aWFsQXNw
ZWN0UmF0aW9EZW5vbWluYXRvcigpKTsKKyAgICAgICAgc3R5bGVSZXNvbHZlci0+c3R5bGUoKS0+
c2V0QXNwZWN0UmF0aW9OdW1lcmF0b3IoUmVuZGVyU3R5bGU6OmluaXRpYWxBc3BlY3RSYXRpb051
bWVyYXRvcigpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlKFN0eWxlUmVz
b2x2ZXIqIHNlbGVjdG9yLCBDU1NWYWx1ZSogdmFsdWUpCisgICAgc3RhdGljIHZvaWQgYXBwbHlW
YWx1ZShTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyLCBDU1NWYWx1ZSogdmFsdWUpCiAgICAg
ewogICAgICAgICBpZiAoIXZhbHVlLT5pc0FzcGVjdFJhdGlvVmFsdWUoKSkgewotICAgICAgICAg
ICAgc2VsZWN0b3ItPnN0eWxlKCktPnNldEhhc0FzcGVjdFJhdGlvKGZhbHNlKTsKKyAgICAgICAg
ICAgIHN0eWxlUmVzb2x2ZXItPnN0eWxlKCktPnNldEhhc0FzcGVjdFJhdGlvKGZhbHNlKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBDU1NBc3BlY3RSYXRpb1ZhbHVl
KiBhc3BlY3RSYXRpb1ZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTQXNwZWN0UmF0aW9WYWx1ZSo+KHZh
bHVlKTsKLSAgICAgICAgc2VsZWN0b3ItPnN0eWxlKCktPnNldEhhc0FzcGVjdFJhdGlvKHRydWUp
OwotICAgICAgICBzZWxlY3Rvci0+c3R5bGUoKS0+c2V0QXNwZWN0UmF0aW9EZW5vbWluYXRvcihh
c3BlY3RSYXRpb1ZhbHVlLT5kZW5vbWluYXRvclZhbHVlKCkpOwotICAgICAgICBzZWxlY3Rvci0+
c3R5bGUoKS0+c2V0QXNwZWN0UmF0aW9OdW1lcmF0b3IoYXNwZWN0UmF0aW9WYWx1ZS0+bnVtZXJh
dG9yVmFsdWUoKSk7CisgICAgICAgIHN0eWxlUmVzb2x2ZXItPnN0eWxlKCktPnNldEhhc0FzcGVj
dFJhdGlvKHRydWUpOworICAgICAgICBzdHlsZVJlc29sdmVyLT5zdHlsZSgpLT5zZXRBc3BlY3RS
YXRpb0Rlbm9taW5hdG9yKGFzcGVjdFJhdGlvVmFsdWUtPmRlbm9taW5hdG9yVmFsdWUoKSk7Cisg
ICAgICAgIHN0eWxlUmVzb2x2ZXItPnN0eWxlKCktPnNldEFzcGVjdFJhdGlvTnVtZXJhdG9yKGFz
cGVjdFJhdGlvVmFsdWUtPm51bWVyYXRvclZhbHVlKCkpOwogICAgIH0KIAogICAgIHN0YXRpYyBQ
cm9wZXJ0eUhhbmRsZXIgY3JlYXRlSGFuZGxlcigpCkBAIC0xNjA2LDQ4ICsxNjA2LDQ4IEBAIHB1
YmxpYzoKIAogY2xhc3MgQXBwbHlQcm9wZXJ0eVpvb20gewogcHJpdmF0ZToKLSAgICBzdGF0aWMg
dm9pZCByZXNldEVmZmVjdGl2ZVpvb20oU3R5bGVSZXNvbHZlciogc2VsZWN0b3IpCisgICAgc3Rh
dGljIHZvaWQgcmVzZXRFZmZlY3RpdmVab29tKFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIp
CiAgICAgewogICAgICAgICAvLyBSZXNldCB0aGUgem9vbSBpbiBlZmZlY3QuIFRoaXMgYWxsb3dz
IHRoZSBzZXRab29tIG1ldGhvZCB0byBhY2N1cmF0ZWx5IGNvbXB1dGUgYSBuZXcgem9vbSBpbiBl
ZmZlY3QuCi0gICAgICAgIHNlbGVjdG9yLT5zZXRFZmZlY3RpdmVab29tKHNlbGVjdG9yLT5wYXJl
bnRTdHlsZSgpID8gc2VsZWN0b3ItPnBhcmVudFN0eWxlKCktPmVmZmVjdGl2ZVpvb20oKSA6IFJl
bmRlclN0eWxlOjppbml0aWFsWm9vbSgpKTsKKyAgICAgICAgc3R5bGVSZXNvbHZlci0+c2V0RWZm
ZWN0aXZlWm9vbShzdHlsZVJlc29sdmVyLT5wYXJlbnRTdHlsZSgpID8gc3R5bGVSZXNvbHZlci0+
cGFyZW50U3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpIDogUmVuZGVyU3R5bGU6OmluaXRpYWxab29t
KCkpOwogICAgIH0KIAogcHVibGljOgotICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5oZXJpdFZhbHVl
KFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yKQorICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5oZXJpdFZh
bHVlKFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIpCiAgICAgewotICAgICAgICByZXNldEVm
ZmVjdGl2ZVpvb20oc2VsZWN0b3IpOwotICAgICAgICBzZWxlY3Rvci0+c2V0Wm9vbShzZWxlY3Rv
ci0+cGFyZW50U3R5bGUoKS0+em9vbSgpKTsKKyAgICAgICAgcmVzZXRFZmZlY3RpdmVab29tKHN0
eWxlUmVzb2x2ZXIpOworICAgICAgICBzdHlsZVJlc29sdmVyLT5zZXRab29tKHN0eWxlUmVzb2x2
ZXItPnBhcmVudFN0eWxlKCktPnpvb20oKSk7CiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQgYXBw
bHlJbml0aWFsVmFsdWUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IpCisgICAgc3RhdGljIHZvaWQg
YXBwbHlJbml0aWFsVmFsdWUoU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlcikKICAgICB7Ci0g
ICAgICAgIHJlc2V0RWZmZWN0aXZlWm9vbShzZWxlY3Rvcik7Ci0gICAgICAgIHNlbGVjdG9yLT5z
ZXRab29tKFJlbmRlclN0eWxlOjppbml0aWFsWm9vbSgpKTsKKyAgICAgICAgcmVzZXRFZmZlY3Rp
dmVab29tKHN0eWxlUmVzb2x2ZXIpOworICAgICAgICBzdHlsZVJlc29sdmVyLT5zZXRab29tKFJl
bmRlclN0eWxlOjppbml0aWFsWm9vbSgpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCBhcHBs
eVZhbHVlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBDU1NWYWx1ZSogdmFsdWUpCisgICAgc3Rh
dGljIHZvaWQgYXBwbHlWYWx1ZShTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyLCBDU1NWYWx1
ZSogdmFsdWUpCiAgICAgewogICAgICAgICBBU1NFUlQodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUo
KSk7CiAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19j
YXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOwogCiAgICAgICAgIGlmIChwcmltaXRpdmVW
YWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZU5vcm1hbCkgewotICAgICAgICAgICAgcmVzZXRF
ZmZlY3RpdmVab29tKHNlbGVjdG9yKTsKLSAgICAgICAgICAgIHNlbGVjdG9yLT5zZXRab29tKFJl
bmRlclN0eWxlOjppbml0aWFsWm9vbSgpKTsKKyAgICAgICAgICAgIHJlc2V0RWZmZWN0aXZlWm9v
bShzdHlsZVJlc29sdmVyKTsKKyAgICAgICAgICAgIHN0eWxlUmVzb2x2ZXItPnNldFpvb20oUmVu
ZGVyU3R5bGU6OmluaXRpYWxab29tKCkpOwogICAgICAgICB9IGVsc2UgaWYgKHByaW1pdGl2ZVZh
bHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlUmVzZXQpIHsKLSAgICAgICAgICAgIHNlbGVjdG9y
LT5zZXRFZmZlY3RpdmVab29tKFJlbmRlclN0eWxlOjppbml0aWFsWm9vbSgpKTsKLSAgICAgICAg
ICAgIHNlbGVjdG9yLT5zZXRab29tKFJlbmRlclN0eWxlOjppbml0aWFsWm9vbSgpKTsKKyAgICAg
ICAgICAgIHN0eWxlUmVzb2x2ZXItPnNldEVmZmVjdGl2ZVpvb20oUmVuZGVyU3R5bGU6OmluaXRp
YWxab29tKCkpOworICAgICAgICAgICAgc3R5bGVSZXNvbHZlci0+c2V0Wm9vbShSZW5kZXJTdHls
ZTo6aW5pdGlhbFpvb20oKSk7CiAgICAgICAgIH0gZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUtPmdl
dElkZW50KCkgPT0gQ1NTVmFsdWVEb2N1bWVudCkgewotICAgICAgICAgICAgZmxvYXQgZG9jWm9v
bSA9IHNlbGVjdG9yLT5yb290RWxlbWVudFN0eWxlKCkgPyBzZWxlY3Rvci0+cm9vdEVsZW1lbnRT
dHlsZSgpLT56b29tKCkgOiBSZW5kZXJTdHlsZTo6aW5pdGlhbFpvb20oKTsKLSAgICAgICAgICAg
IHNlbGVjdG9yLT5zZXRFZmZlY3RpdmVab29tKGRvY1pvb20pOwotICAgICAgICAgICAgc2VsZWN0
b3ItPnNldFpvb20oZG9jWm9vbSk7CisgICAgICAgICAgICBmbG9hdCBkb2Nab29tID0gc3R5bGVS
ZXNvbHZlci0+cm9vdEVsZW1lbnRTdHlsZSgpID8gc3R5bGVSZXNvbHZlci0+cm9vdEVsZW1lbnRT
dHlsZSgpLT56b29tKCkgOiBSZW5kZXJTdHlsZTo6aW5pdGlhbFpvb20oKTsKKyAgICAgICAgICAg
IHN0eWxlUmVzb2x2ZXItPnNldEVmZmVjdGl2ZVpvb20oZG9jWm9vbSk7CisgICAgICAgICAgICBz
dHlsZVJlc29sdmVyLT5zZXRab29tKGRvY1pvb20pOwogICAgICAgICB9IGVsc2UgaWYgKHByaW1p
dGl2ZVZhbHVlLT5pc1BlcmNlbnRhZ2UoKSkgewotICAgICAgICAgICAgcmVzZXRFZmZlY3RpdmVa
b29tKHNlbGVjdG9yKTsKKyAgICAgICAgICAgIHJlc2V0RWZmZWN0aXZlWm9vbShzdHlsZVJlc29s
dmVyKTsKICAgICAgICAgICAgIGlmIChmbG9hdCBwZXJjZW50ID0gcHJpbWl0aXZlVmFsdWUtPmdl
dEZsb2F0VmFsdWUoKSkKLSAgICAgICAgICAgICAgICBzZWxlY3Rvci0+c2V0Wm9vbShwZXJjZW50
IC8gMTAwLjBmKTsKKyAgICAgICAgICAgICAgICBzdHlsZVJlc29sdmVyLT5zZXRab29tKHBlcmNl
bnQgLyAxMDAuMGYpOwogICAgICAgICB9IGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5pc051bWJl
cigpKSB7Ci0gICAgICAgICAgICByZXNldEVmZmVjdGl2ZVpvb20oc2VsZWN0b3IpOworICAgICAg
ICAgICAgcmVzZXRFZmZlY3RpdmVab29tKHN0eWxlUmVzb2x2ZXIpOwogICAgICAgICAgICAgaWYg
KGZsb2F0IG51bWJlciA9IHByaW1pdGl2ZVZhbHVlLT5nZXRGbG9hdFZhbHVlKCkpCi0gICAgICAg
ICAgICAgICAgc2VsZWN0b3ItPnNldFpvb20obnVtYmVyKTsKKyAgICAgICAgICAgICAgICBzdHls
ZVJlc29sdmVyLT5zZXRab29tKG51bWJlcik7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTE2NTks
NDIgKzE2NTksNDIgQEAgcHVibGljOgogCiBjbGFzcyBBcHBseVByb3BlcnR5RGlzcGxheSB7CiBw
cml2YXRlOgotICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1ZhbGlkRGlzcGxheVZhbHVlKFN0eWxl
UmVzb2x2ZXIqIHNlbGVjdG9yLCBFRGlzcGxheSBkaXNwbGF5UHJvcGVydHlWYWx1ZSkKKyAgICBz
dGF0aWMgaW5saW5lIGJvb2wgaXNWYWxpZERpc3BsYXlWYWx1ZShTdHlsZVJlc29sdmVyKiBzdHls
ZVJlc29sdmVyLCBFRGlzcGxheSBkaXNwbGF5UHJvcGVydHlWYWx1ZSkKICAgICB7CiAjaWYgRU5B
QkxFKFNWRykKLSAgICAgICAgaWYgKHNlbGVjdG9yLT5lbGVtZW50KCkgJiYgc2VsZWN0b3ItPmVs
ZW1lbnQoKS0+aXNTVkdFbGVtZW50KCkgJiYgc2VsZWN0b3ItPnN0eWxlKCktPnN0eWxlVHlwZSgp
ID09IE5PUFNFVURPKQorICAgICAgICBpZiAoc3R5bGVSZXNvbHZlci0+ZWxlbWVudCgpICYmIHN0
eWxlUmVzb2x2ZXItPmVsZW1lbnQoKS0+aXNTVkdFbGVtZW50KCkgJiYgc3R5bGVSZXNvbHZlci0+
c3R5bGUoKS0+c3R5bGVUeXBlKCkgPT0gTk9QU0VVRE8pCiAgICAgICAgICAgICByZXR1cm4gKGRp
c3BsYXlQcm9wZXJ0eVZhbHVlID09IElOTElORSB8fCBkaXNwbGF5UHJvcGVydHlWYWx1ZSA9PSBC
TE9DSyB8fCBkaXNwbGF5UHJvcGVydHlWYWx1ZSA9PSBOT05FKTsKICNlbHNlCi0gICAgICAgIFVO
VVNFRF9QQVJBTShzZWxlY3Rvcik7CisgICAgICAgIFVOVVNFRF9QQVJBTShzdHlsZVJlc29sdmVy
KTsKICAgICAgICAgVU5VU0VEX1BBUkFNKGRpc3BsYXlQcm9wZXJ0eVZhbHVlKTsKICNlbmRpZgog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiBwdWJsaWM6Ci0gICAgc3RhdGljIHZvaWQgYXBw
bHlJbmhlcml0VmFsdWUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IpCisgICAgc3RhdGljIHZvaWQg
YXBwbHlJbmhlcml0VmFsdWUoU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlcikKICAgICB7Ci0g
ICAgICAgIEVEaXNwbGF5IGRpc3BsYXkgPSBzZWxlY3Rvci0+cGFyZW50U3R5bGUoKS0+ZGlzcGxh
eSgpOwotICAgICAgICBpZiAoIWlzVmFsaWREaXNwbGF5VmFsdWUoc2VsZWN0b3IsIGRpc3BsYXkp
KQorICAgICAgICBFRGlzcGxheSBkaXNwbGF5ID0gc3R5bGVSZXNvbHZlci0+cGFyZW50U3R5bGUo
KS0+ZGlzcGxheSgpOworICAgICAgICBpZiAoIWlzVmFsaWREaXNwbGF5VmFsdWUoc3R5bGVSZXNv
bHZlciwgZGlzcGxheSkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHNlbGVjdG9yLT5z
dHlsZSgpLT5zZXREaXNwbGF5KGRpc3BsYXkpOworICAgICAgICBzdHlsZVJlc29sdmVyLT5zdHls
ZSgpLT5zZXREaXNwbGF5KGRpc3BsYXkpOwogICAgIH0KIAotICAgIHN0YXRpYyB2b2lkIGFwcGx5
SW5pdGlhbFZhbHVlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yKQorICAgIHN0YXRpYyB2b2lkIGFw
cGx5SW5pdGlhbFZhbHVlKFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIpCiAgICAgewotICAg
ICAgICBzZWxlY3Rvci0+c3R5bGUoKS0+c2V0RGlzcGxheShSZW5kZXJTdHlsZTo6aW5pdGlhbERp
c3BsYXkoKSk7CisgICAgICAgIHN0eWxlUmVzb2x2ZXItPnN0eWxlKCktPnNldERpc3BsYXkoUmVu
ZGVyU3R5bGU6OmluaXRpYWxEaXNwbGF5KCkpOwogICAgIH0KIAotICAgIHN0YXRpYyB2b2lkIGFw
cGx5VmFsdWUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIENTU1ZhbHVlKiB2YWx1ZSkKKyAgICBz
dGF0aWMgdm9pZCBhcHBseVZhbHVlKFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIsIENTU1Zh
bHVlKiB2YWx1ZSkKICAgICB7CiAgICAgICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUo
KSkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBFRGlzcGxheSBkaXNwbGF5ID0gKnN0
YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOwogCi0gICAgICAgIGlmICghaXNW
YWxpZERpc3BsYXlWYWx1ZShzZWxlY3RvciwgZGlzcGxheSkpCisgICAgICAgIGlmICghaXNWYWxp
ZERpc3BsYXlWYWx1ZShzdHlsZVJlc29sdmVyLCBkaXNwbGF5KSkKICAgICAgICAgICAgIHJldHVy
bjsKIAotICAgICAgICBzZWxlY3Rvci0+c3R5bGUoKS0+c2V0RGlzcGxheShkaXNwbGF5KTsKKyAg
ICAgICAgc3R5bGVSZXNvbHZlci0+c3R5bGUoKS0+c2V0RGlzcGxheShkaXNwbGF5KTsKICAgICB9
CiAKICAgICBzdGF0aWMgUHJvcGVydHlIYW5kbGVyIGNyZWF0ZUhhbmRsZXIoKQpAQCAtMTcwNSwy
NiArMTcwNSwyNiBAQCBwdWJsaWM6CiAKIGNsYXNzIEFwcGx5UHJvcGVydHlGbGV4IHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgdm9pZCBhcHBseUluaGVyaXRWYWx1ZShTdHlsZVJlc29sdmVyKiBzZWxl
Y3RvcikKKyAgICBzdGF0aWMgdm9pZCBhcHBseUluaGVyaXRWYWx1ZShTdHlsZVJlc29sdmVyKiBz
dHlsZVJlc29sdmVyKQogICAgIHsKLSAgICAgICAgQXBwbHlQcm9wZXJ0eURlZmF1bHRCYXNlPGZs
b2F0LCAmUmVuZGVyU3R5bGU6OnBvc2l0aXZlRmxleCwgZmxvYXQsICZSZW5kZXJTdHlsZTo6c2V0
UG9zaXRpdmVGbGV4LCBmbG9hdCwgJlJlbmRlclN0eWxlOjppbml0aWFsTmVnYXRpdmVGbGV4Pjo6
YXBwbHlJbmhlcml0VmFsdWUoc2VsZWN0b3IpOwotICAgICAgICBBcHBseVByb3BlcnR5RGVmYXVs
dEJhc2U8ZmxvYXQsICZSZW5kZXJTdHlsZTo6bmVnYXRpdmVGbGV4LCBmbG9hdCwgJlJlbmRlclN0
eWxlOjpzZXROZWdhdGl2ZUZsZXgsIGZsb2F0LCAmUmVuZGVyU3R5bGU6OmluaXRpYWxQb3NpdGl2
ZUZsZXg+OjphcHBseUluaGVyaXRWYWx1ZShzZWxlY3Rvcik7Ci0gICAgICAgIEFwcGx5UHJvcGVy
dHlEZWZhdWx0QmFzZTxMZW5ndGgsICZSZW5kZXJTdHlsZTo6ZmxleFByZWZlcnJlZFNpemUsIExl
bmd0aCwgJlJlbmRlclN0eWxlOjpzZXRGbGV4UHJlZmVycmVkU2l6ZSwgTGVuZ3RoLCAmUmVuZGVy
U3R5bGU6OmluaXRpYWxGbGV4UHJlZmVycmVkU2l6ZT46OmFwcGx5SW5oZXJpdFZhbHVlKHNlbGVj
dG9yKTsKKyAgICAgICAgQXBwbHlQcm9wZXJ0eURlZmF1bHRCYXNlPGZsb2F0LCAmUmVuZGVyU3R5
bGU6OnBvc2l0aXZlRmxleCwgZmxvYXQsICZSZW5kZXJTdHlsZTo6c2V0UG9zaXRpdmVGbGV4LCBm
bG9hdCwgJlJlbmRlclN0eWxlOjppbml0aWFsTmVnYXRpdmVGbGV4Pjo6YXBwbHlJbmhlcml0VmFs
dWUoc3R5bGVSZXNvbHZlcik7CisgICAgICAgIEFwcGx5UHJvcGVydHlEZWZhdWx0QmFzZTxmbG9h
dCwgJlJlbmRlclN0eWxlOjpuZWdhdGl2ZUZsZXgsIGZsb2F0LCAmUmVuZGVyU3R5bGU6OnNldE5l
Z2F0aXZlRmxleCwgZmxvYXQsICZSZW5kZXJTdHlsZTo6aW5pdGlhbFBvc2l0aXZlRmxleD46OmFw
cGx5SW5oZXJpdFZhbHVlKHN0eWxlUmVzb2x2ZXIpOworICAgICAgICBBcHBseVByb3BlcnR5RGVm
YXVsdEJhc2U8TGVuZ3RoLCAmUmVuZGVyU3R5bGU6OmZsZXhQcmVmZXJyZWRTaXplLCBMZW5ndGgs
ICZSZW5kZXJTdHlsZTo6c2V0RmxleFByZWZlcnJlZFNpemUsIExlbmd0aCwgJlJlbmRlclN0eWxl
Ojppbml0aWFsRmxleFByZWZlcnJlZFNpemU+OjphcHBseUluaGVyaXRWYWx1ZShzdHlsZVJlc29s
dmVyKTsKICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCBhcHBseUluaXRpYWxWYWx1ZShTdHlsZVJl
c29sdmVyKiBzZWxlY3RvcikKKyAgICBzdGF0aWMgdm9pZCBhcHBseUluaXRpYWxWYWx1ZShTdHls
ZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyKQogICAgIHsKLSAgICAgICAgc2VsZWN0b3ItPnN0eWxl
KCktPnNldFBvc2l0aXZlRmxleChSZW5kZXJTdHlsZTo6aW5pdGlhbFBvc2l0aXZlRmxleCgpKTsK
LSAgICAgICAgc2VsZWN0b3ItPnN0eWxlKCktPnNldE5lZ2F0aXZlRmxleChSZW5kZXJTdHlsZTo6
aW5pdGlhbE5lZ2F0aXZlRmxleCgpKTsKLSAgICAgICAgc2VsZWN0b3ItPnN0eWxlKCktPnNldEZs
ZXhQcmVmZXJyZWRTaXplKFJlbmRlclN0eWxlOjppbml0aWFsRmxleFByZWZlcnJlZFNpemUoKSk7
CisgICAgICAgIHN0eWxlUmVzb2x2ZXItPnN0eWxlKCktPnNldFBvc2l0aXZlRmxleChSZW5kZXJT
dHlsZTo6aW5pdGlhbFBvc2l0aXZlRmxleCgpKTsKKyAgICAgICAgc3R5bGVSZXNvbHZlci0+c3R5
bGUoKS0+c2V0TmVnYXRpdmVGbGV4KFJlbmRlclN0eWxlOjppbml0aWFsTmVnYXRpdmVGbGV4KCkp
OworICAgICAgICBzdHlsZVJlc29sdmVyLT5zdHlsZSgpLT5zZXRGbGV4UHJlZmVycmVkU2l6ZShS
ZW5kZXJTdHlsZTo6aW5pdGlhbEZsZXhQcmVmZXJyZWRTaXplKCkpOwogICAgIH0KIAotICAgIHN0
YXRpYyB2b2lkIGFwcGx5VmFsdWUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIENTU1ZhbHVlKiB2
YWx1ZSkKKyAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlKFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVz
b2x2ZXIsIENTU1ZhbHVlKiB2YWx1ZSkKICAgICB7CiAgICAgICAgIGlmICh2YWx1ZS0+aXNQcmlt
aXRpdmVWYWx1ZSgpKSB7CiAgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZl
VmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKICAgICAgICAg
ICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZU5vbmUpCi0gICAg
ICAgICAgICAgICAgYXBwbHlJbml0aWFsVmFsdWUoc2VsZWN0b3IpOworICAgICAgICAgICAgICAg
IGFwcGx5SW5pdGlhbFZhbHVlKHN0eWxlUmVzb2x2ZXIpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKQEAgLTE3MzcsMTMgKzE3MzcsMTMgQEAgcHVibGljOgogICAgICAgICBmbG9h
dCBmbGV4VmFsdWUgPSAwOwogICAgICAgICBpZiAoIWdldEZsZXhWYWx1ZSh2YWx1ZUxpc3QtPml0
ZW1XaXRob3V0Qm91bmRzQ2hlY2soMCksIGZsZXhWYWx1ZSkpCiAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIHNlbGVjdG9yLT5zdHlsZSgpLT5zZXRQb3NpdGl2ZUZsZXgoZmxleFZhbHVlKTsK
KyAgICAgICAgc3R5bGVSZXNvbHZlci0+c3R5bGUoKS0+c2V0UG9zaXRpdmVGbGV4KGZsZXhWYWx1
ZSk7CiAKICAgICAgICAgaWYgKCFnZXRGbGV4VmFsdWUodmFsdWVMaXN0LT5pdGVtV2l0aG91dEJv
dW5kc0NoZWNrKDEpLCBmbGV4VmFsdWUpKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBz
ZWxlY3Rvci0+c3R5bGUoKS0+c2V0TmVnYXRpdmVGbGV4KGZsZXhWYWx1ZSk7CisgICAgICAgIHN0
eWxlUmVzb2x2ZXItPnN0eWxlKCktPnNldE5lZ2F0aXZlRmxleChmbGV4VmFsdWUpOwogCi0gICAg
ICAgIEFwcGx5UHJvcGVydHlMZW5ndGg8JlJlbmRlclN0eWxlOjpmbGV4UHJlZmVycmVkU2l6ZSwg
JlJlbmRlclN0eWxlOjpzZXRGbGV4UHJlZmVycmVkU2l6ZSwgJlJlbmRlclN0eWxlOjppbml0aWFs
RmxleFByZWZlcnJlZFNpemUsIEF1dG9FbmFibGVkPjo6YXBwbHlWYWx1ZShzZWxlY3RvciwgdmFs
dWVMaXN0LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDIpKTsKKyAgICAgICAgQXBwbHlQcm9wZXJ0
eUxlbmd0aDwmUmVuZGVyU3R5bGU6OmZsZXhQcmVmZXJyZWRTaXplLCAmUmVuZGVyU3R5bGU6OnNl
dEZsZXhQcmVmZXJyZWRTaXplLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxGbGV4UHJlZmVycmVkU2l6
ZSwgQXV0b0VuYWJsZWQ+OjphcHBseVZhbHVlKHN0eWxlUmVzb2x2ZXIsIHZhbHVlTGlzdC0+aXRl
bVdpdGhvdXRCb3VuZHNDaGVjaygyKSk7CiAgICAgfQogCiAgICAgc3RhdGljIFByb3BlcnR5SGFu
ZGxlciBjcmVhdGVIYW5kbGVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZUJ1aWxkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXIuaAppbmRleCBiY2Nl
OGY0YjgxMjYzZjYxMGNmMDA3ZTQ1ZjEwODg3NjRkNWMzNDU1Li5hNzIyMWNiNGVlZDI1ZGY2YTE4
YmUzMzVhYWMxZWQ5NzRkODFiM2UyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVCdWlsZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlci5oCkBAIC00
Miw5ICs0Miw5IEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIHZvaWQgKCpBcHBseUZ1bmN0aW9uKShT
dHlsZVJlc29sdmVyKiwgQ1NTVmFsdWUqKTsKICAgICBQcm9wZXJ0eUhhbmRsZXIoKSA6IG1faW5o
ZXJpdCgwKSwgbV9pbml0aWFsKDApLCBtX2FwcGx5KDApIHsgfQogICAgIFByb3BlcnR5SGFuZGxl
cihJbmhlcml0RnVuY3Rpb24gaW5oZXJpdCwgSW5pdGlhbEZ1bmN0aW9uIGluaXRpYWwsIEFwcGx5
RnVuY3Rpb24gYXBwbHkpIDogbV9pbmhlcml0KGluaGVyaXQpLCBtX2luaXRpYWwoaW5pdGlhbCks
IG1fYXBwbHkoYXBwbHkpIHsgfQotICAgIHZvaWQgYXBwbHlJbmhlcml0VmFsdWUoU3R5bGVSZXNv
bHZlciogc2VsZWN0b3IpIGNvbnN0IHsgQVNTRVJUKG1faW5oZXJpdCk7ICgqbV9pbmhlcml0KShz
ZWxlY3Rvcik7IH0KLSAgICB2b2lkIGFwcGx5SW5pdGlhbFZhbHVlKFN0eWxlUmVzb2x2ZXIqIHNl
bGVjdG9yKSBjb25zdCB7IEFTU0VSVChtX2luaXRpYWwpOyAoKm1faW5pdGlhbCkoc2VsZWN0b3Ip
OyB9Ci0gICAgdm9pZCBhcHBseVZhbHVlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBDU1NWYWx1
ZSogdmFsdWUpIGNvbnN0IHsgQVNTRVJUKG1fYXBwbHkpOyAoKm1fYXBwbHkpKHNlbGVjdG9yLCB2
YWx1ZSk7IH0KKyAgICB2b2lkIGFwcGx5SW5oZXJpdFZhbHVlKFN0eWxlUmVzb2x2ZXIqIHN0eWxl
UmVzb2x2ZXIpIGNvbnN0IHsgQVNTRVJUKG1faW5oZXJpdCk7ICgqbV9pbmhlcml0KShzdHlsZVJl
c29sdmVyKTsgfQorICAgIHZvaWQgYXBwbHlJbml0aWFsVmFsdWUoU3R5bGVSZXNvbHZlciogc3R5
bGVSZXNvbHZlcikgY29uc3QgeyBBU1NFUlQobV9pbml0aWFsKTsgKCptX2luaXRpYWwpKHN0eWxl
UmVzb2x2ZXIpOyB9CisgICAgdm9pZCBhcHBseVZhbHVlKFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVz
b2x2ZXIsIENTU1ZhbHVlKiB2YWx1ZSkgY29uc3QgeyBBU1NFUlQobV9hcHBseSk7ICgqbV9hcHBs
eSkoc3R5bGVSZXNvbHZlciwgdmFsdWUpOyB9CiAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyBy
ZXR1cm4gbV9pbmhlcml0ICYmIG1faW5pdGlhbCAmJiBtX2FwcGx5OyB9CiAgICAgSW5oZXJpdEZ1
bmN0aW9uIGluaGVyaXRGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faW5oZXJpdDsgfQogICAg
IEluaXRpYWxGdW5jdGlvbiBpbml0aWFsRnVuY3Rpb24oKSB7IHJldHVybiBtX2luaXRpYWw7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZU1lZGlhLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZU1lZGlhLmNwcAppbmRleCAxYTdjMzEyMzRlOWY5ZTliN2M5NWE0ZWY1
YWZlMzYyNGMyMDI4YjRjLi45MzFlNmJiMjRjODhjMDgzYzk2NGI1MzE3NThjMzhlM2MzMTc3NmIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVNZWRpYS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlTWVkaWEuY3BwCkBAIC02MCwxMSArNjAsMTEgQEAgYm9vbCBT
dHlsZU1lZGlhOjptYXRjaE1lZGl1bShjb25zdCBTdHJpbmcmIHF1ZXJ5KSBjb25zdAogICAgIGlm
ICghZG9jdW1lbnRFbGVtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBTdHlsZVJl
c29sdmVyKiBzdHlsZVNlbGVjdG9yID0gZG9jdW1lbnQtPnN0eWxlU2VsZWN0b3IoKTsKLSAgICBp
ZiAoIXN0eWxlU2VsZWN0b3IpCisgICAgU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciA9IGRv
Y3VtZW50LT5zdHlsZVJlc29sdmVyKCk7CisgICAgaWYgKCFzdHlsZVJlc29sdmVyKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IHJvb3RTdHlsZSA9IHN0
eWxlU2VsZWN0b3ItPnN0eWxlRm9yRWxlbWVudChkb2N1bWVudEVsZW1lbnQsIDAgLypkZWZhdWx0
UGFyZW50Ki8sIERpc2FsbG93U3R5bGVTaGFyaW5nLCBNYXRjaE9ubHlVc2VyQWdlbnRSdWxlcyk7
CisgICAgUmVmUHRyPFJlbmRlclN0eWxlPiByb290U3R5bGUgPSBzdHlsZVJlc29sdmVyLT5zdHls
ZUZvckVsZW1lbnQoZG9jdW1lbnRFbGVtZW50LCAwIC8qZGVmYXVsdFBhcmVudCovLCBEaXNhbGxv
d1N0eWxlU2hhcmluZywgTWF0Y2hPbmx5VXNlckFnZW50UnVsZXMpOwogCiAgICAgUmVmUHRyPE1l
ZGlhUXVlcnlTZXQ+IG1lZGlhID0gTWVkaWFRdWVyeVNldDo6Y3JlYXRlKCk7CiAgICAgaWYgKCFt
ZWRpYS0+cGFyc2UocXVlcnkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggYWZhZDZiNjg1
MjhjMzJiNGVkYWQ2ZDBiYmFhNzcyNjBlOTdhZWY4MC4uZTFlYjc0YjUyNWVhZTBjMWE4NjcxNzg0
ZDhjMTk1NjQ4MjlhODVlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC01MjcsOCArNTI3
LDggQEAgRG9jdW1lbnQ6OkRvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsLCBi
b29sIGlzWEhUTUwsIGJvb2wgaXNIVE1MKQogCiAgICAgbV9nb3RvQW5jaG9yTmVlZGVkQWZ0ZXJT
dHlsZXNoZWV0c0xvYWQgPSBmYWxzZTsKIAotICAgIG1fZGlkQ2FsY3VsYXRlU3R5bGVTZWxlY3Rv
ciA9IGZhbHNlOwotICAgIG1faGFzRGlydHlTdHlsZVNlbGVjdG9yID0gZmFsc2U7CisgICAgbV9k
aWRDYWxjdWxhdGVTdHlsZVJlc29sdmVyID0gZmFsc2U7CisgICAgbV9oYXNEaXJ0eVN0eWxlUmVz
b2x2ZXIgPSBmYWxzZTsKICAgICBtX3BlbmRpbmdTdHlsZXNoZWV0cyA9IDA7CiAgICAgbV9pZ25v
cmVQZW5kaW5nU3R5bGVzaGVldHMgPSBmYWxzZTsKICAgICBtX2hhc05vZGVzV2l0aFBsYWNlaG9s
ZGVyU3R5bGUgPSBmYWxzZTsKQEAgLTYxNiw3ICs2MTYsNyBAQCBEb2N1bWVudDo6fkRvY3VtZW50
KCkKICAgICBpZiAobV9tZWRpYVF1ZXJ5TWF0Y2hlcikKICAgICAgICAgbV9tZWRpYVF1ZXJ5TWF0
Y2hlci0+ZG9jdW1lbnREZXN0cm95ZWQoKTsKIAotICAgIGNsZWFyU3R5bGVTZWxlY3RvcigpOyAv
LyBXZSBuZWVkIHRvIGRlc3RvcnkgQ1NTRm9udFNlbGVjdG9yIGJlZm9yZSBkZXN0cm95aW5nIG1f
Y2FjaGVkUmVzb3VyY2VMb2FkZXIuCisgICAgY2xlYXJTdHlsZVJlc29sdmVyKCk7IC8vIFdlIG5l
ZWQgdG8gZGVzdG9yeSBDU1NGb250U2VsZWN0b3IgYmVmb3JlIGRlc3Ryb3lpbmcgbV9jYWNoZWRS
ZXNvdXJjZUxvYWRlci4KICAgICBtX2NhY2hlZFJlc291cmNlTG9hZGVyLmNsZWFyKCk7CiAKICAg
ICAvLyBXZSBtdXN0IGNhbGwgY2xlYXJSYXJlRGF0YSgpIGhlcmUgc2luY2UgYSBEb2N1bWVudCBj
bGFzcyBpbmhlcml0cyBUcmVlU2NvcGUKQEAgLTc3MSw3ICs3NzEsNyBAQCB2b2lkIERvY3VtZW50
OjpzZXREb2NUeXBlKFBhc3NSZWZQdHI8RG9jdW1lbnRUeXBlPiBkb2NUeXBlKQogICAgIGlmICht
X2RvY1R5cGUpCiAgICAgICAgIHRoaXMtPmFkb3B0SWZOZWVkZWQobV9kb2NUeXBlLmdldCgpKTsK
ICAgICAvLyBEb2N0eXBlIGFmZmVjdHMgdGhlIGludGVycHJldGF0aW9uIG9mIHRoZSBzdHlsZXNo
ZWV0cy4KLSAgICBjbGVhclN0eWxlU2VsZWN0b3IoKTsKKyAgICBjbGVhclN0eWxlUmVzb2x2ZXIo
KTsKIH0KIAogRE9NSW1wbGVtZW50YXRpb24qIERvY3VtZW50OjppbXBsZW1lbnRhdGlvbigpCkBA
IC03OTAsNyArNzkwLDcgQEAgdm9pZCBEb2N1bWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hh
bmdlZEJ5UGFyc2VyLCBOb2RlKiBiZWZvcmVDaGFuZ2UsIE5vZGUqIGEKICAgICAgICAgcmV0dXJu
OwogICAgIG1fZG9jdW1lbnRFbGVtZW50ID0gbmV3RG9jdW1lbnRFbGVtZW50OwogICAgIC8vIFRo
ZSByb290IHN0eWxlIHVzZWQgZm9yIG1lZGlhIHF1ZXJ5IG1hdGNoaW5nIGRlcGVuZHMgb24gdGhl
IGRvY3VtZW50IGVsZW1lbnQuCi0gICAgY2xlYXJTdHlsZVNlbGVjdG9yKCk7CisgICAgY2xlYXJT
dHlsZVJlc29sdmVyKCk7CiB9CiAKIFBhc3NSZWZQdHI8RWxlbWVudD4gRG9jdW1lbnQ6OmNyZWF0
ZUVsZW1lbnQoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKQEAg
LTEyNDUsNyArMTI0NSw3IEBAIHZvaWQgRG9jdW1lbnQ6OnNldENvbnRlbnRMYW5ndWFnZShjb25z
dCBTdHJpbmcmIGxhbmd1YWdlKQogICAgIG1fY29udGVudExhbmd1YWdlID0gbGFuZ3VhZ2U7CiAK
ICAgICAvLyBSZWNhbGN1bGF0ZSBzdHlsZSBzbyBsYW5ndWFnZSBpcyB1c2VkIHdoZW4gc2VsZWN0
aW5nIHRoZSBpbml0aWFsIGZvbnQuCi0gICAgc3R5bGVTZWxlY3RvckNoYW5nZWQoRGVmZXJSZWNh
bGNTdHlsZSk7CisgICAgc3R5bGVSZXNvbHZlckNoYW5nZWQoRGVmZXJSZWNhbGNTdHlsZSk7CiB9
CiAKIHZvaWQgRG9jdW1lbnQ6OnNldFhNTFZlcnNpb24oY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBF
eGNlcHRpb25Db2RlJiBlYykKQEAgLTE2OTYsNyArMTY5Niw3IEBAIHZvaWQgRG9jdW1lbnQ6OnJl
Y2FsY1N0eWxlKFN0eWxlQ2hhbmdlIGNoYW5nZSkKICAgICBpZiAobV9pblN0eWxlUmVjYWxjKQog
ICAgICAgICByZXR1cm47IC8vIEd1YXJkIGFnYWluc3QgcmUtZW50cmFuY3kuIC1kd2gKICAgICAK
LSAgICBpZiAobV9oYXNEaXJ0eVN0eWxlU2VsZWN0b3IpCisgICAgaWYgKG1faGFzRGlydHlTdHls
ZVJlc29sdmVyKQogICAgICAgICB1cGRhdGVBY3RpdmVTdHlsZXNoZWV0cyhSZWNhbGNTdHlsZUlt
bWVkaWF0ZWx5KTsKIAogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUg
PSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxSZWNhbGN1bGF0ZVN0eWxlKHRoaXMpOwpA
QCAtMTcyNSw3ICsxNzI1LDcgQEAgdm9pZCBEb2N1bWVudDo6cmVjYWxjU3R5bGUoU3R5bGVDaGFu
Z2UgY2hhbmdlKQogICAgICAgICAvLyBzdHlsZSBzZWxlY3RvciBtYXkgc2V0IHRoaXMgYWdhaW4g
ZHVyaW5nIHJlY2FsYwogICAgICAgICBtX2hhc05vZGVzV2l0aFBsYWNlaG9sZGVyU3R5bGUgPSBm
YWxzZTsKICAgICAgICAgCi0gICAgICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gZG9jdW1lbnRTdHls
ZSA9IFN0eWxlUmVzb2x2ZXI6OnN0eWxlRm9yRG9jdW1lbnQodGhpcywgbV9zdHlsZVNlbGVjdG9y
ID8gbV9zdHlsZVNlbGVjdG9yLT5mb250U2VsZWN0b3IoKSA6IDApOworICAgICAgICBSZWZQdHI8
UmVuZGVyU3R5bGU+IGRvY3VtZW50U3R5bGUgPSBTdHlsZVJlc29sdmVyOjpzdHlsZUZvckRvY3Vt
ZW50KHRoaXMsIG1fc3R5bGVSZXNvbHZlciA/IG1fc3R5bGVSZXNvbHZlci0+Zm9udFNlbGVjdG9y
KCkgOiAwKTsKICAgICAgICAgU3R5bGVDaGFuZ2UgY2ggPSBOb2RlOjpkaWZmKGRvY3VtZW50U3R5
bGUuZ2V0KCksIHJlbmRlcmVyKCktPnN0eWxlKCksIHRoaXMpOwogICAgICAgICBpZiAoY2ggIT0g
Tm9DaGFuZ2UpCiAgICAgICAgICAgICByZW5kZXJlcigpLT5zZXRTdHlsZShkb2N1bWVudFN0eWxl
LnJlbGVhc2UoKSk7CkBAIC0xNzU2LDcgKzE3NTYsNyBAQCBiYWlsX291dDoKICAgICBtX2luU3R5
bGVSZWNhbGMgPSBmYWxzZTsKICAgICAKICAgICAvLyBQc2V1ZG8gZWxlbWVudCByZW1vdmFsIGFu
ZCBzaW1pbGFyIG1heSBvbmx5IHdvcmsgd2l0aCB0aGVzZSBmbGFncyBzdGlsbCBzZXQuIFJlc2V0
IHRoZW0gYWZ0ZXIgdGhlIHN0eWxlIHJlY2FsYy4KLSAgICBpZiAobV9zdHlsZVNlbGVjdG9yKQor
ICAgIGlmIChtX3N0eWxlUmVzb2x2ZXIpCiAgICAgICAgIHJlc2V0Q1NTRmVhdHVyZUZsYWdzKCk7
CiAKICAgICBpZiAoZnJhbWVWaWV3KSB7CkBAIC0xODQyLDcgKzE4NDIsNyBAQCB2b2lkIERvY3Vt
ZW50Ojp1cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKQogICAgICAgICBIVE1M
RWxlbWVudCogYm9keUVsZW1lbnQgPSBib2R5KCk7CiAgICAgICAgIGlmIChib2R5RWxlbWVudCAm
JiAhYm9keUVsZW1lbnQtPnJlbmRlcmVyKCkgJiYgbV9wZW5kaW5nU2hlZXRMYXlvdXQgPT0gTm9M
YXlvdXRXaXRoUGVuZGluZ1NoZWV0cykgewogICAgICAgICAgICAgbV9wZW5kaW5nU2hlZXRMYXlv
dXQgPSBEaWRMYXlvdXRXaXRoUGVuZGluZ1NoZWV0czsKLSAgICAgICAgICAgIHN0eWxlU2VsZWN0
b3JDaGFuZ2VkKFJlY2FsY1N0eWxlSW1tZWRpYXRlbHkpOworICAgICAgICAgICAgc3R5bGVSZXNv
bHZlckNoYW5nZWQoUmVjYWxjU3R5bGVJbW1lZGlhdGVseSk7CiAgICAgICAgIH0gZWxzZSBpZiAo
bV9oYXNOb2Rlc1dpdGhQbGFjZWhvbGRlclN0eWxlKQogICAgICAgICAgICAgLy8gSWYgbmV3IG5v
ZGVzIGhhdmUgYmVlbiBhZGRlZCBvciBzdHlsZSByZWNhbGMgaGFzIGJlZW4gZG9uZSB3aXRoIHN0
eWxlIHNoZWV0cyBzdGlsbCBwZW5kaW5nLCBzb21lIG5vZGVzIAogICAgICAgICAgICAgLy8gbWF5
IG5vdCBoYXZlIGhhZCB0aGVpciByZWFsIHN0eWxlIGNhbGN1bGF0ZWQgeWV0LiBOb3JtYWxseSB0
aGlzIGdldHMgY2xlYW5lZCB3aGVuIHN0eWxlIHNoZWV0cyBhcnJpdmUgCkBAIC0xODYxLDE0ICsx
ODYxLDE0IEBAIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IERvY3VtZW50OjpzdHlsZUZvckVsZW1l
bnRJZ25vcmluZ1BlbmRpbmdTdHlsZXNoZWV0cyhFbGVtCiAKICAgICBib29sIG9sZElnbm9yZSA9
IG1faWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzOwogICAgIG1faWdub3JlUGVuZGluZ1N0eWxlc2hl
ZXRzID0gdHJ1ZTsKLSAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IHN0eWxlID0gc3R5bGVTZWxlY3Rv
cigpLT5zdHlsZUZvckVsZW1lbnQoZWxlbWVudCwgZWxlbWVudC0+cGFyZW50Tm9kZSgpID8gZWxl
bWVudC0+cGFyZW50Tm9kZSgpLT5jb21wdXRlZFN0eWxlKCkgOiAwKTsKKyAgICBSZWZQdHI8UmVu
ZGVyU3R5bGU+IHN0eWxlID0gc3R5bGVSZXNvbHZlcigpLT5zdHlsZUZvckVsZW1lbnQoZWxlbWVu
dCwgZWxlbWVudC0+cGFyZW50Tm9kZSgpID8gZWxlbWVudC0+cGFyZW50Tm9kZSgpLT5jb21wdXRl
ZFN0eWxlKCkgOiAwKTsKICAgICBtX2lnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cyA9IG9sZElnbm9y
ZTsKICAgICByZXR1cm4gc3R5bGUucmVsZWFzZSgpOwogfQogCiBQYXNzUmVmUHRyPFJlbmRlclN0
eWxlPiBEb2N1bWVudDo6c3R5bGVGb3JQYWdlKGludCBwYWdlSW5kZXgpCiB7Ci0gICAgUmVmUHRy
PFJlbmRlclN0eWxlPiBzdHlsZSA9IHN0eWxlU2VsZWN0b3IoKS0+c3R5bGVGb3JQYWdlKHBhZ2VJ
bmRleCk7CisgICAgUmVmUHRyPFJlbmRlclN0eWxlPiBzdHlsZSA9IHN0eWxlUmVzb2x2ZXIoKS0+
c3R5bGVGb3JQYWdlKHBhZ2VJbmRleCk7CiAgICAgcmV0dXJuIHN0eWxlLnJlbGVhc2UoKTsKIH0K
IApAQCAtMTk0MywzMiArMTk0MywzMiBAQCB2b2lkIERvY3VtZW50OjpzZXRJc1ZpZXdTb3VyY2Uo
Ym9vbCBpc1ZpZXdTb3VyY2UpCiB2b2lkIERvY3VtZW50Ojpjb21iaW5lQ1NTRmVhdHVyZUZsYWdz
KCkKIHsKICAgICAvLyBEZWxheSByZXNldHRpbmcgdGhlIGZsYWdzIHVudGlsIGFmdGVyIG5leHQg
c3R5bGUgcmVjYWxjIHNpbmNlIHVuYXBwbHlpbmcgdGhlIHN0eWxlIG1heSBub3Qgd29yayB3aXRo
b3V0IHRoZXNlIHNldCAodGhpcyBpcyB0cnVlIGF0IGxlYXN0IHdpdGggYmVmb3JlL2FmdGVyKS4K
LSAgICBtX3VzZXNTaWJsaW5nUnVsZXMgPSBtX3VzZXNTaWJsaW5nUnVsZXMgfHwgbV9zdHlsZVNl
bGVjdG9yLT51c2VzU2libGluZ1J1bGVzKCk7Ci0gICAgbV91c2VzRmlyc3RMaW5lUnVsZXMgPSBt
X3VzZXNGaXJzdExpbmVSdWxlcyB8fCBtX3N0eWxlU2VsZWN0b3ItPnVzZXNGaXJzdExpbmVSdWxl
cygpOwotICAgIG1fdXNlc0JlZm9yZUFmdGVyUnVsZXMgPSBtX3VzZXNCZWZvcmVBZnRlclJ1bGVz
IHx8IG1fc3R5bGVTZWxlY3Rvci0+dXNlc0JlZm9yZUFmdGVyUnVsZXMoKTsKLSAgICBtX3VzZXNM
aW5rUnVsZXMgPSBtX3VzZXNMaW5rUnVsZXMgfHwgbV9zdHlsZVNlbGVjdG9yLT51c2VzTGlua1J1
bGVzKCk7CisgICAgbV91c2VzU2libGluZ1J1bGVzID0gbV91c2VzU2libGluZ1J1bGVzIHx8IG1f
c3R5bGVSZXNvbHZlci0+dXNlc1NpYmxpbmdSdWxlcygpOworICAgIG1fdXNlc0ZpcnN0TGluZVJ1
bGVzID0gbV91c2VzRmlyc3RMaW5lUnVsZXMgfHwgbV9zdHlsZVJlc29sdmVyLT51c2VzRmlyc3RM
aW5lUnVsZXMoKTsKKyAgICBtX3VzZXNCZWZvcmVBZnRlclJ1bGVzID0gbV91c2VzQmVmb3JlQWZ0
ZXJSdWxlcyB8fCBtX3N0eWxlUmVzb2x2ZXItPnVzZXNCZWZvcmVBZnRlclJ1bGVzKCk7CisgICAg
bV91c2VzTGlua1J1bGVzID0gbV91c2VzTGlua1J1bGVzIHx8IG1fc3R5bGVSZXNvbHZlci0+dXNl
c0xpbmtSdWxlcygpOwogfQogCiB2b2lkIERvY3VtZW50OjpyZXNldENTU0ZlYXR1cmVGbGFncygp
CiB7Ci0gICAgbV91c2VzU2libGluZ1J1bGVzID0gbV9zdHlsZVNlbGVjdG9yLT51c2VzU2libGlu
Z1J1bGVzKCk7Ci0gICAgbV91c2VzRmlyc3RMaW5lUnVsZXMgPSBtX3N0eWxlU2VsZWN0b3ItPnVz
ZXNGaXJzdExpbmVSdWxlcygpOwotICAgIG1fdXNlc0JlZm9yZUFmdGVyUnVsZXMgPSBtX3N0eWxl
U2VsZWN0b3ItPnVzZXNCZWZvcmVBZnRlclJ1bGVzKCk7Ci0gICAgbV91c2VzTGlua1J1bGVzID0g
bV9zdHlsZVNlbGVjdG9yLT51c2VzTGlua1J1bGVzKCk7CisgICAgbV91c2VzU2libGluZ1J1bGVz
ID0gbV9zdHlsZVJlc29sdmVyLT51c2VzU2libGluZ1J1bGVzKCk7CisgICAgbV91c2VzRmlyc3RM
aW5lUnVsZXMgPSBtX3N0eWxlUmVzb2x2ZXItPnVzZXNGaXJzdExpbmVSdWxlcygpOworICAgIG1f
dXNlc0JlZm9yZUFmdGVyUnVsZXMgPSBtX3N0eWxlUmVzb2x2ZXItPnVzZXNCZWZvcmVBZnRlclJ1
bGVzKCk7CisgICAgbV91c2VzTGlua1J1bGVzID0gbV9zdHlsZVJlc29sdmVyLT51c2VzTGlua1J1
bGVzKCk7CiB9CiAKLXZvaWQgRG9jdW1lbnQ6OmNyZWF0ZVN0eWxlU2VsZWN0b3IoKQordm9pZCBE
b2N1bWVudDo6Y3JlYXRlU3R5bGVSZXNvbHZlcigpCiB7CiAgICAgYm9vbCBtYXRjaEF1dGhvckFu
ZFVzZXJTdHlsZXMgPSB0cnVlOwogICAgIGlmIChTZXR0aW5ncyogZG9jU2V0dGluZ3MgPSBzZXR0
aW5ncygpKQogICAgICAgICBtYXRjaEF1dGhvckFuZFVzZXJTdHlsZXMgPSBkb2NTZXR0aW5ncy0+
YXV0aG9yQW5kVXNlclN0eWxlc0VuYWJsZWQoKTsKLSAgICBtX3N0eWxlU2VsZWN0b3IgPSBhZG9w
dFB0cihuZXcgU3R5bGVSZXNvbHZlcih0aGlzLCBtYXRjaEF1dGhvckFuZFVzZXJTdHlsZXMpKTsK
KyAgICBtX3N0eWxlUmVzb2x2ZXIgPSBhZG9wdFB0cihuZXcgU3R5bGVSZXNvbHZlcih0aGlzLCBt
YXRjaEF1dGhvckFuZFVzZXJTdHlsZXMpKTsKICAgICBjb21iaW5lQ1NTRmVhdHVyZUZsYWdzKCk7
CiB9CiAKLWlubGluZSB2b2lkIERvY3VtZW50OjpjbGVhclN0eWxlU2VsZWN0b3IoKQoraW5saW5l
IHZvaWQgRG9jdW1lbnQ6OmNsZWFyU3R5bGVSZXNvbHZlcigpCiB7Ci0gICAgbV9zdHlsZVNlbGVj
dG9yLmNsZWFyKCk7CisgICAgbV9zdHlsZVJlc29sdmVyLmNsZWFyKCk7CiB9CiAKIHZvaWQgRG9j
dW1lbnQ6OmF0dGFjaCgpCkBAIC0yNzgzLDcgKzI3ODMsNyBAQCB2b2lkIERvY3VtZW50OjpjbGVh
clBhZ2VVc2VyU2hlZXQoKQogewogICAgIGlmIChtX3BhZ2VVc2VyU2hlZXQpIHsKICAgICAgICAg
bV9wYWdlVXNlclNoZWV0ID0gMDsKLSAgICAgICAgc3R5bGVTZWxlY3RvckNoYW5nZWQoRGVmZXJS
ZWNhbGNTdHlsZSk7CisgICAgICAgIHN0eWxlUmVzb2x2ZXJDaGFuZ2VkKERlZmVyUmVjYWxjU3R5
bGUpOwogICAgIH0KIH0KIApAQCAtMjc5MSw3ICsyNzkxLDcgQEAgdm9pZCBEb2N1bWVudDo6dXBk
YXRlUGFnZVVzZXJTaGVldCgpCiB7CiAgICAgY2xlYXJQYWdlVXNlclNoZWV0KCk7CiAgICAgaWYg
KHBhZ2VVc2VyU2hlZXQoKSkKLSAgICAgICAgc3R5bGVTZWxlY3RvckNoYW5nZWQoUmVjYWxjU3R5
bGVJbW1lZGlhdGVseSk7CisgICAgICAgIHN0eWxlUmVzb2x2ZXJDaGFuZ2VkKFJlY2FsY1N0eWxl
SW1tZWRpYXRlbHkpOwogfQogCiBjb25zdCBWZWN0b3I8UmVmUHRyPFN0eWxlU2hlZXRJbnRlcm5h
bD4gPiogRG9jdW1lbnQ6OnBhZ2VHcm91cFVzZXJTaGVldHMoKSBjb25zdApAQCAtMjgzNiw3ICsy
ODM2LDcgQEAgdm9pZCBEb2N1bWVudDo6Y2xlYXJQYWdlR3JvdXBVc2VyU2hlZXRzKCkKICAgICBt
X3BhZ2VHcm91cFVzZXJTaGVldENhY2hlVmFsaWQgPSBmYWxzZTsKICAgICBpZiAobV9wYWdlR3Jv
dXBVc2VyU2hlZXRzICYmIG1fcGFnZUdyb3VwVXNlclNoZWV0cy0+c2l6ZSgpKSB7CiAgICAgICAg
IG1fcGFnZUdyb3VwVXNlclNoZWV0cy0+Y2xlYXIoKTsKLSAgICAgICAgc3R5bGVTZWxlY3RvckNo
YW5nZWQoRGVmZXJSZWNhbGNTdHlsZSk7CisgICAgICAgIHN0eWxlUmVzb2x2ZXJDaGFuZ2VkKERl
ZmVyUmVjYWxjU3R5bGUpOwogICAgIH0KIH0KIApAQCAtMjg0NCw3ICsyODQ0LDcgQEAgdm9pZCBE
b2N1bWVudDo6dXBkYXRlUGFnZUdyb3VwVXNlclNoZWV0cygpCiB7CiAgICAgY2xlYXJQYWdlR3Jv
dXBVc2VyU2hlZXRzKCk7CiAgICAgaWYgKHBhZ2VHcm91cFVzZXJTaGVldHMoKSAmJiBwYWdlR3Jv
dXBVc2VyU2hlZXRzKCktPnNpemUoKSkKLSAgICAgICAgc3R5bGVTZWxlY3RvckNoYW5nZWQoUmVj
YWxjU3R5bGVJbW1lZGlhdGVseSk7CisgICAgICAgIHN0eWxlUmVzb2x2ZXJDaGFuZ2VkKFJlY2Fs
Y1N0eWxlSW1tZWRpYXRlbHkpOwogfQogCiB2b2lkIERvY3VtZW50OjphZGRVc2VyU2hlZXQoUGFz
c1JlZlB0cjxTdHlsZVNoZWV0SW50ZXJuYWw+IHVzZXJTaGVldCkKQEAgLTI4NTIsNyArMjg1Miw3
IEBAIHZvaWQgRG9jdW1lbnQ6OmFkZFVzZXJTaGVldChQYXNzUmVmUHRyPFN0eWxlU2hlZXRJbnRl
cm5hbD4gdXNlclNoZWV0KQogICAgIGlmICghbV91c2VyU2hlZXRzKQogICAgICAgICBtX3VzZXJT
aGVldHMgPSBhZG9wdFB0cihuZXcgVmVjdG9yPFJlZlB0cjxTdHlsZVNoZWV0SW50ZXJuYWw+ID4p
OwogICAgIG1fdXNlclNoZWV0cy0+YXBwZW5kKHVzZXJTaGVldCk7Ci0gICAgc3R5bGVTZWxlY3Rv
ckNoYW5nZWQoUmVjYWxjU3R5bGVJbW1lZGlhdGVseSk7CisgICAgc3R5bGVSZXNvbHZlckNoYW5n
ZWQoUmVjYWxjU3R5bGVJbW1lZGlhdGVseSk7CiB9CiAKIENTU1N0eWxlU2hlZXQqIERvY3VtZW50
OjplbGVtZW50U2hlZXQoKQpAQCAtMjg5NSw3ICsyODk1LDcgQEAgdm9pZCBEb2N1bWVudDo6cHJv
Y2Vzc0h0dHBFcXVpdihjb25zdCBTdHJpbmcmIGVxdWl2LCBjb25zdCBTdHJpbmcmIGNvbnRlbnQp
CiAgICAgICAgIC8vIC1kd2gKICAgICAgICAgbV9zZWxlY3RlZFN0eWxlc2hlZXRTZXQgPSBjb250
ZW50OwogICAgICAgICBtX3ByZWZlcnJlZFN0eWxlc2hlZXRTZXQgPSBjb250ZW50OwotICAgICAg
ICBzdHlsZVNlbGVjdG9yQ2hhbmdlZChEZWZlclJlY2FsY1N0eWxlKTsKKyAgICAgICAgc3R5bGVS
ZXNvbHZlckNoYW5nZWQoRGVmZXJSZWNhbGNTdHlsZSk7CiAgICAgfSBlbHNlIGlmIChlcXVhbEln
bm9yaW5nQ2FzZShlcXVpdiwgInJlZnJlc2giKSkgewogICAgICAgICBkb3VibGUgZGVsYXk7CiAg
ICAgICAgIFN0cmluZyB1cmw7CkBAIC0zMTc1LDcgKzMxNzUsNyBAQCBTdHJpbmcgRG9jdW1lbnQ6
OnNlbGVjdGVkU3R5bGVzaGVldFNldCgpIGNvbnN0CiB2b2lkIERvY3VtZW50OjpzZXRTZWxlY3Rl
ZFN0eWxlc2hlZXRTZXQoY29uc3QgU3RyaW5nJiBhU3RyaW5nKQogewogICAgIG1fc2VsZWN0ZWRT
dHlsZXNoZWV0U2V0ID0gYVN0cmluZzsKLSAgICBzdHlsZVNlbGVjdG9yQ2hhbmdlZChEZWZlclJl
Y2FsY1N0eWxlKTsKKyAgICBzdHlsZVJlc29sdmVyQ2hhbmdlZChEZWZlclJlY2FsY1N0eWxlKTsK
IH0KIAogLy8gVGhpcyBtZXRob2QgaXMgY2FsbGVkIHdoZW5ldmVyIGEgdG9wLWxldmVsIHN0eWxl
c2hlZXQgaGFzIGZpbmlzaGVkIGxvYWRpbmcuCkBAIC0zMTk0LDcgKzMxOTQsNyBAQCB2b2lkIERv
Y3VtZW50OjpyZW1vdmVQZW5kaW5nU2hlZXQoKQogICAgIGlmIChtX3BlbmRpbmdTdHlsZXNoZWV0
cykKICAgICAgICAgcmV0dXJuOwogCi0gICAgc3R5bGVTZWxlY3RvckNoYW5nZWQoUmVjYWxjU3R5
bGVJZk5lZWRlZCk7CisgICAgc3R5bGVSZXNvbHZlckNoYW5nZWQoUmVjYWxjU3R5bGVJZk5lZWRl
ZCk7CiAKICAgICBpZiAoU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKiBwYXJzZXIgPSBzY3JpcHRh
YmxlRG9jdW1lbnRQYXJzZXIoKSkKICAgICAgICAgcGFyc2VyLT5leGVjdXRlU2NyaXB0c1dhaXRp
bmdGb3JTdHlsZXNoZWV0cygpOwpAQCAtMzIwNiwxNSArMzIwNiwxNSBAQCB2b2lkIERvY3VtZW50
OjpyZW1vdmVQZW5kaW5nU2hlZXQoKQogdm9pZCBEb2N1bWVudDo6ZXZhbHVhdGVNZWRpYVF1ZXJ5
TGlzdCgpCiB7CiAgICAgaWYgKG1fbWVkaWFRdWVyeU1hdGNoZXIpCi0gICAgICAgIG1fbWVkaWFR
dWVyeU1hdGNoZXItPnN0eWxlU2VsZWN0b3JDaGFuZ2VkKCk7CisgICAgICAgIG1fbWVkaWFRdWVy
eU1hdGNoZXItPnN0eWxlUmVzb2x2ZXJDaGFuZ2VkKCk7CiB9CiAKLXZvaWQgRG9jdW1lbnQ6OnN0
eWxlU2VsZWN0b3JDaGFuZ2VkKFN0eWxlU2VsZWN0b3JVcGRhdGVGbGFnIHVwZGF0ZUZsYWcpCit2
b2lkIERvY3VtZW50OjpzdHlsZVJlc29sdmVyQ2hhbmdlZChTdHlsZVJlc29sdmVyVXBkYXRlRmxh
ZyB1cGRhdGVGbGFnKQogewogICAgIC8vIERvbid0IGJvdGhlciB1cGRhdGluZywgc2luY2Ugd2Ug
aGF2ZW4ndCBsb2FkZWQgYWxsIG91ciBzdHlsZSBpbmZvIHlldAogICAgIC8vIGFuZCBoYXZlbid0
IGNhbGN1bGF0ZWQgdGhlIHN0eWxlIHNlbGVjdG9yIGZvciB0aGUgZmlyc3QgdGltZS4KLSAgICBp
ZiAoIWF0dGFjaGVkKCkgfHwgKCFtX2RpZENhbGN1bGF0ZVN0eWxlU2VsZWN0b3IgJiYgIWhhdmVT
dHlsZXNoZWV0c0xvYWRlZCgpKSkgewotICAgICAgICBtX3N0eWxlU2VsZWN0b3IuY2xlYXIoKTsK
KyAgICBpZiAoIWF0dGFjaGVkKCkgfHwgKCFtX2RpZENhbGN1bGF0ZVN0eWxlUmVzb2x2ZXIgJiYg
IWhhdmVTdHlsZXNoZWV0c0xvYWRlZCgpKSkgeworICAgICAgICBtX3N0eWxlUmVzb2x2ZXIuY2xl
YXIoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMzQxOSw5ICszNDE5LDkgQEAgYm9v
bCBEb2N1bWVudDo6dGVzdEFkZGVkU3R5bGVzaGVldFJlcXVpcmVzU3R5bGVSZWNhbGMoU3R5bGVT
aGVldEludGVybmFsKiBzdHlsZXMKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgRG9jdW1l
bnQ6OmFuYWx5emVTdHlsZXNoZWV0Q2hhbmdlKFN0eWxlU2VsZWN0b3JVcGRhdGVGbGFnIHVwZGF0
ZUZsYWcsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3R5bGVTaGVldD4gPiYgbmV3U3R5bGVzaGVldHMs
IGJvb2wmIHJlcXVpcmVzU3R5bGVTZWxlY3RvclJlc2V0LCBib29sJiByZXF1aXJlc0Z1bGxTdHls
ZVJlY2FsYykKK3ZvaWQgRG9jdW1lbnQ6OmFuYWx5emVTdHlsZXNoZWV0Q2hhbmdlKFN0eWxlUmVz
b2x2ZXJVcGRhdGVGbGFnIHVwZGF0ZUZsYWcsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3R5bGVTaGVl
dD4gPiYgbmV3U3R5bGVzaGVldHMsIGJvb2wmIHJlcXVpcmVzU3R5bGVSZXNvbHZlclJlc2V0LCBi
b29sJiByZXF1aXJlc0Z1bGxTdHlsZVJlY2FsYykKIHsKLSAgICByZXF1aXJlc1N0eWxlU2VsZWN0
b3JSZXNldCA9IHRydWU7CisgICAgcmVxdWlyZXNTdHlsZVJlc29sdmVyUmVzZXQgPSB0cnVlOwog
ICAgIHJlcXVpcmVzRnVsbFN0eWxlUmVjYWxjID0gdHJ1ZTsKICAgICAKICAgICAvLyBTdHlsZXNo
ZWV0cyBvZiA8c3R5bGU+IGVsZW1lbnRzIHRoYXQgQGltcG9ydCBzdHlsZXNoZWV0cyBhcmUgYWN0
aXZlIGJ1dCBsb2FkaW5nLiBXZSBuZWVkIHRvIHRyaWdnZXIgYSBmdWxsIHJlY2FsYyB3aGVuIHN1
Y2ggbG9hZHMgYXJlIGRvbmUuCkBAIC0zNDM5LDcgKzM0MzksNyBAQCB2b2lkIERvY3VtZW50Ojph
bmFseXplU3R5bGVzaGVldENoYW5nZShTdHlsZVNlbGVjdG9yVXBkYXRlRmxhZyB1cGRhdGVGbGFn
LCBjb25zdAogCiAgICAgaWYgKHVwZGF0ZUZsYWcgIT0gUmVjYWxjU3R5bGVJZk5lZWRlZCkKICAg
ICAgICAgcmV0dXJuOwotICAgIGlmICghbV9zdHlsZVNlbGVjdG9yKQorICAgIGlmICghbV9zdHls
ZVJlc29sdmVyKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBTZWUgaWYgd2UgYXJlIGp1c3Qg
YWRkaW5nIHN0eWxlc2hlZXRzLgpAQCAtMzQ1MCw3ICszNDUwLDcgQEAgdm9pZCBEb2N1bWVudDo6
YW5hbHl6ZVN0eWxlc2hlZXRDaGFuZ2UoU3R5bGVTZWxlY3RvclVwZGF0ZUZsYWcgdXBkYXRlRmxh
ZywgY29uc3QKICAgICAgICAgaWYgKG1fc3R5bGVTaGVldHMtPml0ZW0oaSkgIT0gbmV3U3R5bGVz
aGVldHNbaV0pCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQotICAgIHJlcXVpcmVzU3R5bGVT
ZWxlY3RvclJlc2V0ID0gZmFsc2U7CisgICAgcmVxdWlyZXNTdHlsZVJlc29sdmVyUmVzZXQgPSBm
YWxzZTsKIAogICAgIC8vIElmIHdlIGFyZSBhbHJlYWR5IHBhcnNpbmcgdGhlIGJvZHkgYW5kIHNv
IG1heSBoYXZlIHNpZ25pZmljYW50IGFtb3VudCBvZiBlbGVtZW50cywgcHV0IHNvbWUgZWZmb3J0
IGludG8gdHJ5aW5nIHRvIGF2b2lkIHN0eWxlIHJlY2FsY3MuCiAgICAgaWYgKCFib2R5KCkgfHwg
bV9oYXNOb2Rlc1dpdGhQbGFjZWhvbGRlclN0eWxlKQpAQCAtMzQ3NywxMyArMzQ3NywxMyBAQCBz
dGF0aWMgYm9vbCBzdHlsZVNoZWV0c1VzZVJlbVVuaXRzKGNvbnN0IFZlY3RvcjxSZWZQdHI8U3R5
bGVTaGVldD4gPiYgc2hlZXRzKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBEb2N1bWVu
dDo6dXBkYXRlQWN0aXZlU3R5bGVzaGVldHMoU3R5bGVTZWxlY3RvclVwZGF0ZUZsYWcgdXBkYXRl
RmxhZykKK2Jvb2wgRG9jdW1lbnQ6OnVwZGF0ZUFjdGl2ZVN0eWxlc2hlZXRzKFN0eWxlUmVzb2x2
ZXJVcGRhdGVGbGFnIHVwZGF0ZUZsYWcpCiB7CiAgICAgaWYgKG1faW5TdHlsZVJlY2FsYykgewog
ICAgICAgICAvLyBTVkcgPHVzZT4gZWxlbWVudCBtYXkgbWFuYWdlIHRvIGludmFsaWRhdGUgc3R5
bGUgc2VsZWN0b3IgaW4gdGhlIG1pZGRsZSBvZiBhIHN0eWxlIHJlY2FsYy4KICAgICAgICAgLy8g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0MzQ0CiAgICAgICAgIC8v
IEZJWE1FOiBUaGlzIHNob3VsZCBiZSBmaXhlZCBpbiBTVkcgYW5kIHRoaXMgY29kZSByZXBsYWNl
ZCB3aXRoIEFTU0VSVCghbV9pblN0eWxlUmVjYWxjKS4KLSAgICAgICAgbV9oYXNEaXJ0eVN0eWxl
U2VsZWN0b3IgPSB0cnVlOworICAgICAgICBtX2hhc0RpcnR5U3R5bGVSZXNvbHZlciA9IHRydWU7
CiAgICAgICAgIHNjaGVkdWxlRm9yY2VkU3R5bGVSZWNhbGMoKTsKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KQEAgLTM0OTMsMjEgKzM0OTMsMjEgQEAgYm9vbCBEb2N1bWVudDo6dXBkYXRl
QWN0aXZlU3R5bGVzaGVldHMoU3R5bGVTZWxlY3RvclVwZGF0ZUZsYWcgdXBkYXRlRmxhZykKICAg
ICBTdHlsZVNoZWV0VmVjdG9yIG5ld1N0eWxlc2hlZXRzOwogICAgIGNvbGxlY3RBY3RpdmVTdHls
ZXNoZWV0cyhuZXdTdHlsZXNoZWV0cyk7CiAKLSAgICBib29sIHJlcXVpcmVzU3R5bGVTZWxlY3Rv
clJlc2V0OworICAgIGJvb2wgcmVxdWlyZXNTdHlsZVJlc29sdmVyUmVzZXQ7CiAgICAgYm9vbCBy
ZXF1aXJlc0Z1bGxTdHlsZVJlY2FsYzsKLSAgICBhbmFseXplU3R5bGVzaGVldENoYW5nZSh1cGRh
dGVGbGFnLCBuZXdTdHlsZXNoZWV0cywgcmVxdWlyZXNTdHlsZVNlbGVjdG9yUmVzZXQsIHJlcXVp
cmVzRnVsbFN0eWxlUmVjYWxjKTsKKyAgICBhbmFseXplU3R5bGVzaGVldENoYW5nZSh1cGRhdGVG
bGFnLCBuZXdTdHlsZXNoZWV0cywgcmVxdWlyZXNTdHlsZVJlc29sdmVyUmVzZXQsIHJlcXVpcmVz
RnVsbFN0eWxlUmVjYWxjKTsKIAotICAgIGlmIChyZXF1aXJlc1N0eWxlU2VsZWN0b3JSZXNldCkK
LSAgICAgICAgY2xlYXJTdHlsZVNlbGVjdG9yKCk7CisgICAgaWYgKHJlcXVpcmVzU3R5bGVSZXNv
bHZlclJlc2V0KQorICAgICAgICBjbGVhclN0eWxlUmVzb2x2ZXIoKTsKICAgICBlbHNlIHsKLSAg
ICAgICAgbV9zdHlsZVNlbGVjdG9yLT5hcHBlbmRBdXRob3JTdHlsZXNoZWV0cyhtX3N0eWxlU2hl
ZXRzLT5sZW5ndGgoKSwgbmV3U3R5bGVzaGVldHMpOworICAgICAgICBtX3N0eWxlUmVzb2x2ZXIt
PmFwcGVuZEF1dGhvclN0eWxlc2hlZXRzKG1fc3R5bGVTaGVldHMtPmxlbmd0aCgpLCBuZXdTdHls
ZXNoZWV0cyk7CiAgICAgICAgIHJlc2V0Q1NTRmVhdHVyZUZsYWdzKCk7CiAgICAgfQogICAgIG1f
c3R5bGVTaGVldHMtPnN3YXAobmV3U3R5bGVzaGVldHMpOwogCiAgICAgbV91c2VzUmVtVW5pdHMg
PSBzdHlsZVNoZWV0c1VzZVJlbVVuaXRzKG1fc3R5bGVTaGVldHMtPnZlY3RvcigpKTsKLSAgICBt
X2RpZENhbGN1bGF0ZVN0eWxlU2VsZWN0b3IgPSB0cnVlOwotICAgIG1faGFzRGlydHlTdHlsZVNl
bGVjdG9yID0gZmFsc2U7CisgICAgbV9kaWRDYWxjdWxhdGVTdHlsZVJlc29sdmVyID0gdHJ1ZTsK
KyAgICBtX2hhc0RpcnR5U3R5bGVSZXNvbHZlciA9IGZhbHNlOwogICAgIAogICAgIHJldHVybiBy
ZXF1aXJlc0Z1bGxTdHlsZVJlY2FsYzsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggMWI0MjVi
NTc3NmUzY2QxNTI2YThiYmY1MWUyOTUyZDAyODExNTM2Mi4uMzVkNGZlYmJlOGNkNmJkZGQxYmIx
ZGE1ZTVhM2QxNjg0ZTMwNzBiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTIxMyw3ICsyMTMs
NyBAQCBlbnVtIFBhZ2VzaG93RXZlbnRQZXJzaXN0ZW5jZSB7CiAgICAgUGFnZXNob3dFdmVudFBl
cnNpc3RlZCA9IDEKIH07CiAKLWVudW0gU3R5bGVTZWxlY3RvclVwZGF0ZUZsYWcgeyBSZWNhbGNT
dHlsZUltbWVkaWF0ZWx5LCBEZWZlclJlY2FsY1N0eWxlLCBSZWNhbGNTdHlsZUlmTmVlZGVkIH07
CitlbnVtIFN0eWxlUmVzb2x2ZXJVcGRhdGVGbGFnIHsgUmVjYWxjU3R5bGVJbW1lZGlhdGVseSwg
RGVmZXJSZWNhbGNTdHlsZSwgUmVjYWxjU3R5bGVJZk5lZWRlZCB9OwogCiBjbGFzcyBEb2N1bWVu
dCA6IHB1YmxpYyBDb250YWluZXJOb2RlLCBwdWJsaWMgVHJlZVNjb3BlLCBwdWJsaWMgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCB7CiBwdWJsaWM6CkBAIC00NTQsMTggKzQ1NCwxOCBAQCBwdWJsaWM6
CiAKICAgICBib29sIGlzU3JjZG9jRG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2lzU3JjZG9j
RG9jdW1lbnQ7IH0KIAotICAgIFN0eWxlUmVzb2x2ZXIqIHN0eWxlU2VsZWN0b3JJZkV4aXN0cygp
IGNvbnN0IHsgcmV0dXJuIG1fc3R5bGVTZWxlY3Rvci5nZXQoKTsgfQorICAgIFN0eWxlUmVzb2x2
ZXIqIHN0eWxlUmVzb2x2ZXJJZkV4aXN0cygpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGVSZXNvbHZl
ci5nZXQoKTsgfQogCiAgICAgYm9vbCBpc1ZpZXdTb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX2lz
Vmlld1NvdXJjZTsgfQogICAgIHZvaWQgc2V0SXNWaWV3U291cmNlKGJvb2wpOwogCiAgICAgYm9v
bCBzYXdFbGVtZW50c0luS25vd25OYW1lc3BhY2VzKCkgY29uc3QgeyByZXR1cm4gbV9zYXdFbGVt
ZW50c0luS25vd25OYW1lc3BhY2VzOyB9CiAKLSAgICBTdHlsZVJlc29sdmVyKiBzdHlsZVNlbGVj
dG9yKCkKKyAgICBTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyKCkKICAgICB7IAotICAgICAg
ICBpZiAoIW1fc3R5bGVTZWxlY3RvcikKLSAgICAgICAgICAgIGNyZWF0ZVN0eWxlU2VsZWN0b3Io
KTsKLSAgICAgICAgcmV0dXJuIG1fc3R5bGVTZWxlY3Rvci5nZXQoKTsKKyAgICAgICAgaWYgKCFt
X3N0eWxlUmVzb2x2ZXIpCisgICAgICAgICAgICBjcmVhdGVTdHlsZVJlc29sdmVyKCk7CisgICAg
ICAgIHJldHVybiBtX3N0eWxlUmVzb2x2ZXIuZ2V0KCk7CiAgICAgfQogCiAgICAgLyoqCkBAIC00
OTcsMTMgKzQ5NywxMyBAQCBwdWJsaWM6CiAgICAgLyoqCiAgICAgICogQ2FsbGVkIHdoZW4gb25l
IG9yIG1vcmUgc3R5bGVzaGVldHMgaW4gdGhlIGRvY3VtZW50IG1heSBoYXZlIGJlZW4gYWRkZWQs
IHJlbW92ZWQgb3IgY2hhbmdlZC4KICAgICAgKgotICAgICAqIENyZWF0ZXMgYSBuZXcgc3R5bGUg
c2VsZWN0b3IgYW5kIGFzc2lnbiBpdCB0byB0aGlzIGRvY3VtZW50LiBUaGlzIGlzIGRvbmUgYnkg
aXRlcmF0aW5nIHRocm91Z2ggYWxsIG5vZGVzIGluCisgICAgICogQ3JlYXRlcyBhIG5ldyBzdHls
ZSByZXNvbHZlciBhbmQgYXNzaWduIGl0IHRvIHRoaXMgZG9jdW1lbnQuIFRoaXMgaXMgZG9uZSBi
eSBpdGVyYXRpbmcgdGhyb3VnaCBhbGwgbm9kZXMgaW4KICAgICAgKiBkb2N1bWVudCAob3IgdGhv
c2UgYmVmb3JlIDxCT0RZPiBpbiBhIEhUTUwgZG9jdW1lbnQpLCBzZWFyY2hpbmcgZm9yIHN0eWxl
c2hlZXRzLiBTdHlsZXNoZWV0cyBjYW4gYmUgY29udGFpbmVkIGluCiAgICAgICogPExJTks+LCA8
U1RZTEU+IG9yIDxCT0RZPiBlbGVtZW50cywgYXMgd2VsbCBhcyBwcm9jZXNzaW5nIGluc3RydWN0
aW9ucyAoWE1MIGRvY3VtZW50cyBvbmx5KS4gQSBsaXN0IGlzCiAgICAgICogY29uc3RydWN0ZWQg
ZnJvbSB0aGVzZSB3aGljaCBpcyB1c2VkIHRvIGNyZWF0ZSB0aGUgYSBuZXcgc3R5bGUgc2VsZWN0
b3Igd2hpY2ggY29sbGF0ZXMgYWxsIG9mIHRoZSBzdHlsZXNoZWV0cwogICAgICAqIGZvdW5kIGFu
ZCBpcyB1c2VkIHRvIGNhbGN1bGF0ZSB0aGUgZGVyaXZlZCBzdHlsZXMgZm9yIGFsbCByZW5kZXJp
bmcgb2JqZWN0cy4KICAgICAgKi8KLSAgICB2b2lkIHN0eWxlU2VsZWN0b3JDaGFuZ2VkKFN0eWxl
U2VsZWN0b3JVcGRhdGVGbGFnKTsKKyAgICB2b2lkIHN0eWxlUmVzb2x2ZXJDaGFuZ2VkKFN0eWxl
UmVzb2x2ZXJVcGRhdGVGbGFnKTsKIAogICAgIHZvaWQgZXZhbHVhdGVNZWRpYVF1ZXJ5TGlzdCgp
OwogCkBAIC0xMTg1LDE1ICsxMTg1LDE1IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGJ1aWxkQWNj
ZXNzS2V5TWFwKFRyZWVTY29wZSogcm9vdCk7CiAKLSAgICB2b2lkIGNyZWF0ZVN0eWxlU2VsZWN0
b3IoKTsKLSAgICB2b2lkIGNsZWFyU3R5bGVTZWxlY3RvcigpOworICAgIHZvaWQgY3JlYXRlU3R5
bGVSZXNvbHZlcigpOworICAgIHZvaWQgY2xlYXJTdHlsZVJlc29sdmVyKCk7CiAgICAgdm9pZCBj
b21iaW5lQ1NTRmVhdHVyZUZsYWdzKCk7CiAgICAgdm9pZCByZXNldENTU0ZlYXR1cmVGbGFncygp
OwogICAgIAotICAgIGJvb2wgdXBkYXRlQWN0aXZlU3R5bGVzaGVldHMoU3R5bGVTZWxlY3RvclVw
ZGF0ZUZsYWcpOworICAgIGJvb2wgdXBkYXRlQWN0aXZlU3R5bGVzaGVldHMoU3R5bGVSZXNvbHZl
clVwZGF0ZUZsYWcpOwogICAgIHZvaWQgY29sbGVjdEFjdGl2ZVN0eWxlc2hlZXRzKFZlY3RvcjxS
ZWZQdHI8U3R5bGVTaGVldD4gPiYpOwogICAgIGJvb2wgdGVzdEFkZGVkU3R5bGVzaGVldFJlcXVp
cmVzU3R5bGVSZWNhbGMoU3R5bGVTaGVldEludGVybmFsKik7Ci0gICAgdm9pZCBhbmFseXplU3R5
bGVzaGVldENoYW5nZShTdHlsZVNlbGVjdG9yVXBkYXRlRmxhZywgY29uc3QgVmVjdG9yPFJlZlB0
cjxTdHlsZVNoZWV0PiA+JiBuZXdTdHlsZXNoZWV0cywgYm9vbCYgcmVxdWlyZXNTdHlsZVNlbGVj
dG9yUmVzZXQsIGJvb2wmIHJlcXVpcmVzRnVsbFN0eWxlUmVjYWxjKTsKKyAgICB2b2lkIGFuYWx5
emVTdHlsZXNoZWV0Q2hhbmdlKFN0eWxlUmVzb2x2ZXJVcGRhdGVGbGFnLCBjb25zdCBWZWN0b3I8
UmVmUHRyPFN0eWxlU2hlZXQ+ID4mIG5ld1N0eWxlc2hlZXRzLCBib29sJiByZXF1aXJlc1N0eWxl
UmVzb2x2ZXJSZXNldCwgYm9vbCYgcmVxdWlyZXNGdWxsU3R5bGVSZWNhbGMpOwogCiAgICAgdm9p
ZCBkZWxldGVDdXN0b21Gb250cygpOwogCkBAIC0xMjI0LDkgKzEyMjQsOSBAQCBwcml2YXRlOgog
CiAgICAgaW50IG1fZ3VhcmRSZWZDb3VudDsKIAotICAgIE93blB0cjxTdHlsZVJlc29sdmVyPiBt
X3N0eWxlU2VsZWN0b3I7Ci0gICAgYm9vbCBtX2RpZENhbGN1bGF0ZVN0eWxlU2VsZWN0b3I7Ci0g
ICAgYm9vbCBtX2hhc0RpcnR5U3R5bGVTZWxlY3RvcjsKKyAgICBPd25QdHI8U3R5bGVSZXNvbHZl
cj4gbV9zdHlsZVJlc29sdmVyOworICAgIGJvb2wgbV9kaWRDYWxjdWxhdGVTdHlsZVJlc29sdmVy
OworICAgIGJvb2wgbV9oYXNEaXJ0eVN0eWxlUmVzb2x2ZXI7CiAgICAgVmVjdG9yPE93blB0cjxG
b250RGF0YT4gPiBtX2N1c3RvbUZvbnRzOwogCiAgICAgRnJhbWUqIG1fZnJhbWU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5jcHAKaW5kZXggNzk3MWY2MjhjYzhhNDA3ODEwN2EyYzcwZmUzMTBmNmMxNzBhZmE4
NS4uNzVlYmYzZjc5MDczNWFkNTU1MzA2YTkyMWYzNzY4NDFkMTM0NWI4OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmNwcApAQCAtODMsMzggKzgzLDM4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5n
IG5hbWVzcGFjZSBIVE1MTmFtZXM7CiB1c2luZyBuYW1lc3BhY2UgWE1MTmFtZXM7CiAgICAgCi1j
bGFzcyBTdHlsZVNlbGVjdG9yUGFyZW50UHVzaGVyIHsKK2NsYXNzIFN0eWxlUmVzb2x2ZXJQYXJl
bnRQdXNoZXIgewogcHVibGljOgotICAgIFN0eWxlU2VsZWN0b3JQYXJlbnRQdXNoZXIoRWxlbWVu
dCogcGFyZW50KQorICAgIFN0eWxlUmVzb2x2ZXJQYXJlbnRQdXNoZXIoRWxlbWVudCogcGFyZW50
KQogICAgICAgICA6IG1fcGFyZW50KHBhcmVudCkKLSAgICAgICAgLCBtX3B1c2hlZFN0eWxlU2Vs
ZWN0b3IoMCkKKyAgICAgICAgLCBtX3B1c2hlZFN0eWxlUmVzb2x2ZXIoMCkKICAgICB7CiAgICAg
fQogICAgIHZvaWQgcHVzaCgpCiAgICAgewotICAgICAgICBpZiAobV9wdXNoZWRTdHlsZVNlbGVj
dG9yKQorICAgICAgICBpZiAobV9wdXNoZWRTdHlsZVJlc29sdmVyKQogICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICBtX3B1c2hlZFN0eWxlU2VsZWN0b3IgPSBtX3BhcmVudC0+ZG9jdW1lbnQo
KS0+c3R5bGVTZWxlY3RvcigpOwotICAgICAgICBtX3B1c2hlZFN0eWxlU2VsZWN0b3ItPnB1c2hQ
YXJlbnRFbGVtZW50KG1fcGFyZW50KTsKKyAgICAgICAgbV9wdXNoZWRTdHlsZVJlc29sdmVyID0g
bV9wYXJlbnQtPmRvY3VtZW50KCktPnN0eWxlUmVzb2x2ZXIoKTsKKyAgICAgICAgbV9wdXNoZWRT
dHlsZVJlc29sdmVyLT5wdXNoUGFyZW50RWxlbWVudChtX3BhcmVudCk7CiAgICAgfQotICAgIH5T
dHlsZVNlbGVjdG9yUGFyZW50UHVzaGVyKCkgCisgICAgflN0eWxlUmVzb2x2ZXJQYXJlbnRQdXNo
ZXIoKQogICAgIHsKIAotICAgICAgICBpZiAoIW1fcHVzaGVkU3R5bGVTZWxlY3RvcikKKyAgICAg
ICAgaWYgKCFtX3B1c2hlZFN0eWxlUmVzb2x2ZXIpCiAgICAgICAgICAgICByZXR1cm47CiAKICAg
ICAgICAgLy8gVGhpcyB0ZWxscyB1cyB0aGF0IG91ciBwdXNoZWQgc3R5bGUgc2VsZWN0b3IgaXMg
aW4gYSBiYWQgc3RhdGUsCiAgICAgICAgIC8vIHNvIHdlIHNob3VsZCBqdXN0IGJhaWwgb3V0IGlu
IHRoYXQgc2NlbmFyaW8uCi0gICAgICAgIEFTU0VSVChtX3B1c2hlZFN0eWxlU2VsZWN0b3IgPT0g
bV9wYXJlbnQtPmRvY3VtZW50KCktPnN0eWxlU2VsZWN0b3IoKSk7Ci0gICAgICAgIGlmIChtX3B1
c2hlZFN0eWxlU2VsZWN0b3IgIT0gbV9wYXJlbnQtPmRvY3VtZW50KCktPnN0eWxlU2VsZWN0b3Io
KSkKKyAgICAgICAgQVNTRVJUKG1fcHVzaGVkU3R5bGVSZXNvbHZlciA9PSBtX3BhcmVudC0+ZG9j
dW1lbnQoKS0+c3R5bGVSZXNvbHZlcigpKTsKKyAgICAgICAgaWYgKG1fcHVzaGVkU3R5bGVSZXNv
bHZlciAhPSBtX3BhcmVudC0+ZG9jdW1lbnQoKS0+c3R5bGVSZXNvbHZlcigpKQogICAgICAgICAg
ICAgcmV0dXJuOwogCi0gICAgICAgIG1fcHVzaGVkU3R5bGVTZWxlY3Rvci0+cG9wUGFyZW50RWxl
bWVudChtX3BhcmVudCk7IAorICAgICAgICBtX3B1c2hlZFN0eWxlUmVzb2x2ZXItPnBvcFBhcmVu
dEVsZW1lbnQobV9wYXJlbnQpOwogICAgIH0KIAogcHJpdmF0ZToKICAgICBFbGVtZW50KiBtX3Bh
cmVudDsKLSAgICBTdHlsZVJlc29sdmVyKiBtX3B1c2hlZFN0eWxlU2VsZWN0b3I7CisgICAgU3R5
bGVSZXNvbHZlciogbV9wdXNoZWRTdHlsZVJlc29sdmVyOwogfTsKIAogUGFzc1JlZlB0cjxFbGVt
ZW50PiBFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1l
bnQqIGRvY3VtZW50KQpAQCAtNjk3LDggKzY5Nyw4IEBAIHZvaWQgRWxlbWVudDo6YXR0cmlidXRl
Q2hhbmdlZChBdHRyaWJ1dGUqIGF0dHIpCiAgICAgICAgIHNldEhhc05hbWUoIWF0dHItPmlzTnVs
bCgpKTsKIAogICAgIGlmICghbmVlZHNTdHlsZVJlY2FsYygpICYmIGRvY3VtZW50KCktPmF0dGFj
aGVkKCkpIHsKLSAgICAgICAgU3R5bGVSZXNvbHZlciogc3R5bGVTZWxlY3RvciA9IGRvY3VtZW50
KCktPnN0eWxlU2VsZWN0b3JJZkV4aXN0cygpOwotICAgICAgICBpZiAoIXN0eWxlU2VsZWN0b3Ig
fHwgc3R5bGVTZWxlY3Rvci0+aGFzU2VsZWN0b3JGb3JBdHRyaWJ1dGUoYXR0ci0+bmFtZSgpLmxv
Y2FsTmFtZSgpKSkKKyAgICAgICAgU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciA9IGRvY3Vt
ZW50KCktPnN0eWxlUmVzb2x2ZXJJZkV4aXN0cygpOworICAgICAgICBpZiAoIXN0eWxlUmVzb2x2
ZXIgfHwgc3R5bGVSZXNvbHZlci0+aGFzU2VsZWN0b3JGb3JBdHRyaWJ1dGUoYXR0ci0+bmFtZSgp
LmxvY2FsTmFtZSgpKSkKICAgICAgICAgICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoKTsKICAgICB9
CiAKQEAgLTk1OCw3ICs5NTgsNyBAQCB2b2lkIEVsZW1lbnQ6OmF0dGFjaCgpCiAgICAgUmVuZGVy
V2lkZ2V0OjpzdXNwZW5kV2lkZ2V0SGllcmFyY2h5VXBkYXRlcygpOwogCiAgICAgY3JlYXRlUmVu
ZGVyZXJJZk5lZWRlZCgpOwotICAgIFN0eWxlU2VsZWN0b3JQYXJlbnRQdXNoZXIgcGFyZW50UHVz
aGVyKHRoaXMpOworICAgIFN0eWxlUmVzb2x2ZXJQYXJlbnRQdXNoZXIgcGFyZW50UHVzaGVyKHRo
aXMpOwogCiAgICAgLy8gV2hlbiBhIHNoYWRvdyByb290IGV4aXN0cywgaXQgZG9lcyB0aGUgd29y
ayBvZiBhdHRhY2hpbmcgdGhlIGNoaWxkcmVuLgogICAgIGlmIChTaGFkb3dUcmVlKiB0cmVlID0g
c2hhZG93VHJlZSgpKSB7CkBAIC0xMDUxLDcgKzEwNTEsNyBAQCBQYXNzUmVmUHRyPFJlbmRlclN0
eWxlPiBFbGVtZW50OjpzdHlsZUZvclJlbmRlcmVyKCkKIHsKICAgICBpZiAoaGFzQ3VzdG9tU3R5
bGVGb3JSZW5kZXJlcigpKQogICAgICAgICByZXR1cm4gY3VzdG9tU3R5bGVGb3JSZW5kZXJlcigp
OwotICAgIHJldHVybiBkb2N1bWVudCgpLT5zdHlsZVNlbGVjdG9yKCktPnN0eWxlRm9yRWxlbWVu
dChzdGF0aWNfY2FzdDxFbGVtZW50Kj4odGhpcykpOworICAgIHJldHVybiBkb2N1bWVudCgpLT5z
dHlsZVJlc29sdmVyKCktPnN0eWxlRm9yRWxlbWVudChzdGF0aWNfY2FzdDxFbGVtZW50Kj4odGhp
cykpOwogfQogCiB2b2lkIEVsZW1lbnQ6OnJlY2FsY1N0eWxlKFN0eWxlQ2hhbmdlIGNoYW5nZSkK
QEAgLTExMjYsNyArMTEyNiw3IEBAIHZvaWQgRWxlbWVudDo6cmVjYWxjU3R5bGUoU3R5bGVDaGFu
Z2UgY2hhbmdlKQogICAgICAgICAvLyBhbGwgdGhlIHdheSBkb3duIHRoZSB0cmVlLiBUaGlzIGlz
IHNpbXBsZXIgdGhhbiBoYXZpbmcgdG8gbWFpbnRhaW4gYSBjYWNoZSBvZiBvYmplY3RzIChhbmQg
c3VjaCBmb250IHNpemUgY2hhbmdlcyBzaG91bGQgYmUgcmFyZSBhbnl3YXkpLgogICAgICAgICBp
ZiAoZG9jdW1lbnQoKS0+dXNlc1JlbVVuaXRzKCkgJiYgZG9jdW1lbnQoKS0+ZG9jdW1lbnRFbGVt
ZW50KCkgPT0gdGhpcyAmJiBjaCAhPSBOb0NoYW5nZSAmJiBjdXJyZW50U3R5bGUgJiYgbmV3U3R5
bGUgJiYgY3VycmVudFN0eWxlLT5mb250U2l6ZSgpICE9IG5ld1N0eWxlLT5mb250U2l6ZSgpKSB7
CiAgICAgICAgICAgICAvLyBDYWNoZWQgUmVuZGVyU3R5bGVzIG1heSBkZXBlbmQgb24gdGhlIHJl
bSB1bml0cy4KLSAgICAgICAgICAgIGRvY3VtZW50KCktPnN0eWxlU2VsZWN0b3IoKS0+aW52YWxp
ZGF0ZU1hdGNoZWRQcm9wZXJ0aWVzQ2FjaGUoKTsKKyAgICAgICAgICAgIGRvY3VtZW50KCktPnN0
eWxlUmVzb2x2ZXIoKS0+aW52YWxpZGF0ZU1hdGNoZWRQcm9wZXJ0aWVzQ2FjaGUoKTsKICAgICAg
ICAgICAgIGNoYW5nZSA9IEZvcmNlOwogICAgICAgICB9CiAKQEAgLTExMzcsNyArMTEzNyw3IEBA
IHZvaWQgRWxlbWVudDo6cmVjYWxjU3R5bGUoU3R5bGVDaGFuZ2UgY2hhbmdlKQogICAgICAgICAg
ICAgICAgIGNoYW5nZSA9IGNoOwogICAgICAgICB9CiAgICAgfQotICAgIFN0eWxlU2VsZWN0b3JQ
YXJlbnRQdXNoZXIgcGFyZW50UHVzaGVyKHRoaXMpOworICAgIFN0eWxlUmVzb2x2ZXJQYXJlbnRQ
dXNoZXIgcGFyZW50UHVzaGVyKHRoaXMpOwogICAgIC8vIEZJWE1FOiBUaGlzIGNoZWNrIGlzIGdv
b2QgZW5vdWdoIGZvciA6aG92ZXIgKyBmb28sIGJ1dCBpdCBpcyBub3QgZ29vZCBlbm91Z2ggZm9y
IDpob3ZlciArIGZvbyArIGJhci4KICAgICAvLyBGb3Igbm93IHdlIHdpbGwganVzdCB3b3JyeSBh
Ym91dCB0aGUgY29tbW9uIGNhc2UsIHNpbmNlIGl0J3MgYSBsb3QgdHJpY2tpZXIgdG8gZ2V0IHRo
ZSBzZWNvbmQgY2FzZSByaWdodAogICAgIC8vIHdpdGhvdXQgZG9pbmcgd2F5IHRvbyBtdWNoIHJl
LXJlc29sdXRpb24uCkBAIC0xMzQ4LDkgKzEzNDgsOSBAQCB2b2lkIEVsZW1lbnQ6OmNoaWxkcmVu
Q2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciwgTm9kZSogYmVmb3JlQ2hhbmdlLCBOb2RlKiBh
Zgogdm9pZCBFbGVtZW50OjpiZWdpblBhcnNpbmdDaGlsZHJlbigpCiB7CiAgICAgY2xlYXJJc1Bh
cnNpbmdDaGlsZHJlbkZpbmlzaGVkKCk7Ci0gICAgU3R5bGVSZXNvbHZlciogc3R5bGVTZWxlY3Rv
ciA9IGRvY3VtZW50KCktPnN0eWxlU2VsZWN0b3JJZkV4aXN0cygpOwotICAgIGlmIChzdHlsZVNl
bGVjdG9yICYmIGF0dGFjaGVkKCkpCi0gICAgICAgIHN0eWxlU2VsZWN0b3ItPnB1c2hQYXJlbnRF
bGVtZW50KHRoaXMpOworICAgIFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIgPSBkb2N1bWVu
dCgpLT5zdHlsZVJlc29sdmVySWZFeGlzdHMoKTsKKyAgICBpZiAoc3R5bGVSZXNvbHZlciAmJiBh
dHRhY2hlZCgpKQorICAgICAgICBzdHlsZVJlc29sdmVyLT5wdXNoUGFyZW50RWxlbWVudCh0aGlz
KTsKIH0KIAogdm9pZCBFbGVtZW50OjpmaW5pc2hQYXJzaW5nQ2hpbGRyZW4oKQpAQCAtMTM1OCw4
ICsxMzU4LDggQEAgdm9pZCBFbGVtZW50OjpmaW5pc2hQYXJzaW5nQ2hpbGRyZW4oKQogICAgIENv
bnRhaW5lck5vZGU6OmZpbmlzaFBhcnNpbmdDaGlsZHJlbigpOwogICAgIHNldElzUGFyc2luZ0No
aWxkcmVuRmluaXNoZWQoKTsKICAgICBjaGVja0ZvclNpYmxpbmdTdHlsZUNoYW5nZXModGhpcywg
cmVuZGVyU3R5bGUoKSwgdHJ1ZSwgbGFzdENoaWxkKCksIDAsIDApOwotICAgIGlmIChTdHlsZVJl
c29sdmVyKiBzdHlsZVNlbGVjdG9yID0gZG9jdW1lbnQoKS0+c3R5bGVTZWxlY3RvcklmRXhpc3Rz
KCkpCi0gICAgICAgIHN0eWxlU2VsZWN0b3ItPnBvcFBhcmVudEVsZW1lbnQodGhpcyk7CisgICAg
aWYgKFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIgPSBkb2N1bWVudCgpLT5zdHlsZVJlc29s
dmVySWZFeGlzdHMoKSkKKyAgICAgICAgc3R5bGVSZXNvbHZlci0+cG9wUGFyZW50RWxlbWVudCh0
aGlzKTsKIH0KIAogI2lmbmRlZiBOREVCVUcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3Np
bmdJbnN0cnVjdGlvbi5jcHAKaW5kZXggYjhhN2MyZjViN2I5Yjk3NjNjNmVlMDdlM2Y3NjQ2ODY3
MGVhNGI5OC4uZTcxOGE1NThiZGFiZTYzZDEyOGMzMWQ5ZjJmYzJlZTMzZDA1YjZkYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAKQEAgLTMwNyw3ICsz
MDcsNyBAQCB2b2lkIFByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6cmVtb3ZlZEZyb20oTm9kZSogaW5z
ZXJ0aW9uUG9pbnQpCiAgICAgfQogCiAgICAgaWYgKG1fY2FjaGVkU2hlZXQpCi0gICAgICAgIGRv
Y3VtZW50KCktPnN0eWxlU2VsZWN0b3JDaGFuZ2VkKERlZmVyUmVjYWxjU3R5bGUpOworICAgICAg
ICBkb2N1bWVudCgpLT5zdHlsZVJlc29sdmVyQ2hhbmdlZChEZWZlclJlY2FsY1N0eWxlKTsKIH0K
IAogdm9pZCBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OmZpbmlzaFBhcnNpbmdDaGlsZHJlbigpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2hhZG93Um9vdC5jcHAKaW5kZXggMTk0YTU2ZmU3YzQzY2FmMzg4NzFhMzJhMWY2
NWFlNDVjZDk4ZDgzOC4uN2I0NDBlZTYwNWFlNTBhNWJhYmFhNDE5NzAxMjczMWRiNDg3N2FkYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcApAQCAtMjAwLDEwICsyMDAsMTAgQEAgdm9pZCBT
aGFkb3dSb290OjpzZXRBcHBseUF1dGhvclNoZWV0cyhib29sIHZhbHVlKQogCiB2b2lkIFNoYWRv
d1Jvb3Q6OmF0dGFjaCgpCiB7Ci0gICAgU3R5bGVSZXNvbHZlciogc3R5bGVTZWxlY3RvciA9IGRv
Y3VtZW50KCktPnN0eWxlU2VsZWN0b3IoKTsKLSAgICBzdHlsZVNlbGVjdG9yLT5wdXNoUGFyZW50
U2hhZG93Um9vdCh0aGlzKTsKKyAgICBTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyID0gZG9j
dW1lbnQoKS0+c3R5bGVSZXNvbHZlcigpOworICAgIHN0eWxlUmVzb2x2ZXItPnB1c2hQYXJlbnRT
aGFkb3dSb290KHRoaXMpOwogICAgIERvY3VtZW50RnJhZ21lbnQ6OmF0dGFjaCgpOwotICAgIHN0
eWxlU2VsZWN0b3ItPnBvcFBhcmVudFNoYWRvd1Jvb3QodGhpcyk7CisgICAgc3R5bGVSZXNvbHZl
ci0+cG9wUGFyZW50U2hhZG93Um9vdCh0aGlzKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL1NoYWRvd1RyZWUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Ry
ZWUuY3BwCmluZGV4IDdhNjBiN2U1MWM5NDExMzdkYTg5ODQ3NmZhMzllOTI2ODcyZmY5NjAuLjQ0
MDkyZjc1ZDRmZDViYTJjYzUzYjRiZDMzNWVmNzFjZjg1ZTZjMDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TaGFkb3dUcmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hh
ZG93VHJlZS5jcHAKQEAgLTIyMSwxNiArMjIxLDE2IEBAIHZvaWQgU2hhZG93VHJlZTo6cmVjYWxj
U2hhZG93VHJlZVN0eWxlKE5vZGU6OlN0eWxlQ2hhbmdlIGNoYW5nZSkKICAgICBpZiAobmVlZHNS
ZWF0dGFjaEhvc3RDaGlsZHJlbkFuZFNoYWRvdygpKQogICAgICAgICByZWF0dGFjaEhvc3RDaGls
ZHJlbkFuZFNoYWRvdygpOwogICAgIGVsc2UgewotICAgICAgICBTdHlsZVJlc29sdmVyKiBzdHls
ZVNlbGVjdG9yID0geW91bmdlc3QtPmRvY3VtZW50KCktPnN0eWxlU2VsZWN0b3IoKTsKKyAgICAg
ICAgU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciA9IHlvdW5nZXN0LT5kb2N1bWVudCgpLT5z
dHlsZVJlc29sdmVyKCk7CiAKLSAgICAgICAgc3R5bGVTZWxlY3Rvci0+cHVzaFBhcmVudFNoYWRv
d1Jvb3QoeW91bmdlc3QpOworICAgICAgICBzdHlsZVJlc29sdmVyLT5wdXNoUGFyZW50U2hhZG93
Um9vdCh5b3VuZ2VzdCk7CiAgICAgICAgIGZvciAoTm9kZSogbiA9IHlvdW5nZXN0LT5maXJzdENo
aWxkKCk7IG47IG4gPSBuLT5uZXh0U2libGluZygpKSB7CiAgICAgICAgICAgICBpZiAobi0+aXNF
bGVtZW50Tm9kZSgpKQogICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PEVsZW1lbnQqPihuKS0+
cmVjYWxjU3R5bGUoY2hhbmdlKTsKICAgICAgICAgICAgIGVsc2UgaWYgKG4tPmlzVGV4dE5vZGUo
KSkKICAgICAgICAgICAgICAgICB0b1RleHQobiktPnJlY2FsY1RleHRTdHlsZShjaGFuZ2UpOwog
ICAgICAgICB9Ci0gICAgICAgIHN0eWxlU2VsZWN0b3ItPnBvcFBhcmVudFNoYWRvd1Jvb3QoeW91
bmdlc3QpOworICAgICAgICBzdHlsZVJlc29sdmVyLT5wb3BQYXJlbnRTaGFkb3dSb290KHlvdW5n
ZXN0KTsKICAgICB9CiAKICAgICBjbGVhck5lZWRzUmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFk
b3coKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZUVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL1N0eWxlRWxlbWVudC5jcHAKaW5kZXggNWMzNGYyNTdlODE3MjJk
OWZjMTRjMDZhNjJkZDgzYzdiMjgxZDAwNy4uNDIxNjhmYjJjM2VjMjBkM2Y3OGYzYTAwYTc2YWRi
YTA5NGNjMzliMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlRWxlbWVudC5jcHAKQEAgLTc5LDcgKzc5
LDcgQEAgdm9pZCBTdHlsZUVsZW1lbnQ6OnJlbW92ZWRGcm9tRG9jdW1lbnQoRG9jdW1lbnQqIGRv
Y3VtZW50LCBFbGVtZW50KiBlbGVtZW50KQogCiAgICAgLy8gSWYgd2UncmUgaW4gZG9jdW1lbnQg
dGVhcmRvd24sIHRoZW4gd2UgZG9uJ3QgbmVlZCB0byBkbyBhbnkgbm90aWZpY2F0aW9uIG9mIG91
ciBzaGVldCdzIHJlbW92YWwuCiAgICAgaWYgKGRvY3VtZW50LT5yZW5kZXJlcigpKQotICAgICAg
ICBkb2N1bWVudC0+c3R5bGVTZWxlY3RvckNoYW5nZWQoRGVmZXJSZWNhbGNTdHlsZSk7CisgICAg
ICAgIGRvY3VtZW50LT5zdHlsZVJlc29sdmVyQ2hhbmdlZChEZWZlclJlY2FsY1N0eWxlKTsKIH0K
IAogdm9pZCBTdHlsZUVsZW1lbnQ6OmNsZWFyRG9jdW1lbnREYXRhKERvY3VtZW50KiBkb2N1bWVu
dCwgRWxlbWVudCogZWxlbWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdGluZ1N0eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNw
cAppbmRleCBiNjk2Y2Y0MDQ4ZDk3MmE3Y2EzMzNmM2FhODRhNDA5MTUxYzUxMDI4Li4yNjQ3ZTQw
NDkwZjU4ZjUyYmUwYmFjZTE0OTQwZmU0NDI4ZDQ5NWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0aW5nU3R5bGUuY3BwCkBAIC0xMDMwLDcgKzEwMzAsNyBAQCB2b2lkIEVkaXRpbmdTdHls
ZTo6bWVyZ2VTdHlsZShjb25zdCBTdHlsZVByb3BlcnR5U2V0KiBzdHlsZSwgQ1NTUHJvcGVydHlP
dmVycmlkZQogc3RhdGljIFBhc3NSZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4gc3R5bGVGcm9tTWF0
Y2hlZFJ1bGVzRm9yRWxlbWVudChFbGVtZW50KiBlbGVtZW50LCB1bnNpZ25lZCBydWxlc1RvSW5j
bHVkZSkKIHsKICAgICBSZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4gc3R5bGUgPSBTdHlsZVByb3Bl
cnR5U2V0OjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8Q1NTUnVsZUxpc3Q+IG1hdGNoZWRSdWxlcyA9
IGVsZW1lbnQtPmRvY3VtZW50KCktPnN0eWxlU2VsZWN0b3IoKS0+c3R5bGVSdWxlc0ZvckVsZW1l
bnQoZWxlbWVudCwgcnVsZXNUb0luY2x1ZGUpOworICAgIFJlZlB0cjxDU1NSdWxlTGlzdD4gbWF0
Y2hlZFJ1bGVzID0gZWxlbWVudC0+ZG9jdW1lbnQoKS0+c3R5bGVSZXNvbHZlcigpLT5zdHlsZVJ1
bGVzRm9yRWxlbWVudChlbGVtZW50LCBydWxlc1RvSW5jbHVkZSk7CiAgICAgaWYgKG1hdGNoZWRS
dWxlcykgewogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbWF0Y2hlZFJ1bGVzLT5s
ZW5ndGgoKTsgaSsrKSB7CiAgICAgICAgICAgICBpZiAobWF0Y2hlZFJ1bGVzLT5pdGVtKGkpLT50
eXBlKCkgPT0gQ1NTUnVsZTo6U1RZTEVfUlVMRSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaGlzdG9yeS9DYWNoZWRQYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVk
UGFnZS5jcHAKaW5kZXggMTllZWVhMWM1YTAyNmI4NzIwMWVjOGI0YjI1YWQ3YTYyMWExMTE1Ny4u
M2FjYWY4ZTM4MDUxMWU3NjY2NTQ0M2QwYmM2NzdmODgxMWE1MjhlMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
aXN0b3J5L0NhY2hlZFBhZ2UuY3BwCkBAIC04OCw4ICs4OCw4IEBAIHZvaWQgQ2FjaGVkUGFnZTo6
cmVzdG9yZShQYWdlKiBwYWdlKQogCiAgICAgaWYgKG1fbmVlZFN0eWxlUmVjYWxjRm9yVmlzaXRl
ZExpbmtzKSB7CiAgICAgICAgIGZvciAoRnJhbWUqIGZyYW1lID0gcGFnZS0+bWFpbkZyYW1lKCk7
IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4dCgpKSB7Ci0gICAgICAg
ICAgICBpZiAoU3R5bGVSZXNvbHZlciogc3R5bGVTZWxlY3RvciA9IGZyYW1lLT5kb2N1bWVudCgp
LT5zdHlsZVNlbGVjdG9yKCkpCi0gICAgICAgICAgICAgICAgc3R5bGVTZWxlY3Rvci0+YWxsVmlz
aXRlZFN0YXRlQ2hhbmdlZCgpOworICAgICAgICAgICAgaWYgKFN0eWxlUmVzb2x2ZXIqIHN0eWxl
UmVzb2x2ZXIgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+c3R5bGVSZXNvbHZlcigpKQorICAgICAgICAg
ICAgICAgIHN0eWxlUmVzb2x2ZXItPmFsbFZpc2l0ZWRTdGF0ZUNoYW5nZWQoKTsKICAgICAgICAg
fQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAppbmRl
eCAwM2E0OTA4YzVjNzdhMmRlMWE4OWNjNzdiZDI0ZGEyZjFlMDU1M2E1Li5lOGJmNDFmZDI1NjIx
ODZmMmM1NDFmN2I2N2YxYjYyMDQ2MDAwZmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxD
YW52YXNFbGVtZW50LmNwcApAQCAtNDYzLDkgKzQ2Myw5IEBAIFNlY3VyaXR5T3JpZ2luKiBIVE1M
Q2FudmFzRWxlbWVudDo6c2VjdXJpdHlPcmlnaW4oKSBjb25zdAogICAgIHJldHVybiBkb2N1bWVu
dCgpLT5zZWN1cml0eU9yaWdpbigpOwogfQogCi1TdHlsZVJlc29sdmVyKiBIVE1MQ2FudmFzRWxl
bWVudDo6c3R5bGVTZWxlY3RvcigpCitTdHlsZVJlc29sdmVyKiBIVE1MQ2FudmFzRWxlbWVudDo6
c3R5bGVSZXNvbHZlcigpCiB7Ci0gICAgcmV0dXJuIGRvY3VtZW50KCktPnN0eWxlU2VsZWN0b3Io
KTsKKyAgICByZXR1cm4gZG9jdW1lbnQoKS0+c3R5bGVSZXNvbHZlcigpOwogfQogCiBib29sIEhU
TUxDYW52YXNFbGVtZW50OjpzaG91bGRBY2NlbGVyYXRlKGNvbnN0IEludFNpemUmIHNpemUpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmgKaW5kZXggMjBhMjI1YjA3
Mjk1ZjU5ZTdhNzZhYTkyMTYxOTM3YzMzZmFhOGEyNC4uNjg3MjAyMWZhN2Y3ZTQ1MWViNmJjNjI5
MGMxOTM2NzA1ODFkYjU1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2Fu
dmFzRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQu
aApAQCAtMTIyLDcgKzEyMiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE9yaWdpblRhaW50ZWQo
KSB7IG1fb3JpZ2luQ2xlYW4gPSBmYWxzZTsgfQogICAgIGJvb2wgb3JpZ2luQ2xlYW4oKSBjb25z
dCB7IHJldHVybiBtX29yaWdpbkNsZWFuOyB9CiAKLSAgICBTdHlsZVJlc29sdmVyKiBzdHlsZVNl
bGVjdG9yKCk7CisgICAgU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlcigpOwogCiAgICAgQWZm
aW5lVHJhbnNmb3JtIGJhc2VUcmFuc2Zvcm0oKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTGlua0VsZW1lbnQuY3BwCmluZGV4IDBmYTRmMmQ4ZDM4NGY5NGRlOTZjMWNhZjI1NDc0ZjQ5
ZDYwNDhjY2EuLjA2OWI5M2UyZmVjMzY5YmY0NDMxNmE2MzcwOTE1NDM0ZmFkZGFkYzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKQEAgLTEyMyw3ICsxMjMsNyBAQCB2
b2lkIEhUTUxMaW5rRWxlbWVudDo6c2V0RGlzYWJsZWRTdGF0ZShib29sIGRpc2FibGVkKQogICAg
ICAgICBpZiAoIW1fc2hlZXQgJiYgbV9kaXNhYmxlZFN0YXRlID09IEVuYWJsZWRWaWFTY3JpcHQp
CiAgICAgICAgICAgICBwcm9jZXNzKCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGRvY3Vt
ZW50KCktPnN0eWxlU2VsZWN0b3JDaGFuZ2VkKERlZmVyUmVjYWxjU3R5bGUpOyAvLyBVcGRhdGUg
dGhlIHN0eWxlIHNlbGVjdG9yLgorICAgICAgICAgICAgZG9jdW1lbnQoKS0+c3R5bGVSZXNvbHZl
ckNoYW5nZWQoRGVmZXJSZWNhbGNTdHlsZSk7IC8vIFVwZGF0ZSB0aGUgc3R5bGUgc2VsZWN0b3Iu
CiAgICAgfQogfQogCkBAIC0yMzEsNyArMjMxLDcgQEAgdm9pZCBIVE1MTGlua0VsZW1lbnQ6OnBy
b2Nlc3MoKQogICAgIH0gZWxzZSBpZiAobV9zaGVldCkgewogICAgICAgICAvLyB3ZSBubyBsb25n
ZXIgY29udGFpbiBhIHN0eWxlc2hlZXQsIGUuZy4gcGVyaGFwcyByZWwgb3IgdHlwZSB3YXMgY2hh
bmdlZAogICAgICAgICBjbGVhclNoZWV0KCk7Ci0gICAgICAgIGRvY3VtZW50KCktPnN0eWxlU2Vs
ZWN0b3JDaGFuZ2VkKERlZmVyUmVjYWxjU3R5bGUpOworICAgICAgICBkb2N1bWVudCgpLT5zdHls
ZVJlc29sdmVyQ2hhbmdlZChEZWZlclJlY2FsY1N0eWxlKTsKICAgICB9CiB9CiAKQEAgLTI3OCw3
ICsyNzgsNyBAQCB2b2lkIEhUTUxMaW5rRWxlbWVudDo6cmVtb3ZlZEZyb20oTm9kZSogaW5zZXJ0
aW9uUG9pbnQpCiAgICAgICAgIHJlbW92ZVBlbmRpbmdTaGVldCgpOwogCiAgICAgaWYgKGRvY3Vt
ZW50KCktPnJlbmRlcmVyKCkpCi0gICAgICAgIGRvY3VtZW50KCktPnN0eWxlU2VsZWN0b3JDaGFu
Z2VkKERlZmVyUmVjYWxjU3R5bGUpOworICAgICAgICBkb2N1bWVudCgpLT5zdHlsZVJlc29sdmVy
Q2hhbmdlZChEZWZlclJlY2FsY1N0eWxlKTsKIH0KIAogdm9pZCBIVE1MTGlua0VsZW1lbnQ6OmZp
bmlzaFBhcnNpbmdDaGlsZHJlbigpCkBAIC00MzEsNyArNDMxLDcgQEAgdm9pZCBIVE1MTGlua0Vs
ZW1lbnQ6OnJlbW92ZVBlbmRpbmdTaGVldCgpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAodHlw
ZSA9PSBOb25CbG9ja2luZykgewogICAgICAgICAvLyBEb2N1bWVudDo6cmVtb3ZlUGVuZGluZ1No
ZWV0KCkgdHJpZ2dlcnMgdGhlIHN0eWxlIHNlbGVjdG9yIHJlY2FsYyBmb3IgYmxvY2tpbmcgc2hl
ZXRzLgotICAgICAgICBkb2N1bWVudCgpLT5zdHlsZVNlbGVjdG9yQ2hhbmdlZChSZWNhbGNTdHls
ZUltbWVkaWF0ZWx5KTsKKyAgICAgICAgZG9jdW1lbnQoKS0+c3R5bGVSZXNvbHZlckNoYW5nZWQo
UmVjYWxjU3R5bGVJbW1lZGlhdGVseSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgZG9j
dW1lbnQoKS0+cmVtb3ZlUGVuZGluZ1NoZWV0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3R5
bGVFbGVtZW50LmNwcAppbmRleCA3N2QwODFmM2E4ZjY0OGM5Y2M0YzgzNzk0NWJmNjk0ZTZkNTdm
OTQ1Li4zNzFmZmRkZTA3YjdmZDU1YWZmNDFlYmU0MjQ4OGRiOTFhYzAyZTFjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5jcHAKQEAgLTEyMiw3ICsxMjIsNyBAQCB2b2lk
IEhUTUxTdHlsZUVsZW1lbnQ6OnJlZ2lzdGVyV2l0aFNjb3BpbmdOb2RlKCkKICAgICBzY29wZS0+
cmVnaXN0ZXJTY29wZWRIVE1MU3R5bGVDaGlsZCgpOwogICAgIHNjb3BlLT5zZXROZWVkc1N0eWxl
UmVjYWxjKCk7CiAgICAgaWYgKGluRG9jdW1lbnQoKSAmJiAhZG9jdW1lbnQoKS0+cGFyc2luZygp
ICYmIGRvY3VtZW50KCktPnJlbmRlcmVyKCkpCi0gICAgICAgIGRvY3VtZW50KCktPnN0eWxlU2Vs
ZWN0b3JDaGFuZ2VkKERlZmVyUmVjYWxjU3R5bGUpOworICAgICAgICBkb2N1bWVudCgpLT5zdHls
ZVJlc29sdmVyQ2hhbmdlZChEZWZlclJlY2FsY1N0eWxlKTsKIAogICAgIG1faXNSZWdpc3RlcmVk
V2l0aFNjb3BpbmdOb2RlID0gdHJ1ZTsKIH0KQEAgLTE0NSw3ICsxNDUsNyBAQCB2b2lkIEhUTUxT
dHlsZUVsZW1lbnQ6OnVucmVnaXN0ZXJXaXRoU2NvcGluZ05vZGUoKQogICAgICAgICBzY29wZS0+
c2V0TmVlZHNTdHlsZVJlY2FsYygpOwogICAgIH0KICAgICBpZiAoaW5Eb2N1bWVudCgpICYmICFk
b2N1bWVudCgpLT5wYXJzaW5nKCkgJiYgZG9jdW1lbnQoKS0+cmVuZGVyZXIoKSkKLSAgICAgICAg
ZG9jdW1lbnQoKS0+c3R5bGVTZWxlY3RvckNoYW5nZWQoRGVmZXJSZWNhbGNTdHlsZSk7CisgICAg
ICAgIGRvY3VtZW50KCktPnN0eWxlUmVzb2x2ZXJDaGFuZ2VkKERlZmVyUmVjYWxjU3R5bGUpOwog
CiAgICAgbV9pc1JlZ2lzdGVyZWRXaXRoU2NvcGluZ05vZGUgPSBmYWxzZTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQu
Y3BwCmluZGV4IDg5OTcxNWU1NWQwNjY4MTcwNjg4MDZkMmFkYzAwNWQ0MjFkMWM2ZTUuLjNiOTI0
NTU5Y2ZmMDJmY2E4MmE4YTZmMDFjNzhlMjk4MTU3ZDQ4NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcApAQCAt
MTk0MywyMyArMTk0MywyMyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0Rm9u
dChjb25zdCBTdHJpbmcmIG5ld0ZvbnQpCiAgICAgbmV3U3R5bGUtPmZvbnQoKS51cGRhdGUobmV3
U3R5bGUtPmZvbnQoKS5mb250U2VsZWN0b3IoKSk7CiAKICAgICAvLyBOb3cgbWFwIHRoZSBmb250
IHByb3BlcnR5IGxvbmdoYW5kcyBpbnRvIHRoZSBzdHlsZS4KLSAgICBTdHlsZVJlc29sdmVyKiBz
dHlsZVNlbGVjdG9yID0gY2FudmFzKCktPnN0eWxlU2VsZWN0b3IoKTsKLSAgICBzdHlsZVNlbGVj
dG9yLT5hcHBseVByb3BlcnR5VG9TdHlsZShDU1NQcm9wZXJ0eUZvbnRGYW1pbHksIHRlbXBEZWNs
LT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5Rm9udEZhbWlseSkuZ2V0KCksIG5ld1N0
eWxlLmdldCgpKTsKLSAgICBzdHlsZVNlbGVjdG9yLT5hcHBseVByb3BlcnR5VG9DdXJyZW50U3R5
bGUoQ1NTUHJvcGVydHlGb250U3R5bGUsIHRlbXBEZWNsLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENT
U1Byb3BlcnR5Rm9udFN0eWxlKS5nZXQoKSk7Ci0gICAgc3R5bGVTZWxlY3Rvci0+YXBwbHlQcm9w
ZXJ0eVRvQ3VycmVudFN0eWxlKENTU1Byb3BlcnR5Rm9udFZhcmlhbnQsIHRlbXBEZWNsLT5nZXRQ
cm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5Rm9udFZhcmlhbnQpLmdldCgpKTsKLSAgICBzdHls
ZVNlbGVjdG9yLT5hcHBseVByb3BlcnR5VG9DdXJyZW50U3R5bGUoQ1NTUHJvcGVydHlGb250V2Vp
Z2h0LCB0ZW1wRGVjbC0+Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUZvbnRXZWlnaHQp
LmdldCgpKTsKKyAgICBTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyID0gY2FudmFzKCktPnN0
eWxlUmVzb2x2ZXIoKTsKKyAgICBzdHlsZVJlc29sdmVyLT5hcHBseVByb3BlcnR5VG9TdHlsZShD
U1NQcm9wZXJ0eUZvbnRGYW1pbHksIHRlbXBEZWNsLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1By
b3BlcnR5Rm9udEZhbWlseSkuZ2V0KCksIG5ld1N0eWxlLmdldCgpKTsKKyAgICBzdHlsZVJlc29s
dmVyLT5hcHBseVByb3BlcnR5VG9DdXJyZW50U3R5bGUoQ1NTUHJvcGVydHlGb250U3R5bGUsIHRl
bXBEZWNsLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5Rm9udFN0eWxlKS5nZXQoKSk7
CisgICAgc3R5bGVSZXNvbHZlci0+YXBwbHlQcm9wZXJ0eVRvQ3VycmVudFN0eWxlKENTU1Byb3Bl
cnR5Rm9udFZhcmlhbnQsIHRlbXBEZWNsLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5
Rm9udFZhcmlhbnQpLmdldCgpKTsKKyAgICBzdHlsZVJlc29sdmVyLT5hcHBseVByb3BlcnR5VG9D
dXJyZW50U3R5bGUoQ1NTUHJvcGVydHlGb250V2VpZ2h0LCB0ZW1wRGVjbC0+Z2V0UHJvcGVydHlD
U1NWYWx1ZShDU1NQcm9wZXJ0eUZvbnRXZWlnaHQpLmdldCgpKTsKIAogICAgIC8vIEFzIGRlc2Ny
aWJlZCBpbiBCVUc2NjI5MSwgc2V0dGluZyBmb250LXNpemUgb24gYSBmb250IG1heSBlbnRhaWwg
YSBDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZUxlbmd0aERvdWJsZSBjYWxsLAogICAgIC8vIHdo
aWNoIGFzc3VtZXMgdGhlIGZvbnRNZXRyaWNzIGFyZSBhdmFpbGFibGUgZm9yIHRoZSBhZmZlY3Rl
ZCBmb250LCBvdGhlcndpc2UgYSBjcmFzaCBvY2N1cnMgKHNlZSBodHRwOi8vdHJhYy53ZWJraXQu
b3JnL2NoYW5nZXNldC85NjEyMikuCiAgICAgLy8gVGhlIHVwZGF0ZUZvbnQoKSBjYWxsIGJlbG93
IHVwZGF0ZXMgdGhlIGZvbnRNZXRyaWNzIGFuZCBlbnN1cmVzIHRoZSBwcm9wZXIgc2V0dGluZyBv
ZiBmb250LXNpemUuCi0gICAgc3R5bGVTZWxlY3Rvci0+dXBkYXRlRm9udCgpOwotICAgIHN0eWxl
U2VsZWN0b3ItPmFwcGx5UHJvcGVydHlUb0N1cnJlbnRTdHlsZShDU1NQcm9wZXJ0eUZvbnRTaXpl
LCB0ZW1wRGVjbC0+Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUZvbnRTaXplKS5nZXQo
KSk7Ci0gICAgc3R5bGVTZWxlY3Rvci0+YXBwbHlQcm9wZXJ0eVRvQ3VycmVudFN0eWxlKENTU1By
b3BlcnR5TGluZUhlaWdodCwgdGVtcERlY2wtPmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVy
dHlMaW5lSGVpZ2h0KS5nZXQoKSk7CisgICAgc3R5bGVSZXNvbHZlci0+dXBkYXRlRm9udCgpOwor
ICAgIHN0eWxlUmVzb2x2ZXItPmFwcGx5UHJvcGVydHlUb0N1cnJlbnRTdHlsZShDU1NQcm9wZXJ0
eUZvbnRTaXplLCB0ZW1wRGVjbC0+Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUZvbnRT
aXplKS5nZXQoKSk7CisgICAgc3R5bGVSZXNvbHZlci0+YXBwbHlQcm9wZXJ0eVRvQ3VycmVudFN0
eWxlKENTU1Byb3BlcnR5TGluZUhlaWdodCwgdGVtcERlY2wtPmdldFByb3BlcnR5Q1NTVmFsdWUo
Q1NTUHJvcGVydHlMaW5lSGVpZ2h0KS5nZXQoKSk7CiAKICAgICBzdGF0ZSgpLm1fZm9udCA9IG5l
d1N0eWxlLT5mb250KCk7Ci0gICAgc3RhdGUoKS5tX2ZvbnQudXBkYXRlKHN0eWxlU2VsZWN0b3It
PmZvbnRTZWxlY3RvcigpKTsKKyAgICBzdGF0ZSgpLm1fZm9udC51cGRhdGUoc3R5bGVSZXNvbHZl
ci0+Zm9udFNlbGVjdG9yKCkpOwogICAgIHN0YXRlKCkubV9yZWFsaXplZEZvbnQgPSB0cnVlOwot
ICAgIHN0eWxlU2VsZWN0b3ItPmZvbnRTZWxlY3RvcigpLT5yZWdpc3RlckZvckludmFsaWRhdGlv
bkNhbGxiYWNrcygmc3RhdGUoKSk7CisgICAgc3R5bGVSZXNvbHZlci0+Zm9udFNlbGVjdG9yKCkt
PnJlZ2lzdGVyRm9ySW52YWxpZGF0aW9uQ2FsbGJhY2tzKCZzdGF0ZSgpKTsKIH0KIAogU3RyaW5n
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6dGV4dEFsaWduKCkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCmluZGV4IDU3YmM1Y2IxZTFh
NjRjNWE1YTIxYzNmNDA1YjQyNDVhODA4NDFmOTcuLjE1ZDNjZmVhN2Q2Y2FmNTU5NjJmZjFkMjQ5
ODcyYzM0NGQ2MWI2YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDU1NBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNTU0FnZW50LmNwcApAQCAtNTYwLDcgKzU2MCw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6
OnJlY2FsY1N0eWxlRm9yUHNldWRvU3RhdGVJZk5lZWRlZChFbGVtZW50KiBlbGVtZW50LCBJbnNw
CiAgICAgbV9sYXN0UHNldWRvU3RhdGUgPSBmb3JjZVBzZXVkb1N0YXRlOwogICAgIG1fbGFzdEVs
ZW1lbnRXaXRoUHNldWRvU3RhdGUgPSBlbGVtZW50OwogICAgIGlmIChuZWVkU3R5bGVSZWNhbGMp
Ci0gICAgICAgIGVsZW1lbnQtPm93bmVyRG9jdW1lbnQoKS0+c3R5bGVTZWxlY3RvckNoYW5nZWQo
UmVjYWxjU3R5bGVJbW1lZGlhdGVseSk7CisgICAgICAgIGVsZW1lbnQtPm93bmVyRG9jdW1lbnQo
KS0+c3R5bGVSZXNvbHZlckNoYW5nZWQoUmVjYWxjU3R5bGVJbW1lZGlhdGVseSk7CiB9CiAKIHZv
aWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE1hdGNoZWRTdHlsZXNGb3JOb2RlKEVycm9yU3RyaW5n
KiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgY29uc3QgUmVmUHRyPEluc3BlY3RvckFycmF5Piog
Zm9yY2VkUHNldWRvQ2xhc3NlcywgY29uc3QgYm9vbCogaW5jbHVkZVBzZXVkbywgY29uc3QgYm9v
bCogaW5jbHVkZUluaGVyaXRlZCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRl
cjo6Q1NTOjpDU1NSdWxlPiA+JiBtYXRjaGVkQ1NTUnVsZXMsIFJlZlB0cjxUeXBlQnVpbGRlcjo6
QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6UHNldWRvSWRSdWxlcz4gPiYgcHNldWRvSWRSdWxlcywg
UmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpJbmhlcml0ZWRTdHls
ZUVudHJ5PiA+JiBpbmhlcml0ZWRFbnRyaWVzKQpAQCAtNTcyLDE5ICs1NzIsMTkgQEAgdm9pZCBJ
bnNwZWN0b3JDU1NBZ2VudDo6Z2V0TWF0Y2hlZFN0eWxlc0Zvck5vZGUoRXJyb3JTdHJpbmcqIGVy
cm9yU3RyaW5nLCBpbnQgbm8KICAgICByZWNhbGNTdHlsZUZvclBzZXVkb1N0YXRlSWZOZWVkZWQo
ZWxlbWVudCwgZm9yY2VkUHNldWRvQ2xhc3NlcyA/IGZvcmNlZFBzZXVkb0NsYXNzZXMtPmdldCgp
IDogMCk7CiAKICAgICAvLyBNYXRjaGVkIHJ1bGVzLgotICAgIFN0eWxlUmVzb2x2ZXIqIHNlbGVj
dG9yID0gZWxlbWVudC0+b3duZXJEb2N1bWVudCgpLT5zdHlsZVNlbGVjdG9yKCk7Ci0gICAgUmVm
UHRyPENTU1J1bGVMaXN0PiBtYXRjaGVkUnVsZXMgPSBzZWxlY3Rvci0+c3R5bGVSdWxlc0ZvckVs
ZW1lbnQoZWxlbWVudCwgU3R5bGVSZXNvbHZlcjo6QWxsQ1NTUnVsZXMpOwotICAgIG1hdGNoZWRD
U1NSdWxlcyA9IGJ1aWxkQXJyYXlGb3JSdWxlTGlzdChtYXRjaGVkUnVsZXMuZ2V0KCksIHNlbGVj
dG9yKTsKKyAgICBTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyID0gZWxlbWVudC0+b3duZXJE
b2N1bWVudCgpLT5zdHlsZVJlc29sdmVyKCk7CisgICAgUmVmUHRyPENTU1J1bGVMaXN0PiBtYXRj
aGVkUnVsZXMgPSBzdHlsZVJlc29sdmVyLT5zdHlsZVJ1bGVzRm9yRWxlbWVudChlbGVtZW50LCBT
dHlsZVJlc29sdmVyOjpBbGxDU1NSdWxlcyk7CisgICAgbWF0Y2hlZENTU1J1bGVzID0gYnVpbGRB
cnJheUZvclJ1bGVMaXN0KG1hdGNoZWRSdWxlcy5nZXQoKSwgc3R5bGVSZXNvbHZlcik7CiAKICAg
ICAvLyBQc2V1ZG8gZWxlbWVudHMuCiAgICAgaWYgKCFpbmNsdWRlUHNldWRvIHx8ICppbmNsdWRl
UHNldWRvKSB7CiAgICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6
OkNTUzo6UHNldWRvSWRSdWxlcz4gPiBwc2V1ZG9FbGVtZW50cyA9IFR5cGVCdWlsZGVyOjpBcnJh
eTxUeXBlQnVpbGRlcjo6Q1NTOjpQc2V1ZG9JZFJ1bGVzPjo6Y3JlYXRlKCk7CiAgICAgICAgIGZv
ciAoUHNldWRvSWQgcHNldWRvSWQgPSBGSVJTVF9QVUJMSUNfUFNFVURPSUQ7IHBzZXVkb0lkIDwg
QUZURVJfTEFTVF9JTlRFUk5BTF9QU0VVRE9JRDsgcHNldWRvSWQgPSBzdGF0aWNfY2FzdDxQc2V1
ZG9JZD4ocHNldWRvSWQgKyAxKSkgewotICAgICAgICAgICAgUmVmUHRyPENTU1J1bGVMaXN0PiBt
YXRjaGVkUnVsZXMgPSBzZWxlY3Rvci0+cHNldWRvU3R5bGVSdWxlc0ZvckVsZW1lbnQoZWxlbWVu
dCwgcHNldWRvSWQsIFN0eWxlUmVzb2x2ZXI6OkFsbENTU1J1bGVzKTsKKyAgICAgICAgICAgIFJl
ZlB0cjxDU1NSdWxlTGlzdD4gbWF0Y2hlZFJ1bGVzID0gc3R5bGVSZXNvbHZlci0+cHNldWRvU3R5
bGVSdWxlc0ZvckVsZW1lbnQoZWxlbWVudCwgcHNldWRvSWQsIFN0eWxlUmVzb2x2ZXI6OkFsbENT
U1J1bGVzKTsKICAgICAgICAgICAgIGlmIChtYXRjaGVkUnVsZXMgJiYgbWF0Y2hlZFJ1bGVzLT5s
ZW5ndGgoKSkgewogICAgICAgICAgICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpQc2V1
ZG9JZFJ1bGVzPiBwc2V1ZG9TdHlsZXMgPSBUeXBlQnVpbGRlcjo6Q1NTOjpQc2V1ZG9JZFJ1bGVz
OjpjcmVhdGUoKQogICAgICAgICAgICAgICAgICAgICAuc2V0UHNldWRvSWQoc3RhdGljX2Nhc3Q8
aW50Pihwc2V1ZG9JZCkpCi0gICAgICAgICAgICAgICAgICAgIC5zZXRSdWxlcyhidWlsZEFycmF5
Rm9yUnVsZUxpc3QobWF0Y2hlZFJ1bGVzLmdldCgpLCBzZWxlY3RvcikpOworICAgICAgICAgICAg
ICAgICAgICAuc2V0UnVsZXMoYnVpbGRBcnJheUZvclJ1bGVMaXN0KG1hdGNoZWRSdWxlcy5nZXQo
KSwgc3R5bGVSZXNvbHZlcikpOwogICAgICAgICAgICAgICAgIHBzZXVkb0VsZW1lbnRzLT5hZGRJ
dGVtKHBzZXVkb1N0eWxlcy5yZWxlYXNlKCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBA
IC01OTcsMTAgKzU5NywxMCBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRNYXRjaGVkU3R5
bGVzRm9yTm9kZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBubwogICAgICAgICBSZWZQ
dHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OkluaGVyaXRlZFN0eWxlRW50
cnk+ID4gaW5oZXJpdGVkU3R5bGVzID0gVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpD
U1M6OkluaGVyaXRlZFN0eWxlRW50cnk+OjpjcmVhdGUoKTsKICAgICAgICAgRWxlbWVudCogcGFy
ZW50RWxlbWVudCA9IGVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKTsKICAgICAgICAgd2hpbGUgKHBh
cmVudEVsZW1lbnQpIHsKLSAgICAgICAgICAgIFN0eWxlUmVzb2x2ZXIqIHBhcmVudFNlbGVjdG9y
ID0gcGFyZW50RWxlbWVudC0+b3duZXJEb2N1bWVudCgpLT5zdHlsZVNlbGVjdG9yKCk7Ci0gICAg
ICAgICAgICBSZWZQdHI8Q1NTUnVsZUxpc3Q+IHBhcmVudE1hdGNoZWRSdWxlcyA9IHBhcmVudFNl
bGVjdG9yLT5zdHlsZVJ1bGVzRm9yRWxlbWVudChwYXJlbnRFbGVtZW50LCBTdHlsZVJlc29sdmVy
OjpBbGxDU1NSdWxlcyk7CisgICAgICAgICAgICBTdHlsZVJlc29sdmVyKiBwYXJlbnRTdHlsZVJl
c29sdmVyPSBwYXJlbnRFbGVtZW50LT5vd25lckRvY3VtZW50KCktPnN0eWxlUmVzb2x2ZXIoKTsK
KyAgICAgICAgICAgIFJlZlB0cjxDU1NSdWxlTGlzdD4gcGFyZW50TWF0Y2hlZFJ1bGVzID0gcGFy
ZW50U3R5bGVSZXNvbHZlci0+c3R5bGVSdWxlc0ZvckVsZW1lbnQocGFyZW50RWxlbWVudCwgU3R5
bGVSZXNvbHZlcjo6QWxsQ1NTUnVsZXMpOwogICAgICAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVy
OjpDU1M6OkluaGVyaXRlZFN0eWxlRW50cnk+IHBhcmVudFN0eWxlID0gVHlwZUJ1aWxkZXI6OkNT
Uzo6SW5oZXJpdGVkU3R5bGVFbnRyeTo6Y3JlYXRlKCkKLSAgICAgICAgICAgICAgICAuc2V0TWF0
Y2hlZENTU1J1bGVzKGJ1aWxkQXJyYXlGb3JSdWxlTGlzdChwYXJlbnRNYXRjaGVkUnVsZXMuZ2V0
KCksIHNlbGVjdG9yKSk7CisgICAgICAgICAgICAgICAgLnNldE1hdGNoZWRDU1NSdWxlcyhidWls
ZEFycmF5Rm9yUnVsZUxpc3QocGFyZW50TWF0Y2hlZFJ1bGVzLmdldCgpLCBzdHlsZVJlc29sdmVy
KSk7CiAgICAgICAgICAgICBpZiAocGFyZW50RWxlbWVudC0+c3R5bGUoKSAmJiBwYXJlbnRFbGVt
ZW50LT5zdHlsZSgpLT5sZW5ndGgoKSkgewogICAgICAgICAgICAgICAgIEluc3BlY3RvclN0eWxl
U2hlZXRGb3JJbmxpbmVTdHlsZSogc3R5bGVTaGVldCA9IGFzSW5zcGVjdG9yU3R5bGVTaGVldChw
YXJlbnRFbGVtZW50KTsKICAgICAgICAgICAgICAgICBpZiAoc3R5bGVTaGVldCkKQEAgLTk0NCw3
ICs5NDQsNyBAQCBUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlOjpPcmlnaW46OkVudW0gSW5zcGVj
dG9yQ1NTQWdlbnQ6OmRldGVjdE9yaWdpbihDU1NTdHlsZQogICAgIHJldHVybiBvcmlnaW47CiB9
CiAKLVBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1
bGU+ID4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkQXJyYXlGb3JSdWxlTGlzdChDU1NSdWxlTGlz
dCogcnVsZUxpc3QsIFN0eWxlUmVzb2x2ZXIqIHN0eWxlU2VsZWN0b3IpCitQYXNzUmVmUHRyPFR5
cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPiA+IEluc3BlY3RvckNT
U0FnZW50OjpidWlsZEFycmF5Rm9yUnVsZUxpc3QoQ1NTUnVsZUxpc3QqIHJ1bGVMaXN0LCBTdHls
ZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyKQogewogICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJy
YXk8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4gPiByZXN1bHQgPSBUeXBlQnVpbGRlcjo6QXJy
YXk8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT46OmNyZWF0ZSgpOwogICAgIGlmICghcnVsZUxp
c3QpCkBAIC05NTksNyArOTU5LDcgQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlw
ZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4gPiBJbnNwZWN0b3JDU1NBZ2VudDo6YnUKICAgICAgICAg
Ly8gU2luY2UgdGhlIGluc3BlY3RvciB3YW50cyB0byB3YWxrIHRoZSBwYXJlbnQgY2hhaW4sIHdl
IGNvbnN0cnVjdCB0aGUgZnVsbCB3cmFwcGVycyBoZXJlLgogICAgICAgICAvLyBGSVhNRTogVGhp
cyBjb3VsZCBiZSBmYWN0b3JlZCBiZXR0ZXIuIFN0eWxlUmVzb2x2ZXI6OnN0eWxlUnVsZXNGb3JF
bGVtZW50IHNob3VsZCByZXR1cm4gYSBTdHlsZVJ1bGUgdmVjdG9yLCBub3QgYSBDU1NSdWxlTGlz
dC4KICAgICAgICAgaWYgKCFydWxlLT5wYXJlbnRTdHlsZVNoZWV0KCkpIHsKLSAgICAgICAgICAg
IHJ1bGUgPSBzdHlsZVNlbGVjdG9yLT5lbnN1cmVGdWxsQ1NTT01XcmFwcGVyRm9ySW5zcGVjdG9y
KHJ1bGUtPnN0eWxlUnVsZSgpKTsKKyAgICAgICAgICAgIHJ1bGUgPSBzdHlsZVJlc29sdmVyLT5l
bnN1cmVGdWxsQ1NTT01XcmFwcGVyRm9ySW5zcGVjdG9yKHJ1bGUtPnN0eWxlUnVsZSgpKTsKICAg
ICAgICAgICAgIGlmICghcnVsZSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
fQpAQCAtMTAzMiw3ICsxMDMyLDcgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Y2xlYXJQc2V1
ZG9TdGF0ZShib29sIHJlY2FsY1N0eWxlcykKICAgICBpZiAocmVjYWxjU3R5bGVzICYmIGVsZW1l
bnQpIHsKICAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gZWxlbWVudC0+b3duZXJEb2N1bWVu
dCgpOwogICAgICAgICBpZiAoZG9jdW1lbnQpCi0gICAgICAgICAgICBkb2N1bWVudC0+c3R5bGVT
ZWxlY3RvckNoYW5nZWQoUmVjYWxjU3R5bGVJbW1lZGlhdGVseSk7CisgICAgICAgICAgICBkb2N1
bWVudC0+c3R5bGVSZXNvbHZlckNoYW5nZWQoUmVjYWxjU3R5bGVJbW1lZGlhdGVseSk7CiAgICAg
fQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFn
ZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQu
Y3BwCmluZGV4IDQ0NmRhMDNiZmRmN2M2ZmJiMTdiMmM3Y2RkNDc0MDBmZmFjMWU3ODkuLjBlNzZk
NmY1MjgxNTU0MDA1N2YyM2E2YWM4MWVjN2E5Zjc5YmIzNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCkBAIC05MTcsNyArOTE3LDcgQEAg
dm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnVwZGF0ZVZpZXdNZXRyaWNzKGludCB3aWR0aCwgaW50
IGhlaWdodCwgZG91YmxlIGZvbnRTY2EKICAgICBtX2NsaWVudC0+b3ZlcnJpZGVEZXZpY2VNZXRy
aWNzKHdpZHRoLCBoZWlnaHQsIHN0YXRpY19jYXN0PGZsb2F0Pihmb250U2NhbGVGYWN0b3IpLCBm
aXRXaW5kb3cpOwogCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gbWFpbkZyYW1lKCktPmRvY3Vt
ZW50KCk7Ci0gICAgZG9jdW1lbnQtPnN0eWxlU2VsZWN0b3JDaGFuZ2VkKFJlY2FsY1N0eWxlSW1t
ZWRpYXRlbHkpOworICAgIGRvY3VtZW50LT5zdHlsZVJlc29sdmVyQ2hhbmdlZChSZWNhbGNTdHls
ZUltbWVkaWF0ZWx5KTsKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Om1lZGlhUXVlcnlS
ZXN1bHRDaGFuZ2VkKGRvY3VtZW50KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9ET01XaW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCmlu
ZGV4IDg1ZGExNjZkNDllNzIxYWM5ZGE2NmJiYjU3NzY1NWZhODE1ZGVkMTMuLjA1Mjg3MWRhYjZi
YzUwMWY3MzQ2MWIzNjgzMDdjZDgwZjYzYWFhMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRE9NV2luZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5j
cHAKQEAgLTEyOTcsNyArMTI5Nyw3IEBAIFBhc3NSZWZQdHI8Q1NTUnVsZUxpc3Q+IERPTVdpbmRv
dzo6Z2V0TWF0Y2hlZENTU1J1bGVzKEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFN0CiAgICAgCiAg
ICAgUHNldWRvSWQgcHNldWRvSWQgPSBDU1NTZWxlY3Rvcjo6cHNldWRvSWQoQ1NTU2VsZWN0b3I6
OnBhcnNlUHNldWRvVHlwZShwc2V1ZG9FbGVtZW50KSk7CiAgCi0gICAgcmV0dXJuIG1fZnJhbWUt
PmRvY3VtZW50KCktPnN0eWxlU2VsZWN0b3IoKS0+cHNldWRvU3R5bGVSdWxlc0ZvckVsZW1lbnQo
ZWxlbWVudCwgcHNldWRvSWQsIHJ1bGVzVG9JbmNsdWRlKTsKKyAgICByZXR1cm4gbV9mcmFtZS0+
ZG9jdW1lbnQoKS0+c3R5bGVSZXNvbHZlcigpLT5wc2V1ZG9TdHlsZVJ1bGVzRm9yRWxlbWVudChl
bGVtZW50LCBwc2V1ZG9JZCwgcnVsZXNUb0luY2x1ZGUpOwogfQogCiBQYXNzUmVmUHRyPFdlYktp
dFBvaW50PiBET01XaW5kb3c6OndlYmtpdENvbnZlcnRQb2ludEZyb21Ob2RlVG9QYWdlKE5vZGUq
IG5vZGUsIGNvbnN0IFdlYktpdFBvaW50KiBwKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAppbmRl
eCA1OTA0YzYyZmNjZThmNTU2NzUyYjM3NWRmNmIyNGEyOGMwMWI5NGY1Li41YjliZmU4MDA4N2Rl
ZDM2NWIyMDViNGVmZjA2NzQ1NzkwM2MwM2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcApAQCAtNTIw
LDcgKzUyMCw3IEBAIHZvaWQgRnJhbWU6OnNldFByaW50aW5nKGJvb2wgcHJpbnRpbmcsIGNvbnN0
IEZsb2F0U2l6ZSYgcGFnZVNpemUsIGNvbnN0IEZsb2F0U2l6CiAgICAgbV9kb2MtPnNldFByaW50
aW5nKHByaW50aW5nKTsKICAgICB2aWV3KCktPmFkanVzdE1lZGlhVHlwZUZvclByaW50aW5nKHBy
aW50aW5nKTsKIAotICAgIG1fZG9jLT5zdHlsZVNlbGVjdG9yQ2hhbmdlZChSZWNhbGNTdHlsZUlt
bWVkaWF0ZWx5KTsKKyAgICBtX2RvYy0+c3R5bGVSZXNvbHZlckNoYW5nZWQoUmVjYWxjU3R5bGVJ
bW1lZGlhdGVseSk7CiAgICAgaWYgKHByaW50aW5nKQogICAgICAgICB2aWV3KCktPmZvcmNlTGF5
b3V0Rm9yUGFnaW5hdGlvbihwYWdlU2l6ZSwgb3JpZ2luYWxQYWdlU2l6ZSwgbWF4aW11bVNocmlu
a1JhdGlvLCBzaG91bGRBZGp1c3RWaWV3U2l6ZSk7CiAgICAgZWxzZSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5jcHAKaW5kZXggYTJiNWIxZTdhMTYzNGU1MjI3YjMwMDZkYTA5NzMzYThhOGU3ZTdj
Yi4uYWY0MGJkMWY1YmJiNWQ5NDRmNjNmZTVjZTcwYTRmNmNkOThmNTkwYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWVWaWV3LmNwcApAQCAtOTg1LDggKzk4NSw4IEBAIHZvaWQgRnJhbWVWaWV3OjpsYXlv
dXQoYm9vbCBhbGxvd1N1YnRyZWUpCiAKICAgICAgICAgLy8gVmlld3BvcnQtZGVwZW5kZW50IG1l
ZGlhIHF1ZXJpZXMgbWF5IGNhdXNlIHVzIHRvIG5lZWQgY29tcGxldGVseSBkaWZmZXJlbnQgc3R5
bGUgaW5mb3JtYXRpb24uCiAgICAgICAgIC8vIENoZWNrIHRoYXQgaGVyZS4KLSAgICAgICAgaWYg
KGRvY3VtZW50LT5zdHlsZVNlbGVjdG9yKCktPmFmZmVjdGVkQnlWaWV3cG9ydENoYW5nZSgpKSB7
Ci0gICAgICAgICAgICBkb2N1bWVudC0+c3R5bGVTZWxlY3RvckNoYW5nZWQoUmVjYWxjU3R5bGVJ
bW1lZGlhdGVseSk7CisgICAgICAgIGlmIChkb2N1bWVudC0+c3R5bGVSZXNvbHZlcigpLT5hZmZl
Y3RlZEJ5Vmlld3BvcnRDaGFuZ2UoKSkgeworICAgICAgICAgICAgZG9jdW1lbnQtPnN0eWxlUmVz
b2x2ZXJDaGFuZ2VkKFJlY2FsY1N0eWxlSW1tZWRpYXRlbHkpOwogICAgICAgICAgICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjptZWRpYVF1ZXJ5UmVzdWx0Q2hhbmdlZChkb2N1bWVudCk7CiAg
ICAgICAgIH0gZWxzZQogICAgICAgICAgICAgZG9jdW1lbnQtPmV2YWx1YXRlTWVkaWFRdWVyeUxp
c3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDAzMTUwNjlhMDYwYmViNDhjNDU0MjJjYTBhMDk1
M2Y4NGM0MTBiOTkuLmFkMTllNTZiZWQ1OTU4NDkyYzVmOTUyODlhYjY1MmEwMDgwZjdlYzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmNwcApAQCAtMjUzLDcgKzI1Myw3IEBAIHZvaWQgUGFnZTo6c2V0Vmlld01v
ZGUoVmlld01vZGUgdmlld01vZGUpCiAgICAgICAgIG1fbWFpbkZyYW1lLT52aWV3KCktPmZvcmNl
TGF5b3V0KCk7CiAKICAgICBpZiAobV9tYWluRnJhbWUtPmRvY3VtZW50KCkpCi0gICAgICAgIG1f
bWFpbkZyYW1lLT5kb2N1bWVudCgpLT5zdHlsZVNlbGVjdG9yQ2hhbmdlZChSZWNhbGNTdHlsZUlt
bWVkaWF0ZWx5KTsKKyAgICAgICAgbV9tYWluRnJhbWUtPmRvY3VtZW50KCktPnN0eWxlUmVzb2x2
ZXJDaGFuZ2VkKFJlY2FsY1N0eWxlSW1tZWRpYXRlbHkpOwogfQogCiB2b2lkIFBhZ2U6OnNldE1h
aW5GcmFtZShQYXNzUmVmUHRyPEZyYW1lPiBtYWluRnJhbWUpCkBAIC0zOTMsNyArMzkzLDcgQEAg
dm9pZCBQYWdlOjpzY2hlZHVsZUZvcmNlZFN0eWxlUmVjYWxjRm9yQWxsUGFnZXMoKQogdm9pZCBQ
YWdlOjpzZXROZWVkc1JlY2FsY1N0eWxlSW5BbGxGcmFtZXMoKQogewogICAgIGZvciAoRnJhbWUq
IGZyYW1lID0gbWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnRyYXZl
cnNlTmV4dCgpKQotICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+c3R5bGVTZWxlY3RvckNoYW5n
ZWQoRGVmZXJSZWNhbGNTdHlsZSk7CisgICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLT5zdHlsZVJl
c29sdmVyQ2hhbmdlZChEZWZlclJlY2FsY1N0eWxlKTsKIH0KIAogdm9pZCBQYWdlOjpyZWZyZXNo
UGx1Z2lucyhib29sIHJlbG9hZCkKQEAgLTgzNCw4ICs4MzQsOCBAQCB2b2lkIFBhZ2U6OmFsbFZp
c2l0ZWRTdGF0ZUNoYW5nZWQoUGFnZUdyb3VwKiBncm91cCkKICAgICAgICAgaWYgKHBhZ2UtPm1f
Z3JvdXAgIT0gZ3JvdXApCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgZm9yIChGcmFt
ZSogZnJhbWUgPSBwYWdlLT5tX21haW5GcmFtZS5nZXQoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUt
PnRyZWUoKS0+dHJhdmVyc2VOZXh0KCkpIHsKLSAgICAgICAgICAgIGlmIChTdHlsZVJlc29sdmVy
KiBzdHlsZVNlbGVjdG9yID0gZnJhbWUtPmRvY3VtZW50KCktPnN0eWxlU2VsZWN0b3IoKSkKLSAg
ICAgICAgICAgICAgICBzdHlsZVNlbGVjdG9yLT5hbGxWaXNpdGVkU3RhdGVDaGFuZ2VkKCk7Cisg
ICAgICAgICAgICBpZiAoU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciA9IGZyYW1lLT5kb2N1
bWVudCgpLT5zdHlsZVJlc29sdmVyKCkpCisgICAgICAgICAgICAgICAgc3R5bGVSZXNvbHZlci0+
YWxsVmlzaXRlZFN0YXRlQ2hhbmdlZCgpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtODUyLDgg
Kzg1Miw4IEBAIHZvaWQgUGFnZTo6dmlzaXRlZFN0YXRlQ2hhbmdlZChQYWdlR3JvdXAqIGdyb3Vw
LCBMaW5rSGFzaCB2aXNpdGVkTGlua0hhc2gpCiAgICAgICAgIGlmIChwYWdlLT5tX2dyb3VwICE9
IGdyb3VwKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGZvciAoRnJhbWUqIGZyYW1l
ID0gcGFnZS0+bV9tYWluRnJhbWUuZ2V0KCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkt
PnRyYXZlcnNlTmV4dCgpKSB7Ci0gICAgICAgICAgICBpZiAoU3R5bGVSZXNvbHZlciogc3R5bGVT
ZWxlY3RvciA9IGZyYW1lLT5kb2N1bWVudCgpLT5zdHlsZVNlbGVjdG9yKCkpCi0gICAgICAgICAg
ICAgICAgc3R5bGVTZWxlY3Rvci0+dmlzaXRlZFN0YXRlQ2hhbmdlZCh2aXNpdGVkTGlua0hhc2gp
OworICAgICAgICAgICAgaWYgKFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIgPSBmcmFtZS0+
ZG9jdW1lbnQoKS0+c3R5bGVSZXNvbHZlcigpKQorICAgICAgICAgICAgICAgIHN0eWxlUmVzb2x2
ZXItPnZpc2l0ZWRTdGF0ZUNoYW5nZWQodmlzaXRlZExpbmtIYXNoKTsKICAgICAgICAgfQogICAg
IH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0tleWZyYW1l
QW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0tleWZyYW1lQW5p
bWF0aW9uLmNwcAppbmRleCAwNmYzMDIzYzBkMGE5NDlmZDkwNzRjZmE0NGFmZjdlYzA5ZDEwMjE4
Li42NzBjZmI0OWU3MzcxZDIxMDczNzlhMDE0YzE1ODI5YjBlNzQ0NTQ2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9LZXlmcmFtZUFuaW1hdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vS2V5ZnJhbWVBbmltYXRpb24uY3BwCkBAIC01
MSw3ICs1MSw3IEBAIEtleWZyYW1lQW5pbWF0aW9uOjpLZXlmcmFtZUFuaW1hdGlvbihjb25zdCBB
bmltYXRpb24qIGFuaW1hdGlvbiwgUmVuZGVyT2JqZWN0KiByCiB7CiAgICAgLy8gR2V0IHRoZSBr
ZXlmcmFtZSBSZW5kZXJTdHlsZXMKICAgICBpZiAobV9vYmplY3QgJiYgbV9vYmplY3QtPm5vZGUo
KSAmJiBtX29iamVjdC0+bm9kZSgpLT5pc0VsZW1lbnROb2RlKCkpCi0gICAgICAgIG1fb2JqZWN0
LT5kb2N1bWVudCgpLT5zdHlsZVNlbGVjdG9yKCktPmtleWZyYW1lU3R5bGVzRm9yQW5pbWF0aW9u
KHN0YXRpY19jYXN0PEVsZW1lbnQqPihtX29iamVjdC0+bm9kZSgpKSwgdW5hbmltYXRlZFN0eWxl
LCBtX2tleWZyYW1lcyk7CisgICAgICAgIG1fb2JqZWN0LT5kb2N1bWVudCgpLT5zdHlsZVJlc29s
dmVyKCktPmtleWZyYW1lU3R5bGVzRm9yQW5pbWF0aW9uKHN0YXRpY19jYXN0PEVsZW1lbnQqPiht
X29iamVjdC0+bm9kZSgpKSwgdW5hbmltYXRlZFN0eWxlLCBtX2tleWZyYW1lcyk7CiAKICAgICAv
LyBVcGRhdGUgdGhlIG1fdHJhbnNmb3JtRnVuY3Rpb25MaXN0VmFsaWQgZmxhZyBiYXNlZCBvbiB3
aGV0aGVyIHRoZSBmdW5jdGlvbiBsaXN0cyBpbiB0aGUga2V5ZnJhbWVzIG1hdGNoLgogICAgIHZh
bGlkYXRlVHJhbnNmb3JtRnVuY3Rpb25MaXN0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZWZsL1JlbmRlclRoZW1lRWZsLmNwcAppbmRleCAyZDRlNWI4NjgwNmQ1YTEyYTA0OTBjZjI2
MjBlZDcyNzQ1ZjA0Nzk2Li41ODUxYTYwNDE1ZDA5YTg2NDY0NDNhNDM1NDcxMGQ5NzFmNzZhM2Y3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9SZW5kZXJUaGVtZUVmbC5jcHAK
QEAgLTg0NCwxMCArODQ0LDEwIEBAIGJvb2wgUmVuZGVyVGhlbWVFZmw6OnBhaW50U2xpZGVyVHJh
Y2soUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IFBhaW50SW5mbyYgaW5mCiAgICAgcmV0dXJu
IHBhaW50VGhlbWVQYXJ0KG9iamVjdCwgU2xpZGVyVmVydGljYWwsIGluZm8sIHJlY3QpOwogfQog
Ci12b2lkIFJlbmRlclRoZW1lRWZsOjphZGp1c3RTbGlkZXJUcmFja1N0eWxlKFN0eWxlUmVzb2x2
ZXIqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0
Cit2b2lkIFJlbmRlclRoZW1lRWZsOjphZGp1c3RTbGlkZXJUcmFja1N0eWxlKFN0eWxlUmVzb2x2
ZXIqIHN0eWxlUmVzb2x2ZXIsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZWxlbWVudCkg
Y29uc3QKIHsKICAgICBpZiAoIW1fcGFnZSAmJiBlbGVtZW50ICYmIGVsZW1lbnQtPmRvY3VtZW50
KCktPnBhZ2UoKSkgewotICAgICAgICBzdGF0aWNfY2FzdDxSZW5kZXJUaGVtZUVmbCo+KGVsZW1l
bnQtPmRvY3VtZW50KCktPnBhZ2UoKS0+dGhlbWUoKSktPmFkanVzdFNsaWRlclRyYWNrU3R5bGUo
c2VsZWN0b3IsIHN0eWxlLCBlbGVtZW50KTsKKyAgICAgICAgc3RhdGljX2Nhc3Q8UmVuZGVyVGhl
bWVFZmwqPihlbGVtZW50LT5kb2N1bWVudCgpLT5wYWdlKCktPnRoZW1lKCkpLT5hZGp1c3RTbGlk
ZXJUcmFja1N0eWxlKHN0eWxlUmVzb2x2ZXIsIHN0eWxlLCBlbGVtZW50KTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApAQCAtODYxLDEwICs4NjEsMTAgQEAgdm9pZCBSZW5kZXJUaGVtZUVmbDo6
YWRqdXN0U2xpZGVyVHJhY2tTdHlsZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvciwgUmVuZGVyU3R5
bGUKICAgICAgICAgc3R5bGUtPnNldEhlaWdodChkZXNjLT5taW4uaGVpZ2h0KCkpOwogfQogCi12
b2lkIFJlbmRlclRoZW1lRWZsOjphZGp1c3RTbGlkZXJUaHVtYlN0eWxlKFN0eWxlUmVzb2x2ZXIq
IHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0Cit2
b2lkIFJlbmRlclRoZW1lRWZsOjphZGp1c3RTbGlkZXJUaHVtYlN0eWxlKFN0eWxlUmVzb2x2ZXIq
IHN0eWxlUmVzb2x2ZXIsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZWxlbWVudCkgY29u
c3QKIHsKLSAgICBSZW5kZXJUaGVtZTo6YWRqdXN0U2xpZGVyVGh1bWJTdHlsZShzZWxlY3Rvciwg
c3R5bGUsIGVsZW1lbnQpOwotICAgIGFkanVzdFNsaWRlclRyYWNrU3R5bGUoc2VsZWN0b3IsIHN0
eWxlLCBlbGVtZW50KTsKKyAgICBSZW5kZXJUaGVtZTo6YWRqdXN0U2xpZGVyVGh1bWJTdHlsZShz
dHlsZVJlc29sdmVyLCBzdHlsZSwgZWxlbWVudCk7CisgICAgYWRqdXN0U2xpZGVyVHJhY2tTdHls
ZShzdHlsZVJlc29sdmVyLCBzdHlsZSwgZWxlbWVudCk7CiB9CiAKIHZvaWQgUmVuZGVyVGhlbWVF
Zmw6OmFkanVzdFNsaWRlclRodW1iU2l6ZShSZW5kZXJTdHlsZSogc3R5bGUpIGNvbnN0CkBAIC04
ODgsMTAgKzg4OCwxMCBAQCBib29sIFJlbmRlclRoZW1lRWZsOjpwYWludFNsaWRlclRodW1iKFJl
bmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBQYWludEluZm8mIGluZgogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAotdm9pZCBSZW5kZXJUaGVtZUVmbDo6YWRqdXN0Q2hlY2tib3hTdHlsZShTdHlsZVJl
c29sdmVyKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlbGVtZW50KSBj
b25zdAordm9pZCBSZW5kZXJUaGVtZUVmbDo6YWRqdXN0Q2hlY2tib3hTdHlsZShTdHlsZVJlc29s
dmVyKiBzdHlsZVJlc29sdmVyLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGVsZW1lbnQp
IGNvbnN0CiB7CiAgICAgaWYgKCFtX3BhZ2UgJiYgZWxlbWVudCAmJiBlbGVtZW50LT5kb2N1bWVu
dCgpLT5wYWdlKCkpIHsKLSAgICAgICAgc3RhdGljX2Nhc3Q8UmVuZGVyVGhlbWVFZmwqPihlbGVt
ZW50LT5kb2N1bWVudCgpLT5wYWdlKCktPnRoZW1lKCkpLT5hZGp1c3RDaGVja2JveFN0eWxlKHNl
bGVjdG9yLCBzdHlsZSwgZWxlbWVudCk7CisgICAgICAgIHN0YXRpY19jYXN0PFJlbmRlclRoZW1l
RWZsKj4oZWxlbWVudC0+ZG9jdW1lbnQoKS0+cGFnZSgpLT50aGVtZSgpKS0+YWRqdXN0Q2hlY2ti
b3hTdHlsZShzdHlsZVJlc29sdmVyLCBzdHlsZSwgZWxlbWVudCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgYWRqdXN0U2l6ZUNvbnN0cmFpbnRzKHN0eWxlLCBDaGVja0JveCk7CkBAIC05
MDksMTAgKzkwOSwxMCBAQCBib29sIFJlbmRlclRoZW1lRWZsOjpwYWludENoZWNrYm94KFJlbmRl
ck9iamVjdCogb2JqZWN0LCBjb25zdCBQYWludEluZm8mIGluZm8sCiAgICAgcmV0dXJuIHBhaW50
VGhlbWVQYXJ0KG9iamVjdCwgQ2hlY2tCb3gsIGluZm8sIHJlY3QpOwogfQogCi12b2lkIFJlbmRl
clRoZW1lRWZsOjphZGp1c3RSYWRpb1N0eWxlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBSZW5k
ZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0Cit2b2lkIFJlbmRlclRoZW1l
RWZsOjphZGp1c3RSYWRpb1N0eWxlKFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIsIFJlbmRl
clN0eWxlKiBzdHlsZSwgRWxlbWVudCogZWxlbWVudCkgY29uc3QKIHsKICAgICBpZiAoIW1fcGFn
ZSAmJiBlbGVtZW50ICYmIGVsZW1lbnQtPmRvY3VtZW50KCktPnBhZ2UoKSkgewotICAgICAgICBz
dGF0aWNfY2FzdDxSZW5kZXJUaGVtZUVmbCo+KGVsZW1lbnQtPmRvY3VtZW50KCktPnBhZ2UoKS0+
dGhlbWUoKSktPmFkanVzdFJhZGlvU3R5bGUoc2VsZWN0b3IsIHN0eWxlLCBlbGVtZW50KTsKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8UmVuZGVyVGhlbWVFZmwqPihlbGVtZW50LT5kb2N1bWVudCgpLT5w
YWdlKCktPnRoZW1lKCkpLT5hZGp1c3RSYWRpb1N0eWxlKHN0eWxlUmVzb2x2ZXIsIHN0eWxlLCBl
bGVtZW50KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBhZGp1c3RTaXplQ29uc3RyYWlu
dHMoc3R5bGUsIFJhZGlvQnV0dG9uKTsKQEAgLTkzMCwxMCArOTMwLDEwIEBAIGJvb2wgUmVuZGVy
VGhlbWVFZmw6OnBhaW50UmFkaW8oUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IFBhaW50SW5m
byYgaW5mbywgY29uCiAgICAgcmV0dXJuIHBhaW50VGhlbWVQYXJ0KG9iamVjdCwgUmFkaW9CdXR0
b24sIGluZm8sIHJlY3QpOwogfQogCi12b2lkIFJlbmRlclRoZW1lRWZsOjphZGp1c3RCdXR0b25T
dHlsZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50
KiBlbGVtZW50KSBjb25zdAordm9pZCBSZW5kZXJUaGVtZUVmbDo6YWRqdXN0QnV0dG9uU3R5bGUo
U3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50
KiBlbGVtZW50KSBjb25zdAogewogICAgIGlmICghbV9wYWdlICYmIGVsZW1lbnQgJiYgZWxlbWVu
dC0+ZG9jdW1lbnQoKS0+cGFnZSgpKSB7Ci0gICAgICAgIHN0YXRpY19jYXN0PFJlbmRlclRoZW1l
RWZsKj4oZWxlbWVudC0+ZG9jdW1lbnQoKS0+cGFnZSgpLT50aGVtZSgpKS0+YWRqdXN0QnV0dG9u
U3R5bGUoc2VsZWN0b3IsIHN0eWxlLCBlbGVtZW50KTsKKyAgICAgICAgc3RhdGljX2Nhc3Q8UmVu
ZGVyVGhlbWVFZmwqPihlbGVtZW50LT5kb2N1bWVudCgpLT5wYWdlKCktPnRoZW1lKCkpLT5hZGp1
c3RCdXR0b25TdHlsZShzdHlsZVJlc29sdmVyLCBzdHlsZSwgZWxlbWVudCk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTk1MywxMCArOTUzLDEwIEBAIGJvb2wgUmVuZGVyVGhlbWVFZmw6
OnBhaW50QnV0dG9uKFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBQYWludEluZm8mIGluZm8s
IGNvCiAgICAgcmV0dXJuIHBhaW50VGhlbWVQYXJ0KG9iamVjdCwgQnV0dG9uLCBpbmZvLCByZWN0
KTsKIH0KIAotdm9pZCBSZW5kZXJUaGVtZUVmbDo6YWRqdXN0TWVudUxpc3RTdHlsZShTdHlsZVJl
c29sdmVyKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlbGVtZW50KSBj
b25zdAordm9pZCBSZW5kZXJUaGVtZUVmbDo6YWRqdXN0TWVudUxpc3RTdHlsZShTdHlsZVJlc29s
dmVyKiBzdHlsZVJlc29sdmVyLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGVsZW1lbnQp
IGNvbnN0CiB7CiAgICAgaWYgKCFtX3BhZ2UgJiYgZWxlbWVudCAmJiBlbGVtZW50LT5kb2N1bWVu
dCgpLT5wYWdlKCkpIHsKLSAgICAgICAgc3RhdGljX2Nhc3Q8UmVuZGVyVGhlbWVFZmwqPihlbGVt
ZW50LT5kb2N1bWVudCgpLT5wYWdlKCktPnRoZW1lKCkpLT5hZGp1c3RNZW51TGlzdFN0eWxlKHNl
bGVjdG9yLCBzdHlsZSwgZWxlbWVudCk7CisgICAgICAgIHN0YXRpY19jYXN0PFJlbmRlclRoZW1l
RWZsKj4oZWxlbWVudC0+ZG9jdW1lbnQoKS0+cGFnZSgpLT50aGVtZSgpKS0+YWRqdXN0TWVudUxp
c3RTdHlsZShzdHlsZVJlc29sdmVyLCBzdHlsZSwgZWxlbWVudCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgYWRqdXN0U2l6ZUNvbnN0cmFpbnRzKHN0eWxlLCBDb21ib0JveCk7CkBAIC05
NzEsOSArOTcxLDkgQEAgYm9vbCBSZW5kZXJUaGVtZUVmbDo6cGFpbnRNZW51TGlzdChSZW5kZXJP
YmplY3QqIG9iamVjdCwgY29uc3QgUGFpbnRJbmZvJiBpbmZvLAogICAgIHJldHVybiBwYWludFRo
ZW1lUGFydChvYmplY3QsIENvbWJvQm94LCBpbmZvLCByZWN0KTsKIH0KIAotdm9pZCBSZW5kZXJU
aGVtZUVmbDo6YWRqdXN0TWVudUxpc3RCdXR0b25TdHlsZShTdHlsZVJlc29sdmVyKiBzZWxlY3Rv
ciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlbGVtZW50KSBjb25zdAordm9pZCBSZW5k
ZXJUaGVtZUVmbDo6YWRqdXN0TWVudUxpc3RCdXR0b25TdHlsZShTdHlsZVJlc29sdmVyKiBzdHls
ZVJlc29sdmVyLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0CiB7
Ci0gICAgYWRqdXN0TWVudUxpc3RTdHlsZShzZWxlY3Rvciwgc3R5bGUsIGVsZW1lbnQpOworICAg
IGFkanVzdE1lbnVMaXN0U3R5bGUoc3R5bGVSZXNvbHZlciwgc3R5bGUsIGVsZW1lbnQpOwogfQog
CiBib29sIFJlbmRlclRoZW1lRWZsOjpwYWludE1lbnVMaXN0QnV0dG9uKFJlbmRlck9iamVjdCog
b2JqZWN0LCBjb25zdCBQYWludEluZm8mIGluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QpCkBAIC05
ODEsMTAgKzk4MSwxMCBAQCBib29sIFJlbmRlclRoZW1lRWZsOjpwYWludE1lbnVMaXN0QnV0dG9u
KFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBQYWludEluZm8mCiAgICAgcmV0dXJuIHBhaW50
TWVudUxpc3Qob2JqZWN0LCBpbmZvLCByZWN0KTsKIH0KIAotdm9pZCBSZW5kZXJUaGVtZUVmbDo6
YWRqdXN0VGV4dEZpZWxkU3R5bGUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIFJlbmRlclN0eWxl
KiBzdHlsZSwgRWxlbWVudCogZWxlbWVudCkgY29uc3QKK3ZvaWQgUmVuZGVyVGhlbWVFZmw6OmFk
anVzdFRleHRGaWVsZFN0eWxlKFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIsIFJlbmRlclN0
eWxlKiBzdHlsZSwgRWxlbWVudCogZWxlbWVudCkgY29uc3QKIHsKICAgICBpZiAoIW1fcGFnZSAm
JiBlbGVtZW50ICYmIGVsZW1lbnQtPmRvY3VtZW50KCktPnBhZ2UoKSkgewotICAgICAgICBzdGF0
aWNfY2FzdDxSZW5kZXJUaGVtZUVmbCo+KGVsZW1lbnQtPmRvY3VtZW50KCktPnBhZ2UoKS0+dGhl
bWUoKSktPmFkanVzdFRleHRGaWVsZFN0eWxlKHNlbGVjdG9yLCBzdHlsZSwgZWxlbWVudCk7Cisg
ICAgICAgIHN0YXRpY19jYXN0PFJlbmRlclRoZW1lRWZsKj4oZWxlbWVudC0+ZG9jdW1lbnQoKS0+
cGFnZSgpLT50aGVtZSgpKS0+YWRqdXN0VGV4dEZpZWxkU3R5bGUoc3R5bGVSZXNvbHZlciwgc3R5
bGUsIGVsZW1lbnQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGFkanVzdFNpemVDb25z
dHJhaW50cyhzdHlsZSwgVGV4dEZpZWxkKTsKQEAgLTk5OSw5ICs5OTksOSBAQCBib29sIFJlbmRl
clRoZW1lRWZsOjpwYWludFRleHRGaWVsZChSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgUGFp
bnRJbmZvJiBpbmZvLAogICAgIHJldHVybiBwYWludFRoZW1lUGFydChvYmplY3QsIFRleHRGaWVs
ZCwgaW5mbywgcmVjdCk7CiB9CiAKLXZvaWQgUmVuZGVyVGhlbWVFZmw6OmFkanVzdFRleHRBcmVh
U3R5bGUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVu
dCogZWxlbWVudCkgY29uc3QKK3ZvaWQgUmVuZGVyVGhlbWVFZmw6OmFkanVzdFRleHRBcmVhU3R5
bGUoU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVt
ZW50KiBlbGVtZW50KSBjb25zdAogewotICAgIGFkanVzdFRleHRGaWVsZFN0eWxlKHNlbGVjdG9y
LCBzdHlsZSwgZWxlbWVudCk7CisgICAgYWRqdXN0VGV4dEZpZWxkU3R5bGUoc3R5bGVSZXNvbHZl
ciwgc3R5bGUsIGVsZW1lbnQpOwogfQogCiBib29sIFJlbmRlclRoZW1lRWZsOjpwYWludFRleHRB
cmVhKFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBQYWludEluZm8mIGluZm8sIGNvbnN0IElu
dFJlY3QmIHJlY3QpCkBAIC0xMDA5LDEwICsxMDA5LDEwIEBAIGJvb2wgUmVuZGVyVGhlbWVFZmw6
OnBhaW50VGV4dEFyZWEoUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IFBhaW50SW5mbyYgaW5m
bywKICAgICByZXR1cm4gcGFpbnRUZXh0RmllbGQob2JqZWN0LCBpbmZvLCByZWN0KTsKIH0KIAot
dm9pZCBSZW5kZXJUaGVtZUVmbDo6YWRqdXN0U2VhcmNoRmllbGREZWNvcmF0aW9uU3R5bGUoU3R5
bGVSZXNvbHZlciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZWxlbWVu
dCkgY29uc3QKK3ZvaWQgUmVuZGVyVGhlbWVFZmw6OmFkanVzdFNlYXJjaEZpZWxkRGVjb3JhdGlv
blN0eWxlKFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIsIFJlbmRlclN0eWxlKiBzdHlsZSwg
RWxlbWVudCogZWxlbWVudCkgY29uc3QKIHsKICAgICBpZiAoIW1fcGFnZSAmJiBlbGVtZW50ICYm
IGVsZW1lbnQtPmRvY3VtZW50KCktPnBhZ2UoKSkgewotICAgICAgICBzdGF0aWNfY2FzdDxSZW5k
ZXJUaGVtZUVmbCo+KGVsZW1lbnQtPmRvY3VtZW50KCktPnBhZ2UoKS0+dGhlbWUoKSktPmFkanVz
dFNlYXJjaEZpZWxkRGVjb3JhdGlvblN0eWxlKHNlbGVjdG9yLCBzdHlsZSwgZWxlbWVudCk7Cisg
ICAgICAgIHN0YXRpY19jYXN0PFJlbmRlclRoZW1lRWZsKj4oZWxlbWVudC0+ZG9jdW1lbnQoKS0+
cGFnZSgpLT50aGVtZSgpKS0+YWRqdXN0U2VhcmNoRmllbGREZWNvcmF0aW9uU3R5bGUoc3R5bGVS
ZXNvbHZlciwgc3R5bGUsIGVsZW1lbnQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGFk
anVzdFNpemVDb25zdHJhaW50cyhzdHlsZSwgU2VhcmNoRmllbGREZWNvcmF0aW9uKTsKQEAgLTEw
MjUsMTAgKzEwMjUsMTAgQEAgYm9vbCBSZW5kZXJUaGVtZUVmbDo6cGFpbnRTZWFyY2hGaWVsZERl
Y29yYXRpb24oUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IFBhaW4KICAgICByZXR1cm4gcGFp
bnRUaGVtZVBhcnQob2JqZWN0LCBTZWFyY2hGaWVsZERlY29yYXRpb24sIGluZm8sIHJlY3QpOwog
fQogCi12b2lkIFJlbmRlclRoZW1lRWZsOjphZGp1c3RTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25T
dHlsZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50
KiBlbGVtZW50KSBjb25zdAordm9pZCBSZW5kZXJUaGVtZUVmbDo6YWRqdXN0U2VhcmNoRmllbGRS
ZXN1bHRzQnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciwgUmVuZGVyU3R5
bGUqIHN0eWxlLCBFbGVtZW50KiBlbGVtZW50KSBjb25zdAogewogICAgIGlmICghbV9wYWdlICYm
IGVsZW1lbnQgJiYgZWxlbWVudC0+ZG9jdW1lbnQoKS0+cGFnZSgpKSB7Ci0gICAgICAgIHN0YXRp
Y19jYXN0PFJlbmRlclRoZW1lRWZsKj4oZWxlbWVudC0+ZG9jdW1lbnQoKS0+cGFnZSgpLT50aGVt
ZSgpKS0+YWRqdXN0U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uU3R5bGUoc2VsZWN0b3IsIHN0eWxl
LCBlbGVtZW50KTsKKyAgICAgICAgc3RhdGljX2Nhc3Q8UmVuZGVyVGhlbWVFZmwqPihlbGVtZW50
LT5kb2N1bWVudCgpLT5wYWdlKCktPnRoZW1lKCkpLT5hZGp1c3RTZWFyY2hGaWVsZFJlc3VsdHNC
dXR0b25TdHlsZShzdHlsZVJlc29sdmVyLCBzdHlsZSwgZWxlbWVudCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAgICAgYWRqdXN0U2l6ZUNvbnN0cmFpbnRzKHN0eWxlLCBTZWFyY2hGaWVsZFJl
c3VsdHNCdXR0b24pOwpAQCAtMTA0MSwxMCArMTA0MSwxMCBAQCBib29sIFJlbmRlclRoZW1lRWZs
OjpwYWludFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbihSZW5kZXJPYmplY3QqIG9iamVjdCwgY29u
c3QgUAogICAgIHJldHVybiBwYWludFRoZW1lUGFydChvYmplY3QsIFNlYXJjaEZpZWxkUmVzdWx0
c0J1dHRvbiwgaW5mbywgcmVjdCk7CiB9CiAKLXZvaWQgUmVuZGVyVGhlbWVFZmw6OmFkanVzdFNl
YXJjaEZpZWxkUmVzdWx0c0RlY29yYXRpb25TdHlsZShTdHlsZVJlc29sdmVyKiBzZWxlY3Rvciwg
UmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlbGVtZW50KSBjb25zdAordm9pZCBSZW5kZXJU
aGVtZUVmbDo6YWRqdXN0U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvblN0eWxlKFN0eWxlUmVz
b2x2ZXIqIHN0eWxlUmVzb2x2ZXIsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZWxlbWVu
dCkgY29uc3QKIHsKICAgICBpZiAoIW1fcGFnZSAmJiBlbGVtZW50ICYmIGVsZW1lbnQtPmRvY3Vt
ZW50KCktPnBhZ2UoKSkgewotICAgICAgICBzdGF0aWNfY2FzdDxSZW5kZXJUaGVtZUVmbCo+KGVs
ZW1lbnQtPmRvY3VtZW50KCktPnBhZ2UoKS0+dGhlbWUoKSktPmFkanVzdFNlYXJjaEZpZWxkUmVz
dWx0c0RlY29yYXRpb25TdHlsZShzZWxlY3Rvciwgc3R5bGUsIGVsZW1lbnQpOworICAgICAgICBz
dGF0aWNfY2FzdDxSZW5kZXJUaGVtZUVmbCo+KGVsZW1lbnQtPmRvY3VtZW50KCktPnBhZ2UoKS0+
dGhlbWUoKSktPmFkanVzdFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRpb25TdHlsZShzdHlsZVJl
c29sdmVyLCBzdHlsZSwgZWxlbWVudCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgYWRq
dXN0U2l6ZUNvbnN0cmFpbnRzKHN0eWxlLCBTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uKTsK
QEAgLTEwNTcsMTAgKzEwNTcsMTAgQEAgYm9vbCBSZW5kZXJUaGVtZUVmbDo6cGFpbnRTZWFyY2hG
aWVsZFJlc3VsdHNEZWNvcmF0aW9uKFJlbmRlck9iamVjdCogb2JqZWN0LCBjb24KICAgICByZXR1
cm4gcGFpbnRUaGVtZVBhcnQob2JqZWN0LCBTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uLCBp
bmZvLCByZWN0KTsKIH0KIAotdm9pZCBSZW5kZXJUaGVtZUVmbDo6YWRqdXN0U2VhcmNoRmllbGRD
YW5jZWxCdXR0b25TdHlsZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0
eWxlLCBFbGVtZW50KiBlbGVtZW50KSBjb25zdAordm9pZCBSZW5kZXJUaGVtZUVmbDo6YWRqdXN0
U2VhcmNoRmllbGRDYW5jZWxCdXR0b25TdHlsZShTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVy
LCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0CiB7CiAgICAgaWYg
KCFtX3BhZ2UgJiYgZWxlbWVudCAmJiBlbGVtZW50LT5kb2N1bWVudCgpLT5wYWdlKCkpIHsKLSAg
ICAgICAgc3RhdGljX2Nhc3Q8UmVuZGVyVGhlbWVFZmwqPihlbGVtZW50LT5kb2N1bWVudCgpLT5w
YWdlKCktPnRoZW1lKCkpLT5hZGp1c3RTZWFyY2hGaWVsZENhbmNlbEJ1dHRvblN0eWxlKHNlbGVj
dG9yLCBzdHlsZSwgZWxlbWVudCk7CisgICAgICAgIHN0YXRpY19jYXN0PFJlbmRlclRoZW1lRWZs
Kj4oZWxlbWVudC0+ZG9jdW1lbnQoKS0+cGFnZSgpLT50aGVtZSgpKS0+YWRqdXN0U2VhcmNoRmll
bGRDYW5jZWxCdXR0b25TdHlsZShzdHlsZVJlc29sdmVyLCBzdHlsZSwgZWxlbWVudCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAgICAgYWRqdXN0U2l6ZUNvbnN0cmFpbnRzKHN0eWxlLCBTZWFy
Y2hGaWVsZENhbmNlbEJ1dHRvbik7CkBAIC0xMDczLDEwICsxMDczLDEwIEBAIGJvb2wgUmVuZGVy
VGhlbWVFZmw6OnBhaW50U2VhcmNoRmllbGRDYW5jZWxCdXR0b24oUmVuZGVyT2JqZWN0KiBvYmpl
Y3QsIGNvbnN0IFBhCiAgICAgcmV0dXJuIHBhaW50VGhlbWVQYXJ0KG9iamVjdCwgU2VhcmNoRmll
bGRDYW5jZWxCdXR0b24sIGluZm8sIHJlY3QpOwogfQogCi12b2lkIFJlbmRlclRoZW1lRWZsOjph
ZGp1c3RTZWFyY2hGaWVsZFN0eWxlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBSZW5kZXJTdHls
ZSogc3R5bGUsIEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0Cit2b2lkIFJlbmRlclRoZW1lRWZsOjph
ZGp1c3RTZWFyY2hGaWVsZFN0eWxlKFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIsIFJlbmRl
clN0eWxlKiBzdHlsZSwgRWxlbWVudCogZWxlbWVudCkgY29uc3QKIHsKICAgICBpZiAoIW1fcGFn
ZSAmJiBlbGVtZW50ICYmIGVsZW1lbnQtPmRvY3VtZW50KCktPnBhZ2UoKSkgewotICAgICAgICBz
dGF0aWNfY2FzdDxSZW5kZXJUaGVtZUVmbCo+KGVsZW1lbnQtPmRvY3VtZW50KCktPnBhZ2UoKS0+
dGhlbWUoKSktPmFkanVzdFNlYXJjaEZpZWxkU3R5bGUoc2VsZWN0b3IsIHN0eWxlLCBlbGVtZW50
KTsKKyAgICAgICAgc3RhdGljX2Nhc3Q8UmVuZGVyVGhlbWVFZmwqPihlbGVtZW50LT5kb2N1bWVu
dCgpLT5wYWdlKCktPnRoZW1lKCkpLT5hZGp1c3RTZWFyY2hGaWVsZFN0eWxlKHN0eWxlUmVzb2x2
ZXIsIHN0eWxlLCBlbGVtZW50KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBhZGp1c3RT
aXplQ29uc3RyYWludHMoc3R5bGUsIFNlYXJjaEZpZWxkKTsKQEAgLTExMTIsNyArMTExMiw3IEBA
IHZvaWQgUmVuZGVyVGhlbWVFZmw6OnN5c3RlbUZvbnQoaW50IHByb3BJZCwgRm9udERlc2NyaXB0
aW9uJiBmb250RGVzY3JpcHRpb24pIGNvCiB9CiAKICNpZiBFTkFCTEUoUFJPR1JFU1NfVEFHKQot
dm9pZCBSZW5kZXJUaGVtZUVmbDo6YWRqdXN0UHJvZ3Jlc3NCYXJTdHlsZShTdHlsZVJlc29sdmVy
KiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlbGVtZW50KSBjb25zdAor
dm9pZCBSZW5kZXJUaGVtZUVmbDo6YWRqdXN0UHJvZ3Jlc3NCYXJTdHlsZShTdHlsZVJlc29sdmVy
KiwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KikgY29uc3QKIHsKICAgICBzdHlsZS0+c2V0
Qm94U2hhZG93KG51bGxwdHIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL1JlbmRlclRoZW1lR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9S
ZW5kZXJUaGVtZUd0ay5jcHAKaW5kZXggMTE4ZDY2NDAxZTBiNWY3ZWUyMDUxNTdlMmQwMmFkMzE3
OWFjNzZmYS4uZTcxZDk5YWYzZjcwNTNkOTBiMzNiOTkzZjJhMzBjY2Y1ZTgyMDg1YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuY3BwCkBAIC0yMDQs
MTQgKzIwNCwxNCBAQCBzdGF0aWMgR3RrU3RhdGVUeXBlIGd0a0ljb25TdGF0ZShSZW5kZXJUaGVt
ZSogdGhlbWUsIFJlbmRlck9iamVjdCogcmVuZGVyT2JqZWN0KQogICAgIHJldHVybiBHVEtfU1RB
VEVfTk9STUFMOwogfQogCi12b2lkIFJlbmRlclRoZW1lR3RrOjphZGp1c3RCdXR0b25TdHlsZShT
dHlsZVJlc29sdmVyKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBXZWJDb3JlOjpFbGVt
ZW50KiBlKSBjb25zdAordm9pZCBSZW5kZXJUaGVtZUd0azo6YWRqdXN0QnV0dG9uU3R5bGUoU3R5
bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiBzdHlsZSwgV2ViQ29yZTo6RWxlbWVudCopIGNvbnN0
CiB7CiAgICAgLy8gU29tZSBsYXlvdXQgdGVzdHMgY2hlY2sgZXhwbGljaXRseSB0aGF0IGJ1dHRv
bnMgaWdub3JlIGxpbmUtaGVpZ2h0LgogICAgIGlmIChzdHlsZS0+YXBwZWFyYW5jZSgpID09IFB1
c2hCdXR0b25QYXJ0KQogICAgICAgICBzdHlsZS0+c2V0TGluZUhlaWdodChSZW5kZXJTdHlsZTo6
aW5pdGlhbExpbmVIZWlnaHQoKSk7CiB9CiAKLXZvaWQgUmVuZGVyVGhlbWVHdGs6OmFkanVzdE1l
bnVMaXN0U3R5bGUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwg
RWxlbWVudCogZSkgY29uc3QKK3ZvaWQgUmVuZGVyVGhlbWVHdGs6OmFkanVzdE1lbnVMaXN0U3R5
bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCopIGNvbnN0CiB7
CiAgICAgLy8gVGhlIHRlc3RzIGNoZWNrIGV4cGxpY2l0bHkgdGhhdCBzZWxlY3QgbWVudSBidXR0
b25zIGlnbm9yZSBsaW5lIGhlaWdodC4KICAgICBzdHlsZS0+c2V0TGluZUhlaWdodChSZW5kZXJT
dHlsZTo6aW5pdGlhbExpbmVIZWlnaHQoKSk7CkBAIC0yMjAsOSArMjIwLDkgQEAgdm9pZCBSZW5k
ZXJUaGVtZUd0azo6YWRqdXN0TWVudUxpc3RTdHlsZShTdHlsZVJlc29sdmVyKiBzZWxlY3Rvciwg
UmVuZGVyU3R5bGUqIHMKICAgICBzdHlsZS0+cmVzZXRCb3JkZXJSYWRpdXMoKTsKIH0KIAotdm9p
ZCBSZW5kZXJUaGVtZUd0azo6YWRqdXN0TWVudUxpc3RCdXR0b25TdHlsZShTdHlsZVJlc29sdmVy
KiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlKSBjb25zdAordm9pZCBS
ZW5kZXJUaGVtZUd0azo6YWRqdXN0TWVudUxpc3RCdXR0b25TdHlsZShTdHlsZVJlc29sdmVyKiBz
dHlsZVJlc29sdmVyLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGUpIGNvbnN0CiB7Ci0g
ICAgYWRqdXN0TWVudUxpc3RTdHlsZShzZWxlY3Rvciwgc3R5bGUsIGUpOworICAgIGFkanVzdE1l
bnVMaXN0U3R5bGUoc3R5bGVSZXNvbHZlciwgc3R5bGUsIGUpOwogfQogCiBib29sIFJlbmRlclRo
ZW1lR3RrOjpwYWludE1lbnVMaXN0QnV0dG9uKFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBQ
YWludEluZm8mIGluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QpCkBAIC0yNzYsOSArMjc2LDkgQEAg
c3RhdGljIEd0a0ljb25TaXplIGdldEljb25TaXplRm9yUGl4ZWxTaXplKGdpbnQgcGl4ZWxTaXpl
KQogICAgIHJldHVybiBHVEtfSUNPTl9TSVpFX0RJQUxPRzsKIH0KIAotdm9pZCBSZW5kZXJUaGVt
ZUd0azo6YWRqdXN0U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZlciog
c2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZSkgY29uc3QKK3ZvaWQgUmVu
ZGVyVGhlbWVHdGs6OmFkanVzdFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvblN0eWxlKFN0eWxlUmVz
b2x2ZXIqIHN0eWxlUmVzb2x2ZXIsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZSkgY29u
c3QKIHsKLSAgICBhZGp1c3RTZWFyY2hGaWVsZENhbmNlbEJ1dHRvblN0eWxlKHNlbGVjdG9yLCBz
dHlsZSwgZSk7CisgICAgYWRqdXN0U2VhcmNoRmllbGRDYW5jZWxCdXR0b25TdHlsZShzdHlsZVJl
c29sdmVyLCBzdHlsZSwgZSk7CiB9CiAKIGJvb2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50U2VhcmNo
RmllbGRSZXN1bHRzQnV0dG9uKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBpLCBj
b25zdCBJbnRSZWN0JiByZWN0KQpAQCAtMzA0LDcgKzMwNCw3IEBAIHN0YXRpYyB2b2lkIGFkanVz
dFNlYXJjaEZpZWxkSWNvblN0eWxlKFJlbmRlclN0eWxlKiBzdHlsZSkKICAgICBzdHlsZS0+c2V0
SGVpZ2h0KExlbmd0aChoZWlnaHQsIEZpeGVkKSk7CiB9CiAKLXZvaWQgUmVuZGVyVGhlbWVHdGs6
OmFkanVzdFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRpb25TdHlsZShTdHlsZVJlc29sdmVyKiBz
ZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlKSBjb25zdAordm9pZCBSZW5k
ZXJUaGVtZUd0azo6YWRqdXN0U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvblN0eWxlKFN0eWxl
UmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqKSBjb25zdAogewogICAgIGFk
anVzdFNlYXJjaEZpZWxkSWNvblN0eWxlKHN0eWxlKTsKIH0KQEAgLTM0MSw3ICszNDEsNyBAQCBi
b29sIFJlbmRlclRoZW1lR3RrOjpwYWludFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRpb24oUmVu
ZGVyT2JqZWN0KiByZW5kZXJPYmplYwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBSZW5k
ZXJUaGVtZUd0azo6YWRqdXN0U2VhcmNoRmllbGRDYW5jZWxCdXR0b25TdHlsZShTdHlsZVJlc29s
dmVyKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlKSBjb25zdAordm9p
ZCBSZW5kZXJUaGVtZUd0azo6YWRqdXN0U2VhcmNoRmllbGRDYW5jZWxCdXR0b25TdHlsZShTdHls
ZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KikgY29uc3QKIHsKICAgICBh
ZGp1c3RTZWFyY2hGaWVsZEljb25TdHlsZShzdHlsZSk7CiB9CkBAIC0zNjAsNyArMzYwLDcgQEAg
Ym9vbCBSZW5kZXJUaGVtZUd0azo6cGFpbnRTZWFyY2hGaWVsZENhbmNlbEJ1dHRvbihSZW5kZXJP
YmplY3QqIHJlbmRlck9iamVjdCwgY28KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgUmVu
ZGVyVGhlbWVHdGs6OmFkanVzdFNlYXJjaEZpZWxkU3R5bGUoU3R5bGVSZXNvbHZlciogc2VsZWN0
b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZSkgY29uc3QKK3ZvaWQgUmVuZGVyVGhl
bWVHdGs6OmFkanVzdFNlYXJjaEZpZWxkU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxl
KiBzdHlsZSwgRWxlbWVudCopIGNvbnN0CiB7CiAgICAgLy8gV2UgY2Fubm90IGdpdmUgYSBwcm9w
ZXIgcmVuZGVyaW5nIHdoZW4gYm9yZGVyIHJhZGl1cyBpcyBhY3RpdmUsIHVuZm9ydHVuYXRlbHku
CiAgICAgc3R5bGUtPnJlc2V0Qm9yZGVyUmFkaXVzKCk7CkBAIC00MDIsOSArNDAyLDkgQEAgdm9p
ZCBSZW5kZXJUaGVtZUd0azo6YWRqdXN0U2xpZGVyVHJhY2tTdHlsZShTdHlsZVJlc29sdmVyKiwg
UmVuZGVyU3R5bGUqIHN0eWxlLAogICAgIHN0eWxlLT5zZXRCb3hTaGFkb3cobnVsbHB0cik7CiB9
CiAKLXZvaWQgUmVuZGVyVGhlbWVHdGs6OmFkanVzdFNsaWRlclRodW1iU3R5bGUoU3R5bGVSZXNv
bHZlciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZWxlbWVudCkgY29u
c3QKK3ZvaWQgUmVuZGVyVGhlbWVHdGs6OmFkanVzdFNsaWRlclRodW1iU3R5bGUoU3R5bGVSZXNv
bHZlciogc3R5bGVSZXNvbHZlciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlbGVtZW50
KSBjb25zdAogewotICAgIFJlbmRlclRoZW1lOjphZGp1c3RTbGlkZXJUaHVtYlN0eWxlKHNlbGVj
dG9yLCBzdHlsZSwgZWxlbWVudCk7CisgICAgUmVuZGVyVGhlbWU6OmFkanVzdFNsaWRlclRodW1i
U3R5bGUoc3R5bGVSZXNvbHZlciwgc3R5bGUsIGVsZW1lbnQpOwogICAgIHN0eWxlLT5zZXRCb3hT
aGFkb3cobnVsbHB0cik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3F0L1JlbmRlclRoZW1lUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvUmVuZGVy
VGhlbWVRdC5jcHAKaW5kZXggMjY4OGY5ZGZhZmNjM2Y2OWU4ZDk5YjhhYmUyN2IzODYyNmEyNWRi
Yi4uMTFiZjNlNzg4MjZkNDdhMTEwOTY0YmI3Y2NlOWU4NTUzYjI5ZGJjMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvUmVuZGVyVGhlbWVRdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vcXQvUmVuZGVyVGhlbWVRdC5jcHAKQEAgLTM5NCw5ICszOTQsOSBA
QCB2b2lkIFJlbmRlclRoZW1lUXQ6OmFkanVzdFNsaWRlclRyYWNrU3R5bGUoU3R5bGVSZXNvbHZl
ciosIFJlbmRlclN0eWxlKiBzdHlsZSwgRQogICAgIHN0eWxlLT5zZXRCb3hTaGFkb3cobnVsbHB0
cik7CiB9CiAKLXZvaWQgUmVuZGVyVGhlbWVRdDo6YWRqdXN0U2xpZGVyVGh1bWJTdHlsZShTdHls
ZVJlc29sdmVyKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlbGVtZW50
KSBjb25zdAordm9pZCBSZW5kZXJUaGVtZVF0OjphZGp1c3RTbGlkZXJUaHVtYlN0eWxlKFN0eWxl
UmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZWxl
bWVudCkgY29uc3QKIHsKLSAgICBSZW5kZXJUaGVtZTo6YWRqdXN0U2xpZGVyVGh1bWJTdHlsZShz
ZWxlY3Rvciwgc3R5bGUsIGVsZW1lbnQpOworICAgIFJlbmRlclRoZW1lOjphZGp1c3RTbGlkZXJU
aHVtYlN0eWxlKHN0eWxlUmVzb2x2ZXIsIHN0eWxlLCBlbGVtZW50KTsKICAgICBzdHlsZS0+c2V0
Qm94U2hhZG93KG51bGxwdHIpOwogfQogCkBAIC00MDYsOCArNDA2LDcgQEAgYm9vbCBSZW5kZXJU
aGVtZVF0OjpwYWludFNlYXJjaEZpZWxkKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZv
JiBwaSwKICAgICByZXR1cm4gcGFpbnRUZXh0RmllbGQobywgcGksIHIpOwogfQogCi12b2lkIFJl
bmRlclRoZW1lUXQ6OmFkanVzdFNlYXJjaEZpZWxkU3R5bGUoU3R5bGVSZXNvbHZlciogc2VsZWN0
b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBFbGVtZW50KiBlKSBjb25zdAordm9pZCBSZW5kZXJUaGVtZVF0OjphZGp1c3RT
ZWFyY2hGaWVsZFN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1l
bnQqKSBjb25zdAogewogICAgIC8vIFJlc2V0dGluZyB0aGUgc3R5bGUgbGlrZSB0aGlzIGxlYWRz
IHRvIGRpZmZlcmVuY2VzIGxpa2U6CiAgICAgLy8gLSBSZW5kZXJUZXh0Q29udHJvbCB7SU5QVVR9
IGF0ICgyLDIpIHNpemUgMTY4eDI1IFtiZ2NvbG9yPSNGRkZGRkZdIGJvcmRlcjogKDJweCBpbnNl
dCAjMDAwMDAwKV0KQEAgLTQyMCw4ICs0MTksNyBAQCB2b2lkIFJlbmRlclRoZW1lUXQ6OmFkanVz
dFNlYXJjaEZpZWxkU3R5bGUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKgog
ICAgIGNvbXB1dGVTaXplQmFzZWRPblN0eWxlKHN0eWxlKTsKIH0KIAotdm9pZCBSZW5kZXJUaGVt
ZVF0OjphZGp1c3RTZWFyY2hGaWVsZENhbmNlbEJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXIqIHNl
bGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRWxlbWVudCogZSkgY29uc3QKK3ZvaWQgUmVuZGVy
VGhlbWVRdDo6YWRqdXN0U2VhcmNoRmllbGRDYW5jZWxCdXR0b25TdHlsZShTdHlsZVJlc29sdmVy
KiwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KikgY29uc3QKIHsKICAgICAvLyBMb2dpYyB0
YWtlbiBmcm9tIFJlbmRlclRoZW1lQ2hyb21pdW0uY3BwLgogICAgIC8vIFNjYWxlIHRoZSBidXR0
b24gc2l6ZSBiYXNlZCBvbiB0aGUgZm9udCBzaXplLgpAQCAtNDcyLDExICs0NzAsMTAgQEAgYm9v
bCBSZW5kZXJUaGVtZVF0OjpwYWludFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uKFJlbmRlck9iamVj
dCogbywgY29uc3QgUGFpbnRJbmYKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgUmVuZGVy
VGhlbWVRdDo6YWRqdXN0U2VhcmNoRmllbGREZWNvcmF0aW9uU3R5bGUoU3R5bGVSZXNvbHZlciog
c2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRWxlbWVudCogZSkgY29uc3QKK3ZvaWQgUmVuZGVy
VGhlbWVRdDo6YWRqdXN0U2VhcmNoRmllbGREZWNvcmF0aW9uU3R5bGUoU3R5bGVSZXNvbHZlciog
c3R5bGVSZXNvbHZlciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlKSBjb25zdAogewog
ICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgUmVuZGVyVGhlbWU6OmFkanVzdFNlYXJjaEZpZWxk
RGVjb3JhdGlvblN0eWxlKHNlbGVjdG9yLCBzdHlsZSwgZSk7CisgICAgUmVuZGVyVGhlbWU6OmFk
anVzdFNlYXJjaEZpZWxkRGVjb3JhdGlvblN0eWxlKHN0eWxlUmVzb2x2ZXIsIHN0eWxlLCBlKTsK
IH0KIAogYm9vbCBSZW5kZXJUaGVtZVF0OjpwYWludFNlYXJjaEZpZWxkRGVjb3JhdGlvbihSZW5k
ZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgcGksCkBAIC00ODYsMTEgKzQ4MywxMCBAQCBi
b29sIFJlbmRlclRoZW1lUXQ6OnBhaW50U2VhcmNoRmllbGREZWNvcmF0aW9uKFJlbmRlck9iamVj
dCogbywgY29uc3QgUGFpbnRJbmZvJgogICAgIHJldHVybiBSZW5kZXJUaGVtZTo6cGFpbnRTZWFy
Y2hGaWVsZERlY29yYXRpb24obywgcGksIHIpOwogfQogCi12b2lkIFJlbmRlclRoZW1lUXQ6OmFk
anVzdFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRpb25TdHlsZShTdHlsZVJlc29sdmVyKiBzZWxl
Y3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRWxlbWVudCogZSkgY29uc3QKK3ZvaWQgUmVu
ZGVyVGhlbWVRdDo6YWRqdXN0U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvblN0eWxlKFN0eWxl
UmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZSkg
Y29uc3QKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIFJlbmRlclRoZW1lOjphZGp1c3RT
ZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uU3R5bGUoc2VsZWN0b3IsIHN0eWxlLCBlKTsKKyAg
ICBSZW5kZXJUaGVtZTo6YWRqdXN0U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvblN0eWxlKHN0
eWxlUmVzb2x2ZXIsIHN0eWxlLCBlKTsKIH0KIAogYm9vbCBSZW5kZXJUaGVtZVF0OjpwYWludFNl
YXJjaEZpZWxkUmVzdWx0c0RlY29yYXRpb24oUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludElu
Zm8mIHBpLApAQCAtNTAxLDggKzQ5Nyw3IEBAIGJvb2wgUmVuZGVyVGhlbWVRdDo6cGFpbnRTZWFy
Y2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpCiB9CiAK
ICNpZm5kZWYgUVRfTk9fU1BJTkJPWAotdm9pZCBSZW5kZXJUaGVtZVF0OjphZGp1c3RJbm5lclNw
aW5CdXR0b25TdHlsZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbGVtZW50
KiBlKSBjb25zdAordm9pZCBSZW5kZXJUaGVtZVF0OjphZGp1c3RJbm5lclNwaW5CdXR0b25TdHls
ZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KikgY29uc3QKIHsK
ICAgICAvLyBVc2UgdGhlIHNhbWUgd2lkdGggYXMgb3VyIG5hdGl2ZSBzY3JvbGxiYXIKICAgICBp
bnQgd2lkdGggPSBTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKS0+c2Nyb2xsYmFyVGhpY2tuZXNzKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9SZW5kZXJUaGVtZVF0TW9i
aWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1JlbmRlclRoZW1lUXRNb2JpbGUu
Y3BwCmluZGV4IGJhMjM3YzJkNmM1YmUzMTk2YjMxNzY3MjYxMGJhODYxMDg5MzM2MjAuLjNkOGI1
NjVkNzVmNDk2NjhiNzdmNmU0OTBjY2RkYjgzZjhiMGM3YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3F0L1JlbmRlclRoZW1lUXRNb2JpbGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3F0L1JlbmRlclRoZW1lUXRNb2JpbGUuY3BwCkBAIC02MzAsNyArNjMw
LDcgQEAgdm9pZCBSZW5kZXJUaGVtZVF0TW9iaWxlOjpjb21wdXRlU2l6ZUJhc2VkT25TdHlsZShS
ZW5kZXJTdHlsZSogcmVuZGVyU3R5bGUpIGNvbnMKICAgICAgICAgcmVuZGVyU3R5bGUtPnNldE1p
bkhlaWdodChMZW5ndGgoc2l6ZS5oZWlnaHQoKSwgRml4ZWQpKTsKIH0KIAotdm9pZCBSZW5kZXJU
aGVtZVF0TW9iaWxlOjphZGp1c3RCdXR0b25TdHlsZShTdHlsZVJlc29sdmVyKiBzZWxlY3Rvciwg
UmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KikgY29uc3QKK3ZvaWQgUmVuZGVyVGhlbWVRdE1v
YmlsZTo6YWRqdXN0QnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiBzdHls
ZSwgRWxlbWVudCopIGNvbnN0CiB7CiAgICAgLy8gRGl0Y2ggdGhlIGJvcmRlci4KICAgICBzdHls
ZS0+cmVzZXRCb3JkZXIoKTsKQEAgLTcyMSw5ICs3MjEsOSBAQCBib29sIFJlbmRlclRoZW1lUXRN
b2JpbGU6OnBhaW50VGV4dEZpZWxkKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBp
LCBjbwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBSZW5kZXJUaGVtZVF0TW9iaWxlOjph
ZGp1c3RNZW51TGlzdFN0eWxlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSog
c3R5bGUsIEVsZW1lbnQqIGUpIGNvbnN0Cit2b2lkIFJlbmRlclRoZW1lUXRNb2JpbGU6OmFkanVz
dE1lbnVMaXN0U3R5bGUoU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciwgUmVuZGVyU3R5bGUq
IHN0eWxlLCBFbGVtZW50KiBlKSBjb25zdAogewotICAgIFJlbmRlclRoZW1lUXQ6OmFkanVzdE1l
bnVMaXN0U3R5bGUoc2VsZWN0b3IsIHN0eWxlLCBlKTsKKyAgICBSZW5kZXJUaGVtZVF0OjphZGp1
c3RNZW51TGlzdFN0eWxlKHN0eWxlUmVzb2x2ZXIsIHN0eWxlLCBlKTsKICAgICBzdHlsZS0+c2V0
UGFkZGluZ0xlZnQoTGVuZ3RoKG1lbnVMaXN0UGFkZGluZywgRml4ZWQpKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3gvUmVuZGVyVGhlbWVXeC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93eC9SZW5kZXJUaGVtZVd4LmNwcAppbmRleCA4YWM4YTlhNjFh
NzMyMjc1NTBkNTRlNTI5NTBjNGRhYzVkNjJkOTcxLi4yNjkxZTdmNDMwMWE0OWY4YmM0OWU2ZDlk
M2UzM2MyODQ3MTU4NzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93eC9S
ZW5kZXJUaGVtZVd4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93eC9SZW5kZXJU
aGVtZVd4LmNwcApAQCAtMjU3LDcgKzI1Nyw3IEBAIGJvb2wgUmVuZGVyVGhlbWVXeDo6c3VwcG9y
dHNGb2N1cyhDb250cm9sUGFydCBwYXJ0KSBjb25zdAogICAgIH0KIH0KIAotdm9pZCBSZW5kZXJU
aGVtZVd4OjphZGp1c3RCdXR0b25TdHlsZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvciwgUmVuZGVy
U3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlKSBjb25zdAordm9pZCBSZW5kZXJUaGVtZVd4OjphZGp1
c3RCdXR0b25TdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50
KikgY29uc3QKIHsKICAgICBhZGRJbnRyaW5zaWNNYXJnaW5zKHN0eWxlKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAppbmRleCAyZDkzNGQxYTc2MDZkMTUy
NmE5ZjgzNzVhMzFlODk2MTc4YmVkMTNhLi4zNjMzNmZiYTMzZDgwNTI2YzEzZWE5NWM5NzMxMDY1
YTQ2ODRkNWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlz
dEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3Bw
CkBAIC0xMjUsNyArMTI1LDcgQEAgdm9pZCBSZW5kZXJMaXN0Qm94Ojp1cGRhdGVGcm9tRWxlbWVu
dCgpCiAgICAgICAgICAgICAgICAgRm9udERlc2NyaXB0aW9uIGQgPSBpdGVtRm9udC5mb250RGVz
Y3JpcHRpb24oKTsKICAgICAgICAgICAgICAgICBkLnNldFdlaWdodChkLmJvbGRlcldlaWdodCgp
KTsKICAgICAgICAgICAgICAgICBpdGVtRm9udCA9IEZvbnQoZCwgaXRlbUZvbnQubGV0dGVyU3Bh
Y2luZygpLCBpdGVtRm9udC53b3JkU3BhY2luZygpKTsKLSAgICAgICAgICAgICAgICBpdGVtRm9u
dC51cGRhdGUoZG9jdW1lbnQoKS0+c3R5bGVTZWxlY3RvcigpLT5mb250U2VsZWN0b3IoKSk7Cisg
ICAgICAgICAgICAgICAgaXRlbUZvbnQudXBkYXRlKGRvY3VtZW50KCktPnN0eWxlUmVzb2x2ZXIo
KS0+Zm9udFNlbGVjdG9yKCkpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoIXRl
eHQuaXNFbXB0eSgpKSB7CkBAIC00MTgsNyArNDE4LDcgQEAgdm9pZCBSZW5kZXJMaXN0Qm94Ojpw
YWludEl0ZW1Gb3JlZ3JvdW5kKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2lu
dCYKICAgICAgICAgRm9udERlc2NyaXB0aW9uIGQgPSBpdGVtRm9udC5mb250RGVzY3JpcHRpb24o
KTsKICAgICAgICAgZC5zZXRXZWlnaHQoZC5ib2xkZXJXZWlnaHQoKSk7CiAgICAgICAgIGl0ZW1G
b250ID0gRm9udChkLCBpdGVtRm9udC5sZXR0ZXJTcGFjaW5nKCksIGl0ZW1Gb250LndvcmRTcGFj
aW5nKCkpOwotICAgICAgICBpdGVtRm9udC51cGRhdGUoZG9jdW1lbnQoKS0+c3R5bGVTZWxlY3Rv
cigpLT5mb250U2VsZWN0b3IoKSk7CisgICAgICAgIGl0ZW1Gb250LnVwZGF0ZShkb2N1bWVudCgp
LT5zdHlsZVJlc29sdmVyKCktPmZvbnRTZWxlY3RvcigpKTsKICAgICB9CiAKICAgICAvLyBEcmF3
IHRoZSBpdGVtIHRleHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJNZW51TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3Qu
Y3BwCmluZGV4IGVlOTZmYzEzMmQwN2IwMjAwZmQyMzhmODVmZDRkMGVhZDI4NTY3NmYuLmVkMDA0
NDM5M2U3ZTMyNjg1NWM3Zjk1ZTUwZDkyMTk1NmEwOTlkZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcApAQCAtNTc2LDcgKzU3Niw3IEBAIHZvaWQgUmVu
ZGVyTWVudUxpc3Q6OnNldFRleHRGcm9tSXRlbSh1bnNpZ25lZCBsaXN0SW5kZXgpCiAKIEZvbnRT
ZWxlY3RvciogUmVuZGVyTWVudUxpc3Q6OmZvbnRTZWxlY3RvcigpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIGRvY3VtZW50KCktPnN0eWxlU2VsZWN0b3IoKS0+Zm9udFNlbGVjdG9yKCk7CisgICAgcmV0
dXJuIGRvY3VtZW50KCktPnN0eWxlUmVzb2x2ZXIoKS0+Zm9udFNlbGVjdG9yKCk7CiB9CiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKaW5kZXggMjUwNGFmMDJi
YTQyYWNlMGY0MmFiMjBmMzU5MDk0NmU3OWNhNWVhNy4uNzBlOTliNDFjZjg5YTA0ODU3MWI2ODlh
MzMwMzE5OGE2NTFjMmVmZSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVj
dC5jcHAKQEAgLTI1NTksMTEgKzI1NTksMTEgQEAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gUmVu
ZGVyT2JqZWN0OjpnZXRVbmNhY2hlZFBzZXVkb1N0eWxlKFBzZXVkb0lkIHBzZXVkbywgUmUKICAg
ICBFbGVtZW50KiBlbGVtZW50ID0gdG9FbGVtZW50KG4pOwogCiAgICAgaWYgKHBzZXVkbyA9PSBG
SVJTVF9MSU5FX0lOSEVSSVRFRCkgewotICAgICAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IHJlc3Vs
dCA9IGRvY3VtZW50KCktPnN0eWxlU2VsZWN0b3IoKS0+c3R5bGVGb3JFbGVtZW50KGVsZW1lbnQs
IHBhcmVudFN0eWxlLCBEaXNhbGxvd1N0eWxlU2hhcmluZyk7CisgICAgICAgIFJlZlB0cjxSZW5k
ZXJTdHlsZT4gcmVzdWx0ID0gZG9jdW1lbnQoKS0+c3R5bGVSZXNvbHZlcigpLT5zdHlsZUZvckVs
ZW1lbnQoZWxlbWVudCwgcGFyZW50U3R5bGUsIERpc2FsbG93U3R5bGVTaGFyaW5nKTsKICAgICAg
ICAgcmVzdWx0LT5zZXRTdHlsZVR5cGUoRklSU1RfTElORV9JTkhFUklURUQpOwogICAgICAgICBy
ZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKICAgICB9Ci0gICAgcmV0dXJuIGRvY3VtZW50KCktPnN0
eWxlU2VsZWN0b3IoKS0+cHNldWRvU3R5bGVGb3JFbGVtZW50KHBzZXVkbywgZWxlbWVudCwgcGFy
ZW50U3R5bGUpOworICAgIHJldHVybiBkb2N1bWVudCgpLT5zdHlsZVJlc29sdmVyKCktPnBzZXVk
b1N0eWxlRm9yRWxlbWVudChwc2V1ZG8sIGVsZW1lbnQsIHBhcmVudFN0eWxlKTsKIH0KIAogc3Rh
dGljIENvbG9yIGRlY29yYXRpb25Db2xvcihSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmNwcAppbmRleCAxNjFlNTA5YWJlM2U2NTEx
MWUwMGExOTBlZjdmZThjMmRhN2RlNmM3Li41MTA0NDY5NTEwZTUyMWMzZWZkM2MyZDI5ZmY5N2Jk
MzdmNjBmM2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVn
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmNwcApA
QCAtMTc1LDcgKzE3NSw3IEBAIHZvaWQgUmVuZGVyUmVnaW9uOjpzdHlsZURpZENoYW5nZShTdHls
ZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0CiAgICAgYm9vbCBjdXN0
b21SZWdpb25TdHlsZSA9IGZhbHNlOwogICAgIGlmIChub2RlKCkpIHsKICAgICAgICAgRWxlbWVu
dCogcmVnaW9uRWxlbWVudCA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKCkpOwotICAgICAg
ICBjdXN0b21SZWdpb25TdHlsZSA9IHZpZXcoKS0+ZG9jdW1lbnQoKS0+c3R5bGVTZWxlY3Rvcigp
LT5jaGVja1JlZ2lvblN0eWxlKHJlZ2lvbkVsZW1lbnQpOworICAgICAgICBjdXN0b21SZWdpb25T
dHlsZSA9IHZpZXcoKS0+ZG9jdW1lbnQoKS0+c3R5bGVSZXNvbHZlcigpLT5jaGVja1JlZ2lvblN0
eWxlKHJlZ2lvbkVsZW1lbnQpOwogICAgIH0KICAgICBzZXRIYXNDdXN0b21SZWdpb25TdHlsZShj
dXN0b21SZWdpb25TdHlsZSk7CiB9CkBAIC0zMDAsNyArMzAwLDcgQEAgUGFzc1JlZlB0cjxSZW5k
ZXJTdHlsZT4gUmVuZGVyUmVnaW9uOjpjb21wdXRlU3R5bGVJblJlZ2lvbihjb25zdCBSZW5kZXJC
b3gqIGJveCkKICAgICBBU1NFUlQoYm94LT5ub2RlKCkgJiYgYm94LT5ub2RlKCktPmlzRWxlbWVu
dE5vZGUoKSk7CiAKICAgICBFbGVtZW50KiBlbGVtZW50ID0gdG9FbGVtZW50KGJveC0+bm9kZSgp
KTsKLSAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IHJlbmRlckJveFJlZ2lvblN0eWxlID0gYm94LT52
aWV3KCktPmRvY3VtZW50KCktPnN0eWxlU2VsZWN0b3IoKS0+c3R5bGVGb3JFbGVtZW50KGVsZW1l
bnQsIDAsIERpc2FsbG93U3R5bGVTaGFyaW5nLCBNYXRjaEFsbFJ1bGVzLCB0aGlzKTsKKyAgICBS
ZWZQdHI8UmVuZGVyU3R5bGU+IHJlbmRlckJveFJlZ2lvblN0eWxlID0gYm94LT52aWV3KCktPmRv
Y3VtZW50KCktPnN0eWxlUmVzb2x2ZXIoKS0+c3R5bGVGb3JFbGVtZW50KGVsZW1lbnQsIDAsIERp
c2FsbG93U3R5bGVTaGFyaW5nLCBNYXRjaEFsbFJ1bGVzLCB0aGlzKTsKICAgICBtX3JlbmRlckJv
eFJlZ2lvblN0eWxlLmFkZChib3gsIHJlbmRlckJveFJlZ2lvblN0eWxlKTsKIAogICAgIGlmICgh
Ym94LT5oYXNCb3hEZWNvcmF0aW9ucygpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwCmluZGV4IDIyYmQ2M2Rk
ZDk1NGRmZjkyYWNmYzhlMmY4ZTI2M2Q3MDcwZDI0ZTkuLjllY2ZjNWQ2ZjNhNGMxNjNmMDRmYTZk
MDk0Mjk5ZjFkNGNhOGYwNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwCkBAIC02NzQsNyArNjc0LDcgQEAg
dm9pZCBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OnNldFRleHRGcm9tSXRlbSh1bnNpZ25l
ZCBsaXN0SW5kZXgpCiAKIEZvbnRTZWxlY3RvciogUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5l
Ojpmb250U2VsZWN0b3IoKSBjb25zdAogewotICAgIHJldHVybiBkb2N1bWVudCgpLT5zdHlsZVNl
bGVjdG9yKCktPmZvbnRTZWxlY3RvcigpOworICAgIHJldHVybiBkb2N1bWVudCgpLT5zdHlsZVJl
c29sdmVyKCktPmZvbnRTZWxlY3RvcigpOwogfQogCiBIb3N0V2luZG93KiBSZW5kZXJUZXh0Q29u
dHJvbFNpbmdsZUxpbmU6Omhvc3RXaW5kb3coKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZS5jcHAKaW5kZXggYWU3NTVjZWY2ZmRkZDVhNTBmMDdmNDI4NjgzNDY4YTA1
Y2Y0ZDVkNS4uNGM0MWZiM2M0MmY5ZGZjZjVlZDQ5ZmJiMGMxM2U5OTJjZTI4MzU5MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCkBAIC03Miw3ICs3Miw3IEBAIFJl
bmRlclRoZW1lOjpSZW5kZXJUaGVtZSgpCiB7CiB9CiAKLXZvaWQgUmVuZGVyVGhlbWU6OmFkanVz
dFN0eWxlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1l
bnQqIGUsCit2b2lkIFJlbmRlclRoZW1lOjphZGp1c3RTdHlsZShTdHlsZVJlc29sdmVyKiBzdHls
ZVJlc29sdmVyLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBib29sIFVBSGFzQXBwZWFyYW5jZSwgY29uc3QgQm9yZGVyRGF0YSYg
Ym9yZGVyLCBjb25zdCBGaWxsTGF5ZXImIGJhY2tncm91bmQsIGNvbnN0IENvbG9yJiBiYWNrZ3Jv
dW5kQ29sb3IpCiB7CiAgICAgLy8gRm9yY2UgaW5saW5lIGFuZCB0YWJsZSBkaXNwbGF5IHN0eWxl
cyB0byBiZSBpbmxpbmUtYmxvY2sgKGV4Y2VwdCBmb3IgdGFibGUtIHdoaWNoIGlzIGJsb2NrKQpA
QCAtMTgzLDQ3ICsxODMsNDcgQEAgdm9pZCBSZW5kZXJUaGVtZTo6YWRqdXN0U3R5bGUoU3R5bGVS
ZXNvbHZlciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWUKICAgICBzd2l0Y2gg
KHN0eWxlLT5hcHBlYXJhbmNlKCkpIHsKICNpZiAhVVNFKE5FV19USEVNRSkKICAgICAgICAgY2Fz
ZSBDaGVja2JveFBhcnQ6Ci0gICAgICAgICAgICByZXR1cm4gYWRqdXN0Q2hlY2tib3hTdHlsZShz
ZWxlY3Rvciwgc3R5bGUsIGUpOworICAgICAgICAgICAgcmV0dXJuIGFkanVzdENoZWNrYm94U3R5
bGUoc3R5bGVSZXNvbHZlciwgc3R5bGUsIGUpOwogICAgICAgICBjYXNlIFJhZGlvUGFydDoKLSAg
ICAgICAgICAgIHJldHVybiBhZGp1c3RSYWRpb1N0eWxlKHNlbGVjdG9yLCBzdHlsZSwgZSk7Cisg
ICAgICAgICAgICByZXR1cm4gYWRqdXN0UmFkaW9TdHlsZShzdHlsZVJlc29sdmVyLCBzdHlsZSwg
ZSk7CiAgICAgICAgIGNhc2UgUHVzaEJ1dHRvblBhcnQ6CiAgICAgICAgIGNhc2UgU3F1YXJlQnV0
dG9uUGFydDoKICAgICAgICAgY2FzZSBEZWZhdWx0QnV0dG9uUGFydDoKICAgICAgICAgY2FzZSBC
dXR0b25QYXJ0OgotICAgICAgICAgICAgcmV0dXJuIGFkanVzdEJ1dHRvblN0eWxlKHNlbGVjdG9y
LCBzdHlsZSwgZSk7CisgICAgICAgICAgICByZXR1cm4gYWRqdXN0QnV0dG9uU3R5bGUoc3R5bGVS
ZXNvbHZlciwgc3R5bGUsIGUpOwogICAgICAgICBjYXNlIElubmVyU3BpbkJ1dHRvblBhcnQ6Ci0g
ICAgICAgICAgICByZXR1cm4gYWRqdXN0SW5uZXJTcGluQnV0dG9uU3R5bGUoc2VsZWN0b3IsIHN0
eWxlLCBlKTsKKyAgICAgICAgICAgIHJldHVybiBhZGp1c3RJbm5lclNwaW5CdXR0b25TdHlsZShz
dHlsZVJlc29sdmVyLCBzdHlsZSwgZSk7CiAjZW5kaWYKICAgICAgICAgY2FzZSBUZXh0RmllbGRQ
YXJ0OgotICAgICAgICAgICAgcmV0dXJuIGFkanVzdFRleHRGaWVsZFN0eWxlKHNlbGVjdG9yLCBz
dHlsZSwgZSk7CisgICAgICAgICAgICByZXR1cm4gYWRqdXN0VGV4dEZpZWxkU3R5bGUoc3R5bGVS
ZXNvbHZlciwgc3R5bGUsIGUpOwogICAgICAgICBjYXNlIFRleHRBcmVhUGFydDoKLSAgICAgICAg
ICAgIHJldHVybiBhZGp1c3RUZXh0QXJlYVN0eWxlKHNlbGVjdG9yLCBzdHlsZSwgZSk7CisgICAg
ICAgICAgICByZXR1cm4gYWRqdXN0VGV4dEFyZWFTdHlsZShzdHlsZVJlc29sdmVyLCBzdHlsZSwg
ZSk7CiAgICAgICAgIGNhc2UgTWVudWxpc3RQYXJ0OgotICAgICAgICAgICAgcmV0dXJuIGFkanVz
dE1lbnVMaXN0U3R5bGUoc2VsZWN0b3IsIHN0eWxlLCBlKTsKKyAgICAgICAgICAgIHJldHVybiBh
ZGp1c3RNZW51TGlzdFN0eWxlKHN0eWxlUmVzb2x2ZXIsIHN0eWxlLCBlKTsKICAgICAgICAgY2Fz
ZSBNZW51bGlzdEJ1dHRvblBhcnQ6Ci0gICAgICAgICAgICByZXR1cm4gYWRqdXN0TWVudUxpc3RC
dXR0b25TdHlsZShzZWxlY3Rvciwgc3R5bGUsIGUpOworICAgICAgICAgICAgcmV0dXJuIGFkanVz
dE1lbnVMaXN0QnV0dG9uU3R5bGUoc3R5bGVSZXNvbHZlciwgc3R5bGUsIGUpOwogICAgICAgICBj
YXNlIE1lZGlhU2xpZGVyUGFydDoKICAgICAgICAgY2FzZSBNZWRpYVZvbHVtZVNsaWRlclBhcnQ6
CiAgICAgICAgIGNhc2UgTWVkaWFGdWxsU2NyZWVuVm9sdW1lU2xpZGVyUGFydDoKICAgICAgICAg
Y2FzZSBTbGlkZXJIb3Jpem9udGFsUGFydDoKICAgICAgICAgY2FzZSBTbGlkZXJWZXJ0aWNhbFBh
cnQ6Ci0gICAgICAgICAgICByZXR1cm4gYWRqdXN0U2xpZGVyVHJhY2tTdHlsZShzZWxlY3Rvciwg
c3R5bGUsIGUpOworICAgICAgICAgICAgcmV0dXJuIGFkanVzdFNsaWRlclRyYWNrU3R5bGUoc3R5
bGVSZXNvbHZlciwgc3R5bGUsIGUpOwogICAgICAgICBjYXNlIFNsaWRlclRodW1iSG9yaXpvbnRh
bFBhcnQ6CiAgICAgICAgIGNhc2UgU2xpZGVyVGh1bWJWZXJ0aWNhbFBhcnQ6Ci0gICAgICAgICAg
ICByZXR1cm4gYWRqdXN0U2xpZGVyVGh1bWJTdHlsZShzZWxlY3Rvciwgc3R5bGUsIGUpOworICAg
ICAgICAgICAgcmV0dXJuIGFkanVzdFNsaWRlclRodW1iU3R5bGUoc3R5bGVSZXNvbHZlciwgc3R5
bGUsIGUpOwogICAgICAgICBjYXNlIFNlYXJjaEZpZWxkUGFydDoKLSAgICAgICAgICAgIHJldHVy
biBhZGp1c3RTZWFyY2hGaWVsZFN0eWxlKHNlbGVjdG9yLCBzdHlsZSwgZSk7CisgICAgICAgICAg
ICByZXR1cm4gYWRqdXN0U2VhcmNoRmllbGRTdHlsZShzdHlsZVJlc29sdmVyLCBzdHlsZSwgZSk7
CiAgICAgICAgIGNhc2UgU2VhcmNoRmllbGRDYW5jZWxCdXR0b25QYXJ0OgotICAgICAgICAgICAg
cmV0dXJuIGFkanVzdFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uU3R5bGUoc2VsZWN0b3IsIHN0eWxl
LCBlKTsKKyAgICAgICAgICAgIHJldHVybiBhZGp1c3RTZWFyY2hGaWVsZENhbmNlbEJ1dHRvblN0
eWxlKHN0eWxlUmVzb2x2ZXIsIHN0eWxlLCBlKTsKICAgICAgICAgY2FzZSBTZWFyY2hGaWVsZERl
Y29yYXRpb25QYXJ0OgotICAgICAgICAgICAgcmV0dXJuIGFkanVzdFNlYXJjaEZpZWxkRGVjb3Jh
dGlvblN0eWxlKHNlbGVjdG9yLCBzdHlsZSwgZSk7CisgICAgICAgICAgICByZXR1cm4gYWRqdXN0
U2VhcmNoRmllbGREZWNvcmF0aW9uU3R5bGUoc3R5bGVSZXNvbHZlciwgc3R5bGUsIGUpOwogICAg
ICAgICBjYXNlIFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRpb25QYXJ0OgotICAgICAgICAgICAg
cmV0dXJuIGFkanVzdFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRpb25TdHlsZShzZWxlY3Rvciwg
c3R5bGUsIGUpOworICAgICAgICAgICAgcmV0dXJuIGFkanVzdFNlYXJjaEZpZWxkUmVzdWx0c0Rl
Y29yYXRpb25TdHlsZShzdHlsZVJlc29sdmVyLCBzdHlsZSwgZSk7CiAgICAgICAgIGNhc2UgU2Vh
cmNoRmllbGRSZXN1bHRzQnV0dG9uUGFydDoKLSAgICAgICAgICAgIHJldHVybiBhZGp1c3RTZWFy
Y2hGaWVsZFJlc3VsdHNCdXR0b25TdHlsZShzZWxlY3Rvciwgc3R5bGUsIGUpOworICAgICAgICAg
ICAgcmV0dXJuIGFkanVzdFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvblN0eWxlKHN0eWxlUmVzb2x2
ZXIsIHN0eWxlLCBlKTsKICNpZiBFTkFCTEUoUFJPR1JFU1NfVEFHKQogICAgICAgICBjYXNlIFBy
b2dyZXNzQmFyUGFydDoKLSAgICAgICAgICAgIHJldHVybiBhZGp1c3RQcm9ncmVzc0JhclN0eWxl
KHNlbGVjdG9yLCBzdHlsZSwgZSk7CisgICAgICAgICAgICByZXR1cm4gYWRqdXN0UHJvZ3Jlc3NC
YXJTdHlsZShzdHlsZVJlc29sdmVyLCBzdHlsZSwgZSk7CiAjZW5kaWYKICNpZiBFTkFCTEUoTUVU
RVJfVEFHKQogICAgICAgICBjYXNlIE1ldGVyUGFydDoKQEAgLTIzMSwxMSArMjMxLDExIEBAIHZv
aWQgUmVuZGVyVGhlbWU6OmFkanVzdFN0eWxlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBSZW5k
ZXJTdHlsZSogc3R5bGUsIEVsZW1lCiAgICAgICAgIGNhc2UgQ29udGludW91c0NhcGFjaXR5TGV2
ZWxJbmRpY2F0b3JQYXJ0OgogICAgICAgICBjYXNlIERpc2NyZXRlQ2FwYWNpdHlMZXZlbEluZGlj
YXRvclBhcnQ6CiAgICAgICAgIGNhc2UgUmF0aW5nTGV2ZWxJbmRpY2F0b3JQYXJ0OgotICAgICAg
ICAgICAgcmV0dXJuIGFkanVzdE1ldGVyU3R5bGUoc2VsZWN0b3IsIHN0eWxlLCBlKTsKKyAgICAg
ICAgICAgIHJldHVybiBhZGp1c3RNZXRlclN0eWxlKHN0eWxlUmVzb2x2ZXIsIHN0eWxlLCBlKTsK
ICNlbmRpZgogI2lmIEVOQUJMRShJTlBVVF9TUEVFQ0gpCiAgICAgICAgIGNhc2UgSW5wdXRTcGVl
Y2hCdXR0b25QYXJ0OgotICAgICAgICAgICAgcmV0dXJuIGFkanVzdElucHV0RmllbGRTcGVlY2hC
dXR0b25TdHlsZShzZWxlY3Rvciwgc3R5bGUsIGUpOworICAgICAgICAgICAgcmV0dXJuIGFkanVz
dElucHV0RmllbGRTcGVlY2hCdXR0b25TdHlsZShzdHlsZVJlc29sdmVyLCBzdHlsZSwgZSk7CiAj
ZW5kaWYKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFrOwpAQCAtOTAzLDkgKzkw
Myw5IEBAIHZvaWQgUmVuZGVyVGhlbWU6OmFkanVzdE1lbnVMaXN0U3R5bGUoU3R5bGVSZXNvbHZl
ciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvCiB9CiAKICNpZiBFTkFCTEUoSU5QVVRfU1BF
RUNIKQotdm9pZCBSZW5kZXJUaGVtZTo6YWRqdXN0SW5wdXRGaWVsZFNwZWVjaEJ1dHRvblN0eWxl
KFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGVs
ZW1lbnQpIGNvbnN0Cit2b2lkIFJlbmRlclRoZW1lOjphZGp1c3RJbnB1dEZpZWxkU3BlZWNoQnV0
dG9uU3R5bGUoU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciwgUmVuZGVyU3R5bGUqIHN0eWxl
LCBFbGVtZW50KiBlbGVtZW50KSBjb25zdAogewotICAgIFJlbmRlcklucHV0U3BlZWNoOjphZGp1
c3RJbnB1dEZpZWxkU3BlZWNoQnV0dG9uU3R5bGUoc2VsZWN0b3IsIHN0eWxlLCBlbGVtZW50KTsK
KyAgICBSZW5kZXJJbnB1dFNwZWVjaDo6YWRqdXN0SW5wdXRGaWVsZFNwZWVjaEJ1dHRvblN0eWxl
KHN0eWxlUmVzb2x2ZXIsIHN0eWxlLCBlbGVtZW50KTsKIH0KIAogYm9vbCBSZW5kZXJUaGVtZTo6
cGFpbnRJbnB1dEZpZWxkU3BlZWNoQnV0dG9uKFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBQ
YWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtU2tpYS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bVNraWEuY3BwCmluZGV4IDQw
YmIwYTM5YmQzN2NhMGYyZTQxNGM0ZGU3ODRhNzdhNmViODg3OTQuLjNjNGI4OTc3YWQ2YTc2Mzlk
ZTk5MDAzMjcyMzgyNzczZGRjZTlhYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUaGVtZUNocm9taXVtU2tpYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1Ta2lhLmNwcApAQCAtNDY2LDE1ICs0NjYsMTUgQEAg
Ym9vbCBSZW5kZXJUaGVtZUNocm9taXVtU2tpYTo6cGFpbnRNZWRpYU11dGVCdXR0b24oUmVuZGVy
T2JqZWN0KiBvYmplY3QsIGNvbnN0IFAKICNlbmRpZgogfQogCi12b2lkIFJlbmRlclRoZW1lQ2hy
b21pdW1Ta2lhOjphZGp1c3RNZW51TGlzdFN0eWxlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBS
ZW5kZXJTdHlsZSogc3R5bGUsIFdlYkNvcmU6OkVsZW1lbnQqIGUpIGNvbnN0Cit2b2lkIFJlbmRl
clRoZW1lQ2hyb21pdW1Ta2lhOjphZGp1c3RNZW51TGlzdFN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBS
ZW5kZXJTdHlsZSogc3R5bGUsIFdlYkNvcmU6OkVsZW1lbnQqKSBjb25zdAogewogICAgIC8vIEhl
aWdodCBpcyBsb2NrZWQgdG8gYXV0byBvbiBhbGwgYnJvd3NlcnMuCiAgICAgc3R5bGUtPnNldExp
bmVIZWlnaHQoUmVuZGVyU3R5bGU6OmluaXRpYWxMaW5lSGVpZ2h0KCkpOwogfQogCi12b2lkIFJl
bmRlclRoZW1lQ2hyb21pdW1Ta2lhOjphZGp1c3RNZW51TGlzdEJ1dHRvblN0eWxlKFN0eWxlUmVz
b2x2ZXIqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGUpIGNvbnN0Cit2
b2lkIFJlbmRlclRoZW1lQ2hyb21pdW1Ta2lhOjphZGp1c3RNZW51TGlzdEJ1dHRvblN0eWxlKFN0
eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCog
ZSkgY29uc3QKIHsKLSAgICBhZGp1c3RNZW51TGlzdFN0eWxlKHNlbGVjdG9yLCBzdHlsZSwgZSk7
CisgICAgYWRqdXN0TWVudUxpc3RTdHlsZShzdHlsZVJlc29sdmVyLCBzdHlsZSwgZSk7CiB9CiAK
IC8vIFVzZWQgdG8gcGFpbnQgc3R5bGVkIG1lbnVsaXN0cyAoaS5lLiB3aXRoIGEgbm9uLWRlZmF1
bHQgYm9yZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCmlu
ZGV4IDRjYmI4YWYyZjkxODIxNWZlNDY4ZGZmOGI5MWM0MGY2MWVhMDg3YWIuLjI0MWY1YzRiNTEy
Nzk4ZmU1YTgzZWFjY2UxNDdlYzBhMjkwNDhjMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGhlbWVNYWMubW0KQEAgLTExOTcsNyArMTE5Nyw3IEBAIHN0YXRpYyBjb25zdCBJ
bnRTaXplKiBtZW51TGlzdEJ1dHRvblNpemVzKCkKICAgICByZXR1cm4gc2l6ZXM7CiB9CiAKLXZv
aWQgUmVuZGVyVGhlbWVNYWM6OmFkanVzdE1lbnVMaXN0U3R5bGUoU3R5bGVSZXNvbHZlciogc2Vs
ZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZSkgY29uc3QKK3ZvaWQgUmVuZGVy
VGhlbWVNYWM6OmFkanVzdE1lbnVMaXN0U3R5bGUoU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZl
ciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlKSBjb25zdAogewogICAgIE5TQ29udHJv
bFNpemUgY29udHJvbFNpemUgPSBjb250cm9sU2l6ZUZvckZvbnQoc3R5bGUpOwogCkBAIC0xMjIw
LDcgKzEyMjAsNyBAQCB2b2lkIFJlbmRlclRoZW1lTWFjOjphZGp1c3RNZW51TGlzdFN0eWxlKFN0
eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogcwogICAgIC8vIE91ciBmb250IGlz
IGxvY2tlZCB0byB0aGUgYXBwcm9wcmlhdGUgc3lzdGVtIGZvbnQgc2l6ZSBmb3IgdGhlIGNvbnRy
b2wuICBUbyBjbGFyaWZ5LCB3ZSBmaXJzdCB1c2UgdGhlIENTUy1zcGVjaWZpZWQgZm9udCB0byBm
aWd1cmUgb3V0CiAgICAgLy8gYSByZWFzb25hYmxlIGNvbnRyb2wgc2l6ZSwgYnV0IG9uY2UgdGhh
dCBjb250cm9sIHNpemUgaXMgZGV0ZXJtaW5lZCwgd2UgdGhyb3cgdGhhdCBmb250IGF3YXkgYW5k
IHVzZSB0aGUgYXBwcm9wcmlhdGUKICAgICAvLyBzeXN0ZW0gZm9udCBmb3IgdGhlIGNvbnRyb2wg
c2l6ZSBpbnN0ZWFkLgotICAgIHNldEZvbnRGcm9tQ29udHJvbFNpemUoc2VsZWN0b3IsIHN0eWxl
LCBjb250cm9sU2l6ZSk7CisgICAgc2V0Rm9udEZyb21Db250cm9sU2l6ZShzdHlsZVJlc29sdmVy
LCBzdHlsZSwgY29udHJvbFNpemUpOwogCiAgICAgc3R5bGUtPnNldEJveFNoYWRvdyhudWxscHRy
KTsKIH0KQEAgLTEzNDgsOSArMTM0OCw5IEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50U2xp
ZGVyVHJhY2soUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mCiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFJlbmRlclRoZW1lTWFjOjphZGp1c3RTbGlkZXJUaHVt
YlN0eWxlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1l
bnQqIGVsZW1lbnQpIGNvbnN0Cit2b2lkIFJlbmRlclRoZW1lTWFjOjphZGp1c3RTbGlkZXJUaHVt
YlN0eWxlKFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIsIFJlbmRlclN0eWxlKiBzdHlsZSwg
RWxlbWVudCogZWxlbWVudCkgY29uc3QKIHsKLSAgICBSZW5kZXJUaGVtZTo6YWRqdXN0U2xpZGVy
VGh1bWJTdHlsZShzZWxlY3Rvciwgc3R5bGUsIGVsZW1lbnQpOworICAgIFJlbmRlclRoZW1lOjph
ZGp1c3RTbGlkZXJUaHVtYlN0eWxlKHN0eWxlUmVzb2x2ZXIsIHN0eWxlLCBlbGVtZW50KTsKICAg
ICBzdHlsZS0+c2V0Qm94U2hhZG93KG51bGxwdHIpOwogfQogCkBAIC0xNDc5LDcgKzE0NzksNyBA
QCB2b2lkIFJlbmRlclRoZW1lTWFjOjpzZXRTZWFyY2hGaWVsZFNpemUoUmVuZGVyU3R5bGUqIHN0
eWxlKSBjb25zdAogICAgIHNldFNpemVGcm9tRm9udChzdHlsZSwgc2VhcmNoRmllbGRTaXplcygp
KTsKIH0KIAotdm9pZCBSZW5kZXJUaGVtZU1hYzo6YWRqdXN0U2VhcmNoRmllbGRTdHlsZShTdHls
ZVJlc29sdmVyKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KikgY29uc3QK
K3ZvaWQgUmVuZGVyVGhlbWVNYWM6OmFkanVzdFNlYXJjaEZpZWxkU3R5bGUoU3R5bGVSZXNvbHZl
ciogc3R5bGVSZXNvbHZlciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KikgY29uc3QKIHsK
ICAgICAvLyBPdmVycmlkZSBib3JkZXIuCiAgICAgc3R5bGUtPnJlc2V0Qm9yZGVyKCk7CkBAIC0x
NTA1LDcgKzE1MDUsNyBAQCB2b2lkIFJlbmRlclRoZW1lTWFjOjphZGp1c3RTZWFyY2hGaWVsZFN0
eWxlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZQogICAgIHN0eWxlLT5zZXRQ
YWRkaW5nQm90dG9tKExlbmd0aChwYWRkaW5nLCBGaXhlZCkpOwogICAgIAogICAgIE5TQ29udHJv
bFNpemUgY29udHJvbFNpemUgPSBjb250cm9sU2l6ZUZvckZvbnQoc3R5bGUpOwotICAgIHNldEZv
bnRGcm9tQ29udHJvbFNpemUoc2VsZWN0b3IsIHN0eWxlLCBjb250cm9sU2l6ZSk7CisgICAgc2V0
Rm9udEZyb21Db250cm9sU2l6ZShzdHlsZVJlc29sdmVyLCBzdHlsZSwgY29udHJvbFNpemUpOwog
CiAgICAgc3R5bGUtPnNldEJveFNoYWRvdyhudWxscHRyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVNhZmFyaS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmkuY3BwCmluZGV4IDEyYzkyNWNiMzliN2ZiZmJh
NGNlMmI3YmQyZTNjMDQzZTg5NWQxNjguLjQxZGE1YzBjZWViNjNiNDY5YzFhYTU2N2EzMTA0NGJj
NWUyMTZhOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZVNhZmFyaS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lU2Fm
YXJpLmNwcApAQCAtMzgzLDcgKzM4Myw3IEBAIHZvaWQgUmVuZGVyVGhlbWVTYWZhcmk6OnNldFNp
emVGcm9tRm9udChSZW5kZXJTdHlsZSogc3R5bGUsIGNvbnN0IEludFNpemUqIHNpemVzCiAgICAg
ICAgIHN0eWxlLT5zZXRIZWlnaHQoTGVuZ3RoKHNpemUuaGVpZ2h0KCksIEZpeGVkKSk7CiB9CiAK
LXZvaWQgUmVuZGVyVGhlbWVTYWZhcmk6OnNldEZvbnRGcm9tQ29udHJvbFNpemUoU3R5bGVSZXNv
bHZlciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgTlNDb250cm9sU2l6ZSBjb250cm9s
U2l6ZSkgY29uc3QKK3ZvaWQgUmVuZGVyVGhlbWVTYWZhcmk6OnNldEZvbnRGcm9tQ29udHJvbFNp
emUoU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBOU0Nv
bnRyb2xTaXplIGNvbnRyb2xTaXplKSBjb25zdAogewogICAgIEZvbnREZXNjcmlwdGlvbiBmb250
RGVzY3JpcHRpb247CiAgICAgZm9udERlc2NyaXB0aW9uLnNldElzQWJzb2x1dGVTaXplKHRydWUp
OwpAQCAtMzk4LDcgKzM5OCw3IEBAIHZvaWQgUmVuZGVyVGhlbWVTYWZhcmk6OnNldEZvbnRGcm9t
Q29udHJvbFNpemUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIFJlbmRlclN0CiAgICAgc3R5bGUt
PnNldExpbmVIZWlnaHQoUmVuZGVyU3R5bGU6OmluaXRpYWxMaW5lSGVpZ2h0KCkpOwogCiAgICAg
aWYgKHN0eWxlLT5zZXRGb250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKSkKLSAgICAgICAg
c3R5bGUtPmZvbnQoKS51cGRhdGUoc2VsZWN0b3ItPmZvbnRTZWxlY3RvcigpKTsKKyAgICAgICAg
c3R5bGUtPmZvbnQoKS51cGRhdGUoc3R5bGVSZXNvbHZlci0+Zm9udFNlbGVjdG9yKCkpOwogfQog
CiBOU0NvbnRyb2xTaXplIFJlbmRlclRoZW1lU2FmYXJpOjpjb250cm9sU2l6ZUZvclN5c3RlbUZv
bnQoUmVuZGVyU3R5bGUqIHN0eWxlKSBjb25zdApAQCAtNTAzLDcgKzUwMyw3IEBAIHZvaWQgUmVu
ZGVyVGhlbWVTYWZhcmk6OnNldEJ1dHRvblBhZGRpbmdGcm9tQ29udHJvbFNpemUoUmVuZGVyU3R5
bGUqIHN0eWxlLCBOU0NvCiAgICAgc3R5bGUtPnNldFBhZGRpbmdCb3R0b20oTGVuZ3RoKDAsIEZp
eGVkKSk7CiB9CiAKLXZvaWQgUmVuZGVyVGhlbWVTYWZhcmk6OmFkanVzdEJ1dHRvblN0eWxlKFN0
eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGUpIGNv
bnN0Cit2b2lkIFJlbmRlclRoZW1lU2FmYXJpOjphZGp1c3RCdXR0b25TdHlsZShTdHlsZVJlc29s
dmVyKiBzdHlsZVJlc29sdmVyLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGUpIGNvbnN0
CiB7CiAgICAgLy8gVGhlcmUgYXJlIHRocmVlIGFwcGVhcmFuY2UgY29uc3RhbnRzIGZvciBidXR0
b25zLgogICAgIC8vICgxKSBQdXNoLWJ1dHRvbiBpcyB0aGUgY29uc3RhbnQgZm9yIHRoZSBkZWZh
dWx0IEFxdWEgc3lzdGVtIGJ1dHRvbi4gIFB1c2ggYnV0dG9ucyB3aWxsIG5vdCBzY2FsZSB2ZXJ0
aWNhbGx5IGFuZCB3aWxsIG5vdCBhbGxvdwpAQCAtNTM2LDcgKzUzNiw3IEBAIHZvaWQgUmVuZGVy
VGhlbWVTYWZhcmk6OmFkanVzdEJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBS
ZW5kZXJTdHlsZSoKICAgICAgICAgLy8gT3VyIGZvbnQgaXMgbG9ja2VkIHRvIHRoZSBhcHByb3By
aWF0ZSBzeXN0ZW0gZm9udCBzaXplIGZvciB0aGUgY29udHJvbC4gIFRvIGNsYXJpZnksIHdlIGZp
cnN0IHVzZSB0aGUgQ1NTLXNwZWNpZmllZCBmb250IHRvIGZpZ3VyZSBvdXQKICAgICAgICAgLy8g
YSByZWFzb25hYmxlIGNvbnRyb2wgc2l6ZSwgYnV0IG9uY2UgdGhhdCBjb250cm9sIHNpemUgaXMg
ZGV0ZXJtaW5lZCwgd2UgdGhyb3cgdGhhdCBmb250IGF3YXkgYW5kIHVzZSB0aGUgYXBwcm9wcmlh
dGUKICAgICAgICAgLy8gc3lzdGVtIGZvbnQgZm9yIHRoZSBjb250cm9sIHNpemUgaW5zdGVhZC4K
LSAgICAgICAgc2V0Rm9udEZyb21Db250cm9sU2l6ZShzZWxlY3Rvciwgc3R5bGUsIGNvbnRyb2xT
aXplKTsKKyAgICAgICAgc2V0Rm9udEZyb21Db250cm9sU2l6ZShzdHlsZVJlc29sdmVyLCBzdHls
ZSwgY29udHJvbFNpemUpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIFNldCBhIG1pbi1oZWln
aHQgc28gdGhhdCB3ZSBjYW4ndCBnZXQgc21hbGxlciB0aGFuIHRoZSBtaW5pIGJ1dHRvbi4KICAg
ICAgICAgc3R5bGUtPnNldE1pbkhlaWdodChMZW5ndGgoMTUsIEZpeGVkKSk7CkBAIC04NTksNyAr
ODU5LDcgQEAgYm9vbCBSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRNZW51TGlzdEJ1dHRvbihSZW5k
ZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgcGEKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
LXZvaWQgUmVuZGVyVGhlbWVTYWZhcmk6OmFkanVzdE1lbnVMaXN0U3R5bGUoU3R5bGVSZXNvbHZl
ciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZSkgY29uc3QKK3ZvaWQg
UmVuZGVyVGhlbWVTYWZhcmk6OmFkanVzdE1lbnVMaXN0U3R5bGUoU3R5bGVSZXNvbHZlciogc3R5
bGVSZXNvbHZlciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlKSBjb25zdAogewogICAg
IE5TQ29udHJvbFNpemUgY29udHJvbFNpemUgPSBjb250cm9sU2l6ZUZvckZvbnQoc3R5bGUpOwog
CkBAIC04ODIsNyArODgyLDcgQEAgdm9pZCBSZW5kZXJUaGVtZVNhZmFyaTo6YWRqdXN0TWVudUxp
c3RTdHlsZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUKICAgICAvLyBPdXIg
Zm9udCBpcyBsb2NrZWQgdG8gdGhlIGFwcHJvcHJpYXRlIHN5c3RlbSBmb250IHNpemUgZm9yIHRo
ZSBjb250cm9sLiAgVG8gY2xhcmlmeSwgd2UgZmlyc3QgdXNlIHRoZSBDU1Mtc3BlY2lmaWVkIGZv
bnQgdG8gZmlndXJlIG91dAogICAgIC8vIGEgcmVhc29uYWJsZSBjb250cm9sIHNpemUsIGJ1dCBv
bmNlIHRoYXQgY29udHJvbCBzaXplIGlzIGRldGVybWluZWQsIHdlIHRocm93IHRoYXQgZm9udCBh
d2F5IGFuZCB1c2UgdGhlIGFwcHJvcHJpYXRlCiAgICAgLy8gc3lzdGVtIGZvbnQgZm9yIHRoZSBj
b250cm9sIHNpemUgaW5zdGVhZC4KLSAgICBzZXRGb250RnJvbUNvbnRyb2xTaXplKHNlbGVjdG9y
LCBzdHlsZSwgY29udHJvbFNpemUpOworICAgIHNldEZvbnRGcm9tQ29udHJvbFNpemUoc3R5bGVS
ZXNvbHZlciwgc3R5bGUsIGNvbnRyb2xTaXplKTsKIH0KIAogaW50IFJlbmRlclRoZW1lU2FmYXJp
Ojpwb3B1cEludGVybmFsUGFkZGluZ0xlZnQoUmVuZGVyU3R5bGUqIHN0eWxlKSBjb25zdApAQCAt
OTI0LDcgKzkyNCw3IEBAIGludCBSZW5kZXJUaGVtZVNhZmFyaTo6cG9wdXBJbnRlcm5hbFBhZGRp
bmdCb3R0b20oUmVuZGVyU3R5bGUqIHN0eWxlKSBjb25zdAogICAgIHJldHVybiAwOwogfQogCi12
b2lkIFJlbmRlclRoZW1lU2FmYXJpOjphZGp1c3RNZW51TGlzdEJ1dHRvblN0eWxlKFN0eWxlUmVz
b2x2ZXIqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGUpIGNvbnN0Cit2
b2lkIFJlbmRlclRoZW1lU2FmYXJpOjphZGp1c3RNZW51TGlzdEJ1dHRvblN0eWxlKFN0eWxlUmVz
b2x2ZXIqLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqKSBjb25zdAogewogICAgIGZsb2F0
IGZvbnRTY2FsZSA9IHN0eWxlLT5mb250U2l6ZSgpIC8gYmFzZUZvbnRTaXplOwogICAgIApAQCAt
OTg4LDkgKzk4OCw5IEBAIGJvb2wgUmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50U2xpZGVyVHJhY2so
UmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIHBhaW50CiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCi12b2lkIFJlbmRlclRoZW1lU2FmYXJpOjphZGp1c3RTbGlkZXJUaHVtYlN0eWxlKFN0
eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGUpIGNv
bnN0IAordm9pZCBSZW5kZXJUaGVtZVNhZmFyaTo6YWRqdXN0U2xpZGVyVGh1bWJTdHlsZShTdHls
ZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGUp
IGNvbnN0IAogeyAKLSAgICBSZW5kZXJUaGVtZTo6YWRqdXN0U2xpZGVyVGh1bWJTdHlsZShzZWxl
Y3Rvciwgc3R5bGUsIGUpOworICAgIFJlbmRlclRoZW1lOjphZGp1c3RTbGlkZXJUaHVtYlN0eWxl
KHN0eWxlUmVzb2x2ZXIsIHN0eWxlLCBlKTsKICAgICBzdHlsZS0+c2V0Qm94U2hhZG93KG51bGxw
dHIpOyAKIH0gCiAKQEAgLTEwNDIsNyArMTA0Miw3IEBAIHZvaWQgUmVuZGVyVGhlbWVTYWZhcmk6
OnNldFNlYXJjaEZpZWxkU2l6ZShSZW5kZXJTdHlsZSogc3R5bGUpIGNvbnN0CiAgICAgc2V0U2l6
ZUZyb21Gb250KHN0eWxlLCBzZWFyY2hGaWVsZFNpemVzKCkpOwogfQogCi12b2lkIFJlbmRlclRo
ZW1lU2FmYXJpOjphZGp1c3RTZWFyY2hGaWVsZFN0eWxlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9y
LCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGUpIGNvbnN0Cit2b2lkIFJlbmRlclRoZW1l
U2FmYXJpOjphZGp1c3RTZWFyY2hGaWVsZFN0eWxlKFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2
ZXIsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZSkgY29uc3QKIHsKICAgICAvLyBPdmVy
cmlkZSBib3JkZXIuCiAgICAgc3R5bGUtPnJlc2V0Qm9yZGVyKCk7CkBAIC0xMDY4LDcgKzEwNjgs
NyBAQCB2b2lkIFJlbmRlclRoZW1lU2FmYXJpOjphZGp1c3RTZWFyY2hGaWVsZFN0eWxlKFN0eWxl
UmVzb2x2ZXIqIHNlbGVjdG9yLCBSZW5kZXJTdAogICAgIHN0eWxlLT5zZXRQYWRkaW5nQm90dG9t
KExlbmd0aChwYWRkaW5nLCBGaXhlZCkpOwogICAgIAogICAgIE5TQ29udHJvbFNpemUgY29udHJv
bFNpemUgPSBjb250cm9sU2l6ZUZvckZvbnQoc3R5bGUpOwotICAgIHNldEZvbnRGcm9tQ29udHJv
bFNpemUoc2VsZWN0b3IsIHN0eWxlLCBjb250cm9sU2l6ZSk7CisgICAgc2V0Rm9udEZyb21Db250
cm9sU2l6ZShzdHlsZVJlc29sdmVyLCBzdHlsZSwgY29udHJvbFNpemUpOwogfQogCiBib29sIFJl
bmRlclRoZW1lU2FmYXJpOjpwYWludFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uKFJlbmRlck9iamVj
dCogbywgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmKQpAQCAtMTA5
Miw3ICsxMDkyLDcgQEAgY29uc3QgSW50U2l6ZSogUmVuZGVyVGhlbWVTYWZhcmk6OmNhbmNlbEJ1
dHRvblNpemVzKCkgY29uc3QKICAgICByZXR1cm4gc2l6ZXM7CiB9CiAKLXZvaWQgUmVuZGVyVGhl
bWVTYWZhcmk6OmFkanVzdFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZl
ciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZSkgY29uc3QKK3ZvaWQg
UmVuZGVyVGhlbWVTYWZhcmk6OmFkanVzdFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uU3R5bGUoU3R5
bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCopIGNvbnN0CiB7CiAgICAg
SW50U2l6ZSBzaXplID0gc2l6ZUZvclN5c3RlbUZvbnQoc3R5bGUsIGNhbmNlbEJ1dHRvblNpemVz
KCkpOwogICAgIHN0eWxlLT5zZXRXaWR0aChMZW5ndGgoc2l6ZS53aWR0aCgpLCBGaXhlZCkpOwpA
QCAtMTEwNiw3ICsxMTA2LDcgQEAgY29uc3QgSW50U2l6ZSogUmVuZGVyVGhlbWVTYWZhcmk6OnJl
c3VsdHNCdXR0b25TaXplcygpIGNvbnN0CiB9CiAKIGNvbnN0IGludCBlbXB0eVJlc3VsdHNPZmZz
ZXQgPSA5Owotdm9pZCBSZW5kZXJUaGVtZVNhZmFyaTo6YWRqdXN0U2VhcmNoRmllbGREZWNvcmF0
aW9uU3R5bGUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxl
bWVudCogZSkgY29uc3QKK3ZvaWQgUmVuZGVyVGhlbWVTYWZhcmk6OmFkanVzdFNlYXJjaEZpZWxk
RGVjb3JhdGlvblN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1l
bnQqKSBjb25zdAogewogICAgIEludFNpemUgc2l6ZSA9IHNpemVGb3JTeXN0ZW1Gb250KHN0eWxl
LCByZXN1bHRzQnV0dG9uU2l6ZXMoKSk7CiAgICAgc3R5bGUtPnNldFdpZHRoKExlbmd0aChzaXpl
LndpZHRoKCkgLSBlbXB0eVJlc3VsdHNPZmZzZXQsIEZpeGVkKSk7CkBAIC0xMTE4LDcgKzExMTgs
NyBAQCBib29sIFJlbmRlclRoZW1lU2FmYXJpOjpwYWludFNlYXJjaEZpZWxkRGVjb3JhdGlvbihS
ZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9p
ZCBSZW5kZXJUaGVtZVNhZmFyaTo6YWRqdXN0U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvblN0
eWxlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQq
IGUpIGNvbnN0Cit2b2lkIFJlbmRlclRoZW1lU2FmYXJpOjphZGp1c3RTZWFyY2hGaWVsZFJlc3Vs
dHNEZWNvcmF0aW9uU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxl
bWVudCopIGNvbnN0CiB7CiAgICAgSW50U2l6ZSBzaXplID0gc2l6ZUZvclN5c3RlbUZvbnQoc3R5
bGUsIHJlc3VsdHNCdXR0b25TaXplcygpKTsKICAgICBzdHlsZS0+c2V0V2lkdGgoTGVuZ3RoKHNp
emUud2lkdGgoKSwgRml4ZWQpKTsKQEAgLTExNDEsNyArMTE0MSw3IEBAIGJvb2wgUmVuZGVyVGhl
bWVTYWZhcmk6OnBhaW50U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvbihSZW5kZXJPYmplY3Qq
IG8sIGNvbnN0CiB9CiAKIGNvbnN0IGludCByZXN1bHRzQXJyb3dXaWR0aCA9IDU7Ci12b2lkIFJl
bmRlclRoZW1lU2FmYXJpOjphZGp1c3RTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25TdHlsZShTdHls
ZVJlc29sdmVyKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlKSBjb25z
dAordm9pZCBSZW5kZXJUaGVtZVNhZmFyaTo6YWRqdXN0U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9u
U3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCopIGNvbnN0
CiB7CiAgICAgSW50U2l6ZSBzaXplID0gc2l6ZUZvclN5c3RlbUZvbnQoc3R5bGUsIHJlc3VsdHNC
dXR0b25TaXplcygpKTsKICAgICBzdHlsZS0+c2V0V2lkdGgoTGVuZ3RoKHNpemUud2lkdGgoKSAr
IHJlc3VsdHNBcnJvd1dpZHRoLCBGaXhlZCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZVdpbi5jcHAKaW5kZXggMDRkNTRiMjk0N2QzY2VlNWE5NGJmYjI1YTY2NmU0N2E0
YTEyYThjOC4uZTU4YmFkOWUxZWNlNmQ4NDYyZWNlMjVmMzBkYTc3M2FhYjA2YWI3NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwCkBAIC02ODcsNyArNjg3
LDcgQEAgYm9vbCBSZW5kZXJUaGVtZVdpbjo6cGFpbnRCdXR0b24oUmVuZGVyT2JqZWN0KiBvLCBj
b25zdCBQYWludEluZm8mIGksIGNvbnN0IEludFIKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZv
aWQgUmVuZGVyVGhlbWVXaW46OmFkanVzdElubmVyU3BpbkJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2
ZXIqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGUpIGNvbnN0Cit2b2lk
IFJlbmRlclRoZW1lV2luOjphZGp1c3RJbm5lclNwaW5CdXR0b25TdHlsZShTdHlsZVJlc29sdmVy
KiBzdHlsZVJlc29sdmVyLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGUpIGNvbnN0CiB7
CiAgICAgaW50IHdpZHRoID0gOjpHZXRTeXN0ZW1NZXRyaWNzKFNNX0NYVlNDUk9MTCk7CiAgICAg
aWYgKHdpZHRoIDw9IDApCkBAIC03NTQsMTMgKzc1NCwxMyBAQCBib29sIFJlbmRlclRoZW1lV2lu
OjpwYWludE1lbnVMaXN0KFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBpLCBjb25z
dCBJbgogICAgIHJldHVybiBwYWludE1lbnVMaXN0QnV0dG9uKG8sIGksIHIpOwogfQogCi12b2lk
IFJlbmRlclRoZW1lV2luOjphZGp1c3RNZW51TGlzdFN0eWxlKFN0eWxlUmVzb2x2ZXIqIHNlbGVj
dG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGUpIGNvbnN0Cit2b2lkIFJlbmRlclRo
ZW1lV2luOjphZGp1c3RNZW51TGlzdFN0eWxlKFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIs
IFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZSkgY29uc3QKIHsKICAgICBzdHlsZS0+cmVz
ZXRCb3JkZXIoKTsKLSAgICBhZGp1c3RNZW51TGlzdEJ1dHRvblN0eWxlKHNlbGVjdG9yLCBzdHls
ZSwgZSk7CisgICAgYWRqdXN0TWVudUxpc3RCdXR0b25TdHlsZShzdHlsZVJlc29sdmVyLCBzdHls
ZSwgZSk7CiB9CiAKLXZvaWQgUmVuZGVyVGhlbWVXaW46OmFkanVzdE1lbnVMaXN0QnV0dG9uU3R5
bGUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCog
ZSkgY29uc3QKK3ZvaWQgUmVuZGVyVGhlbWVXaW46OmFkanVzdE1lbnVMaXN0QnV0dG9uU3R5bGUo
U3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50
KiBlKSBjb25zdAogewogICAgIC8vIFRoZXNlIGFyZSB0aGUgcGFkZGluZ3MgbmVlZGVkIHRvIHBs
YWNlIHRoZSB0ZXh0IGNvcnJlY3RseSBpbiB0aGUgPHNlbGVjdD4gYm94CiAgICAgY29uc3QgaW50
IGRyb3BEb3duQm94UGFkZGluZ1RvcCAgICA9IDI7CkBAIC04NjIsNyArODYyLDcgQEAgYm9vbCBS
ZW5kZXJUaGVtZVdpbjo6cGFpbnRTZWFyY2hGaWVsZChSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBh
aW50SW5mbyYgaSwgY29uc3QKICAgICByZXR1cm4gcGFpbnRUZXh0RmllbGQobywgaSwgcik7CiB9
CiAKLXZvaWQgUmVuZGVyVGhlbWVXaW46OmFkanVzdFNlYXJjaEZpZWxkU3R5bGUoU3R5bGVSZXNv
bHZlciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZSkgY29uc3QKK3Zv
aWQgUmVuZGVyVGhlbWVXaW46OmFkanVzdFNlYXJjaEZpZWxkU3R5bGUoU3R5bGVSZXNvbHZlciog
c3R5bGVSZXNvbHZlciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlKSBjb25zdAogewog
ICAgIC8vIE92ZXJyaWRlIHBhZGRpbmdTaXplIHRvIG1hdGNoIEFwcEtpdCB0ZXh0IHBvc2l0aW9u
aW5nLgogICAgIGNvbnN0IGludCBwYWRkaW5nID0gMTsKQEAgLTg5OSw3ICs4OTksNyBAQCBib29s
IFJlbmRlclRoZW1lV2luOjpwYWludFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uKFJlbmRlck9iamVj
dCogbywgY29uc3QgUGFpbnRJbgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBSZW5kZXJU
aGVtZVdpbjo6YWRqdXN0U2VhcmNoRmllbGRDYW5jZWxCdXR0b25TdHlsZShTdHlsZVJlc29sdmVy
KiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlKSBjb25zdAordm9pZCBS
ZW5kZXJUaGVtZVdpbjo6YWRqdXN0U2VhcmNoRmllbGRDYW5jZWxCdXR0b25TdHlsZShTdHlsZVJl
c29sdmVyKiwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KikgY29uc3QKIHsKICAgICAvLyBT
Y2FsZSB0aGUgYnV0dG9uIHNpemUgYmFzZWQgb24gdGhlIGZvbnQgc2l6ZQogICAgIGZsb2F0IGZv
bnRTY2FsZSA9IHN0eWxlLT5mb250U2l6ZSgpIC8gZGVmYXVsdENvbnRyb2xGb250UGl4ZWxTaXpl
OwpAQCAtOTA4LDE0ICs5MDgsMTQgQEAgdm9pZCBSZW5kZXJUaGVtZVdpbjo6YWRqdXN0U2VhcmNo
RmllbGRDYW5jZWxCdXR0b25TdHlsZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvciwKICAgICBzdHls
ZS0+c2V0SGVpZ2h0KExlbmd0aChjYW5jZWxCdXR0b25TaXplLCBGaXhlZCkpOwogfQogCi12b2lk
IFJlbmRlclRoZW1lV2luOjphZGp1c3RTZWFyY2hGaWVsZERlY29yYXRpb25TdHlsZShTdHlsZVJl
c29sdmVyKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlKSBjb25zdAor
dm9pZCBSZW5kZXJUaGVtZVdpbjo6YWRqdXN0U2VhcmNoRmllbGREZWNvcmF0aW9uU3R5bGUoU3R5
bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCopIGNvbnN0CiB7CiAgICAg
SW50U2l6ZSBlbXB0eVNpemUoMSwgMTEpOwogICAgIHN0eWxlLT5zZXRXaWR0aChMZW5ndGgoZW1w
dHlTaXplLndpZHRoKCksIEZpeGVkKSk7CiAgICAgc3R5bGUtPnNldEhlaWdodChMZW5ndGgoZW1w
dHlTaXplLmhlaWdodCgpLCBGaXhlZCkpOwogfQogCi12b2lkIFJlbmRlclRoZW1lV2luOjphZGp1
c3RTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uU3R5bGUoU3R5bGVSZXNvbHZlciogc2VsZWN0
b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZSkgY29uc3QKK3ZvaWQgUmVuZGVyVGhl
bWVXaW46OmFkanVzdFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRpb25TdHlsZShTdHlsZVJlc29s
dmVyKiwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KikgY29uc3QKIHsKICAgICAvLyBTY2Fs
ZSB0aGUgZGVjb3JhdGlvbiBzaXplIGJhc2VkIG9uIHRoZSBmb250IHNpemUKICAgICBmbG9hdCBm
b250U2NhbGUgPSBzdHlsZS0+Zm9udFNpemUoKSAvIGRlZmF1bHRDb250cm9sRm9udFBpeGVsU2l6
ZTsKQEAgLTk0OCw3ICs5NDgsNyBAQCBib29sIFJlbmRlclRoZW1lV2luOjpwYWludFNlYXJjaEZp
ZWxkUmVzdWx0c0RlY29yYXRpb24oUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYQogICAgIHJldHVy
biBmYWxzZTsKIH0KIAotdm9pZCBSZW5kZXJUaGVtZVdpbjo6YWRqdXN0U2VhcmNoRmllbGRSZXN1
bHRzQnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHls
ZSwgRWxlbWVudCogZSkgY29uc3QKK3ZvaWQgUmVuZGVyVGhlbWVXaW46OmFkanVzdFNlYXJjaEZp
ZWxkUmVzdWx0c0J1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSogc3R5bGUs
IEVsZW1lbnQqKSBjb25zdAogewogICAgIC8vIFNjYWxlIHRoZSBidXR0b24gc2l6ZSBiYXNlZCBv
biB0aGUgZm9udCBzaXplCiAgICAgZmxvYXQgZm9udFNjYWxlID0gc3R5bGUtPmZvbnRTaXplKCkg
LyBkZWZhdWx0Q29udHJvbEZvbnRQaXhlbFNpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW5DRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGhlbWVXaW5DRS5jcHAKaW5kZXggNTY5MGQ1ZjdmOTdlYjA2Y2U4MzU1ZDhiNjYw
MjgyNTg0ZDY0MGQ3Zi4uZDg5MjU3ZDA0YTlmNGZlYmU4YWM1ZjJkZjNkNTdiY2YzN2E4MDYxYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luQ0UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbkNFLmNwcApAQCAt
MjM1LDEwICsyMzUsMTAgQEAgYm9vbCBSZW5kZXJUaGVtZVdpbkNFOjpwYWludFRleHRGaWVsZChS
ZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgaSwgY29uc3QKICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKLXZvaWQgUmVuZGVyVGhlbWVXaW5DRTo6YWRqdXN0TWVudUxpc3RTdHlsZShTdHls
ZVJlc29sdmVyKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlKSBjb25z
dAordm9pZCBSZW5kZXJUaGVtZVdpbkNFOjphZGp1c3RNZW51TGlzdFN0eWxlKFN0eWxlUmVzb2x2
ZXIqIHN0eWxlUmVzb2x2ZXIsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZSkgY29uc3QK
IHsKICAgICBzdHlsZS0+cmVzZXRCb3JkZXIoKTsKLSAgICBhZGp1c3RNZW51TGlzdEJ1dHRvblN0
eWxlKHNlbGVjdG9yLCBzdHlsZSwgZSk7CisgICAgYWRqdXN0TWVudUxpc3RCdXR0b25TdHlsZShz
dHlsZVJlc29sdmVyLCBzdHlsZSwgZSk7CiB9CiAKIGJvb2wgUmVuZGVyVGhlbWVXaW5DRTo6cGFp
bnRNZW51TGlzdChSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgaSwgY29uc3QgSW50
UmVjdCYgcikKQEAgLTM1Miw3ICszNTIsNyBAQCB2b2lkIFJlbmRlclRoZW1lV2luQ0U6OmFkanVz
dEJ1dHRvbklubmVyU3R5bGUoUmVuZGVyU3R5bGUqIHN0eWxlKSBjb25zdAogICAgIHN0eWxlLT5z
ZXRQYWRkaW5nTGVmdChMZW5ndGgoMywgRml4ZWQpKTsKIH0KIAotdm9pZCBSZW5kZXJUaGVtZVdp
bkNFOjphZGp1c3RTZWFyY2hGaWVsZFN0eWxlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBSZW5k
ZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGUpIGNvbnN0Cit2b2lkIFJlbmRlclRoZW1lV2luQ0U6
OmFkanVzdFNlYXJjaEZpZWxkU3R5bGUoU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciwgUmVu
ZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlKSBjb25zdAogewogICAgIC8vIE92ZXJyaWRlIHBh
ZGRpbmcgc2l6ZSB0byBtYXRjaCBBcHBLaXQgdGV4dCBwb3NpdGlvbmluZy4KICAgICBjb25zdCBp
bnQgcGFkZGluZyA9IDE7CkBAIC0zOTIsMjEgKzM5MiwyMSBAQCBib29sIFJlbmRlclRoZW1lV2lu
Q0U6OnBhaW50U2VhcmNoRmllbGRDYW5jZWxCdXR0b24oUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQ
YWludAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBSZW5kZXJUaGVtZVdpbkNFOjphZGp1
c3RTZWFyY2hGaWVsZENhbmNlbEJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBS
ZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGUpIGNvbnN0Cit2b2lkIFJlbmRlclRoZW1lV2lu
Q0U6OmFkanVzdFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZlciosIFJl
bmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCopIGNvbnN0CiB7CiAgICAgSW50U2l6ZSBjYW5jZWxT
aXplKDEzLCAxMSk7CiAgICAgc3R5bGUtPnNldFdpZHRoKExlbmd0aChjYW5jZWxTaXplLndpZHRo
KCksIEZpeGVkKSk7CiAgICAgc3R5bGUtPnNldEhlaWdodChMZW5ndGgoY2FuY2VsU2l6ZS5oZWln
aHQoKSwgRml4ZWQpKTsKIH0KIAotdm9pZCBSZW5kZXJUaGVtZVdpbkNFOjphZGp1c3RTZWFyY2hG
aWVsZERlY29yYXRpb25TdHlsZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUq
IHN0eWxlLCBFbGVtZW50KiBlKSBjb25zdAordm9pZCBSZW5kZXJUaGVtZVdpbkNFOjphZGp1c3RT
ZWFyY2hGaWVsZERlY29yYXRpb25TdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqIHN0
eWxlLCBFbGVtZW50KikgY29uc3QKIHsKICAgICBJbnRTaXplIGVtcHR5U2l6ZSgxLCAxMSk7CiAg
ICAgc3R5bGUtPnNldFdpZHRoKExlbmd0aChlbXB0eVNpemUud2lkdGgoKSwgRml4ZWQpKTsKICAg
ICBzdHlsZS0+c2V0SGVpZ2h0KExlbmd0aChlbXB0eVNpemUuaGVpZ2h0KCksIEZpeGVkKSk7CiB9
CiAKLXZvaWQgUmVuZGVyVGhlbWVXaW5DRTo6YWRqdXN0U2VhcmNoRmllbGRSZXN1bHRzRGVjb3Jh
dGlvblN0eWxlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVs
ZW1lbnQqIGUpIGNvbnN0Cit2b2lkIFJlbmRlclRoZW1lV2luQ0U6OmFkanVzdFNlYXJjaEZpZWxk
UmVzdWx0c0RlY29yYXRpb25TdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqIHN0eWxl
LCBFbGVtZW50KikgY29uc3QKIHsKICAgICBJbnRTaXplIG1hZ25pZmllclNpemUoMTUsIDExKTsK
ICAgICBzdHlsZS0+c2V0V2lkdGgoTGVuZ3RoKG1hZ25pZmllclNpemUud2lkdGgoKSwgRml4ZWQp
KTsKQEAgLTQxOSw3ICs0MTksNyBAQCBib29sIFJlbmRlclRoZW1lV2luQ0U6OnBhaW50U2VhcmNo
RmllbGRSZXN1bHRzRGVjb3JhdGlvbihSZW5kZXJPYmplY3QqIG8sIGNvbnN0CiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCi12b2lkIFJlbmRlclRoZW1lV2luQ0U6OmFkanVzdFNlYXJjaEZpZWxkUmVz
dWx0c0J1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5
bGUsIEVsZW1lbnQqIGUpIGNvbnN0Cit2b2lkIFJlbmRlclRoZW1lV2luQ0U6OmFkanVzdFNlYXJj
aEZpZWxkUmVzdWx0c0J1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSogc3R5
bGUsIEVsZW1lbnQqKSBjb25zdAogewogICAgIEludFNpemUgbWFnbmlmaWVyU2l6ZSgxNSwgMTEp
OwogICAgIHN0eWxlLT5zZXRXaWR0aChMZW5ndGgobWFnbmlmaWVyU2l6ZS53aWR0aCgpLCBGaXhl
ZCkpOwpAQCAtNDMyLDcgKzQzMiw3IEBAIGJvb2wgUmVuZGVyVGhlbWVXaW5DRTo6cGFpbnRTZWFy
Y2hGaWVsZFJlc3VsdHNCdXR0b24oUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWluCiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCi12b2lkIFJlbmRlclRoZW1lV2luQ0U6OmFkanVzdE1lbnVMaXN0QnV0
dG9uU3R5bGUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxl
bWVudCogZSkgY29uc3QKK3ZvaWQgUmVuZGVyVGhlbWVXaW5DRTo6YWRqdXN0TWVudUxpc3RCdXR0
b25TdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KikgY29u
c3QKIHsKICAgICAvLyBUaGVzZSBhcmUgdGhlIHBhZGRpbmdzIG5lZWRlZCB0byBwbGFjZSB0aGUg
dGV4dCBjb3JyZWN0bHkgaW4gdGhlIDxzZWxlY3Q+IGJveAogICAgIGNvbnN0IGludCBkcm9wRG93
bkJveFBhZGRpbmdUb3AgICAgPSAyOwpAQCAtNTI5LDcgKzUyOSw3IEBAIGJvb2wgUmVuZGVyVGhl
bWVXaW5DRTo6cGFpbnRTbGlkZXJUaHVtYihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5m
byYgaSwgY29uCiAgICAgcmV0dXJuIHJjOwogfQogCi12b2lkIFJlbmRlclRoZW1lV2luQ0U6OmFk
anVzdFNlYXJjaEZpZWxkU3R5bGUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIFJlbmRlclN0eWxl
KiBzdHlsZSwgRWxlbWVudCogZSkgY29uc3QKK3ZvaWQgUmVuZGVyVGhlbWVXaW5DRTo6YWRqdXN0
U2VhcmNoRmllbGRTdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVt
ZW50KikgY29uc3QKIHsKICAgICBjb25zdCBpbnQgcGFkZGluZyA9IDE7CiAgICAgc3R5bGUtPnNl
dFBhZGRpbmdMZWZ0KExlbmd0aChwYWRkaW5nLCBGaXhlZCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJhdGVkSW1hZ2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJhdGVkSW1hZ2UuY3BwCmluZGV4IGM1
MmM3NGY2ZGY2ZDc3M2U5ODcwY2YxMmRkMWEwMjZkYmU3YWQ2ZTAuLmY5YTY5YWEyZDg2ODkzNTI5
NmQ2NTNlMDA5YzBhNDNmMjg5NTMyNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU3R5bGVHZW5lcmF0ZWRJbWFnZS5jcHAKQEAgLTg1LDcgKzg1LDcgQEAg
dm9pZCBTdHlsZUdlbmVyYXRlZEltYWdlOjpyZW1vdmVDbGllbnQoUmVuZGVyT2JqZWN0KiByZW5k
ZXJlcikKIAogUGFzc1JlZlB0cjxJbWFnZT4gU3R5bGVHZW5lcmF0ZWRJbWFnZTo6aW1hZ2UoUmVu
ZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3QgSW50U2l6ZSYgc2l6ZSkgY29uc3QKIHsKLSAgICBy
ZW5kZXJlci0+ZG9jdW1lbnQoKS0+c3R5bGVTZWxlY3RvcigpLT5zZXRTdHlsZShyZW5kZXJlci0+
c3R5bGUoKSk7CisgICAgcmVuZGVyZXItPmRvY3VtZW50KCktPnN0eWxlUmVzb2x2ZXIoKS0+c2V0
U3R5bGUocmVuZGVyZXItPnN0eWxlKCkpOwogICAgIHJldHVybiBtX2ltYWdlR2VuZXJhdG9yVmFs
dWUtPmltYWdlKHJlbmRlcmVyLCBzaXplKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lVGV4dC5jcHAKaW5kZXggOWE3YjIzYjJjYjkz
NzVmNWMzYzA2Zjk3ZTRhYTllNDgxMzc2ZTY5NS4uZWUxMTVjYjYxMmVjZGRlNDYzNTM5ODNkZmM3
MDkwYWFkZDRmMmU4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdJbmxpbmVUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR0lubGluZVRleHQuY3BwCkBAIC0yNTQsOCArMjU0LDggQEAgdm9pZCBSZW5kZXJT
VkdJbmxpbmVUZXh0Ojpjb21wdXRlTmV3U2NhbGVkRm9udEZvclN0eWxlKFJlbmRlck9iamVjdCog
cmVuZGVyZXIsIGMKICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSByZW5kZXJlci0+ZG9jdW1lbnQo
KTsKICAgICBBU1NFUlQoZG9jdW1lbnQpOwogICAgIAotICAgIFN0eWxlUmVzb2x2ZXIqIHN0eWxl
U2VsZWN0b3IgPSBkb2N1bWVudC0+c3R5bGVTZWxlY3RvcigpOwotICAgIEFTU0VSVChzdHlsZVNl
bGVjdG9yKTsKKyAgICBTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyID0gZG9jdW1lbnQtPnN0
eWxlUmVzb2x2ZXIoKTsKKyAgICBBU1NFUlQoc3R5bGVSZXNvbHZlcik7CiAKICAgICAvLyBBbHRl
ciBmb250LXNpemUgdG8gdGhlIHJpZ2h0IG9uLXNjcmVlbiB2YWx1ZSB0byBhdm9pZCBzY2FsaW5n
IHRoZSBnbHlwaHMgdGhlbXNlbHZlcywgZXhjZXB0IHdoZW4gR2VvbWV0cmljUHJlY2lzaW9uIGlz
IHNwZWNpZmllZAogICAgIEFmZmluZVRyYW5zZm9ybSBjdG07CkBAIC0yNzMsNyArMjczLDcgQEAg
dm9pZCBSZW5kZXJTVkdJbmxpbmVUZXh0Ojpjb21wdXRlTmV3U2NhbGVkRm9udEZvclN0eWxlKFJl
bmRlck9iamVjdCogcmVuZGVyZXIsIGMKICAgICBmb250RGVzY3JpcHRpb24uc2V0Q29tcHV0ZWRT
aXplKFN0eWxlUmVzb2x2ZXI6OmdldENvbXB1dGVkU2l6ZUZyb21TcGVjaWZpZWRTaXplKGRvY3Vt
ZW50LCBzY2FsaW5nRmFjdG9yLCBmb250RGVzY3JpcHRpb24uaXNBYnNvbHV0ZVNpemUoKSwgZm9u
dERlc2NyaXB0aW9uLmNvbXB1dGVkU2l6ZSgpLCBEb05vdFVzZVNtYXJ0TWluaW11bUZvckZvbnRT
aXplKSk7CiAKICAgICBzY2FsZWRGb250ID0gRm9udChmb250RGVzY3JpcHRpb24sIDAsIDApOwot
ICAgIHNjYWxlZEZvbnQudXBkYXRlKHN0eWxlU2VsZWN0b3ItPmZvbnRTZWxlY3RvcigpKTsKKyAg
ICBzY2FsZWRGb250LnVwZGF0ZShzdHlsZVJlc29sdmVyLT5mb250U2VsZWN0b3IoKSk7CiB9CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAppbmRleCAwYjlkNTBjMjQ4NTNkMjM2ZjI5MWNl
MWViYTVjNWRiNTA0NDhhMzk0Li42Mzg1YjVjMTk4NjkxYzc1OTY4MmE3MjFjNmYzNzcxZGQ2NjZl
MmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCkBAIC00ODEsNyArNDgxLDcgQEAgdm9p
ZCBTVkdFbGVtZW50OjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKHZvaWQqIGNvbnRleHRFbGVt
ZW50KQogUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gU1ZHRWxlbWVudDo6Y3VzdG9tU3R5bGVGb3JS
ZW5kZXJlcigpCiB7CiAgICAgaWYgKCFjb3JyZXNwb25kaW5nRWxlbWVudCgpKQotICAgICAgICBy
ZXR1cm4gZG9jdW1lbnQoKS0+c3R5bGVTZWxlY3RvcigpLT5zdHlsZUZvckVsZW1lbnQodGhpcyk7
CisgICAgICAgIHJldHVybiBkb2N1bWVudCgpLT5zdHlsZVJlc29sdmVyKCktPnN0eWxlRm9yRWxl
bWVudCh0aGlzKTsKIAogICAgIFJlbmRlclN0eWxlKiBzdHlsZSA9IDA7CiAgICAgaWYgKEVsZW1l
bnQqIHBhcmVudCA9IHBhcmVudE9ySG9zdEVsZW1lbnQoKSkgewpAQCAtNDg5LDcgKzQ4OSw3IEBA
IFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IFNWR0VsZW1lbnQ6OmN1c3RvbVN0eWxlRm9yUmVuZGVy
ZXIoKQogICAgICAgICAgICAgc3R5bGUgPSByZW5kZXJlci0+c3R5bGUoKTsKICAgICB9CiAKLSAg
ICByZXR1cm4gZG9jdW1lbnQoKS0+c3R5bGVTZWxlY3RvcigpLT5zdHlsZUZvckVsZW1lbnQoY29y
cmVzcG9uZGluZ0VsZW1lbnQoKSwgc3R5bGUsIERpc2FsbG93U3R5bGVTaGFyaW5nKTsKKyAgICBy
ZXR1cm4gZG9jdW1lbnQoKS0+c3R5bGVSZXNvbHZlcigpLT5zdHlsZUZvckVsZW1lbnQoY29ycmVz
cG9uZGluZ0VsZW1lbnQoKSwgc3R5bGUsIERpc2FsbG93U3R5bGVTaGFyaW5nKTsKIH0KIAogU3R5
bGVQcm9wZXJ0eVNldCogU1ZHRWxlbWVudDo6YW5pbWF0ZWRTTUlMU3R5bGVQcm9wZXJ0aWVzKCkg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZUVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlRWxlbWVudC5jcHAKaW5kZXggOTEx
OTc2NzMyZmJhYzAwN2NjZjQ1MzU5MjRkMjZjNzUzM2I5YjFlZC4uNzk2ZjFhNzc2ZTExZTVhMDAx
YzFiMzY3YWY2Y2VmN2IwMGI3ZGM3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZvbnRGYWNlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNl
RWxlbWVudC5jcHAKQEAgLTMxMiw3ICszMTIsNyBAQCB2b2lkIFNWR0ZvbnRGYWNlRWxlbWVudDo6
cmVidWlsZEZvbnRGYWNlKCkKICAgICAgICAgfQogICAgIH0KIAotICAgIGRvY3VtZW50KCktPnN0
eWxlU2VsZWN0b3JDaGFuZ2VkKERlZmVyUmVjYWxjU3R5bGUpOworICAgIGRvY3VtZW50KCktPnN0
eWxlUmVzb2x2ZXJDaGFuZ2VkKERlZmVyUmVjYWxjU3R5bGUpOwogfQogCiBOb2RlOjpJbnNlcnRp
b25Ob3RpZmljYXRpb25SZXF1ZXN0IFNWR0ZvbnRGYWNlRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKE5v
ZGUqIHJvb3RQYXJlbnQpCkBAIC0zMzQsNyArMzM0LDcgQEAgdm9pZCBTVkdGb250RmFjZUVsZW1l
bnQ6OnJlbW92ZWRGcm9tKE5vZGUqIHJvb3RQYXJlbnQpCiAgICAgICAgIGRvY3VtZW50KCktPmFj
Y2Vzc1NWR0V4dGVuc2lvbnMoKS0+dW5yZWdpc3RlclNWR0ZvbnRGYWNlRWxlbWVudCh0aGlzKTsK
ICAgICAgICAgbV9mb250RmFjZVJ1bGUtPnByb3BlcnRpZXMoKS0+cGFyc2VEZWNsYXJhdGlvbihl
bXB0eVN0cmluZygpLCAwKTsKIAotICAgICAgICBkb2N1bWVudCgpLT5zdHlsZVNlbGVjdG9yQ2hh
bmdlZChEZWZlclJlY2FsY1N0eWxlKTsKKyAgICAgICAgZG9jdW1lbnQoKS0+c3R5bGVSZXNvbHZl
ckNoYW5nZWQoRGVmZXJSZWNhbGNTdHlsZSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWE1MVHJlZVZpZXdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1M
VHJlZVZpZXdlci5jcHAKaW5kZXggNzMzZjNjNDgyZDA5YTExNzdiOWE1NTNmNGVjOGI0NTU4NTg4
ZGFhNi4uOWI1YjcwNjYxNmE1MjdlNmNiYjhhYjY0MGFlYmIyYjU2NDIxOGE3MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTFRyZWVWaWV3ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3htbC9YTUxUcmVlVmlld2VyLmNwcApAQCAtODAsNyArODAsNyBAQCB2b2lkIFhNTFRyZWVW
aWV3ZXI6OnRyYW5zZm9ybURvY3VtZW50VG9UcmVlVmlldygpCiAgICAgUmVmUHRyPFRleHQ+IHRl
eHQgPSBtX2RvY3VtZW50LT5jcmVhdGVUZXh0Tm9kZShjc3NTdHJpbmcpOwogICAgIEV4Y2VwdGlv
bkNvZGUgZXhjZXB0aW9uQ29kZTsKICAgICBtX2RvY3VtZW50LT5nZXRFbGVtZW50QnlJZCgieG1s
LXZpZXdlci1zdHlsZSIpLT5hcHBlbmRDaGlsZCh0ZXh0LCBleGNlcHRpb25Db2RlKTsKLSAgICBt
X2RvY3VtZW50LT5zdHlsZVNlbGVjdG9yQ2hhbmdlZChSZWNhbGNTdHlsZUltbWVkaWF0ZWx5KTsK
KyAgICBtX2RvY3VtZW50LT5zdHlsZVJlc29sdmVyQ2hhbmdlZChSZWNhbGNTdHlsZUltbWVkaWF0
ZWx5KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94
bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcAppbmRleCBhZmU0ZWU1YjM5MGUzMTc2Zjlh
MTQ1YjhmOTdkODAzNTg5YmMyYWJkLi42YTQ5ODE0NWQ5ZDI1NzA1YWUzMzY5NmRjNjNiNzM4MTIy
YTYyOTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50
UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFy
c2VyLmNwcApAQCAtMjA0LDcgKzIwNCw3IEBAIHZvaWQgWE1MRG9jdW1lbnRQYXJzZXI6OmVuZCgp
CiAgICAgICAgIGluc2VydEVycm9yTWVzc2FnZUJsb2NrKCk7CiAgICAgZWxzZSB7CiAgICAgICAg
IGV4aXRUZXh0KCk7Ci0gICAgICAgIGRvY3VtZW50KCktPnN0eWxlU2VsZWN0b3JDaGFuZ2VkKFJl
Y2FsY1N0eWxlSW1tZWRpYXRlbHkpOworICAgICAgICBkb2N1bWVudCgpLT5zdHlsZVJlc29sdmVy
Q2hhbmdlZChSZWNhbGNTdHlsZUltbWVkaWF0ZWx5KTsKICAgICB9CiAKICAgICBpZiAoaXNQYXJz
aW5nKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50
UGFyc2VyTGlieG1sMi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50
UGFyc2VyTGlieG1sMi5jcHAKaW5kZXggZTEyOGQyYmY3ZTA3ZjAwYmNmNjkwODBjY2RjNmQ5YTE1
ZTQzZjAxZi4uODlmN2NmN2EyMTI4YWI4ODc1OTliNjdiZWNlMDE1MDE1MTY4NDIxMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4
bWwyLmNwcApAQCAtMTMyOCw3ICsxMzI4LDcgQEAgdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6ZG9F
bmQoKQogICAgICAgICBkb2N1bWVudCgpLT5zZXRUcmFuc2Zvcm1Tb3VyY2UoYWRvcHRQdHIobmV3
IFRyYW5zZm9ybVNvdXJjZShkb2MpKSk7CiAKICAgICAgICAgZG9jdW1lbnQoKS0+c2V0UGFyc2lu
ZyhmYWxzZSk7IC8vIE1ha2UgdGhlIGRvY3VtZW50IHRoaW5rIGl0J3MgZG9uZSwgc28gaXQgd2ls
bCBhcHBseSBYU0wgc3R5bGVzaGVldHMuCi0gICAgICAgIGRvY3VtZW50KCktPnN0eWxlU2VsZWN0
b3JDaGFuZ2VkKFJlY2FsY1N0eWxlSW1tZWRpYXRlbHkpOworICAgICAgICBkb2N1bWVudCgpLT5z
dHlsZVJlc29sdmVyQ2hhbmdlZChSZWNhbGNTdHlsZUltbWVkaWF0ZWx5KTsKICAgICAgICAgZG9j
dW1lbnQoKS0+c2V0UGFyc2luZyh0cnVlKTsKIAogICAgICAgICBEb2N1bWVudFBhcnNlcjo6c3Rv
cFBhcnNpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9j
dW1lbnRQYXJzZXJRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50
UGFyc2VyUXQuY3BwCmluZGV4IGZiZmZiZmY4ZTkwYzg3Mzk1N2I5MDhkZWRiMDhiOGFlODllZGM5
MDkuLjNiZWQxZTQyYmZhYjRjMWNkZDk5ODg5MWQzYTIyMTgxZWYzMDEwM2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJRdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlclF0LmNwcApAQCAtMjAy
LDcgKzIwMiw3IEBAIHZvaWQgWE1MRG9jdW1lbnRQYXJzZXI6OmRvRW5kKCkKICAgICBpZiAobV9z
YXdYU0xUcmFuc2Zvcm0pIHsKICAgICAgICAgZG9jdW1lbnQoKS0+c2V0VHJhbnNmb3JtU291cmNl
KGFkb3B0UHRyKG5ldyBUcmFuc2Zvcm1Tb3VyY2UobV9vcmlnaW5hbFNvdXJjZUZvclRyYW5zZm9y
bSkpKTsKICAgICAgICAgZG9jdW1lbnQoKS0+c2V0UGFyc2luZyhmYWxzZSk7IC8vIE1ha2UgdGhl
IGRvYyB0aGluayBpdCdzIGRvbmUsIHNvIGl0IHdpbGwgYXBwbHkgeHNsIHNoZWV0cy4KLSAgICAg
ICAgZG9jdW1lbnQoKS0+c3R5bGVTZWxlY3RvckNoYW5nZWQoUmVjYWxjU3R5bGVJbW1lZGlhdGVs
eSk7CisgICAgICAgIGRvY3VtZW50KCktPnN0eWxlUmVzb2x2ZXJDaGFuZ2VkKFJlY2FsY1N0eWxl
SW1tZWRpYXRlbHkpOwogICAgICAgICBkb2N1bWVudCgpLT5zZXRQYXJzaW5nKHRydWUpOwogICAg
ICAgICBEb2N1bWVudFBhcnNlcjo6c3RvcFBhcnNpbmcoKTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9BdXRvZmlsbFBvcHVwTWVudUNsaWVudC5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9BdXRvZmlsbFBvcHVwTWVudUNsaWVudC5jcHAKaW5k
ZXggMjhhN2NlN2FlNWUzMjMwOTMxN2M4YjdiOTI4NmVjZmUzYWZjMmZjNS4uNmEwYzU0ZTEwYWVi
NjhmMTMwMjMwMDc4NmU3Yzg3ODRmY2VmN2ExNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvQXV0b2ZpbGxQb3B1cE1lbnVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0F1dG9maWxsUG9wdXBNZW51Q2xpZW50LmNwcApAQCAtMjI2LDcgKzIy
Niw3IEBAIHZvaWQgQXV0b2ZpbGxQb3B1cE1lbnVDbGllbnQ6OnNldFRleHRGcm9tSXRlbSh1bnNp
Z25lZCBsaXN0SW5kZXgpCiAKIEZvbnRTZWxlY3RvciogQXV0b2ZpbGxQb3B1cE1lbnVDbGllbnQ6
OmZvbnRTZWxlY3RvcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fdGV4dEZpZWxkLT5kb2N1bWVu
dCgpLT5zdHlsZVNlbGVjdG9yKCktPmZvbnRTZWxlY3RvcigpOworICAgIHJldHVybiBtX3RleHRG
aWVsZC0+ZG9jdW1lbnQoKS0+c3R5bGVSZXNvbHZlcigpLT5mb250U2VsZWN0b3IoKTsKIH0KIAog
SG9zdFdpbmRvdyogQXV0b2ZpbGxQb3B1cE1lbnVDbGllbnQ6Omhvc3RXaW5kb3coKSBjb25zdApA
QCAtMjg1LDcgKzI4NSw3IEBAIHZvaWQgQXV0b2ZpbGxQb3B1cE1lbnVDbGllbnQ6OmluaXRpYWxp
emUoCiAgICAgcmVndWxhckZvbnREZXNjcmlwdGlvbi5zZXRDb21wdXRlZFNpemUoc3R5bGUtPmZv
bnREZXNjcmlwdGlvbigpLmNvbXB1dGVkU2l6ZSgpKTsKIAogICAgIEZvbnQgcmVndWxhckZvbnQo
cmVndWxhckZvbnREZXNjcmlwdGlvbiwgMCwgMCk7Ci0gICAgcmVndWxhckZvbnQudXBkYXRlKHRl
eHRGaWVsZC0+ZG9jdW1lbnQoKS0+c3R5bGVTZWxlY3RvcigpLT5mb250U2VsZWN0b3IoKSk7Cisg
ICAgcmVndWxhckZvbnQudXBkYXRlKHRleHRGaWVsZC0+ZG9jdW1lbnQoKS0+c3R5bGVSZXNvbHZl
cigpLT5mb250U2VsZWN0b3IoKSk7CiAgICAgLy8gVGhlIGRpcmVjdGlvbiBvZiB0ZXh0IGluIHBv
cHVwIG1lbnUgaXMgc2V0IHRoZSBzYW1lIGFzIHRoZSBkaXJlY3Rpb24gb2YKICAgICAvLyB0aGUg
aW5wdXQgZWxlbWVudDogdGV4dEZpZWxkLgogICAgIG1fcmVndWxhclN0eWxlID0gYWRvcHRQdHIo
bmV3IFBvcHVwTWVudVN0eWxlKENvbG9yOjpibGFjaywgQ29sb3I6OndoaXRlLCByZWd1bGFyRm9u
dCwgdHJ1ZSwgZmFsc2UsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJEZXZUb29sc0FnZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJE
ZXZUb29sc0FnZW50SW1wbC5jcHAKaW5kZXggOWUxODQ3NTcxZWNmZTZiOTIzMDE5NTgxN2MyYTQ5
MzcwZjU4NzA2NS4uOTE0Y2NlNWI4MTIyYjFjYzU0OTM1OGIzOWMyYjBlYjRkOTdkMjhhMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBs
LmNwcApAQCAtMjM2LDcgKzIzNiw3IEBAIHB1YmxpYzoKICAgICAgICAgZG91YmxlIHNpemVSYXRp
byA9IHN0YXRpY19jYXN0PGRvdWJsZT4oc2NhbGVkRnJhbWVTaXplLndpZHRoKSAvIG1fZW11bGF0
ZWRGcmFtZVNpemUud2lkdGg7CiAgICAgICAgIGZyYW1lLT5zZXRQYWdlQW5kVGV4dFpvb21GYWN0
b3JzKHNpemVSYXRpbyAqIG1fb3JpZ2luYWxab29tRmFjdG9yLCBtX3dlYlZpZXctPmVtdWxhdGVk
VGV4dFpvb21GYWN0b3IoKSk7CiAgICAgICAgIERvY3VtZW50KiBkb2MgPSBmcmFtZS0+ZG9jdW1l
bnQoKTsKLSAgICAgICAgZG9jLT5zdHlsZVNlbGVjdG9yQ2hhbmdlZChSZWNhbGNTdHlsZUltbWVk
aWF0ZWx5KTsKKyAgICAgICAgZG9jLT5zdHlsZVJlc29sdmVyQ2hhbmdlZChSZWNhbGNTdHlsZUlt
bWVkaWF0ZWx5KTsKICAgICAgICAgZG9jLT51cGRhdGVMYXlvdXQoKTsKICAgICB9CiAKQEAgLTMz
OCw3ICszMzgsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgZnJhbWVWaWV3LT5yZXNpemUob3Zl
cnJpZGVXaWR0aCwgb3ZlcnJpZGVIZWlnaHQpOwogCiAgICAgICAgIERvY3VtZW50KiBkb2MgPSBm
cmFtZVZpZXctPmZyYW1lKCktPmRvY3VtZW50KCk7Ci0gICAgICAgIGRvYy0+c3R5bGVTZWxlY3Rv
ckNoYW5nZWQoUmVjYWxjU3R5bGVJbW1lZGlhdGVseSk7CisgICAgICAgIGRvYy0+c3R5bGVSZXNv
bHZlckNoYW5nZWQoUmVjYWxjU3R5bGVJbW1lZGlhdGVseSk7CiAgICAgICAgIGRvYy0+dXBkYXRl
TGF5b3V0KCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYkhUTUxWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5t
bQppbmRleCBhOWIyOTFlNDk5ZjgwMjk3Y2M3NTY3OWYzOTBlZjZiZGUwNjFjNGE0Li40MmRkMTA0
OTJiYTRkMTBlZGU5NDg2YWZmMWU4NTEyYzhiYjQ5NmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViSFRNTFZpZXcubW0KQEAgLTMwMTgsNyArMzAxOCw3IEBAIFdFQkNPUkVfQ09NTUFO
RCh5YW5rQW5kU2VsZWN0KQogI2VuZGlmCiAKICAgICBpZiAoRnJhbWUqIGNvcmVGcmFtZSA9IGNv
cmUoW3NlbGYgX2ZyYW1lXSkpCi0gICAgICAgIGNvcmVGcmFtZS0+ZG9jdW1lbnQoKS0+c3R5bGVT
ZWxlY3RvckNoYW5nZWQoUmVjYWxjU3R5bGVJbW1lZGlhdGVseSk7CisgICAgICAgIGNvcmVGcmFt
ZS0+ZG9jdW1lbnQoKS0+c3R5bGVSZXNvbHZlckNoYW5nZWQoUmVjYWxjU3R5bGVJbW1lZGlhdGVs
eSk7CiAgICAgCiAjaWZkZWYgTE9HX1RJTUVTICAgICAgICAKICAgICBkb3VibGUgdGhpc1RpbWUg
PSBDRkFic29sdXRlVGltZUdldEN1cnJlbnQoKSAtIHN0YXJ0OwpAQCAtMzkyMyw3ICszOTIzLDcg
QEAgc3RhdGljIFBhc3NSZWZQdHI8S2V5Ym9hcmRFdmVudD4gY3VycmVudEtleWJvYXJkRXZlbnQo
RnJhbWUqIGNvcmVGcmFtZSkKIAogICAgICAgICAgICAgZG9jdW1lbnQtPnNldFBhZ2luYXRlZEZv
clNjcmVlbihfcHJpdmF0ZS0+cGFnaW5hdGVTY3JlZW5Db250ZW50KTsKICAgICAgICAgICAgIGRv
Y3VtZW50LT5zZXRQcmludGluZyhfcHJpdmF0ZS0+cHJpbnRpbmcpOwotICAgICAgICAgICAgZG9j
dW1lbnQtPnN0eWxlU2VsZWN0b3JDaGFuZ2VkKFJlY2FsY1N0eWxlSW1tZWRpYXRlbHkpOworICAg
ICAgICAgICAgZG9jdW1lbnQtPnN0eWxlUmVzb2x2ZXJDaGFuZ2VkKFJlY2FsY1N0eWxlSW1tZWRp
YXRlbHkpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0
L0FwaS9xd2ViZWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViZWxlbWVudC5j
cHAKaW5kZXggYjA1MzI5OGRlMzk0M2RhZDNiMGNlN2RlZTNiYjhhMDc1NGI1NjM3Ny4uMDY2ZTUy
NDQwMDJmNWNmOWI4NDI2OTI1NDNjNDQ4YjkzNTQ4MmVhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9xdC9BcGkvcXdlYmVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3
ZWJlbGVtZW50LmNwcApAQCAtODYyLDcgKzg2Miw3IEBAIFFTdHJpbmcgUVdlYkVsZW1lbnQ6OnN0
eWxlUHJvcGVydHkoY29uc3QgUVN0cmluZyAmbmFtZSwgU3R5bGVSZXNvbHZlU3RyYXRlZ3kgc3Ry
CiAgICAgICAgIC8vIGRlY2xhcmF0aW9ucywgYXMgd2VsbCBhcyBlbWJlZGRlZCBhbmQgaW5saW5l
IHN0eWxlIGRlY2xhcmF0aW9ucy4KIAogICAgICAgICBEb2N1bWVudCogZG9jID0gbV9lbGVtZW50
LT5kb2N1bWVudCgpOwotICAgICAgICBpZiAoUmVmUHRyPENTU1J1bGVMaXN0PiBydWxlcyA9IGRv
Yy0+c3R5bGVTZWxlY3RvcigpLT5zdHlsZVJ1bGVzRm9yRWxlbWVudChtX2VsZW1lbnQsIC8qYXV0
aG9yT25seSovIHRydWUpKSB7CisgICAgICAgIGlmIChSZWZQdHI8Q1NTUnVsZUxpc3Q+IHJ1bGVz
ID0gZG9jLT5zdHlsZVJlc29sdmVyKCktPnN0eWxlUnVsZXNGb3JFbGVtZW50KG1fZWxlbWVudCwg
LyphdXRob3JPbmx5Ki8gdHJ1ZSkpIHsKICAgICAgICAgICAgIGZvciAoaW50IGkgPSBydWxlcy0+
bGVuZ3RoKCk7IGkgPiAwOyAtLWkpIHsKICAgICAgICAgICAgICAgICBDU1NTdHlsZVJ1bGUqIHJ1
bGUgPSBzdGF0aWNfY2FzdDxDU1NTdHlsZVJ1bGUqPihydWxlcy0+aXRlbShpIC0gMSkpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVl
U3VwcG9ydFF0LmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRl
clRyZWVTdXBwb3J0UXQuY3BwCmluZGV4IGZmN2MwOTQxN2Q4ZjFkYzg4OGU5NjRiNWNmYjEyYTQw
M2RjYmQwNzUuLjFkNjlhNjAxMjQ3OGM1YmJiN2U1MWZiMDBjZGI3MDM0ZWM4MDViMjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBw
b3J0UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRl
clRyZWVTdXBwb3J0UXQuY3BwCkBAIC01MzAsNyArNTMwLDcgQEAgdm9pZCBEdW1wUmVuZGVyVHJl
ZVN1cHBvcnRRdDo6c2V0TWVkaWFUeXBlKFFXZWJGcmFtZSogZnJhbWUsIGNvbnN0IFFTdHJpbmcm
IHR5cGUKICAgICBXZWJDb3JlOjpGcmFtZSogY29yZUZyYW1lID0gUVdlYkZyYW1lUHJpdmF0ZTo6
Y29yZShmcmFtZSk7CiAgICAgV2ViQ29yZTo6RnJhbWVWaWV3KiB2aWV3ID0gY29yZUZyYW1lLT52
aWV3KCk7CiAgICAgdmlldy0+c2V0TWVkaWFUeXBlKHR5cGUpOwotICAgIGNvcmVGcmFtZS0+ZG9j
dW1lbnQoKS0+c3R5bGVTZWxlY3RvckNoYW5nZWQoUmVjYWxjU3R5bGVJbW1lZGlhdGVseSk7Cisg
ICAgY29yZUZyYW1lLT5kb2N1bWVudCgpLT5zdHlsZVJlc29sdmVyQ2hhbmdlZChSZWNhbGNTdHls
ZUltbWVkaWF0ZWx5KTsKICAgICB2aWV3LT5sYXlvdXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9SZW5kZXJUaGVtZVFTdHlsZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1JlbmRlclRoZW1lUVN0eWxlLmNwcAppbmRleCBm
MjRmZjRjMDFjNWNjNWUwNTIyNThkYzZjYWEzMTkwOTlhZWI1MTlhLi5jMTE5M2YyYmEwZjdiM2I5
ZTBiYWY4MGFiYTE2MjljODA1ZTliNWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L1dl
YkNvcmVTdXBwb3J0L1JlbmRlclRoZW1lUVN0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L1JlbmRlclRoZW1lUVN0eWxlLmNwcApAQCAtMjg5LDcgKzI4OSw3IEBA
IHZvaWQgUmVuZGVyVGhlbWVRU3R5bGU6OmNvbXB1dGVTaXplQmFzZWRPblN0eWxlKFJlbmRlclN0
eWxlKiByZW5kZXJTdHlsZSkgY29uc3QKIAogCiAKLXZvaWQgUmVuZGVyVGhlbWVRU3R5bGU6OmFk
anVzdEJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5
bGUsIEVsZW1lbnQqKSBjb25zdAordm9pZCBSZW5kZXJUaGVtZVFTdHlsZTo6YWRqdXN0QnV0dG9u
U3R5bGUoU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBF
bGVtZW50KikgY29uc3QKIHsKICAgICAvLyBEaXRjaCB0aGUgYm9yZGVyLgogICAgIHN0eWxlLT5y
ZXNldEJvcmRlcigpOwpAQCAtMzE3LDcgKzMxNyw3IEBAIHZvaWQgUmVuZGVyVGhlbWVRU3R5bGU6
OmFkanVzdEJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSoK
ICAgICBmb250RmFtaWx5LnNldEZhbWlseShtX2J1dHRvbkZvbnRGYW1pbHkpOwogICAgIGZvbnRE
ZXNjcmlwdGlvbi5zZXRGYW1pbHkoZm9udEZhbWlseSk7CiAgICAgc3R5bGUtPnNldEZvbnREZXNj
cmlwdGlvbihmb250RGVzY3JpcHRpb24pOwotICAgIHN0eWxlLT5mb250KCkudXBkYXRlKHNlbGVj
dG9yLT5mb250U2VsZWN0b3IoKSk7CisgICAgc3R5bGUtPmZvbnQoKS51cGRhdGUoc3R5bGVSZXNv
bHZlci0+Zm9udFNlbGVjdG9yKCkpOwogICAgIHN0eWxlLT5zZXRMaW5lSGVpZ2h0KFJlbmRlclN0
eWxlOjppbml0aWFsTGluZUhlaWdodCgpKTsKICAgICBzZXRCdXR0b25TaXplKHN0eWxlKTsKICAg
ICBzZXRCdXR0b25QYWRkaW5nKHN0eWxlKTsKQEAgLTQwNyw5ICs0MDcsOSBAQCBib29sIFJlbmRl
clRoZW1lUVN0eWxlOjpwYWludFRleHRGaWVsZChSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50
SW5mbyYgaSwgY29ucwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBSZW5kZXJUaGVtZVFT
dHlsZTo6YWRqdXN0VGV4dEFyZWFTdHlsZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvciwgUmVuZGVy
U3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlbGVtZW50KSBjb25zdAordm9pZCBSZW5kZXJUaGVtZVFT
dHlsZTo6YWRqdXN0VGV4dEFyZWFTdHlsZShTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyLCBS
ZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0CiB7Ci0gICAgYWRqdXN0
VGV4dEZpZWxkU3R5bGUoc2VsZWN0b3IsIHN0eWxlLCBlbGVtZW50KTsKKyAgICBhZGp1c3RUZXh0
RmllbGRTdHlsZShzdHlsZVJlc29sdmVyLCBzdHlsZSwgZWxlbWVudCk7CiB9CiAKIGJvb2wgUmVu
ZGVyVGhlbWVRU3R5bGU6OnBhaW50VGV4dEFyZWEoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWlu
dEluZm8mIGksIGNvbnN0IEludFJlY3QmIHIpCkBAIC00NjMsMTMgKzQ2MywxMyBAQCBib29sIFJl
bmRlclRoZW1lUVN0eWxlOjpwYWludE1lbnVMaXN0KFJlbmRlck9iamVjdCogbywgY29uc3QgUGFp
bnRJbmZvJiBpLCBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBSZW5kZXJUaGVt
ZVFTdHlsZTo6YWRqdXN0TWVudUxpc3RCdXR0b25TdHlsZShTdHlsZVJlc29sdmVyKiBzZWxlY3Rv
ciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlKSBjb25zdAordm9pZCBSZW5kZXJUaGVt
ZVFTdHlsZTo6YWRqdXN0TWVudUxpc3RCdXR0b25TdHlsZShTdHlsZVJlc29sdmVyKiBzdHlsZVJl
c29sdmVyLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGUpIGNvbnN0CiB7CiAgICAgLy8g
V09SS0FST1VORCBiZWNhdXNlIGh0bWwuY3NzIHNwZWNpZmllcyAtd2Via2l0LWJvcmRlci1yYWRp
dXMgZm9yIDxzZWxlY3Q+IHNvIHdlIG92ZXJyaWRlIGl0IGhlcmUKICAgICAvLyBzZWUgYWxzbyBo
dHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODM5OQogICAgIHN0eWxlLT5y
ZXNldEJvcmRlclJhZGl1cygpOwogCi0gICAgUmVuZGVyVGhlbWVRdDo6YWRqdXN0TWVudUxpc3RC
dXR0b25TdHlsZShzZWxlY3Rvciwgc3R5bGUsIGUpOworICAgIFJlbmRlclRoZW1lUXQ6OmFkanVz
dE1lbnVMaXN0QnV0dG9uU3R5bGUoc3R5bGVSZXNvbHZlciwgc3R5bGUsIGUpOwogfQogCiBib29s
IFJlbmRlclRoZW1lUVN0eWxlOjpwYWludE1lbnVMaXN0QnV0dG9uKFJlbmRlck9iamVjdCogbywg
Y29uc3QgUGFpbnRJbmZvJiBpLApAQCAtNjI3LDkgKzYyNyw5IEBAIGJvb2wgUmVuZGVyVGhlbWVR
U3R5bGU6OnBhaW50U2xpZGVyVGh1bWIoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8m
IHBpLAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBSZW5kZXJUaGVtZVFTdHlsZTo6YWRq
dXN0U2xpZGVyVGh1bWJTdHlsZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUq
IHN0eWxlLCBFbGVtZW50KiBlbGVtZW50KSBjb25zdAordm9pZCBSZW5kZXJUaGVtZVFTdHlsZTo6
YWRqdXN0U2xpZGVyVGh1bWJTdHlsZShTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyLCBSZW5k
ZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0CiB7Ci0gICAgUmVuZGVyVGhl
bWU6OmFkanVzdFNsaWRlclRodW1iU3R5bGUoc2VsZWN0b3IsIHN0eWxlLCBlbGVtZW50KTsKKyAg
ICBSZW5kZXJUaGVtZTo6YWRqdXN0U2xpZGVyVGh1bWJTdHlsZShzdHlsZVJlc29sdmVyLCBzdHls
ZSwgZWxlbWVudCk7CiAgICAgc3R5bGUtPnNldEJveFNoYWRvdyhudWxscHRyKTsKIH0KIApAQCAt
NjM5LDExICs2MzksMTAgQEAgYm9vbCBSZW5kZXJUaGVtZVFTdHlsZTo6cGFpbnRTZWFyY2hGaWVs
ZChSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgcGksCiAgICAgcmV0dXJuIHBhaW50
VGV4dEZpZWxkKG8sIHBpLCByKTsKIH0KIAotdm9pZCBSZW5kZXJUaGVtZVFTdHlsZTo6YWRqdXN0
U2VhcmNoRmllbGREZWNvcmF0aW9uU3R5bGUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIFJlbmRl
clN0eWxlKiBzdHlsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRWxlbWVudCogZSkgY29uc3QKK3ZvaWQgUmVuZGVyVGhlbWVRU3R5bGU6OmFk
anVzdFNlYXJjaEZpZWxkRGVjb3JhdGlvblN0eWxlKFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2
ZXIsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZSkgY29uc3QKIHsKICAgICBub3RJbXBs
ZW1lbnRlZCgpOwotICAgIFJlbmRlclRoZW1lOjphZGp1c3RTZWFyY2hGaWVsZERlY29yYXRpb25T
dHlsZShzZWxlY3Rvciwgc3R5bGUsIGUpOworICAgIFJlbmRlclRoZW1lOjphZGp1c3RTZWFyY2hG
aWVsZERlY29yYXRpb25TdHlsZShzdHlsZVJlc29sdmVyLCBzdHlsZSwgZSk7CiB9CiAKIGJvb2wg
UmVuZGVyVGhlbWVRU3R5bGU6OnBhaW50U2VhcmNoRmllbGREZWNvcmF0aW9uKFJlbmRlck9iamVj
dCogbywgY29uc3QgUGFpbnRJbmZvJiBwaSwKQEAgLTY1MywxMSArNjUyLDEwIEBAIGJvb2wgUmVu
ZGVyVGhlbWVRU3R5bGU6OnBhaW50U2VhcmNoRmllbGREZWNvcmF0aW9uKFJlbmRlck9iamVjdCog
bywgY29uc3QgUGFpbnRJCiAgICAgcmV0dXJuIFJlbmRlclRoZW1lOjpwYWludFNlYXJjaEZpZWxk
RGVjb3JhdGlvbihvLCBwaSwgcik7CiB9CiAKLXZvaWQgUmVuZGVyVGhlbWVRU3R5bGU6OmFkanVz
dFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRpb25TdHlsZShTdHlsZVJlc29sdmVyKiBzZWxlY3Rv
ciwgUmVuZGVyU3R5bGUqIHN0eWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRWxlbWVudCogZSkgY29uc3QKK3ZvaWQgUmVuZGVy
VGhlbWVRU3R5bGU6OmFkanVzdFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRpb25TdHlsZShTdHls
ZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGUp
IGNvbnN0CiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICBSZW5kZXJUaGVtZTo6YWRqdXN0
U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvblN0eWxlKHNlbGVjdG9yLCBzdHlsZSwgZSk7Cisg
ICAgUmVuZGVyVGhlbWU6OmFkanVzdFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRpb25TdHlsZShz
dHlsZVJlc29sdmVyLCBzdHlsZSwgZSk7CiB9CiAKIGJvb2wgUmVuZGVyVGhlbWVRU3R5bGU6OnBh
aW50U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvbihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBh
aW50SW5mbyYgcGksCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>