<?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>136902</bug_id>
          
          <creation_ts>2014-09-17 18:00:33 -0700</creation_ts>
          <short_desc>Have LiveNodeLists / HTMLCollections&apos;s elementMatches() take a reference</short_desc>
          <delta_ts>2014-09-18 10:19:33 -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>DOM</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="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1035803</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-09-17 18:00:33 -0700</bug_when>
    <thetext>Have LiveNodeLists / HTMLCollections&apos;s elementMatches() take a const reference instead of a pointer. The Element argument can never be null.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1035804</commentid>
    <comment_count>1</comment_count>
      <attachid>238276</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-09-17 18:10:07 -0700</bug_when>
    <thetext>Created attachment 238276
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1035937</commentid>
    <comment_count>2</comment_count>
      <attachid>238276</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-09-18 09:28:13 -0700</bug_when>
    <thetext>Comment on attachment 238276
Patch

Seems fine. The choice of when to use const and when not to seems a little random, but everything in the patch seems to make things better, not worse.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1035939</commentid>
    <comment_count>3</comment_count>
      <attachid>238276</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-09-18 09:32:50 -0700</bug_when>
    <thetext>Comment on attachment 238276
Patch

Clearing flags on attachment: 238276

Committed r173723: &lt;http://trac.webkit.org/changeset/173723&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1035940</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-09-18 09:32:54 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1035949</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-09-18 10:19:33 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 238276 [details])
&gt; Seems fine. The choice of when to use const and when not to seems a little random, but everything in the patch seems to make things better, not worse.

I made the argument const when possible, that is, everywhere except for the virtual elementMatches() because some of the implementation calls non-const getters on the Element.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238276</attachid>
            <date>2014-09-17 18:10:07 -0700</date>
            <delta_ts>2014-09-18 09:32:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-136902-20140917181003.patch</filename>
            <type>text/plain</type>
            <size>26472</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTczNzA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODNlY2UxZTNjZTgyNjg4
ZDRlYjFlOWRmNTFmZjkwMTcxMTM3ZmIxYy4uMzY2Y2YyN2NhMzlmMjVhYzA4ZjI1ZjgwYTIzNjk0
Y2JlNWZjY2UxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDE0LTA5LTE3ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgSGF2ZSBMaXZlTm9kZUxpc3Rz
IC8gSFRNTENvbGxlY3Rpb25zJ3MgZWxlbWVudE1hdGNoZXMoKSB0YWtlIGEgcmVmZXJlbmNlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzY5MDIKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBIYXZlIExpdmVO
b2RlTGlzdHMgLyBIVE1MQ29sbGVjdGlvbnMncyBlbGVtZW50TWF0Y2hlcygpIHRha2UgYSByZWZl
cmVuY2UKKyAgICAgICAgaW4gYXJndW1lbnQgaW5zdGVhZCBvZiBhIHBvaW50ZXIgYXMgdGhlIEVs
ZW1lbnQgY2FuIG5ldmVyIGJlIG51bGwuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBiZWhh
dmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBkb20vQ2xhc3NOb2RlTGlzdC5oOgorICAgICAgICAo
V2ViQ29yZTo6Q2xhc3NOb2RlTGlzdDo6ZWxlbWVudE1hdGNoZXMpOgorICAgICAgICAqIGRvbS9E
b2N1bWVudE9yZGVyZWRNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6a2V5TWF0Y2hlc1dpbmRv
d05hbWVkSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjprZXlNYXRjaGVzRG9jdW1lbnROYW1lZEl0
ZW0pOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1l
bnQ6OnVwZGF0ZU5hbWVGb3JEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojp1
cGRhdGVJZEZvckRvY3VtZW50KToKKyAgICAgICAgKiBkb20vTGl2ZU5vZGVMaXN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkxpdmVOb2RlTGlzdDo6bmFtZWRJdGVtKToKKyAgICAgICAgKiBkb20v
TGl2ZU5vZGVMaXN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRMaXZlTm9kZUxpc3Q8Tm9k
ZUxpc3RUeXBlPjo6Y29sbGVjdGlvbkJlZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZExp
dmVOb2RlTGlzdDxOb2RlTGlzdFR5cGU+Ojpjb2xsZWN0aW9uTGFzdCk6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRMaXZlTm9kZUxpc3Q8Tm9kZUxpc3RUeXBlPjo6Y29sbGVjdGlvblRyYXZlcnNl
Rm9yd2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRMaXZlTm9kZUxpc3Q8Tm9kZUxpc3RU
eXBlPjo6Y29sbGVjdGlvblRyYXZlcnNlQmFja3dhcmQpOgorICAgICAgICAqIGRvbS9OYW1lTm9k
ZUxpc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hbWVOb2RlTGlzdDo6ZWxlbWVudE1hdGNoZXMp
OgorICAgICAgICAqIGRvbS9UYWdOb2RlTGlzdC5oOgorICAgICAgICAoV2ViQ29yZTo6VGFnTm9k
ZUxpc3Q6OmVsZW1lbnRNYXRjaGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUYWdOb2RlTGlz
dDo6ZWxlbWVudE1hdGNoZXMpOgorICAgICAgICAqIGh0bWwvSFRNTENvbGxlY3Rpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6aXNNYXRjaGluZ0VsZW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRN
TE5hbWVDb2xsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldpbmRvd05hbWVDb2xsZWN0
aW9uOjplbGVtZW50TWF0Y2hlc0lmTmFtZUF0dHJpYnV0ZU1hdGNoKToKKyAgICAgICAgKFdlYkNv
cmU6OldpbmRvd05hbWVDb2xsZWN0aW9uOjplbGVtZW50TWF0Y2hlcyk6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudE5hbWVDb2xsZWN0aW9uOjplbGVtZW50TWF0Y2hlc0lmSWRBdHRyaWJ1dGVN
YXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudE5hbWVDb2xsZWN0aW9uOjplbGVtZW50
TWF0Y2hlc0lmTmFtZUF0dHJpYnV0ZU1hdGNoKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
TmFtZUNvbGxlY3Rpb246OmVsZW1lbnRNYXRjaGVzKToKKyAgICAgICAgKiBodG1sL0hUTUxOYW1l
Q29sbGVjdGlvbi5oOgorICAgICAgICAqIGh0bWwvTGFiZWxzTm9kZUxpc3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TGFiZWxzTm9kZUxpc3Q6OmVsZW1lbnRNYXRjaGVzKToKKyAgICAgICAgKiBo
dG1sL0xhYmVsc05vZGVMaXN0Lmg6CisgICAgICAgICogaHRtbC9SYWRpb05vZGVMaXN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJhZGlvTm9kZUxpc3Q6OmNoZWNrRWxlbWVudE1hdGNoZXNSYWRp
b05vZGVMaXN0RmlsdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJhZGlvTm9kZUxpc3Q6OmVsZW1l
bnRNYXRjaGVzKToKKyAgICAgICAgKiBodG1sL1JhZGlvTm9kZUxpc3QuaDoKKwogMjAxNC0wOS0x
NyAgUm9nZXIgRm9uZyAgPHJvZ2VyX2ZvbmdAYXBwbGUuY29tPgogCiAgICAgICAgIFNwZWN1bGF0
aXZlIGZpeCBmb3IgYSBmYXN0XGRvbVxodG1sLWNvbGxlY3Rpb25zLW5hbWVkLWdldHRlciBmYWls
aW5nIG9ubHkgaW4gRGVidWcgYnVpbGRzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0NsYXNzTm9kZUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DbGFzc05vZGVMaXN0LmgKaW5k
ZXggZGY5ZTkwMDcwM2JjNWNkZjYwMmI5ZmYwZGUyYmQwNGNjOWQxMTU0OS4uOTMzMjYyMzAwMzdi
MTIzNjliZGU2Y2I2NmUyMDZjMDY2MGU3MDlmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0NsYXNzTm9kZUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2xhc3NOb2RlTGlz
dC5oCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfkNsYXNzTm9kZUxp
c3QoKTsKIAotICAgIHZpcnR1YWwgYm9vbCBlbGVtZW50TWF0Y2hlcyhFbGVtZW50KikgY29uc3Qg
b3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIGVsZW1lbnRNYXRjaGVzKEVsZW1lbnQmKSBjb25z
dCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgaXNSb290ZWRBdERvY3VtZW50KCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KIAogcHJpdmF0ZToKQEAgLTYwLDE3ICs2MCwxNyBA
QCBpbmxpbmUgQ2xhc3NOb2RlTGlzdDo6Q2xhc3NOb2RlTGlzdChDb250YWluZXJOb2RlJiByb290
Tm9kZSwgY29uc3QgQXRvbWljU3RyaW5nJgogewogfQogCi1pbmxpbmUgYm9vbCBDbGFzc05vZGVM
aXN0OjplbGVtZW50TWF0Y2hlcyhFbGVtZW50KiBlbGVtZW50KSBjb25zdAoraW5saW5lIGJvb2wg
Q2xhc3NOb2RlTGlzdDo6ZWxlbWVudE1hdGNoZXMoRWxlbWVudCYgZWxlbWVudCkgY29uc3QKIHsK
LSAgICBpZiAoIWVsZW1lbnQtPmhhc0NsYXNzKCkpCisgICAgaWYgKCFlbGVtZW50Lmhhc0NsYXNz
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIW1fY2xhc3NOYW1lcy5zaXplKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAvLyBGSVhNRTogRE9NNCBhbGxvd3MgZ2V0RWxl
bWVudHNCeUNsYXNzTmFtZSB0byByZXR1cm4gbm9uIFN0eWxlZEVsZW1lbnQuCiAgICAgLy8gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk0NzE4Ci0gICAgaWYgKCFlbGVt
ZW50LT5pc1N0eWxlZEVsZW1lbnQoKSkKKyAgICBpZiAoIWVsZW1lbnQuaXNTdHlsZWRFbGVtZW50
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gZWxlbWVudC0+Y2xhc3NOYW1l
cygpLmNvbnRhaW5zQWxsKG1fY2xhc3NOYW1lcyk7CisgICAgcmV0dXJuIGVsZW1lbnQuY2xhc3NO
YW1lcygpLmNvbnRhaW5zQWxsKG1fY2xhc3NOYW1lcyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE9yZGVyZWRNYXAu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50T3JkZXJlZE1hcC5jcHAKaW5kZXggOTg3
NDM2MThhZDJkMTI3ZDFkZWI4MWU0OWRlOGZhYjBmODYxZmM4Yi4uODQ0OGY5NDgwMjkxOWIzZWRl
YmVkNmVjM2E0YmU3ZWNhMWY5YjQwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50T3JkZXJlZE1hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50T3Jk
ZXJlZE1hcC5jcHAKQEAgLTc0LDEyICs3NCwxMiBAQCBpbmxpbmUgYm9vbCBrZXlNYXRjaGVzTGFi
ZWxGb3JBdHRyaWJ1dGUoY29uc3QgQXRvbWljU3RyaW5nSW1wbCYga2V5LCBjb25zdCBFbGVtZQog
CiBpbmxpbmUgYm9vbCBrZXlNYXRjaGVzV2luZG93TmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmlu
Z0ltcGwmIGtleSwgY29uc3QgRWxlbWVudCYgZWxlbWVudCkKIHsKLSAgICByZXR1cm4gV2luZG93
TmFtZUNvbGxlY3Rpb246OmVsZW1lbnRNYXRjaGVzKGNvbnN0X2Nhc3Q8RWxlbWVudCo+KCZlbGVt
ZW50KSwgJmtleSk7CisgICAgcmV0dXJuIFdpbmRvd05hbWVDb2xsZWN0aW9uOjplbGVtZW50TWF0
Y2hlcyhlbGVtZW50LCAma2V5KTsKIH0KIAogaW5saW5lIGJvb2wga2V5TWF0Y2hlc0RvY3VtZW50
TmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZ0ltcGwmIGtleSwgY29uc3QgRWxlbWVudCYgZWxl
bWVudCkKIHsKLSAgICByZXR1cm4gRG9jdW1lbnROYW1lQ29sbGVjdGlvbjo6ZWxlbWVudE1hdGNo
ZXMoY29uc3RfY2FzdDxFbGVtZW50Kj4oJmVsZW1lbnQpLCAma2V5KTsKKyAgICByZXR1cm4gRG9j
dW1lbnROYW1lQ29sbGVjdGlvbjo6ZWxlbWVudE1hdGNoZXMoZWxlbWVudCwgJmtleSk7CiB9CiAK
IHZvaWQgRG9jdW1lbnRPcmRlcmVkTWFwOjpjbGVhcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5k
ZXggYjUxZDA4NjUwMmM4Y2U5NzFiMTE4MDdjY2NjZTBmZjA5Y2RhMzZiNS4uODNhY2M5MzMzMTlk
MjIxOGIzMTIzZTM4OGIzMGZlZDEwNGIyMmZlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAt
MjYwNiwxNiArMjYwNiwxNiBAQCB2b2lkIEVsZW1lbnQ6OnVwZGF0ZU5hbWVGb3JEb2N1bWVudChI
VE1MRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBBdG9taWNTdHJpbmcmCiB7CiAgICAgQVNTRVJU
KG9sZE5hbWUgIT0gbmV3TmFtZSk7CiAKLSAgICBpZiAoV2luZG93TmFtZUNvbGxlY3Rpb246OmVs
ZW1lbnRNYXRjaGVzSWZOYW1lQXR0cmlidXRlTWF0Y2godGhpcykpIHsKLSAgICAgICAgY29uc3Qg
QXRvbWljU3RyaW5nJiBpZCA9IFdpbmRvd05hbWVDb2xsZWN0aW9uOjplbGVtZW50TWF0Y2hlc0lm
SWRBdHRyaWJ1dGVNYXRjaCh0aGlzKSA/IGdldElkQXR0cmlidXRlKCkgOiBudWxsQXRvbTsKKyAg
ICBpZiAoV2luZG93TmFtZUNvbGxlY3Rpb246OmVsZW1lbnRNYXRjaGVzSWZOYW1lQXR0cmlidXRl
TWF0Y2goKnRoaXMpKSB7CisgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgaWQgPSBXaW5kb3dO
YW1lQ29sbGVjdGlvbjo6ZWxlbWVudE1hdGNoZXNJZklkQXR0cmlidXRlTWF0Y2goKnRoaXMpID8g
Z2V0SWRBdHRyaWJ1dGUoKSA6IG51bGxBdG9tOwogICAgICAgICBpZiAoIW9sZE5hbWUuaXNFbXB0
eSgpICYmIG9sZE5hbWUgIT0gaWQpCiAgICAgICAgICAgICBkb2N1bWVudC5yZW1vdmVXaW5kb3dO
YW1lZEl0ZW0oKm9sZE5hbWUuaW1wbCgpLCAqdGhpcyk7CiAgICAgICAgIGlmICghbmV3TmFtZS5p
c0VtcHR5KCkgJiYgbmV3TmFtZSAhPSBpZCkKICAgICAgICAgICAgIGRvY3VtZW50LmFkZFdpbmRv
d05hbWVkSXRlbSgqbmV3TmFtZS5pbXBsKCksICp0aGlzKTsKICAgICB9CiAKLSAgICBpZiAoRG9j
dW1lbnROYW1lQ29sbGVjdGlvbjo6ZWxlbWVudE1hdGNoZXNJZk5hbWVBdHRyaWJ1dGVNYXRjaCh0
aGlzKSkgewotICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGlkID0gRG9jdW1lbnROYW1lQ29s
bGVjdGlvbjo6ZWxlbWVudE1hdGNoZXNJZklkQXR0cmlidXRlTWF0Y2godGhpcykgPyBnZXRJZEF0
dHJpYnV0ZSgpIDogbnVsbEF0b207CisgICAgaWYgKERvY3VtZW50TmFtZUNvbGxlY3Rpb246OmVs
ZW1lbnRNYXRjaGVzSWZOYW1lQXR0cmlidXRlTWF0Y2goKnRoaXMpKSB7CisgICAgICAgIGNvbnN0
IEF0b21pY1N0cmluZyYgaWQgPSBEb2N1bWVudE5hbWVDb2xsZWN0aW9uOjplbGVtZW50TWF0Y2hl
c0lmSWRBdHRyaWJ1dGVNYXRjaCgqdGhpcykgPyBnZXRJZEF0dHJpYnV0ZSgpIDogbnVsbEF0b207
CiAgICAgICAgIGlmICghb2xkTmFtZS5pc0VtcHR5KCkgJiYgb2xkTmFtZSAhPSBpZCkKICAgICAg
ICAgICAgIGRvY3VtZW50LnJlbW92ZURvY3VtZW50TmFtZWRJdGVtKCpvbGROYW1lLmltcGwoKSwg
KnRoaXMpOwogICAgICAgICBpZiAoIW5ld05hbWUuaXNFbXB0eSgpICYmIG5ld05hbWUgIT0gaWQp
CkBAIC0yNjU2LDE2ICsyNjU2LDE2IEBAIHZvaWQgRWxlbWVudDo6dXBkYXRlSWRGb3JEb2N1bWVu
dChIVE1MRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBBdG9taWNTdHJpbmcmIG9sCiAgICAgQVNT
RVJUKGluRG9jdW1lbnQoKSk7CiAgICAgQVNTRVJUKG9sZElkICE9IG5ld0lkKTsKIAotICAgIGlm
IChXaW5kb3dOYW1lQ29sbGVjdGlvbjo6ZWxlbWVudE1hdGNoZXNJZklkQXR0cmlidXRlTWF0Y2go
dGhpcykpIHsKLSAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lID0gY29uZGl0aW9uID09
IFVwZGF0ZUhUTUxEb2N1bWVudE5hbWVkSXRlbU1hcHNPbmx5SWZEaWZmZXJzRnJvbU5hbWVBdHRy
aWJ1dGUgJiYgV2luZG93TmFtZUNvbGxlY3Rpb246OmVsZW1lbnRNYXRjaGVzSWZOYW1lQXR0cmli
dXRlTWF0Y2godGhpcykgPyBnZXROYW1lQXR0cmlidXRlKCkgOiBudWxsQXRvbTsKKyAgICBpZiAo
V2luZG93TmFtZUNvbGxlY3Rpb246OmVsZW1lbnRNYXRjaGVzSWZJZEF0dHJpYnV0ZU1hdGNoKCp0
aGlzKSkgeworICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUgPSBjb25kaXRpb24gPT0g
VXBkYXRlSFRNTERvY3VtZW50TmFtZWRJdGVtTWFwc09ubHlJZkRpZmZlcnNGcm9tTmFtZUF0dHJp
YnV0ZSAmJiBXaW5kb3dOYW1lQ29sbGVjdGlvbjo6ZWxlbWVudE1hdGNoZXNJZk5hbWVBdHRyaWJ1
dGVNYXRjaCgqdGhpcykgPyBnZXROYW1lQXR0cmlidXRlKCkgOiBudWxsQXRvbTsKICAgICAgICAg
aWYgKCFvbGRJZC5pc0VtcHR5KCkgJiYgb2xkSWQgIT0gbmFtZSkKICAgICAgICAgICAgIGRvY3Vt
ZW50LnJlbW92ZVdpbmRvd05hbWVkSXRlbSgqb2xkSWQuaW1wbCgpLCAqdGhpcyk7CiAgICAgICAg
IGlmICghbmV3SWQuaXNFbXB0eSgpICYmIG5ld0lkICE9IG5hbWUpCiAgICAgICAgICAgICBkb2N1
bWVudC5hZGRXaW5kb3dOYW1lZEl0ZW0oKm5ld0lkLmltcGwoKSwgKnRoaXMpOwogICAgIH0KIAot
ICAgIGlmIChEb2N1bWVudE5hbWVDb2xsZWN0aW9uOjplbGVtZW50TWF0Y2hlc0lmSWRBdHRyaWJ1
dGVNYXRjaCh0aGlzKSkgewotICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUgPSBjb25k
aXRpb24gPT0gVXBkYXRlSFRNTERvY3VtZW50TmFtZWRJdGVtTWFwc09ubHlJZkRpZmZlcnNGcm9t
TmFtZUF0dHJpYnV0ZSAmJiBEb2N1bWVudE5hbWVDb2xsZWN0aW9uOjplbGVtZW50TWF0Y2hlc0lm
TmFtZUF0dHJpYnV0ZU1hdGNoKHRoaXMpID8gZ2V0TmFtZUF0dHJpYnV0ZSgpIDogbnVsbEF0b207
CisgICAgaWYgKERvY3VtZW50TmFtZUNvbGxlY3Rpb246OmVsZW1lbnRNYXRjaGVzSWZJZEF0dHJp
YnV0ZU1hdGNoKCp0aGlzKSkgeworICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUgPSBj
b25kaXRpb24gPT0gVXBkYXRlSFRNTERvY3VtZW50TmFtZWRJdGVtTWFwc09ubHlJZkRpZmZlcnNG
cm9tTmFtZUF0dHJpYnV0ZSAmJiBEb2N1bWVudE5hbWVDb2xsZWN0aW9uOjplbGVtZW50TWF0Y2hl
c0lmTmFtZUF0dHJpYnV0ZU1hdGNoKCp0aGlzKSA/IGdldE5hbWVBdHRyaWJ1dGUoKSA6IG51bGxB
dG9tOwogICAgICAgICBpZiAoIW9sZElkLmlzRW1wdHkoKSAmJiBvbGRJZCAhPSBuYW1lKQogICAg
ICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRG9jdW1lbnROYW1lZEl0ZW0oKm9sZElkLmltcGwoKSwg
KnRoaXMpOwogICAgICAgICBpZiAoIW5ld0lkLmlzRW1wdHkoKSAmJiBuZXdJZCAhPSBuYW1lKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0xpdmVOb2RlTGlzdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vTGl2ZU5vZGVMaXN0LmNwcAppbmRleCBmOTMxZDExMDM0NDNkYjMwYTdmYmFk
MmQ3YTRhOWMzMzYyMTYwZmJiLi40ZjhhNDVjNmE5MzkxOTczYWEzOTNkOTNhNTQxZDdmMzA0ZTY1
ZmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTGl2ZU5vZGVMaXN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTGl2ZU5vZGVMaXN0LmNwcApAQCAtNTgsNyArNTgsNyBAQCBO
b2RlKiBMaXZlTm9kZUxpc3Q6Om5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmIGVsZW1lbnRJ
ZCkgY29uc3QKIAogICAgIGlmIChyb290Tm9kZS5pbkRvY3VtZW50KCkpIHsKICAgICAgICAgRWxl
bWVudCogZWxlbWVudCA9IHJvb3ROb2RlLnRyZWVTY29wZSgpLmdldEVsZW1lbnRCeUlkKGVsZW1l
bnRJZCk7Ci0gICAgICAgIGlmIChlbGVtZW50ICYmIGVsZW1lbnRNYXRjaGVzKGVsZW1lbnQpICYm
IGVsZW1lbnQtPmlzRGVzY2VuZGFudE9mKCZyb290Tm9kZSkpCisgICAgICAgIGlmIChlbGVtZW50
ICYmIGVsZW1lbnRNYXRjaGVzKCplbGVtZW50KSAmJiBlbGVtZW50LT5pc0Rlc2NlbmRhbnRPZigm
cm9vdE5vZGUpKQogICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CiAgICAgICAgIGlmICghZWxl
bWVudCkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0xpdmVOb2RlTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0xpdmVOb2RlTGlz
dC5oCmluZGV4IGZkM2EwN2Y4YjdlZTdiM2VjNTM5N2Y4YjBmN2M3MzFlMzJhYWJiMjQuLmJjNTI5
ODdhNWY2ZmFjNmRlOGUyOGQ1YjM3Mzc2ZDQ0NmEyYTY1MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9MaXZlTm9kZUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTGl2ZU5v
ZGVMaXN0LmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBOb2RlKiBu
YW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJikgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CiAKLSAg
ICB2aXJ0dWFsIGJvb2wgZWxlbWVudE1hdGNoZXMoRWxlbWVudCopIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIGJvb2wgZWxlbWVudE1hdGNoZXMoRWxlbWVudCYpIGNvbnN0ID0gMDsKICAgICB2aXJ0
dWFsIGJvb2wgaXNSb290ZWRBdERvY3VtZW50KCkgY29uc3QgPSAwOwogCiAgICAgQUxXQVlTX0lO
TElORSBOb2RlTGlzdEludmFsaWRhdGlvblR5cGUgaW52YWxpZGF0aW9uVHlwZSgpIGNvbnN0IHsg
cmV0dXJuIHN0YXRpY19jYXN0PE5vZGVMaXN0SW52YWxpZGF0aW9uVHlwZT4obV9pbnZhbGlkYXRp
b25UeXBlKTsgfQpAQCAtMTU5LDcgKzE1OSw3IEBAIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3Ig
Q2FjaGVkTGl2ZU5vZGVMaXN0PE5vZGVMaXN0VHlwZT46OmNvbGxlY3Rpb25CZWdpbigpIGNvCiAg
ICAgYXV0byBkZXNjZW5kYW50cyA9IGVsZW1lbnREZXNjZW5kYW50cyhyb290Tm9kZSgpKTsKICAg
ICBhdXRvIGVuZCA9IGRlc2NlbmRhbnRzLmVuZCgpOwogICAgIGZvciAoYXV0byBpdCA9IGRlc2Nl
bmRhbnRzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBpZiAobm9kZUxpc3Qu
ZWxlbWVudE1hdGNoZXMoJippdCkpCisgICAgICAgIGlmIChub2RlTGlzdC5lbGVtZW50TWF0Y2hl
cygqaXQpKQogICAgICAgICAgICAgcmV0dXJuIGl0OwogICAgIH0KICAgICByZXR1cm4gZW5kOwpA
QCAtMTcyLDcgKzE3Miw3IEBAIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IgQ2FjaGVkTGl2ZU5v
ZGVMaXN0PE5vZGVMaXN0VHlwZT46OmNvbGxlY3Rpb25MYXN0KCkgY29uCiAgICAgYXV0byBkZXNj
ZW5kYW50cyA9IGVsZW1lbnREZXNjZW5kYW50cyhyb290Tm9kZSgpKTsKICAgICBhdXRvIGVuZCA9
IGRlc2NlbmRhbnRzLmVuZCgpOwogICAgIGZvciAoYXV0byBpdCA9IGRlc2NlbmRhbnRzLmxhc3Qo
KTsgaXQgIT0gZW5kOyAtLWl0KSB7Ci0gICAgICAgIGlmIChub2RlTGlzdC5lbGVtZW50TWF0Y2hl
cygmKml0KSkKKyAgICAgICAgaWYgKG5vZGVMaXN0LmVsZW1lbnRNYXRjaGVzKCppdCkpCiAgICAg
ICAgICAgICByZXR1cm4gaXQ7CiAgICAgfQogICAgIHJldHVybiBlbmQ7CkBAIC0xODIsMTQgKzE4
MiwxNCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgTm9kZUxpc3RUeXBlPgogdm9pZCBDYWNoZWRMaXZlTm9k
ZUxpc3Q8Tm9kZUxpc3RUeXBlPjo6Y29sbGVjdGlvblRyYXZlcnNlRm9yd2FyZChFbGVtZW50RGVz
Y2VuZGFudEl0ZXJhdG9yJiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCwgdW5zaWduZWQmIHRyYXZl
cnNlZENvdW50KSBjb25zdAogewogICAgIGF1dG8mIG5vZGVMaXN0ID0gc3RhdGljX2Nhc3Q8Y29u
c3QgTm9kZUxpc3RUeXBlJj4oKnRoaXMpOwotICAgIEFTU0VSVChub2RlTGlzdC5lbGVtZW50TWF0
Y2hlcygmKmN1cnJlbnQpKTsKKyAgICBBU1NFUlQobm9kZUxpc3QuZWxlbWVudE1hdGNoZXMoKmN1
cnJlbnQpKTsKICAgICBhdXRvIGVuZCA9IGNvbGxlY3Rpb25FbmQoKTsKICAgICBmb3IgKHRyYXZl
cnNlZENvdW50ID0gMDsgdHJhdmVyc2VkQ291bnQgPCBjb3VudDsgKyt0cmF2ZXJzZWRDb3VudCkg
ewogICAgICAgICBkbyB7CiAgICAgICAgICAgICArK2N1cnJlbnQ7CiAgICAgICAgICAgICBpZiAo
Y3VycmVudCA9PSBlbmQpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9IHdoaWxl
ICghbm9kZUxpc3QuZWxlbWVudE1hdGNoZXMoJipjdXJyZW50KSk7CisgICAgICAgIH0gd2hpbGUg
KCFub2RlTGlzdC5lbGVtZW50TWF0Y2hlcygqY3VycmVudCkpOwogICAgIH0KIH0KIApAQCAtMTk3
LDE0ICsxOTcsMTQgQEAgdGVtcGxhdGUgPGNsYXNzIE5vZGVMaXN0VHlwZT4KIHZvaWQgQ2FjaGVk
TGl2ZU5vZGVMaXN0PE5vZGVMaXN0VHlwZT46OmNvbGxlY3Rpb25UcmF2ZXJzZUJhY2t3YXJkKEVs
ZW1lbnREZXNjZW5kYW50SXRlcmF0b3ImIGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50KSBjb25zdAog
ewogICAgIGF1dG8mIG5vZGVMaXN0ID0gc3RhdGljX2Nhc3Q8Y29uc3QgTm9kZUxpc3RUeXBlJj4o
KnRoaXMpOwotICAgIEFTU0VSVChub2RlTGlzdC5lbGVtZW50TWF0Y2hlcygmKmN1cnJlbnQpKTsK
KyAgICBBU1NFUlQobm9kZUxpc3QuZWxlbWVudE1hdGNoZXMoKmN1cnJlbnQpKTsKICAgICBhdXRv
IGVuZCA9IGNvbGxlY3Rpb25FbmQoKTsKICAgICBmb3IgKDsgY291bnQ7IC0tY291bnQpIHsKICAg
ICAgICAgZG8gewogICAgICAgICAgICAgLS1jdXJyZW50OwogICAgICAgICAgICAgaWYgKGN1cnJl
bnQgPT0gZW5kKQogICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfSB3aGlsZSAoIW5v
ZGVMaXN0LmVsZW1lbnRNYXRjaGVzKCYqY3VycmVudCkpOworICAgICAgICB9IHdoaWxlICghbm9k
ZUxpc3QuZWxlbWVudE1hdGNoZXMoKmN1cnJlbnQpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9OYW1lTm9kZUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9O
YW1lTm9kZUxpc3QuaAppbmRleCBmYjdlMzcyZTY0YmIzODUwNWNiNjYzY2FhMmY0YzViZDAzYjEx
NzJmLi4yMGRmMjJhNGRiMmMzZWM5MmZlMzAzNDI2MDI5MzA4ZWRhODVmMTYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTmFtZU5vZGVMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL05hbWVOb2RlTGlzdC5oCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1
YWwgfk5hbWVOb2RlTGlzdCgpOwogCi0gICAgdmlydHVhbCBib29sIGVsZW1lbnRNYXRjaGVzKEVs
ZW1lbnQqKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgZWxlbWVudE1hdGNoZXMo
RWxlbWVudCYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBpc1Jvb3RlZEF0RG9j
dW1lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCiBwcml2YXRlOgpAQCAt
NDksOSArNDksOSBAQCBwcml2YXRlOgogICAgIEF0b21pY1N0cmluZyBtX25hbWU7CiB9OwogCi1p
bmxpbmUgYm9vbCBOYW1lTm9kZUxpc3Q6OmVsZW1lbnRNYXRjaGVzKEVsZW1lbnQqIGVsZW1lbnQp
IGNvbnN0CitpbmxpbmUgYm9vbCBOYW1lTm9kZUxpc3Q6OmVsZW1lbnRNYXRjaGVzKEVsZW1lbnQm
IGVsZW1lbnQpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGVsZW1lbnQtPmdldE5hbWVBdHRyaWJ1dGUo
KSA9PSBtX25hbWU7CisgICAgcmV0dXJuIGVsZW1lbnQuZ2V0TmFtZUF0dHJpYnV0ZSgpID09IG1f
bmFtZTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL1RhZ05vZGVMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGFnTm9kZUxpc3Qu
aAppbmRleCA5OTdiMGQ3ZDAyYjBiYWQxOWQ3NTEzNjU1MGYwYWFkZGZjNmY2ZTJlLi5iOTE4NTE2
NmEwNmY1Y2UzNjYxYTIwNGJmMTYwMmNjMWQxNjI0Mzc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vVGFnTm9kZUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGFnTm9kZUxp
c3QuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5UYWdOb2RlTGlz
dCgpOwogCi0gICAgdmlydHVhbCBib29sIGVsZW1lbnRNYXRjaGVzKEVsZW1lbnQqKSBjb25zdCBv
dmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgZWxlbWVudE1hdGNoZXMoRWxlbWVudCYpIGNvbnN0
IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBpc1Jvb3RlZEF0RG9jdW1lbnQoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCiBwcm90ZWN0ZWQ6CkBAIC01NiwxMyArNTYsMTMg
QEAgcHJvdGVjdGVkOgogICAgIEF0b21pY1N0cmluZyBtX2xvY2FsTmFtZTsKIH07CiAKLWlubGlu
ZSBib29sIFRhZ05vZGVMaXN0OjplbGVtZW50TWF0Y2hlcyhFbGVtZW50KiBlbGVtZW50KSBjb25z
dAoraW5saW5lIGJvb2wgVGFnTm9kZUxpc3Q6OmVsZW1lbnRNYXRjaGVzKEVsZW1lbnQmIGVsZW1l
bnQpIGNvbnN0CiB7CiAgICAgLy8gSW1wbGVtZW50cyBodHRwOi8vZHZjcy53My5vcmcvaGcvZG9t
Y29yZS9yYXctZmlsZS90aXAvT3ZlcnZpZXcuaHRtbCNjb25jZXB0LWdldGVsZW1lbnRzYnl0YWdu
YW1lbnMKLSAgICBpZiAobV9sb2NhbE5hbWUgIT0gc3RhckF0b20gJiYgbV9sb2NhbE5hbWUgIT0g
ZWxlbWVudC0+bG9jYWxOYW1lKCkpCisgICAgaWYgKG1fbG9jYWxOYW1lICE9IHN0YXJBdG9tICYm
IG1fbG9jYWxOYW1lICE9IGVsZW1lbnQubG9jYWxOYW1lKCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIHJldHVybiBtX25hbWVzcGFjZVVSSSA9PSBzdGFyQXRvbSB8fCBtX25hbWVzcGFj
ZVVSSSA9PSBlbGVtZW50LT5uYW1lc3BhY2VVUkkoKTsKKyAgICByZXR1cm4gbV9uYW1lc3BhY2VV
UkkgPT0gc3RhckF0b20gfHwgbV9uYW1lc3BhY2VVUkkgPT0gZWxlbWVudC5uYW1lc3BhY2VVUkko
KTsKIH0KIAogY2xhc3MgSFRNTFRhZ05vZGVMaXN0IGZpbmFsIDogcHVibGljIENhY2hlZExpdmVO
b2RlTGlzdDxIVE1MVGFnTm9kZUxpc3Q+IHsKQEAgLTc0LDcgKzc0LDcgQEAgcHVibGljOgogCiAg
ICAgdmlydHVhbCB+SFRNTFRhZ05vZGVMaXN0KCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgZWxlbWVu
dE1hdGNoZXMoRWxlbWVudCopIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCBlbGVt
ZW50TWF0Y2hlcyhFbGVtZW50JikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGlz
Um9vdGVkQXREb2N1bWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAKIHBy
aXZhdGU6CkBAIC04NCwxMyArODQsMTMgQEAgcHJpdmF0ZToKICAgICBBdG9taWNTdHJpbmcgbV9s
b3dlcmVkTG9jYWxOYW1lOwogfTsKIAotaW5saW5lIGJvb2wgSFRNTFRhZ05vZGVMaXN0OjplbGVt
ZW50TWF0Y2hlcyhFbGVtZW50KiBlbGVtZW50KSBjb25zdAoraW5saW5lIGJvb2wgSFRNTFRhZ05v
ZGVMaXN0OjplbGVtZW50TWF0Y2hlcyhFbGVtZW50JiBlbGVtZW50KSBjb25zdAogewogICAgIC8v
IEltcGxlbWVudHMgaHR0cDovL2R2Y3MudzMub3JnL2hnL2RvbWNvcmUvcmF3LWZpbGUvdGlwL092
ZXJ2aWV3Lmh0bWwjY29uY2VwdC1nZXRlbGVtZW50c2J5dGFnbmFtZQogICAgIGlmIChtX2xvY2Fs
TmFtZSA9PSBzdGFyQXRvbSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgY29uc3QgQXRvbWlj
U3RyaW5nJiBsb2NhbE5hbWUgPSBlbGVtZW50LT5pc0hUTUxFbGVtZW50KCkgPyBtX2xvd2VyZWRM
b2NhbE5hbWUgOiBtX2xvY2FsTmFtZTsKLSAgICByZXR1cm4gbG9jYWxOYW1lID09IGVsZW1lbnQt
PmxvY2FsTmFtZSgpOworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lID0gZWxlbWVu
dC5pc0hUTUxFbGVtZW50KCkgPyBtX2xvd2VyZWRMb2NhbE5hbWUgOiBtX2xvY2FsTmFtZTsKKyAg
ICByZXR1cm4gbG9jYWxOYW1lID09IGVsZW1lbnQubG9jYWxOYW1lKCk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxl
Y3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHAKaW5kZXgg
MjUxMWVhNDFkMDE4ZDk0MjQ2ZDhkMjE2ZGRiMmQ5MmZkYWI4YWEzMi4uMzMyN2FiYmIzYWI5YmYy
NWRjYmFmZGFmYTdlOTM1YThhY2RlYWNmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQ29sbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVj
dGlvbi5jcHAKQEAgLTIxMyw5ICsyMTMsOSBAQCBpbmxpbmUgYm9vbCBpc01hdGNoaW5nRWxlbWVu
dChjb25zdCBIVE1MQ29sbGVjdGlvbiYgaHRtbENvbGxlY3Rpb24sIEVsZW1lbnQmIGVsZQogICAg
IGNhc2UgTm9kZUNoaWxkcmVuOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBjYXNlIERvY3Vt
ZW50TmFtZWRJdGVtczoKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IERvY3VtZW50
TmFtZUNvbGxlY3Rpb24mPihodG1sQ29sbGVjdGlvbikuZWxlbWVudE1hdGNoZXMoJmVsZW1lbnQp
OworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgRG9jdW1lbnROYW1lQ29sbGVjdGlv
biY+KGh0bWxDb2xsZWN0aW9uKS5lbGVtZW50TWF0Y2hlcyhlbGVtZW50KTsKICAgICBjYXNlIFdp
bmRvd05hbWVkSXRlbXM6Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBXaW5kb3dO
YW1lQ29sbGVjdGlvbiY+KGh0bWxDb2xsZWN0aW9uKS5lbGVtZW50TWF0Y2hlcygmZWxlbWVudCk7
CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBXaW5kb3dOYW1lQ29sbGVjdGlvbiY+
KGh0bWxDb2xsZWN0aW9uKS5lbGVtZW50TWF0Y2hlcyhlbGVtZW50KTsKICAgICBjYXNlIEZvcm1D
b250cm9sczoKICAgICBjYXNlIFRhYmxlUm93czoKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxOYW1lQ29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxOYW1lQ29sbGVjdGlvbi5jcHAKaW5kZXggMDQ0ZmRlYmFhOTllNzhmYWVm
NDVmZjk5N2Y3NzM0OTJmYzZiODNhYS4uNjYwMTc0NjBiY2FlMjkzYTVlNDYyZDdhYjg2N2QxMDkz
YWI1NTlkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTmFtZUNvbGxlY3Rp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE5hbWVDb2xsZWN0aW9uLmNwcApA
QCAtNDksNDYgKzQ5LDQ2IEBAIEhUTUxOYW1lQ29sbGVjdGlvbjo6fkhUTUxOYW1lQ29sbGVjdGlv
bigpCiAgICAgZG9jdW1lbnQoKS5ub2RlTGlzdHMoKS0+cmVtb3ZlQ2FjaGVkQ29sbGVjdGlvbih0
aGlzLCBtX25hbWUpOwogfQogCi1ib29sIFdpbmRvd05hbWVDb2xsZWN0aW9uOjplbGVtZW50TWF0
Y2hlc0lmTmFtZUF0dHJpYnV0ZU1hdGNoKEVsZW1lbnQqIGVsZW1lbnQpCitib29sIFdpbmRvd05h
bWVDb2xsZWN0aW9uOjplbGVtZW50TWF0Y2hlc0lmTmFtZUF0dHJpYnV0ZU1hdGNoKGNvbnN0IEVs
ZW1lbnQmIGVsZW1lbnQpCiB7Ci0gICAgcmV0dXJuIGlzSFRNTEltYWdlRWxlbWVudChlbGVtZW50
KSB8fCBpc0hUTUxGb3JtRWxlbWVudChlbGVtZW50KSB8fCBlbGVtZW50LT5oYXNUYWdOYW1lKGFw
cGxldFRhZykKLSAgICAgICAgfHwgZWxlbWVudC0+aGFzVGFnTmFtZShlbWJlZFRhZykgfHwgZWxl
bWVudC0+aGFzVGFnTmFtZShvYmplY3RUYWcpOworICAgIHJldHVybiBpc0hUTUxJbWFnZUVsZW1l
bnQoZWxlbWVudCkgfHwgaXNIVE1MRm9ybUVsZW1lbnQoZWxlbWVudCkgfHwgZWxlbWVudC5oYXNU
YWdOYW1lKGFwcGxldFRhZykKKyAgICAgICAgfHwgZWxlbWVudC5oYXNUYWdOYW1lKGVtYmVkVGFn
KSB8fCBlbGVtZW50Lmhhc1RhZ05hbWUob2JqZWN0VGFnKTsKIH0KIAotYm9vbCBXaW5kb3dOYW1l
Q29sbGVjdGlvbjo6ZWxlbWVudE1hdGNoZXMoRWxlbWVudCogZWxlbWVudCwgY29uc3QgQXRvbWlj
U3RyaW5nSW1wbCogbmFtZSkKK2Jvb2wgV2luZG93TmFtZUNvbGxlY3Rpb246OmVsZW1lbnRNYXRj
aGVzKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZ0ltcGwqIG5hbWUp
CiB7CiAgICAgLy8gRmluZCBvbmx5IGltYWdlcywgZm9ybXMsIGFwcGxldHMsIGVtYmVkcyBhbmQg
b2JqZWN0cyBieSBuYW1lLCBidXQgYW55dGhpbmcgYnkgaWQKLSAgICBpZiAoZWxlbWVudE1hdGNo
ZXNJZk5hbWVBdHRyaWJ1dGVNYXRjaChlbGVtZW50KSAmJiBlbGVtZW50LT5nZXROYW1lQXR0cmli
dXRlKCkuaW1wbCgpID09IG5hbWUpCisgICAgaWYgKGVsZW1lbnRNYXRjaGVzSWZOYW1lQXR0cmli
dXRlTWF0Y2goZWxlbWVudCkgJiYgZWxlbWVudC5nZXROYW1lQXR0cmlidXRlKCkuaW1wbCgpID09
IG5hbWUpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIHJldHVybiBlbGVtZW50LT5nZXRJZEF0
dHJpYnV0ZSgpLmltcGwoKSA9PSBuYW1lOworICAgIHJldHVybiBlbGVtZW50LmdldElkQXR0cmli
dXRlKCkuaW1wbCgpID09IG5hbWU7CiB9CiAKLWJvb2wgRG9jdW1lbnROYW1lQ29sbGVjdGlvbjo6
ZWxlbWVudE1hdGNoZXNJZklkQXR0cmlidXRlTWF0Y2goRWxlbWVudCogZWxlbWVudCkKK2Jvb2wg
RG9jdW1lbnROYW1lQ29sbGVjdGlvbjo6ZWxlbWVudE1hdGNoZXNJZklkQXR0cmlidXRlTWF0Y2go
Y29uc3QgRWxlbWVudCYgZWxlbWVudCkKIHsKICAgICAvLyBGSVhNRTogd2UgbmVlZCB0byBmaXgg
SFRNTEltYWdlRWxlbWVudCB0byB1cGRhdGUgdGhlIGhhc2ggbWFwIGZvciB1cyB3aGVuIG5hbWUg
YXR0cmlidXRlIGhhcyBiZWVuIHJlbW92ZWQuCi0gICAgcmV0dXJuIGVsZW1lbnQtPmhhc1RhZ05h
bWUoYXBwbGV0VGFnKSB8fCAoZWxlbWVudC0+aGFzVGFnTmFtZShvYmplY3RUYWcpICYmIHRvSFRN
TE9iamVjdEVsZW1lbnQoZWxlbWVudCktPmlzRG9jTmFtZWRJdGVtKCkpCi0gICAgICAgIHx8IChp
c0hUTUxJbWFnZUVsZW1lbnQoZWxlbWVudCkgJiYgZWxlbWVudC0+aGFzTmFtZSgpKTsKKyAgICBy
ZXR1cm4gZWxlbWVudC5oYXNUYWdOYW1lKGFwcGxldFRhZykgfHwgKGVsZW1lbnQuaGFzVGFnTmFt
ZShvYmplY3RUYWcpICYmIHRvSFRNTE9iamVjdEVsZW1lbnQoZWxlbWVudCkuaXNEb2NOYW1lZEl0
ZW0oKSkKKyAgICAgICAgfHwgKGlzSFRNTEltYWdlRWxlbWVudChlbGVtZW50KSAmJiBlbGVtZW50
Lmhhc05hbWUoKSk7CiB9CiAKLWJvb2wgRG9jdW1lbnROYW1lQ29sbGVjdGlvbjo6ZWxlbWVudE1h
dGNoZXNJZk5hbWVBdHRyaWJ1dGVNYXRjaChFbGVtZW50KiBlbGVtZW50KQorYm9vbCBEb2N1bWVu
dE5hbWVDb2xsZWN0aW9uOjplbGVtZW50TWF0Y2hlc0lmTmFtZUF0dHJpYnV0ZU1hdGNoKGNvbnN0
IEVsZW1lbnQmIGVsZW1lbnQpCiB7Ci0gICAgcmV0dXJuIGlzSFRNTEZvcm1FbGVtZW50KGVsZW1l
bnQpIHx8IGVsZW1lbnQtPmhhc1RhZ05hbWUoZW1iZWRUYWcpIHx8IGVsZW1lbnQtPmhhc1RhZ05h
bWUoaWZyYW1lVGFnKQotICAgICAgICB8fCBlbGVtZW50LT5oYXNUYWdOYW1lKGFwcGxldFRhZykg
fHwgKGVsZW1lbnQtPmhhc1RhZ05hbWUob2JqZWN0VGFnKSAmJiB0b0hUTUxPYmplY3RFbGVtZW50
KGVsZW1lbnQpLT5pc0RvY05hbWVkSXRlbSgpKQorICAgIHJldHVybiBpc0hUTUxGb3JtRWxlbWVu
dChlbGVtZW50KSB8fCBlbGVtZW50Lmhhc1RhZ05hbWUoZW1iZWRUYWcpIHx8IGVsZW1lbnQuaGFz
VGFnTmFtZShpZnJhbWVUYWcpCisgICAgICAgIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShhcHBsZXRU
YWcpIHx8IChlbGVtZW50Lmhhc1RhZ05hbWUob2JqZWN0VGFnKSAmJiB0b0hUTUxPYmplY3RFbGVt
ZW50KGVsZW1lbnQpLmlzRG9jTmFtZWRJdGVtKCkpCiAgICAgICAgIHx8IGlzSFRNTEltYWdlRWxl
bWVudChlbGVtZW50KTsKIH0KIAotYm9vbCBEb2N1bWVudE5hbWVDb2xsZWN0aW9uOjplbGVtZW50
TWF0Y2hlcyhFbGVtZW50KiBlbGVtZW50LCBjb25zdCBBdG9taWNTdHJpbmdJbXBsKiBuYW1lKQor
Ym9vbCBEb2N1bWVudE5hbWVDb2xsZWN0aW9uOjplbGVtZW50TWF0Y2hlcyhjb25zdCBFbGVtZW50
JiBlbGVtZW50LCBjb25zdCBBdG9taWNTdHJpbmdJbXBsKiBuYW1lKQogewogICAgIC8vIEZpbmQg
aW1hZ2VzLCBmb3JtcywgYXBwbGV0cywgZW1iZWRzLCBvYmplY3RzIGFuZCBpZnJhbWVzIGJ5IG5h
bWUsIGFwcGxldHMgYW5kIG9iamVjdCBieSBpZCwgYW5kIGltYWdlcyBieSBpZAogICAgIC8vIGJ1
dCBvbmx5IGlmIHRoZXkgaGF2ZSBhIG5hbWUgYXR0cmlidXRlICh0aGlzIHZlcnkgc3RyYW5nZSBy
dWxlIG1hdGNoZXMgSUUpCi0gICAgaWYgKGlzSFRNTEZvcm1FbGVtZW50KGVsZW1lbnQpIHx8IGVs
ZW1lbnQtPmhhc1RhZ05hbWUoZW1iZWRUYWcpIHx8IGVsZW1lbnQtPmhhc1RhZ05hbWUoaWZyYW1l
VGFnKSkKLSAgICAgICAgcmV0dXJuIGVsZW1lbnQtPmdldE5hbWVBdHRyaWJ1dGUoKS5pbXBsKCkg
PT0gbmFtZTsKLSAgICBpZiAoZWxlbWVudC0+aGFzVGFnTmFtZShhcHBsZXRUYWcpKQotICAgICAg
ICByZXR1cm4gZWxlbWVudC0+Z2V0TmFtZUF0dHJpYnV0ZSgpLmltcGwoKSA9PSBuYW1lIHx8IGVs
ZW1lbnQtPmdldElkQXR0cmlidXRlKCkuaW1wbCgpID09IG5hbWU7Ci0gICAgaWYgKGVsZW1lbnQt
Pmhhc1RhZ05hbWUob2JqZWN0VGFnKSkKLSAgICAgICAgcmV0dXJuIChlbGVtZW50LT5nZXROYW1l
QXR0cmlidXRlKCkuaW1wbCgpID09IG5hbWUgfHwgZWxlbWVudC0+Z2V0SWRBdHRyaWJ1dGUoKS5p
bXBsKCkgPT0gbmFtZSkgJiYgdG9IVE1MT2JqZWN0RWxlbWVudChlbGVtZW50KS0+aXNEb2NOYW1l
ZEl0ZW0oKTsKKyAgICBpZiAoaXNIVE1MRm9ybUVsZW1lbnQoZWxlbWVudCkgfHwgZWxlbWVudC5o
YXNUYWdOYW1lKGVtYmVkVGFnKSB8fCBlbGVtZW50Lmhhc1RhZ05hbWUoaWZyYW1lVGFnKSkKKyAg
ICAgICAgcmV0dXJuIGVsZW1lbnQuZ2V0TmFtZUF0dHJpYnV0ZSgpLmltcGwoKSA9PSBuYW1lOwor
ICAgIGlmIChlbGVtZW50Lmhhc1RhZ05hbWUoYXBwbGV0VGFnKSkKKyAgICAgICAgcmV0dXJuIGVs
ZW1lbnQuZ2V0TmFtZUF0dHJpYnV0ZSgpLmltcGwoKSA9PSBuYW1lIHx8IGVsZW1lbnQuZ2V0SWRB
dHRyaWJ1dGUoKS5pbXBsKCkgPT0gbmFtZTsKKyAgICBpZiAoZWxlbWVudC5oYXNUYWdOYW1lKG9i
amVjdFRhZykpCisgICAgICAgIHJldHVybiAoZWxlbWVudC5nZXROYW1lQXR0cmlidXRlKCkuaW1w
bCgpID09IG5hbWUgfHwgZWxlbWVudC5nZXRJZEF0dHJpYnV0ZSgpLmltcGwoKSA9PSBuYW1lKSAm
JiB0b0hUTUxPYmplY3RFbGVtZW50KGVsZW1lbnQpLmlzRG9jTmFtZWRJdGVtKCk7CiAgICAgaWYg
KGlzSFRNTEltYWdlRWxlbWVudChlbGVtZW50KSkKLSAgICAgICAgcmV0dXJuIGVsZW1lbnQtPmdl
dE5hbWVBdHRyaWJ1dGUoKS5pbXBsKCkgPT0gbmFtZSB8fCAoZWxlbWVudC0+Z2V0SWRBdHRyaWJ1
dGUoKS5pbXBsKCkgPT0gbmFtZSAmJiBlbGVtZW50LT5oYXNOYW1lKCkpOworICAgICAgICByZXR1
cm4gZWxlbWVudC5nZXROYW1lQXR0cmlidXRlKCkuaW1wbCgpID09IG5hbWUgfHwgKGVsZW1lbnQu
Z2V0SWRBdHRyaWJ1dGUoKS5pbXBsKCkgPT0gbmFtZSAmJiBlbGVtZW50Lmhhc05hbWUoKSk7CiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxOYW1lQ29sbGVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTmFtZUNvbGxlY3Rp
b24uaAppbmRleCAxYzcxMzAxNTlkOWVmNmM4ZjlmNzFkOWM1Y2MwNzVlNmIxZjU5OGZkLi44MDEw
MGY2MWFjOTM4YjA2NDliMDgzZDc0MWQ0OWY0NzcwOWQ0M2VmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxOYW1lQ29sbGVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE5hbWVDb2xsZWN0aW9uLmgKQEAgLTUwLDExICs1MCwxMSBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdpbmRvd05hbWVDb2xsZWN0aW9uKGRvY3VtZW50LCB0
eXBlLCBuYW1lKSk7CiAgICAgfQogCi0gICAgYm9vbCBlbGVtZW50TWF0Y2hlcyhFbGVtZW50KiBl
bGVtZW50KSBjb25zdCB7IHJldHVybiBlbGVtZW50TWF0Y2hlcyhlbGVtZW50LCBtX25hbWUuaW1w
bCgpKTsgfQorICAgIGJvb2wgZWxlbWVudE1hdGNoZXMoY29uc3QgRWxlbWVudCYgZWxlbWVudCkg
Y29uc3QgeyByZXR1cm4gZWxlbWVudE1hdGNoZXMoZWxlbWVudCwgbV9uYW1lLmltcGwoKSk7IH0K
IAotICAgIHN0YXRpYyBib29sIGVsZW1lbnRNYXRjaGVzSWZJZEF0dHJpYnV0ZU1hdGNoKEVsZW1l
bnQqKSB7IHJldHVybiB0cnVlOyB9Ci0gICAgc3RhdGljIGJvb2wgZWxlbWVudE1hdGNoZXNJZk5h
bWVBdHRyaWJ1dGVNYXRjaChFbGVtZW50Kik7Ci0gICAgc3RhdGljIGJvb2wgZWxlbWVudE1hdGNo
ZXMoRWxlbWVudCosIGNvbnN0IEF0b21pY1N0cmluZ0ltcGwqKTsKKyAgICBzdGF0aWMgYm9vbCBl
bGVtZW50TWF0Y2hlc0lmSWRBdHRyaWJ1dGVNYXRjaChjb25zdCBFbGVtZW50JikgeyByZXR1cm4g
dHJ1ZTsgfQorICAgIHN0YXRpYyBib29sIGVsZW1lbnRNYXRjaGVzSWZOYW1lQXR0cmlidXRlTWF0
Y2goY29uc3QgRWxlbWVudCYpOworICAgIHN0YXRpYyBib29sIGVsZW1lbnRNYXRjaGVzKGNvbnN0
IEVsZW1lbnQmLCBjb25zdCBBdG9taWNTdHJpbmdJbXBsKik7CiAKIHByaXZhdGU6CiAgICAgV2lu
ZG93TmFtZUNvbGxlY3Rpb24oRG9jdW1lbnQmIGRvY3VtZW50LCBDb2xsZWN0aW9uVHlwZSB0eXBl
LCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCkBAIC03MSwxMSArNzEsMTEgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEb2N1bWVudE5hbWVDb2xsZWN0aW9uKGRvY3Vt
ZW50LCB0eXBlLCBuYW1lKSk7CiAgICAgfQogCi0gICAgc3RhdGljIGJvb2wgZWxlbWVudE1hdGNo
ZXNJZklkQXR0cmlidXRlTWF0Y2goRWxlbWVudCopOwotICAgIHN0YXRpYyBib29sIGVsZW1lbnRN
YXRjaGVzSWZOYW1lQXR0cmlidXRlTWF0Y2goRWxlbWVudCopOwotICAgIGJvb2wgZWxlbWVudE1h
dGNoZXMoRWxlbWVudCogZWxlbWVudCkgY29uc3QgeyByZXR1cm4gZWxlbWVudE1hdGNoZXMoZWxl
bWVudCwgbV9uYW1lLmltcGwoKSk7IH0KKyAgICBzdGF0aWMgYm9vbCBlbGVtZW50TWF0Y2hlc0lm
SWRBdHRyaWJ1dGVNYXRjaChjb25zdCBFbGVtZW50Jik7CisgICAgc3RhdGljIGJvb2wgZWxlbWVu
dE1hdGNoZXNJZk5hbWVBdHRyaWJ1dGVNYXRjaChjb25zdCBFbGVtZW50Jik7CisgICAgYm9vbCBl
bGVtZW50TWF0Y2hlcyhjb25zdCBFbGVtZW50JiBlbGVtZW50KSBjb25zdCB7IHJldHVybiBlbGVt
ZW50TWF0Y2hlcyhlbGVtZW50LCBtX25hbWUuaW1wbCgpKTsgfQogCi0gICAgc3RhdGljIGJvb2wg
ZWxlbWVudE1hdGNoZXMoRWxlbWVudCosIGNvbnN0IEF0b21pY1N0cmluZ0ltcGwqKTsKKyAgICBz
dGF0aWMgYm9vbCBlbGVtZW50TWF0Y2hlcyhjb25zdCBFbGVtZW50JiwgY29uc3QgQXRvbWljU3Ry
aW5nSW1wbCopOwogCiBwcml2YXRlOgogICAgIERvY3VtZW50TmFtZUNvbGxlY3Rpb24oRG9jdW1l
bnQmIGRvY3VtZW50LCBDb2xsZWN0aW9uVHlwZSB0eXBlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5h
bWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0xhYmVsc05vZGVMaXN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvTGFiZWxzTm9kZUxpc3QuY3BwCmluZGV4IGVjMTFkMTIzYWUz
YzIwMjY1YTliYTE3MGM1OTI2NzhjNjk5YjkzMTguLjMxZjY3NWUxOWI4MGU4ZjE4YzNhNTU5OGRk
MTE3MTFjNWM2YTc5MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTGFiZWxzTm9k
ZUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTGFiZWxzTm9kZUxpc3QuY3BwCkBA
IC00Myw5ICs0Myw5IEBAIExhYmVsc05vZGVMaXN0Ojp+TGFiZWxzTm9kZUxpc3QoKQogICAgIG93
bmVyTm9kZSgpLm5vZGVMaXN0cygpLT5yZW1vdmVDYWNoZVdpdGhBdG9taWNOYW1lKHRoaXMsIHN0
YXJBdG9tKTsKIH0gCiAgICAgCi1ib29sIExhYmVsc05vZGVMaXN0OjplbGVtZW50TWF0Y2hlcyhF
bGVtZW50KiB0ZXN0Tm9kZSkgY29uc3QKK2Jvb2wgTGFiZWxzTm9kZUxpc3Q6OmVsZW1lbnRNYXRj
aGVzKEVsZW1lbnQmIHRlc3ROb2RlKSBjb25zdAogewotICAgIHJldHVybiBpc0hUTUxMYWJlbEVs
ZW1lbnQodGVzdE5vZGUpICYmIHRvSFRNTExhYmVsRWxlbWVudCh0ZXN0Tm9kZSktPmNvbnRyb2wo
KSA9PSAmb3duZXJOb2RlKCk7CisgICAgcmV0dXJuIGlzSFRNTExhYmVsRWxlbWVudCh0ZXN0Tm9k
ZSkgJiYgdG9IVE1MTGFiZWxFbGVtZW50KHRlc3ROb2RlKS5jb250cm9sKCkgPT0gJm93bmVyTm9k
ZSgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0xhYmVsc05vZGVMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0xhYmVsc05v
ZGVMaXN0LmgKaW5kZXggMjA0MDgzOGQ3YjI3M2UwM2Q2OTI4YTI5MWIxNmIyZDJlZDBkZmVhZC4u
Yjg1MWEzMTg5NDMyMDUxNGVmMjA4ZGQyOWIxNThhNjRmOGY0ZmU4OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9MYWJlbHNOb2RlTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvTGFiZWxzTm9kZUxpc3QuaApAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgfQogICAg
IH5MYWJlbHNOb2RlTGlzdCgpOwogCi0gICAgdmlydHVhbCBib29sIGVsZW1lbnRNYXRjaGVzKEVs
ZW1lbnQqKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgZWxlbWVudE1hdGNoZXMo
RWxlbWVudCYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBpc1Jvb3RlZEF0RG9j
dW1lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKIHByaXZhdGU6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhZGlvTm9kZUxpc3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9SYWRpb05vZGVMaXN0LmNwcAppbmRleCA1YTFmMjIxZDg0ZDYzYmZmZWNhN2Nk
MGJmNjc2OGU3M2ViN2MxOTdjLi5iMjA0NGY2NzhkNjRiNmM3MWRjZmNhNTIwYzMxY2E3OGZjN2Zh
ZDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhZGlvTm9kZUxpc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFkaW9Ob2RlTGlzdC5jcHAKQEAgLTgzLDI4ICs4Mywy
OCBAQCB2b2lkIFJhZGlvTm9kZUxpc3Q6OnNldFZhbHVlKGNvbnN0IFN0cmluZyYgdmFsdWUpCiAg
ICAgfQogfQogCi1ib29sIFJhZGlvTm9kZUxpc3Q6OmNoZWNrRWxlbWVudE1hdGNoZXNSYWRpb05v
ZGVMaXN0RmlsdGVyKEVsZW1lbnQqIHRlc3RFbGVtZW50KSBjb25zdAorYm9vbCBSYWRpb05vZGVM
aXN0OjpjaGVja0VsZW1lbnRNYXRjaGVzUmFkaW9Ob2RlTGlzdEZpbHRlcihjb25zdCBFbGVtZW50
JiB0ZXN0RWxlbWVudCkgY29uc3QKIHsKLSAgICBBU1NFUlQodGVzdEVsZW1lbnQtPmhhc1RhZ05h
bWUob2JqZWN0VGFnKSB8fCB0ZXN0RWxlbWVudC0+aXNGb3JtQ29udHJvbEVsZW1lbnQoKSk7Cisg
ICAgQVNTRVJUKHRlc3RFbGVtZW50Lmhhc1RhZ05hbWUob2JqZWN0VGFnKSB8fCB0ZXN0RWxlbWVu
dC5pc0Zvcm1Db250cm9sRWxlbWVudCgpKTsKICAgICBpZiAoaXNIVE1MRm9ybUVsZW1lbnQob3du
ZXJOb2RlKCkpKSB7CiAgICAgICAgIEhUTUxGb3JtRWxlbWVudCogZm9ybUVsZW1lbnQgPSAwOwot
ICAgICAgICBpZiAodGVzdEVsZW1lbnQtPmhhc1RhZ05hbWUob2JqZWN0VGFnKSkKLSAgICAgICAg
ICAgIGZvcm1FbGVtZW50ID0gdG9IVE1MT2JqZWN0RWxlbWVudCh0ZXN0RWxlbWVudCktPmZvcm0o
KTsKKyAgICAgICAgaWYgKHRlc3RFbGVtZW50Lmhhc1RhZ05hbWUob2JqZWN0VGFnKSkKKyAgICAg
ICAgICAgIGZvcm1FbGVtZW50ID0gdG9IVE1MT2JqZWN0RWxlbWVudCh0ZXN0RWxlbWVudCkuZm9y
bSgpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBmb3JtRWxlbWVudCA9IHRvSFRNTEZvcm1D
b250cm9sRWxlbWVudCh0ZXN0RWxlbWVudCktPmZvcm0oKTsKKyAgICAgICAgICAgIGZvcm1FbGVt
ZW50ID0gdG9IVE1MRm9ybUNvbnRyb2xFbGVtZW50KHRlc3RFbGVtZW50KS5mb3JtKCk7CiAgICAg
ICAgIGlmICghZm9ybUVsZW1lbnQgfHwgZm9ybUVsZW1lbnQgIT0gJm93bmVyTm9kZSgpKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIHJldHVybiB0ZXN0RWxlbWVudC0+
Z2V0SWRBdHRyaWJ1dGUoKSA9PSBtX25hbWUgfHwgdGVzdEVsZW1lbnQtPmdldE5hbWVBdHRyaWJ1
dGUoKSA9PSBtX25hbWU7CisgICAgcmV0dXJuIHRlc3RFbGVtZW50LmdldElkQXR0cmlidXRlKCkg
PT0gbV9uYW1lIHx8IHRlc3RFbGVtZW50LmdldE5hbWVBdHRyaWJ1dGUoKSA9PSBtX25hbWU7CiB9
CiAKLWJvb2wgUmFkaW9Ob2RlTGlzdDo6ZWxlbWVudE1hdGNoZXMoRWxlbWVudCogdGVzdEVsZW1l
bnQpIGNvbnN0Citib29sIFJhZGlvTm9kZUxpc3Q6OmVsZW1lbnRNYXRjaGVzKEVsZW1lbnQmIHRl
c3RFbGVtZW50KSBjb25zdAogewotICAgIGlmICghdGVzdEVsZW1lbnQtPmhhc1RhZ05hbWUob2Jq
ZWN0VGFnKSAmJiAhdGVzdEVsZW1lbnQtPmlzRm9ybUNvbnRyb2xFbGVtZW50KCkpCisgICAgaWYg
KCF0ZXN0RWxlbWVudC5oYXNUYWdOYW1lKG9iamVjdFRhZykgJiYgIXRlc3RFbGVtZW50LmlzRm9y
bUNvbnRyb2xFbGVtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChIVE1M
SW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQgPSB0ZXN0RWxlbWVudC0+dG9JbnB1dEVsZW1lbnQo
KSkgeworICAgIGlmIChIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQgPSB0ZXN0RWxlbWVu
dC50b0lucHV0RWxlbWVudCgpKSB7CiAgICAgICAgIGlmIChpbnB1dEVsZW1lbnQtPmlzSW1hZ2VC
dXR0b24oKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL1JhZGlvTm9kZUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
UmFkaW9Ob2RlTGlzdC5oCmluZGV4IGYzYzQ4NDVmYzExY2ZjNGQyOWFhZjAyYWIyZGVhZWJjZmQw
ZWY5YmIuLjhiY2YwMmJiYjViNmExZDFkMWU0NmMzMzExZDRiMDFjY2E0MWI3MjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFkaW9Ob2RlTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvUmFkaW9Ob2RlTGlzdC5oCkBAIC00NSwxMiArNDUsMTIgQEAgcHVibGljOgogICAg
IFN0cmluZyB2YWx1ZSgpIGNvbnN0OwogICAgIHZvaWQgc2V0VmFsdWUoY29uc3QgU3RyaW5nJik7
CiAKLSAgICB2aXJ0dWFsIGJvb2wgZWxlbWVudE1hdGNoZXMoRWxlbWVudCopIGNvbnN0IG92ZXJy
aWRlOworICAgIHZpcnR1YWwgYm9vbCBlbGVtZW50TWF0Y2hlcyhFbGVtZW50JikgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCBib29sIGlzUm9vdGVkQXREb2N1bWVudCgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIG1faXNSb290ZWRBdERvY3VtZW50OyB9CiAKIHByaXZhdGU6CiAgICAgUmFk
aW9Ob2RlTGlzdChDb250YWluZXJOb2RlJiwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKTsKLSAg
ICBib29sIGNoZWNrRWxlbWVudE1hdGNoZXNSYWRpb05vZGVMaXN0RmlsdGVyKEVsZW1lbnQqKSBj
b25zdDsKKyAgICBib29sIGNoZWNrRWxlbWVudE1hdGNoZXNSYWRpb05vZGVMaXN0RmlsdGVyKGNv
bnN0IEVsZW1lbnQmKSBjb25zdDsKIAogICAgIEF0b21pY1N0cmluZyBtX25hbWU7CiAgICAgYm9v
bCBtX2lzUm9vdGVkQXREb2N1bWVudDsK
</data>

          </attachment>
      

    </bug>

</bugzilla>