<?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>192858</bug_id>
          
          <creation_ts>2018-12-19 09:46:27 -0800</creation_ts>
          <short_desc>Resync libwebrtc with M72 branch</short_desc>
          <delta_ts>2018-12-19 14:46:31 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebRTC</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>achristensen</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1489336</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-12-19 09:46:27 -0800</bug_when>
    <thetext>Resync libwebrtc with M72 branch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489338</commentid>
    <comment_count>1</comment_count>
      <attachid>357688</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-12-19 09:49:54 -0800</bug_when>
    <thetext>Created attachment 357688
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489451</commentid>
    <comment_count>2</comment_count>
      <attachid>357688</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2018-12-19 13:56:19 -0800</bug_when>
    <thetext>Comment on attachment 357688
Patch

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489491</commentid>
    <comment_count>3</comment_count>
      <attachid>357688</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-12-19 14:45:20 -0800</bug_when>
    <thetext>Comment on attachment 357688
Patch

Clearing flags on attachment: 357688

Committed r239396: &lt;https://trac.webkit.org/changeset/239396&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489492</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-12-19 14:45:21 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489493</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-12-19 14:46:31 -0800</bug_when>
    <thetext>&lt;rdar://problem/46853091&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357688</attachid>
            <date>2018-12-19 09:49:54 -0800</date>
            <delta_ts>2018-12-19 14:45:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192858-20181219094951.patch</filename>
            <type>text/plain</type>
            <size>97656</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5MjgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ2hhbmdlTG9nIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5n
ZUxvZwppbmRleCA2ZTcxMDg2MGNjMmI3N2Y5MWYxZjkxNTUzZGU4OTQxYWJmYTBkNDc0Li42Mzgy
NmUxOGVhMjgxNGFmZTlmODA0OWVlMjI5N2U4MmNhY2Y1ZDA2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NiBAQAorMjAxOC0xMi0xOSAgWW91ZW5uIEZh
YmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVzeW5jIGxpYndlYnJ0YyB3aXRo
IE03MiBicmFuY2gKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5Mjg1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIE1lcmdlIGNoYW5nZXMgbWFkZSB1cHN0cmVhbS4KKyAgICAgICAgU29tZSBvZiB0aGVzZSBj
aGFuZ2VzIGltcHJvdmUgc3VwcG9ydCBvZiB1bmlmaWVkIHBsYW4gYW5kIGJhY2t3YXJkIGNvbXBh
dGlibGl0eS4KKworICAgICAgICAqIFNvdXJjZS93ZWJydGMvYXBpL2NhbmRpZGF0ZS5jYzoKKyAg
ICAgICAgKiBTb3VyY2Uvd2VicnRjL2FwaS9jYW5kaWRhdGUuaDoKKyAgICAgICAgKiBTb3VyY2Uv
d2VicnRjL2FwaS9ydHByZWNlaXZlcmludGVyZmFjZS5oOgorICAgICAgICAqIFNvdXJjZS93ZWJy
dGMvYXBpL3VtYW1ldHJpY3MuaDoKKyAgICAgICAgKiBTb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2lu
ZS93ZWJydGN2aWRlb2VuZ2luZS5jYzoKKyAgICAgICAgKiBTb3VyY2Uvd2VicnRjL21lZGlhL2Vu
Z2luZS93ZWJydGN2aWRlb2VuZ2luZV91bml0dGVzdC5jYzoKKyAgICAgICAgKiBTb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2FnYzJfY29tbW9uLmg6CisgICAgICAg
ICogU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9kZXNrdG9wX2FuZF9jdXJz
b3JfY29tcG9zZXIuY2M6CisgICAgICAgICogU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2Nv
ZGluZy9CVUlMRC5nbjoKKyAgICAgICAgKiBTb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29k
aW5nL2NvZGVjcy92cDkvc3ZjX2NvbmZpZy5jYzoKKyAgICAgICAgKiBTb3VyY2Uvd2VicnRjL21v
ZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDkvc3ZjX3JhdGVfYWxsb2NhdG9yLmNjOgorICAg
ICAgICAqIFNvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOS9zdmNf
cmF0ZV9hbGxvY2F0b3IuaDoKKyAgICAgICAgKiBTb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9f
Y29kaW5nL2NvZGVjcy92cDkvc3ZjX3JhdGVfYWxsb2NhdG9yX3VuaXR0ZXN0LmNjOgorICAgICAg
ICAqIFNvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOS90ZXN0L3Zw
OV9pbXBsX3VuaXR0ZXN0LmNjOgorICAgICAgICAqIFNvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRl
b19jb2RpbmcvY29kZWNzL3ZwOS92cDkuY2M6CisgICAgICAgICogU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL3ZpZGVvX2NvZGluZy92aWRlb19jb2RlY19pbml0aWFsaXplci5jYzoKKyAgICAgICAgKiBT
b3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL3ZpZGVvX2NvZGVjX2luaXRpYWxpemVy
X3VuaXR0ZXN0LmNjOgorICAgICAgICAqIFNvdXJjZS93ZWJydGMvcDJwL2Jhc2UvcDJwdHJhbnNw
b3J0Y2hhbm5lbF91bml0dGVzdC5jYzoKKyAgICAgICAgKiBTb3VyY2Uvd2VicnRjL3AycC9iYXNl
L3BvcnQuY2M6CisgICAgICAgICogU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9wb3J0Lmg6CisgICAg
ICAgICogU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9wb3J0YWxsb2NhdG9yLmNjOgorICAgICAgICAq
IFNvdXJjZS93ZWJydGMvcDJwL2NsaWVudC9iYXNpY3BvcnRhbGxvY2F0b3IuY2M6CisgICAgICAg
ICogU291cmNlL3dlYnJ0Yy9wMnAvY2xpZW50L2Jhc2ljcG9ydGFsbG9jYXRvcl91bml0dGVzdC5j
YzoKKyAgICAgICAgKiBTb3VyY2Uvd2VicnRjL3BjL3BlZXJjb25uZWN0aW9uLmNjOgorICAgICAg
ICAqIFNvdXJjZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBTb3VyY2Uv
d2VicnRjL3BjL3BlZXJjb25uZWN0aW9uX2ludGVncmF0aW9udGVzdC5jYzoKKyAgICAgICAgKiBT
b3VyY2Uvd2VicnRjL3BjL3BlZXJjb25uZWN0aW9uaW50ZXJuYWwuaDoKKyAgICAgICAgKiBTb3Vy
Y2Uvd2VicnRjL3BjL3N0YXRzY29sbGVjdG9yLmNjOgorICAgICAgICAqIFNvdXJjZS93ZWJydGMv
cGMvc3RhdHNjb2xsZWN0b3IuaDoKKyAgICAgICAgKiBTb3VyY2Uvd2VicnRjL3BjL3Rlc3QvZmFr
ZXBlZXJjb25uZWN0aW9uYmFzZS5oOgorICAgICAgICAqIFNvdXJjZS93ZWJydGMvcGMvdGVzdC9m
YWtlcGVlcmNvbm5lY3Rpb25mb3JzdGF0cy5oOgorICAgICAgICAqIFNvdXJjZS93ZWJydGMvcGMv
dGVzdC9tb2NrcGVlcmNvbm5lY3Rpb25vYnNlcnZlcnMuaDoKKyAgICAgICAgKHdlYnJ0Yzo6TW9j
a1N0YXRzT2JzZXJ2ZXI6Ok9uQ29tcGxldGUpOgorICAgICAgICAod2VicnRjOjpNb2NrU3RhdHNP
YnNlcnZlcjo6VHJhY2tJZHMgY29uc3QpOgorICAgICAgICAqIFNvdXJjZS93ZWJydGMvcGMvd2Vi
cnRjc2RwX3VuaXR0ZXN0LmNjOgorICAgICAgICAqIFNvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZmFr
ZV9tZG5zX3Jlc3BvbmRlci5oOgorICAgICAgICAod2VicnRjOjpGYWtlTWRuc1Jlc3BvbmRlcjo6
R2V0TWFwcGVkQWRkcmVzc0Zvck5hbWUgY29uc3QpOgorICAgICAgICAqIFNvdXJjZS93ZWJydGMv
cnRjX2Jhc2UvZmFrZW5ldHdvcmsuaDoKKyAgICAgICAgKHJ0Yzo6RmFrZU5ldHdvcmtNYW5hZ2Vy
OjpDcmVhdGVNZG5zUmVzcG9uZGVyKToKKyAgICAgICAgKHJ0Yzo6RmFrZU5ldHdvcmtNYW5hZ2Vy
OjpHZXRNZG5zUmVzcG9uZGVyRm9yVGVzdGluZyBjb25zdCk6CisgICAgICAgICogU291cmNlL3dl
YnJ0Yy92aWRlby92aWRlb19zZW5kX3N0cmVhbV9pbXBsLmNjOgorICAgICAgICAqIFNvdXJjZS93
ZWJydGMvdmlkZW8vdmlkZW9fc3RyZWFtX2VuY29kZXIuY2M6CisKIDIwMTgtMTItMTUgIFlvdWVu
biBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIE1ha2UgUlRDUnRwU2VuZGVy
LnNldFBhcmFtZXRlcnMgdG8gYWN0aXZhdGUgc3BlY2lmaWMgZW5jb2RpbmdzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvY2FuZGlkYXRl
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2NhbmRp
ZGF0ZS5jYwppbmRleCAyNzViMTczNjZjMjFjZGNkMGU3ZDRlNWVhM2M3ODA4ZWU1NDczY2EyLi41
NjM3NTY2ZjZhOTg5N2JlY2QwZjJjNTM2ZTI1MmI4MWNmMzMyZmQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvY2FuZGlkYXRlLmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9jYW5kaWRh
dGUuY2MKQEAgLTEyNSw0ICsxMjUsMTkgQEAgYm9vbCBDYW5kaWRhdGU6Om9wZXJhdG9yIT0oY29u
c3QgQ2FuZGlkYXRlJiBvKSBjb25zdCB7CiAgIHJldHVybiAhKCp0aGlzID09IG8pOwogfQogCitD
YW5kaWRhdGUgQ2FuZGlkYXRlOjpUb1Nhbml0aXplZENvcHkoYm9vbCB1c2VfaG9zdG5hbWVfYWRk
cmVzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGZpbHRlcl9y
ZWxhdGVkX2FkZHJlc3MpIGNvbnN0IHsKKyAgQ2FuZGlkYXRlIGNvcHkoKnRoaXMpOworICBpZiAo
dXNlX2hvc3RuYW1lX2FkZHJlc3MpIHsKKyAgICBydGM6OlNvY2tldEFkZHJlc3MgaG9zdG5hbWVf
b25seV9hZGRyKGFkZHJlc3MoKS5ob3N0bmFtZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYWRkcmVzcygpLnBvcnQoKSk7CisgICAgY29weS5zZXRfYWRkcmVz
cyhob3N0bmFtZV9vbmx5X2FkZHIpOworICB9CisgIGlmIChmaWx0ZXJfcmVsYXRlZF9hZGRyZXNz
KSB7CisgICAgY29weS5zZXRfcmVsYXRlZF9hZGRyZXNzKAorICAgICAgICBydGM6OkVtcHR5U29j
a2V0QWRkcmVzc1dpdGhGYW1pbHkoY29weS5hZGRyZXNzKCkuZmFtaWx5KCkpKTsKKyAgfQorICBy
ZXR1cm4gY29weTsKK30KKwogfSAgLy8gbmFtZXNwYWNlIGNyaWNrZXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9jYW5kaWRhdGUuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9jYW5kaWRhdGUu
aAppbmRleCA0YzY1MGQ5YmRiZDUyZDNjMzRkZTBmMzU0MDZkMTdiODAyY2ZhYzA4Li4wMmI0YmNh
ODJiZDMwNmEwYmZkMWQ3ZjhmMWI4Njk4YzU5Y2QzMDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvY2FuZGlkYXRlLmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2NhbmRpZGF0ZS5oCkBA
IC0xNjYsNiArMTY2LDE2IEBAIGNsYXNzIFJUQ19FWFBPUlQgQ2FuZGlkYXRlIHsKICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IENhbmRpZGF0ZSYgbykgY29uc3Q7CiAgIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBDYW5kaWRhdGUmIG8pIGNvbnN0OwogCisgIC8vIFJldHVybnMgYSBzYW5pdGl6ZWQgY29w
eSBjb25maWd1cmVkIGJ5IHRoZSBnaXZlbiBib29sZWFucy4gSWYKKyAgLy8gfHVzZV9ob3N0X2Fk
ZHJlc3N8IGlzIHRydWUsIHRoZSByZXR1cm5lZCBjb3B5IGhhcyBpdHMgSVAgcmVtb3ZlZCBmcm9t
CisgIC8vIHxhZGRyZXNzKCl8LCB3aGljaCBsZWFkcyB8YWRkcmVzcygpfCB0byBiZSBhIGhvc3Ru
YW1lIGFkZHJlc3MuIElmCisgIC8vIHxmaWx0ZXJfcmVsYXRlZF9hZGRyZXNzfCwgdGhlIHJldHVy
bmVkIGNvcHkgaGFzIGl0cyByZWxhdGVkIGFkZHJlc3MgcmVzZXQKKyAgLy8gdG8gdGhlIHdpbGRj
YXJkIGFkZHJlc3MgKGkuZS4gMC4wLjAuMCBmb3IgSVB2NCBhbmQgOjogZm9yIElQdjYpLiBOb3Rl
IHRoYXQKKyAgLy8gc2V0dGluZyBib3RoIGJvb2xlYW5zIHRvIGZhbHNlIHJldHVybnMgYW4gaWRl
bnRpY2FsIGNvcHkgdG8gdGhlIG9yaWdpbmFsCisgIC8vIGNhbmRpZGF0ZS4KKyAgQ2FuZGlkYXRl
IFRvU2FuaXRpemVkQ29weShib29sIHVzZV9ob3N0bmFtZV9hZGRyZXNzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJvb2wgZmlsdGVyX3JlbGF0ZWRfYWRkcmVzcykgY29uc3Q7CisKICBw
cml2YXRlOgogICBzdGQ6OnN0cmluZyBUb1N0cmluZ0ludGVybmFsKGJvb2wgc2Vuc2l0aXZlKSBj
b25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvYXBpL3J0cHJlY2VpdmVyaW50ZXJmYWNlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvcnRwcmVjZWl2ZXJpbnRlcmZhY2UuaAppbmRleCAyNjZm
NmFjN2RkNjcyMjA5YzJmOTRkOTNmZDUyMDg5MmM3ZDZlM2JiLi4yNjE5NzM1ZWJlYzI2YzFhZTM1
NjUzZTY4YzI0NTgzZWUwN2U2NzIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvcnRwcmVjZWl2ZXJpbnRlcmZhY2UuaAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvcnRwcmVjZWl2ZXJpbnRl
cmZhY2UuaApAQCAtMTQ2LDYgKzE0Niw3IEBAIGNsYXNzIFJ0cFJlY2VpdmVySW50ZXJmYWNlIDog
cHVibGljIHJ0Yzo6UmVmQ291bnRJbnRlcmZhY2UgewogQkVHSU5fU0lHTkFMSU5HX1BST1hZX01B
UChSdHBSZWNlaXZlcikKIFBST1hZX1NJR05BTElOR19USFJFQURfREVTVFJVQ1RPUigpCiBQUk9Y
WV9DT05TVE1FVEhPRDAocnRjOjpzY29wZWRfcmVmcHRyPE1lZGlhU3RyZWFtVHJhY2tJbnRlcmZh
Y2U+LCB0cmFjaykKK1BST1hZX0NPTlNUTUVUSE9EMChzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4s
IHN0cmVhbV9pZHMpCiBQUk9YWV9DT05TVE1FVEhPRDAoc3RkOjp2ZWN0b3I8cnRjOjpzY29wZWRf
cmVmcHRyPE1lZGlhU3RyZWFtSW50ZXJmYWNlPj4sCiAgICAgICAgICAgICAgICAgICAgc3RyZWFt
cykKIFBST1hZX0NPTlNUTUVUSE9EMChjcmlja2V0OjpNZWRpYVR5cGUsIG1lZGlhX3R5cGUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkv
dW1hbWV0cmljcy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
YXBpL3VtYW1ldHJpY3MuaAppbmRleCA4OGFiMDhjMWJlZjlhNjhhNDM3ZDE4ZjI5YTllMzVhZGRh
NWQ0YmI0Li4yMzllZmYzODY5YmI0ZmM1MmM2MTVkYmFiNDRlODcyMjU1OTFjOTIzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdW1hbWV0
cmljcy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Fw
aS91bWFtZXRyaWNzLmgKQEAgLTc5LDEyICs3OSwxNyBAQCBlbnVtIEljZUNhbmRpZGF0ZVBhaXJU
eXBlIHsKICAga0ljZUNhbmRpZGF0ZVBhaXJQcmZseFNyZmx4LAogICBrSWNlQ2FuZGlkYXRlUGFp
clByZmx4UmVsYXksCiAKLSAgLy8gVGhlIGZvbGxvd2luZyA0IHR5cGVzIHRlbGwgd2hldGhlciBs
b2NhbCBhbmQgcmVtb3RlIGhvc3RzIGhhdmUgcHJpdmF0ZSBvcgotICAvLyBwdWJsaWMgSVAgYWRk
cmVzc2VzLgorICAvLyBUaGUgZm9sbG93aW5nIDkgdHlwZXMgdGVsbCB3aGV0aGVyIGxvY2FsIGFu
ZCByZW1vdGUgaG9zdHMgaGF2ZSBob3N0bmFtZSwKKyAgLy8gcHJpdmF0ZSBvciBwdWJsaWMgSVAg
YWRkcmVzc2VzLgogICBrSWNlQ2FuZGlkYXRlUGFpckhvc3RQcml2YXRlSG9zdFByaXZhdGUsCiAg
IGtJY2VDYW5kaWRhdGVQYWlySG9zdFByaXZhdGVIb3N0UHVibGljLAogICBrSWNlQ2FuZGlkYXRl
UGFpckhvc3RQdWJsaWNIb3N0UHJpdmF0ZSwKICAga0ljZUNhbmRpZGF0ZVBhaXJIb3N0UHVibGlj
SG9zdFB1YmxpYywKKyAga0ljZUNhbmRpZGF0ZVBhaXJIb3N0TmFtZUhvc3ROYW1lLAorICBrSWNl
Q2FuZGlkYXRlUGFpckhvc3ROYW1lSG9zdFByaXZhdGUsCisgIGtJY2VDYW5kaWRhdGVQYWlySG9z
dE5hbWVIb3N0UHVibGljLAorICBrSWNlQ2FuZGlkYXRlUGFpckhvc3RQcml2YXRlSG9zdE5hbWUs
CisgIGtJY2VDYW5kaWRhdGVQYWlySG9zdFB1YmxpY0hvc3ROYW1lLAogICBrSWNlQ2FuZGlkYXRl
UGFpck1heAogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL3dlYnJ0Y3ZpZGVvZW5naW5lLmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL3dlYnJ0Y3ZpZGVv
ZW5naW5lLmNjCmluZGV4IDU2NTZlOGU3ZjEyNWIwMGNmYjFjYWQzOWQ2NThlMGZkYWE0MGFlNDQu
LjkwNzU0NDgyMTI4ODQ0YTRhZjBjNTgyZTc4ZDkxOGM0ZDFmMGI1YTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS93ZWJy
dGN2aWRlb2VuZ2luZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tZWRpYS9lbmdpbmUvd2VicnRjdmlkZW9lbmdpbmUuY2MKQEAgLTE5ODYsNyArMTk4
Niw5IEBAIFdlYlJ0Y1ZpZGVvQ2hhbm5lbDo6V2ViUnRjVmlkZW9TZW5kU3RyZWFtOjpDcmVhdGVW
aWRlb0VuY29kZXJDb25maWcoCiAgIFJUQ19EQ0hFQ0tfR0UocnRwX3BhcmFtZXRlcnNfLmVuY29k
aW5ncy5zaXplKCksCiAgICAgICAgICAgICAgICAgZW5jb2Rlcl9jb25maWcubnVtYmVyX29mX3N0
cmVhbXMpOwogICBSVENfRENIRUNLX0dUKGVuY29kZXJfY29uZmlnLm51bWJlcl9vZl9zdHJlYW1z
LCAwKTsKLSAgZW5jb2Rlcl9jb25maWcuc2ltdWxjYXN0X2xheWVycy5yZXNpemUoZW5jb2Rlcl9j
b25maWcubnVtYmVyX29mX3N0cmVhbXMpOworCisgIC8vIENvcHkgYWxsIHByb3ZpZGVkIGNvbnN0
cmFpbnRzLgorICBlbmNvZGVyX2NvbmZpZy5zaW11bGNhc3RfbGF5ZXJzLnJlc2l6ZShydHBfcGFy
YW1ldGVyc18uZW5jb2RpbmdzLnNpemUoKSk7CiAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZW5j
b2Rlcl9jb25maWcuc2ltdWxjYXN0X2xheWVycy5zaXplKCk7ICsraSkgewogICAgIGVuY29kZXJf
Y29uZmlnLnNpbXVsY2FzdF9sYXllcnNbaV0uYWN0aXZlID0KICAgICAgICAgcnRwX3BhcmFtZXRl
cnNfLmVuY29kaW5nc1tpXS5hY3RpdmU7CkBAIC0yNjk4LDcgKzI3MDAsNyBAQCBzdGQ6OnZlY3Rv
cjx3ZWJydGM6OlZpZGVvU3RyZWFtPiBFbmNvZGVyU3RyZWFtRmFjdG9yeTo6Q3JlYXRlRW5jb2Rl
clN0cmVhbXMoCiAgICAgUlRDX0RDSEVDS19FUSgxLCBlbmNvZGVyX2NvbmZpZy5udW1iZXJfb2Zf
c3RyZWFtcyk7CiAgIH0KICAgUlRDX0RDSEVDS19HVChlbmNvZGVyX2NvbmZpZy5udW1iZXJfb2Zf
c3RyZWFtcywgMCk7Ci0gIFJUQ19EQ0hFQ0tfRVEoZW5jb2Rlcl9jb25maWcuc2ltdWxjYXN0X2xh
eWVycy5zaXplKCksCisgIFJUQ19EQ0hFQ0tfR0UoZW5jb2Rlcl9jb25maWcuc2ltdWxjYXN0X2xh
eWVycy5zaXplKCksCiAgICAgICAgICAgICAgICAgZW5jb2Rlcl9jb25maWcubnVtYmVyX29mX3N0
cmVhbXMpOwogICBzdGQ6OnZlY3Rvcjx3ZWJydGM6OlZpZGVvU3RyZWFtPiBsYXllcnM7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlh
L2VuZ2luZS93ZWJydGN2aWRlb2VuZ2luZV91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS93ZWJydGN2aWRlb2VuZ2luZV91
bml0dGVzdC5jYwppbmRleCBhYjA0ZmE2YWYzZTVhNjY1MTE1NDkwNWI0MDg4NzAyOWE5MTY1ZTlk
Li40MzUxZjU1OWEyNDMwNDRjNzE5ZjEwOTE4NGQ3MTA1MzlkMjk3NjkxIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvd2Vi
cnRjdmlkZW9lbmdpbmVfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL3dlYnJ0Y3ZpZGVvZW5naW5lX3VuaXR0ZXN0
LmNjCkBAIC0zMTIwLDYgKzMxMjAsMzggQEAgVEVTVF9GKFZwOVNldHRpbmdzVGVzdCwgTXVsdGlw
bGVTc3Jjc0VuYWJsZXNTdmMpIHsKICAgRVhQRUNUX1RSVUUoY2hhbm5lbF8tPlNldFZpZGVvU2Vu
ZChzc3Jjc1swXSwgbnVsbHB0ciwgbnVsbHB0cikpOwogfQogCitURVNUX0YoVnA5U2V0dGluZ3NU
ZXN0LCBBbGxFbmNvZGluZ1BhcmFtZXRlcnNDb3BpZWQpIHsKKyAgY3JpY2tldDo6VmlkZW9TZW5k
UGFyYW1ldGVycyBzZW5kX3BhcmFtZXRlcnM7CisgIHNlbmRfcGFyYW1ldGVycy5jb2RlY3MucHVz
aF9iYWNrKEdldEVuZ2luZUNvZGVjKCJWUDkiKSk7CisgIEFTU0VSVF9UUlVFKGNoYW5uZWxfLT5T
ZXRTZW5kUGFyYW1ldGVycyhzZW5kX3BhcmFtZXRlcnMpKTsKKworICBjb25zdCBzaXplX3Qga051
bVNwYXRpYWxMYXllcnMgPSAzOworICBzdGQ6OnZlY3Rvcjx1aW50MzJfdD4gc3NyY3MgPSBNQUtF
X1ZFQ1RPUihrU3NyY3MzKTsKKworICBGYWtlVmlkZW9TZW5kU3RyZWFtKiBzdHJlYW0gPQorICAg
ICAgQWRkU2VuZFN0cmVhbShDcmVhdGVTaW1TdHJlYW1QYXJhbXMoImNuYW1lIiwgc3NyY3MpKTsK
KworICB3ZWJydGM6OlJ0cFBhcmFtZXRlcnMgcGFyYW1ldGVycyA9IGNoYW5uZWxfLT5HZXRSdHBT
ZW5kUGFyYW1ldGVycyhzc3Jjc1swXSk7CisgIEFTU0VSVF9FUShrTnVtU3BhdGlhbExheWVycywg
cGFyYW1ldGVycy5lbmNvZGluZ3Muc2l6ZSgpKTsKKyAgQVNTRVJUX1RSVUUocGFyYW1ldGVycy5l
bmNvZGluZ3NbMF0uYWN0aXZlKTsKKyAgQVNTRVJUX1RSVUUocGFyYW1ldGVycy5lbmNvZGluZ3Nb
MV0uYWN0aXZlKTsKKyAgQVNTRVJUX1RSVUUocGFyYW1ldGVycy5lbmNvZGluZ3NbMl0uYWN0aXZl
KTsKKyAgLy8gSW52ZXJ0IHZhbHVlIHRvIHZlcmlmeSBjb3B5aW5nLgorICBwYXJhbWV0ZXJzLmVu
Y29kaW5nc1sxXS5hY3RpdmUgPSBmYWxzZTsKKyAgRVhQRUNUX1RSVUUoY2hhbm5lbF8tPlNldFJ0
cFNlbmRQYXJhbWV0ZXJzKHNzcmNzWzBdLCBwYXJhbWV0ZXJzKS5vaygpKTsKKworICB3ZWJydGM6
OlZpZGVvRW5jb2RlckNvbmZpZyBlbmNvZGVyX2NvbmZpZyA9IHN0cmVhbS0+R2V0RW5jb2RlckNv
bmZpZygpLkNvcHkoKTsKKworICAvLyBudW1iZXJfb2Zfc3RyZWFtcyBzaG91bGQgYmUgMSBzaW5j
ZSBhbGwgc3BhdGlhbCBsYXllcnMgYXJlIHNlbnQgb24gdGhlCisgIC8vIHNhbWUgU1NSQy4gQnV0
IGVuY29kaW5nIHBhcmFtZXRlcnMgb2YgYWxsIGxheWVycyBpcyBzdXBwb3NlZCB0byBiZSBjb3Bp
ZWQKKyAgLy8gYW5kIHN0b3JlZCBpbiBzaW11bGNhc3RfbGF5ZXJzW10uCisgIEVYUEVDVF9FUSgx
dSwgZW5jb2Rlcl9jb25maWcubnVtYmVyX29mX3N0cmVhbXMpOworICBFWFBFQ1RfRVEoZW5jb2Rl
cl9jb25maWcuc2ltdWxjYXN0X2xheWVycy5zaXplKCksIGtOdW1TcGF0aWFsTGF5ZXJzKTsKKyAg
RVhQRUNUX1RSVUUoZW5jb2Rlcl9jb25maWcuc2ltdWxjYXN0X2xheWVyc1swXS5hY3RpdmUpOwor
ICBFWFBFQ1RfRkFMU0UoZW5jb2Rlcl9jb25maWcuc2ltdWxjYXN0X2xheWVyc1sxXS5hY3RpdmUp
OworICBFWFBFQ1RfVFJVRShlbmNvZGVyX2NvbmZpZy5zaW11bGNhc3RfbGF5ZXJzWzJdLmFjdGl2
ZSk7Cit9CisKIGNsYXNzIFZwOVNldHRpbmdzVGVzdFdpdGhGaWVsZFRyaWFsIDogcHVibGljIFZw
OVNldHRpbmdzVGVzdCB7CiAgcHVibGljOgogICBleHBsaWNpdCBWcDlTZXR0aW5nc1Rlc3RXaXRo
RmllbGRUcmlhbChjb25zdCBjaGFyKiBmaWVsZF90cmlhbHMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvYWdjMi9hZ2MyX2NvbW1vbi5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvYWdjMl9jb21tb24uaAppbmRl
eCA1NWRkNjQ4ZGI0OWFiMTYxYTFmOTg1MGVkNGE4N2U2ODljNjFlM2QyLi5hNjM4OWY0YzJkYTZh
MTcwZDk3MGI1OTkzNjc3ZDQ4YTc2OTZhYjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9h
Z2MyX2NvbW1vbi5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2FnYzJfY29tbW9uLmgKQEAgLTQxLDEw
ICs0MSwxMCBAQCBjb25zdGV4cHIgZmxvYXQga01heE5vaXNlTGV2ZWxEYmZzID0gLTUwLmY7CiAv
LyBUaGlzIGlzIHRoZSB0aHJlc2hvbGQgZm9yIHNwZWVjaC4gU3BlZWNoIGZyYW1lcyBhcmUgdXNl
ZCBmb3IgdXBkYXRpbmcgdGhlCiAvLyBzcGVlY2ggbGV2ZWwsIG1lYXN1cmluZyB0aGUgYW1vdW50
IG9mIHNwZWVjaCwgYW5kIGRlY2lkZSB3aGVuIHRvIGFsbG93IHRhcmdldAogLy8gZ2FpbiByZWR1
Y3Rpb24uCi1jb25zdGV4cHIgZmxvYXQga1ZhZENvbmZpZGVuY2VUaHJlc2hvbGQgPSAwLjRmOwor
Y29uc3RleHByIGZsb2F0IGtWYWRDb25maWRlbmNlVGhyZXNob2xkID0gMC45ZjsKIAogLy8gVGhl
IGFtb3VudCBvZiAnbWVtb3J5JyBvZiB0aGUgTGV2ZWwgRXN0aW1hdG9yLiBEZWNpZGVzIGxlYWsg
ZmFjdG9ycy4KLWNvbnN0ZXhwciBzaXplX3Qga0Z1bGxCdWZmZXJTaXplTXMgPSAxNjAwOworY29u
c3RleHByIHNpemVfdCBrRnVsbEJ1ZmZlclNpemVNcyA9IDEyMDA7CiBjb25zdGV4cHIgZmxvYXQg
a0Z1bGxCdWZmZXJMZWFrRmFjdG9yID0gMS5mIC0gMS5mIC8ga0Z1bGxCdWZmZXJTaXplTXM7CiAK
IGNvbnN0ZXhwciBmbG9hdCBrSW5pdGlhbFNwZWVjaExldmVsRXN0aW1hdGVEYmZzID0gLTMwLmY7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9kZXNrdG9wX2FuZF9jdXJzb3JfY29tcG9zZXIuY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3Bf
Y2FwdHVyZS9kZXNrdG9wX2FuZF9jdXJzb3JfY29tcG9zZXIuY2MKaW5kZXggNjdhNjkxOWI0NjYw
ZWNjMWE2Y2UxN2NiODdmOTRiMDZlNGY3NGQ3Mi4uMzBmMDk1MTE3YzMyYWQwZGFiZTJkZDU0OGQ1
ZTlhMjVhNjgzODM5MSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvZGVza3RvcF9hbmRfY3Vyc29yX2Nv
bXBvc2VyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2Rlc2t0b3BfYW5kX2N1cnNvcl9jb21wb3Nlci5jYwpA
QCAtMTcxLDExICsxNzEsMTkgQEAgdm9pZCBEZXNrdG9wQW5kQ3Vyc29yQ29tcG9zZXI6Ok9uQ2Fw
dHVyZVJlc3VsdCgKICAgaWYgKGZyYW1lICYmIGN1cnNvcl8pIHsKICAgICBpZiAoZnJhbWUtPnJl
Y3QoKS5Db250YWlucyhjdXJzb3JfcG9zaXRpb25fKSAmJgogICAgICAgICAhZGVza3RvcF9jYXB0
dXJlcl8tPklzT2NjbHVkZWQoY3Vyc29yX3Bvc2l0aW9uXykpIHsKLSAgICAgIGNvbnN0IGZsb2F0
IHNjYWxlID0gZnJhbWUtPnNjYWxlX2ZhY3RvcigpOwogICAgICAgRGVza3RvcFZlY3RvciByZWxh
dGl2ZV9wb3NpdGlvbiA9CiAgICAgICAgICAgY3Vyc29yX3Bvc2l0aW9uXy5zdWJ0cmFjdChmcmFt
ZS0+dG9wX2xlZnQoKSk7CisjaWYgZGVmaW5lZChXRUJSVENfTUFDKQorICAgICAgLy8gT24gT1NY
LCB0aGUgbG9naWNhbChESVApIGFuZCBwaHlzaWNhbCBjb29yZGluYXRlcyBhcmUgdXNlZCBtaXhp
bmdseS4KKyAgICAgIC8vIEZvciBleGFtcGxlLCB0aGUgY2FwdHVyZWQgY3Vyc29yIGhhcyBpdHMg
c2l6ZSBpbiBwaHlzaWNhbCBwaXhlbHMoMngpCisgICAgICAvLyBhbmQgbG9jYXRpb24gaW4gbG9n
aWNhbChESVApIHBpeGVscyBvbiBSZXRpbmEgbW9uaXRvci4gVGhpcyB3aWxsIGNhdXNlCisgICAg
ICAvLyBwcm9ibGVtIHdoZW4gdGhlIGRlc2t0b3AgaXMgbWl4ZWQgd2l0aCBSZXRpbmEgYW5kIG5v
bi1SZXRpbmEgbW9uaXRvcnMuCisgICAgICAvLyBTbyB3ZSB1c2UgRElQIHBpeGVsIGZvciBhbGwg
bG9jYXRpb24gaW5mbyBhbmQgY29tcGVuc2F0ZSB3aXRoIHRoZSBzY2FsZQorICAgICAgLy8gZmFj
dG9yIG9mIGN1cnJlbnQgZnJhbWUgdG8gdGhlIHxyZWxhdGl2ZV9wb3NpdGlvbnwuCisgICAgICBj
b25zdCBmbG9hdCBzY2FsZSA9IGZyYW1lLT5zY2FsZV9mYWN0b3IoKTsKICAgICAgIHJlbGF0aXZl
X3Bvc2l0aW9uLnNldChyZWxhdGl2ZV9wb3NpdGlvbi54KCkgKiBzY2FsZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZWxhdGl2ZV9wb3NpdGlvbi55KCkgKiBzY2FsZSk7CisjZW5kaWYK
ICAgICAgIGZyYW1lID0gYWJzbDo6bWFrZV91bmlxdWU8RGVza3RvcEZyYW1lV2l0aEN1cnNvcj4o
CiAgICAgICAgICAgc3RkOjptb3ZlKGZyYW1lKSwgKmN1cnNvcl8sIHJlbGF0aXZlX3Bvc2l0aW9u
KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9CVUlMRC5nbiBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL0JVSUxELmduCmlu
ZGV4IGFjMzU5YmM2NGY4Mjc3MTJlZjI1NDA2ZDdkMmNiMDZmNWE5ZGE0NzUuLjI3OTU1MTAxZWJi
YzkzNzI2M2ExZjIzZWVmMjdiODBkZmNmNDFjMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL0JVSUxELmdu
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
dmlkZW9fY29kaW5nL0JVSUxELmduCkBAIC00OTQsNiArNDk0LDcgQEAgcnRjX3N0YXRpY19saWJy
YXJ5KCJ3ZWJydGNfdnA5X2hlbHBlcnMiKSB7CiAgICAgIi4uLy4uL2FwaS92aWRlbzp2aWRlb19i
aXRyYXRlX2FsbG9jYXRvciIsCiAgICAgIi4uLy4uL2FwaS92aWRlb19jb2RlY3M6dmlkZW9fY29k
ZWNzX2FwaSIsCiAgICAgIi4uLy4uL2NvbW1vbl92aWRlbyIsCisgICAgIi4uLy4uL21vZHVsZXMv
dmlkZW9fY29kaW5nOmNvZGVjX2dsb2JhbHNfaGVhZGVycyIsCiAgICAgIi4uLy4uL3J0Y19iYXNl
OmNoZWNrcyIsCiAgIF0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDkvc3ZjX2NvbmZp
Zy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
dmlkZW9fY29kaW5nL2NvZGVjcy92cDkvc3ZjX2NvbmZpZy5jYwppbmRleCAzZTkyMjgwMTQ4Mzky
OGNjMTNlYTMxYzdkZWExM2E1NGJkZWVmM2IxLi4xNzU0MTk1ZDVjNDc0OGFkZWM4NzFlNzBhZmEz
ZTgyNGVhMGNlMzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA5L3N2Y19jb25maWcuY2MK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92
aWRlb19jb2RpbmcvY29kZWNzL3ZwOS9zdmNfY29uZmlnLmNjCkBAIC0xNCw4ICsxNCw4IEBACiAj
aW5jbHVkZSA8Y21hdGg+CiAjaW5jbHVkZSA8dmVjdG9yPgogCi0jaW5jbHVkZSAibW9kdWxlcy92
aWRlb19jb2RpbmcvY29kZWNzL3ZwOS9zdmNfcmF0ZV9hbGxvY2F0b3IuaCIKLSNpbmNsdWRlICJt
b2R1bGVzL3ZpZGVvX2NvZGluZy9pbmNsdWRlL3ZpZGVvX2NvZGVjX2ludGVyZmFjZS5oIgorI2lu
Y2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDkvaW5jbHVkZS92cDlfZ2xvYmFs
cy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsK
IApAQCAtNDYsNiArNDYsNyBAQCBzdGQ6OnZlY3RvcjxTcGF0aWFsTGF5ZXI+IENvbmZpZ3VyZVN2
Y1NjcmVlblNoYXJpbmcoc2l6ZV90IGlucHV0X3dpZHRoLAogICAgIHNwYXRpYWxfbGF5ZXIubWF4
Qml0cmF0ZSA9CiAgICAgICAgIHN0YXRpY19jYXN0PGludD4oa01heFNjcmVlblNoYXJpbmdMYXll
ckJpdHJhdGVLYnBzW3NsX2lkeF0pOwogICAgIHNwYXRpYWxfbGF5ZXIudGFyZ2V0Qml0cmF0ZSA9
IHNwYXRpYWxfbGF5ZXIubWF4Qml0cmF0ZTsKKyAgICBzcGF0aWFsX2xheWVyLmFjdGl2ZSA9IHRy
dWU7CiAgICAgc3BhdGlhbF9sYXllcnMucHVzaF9iYWNrKHNwYXRpYWxfbGF5ZXIpOwogICB9CiAK
QEAgLTY5LDEzICs3MCwxMyBAQCBzdGQ6OnZlY3RvcjxTcGF0aWFsTGF5ZXI+IENvbmZpZ3VyZVN2
Y05vcm1hbFZpZGVvKHNpemVfdCBpbnB1dF93aWR0aCwKICAgbnVtX3NwYXRpYWxfbGF5ZXJzID0K
ICAgICAgIHN0ZDo6bWluKHtudW1fc3BhdGlhbF9sYXllcnMsIG51bV9sYXllcnNfZml0X2hvcnos
IG51bV9sYXllcnNfZml0X3ZlcnR9KTsKIAotICBmbG9hdCB0b3BfZnJhY3Rpb24gPSAwLjsKICAg
Zm9yIChzaXplX3Qgc2xfaWR4ID0gMDsgc2xfaWR4IDwgbnVtX3NwYXRpYWxfbGF5ZXJzOyArK3Ns
X2lkeCkgewogICAgIFNwYXRpYWxMYXllciBzcGF0aWFsX2xheWVyID0gezB9OwogICAgIHNwYXRp
YWxfbGF5ZXIud2lkdGggPSBpbnB1dF93aWR0aCA+PiAobnVtX3NwYXRpYWxfbGF5ZXJzIC0gc2xf
aWR4IC0gMSk7CiAgICAgc3BhdGlhbF9sYXllci5oZWlnaHQgPSBpbnB1dF9oZWlnaHQgPj4gKG51
bV9zcGF0aWFsX2xheWVycyAtIHNsX2lkeCAtIDEpOwogICAgIHNwYXRpYWxfbGF5ZXIubWF4RnJh
bWVyYXRlID0gbWF4X2ZyYW1lcmF0ZV9mcHM7CiAgICAgc3BhdGlhbF9sYXllci5udW1iZXJPZlRl
bXBvcmFsTGF5ZXJzID0gbnVtX3RlbXBvcmFsX2xheWVyczsKKyAgICBzcGF0aWFsX2xheWVyLmFj
dGl2ZSA9IHRydWU7CiAKICAgICAvLyBtaW5CaXRyYXRlIGFuZCBtYXhCaXRyYXRlIGZvcm11bGFz
IHdlcmUgZGVyaXZlZCBmcm9tCiAgICAgLy8gc3ViamVjdGl2ZS1xdWFsaXR5IGRhdGEgdG8gZGV0
ZXJtaW5nIGJpdCByYXRlcyBiZWxvdyB3aGljaCB2aWRlbwpAQCAtOTUsMTQgKzk2LDggQEAgc3Rk
Ojp2ZWN0b3I8U3BhdGlhbExheWVyPiBDb25maWd1cmVTdmNOb3JtYWxWaWRlbyhzaXplX3QgaW5w
dXRfd2lkdGgsCiAgICAgc3BhdGlhbF9sYXllci50YXJnZXRCaXRyYXRlID0KICAgICAgICAgKHNw
YXRpYWxfbGF5ZXIubWluQml0cmF0ZSArIHNwYXRpYWxfbGF5ZXIubWF4Qml0cmF0ZSkgLyAyOwog
ICAgIHNwYXRpYWxfbGF5ZXJzLnB1c2hfYmFjayhzcGF0aWFsX2xheWVyKTsKLSAgICB0b3BfZnJh
Y3Rpb24gKz0gc3RkOjpwb3coa1NwYXRpYWxMYXllcmluZ1JhdGVTY2FsaW5nRmFjdG9yLCBzbF9p
ZHgpOwogICB9Ci0gIC8vIENvbXB1dGUgc3BhdGlhbF9sYXllcnNbbnVtX3NwYXRpYWxfbGF5ZXJz
IC0gMV0udGFyZ2V0Qml0cmF0ZSwgd2hpY2ggaXMKLSAgLy8gdXNlZCB0byBzZXQgbWF4X3BhZGRp
bmdfYml0cmF0ZV8uIFNldCBtYXhfcGFkZGluZ19iaXRyYXRlXyBlcXVhbCB0byB0aGUKLSAgLy8g
bWluaW11bSB0b3RhbCBiaXQgcmF0ZSByZXF1aXJlZCB0byBzdXBwb3J0IGFsbCBzcGF0aWFsIGxh
eWVycy4KLSAgc3BhdGlhbF9sYXllcnNbbnVtX3NwYXRpYWxfbGF5ZXJzIC0gMV0udGFyZ2V0Qml0
cmF0ZSA9Ci0gICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KAotICAgICAgICAgIHNwYXRp
YWxfbGF5ZXJzW251bV9zcGF0aWFsX2xheWVycyAtIDFdLm1pbkJpdHJhdGUgKiB0b3BfZnJhY3Rp
b24pOworCiAgIHJldHVybiBzcGF0aWFsX2xheWVyczsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2Rpbmcv
Y29kZWNzL3ZwOS9zdmNfcmF0ZV9hbGxvY2F0b3IuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA5L3N2Y19y
YXRlX2FsbG9jYXRvci5jYwppbmRleCA5Yjg0NmFkZTQ3ZDdkODE4NmZlNDZkYTRhZDQxNTJlNGYx
N2Q5MDlmLi40YTE2ZTVmODE0NDg3YjkwMDFhNmIyNzA4OTgxMmIwNTE4YTJjMWQ1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3Zp
ZGVvX2NvZGluZy9jb2RlY3MvdnA5L3N2Y19yYXRlX2FsbG9jYXRvci5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9j
b2RlY3MvdnA5L3N2Y19yYXRlX2FsbG9jYXRvci5jYwpAQCAtMjEsOCArMjEsODUgQEAgbmFtZXNw
YWNlIHdlYnJ0YyB7CiBjb25zdCBmbG9hdCBrU3BhdGlhbExheWVyaW5nUmF0ZVNjYWxpbmdGYWN0
b3IgPSAwLjU1ZjsKIGNvbnN0IGZsb2F0IGtUZW1wb3JhbExheWVyaW5nUmF0ZVNjYWxpbmdGYWN0
b3IgPSAwLjU1ZjsKIAorc3RhdGljIHNpemVfdCBHZXROdW1BY3RpdmVTcGF0aWFsTGF5ZXJzKGNv
bnN0IFZpZGVvQ29kZWMmIGNvZGVjKSB7CisgIFJUQ19EQ0hFQ0tfRVEoY29kZWMuY29kZWNUeXBl
LCBrVmlkZW9Db2RlY1ZQOSk7CisgIFJUQ19EQ0hFQ0tfR1QoY29kZWMuVlA5KCkubnVtYmVyT2ZT
cGF0aWFsTGF5ZXJzLCAwdSk7CisKKyAgc2l6ZV90IG51bV9zcGF0aWFsX2xheWVycyA9IDA7Cisg
IGZvciAoOyBudW1fc3BhdGlhbF9sYXllcnMgPCBjb2RlYy5WUDkoKS5udW1iZXJPZlNwYXRpYWxM
YXllcnM7CisgICAgICAgKytudW1fc3BhdGlhbF9sYXllcnMpIHsKKyAgICBpZiAoIWNvZGVjLnNw
YXRpYWxMYXllcnNbbnVtX3NwYXRpYWxfbGF5ZXJzXS5hY3RpdmUpIHsKKyAgICAgIC8vIFRPRE8o
YnVncy53ZWJydGMub3JnLzkzNTApOiBEZWFjdGl2YXRpb24gb2YgbWlkZGxlIGxheWVyIGlzIG5v
dAorICAgICAgLy8gaW1wbGVtZW50ZWQuIEZvciBub3cgZGVhY3RpdmF0aW9uIG9mIGEgVlA5IGxh
eWVyIGRlYWN0aXZhdGVzIGFsbAorICAgICAgLy8gbGF5ZXJzIGFib3ZlIHRoZSBkZWFjdGl2YXRl
ZCBvbmUuCisgICAgICBicmVhazsKKyAgICB9CisgIH0KKworICByZXR1cm4gbnVtX3NwYXRpYWxf
bGF5ZXJzOworfQorCitzdGF0aWMgYm9vbCBBZGp1c3RBbmRWZXJpZnkoY29uc3QgVmlkZW9Db2Rl
YyYgY29kZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8c2l6ZV90
Piogc3BhdGlhbF9sYXllcl9iaXRyYXRlX2JwcykgeworICBib29sIGVub3VnaF9iaXRyYXRlID0g
dHJ1ZTsKKyAgc2l6ZV90IGV4Y2Vzc19yYXRlID0gMDsKKyAgZm9yIChzaXplX3Qgc2xfaWR4ID0g
MDsKKyAgICAgICBzbF9pZHggPCBzcGF0aWFsX2xheWVyX2JpdHJhdGVfYnBzLT5zaXplKCkgJiYg
ZW5vdWdoX2JpdHJhdGU7ICsrc2xfaWR4KSB7CisgICAgUlRDX0RDSEVDS19HVChjb2RlYy5zcGF0
aWFsTGF5ZXJzW3NsX2lkeF0ubWF4Qml0cmF0ZSwgMCk7CisgICAgUlRDX0RDSEVDS19HRShjb2Rl
Yy5zcGF0aWFsTGF5ZXJzW3NsX2lkeF0ubWF4Qml0cmF0ZSwKKyAgICAgICAgICAgICAgICAgIGNv
ZGVjLnNwYXRpYWxMYXllcnNbc2xfaWR4XS5taW5CaXRyYXRlKTsKKworICAgIGNvbnN0IHNpemVf
dCBtaW5fYml0cmF0ZV9icHMgPQorICAgICAgICBjb2RlYy5zcGF0aWFsTGF5ZXJzW3NsX2lkeF0u
bWluQml0cmF0ZSAqIDEwMDA7CisgICAgY29uc3Qgc2l6ZV90IG1heF9iaXRyYXRlX2JwcyA9Cisg
ICAgICAgIGNvZGVjLnNwYXRpYWxMYXllcnNbc2xfaWR4XS5tYXhCaXRyYXRlICogMTAwMDsKKwor
ICAgIHNwYXRpYWxfbGF5ZXJfYml0cmF0ZV9icHMtPmF0KHNsX2lkeCkgKz0gZXhjZXNzX3JhdGU7
CisgICAgaWYgKHNwYXRpYWxfbGF5ZXJfYml0cmF0ZV9icHMtPmF0KHNsX2lkeCkgPCBtYXhfYml0
cmF0ZV9icHMpIHsKKyAgICAgIGV4Y2Vzc19yYXRlID0gMDsKKyAgICB9IGVsc2UgeworICAgICAg
ZXhjZXNzX3JhdGUgPSBzcGF0aWFsX2xheWVyX2JpdHJhdGVfYnBzLT5hdChzbF9pZHgpIC0gbWF4
X2JpdHJhdGVfYnBzOworICAgICAgc3BhdGlhbF9sYXllcl9iaXRyYXRlX2Jwcy0+YXQoc2xfaWR4
KSA9IG1heF9iaXRyYXRlX2JwczsKKyAgICB9CisKKyAgICBzaXplX3QgYml0cmF0ZV9icHMgPSBz
cGF0aWFsX2xheWVyX2JpdHJhdGVfYnBzLT5hdChzbF9pZHgpOworICAgIGVub3VnaF9iaXRyYXRl
ID0gKGJpdHJhdGVfYnBzID49IG1pbl9iaXRyYXRlX2Jwcyk7CisgIH0KKworICByZXR1cm4gZW5v
dWdoX2JpdHJhdGU7Cit9CisKK3N0YXRpYyBzdGQ6OnZlY3RvcjxzaXplX3Q+IFNwbGl0Qml0cmF0
ZShzaXplX3QgbnVtX2xheWVycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgdG90YWxfYml0cmF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmbG9hdCByYXRlX3NjYWxpbmdfZmFjdG9yKSB7CisgIHN0ZDo6dmVjdG9yPHNp
emVfdD4gYml0cmF0ZXM7CisKKyAgZG91YmxlIGRlbm9taW5hdG9yID0gMC4wOworICBmb3IgKHNp
emVfdCBsYXllcl9pZHggPSAwOyBsYXllcl9pZHggPCBudW1fbGF5ZXJzOyArK2xheWVyX2lkeCkg
eworICAgIGRlbm9taW5hdG9yICs9IHN0ZDo6cG93KHJhdGVfc2NhbGluZ19mYWN0b3IsIGxheWVy
X2lkeCk7CisgIH0KKworICBkb3VibGUgbnVtZXJhdG9yID0gc3RkOjpwb3cocmF0ZV9zY2FsaW5n
X2ZhY3RvciwgbnVtX2xheWVycyAtIDEpOworICBmb3IgKHNpemVfdCBsYXllcl9pZHggPSAwOyBs
YXllcl9pZHggPCBudW1fbGF5ZXJzOyArK2xheWVyX2lkeCkgeworICAgIGJpdHJhdGVzLnB1c2hf
YmFjayhudW1lcmF0b3IgKiB0b3RhbF9iaXRyYXRlIC8gZGVub21pbmF0b3IpOworICAgIG51bWVy
YXRvciAvPSByYXRlX3NjYWxpbmdfZmFjdG9yOworICB9CisKKyAgY29uc3Qgc2l6ZV90IHN1bSA9
IHN0ZDo6YWNjdW11bGF0ZShiaXRyYXRlcy5iZWdpbigpLCBiaXRyYXRlcy5lbmQoKSwgMCk7Cisg
IC8vIEVuc3VyZSB0aGUgc3VtIG9mIHNwbGl0IGJpdHJhdGVzIGRvZXNuJ3QgZXhjZWVkIHRoZSB0
b3RhbCBiaXRyYXRlLgorICBSVENfRENIRUNLX0xFKHN1bSwgdG90YWxfYml0cmF0ZSk7CisKKyAg
Ly8gS2VlcCB0aGUgc3VtIG9mIHNwbGl0IGJpdHJhdGVzIGVxdWFsIHRvIHRoZSB0b3RhbCBiaXRy
YXRlIGJ5IGFkZGluZyBiaXRzLAorICAvLyB3aGljaCB3ZXJlIGxvc3QgZHVlIHRvIHJvdW5kaW5n
LCB0byB0aGUgbGF0ZXN0IGxheWVyLgorICBiaXRyYXRlcy5iYWNrKCkgKz0gdG90YWxfYml0cmF0
ZSAtIHN1bTsKKworICByZXR1cm4gYml0cmF0ZXM7Cit9CisKIFN2Y1JhdGVBbGxvY2F0b3I6OlN2
Y1JhdGVBbGxvY2F0b3IoY29uc3QgVmlkZW9Db2RlYyYgY29kZWMpIDogY29kZWNfKGNvZGVjKSB7
CiAgIFJUQ19EQ0hFQ0tfRVEoY29kZWMuY29kZWNUeXBlLCBrVmlkZW9Db2RlY1ZQOSk7CisgIFJU
Q19EQ0hFQ0tfR1QoY29kZWMuVlA5KCkubnVtYmVyT2ZTcGF0aWFsTGF5ZXJzLCAwdSk7CisgIFJU
Q19EQ0hFQ0tfR1QoY29kZWMuVlA5KCkubnVtYmVyT2ZUZW1wb3JhbExheWVycywgMHUpOwogfQog
CiBWaWRlb0JpdHJhdGVBbGxvY2F0aW9uIFN2Y1JhdGVBbGxvY2F0b3I6OkdldEFsbG9jYXRpb24o
CkBAIC0zNCwyNCArMTExLDI3IEBAIFZpZGVvQml0cmF0ZUFsbG9jYXRpb24gU3ZjUmF0ZUFsbG9j
YXRvcjo6R2V0QWxsb2NhdGlvbigKIAogICBpZiAoY29kZWNfLnNwYXRpYWxMYXllcnNbMF0udGFy
Z2V0Qml0cmF0ZSA9PSAwKSB7CiAgICAgLy8gRGVsZWdhdGUgcmF0ZSBkaXN0cmlidXRpb24gdG8g
VlA5IGVuY29kZXIgd3JhcHBlciBpZiBiaXRyYXRlIHRocmVzaG9sZHMKLSAgICAvLyBhcmUgbm90
IGluaXRpYWxpemVkLgorICAgIC8vIGFyZSBub3Qgc2V0LgogICAgIFZpZGVvQml0cmF0ZUFsbG9j
YXRpb24gYml0cmF0ZV9hbGxvY2F0aW9uOwogICAgIGJpdHJhdGVfYWxsb2NhdGlvbi5TZXRCaXRy
YXRlKDAsIDAsIHRvdGFsX2JpdHJhdGVfYnBzKTsKICAgICByZXR1cm4gYml0cmF0ZV9hbGxvY2F0
aW9uOwotICB9IGVsc2UgaWYgKGNvZGVjXy5tb2RlID09IFZpZGVvQ29kZWNNb2RlOjprUmVhbHRp
bWVWaWRlbykgewotICAgIHJldHVybiBHZXRBbGxvY2F0aW9uTm9ybWFsVmlkZW8odG90YWxfYml0
cmF0ZV9icHMpOworICB9CisKKyAgc2l6ZV90IG51bV9zcGF0aWFsX2xheWVycyA9IEdldE51bUFj
dGl2ZVNwYXRpYWxMYXllcnMoY29kZWNfKTsKKyAgaWYgKG51bV9zcGF0aWFsX2xheWVycyA9PSAw
KSB7CisgICAgcmV0dXJuIFZpZGVvQml0cmF0ZUFsbG9jYXRpb24oKTsgIC8vIEFsbCBsYXllcnMg
YXJlIGRlYWN0aXZhdGVkLgorICB9CisKKyAgaWYgKGNvZGVjXy5tb2RlID09IFZpZGVvQ29kZWNN
b2RlOjprUmVhbHRpbWVWaWRlbykgeworICAgIHJldHVybiBHZXRBbGxvY2F0aW9uTm9ybWFsVmlk
ZW8odG90YWxfYml0cmF0ZV9icHMsIG51bV9zcGF0aWFsX2xheWVycyk7CiAgIH0gZWxzZSB7Ci0g
ICAgcmV0dXJuIEdldEFsbG9jYXRpb25TY3JlZW5TaGFyaW5nKHRvdGFsX2JpdHJhdGVfYnBzKTsK
KyAgICByZXR1cm4gR2V0QWxsb2NhdGlvblNjcmVlblNoYXJpbmcodG90YWxfYml0cmF0ZV9icHMs
IG51bV9zcGF0aWFsX2xheWVycyk7CiAgIH0KIH0KIAogVmlkZW9CaXRyYXRlQWxsb2NhdGlvbiBT
dmNSYXRlQWxsb2NhdG9yOjpHZXRBbGxvY2F0aW9uTm9ybWFsVmlkZW8oCi0gICAgdWludDMyX3Qg
dG90YWxfYml0cmF0ZV9icHMpIGNvbnN0IHsKLSAgc2l6ZV90IG51bV9zcGF0aWFsX2xheWVycyA9
IGNvZGVjXy5WUDkoKS5udW1iZXJPZlNwYXRpYWxMYXllcnM7Ci0gIFJUQ19DSEVDSyhudW1fc3Bh
dGlhbF9sYXllcnMgPiAwKTsKLSAgc2l6ZV90IG51bV90ZW1wb3JhbF9sYXllcnMgPSBjb2RlY18u
VlA5KCkubnVtYmVyT2ZUZW1wb3JhbExheWVyczsKLSAgUlRDX0NIRUNLKG51bV90ZW1wb3JhbF9s
YXllcnMgPiAwKTsKLQorICAgIHVpbnQzMl90IHRvdGFsX2JpdHJhdGVfYnBzLAorICAgIHNpemVf
dCBudW1fc3BhdGlhbF9sYXllcnMpIGNvbnN0IHsKICAgc3RkOjp2ZWN0b3I8c2l6ZV90PiBzcGF0
aWFsX2xheWVyX2JpdHJhdGVfYnBzOwogCiAgIC8vIERpc3RyaWJ1dGUgdG90YWwgYml0cmF0ZSBh
Y3Jvc3Mgc3BhdGlhbCBsYXllcnMuIElmIHRoZXJlIGlzIG5vdCBlbm91Z2gKQEAgLTYzLDcgKzE0
Myw4IEBAIFZpZGVvQml0cmF0ZUFsbG9jYXRpb24gU3ZjUmF0ZUFsbG9jYXRvcjo6R2V0QWxsb2Nh
dGlvbk5vcm1hbFZpZGVvKAogICAgICAgICBTcGxpdEJpdHJhdGUobnVtX3NwYXRpYWxfbGF5ZXJz
LCB0b3RhbF9iaXRyYXRlX2JwcywKICAgICAgICAgICAgICAgICAgICAgIGtTcGF0aWFsTGF5ZXJp
bmdSYXRlU2NhbGluZ0ZhY3Rvcik7CiAKLSAgICBjb25zdCBib29sIGVub3VnaF9iaXRyYXRlID0g
QWRqdXN0QW5kVmVyaWZ5KCZzcGF0aWFsX2xheWVyX2JpdHJhdGVfYnBzKTsKKyAgICBjb25zdCBi
b29sIGVub3VnaF9iaXRyYXRlID0KKyAgICAgICAgQWRqdXN0QW5kVmVyaWZ5KGNvZGVjXywgJnNw
YXRpYWxfbGF5ZXJfYml0cmF0ZV9icHMpOwogICAgIGlmIChlbm91Z2hfYml0cmF0ZSB8fCBudW1f
c3BhdGlhbF9sYXllcnMgPT0gMSkgewogICAgICAgYnJlYWs7CiAgICAgfQpAQCAtNzEsNiArMTUy
LDcgQEAgVmlkZW9CaXRyYXRlQWxsb2NhdGlvbiBTdmNSYXRlQWxsb2NhdG9yOjpHZXRBbGxvY2F0
aW9uTm9ybWFsVmlkZW8oCiAKICAgVmlkZW9CaXRyYXRlQWxsb2NhdGlvbiBiaXRyYXRlX2FsbG9j
YXRpb247CiAKKyAgY29uc3Qgc2l6ZV90IG51bV90ZW1wb3JhbF9sYXllcnMgPSBjb2RlY18uVlA5
KCkubnVtYmVyT2ZUZW1wb3JhbExheWVyczsKICAgZm9yIChzaXplX3Qgc2xfaWR4ID0gMDsgc2xf
aWR4IDwgbnVtX3NwYXRpYWxfbGF5ZXJzOyArK3NsX2lkeCkgewogICAgIHN0ZDo6dmVjdG9yPHNp
emVfdD4gdGVtcG9yYWxfbGF5ZXJfYml0cmF0ZV9icHMgPQogICAgICAgICBTcGxpdEJpdHJhdGUo
bnVtX3RlbXBvcmFsX2xheWVycywgc3BhdGlhbF9sYXllcl9iaXRyYXRlX2Jwc1tzbF9pZHhdLApA
QCAtMTAwLDQxICsxODIsOSBAQCBWaWRlb0JpdHJhdGVBbGxvY2F0aW9uIFN2Y1JhdGVBbGxvY2F0
b3I6OkdldEFsbG9jYXRpb25Ob3JtYWxWaWRlbygKICAgcmV0dXJuIGJpdHJhdGVfYWxsb2NhdGlv
bjsKIH0KIAotYm9vbCBTdmNSYXRlQWxsb2NhdG9yOjpBZGp1c3RBbmRWZXJpZnkoCi0gICAgc3Rk
Ojp2ZWN0b3I8c2l6ZV90Piogc3BhdGlhbF9sYXllcl9iaXRyYXRlX2JwcykgY29uc3QgewotICBi
b29sIGVub3VnaF9iaXRyYXRlID0gdHJ1ZTsKLSAgc2l6ZV90IGV4Y2Vzc19yYXRlID0gMDsKLSAg
Zm9yIChzaXplX3Qgc2xfaWR4ID0gMDsKLSAgICAgICBzbF9pZHggPCBzcGF0aWFsX2xheWVyX2Jp
dHJhdGVfYnBzLT5zaXplKCkgJiYgZW5vdWdoX2JpdHJhdGU7ICsrc2xfaWR4KSB7Ci0gICAgUlRD
X0RDSEVDS19HVChjb2RlY18uc3BhdGlhbExheWVyc1tzbF9pZHhdLm1heEJpdHJhdGUsIDApOwot
ICAgIFJUQ19EQ0hFQ0tfR0UoY29kZWNfLnNwYXRpYWxMYXllcnNbc2xfaWR4XS5tYXhCaXRyYXRl
LAotICAgICAgICAgICAgICAgICAgY29kZWNfLnNwYXRpYWxMYXllcnNbc2xfaWR4XS5taW5CaXRy
YXRlKTsKLQotICAgIGNvbnN0IHNpemVfdCBtaW5fYml0cmF0ZV9icHMgPQotICAgICAgICBjb2Rl
Y18uc3BhdGlhbExheWVyc1tzbF9pZHhdLm1pbkJpdHJhdGUgKiAxMDAwOwotICAgIGNvbnN0IHNp
emVfdCBtYXhfYml0cmF0ZV9icHMgPQotICAgICAgICBjb2RlY18uc3BhdGlhbExheWVyc1tzbF9p
ZHhdLm1heEJpdHJhdGUgKiAxMDAwOwotCi0gICAgc3BhdGlhbF9sYXllcl9iaXRyYXRlX2Jwcy0+
YXQoc2xfaWR4KSArPSBleGNlc3NfcmF0ZTsKLSAgICBpZiAoc3BhdGlhbF9sYXllcl9iaXRyYXRl
X2Jwcy0+YXQoc2xfaWR4KSA8IG1heF9iaXRyYXRlX2JwcykgewotICAgICAgZXhjZXNzX3JhdGUg
PSAwOwotICAgIH0gZWxzZSB7Ci0gICAgICBleGNlc3NfcmF0ZSA9IHNwYXRpYWxfbGF5ZXJfYml0
cmF0ZV9icHMtPmF0KHNsX2lkeCkgLSBtYXhfYml0cmF0ZV9icHM7Ci0gICAgICBzcGF0aWFsX2xh
eWVyX2JpdHJhdGVfYnBzLT5hdChzbF9pZHgpID0gbWF4X2JpdHJhdGVfYnBzOwotICAgIH0KLQot
ICAgIGVub3VnaF9iaXRyYXRlID0gKHNwYXRpYWxfbGF5ZXJfYml0cmF0ZV9icHMtPmF0KHNsX2lk
eCkgPj0gbWluX2JpdHJhdGVfYnBzKTsKLSAgfQotCi0gIHJldHVybiBlbm91Z2hfYml0cmF0ZTsK
LX0KLQogVmlkZW9CaXRyYXRlQWxsb2NhdGlvbiBTdmNSYXRlQWxsb2NhdG9yOjpHZXRBbGxvY2F0
aW9uU2NyZWVuU2hhcmluZygKLSAgICB1aW50MzJfdCB0b3RhbF9iaXRyYXRlX2JwcykgY29uc3Qg
ewotICBjb25zdCBzaXplX3QgbnVtX3NwYXRpYWxfbGF5ZXJzID0gY29kZWNfLlZQOSgpLm51bWJl
ck9mU3BhdGlhbExheWVyczsKLSAgUlRDX0NIRUNLKG51bV9zcGF0aWFsX2xheWVycyA+IDApOwot
ICBSVENfQ0hFQ0tfRVEoY29kZWNfLlZQOSgpLm51bWJlck9mVGVtcG9yYWxMYXllcnMsIDFVKTsK
LQorICAgIHVpbnQzMl90IHRvdGFsX2JpdHJhdGVfYnBzLAorICAgIHNpemVfdCBudW1fc3BhdGlh
bF9sYXllcnMpIGNvbnN0IHsKICAgVmlkZW9CaXRyYXRlQWxsb2NhdGlvbiBiaXRyYXRlX2FsbG9j
YXRpb247CiAKICAgLy8gQWRkIG5leHQgbGF5ZXIgYWZ0ZXIgYml0cmF0ZSBvZiBwcmV2aW91cyBs
YXllciBoYXMgcmVhY2hlZCBpdHMgbWF4aW11bS4KQEAgLTE1OCwzMiArMjA4LDQzIEBAIFZpZGVv
Qml0cmF0ZUFsbG9jYXRpb24gU3ZjUmF0ZUFsbG9jYXRvcjo6R2V0QWxsb2NhdGlvblNjcmVlblNo
YXJpbmcoCiAgIHJldHVybiBiaXRyYXRlX2FsbG9jYXRpb247CiB9CiAKLXN0ZDo6dmVjdG9yPHNp
emVfdD4gU3ZjUmF0ZUFsbG9jYXRvcjo6U3BsaXRCaXRyYXRlKAotICAgIHNpemVfdCBudW1fbGF5
ZXJzLAotICAgIHNpemVfdCB0b3RhbF9iaXRyYXRlLAotICAgIGZsb2F0IHJhdGVfc2NhbGluZ19m
YWN0b3IpIGNvbnN0IHsKLSAgc3RkOjp2ZWN0b3I8c2l6ZV90PiBiaXRyYXRlczsKK3VpbnQzMl90
IFN2Y1JhdGVBbGxvY2F0b3I6OkdldE1heEJpdHJhdGVCcHMoY29uc3QgVmlkZW9Db2RlYyYgY29k
ZWMpIHsKKyAgY29uc3Qgc2l6ZV90IG51bV9zcGF0aWFsX2xheWVycyA9IEdldE51bUFjdGl2ZVNw
YXRpYWxMYXllcnMoY29kZWMpOwogCi0gIGRvdWJsZSBkZW5vbWluYXRvciA9IDAuMDsKLSAgZm9y
IChzaXplX3QgbGF5ZXJfaWR4ID0gMDsgbGF5ZXJfaWR4IDwgbnVtX2xheWVyczsgKytsYXllcl9p
ZHgpIHsKLSAgICBkZW5vbWluYXRvciArPSBzdGQ6OnBvdyhyYXRlX3NjYWxpbmdfZmFjdG9yLCBs
YXllcl9pZHgpOworICB1aW50MzJfdCBtYXhfYml0cmF0ZV9rYnBzID0gMDsKKyAgZm9yIChzaXpl
X3Qgc2xfaWR4ID0gMDsgc2xfaWR4IDwgbnVtX3NwYXRpYWxfbGF5ZXJzOyArK3NsX2lkeCkgewor
ICAgIG1heF9iaXRyYXRlX2ticHMgKz0gY29kZWMuc3BhdGlhbExheWVyc1tzbF9pZHhdLm1heEJp
dHJhdGU7CiAgIH0KIAotICBkb3VibGUgbnVtZXJhdG9yID0gc3RkOjpwb3cocmF0ZV9zY2FsaW5n
X2ZhY3RvciwgbnVtX2xheWVycyAtIDEpOwotICBmb3IgKHNpemVfdCBsYXllcl9pZHggPSAwOyBs
YXllcl9pZHggPCBudW1fbGF5ZXJzOyArK2xheWVyX2lkeCkgewotICAgIGJpdHJhdGVzLnB1c2hf
YmFjayhudW1lcmF0b3IgKiB0b3RhbF9iaXRyYXRlIC8gZGVub21pbmF0b3IpOwotICAgIG51bWVy
YXRvciAvPSByYXRlX3NjYWxpbmdfZmFjdG9yOworICBpZiAoY29kZWMubWF4Qml0cmF0ZSAhPSAw
KSB7CisgICAgbWF4X2JpdHJhdGVfa2JwcyA9IHN0ZDo6bWluKG1heF9iaXRyYXRlX2ticHMsIGNv
ZGVjLm1heEJpdHJhdGUpOwogICB9CiAKLSAgY29uc3Qgc2l6ZV90IHN1bSA9IHN0ZDo6YWNjdW11
bGF0ZShiaXRyYXRlcy5iZWdpbigpLCBiaXRyYXRlcy5lbmQoKSwgMCk7Ci0gIC8vIEVuc3VyZSB0
aGUgc3VtIG9mIHNwbGl0IGJpdHJhdGVzIGRvZXNuJ3QgZXhjZWVkIHRoZSB0b3RhbCBiaXRyYXRl
LgotICBSVENfRENIRUNLX0xFKHN1bSwgdG90YWxfYml0cmF0ZSk7CisgIHJldHVybiBtYXhfYml0
cmF0ZV9rYnBzICogMTAwMDsKK30KIAotICAvLyBLZWVwIHRoZSBzdW0gb2Ygc3BsaXQgYml0cmF0
ZXMgZXF1YWwgdG8gdGhlIHRvdGFsIGJpdHJhdGUgYnkgYWRkaW5nIGJpdHMsCi0gIC8vIHdoaWNo
IHdlcmUgbG9zdCBkdWUgdG8gcm91bmRpbmcsIHRvIHRoZSBsYXRlc3QgbGF5ZXIuCi0gIGJpdHJh
dGVzLmJhY2soKSArPSB0b3RhbF9iaXRyYXRlIC0gc3VtOwordWludDMyX3QgU3ZjUmF0ZUFsbG9j
YXRvcjo6R2V0UGFkZGluZ0JpdHJhdGVCcHMoY29uc3QgVmlkZW9Db2RlYyYgY29kZWMpIHsKKyAg
Y29uc3Qgc2l6ZV90IG51bV9zcGF0aWFsX2xheWVycyA9IEdldE51bUFjdGl2ZVNwYXRpYWxMYXll
cnMoY29kZWMpOwogCi0gIHJldHVybiBiaXRyYXRlczsKKyAgaWYgKGNvZGVjLm1vZGUgPT0gVmlk
ZW9Db2RlY01vZGU6OmtSZWFsdGltZVZpZGVvKSB7CisgICAgZmxvYXQgc2NhbGVfZmFjdG9yID0g
MC4wOworICAgIGZvciAoc2l6ZV90IHNsX2lkeCA9IDA7IHNsX2lkeCA8IG51bV9zcGF0aWFsX2xh
eWVyczsgKytzbF9pZHgpIHsKKyAgICAgIHNjYWxlX2ZhY3RvciArPSBzdGQ6OnBvdyhrU3BhdGlh
bExheWVyaW5nUmF0ZVNjYWxpbmdGYWN0b3IsIHNsX2lkeCk7CisgICAgfQorICAgIHVpbnQzMl90
IG1pbl9iaXRyYXRlX2JwcyA9CisgICAgICAgIGNvZGVjLnNwYXRpYWxMYXllcnNbbnVtX3NwYXRp
YWxfbGF5ZXJzIC0gMV0ubWluQml0cmF0ZSAqIDEwMDA7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0
PHVpbnQzMl90PihtaW5fYml0cmF0ZV9icHMgKiBzY2FsZV9mYWN0b3IpOworICB9CisKKyAgUlRD
X0RDSEVDSyhjb2RlYy5tb2RlID09IFZpZGVvQ29kZWNNb2RlOjprU2NyZWVuc2hhcmluZyk7CisK
KyAgdWludDMyX3QgbWluX2JpdHJhdGVfa2JwcyA9IDA7CisgIGZvciAoc2l6ZV90IHNsX2lkeCA9
IDA7IHNsX2lkeCA8IG51bV9zcGF0aWFsX2xheWVycyAtIDE7ICsrc2xfaWR4KSB7CisgICAgbWlu
X2JpdHJhdGVfa2JwcyArPSBjb2RlYy5zcGF0aWFsTGF5ZXJzW3NsX2lkeF0ubWF4Qml0cmF0ZTsK
KyAgfQorICBtaW5fYml0cmF0ZV9rYnBzICs9IGNvZGVjLnNwYXRpYWxMYXllcnNbbnVtX3NwYXRp
YWxfbGF5ZXJzIC0gMV0ubWluQml0cmF0ZTsKKworICByZXR1cm4gbWluX2JpdHJhdGVfa2JwcyAq
IDEwMDA7CiB9CiAKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2Nv
ZGVjcy92cDkvc3ZjX3JhdGVfYWxsb2NhdG9yLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA5L3N2Y19yYXRl
X2FsbG9jYXRvci5oCmluZGV4IDEwZTIyZWRjNjAzMDdmYWVmYWY3MGI3ZjMyNDgxNjU5MGZiMTUz
MTQuLmRlNWI1MjRjM2YxMTZlMmExYjRmMzhmMGZjNmFkZDc1ODhmNzk4ODMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9f
Y29kaW5nL2NvZGVjcy92cDkvc3ZjX3JhdGVfYWxsb2NhdG9yLmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNz
L3ZwOS9zdmNfcmF0ZV9hbGxvY2F0b3IuaApAQCAtMjAsOSArMjAsNiBAQAogCiBuYW1lc3BhY2Ug
d2VicnRjIHsKIAotZXh0ZXJuIGNvbnN0IGZsb2F0IGtTcGF0aWFsTGF5ZXJpbmdSYXRlU2NhbGlu
Z0ZhY3RvcjsKLWV4dGVybiBjb25zdCBmbG9hdCBrVGVtcG9yYWxMYXllcmluZ1JhdGVTY2FsaW5n
RmFjdG9yOwotCiBjbGFzcyBTdmNSYXRlQWxsb2NhdG9yIDogcHVibGljIFZpZGVvQml0cmF0ZUFs
bG9jYXRvciB7CiAgcHVibGljOgogICBleHBsaWNpdCBTdmNSYXRlQWxsb2NhdG9yKGNvbnN0IFZp
ZGVvQ29kZWMmIGNvZGVjKTsKQEAgLTMwLDE1ICsyNywxNyBAQCBjbGFzcyBTdmNSYXRlQWxsb2Nh
dG9yIDogcHVibGljIFZpZGVvQml0cmF0ZUFsbG9jYXRvciB7CiAgIFZpZGVvQml0cmF0ZUFsbG9j
YXRpb24gR2V0QWxsb2NhdGlvbih1aW50MzJfdCB0b3RhbF9iaXRyYXRlX2JwcywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGZyYW1lcmF0ZV9mcHMpIG92
ZXJyaWRlOwogCisgIHN0YXRpYyB1aW50MzJfdCBHZXRNYXhCaXRyYXRlQnBzKGNvbnN0IFZpZGVv
Q29kZWMmIGNvZGVjKTsKKyAgc3RhdGljIHVpbnQzMl90IEdldFBhZGRpbmdCaXRyYXRlQnBzKGNv
bnN0IFZpZGVvQ29kZWMmIGNvZGVjKTsKKwogIHByaXZhdGU6CiAgIFZpZGVvQml0cmF0ZUFsbG9j
YXRpb24gR2V0QWxsb2NhdGlvbk5vcm1hbFZpZGVvKAotICAgICAgdWludDMyX3QgdG90YWxfYml0
cmF0ZV9icHMpIGNvbnN0OworICAgICAgdWludDMyX3QgdG90YWxfYml0cmF0ZV9icHMsCisgICAg
ICBzaXplX3QgbnVtX3NwYXRpYWxfbGF5ZXJzKSBjb25zdDsKKwogICBWaWRlb0JpdHJhdGVBbGxv
Y2F0aW9uIEdldEFsbG9jYXRpb25TY3JlZW5TaGFyaW5nKAotICAgICAgdWludDMyX3QgdG90YWxf
Yml0cmF0ZV9icHMpIGNvbnN0OwotICBzdGQ6OnZlY3RvcjxzaXplX3Q+IFNwbGl0Qml0cmF0ZShz
aXplX3QgbnVtX2xheWVycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IHRvdGFsX2JpdHJhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZs
b2F0IHJhdGVfc2NhbGluZ19mYWN0b3IpIGNvbnN0OwotICBib29sIEFkanVzdEFuZFZlcmlmeShz
dGQ6OnZlY3RvcjxzaXplX3Q+KiBzcGF0aWFsX2xheWVyX2JpdHJhdGVfYnBzKSBjb25zdDsKKyAg
ICAgIHVpbnQzMl90IHRvdGFsX2JpdHJhdGVfYnBzLAorICAgICAgc2l6ZV90IG51bV9zcGF0aWFs
X2xheWVycykgY29uc3Q7CiAKICAgY29uc3QgVmlkZW9Db2RlYyBjb2RlY187CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92
aWRlb19jb2RpbmcvY29kZWNzL3ZwOS9zdmNfcmF0ZV9hbGxvY2F0b3JfdW5pdHRlc3QuY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2Nv
ZGluZy9jb2RlY3MvdnA5L3N2Y19yYXRlX2FsbG9jYXRvcl91bml0dGVzdC5jYwppbmRleCBlZWMy
YjlkNDE5OWVhOWY3N2UzYzk5YjZjYjJkNDc4NDliZDlmNTdjLi4wZjEzMmMyNGE1ZDk2MTYxMDMy
OTQyMzAyMzk3YTY4Y2ExZDFmNDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA5L3N2Y19y
YXRlX2FsbG9jYXRvcl91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA5L3N2Y19yYXRl
X2FsbG9jYXRvcl91bml0dGVzdC5jYwpAQCAtMTYyLDQgKzE2Miw4OSBAQCBURVNUKFN2Y1JhdGVB
bGxvY2F0b3JUZXN0LCBNaW5CaXRyYXRlVG9HZXRRdWFsaXR5TGF5ZXIpIHsKICAgRVhQRUNUX0VR
KGFsbG9jYXRpb24uR2V0U3BhdGlhbExheWVyU3VtKDEpIC8gMTAwMCwgbGF5ZXJzWzFdLm1pbkJp
dHJhdGUpOwogfQogCitURVNUKFN2Y1JhdGVBbGxvY2F0b3JUZXN0LCBEZWF0aXZhdGVMYXllcnMp
IHsKKyAgZm9yIChpbnQgZGVhY3RpdmF0ZWRfaWR4ID0gMjsgZGVhY3RpdmF0ZWRfaWR4ID49IDA7
IC0tZGVhY3RpdmF0ZWRfaWR4KSB7CisgICAgVmlkZW9Db2RlYyBjb2RlYyA9IENvbmZpZ3VyZSgx
MjgwLCA3MjAsIDMsIDEsIGZhbHNlKTsKKyAgICBFWFBFQ1RfTEUoY29kZWMuVlA5KCktPm51bWJl
ck9mU3BhdGlhbExheWVycywgM1UpOworCisgICAgY29kZWMuc3BhdGlhbExheWVyc1tkZWFjdGl2
YXRlZF9pZHhdLmFjdGl2ZSA9IGZhbHNlOworCisgICAgU3ZjUmF0ZUFsbG9jYXRvciBhbGxvY2F0
b3IgPSBTdmNSYXRlQWxsb2NhdG9yKGNvZGVjKTsKKworICAgIFZpZGVvQml0cmF0ZUFsbG9jYXRp
b24gYWxsb2NhdGlvbiA9CisgICAgICAgIGFsbG9jYXRvci5HZXRBbGxvY2F0aW9uKDEwICogMTAw
MCAqIDEwMDAsIDMwKTsKKworICAgIC8vIEVuc3VyZSBsYXllcnMgc3BhdGlhbF9pZHggPCBkZWFj
dGl2YXRlZF9pZHggYXJlIGFjdGl2YXRlZC4KKyAgICBmb3IgKGludCBzcGF0aWFsX2lkeCA9IDA7
IHNwYXRpYWxfaWR4IDwgZGVhY3RpdmF0ZWRfaWR4OyArK3NwYXRpYWxfaWR4KSB7CisgICAgICBF
WFBFQ1RfR1QoYWxsb2NhdGlvbi5HZXRTcGF0aWFsTGF5ZXJTdW0oc3BhdGlhbF9pZHgpLCAwVUwp
OworICAgIH0KKworICAgIC8vIEVuc3VyZSBsYXllcnMgc3BhdGlhbF9pZHggPj0gZGVhY3RpdmF0
ZWRfaWR4IGFyZSBkZWFjdGl2YXRlZC4KKyAgICBmb3IgKGludCBzcGF0aWFsX2lkeCA9IGRlYWN0
aXZhdGVkX2lkeDsgc3BhdGlhbF9pZHggPCAzOyArK3NwYXRpYWxfaWR4KSB7CisgICAgICBFWFBF
Q1RfRVEoYWxsb2NhdGlvbi5HZXRTcGF0aWFsTGF5ZXJTdW0oc3BhdGlhbF9pZHgpLCAwVUwpOwor
ICAgIH0KKyAgfQorfQorCitjbGFzcyBTdmNSYXRlQWxsb2NhdG9yVGVzdFBhcmFtZXRyaXplZENv
bnRlbnRUeXBlCisgICAgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCwKKyAgICAgIHB1YmxpYyB0ZXN0
aW5nOjpXaXRoUGFyYW1JbnRlcmZhY2U8Ym9vbD4geworIHB1YmxpYzoKKyAgU3ZjUmF0ZUFsbG9j
YXRvclRlc3RQYXJhbWV0cml6ZWRDb250ZW50VHlwZSgpCisgICAgICA6IGlzX3NjcmVlbl9zaGFy
aW5nXyhHZXRQYXJhbSgpKSB7fQorCisgIGNvbnN0IGJvb2wgaXNfc2NyZWVuX3NoYXJpbmdfOwor
fTsKKworVEVTVF9QKFN2Y1JhdGVBbGxvY2F0b3JUZXN0UGFyYW1ldHJpemVkQ29udGVudFR5cGUs
IE1heEJpdHJhdGUpIHsKKyAgVmlkZW9Db2RlYyBjb2RlYyA9IENvbmZpZ3VyZSgxMjgwLCA3MjAs
IDMsIDEsIGlzX3NjcmVlbl9zaGFyaW5nXyk7CisgIEVYUEVDVF9FUSgKKyAgICAgIFN2Y1JhdGVB
bGxvY2F0b3I6OkdldE1heEJpdHJhdGVCcHMoY29kZWMpLAorICAgICAgKGNvZGVjLnNwYXRpYWxM
YXllcnNbMF0ubWF4Qml0cmF0ZSArIGNvZGVjLnNwYXRpYWxMYXllcnNbMV0ubWF4Qml0cmF0ZSAr
CisgICAgICAgY29kZWMuc3BhdGlhbExheWVyc1syXS5tYXhCaXRyYXRlKSAqCisgICAgICAgICAg
MTAwMCk7CisKKyAgLy8gRGVhY3RpdmF0ZSBtaWRkbGUgbGF5ZXIuIFRoaXMgY2F1c2VzIGRlYWN0
aXZhdGlvbiBvZiB0b3AgbGF5ZXIgYXMgd2VsbC4KKyAgY29kZWMuc3BhdGlhbExheWVyc1sxXS5h
Y3RpdmUgPSBmYWxzZTsKKyAgRVhQRUNUX0VRKFN2Y1JhdGVBbGxvY2F0b3I6OkdldE1heEJpdHJh
dGVCcHMoY29kZWMpLAorICAgICAgICAgICAgY29kZWMuc3BhdGlhbExheWVyc1swXS5tYXhCaXRy
YXRlICogMTAwMCk7Cit9CisKK1RFU1RfUChTdmNSYXRlQWxsb2NhdG9yVGVzdFBhcmFtZXRyaXpl
ZENvbnRlbnRUeXBlLCBQYWRkaW5nQml0cmF0ZSkgeworICBWaWRlb0NvZGVjIGNvZGVjID0gQ29u
ZmlndXJlKDEyODAsIDcyMCwgMywgMSwgaXNfc2NyZWVuX3NoYXJpbmdfKTsKKyAgU3ZjUmF0ZUFs
bG9jYXRvciBhbGxvY2F0b3IgPSBTdmNSYXRlQWxsb2NhdG9yKGNvZGVjKTsKKworICB1aW50MzJf
dCBwYWRkaW5nX2JpdHJhdGVfYnBzID0gU3ZjUmF0ZUFsbG9jYXRvcjo6R2V0UGFkZGluZ0JpdHJh
dGVCcHMoY29kZWMpOworCisgIFZpZGVvQml0cmF0ZUFsbG9jYXRpb24gYWxsb2NhdGlvbiA9Cisg
ICAgICBhbGxvY2F0b3IuR2V0QWxsb2NhdGlvbihwYWRkaW5nX2JpdHJhdGVfYnBzLCAzMCk7Cisg
IEVYUEVDVF9HVChhbGxvY2F0aW9uLkdldFNwYXRpYWxMYXllclN1bSgwKSwgMFVMKTsKKyAgRVhQ
RUNUX0dUKGFsbG9jYXRpb24uR2V0U3BhdGlhbExheWVyU3VtKDEpLCAwVUwpOworICBFWFBFQ1Rf
R1QoYWxsb2NhdGlvbi5HZXRTcGF0aWFsTGF5ZXJTdW0oMiksIDBVTCk7CisKKyAgLy8gQWxsb2Nh
dGUgOTAlIG9mIHBhZGRpbmcgYml0cmF0ZS4gVG9wIGxheWVyIHNob3VsZCBiZSBkaXNhYmxlZC4K
KyAgYWxsb2NhdGlvbiA9IGFsbG9jYXRvci5HZXRBbGxvY2F0aW9uKDkgKiBwYWRkaW5nX2JpdHJh
dGVfYnBzIC8gMTAsIDMwKTsKKyAgRVhQRUNUX0dUKGFsbG9jYXRpb24uR2V0U3BhdGlhbExheWVy
U3VtKDApLCAwVUwpOworICBFWFBFQ1RfR1QoYWxsb2NhdGlvbi5HZXRTcGF0aWFsTGF5ZXJTdW0o
MSksIDBVTCk7CisgIEVYUEVDVF9FUShhbGxvY2F0aW9uLkdldFNwYXRpYWxMYXllclN1bSgyKSwg
MFVMKTsKKworICAvLyBEZWFjdGl2YXRlIHRvcCBsYXllci4KKyAgY29kZWMuc3BhdGlhbExheWVy
c1syXS5hY3RpdmUgPSBmYWxzZTsKKworICBwYWRkaW5nX2JpdHJhdGVfYnBzID0gU3ZjUmF0ZUFs
bG9jYXRvcjo6R2V0UGFkZGluZ0JpdHJhdGVCcHMoY29kZWMpOworICBhbGxvY2F0aW9uID0gYWxs
b2NhdG9yLkdldEFsbG9jYXRpb24ocGFkZGluZ19iaXRyYXRlX2JwcywgMzApOworICBFWFBFQ1Rf
R1QoYWxsb2NhdGlvbi5HZXRTcGF0aWFsTGF5ZXJTdW0oMCksIDBVTCk7CisgIEVYUEVDVF9HVChh
bGxvY2F0aW9uLkdldFNwYXRpYWxMYXllclN1bSgxKSwgMFVMKTsKKyAgRVhQRUNUX0VRKGFsbG9j
YXRpb24uR2V0U3BhdGlhbExheWVyU3VtKDIpLCAwVUwpOworCisgIGFsbG9jYXRpb24gPSBhbGxv
Y2F0b3IuR2V0QWxsb2NhdGlvbig5ICogcGFkZGluZ19iaXRyYXRlX2JwcyAvIDEwLCAzMCk7Cisg
IEVYUEVDVF9HVChhbGxvY2F0aW9uLkdldFNwYXRpYWxMYXllclN1bSgwKSwgMFVMKTsKKyAgRVhQ
RUNUX0VRKGFsbG9jYXRpb24uR2V0U3BhdGlhbExheWVyU3VtKDEpLCAwVUwpOworICBFWFBFQ1Rf
RVEoYWxsb2NhdGlvbi5HZXRTcGF0aWFsTGF5ZXJTdW0oMiksIDBVTCk7Cit9CisKK0lOU1RBTlRJ
QVRFX1RFU1RfQ0FTRV9QKF8sCisgICAgICAgICAgICAgICAgICAgICAgICBTdmNSYXRlQWxsb2Nh
dG9yVGVzdFBhcmFtZXRyaXplZENvbnRlbnRUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAg
Ojp0ZXN0aW5nOjpCb29sKCkpOworCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVv
X2NvZGluZy9jb2RlY3MvdnA5L3Rlc3QvdnA5X2ltcGxfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2Rl
Y3MvdnA5L3Rlc3QvdnA5X2ltcGxfdW5pdHRlc3QuY2MKaW5kZXggNDY0NGEzMWNiYjdmNjRmM2Ri
NzBlYWFkNzAxZDQ0YjJjODAwNWYxMC4uMWE5YTRkZDU1Zjg0OGFjZTgwYWQ5MDc5YzQ5N2VjNTFk
YTQyZDcwZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOS90ZXN0L3ZwOV9pbXBsX3VuaXR0
ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDkvdGVzdC92cDlfaW1wbF91bml0dGVzdC5jYwpA
QCAtMzMxLDEyICszMzEsMTUgQEAgVEVTVF9GKFRlc3RWcDlJbXBsLCBFbmNvZGVyRXhwbGljaXRM
YXllcmluZykgewogICAgICAgKGNvZGVjX3NldHRpbmdzXy5zcGF0aWFsTGF5ZXJzWzBdLm1pbkJp
dHJhdGUgKwogICAgICAgIGNvZGVjX3NldHRpbmdzXy5zcGF0aWFsTGF5ZXJzWzBdLm1heEJpdHJh
dGUpIC8KICAgICAgIDI7CisgIGNvZGVjX3NldHRpbmdzXy5zcGF0aWFsTGF5ZXJzWzBdLmFjdGl2
ZSA9IHRydWU7CisKICAgY29kZWNfc2V0dGluZ3NfLnNwYXRpYWxMYXllcnNbMV0ubWluQml0cmF0
ZSA9IDQwMDsKICAgY29kZWNfc2V0dGluZ3NfLnNwYXRpYWxMYXllcnNbMV0ubWF4Qml0cmF0ZSA9
IDE1MDA7CiAgIGNvZGVjX3NldHRpbmdzXy5zcGF0aWFsTGF5ZXJzWzFdLnRhcmdldEJpdHJhdGUg
PQogICAgICAgKGNvZGVjX3NldHRpbmdzXy5zcGF0aWFsTGF5ZXJzWzFdLm1pbkJpdHJhdGUgKwog
ICAgICAgIGNvZGVjX3NldHRpbmdzXy5zcGF0aWFsTGF5ZXJzWzFdLm1heEJpdHJhdGUpIC8KICAg
ICAgIDI7CisgIGNvZGVjX3NldHRpbmdzXy5zcGF0aWFsTGF5ZXJzWzFdLmFjdGl2ZSA9IHRydWU7
CiAKICAgY29kZWNfc2V0dGluZ3NfLnNwYXRpYWxMYXllcnNbMF0ud2lkdGggPSBjb2RlY19zZXR0
aW5nc18ud2lkdGggLyAyOwogICBjb2RlY19zZXR0aW5nc18uc3BhdGlhbExheWVyc1swXS5oZWln
aHQgPSBjb2RlY19zZXR0aW5nc18uaGVpZ2h0IC8gMjsKQEAgLTEwMjksNiArMTAzMiw3IEBAIFRF
U1RfRihUZXN0VnA5SW1wbEZyYW1lRHJvcHBpbmcsIERpZmZlcmVudEZyYW1lcmF0ZVBlclNwYXRp
YWxMYXllcikgewogICAgICAgICBjb2RlY19zZXR0aW5nc18uc3RhcnRCaXRyYXRlOwogICAgIGNv
ZGVjX3NldHRpbmdzXy5zcGF0aWFsTGF5ZXJzW3NsX2lkeF0udGFyZ2V0Qml0cmF0ZSA9CiAgICAg
ICAgIGNvZGVjX3NldHRpbmdzXy5zdGFydEJpdHJhdGU7CisgICAgY29kZWNfc2V0dGluZ3NfLnNw
YXRpYWxMYXllcnNbc2xfaWR4XS5hY3RpdmUgPSB0cnVlOwogCiAgICAgYml0cmF0ZV9hbGxvY2F0
aW9uLlNldEJpdHJhdGUoCiAgICAgICAgIHNsX2lkeCwgMCwgY29kZWNfc2V0dGluZ3NfLnNwYXRp
YWxMYXllcnNbc2xfaWR4XS50YXJnZXRCaXRyYXRlICogMTAwMCk7CkBAIC0xMDg1LDYgKzEwODks
NyBAQCBURVNUX0YoVGVzdFZwOUltcGxGcmFtZURyb3BwaW5nLCBMYXllck1heEZyYW1lcmF0ZUlz
Q2FwcGVkQnlDb2RlY01heEZyYW1lcmF0ZSkgewogICBjb2RlY19zZXR0aW5nc18uc3BhdGlhbExh
eWVyc1swXS5taW5CaXRyYXRlID0gY29kZWNfc2V0dGluZ3NfLnN0YXJ0Qml0cmF0ZTsKICAgY29k
ZWNfc2V0dGluZ3NfLnNwYXRpYWxMYXllcnNbMF0ubWF4Qml0cmF0ZSA9IGNvZGVjX3NldHRpbmdz
Xy5zdGFydEJpdHJhdGU7CiAgIGNvZGVjX3NldHRpbmdzXy5zcGF0aWFsTGF5ZXJzWzBdLnRhcmdl
dEJpdHJhdGUgPSBjb2RlY19zZXR0aW5nc18uc3RhcnRCaXRyYXRlOworICBjb2RlY19zZXR0aW5n
c18uc3BhdGlhbExheWVyc1swXS5hY3RpdmUgPSB0cnVlOwogCiAgIGJpdHJhdGVfYWxsb2NhdGlv
bi5TZXRCaXRyYXRlKAogICAgICAgMCwgMCwgY29kZWNfc2V0dGluZ3NfLnNwYXRpYWxMYXllcnNb
MF0udGFyZ2V0Qml0cmF0ZSAqIDEwMDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOS92
cDkuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA5L3ZwOS5jYwppbmRleCAyMmEwODg4MTIwOGExMjllYjUy
ZTM1YTYwZDY5Zjk2YjQzMmYzMmJkLi41OWNjNjY3MDdlNGM5MDY3Y2Q2ZGVjZGIwOWFjNDNiNmVl
MmI2M2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA5L3ZwOS5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9j
b2RlY3MvdnA5L3ZwOS5jYwpAQCAtMTQsMzAgKzE0LDE1IEBACiAjaW5jbHVkZSAiYXBpL3ZpZGVv
X2NvZGVjcy9zZHBfdmlkZW9fZm9ybWF0LmgiCiAjaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2Rp
bmcvY29kZWNzL3ZwOS92cDlfaW1wbC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgot
I2luY2x1ZGUgInZweC92cDhjeC5oIgotI2luY2x1ZGUgInZweC92cDhkeC5oIgotI2luY2x1ZGUg
InZweC92cHhfY29kZWMuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKIHN0ZDo6dmVjdG9yPFNk
cFZpZGVvRm9ybWF0PiBTdXBwb3J0ZWRWUDlDb2RlY3MoKSB7CiAjaWZkZWYgUlRDX0VOQUJMRV9W
UDkKLSAgLy8gUHJvZmlsZSAyIG1pZ2h0IG5vdCBiZSBhdmFpbGFibGUgb24gc29tZSBwbGF0Zm9y
bXMgdW50aWwKLSAgLy8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3dlYm0vaXNzdWVzL2Rl
dGFpbD9pZD0xNTQ0IGlzIHNvbHZlZC4KLSAgc3RhdGljIGJvb2wgdnB4X3N1cHBvcnRzX2hpZ2hf
Yml0X2RlcHRoID0KLSAgICAgICh2cHhfY29kZWNfZ2V0X2NhcHModnB4X2NvZGVjX3ZwOV9jeCgp
KSAmIFZQWF9DT0RFQ19DQVBfSElHSEJJVERFUFRIKSAhPQotICAgICAgICAgIDAgJiYKLSAgICAg
ICh2cHhfY29kZWNfZ2V0X2NhcHModnB4X2NvZGVjX3ZwOV9keCgpKSAmIFZQWF9DT0RFQ19DQVBf
SElHSEJJVERFUFRIKSAhPQotICAgICAgICAgIDA7Ci0KKyAgLy8gVE9ETyhlbWlyY2FuKTogQWRk
IFByb2ZpbGUgMiBzdXBwb3J0IGFmdGVyIGZpeGluZyBicm93c2VyX3Rlc3RzLgogICBzdGQ6OnZl
Y3RvcjxTZHBWaWRlb0Zvcm1hdD4gc3VwcG9ydGVkX2Zvcm1hdHN7U2RwVmlkZW9Gb3JtYXQoCiAg
ICAgICBjcmlja2V0OjprVnA5Q29kZWNOYW1lLAogICAgICAge3trVlA5Rm10cFByb2ZpbGVJZCwg
VlA5UHJvZmlsZVRvU3RyaW5nKFZQOVByb2ZpbGU6OmtQcm9maWxlMCl9fSl9OwotICBpZiAodnB4
X3N1cHBvcnRzX2hpZ2hfYml0X2RlcHRoKSB7Ci0gICAgc3VwcG9ydGVkX2Zvcm1hdHMucHVzaF9i
YWNrKFNkcFZpZGVvRm9ybWF0KAotICAgICAgICBjcmlja2V0OjprVnA5Q29kZWNOYW1lLAotICAg
ICAgICB7e2tWUDlGbXRwUHJvZmlsZUlkLCBWUDlQcm9maWxlVG9TdHJpbmcoVlA5UHJvZmlsZTo6
a1Byb2ZpbGUyKX19KSk7Ci0gIH0KICAgcmV0dXJuIHN1cHBvcnRlZF9mb3JtYXRzOwogI2Vsc2UK
ICAgcmV0dXJuIHN0ZDo6dmVjdG9yPFNkcFZpZGVvRm9ybWF0PigpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2Rp
bmcvdmlkZW9fY29kZWNfaW5pdGlhbGl6ZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy92aWRlb19jb2RlY19pbml0aWFs
aXplci5jYwppbmRleCA4NmE1YWIyYTQ4MjA5OTRmZDc0MDI4NzRlOWYzNGYyYmJlMmVmMzgxLi4x
MmVhYzIzOGFjZGY3OGQ1OWY0MTk5YTMyYjBiNzNmOTg5NGZmZjE1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGlu
Zy92aWRlb19jb2RlY19pbml0aWFsaXplci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy92aWRlb19jb2RlY19pbml0
aWFsaXplci5jYwpAQCAtMTg3LDYgKzE4NywxNCBAQCBWaWRlb0NvZGVjIFZpZGVvQ29kZWNJbml0
aWFsaXplcjo6VmlkZW9FbmNvZGVyQ29uZmlnVG9WaWRlb0NvZGVjKAogICAgICAgICAgIHNwYXRp
YWxfbGF5ZXJzLmJhY2soKS5taW5CaXRyYXRlID0gdmlkZW9fY29kZWMubWluQml0cmF0ZTsKICAg
ICAgICAgICBzcGF0aWFsX2xheWVycy5iYWNrKCkubWF4Qml0cmF0ZSA9IHZpZGVvX2NvZGVjLm1h
eEJpdHJhdGU7CiAgICAgICAgIH0KKworICAgICAgICBmb3IgKHNpemVfdCBzcGF0aWFsX2lkeCA9
IDA7CisgICAgICAgICAgICAgc3BhdGlhbF9pZHggPCBjb25maWcuc2ltdWxjYXN0X2xheWVycy5z
aXplKCkgJiYKKyAgICAgICAgICAgICBzcGF0aWFsX2lkeCA8IHNwYXRpYWxfbGF5ZXJzLnNpemUo
KTsKKyAgICAgICAgICAgICArK3NwYXRpYWxfaWR4KSB7CisgICAgICAgICAgc3BhdGlhbF9sYXll
cnNbc3BhdGlhbF9sYXllcnMuc2l6ZSgpIC0gc3BhdGlhbF9pZHggLSAxXS5hY3RpdmUgPQorICAg
ICAgICAgICAgICBjb25maWcuc2ltdWxjYXN0X2xheWVyc1tzcGF0aWFsX2lkeF0uYWN0aXZlOwor
ICAgICAgICB9CiAgICAgICB9CiAKICAgICAgIFJUQ19EQ0hFQ0soIXNwYXRpYWxfbGF5ZXJzLmVt
cHR5KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvdmlkZW9fY29kZWNfaW5pdGlhbGl6ZXJfdW5pdHRl
c3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L3ZpZGVvX2NvZGluZy92aWRlb19jb2RlY19pbml0aWFsaXplcl91bml0dGVzdC5jYwppbmRleCBj
ZWZmMWViYWY3NDI3YmY5MjhmZTdlNmFkYmUwM2M1MzBhMTg3Y2UzLi41NGZhZTFiMDhlMzIyNGUx
YmIxNDc3NzIxYTkwN2U4MWUyZWI2MTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy92aWRlb19jb2RlY19p
bml0aWFsaXplcl91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy92aWRlb19jb2RlY19pbml0aWFsaXpl
cl91bml0dGVzdC5jYwpAQCAtMjg2LDQgKzI4Niw1MyBAQCBURVNUX0YoVmlkZW9Db2RlY0luaXRp
YWxpemVyVGVzdCwKICAgICAgICAgICAgIGtEZWZhdWx0TWF4Qml0cmF0ZUJwcyAvIDEwMDApOwog
fQogCitURVNUX0YoVmlkZW9Db2RlY0luaXRpYWxpemVyVGVzdCwKKyAgICAgICBWcDlLZWVwQml0
cmF0ZUxpbWl0c0lmTnVtYmVyT2ZTcGF0aWFsTGF5ZXJzSXNSZWR1Y2VkVG9PbmUpIHsKKyAgLy8g
UmVxdWVzdCAzIHNwYXRpYWwgbGF5ZXJzIGZvciAzMjB4MTgwIGlucHV0LiBBY3R1YWwgbnVtYmVy
IG9mIGxheWVycyB3aWxsIGJlCisgIC8vIHJlZHVjZWQgdG8gMSBkdWUgdG8gbG93IGlucHV0IHJl
c29sdXRpb24gYnV0IFNWQyBiaXRyYXRlIGxpbWl0cyBzaG91bGQgYmUKKyAgLy8gYXBwbGllZC4K
KyAgU2V0VXBGb3IoVmlkZW9Db2RlY1R5cGU6OmtWaWRlb0NvZGVjVlA5LCAzLCAzLCBmYWxzZSk7
CisgIFZpZGVvU3RyZWFtIHN0cmVhbSA9IERlZmF1bHRTdHJlYW0oKTsKKyAgc3RyZWFtLndpZHRo
ID0gMzIwOworICBzdHJlYW0uaGVpZ2h0ID0gMTgwOworICBzdHJlYW0ubnVtX3RlbXBvcmFsX2xh
eWVycyA9IDM7CisgIHN0cmVhbXNfLnB1c2hfYmFjayhzdHJlYW0pOworCisgIEVYUEVDVF9UUlVF
KEluaXRpYWxpemVDb2RlYygpKTsKKyAgRVhQRUNUX0xUKGNvZGVjX291dF8uc3BhdGlhbExheWVy
c1swXS5tYXhCaXRyYXRlLAorICAgICAgICAgICAga0RlZmF1bHRNYXhCaXRyYXRlQnBzIC8gMTAw
MCk7Cit9CisKK1RFU1RfRihWaWRlb0NvZGVjSW5pdGlhbGl6ZXJUZXN0LCBWcDlEZWFjdGl2YXRl
TGF5ZXJzKSB7CisgIFNldFVwRm9yKFZpZGVvQ29kZWNUeXBlOjprVmlkZW9Db2RlY1ZQOSwgMywg
MSwgZmFsc2UpOworICBWaWRlb1N0cmVhbSBzdHJlYW0gPSBEZWZhdWx0U3RyZWFtKCk7CisgIHN0
cmVhbXNfLnB1c2hfYmFjayhzdHJlYW0pOworCisgIGNvbmZpZ18uc2ltdWxjYXN0X2xheWVycy5y
ZXNpemUoMyk7CisKKyAgLy8gQWN0aXZhdGUgYWxsIGxheWVycy4KKyAgY29uZmlnXy5zaW11bGNh
c3RfbGF5ZXJzWzBdLmFjdGl2ZSA9IHRydWU7CisgIGNvbmZpZ18uc2ltdWxjYXN0X2xheWVyc1sx
XS5hY3RpdmUgPSB0cnVlOworICBjb25maWdfLnNpbXVsY2FzdF9sYXllcnNbMl0uYWN0aXZlID0g
dHJ1ZTsKKyAgRVhQRUNUX1RSVUUoSW5pdGlhbGl6ZUNvZGVjKCkpOworICBFWFBFQ1RfVFJVRShj
b2RlY19vdXRfLnNwYXRpYWxMYXllcnNbMF0uYWN0aXZlKTsKKyAgRVhQRUNUX1RSVUUoY29kZWNf
b3V0Xy5zcGF0aWFsTGF5ZXJzWzFdLmFjdGl2ZSk7CisgIEVYUEVDVF9UUlVFKGNvZGVjX291dF8u
c3BhdGlhbExheWVyc1syXS5hY3RpdmUpOworCisgIC8vIERlYWN0aXZhdGUgdG9wIGxheWVyLgor
ICBjb25maWdfLnNpbXVsY2FzdF9sYXllcnNbMF0uYWN0aXZlID0gZmFsc2U7CisgIEVYUEVDVF9U
UlVFKEluaXRpYWxpemVDb2RlYygpKTsKKyAgRVhQRUNUX1RSVUUoY29kZWNfb3V0Xy5zcGF0aWFs
TGF5ZXJzWzBdLmFjdGl2ZSk7CisgIEVYUEVDVF9UUlVFKGNvZGVjX291dF8uc3BhdGlhbExheWVy
c1sxXS5hY3RpdmUpOworICBFWFBFQ1RfRkFMU0UoY29kZWNfb3V0Xy5zcGF0aWFsTGF5ZXJzWzJd
LmFjdGl2ZSk7CisKKyAgLy8gRGVhY3RpdmF0ZSBtaWRkbGUgbGF5ZXIuCisgIGNvbmZpZ18uc2lt
dWxjYXN0X2xheWVyc1swXS5hY3RpdmUgPSB0cnVlOworICBjb25maWdfLnNpbXVsY2FzdF9sYXll
cnNbMV0uYWN0aXZlID0gZmFsc2U7CisgIEVYUEVDVF9UUlVFKEluaXRpYWxpemVDb2RlYygpKTsK
KyAgRVhQRUNUX1RSVUUoY29kZWNfb3V0Xy5zcGF0aWFsTGF5ZXJzWzBdLmFjdGl2ZSk7CisgIEVY
UEVDVF9GQUxTRShjb2RlY19vdXRfLnNwYXRpYWxMYXllcnNbMV0uYWN0aXZlKTsKKyAgRVhQRUNU
X1RSVUUoY29kZWNfb3V0Xy5zcGF0aWFsTGF5ZXJzWzJdLmFjdGl2ZSk7Cit9CisKIH0gIC8vIG5h
bWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3AycC9iYXNlL3AycHRyYW5zcG9ydGNoYW5uZWxfdW5pdHRlc3QuY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9wMnB0cmFu
c3BvcnRjaGFubmVsX3VuaXR0ZXN0LmNjCmluZGV4IDg1NDk3OTRiNDdhODc0ZDAyYTNhZDM5NDg3
ZGEzN2FiYjg3YTk5YzEuLmJkNzY3Y2QyZmNlNGJmYjgzNDIyODIxYjc2NWUyNjJkZTYzOGExYmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Ay
cC9iYXNlL3AycHRyYW5zcG9ydGNoYW5uZWxfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvcDJwdHJhbnNwb3J0Y2hhbm5l
bF91bml0dGVzdC5jYwpAQCAtNDYxMSw3ICs0NjExLDcgQEAgVEVTVF9GKFAyUFRyYW5zcG9ydENo
YW5uZWxUZXN0LAogICBDb25maWd1cmVFbmRwb2ludHMoT1BFTiwgT1BFTiwga09ubHlMb2NhbFBv
cnRzLCBrT25seUxvY2FsUG9ydHMpOwogICAvLyBJQ0UgcGFyYW1ldGVyIHdpbGwgYmUgc2V0IHVw
IHdoZW4gY3JlYXRpbmcgdGhlIGNoYW5uZWxzLgogICBzZXRfcmVtb3RlX2ljZV9wYXJhbWV0ZXJf
c291cmNlKEZST01fU0VUSUNFUEFSQU1FVEVSUyk7Ci0gIEdldEVuZHBvaW50KDApLT5uZXR3b3Jr
X21hbmFnZXJfLkNyZWF0ZU1kbnNSZXNwb25kZXIoKTsKKyAgR2V0RW5kcG9pbnQoMCktPm5ldHdv
cmtfbWFuYWdlcl8uQ3JlYXRlTWRuc1Jlc3BvbmRlcihydGM6OlRocmVhZDo6Q3VycmVudCgpKTsK
ICAgR2V0RW5kcG9pbnQoMSktPmFzeW5jX3Jlc29sdmVyX2ZhY3RvcnlfID0gJm1vY2tfYXN5bmNf
cmVzb2x2ZXJfZmFjdG9yeTsKICAgQ3JlYXRlQ2hhbm5lbHMoKTsKICAgLy8gUGF1c2Ugc2VuZGlu
ZyBjYW5kaWRhdGVzIGZyb20gYm90aCBlbmRwb2ludHMgdW50aWwgd2UgZmluZCBvdXQgd2hhdCBw
b3J0CkBAIC00NjgyLDcgKzQ2ODIsNyBAQCBURVNUX0YoUDJQVHJhbnNwb3J0Q2hhbm5lbFRlc3Qs
CiAgIENvbmZpZ3VyZUVuZHBvaW50cyhPUEVOLCBPUEVOLCBrT25seUxvY2FsUG9ydHMsIGtPbmx5
TG9jYWxQb3J0cyk7CiAgIC8vIElDRSBwYXJhbWV0ZXIgd2lsbCBiZSBzZXQgdXAgd2hlbiBjcmVh
dGluZyB0aGUgY2hhbm5lbHMuCiAgIHNldF9yZW1vdGVfaWNlX3BhcmFtZXRlcl9zb3VyY2UoRlJP
TV9TRVRJQ0VQQVJBTUVURVJTKTsKLSAgR2V0RW5kcG9pbnQoMCktPm5ldHdvcmtfbWFuYWdlcl8u
Q3JlYXRlTWRuc1Jlc3BvbmRlcigpOworICBHZXRFbmRwb2ludCgwKS0+bmV0d29ya19tYW5hZ2Vy
Xy5DcmVhdGVNZG5zUmVzcG9uZGVyKHJ0Yzo6VGhyZWFkOjpDdXJyZW50KCkpOwogICBHZXRFbmRw
b2ludCgxKS0+YXN5bmNfcmVzb2x2ZXJfZmFjdG9yeV8gPSAmbW9ja19hc3luY19yZXNvbHZlcl9m
YWN0b3J5OwogICBDcmVhdGVDaGFubmVscygpOwogICAvLyBQYXVzZSBzZW5kaW5nIGNhbmRpZGF0
ZXMgZnJvbSBib3RoIGVuZHBvaW50cyB1bnRpbCB3ZSBmaW5kIG91dCB3aGF0IHBvcnQKQEAgLTQ3
NDksNyArNDc0OSw3IEBAIFRFU1RfRihQMlBUcmFuc3BvcnRDaGFubmVsVGVzdCwgQ2FuQ29ubmVj
dFdpdGhIb3N0Q2FuZGlkYXRlV2l0aE1kbnNOYW1lKSB7CiAgIENvbmZpZ3VyZUVuZHBvaW50cyhP
UEVOLCBPUEVOLCBrT25seUxvY2FsUG9ydHMsIGtPbmx5TG9jYWxQb3J0cyk7CiAgIC8vIElDRSBw
YXJhbWV0ZXIgd2lsbCBiZSBzZXQgdXAgd2hlbiBjcmVhdGluZyB0aGUgY2hhbm5lbHMuCiAgIHNl
dF9yZW1vdGVfaWNlX3BhcmFtZXRlcl9zb3VyY2UoRlJPTV9TRVRJQ0VQQVJBTUVURVJTKTsKLSAg
R2V0RW5kcG9pbnQoMCktPm5ldHdvcmtfbWFuYWdlcl8uQ3JlYXRlTWRuc1Jlc3BvbmRlcigpOwor
ICBHZXRFbmRwb2ludCgwKS0+bmV0d29ya19tYW5hZ2VyXy5DcmVhdGVNZG5zUmVzcG9uZGVyKHJ0
Yzo6VGhyZWFkOjpDdXJyZW50KCkpOwogICBHZXRFbmRwb2ludCgxKS0+YXN5bmNfcmVzb2x2ZXJf
ZmFjdG9yeV8gPSAmbW9ja19hc3luY19yZXNvbHZlcl9mYWN0b3J5OwogICBDcmVhdGVDaGFubmVs
cygpOwogICAvLyBQYXVzZSBzZW5kaW5nIGNhbmRpZGF0ZXMgZnJvbSBib3RoIGVuZHBvaW50cyB1
bnRpbCB3ZSBmaW5kIG91dCB3aGF0IHBvcnQKQEAgLTQ3NTgsMTcgKzQ3NTgsMTcgQEAgVEVTVF9G
KFAyUFRyYW5zcG9ydENoYW5uZWxUZXN0LCBDYW5Db25uZWN0V2l0aEhvc3RDYW5kaWRhdGVXaXRo
TWRuc05hbWUpIHsKICAgUGF1c2VDYW5kaWRhdGVzKDEpOwogICBBU1NFUlRfRVFfV0FJVCgxdSwg
R2V0RW5kcG9pbnQoMCktPnNhdmVkX2NhbmRpZGF0ZXNfLnNpemUoKSwga01lZGl1bVRpbWVvdXQp
OwogICBBU1NFUlRfRVEoMXUsIEdldEVuZHBvaW50KDApLT5zYXZlZF9jYW5kaWRhdGVzX1swXS0+
Y2FuZGlkYXRlcy5zaXplKCkpOwotICBjb25zdCBhdXRvJiBsb2NhbF9jYW5kaWRhdGUgPQorICBj
b25zdCBhdXRvJiBsb2NhbF9jYW5kaWRhdGVfZXAxID0KICAgICAgIEdldEVuZHBvaW50KDApLT5z
YXZlZF9jYW5kaWRhdGVzX1swXS0+Y2FuZGlkYXRlc1swXTsKICAgLy8gVGhlIElQIGFkZHJlc3Mg
b2YgZXAxJ3MgaG9zdCBjYW5kaWRhdGUgc2hvdWxkIGJlIG9iZnVzY2F0ZWQuCi0gIEVYUEVDVF9U
UlVFKGxvY2FsX2NhbmRpZGF0ZS5hZGRyZXNzKCkuSXNVbnJlc29sdmVkSVAoKSk7CisgIEVYUEVD
VF9UUlVFKGxvY2FsX2NhbmRpZGF0ZV9lcDEuYWRkcmVzcygpLklzVW5yZXNvbHZlZElQKCkpOwog
ICAvLyBUaGlzIGlzIHRoZSB1bmRlcmx5aW5nIHByaXZhdGUgSVAgYWRkcmVzcyBvZiB0aGUgc2Ft
ZSBjYW5kaWRhdGUgYXQgZXAxLAotICAvLyBhbmQgbGV0IHRoZSBtb2NrIHJlc29sdmVyIG9mIGVw
MiByZWNlaXZlcyB0aGUgY29ycmVjdCByZXNvbHV0aW9uLgotICBjb25zdCBhdXRvIGxvY2FsX2Fk
ZHJlc3MgPSBydGM6OlNvY2tldEFkZHJlc3MoCi0gICAgICBrUHVibGljQWRkcnNbMF0uaXBhZGRy
KCksIGxvY2FsX2NhbmRpZGF0ZS5hZGRyZXNzKCkucG9ydCgpKTsKKyAgLy8gYW5kIGxldCB0aGUg
bW9jayByZXNvbHZlciBvZiBlcDIgcmVjZWl2ZSB0aGUgY29ycmVjdCByZXNvbHV0aW9uLgorICBy
dGM6OlNvY2tldEFkZHJlc3MgcmVzb2x2ZWRfYWRkcmVzc19lcDEobG9jYWxfY2FuZGlkYXRlX2Vw
MS5hZGRyZXNzKCkpOworICByZXNvbHZlZF9hZGRyZXNzX2VwMS5TZXRSZXNvbHZlZElQKGtQdWJs
aWNBZGRyc1swXS5pcGFkZHIoKSk7CiAKICAgRVhQRUNUX0NBTEwobW9ja19hc3luY19yZXNvbHZl
ciwgR2V0UmVzb2x2ZWRBZGRyZXNzKF8sIF8pKQotICAgICAgLldpbGxPbmNlKERvQWxsKFNldEFy
Z1BvaW50ZWU8MT4obG9jYWxfYWRkcmVzcyksIFJldHVybih0cnVlKSkpOworICAgICAgLldpbGxP
bmNlKERvQWxsKFNldEFyZ1BvaW50ZWU8MT4ocmVzb2x2ZWRfYWRkcmVzc19lcDEpLCBSZXR1cm4o
dHJ1ZSkpKTsKICAgLy8gTGV0IGVwMSBzaWduYWwgaXRzIGhvc3RuYW1lIGNhbmRpZGF0ZSB0byBl
cDIuCiAgIFJlc3VtZUNhbmRpZGF0ZXMoMCk7CiAKQEAgLTQ3ODQsNCArNDc4NCwxMDMgQEAgVEVT
VF9GKFAyUFRyYW5zcG9ydENoYW5uZWxUZXN0LCBDYW5Db25uZWN0V2l0aEhvc3RDYW5kaWRhdGVX
aXRoTWRuc05hbWUpIHsKICAgRGVzdHJveUNoYW5uZWxzKCk7CiB9CiAKKy8vIFRlc3QgdGhhdCB3
aGVuIHRoZSBJUCBvZiBhIGhvc3QgY2FuZGlkYXRlIGlzIGNvbmNlYWxlZCBieSBhbiBtRE5TIG5h
bWUsIHRoZQorLy8gc3RhdHMgZnJvbSB0aGUgZ2F0aGVyaW5nIElDRSBlbmRwb2ludCBkbyBub3Qg
cmV2ZWFsIHRoZSBhZGRyZXNzIG9mIHRoaXMgbG9jYWwKKy8vIGhvc3QgY2FuZGlkYXRlIG9yIHRo
ZSByZWxhdGVkIGFkZHJlc3Mgb2YgYSBsb2NhbCBzcmZseCBjYW5kaWRhdGUgZnJvbSB0aGUKKy8v
IHNhbWUgZW5kcG9pbnQuIEFsc28sIHRoZSByZW1vdGUgSUNFIGVuZHBvaW50IHRoYXQgc3VjY2Vz
c2Z1bGx5IHJlc29sdmVzIGEKKy8vIHNpZ25hbGVkIGhvc3QgY2FuZGlkYXRlIHdpdGggYW4gbURO
UyBuYW1lIHNob3VsZCBub3QgcmV2ZWFsIHRoZSBhZGRyZXNzIG9mCisvLyB0aGlzIHJlbW90ZSBo
b3N0IGNhbmRpZGF0ZSBpbiBzdGF0cy4KK1RFU1RfRihQMlBUcmFuc3BvcnRDaGFubmVsVGVzdCwK
KyAgICAgICBDYW5kaWRhdGVzU2FuaXRpemVkSW5TdGF0c1doZW5NZG5zT2JmdXNjYXRpb25FbmFi
bGVkKSB7CisgIE5pY2VNb2NrPHJ0Yzo6TW9ja0FzeW5jUmVzb2x2ZXI+IG1vY2tfYXN5bmNfcmVz
b2x2ZXI7CisgIHdlYnJ0Yzo6TW9ja0FzeW5jUmVzb2x2ZXJGYWN0b3J5IG1vY2tfYXN5bmNfcmVz
b2x2ZXJfZmFjdG9yeTsKKyAgRVhQRUNUX0NBTEwobW9ja19hc3luY19yZXNvbHZlcl9mYWN0b3J5
LCBDcmVhdGUoKSkKKyAgICAgIC5XaWxsT25jZShSZXR1cm4oJm1vY2tfYXN5bmNfcmVzb2x2ZXIp
KTsKKworICAvLyBlcDEgYW5kIGVwMiB3aWxsIGdhdGhlciBob3N0IGNhbmRpZGF0ZXMgd2l0aCBh
ZGRyZXNzZXMKKyAgLy8ga1B1YmxpY0FkZHJzWzBdIGFuZCBrUHVibGljQWRkcnNbMV0sIHJlc3Bl
Y3RpdmVseS4gZXAxIGFsc28gZ2F0aGVycyBhIHNyZmx4CisgIC8vIGFuZCBhIHJlbGF5IGNhbmRp
ZGF0ZXMuCisgIENvbmZpZ3VyZUVuZHBvaW50cyhPUEVOLCBPUEVOLAorICAgICAgICAgICAgICAg
ICAgICAga0RlZmF1bHRQb3J0QWxsb2NhdG9yRmxhZ3MgfCBQT1JUQUxMT0NBVE9SX0RJU0FCTEVf
VENQLAorICAgICAgICAgICAgICAgICAgICAga09ubHlMb2NhbFBvcnRzKTsKKyAgLy8gSUNFIHBh
cmFtZXRlciB3aWxsIGJlIHNldCB1cCB3aGVuIGNyZWF0aW5nIHRoZSBjaGFubmVscy4KKyAgc2V0
X3JlbW90ZV9pY2VfcGFyYW1ldGVyX3NvdXJjZShGUk9NX1NFVElDRVBBUkFNRVRFUlMpOworICBH
ZXRFbmRwb2ludCgwKS0+bmV0d29ya19tYW5hZ2VyXy5DcmVhdGVNZG5zUmVzcG9uZGVyKHJ0Yzo6
VGhyZWFkOjpDdXJyZW50KCkpOworICBHZXRFbmRwb2ludCgxKS0+YXN5bmNfcmVzb2x2ZXJfZmFj
dG9yeV8gPSAmbW9ja19hc3luY19yZXNvbHZlcl9mYWN0b3J5OworICBDcmVhdGVDaGFubmVscygp
OworICAvLyBQYXVzZSBzZW5kaW5nIGNhbmRpZGF0ZXMgZnJvbSBib3RoIGVuZHBvaW50cyB1bnRp
bCB3ZSBmaW5kIG91dCB3aGF0IHBvcnQKKyAgLy8gbnVtYmVyIGlzIGFzc2lnbmVkIHRvIGVwMSdz
IGhvc3QgY2FuZGlkYXRlLgorICBQYXVzZUNhbmRpZGF0ZXMoMCk7CisgIFBhdXNlQ2FuZGlkYXRl
cygxKTsKKyAgLy8gRXAxIGhhcyBhIFVEUCBob3N0LCBhIHNyZmx4IGFuZCBhIHJlbGF5IGNhbmRp
ZGF0ZXMuCisgIEFTU0VSVF9FUV9XQUlUKDN1LCBHZXRFbmRwb2ludCgwKS0+c2F2ZWRfY2FuZGlk
YXRlc18uc2l6ZSgpLCBrTWVkaXVtVGltZW91dCk7CisgIEFTU0VSVF9FUV9XQUlUKDF1LCBHZXRF
bmRwb2ludCgxKS0+c2F2ZWRfY2FuZGlkYXRlc18uc2l6ZSgpLCBrTWVkaXVtVGltZW91dCk7CisK
KyAgZm9yIChjb25zdCBhdXRvJiBjYW5kaWRhdGVzX2RhdGEgOiBHZXRFbmRwb2ludCgwKS0+c2F2
ZWRfY2FuZGlkYXRlc18pIHsKKyAgICBBU1NFUlRfRVEoMXUsIGNhbmRpZGF0ZXNfZGF0YS0+Y2Fu
ZGlkYXRlcy5zaXplKCkpOworICAgIGNvbnN0IGF1dG8mIGxvY2FsX2NhbmRpZGF0ZV9lcDEgPSBj
YW5kaWRhdGVzX2RhdGEtPmNhbmRpZGF0ZXNbMF07CisgICAgaWYgKGxvY2FsX2NhbmRpZGF0ZV9l
cDEudHlwZSgpID09IExPQ0FMX1BPUlRfVFlQRSkgeworICAgICAgLy8gVGhpcyBpcyB0aGUgdW5k
ZXJseWluZyBwcml2YXRlIElQIGFkZHJlc3Mgb2YgdGhlIHNhbWUgY2FuZGlkYXRlIGF0IGVwMSwK
KyAgICAgIC8vIGFuZCBsZXQgdGhlIG1vY2sgcmVzb2x2ZXIgb2YgZXAyIHJlY2VpdmUgdGhlIGNv
cnJlY3QgcmVzb2x1dGlvbi4KKyAgICAgIHJ0Yzo6U29ja2V0QWRkcmVzcyByZXNvbHZlZF9hZGRy
ZXNzX2VwMShsb2NhbF9jYW5kaWRhdGVfZXAxLmFkZHJlc3MoKSk7CisgICAgICByZXNvbHZlZF9h
ZGRyZXNzX2VwMS5TZXRSZXNvbHZlZElQKGtQdWJsaWNBZGRyc1swXS5pcGFkZHIoKSk7CisgICAg
ICBFWFBFQ1RfQ0FMTChtb2NrX2FzeW5jX3Jlc29sdmVyLCBHZXRSZXNvbHZlZEFkZHJlc3MoXywg
XykpCisgICAgICAgICAgLldpbGxPbmNlKAorICAgICAgICAgICAgICBEb0FsbChTZXRBcmdQb2lu
dGVlPDE+KHJlc29sdmVkX2FkZHJlc3NfZXAxKSwgUmV0dXJuKHRydWUpKSk7CisgICAgICBicmVh
azsKKyAgICB9CisgIH0KKyAgUmVzdW1lQ2FuZGlkYXRlcygwKTsKKyAgUmVzdW1lQ2FuZGlkYXRl
cygxKTsKKworICBBU1NFUlRfRVFfV0FJVChrSWNlR2F0aGVyaW5nQ29tcGxldGUsIGVwMV9jaDEo
KS0+Z2F0aGVyaW5nX3N0YXRlKCksCisgICAgICAgICAgICAgICAgIGtNZWRpdW1UaW1lb3V0KTsK
KyAgLy8gV2Ugc2hvdWxkIGhhdmUgdGhlIGZvbGxvd2luZyBjYW5kaWRhdGUgcGFpcnMgb24gYm90
aCBlbmRwb2ludHM6CisgIC8vIGVwMV9ob3N0IDwtPiBlcDJfaG9zdCwgZXAxX3NyZmx4IDwtPiBl
cDJfaG9zdCwgZXAxX3JlbGF5IDwtPiBlcDJfaG9zdAorICBBU1NFUlRfRVFfV0FJVCgzdSwgZXAx
X2NoMSgpLT5jb25uZWN0aW9ucygpLnNpemUoKSwga01lZGl1bVRpbWVvdXQpOworICBBU1NFUlRf
RVFfV0FJVCgzdSwgZXAyX2NoMSgpLT5jb25uZWN0aW9ucygpLnNpemUoKSwga01lZGl1bVRpbWVv
dXQpOworCisgIENvbm5lY3Rpb25JbmZvcyBjb25uZWN0aW9uX2luZm9zX2VwMTsKKyAgQ2FuZGlk
YXRlU3RhdHNMaXN0IGNhbmRpZGF0ZV9zdGF0c19saXN0X2VwMTsKKyAgQ29ubmVjdGlvbkluZm9z
IGNvbm5lY3Rpb25faW5mb3NfZXAyOworICBDYW5kaWRhdGVTdGF0c0xpc3QgY2FuZGlkYXRlX3N0
YXRzX2xpc3RfZXAyOworICBlcDFfY2gxKCktPkdldFN0YXRzKCZjb25uZWN0aW9uX2luZm9zX2Vw
MSwgJmNhbmRpZGF0ZV9zdGF0c19saXN0X2VwMSk7CisgIGVwMl9jaDEoKS0+R2V0U3RhdHMoJmNv
bm5lY3Rpb25faW5mb3NfZXAyLCAmY2FuZGlkYXRlX3N0YXRzX2xpc3RfZXAyKTsKKyAgRVhQRUNU
X0VRKDN1LCBjb25uZWN0aW9uX2luZm9zX2VwMS5zaXplKCkpOworICBFWFBFQ1RfRVEoM3UsIGNh
bmRpZGF0ZV9zdGF0c19saXN0X2VwMS5zaXplKCkpOworICBFWFBFQ1RfRVEoM3UsIGNvbm5lY3Rp
b25faW5mb3NfZXAyLnNpemUoKSk7CisgIC8vIENoZWNrIHRoZSBzdGF0cyBvZiBlcDEgc2VlbiBi
eSBlcDEuCisgIGZvciAoY29uc3QgYXV0byYgY29ubmVjdGlvbl9pbmZvIDogY29ubmVjdGlvbl9p
bmZvc19lcDEpIHsKKyAgICBjb25zdCBhdXRvJiBsb2NhbF9jYW5kaWRhdGUgPSBjb25uZWN0aW9u
X2luZm8ubG9jYWxfY2FuZGlkYXRlOworICAgIGlmIChsb2NhbF9jYW5kaWRhdGUudHlwZSgpID09
IExPQ0FMX1BPUlRfVFlQRSkgeworICAgICAgRVhQRUNUX1RSVUUobG9jYWxfY2FuZGlkYXRlLmFk
ZHJlc3MoKS5Jc1VucmVzb2x2ZWRJUCgpKTsKKyAgICB9IGVsc2UgaWYgKGxvY2FsX2NhbmRpZGF0
ZS50eXBlKCkgPT0gU1RVTl9QT1JUX1RZUEUpIHsKKyAgICAgIEVYUEVDVF9UUlVFKGxvY2FsX2Nh
bmRpZGF0ZS5yZWxhdGVkX2FkZHJlc3MoKS5Jc0FueUlQKCkpOworICAgIH0gZWxzZSBpZiAobG9j
YWxfY2FuZGlkYXRlLnR5cGUoKSA9PSBSRUxBWV9QT1JUX1RZUEUpIHsKKyAgICAgIC8vIFRoZSBy
ZWxhdGVkIGFkZHJlc3Mgb2YgdGhlIHJlbGF5IGNhbmRpZGF0ZSBzaG91bGQgYmUgZXF1YWwgdG8g
dGhlCisgICAgICAvLyBzcmZseCBhZGRyZXNzLiBOb3RlIHRoYXQgTkFUIGlzIG5vdCBjb25maWd1
cmVkLCBoZW5jZSB0aGUgZm9sbG93aW5nCisgICAgICAvLyBleHBlY3RhdGlvbi4KKyAgICAgIEVY
UEVDVF9FUShrUHVibGljQWRkcnNbMF0uaXBhZGRyKCksCisgICAgICAgICAgICAgICAgbG9jYWxf
Y2FuZGlkYXRlLnJlbGF0ZWRfYWRkcmVzcygpLmlwYWRkcigpKTsKKyAgICB9IGVsc2UgeworICAg
ICAgRkFJTCgpOworICAgIH0KKyAgfQorICAvLyBDaGVjayB0aGUgc3RhdHMgb2YgZXAxIHNlZW4g
YnkgZXAyLgorICBmb3IgKGNvbnN0IGF1dG8mIGNvbm5lY3Rpb25faW5mbyA6IGNvbm5lY3Rpb25f
aW5mb3NfZXAyKSB7CisgICAgY29uc3QgYXV0byYgcmVtb3RlX2NhbmRpZGF0ZSA9IGNvbm5lY3Rp
b25faW5mby5yZW1vdGVfY2FuZGlkYXRlOworICAgIGlmIChyZW1vdGVfY2FuZGlkYXRlLnR5cGUo
KSA9PSBMT0NBTF9QT1JUX1RZUEUpIHsKKyAgICAgIEVYUEVDVF9UUlVFKHJlbW90ZV9jYW5kaWRh
dGUuYWRkcmVzcygpLklzVW5yZXNvbHZlZElQKCkpOworICAgIH0gZWxzZSBpZiAocmVtb3RlX2Nh
bmRpZGF0ZS50eXBlKCkgPT0gU1RVTl9QT1JUX1RZUEUpIHsKKyAgICAgIEVYUEVDVF9UUlVFKHJl
bW90ZV9jYW5kaWRhdGUucmVsYXRlZF9hZGRyZXNzKCkuSXNBbnlJUCgpKTsKKyAgICB9IGVsc2Ug
aWYgKHJlbW90ZV9jYW5kaWRhdGUudHlwZSgpID09IFJFTEFZX1BPUlRfVFlQRSkgeworICAgICAg
RVhQRUNUX0VRKGtQdWJsaWNBZGRyc1swXS5pcGFkZHIoKSwKKyAgICAgICAgICAgICAgICByZW1v
dGVfY2FuZGlkYXRlLnJlbGF0ZWRfYWRkcmVzcygpLmlwYWRkcigpKTsKKyAgICB9IGVsc2Ugewor
ICAgICAgRkFJTCgpOworICAgIH0KKyAgfQorICBEZXN0cm95Q2hhbm5lbHMoKTsKK30KKwogfSAg
Ly8gbmFtZXNwYWNlIGNyaWNrZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3BvcnQuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9wb3J0LmNjCmluZGV4IDQ5NTQ3NDRjYzhl
OTc2NTIxYzg0MGYxNGU4YTVkMDk4MDM1NTQzNTkuLmJiMjBhNGQ1ZGEzOWVkOTBlMjRkZGJjNDFj
YjNkYjQ2YzQ0NWI2YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3AycC9iYXNlL3BvcnQuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvcG9ydC5jYwpAQCAtMTgwOSwxNCArMTgwOSwx
MyBAQCBDb25uZWN0aW9uSW5mbyBDb25uZWN0aW9uOjpzdGF0cygpIHsKICAgc3RhdHNfLnRpbWVv
dXQgPSB3cml0ZV9zdGF0ZV8gPT0gU1RBVEVfV1JJVEVfVElNRU9VVDsKICAgc3RhdHNfLm5ld19j
b25uZWN0aW9uID0gIXJlcG9ydGVkXzsKICAgc3RhdHNfLnJ0dCA9IHJ0dF87Ci0gIHN0YXRzXy5s
b2NhbF9jYW5kaWRhdGUgPSBsb2NhbF9jYW5kaWRhdGUoKTsKLSAgc3RhdHNfLnJlbW90ZV9jYW5k
aWRhdGUgPSByZW1vdGVfY2FuZGlkYXRlKCk7CiAgIHN0YXRzXy5rZXkgPSB0aGlzOwogICBzdGF0
c18uc3RhdGUgPSBzdGF0ZV87CiAgIHN0YXRzXy5wcmlvcml0eSA9IHByaW9yaXR5KCk7CiAgIHN0
YXRzXy5ub21pbmF0ZWQgPSBub21pbmF0ZWQoKTsKICAgc3RhdHNfLnRvdGFsX3JvdW5kX3RyaXBf
dGltZV9tcyA9IHRvdGFsX3JvdW5kX3RyaXBfdGltZV9tc187CiAgIHN0YXRzXy5jdXJyZW50X3Jv
dW5kX3RyaXBfdGltZV9tcyA9IGN1cnJlbnRfcm91bmRfdHJpcF90aW1lX21zXzsKKyAgQ29weUNh
bmRpZGF0ZXNUb1N0YXRzQW5kU2FuaXRpemVJZk5lY2Vzc2FyeSgpOwogICByZXR1cm4gc3RhdHNf
OwogfQogCkBAIC0xODkzLDYgKzE4OTIsMzYgQEAgdm9pZCBDb25uZWN0aW9uOjpNYXliZVVwZGF0
ZUxvY2FsQ2FuZGlkYXRlKENvbm5lY3Rpb25SZXF1ZXN0KiByZXF1ZXN0LAogICBTaWduYWxTdGF0
ZUNoYW5nZSh0aGlzKTsKIH0KIAordm9pZCBDb25uZWN0aW9uOjpDb3B5Q2FuZGlkYXRlc1RvU3Rh
dHNBbmRTYW5pdGl6ZUlmTmVjZXNzYXJ5KCkgeworICBhdXRvIGdldF9zYW5pdGl6ZWRfY29weSA9
IFtdKGNvbnN0IENhbmRpZGF0ZSYgYykgeworICAgIGJvb2wgdXNlX2hvc3RuYW1lX2FkZHJlc3Mg
PSBjLnR5cGUoKSA9PSBMT0NBTF9QT1JUX1RZUEU7CisgICAgYm9vbCBmaWx0ZXJfcmVsYXRlZF9h
ZGRyZXNzID0gYy50eXBlKCkgPT0gU1RVTl9QT1JUX1RZUEU7CisgICAgcmV0dXJuIGMuVG9TYW5p
dGl6ZWRDb3B5KHVzZV9ob3N0bmFtZV9hZGRyZXNzLCBmaWx0ZXJfcmVsYXRlZF9hZGRyZXNzKTsK
KyAgfTsKKworICBpZiAocG9ydF8tPk5ldHdvcmsoKS0+R2V0TWRuc1Jlc3BvbmRlcigpICE9IG51
bGxwdHIpIHsKKyAgICAvLyBXaGVuIHRoZSBtRE5TIG9iZnVzY2F0aW9uIG9mIGxvY2FsIElQcyBp
cyBlbmFibGVkLCB3ZSBzYW5pdGl6ZSBsb2NhbAorICAgIC8vIGNhbmRpZGF0ZXMuCisgICAgc3Rh
dHNfLmxvY2FsX2NhbmRpZGF0ZSA9IGdldF9zYW5pdGl6ZWRfY29weShsb2NhbF9jYW5kaWRhdGUo
KSk7CisgIH0gZWxzZSB7CisgICAgc3RhdHNfLmxvY2FsX2NhbmRpZGF0ZSA9IGxvY2FsX2NhbmRp
ZGF0ZSgpOworICB9CisKKyAgaWYgKCFyZW1vdGVfY2FuZGlkYXRlKCkuYWRkcmVzcygpLmhvc3Ru
YW1lKCkuZW1wdHkoKSkgeworICAgIC8vIElmIHRoZSByZW1vdGUgZW5kcG9pbnQgc2lnbmFsZWQg
dXMgYSBob3N0bmFtZSBjYW5kaWRhdGUsIHdlIGFzc3VtZSBpdCBpcworICAgIC8vIHN1cHBvc2Vk
IHRvIGJlIHNhbml0aXplZCBpbiB0aGUgc3RhdHMuCisgICAgLy8KKyAgICAvLyBBIHByZmx4IHJl
bW90ZSBjYW5kaWRhdGUgc2hvdWxkIG5vdCBoYXZlIGEgaG9zdG5hbWUgc2V0LgorICAgIFJUQ19E
Q0hFQ0socmVtb3RlX2NhbmRpZGF0ZSgpLnR5cGUoKSAhPSBQUkZMWF9QT1JUX1RZUEUpOworICAg
IC8vIEEgcmVtb3RlIGhvc3RuYW1lIGNhbmRpZGF0ZSBzaG91bGQgaGF2ZSBhIHJlc29sdmVkIElQ
IGJlZm9yZSB3ZSBjYW4gZm9ybQorICAgIC8vIGEgY2FuZGlkYXRlIHBhaXIuCisgICAgUlRDX0RD
SEVDSyghcmVtb3RlX2NhbmRpZGF0ZSgpLmFkZHJlc3MoKS5Jc1VucmVzb2x2ZWRJUCgpKTsKKyAg
ICBzdGF0c18ucmVtb3RlX2NhbmRpZGF0ZSA9IGdldF9zYW5pdGl6ZWRfY29weShyZW1vdGVfY2Fu
ZGlkYXRlKCkpOworICB9IGVsc2UgeworICAgIHN0YXRzXy5yZW1vdGVfY2FuZGlkYXRlID0gcmVt
b3RlX2NhbmRpZGF0ZSgpOworICB9Cit9CisKIGJvb2wgQ29ubmVjdGlvbjo6cnR0X2NvbnZlcmdl
ZCgpIGNvbnN0IHsKICAgcmV0dXJuIHJ0dF9zYW1wbGVzXyA+IChSVFRfUkFUSU8gKyAxKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Ay
cC9iYXNlL3BvcnQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3AycC9iYXNlL3BvcnQuaAppbmRleCBlMGIzZjA3ODYwMzc3N2Y1NWJmNWZiNGQ5ZTlkODYwMzhh
ZWMzMDdmLi4xNzA0N2I3ZjRiM2JmN2FlMTY3MWUxN2NkZWEzZjcwYTg3NTM2OGI0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9w
b3J0LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJw
L2Jhc2UvcG9ydC5oCkBAIC03ODQsNiArNzg0LDggQEAgY2xhc3MgQ29ubmVjdGlvbiA6IHB1Ymxp
YyBDYW5kaWRhdGVQYWlySW50ZXJmYWNlLAogICB2b2lkIE1heWJlVXBkYXRlTG9jYWxDYW5kaWRh
dGUoQ29ubmVjdGlvblJlcXVlc3QqIHJlcXVlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBTdHVuTWVzc2FnZSogcmVzcG9uc2UpOwogCisgIHZvaWQgQ29weUNhbmRpZGF0ZXNU
b1N0YXRzQW5kU2FuaXRpemVJZk5lY2Vzc2FyeSgpOworCiAgIHZvaWQgTG9nQ2FuZGlkYXRlUGFp
ckNvbmZpZyh3ZWJydGM6OkljZUNhbmRpZGF0ZVBhaXJDb25maWdUeXBlIHR5cGUpOwogICB2b2lk
IExvZ0NhbmRpZGF0ZVBhaXJFdmVudCh3ZWJydGM6OkljZUNhbmRpZGF0ZVBhaXJFdmVudFR5cGUg
dHlwZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3AycC9iYXNlL3BvcnRhbGxvY2F0b3IuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9wb3J0YWxsb2NhdG9yLmNjCmluZGV4IGQzYjNh
NTZlZGQ5MjZjN2MwYTAzMTRiYzUzYzg2YTQ3Mjk3NGMyMmIuLjA2MzU3NGIyNWJhYzVlOWU3Mjc3
OTZkOGM1ZGZhYzE3MDNjNDNjNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3BvcnRhbGxvY2F0b3IuY2MKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvcG9ydGFsbG9jYXRv
ci5jYwpAQCAtODksNiArODksMTQgQEAgdm9pZCBQb3J0QWxsb2NhdG9yU2Vzc2lvbjo6R2V0Q2Fu
ZGlkYXRlU3RhdHNGcm9tUmVhZHlQb3J0cygKICAgICBmb3IgKGNvbnN0IGF1dG8mIGNhbmRpZGF0
ZSA6IGNhbmRpZGF0ZXMpIHsKICAgICAgIENhbmRpZGF0ZVN0YXRzIGNhbmRpZGF0ZV9zdGF0cyhj
YW5kaWRhdGUpOwogICAgICAgcG9ydC0+R2V0U3R1blN0YXRzKCZjYW5kaWRhdGVfc3RhdHMuc3R1
bl9zdGF0cyk7CisgICAgICBib29sIG1kbnNfb2JmdXNjYXRpb25fZW5hYmxlZCA9CisgICAgICAg
ICAgcG9ydC0+TmV0d29yaygpLT5HZXRNZG5zUmVzcG9uZGVyKCkgIT0gbnVsbHB0cjsKKyAgICAg
IGlmIChtZG5zX29iZnVzY2F0aW9uX2VuYWJsZWQpIHsKKyAgICAgICAgYm9vbCB1c2VfaG9zdG5h
bWVfYWRkcmVzcyA9IGNhbmRpZGF0ZS50eXBlKCkgPT0gTE9DQUxfUE9SVF9UWVBFOworICAgICAg
ICBib29sIGZpbHRlcl9yZWxhdGVkX2FkZHJlc3MgPSBjYW5kaWRhdGUudHlwZSgpID09IFNUVU5f
UE9SVF9UWVBFOworICAgICAgICBjYW5kaWRhdGVfc3RhdHMuY2FuZGlkYXRlID0gY2FuZGlkYXRl
X3N0YXRzLmNhbmRpZGF0ZS5Ub1Nhbml0aXplZENvcHkoCisgICAgICAgICAgICB1c2VfaG9zdG5h
bWVfYWRkcmVzcywgZmlsdGVyX3JlbGF0ZWRfYWRkcmVzcyk7CisgICAgICB9CiAgICAgICBjYW5k
aWRhdGVfc3RhdHNfbGlzdC0+cHVzaF9iYWNrKHN0ZDo6bW92ZShjYW5kaWRhdGVfc3RhdHMpKTsK
ICAgICB9CiAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3AycC9jbGllbnQvYmFzaWNwb3J0YWxsb2NhdG9yLmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2NsaWVudC9iYXNpY3BvcnRhbGxvY2F0
b3IuY2MKaW5kZXggMzk4OTVkZmE1YTE2ZDA3ZjI4MTM4MTVhZWU3YjA3MzE3ODU3YWVkZi4uNDdm
MTNkMGRiM2IyOTFkMTY1NjE0MGVmOGQ5ZGQ5YmU0MWJiYWEwZSAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2NsaWVudC9iYXNpY3BvcnRh
bGxvY2F0b3IuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcDJwL2NsaWVudC9iYXNpY3BvcnRhbGxvY2F0b3IuY2MKQEAgLTUyMSwxNCArNTIxLDEwIEBA
IHZvaWQgQmFzaWNQb3J0QWxsb2NhdG9yU2Vzc2lvbjo6R2V0Q2FuZGlkYXRlc0Zyb21Qb3J0KAog
Q2FuZGlkYXRlIEJhc2ljUG9ydEFsbG9jYXRvclNlc3Npb246OlNhbml0aXplQ2FuZGlkYXRlKAog
ICAgIGNvbnN0IENhbmRpZGF0ZSYgYykgY29uc3QgewogICBSVENfRENIRUNLX1JVTl9PTihuZXR3
b3JrX3RocmVhZF8pOwotICBDYW5kaWRhdGUgY29weSA9IGM7CiAgIC8vIElmIHRoZSBjYW5kaWRh
dGUgaGFzIGEgZ2VuZXJhdGVkIGhvc3RuYW1lLCB3ZSBuZWVkIHRvIG9iZnVzY2F0ZSBpdHMgSVAK
ICAgLy8gYWRkcmVzcyB3aGVuIHNpZ25hbGluZyB0aGlzIGNhbmRpZGF0ZS4KLSAgaWYgKCFjLmFk
ZHJlc3MoKS5ob3N0bmFtZSgpLmVtcHR5KCkgJiYgIWMuYWRkcmVzcygpLklzVW5yZXNvbHZlZElQ
KCkpIHsKLSAgICBydGM6OlNvY2tldEFkZHJlc3MgaG9zdG5hbWVfb25seV9hZGRyKGMuYWRkcmVz
cygpLmhvc3RuYW1lKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjLmFkZHJlc3MoKS5wb3J0KCkpOwotICAgIGNvcHkuc2V0X2FkZHJlc3MoaG9zdG5hbWVfb25s
eV9hZGRyKTsKLSAgfQorICBib29sIHVzZV9ob3N0bmFtZV9hZGRyZXNzID0KKyAgICAgICFjLmFk
ZHJlc3MoKS5ob3N0bmFtZSgpLmVtcHR5KCkgJiYgIWMuYWRkcmVzcygpLklzVW5yZXNvbHZlZElQ
KCk7CiAgIC8vIElmIGFkYXB0ZXIgZW51bWVyYXRpb24gaXMgZGlzYWJsZWQgb3IgaG9zdCBjYW5k
aWRhdGVzIGFyZSBkaXNhYmxlZCwKICAgLy8gY2xlYXIgdGhlIHJhZGRyIG9mIFNUVU4gY2FuZGlk
YXRlcyB0byBhdm9pZCBsb2NhbCBhZGRyZXNzIGxlYWthZ2UuCiAgIGJvb2wgZmlsdGVyX3N0dW5f
cmVsYXRlZF9hZGRyZXNzID0KQEAgLTUzOCwxMiArNTM0LDEwIEBAIENhbmRpZGF0ZSBCYXNpY1Bv
cnRBbGxvY2F0b3JTZXNzaW9uOjpTYW5pdGl6ZUNhbmRpZGF0ZSgKICAgLy8gSWYgdGhlIGNhbmRp
ZGF0ZSBmaWx0ZXIgZG9lc24ndCBhbGxvdyByZWZsZXhpdmUgYWRkcmVzc2VzLCBlbXB0eSBUVVJO
IHJhZGRyCiAgIC8vIHRvIGF2b2lkIHJlZmxleGl2ZSBhZGRyZXNzIGxlYWthZ2UuCiAgIGJvb2wg
ZmlsdGVyX3R1cm5fcmVsYXRlZF9hZGRyZXNzID0gIShjYW5kaWRhdGVfZmlsdGVyXyAmIENGX1JF
RkxFWElWRSk7Ci0gIGlmICgoYy50eXBlKCkgPT0gU1RVTl9QT1JUX1RZUEUgJiYgZmlsdGVyX3N0
dW5fcmVsYXRlZF9hZGRyZXNzKSB8fAotICAgICAgKGMudHlwZSgpID09IFJFTEFZX1BPUlRfVFlQ
RSAmJiBmaWx0ZXJfdHVybl9yZWxhdGVkX2FkZHJlc3MpKSB7Ci0gICAgY29weS5zZXRfcmVsYXRl
ZF9hZGRyZXNzKAotICAgICAgICBydGM6OkVtcHR5U29ja2V0QWRkcmVzc1dpdGhGYW1pbHkoY29w
eS5hZGRyZXNzKCkuZmFtaWx5KCkpKTsKLSAgfQotICByZXR1cm4gY29weTsKKyAgYm9vbCBmaWx0
ZXJfcmVsYXRlZF9hZGRyZXNzID0KKyAgICAgICgoYy50eXBlKCkgPT0gU1RVTl9QT1JUX1RZUEUg
JiYgZmlsdGVyX3N0dW5fcmVsYXRlZF9hZGRyZXNzKSB8fAorICAgICAgIChjLnR5cGUoKSA9PSBS
RUxBWV9QT1JUX1RZUEUgJiYgZmlsdGVyX3R1cm5fcmVsYXRlZF9hZGRyZXNzKSk7CisgIHJldHVy
biBjLlRvU2FuaXRpemVkQ29weSh1c2VfaG9zdG5hbWVfYWRkcmVzcywgZmlsdGVyX3JlbGF0ZWRf
YWRkcmVzcyk7CiB9CiAKIGJvb2wgQmFzaWNQb3J0QWxsb2NhdG9yU2Vzc2lvbjo6Q2FuZGlkYXRl
c0FsbG9jYXRpb25Eb25lKCkgY29uc3QgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2NsaWVudC9iYXNpY3BvcnRhbGxvY2F0b3JfdW5p
dHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAv
Y2xpZW50L2Jhc2ljcG9ydGFsbG9jYXRvcl91bml0dGVzdC5jYwppbmRleCBhMDc1NjllOTRiOGRm
YTVhYTU2YzQyNTYxNTk4ODhhODY2M2FkNmYyLi43YWFiMDczZGFjZmI5ZWFkNDJiNGQ1MjhiOGM4
M2EwZGJkYjVmMjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9wMnAvY2xpZW50L2Jhc2ljcG9ydGFsbG9jYXRvcl91bml0dGVzdC5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvY2xpZW50L2Jh
c2ljcG9ydGFsbG9jYXRvcl91bml0dGVzdC5jYwpAQCAtMjI1Nyw3ICsyMjU3LDcgQEAgVEVTVF9G
KEJhc2ljUG9ydEFsbG9jYXRvclRlc3QsIEhvc3RDYW5kaWRhdGVBZGRyZXNzSXNSZXBsYWNlZEJ5
SG9zdG5hbWUpIHsKICAgQWRkVHVyblNlcnZlcnMoa1R1cm5VZHBJbnRJUHY2QWRkciwga1R1cm5U
Y3BJbnRJUHY2QWRkcik7CiAKICAgQVNTRVJUX0VRKCZuZXR3b3JrX21hbmFnZXJfLCBhbGxvY2F0
b3IoKS5uZXR3b3JrX21hbmFnZXIoKSk7Ci0gIG5ldHdvcmtfbWFuYWdlcl8uQ3JlYXRlTWRuc1Jl
c3BvbmRlcigpOworICBuZXR3b3JrX21hbmFnZXJfLkNyZWF0ZU1kbnNSZXNwb25kZXIocnRjOjpU
aHJlYWQ6OkN1cnJlbnQoKSk7CiAgIEFkZEludGVyZmFjZShrQ2xpZW50QWRkcik7CiAgIEFTU0VS
VF9UUlVFKENyZWF0ZVNlc3Npb24oSUNFX0NBTkRJREFURV9DT01QT05FTlRfUlRQKSk7CiAgIHNl
c3Npb25fLT5TdGFydEdldHRpbmdQb3J0cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb24uY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlvbi5jYwpp
bmRleCAzYmUwNjcxYmI0OGUwNTYxOGJlNmU0ZGQ2MjYzYTc5NmM4Mjk4OTY3Li40ZjBhOGVhMDEx
Mjc2MjI3MjBkMGNiZGRjMmUxZTE3Y2M5NDAyMjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlvbi5jYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlv
bi5jYwpAQCAtMjc3LDE2ICsyNzcsMzIgQEAgSWNlQ2FuZGlkYXRlUGFpclR5cGUgR2V0SWNlQ2Fu
ZGlkYXRlUGFpckNvdW50ZXIoCiAgIGNvbnN0IGF1dG8mIHJlbGF5ID0gUkVMQVlfUE9SVF9UWVBF
OwogICBjb25zdCBhdXRvJiBwcmZseCA9IFBSRkxYX1BPUlRfVFlQRTsKICAgaWYgKGwgPT0gaG9z
dCAmJiByID09IGhvc3QpIHsKKyAgICBib29sIGxvY2FsX2hvc3RuYW1lID0KKyAgICAgICAgIWxv
Y2FsLmFkZHJlc3MoKS5ob3N0bmFtZSgpLmVtcHR5KCkgJiYgbG9jYWwuYWRkcmVzcygpLklzVW5y
ZXNvbHZlZElQKCk7CisgICAgYm9vbCByZW1vdGVfaG9zdG5hbWUgPSAhcmVtb3RlLmFkZHJlc3Mo
KS5ob3N0bmFtZSgpLmVtcHR5KCkgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW90
ZS5hZGRyZXNzKCkuSXNVbnJlc29sdmVkSVAoKTsKICAgICBib29sIGxvY2FsX3ByaXZhdGUgPSBJ
UElzUHJpdmF0ZShsb2NhbC5hZGRyZXNzKCkuaXBhZGRyKCkpOwogICAgIGJvb2wgcmVtb3RlX3By
aXZhdGUgPSBJUElzUHJpdmF0ZShyZW1vdGUuYWRkcmVzcygpLmlwYWRkcigpKTsKLSAgICBpZiAo
bG9jYWxfcHJpdmF0ZSkgewotICAgICAgaWYgKHJlbW90ZV9wcml2YXRlKSB7CisgICAgaWYgKGxv
Y2FsX2hvc3RuYW1lKSB7CisgICAgICBpZiAocmVtb3RlX2hvc3RuYW1lKSB7CisgICAgICAgIHJl
dHVybiBrSWNlQ2FuZGlkYXRlUGFpckhvc3ROYW1lSG9zdE5hbWU7CisgICAgICB9IGVsc2UgaWYg
KHJlbW90ZV9wcml2YXRlKSB7CisgICAgICAgIHJldHVybiBrSWNlQ2FuZGlkYXRlUGFpckhvc3RO
YW1lSG9zdFByaXZhdGU7CisgICAgICB9IGVsc2UgeworICAgICAgICByZXR1cm4ga0ljZUNhbmRp
ZGF0ZVBhaXJIb3N0TmFtZUhvc3RQdWJsaWM7CisgICAgICB9CisgICAgfSBlbHNlIGlmIChsb2Nh
bF9wcml2YXRlKSB7CisgICAgICBpZiAocmVtb3RlX2hvc3RuYW1lKSB7CisgICAgICAgIHJldHVy
biBrSWNlQ2FuZGlkYXRlUGFpckhvc3RQcml2YXRlSG9zdE5hbWU7CisgICAgICB9IGVsc2UgaWYg
KHJlbW90ZV9wcml2YXRlKSB7CiAgICAgICAgIHJldHVybiBrSWNlQ2FuZGlkYXRlUGFpckhvc3RQ
cml2YXRlSG9zdFByaXZhdGU7CiAgICAgICB9IGVsc2UgewogICAgICAgICByZXR1cm4ga0ljZUNh
bmRpZGF0ZVBhaXJIb3N0UHJpdmF0ZUhvc3RQdWJsaWM7CiAgICAgICB9CiAgICAgfSBlbHNlIHsK
LSAgICAgIGlmIChyZW1vdGVfcHJpdmF0ZSkgeworICAgICAgaWYgKHJlbW90ZV9ob3N0bmFtZSkg
eworICAgICAgICByZXR1cm4ga0ljZUNhbmRpZGF0ZVBhaXJIb3N0UHVibGljSG9zdE5hbWU7Cisg
ICAgICB9IGVsc2UgaWYgKHJlbW90ZV9wcml2YXRlKSB7CiAgICAgICAgIHJldHVybiBrSWNlQ2Fu
ZGlkYXRlUGFpckhvc3RQdWJsaWNIb3N0UHJpdmF0ZTsKICAgICAgIH0gZWxzZSB7CiAgICAgICAg
IHJldHVybiBrSWNlQ2FuZGlkYXRlUGFpckhvc3RQdWJsaWNIb3N0UHVibGljOwpAQCAtNTE4LDMz
ICs1MzQsNiBAQCBib29sIFZlcmlmeUljZVVmcmFnUHdkUHJlc2VudChjb25zdCBTZXNzaW9uRGVz
Y3JpcHRpb24qIGRlc2MpIHsKICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgR2V0VHJhY2tJZEJ5
U3NyYyhjb25zdCBTZXNzaW9uRGVzY3JpcHRpb24qIHNlc3Npb25fZGVzY3JpcHRpb24sCi0gICAg
ICAgICAgICAgICAgICAgICAgdWludDMyX3Qgc3NyYywKLSAgICAgICAgICAgICAgICAgICAgICBz
dGQ6OnN0cmluZyogdHJhY2tfaWQpIHsKLSAgUlRDX0RDSEVDSyh0cmFja19pZCAhPSBOVUxMKTsK
LQotICBjb25zdCBjcmlja2V0OjpBdWRpb0NvbnRlbnREZXNjcmlwdGlvbiogYXVkaW9fZGVzYyA9
Ci0gICAgICBjcmlja2V0OjpHZXRGaXJzdEF1ZGlvQ29udGVudERlc2NyaXB0aW9uKHNlc3Npb25f
ZGVzY3JpcHRpb24pOwotICBpZiAoYXVkaW9fZGVzYykgewotICAgIGNvbnN0IGF1dG8qIGZvdW5k
ID0gY3JpY2tldDo6R2V0U3RyZWFtQnlTc3JjKGF1ZGlvX2Rlc2MtPnN0cmVhbXMoKSwgc3NyYyk7
Ci0gICAgaWYgKGZvdW5kKSB7Ci0gICAgICAqdHJhY2tfaWQgPSBmb3VuZC0+aWQ7Ci0gICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gIH0KLQotICBjb25zdCBjcmlja2V0OjpWaWRlb0NvbnRlbnRE
ZXNjcmlwdGlvbiogdmlkZW9fZGVzYyA9Ci0gICAgICBjcmlja2V0OjpHZXRGaXJzdFZpZGVvQ29u
dGVudERlc2NyaXB0aW9uKHNlc3Npb25fZGVzY3JpcHRpb24pOwotICBpZiAodmlkZW9fZGVzYykg
ewotICAgIGNvbnN0IGF1dG8qIGZvdW5kID0gY3JpY2tldDo6R2V0U3RyZWFtQnlTc3JjKHZpZGVv
X2Rlc2MtPnN0cmVhbXMoKSwgc3NyYyk7Ci0gICAgaWYgKGZvdW5kKSB7Ci0gICAgICAqdHJhY2tf
aWQgPSBmb3VuZC0+aWQ7Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gIH0KLSAgcmV0dXJu
IGZhbHNlOwotfQotCiAvLyBHZXQgdGhlIFNDVFAgcG9ydCBvdXQgb2YgYSBTZXNzaW9uRGVzY3Jp
cHRpb24uCiAvLyBSZXR1cm4gLTEgaWYgbm90IGZvdW5kLgogaW50IEdldFNjdHBQb3J0KGNvbnN0
IFNlc3Npb25EZXNjcmlwdGlvbiogc2Vzc2lvbl9kZXNjcmlwdGlvbikgewpAQCAtMjQ5NSw2ICsy
NDg0LDE4IEBAIFJUQ0Vycm9yIFBlZXJDb25uZWN0aW9uOjpBcHBseVJlbW90ZURlc2NyaXB0aW9u
KAogICAgICAgICAgIH0KICAgICAgICAgICBtZWRpYV9zdHJlYW1zLnB1c2hfYmFjayhzdHJlYW0p
OwogICAgICAgICB9CisgICAgICAgIC8vIFNwZWNpYWwgY2FzZTogImE9bXNpZCIgbWlzc2luZywg
dXNlIHJhbmRvbSBzdHJlYW0gSUQuCisgICAgICAgIGlmIChtZWRpYV9zdHJlYW1zLmVtcHR5KCkg
JiYKKyAgICAgICAgICAgICEocmVtb3RlX2Rlc2NyaXB0aW9uKCktPmRlc2NyaXB0aW9uKCktPm1z
aWRfc2lnbmFsaW5nKCkgJgorICAgICAgICAgICAgICBjcmlja2V0OjprTXNpZFNpZ25hbGluZ01l
ZGlhU2VjdGlvbikpIHsKKyAgICAgICAgICBpZiAoIW1pc3NpbmdfbXNpZF9kZWZhdWx0X3N0cmVh
bV8pIHsKKyAgICAgICAgICAgIG1pc3NpbmdfbXNpZF9kZWZhdWx0X3N0cmVhbV8gPSBNZWRpYVN0
cmVhbVByb3h5OjpDcmVhdGUoCisgICAgICAgICAgICAgICAgcnRjOjpUaHJlYWQ6OkN1cnJlbnQo
KSwKKyAgICAgICAgICAgICAgICBNZWRpYVN0cmVhbTo6Q3JlYXRlKHJ0Yzo6Q3JlYXRlUmFuZG9t
VXVpZCgpKSk7CisgICAgICAgICAgICBhZGRlZF9zdHJlYW1zLnB1c2hfYmFjayhtaXNzaW5nX21z
aWRfZGVmYXVsdF9zdHJlYW1fKTsKKyAgICAgICAgICB9CisgICAgICAgICAgbWVkaWFfc3RyZWFt
cy5wdXNoX2JhY2sobWlzc2luZ19tc2lkX2RlZmF1bHRfc3RyZWFtXyk7CisgICAgICAgIH0KICAg
ICAgICAgLy8gVGhpcyB3aWxsIGFkZCB0aGUgcmVtb3RlIHRyYWNrIHRvIHRoZSBzdHJlYW1zLgog
ICAgICAgICAvLyBUT0RPKGhib3MpOiBXaGVuIHdlIHJlbW92ZSByZW1vdGVfc3RyZWFtcygpLCB1
c2Ugc2V0X3N0cmVhbV9pZHMoKQogICAgICAgICAvLyBpbnN0ZWFkLiBodHRwczovL2NyYnVnLmNv
bS93ZWJydGMvOTQ4MApAQCAtNTI1NSwyMiArNTI1NiwzNCBAQCBjcmlja2V0OjpJY2VDb25maWcg
UGVlckNvbm5lY3Rpb246OlBhcnNlSWNlQ29uZmlnKAogICByZXR1cm4gaWNlX2NvbmZpZzsKIH0K
IAotYm9vbCBQZWVyQ29ubmVjdGlvbjo6R2V0TG9jYWxUcmFja0lkQnlTc3JjKHVpbnQzMl90IHNz
cmMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJp
bmcqIHRyYWNrX2lkKSB7Ci0gIGlmICghbG9jYWxfZGVzY3JpcHRpb24oKSkgewotICAgIHJldHVy
biBmYWxzZTsKK3N0YXRpYyBhYnNsOjpzdHJpbmdfdmlldyBHZXRUcmFja0lkQnlTc3JjKAorICAg
IGNvbnN0IFNlc3Npb25EZXNjcmlwdGlvbkludGVyZmFjZSogc2Vzc2lvbl9kZXNjcmlwdGlvbiwK
KyAgICB1aW50MzJfdCBzc3JjKSB7CisgIGlmICghc2Vzc2lvbl9kZXNjcmlwdGlvbikgeworICAg
IHJldHVybiB7fTsKKyAgfQorICBmb3IgKGNvbnN0IGNyaWNrZXQ6OkNvbnRlbnRJbmZvJiBjb250
ZW50IDoKKyAgICAgICBzZXNzaW9uX2Rlc2NyaXB0aW9uLT5kZXNjcmlwdGlvbigpLT5jb250ZW50
cygpKSB7CisgICAgY29uc3QgY3JpY2tldDo6TWVkaWFDb250ZW50RGVzY3JpcHRpb24mIG1lZGlh
ID0KKyAgICAgICAgKmNvbnRlbnQubWVkaWFfZGVzY3JpcHRpb24oKTsKKyAgICBpZiAobWVkaWEu
dHlwZSgpID09IGNyaWNrZXQ6Ok1FRElBX1RZUEVfQVVESU8gfHwKKyAgICAgICAgbWVkaWEudHlw
ZSgpID09IGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklERU8pIHsKKyAgICAgIGNvbnN0IGNyaWNrZXQ6
OlN0cmVhbVBhcmFtcyogc3RyZWFtX3BhcmFtcyA9CisgICAgICAgICAgY3JpY2tldDo6R2V0U3Ry
ZWFtQnlTc3JjKG1lZGlhLnN0cmVhbXMoKSwgc3NyYyk7CisgICAgICBpZiAoc3RyZWFtX3BhcmFt
cykgeworICAgICAgICByZXR1cm4gc3RyZWFtX3BhcmFtcy0+aWQ7CisgICAgICB9CisgICAgfQog
ICB9Ci0gIHJldHVybiB3ZWJydGM6OkdldFRyYWNrSWRCeVNzcmMobG9jYWxfZGVzY3JpcHRpb24o
KS0+ZGVzY3JpcHRpb24oKSwgc3NyYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0cmFja19pZCk7CisgIHJldHVybiB7fTsKIH0KIAotYm9vbCBQZWVyQ29ubmVjdGlvbjo6R2V0
UmVtb3RlVHJhY2tJZEJ5U3NyYyh1aW50MzJfdCBzc3JjLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyogdHJhY2tfaWQpIHsKLSAgaWYgKCFy
ZW1vdGVfZGVzY3JpcHRpb24oKSkgewotICAgIHJldHVybiBmYWxzZTsKLSAgfQotICByZXR1cm4g
d2VicnRjOjpHZXRUcmFja0lkQnlTc3JjKHJlbW90ZV9kZXNjcmlwdGlvbigpLT5kZXNjcmlwdGlv
bigpLCBzc3JjLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrX2lkKTsK
K2Fic2w6OnN0cmluZ192aWV3IFBlZXJDb25uZWN0aW9uOjpHZXRMb2NhbFRyYWNrSWRCeVNzcmMo
dWludDMyX3Qgc3NyYykgeworICByZXR1cm4gR2V0VHJhY2tJZEJ5U3NyYyhsb2NhbF9kZXNjcmlw
dGlvbigpLCBzc3JjKTsKK30KKworYWJzbDo6c3RyaW5nX3ZpZXcgUGVlckNvbm5lY3Rpb246Okdl
dFJlbW90ZVRyYWNrSWRCeVNzcmModWludDMyX3Qgc3NyYykgeworICByZXR1cm4gR2V0VHJhY2tJ
ZEJ5U3NyYyhyZW1vdGVfZGVzY3JpcHRpb24oKSwgc3NyYyk7CiB9CiAKIGJvb2wgUGVlckNvbm5l
Y3Rpb246OlNlbmREYXRhKGNvbnN0IGNyaWNrZXQ6OlNlbmREYXRhUGFyYW1zJiBwYXJhbXMsCkBA
IC02NDMzLDcgKzY0NDYsOCBAQCB2b2lkIFBlZXJDb25uZWN0aW9uOjpSZXBvcnRCZXN0Q29ubmVj
dGlvblN0YXRlKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtCZXN0Q29ubmVj
dGlvbnNfSVB2NiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrUGVlckNvbm5l
Y3Rpb25BZGRyZXNzRmFtaWx5Q291bnRlcl9NYXgpOwogICAgICAgfSBlbHNlIHsKLSAgICAgICAg
UlRDX0NIRUNLKDApOworICAgICAgICBSVENfQ0hFQ0soIWxvY2FsLmFkZHJlc3MoKS5ob3N0bmFt
ZSgpLmVtcHR5KCkgJiYKKyAgICAgICAgICAgICAgICAgIGxvY2FsLmFkZHJlc3MoKS5Jc1VucmVz
b2x2ZWRJUCgpKTsKICAgICAgIH0KIAogICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb24uaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3BlZXJjb25uZWN0
aW9uLmgKaW5kZXggN2U5N2FmYWI3YzYwNTM5NWRiMGM5YjQwNDQ2MzY4MmU1MTVkMzc2Yi4uMTgx
MGYxYzJiY2QyNmUzMjhiNmY4NWVhYmM3OGEzOGNmMGRmNTVjOCAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb24uaAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29u
bmVjdGlvbi5oCkBAIC0yMjUsOCArMjI1LDggQEAgY2xhc3MgUGVlckNvbm5lY3Rpb24gOiBwdWJs
aWMgUGVlckNvbm5lY3Rpb25JbnRlcm5hbCwKICAgICByZXR1cm4gdHJhbnNjZWl2ZXJzXzsKICAg
fQogCi0gIGJvb2wgR2V0TG9jYWxUcmFja0lkQnlTc3JjKHVpbnQzMl90IHNzcmMsIHN0ZDo6c3Ry
aW5nKiB0cmFja19pZCkgb3ZlcnJpZGU7Ci0gIGJvb2wgR2V0UmVtb3RlVHJhY2tJZEJ5U3NyYyh1
aW50MzJfdCBzc3JjLCBzdGQ6OnN0cmluZyogdHJhY2tfaWQpIG92ZXJyaWRlOworICBhYnNsOjpz
dHJpbmdfdmlldyBHZXRMb2NhbFRyYWNrSWRCeVNzcmModWludDMyX3Qgc3NyYykgb3ZlcnJpZGU7
CisgIGFic2w6OnN0cmluZ192aWV3IEdldFJlbW90ZVRyYWNrSWRCeVNzcmModWludDMyX3Qgc3Ny
Yykgb3ZlcnJpZGU7CiAKICAgc2lnc2xvdDo6c2lnbmFsMTxEYXRhQ2hhbm5lbCo+JiBTaWduYWxE
YXRhQ2hhbm5lbENyZWF0ZWQoKSBvdmVycmlkZSB7CiAgICAgcmV0dXJuIFNpZ25hbERhdGFDaGFu
bmVsQ3JlYXRlZF87CkBAIC0xMDMwLDYgKzEwMzAsMTEgQEAgY2xhc3MgUGVlckNvbm5lY3Rpb24g
OiBwdWJsaWMgUGVlckNvbm5lY3Rpb25JbnRlcm5hbCwKICAgc3RkOjp2ZWN0b3I8CiAgICAgICBy
dGM6OnNjb3BlZF9yZWZwdHI8UnRwVHJhbnNjZWl2ZXJQcm94eVdpdGhJbnRlcm5hbDxSdHBUcmFu
c2NlaXZlcj4+PgogICAgICAgdHJhbnNjZWl2ZXJzXzsKKyAgLy8gSW4gVW5pZmllZCBQbGFuLCBp
ZiB3ZSBlbmNvdW50ZXIgcmVtb3RlIFNEUCB0aGF0IGRvZXMgbm90IGNvbnRhaW4gYW4gYT1tc2lk
CisgIC8vIGxpbmUgd2UgY3JlYXRlIGFuZCB1c2UgYSBzdHJlYW0gd2l0aCBhIHJhbmRvbSBJRCBm
b3Igb3VyIHJlY2VpdmVycy4gVGhpcyBpcworICAvLyB0byBzdXBwb3J0IGxlZ2FjeSBlbmRwb2lu
dHMgdGhhdCBkbyBub3Qgc3VwcG9ydCB0aGUgYT1tc2lkIGF0dHJpYnV0ZSAoYXMKKyAgLy8gb3Bw
b3NlZCB0byBzdHJlYW1sZXNzIHRyYWNrcyB3aXRoICJhPW1zaWQ6LSIpLgorICBydGM6OnNjb3Bl
ZF9yZWZwdHI8TWVkaWFTdHJlYW1JbnRlcmZhY2U+IG1pc3NpbmdfbXNpZF9kZWZhdWx0X3N0cmVh
bV87CiAgIC8vIE1JRHMgdGhhdCBoYXZlIGJlZW4gc2VlbiBlaXRoZXIgYnkgU2V0TG9jYWxEZXNj
cmlwdGlvbiBvcgogICAvLyBTZXRSZW1vdGVEZXNjcmlwdGlvbiBvdmVyIHRoZSBsaWZlIG9mIHRo
ZSBQZWVyQ29ubmVjdGlvbi4KICAgc3RkOjpzZXQ8c3RkOjpzdHJpbmc+IHNlZW5fbWlkc187CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9w
ZWVyY29ubmVjdGlvbl9pbnRlZ3JhdGlvbnRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlvbl9pbnRlZ3JhdGlvbnRlc3QuY2MK
aW5kZXggYTdmN2FhZDBmNTRiMzFjYWVkM2VhN2ZkNDVmNjNmNDdjOTRhOWVlMC4uYThjMjQzMjcz
NDc2OGNmMTU4ZTk2OWJkY2M0NGVhOWFhMmE5ZDljOCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb25faW50ZWdyYXRp
b250ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3BjL3BlZXJjb25uZWN0aW9uX2ludGVncmF0aW9udGVzdC5jYwpAQCAtMjIsNiArMjIsNyBAQAog
I2luY2x1ZGUgPHV0aWxpdHk+CiAjaW5jbHVkZSA8dmVjdG9yPgogCisjaW5jbHVkZSAiYWJzbC9t
ZW1vcnkvbWVtb3J5LmgiCiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9idWlsdGluX2F1ZGlv
X2RlY29kZXJfZmFjdG9yeS5oIgogI2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYnVpbHRpbl9h
dWRpb19lbmNvZGVyX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJhcGkvbWVkaWFzdHJlYW1pbnRlcmZh
Y2UuaCIKQEAgLTc2LDEyICs3NywxNCBAQCB1c2luZyBjcmlja2V0OjpGYWtlV2ViUnRjVmlkZW9F
bmNvZGVyRmFjdG9yeTsKIHVzaW5nIGNyaWNrZXQ6Ok1lZGlhQ29udGVudERlc2NyaXB0aW9uOwog
dXNpbmcgY3JpY2tldDo6U3RyZWFtUGFyYW1zOwogdXNpbmcgcnRjOjpTb2NrZXRBZGRyZXNzOwor
dXNpbmcgOjp0ZXN0aW5nOjpfOwogdXNpbmcgOjp0ZXN0aW5nOjpDb21iaW5lOwogdXNpbmcgOjp0
ZXN0aW5nOjpFbGVtZW50c0FyZTsKIHVzaW5nIDo6dGVzdGluZzo6UmV0dXJuOwordXNpbmcgOjp0
ZXN0aW5nOjpOaWNlTW9jazsKIHVzaW5nIDo6dGVzdGluZzo6U2V0QXJnUG9pbnRlZTsKK3VzaW5n
IDo6dGVzdGluZzo6VW5vcmRlcmVkRWxlbWVudHNBcmVBcnJheTsKIHVzaW5nIDo6dGVzdGluZzo6
VmFsdWVzOwotdXNpbmcgOjp0ZXN0aW5nOjpfOwogdXNpbmcgd2VicnRjOjpEYXRhQnVmZmVyOwog
dXNpbmcgd2VicnRjOjpEYXRhQ2hhbm5lbEludGVyZmFjZTsKIHVzaW5nIHdlYnJ0Yzo6RHRtZlNl
bmRlcjsKQEAgLTE0OSw2ICsxNTIsNyBAQCB2b2lkIFJlbW92ZVNzcmNzQW5kTXNpZHMoY3JpY2tl
dDo6U2Vzc2lvbkRlc2NyaXB0aW9uKiBkZXNjKSB7CiAgICAgY29udGVudC5tZWRpYV9kZXNjcmlw
dGlvbigpLT5tdXRhYmxlX3N0cmVhbXMoKS5jbGVhcigpOwogICB9CiAgIGRlc2MtPnNldF9tc2lk
X3N1cHBvcnRlZChmYWxzZSk7CisgIGRlc2MtPnNldF9tc2lkX3NpZ25hbGluZygwKTsKIH0KIAog
Ly8gUmVtb3ZlcyBhbGwgc3RyZWFtIGluZm9ybWF0aW9uIGJlc2lkZXMgdGhlIHN0cmVhbSBpZHMs
IHNpbXVsYXRpbmcgYW4KQEAgLTIxNCwxNyArMjE4LDYgQEAgY2xhc3MgTW9ja1J0cFJlY2VpdmVy
T2JzZXJ2ZXIgOiBwdWJsaWMgd2VicnRjOjpSdHBSZWNlaXZlck9ic2VydmVySW50ZXJmYWNlIHsK
ICAgY3JpY2tldDo6TWVkaWFUeXBlIGV4cGVjdGVkX21lZGlhX3R5cGVfOwogfTsKIAotLy8gVXNl
ZCBieSBQZWVyQ29ubmVjdGlvbldyYXBwZXI6Ok9uSWNlQ2FuZGlkYXRlIHRvIGFsbG93IGEgdGVz
dCB0byBtb2RpZnkgYW4KLS8vIElDRSBjYW5kaWRhdGUgYmVmb3JlIGl0IGlzIHNpZ25hbGVkLgot
Y2xhc3MgSWNlQ2FuZGlkYXRlUmVwbGFjZXJJbnRlcmZhY2UgewotIHB1YmxpYzoKLSAgdmlydHVh
bCB+SWNlQ2FuZGlkYXRlUmVwbGFjZXJJbnRlcmZhY2UoKSA9IGRlZmF1bHQ7Ci0gIC8vIFJldHVy
biBudWxscHRyIHRvIGRyb3AgdGhlIGNhbmRpZGF0ZSAoaXQgd29uJ3QgYmUgc2lnbmFsZWQgdG8g
dGhlIG90aGVyCi0gIC8vIHNpZGUpLgotICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6
OkljZUNhbmRpZGF0ZUludGVyZmFjZT4gUmVwbGFjZUNhbmRpZGF0ZSgKLSAgICAgIGNvbnN0IHdl
YnJ0Yzo6SWNlQ2FuZGlkYXRlSW50ZXJmYWNlKikgPSAwOwotfTsKLQogLy8gSGVscGVyIGNsYXNz
IHRoYXQgd3JhcHMgYSBwZWVyIGNvbm5lY3Rpb24sIG9ic2VydmVzIGl0LCBhbmQgY2FuIGFjY2Vw
dAogLy8gc2lnbmFsaW5nIG1lc3NhZ2VzIGZyb20gYW5vdGhlciB3cmFwcGVyLgogLy8KQEAgLTMw
Niw5ICsyOTksOCBAQCBjbGFzcyBQZWVyQ29ubmVjdGlvbldyYXBwZXIgOiBwdWJsaWMgd2VicnRj
OjpQZWVyQ29ubmVjdGlvbk9ic2VydmVyLAogICAgIHJlbW90ZV9vZmZlcl9oYW5kbGVyXyA9IHN0
ZDo6bW92ZShoYW5kbGVyKTsKICAgfQogCi0gIHZvaWQgU2V0TG9jYWxJY2VDYW5kaWRhdGVSZXBs
YWNlcigKLSAgICAgIHN0ZDo6dW5pcXVlX3B0cjxJY2VDYW5kaWRhdGVSZXBsYWNlckludGVyZmFj
ZT4gcmVwbGFjZXIpIHsKLSAgICBsb2NhbF9pY2VfY2FuZGlkYXRlX3JlcGxhY2VyXyA9IHN0ZDo6
bW92ZShyZXBsYWNlcik7CisgIHZvaWQgU2V0UmVtb3RlQXN5bmNSZXNvbHZlcihydGM6Ok1vY2tB
c3luY1Jlc29sdmVyKiByZXNvbHZlcikgeworICAgIHJlbW90ZV9hc3luY19yZXNvbHZlcl8gPSBy
ZXNvbHZlcjsKICAgfQogCiAgIC8vIEV2ZXJ5IElDRSBjb25uZWN0aW9uIHN0YXRlIGluIG9yZGVy
IHRoYXQgaGFzIGJlZW4gc2VlbiBieSB0aGUgb2JzZXJ2ZXIuCkBAIC05MzgsNDYgKzkzMCwzMiBA
QCBjbGFzcyBQZWVyQ29ubmVjdGlvbldyYXBwZXIgOiBwdWJsaWMgd2VicnRjOjpQZWVyQ29ubmVj
dGlvbk9ic2VydmVyLAogICAgIEVYUEVDVF9FUShwYygpLT5pY2VfZ2F0aGVyaW5nX3N0YXRlKCks
IG5ld19zdGF0ZSk7CiAgICAgaWNlX2dhdGhlcmluZ19zdGF0ZV9oaXN0b3J5Xy5wdXNoX2JhY2so
bmV3X3N0YXRlKTsKICAgfQotICBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpJY2VDYW5kaWRhdGVJ
bnRlcmZhY2U+IFJlcGxhY2VJY2VDYW5kaWRhdGUoCi0gICAgICBjb25zdCB3ZWJydGM6OkljZUNh
bmRpZGF0ZUludGVyZmFjZSogY2FuZGlkYXRlKSB7Ci0gICAgc3RkOjpzdHJpbmcgY2FuZGlkYXRl
X3N0cmluZzsKLSAgICBjYW5kaWRhdGUtPlRvU3RyaW5nKCZjYW5kaWRhdGVfc3RyaW5nKTsKLQot
ICAgIGF1dG8gb3duZWRfY2FuZGlkYXRlID0KLSAgICAgICAgbG9jYWxfaWNlX2NhbmRpZGF0ZV9y
ZXBsYWNlcl8tPlJlcGxhY2VDYW5kaWRhdGUoY2FuZGlkYXRlKTsKLSAgICBpZiAoIW93bmVkX2Nh
bmRpZGF0ZSkgewotICAgICAgUlRDX0xPRyhMU19JTkZPKSA8PCAiTG9jYWxJY2VDYW5kaWRhdGVS
ZXBsYWNlciBkcm9wcGVkIFwiIgotICAgICAgICAgICAgICAgICAgICAgICA8PCBjYW5kaWRhdGVf
c3RyaW5nIDw8ICJcIiI7Ci0gICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0gICAgc3RkOjpz
dHJpbmcgb3duZWRfY2FuZGlkYXRlX3N0cmluZzsKLSAgICBvd25lZF9jYW5kaWRhdGUtPlRvU3Ry
aW5nKCZvd25lZF9jYW5kaWRhdGVfc3RyaW5nKTsKLSAgICBSVENfTE9HKExTX0lORk8pIDw8ICJM
b2NhbEljZUNhbmRpZGF0ZVJlcGxhY2VyIGNoYW5nZWQgXCIiCi0gICAgICAgICAgICAgICAgICAg
ICA8PCBjYW5kaWRhdGVfc3RyaW5nIDw8ICJcIiB0byBcIiIgPDwgb3duZWRfY2FuZGlkYXRlX3N0
cmluZwotICAgICAgICAgICAgICAgICAgICAgPDwgIlwiIjsKLSAgICByZXR1cm4gb3duZWRfY2Fu
ZGlkYXRlOwotICB9CiAgIHZvaWQgT25JY2VDYW5kaWRhdGUoY29uc3Qgd2VicnRjOjpJY2VDYW5k
aWRhdGVJbnRlcmZhY2UqIGNhbmRpZGF0ZSkgb3ZlcnJpZGUgewogICAgIFJUQ19MT0coTFNfSU5G
TykgPDwgZGVidWdfbmFtZV8gPDwgIjogT25JY2VDYW5kaWRhdGUiOwogCi0gICAgY29uc3Qgd2Vi
cnRjOjpJY2VDYW5kaWRhdGVJbnRlcmZhY2UqIG5ld19jYW5kaWRhdGUgPSBjYW5kaWRhdGU7Ci0g
ICAgc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6SWNlQ2FuZGlkYXRlSW50ZXJmYWNlPiBvd25lZF9j
YW5kaWRhdGU7Ci0gICAgaWYgKGxvY2FsX2ljZV9jYW5kaWRhdGVfcmVwbGFjZXJfKSB7Ci0gICAg
ICBvd25lZF9jYW5kaWRhdGUgPSBSZXBsYWNlSWNlQ2FuZGlkYXRlKGNhbmRpZGF0ZSk7Ci0gICAg
ICBpZiAoIW93bmVkX2NhbmRpZGF0ZSkgewotICAgICAgICByZXR1cm47ICAvLyBUaGUgY2FuZGlk
YXRlIHdhcyBkcm9wcGVkLgorICAgIGlmIChyZW1vdGVfYXN5bmNfcmVzb2x2ZXJfKSB7CisgICAg
ICBjb25zdCBhdXRvJiBsb2NhbF9jYW5kaWRhdGUgPSBjYW5kaWRhdGUtPmNhbmRpZGF0ZSgpOwor
ICAgICAgY29uc3QgYXV0byYgbWRuc19yZXNwb25kZXIgPSBuZXR3b3JrKCktPkdldE1kbnNSZXNw
b25kZXJGb3JUZXN0aW5nKCk7CisgICAgICBpZiAobG9jYWxfY2FuZGlkYXRlLmFkZHJlc3MoKS5J
c1VucmVzb2x2ZWRJUCgpKSB7CisgICAgICAgIFJUQ19EQ0hFQ0sobG9jYWxfY2FuZGlkYXRlLnR5
cGUoKSA9PSBjcmlja2V0OjpMT0NBTF9QT1JUX1RZUEUpOworICAgICAgICBydGM6OlNvY2tldEFk
ZHJlc3MgcmVzb2x2ZWRfYWRkcihsb2NhbF9jYW5kaWRhdGUuYWRkcmVzcygpKTsKKyAgICAgICAg
Y29uc3QgYXV0byByZXNvbHZlZF9pcCA9IG1kbnNfcmVzcG9uZGVyLT5HZXRNYXBwZWRBZGRyZXNz
Rm9yTmFtZSgKKyAgICAgICAgICAgIGxvY2FsX2NhbmRpZGF0ZS5hZGRyZXNzKCkuaG9zdG5hbWUo
KSk7CisgICAgICAgIFJUQ19EQ0hFQ0soIXJlc29sdmVkX2lwLklzTmlsKCkpOworICAgICAgICBy
ZXNvbHZlZF9hZGRyLlNldFJlc29sdmVkSVAocmVzb2x2ZWRfaXApOworICAgICAgICBFWFBFQ1Rf
Q0FMTCgqcmVtb3RlX2FzeW5jX3Jlc29sdmVyXywgR2V0UmVzb2x2ZWRBZGRyZXNzKF8sIF8pKQor
ICAgICAgICAgICAgLldpbGxPbmNlKERvQWxsKFNldEFyZ1BvaW50ZWU8MT4ocmVzb2x2ZWRfYWRk
ciksIFJldHVybih0cnVlKSkpOworICAgICAgICBFWFBFQ1RfQ0FMTCgqcmVtb3RlX2FzeW5jX3Jl
c29sdmVyXywgRGVzdHJveShfKSk7CiAgICAgICB9Ci0gICAgICBuZXdfY2FuZGlkYXRlID0gb3du
ZWRfY2FuZGlkYXRlLmdldCgpOwogICAgIH0KIAogICAgIHN0ZDo6c3RyaW5nIGljZV9zZHA7Ci0g
ICAgRVhQRUNUX1RSVUUobmV3X2NhbmRpZGF0ZS0+VG9TdHJpbmcoJmljZV9zZHApKTsKKyAgICBF
WFBFQ1RfVFJVRShjYW5kaWRhdGUtPlRvU3RyaW5nKCZpY2Vfc2RwKSk7CiAgICAgaWYgKHNpZ25h
bGluZ19tZXNzYWdlX3JlY2VpdmVyXyA9PSBudWxscHRyIHx8ICFzaWduYWxfaWNlX2NhbmRpZGF0
ZXNfKSB7CiAgICAgICAvLyBSZW1vdGUgcGFydHkgbWF5IGJlIGRlbGV0ZWQuCiAgICAgICByZXR1
cm47CiAgICAgfQotICAgIFNlbmRJY2VNZXNzYWdlKG5ld19jYW5kaWRhdGUtPnNkcF9taWQoKSwg
bmV3X2NhbmRpZGF0ZS0+c2RwX21saW5lX2luZGV4KCksCi0gICAgICAgICAgICAgICAgICAgaWNl
X3NkcCk7CisgICAgU2VuZEljZU1lc3NhZ2UoY2FuZGlkYXRlLT5zZHBfbWlkKCksIGNhbmRpZGF0
ZS0+c2RwX21saW5lX2luZGV4KCksIGljZV9zZHApOwogICB9CiAgIHZvaWQgT25EYXRhQ2hhbm5l
bCgKICAgICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxEYXRhQ2hhbm5lbEludGVyZmFjZT4gZGF0YV9j
aGFubmVsKSBvdmVycmlkZSB7CkBAIC0xMDIxLDcgKzk5OSw3IEBAIGNsYXNzIFBlZXJDb25uZWN0
aW9uV3JhcHBlciA6IHB1YmxpYyB3ZWJydGM6OlBlZXJDb25uZWN0aW9uT2JzZXJ2ZXIsCiAgIHN0
ZDo6ZnVuY3Rpb248dm9pZChjcmlja2V0OjpTZXNzaW9uRGVzY3JpcHRpb24qKT4gcmVjZWl2ZWRf
c2RwX211bmdlcl87CiAgIHN0ZDo6ZnVuY3Rpb248dm9pZChjcmlja2V0OjpTZXNzaW9uRGVzY3Jp
cHRpb24qKT4gZ2VuZXJhdGVkX3NkcF9tdW5nZXJfOwogICBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4g
cmVtb3RlX29mZmVyX2hhbmRsZXJfOwotICBzdGQ6OnVuaXF1ZV9wdHI8SWNlQ2FuZGlkYXRlUmVw
bGFjZXJJbnRlcmZhY2U+IGxvY2FsX2ljZV9jYW5kaWRhdGVfcmVwbGFjZXJfOworICBydGM6Ok1v
Y2tBc3luY1Jlc29sdmVyKiByZW1vdGVfYXN5bmNfcmVzb2x2ZXJfID0gbnVsbHB0cjsKICAgcnRj
OjpzY29wZWRfcmVmcHRyPERhdGFDaGFubmVsSW50ZXJmYWNlPiBkYXRhX2NoYW5uZWxfOwogICBz
dGQ6OnVuaXF1ZV9wdHI8TW9ja0RhdGFDaGFubmVsT2JzZXJ2ZXI+IGRhdGFfb2JzZXJ2ZXJfOwog
CkBAIC0xNDgwLDYgKzE0NTgsMTUgQEAgY2xhc3MgUGVlckNvbm5lY3Rpb25JbnRlZ3JhdGlvbkJh
c2VUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewogICAgIHJldHVybiBvbGQ7CiAgIH0KIAor
ICB2b2lkIFNldFBvcnRBbGxvY2F0b3JGbGFncyh1aW50MzJfdCBjYWxsZXJfZmxhZ3MsIHVpbnQz
Ml90IGNhbGxlZV9mbGFncykgeworICAgIG5ldHdvcmtfdGhyZWFkKCktPkludm9rZTx2b2lkPigK
KyAgICAgICAgUlRDX0ZST01fSEVSRSwgcnRjOjpCaW5kKCZjcmlja2V0OjpQb3J0QWxsb2NhdG9y
OjpzZXRfZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsZXIoKS0+
cG9ydF9hbGxvY2F0b3IoKSwgY2FsbGVyX2ZsYWdzKSk7CisgICAgbmV0d29ya190aHJlYWQoKS0+
SW52b2tlPHZvaWQ+KAorICAgICAgICBSVENfRlJPTV9IRVJFLCBydGM6OkJpbmQoJmNyaWNrZXQ6
OlBvcnRBbGxvY2F0b3I6OnNldF9mbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNhbGxlZSgpLT5wb3J0X2FsbG9jYXRvcigpLCBjYWxsZWVfZmxhZ3MpKTsKKyAgfQorCiAg
IHJ0Yzo6RmlyZXdhbGxTb2NrZXRTZXJ2ZXIqIGZpcmV3YWxsKCkgY29uc3QgeyByZXR1cm4gZnNz
Xy5nZXQoKTsgfQogCiAgIC8vIEV4cGVjdHMgdGhlIHByb3ZpZGVkIG51bWJlciBvZiBuZXcgZnJh
bWVzIHRvIGJlIHJlY2VpdmVkIHdpdGhpbgpAQCAtMjQ0OSw2ICsyNDM2LDM3IEBAIFRFU1RfRihQ
ZWVyQ29ubmVjdGlvbkludGVncmF0aW9uVGVzdFVuaWZpZWRQbGFuLAogICBFWFBFQ1RfVFJVRShF
eHBlY3ROZXdGcmFtZXMobWVkaWFfZXhwZWN0YXRpb25zKSk7CiB9CiAKK1RFU1RfRihQZWVyQ29u
bmVjdGlvbkludGVncmF0aW9uVGVzdFVuaWZpZWRQbGFuLCBOb1N0cmVhbXNNc2lkTGluZVByZXNl
bnQpIHsKKyAgQVNTRVJUX1RSVUUoQ3JlYXRlUGVlckNvbm5lY3Rpb25XcmFwcGVycygpKTsKKyAg
Q29ubmVjdEZha2VTaWduYWxpbmcoKTsKKyAgY2FsbGVyKCktPkFkZEF1ZGlvVHJhY2soKTsKKyAg
Y2FsbGVyKCktPkFkZFZpZGVvVHJhY2soKTsKKyAgY2FsbGVyKCktPkNyZWF0ZUFuZFNldEFuZFNp
Z25hbE9mZmVyKCk7CisgIEFTU0VSVF9UUlVFX1dBSVQoU2lnbmFsaW5nU3RhdGVTdGFibGUoKSwg
a0RlZmF1bHRUaW1lb3V0KTsKKyAgYXV0byBjYWxsZWVfcmVjZWl2ZXJzID0gY2FsbGVlKCktPnBj
KCktPkdldFJlY2VpdmVycygpOworICBBU1NFUlRfRVEoMnUsIGNhbGxlZV9yZWNlaXZlcnMuc2l6
ZSgpKTsKKyAgRVhQRUNUX1RSVUUoY2FsbGVlX3JlY2VpdmVyc1swXS0+c3RyZWFtX2lkcygpLmVt
cHR5KCkpOworICBFWFBFQ1RfVFJVRShjYWxsZWVfcmVjZWl2ZXJzWzFdLT5zdHJlYW1faWRzKCku
ZW1wdHkoKSk7Cit9CisKK1RFU1RfRihQZWVyQ29ubmVjdGlvbkludGVncmF0aW9uVGVzdFVuaWZp
ZWRQbGFuLCBOb1N0cmVhbXNNc2lkTGluZU1pc3NpbmcpIHsKKyAgQVNTRVJUX1RSVUUoQ3JlYXRl
UGVlckNvbm5lY3Rpb25XcmFwcGVycygpKTsKKyAgQ29ubmVjdEZha2VTaWduYWxpbmcoKTsKKyAg
Y2FsbGVyKCktPkFkZEF1ZGlvVHJhY2soKTsKKyAgY2FsbGVyKCktPkFkZFZpZGVvVHJhY2soKTsK
KyAgY2FsbGVlKCktPlNldFJlY2VpdmVkU2RwTXVuZ2VyKFJlbW92ZVNzcmNzQW5kTXNpZHMpOwor
ICBjYWxsZXIoKS0+Q3JlYXRlQW5kU2V0QW5kU2lnbmFsT2ZmZXIoKTsKKyAgQVNTRVJUX1RSVUVf
V0FJVChTaWduYWxpbmdTdGF0ZVN0YWJsZSgpLCBrRGVmYXVsdFRpbWVvdXQpOworICBhdXRvIGNh
bGxlZV9yZWNlaXZlcnMgPSBjYWxsZWUoKS0+cGMoKS0+R2V0UmVjZWl2ZXJzKCk7CisgIEFTU0VS
VF9FUSgydSwgY2FsbGVlX3JlY2VpdmVycy5zaXplKCkpOworICBBU1NFUlRfRVEoMXUsIGNhbGxl
ZV9yZWNlaXZlcnNbMF0tPnN0cmVhbV9pZHMoKS5zaXplKCkpOworICBBU1NFUlRfRVEoMXUsIGNh
bGxlZV9yZWNlaXZlcnNbMV0tPnN0cmVhbV9pZHMoKS5zaXplKCkpOworICBFWFBFQ1RfRVEoY2Fs
bGVlX3JlY2VpdmVyc1swXS0+c3RyZWFtX2lkcygpWzBdLAorICAgICAgICAgICAgY2FsbGVlX3Jl
Y2VpdmVyc1sxXS0+c3RyZWFtX2lkcygpWzBdKTsKKyAgRVhQRUNUX0VRKGNhbGxlZV9yZWNlaXZl
cnNbMF0tPnN0cmVhbXMoKVswXSwKKyAgICAgICAgICAgIGNhbGxlZV9yZWNlaXZlcnNbMV0tPnN0
cmVhbXMoKVswXSk7Cit9CisKIC8vIFRlc3QgdGhhdCBpZiB0d28gdmlkZW8gdHJhY2tzIGFyZSBz
ZW50IChmcm9tIGNhbGxlciB0byBjYWxsZWUsIGluIHRoaXMgdGVzdCksCiAvLyB0aGV5J3JlIHRy
YW5zbWl0dGVkIGNvcnJlY3RseSBlbmQtdG8tZW5kLgogVEVTVF9QKFBlZXJDb25uZWN0aW9uSW50
ZWdyYXRpb25UZXN0LCBFbmRUb0VuZENhbGxXaXRoVHdvVmlkZW9UcmFja3MpIHsKQEAgLTI2MTYs
NiArMjYzNCwzNCBAQCBURVNUX1AoUGVlckNvbm5lY3Rpb25JbnRlZ3JhdGlvblRlc3QsIEdldENh
cHR1cmVTdGFydE50cFRpbWVXaXRoT2xkU3RhdHNBcGkpIHsKICAgICAgIDIgKiBrTWF4V2FpdEZv
ckZyYW1lc01zKTsKIH0KIAorLy8gVGVzdCB0aGF0IHRoZSB0cmFjayBJRCBpcyBhc3NvY2lhdGVk
IHdpdGggYWxsIGxvY2FsIGFuZCByZW1vdGUgU1NSQyBzdGF0cworLy8gdXNpbmcgdGhlIG9sZCBH
ZXRTdGF0cygpIGFuZCBtb3JlIHRoYW4gMSBhdWRpbyBhbmQgbW9yZSB0aGFuIDEgdmlkZW8gdHJh
Y2suCisvLyBUaGlzIGlzIGEgcmVncmVzc2lvbiB0ZXN0IGZvciBjcmJ1Zy5jb20vOTA2OTg4CitU
RVNUX0YoUGVlckNvbm5lY3Rpb25JbnRlZ3JhdGlvblRlc3RVbmlmaWVkUGxhbiwKKyAgICAgICBP
bGRHZXRTdGF0c0Fzc29jaWF0ZXNUcmFja0lkRm9yTWFueU1lZGlhU2VjdGlvbnMpIHsKKyAgQVNT
RVJUX1RSVUUoQ3JlYXRlUGVlckNvbm5lY3Rpb25XcmFwcGVycygpKTsKKyAgQ29ubmVjdEZha2VT
aWduYWxpbmcoKTsKKyAgYXV0byBhdWRpb19zZW5kZXJfMSA9IGNhbGxlcigpLT5BZGRBdWRpb1Ry
YWNrKCk7CisgIGF1dG8gdmlkZW9fc2VuZGVyXzEgPSBjYWxsZXIoKS0+QWRkVmlkZW9UcmFjaygp
OworICBhdXRvIGF1ZGlvX3NlbmRlcl8yID0gY2FsbGVyKCktPkFkZEF1ZGlvVHJhY2soKTsKKyAg
YXV0byB2aWRlb19zZW5kZXJfMiA9IGNhbGxlcigpLT5BZGRWaWRlb1RyYWNrKCk7CisgIGNhbGxl
cigpLT5DcmVhdGVBbmRTZXRBbmRTaWduYWxPZmZlcigpOworICBBU1NFUlRfVFJVRV9XQUlUKFNp
Z25hbGluZ1N0YXRlU3RhYmxlKCksIGtEZWZhdWx0VGltZW91dCk7CisKKyAgTWVkaWFFeHBlY3Rh
dGlvbnMgbWVkaWFfZXhwZWN0YXRpb25zOworICBtZWRpYV9leHBlY3RhdGlvbnMuQ2FsbGVlRXhw
ZWN0c1NvbWVBdWRpb0FuZFZpZGVvKCk7CisgIEFTU0VSVF9UUlVFX1dBSVQoRXhwZWN0TmV3RnJh
bWVzKG1lZGlhX2V4cGVjdGF0aW9ucyksIGtEZWZhdWx0VGltZW91dCk7CisKKyAgc3RkOjp2ZWN0
b3I8c3RkOjpzdHJpbmc+IHRyYWNrX2lkcyA9IHsKKyAgICAgIGF1ZGlvX3NlbmRlcl8xLT50cmFj
aygpLT5pZCgpLCB2aWRlb19zZW5kZXJfMS0+dHJhY2soKS0+aWQoKSwKKyAgICAgIGF1ZGlvX3Nl
bmRlcl8yLT50cmFjaygpLT5pZCgpLCB2aWRlb19zZW5kZXJfMi0+dHJhY2soKS0+aWQoKX07CisK
KyAgYXV0byBjYWxsZXJfc3RhdHMgPSBjYWxsZXIoKS0+T2xkR2V0U3RhdHMoKTsKKyAgRVhQRUNU
X1RIQVQoY2FsbGVyX3N0YXRzLT5UcmFja0lkcygpLCBVbm9yZGVyZWRFbGVtZW50c0FyZUFycmF5
KHRyYWNrX2lkcykpOworICBhdXRvIGNhbGxlZV9zdGF0cyA9IGNhbGxlZSgpLT5PbGRHZXRTdGF0
cygpOworICBFWFBFQ1RfVEhBVChjYWxsZWVfc3RhdHMtPlRyYWNrSWRzKCksIFVub3JkZXJlZEVs
ZW1lbnRzQXJlQXJyYXkodHJhY2tfaWRzKSk7Cit9CisKIC8vIFRlc3QgdGhhdCB3ZSBjYW4gZ2V0
IHN0YXRzICh1c2luZyB0aGUgbmV3IHN0YXRzIGltcGxlbW5ldGF0aW9uKSBmb3IKIC8vIHVuc2ln
bmFsZWQgc3RyZWFtcy4gTWVhbmluZyB3aGVuIFNTUkNzL01TSURzIGFyZW4ndCBzaWduYWxlZCBl
eHBsaWNpdGx5IGluCiAvLyBTRFAuCkBAIC0zNTUyLDgxICszNTk4LDQ4IEBAIFRFU1RfUChQZWVy
Q29ubmVjdGlvbkludGVncmF0aW9uVGVzdCwgSWNlU3RhdGVzUmVhY2hDb21wbGV0aW9uKSB7CiAg
ICAgICAgICAgICAgICAgIGNhbGxlZSgpLT5pY2VfY29ubmVjdGlvbl9zdGF0ZSgpLCBrRGVmYXVs
dFRpbWVvdXQpOwogfQogCi0vLyBSZXBsYWNlcyB0aGUgZmlyc3QgY2FuZGlkYXRlIHdpdGggYSBz
dGF0aWMgYWRkcmVzcyBhbmQgY29uZmlndXJlcyBhCi0vLyBNb2NrQXN5bmNSZXNvbHZlciB0byBy
ZXR1cm4gdGhlIHJlcGxhY2VkIGFkZHJlc3MgdGhlIGZpcnN0IHRpbWUgdGhlIHN0YXRpYwotLy8g
YWRkcmVzcyBpcyByZXNvbHZlZC4gQ2FuZGlkYXRlcyBwYXN0IHRoZSBmaXJzdCB3aWxsIG5vdCBi
ZSBzaWduYWxlZC4KLWNsYXNzIFJlcGxhY2VGaXJzdENhbmRpZGF0ZUFkZHJlc3NEcm9wT3RoZXJz
IGZpbmFsCi0gICAgOiBwdWJsaWMgSWNlQ2FuZGlkYXRlUmVwbGFjZXJJbnRlcmZhY2UgewotIHB1
YmxpYzoKLSAgUmVwbGFjZUZpcnN0Q2FuZGlkYXRlQWRkcmVzc0Ryb3BPdGhlcnMoCi0gICAgICBj
b25zdCBTb2NrZXRBZGRyZXNzJiBuZXdfYWRkcmVzcywKLSAgICAgIHJ0Yzo6TW9ja0FzeW5jUmVz
b2x2ZXIqIG1vY2tfYXN5bmNfcmVzb2x2ZXIpCi0gICAgICA6IG1vY2tfYXN5bmNfcmVzb2x2ZXJf
KG1vY2tfYXN5bmNfcmVzb2x2ZXIpLCBuZXdfYWRkcmVzc18obmV3X2FkZHJlc3MpIHsKLSAgICBS
VENfRENIRUNLKG1vY2tfYXN5bmNfcmVzb2x2ZXIpOwotICB9Citjb25zdGV4cHIgaW50IGtPbmx5
TG9jYWxQb3J0cyA9IGNyaWNrZXQ6OlBPUlRBTExPQ0FUT1JfRElTQUJMRV9TVFVOIHwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JpY2tldDo6UE9SVEFMTE9DQVRPUl9ESVNBQkxF
X1JFTEFZIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JpY2tldDo6UE9SVEFM
TE9DQVRPUl9ESVNBQkxFX1RDUDsKIAotICBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpJY2VDYW5k
aWRhdGVJbnRlcmZhY2U+IFJlcGxhY2VDYW5kaWRhdGUoCi0gICAgICBjb25zdCB3ZWJydGM6Oklj
ZUNhbmRpZGF0ZUludGVyZmFjZSogY2FuZGlkYXRlKSBvdmVycmlkZSB7Ci0gICAgaWYgKHJlcGxh
Y2VkX2NhbmRpZGF0ZV8pIHsKLSAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KKy8vIFVzZSBh
IG1vY2sgcmVzb2x2ZXIgdG8gcmVzb2x2ZSB0aGUgaG9zdG5hbWUgYmFjayB0byB0aGUgb3JpZ2lu
YWwgSVAgb24gYm90aAorLy8gc2lkZXMgYW5kIGNoZWNrIHRoYXQgdGhlIElDRSBjb25uZWN0aW9u
IGNvbm5lY3RzLgorVEVTVF9QKFBlZXJDb25uZWN0aW9uSW50ZWdyYXRpb25UZXN0LAorICAgICAg
IEljZVN0YXRlc1JlYWNoQ29tcGxldGlvbldpdGhSZW1vdGVIb3N0bmFtZSkgeworICBhdXRvIGNh
bGxlcl9yZXNvbHZlcl9mYWN0b3J5ID0KKyAgICAgIGFic2w6Om1ha2VfdW5pcXVlPE5pY2VNb2Nr
PHdlYnJ0Yzo6TW9ja0FzeW5jUmVzb2x2ZXJGYWN0b3J5Pj4oKTsKKyAgYXV0byBjYWxsZWVfcmVz
b2x2ZXJfZmFjdG9yeSA9CisgICAgICBhYnNsOjptYWtlX3VuaXF1ZTxOaWNlTW9jazx3ZWJydGM6
Ok1vY2tBc3luY1Jlc29sdmVyRmFjdG9yeT4+KCk7CisgIE5pY2VNb2NrPHJ0Yzo6TW9ja0FzeW5j
UmVzb2x2ZXI+IGNhbGxlZV9hc3luY19yZXNvbHZlcjsKKyAgTmljZU1vY2s8cnRjOjpNb2NrQXN5
bmNSZXNvbHZlcj4gY2FsbGVyX2FzeW5jX3Jlc29sdmVyOwogCi0gICAgcmVwbGFjZWRfY2FuZGlk
YXRlXyA9IHRydWU7Ci0gICAgY3JpY2tldDo6Q2FuZGlkYXRlIG5ld19jYW5kaWRhdGUoY2FuZGlk
YXRlLT5jYW5kaWRhdGUoKSk7Ci0gICAgbmV3X2NhbmRpZGF0ZS5zZXRfYWRkcmVzcyhuZXdfYWRk
cmVzc18pOwotICAgIEVYUEVDVF9DQUxMKCptb2NrX2FzeW5jX3Jlc29sdmVyXywgR2V0UmVzb2x2
ZWRBZGRyZXNzKF8sIF8pKQotICAgICAgICAuV2lsbE9uY2UoRG9BbGwoU2V0QXJnUG9pbnRlZTwx
PihjYW5kaWRhdGUtPmNhbmRpZGF0ZSgpLmFkZHJlc3MoKSksCi0gICAgICAgICAgICAgICAgICAg
ICAgICBSZXR1cm4odHJ1ZSkpKTsKLSAgICBFWFBFQ1RfQ0FMTCgqbW9ja19hc3luY19yZXNvbHZl
cl8sIERlc3Ryb3koXykpOwotICAgIHJldHVybiB3ZWJydGM6OkNyZWF0ZUljZUNhbmRpZGF0ZSgK
LSAgICAgICAgY2FuZGlkYXRlLT5zZHBfbWlkKCksIGNhbmRpZGF0ZS0+c2RwX21saW5lX2luZGV4
KCksIG5ld19jYW5kaWRhdGUpOwotICB9CisgIC8vIFRoaXMgYWxzbyB2ZXJpZmllcyB0aGF0IHRo
ZSBpbmplY3RlZCBBc3luY1Jlc29sdmVyRmFjdG9yeSBpcyB1c2VkIGJ5CisgIC8vIFAyUFRyYW5z
cG9ydENoYW5uZWwuCisgIEVYUEVDVF9DQUxMKCpjYWxsZXJfcmVzb2x2ZXJfZmFjdG9yeSwgQ3Jl
YXRlKCkpCisgICAgICAuV2lsbE9uY2UoUmV0dXJuKCZjYWxsZXJfYXN5bmNfcmVzb2x2ZXIpKTsK
KyAgd2VicnRjOjpQZWVyQ29ubmVjdGlvbkRlcGVuZGVuY2llcyBjYWxsZXJfZGVwcyhudWxscHRy
KTsKKyAgY2FsbGVyX2RlcHMuYXN5bmNfcmVzb2x2ZXJfZmFjdG9yeSA9IHN0ZDo6bW92ZShjYWxs
ZXJfcmVzb2x2ZXJfZmFjdG9yeSk7CiAKLSBwcml2YXRlOgotICBydGM6Ok1vY2tBc3luY1Jlc29s
dmVyKiBtb2NrX2FzeW5jX3Jlc29sdmVyXzsKLSAgU29ja2V0QWRkcmVzcyBuZXdfYWRkcmVzc187
Ci0gIGJvb2wgcmVwbGFjZWRfY2FuZGlkYXRlXyA9IGZhbHNlOwotfTsKKyAgRVhQRUNUX0NBTEwo
KmNhbGxlZV9yZXNvbHZlcl9mYWN0b3J5LCBDcmVhdGUoKSkKKyAgICAgIC5XaWxsT25jZShSZXR1
cm4oJmNhbGxlZV9hc3luY19yZXNvbHZlcikpOworICB3ZWJydGM6OlBlZXJDb25uZWN0aW9uRGVw
ZW5kZW5jaWVzIGNhbGxlZV9kZXBzKG51bGxwdHIpOworICBjYWxsZWVfZGVwcy5hc3luY19yZXNv
bHZlcl9mYWN0b3J5ID0gc3RkOjptb3ZlKGNhbGxlZV9yZXNvbHZlcl9mYWN0b3J5KTsKIAotLy8g
RHJvcHMgYWxsIGNhbmRpZGF0ZXMgYmVmb3JlIHRoZXkgYXJlIHNpZ25hbGVkLgotY2xhc3MgRHJv
cEFsbENhbmRpZGF0ZXMgZmluYWwgOiBwdWJsaWMgSWNlQ2FuZGlkYXRlUmVwbGFjZXJJbnRlcmZh
Y2UgewotIHB1YmxpYzoKLSAgc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6SWNlQ2FuZGlkYXRlSW50
ZXJmYWNlPiBSZXBsYWNlQ2FuZGlkYXRlKAotICAgICAgY29uc3Qgd2VicnRjOjpJY2VDYW5kaWRh
dGVJbnRlcmZhY2UqKSBvdmVycmlkZSB7Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci0gIH0KLX07Cisg
IFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpSVENDb25maWd1cmF0aW9uIGNvbmZpZzsKKyAgY29u
ZmlnLmJ1bmRsZV9wb2xpY3kgPSBQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6a0J1bmRsZVBvbGlj
eU1heEJ1bmRsZTsKKyAgY29uZmlnLnJ0Y3BfbXV4X3BvbGljeSA9IFBlZXJDb25uZWN0aW9uSW50
ZXJmYWNlOjprUnRjcE11eFBvbGljeVJlcXVpcmU7CiAKLS8vIFJlcGxhY2UgdGhlIGZpcnN0IGNh
bGxlciBJQ0UgY2FuZGlkYXRlIElQIHdpdGggYSBmYWtlIGhvc3RuYW1lIGFuZCBkcm9wIHRoZQot
Ly8gb3RoZXIgY2FuZGlkYXRlcy4gRHJvcCBhbGwgY2FuZGlkYXRlcyBvbiB0aGUgY2FsbGVlIHNp
ZGUgKHRvIGF2b2lkIGEgcHJmbHgKLS8vIGNvbm5lY3Rpb24pLiBVc2UgYSBtb2NrIHJlc29sdmVy
IHRvIHJlc29sdmUgdGhlIGhvc3RuYW1lIGJhY2sgdG8gdGhlIG9yaWdpbmFsCi0vLyBJUCBvbiB0
aGUgY2FsbGVlIHNpZGUgYW5kIGNoZWNrIHRoYXQgdGhlIGljZSBjb25uZWN0aW9uIGNvbm5lY3Rz
LgotVEVTVF9QKFBlZXJDb25uZWN0aW9uSW50ZWdyYXRpb25UZXN0LAotICAgICAgIEljZVN0YXRl
c1JlYWNoQ29tcGxldGlvbldpdGhSZW1vdGVIb3N0bmFtZSkgewotICB3ZWJydGM6Ok1vY2tBc3lu
Y1Jlc29sdmVyRmFjdG9yeSogY2FsbGVlX21vY2tfYXN5bmNfcmVzb2x2ZXJfZmFjdG9yeTsKLSAg
ewotICAgIGF1dG8gcmVzb2x2ZXJfZmFjdG9yeSA9Ci0gICAgICAgIGFic2w6Om1ha2VfdW5pcXVl
PHdlYnJ0Yzo6TW9ja0FzeW5jUmVzb2x2ZXJGYWN0b3J5PigpOwotICAgIGNhbGxlZV9tb2NrX2Fz
eW5jX3Jlc29sdmVyX2ZhY3RvcnkgPSByZXNvbHZlcl9mYWN0b3J5LmdldCgpOwotICAgIHdlYnJ0
Yzo6UGVlckNvbm5lY3Rpb25EZXBlbmRlbmNpZXMgY2FsbGVlX2RlcHMobnVsbHB0cik7Ci0gICAg
Y2FsbGVlX2RlcHMuYXN5bmNfcmVzb2x2ZXJfZmFjdG9yeSA9IHN0ZDo6bW92ZShyZXNvbHZlcl9m
YWN0b3J5KTsKKyAgQVNTRVJUX1RSVUUoQ3JlYXRlUGVlckNvbm5lY3Rpb25XcmFwcGVyc1dpdGhD
b25maWdBbmREZXBzKAorICAgICAgY29uZmlnLCBzdGQ6Om1vdmUoY2FsbGVyX2RlcHMpLCBjb25m
aWcsIHN0ZDo6bW92ZShjYWxsZWVfZGVwcykpKTsKIAotICAgIEFTU0VSVF9UUlVFKENyZWF0ZVBl
ZXJDb25uZWN0aW9uV3JhcHBlcnNXaXRoQ29uZmlnQW5kRGVwcygKLSAgICAgICAgUlRDQ29uZmln
dXJhdGlvbigpLCB3ZWJydGM6OlBlZXJDb25uZWN0aW9uRGVwZW5kZW5jaWVzKG51bGxwdHIpLAot
ICAgICAgICBSVENDb25maWd1cmF0aW9uKCksIHN0ZDo6bW92ZShjYWxsZWVfZGVwcykpKTsKLSAg
fQorICBjYWxsZXIoKS0+U2V0UmVtb3RlQXN5bmNSZXNvbHZlcigmY2FsbGVlX2FzeW5jX3Jlc29s
dmVyKTsKKyAgY2FsbGVlKCktPlNldFJlbW90ZUFzeW5jUmVzb2x2ZXIoJmNhbGxlcl9hc3luY19y
ZXNvbHZlcik7CiAKLSAgcnRjOjpNb2NrQXN5bmNSZXNvbHZlciBtb2NrX2FzeW5jX3Jlc29sdmVy
OworICAvLyBFbmFibGUgaG9zdG5hbWUgY2FuZGlkYXRlcyB3aXRoIG1ETlMgbmFtZXMuCisgIGNh
bGxlcigpLT5uZXR3b3JrKCktPkNyZWF0ZU1kbnNSZXNwb25kZXIobmV0d29ya190aHJlYWQoKSk7
CisgIGNhbGxlZSgpLT5uZXR3b3JrKCktPkNyZWF0ZU1kbnNSZXNwb25kZXIobmV0d29ya190aHJl
YWQoKSk7CiAKLSAgLy8gVGhpcyBhbHNvIHZlcmlmaWVzIHRoYXQgdGhlIGluamVjdGVkIEFzeW5j
UmVzb2x2ZXJGYWN0b3J5IGlzIHVzZWQgYnkKLSAgLy8gUDJQVHJhbnNwb3J0Q2hhbm5lbC4KLSAg
RVhQRUNUX0NBTEwoKmNhbGxlZV9tb2NrX2FzeW5jX3Jlc29sdmVyX2ZhY3RvcnksIENyZWF0ZSgp
KQotICAgICAgLldpbGxPbmNlKFJldHVybigmbW9ja19hc3luY19yZXNvbHZlcikpOwotICBjYWxs
ZXIoKS0+U2V0TG9jYWxJY2VDYW5kaWRhdGVSZXBsYWNlcigKLSAgICAgIGFic2w6Om1ha2VfdW5p
cXVlPFJlcGxhY2VGaXJzdENhbmRpZGF0ZUFkZHJlc3NEcm9wT3RoZXJzPigKLSAgICAgICAgICBT
b2NrZXRBZGRyZXNzKCJhLmIiLCAxMDAwMCksICZtb2NrX2FzeW5jX3Jlc29sdmVyKSk7Ci0gIGNh
bGxlZSgpLT5TZXRMb2NhbEljZUNhbmRpZGF0ZVJlcGxhY2VyKAotICAgICAgYWJzbDo6bWFrZV91
bmlxdWU8RHJvcEFsbENhbmRpZGF0ZXM+KCkpOworICBTZXRQb3J0QWxsb2NhdG9yRmxhZ3Moa09u
bHlMb2NhbFBvcnRzLCBrT25seUxvY2FsUG9ydHMpOwogCiAgIENvbm5lY3RGYWtlU2lnbmFsaW5n
KCk7CiAgIGNhbGxlcigpLT5BZGRBdWRpb1ZpZGVvVHJhY2tzKCk7CkBAIC0zNjM3LDYgKzM2NTAs
MTAgQEAgVEVTVF9QKFBlZXJDb25uZWN0aW9uSW50ZWdyYXRpb25UZXN0LAogICAgICAgICAgICAg
ICAgICBjYWxsZXIoKS0+aWNlX2Nvbm5lY3Rpb25fc3RhdGUoKSwga0RlZmF1bHRUaW1lb3V0KTsK
ICAgRVhQRUNUX0VRX1dBSVQod2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6a0ljZUNv
bm5lY3Rpb25Db25uZWN0ZWQsCiAgICAgICAgICAgICAgICAgIGNhbGxlZSgpLT5pY2VfY29ubmVj
dGlvbl9zdGF0ZSgpLCBrRGVmYXVsdFRpbWVvdXQpOworCisgIEVYUEVDVF9FUSgxLCB3ZWJydGM6
Om1ldHJpY3M6Ok51bUV2ZW50cygKKyAgICAgICAgICAgICAgICAgICAiV2ViUlRDLlBlZXJDb25u
ZWN0aW9uLkNhbmRpZGF0ZVBhaXJUeXBlX1VEUCIsCisgICAgICAgICAgICAgICAgICAgd2VicnRj
OjprSWNlQ2FuZGlkYXRlUGFpckhvc3ROYW1lSG9zdE5hbWUpKTsKIH0KIAogLy8gVGVzdCB0aGF0
IGZpcmV3YWxsaW5nIHRoZSBJQ0UgY29ubmVjdGlvbiBjYXVzZXMgdGhlIGNsaWVudHMgdG8gaWRl
bnRpZnkgdGhlCkBAIC0zNjYxLDE0ICszNjc4LDggQEAgY2xhc3MgUGVlckNvbm5lY3Rpb25JbnRl
Z3JhdGlvbkljZVN0YXRlc1Rlc3QKICAgfQogCiAgIHZvaWQgU2V0UG9ydEFsbG9jYXRvckZsYWdz
KCkgewotICAgIG5ldHdvcmtfdGhyZWFkKCktPkludm9rZTx2b2lkPigKLSAgICAgICAgUlRDX0ZS
T01fSEVSRSwKLSAgICAgICAgcnRjOjpCaW5kKCZjcmlja2V0OjpQb3J0QWxsb2NhdG9yOjpzZXRf
ZmxhZ3MsCi0gICAgICAgICAgICAgICAgICBjYWxsZXIoKS0+cG9ydF9hbGxvY2F0b3IoKSwgcG9y
dF9hbGxvY2F0b3JfZmxhZ3NfKSk7Ci0gICAgbmV0d29ya190aHJlYWQoKS0+SW52b2tlPHZvaWQ+
KAotICAgICAgICBSVENfRlJPTV9IRVJFLAotICAgICAgICBydGM6OkJpbmQoJmNyaWNrZXQ6OlBv
cnRBbGxvY2F0b3I6OnNldF9mbGFncywKLSAgICAgICAgICAgICAgICAgIGNhbGxlZSgpLT5wb3J0
X2FsbG9jYXRvcigpLCBwb3J0X2FsbG9jYXRvcl9mbGFnc18pKTsKKyAgICBQZWVyQ29ubmVjdGlv
bkludGVncmF0aW9uQmFzZVRlc3Q6OlNldFBvcnRBbGxvY2F0b3JGbGFncygKKyAgICAgICAgcG9y
dF9hbGxvY2F0b3JfZmxhZ3NfLCBwb3J0X2FsbG9jYXRvcl9mbGFnc18pOwogICB9CiAKICAgc3Rk
Ojp2ZWN0b3I8U29ja2V0QWRkcmVzcz4gQ2FsbGVyQWRkcmVzc2VzKCkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rp
b25pbnRlcm5hbC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cGMvcGVlcmNvbm5lY3Rpb25pbnRlcm5hbC5oCmluZGV4IDhhMTY5NTQ3Y2M0M2FmNzUzMTA3MDlj
ODJmYmI2YzJjM2UxNWM0YzQuLmNiMzYyN2JmYmM2NjAxNjU1MTUxZWMzZjIzNmQ1NjJjM2VlMWFh
YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3BjL3BlZXJjb25uZWN0aW9uaW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlvbmludGVybmFsLmgKQEAgLTQyLDgg
KzQyLDggQEAgY2xhc3MgUGVlckNvbm5lY3Rpb25JbnRlcm5hbCA6IHB1YmxpYyBQZWVyQ29ubmVj
dGlvbkludGVyZmFjZSB7CiAgIEdldFRyYW5zY2VpdmVyc0ludGVybmFsKCkgY29uc3QgPSAwOwog
CiAgIC8vIEdldCB0aGUgaWQgdXNlZCBhcyBhIG1lZGlhIHN0cmVhbSB0cmFjaydzICJpZCIgZmll
bGQgZnJvbSBzc3JjLgotICB2aXJ0dWFsIGJvb2wgR2V0TG9jYWxUcmFja0lkQnlTc3JjKHVpbnQz
Ml90IHNzcmMsIHN0ZDo6c3RyaW5nKiB0cmFja19pZCkgPSAwOwotICB2aXJ0dWFsIGJvb2wgR2V0
UmVtb3RlVHJhY2tJZEJ5U3NyYyh1aW50MzJfdCBzc3JjLCBzdGQ6OnN0cmluZyogdHJhY2tfaWQp
ID0gMDsKKyAgdmlydHVhbCBhYnNsOjpzdHJpbmdfdmlldyBHZXRMb2NhbFRyYWNrSWRCeVNzcmMo
dWludDMyX3Qgc3NyYykgPSAwOworICB2aXJ0dWFsIGFic2w6OnN0cmluZ192aWV3IEdldFJlbW90
ZVRyYWNrSWRCeVNzcmModWludDMyX3Qgc3NyYykgPSAwOwogCiAgIHZpcnR1YWwgc2lnc2xvdDo6
c2lnbmFsMTxEYXRhQ2hhbm5lbCo+JiBTaWduYWxEYXRhQ2hhbm5lbENyZWF0ZWQoKSA9IDA7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Bj
L3N0YXRzY29sbGVjdG9yLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcGMvc3RhdHNjb2xsZWN0b3IuY2MKaW5kZXggYTFkNTJkYjA0ZTkyZGU4ZDQ1N2M5M2Ew
Njg5YTg1MjIxYWNkNzE0MC4uM2NkODVlNjliMjNiZjM2NTEzMDYwZGViYWFkMzljNzE0MzRiODVm
MiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cGMvc3RhdHNjb2xsZWN0b3IuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcGMvc3RhdHNjb2xsZWN0b3IuY2MKQEAgLTU4NiwyOCArNTg2LDMxIEBAIFN0
YXRzUmVwb3J0KiBTdGF0c0NvbGxlY3Rvcjo6UHJlcGFyZVJlcG9ydChib29sIGxvY2FsLAogICBT
dGF0c1JlcG9ydCogcmVwb3J0ID0gcmVwb3J0c18uRmluZChpZCk7CiAKICAgLy8gVXNlIHRoZSBJ
RCBvZiB0aGUgdHJhY2sgdGhhdCBpcyBjdXJyZW50bHkgbWFwcGVkIHRvIHRoZSBTU1JDLCBpZiBh
bnkuCi0gIHN0ZDo6c3RyaW5nIHRyYWNrX2lkOwotICBpZiAoIUdldFRyYWNrSWRCeVNzcmMoc3Ny
YywgJnRyYWNrX2lkLCBkaXJlY3Rpb24pKSB7CisgIGFic2w6OnN0cmluZ192aWV3IHRyYWNrX2lk
ID0gR2V0VHJhY2tJZEJ5U3NyYyhzc3JjLCBkaXJlY3Rpb24pOworICBpZiAodHJhY2tfaWQuZW1w
dHkoKSkgewogICAgIC8vIFRoZSBTU1JDIGlzIG5vdCB1c2VkIGJ5IGFueSBleGlzdGluZyB0cmFj
ayAob3IgbG9va3VwIGZhaWxlZCBzaW5jZSB0aGUKICAgICAvLyBTU1JDIHdhc24ndCBzaWduYWxl
ZCBpbiBTRFApLiBUcnkgY29weWluZyB0aGUgdHJhY2sgSUQgZnJvbSBhIHByZXZpb3VzCiAgICAg
Ly8gcmVwb3J0OiBpZiBvbmUgZXhpc3RzLgogICAgIGlmIChyZXBvcnQpIHsKICAgICAgIGNvbnN0
IFN0YXRzUmVwb3J0OjpWYWx1ZSogdiA9CiAgICAgICAgICAgcmVwb3J0LT5GaW5kVmFsdWUoU3Rh
dHNSZXBvcnQ6OmtTdGF0c1ZhbHVlTmFtZVRyYWNrSWQpOwotICAgICAgaWYgKHYpCisgICAgICBp
ZiAodikgewogICAgICAgICB0cmFja19pZCA9IHYtPnN0cmluZ192YWwoKTsKKyAgICAgIH0KICAg
ICB9CiAgIH0KIAotICBpZiAoIXJlcG9ydCkKKyAgaWYgKCFyZXBvcnQpIHsKICAgICByZXBvcnQg
PSByZXBvcnRzXy5JbnNlcnROZXcoaWQpOworICB9CiAKICAgLy8gRllJIC0gZm9yIHJlbW90ZSBy
ZXBvcnRzLCB0aGUgdGltZXN0YW1wIHdpbGwgYmUgb3ZlcndyaXR0ZW4gbGF0ZXIuCiAgIHJlcG9y
dC0+c2V0X3RpbWVzdGFtcChzdGF0c19nYXRoZXJpbmdfc3RhcnRlZF8pOwogCiAgIHJlcG9ydC0+
QWRkSW50NjQoU3RhdHNSZXBvcnQ6OmtTdGF0c1ZhbHVlTmFtZVNzcmMsIHNzcmMpOwogICBpZiAo
IXRyYWNrX2lkLmVtcHR5KCkpIHsKLSAgICByZXBvcnQtPkFkZFN0cmluZyhTdGF0c1JlcG9ydDo6
a1N0YXRzVmFsdWVOYW1lVHJhY2tJZCwgdHJhY2tfaWQpOworICAgIHJlcG9ydC0+QWRkU3RyaW5n
KFN0YXRzUmVwb3J0OjprU3RhdHNWYWx1ZU5hbWVUcmFja0lkLAorICAgICAgICAgICAgICAgICAg
ICAgIHN0ZDo6c3RyaW5nKHRyYWNrX2lkKSk7CiAgIH0KICAgLy8gQWRkIHRoZSBtYXBwaW5nIG9m
IFNTUkMgdG8gdHJhbnNwb3J0LgogICByZXBvcnQtPkFkZElkKFN0YXRzUmVwb3J0OjprU3RhdHNW
YWx1ZU5hbWVUcmFuc3BvcnRJZCwgdHJhbnNwb3J0X2lkKTsKQEAgLTEwOTUsMjYgKzEwOTgsMjQg
QEAgdm9pZCBTdGF0c0NvbGxlY3Rvcjo6VXBkYXRlUmVwb3J0RnJvbUF1ZGlvVHJhY2soQXVkaW9U
cmFja0ludGVyZmFjZSogdHJhY2ssCiAgIH0KIH0KIAotYm9vbCBTdGF0c0NvbGxlY3Rvcjo6R2V0
VHJhY2tJZEJ5U3NyYyh1aW50MzJfdCBzc3JjLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdGQ6OnN0cmluZyogdHJhY2tfaWQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFN0YXRzUmVwb3J0OjpEaXJlY3Rpb24gZGlyZWN0aW9uKSB7CithYnNs
OjpzdHJpbmdfdmlldyBTdGF0c0NvbGxlY3Rvcjo6R2V0VHJhY2tJZEJ5U3NyYygKKyAgICB1aW50
MzJfdCBzc3JjLAorICAgIFN0YXRzUmVwb3J0OjpEaXJlY3Rpb24gZGlyZWN0aW9uKSB7CiAgIFJU
Q19EQ0hFQ0socGNfLT5zaWduYWxpbmdfdGhyZWFkKCktPklzQ3VycmVudCgpKTsKKyAgYWJzbDo6
c3RyaW5nX3ZpZXcgdHJhY2tfaWQ7CiAgIGlmIChkaXJlY3Rpb24gPT0gU3RhdHNSZXBvcnQ6OmtT
ZW5kKSB7Ci0gICAgaWYgKCFwY18tPkdldExvY2FsVHJhY2tJZEJ5U3NyYyhzc3JjLCB0cmFja19p
ZCkpIHsKLSAgICAgIFJUQ19MT0coTFNfV0FSTklORykgPDwgIlRoZSBTU1JDICIgPDwgc3NyYwot
ICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiIGlzIG5vdCBhc3NvY2lhdGVkIHdpdGggYSBz
ZW5kaW5nIHRyYWNrIjsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9CisgICAgdHJhY2tfaWQg
PSBwY18tPkdldExvY2FsVHJhY2tJZEJ5U3NyYyhzc3JjKTsKICAgfSBlbHNlIHsKLSAgICBSVENf
RENIRUNLKGRpcmVjdGlvbiA9PSBTdGF0c1JlcG9ydDo6a1JlY2VpdmUpOwotICAgIGlmICghcGNf
LT5HZXRSZW1vdGVUcmFja0lkQnlTc3JjKHNzcmMsIHRyYWNrX2lkKSkgewotICAgICAgUlRDX0xP
RyhMU19XQVJOSU5HKSA8PCAiVGhlIFNTUkMgIiA8PCBzc3JjCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgIDw8ICIgaXMgbm90IGFzc29jaWF0ZWQgd2l0aCBhIHJlY2VpdmluZyB0cmFjayI7Ci0g
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQorICAgIFJUQ19EQ0hFQ0tfRVEoZGlyZWN0aW9uLCBT
dGF0c1JlcG9ydDo6a1JlY2VpdmUpOworICAgIHRyYWNrX2lkID0gcGNfLT5HZXRSZW1vdGVUcmFj
a0lkQnlTc3JjKHNzcmMpOwogICB9Ci0KLSAgcmV0dXJuIHRydWU7CisgIGlmICh0cmFja19pZC5l
bXB0eSgpKSB7CisgICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8PCAiVGhlIFNTUkMgIiA8PCBzc3Jj
IDw8ICIgaXMgbm90IGFzc29jaWF0ZWQgd2l0aCBhICIKKyAgICAgICAgICAgICAgICAgICAgICAg
IDw8IChkaXJlY3Rpb24gPT0gU3RhdHNSZXBvcnQ6OmtTZW5kID8gInNlbmRpbmciCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICJy
ZWNlaXZpbmciKQorICAgICAgICAgICAgICAgICAgICAgICAgPDwgIiB0cmFjayI7CisgIH0KKyAg
cmV0dXJuIHRyYWNrX2lkOwogfQogCiB2b2lkIFN0YXRzQ29sbGVjdG9yOjpVcGRhdGVUcmFja1Jl
cG9ydHMoKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9wYy9zdGF0c2NvbGxlY3Rvci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcGMvc3RhdHNjb2xsZWN0b3IuaAppbmRleCBhM2M1OTkyYWZjNjVmODI5
NTEyZTc2Y2NiZmI4NzliZGQ0MTIyYzM3Li4yNWJmZmNjMmRmZTk4ZmI1MjkwMTYxMDliMjRmOTQy
ZTVlOGY5NTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9wYy9zdGF0c2NvbGxlY3Rvci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3N0YXRzY29sbGVjdG9yLmgKQEAgLTEyOCw5ICsxMjgsOCBA
QCBjbGFzcyBTdGF0c0NvbGxlY3RvciB7CiAKICAgLy8gSGVscGVyIG1ldGhvZCB0byBnZXQgdGhl
IGlkIGZvciB0aGUgdHJhY2sgaWRlbnRpZmllZCBieSBzc3JjLgogICAvLyB8ZGlyZWN0aW9ufCB0
ZWxscyBpZiB0aGUgdHJhY2sgaXMgZm9yIHNlbmRpbmcgb3IgcmVjZWl2aW5nLgotICBib29sIEdl
dFRyYWNrSWRCeVNzcmModWludDMyX3Qgc3NyYywKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0
ZDo6c3RyaW5nKiB0cmFja19pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgIFN0YXRzUmVwb3J0
OjpEaXJlY3Rpb24gZGlyZWN0aW9uKTsKKyAgYWJzbDo6c3RyaW5nX3ZpZXcgR2V0VHJhY2tJZEJ5
U3NyYyh1aW50MzJfdCBzc3JjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFN0YXRzUmVwb3J0OjpEaXJlY3Rpb24gZGlyZWN0aW9uKTsKIAogICAvLyBIZWxwZXIgbWV0aG9k
IHRvIHVwZGF0ZSB0aGUgdGltZXN0YW1wIG9mIHRyYWNrIHJlY29yZHMuCiAgIHZvaWQgVXBkYXRl
VHJhY2tSZXBvcnRzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9wYy90ZXN0L2Zha2VwZWVyY29ubmVjdGlvbmJhc2UuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3Rlc3QvZmFrZXBlZXJjb25uZWN0
aW9uYmFzZS5oCmluZGV4IDkzMzgwYzA5NTNlYjVmNzQyNGMxNjc1ODM1YjVjODk0NDk3YTM5Mzgu
LmMxOTA2MjhiZWI5NzI1Njg1NTUzYWY3MGY2NjRkN2NiOGFmNjdhOGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3Rlc3QvZmFrZXBlZXJj
b25uZWN0aW9uYmFzZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3BjL3Rlc3QvZmFrZXBlZXJjb25uZWN0aW9uYmFzZS5oCkBAIC0yMjksMTEgKzIyOSw5
IEBAIGNsYXNzIEZha2VQZWVyQ29ubmVjdGlvbkJhc2UgOiBwdWJsaWMgUGVlckNvbm5lY3Rpb25J
bnRlcm5hbCB7CiAgICAgcmV0dXJuIHt9OwogICB9CiAKLSAgYm9vbCBHZXRMb2NhbFRyYWNrSWRC
eVNzcmModWludDMyX3Qgc3NyYywgc3RkOjpzdHJpbmcqIHRyYWNrX2lkKSBvdmVycmlkZSB7Ci0g
ICAgcmV0dXJuIGZhbHNlOwotICB9Ci0gIGJvb2wgR2V0UmVtb3RlVHJhY2tJZEJ5U3NyYyh1aW50
MzJfdCBzc3JjLCBzdGQ6OnN0cmluZyogdHJhY2tfaWQpIG92ZXJyaWRlIHsKLSAgICByZXR1cm4g
ZmFsc2U7CisgIGFic2w6OnN0cmluZ192aWV3IEdldExvY2FsVHJhY2tJZEJ5U3NyYyh1aW50MzJf
dCBzc3JjKSBvdmVycmlkZSB7IHJldHVybiB7fTsgfQorICBhYnNsOjpzdHJpbmdfdmlldyBHZXRS
ZW1vdGVUcmFja0lkQnlTc3JjKHVpbnQzMl90IHNzcmMpIG92ZXJyaWRlIHsKKyAgICByZXR1cm4g
e307CiAgIH0KIAogICBzaWdzbG90OjpzaWduYWwxPERhdGFDaGFubmVsKj4mIFNpZ25hbERhdGFD
aGFubmVsQ3JlYXRlZCgpIG92ZXJyaWRlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3Rlc3QvZmFrZXBlZXJjb25uZWN0aW9uZm9yc3Rh
dHMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3Rlc3Qv
ZmFrZXBlZXJjb25uZWN0aW9uZm9yc3RhdHMuaAppbmRleCBhZjg2NjM5ZWNhNGQ1OTg0OWY2ZDVl
ZTg5YTQ1MWU0YjY0MDBiMjE3Li5hOWY5ZDE3ZDE2OTQ4ZDU3Zjk1MTY3Mzc5NzhkNzJjNzVjMDI3
Y2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9wYy90ZXN0L2Zha2VwZWVyY29ubmVjdGlvbmZvcnN0YXRzLmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvdGVzdC9mYWtlcGVlcmNvbm5lY3Rpb25m
b3JzdGF0cy5oCkBAIC0yNDksMjQgKzI0OSwyMCBAQCBjbGFzcyBGYWtlUGVlckNvbm5lY3Rpb25G
b3JTdGF0cyA6IHB1YmxpYyBGYWtlUGVlckNvbm5lY3Rpb25CYXNlIHsKICAgICByZXR1cm4gdHJh
bnNjZWl2ZXJzXzsKICAgfQogCi0gIGJvb2wgR2V0TG9jYWxUcmFja0lkQnlTc3JjKHVpbnQzMl90
IHNzcmMsIHN0ZDo6c3RyaW5nKiB0cmFja19pZCkgb3ZlcnJpZGUgeworICBhYnNsOjpzdHJpbmdf
dmlldyBHZXRMb2NhbFRyYWNrSWRCeVNzcmModWludDMyX3Qgc3NyYykgb3ZlcnJpZGUgewogICAg
IGF1dG8gaXQgPSBsb2NhbF90cmFja19pZF9ieV9zc3JjXy5maW5kKHNzcmMpOwogICAgIGlmIChp
dCAhPSBsb2NhbF90cmFja19pZF9ieV9zc3JjXy5lbmQoKSkgewotICAgICAgKnRyYWNrX2lkID0g
aXQtPnNlY29uZDsKLSAgICAgIHJldHVybiB0cnVlOwotICAgIH0gZWxzZSB7Ci0gICAgICByZXR1
cm4gZmFsc2U7CisgICAgICByZXR1cm4gaXQtPnNlY29uZDsKICAgICB9CisgICAgcmV0dXJuIHt9
OwogICB9CiAKLSAgYm9vbCBHZXRSZW1vdGVUcmFja0lkQnlTc3JjKHVpbnQzMl90IHNzcmMsIHN0
ZDo6c3RyaW5nKiB0cmFja19pZCkgb3ZlcnJpZGUgeworICBhYnNsOjpzdHJpbmdfdmlldyBHZXRS
ZW1vdGVUcmFja0lkQnlTc3JjKHVpbnQzMl90IHNzcmMpIG92ZXJyaWRlIHsKICAgICBhdXRvIGl0
ID0gcmVtb3RlX3RyYWNrX2lkX2J5X3NzcmNfLmZpbmQoc3NyYyk7CiAgICAgaWYgKGl0ICE9IHJl
bW90ZV90cmFja19pZF9ieV9zc3JjXy5lbmQoKSkgewotICAgICAgKnRyYWNrX2lkID0gaXQtPnNl
Y29uZDsKLSAgICAgIHJldHVybiB0cnVlOwotICAgIH0gZWxzZSB7Ci0gICAgICByZXR1cm4gZmFs
c2U7CisgICAgICByZXR1cm4gaXQtPnNlY29uZDsKICAgICB9CisgICAgcmV0dXJuIHt9OwogICB9
CiAKICAgc3RkOjp2ZWN0b3I8cnRjOjpzY29wZWRfcmVmcHRyPERhdGFDaGFubmVsPj4gc2N0cF9k
YXRhX2NoYW5uZWxzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3BjL3Rlc3QvbW9ja3BlZXJjb25uZWN0aW9ub2JzZXJ2ZXJzLmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy90ZXN0L21vY2twZWVyY29u
bmVjdGlvbm9ic2VydmVycy5oCmluZGV4IDYyYzBjOTQxNWY2YzQxODNiZWNlMTI3ODg3MGUyYjA2
N2FkNDM5MDMuLjA2NTc4NTNjMjlmMmU5OGQ0MjZhNzA3ZGRiZWRmYTY2NDliZjE5MDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3Rlc3Qv
bW9ja3BlZXJjb25uZWN0aW9ub2JzZXJ2ZXJzLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcGMvdGVzdC9tb2NrcGVlcmNvbm5lY3Rpb25vYnNlcnZlcnMu
aApAQCAtMzY2LDYgKzM2Niw5IEBAIGNsYXNzIE1vY2tTdGF0c09ic2VydmVyIDogcHVibGljIHdl
YnJ0Yzo6U3RhdHNPYnNlcnZlciB7CiAgICAgICAgICAgICAgICAgICAgICZzdGF0c18uYnl0ZXNf
c2VudCk7CiAgICAgICAgIEdldEludDY0VmFsdWUociwgU3RhdHNSZXBvcnQ6OmtTdGF0c1ZhbHVl
TmFtZUNhcHR1cmVTdGFydE50cFRpbWVNcywKICAgICAgICAgICAgICAgICAgICAgICAmc3RhdHNf
LmNhcHR1cmVfc3RhcnRfbnRwX3RpbWUpOworICAgICAgICBzdGF0c18udHJhY2tfaWRzLmVtcGxh
Y2VfYmFjaygpOworICAgICAgICBHZXRTdHJpbmdWYWx1ZShyLCBTdGF0c1JlcG9ydDo6a1N0YXRz
VmFsdWVOYW1lVHJhY2tJZCwKKyAgICAgICAgICAgICAgICAgICAgICAgJnN0YXRzXy50cmFja19p
ZHMuYmFjaygpKTsKICAgICAgIH0gZWxzZSBpZiAoci0+dHlwZSgpID09IFN0YXRzUmVwb3J0Ojpr
U3RhdHNSZXBvcnRUeXBlQndlKSB7CiAgICAgICAgIHN0YXRzXy50aW1lc3RhbXAgPSByLT50aW1l
c3RhbXAoKTsKICAgICAgICAgR2V0SW50VmFsdWUociwgU3RhdHNSZXBvcnQ6OmtTdGF0c1ZhbHVl
TmFtZUF2YWlsYWJsZVJlY2VpdmVCYW5kd2lkdGgsCkBAIC00MjQsNiArNDI3LDExIEBAIGNsYXNz
IE1vY2tTdGF0c09ic2VydmVyIDogcHVibGljIHdlYnJ0Yzo6U3RhdHNPYnNlcnZlciB7CiAgICAg
cmV0dXJuIHN0YXRzXy5zcnRwX2NpcGhlcjsKICAgfQogCisgIHN0ZDo6dmVjdG9yPHN0ZDo6c3Ry
aW5nPiBUcmFja0lkcygpIGNvbnN0IHsKKyAgICBSVENfQ0hFQ0soY2FsbGVkXyk7CisgICAgcmV0
dXJuIHN0YXRzXy50cmFja19pZHM7CisgIH0KKwogIHByaXZhdGU6CiAgIGJvb2wgR2V0SW50VmFs
dWUoY29uc3QgU3RhdHNSZXBvcnQqIHJlcG9ydCwKICAgICAgICAgICAgICAgICAgICBTdGF0c1Jl
cG9ydDo6U3RhdHNWYWx1ZU5hbWUgbmFtZSwKQEAgLTQ2OSw2ICs0NzcsNyBAQCBjbGFzcyBNb2Nr
U3RhdHNPYnNlcnZlciA6IHB1YmxpYyB3ZWJydGM6OlN0YXRzT2JzZXJ2ZXIgewogICAgICAgYXZh
aWxhYmxlX3JlY2VpdmVfYmFuZHdpZHRoID0gMDsKICAgICAgIGR0bHNfY2lwaGVyLmNsZWFyKCk7
CiAgICAgICBzcnRwX2NpcGhlci5jbGVhcigpOworICAgICAgdHJhY2tfaWRzLmNsZWFyKCk7CiAg
ICAgfQogCiAgICAgc2l6ZV90IG51bWJlcl9vZl9yZXBvcnRzOwpAQCAtNDgxLDYgKzQ5MCw3IEBA
IGNsYXNzIE1vY2tTdGF0c09ic2VydmVyIDogcHVibGljIHdlYnJ0Yzo6U3RhdHNPYnNlcnZlciB7
CiAgICAgaW50IGF2YWlsYWJsZV9yZWNlaXZlX2JhbmR3aWR0aDsKICAgICBzdGQ6OnN0cmluZyBk
dGxzX2NpcGhlcjsKICAgICBzdGQ6OnN0cmluZyBzcnRwX2NpcGhlcjsKKyAgICBzdGQ6OnZlY3Rv
cjxzdGQ6OnN0cmluZz4gdHJhY2tfaWRzOwogICB9IHN0YXRzXzsKIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3dlYnJ0Y3NkcF91
bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Bj
L3dlYnJ0Y3NkcF91bml0dGVzdC5jYwppbmRleCBlN2M1Yzc3YmI2MWFkZTJiNWY5NDg5MjY2MTAy
NTdiMTA5NjVkMDdhLi42Nzc1OTU3NDk4ZmQ5Y2YyMGQ4MTQyYmZiMjE5YTI2Nzk2MmUwYzkyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy93
ZWJydGNzZHBfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcGMvd2VicnRjc2RwX3VuaXR0ZXN0LmNjCkBAIC0yNDc0LDYgKzI0NzQsOCBA
QCBURVNUX0YoV2ViUnRjU2RwVGVzdCwgRGVzZXJpYWxpemVTZXNzaW9uRGVzY3JpcHRpb25XaXRo
b3V0TXNpZCkgewogICBFWFBFQ1RfVFJVRShTZHBEZXNlcmlhbGl6ZShzZHBfd2l0aG91dF9tc2lk
LCAmamRlc2MpKTsKICAgLy8gVmVyaWZ5CiAgIEVYUEVDVF9UUlVFKENvbXBhcmVTZXNzaW9uRGVz
Y3JpcHRpb24oamRlc2NfLCBqZGVzYykpOworICBFWFBFQ1RfRkFMU0UoamRlc2MuZGVzY3JpcHRp
b24oKS0+bXNpZF9zaWduYWxpbmcoKSAmCisgICAgICAgICAgICAgICB+Y3JpY2tldDo6a01zaWRT
aWduYWxpbmdTc3JjQXR0cmlidXRlKTsKIH0KIAogVEVTVF9GKFdlYlJ0Y1NkcFRlc3QsIERlc2Vy
aWFsaXplU2Vzc2lvbkRlc2NyaXB0aW9uV2l0aEV4dG1hcEFsbG93TWl4ZWQpIHsKQEAgLTM0NzAs
NiArMzQ3Miw5IEBAIFRFU1RfRihXZWJSdGNTZHBUZXN0LCBEZXNlcmlhbGl6ZVNlc3Npb25EZXNj
cmlwdGlvblNwZWNpYWxNc2lkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZkZXNl
cmlhbGl6ZWRfZGVzY3JpcHRpb24pKTsKIAogICBFWFBFQ1RfVFJVRShDb21wYXJlU2Vzc2lvbkRl
c2NyaXB0aW9uKGpkZXNjXywgZGVzZXJpYWxpemVkX2Rlc2NyaXB0aW9uKSk7CisgIEVYUEVDVF9F
UShjcmlja2V0OjprTXNpZFNpZ25hbGluZ01lZGlhU2VjdGlvbiB8CisgICAgICAgICAgICAgICAg
Y3JpY2tldDo6a01zaWRTaWduYWxpbmdTc3JjQXR0cmlidXRlLAorICAgICAgICAgICAgZGVzZXJp
YWxpemVkX2Rlc2NyaXB0aW9uLmRlc2NyaXB0aW9uKCktPm1zaWRfc2lnbmFsaW5nKCkpOwogfQog
CiAvLyBUZXN0cyB0aGUgc2VyaWFsaXphdGlvbiBvZiBhIFVuaWZpZWQgUGxhbiBTRFAgdGhhdCBp
cyBjb21wYXRpYmxlIGZvciBib3RoCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9mYWtlX21kbnNfcmVzcG9uZGVyLmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9mYWtlX21kbnNf
cmVzcG9uZGVyLmgKaW5kZXggMWU2MGE1ZDlkZTJkMWNjYzRmZGYxNTRiZjZiMzA1OThkNWI2NWJj
NS4uMTdhNzY3ODRmYzUxNDc2ZWI3MDE0NWYzZjg2ZDMwZDNhMmQ5NmMwZCAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZmFrZV9t
ZG5zX3Jlc3BvbmRlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3J0Y19iYXNlL2Zha2VfbWRuc19yZXNwb25kZXIuaApAQCAtNTAsNiArNTAsMTUgQEAg
Y2xhc3MgRmFrZU1kbnNSZXNwb25kZXIgOiBwdWJsaWMgTWRuc1Jlc3BvbmRlckludGVyZmFjZSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NhbGxiYWNrLCByZXN1bHRdKCkgeyBj
YWxsYmFjayhyZXN1bHQpOyB9KTsKICAgfQogCisgIHJ0Yzo6SVBBZGRyZXNzIEdldE1hcHBlZEFk
ZHJlc3NGb3JOYW1lKGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lKSBjb25zdCB7CisgICAgZm9yIChj
b25zdCBhdXRvJiBhZGRyX25hbWVfcGFpciA6IGFkZHJfbmFtZV9tYXBfKSB7CisgICAgICBpZiAo
YWRkcl9uYW1lX3BhaXIuc2Vjb25kID09IG5hbWUpIHsKKyAgICAgICAgcmV0dXJuIGFkZHJfbmFt
ZV9wYWlyLmZpcnN0OworICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gcnRjOjpJUEFkZHJlc3Mo
KTsKKyAgfQorCiAgcHJpdmF0ZToKICAgdWludDMyX3QgbmV4dF9hdmFpbGFibGVfaWRfID0gMDsK
ICAgc3RkOjptYXA8cnRjOjpJUEFkZHJlc3MsIHN0ZDo6c3RyaW5nPiBhZGRyX25hbWVfbWFwXzsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0
Y19iYXNlL2Zha2VuZXR3b3JrLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9ydGNfYmFzZS9mYWtlbmV0d29yay5oCmluZGV4IGNiODkwZWM1ODNkYzg3NmJlNmY0
ZDQ0ZDJlYmRmMDgwM2MwNWFiNTcuLjlhY2Y5Njk0NTM1YmNhZTk5NzQxYmMyYjgwNmUwOTY0ZGE3
MDkyNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y19iYXNlL2Zha2VuZXR3b3JrLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZmFrZW5ldHdvcmsuaApAQCAtODIsMjAgKzgyLDI1
IEBAIGNsYXNzIEZha2VOZXR3b3JrTWFuYWdlciA6IHB1YmxpYyBOZXR3b3JrTWFuYWdlckJhc2Us
IHB1YmxpYyBNZXNzYWdlSGFuZGxlciB7CiAgIC8vIE1lc3NhZ2VIYW5kbGVyIGludGVyZmFjZS4K
ICAgdmlydHVhbCB2b2lkIE9uTWVzc2FnZShNZXNzYWdlKiBtc2cpIHsgRG9VcGRhdGVOZXR3b3Jr
cygpOyB9CiAKLSAgdm9pZCBDcmVhdGVNZG5zUmVzcG9uZGVyKCkgeworICB2b2lkIENyZWF0ZU1k
bnNSZXNwb25kZXIocnRjOjpUaHJlYWQqIG5ldHdvcmtfdGhyZWFkKSB7CiAgICAgaWYgKG1kbnNf
cmVzcG9uZGVyXyA9PSBudWxscHRyKSB7CiAgICAgICBtZG5zX3Jlc3BvbmRlcl8gPQotICAgICAg
ICAgIGFic2w6Om1ha2VfdW5pcXVlPHdlYnJ0Yzo6RmFrZU1kbnNSZXNwb25kZXI+KHJ0Yzo6VGhy
ZWFkOjpDdXJyZW50KCkpOworICAgICAgICAgIGFic2w6Om1ha2VfdW5pcXVlPHdlYnJ0Yzo6RmFr
ZU1kbnNSZXNwb25kZXI+KG5ldHdvcmtfdGhyZWFkKTsKICAgICB9CiAgIH0KIAogICB1c2luZyBO
ZXR3b3JrTWFuYWdlckJhc2U6OnNldF9lbnVtZXJhdGlvbl9wZXJtaXNzaW9uOwogICB1c2luZyBO
ZXR3b3JrTWFuYWdlckJhc2U6OnNldF9kZWZhdWx0X2xvY2FsX2FkZHJlc3NlczsKIAorICAvLyBy
dGM6Ok5ldHdvcmtNYW5hZ2VyIG92ZXJyaWRlLgogICB3ZWJydGM6Ok1kbnNSZXNwb25kZXJJbnRl
cmZhY2UqIEdldE1kbnNSZXNwb25kZXIoKSBjb25zdCBvdmVycmlkZSB7CiAgICAgcmV0dXJuIG1k
bnNfcmVzcG9uZGVyXy5nZXQoKTsKICAgfQogCisgIHdlYnJ0Yzo6RmFrZU1kbnNSZXNwb25kZXIq
IEdldE1kbnNSZXNwb25kZXJGb3JUZXN0aW5nKCkgY29uc3QgeworICAgIHJldHVybiBtZG5zX3Jl
c3BvbmRlcl8uZ2V0KCk7CisgIH0KKwogIHByaXZhdGU6CiAgIHZvaWQgRG9VcGRhdGVOZXR3b3Jr
cygpIHsKICAgICBpZiAoc3RhcnRfY291bnRfID09IDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby92aWRlb19zZW5kX3N0cmVhbV9p
bXBsLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8v
dmlkZW9fc2VuZF9zdHJlYW1faW1wbC5jYwppbmRleCA1ZGNmMTgyNDNkNWY4NzZmMDEyMDY3NTA0
NjRiMTk3ZmIzYzJkMTQ5Li41MmU1NTY4YThjMDVlZjlkZjVlMTVjOWUyYjlkZGNiMGU4MjZiODg0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92
aWRlby92aWRlb19zZW5kX3N0cmVhbV9pbXBsLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3ZpZGVvX3NlbmRfc3RyZWFtX2ltcGwuY2MKQEAg
LTU0NSw3ICs1NDUsOCBAQCB2b2lkIFZpZGVvU2VuZFN0cmVhbUltcGw6Ok9uRW5jb2RlckNvbmZp
Z3VyYXRpb25DaGFuZ2VkKAogICBjb25zdCBWaWRlb0NvZGVjVHlwZSBjb2RlY190eXBlID0KICAg
ICAgIFBheWxvYWRTdHJpbmdUb0NvZGVjVHlwZShjb25maWdfLT5ydHAucGF5bG9hZF9uYW1lKTsK
ICAgaWYgKGNvZGVjX3R5cGUgPT0ga1ZpZGVvQ29kZWNWUDkpIHsKLSAgICBtYXhfcGFkZGluZ19i
aXRyYXRlXyA9IHN0cmVhbXNbMF0udGFyZ2V0X2JpdHJhdGVfYnBzOworICAgIG1heF9wYWRkaW5n
X2JpdHJhdGVfID0gaGFzX2Fscl9wcm9iaW5nXyA/IHN0cmVhbXNbMF0ubWluX2JpdHJhdGVfYnBz
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogc3RyZWFtc1sw
XS50YXJnZXRfYml0cmF0ZV9icHM7CiAgIH0gZWxzZSB7CiAgICAgbWF4X3BhZGRpbmdfYml0cmF0
ZV8gPSBDYWxjdWxhdGVNYXhQYWRCaXRyYXRlQnBzKAogICAgICAgICBzdHJlYW1zLCBtaW5fdHJh
bnNtaXRfYml0cmF0ZV9icHMsIGNvbmZpZ18tPnN1c3BlbmRfYmVsb3dfbWluX2JpdHJhdGUsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRl
by92aWRlb19zdHJlYW1fZW5jb2Rlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3ZpZGVvL3ZpZGVvX3N0cmVhbV9lbmNvZGVyLmNjCmluZGV4IGEyMmQ1OGFk
ZjFlYWFkZjg4N2JjNTRiMzg3ZjBlNGQ2MmU2Y2VlNGUuLmM5NDY5OWJjZDdhNTEyNGNjMjAxNWMw
ZTA4Mjk5ZTEwNjViMzQwNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3ZpZGVvX3N0cmVhbV9lbmNvZGVyLmNjCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3ZpZGVvX3N0cmVhbV9l
bmNvZGVyLmNjCkBAIC0xOCw2ICsxOCw3IEBACiAjaW5jbHVkZSAiYXBpL3ZpZGVvL2VuY29kZWRf
aW1hZ2UuaCIKICNpbmNsdWRlICJhcGkvdmlkZW8vaTQyMF9idWZmZXIuaCIKICNpbmNsdWRlICJh
cGkvdmlkZW8vdmlkZW9fYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeS5oIgorI2luY2x1ZGUgIm1v
ZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDkvc3ZjX3JhdGVfYWxsb2NhdG9yLmgiCiAjaW5j
bHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvaW5jbHVkZS92aWRlb19jb2RlY19pbml0aWFsaXpl
ci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2luY2x1ZGUvdmlkZW9fY29kaW5n
LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvYXJyYXlzaXplLmgiCkBAIC01NDUsMjQgKzU0NiwxMyBA
QCB2b2lkIFZpZGVvU3RyZWFtRW5jb2Rlcjo6UmVjb25maWd1cmVFbmNvZGVyKCkgewogCiAgIC8v
IFNldCBtaW5fYml0cmF0ZV9icHMsIG1heF9iaXRyYXRlX2JwcywgYW5kIG1heCBwYWRkaW5nIGJp
dCByYXRlIGZvciBWUDkuCiAgIGlmIChlbmNvZGVyX2NvbmZpZ18uY29kZWNfdHlwZSA9PSBrVmlk
ZW9Db2RlY1ZQOSkgewotICAgIFJUQ19EQ0hFQ0tfRVEoMVUsIHN0cmVhbXMuc2l6ZSgpKTsKLSAg
ICBpbnQgbWF4X2VuY29kZXJfYml0cmF0ZV9rYnBzID0gMDsKLSAgICBmb3IgKGludCBpID0gMDsg
aSA8IGNvZGVjLlZQOSgpLT5udW1iZXJPZlNwYXRpYWxMYXllcnM7ICsraSkgewotICAgICAgbWF4
X2VuY29kZXJfYml0cmF0ZV9rYnBzICs9IGNvZGVjLnNwYXRpYWxMYXllcnNbaV0ubWF4Qml0cmF0
ZTsKLSAgICB9CiAgICAgLy8gTG93ZXIgbWF4IGJpdHJhdGUgdG8gdGhlIGxldmVsIGNvZGVjIGFj
dHVhbGx5IGNhbiBwcm9kdWNlLgotICAgIHN0cmVhbXNbMF0ubWF4X2JpdHJhdGVfYnBzID0KLSAg
ICAgICAgc3RkOjptaW4oc3RyZWFtc1swXS5tYXhfYml0cmF0ZV9icHMsIG1heF9lbmNvZGVyX2Jp
dHJhdGVfa2JwcyAqIDEwMDApOworICAgIHN0cmVhbXNbMF0ubWF4X2JpdHJhdGVfYnBzID0gc3Rk
OjptaW48aW50PigKKyAgICAgICAgc3RyZWFtc1swXS5tYXhfYml0cmF0ZV9icHMsIFN2Y1JhdGVB
bGxvY2F0b3I6OkdldE1heEJpdHJhdGVCcHMoY29kZWMpKTsKICAgICBzdHJlYW1zWzBdLm1pbl9i
aXRyYXRlX2JwcyA9IGNvZGVjLnNwYXRpYWxMYXllcnNbMF0ubWluQml0cmF0ZSAqIDEwMDA7Ci0g
ICAgLy8gUGFzcyBhbG9uZyB0aGUgdmFsdWUgb2YgbWF4aW11bSBwYWRkaW5nIGJpdCByYXRlIGZy
b20KLSAgICAvLyBzcGF0aWFsTGF5ZXJzW10udGFyZ2V0Qml0cmF0ZSB0byBzdHJlYW1zWzBdLnRh
cmdldF9iaXRyYXRlX2Jwcy4KLSAgICAvLyBUT0RPKHNzaWxraW4pOiBUaGVyZSBzaG91bGQgYmUg
c29tZSBtYXJnaW4gYmV0d2VlbiBtYXggcGFkZGluZyBiaXRyYXRlCi0gICAgLy8gYW5kIG1heCBl
bmNvZGVyIGJpdHJhdGUuIFdpdGggdGhlIGN1cnJlbnQgbG9naWMgdGhleSBjYW4gYmUgZXF1YWwu
CisgICAgLy8gdGFyZ2V0X2JpdHJhdGVfYnBzIHNwZWNpZmllcyB0aGUgbWF4aW11bSBwYWRkaW5n
IGJpdHJhdGUuCiAgICAgc3RyZWFtc1swXS50YXJnZXRfYml0cmF0ZV9icHMgPQotICAgICAgICBz
dGQ6Om1pbihzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KHN0cmVhbXNbMF0ubWF4X2JpdHJhdGVf
YnBzKSwKLSAgICAgICAgICAgICAgICAgY29kZWMuc3BhdGlhbExheWVyc1tjb2RlYy5WUDkoKS0+
bnVtYmVyT2ZTcGF0aWFsTGF5ZXJzIC0gMV0KLSAgICAgICAgICAgICAgICAgICAgICAgICAudGFy
Z2V0Qml0cmF0ZSAqCi0gICAgICAgICAgICAgICAgICAgICAxMDAwKTsKKyAgICAgICAgU3ZjUmF0
ZUFsbG9jYXRvcjo6R2V0UGFkZGluZ0JpdHJhdGVCcHMoY29kZWMpOwogICB9CiAKICAgY29kZWMu
c3RhcnRCaXRyYXRlID0K
</data>

          </attachment>
      

    </bug>

</bugzilla>