<?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>156474</bug_id>
          
          <creation_ts>2016-04-11 15:03:01 -0700</creation_ts>
          <short_desc>Lazily update tokens in DOMTokenList when the associated attribute value changes</short_desc>
          <delta_ts>2016-04-13 14:48:48 -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>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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>156508</dependson>
    
    <dependson>156509</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1182834</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-04-11 15:03:01 -0700</bug_when>
    <thetext>Lazily update tokens in DOMTokenList when the associated attribute value changes for performance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182835</commentid>
    <comment_count>1</comment_count>
      <attachid>276175</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-04-11 15:06:44 -0700</bug_when>
    <thetext>Created attachment 276175
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182871</commentid>
    <comment_count>2</comment_count>
      <attachid>276175</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-04-11 16:32:57 -0700</bug_when>
    <thetext>Comment on attachment 276175
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=276175&amp;action=review

&gt; Source/WebCore/html/DOMTokenList.cpp:231
&gt; +        updateTokensFromAttributeValue(m_element.getAttribute(m_attributeName));

Use fastGetAttribute?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183060</commentid>
    <comment_count>3</comment_count>
      <attachid>276236</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-04-12 08:30:27 -0700</bug_when>
    <thetext>Created attachment 276236
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183074</commentid>
    <comment_count>4</comment_count>
      <attachid>276236</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-12 09:21:43 -0700</bug_when>
    <thetext>Comment on attachment 276236
Patch

Clearing flags on attachment: 276236

Committed r199360: &lt;http://trac.webkit.org/changeset/199360&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183075</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-12 09:21:47 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183137</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-12 11:35:32 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 156508</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276175</attachid>
            <date>2016-04-11 15:06:44 -0700</date>
            <delta_ts>2016-04-12 08:30:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-156474-20160411150653.patch</filename>
            <type>text/plain</type>
            <size>14145</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk5Mjk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjk1ZmYxMGNjNTcxNDAz
Mjk3OWI2MWYxNGY5MDFiYTZiYWYyYzVmNS4uZmZkNWNiMDlmYTlkOGZhYjMwZmE3NzdiMTY0YTdi
Y2NkOTEwYTU5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ5IEBACiAyMDE2LTA0LTExICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgTGF6aWx5IHVwZGF0ZSB0b2tl
bnMgaW4gRE9NVG9rZW5MaXN0IHdoZW4gdGhlIGFzc29jaWF0ZWQgYXR0cmlidXRlIHZhbHVlIGNo
YW5nZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
NjQ3NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIExh
emlseSB1cGRhdGUgdG9rZW5zIGluIERPTVRva2VuTGlzdCB3aGVuIHRoZSBhc3NvY2lhdGVkIGF0
dHJpYnV0ZSB2YWx1ZQorICAgICAgICBjaGFuZ2VzIGZvciBwZXJmb3JtYW5jZS4gQ29uc3RydWN0
aW5nIHRoZSBzYW5pdGl6ZWQgdmVjdG9yIG9mIHRva2VucworICAgICAgICBldmVyeSB0aW1lIHRo
ZSBhc3NvY2lhdGVkIEVsZW1lbnQgYXR0cmlidXRlIGNoYW5nZXMgaXMgdG9vIGV4cGVuc2l2ZS4K
KyAgICAgICAgSW5zdGVhZCwgd2UgbWFyayB0aGUgdmVjdG9yIGFzIGRpcnR5IHdoZW5ldmVyIHRo
ZSBhdHRyaWJ1dGUgY2hhbmdlcywgYW5kCisgICAgICAgIHdlIG9ubHkgY29uc3RydWN0IHRoZSBz
YW5pdGl6ZWQgdmVjdG9yIHdoZW4gaXQgaXMgYWN0dWFsbHkgcmVxdWlyZWQuCisKKyAgICAgICAg
QWxzbyBkbyBzb21lIHJlbmFtaW5nIGZvciBjbGFyaXR5LgorCisgICAgICAgIFRoZXJlIGlzIG5v
IHdlYi1leHBvc2VkIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIGRvbS9FbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmNsYXNzQXR0cmlidXRlQ2hhbmdlZCk6Cisg
ICAgICAgICogaHRtbC9ET01Ub2tlbkxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NVG9r
ZW5MaXN0Ojpjb250YWlucyk6CisgICAgICAgIChXZWJDb3JlOjpET01Ub2tlbkxpc3Q6OmFkZElu
dGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVRva2VuTGlzdDo6cmVtb3ZlSW50ZXJuYWwp
OgorICAgICAgICAoV2ViQ29yZTo6RE9NVG9rZW5MaXN0Ojp0b2dnbGUpOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NVG9rZW5MaXN0Ojp2YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpET01Ub2tlbkxp
c3Q6OnNldFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVRva2VuTGlzdDo6dXBkYXRlVG9r
ZW5zRnJvbUF0dHJpYnV0ZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVRva2VuTGlzdDo6
YXNzb2NpYXRlZEF0dHJpYnV0ZVZhbHVlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpET01U
b2tlbkxpc3Q6OnVwZGF0ZUFzc29jaWF0ZWRBdHRyaWJ1dGVGcm9tVG9rZW5zKToKKyAgICAgICAg
KFdlYkNvcmU6OkRPTVRva2VuTGlzdDo6dG9rZW5zKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVRv
a2VuTGlzdDo6RE9NVG9rZW5MaXN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL0RPTVRva2Vu
TGlzdC5oOgorICAgICAgICAoV2ViQ29yZTo6RE9NVG9rZW5MaXN0Ojp0b2tlbnMpOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NVG9rZW5MaXN0OjpsZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6RE9N
VG9rZW5MaXN0OjppdGVtKToKKyAgICAgICAgKiBodG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxBbmNob3JFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6Cisg
ICAgICAgICogaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MSUZyYW1lRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRNTExp
bmtFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVudDo6cGFyc2VB
dHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRNTE91dHB1dEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE91dHB1dEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKworMjAxNi0w
NC0xMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCiAgICAgICAgIE1lcmdlIEF0
dHJpYnV0ZWRET01Ub2tlbkxpc3QgaW50byBET01Ub2tlbkxpc3QKICAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NjQ2OAogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5j
cHAKaW5kZXggYjM4MmRjZWRhMTY0ODA2NTYzZTczNmFiMTE1ZDA0MWVhOWU4ZjhmYi4uYWFiMTI1
NTQyZmU0MWQ0YWYyNmU5ODgxZWYxNmQ5NGIwMmU4ZGM1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNw
cApAQCAtMTMzMCw3ICsxMzMwLDcgQEAgdm9pZCBFbGVtZW50OjpjbGFzc0F0dHJpYnV0ZUNoYW5n
ZWQoY29uc3QgQXRvbWljU3RyaW5nJiBuZXdDbGFzc1N0cmluZykKIAogICAgIGlmIChoYXNSYXJl
RGF0YSgpKSB7CiAgICAgICAgIGlmIChhdXRvKiBjbGFzc0xpc3QgPSBlbGVtZW50UmFyZURhdGEo
KS0+Y2xhc3NMaXN0KCkpCi0gICAgICAgICAgICBjbGFzc0xpc3QtPmF0dHJpYnV0ZVZhbHVlQ2hh
bmdlZChuZXdDbGFzc1N0cmluZyk7CisgICAgICAgICAgICBjbGFzc0xpc3QtPmFzc29jaWF0ZWRB
dHRyaWJ1dGVWYWx1ZUNoYW5nZWQobmV3Q2xhc3NTdHJpbmcpOwogICAgIH0KIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9ET01Ub2tlbkxpc3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9ET01Ub2tlbkxpc3QuY3BwCmluZGV4IGIwYjc2ZjI5ZGNlOWY3NGQxMDQ2YWNkYWFm
ZjE4YWZlZGQzZDE1OGEuLjViNzI3MzNjYTdiMzVkZTVlZTZlYWQ5NGVmMmQ0ODQwY2E5YzViODYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVG9rZW5MaXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0RPTVRva2VuTGlzdC5jcHAKQEAgLTQwLDcgKzQwLDYgQEAgRE9N
VG9rZW5MaXN0OjpET01Ub2tlbkxpc3QoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0cmlidXRlTmFtZSkKICAgICA6IG1fZWxlbWVudChlbGVtZW50KQogICAgICwgbV9h
dHRyaWJ1dGVOYW1lKGF0dHJpYnV0ZU5hbWUpCiB7Ci0gICAgc2V0VmFsdWVJbnRlcm5hbChtX2Vs
ZW1lbnQuZ2V0QXR0cmlidXRlKG1fYXR0cmlidXRlTmFtZSkpOwogfQogCiBib29sIERPTVRva2Vu
TGlzdDo6dmFsaWRhdGVUb2tlbihjb25zdCBTdHJpbmcmIHRva2VuLCBFeGNlcHRpb25Db2RlJiBl
YykKQEAgLTcyLDI2ICs3MSwyNyBAQCBib29sIERPTVRva2VuTGlzdDo6dmFsaWRhdGVUb2tlbnMo
Y29uc3QgU3RyaW5nKiB0b2tlbnMsIHNpemVfdCBsZW5ndGgsIEV4Y2VwdGlvbgogCiBib29sIERP
TVRva2VuTGlzdDo6Y29udGFpbnMoY29uc3QgQXRvbWljU3RyaW5nJiB0b2tlbikgY29uc3QKIHsK
LSAgICByZXR1cm4gbV90b2tlbnMuY29udGFpbnModG9rZW4pOworICAgIHJldHVybiB0b2tlbnMo
KS5jb250YWlucyh0b2tlbik7CiB9CiAKLWlubGluZSB2b2lkIERPTVRva2VuTGlzdDo6YWRkSW50
ZXJuYWwoY29uc3QgU3RyaW5nKiB0b2tlbnMsIHNpemVfdCBsZW5ndGgsIEV4Y2VwdGlvbkNvZGUm
IGVjKQoraW5saW5lIHZvaWQgRE9NVG9rZW5MaXN0OjphZGRJbnRlcm5hbChjb25zdCBTdHJpbmcq
IG5ld1Rva2Vucywgc2l6ZV90IGxlbmd0aCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgLy8g
VGhpcyBpcyB1c3VhbGx5IGNhbGxlZCB3aXRoIGEgc2luZ2xlIHRva2VuLgotICAgIFZlY3RvcjxB
dG9taWNTdHJpbmcsIDE+IHVuaXF1ZVRva2VuczsKLSAgICB1bmlxdWVUb2tlbnMucmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eShsZW5ndGgpOworICAgIFZlY3RvcjxBdG9taWNTdHJpbmcsIDE+IHVuaXF1
ZU5ld1Rva2VuczsKKyAgICB1bmlxdWVOZXdUb2tlbnMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShs
ZW5ndGgpOwogCisgICAgYXV0byYgdG9rZW5zID0gdGhpcy0+dG9rZW5zKCk7CiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewotICAgICAgICBpZiAoIXZhbGlkYXRlVG9r
ZW4odG9rZW5zW2ldLCBlYykpCisgICAgICAgIGlmICghdmFsaWRhdGVUb2tlbihuZXdUb2tlbnNb
aV0sIGVjKSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgaWYgKCFtX3Rva2Vucy5jb250
YWlucyh0b2tlbnNbaV0pICYmICF1bmlxdWVUb2tlbnMuY29udGFpbnModG9rZW5zW2ldKSkKLSAg
ICAgICAgICAgIHVuaXF1ZVRva2Vucy51bmNoZWNrZWRBcHBlbmQodG9rZW5zW2ldKTsKKyAgICAg
ICAgaWYgKCF0b2tlbnMuY29udGFpbnMobmV3VG9rZW5zW2ldKSAmJiAhdW5pcXVlTmV3VG9rZW5z
LmNvbnRhaW5zKG5ld1Rva2Vuc1tpXSkpCisgICAgICAgICAgICB1bmlxdWVOZXdUb2tlbnMudW5j
aGVja2VkQXBwZW5kKG5ld1Rva2Vuc1tpXSk7CiAgICAgfQogCi0gICAgaWYgKCF1bmlxdWVUb2tl
bnMuaXNFbXB0eSgpKQotICAgICAgICBtX3Rva2Vucy5hcHBlbmRWZWN0b3IodW5pcXVlVG9rZW5z
KTsKKyAgICBpZiAoIXVuaXF1ZU5ld1Rva2Vucy5pc0VtcHR5KCkpCisgICAgICAgIHRva2Vucy5h
cHBlbmRWZWN0b3IodW5pcXVlTmV3VG9rZW5zKTsKIAotICAgIHVwZGF0ZUFmdGVyVG9rZW5DaGFu
Z2UoKTsKKyAgICB1cGRhdGVBc3NvY2lhdGVkQXR0cmlidXRlRnJvbVRva2VucygpOwogfQogCiB2
b2lkIERPTVRva2VuTGlzdDo6YWRkKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0b2tlbnMsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQpAQCAtMTA0LDE1ICsxMDQsMTYgQEAgdm9pZCBET01Ub2tlbkxpc3Q6OmFk
ZChjb25zdCBXVEY6OkF0b21pY1N0cmluZyYgdG9rZW4sIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAg
IGFkZEludGVybmFsKCZ0b2tlbi5zdHJpbmcoKSwgMSwgZWMpOwogfQogCi1pbmxpbmUgdm9pZCBE
T01Ub2tlbkxpc3Q6OnJlbW92ZUludGVybmFsKGNvbnN0IFN0cmluZyogdG9rZW5zLCBzaXplX3Qg
bGVuZ3RoLCBFeGNlcHRpb25Db2RlJiBlYykKK2lubGluZSB2b2lkIERPTVRva2VuTGlzdDo6cmVt
b3ZlSW50ZXJuYWwoY29uc3QgU3RyaW5nKiB0b2tlbnNUb1JlbW92ZSwgc2l6ZV90IGxlbmd0aCwg
RXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgaWYgKCF2YWxpZGF0ZVRva2Vucyh0b2tlbnMsIGxl
bmd0aCwgZWMpKQorICAgIGlmICghdmFsaWRhdGVUb2tlbnModG9rZW5zVG9SZW1vdmUsIGxlbmd0
aCwgZWMpKQogICAgICAgICByZXR1cm47CiAKKyAgICBhdXRvJiB0b2tlbnMgPSB0aGlzLT50b2tl
bnMoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQotICAgICAgICBt
X3Rva2Vucy5yZW1vdmVGaXJzdCh0b2tlbnNbaV0pOworICAgICAgICB0b2tlbnMucmVtb3ZlRmly
c3QodG9rZW5zVG9SZW1vdmVbaV0pOwogCi0gICAgdXBkYXRlQWZ0ZXJUb2tlbkNoYW5nZSgpOwor
ICAgIHVwZGF0ZUFzc29jaWF0ZWRBdHRyaWJ1dGVGcm9tVG9rZW5zKCk7CiB9CiAKIHZvaWQgRE9N
VG9rZW5MaXN0OjpyZW1vdmUoY29uc3QgVmVjdG9yPFN0cmluZz4mIHRva2VucywgRXhjZXB0aW9u
Q29kZSYgZWMpCkBAIC0xMzAsMTAgKzEzMSwxMiBAQCBib29sIERPTVRva2VuTGlzdDo6dG9nZ2xl
KGNvbnN0IEF0b21pY1N0cmluZyYgdG9rZW4sIE9wdGlvbmFsPGJvb2w+IGZvcmNlLCBFeGNlcAog
ICAgIGlmICghdmFsaWRhdGVUb2tlbih0b2tlbiwgZWMpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBpZiAobV90b2tlbnMuY29udGFpbnModG9rZW4pKSB7CisgICAgYXV0byYgdG9rZW5z
ID0gdGhpcy0+dG9rZW5zKCk7CisKKyAgICBpZiAodG9rZW5zLmNvbnRhaW5zKHRva2VuKSkgewog
ICAgICAgICBpZiAoIWZvcmNlLnZhbHVlT3IoZmFsc2UpKSB7Ci0gICAgICAgICAgICBtX3Rva2Vu
cy5yZW1vdmVGaXJzdCh0b2tlbik7Ci0gICAgICAgICAgICB1cGRhdGVBZnRlclRva2VuQ2hhbmdl
KCk7CisgICAgICAgICAgICB0b2tlbnMucmVtb3ZlRmlyc3QodG9rZW4pOworICAgICAgICAgICAg
dXBkYXRlQXNzb2NpYXRlZEF0dHJpYnV0ZUZyb21Ub2tlbnMoKTsKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE0Miw4ICsxNDUs
OCBAQCBib29sIERPTVRva2VuTGlzdDo6dG9nZ2xlKGNvbnN0IEF0b21pY1N0cmluZyYgdG9rZW4s
IE9wdGlvbmFsPGJvb2w+IGZvcmNlLCBFeGNlcAogICAgIGlmIChmb3JjZSAmJiAhZm9yY2UudmFs
dWUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgbV90b2tlbnMuYXBwZW5kKHRva2Vu
KTsKLSAgICB1cGRhdGVBZnRlclRva2VuQ2hhbmdlKCk7CisgICAgdG9rZW5zLmFwcGVuZCh0b2tl
bik7CisgICAgdXBkYXRlQXNzb2NpYXRlZEF0dHJpYnV0ZUZyb21Ub2tlbnMoKTsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIApAQCAtMTUyLDcgKzE1NSw3IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgRE9N
VG9rZW5MaXN0Ojp2YWx1ZSgpIGNvbnN0CiAgICAgaWYgKG1fY2FjaGVkVmFsdWUuaXNOdWxsKCkp
IHsKICAgICAgICAgLy8gaHR0cHM6Ly9kb20uc3BlYy53aGF0d2cub3JnLyNjb25jZXB0LW9yZGVy
ZWQtc2V0LXNlcmlhbGl6ZXIKICAgICAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgICAg
ICBmb3IgKGF1dG8mIHRva2VuIDogbV90b2tlbnMpIHsKKyAgICAgICAgZm9yIChhdXRvJiB0b2tl
biA6IHRva2VucygpKSB7CiAgICAgICAgICAgICBpZiAoIWJ1aWxkZXIuaXNFbXB0eSgpKQogICAg
ICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7CiAgICAgICAgICAgICBidWlsZGVyLmFw
cGVuZCh0b2tlbik7CkBAIC0xNjAsMTYgKzE2MywxNyBAQCBjb25zdCBBdG9taWNTdHJpbmcmIERP
TVRva2VuTGlzdDo6dmFsdWUoKSBjb25zdAogICAgICAgICBtX2NhY2hlZFZhbHVlID0gYnVpbGRl
ci50b0F0b21pY1N0cmluZygpOwogICAgICAgICBBU1NFUlQoIW1fY2FjaGVkVmFsdWUuaXNOdWxs
KCkpOwogICAgIH0KKyAgICBBU1NFUlQoIW1fdG9rZW5zTmVlZFVwZGF0aW5nKTsKICAgICByZXR1
cm4gbV9jYWNoZWRWYWx1ZTsKIH0KIAogdm9pZCBET01Ub2tlbkxpc3Q6OnNldFZhbHVlKGNvbnN0
IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgc2V0VmFsdWVJbnRlcm5hbCh2YWx1ZSk7Ci0gICAgdXBk
YXRlQWZ0ZXJUb2tlbkNoYW5nZSgpOworICAgIHVwZGF0ZVRva2Vuc0Zyb21BdHRyaWJ1dGVWYWx1
ZSh2YWx1ZSk7CisgICAgdXBkYXRlQXNzb2NpYXRlZEF0dHJpYnV0ZUZyb21Ub2tlbnMoKTsKIH0K
IAotdm9pZCBET01Ub2tlbkxpc3Q6OnNldFZhbHVlSW50ZXJuYWwoY29uc3QgV1RGOjpTdHJpbmcm
IHZhbHVlKQordm9pZCBET01Ub2tlbkxpc3Q6OnVwZGF0ZVRva2Vuc0Zyb21BdHRyaWJ1dGVWYWx1
ZShjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIC8vIENsZWFyIHRva2VucyBidXQgbm90IGNh
cGFjaXR5LgogICAgIG1fdG9rZW5zLnNocmluaygwKTsKQEAgLTE5NSwyNCArMTk5LDM4IEBAIHZv
aWQgRE9NVG9rZW5MaXN0OjpzZXRWYWx1ZUludGVybmFsKGNvbnN0IFdURjo6U3RyaW5nJiB2YWx1
ZSkKICAgICB9CiAKICAgICBtX3Rva2Vucy5zaHJpbmtUb0ZpdCgpOworICAgIG1fdG9rZW5zTmVl
ZFVwZGF0aW5nID0gZmFsc2U7CiAgICAgbV9jYWNoZWRWYWx1ZSA9IG51bGxBdG9tOwogfQogCi12
b2lkIERPTVRva2VuTGlzdDo6YXR0cmlidXRlVmFsdWVDaGFuZ2VkKGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmV3VmFsdWUpCit2b2lkIERPTVRva2VuTGlzdDo6YXNzb2NpYXRlZEF0dHJpYnV0ZVZhbHVl
Q2hhbmdlZChjb25zdCBBdG9taWNTdHJpbmcmKQogewogICAgIC8vIERvIG5vdCByZXNldCB0aGUg
RE9NVG9rZW5MaXN0IHZhbHVlIGlmIHRoZSBhdHRyaWJ1dGUgdmFsdWUgd2FzIGNoYW5nZWQgYnkg
dXMuCi0gICAgaWYgKG1faXNVcGRhdGluZ0F0dHJpYnV0ZVZhbHVlKQorICAgIGlmIChtX2luVXBk
YXRlQXNzb2NpYXRlZEF0dHJpYnV0ZUZyb21Ub2tlbnMpCiAgICAgICAgIHJldHVybjsKIAotICAg
IHNldFZhbHVlSW50ZXJuYWwobmV3VmFsdWUpOworICAgIG1fdG9rZW5zTmVlZFVwZGF0aW5nID0g
dHJ1ZTsKKyAgICBtX2NhY2hlZFZhbHVlID0gbnVsbEF0b207CiB9CiAKLXZvaWQgRE9NVG9rZW5M
aXN0Ojp1cGRhdGVBZnRlclRva2VuQ2hhbmdlKCkKKy8vIGh0dHBzOi8vZG9tLnNwZWMud2hhdHdn
Lm9yZy8jY29uY2VwdC1kdGwtdXBkYXRlCit2b2lkIERPTVRva2VuTGlzdDo6dXBkYXRlQXNzb2Np
YXRlZEF0dHJpYnV0ZUZyb21Ub2tlbnMoKQogeworICAgIEFTU0VSVCghbV90b2tlbnNOZWVkVXBk
YXRpbmcpOworCiAgICAgbV9jYWNoZWRWYWx1ZSA9IG51bGxBdG9tOwogCi0gICAgVGVtcG9yYXJ5
Q2hhbmdlPGJvb2w+IGluQXR0cmlidXRlVXBkYXRlKG1faXNVcGRhdGluZ0F0dHJpYnV0ZVZhbHVl
LCB0cnVlKTsKKyAgICBUZW1wb3JhcnlDaGFuZ2U8Ym9vbD4gaW5BdHRyaWJ1dGVVcGRhdGUobV9p
blVwZGF0ZUFzc29jaWF0ZWRBdHRyaWJ1dGVGcm9tVG9rZW5zLCB0cnVlKTsKICAgICBtX2VsZW1l
bnQuc2V0QXR0cmlidXRlKG1fYXR0cmlidXRlTmFtZSwgdmFsdWUoKSk7CisgICAgQVNTRVJUX1dJ
VEhfTUVTU0FHRShtX2NhY2hlZFZhbHVlLCAiQ2FsbGluZyB2YWx1ZSgpIHNob3VsZCBoYXZlIGNh
Y2hlZCBpdHMgcmVzdWx0cyIpOworfQorCitWZWN0b3I8QXRvbWljU3RyaW5nPiYgRE9NVG9rZW5M
aXN0Ojp0b2tlbnMoKQoreworICAgIGlmIChtX3Rva2Vuc05lZWRVcGRhdGluZykKKyAgICAgICAg
dXBkYXRlVG9rZW5zRnJvbUF0dHJpYnV0ZVZhbHVlKG1fZWxlbWVudC5nZXRBdHRyaWJ1dGUobV9h
dHRyaWJ1dGVOYW1lKSk7CisgICAgQVNTRVJUKCFtX3Rva2Vuc05lZWRVcGRhdGluZyk7CisgICAg
cmV0dXJuIG1fdG9rZW5zOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVRva2VuTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9ET01Ub2tlbkxpc3QuaAppbmRleCA3ZDY1OTU3MjhjYjU4MTZjMzUwZTY4NTkyODJjYjAxMTNh
MDJkYmZlLi5lNTAwN2YxM2Q2MDlkMDRlNzlmYzVkYWNlYTRjN2YzZGFlZTc1YTFjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVRva2VuTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvRE9NVG9rZW5MaXN0LmgKQEAgLTM5LDcgKzM5LDggQEAgY2xhc3MgRE9NVG9rZW5M
aXN0IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShET01Ub2tlbkxpc3QpOyBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBET01Ub2tlbkxpc3QoRWxlbWVudCYsIGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpOwotICAgIHZvaWQgYXR0cmlidXRlVmFsdWVD
aGFuZ2VkKGNvbnN0IEF0b21pY1N0cmluZyYpOworCisgICAgdm9pZCBhc3NvY2lhdGVkQXR0cmli
dXRlVmFsdWVDaGFuZ2VkKGNvbnN0IEF0b21pY1N0cmluZyYpOwogCiAgICAgdm9pZCByZWYoKSB7
IG1fZWxlbWVudC5yZWYoKTsgfQogICAgIHZvaWQgZGVyZWYoKSB7IG1fZWxlbWVudC5kZXJlZigp
OyB9CkBAIC02Miw4ICs2MywxMSBAQCBwdWJsaWM6CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiB2
YWx1ZSgpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIHZvaWQgc2V0VmFsdWVJbnRlcm5hbChjb25z
dCBTdHJpbmcmKTsKLSAgICB2b2lkIHVwZGF0ZUFmdGVyVG9rZW5DaGFuZ2UoKTsKKyAgICB2b2lk
IHVwZGF0ZVRva2Vuc0Zyb21BdHRyaWJ1dGVWYWx1ZShjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lk
IHVwZGF0ZUFzc29jaWF0ZWRBdHRyaWJ1dGVGcm9tVG9rZW5zKCk7CisKKyAgICBWZWN0b3I8QXRv
bWljU3RyaW5nPiYgdG9rZW5zKCk7CisgICAgY29uc3QgVmVjdG9yPEF0b21pY1N0cmluZz4mIHRv
a2VucygpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8RE9NVG9rZW5MaXN0Jj4oKnRoaXMpLnRv
a2VucygpOyB9CiAKICAgICBzdGF0aWMgYm9vbCB2YWxpZGF0ZVRva2VuKGNvbnN0IFN0cmluZyYs
IEV4Y2VwdGlvbkNvZGUmKTsKICAgICBzdGF0aWMgYm9vbCB2YWxpZGF0ZVRva2Vucyhjb25zdCBT
dHJpbmcqIHRva2Vucywgc2l6ZV90IGxlbmd0aCwgRXhjZXB0aW9uQ29kZSYpOwpAQCAtNzIsMTkg
Kzc2LDIxIEBAIHByaXZhdGU6CiAKICAgICBFbGVtZW50JiBtX2VsZW1lbnQ7CiAgICAgY29uc3Qg
V2ViQ29yZTo6UXVhbGlmaWVkTmFtZSYgbV9hdHRyaWJ1dGVOYW1lOwotICAgIGJvb2wgbV9pc1Vw
ZGF0aW5nQXR0cmlidXRlVmFsdWUgeyBmYWxzZSB9OworICAgIGJvb2wgbV9pblVwZGF0ZUFzc29j
aWF0ZWRBdHRyaWJ1dGVGcm9tVG9rZW5zIHsgZmFsc2UgfTsKKyAgICBib29sIG1fdG9rZW5zTmVl
ZFVwZGF0aW5nIHsgdHJ1ZSB9OwogICAgIFZlY3RvcjxBdG9taWNTdHJpbmc+IG1fdG9rZW5zOwog
ICAgIG11dGFibGUgQXRvbWljU3RyaW5nIG1fY2FjaGVkVmFsdWU7CiB9OwogCiBpbmxpbmUgdW5z
aWduZWQgRE9NVG9rZW5MaXN0OjpsZW5ndGgoKSBjb25zdAogewotICAgIHJldHVybiBtX3Rva2Vu
cy5zaXplKCk7CisgICAgcmV0dXJuIHRva2VucygpLnNpemUoKTsKIH0KIAogaW5saW5lIGNvbnN0
IEF0b21pY1N0cmluZyYgRE9NVG9rZW5MaXN0OjppdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdAog
ewotICAgIHJldHVybiBpbmRleCA8IG1fdG9rZW5zLnNpemUoKSA/IG1fdG9rZW5zW2luZGV4XSA6
IG51bGxBdG9tOworICAgIGF1dG8mIHRva2VucyA9IHRoaXMtPnRva2VucygpOworICAgIHJldHVy
biBpbmRleCA8IHRva2Vucy5zaXplKCkgPyB0b2tlbnNbaW5kZXhdIDogbnVsbEF0b207CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEFuY2hvckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxl
bWVudC5jcHAKaW5kZXggYjIyYTkzMDkwNTkzMDAwM2Y4OGY3OGFkNjZhMTRhMDVlOTQwMmRkMy4u
ZWM2ZjY0Mjk4YjcwZDkyZTIwNjIyZDdhZmIzN2IyMzM2N2ZiOTJjNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAKQEAgLTI1Miw3ICsyNTIsNyBAQCB2b2lkIEhU
TUxBbmNob3JFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1l
LCBjb25zdCBBdG9taWNTdAogICAgICAgICBpZiAoU3BhY2VTcGxpdFN0cmluZzo6c3BhY2VTcGxp
dFN0cmluZ0NvbnRhaW5zVmFsdWUodmFsdWUsICJub3JlZmVycmVyIiwgdHJ1ZSkpCiAgICAgICAg
ICAgICBtX2xpbmtSZWxhdGlvbnMgfD0gUmVsYXRpb25Ob1JlZmVycmVyOwogICAgICAgICBpZiAo
bV9yZWxMaXN0KQotICAgICAgICAgICAgbV9yZWxMaXN0LT5hdHRyaWJ1dGVWYWx1ZUNoYW5nZWQo
dmFsdWUpOworICAgICAgICAgICAgbV9yZWxMaXN0LT5hc3NvY2lhdGVkQXR0cmlidXRlVmFsdWVD
aGFuZ2VkKHZhbHVlKTsKICAgICB9CiAgICAgZWxzZQogICAgICAgICBIVE1MRWxlbWVudDo6cGFy
c2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSUZyYW1lRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVF
bGVtZW50LmNwcAppbmRleCA4MGMyMGUxNDUyNjI0MWNkZjZiNWIzOGQxNGJiOThiMjY4NTA4MDdi
Li5hYmM5YTkzNTcwMzFlNTZiMjI0N2U3YjkxMjcwMTRlMGM2NGNmOTNjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcApAQCAtODUsNyArODUsNyBAQCB2b2lkIEhU
TUxJRnJhbWVFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1l
LCBjb25zdCBBdG9taWNTdAogewogICAgIGlmIChuYW1lID09IHNhbmRib3hBdHRyKSB7CiAgICAg
ICAgIGlmIChtX3NhbmRib3gpCi0gICAgICAgICAgICBtX3NhbmRib3gtPmF0dHJpYnV0ZVZhbHVl
Q2hhbmdlZCh2YWx1ZSk7CisgICAgICAgICAgICBtX3NhbmRib3gtPmFzc29jaWF0ZWRBdHRyaWJ1
dGVWYWx1ZUNoYW5nZWQodmFsdWUpOwogCiAgICAgICAgIFN0cmluZyBpbnZhbGlkVG9rZW5zOwog
ICAgICAgICBzZXRTYW5kYm94RmxhZ3ModmFsdWUuaXNOdWxsKCkgPyBTYW5kYm94Tm9uZSA6IFNl
Y3VyaXR5Q29udGV4dDo6cGFyc2VTYW5kYm94UG9saWN5KHZhbHVlLCBpbnZhbGlkVG9rZW5zKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKaW5kZXggZjkwNzY0OWYxOWEx
ODU1ZmM4OGNiY2Q4ZjVkNTczZmI0NTg5ZWVhOC4uZDQ4MGRhYzEwZmQyNDVlMzgyNTdiMDEwNmM3
MTc1YjdjZWY5MDI0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0Vs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcApA
QCAtMTQxLDcgKzE0MSw3IEBAIHZvaWQgSFRNTExpbmtFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpCiAgICAgaWYgKG5hbWUg
PT0gcmVsQXR0cikgewogICAgICAgICBtX3JlbEF0dHJpYnV0ZSA9IExpbmtSZWxBdHRyaWJ1dGUo
dmFsdWUpOwogICAgICAgICBpZiAobV9yZWxMaXN0KQotICAgICAgICAgICAgbV9yZWxMaXN0LT5h
dHRyaWJ1dGVWYWx1ZUNoYW5nZWQodmFsdWUpOworICAgICAgICAgICAgbV9yZWxMaXN0LT5hc3Nv
Y2lhdGVkQXR0cmlidXRlVmFsdWVDaGFuZ2VkKHZhbHVlKTsKICAgICAgICAgcHJvY2VzcygpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTYwLDcgKzE2MCw3IEBAIHZvaWQgSFRNTExpbmtF
bGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBB
dG9taWNTdHJpCiAgICAgfQogICAgIGlmIChuYW1lID09IHNpemVzQXR0cikgewogICAgICAgICBp
ZiAobV9zaXplcykKLSAgICAgICAgICAgIG1fc2l6ZXMtPmF0dHJpYnV0ZVZhbHVlQ2hhbmdlZCh2
YWx1ZSk7CisgICAgICAgICAgICBtX3NpemVzLT5hc3NvY2lhdGVkQXR0cmlidXRlVmFsdWVDaGFu
Z2VkKHZhbHVlKTsKICAgICAgICAgcHJvY2VzcygpOwogICAgICAgICByZXR1cm47CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPdXRwdXRFbGVtZW50LmNwcAppbmRleCAwYjJkYWY0YWY0
N2I1YjFjMTZjYjMyMjIzN2E5M2I2NzdmYjEyMDlmLi4xYTk3YTkzYmY2OGMxNzQxMGEyMTAxZjcw
Y2I1OGIwM2Q4YmZhMzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPdXRw
dXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPdXRwdXRFbGVtZW50
LmNwcApAQCAtNjgsNyArNjgsNyBAQCB2b2lkIEhUTUxPdXRwdXRFbGVtZW50OjpwYXJzZUF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdAogewogICAgIGlm
IChuYW1lID09IGZvckF0dHIpIHsKICAgICAgICAgaWYgKG1fdG9rZW5zKQotICAgICAgICAgICAg
bV90b2tlbnMtPmF0dHJpYnV0ZVZhbHVlQ2hhbmdlZCh2YWx1ZSk7CisgICAgICAgICAgICBtX3Rv
a2Vucy0+YXNzb2NpYXRlZEF0dHJpYnV0ZVZhbHVlQ2hhbmdlZCh2YWx1ZSk7CiAgICAgfSBlbHNl
CiAgICAgICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZh
bHVlKTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276236</attachid>
            <date>2016-04-12 08:30:27 -0700</date>
            <delta_ts>2016-04-12 09:21:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-156474-20160412083036.patch</filename>
            <type>text/plain</type>
            <size>14224</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk5Mjk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjk1ZmYxMGNjNTcxNDAz
Mjk3OWI2MWYxNGY5MDFiYTZiYWYyYzVmNS4uMzkyODMzOGE0NzI2OWQ2YWNmNGQ4NmU4NjI1NDNm
YjUyZmY2OGFiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ5IEBACiAyMDE2LTA0LTExICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgTGF6aWx5IHVwZGF0ZSB0b2tl
bnMgaW4gRE9NVG9rZW5MaXN0IHdoZW4gdGhlIGFzc29jaWF0ZWQgYXR0cmlidXRlIHZhbHVlIGNo
YW5nZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
NjQ3NAorCisgICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1a2UgTml3YS4KKworICAgICAgICBMYXpp
bHkgdXBkYXRlIHRva2VucyBpbiBET01Ub2tlbkxpc3Qgd2hlbiB0aGUgYXNzb2NpYXRlZCBhdHRy
aWJ1dGUgdmFsdWUKKyAgICAgICAgY2hhbmdlcyBmb3IgcGVyZm9ybWFuY2UuIENvbnN0cnVjdGlu
ZyB0aGUgc2FuaXRpemVkIHZlY3RvciBvZiB0b2tlbnMKKyAgICAgICAgZXZlcnkgdGltZSB0aGUg
YXNzb2NpYXRlZCBFbGVtZW50IGF0dHJpYnV0ZSBjaGFuZ2VzIGlzIHRvbyBleHBlbnNpdmUuCisg
ICAgICAgIEluc3RlYWQsIHdlIG1hcmsgdGhlIHZlY3RvciBhcyBkaXJ0eSB3aGVuZXZlciB0aGUg
YXR0cmlidXRlIGNoYW5nZXMsIGFuZAorICAgICAgICB3ZSBvbmx5IGNvbnN0cnVjdCB0aGUgc2Fu
aXRpemVkIHZlY3RvciB3aGVuIGl0IGlzIGFjdHVhbGx5IHJlcXVpcmVkLgorCisgICAgICAgIEFs
c28gZG8gc29tZSByZW5hbWluZyBmb3IgY2xhcml0eS4KKworICAgICAgICBUaGVyZSBpcyBubyB3
ZWItZXhwb3NlZCBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpjbGFzc0F0dHJpYnV0ZUNoYW5nZWQpOgorICAg
ICAgICAqIGh0bWwvRE9NVG9rZW5MaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVRva2Vu
TGlzdDo6Y29udGFpbnMpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVG9rZW5MaXN0OjphZGRJbnRl
cm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpET01Ub2tlbkxpc3Q6OnJlbW92ZUludGVybmFsKToK
KyAgICAgICAgKFdlYkNvcmU6OkRPTVRva2VuTGlzdDo6dG9nZ2xlKToKKyAgICAgICAgKFdlYkNv
cmU6OkRPTVRva2VuTGlzdDo6dmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVG9rZW5MaXN0
OjpzZXRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpET01Ub2tlbkxpc3Q6OnVwZGF0ZVRva2Vu
c0Zyb21BdHRyaWJ1dGVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpET01Ub2tlbkxpc3Q6OmFz
c29jaWF0ZWRBdHRyaWJ1dGVWYWx1ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVG9r
ZW5MaXN0Ojp1cGRhdGVBc3NvY2lhdGVkQXR0cmlidXRlRnJvbVRva2Vucyk6CisgICAgICAgIChX
ZWJDb3JlOjpET01Ub2tlbkxpc3Q6OnRva2Vucyk6CisgICAgICAgIChXZWJDb3JlOjpET01Ub2tl
bkxpc3Q6OkRPTVRva2VuTGlzdCk6IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9ET01Ub2tlbkxp
c3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVRva2VuTGlzdDo6dG9rZW5zKToKKyAgICAgICAg
KFdlYkNvcmU6OkRPTVRva2VuTGlzdDo6bGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVRv
a2VuTGlzdDo6aXRlbSk6CisgICAgICAgICogaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MQW5jaG9yRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAg
ICAgICAqIGh0bWwvSFRNTElGcmFtZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TElGcmFtZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxMaW5r
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OnBhcnNlQXR0
cmlidXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxPdXRwdXRFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxPdXRwdXRFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisKKzIwMTYtMDQt
MTEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKwogICAgICAgICBNZXJnZSBBdHRy
aWJ1dGVkRE9NVG9rZW5MaXN0IGludG8gRE9NVG9rZW5MaXN0CiAgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTY0NjgKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3Bw
CmluZGV4IGIzODJkY2VkYTE2NDgwNjU2M2U3MzZhYjExNWQwNDFlYTllOGY4ZmIuLmFhYjEyNTU0
MmZlNDFkNGFmMjZlOTg4MWVmMTZkOTRiMDJlOGRjNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAK
QEAgLTEzMzAsNyArMTMzMCw3IEBAIHZvaWQgRWxlbWVudDo6Y2xhc3NBdHRyaWJ1dGVDaGFuZ2Vk
KGNvbnN0IEF0b21pY1N0cmluZyYgbmV3Q2xhc3NTdHJpbmcpCiAKICAgICBpZiAoaGFzUmFyZURh
dGEoKSkgewogICAgICAgICBpZiAoYXV0byogY2xhc3NMaXN0ID0gZWxlbWVudFJhcmVEYXRhKCkt
PmNsYXNzTGlzdCgpKQotICAgICAgICAgICAgY2xhc3NMaXN0LT5hdHRyaWJ1dGVWYWx1ZUNoYW5n
ZWQobmV3Q2xhc3NTdHJpbmcpOworICAgICAgICAgICAgY2xhc3NMaXN0LT5hc3NvY2lhdGVkQXR0
cmlidXRlVmFsdWVDaGFuZ2VkKG5ld0NsYXNzU3RyaW5nKTsKICAgICB9CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVG9rZW5MaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvRE9NVG9rZW5MaXN0LmNwcAppbmRleCBiMGI3NmYyOWRjZTlmNzRkMTA0NmFjZGFhZmYx
OGFmZWRkM2QxNThhLi44NTY3YWYyZmE5NjU5NDM1ZWM4NmMxMTgwMjY5ZTkzZmVhZjYyODMwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVRva2VuTGlzdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9ET01Ub2tlbkxpc3QuY3BwCkBAIC00MCw3ICs0MCw2IEBAIERPTVRv
a2VuTGlzdDo6RE9NVG9rZW5MaXN0KEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5h
bWUmIGF0dHJpYnV0ZU5hbWUpCiAgICAgOiBtX2VsZW1lbnQoZWxlbWVudCkKICAgICAsIG1fYXR0
cmlidXRlTmFtZShhdHRyaWJ1dGVOYW1lKQogewotICAgIHNldFZhbHVlSW50ZXJuYWwobV9lbGVt
ZW50LmdldEF0dHJpYnV0ZShtX2F0dHJpYnV0ZU5hbWUpKTsKIH0KIAogYm9vbCBET01Ub2tlbkxp
c3Q6OnZhbGlkYXRlVG9rZW4oY29uc3QgU3RyaW5nJiB0b2tlbiwgRXhjZXB0aW9uQ29kZSYgZWMp
CkBAIC03MiwyNiArNzEsMjcgQEAgYm9vbCBET01Ub2tlbkxpc3Q6OnZhbGlkYXRlVG9rZW5zKGNv
bnN0IFN0cmluZyogdG9rZW5zLCBzaXplX3QgbGVuZ3RoLCBFeGNlcHRpb24KIAogYm9vbCBET01U
b2tlbkxpc3Q6OmNvbnRhaW5zKGNvbnN0IEF0b21pY1N0cmluZyYgdG9rZW4pIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIG1fdG9rZW5zLmNvbnRhaW5zKHRva2VuKTsKKyAgICByZXR1cm4gdG9rZW5zKCku
Y29udGFpbnModG9rZW4pOwogfQogCi1pbmxpbmUgdm9pZCBET01Ub2tlbkxpc3Q6OmFkZEludGVy
bmFsKGNvbnN0IFN0cmluZyogdG9rZW5zLCBzaXplX3QgbGVuZ3RoLCBFeGNlcHRpb25Db2RlJiBl
YykKK2lubGluZSB2b2lkIERPTVRva2VuTGlzdDo6YWRkSW50ZXJuYWwoY29uc3QgU3RyaW5nKiBu
ZXdUb2tlbnMsIHNpemVfdCBsZW5ndGgsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIC8vIFRo
aXMgaXMgdXN1YWxseSBjYWxsZWQgd2l0aCBhIHNpbmdsZSB0b2tlbi4KLSAgICBWZWN0b3I8QXRv
bWljU3RyaW5nLCAxPiB1bmlxdWVUb2tlbnM7Ci0gICAgdW5pcXVlVG9rZW5zLnJlc2VydmVJbml0
aWFsQ2FwYWNpdHkobGVuZ3RoKTsKKyAgICBWZWN0b3I8QXRvbWljU3RyaW5nLCAxPiB1bmlxdWVO
ZXdUb2tlbnM7CisgICAgdW5pcXVlTmV3VG9rZW5zLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobGVu
Z3RoKTsKIAorICAgIGF1dG8mIHRva2VucyA9IHRoaXMtPnRva2VucygpOwogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgaWYgKCF2YWxpZGF0ZVRva2Vu
KHRva2Vuc1tpXSwgZWMpKQorICAgICAgICBpZiAoIXZhbGlkYXRlVG9rZW4obmV3VG9rZW5zW2ld
LCBlYykpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGlmICghbV90b2tlbnMuY29udGFp
bnModG9rZW5zW2ldKSAmJiAhdW5pcXVlVG9rZW5zLmNvbnRhaW5zKHRva2Vuc1tpXSkpCi0gICAg
ICAgICAgICB1bmlxdWVUb2tlbnMudW5jaGVja2VkQXBwZW5kKHRva2Vuc1tpXSk7CisgICAgICAg
IGlmICghdG9rZW5zLmNvbnRhaW5zKG5ld1Rva2Vuc1tpXSkgJiYgIXVuaXF1ZU5ld1Rva2Vucy5j
b250YWlucyhuZXdUb2tlbnNbaV0pKQorICAgICAgICAgICAgdW5pcXVlTmV3VG9rZW5zLnVuY2hl
Y2tlZEFwcGVuZChuZXdUb2tlbnNbaV0pOwogICAgIH0KIAotICAgIGlmICghdW5pcXVlVG9rZW5z
LmlzRW1wdHkoKSkKLSAgICAgICAgbV90b2tlbnMuYXBwZW5kVmVjdG9yKHVuaXF1ZVRva2Vucyk7
CisgICAgaWYgKCF1bmlxdWVOZXdUb2tlbnMuaXNFbXB0eSgpKQorICAgICAgICB0b2tlbnMuYXBw
ZW5kVmVjdG9yKHVuaXF1ZU5ld1Rva2Vucyk7CiAKLSAgICB1cGRhdGVBZnRlclRva2VuQ2hhbmdl
KCk7CisgICAgdXBkYXRlQXNzb2NpYXRlZEF0dHJpYnV0ZUZyb21Ub2tlbnMoKTsKIH0KIAogdm9p
ZCBET01Ub2tlbkxpc3Q6OmFkZChjb25zdCBWZWN0b3I8U3RyaW5nPiYgdG9rZW5zLCBFeGNlcHRp
b25Db2RlJiBlYykKQEAgLTEwNCwxNSArMTA0LDE2IEBAIHZvaWQgRE9NVG9rZW5MaXN0OjphZGQo
Y29uc3QgV1RGOjpBdG9taWNTdHJpbmcmIHRva2VuLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICBh
ZGRJbnRlcm5hbCgmdG9rZW4uc3RyaW5nKCksIDEsIGVjKTsKIH0KIAotaW5saW5lIHZvaWQgRE9N
VG9rZW5MaXN0OjpyZW1vdmVJbnRlcm5hbChjb25zdCBTdHJpbmcqIHRva2Vucywgc2l6ZV90IGxl
bmd0aCwgRXhjZXB0aW9uQ29kZSYgZWMpCitpbmxpbmUgdm9pZCBET01Ub2tlbkxpc3Q6OnJlbW92
ZUludGVybmFsKGNvbnN0IFN0cmluZyogdG9rZW5zVG9SZW1vdmUsIHNpemVfdCBsZW5ndGgsIEV4
Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIGlmICghdmFsaWRhdGVUb2tlbnModG9rZW5zLCBsZW5n
dGgsIGVjKSkKKyAgICBpZiAoIXZhbGlkYXRlVG9rZW5zKHRva2Vuc1RvUmVtb3ZlLCBsZW5ndGgs
IGVjKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgYXV0byYgdG9rZW5zID0gdGhpcy0+dG9rZW5z
KCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkKLSAgICAgICAgbV90
b2tlbnMucmVtb3ZlRmlyc3QodG9rZW5zW2ldKTsKKyAgICAgICAgdG9rZW5zLnJlbW92ZUZpcnN0
KHRva2Vuc1RvUmVtb3ZlW2ldKTsKIAotICAgIHVwZGF0ZUFmdGVyVG9rZW5DaGFuZ2UoKTsKKyAg
ICB1cGRhdGVBc3NvY2lhdGVkQXR0cmlidXRlRnJvbVRva2VucygpOwogfQogCiB2b2lkIERPTVRv
a2VuTGlzdDo6cmVtb3ZlKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0b2tlbnMsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQpAQCAtMTMwLDEwICsxMzEsMTIgQEAgYm9vbCBET01Ub2tlbkxpc3Q6OnRvZ2dsZShj
b25zdCBBdG9taWNTdHJpbmcmIHRva2VuLCBPcHRpb25hbDxib29sPiBmb3JjZSwgRXhjZXAKICAg
ICBpZiAoIXZhbGlkYXRlVG9rZW4odG9rZW4sIGVjKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgaWYgKG1fdG9rZW5zLmNvbnRhaW5zKHRva2VuKSkgeworICAgIGF1dG8mIHRva2VucyA9
IHRoaXMtPnRva2VucygpOworCisgICAgaWYgKHRva2Vucy5jb250YWlucyh0b2tlbikpIHsKICAg
ICAgICAgaWYgKCFmb3JjZS52YWx1ZU9yKGZhbHNlKSkgewotICAgICAgICAgICAgbV90b2tlbnMu
cmVtb3ZlRmlyc3QodG9rZW4pOwotICAgICAgICAgICAgdXBkYXRlQWZ0ZXJUb2tlbkNoYW5nZSgp
OworICAgICAgICAgICAgdG9rZW5zLnJlbW92ZUZpcnN0KHRva2VuKTsKKyAgICAgICAgICAgIHVw
ZGF0ZUFzc29jaWF0ZWRBdHRyaWJ1dGVGcm9tVG9rZW5zKCk7CiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xNDIsOCArMTQ1LDgg
QEAgYm9vbCBET01Ub2tlbkxpc3Q6OnRvZ2dsZShjb25zdCBBdG9taWNTdHJpbmcmIHRva2VuLCBP
cHRpb25hbDxib29sPiBmb3JjZSwgRXhjZXAKICAgICBpZiAoZm9yY2UgJiYgIWZvcmNlLnZhbHVl
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIG1fdG9rZW5zLmFwcGVuZCh0b2tlbik7
Ci0gICAgdXBkYXRlQWZ0ZXJUb2tlbkNoYW5nZSgpOworICAgIHRva2Vucy5hcHBlbmQodG9rZW4p
OworICAgIHVwZGF0ZUFzc29jaWF0ZWRBdHRyaWJ1dGVGcm9tVG9rZW5zKCk7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKQEAgLTE1Miw3ICsxNTUsNyBAQCBjb25zdCBBdG9taWNTdHJpbmcmIERPTVRv
a2VuTGlzdDo6dmFsdWUoKSBjb25zdAogICAgIGlmIChtX2NhY2hlZFZhbHVlLmlzTnVsbCgpKSB7
CiAgICAgICAgIC8vIGh0dHBzOi8vZG9tLnNwZWMud2hhdHdnLm9yZy8jY29uY2VwdC1vcmRlcmVk
LXNldC1zZXJpYWxpemVyCiAgICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICAgICAg
Zm9yIChhdXRvJiB0b2tlbiA6IG1fdG9rZW5zKSB7CisgICAgICAgIGZvciAoYXV0byYgdG9rZW4g
OiB0b2tlbnMoKSkgewogICAgICAgICAgICAgaWYgKCFidWlsZGVyLmlzRW1wdHkoKSkKICAgICAg
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcpOwogICAgICAgICAgICAgYnVpbGRlci5hcHBl
bmQodG9rZW4pOwpAQCAtMTYwLDE2ICsxNjMsMTcgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBET01U
b2tlbkxpc3Q6OnZhbHVlKCkgY29uc3QKICAgICAgICAgbV9jYWNoZWRWYWx1ZSA9IGJ1aWxkZXIu
dG9BdG9taWNTdHJpbmcoKTsKICAgICAgICAgQVNTRVJUKCFtX2NhY2hlZFZhbHVlLmlzTnVsbCgp
KTsKICAgICB9CisgICAgQVNTRVJUKCFtX3Rva2Vuc05lZWRVcGRhdGluZyk7CiAgICAgcmV0dXJu
IG1fY2FjaGVkVmFsdWU7CiB9CiAKIHZvaWQgRE9NVG9rZW5MaXN0OjpzZXRWYWx1ZShjb25zdCBT
dHJpbmcmIHZhbHVlKQogewotICAgIHNldFZhbHVlSW50ZXJuYWwodmFsdWUpOwotICAgIHVwZGF0
ZUFmdGVyVG9rZW5DaGFuZ2UoKTsKKyAgICB1cGRhdGVUb2tlbnNGcm9tQXR0cmlidXRlVmFsdWUo
dmFsdWUpOworICAgIHVwZGF0ZUFzc29jaWF0ZWRBdHRyaWJ1dGVGcm9tVG9rZW5zKCk7CiB9CiAK
LXZvaWQgRE9NVG9rZW5MaXN0OjpzZXRWYWx1ZUludGVybmFsKGNvbnN0IFdURjo6U3RyaW5nJiB2
YWx1ZSkKK3ZvaWQgRE9NVG9rZW5MaXN0Ojp1cGRhdGVUb2tlbnNGcm9tQXR0cmlidXRlVmFsdWUo
Y29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICAvLyBDbGVhciB0b2tlbnMgYnV0IG5vdCBjYXBh
Y2l0eS4KICAgICBtX3Rva2Vucy5zaHJpbmsoMCk7CkBAIC0xOTUsMjQgKzE5OSwzOCBAQCB2b2lk
IERPTVRva2VuTGlzdDo6c2V0VmFsdWVJbnRlcm5hbChjb25zdCBXVEY6OlN0cmluZyYgdmFsdWUp
CiAgICAgfQogCiAgICAgbV90b2tlbnMuc2hyaW5rVG9GaXQoKTsKKyAgICBtX3Rva2Vuc05lZWRV
cGRhdGluZyA9IGZhbHNlOwogICAgIG1fY2FjaGVkVmFsdWUgPSBudWxsQXRvbTsKIH0KIAotdm9p
ZCBET01Ub2tlbkxpc3Q6OmF0dHJpYnV0ZVZhbHVlQ2hhbmdlZChjb25zdCBBdG9taWNTdHJpbmcm
IG5ld1ZhbHVlKQordm9pZCBET01Ub2tlbkxpc3Q6OmFzc29jaWF0ZWRBdHRyaWJ1dGVWYWx1ZUNo
YW5nZWQoY29uc3QgQXRvbWljU3RyaW5nJikKIHsKICAgICAvLyBEbyBub3QgcmVzZXQgdGhlIERP
TVRva2VuTGlzdCB2YWx1ZSBpZiB0aGUgYXR0cmlidXRlIHZhbHVlIHdhcyBjaGFuZ2VkIGJ5IHVz
LgotICAgIGlmIChtX2lzVXBkYXRpbmdBdHRyaWJ1dGVWYWx1ZSkKKyAgICBpZiAobV9pblVwZGF0
ZUFzc29jaWF0ZWRBdHRyaWJ1dGVGcm9tVG9rZW5zKQogICAgICAgICByZXR1cm47CiAKLSAgICBz
ZXRWYWx1ZUludGVybmFsKG5ld1ZhbHVlKTsKKyAgICBtX3Rva2Vuc05lZWRVcGRhdGluZyA9IHRy
dWU7CisgICAgbV9jYWNoZWRWYWx1ZSA9IG51bGxBdG9tOwogfQogCi12b2lkIERPTVRva2VuTGlz
dDo6dXBkYXRlQWZ0ZXJUb2tlbkNoYW5nZSgpCisvLyBodHRwczovL2RvbS5zcGVjLndoYXR3Zy5v
cmcvI2NvbmNlcHQtZHRsLXVwZGF0ZQordm9pZCBET01Ub2tlbkxpc3Q6OnVwZGF0ZUFzc29jaWF0
ZWRBdHRyaWJ1dGVGcm9tVG9rZW5zKCkKIHsKKyAgICBBU1NFUlQoIW1fdG9rZW5zTmVlZFVwZGF0
aW5nKTsKKwogICAgIG1fY2FjaGVkVmFsdWUgPSBudWxsQXRvbTsKIAotICAgIFRlbXBvcmFyeUNo
YW5nZTxib29sPiBpbkF0dHJpYnV0ZVVwZGF0ZShtX2lzVXBkYXRpbmdBdHRyaWJ1dGVWYWx1ZSwg
dHJ1ZSk7Ci0gICAgbV9lbGVtZW50LnNldEF0dHJpYnV0ZShtX2F0dHJpYnV0ZU5hbWUsIHZhbHVl
KCkpOworICAgIFRlbXBvcmFyeUNoYW5nZTxib29sPiBpbkF0dHJpYnV0ZVVwZGF0ZShtX2luVXBk
YXRlQXNzb2NpYXRlZEF0dHJpYnV0ZUZyb21Ub2tlbnMsIHRydWUpOworICAgIG1fZWxlbWVudC5z
ZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKG1fYXR0cmlidXRlTmFtZSwgdmFsdWUo
KSk7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShtX2NhY2hlZFZhbHVlLCAiQ2FsbGluZyB2YWx1
ZSgpIHNob3VsZCBoYXZlIGNhY2hlZCBpdHMgcmVzdWx0cyIpOworfQorCitWZWN0b3I8QXRvbWlj
U3RyaW5nPiYgRE9NVG9rZW5MaXN0Ojp0b2tlbnMoKQoreworICAgIGlmIChtX3Rva2Vuc05lZWRV
cGRhdGluZykKKyAgICAgICAgdXBkYXRlVG9rZW5zRnJvbUF0dHJpYnV0ZVZhbHVlKG1fZWxlbWVu
dC5mYXN0R2V0QXR0cmlidXRlKG1fYXR0cmlidXRlTmFtZSkpOworICAgIEFTU0VSVCghbV90b2tl
bnNOZWVkVXBkYXRpbmcpOworICAgIHJldHVybiBtX3Rva2VuczsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9ET01Ub2tlbkxpc3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVG9rZW5MaXN0LmgKaW5kZXggN2Q2NTk1NzI4Y2I1
ODE2YzM1MGU2ODU5MjgyY2IwMTEzYTAyZGJmZS4uZTUwMDdmMTNkNjA5ZDA0ZTc5ZmM1ZGFjZWE0
YzdmM2RhZWU3NWExYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9ET01Ub2tlbkxp
c3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVRva2VuTGlzdC5oCkBAIC0zOSw3ICsz
OSw4IEBAIGNsYXNzIERPTVRva2VuTGlzdCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRE9N
VG9rZW5MaXN0KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgRE9NVG9r
ZW5MaXN0KEVsZW1lbnQmLCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKTsKLSAg
ICB2b2lkIGF0dHJpYnV0ZVZhbHVlQ2hhbmdlZChjb25zdCBBdG9taWNTdHJpbmcmKTsKKworICAg
IHZvaWQgYXNzb2NpYXRlZEF0dHJpYnV0ZVZhbHVlQ2hhbmdlZChjb25zdCBBdG9taWNTdHJpbmcm
KTsKIAogICAgIHZvaWQgcmVmKCkgeyBtX2VsZW1lbnQucmVmKCk7IH0KICAgICB2b2lkIGRlcmVm
KCkgeyBtX2VsZW1lbnQuZGVyZWYoKTsgfQpAQCAtNjIsOCArNjMsMTEgQEAgcHVibGljOgogICAg
IGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUoKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICB2b2lk
IHNldFZhbHVlSW50ZXJuYWwoY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCB1cGRhdGVBZnRlclRv
a2VuQ2hhbmdlKCk7CisgICAgdm9pZCB1cGRhdGVUb2tlbnNGcm9tQXR0cmlidXRlVmFsdWUoY29u
c3QgU3RyaW5nJik7CisgICAgdm9pZCB1cGRhdGVBc3NvY2lhdGVkQXR0cmlidXRlRnJvbVRva2Vu
cygpOworCisgICAgVmVjdG9yPEF0b21pY1N0cmluZz4mIHRva2VucygpOworICAgIGNvbnN0IFZl
Y3RvcjxBdG9taWNTdHJpbmc+JiB0b2tlbnMoKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PERP
TVRva2VuTGlzdCY+KCp0aGlzKS50b2tlbnMoKTsgfQogCiAgICAgc3RhdGljIGJvb2wgdmFsaWRh
dGVUb2tlbihjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7CiAgICAgc3RhdGljIGJvb2wg
dmFsaWRhdGVUb2tlbnMoY29uc3QgU3RyaW5nKiB0b2tlbnMsIHNpemVfdCBsZW5ndGgsIEV4Y2Vw
dGlvbkNvZGUmKTsKQEAgLTcyLDE5ICs3NiwyMSBAQCBwcml2YXRlOgogCiAgICAgRWxlbWVudCYg
bV9lbGVtZW50OwogICAgIGNvbnN0IFdlYkNvcmU6OlF1YWxpZmllZE5hbWUmIG1fYXR0cmlidXRl
TmFtZTsKLSAgICBib29sIG1faXNVcGRhdGluZ0F0dHJpYnV0ZVZhbHVlIHsgZmFsc2UgfTsKKyAg
ICBib29sIG1faW5VcGRhdGVBc3NvY2lhdGVkQXR0cmlidXRlRnJvbVRva2VucyB7IGZhbHNlIH07
CisgICAgYm9vbCBtX3Rva2Vuc05lZWRVcGRhdGluZyB7IHRydWUgfTsKICAgICBWZWN0b3I8QXRv
bWljU3RyaW5nPiBtX3Rva2VuczsKICAgICBtdXRhYmxlIEF0b21pY1N0cmluZyBtX2NhY2hlZFZh
bHVlOwogfTsKIAogaW5saW5lIHVuc2lnbmVkIERPTVRva2VuTGlzdDo6bGVuZ3RoKCkgY29uc3QK
IHsKLSAgICByZXR1cm4gbV90b2tlbnMuc2l6ZSgpOworICAgIHJldHVybiB0b2tlbnMoKS5zaXpl
KCk7CiB9CiAKIGlubGluZSBjb25zdCBBdG9taWNTdHJpbmcmIERPTVRva2VuTGlzdDo6aXRlbSh1
bnNpZ25lZCBpbmRleCkgY29uc3QKIHsKLSAgICByZXR1cm4gaW5kZXggPCBtX3Rva2Vucy5zaXpl
KCkgPyBtX3Rva2Vuc1tpbmRleF0gOiBudWxsQXRvbTsKKyAgICBhdXRvJiB0b2tlbnMgPSB0aGlz
LT50b2tlbnMoKTsKKyAgICByZXR1cm4gaW5kZXggPCB0b2tlbnMuc2l6ZSgpID8gdG9rZW5zW2lu
ZGV4XSA6IG51bGxBdG9tOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCmluZGV4IGIyMmE5MzA5MDU5MzAwMDNmODhm
NzhhZDY2YTE0YTA1ZTk0MDJkZDMuLmVjNmY2NDI5OGI3MGQ5MmUyMDYyMmQ3YWZiMzdiMjMzNjdm
YjkyYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCkBAIC0y
NTIsNyArMjUyLDcgQEAgdm9pZCBIVE1MQW5jaG9yRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3QKICAgICAgICAgaWYgKFNwYWNl
U3BsaXRTdHJpbmc6OnNwYWNlU3BsaXRTdHJpbmdDb250YWluc1ZhbHVlKHZhbHVlLCAibm9yZWZl
cnJlciIsIHRydWUpKQogICAgICAgICAgICAgbV9saW5rUmVsYXRpb25zIHw9IFJlbGF0aW9uTm9S
ZWZlcnJlcjsKICAgICAgICAgaWYgKG1fcmVsTGlzdCkKLSAgICAgICAgICAgIG1fcmVsTGlzdC0+
YXR0cmlidXRlVmFsdWVDaGFuZ2VkKHZhbHVlKTsKKyAgICAgICAgICAgIG1fcmVsTGlzdC0+YXNz
b2NpYXRlZEF0dHJpYnV0ZVZhbHVlQ2hhbmdlZCh2YWx1ZSk7CiAgICAgfQogICAgIGVsc2UKICAg
ICAgICAgSFRNTEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAKaW5kZXggODBjMjBlMTQ1MjYyNDFjZGY2
YjViMzhkMTRiYjk4YjI2ODUwODA3Yi4uYWJjOWE5MzU3MDMxZTU2YjIyNDdlN2I5MTI3MDE0ZTBj
NjRjZjkzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAKQEAg
LTg1LDcgKzg1LDcgQEAgdm9pZCBIVE1MSUZyYW1lRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3QKIHsKICAgICBpZiAobmFtZSA9
PSBzYW5kYm94QXR0cikgewogICAgICAgICBpZiAobV9zYW5kYm94KQotICAgICAgICAgICAgbV9z
YW5kYm94LT5hdHRyaWJ1dGVWYWx1ZUNoYW5nZWQodmFsdWUpOworICAgICAgICAgICAgbV9zYW5k
Ym94LT5hc3NvY2lhdGVkQXR0cmlidXRlVmFsdWVDaGFuZ2VkKHZhbHVlKTsKIAogICAgICAgICBT
dHJpbmcgaW52YWxpZFRva2VuczsKICAgICAgICAgc2V0U2FuZGJveEZsYWdzKHZhbHVlLmlzTnVs
bCgpID8gU2FuZGJveE5vbmUgOiBTZWN1cml0eUNvbnRleHQ6OnBhcnNlU2FuZGJveFBvbGljeSh2
YWx1ZSwgaW52YWxpZFRva2VucykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTGlua0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQu
Y3BwCmluZGV4IGY5MDc2NDlmMTlhMTg1NWZjODhjYmNkOGY1ZDU3M2ZiNDU4OWVlYTguLmQ0ODBk
YWMxMGZkMjQ1ZTM4MjU3YjAxMDZjNzE3NWI3Y2VmOTAyNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxMaW5rRWxlbWVudC5jcHAKQEAgLTE0MSw3ICsxNDEsNyBAQCB2b2lkIEhUTUxMaW5rRWxl
bWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRv
bWljU3RyaQogICAgIGlmIChuYW1lID09IHJlbEF0dHIpIHsKICAgICAgICAgbV9yZWxBdHRyaWJ1
dGUgPSBMaW5rUmVsQXR0cmlidXRlKHZhbHVlKTsKICAgICAgICAgaWYgKG1fcmVsTGlzdCkKLSAg
ICAgICAgICAgIG1fcmVsTGlzdC0+YXR0cmlidXRlVmFsdWVDaGFuZ2VkKHZhbHVlKTsKKyAgICAg
ICAgICAgIG1fcmVsTGlzdC0+YXNzb2NpYXRlZEF0dHJpYnV0ZVZhbHVlQ2hhbmdlZCh2YWx1ZSk7
CiAgICAgICAgIHByb2Nlc3MoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE2MCw3ICsx
NjAsNyBAQCB2b2lkIEhUTUxMaW5rRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaQogICAgIH0KICAgICBpZiAobmFtZSA9PSBz
aXplc0F0dHIpIHsKICAgICAgICAgaWYgKG1fc2l6ZXMpCi0gICAgICAgICAgICBtX3NpemVzLT5h
dHRyaWJ1dGVWYWx1ZUNoYW5nZWQodmFsdWUpOworICAgICAgICAgICAgbV9zaXplcy0+YXNzb2Np
YXRlZEF0dHJpYnV0ZVZhbHVlQ2hhbmdlZCh2YWx1ZSk7CiAgICAgICAgIHByb2Nlc3MoKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE91dHB1dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3V0cHV0RWxlbWVu
dC5jcHAKaW5kZXggMGIyZGFmNGFmNDdiNWIxYzE2Y2IzMjIyMzdhOTNiNjc3ZmIxMjA5Zi4uMWE5
N2E5M2JmNjhjMTc0MTBhMjEwMWY3MGNiNThiMDNkOGJmYTM1NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MT3V0cHV0RWxlbWVudC5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBIVE1MT3V0
cHV0RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29u
c3QgQXRvbWljU3QKIHsKICAgICBpZiAobmFtZSA9PSBmb3JBdHRyKSB7CiAgICAgICAgIGlmICht
X3Rva2VucykKLSAgICAgICAgICAgIG1fdG9rZW5zLT5hdHRyaWJ1dGVWYWx1ZUNoYW5nZWQodmFs
dWUpOworICAgICAgICAgICAgbV90b2tlbnMtPmFzc29jaWF0ZWRBdHRyaWJ1dGVWYWx1ZUNoYW5n
ZWQodmFsdWUpOwogICAgIH0gZWxzZQogICAgICAgICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojpw
YXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7CiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>