<?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>131283</bug_id>
          
          <creation_ts>2014-04-06 15:06:37 -0700</creation_ts>
          <short_desc>CSS JIT: add support for :last-child and :only-child</short_desc>
          <delta_ts>2014-04-06 19:25:51 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Benjamin Poulain">benjamin</reporter>
          <assigned_to name="Benjamin Poulain">benjamin</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kling</cc>
    
    <cc>kondapallykalyan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>998034</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-04-06 15:06:37 -0700</bug_when>
    <thetext>CSS JIT: add support for :last-child and :only-child</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>998035</commentid>
    <comment_count>1</comment_count>
      <attachid>228705</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-04-06 15:09:22 -0700</bug_when>
    <thetext>Created attachment 228705
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>998040</commentid>
    <comment_count>2</comment_count>
      <attachid>228705</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-04-06 16:46:21 -0700</bug_when>
    <thetext>Comment on attachment 228705
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>998061</commentid>
    <comment_count>3</comment_count>
      <attachid>228705</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-04-06 19:25:44 -0700</bug_when>
    <thetext>Comment on attachment 228705
Patch

Clearing flags on attachment: 228705

Committed r166862: &lt;http://trac.webkit.org/changeset/166862&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>998062</commentid>
    <comment_count>4</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-04-06 19:25:51 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>228705</attachid>
            <date>2014-04-06 15:09:22 -0700</date>
            <delta_ts>2014-04-06 19:25:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-131283-20140406150900.patch</filename>
            <type>text/plain</type>
            <size>20263</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY2ODQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTBjNzRkZTA1MTUwYjg0
N2ExMzVjZTYxMjU4MTA2NmNlNDdiZDg3Mi4uMDM1YmJkMDg0NWVhZDg2MTc4YjU0MThiNTFlMzNh
YTM5OTFmMjFlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDE0LTA0LTA2ICBCZW5q
YW1pbiBQb3VsYWluICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBDU1MgSklUOiBh
ZGQgc3VwcG9ydCBmb3IgOmxhc3QtY2hpbGQgYW5kIDpvbmx5LWNoaWxkCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzEyODMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGlzIHRoZSBzdHJhaWdodGZv
cndhcmQgaW1wbGVtZW50YXRpb24gb2YgOmxhc3QtY2hpbGQgYW5kIDpvbmx5LWNoaWxkLgorCisg
ICAgICAgIEJvdGggYXJlIGV4dHJlbWVseSBzaW1pbGFyIHRvIDpmaXJzdC1jaGlsZC4gVGhlcmUg
YXJlIG9ubHkgbWlub3IgZGlmZmVyZW5jZXM6CisgICAgICAgIC06bGFzdC1jaGlsZCBoYXMgYW4g
YWRkaXRpb25hbCBjaGVjayBmb3IgdGhlIGZsYWcgSXNQYXJzaW5nQ2hpbGRyZW5GaW5pc2hlZC4K
KyAgICAgICAgLTpvbmx5LWNoaWxkIGlzIGxpa2UgOmZpcnN0LWNoaWxkICsgOmxhc3QtY2hpbGQg
YnV0IHdpdGggY29tYmluZWQgbWFya2luZy4KKworICAgICAgICAqIGNzc2ppdC9TZWxlY3RvckNv
bXBpbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ29tcGlsZXI6OmFkZFBzZXVk
b1R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDb21waWxlcjo6U2VsZWN0b3JDb2Rl
R2VuZXJhdG9yOjpnZW5lcmF0ZVdhbGtUb05leHRBZGphY2VudEVsZW1lbnQpOgorICAgICAgICAo
V2ViQ29yZTo6U2VsZWN0b3JDb21waWxlcjo6U2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0
ZUVsZW1lbnRNYXRjaGluZyk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNvbXBpbGVyOjpT
ZWxlY3RvckNvZGVHZW5lcmF0b3I6Omp1bXBJZk5vUHJldmlvdXNBZGphY2VudEVsZW1lbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDb21waWxlcjo6U2VsZWN0b3JDb2RlR2VuZXJhdG9y
OjpnZW5lcmF0ZUVsZW1lbnRJc0ZpcnN0Q2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0
b3JDb21waWxlcjo6U2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpqdW1wSWZOb05leHRBZGphY2VudEVs
ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDb21waWxlcjo6bWFya0VsZW1lbnRX
aXRoU2V0Q2hpbGRyZW5BZmZlY3RlZEJ5TGFzdENoaWxkUnVsZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6U2VsZWN0b3JDb21waWxlcjo6c2V0TGFzdENoaWxkU3RhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6U2VsZWN0b3JDb21waWxlcjo6U2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZUVsZW1l
bnRJc0xhc3RDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNvbXBpbGVyOjptYXJr
RWxlbWVudFdpdGhTZXRDaGlsZHJlbkFmZmVjdGVkQnlGaXJzdENoaWxkQW5kTGFzdENoaWxkUnVs
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDb21waWxlcjo6c2V0T25seUNoaWxkU3Rh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDb21waWxlcjo6U2VsZWN0b3JDb2RlR2Vu
ZXJhdG9yOjpnZW5lcmF0ZUVsZW1lbnRJc09ubHlDaGlsZCk6CisgICAgICAgICogZG9tL05vZGUu
aDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6Om5leHRTaWJsaW5nTWVtb3J5T2Zmc2V0KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5vZGU6OmZsYWdJc1BhcnNpbmdDaGlsZHJlbkZpbmlzaGVkKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaDoKKyAgICAgICAgUmVtb3ZlZCB0
aGUgdW51c2VkIGZsYWdzLCBJIHdpbGwgYWRkIHRoZW0gYmFjayBsYXRlciBhcyBuZWVkZWQuCisK
IDIwMTQtMDQtMDUgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAg
ICAgUkVHUkVTU0lPTiAoTmV0d29ya1Byb2Nlc3MpOiBTdWJyZXNvdXJjZXMgZmFpbCB0byBsb2Fk
IGZyb20gQXBwQ2FjaGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzc2ppdC9TZWxlY3Rv
ckNvbXBpbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzc2ppdC9TZWxlY3RvckNvbXBpbGVyLmNw
cAppbmRleCA1N2JkZjI2MTAxYTIwZDQ1MjMwZDlmNTJmOTRkMjAxZDViMzVlY2U4Li4xNjgzNTkw
ZDQwMTQxZmY3MGMwMTgyYzJkY2E3ZjdmZTAxZDQzYTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3NqaXQvU2VsZWN0b3JDb21waWxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
aml0L1NlbGVjdG9yQ29tcGlsZXIuY3BwCkBAIC0xNTYsNiArMTU2LDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGdlbmVyYXRlUGFyZW50RWxlbWVudFRyZWVXYWxrZXIoQXNzZW1ibGVyOjpKdW1wTGlz
dCYgZmFpbHVyZUNhc2VzLCBjb25zdCBTZWxlY3RvckZyYWdtZW50Jik7CiAgICAgdm9pZCBnZW5l
cmF0ZUFuY2VzdG9yVHJlZVdhbGtlcihBc3NlbWJsZXI6Okp1bXBMaXN0JiBmYWlsdXJlQ2FzZXMs
IGNvbnN0IFNlbGVjdG9yRnJhZ21lbnQmKTsKIAorICAgIHZvaWQgZ2VuZXJhdGVXYWxrVG9OZXh0
QWRqYWNlbnRFbGVtZW50KEFzc2VtYmxlcjo6SnVtcExpc3QmIGZhaWx1cmVDYXNlcywgQXNzZW1i
bGVyOjpSZWdpc3RlcklEKTsKICAgICB2b2lkIGdlbmVyYXRlV2Fsa1RvUHJldmlvdXNBZGphY2Vu
dEVsZW1lbnQoQXNzZW1ibGVyOjpKdW1wTGlzdCYgZmFpbHVyZUNhc2VzLCBBc3NlbWJsZXI6OlJl
Z2lzdGVySUQpOwogICAgIHZvaWQgZ2VuZXJhdGVXYWxrVG9QcmV2aW91c0FkamFjZW50KEFzc2Vt
Ymxlcjo6SnVtcExpc3QmIGZhaWx1cmVDYXNlcywgY29uc3QgU2VsZWN0b3JGcmFnbWVudCYpOwog
ICAgIHZvaWQgZ2VuZXJhdGVEaXJlY3RBZGphY2VudFRyZWVXYWxrZXIoQXNzZW1ibGVyOjpKdW1w
TGlzdCYgZmFpbHVyZUNhc2VzLCBjb25zdCBTZWxlY3RvckZyYWdtZW50Jik7CkBAIC0xNzEsNyAr
MTcyLDExIEBAIHByaXZhdGU6CiAgICAgdm9pZCBnZW5lcmF0ZUVsZW1lbnRNYXRjaGluZyhBc3Nl
bWJsZXI6Okp1bXBMaXN0JiBmYWlsdXJlQ2FzZXMsIGNvbnN0IFNlbGVjdG9yRnJhZ21lbnQmKTsK
ICAgICB2b2lkIGdlbmVyYXRlRWxlbWVudERhdGFNYXRjaGluZyhBc3NlbWJsZXI6Okp1bXBMaXN0
JiBmYWlsdXJlQ2FzZXMsIGNvbnN0IFNlbGVjdG9yRnJhZ21lbnQmKTsKICAgICB2b2lkIGdlbmVy
YXRlRWxlbWVudEZ1bmN0aW9uQ2FsbFRlc3QoQXNzZW1ibGVyOjpKdW1wTGlzdCYgZmFpbHVyZUNh
c2VzLCBKU0M6OkZ1bmN0aW9uUHRyKTsKKyAgICBBc3NlbWJsZXI6Okp1bXBMaXN0IGp1bXBJZk5v
UHJldmlvdXNBZGphY2VudEVsZW1lbnQoKTsKICAgICB2b2lkIGdlbmVyYXRlRWxlbWVudElzRmly
c3RDaGlsZChBc3NlbWJsZXI6Okp1bXBMaXN0JiBmYWlsdXJlQ2FzZXMsIGNvbnN0IFNlbGVjdG9y
RnJhZ21lbnQmKTsKKyAgICBBc3NlbWJsZXI6Okp1bXBMaXN0IGp1bXBJZk5vTmV4dEFkamFjZW50
RWxlbWVudCgpOworICAgIHZvaWQgZ2VuZXJhdGVFbGVtZW50SXNMYXN0Q2hpbGQoQXNzZW1ibGVy
OjpKdW1wTGlzdCYgZmFpbHVyZUNhc2VzLCBjb25zdCBTZWxlY3RvckZyYWdtZW50Jik7CisgICAg
dm9pZCBnZW5lcmF0ZUVsZW1lbnRJc09ubHlDaGlsZChBc3NlbWJsZXI6Okp1bXBMaXN0JiBmYWls
dXJlQ2FzZXMsIGNvbnN0IFNlbGVjdG9yRnJhZ21lbnQmKTsKICAgICB2b2lkIGdlbmVyYXRlU3lu
Y2hyb25pemVTdHlsZUF0dHJpYnV0ZShBc3NlbWJsZXI6OlJlZ2lzdGVySUQgZWxlbWVudERhdGFB
cnJheVNpemVBbmRGbGFncyk7CiAgICAgdm9pZCBnZW5lcmF0ZVN5bmNocm9uaXplQWxsQW5pbWF0
ZWRTVkdBdHRyaWJ1dGUoQXNzZW1ibGVyOjpSZWdpc3RlcklEIGVsZW1lbnREYXRhQXJyYXlTaXpl
QW5kRmxhZ3MpOwogICAgIHZvaWQgZ2VuZXJhdGVFbGVtZW50QXR0cmlidXRlc01hdGNoaW5nKEFz
c2VtYmxlcjo6SnVtcExpc3QmIGZhaWx1cmVDYXNlcywgY29uc3QgTG9jYWxSZWdpc3RlciYgZWxl
bWVudERhdGFBZGRyZXNzLCBjb25zdCBTZWxlY3RvckZyYWdtZW50Jik7CkBAIC0zMTIsNiArMzE3
LDggQEAgc3RhdGljIGlubGluZSBGdW5jdGlvblR5cGUgYWRkUHNldWRvVHlwZShDU1NTZWxlY3Rv
cjo6UHNldWRvVHlwZSB0eXBlLCBTZWxlY3RvckYKICAgICAgICAgcmV0dXJuIEZ1bmN0aW9uVHlw
ZTo6U2ltcGxlU2VsZWN0b3JDaGVja2VyOwogCiAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRv
Rmlyc3RDaGlsZDoKKyAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9MYXN0Q2hpbGQ6CisgICAg
Y2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvT25seUNoaWxkOgogICAgICAgICBwc2V1ZG9DbGFzc2Vz
LnBzZXVkb0NsYXNzZXMuYWRkKHR5cGUpOwogICAgICAgICBpZiAoc2VsZWN0b3JDb250ZXh0ID09
IFNlbGVjdG9yQ29udGV4dDo6UXVlcnlTZWxlY3RvcikKICAgICAgICAgICAgIHJldHVybiBGdW5j
dGlvblR5cGU6OlNpbXBsZVNlbGVjdG9yQ2hlY2tlcjsKQEAgLTc5NCw2ICs4MDEsMTQgQEAgdm9p
ZCBTZWxlY3RvckNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlQW5jZXN0b3JUcmVlV2Fsa2VyKEFzc2Vt
Ymxlcjo6SnVtcExpc3QmIGZhaWwKICAgICB0YWdNYXRjaGluZ0xvY2FsRmFpbHVyZUNhc2VzLmxp
bmtUbyhsb29wU3RhcnQsICZtX2Fzc2VtYmxlcik7CiB9CiAKK2lubGluZSB2b2lkIFNlbGVjdG9y
Q29kZUdlbmVyYXRvcjo6Z2VuZXJhdGVXYWxrVG9OZXh0QWRqYWNlbnRFbGVtZW50KEFzc2VtYmxl
cjo6SnVtcExpc3QmIGZhaWx1cmVDYXNlcywgQXNzZW1ibGVyOjpSZWdpc3RlcklEIHdvcmtSZWdp
c3RlcikKK3sKKyAgICBBc3NlbWJsZXI6OkxhYmVsIGxvb3BTdGFydCA9IG1fYXNzZW1ibGVyLmxh
YmVsKCk7CisgICAgbV9hc3NlbWJsZXIubG9hZFB0cihBc3NlbWJsZXI6OkFkZHJlc3Mod29ya1Jl
Z2lzdGVyLCBOb2RlOjpuZXh0U2libGluZ01lbW9yeU9mZnNldCgpKSwgd29ya1JlZ2lzdGVyKTsK
KyAgICBmYWlsdXJlQ2FzZXMuYXBwZW5kKG1fYXNzZW1ibGVyLmJyYW5jaFRlc3RQdHIoQXNzZW1i
bGVyOjpaZXJvLCB3b3JrUmVnaXN0ZXIpKTsKKyAgICB0ZXN0SXNFbGVtZW50RmxhZ09uTm9kZShB
c3NlbWJsZXI6Olplcm8sIG1fYXNzZW1ibGVyLCB3b3JrUmVnaXN0ZXIpLmxpbmtUbyhsb29wU3Rh
cnQsICZtX2Fzc2VtYmxlcik7Cit9CisKIGlubGluZSB2b2lkIFNlbGVjdG9yQ29kZUdlbmVyYXRv
cjo6Z2VuZXJhdGVXYWxrVG9QcmV2aW91c0FkamFjZW50RWxlbWVudChBc3NlbWJsZXI6Okp1bXBM
aXN0JiBmYWlsdXJlQ2FzZXMsIEFzc2VtYmxlcjo6UmVnaXN0ZXJJRCB3b3JrUmVnaXN0ZXIpCiB7
CiAgICAgQXNzZW1ibGVyOjpMYWJlbCBsb29wU3RhcnQgPSBtX2Fzc2VtYmxlci5sYWJlbCgpOwpA
QCAtOTkzLDggKzEwMDgsMTIgQEAgdm9pZCBTZWxlY3RvckNvZGVHZW5lcmF0b3I6OmdlbmVyYXRl
RWxlbWVudE1hdGNoaW5nKEFzc2VtYmxlcjo6SnVtcExpc3QmIGZhaWx1cmUKIAogICAgIGdlbmVy
YXRlRWxlbWVudERhdGFNYXRjaGluZyhmYWlsdXJlQ2FzZXMsIGZyYWdtZW50KTsKIAorICAgIGlm
IChmcmFnbWVudC5wc2V1ZG9DbGFzc2VzLmNvbnRhaW5zKENTU1NlbGVjdG9yOjpQc2V1ZG9Pbmx5
Q2hpbGQpKQorICAgICAgICBnZW5lcmF0ZUVsZW1lbnRJc09ubHlDaGlsZChmYWlsdXJlQ2FzZXMs
IGZyYWdtZW50KTsKICAgICBpZiAoZnJhZ21lbnQucHNldWRvQ2xhc3Nlcy5jb250YWlucyhDU1NT
ZWxlY3Rvcjo6UHNldWRvRmlyc3RDaGlsZCkpCiAgICAgICAgIGdlbmVyYXRlRWxlbWVudElzRmly
c3RDaGlsZChmYWlsdXJlQ2FzZXMsIGZyYWdtZW50KTsKKyAgICBpZiAoZnJhZ21lbnQucHNldWRv
Q2xhc3Nlcy5jb250YWlucyhDU1NTZWxlY3Rvcjo6UHNldWRvTGFzdENoaWxkKSkKKyAgICAgICAg
Z2VuZXJhdGVFbGVtZW50SXNMYXN0Q2hpbGQoZmFpbHVyZUNhc2VzLCBmcmFnbWVudCk7CiB9CiAK
IHZvaWQgU2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZUVsZW1lbnREYXRhTWF0Y2hpbmco
QXNzZW1ibGVyOjpKdW1wTGlzdCYgZmFpbHVyZUNhc2VzLCBjb25zdCBTZWxlY3RvckZyYWdtZW50
JiBmcmFnbWVudCkKQEAgLTE0MTksMTMgKzE0MzgsMTkgQEAgc3RhdGljIHZvaWQgc2V0Rmlyc3RD
aGlsZFN0YXRlKEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgICAgIHN0eWxlLT5zZXRGaXJzdENoaWxk
U3RhdGUoKTsKIH0KIAoraW5saW5lIEFzc2VtYmxlcjo6SnVtcExpc3QgU2VsZWN0b3JDb2RlR2Vu
ZXJhdG9yOjpqdW1wSWZOb1ByZXZpb3VzQWRqYWNlbnRFbGVtZW50KCkKK3sKKyAgICBBc3NlbWJs
ZXI6Okp1bXBMaXN0IHN1Y2Nlc3NDYXNlOworICAgIExvY2FsUmVnaXN0ZXIgcHJldmlvdXNTaWJs
aW5nKG1fcmVnaXN0ZXJBbGxvY2F0b3IpOworICAgIG1fYXNzZW1ibGVyLm1vdmUoZWxlbWVudEFk
ZHJlc3NSZWdpc3RlciwgcHJldmlvdXNTaWJsaW5nKTsKKyAgICBnZW5lcmF0ZVdhbGtUb1ByZXZp
b3VzQWRqYWNlbnRFbGVtZW50KHN1Y2Nlc3NDYXNlLCBwcmV2aW91c1NpYmxpbmcpOworICAgIHJl
dHVybiBzdWNjZXNzQ2FzZTsKK30KKwogdm9pZCBTZWxlY3RvckNvZGVHZW5lcmF0b3I6OmdlbmVy
YXRlRWxlbWVudElzRmlyc3RDaGlsZChBc3NlbWJsZXI6Okp1bXBMaXN0JiBmYWlsdXJlQ2FzZXMs
IGNvbnN0IFNlbGVjdG9yRnJhZ21lbnQmIGZyYWdtZW50KQogewogICAgIGlmIChtX3NlbGVjdG9y
Q29udGV4dCA9PSBTZWxlY3RvckNvbnRleHQ6OlF1ZXJ5U2VsZWN0b3IpIHsKLSAgICAgICAgQXNz
ZW1ibGVyOjpKdW1wTGlzdCBzdWNjZXNzQ2FzZTsKLSAgICAgICAgTG9jYWxSZWdpc3RlciBwcmV2
aW91c1NpYmxpbmcobV9yZWdpc3RlckFsbG9jYXRvcik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLm1v
dmUoZWxlbWVudEFkZHJlc3NSZWdpc3RlciwgcHJldmlvdXNTaWJsaW5nKTsKLSAgICAgICAgZ2Vu
ZXJhdGVXYWxrVG9QcmV2aW91c0FkamFjZW50RWxlbWVudChzdWNjZXNzQ2FzZSwgcHJldmlvdXNT
aWJsaW5nKTsKKyAgICAgICAgQXNzZW1ibGVyOjpKdW1wTGlzdCBzdWNjZXNzQ2FzZSA9IGp1bXBJ
Zk5vUHJldmlvdXNBZGphY2VudEVsZW1lbnQoKTsKICAgICAgICAgZmFpbHVyZUNhc2VzLmFwcGVu
ZChtX2Fzc2VtYmxlci5qdW1wKCkpOwogICAgICAgICBzdWNjZXNzQ2FzZS5saW5rKCZtX2Fzc2Vt
Ymxlcik7CiAgICAgICAgIExvY2FsUmVnaXN0ZXIgcGFyZW50KG1fcmVnaXN0ZXJBbGxvY2F0b3Ip
OwpAQCAtMTQ0MSwxMCArMTQ2Niw3IEBAIHZvaWQgU2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5l
cmF0ZUVsZW1lbnRJc0ZpcnN0Q2hpbGQoQXNzZW1ibGVyOjpKdW1wTGlzdCYgZmFpCiAgICAgbV9h
c3NlbWJsZXIubW92ZShBc3NlbWJsZXI6OlRydXN0ZWRJbW0zMigwKSwgaXNGaXJzdENoaWxkUmVn
aXN0ZXIpOwogCiAgICAgewotICAgICAgICBBc3NlbWJsZXI6Okp1bXBMaXN0IHN1Y2Nlc3NDYXNl
OwotICAgICAgICBMb2NhbFJlZ2lzdGVyIHByZXZpb3VzU2libGluZyhtX3JlZ2lzdGVyQWxsb2Nh
dG9yKTsKLSAgICAgICAgbV9hc3NlbWJsZXIubW92ZShlbGVtZW50QWRkcmVzc1JlZ2lzdGVyLCBw
cmV2aW91c1NpYmxpbmcpOwotICAgICAgICBnZW5lcmF0ZVdhbGtUb1ByZXZpb3VzQWRqYWNlbnRF
bGVtZW50KHN1Y2Nlc3NDYXNlLCBwcmV2aW91c1NpYmxpbmcpOworICAgICAgICBBc3NlbWJsZXI6
Okp1bXBMaXN0IHN1Y2Nlc3NDYXNlID0ganVtcElmTm9QcmV2aW91c0FkamFjZW50RWxlbWVudCgp
OwogCiAgICAgICAgIC8vIElmIHRoZXJlIHdhcyBhIHNpYmxpbmcgZWxlbWVudCwgdGhlIGVsZW1l
bnQgd2FzIG5vdCB0aGUgZmlyc3QgY2hpbGQgLT4gZmFpbHVyZSBjYXNlLgogICAgICAgICBtX2Fz
c2VtYmxlci5tb3ZlKEFzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKDEpLCBpc0ZpcnN0Q2hpbGRSZWdp
c3Rlcik7CkBAIC0xNDg5LDYgKzE1MTEsMTkwIEBAIHZvaWQgU2VsZWN0b3JDb2RlR2VuZXJhdG9y
OjpnZW5lcmF0ZUVsZW1lbnRJc0ZpcnN0Q2hpbGQoQXNzZW1ibGVyOjpKdW1wTGlzdCYgZmFpCiAg
ICAgZmFpbHVyZUNhc2VzLmFwcGVuZChtX2Fzc2VtYmxlci5icmFuY2hUZXN0MzIoQXNzZW1ibGVy
OjpOb25aZXJvLCBpc0ZpcnN0Q2hpbGRSZWdpc3RlcikpOwogfQogCitBc3NlbWJsZXI6Okp1bXBM
aXN0IFNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6anVtcElmTm9OZXh0QWRqYWNlbnRFbGVtZW50KCkK
K3sKKyAgICBBc3NlbWJsZXI6Okp1bXBMaXN0IHN1Y2Nlc3NDYXNlOworICAgIExvY2FsUmVnaXN0
ZXIgbmV4dFNpYmxpbmcobV9yZWdpc3RlckFsbG9jYXRvcik7CisgICAgbV9hc3NlbWJsZXIubW92
ZShlbGVtZW50QWRkcmVzc1JlZ2lzdGVyLCBuZXh0U2libGluZyk7CisgICAgZ2VuZXJhdGVXYWxr
VG9OZXh0QWRqYWNlbnRFbGVtZW50KHN1Y2Nlc3NDYXNlLCBuZXh0U2libGluZyk7CisgICAgcmV0
dXJuIHN1Y2Nlc3NDYXNlOworfQorCitzdGF0aWMgdm9pZCBtYXJrRWxlbWVudFdpdGhTZXRDaGls
ZHJlbkFmZmVjdGVkQnlMYXN0Q2hpbGRSdWxlcyhFbGVtZW50ICplbGVtZW50KQoreworICAgIGVs
ZW1lbnQtPnNldENoaWxkcmVuQWZmZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzKCk7Cit9CisKK3N0YXRp
YyB2b2lkIHNldExhc3RDaGlsZFN0YXRlKEVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgaWYgKFJl
bmRlclN0eWxlKiBzdHlsZSA9IGVsZW1lbnQtPnJlbmRlclN0eWxlKCkpCisgICAgICAgIHN0eWxl
LT5zZXRMYXN0Q2hpbGRTdGF0ZSgpOworfQorCit2b2lkIFNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6
Z2VuZXJhdGVFbGVtZW50SXNMYXN0Q2hpbGQoQXNzZW1ibGVyOjpKdW1wTGlzdCYgZmFpbHVyZUNh
c2VzLCBjb25zdCBTZWxlY3RvckZyYWdtZW50JiBmcmFnbWVudCkKK3sKKyAgICBpZiAobV9zZWxl
Y3RvckNvbnRleHQgPT0gU2VsZWN0b3JDb250ZXh0OjpRdWVyeVNlbGVjdG9yKSB7CisgICAgICAg
IEFzc2VtYmxlcjo6SnVtcExpc3Qgc3VjY2Vzc0Nhc2UgPSBqdW1wSWZOb05leHRBZGphY2VudEVs
ZW1lbnQoKTsKKyAgICAgICAgZmFpbHVyZUNhc2VzLmFwcGVuZChtX2Fzc2VtYmxlci5qdW1wKCkp
OworCisgICAgICAgIHN1Y2Nlc3NDYXNlLmxpbmsoJm1fYXNzZW1ibGVyKTsKKyAgICAgICAgTG9j
YWxSZWdpc3RlciBwYXJlbnQobV9yZWdpc3RlckFsbG9jYXRvcik7CisgICAgICAgIGdlbmVyYXRl
V2Fsa1RvUGFyZW50RWxlbWVudChmYWlsdXJlQ2FzZXMsIHBhcmVudCk7CisKKyAgICAgICAgZmFp
bHVyZUNhc2VzLmFwcGVuZChtX2Fzc2VtYmxlci5icmFuY2hUZXN0MzIoQXNzZW1ibGVyOjpaZXJv
LCBBc3NlbWJsZXI6OkFkZHJlc3MocGFyZW50LCBOb2RlOjpub2RlRmxhZ3NNZW1vcnlPZmZzZXQo
KSksIEFzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKE5vZGU6OmZsYWdJc1BhcnNpbmdDaGlsZHJlbkZp
bmlzaGVkKCkpKSk7CisKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFzc2VtYmxlcjo6
UmVnaXN0ZXJJRCBwYXJlbnRFbGVtZW50ID0gbV9yZWdpc3RlckFsbG9jYXRvci5hbGxvY2F0ZVJl
Z2lzdGVyKCk7CisgICAgZ2VuZXJhdGVXYWxrVG9QYXJlbnRFbGVtZW50KGZhaWx1cmVDYXNlcywg
cGFyZW50RWxlbWVudCk7CisKKyAgICAvLyBaZXJvIGluIGlzTGFzdENoaWxkUmVnaXN0ZXIgaXMg
dGhlIHN1Y2Nlc3MgY2FzZS4gVGhlIHJlZ2lzdGVyIGlzIHNldCB0byBub24temVybyBpZiBhIHNp
YmxpbmcgaWYgZm91bmQuCisgICAgTG9jYWxSZWdpc3RlciBpc0xhc3RDaGlsZFJlZ2lzdGVyKG1f
cmVnaXN0ZXJBbGxvY2F0b3IpOworICAgIG1fYXNzZW1ibGVyLm1vdmUoQXNzZW1ibGVyOjpUcnVz
dGVkSW1tMzIoMCksIGlzTGFzdENoaWxkUmVnaXN0ZXIpOworCisgICAgeworICAgICAgICBBc3Nl
bWJsZXI6Okp1bXAgbm90RmluaXNoZWRQYXJzaW5nQ2hpbGRyZW4gPSBtX2Fzc2VtYmxlci5icmFu
Y2hUZXN0MzIoQXNzZW1ibGVyOjpaZXJvLCBBc3NlbWJsZXI6OkFkZHJlc3MocGFyZW50RWxlbWVu
dCwgTm9kZTo6bm9kZUZsYWdzTWVtb3J5T2Zmc2V0KCkpLCBBc3NlbWJsZXI6OlRydXN0ZWRJbW0z
MihOb2RlOjpmbGFnSXNQYXJzaW5nQ2hpbGRyZW5GaW5pc2hlZCgpKSk7CisKKyAgICAgICAgQXNz
ZW1ibGVyOjpKdW1wTGlzdCBzdWNjZXNzQ2FzZSA9IGp1bXBJZk5vTmV4dEFkamFjZW50RWxlbWVu
dCgpOworCisgICAgICAgIG5vdEZpbmlzaGVkUGFyc2luZ0NoaWxkcmVuLmxpbmsoJm1fYXNzZW1i
bGVyKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubW92ZShBc3NlbWJsZXI6OlRydXN0ZWRJbW0zMigx
KSwgaXNMYXN0Q2hpbGRSZWdpc3Rlcik7CisKKyAgICAgICAgc3VjY2Vzc0Nhc2UubGluaygmbV9h
c3NlbWJsZXIpOworICAgIH0KKworICAgIExvY2FsUmVnaXN0ZXIgY2hlY2tpbmdDb250ZXh0KG1f
cmVnaXN0ZXJBbGxvY2F0b3IpOworICAgIEFzc2VtYmxlcjo6SnVtcCBub3RSZXNvbHZpbmdTdHls
ZSA9IGp1bXBJZk5vdFJlc29sdmluZ1N0eWxlKGNoZWNraW5nQ29udGV4dCk7CisKKyAgICBtX3Jl
Z2lzdGVyQWxsb2NhdG9yLmRlYWxsb2NhdGVSZWdpc3RlcihwYXJlbnRFbGVtZW50KTsKKyAgICBG
dW5jdGlvbkNhbGwgZnVuY3Rpb25DYWxsKG1fYXNzZW1ibGVyLCBtX3JlZ2lzdGVyQWxsb2NhdG9y
LCBtX3N0YWNrQWxsb2NhdG9yLCBtX2Z1bmN0aW9uQ2FsbHMpOworICAgIGZ1bmN0aW9uQ2FsbC5z
ZXRGdW5jdGlvbkFkZHJlc3MobWFya0VsZW1lbnRXaXRoU2V0Q2hpbGRyZW5BZmZlY3RlZEJ5TGFz
dENoaWxkUnVsZXMpOworICAgIGZ1bmN0aW9uQ2FsbC5zZXRPbmVBcmd1bWVudChwYXJlbnRFbGVt
ZW50KTsKKyAgICBmdW5jdGlvbkNhbGwuY2FsbCgpOworCisgICAgLy8gVGhlIHBhcmVudCBtYXJr
aW5nIGlzIHVuY29uZGl0aW9uYWwuIElmIHRoZSBtYXRjaGluZyBpcyBub3QgYSBzdWNjZXNzLCB3
ZSBjYW4gbm93IGZhaWwuCisgICAgLy8gT3RoZXJ3aXNlIHdlIG5lZWQgdG8gYXBwbHkgc2V0TGFz
dENoaWxkU3RhdGUoKSBvbiB0aGUgUmVuZGVyU3R5bGUuCisgICAgZmFpbHVyZUNhc2VzLmFwcGVu
ZChtX2Fzc2VtYmxlci5icmFuY2hUZXN0MzIoQXNzZW1ibGVyOjpOb25aZXJvLCBpc0xhc3RDaGls
ZFJlZ2lzdGVyKSk7CisKKyAgICBpZiAoZnJhZ21lbnQucmVsYXRpb25Ub1JpZ2h0RnJhZ21lbnQg
PT0gRnJhZ21lbnRSZWxhdGlvbjo6UmlnaHRtb3N0KSB7CisgICAgICAgIExvY2FsUmVnaXN0ZXIg
Y2hpbGRTdHlsZShtX3JlZ2lzdGVyQWxsb2NhdG9yKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9h
ZFB0cihBc3NlbWJsZXI6OkFkZHJlc3MoY2hlY2tpbmdDb250ZXh0LCBPQkpFQ1RfT0ZGU0VUT0Yo
Q2hlY2tpbmdDb250ZXh0LCBlbGVtZW50U3R5bGUpKSwgY2hpbGRTdHlsZSk7CisKKyAgICAgICAg
Ly8gRklYTUU6IFdlIHNob3VsZCBsb29rIGludG8gZG9pbmcgc29tZXRoaW5nIHNtYXJ0IGluIE1h
Y3JvQXNzZW1ibGVyIGluc3RlYWQuCisgICAgICAgIExvY2FsUmVnaXN0ZXIgZmxhZ3MobV9yZWdp
c3RlckFsbG9jYXRvcik7CisgICAgICAgIEFzc2VtYmxlcjo6QWRkcmVzcyBmbGFnQWRkcmVzcyhj
aGlsZFN0eWxlLCBSZW5kZXJTdHlsZTo6bm9uaW5oZXJpdGVkRmxhZ3NNZW1vcnlPZmZzZXQoKSAr
IFJlbmRlclN0eWxlOjpOb25Jbmhlcml0ZWRGbGFnczo6ZmxhZ3NNZW1vcnlPZmZzZXQoKSk7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLmxvYWQ2NChmbGFnQWRkcmVzcywgZmxhZ3MpOworICAgICAgICBM
b2NhbFJlZ2lzdGVyIGlzTGFzdENoaWxkU3RhdGVGbGFnSW1tZWRpYXRlKG1fcmVnaXN0ZXJBbGxv
Y2F0b3IpOworICAgICAgICBtX2Fzc2VtYmxlci5tb3ZlKEFzc2VtYmxlcjo6VHJ1c3RlZEltbTY0
KFJlbmRlclN0eWxlOjpOb25Jbmhlcml0ZWRGbGFnczo6c2V0TGFzdENoaWxkU3RhdGVGbGFncygp
KSwgaXNMYXN0Q2hpbGRTdGF0ZUZsYWdJbW1lZGlhdGUpOworICAgICAgICBtX2Fzc2VtYmxlci5v
cjY0KGlzTGFzdENoaWxkU3RhdGVGbGFnSW1tZWRpYXRlLCBmbGFncyk7CisgICAgICAgIG1fYXNz
ZW1ibGVyLnN0b3JlNjQoZmxhZ3MsIGZsYWdBZGRyZXNzKTsKKyAgICB9IGVsc2UgeworICAgICAg
ICBGdW5jdGlvbkNhbGwgZnVuY3Rpb25DYWxsKG1fYXNzZW1ibGVyLCBtX3JlZ2lzdGVyQWxsb2Nh
dG9yLCBtX3N0YWNrQWxsb2NhdG9yLCBtX2Z1bmN0aW9uQ2FsbHMpOworICAgICAgICBmdW5jdGlv
bkNhbGwuc2V0RnVuY3Rpb25BZGRyZXNzKHNldExhc3RDaGlsZFN0YXRlKTsKKyAgICAgICAgQXNz
ZW1ibGVyOjpSZWdpc3RlcklEIGVsZW1lbnRBZGRyZXNzID0gZWxlbWVudEFkZHJlc3NSZWdpc3Rl
cjsKKyAgICAgICAgZnVuY3Rpb25DYWxsLnNldE9uZUFyZ3VtZW50KGVsZW1lbnRBZGRyZXNzKTsK
KyAgICAgICAgZnVuY3Rpb25DYWxsLmNhbGwoKTsKKyAgICB9CisKKyAgICBub3RSZXNvbHZpbmdT
dHlsZS5saW5rKCZtX2Fzc2VtYmxlcik7CisgICAgZmFpbHVyZUNhc2VzLmFwcGVuZChtX2Fzc2Vt
Ymxlci5icmFuY2hUZXN0MzIoQXNzZW1ibGVyOjpOb25aZXJvLCBpc0xhc3RDaGlsZFJlZ2lzdGVy
KSk7Cit9CisKK3N0YXRpYyB2b2lkIG1hcmtFbGVtZW50V2l0aFNldENoaWxkcmVuQWZmZWN0ZWRC
eUZpcnN0Q2hpbGRBbmRMYXN0Q2hpbGRSdWxlcyhFbGVtZW50ICplbGVtZW50KQoreworICAgIGVs
ZW1lbnQtPnNldENoaWxkcmVuQWZmZWN0ZWRCeUZpcnN0Q2hpbGRSdWxlcygpOworICAgIGVsZW1l
bnQtPnNldENoaWxkcmVuQWZmZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzKCk7Cit9CisKK3N0YXRpYyB2
b2lkIHNldE9ubHlDaGlsZFN0YXRlKEVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgaWYgKFJlbmRl
clN0eWxlKiBzdHlsZSA9IGVsZW1lbnQtPnJlbmRlclN0eWxlKCkpIHsKKyAgICAgICAgc3R5bGUt
PnNldEZpcnN0Q2hpbGRTdGF0ZSgpOworICAgICAgICBzdHlsZS0+c2V0TGFzdENoaWxkU3RhdGUo
KTsKKyAgICB9Cit9CisKK3ZvaWQgU2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZUVsZW1l
bnRJc09ubHlDaGlsZChBc3NlbWJsZXI6Okp1bXBMaXN0JiBmYWlsdXJlQ2FzZXMsIGNvbnN0IFNl
bGVjdG9yRnJhZ21lbnQmIGZyYWdtZW50KQoreworICAgIC8vIElzIE9ubHkgY2hpbGQgaXMgcHJl
dHR5IG11Y2ggYSBjb21iaW5hdGlvbiBvZiBpc0ZpcnN0Q2hpbGQgKyBpc0xhc3RDaGlsZC4gVGhl
IG1haW4gZGlmZmVyZW5jZSBpcyB0aGF0IHRyZWUgbWFya2luZyBpcyBjb21iaW5lZC4KKyAgICBp
ZiAobV9zZWxlY3RvckNvbnRleHQgPT0gU2VsZWN0b3JDb250ZXh0OjpRdWVyeVNlbGVjdG9yKSB7
CisgICAgICAgIEFzc2VtYmxlcjo6SnVtcExpc3QgcHJldmlvdXNTdWNjZXNzQ2FzZSA9IGp1bXBJ
Zk5vUHJldmlvdXNBZGphY2VudEVsZW1lbnQoKTsKKyAgICAgICAgZmFpbHVyZUNhc2VzLmFwcGVu
ZChtX2Fzc2VtYmxlci5qdW1wKCkpOworICAgICAgICBwcmV2aW91c1N1Y2Nlc3NDYXNlLmxpbmso
Jm1fYXNzZW1ibGVyKTsKKworICAgICAgICBBc3NlbWJsZXI6Okp1bXBMaXN0IG5leHRTdWNjZXNz
Q2FzZSA9IGp1bXBJZk5vTmV4dEFkamFjZW50RWxlbWVudCgpOworICAgICAgICBmYWlsdXJlQ2Fz
ZXMuYXBwZW5kKG1fYXNzZW1ibGVyLmp1bXAoKSk7CisgICAgICAgIG5leHRTdWNjZXNzQ2FzZS5s
aW5rKCZtX2Fzc2VtYmxlcik7CisKKyAgICAgICAgTG9jYWxSZWdpc3RlciBwYXJlbnQobV9yZWdp
c3RlckFsbG9jYXRvcik7CisgICAgICAgIGdlbmVyYXRlV2Fsa1RvUGFyZW50RWxlbWVudChmYWls
dXJlQ2FzZXMsIHBhcmVudCk7CisKKyAgICAgICAgZmFpbHVyZUNhc2VzLmFwcGVuZChtX2Fzc2Vt
Ymxlci5icmFuY2hUZXN0MzIoQXNzZW1ibGVyOjpaZXJvLCBBc3NlbWJsZXI6OkFkZHJlc3MocGFy
ZW50LCBOb2RlOjpub2RlRmxhZ3NNZW1vcnlPZmZzZXQoKSksIEFzc2VtYmxlcjo6VHJ1c3RlZElt
bTMyKE5vZGU6OmZsYWdJc1BhcnNpbmdDaGlsZHJlbkZpbmlzaGVkKCkpKSk7CisKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIEFzc2VtYmxlcjo6UmVnaXN0ZXJJRCBwYXJlbnRFbGVtZW50
ID0gbV9yZWdpc3RlckFsbG9jYXRvci5hbGxvY2F0ZVJlZ2lzdGVyKCk7CisgICAgZ2VuZXJhdGVX
YWxrVG9QYXJlbnRFbGVtZW50KGZhaWx1cmVDYXNlcywgcGFyZW50RWxlbWVudCk7CisKKyAgICAv
LyBaZXJvIGluIGlzT25seUNoaWxkUmVnaXN0ZXIgaXMgdGhlIHN1Y2Nlc3MgY2FzZS4gVGhlIHJl
Z2lzdGVyIGlzIHNldCB0byBub24temVybyBpZiBhIHNpYmxpbmcgaWYgZm91bmQuCisgICAgTG9j
YWxSZWdpc3RlciBpc09ubHlDaGlsZFJlZ2lzdGVyKG1fcmVnaXN0ZXJBbGxvY2F0b3IpOworICAg
IG1fYXNzZW1ibGVyLm1vdmUoQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoMCksIGlzT25seUNoaWxk
UmVnaXN0ZXIpOworCisgICAgeworICAgICAgICBBc3NlbWJsZXI6Okp1bXBMaXN0IGxvY2FsRmFp
bHVyZUNhc2VzOworICAgICAgICB7CisgICAgICAgICAgICBBc3NlbWJsZXI6Okp1bXBMaXN0IHN1
Y2Nlc3NDYXNlID0ganVtcElmTm9QcmV2aW91c0FkamFjZW50RWxlbWVudCgpOworICAgICAgICAg
ICAgbG9jYWxGYWlsdXJlQ2FzZXMuYXBwZW5kKG1fYXNzZW1ibGVyLmp1bXAoKSk7CisgICAgICAg
ICAgICBzdWNjZXNzQ2FzZS5saW5rKCZtX2Fzc2VtYmxlcik7CisgICAgICAgIH0KKyAgICAgICAg
bG9jYWxGYWlsdXJlQ2FzZXMuYXBwZW5kKG1fYXNzZW1ibGVyLmJyYW5jaFRlc3QzMihBc3NlbWJs
ZXI6Olplcm8sIEFzc2VtYmxlcjo6QWRkcmVzcyhwYXJlbnRFbGVtZW50LCBOb2RlOjpub2RlRmxh
Z3NNZW1vcnlPZmZzZXQoKSksIEFzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKE5vZGU6OmZsYWdJc1Bh
cnNpbmdDaGlsZHJlbkZpbmlzaGVkKCkpKSk7CisgICAgICAgIEFzc2VtYmxlcjo6SnVtcExpc3Qg
c3VjY2Vzc0Nhc2UgPSBqdW1wSWZOb05leHRBZGphY2VudEVsZW1lbnQoKTsKKworICAgICAgICBs
b2NhbEZhaWx1cmVDYXNlcy5saW5rKCZtX2Fzc2VtYmxlcik7CisgICAgICAgIG1fYXNzZW1ibGVy
Lm1vdmUoQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoMSksIGlzT25seUNoaWxkUmVnaXN0ZXIpOwor
CisgICAgICAgIHN1Y2Nlc3NDYXNlLmxpbmsoJm1fYXNzZW1ibGVyKTsKKyAgICB9CisKKyAgICBM
b2NhbFJlZ2lzdGVyIGNoZWNraW5nQ29udGV4dChtX3JlZ2lzdGVyQWxsb2NhdG9yKTsKKyAgICBB
c3NlbWJsZXI6Okp1bXAgbm90UmVzb2x2aW5nU3R5bGUgPSBqdW1wSWZOb3RSZXNvbHZpbmdTdHls
ZShjaGVja2luZ0NvbnRleHQpOworCisgICAgbV9yZWdpc3RlckFsbG9jYXRvci5kZWFsbG9jYXRl
UmVnaXN0ZXIocGFyZW50RWxlbWVudCk7CisgICAgRnVuY3Rpb25DYWxsIGZ1bmN0aW9uQ2FsbCht
X2Fzc2VtYmxlciwgbV9yZWdpc3RlckFsbG9jYXRvciwgbV9zdGFja0FsbG9jYXRvciwgbV9mdW5j
dGlvbkNhbGxzKTsKKyAgICBmdW5jdGlvbkNhbGwuc2V0RnVuY3Rpb25BZGRyZXNzKG1hcmtFbGVt
ZW50V2l0aFNldENoaWxkcmVuQWZmZWN0ZWRCeUZpcnN0Q2hpbGRBbmRMYXN0Q2hpbGRSdWxlcyk7
CisgICAgZnVuY3Rpb25DYWxsLnNldE9uZUFyZ3VtZW50KHBhcmVudEVsZW1lbnQpOworICAgIGZ1
bmN0aW9uQ2FsbC5jYWxsKCk7CisKKyAgICAvLyBUaGUgcGFyZW50IG1hcmtpbmcgaXMgdW5jb25k
aXRpb25hbC4gSWYgdGhlIG1hdGNoaW5nIGlzIG5vdCBhIHN1Y2Nlc3MsIHdlIGNhbiBub3cgZmFp
bC4KKyAgICAvLyBPdGhlcndpc2Ugd2UgbmVlZCB0byBhcHBseSBzZXRMYXN0Q2hpbGRTdGF0ZSgp
IG9uIHRoZSBSZW5kZXJTdHlsZS4KKyAgICBmYWlsdXJlQ2FzZXMuYXBwZW5kKG1fYXNzZW1ibGVy
LmJyYW5jaFRlc3QzMihBc3NlbWJsZXI6Ok5vblplcm8sIGlzT25seUNoaWxkUmVnaXN0ZXIpKTsK
KworICAgIGlmIChmcmFnbWVudC5yZWxhdGlvblRvUmlnaHRGcmFnbWVudCA9PSBGcmFnbWVudFJl
bGF0aW9uOjpSaWdodG1vc3QpIHsKKyAgICAgICAgTG9jYWxSZWdpc3RlciBjaGlsZFN0eWxlKG1f
cmVnaXN0ZXJBbGxvY2F0b3IpOworICAgICAgICBtX2Fzc2VtYmxlci5sb2FkUHRyKEFzc2VtYmxl
cjo6QWRkcmVzcyhjaGVja2luZ0NvbnRleHQsIE9CSkVDVF9PRkZTRVRPRihDaGVja2luZ0NvbnRl
eHQsIGVsZW1lbnRTdHlsZSkpLCBjaGlsZFN0eWxlKTsKKworICAgICAgICAvLyBGSVhNRTogV2Ug
c2hvdWxkIGxvb2sgaW50byBkb2luZyBzb21ldGhpbmcgc21hcnQgaW4gTWFjcm9Bc3NlbWJsZXIg
aW5zdGVhZC4KKyAgICAgICAgTG9jYWxSZWdpc3RlciBmbGFncyhtX3JlZ2lzdGVyQWxsb2NhdG9y
KTsKKyAgICAgICAgQXNzZW1ibGVyOjpBZGRyZXNzIGZsYWdBZGRyZXNzKGNoaWxkU3R5bGUsIFJl
bmRlclN0eWxlOjpub25pbmhlcml0ZWRGbGFnc01lbW9yeU9mZnNldCgpICsgUmVuZGVyU3R5bGU6
Ok5vbkluaGVyaXRlZEZsYWdzOjpmbGFnc01lbW9yeU9mZnNldCgpKTsKKyAgICAgICAgbV9hc3Nl
bWJsZXIubG9hZDY0KGZsYWdBZGRyZXNzLCBmbGFncyk7CisgICAgICAgIExvY2FsUmVnaXN0ZXIg
aXNMYXN0Q2hpbGRTdGF0ZUZsYWdJbW1lZGlhdGUobV9yZWdpc3RlckFsbG9jYXRvcik7CisgICAg
ICAgIG1fYXNzZW1ibGVyLm1vdmUoQXNzZW1ibGVyOjpUcnVzdGVkSW1tNjQoUmVuZGVyU3R5bGU6
Ok5vbkluaGVyaXRlZEZsYWdzOjpzZXRGaXJzdENoaWxkU3RhdGVGbGFncygpIHwgUmVuZGVyU3R5
bGU6Ok5vbkluaGVyaXRlZEZsYWdzOjpzZXRMYXN0Q2hpbGRTdGF0ZUZsYWdzKCkpLCBpc0xhc3RD
aGlsZFN0YXRlRmxhZ0ltbWVkaWF0ZSk7CisgICAgICAgIG1fYXNzZW1ibGVyLm9yNjQoaXNMYXN0
Q2hpbGRTdGF0ZUZsYWdJbW1lZGlhdGUsIGZsYWdzKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3Rv
cmU2NChmbGFncywgZmxhZ0FkZHJlc3MpOworICAgIH0gZWxzZSB7CisgICAgICAgIEZ1bmN0aW9u
Q2FsbCBmdW5jdGlvbkNhbGwobV9hc3NlbWJsZXIsIG1fcmVnaXN0ZXJBbGxvY2F0b3IsIG1fc3Rh
Y2tBbGxvY2F0b3IsIG1fZnVuY3Rpb25DYWxscyk7CisgICAgICAgIGZ1bmN0aW9uQ2FsbC5zZXRG
dW5jdGlvbkFkZHJlc3Moc2V0T25seUNoaWxkU3RhdGUpOworICAgICAgICBBc3NlbWJsZXI6OlJl
Z2lzdGVySUQgZWxlbWVudEFkZHJlc3MgPSBlbGVtZW50QWRkcmVzc1JlZ2lzdGVyOworICAgICAg
ICBmdW5jdGlvbkNhbGwuc2V0T25lQXJndW1lbnQoZWxlbWVudEFkZHJlc3MpOworICAgICAgICBm
dW5jdGlvbkNhbGwuY2FsbCgpOworICAgIH0KKworICAgIG5vdFJlc29sdmluZ1N0eWxlLmxpbmso
Jm1fYXNzZW1ibGVyKTsKKyAgICBmYWlsdXJlQ2FzZXMuYXBwZW5kKG1fYXNzZW1ibGVyLmJyYW5j
aFRlc3QzMihBc3NlbWJsZXI6Ok5vblplcm8sIGlzT25seUNoaWxkUmVnaXN0ZXIpKTsKK30KKwog
aW5saW5lIHZvaWQgU2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZUVsZW1lbnRIYXNUYWdO
YW1lKEFzc2VtYmxlcjo6SnVtcExpc3QmIGZhaWx1cmVDYXNlcywgY29uc3QgUXVhbGlmaWVkTmFt
ZSYgbmFtZVRvTWF0Y2gpCiB7CiAgICAgaWYgKG5hbWVUb01hdGNoID09IGFueVFOYW1lKCkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L05vZGUuaAppbmRleCA4NWFiNDg3ZTQwNTYzMmI0ZDE1YTczODcwMjE0YTY1NmJkZDdiODk3Li44
NTkzZTZhZTRkNTM4NGQ4ZTJjOWYzMGE0YzJiZDJmN2MxMWM1MWQ4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAg
LTE3NSw2ICsxNzUsNyBAQCBwdWJsaWM6CiAgICAgTm9kZSogcHJldmlvdXNTaWJsaW5nKCkgY29u
c3QgeyByZXR1cm4gbV9wcmV2aW91czsgfQogICAgIHN0YXRpYyBwdHJkaWZmX3QgcHJldmlvdXNT
aWJsaW5nTWVtb3J5T2Zmc2V0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKE5vZGUsIG1fcHJl
dmlvdXMpOyB9CiAgICAgTm9kZSogbmV4dFNpYmxpbmcoKSBjb25zdCB7IHJldHVybiBtX25leHQ7
IH0KKyAgICBzdGF0aWMgcHRyZGlmZl90IG5leHRTaWJsaW5nTWVtb3J5T2Zmc2V0KCkgeyByZXR1
cm4gT0JKRUNUX09GRlNFVE9GKE5vZGUsIG1fbmV4dCk7IH0KICAgICBQYXNzUmVmUHRyPE5vZGVM
aXN0PiBjaGlsZE5vZGVzKCk7CiAgICAgTm9kZSogZmlyc3RDaGlsZCgpIGNvbnN0OwogICAgIE5v
ZGUqIGxhc3RDaGlsZCgpIGNvbnN0OwpAQCAtNTczLDYgKzU3NCw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgaW50MzJfdCBmbGFnSXNFbGVtZW50KCkgeyByZXR1cm4gSXNFbGVtZW50RmxhZzsgfQog
ICAgIHN0YXRpYyBpbnQzMl90IGZsYWdJc0hUTUwoKSB7IHJldHVybiBJc0hUTUxGbGFnOyB9CiAg
ICAgc3RhdGljIGludDMyX3QgZmxhZ0lzTGluaygpIHsgcmV0dXJuIElzTGlua0ZsYWc7IH0KKyAg
ICBzdGF0aWMgaW50MzJfdCBmbGFnSXNQYXJzaW5nQ2hpbGRyZW5GaW5pc2hlZCgpIHsgcmV0dXJu
IElzUGFyc2luZ0NoaWxkcmVuRmluaXNoZWRGbGFnOyB9CiAjZW5kaWYgLy8gRU5BQkxFKENTU19T
RUxFQ1RPUl9KSVQpCiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1JlbmRlclN0eWxlLmgKaW5kZXggNWJkMmI5NDFkZTBhOWU1NWIyYjFjNjY3NzA1MDk2ZjA4
NmQ0OWY3ZC4uYjIwZGMyYTZlMWJjYjZiMmU3MWFjNzQ2YmQ2NTQ2NmQwMGJjOTk0NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKQEAgLTI3OCwxMiAr
Mjc4LDggQEAgcHVibGljOgogICAgICAgICBzdGF0aWMgRVRhYmxlTGF5b3V0IGluaXRpYWxUYWJs
ZUxheW91dCgpIHsgcmV0dXJuIFRBVVRPOyB9CiAKICAgICAgICAgc3RhdGljIHB0cmRpZmZfdCBm
bGFnc01lbW9yeU9mZnNldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihOb25Jbmhlcml0ZWRG
bGFncywgbV9mbGFncyk7IH0KLSAgICAgICAgc3RhdGljIHVpbnQ2NF90IGZsYWdFbXB0eVN0YXRl
KCkgeyByZXR1cm4gb25lQml0TWFzayA8PCBlbXB0eVN0YXRlT2Zmc2V0OyB9CiAgICAgICAgIHN0
YXRpYyB1aW50NjRfdCBzZXRGaXJzdENoaWxkU3RhdGVGbGFncygpIHsgcmV0dXJuIGZsYWdGaXJz
dENoaWxkU3RhdGUoKSB8IGZsYWdJc1VuaXF1ZSgpOyB9Ci0gICAgICAgIHN0YXRpYyB1aW50NjRf
dCBmbGFnTGFzdENoaWxkU3RhdGUoKSB7IHJldHVybiBvbmVCaXRNYXNrIDw8IGxhc3RDaGlsZFN0
YXRlT2Zmc2V0OyB9Ci0gICAgICAgIHN0YXRpYyB1aW50NjRfdCBmbGFnQWZmZWN0ZWRCeUhvdmVy
KCkgeyByZXR1cm4gb25lQml0TWFzayA8PCBhZmZlY3RlZEJ5SG92ZXJPZmZzZXQ7IH0KLSAgICAg
ICAgc3RhdGljIHVpbnQ2NF90IGZsYWdBZmZlY3RlZEJ5QWN0aXZlKCkgeyByZXR1cm4gb25lQml0
TWFzayA8PCBhZmZlY3RlZEJ5QWN0aXZlT2Zmc2V0OyB9Ci0gICAgICAgIHN0YXRpYyB1aW50NjRf
dCBmbGFnQWZmZWN0ZWRCeURyYWcoKSB7IHJldHVybiBvbmVCaXRNYXNrIDw8IGFmZmVjdGVkQnlE
cmFnT2Zmc2V0OyB9CisgICAgICAgIHN0YXRpYyB1aW50NjRfdCBzZXRMYXN0Q2hpbGRTdGF0ZUZs
YWdzKCkgeyByZXR1cm4gZmxhZ0xhc3RDaGlsZFN0YXRlKCkgfCBmbGFnSXNVbmlxdWUoKTsgfQog
ICAgIHByaXZhdGU6CiAgICAgICAgIHZvaWQgdXBkYXRlQm9vbGVhbihib29sIGlzU2V0LCB1aW50
NjRfdCBvZmZzZXQpCiAgICAgICAgIHsKQEAgLTMxMiw2ICszMDgsNyBAQCBwdWJsaWM6CiAKICAg
ICAgICAgc3RhdGljIHVpbnQ2NF90IGZsYWdJc1VuaXF1ZSgpIHsgcmV0dXJuIG9uZUJpdE1hc2sg
PDwgaXNVbmlxdWVPZmZzZXQ7IH0KICAgICAgICAgc3RhdGljIHVpbnQ2NF90IGZsYWdGaXJzdENo
aWxkU3RhdGUoKSB7IHJldHVybiBvbmVCaXRNYXNrIDw8IGZpcnN0Q2hpbGRTdGF0ZU9mZnNldDsg
fQorICAgICAgICBzdGF0aWMgdWludDY0X3QgZmxhZ0xhc3RDaGlsZFN0YXRlKCkgeyByZXR1cm4g
b25lQml0TWFzayA8PCBsYXN0Q2hpbGRTdGF0ZU9mZnNldDsgfQogCiAgICAgICAgIC8vIFRvIHR5
cGUgdGhlIGJpdCBtYXNrIHByb3Blcmx5IG9uIDY0Yml0cy4KICAgICAgICAgc3RhdGljIGNvbnN0
IHVpbnQ2NF90IG9uZUJpdE1hc2sgPSAweDE7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>