<?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>216241</bug_id>
          
          <creation_ts>2020-09-07 04:27:54 -0700</creation_ts>
          <short_desc>Comparing styles with large but identical custom property maps is slow</short_desc>
          <delta_ts>2020-09-08 01:48:44 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>changseok</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>pdr</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1686337</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-09-07 04:27:54 -0700</bug_when>
    <thetext>In full style rebuild we lose sharing of equal StyleCustomPropertyData between the old and the new style. Custom properties are usually defined in document element and this lack of sharing inherits to all elements. Without sharing equality comparisons end up requiring deep comparison, which can be slow if there are thousands of properties.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686338</commentid>
    <comment_count>1</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-09-07 04:54:22 -0700</bug_when>
    <thetext>&lt;rdar://problem/67946605&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686361</commentid>
    <comment_count>2</comment_count>
      <attachid>408181</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-09-07 08:14:07 -0700</bug_when>
    <thetext>Created attachment 408181
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686384</commentid>
    <comment_count>3</comment_count>
      <attachid>408181</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-09-07 10:20:03 -0700</bug_when>
    <thetext>Comment on attachment 408181
patch

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

&gt; Source/WebCore/ChangeLog:18
&gt; +        Going to full screen and back on youtube, this patch reduces time in the longest style update from ~460ms to ~90ms.

Amazing.

&gt; Source/WebCore/rendering/style/RenderStyle.cpp:2337
&gt; +    if (m_rareInheritedData-&gt;customProperties.ptr() == other.m_rareInheritedData-&gt;customProperties.ptr())
&gt; +        return;
&gt; +    if (*m_rareInheritedData-&gt;customProperties == *other.m_rareInheritedData-&gt;customProperties)
&gt; +        const_cast&lt;StyleRareInheritedData&amp;&gt;(m_rareInheritedData.get()).customProperties = other.m_rareInheritedData-&gt;customProperties;

Here’s another way to write it that I like slightly better:

    auto&amp; properties = const_cast&lt;StyleRareInheritedData&amp;&gt;(m_rareInheritedData-&gt;customProperties);
    auto&amp; otherProperties = other.m_rareInheritedData-&gt;customProperties;
    if (properties.ptr() != otherProperties.ptr() &amp;&amp; *properties == *otherProperties)
        priorities = otherProperties;

Not sure you will prefer it.

&gt; Source/WebCore/style/StyleBuilder.cpp:196
&gt; +        Ref&lt;CSSCustomPropertyValue&gt; valueToApply = downcast&lt;CSSCustomPropertyValue&gt;(*property.cssValue[index]);

Could we use auto and makeRef here?

&gt; Source/WebCore/style/StyleBuilder.cpp:233
&gt; +        Ref&lt;CSSCustomPropertyValue&gt; valueToApply = downcast&lt;CSSCustomPropertyValue&gt;(*property.cssValue[index]);

Could we use auto and makeRef here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686503</commentid>
    <comment_count>4</comment_count>
      <attachid>408216</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-09-08 00:40:25 -0700</bug_when>
    <thetext>Created attachment 408216
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686517</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-09-08 01:48:42 -0700</bug_when>
    <thetext>Committed r266717: &lt;https://trac.webkit.org/changeset/266717&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 408216.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>408181</attachid>
            <date>2020-09-07 08:14:07 -0700</date>
            <delta_ts>2020-09-08 00:40:25 -0700</delta_ts>
            <desc>patch</desc>
            <filename>custom-property-deduplicate-2.patch</filename>
            <type>text/plain</type>
            <size>8644</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAxODQ5MWJhZjU2ZGMuLjE2OWY1YjkzMTcwOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDUwIEBACisyMDIwLTA5LTA3ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNv
bT4KKworICAgICAgICBDb21wYXJpbmcgc3R5bGVzIHdpdGggbGFyZ2UgYnV0IGlkZW50aWNhbCBj
dXN0b20gcHJvcGVydHkgbWFwcyBpcyBzbG93CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTYyNDEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY3OTQ2
NjA1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElu
IGEgZnVsbCBzdHlsZSByZWJ1aWxkIHdlIGxvc2Ugc2hhcmluZyBvZiBlcXVhbCBTdHlsZUN1c3Rv
bVByb3BlcnR5RGF0YXMgYmV0d2VlbiB0aGUgb2xkIGFuZCB0aGUgbmV3IHN0eWxlLgorICAgICAg
ICBDdXN0b20gcHJvcGVydGllcyBhcmUgdXN1YWxseSBkZWZpbmVkIGluIGRvY3VtZW50IGVsZW1l
bnQgYW5kIHRoaXMgbGFjayBvZiBzaGFyaW5nIGluaGVyaXRzIHRvIGFsbCBlbGVtZW50cy4KKyAg
ICAgICAgV2l0aG91dCBzaGFyaW5nIGVxdWFsaXR5IGNvbXBhcmlzb25zIGVuZCB1cCByZXF1aXJp
bmcgZGVlcCBjb21wYXJpc29ucywgd2hpY2ggY2FuIGJlIHNsb3cgaWYgdGhlcmUgYXJlIHRob3Vz
YW5kcyBvZiBwcm9wZXJ0aWVzLgorCisgICAgICAgIEZpeCBieSBkZWR1cGxpY2F0aW5nIGlkZW50
aWNhbCBwcm9wZXJ0eSBtYXBzIGJldHdlZW4gdGhlIG9sZCB0aGUgbmV3IHN0eWxlLiBBbGwgdGhl
IGRlc2NlbmRhbnRzIHRoYXQgaW5oZXJpdCB0aGUgcHJvcGVydGllcyB3aWxsCisgICAgICAgIG5v
dyBiZSBjaGVhcCB0byBjb21wYXJlLgorCisgICAgICAgIFRoZSBwYXRjaCBhbHNvIGNvbnRhaW5z
IHNvbWUgb3RoZXIgYmFzaWMgY3VzdG9tIHByb3BlcnR5IG9wdGltaXphdGlvbnMuCisKKyAgICAg
ICAgR29pbmcgdG8gZnVsbCBzY3JlZW4gYW5kIGJhY2sgb24geW91dHViZSwgdGhpcyBwYXRjaCBy
ZWR1Y2VzIHRpbWUgaW4gdGhlIGxvbmdlc3Qgc3R5bGUgdXBkYXRlIGZyb20gfjQ2MG1zIHRvIH45
MG1zLgorCisgICAgICAgICogY3NzL0NTU0N1c3RvbVByb3BlcnR5VmFsdWUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTo6ZXF1YWxzIGNvbnN0KToKKworICAg
ICAgICBDaGVjayBmb3IgcG9pbnRlciBlcXVhbGl0eSBmaXJzdC4KKworICAgICAgICAqIHJlbmRl
cmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHls
ZTo6ZGVkdXBsaWNhdGVJbmhlcml0ZWRDdXN0b21Qcm9wZXJ0aWVzKToKKworICAgICAgICBEZWR1
cGxpY2F0ZSBpZiB0aGUgcHJvcGVydGllcyBhcmUgZXF1YWwgYnV0IG5vdCBzaGFyZWQuCisKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRJbmhlcml0ZWRDdXN0b21Qcm9wZXJ0eVZh
bHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXROb25Jbmhlcml0ZWRDdXN0
b21Qcm9wZXJ0eVZhbHVlKToKKworICAgICAgICBDaGVjayBpZiB0aGUgdmFsdWUgaXMgYWxyZWFk
eSBpbiB0aGUgbWFwIGJlZm9yZSB0cmlnZ2VyaW5nIGNvcHktb24td3JpdGUuCisKKyAgICAgICAg
KiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clN0eWxlOjpzZXRJbmhlcml0ZWRDdXN0b21Qcm9wZXJ0eVZhbHVlKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXROb25Jbmhlcml0ZWRDdXN0b21Qcm9wZXJ0eVZh
bHVlKTogRGVsZXRlZC4KKyAgICAgICAgKiBzdHlsZS9TdHlsZUJ1aWxkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXI6OmFwcGx5Q3VzdG9tUHJvcGVydHkpOgorCisgICAg
ICAgIERvbid0IGNyZWF0ZSB1bm5lY2VzYXJ5IGNvcGllcyBvZiBDU1NDdXN0b21Qcm9wZXJ0eVZh
bHVlLgorCisgICAgICAgICogc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGU6OlRyZWVSZXNvbHZlcjo6Y3JlYXRlQW5pbWF0ZWRFbGVtZW50VXBkYXRl
KToKKworICAgICAgICBUcnkgdG8gZGVkdXBsaWNhdGUgYmVmb3JlIGNvbXBhcmluZyB0aGUgc3R5
bGVzLgorCiAyMDIwLTA4LTMwICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29t
PgogCiAgICAgICAgIE1ha2UgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6bWFzayBhbmQgU3R5
bGVCYWNrZ3JvdW5kRGF0YTo6YmFja2dyb3VuZCBEYXRhUmVmcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0N1c3RvbVByb3BlcnR5VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0N1c3RvbVByb3BlcnR5VmFsdWUuY3BwCmluZGV4IDY1Y2Y0YzViY2JmZC4uMDkwN2Ew
NmM2OGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3VzdG9tUHJvcGVydHlW
YWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1c3RvbVByb3BlcnR5VmFsdWUu
Y3BwCkBAIC0zMSw2ICszMSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogYm9vbCBDU1NDdXN0
b21Qcm9wZXJ0eVZhbHVlOjplcXVhbHMoY29uc3QgQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZSYgb3Ro
ZXIpIGNvbnN0CiB7CisgICAgaWYgKHRoaXMgPT0gJm90aGVyKQorICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICBpZiAobV9uYW1lICE9IG90aGVyLm1fbmFtZSB8fCBtX3ZhbHVlLmluZGV4KCkgIT0g
b3RoZXIubV92YWx1ZS5pbmRleCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJu
IFdURjo6c3dpdGNoT24obV92YWx1ZSwgWyZdKGNvbnN0IFJlZjxDU1NWYXJpYWJsZVJlZmVyZW5j
ZVZhbHVlPiYgdmFsdWUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9SZW5kZXJTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVu
ZGVyU3R5bGUuY3BwCmluZGV4IDdiNzVmYWVjZDI5OS4uM2MyNDMwM2FlNDg4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKQEAgLTIzMjksNiAr
MjMyOSwzMCBAQCB2b2lkIFJlbmRlclN0eWxlOjpzZXRDb2x1bW5TdHlsZXNGcm9tUGFnaW5hdGlv
bk1vZGUoY29uc3QgUGFnaW5hdGlvbjo6TW9kZSYgcGFnaQogICAgIH0KIH0KIAordm9pZCBSZW5k
ZXJTdHlsZTo6ZGVkdXBsaWNhdGVJbmhlcml0ZWRDdXN0b21Qcm9wZXJ0aWVzKGNvbnN0IFJlbmRl
clN0eWxlJiBvdGhlcikKK3sKKyAgICBpZiAobV9yYXJlSW5oZXJpdGVkRGF0YS0+Y3VzdG9tUHJv
cGVydGllcy5wdHIoKSA9PSBvdGhlci5tX3JhcmVJbmhlcml0ZWREYXRhLT5jdXN0b21Qcm9wZXJ0
aWVzLnB0cigpKQorICAgICAgICByZXR1cm47CisgICAgaWYgKCptX3JhcmVJbmhlcml0ZWREYXRh
LT5jdXN0b21Qcm9wZXJ0aWVzID09ICpvdGhlci5tX3JhcmVJbmhlcml0ZWREYXRhLT5jdXN0b21Q
cm9wZXJ0aWVzKQorICAgICAgICBjb25zdF9jYXN0PFN0eWxlUmFyZUluaGVyaXRlZERhdGEmPiht
X3JhcmVJbmhlcml0ZWREYXRhLmdldCgpKS5jdXN0b21Qcm9wZXJ0aWVzID0gb3RoZXIubV9yYXJl
SW5oZXJpdGVkRGF0YS0+Y3VzdG9tUHJvcGVydGllczsKK30KKwordm9pZCBSZW5kZXJTdHlsZTo6
c2V0SW5oZXJpdGVkQ3VzdG9tUHJvcGVydHlWYWx1ZShjb25zdCBBdG9tU3RyaW5nJiBuYW1lLCBS
ZWY8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4mJiB2YWx1ZSkKK3sKKyAgICBhdXRvKiBleGlzdGlu
Z1ZhbHVlID0gbV9yYXJlSW5oZXJpdGVkRGF0YS0+Y3VzdG9tUHJvcGVydGllcy0+dmFsdWVzLmdl
dChuYW1lKTsKKyAgICBpZiAoZXhpc3RpbmdWYWx1ZSAmJiBleGlzdGluZ1ZhbHVlLT5lcXVhbHMo
dmFsdWUuZ2V0KCkpKQorICAgICAgICByZXR1cm47CisgICAgbV9yYXJlSW5oZXJpdGVkRGF0YS5h
Y2Nlc3MoKS5jdXN0b21Qcm9wZXJ0aWVzLmFjY2VzcygpLnNldEN1c3RvbVByb3BlcnR5VmFsdWUo
bmFtZSwgV1RGTW92ZSh2YWx1ZSkpOworfQorCit2b2lkIFJlbmRlclN0eWxlOjpzZXROb25Jbmhl
cml0ZWRDdXN0b21Qcm9wZXJ0eVZhbHVlKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUsIFJlZjxDU1ND
dXN0b21Qcm9wZXJ0eVZhbHVlPiYmIHZhbHVlKQoreworICAgIGF1dG8qIGV4aXN0aW5nVmFsdWUg
PSBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5jdXN0b21Qcm9wZXJ0aWVzLT52YWx1ZXMuZ2V0KG5h
bWUpOworICAgIGlmIChleGlzdGluZ1ZhbHVlICYmIGV4aXN0aW5nVmFsdWUtPmVxdWFscyh2YWx1
ZS5nZXQoKSkpCisgICAgICAgIHJldHVybjsKKyAgICBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLmFj
Y2VzcygpLmN1c3RvbVByb3BlcnRpZXMuYWNjZXNzKCkuc2V0Q3VzdG9tUHJvcGVydHlWYWx1ZShu
YW1lLCBXVEZNb3ZlKHZhbHVlKSk7Cit9CisKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQog
CiBTY3JvbGxTbmFwVHlwZSBSZW5kZXJTdHlsZTo6aW5pdGlhbFNjcm9sbFNuYXBUeXBlKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKaW5kZXggNjdlMjM2
OWM3MDhmLi4xNjAxYjZjYjE5MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9SZW5kZXJTdHlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9SZW5kZXJTdHlsZS5oCkBAIC0xODMsMTEgKzE4MywxMiBAQCBwdWJsaWM6CiAKICAgICBjb25z
dCBQc2V1ZG9TdHlsZUNhY2hlKiBjYWNoZWRQc2V1ZG9TdHlsZXMoKSBjb25zdCB7IHJldHVybiBt
X2NhY2hlZFBzZXVkb1N0eWxlcy5nZXQoKTsgfQogCisgICAgdm9pZCBkZWR1cGxpY2F0ZUluaGVy
aXRlZEN1c3RvbVByb3BlcnRpZXMoY29uc3QgUmVuZGVyU3R5bGUmKTsKICAgICBjb25zdCBDdXN0
b21Qcm9wZXJ0eVZhbHVlTWFwJiBpbmhlcml0ZWRDdXN0b21Qcm9wZXJ0aWVzKCkgY29uc3QgeyBy
ZXR1cm4gbV9yYXJlSW5oZXJpdGVkRGF0YS0+Y3VzdG9tUHJvcGVydGllcy0+dmFsdWVzOyB9CiAg
ICAgY29uc3QgQ3VzdG9tUHJvcGVydHlWYWx1ZU1hcCYgbm9uSW5oZXJpdGVkQ3VzdG9tUHJvcGVy
dGllcygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmN1c3RvbVByb3Bl
cnRpZXMtPnZhbHVlczsgfQogICAgIGNvbnN0IENTU0N1c3RvbVByb3BlcnR5VmFsdWUqIGdldEN1
c3RvbVByb3BlcnR5KGNvbnN0IEF0b21TdHJpbmcmKSBjb25zdDsKLSAgICB2b2lkIHNldEluaGVy
aXRlZEN1c3RvbVByb3BlcnR5VmFsdWUoY29uc3QgQXRvbVN0cmluZyYgbmFtZSwgUmVmPENTU0N1
c3RvbVByb3BlcnR5VmFsdWU+JiYgdmFsdWUpIHsgcmV0dXJuIG1fcmFyZUluaGVyaXRlZERhdGEu
YWNjZXNzKCkuY3VzdG9tUHJvcGVydGllcy5hY2Nlc3MoKS5zZXRDdXN0b21Qcm9wZXJ0eVZhbHVl
KG5hbWUsIFdURk1vdmUodmFsdWUpKTsgfQotICAgIHZvaWQgc2V0Tm9uSW5oZXJpdGVkQ3VzdG9t
UHJvcGVydHlWYWx1ZShjb25zdCBBdG9tU3RyaW5nJiBuYW1lLCBSZWY8Q1NTQ3VzdG9tUHJvcGVy
dHlWYWx1ZT4mJiB2YWx1ZSkgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3Mo
KS5jdXN0b21Qcm9wZXJ0aWVzLmFjY2VzcygpLnNldEN1c3RvbVByb3BlcnR5VmFsdWUobmFtZSwg
V1RGTW92ZSh2YWx1ZSkpOyB9CisgICAgdm9pZCBzZXRJbmhlcml0ZWRDdXN0b21Qcm9wZXJ0eVZh
bHVlKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUsIFJlZjxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPiYm
KTsKKyAgICB2b2lkIHNldE5vbkluaGVyaXRlZEN1c3RvbVByb3BlcnR5VmFsdWUoY29uc3QgQXRv
bVN0cmluZyYgbmFtZSwgUmVmPENTU0N1c3RvbVByb3BlcnR5VmFsdWU+JiYpOwogCiAgICAgdm9p
ZCBzZXRIYXNWaWV3cG9ydFVuaXRzKGJvb2wgdiA9IHRydWUpIHsgbV9ub25Jbmhlcml0ZWRGbGFn
cy5oYXNWaWV3cG9ydFVuaXRzID0gdjsgfQogICAgIGJvb2wgaGFzVmlld3BvcnRVbml0cygpIGNv
bnN0IHsgcmV0dXJuIG1fbm9uSW5oZXJpdGVkRmxhZ3MuaGFzVmlld3BvcnRVbml0czsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlci5jcHAKaW5kZXggMWVkZGYwNjMxMmE0Li5lYWYwM2U1
YjQ2MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyLmNwcApAQCAtMTkzLDcgKzE5
Myw3IEBAIHZvaWQgQnVpbGRlcjo6YXBwbHlDdXN0b21Qcm9wZXJ0eShjb25zdCBTdHJpbmcmIG5h
bWUpCiAgICAgICAgIGlmIChpbmRleCAhPSBTZWxlY3RvckNoZWNrZXI6Ok1hdGNoRGVmYXVsdCAm
JiBtX3N0YXRlLnN0eWxlKCkuaW5zaWRlTGluaygpID09IEluc2lkZUxpbms6Ok5vdEluc2lkZSkK
ICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIFJlZjxDU1NDdXN0b21Qcm9wZXJ0eVZh
bHVlPiB2YWx1ZVRvQXBwbHkgPSBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpjcmVhdGUoZG93bmNh
c3Q8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4oKnByb3BlcnR5LmNzc1ZhbHVlW2luZGV4XSkpOwor
ICAgICAgICBSZWY8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4gdmFsdWVUb0FwcGx5ID0gZG93bmNh
c3Q8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4oKnByb3BlcnR5LmNzc1ZhbHVlW2luZGV4XSk7CiAK
ICAgICAgICAgaWYgKGluQ3ljbGUpIHsKICAgICAgICAgICAgIG1fc3RhdGUubV9hcHBsaWVkQ3Vz
dG9tUHJvcGVydGllcy5hZGQobmFtZSk7IC8vIE1ha2Ugc3VyZSB3ZSBkbyBub3QgdHJ5IHRvIGFw
cGx5IHRoaXMgcHJvcGVydHkgYWdhaW4gd2hpbGUgcmVzb2x2aW5nIGl0LgpAQCAtMjMwLDcgKzIz
MCw3IEBAIHZvaWQgQnVpbGRlcjo6YXBwbHlDdXN0b21Qcm9wZXJ0eShjb25zdCBTdHJpbmcmIG5h
bWUpCiAgICAgICAgIGlmIChpbmRleCAhPSBTZWxlY3RvckNoZWNrZXI6Ok1hdGNoRGVmYXVsdCAm
JiBtX3N0YXRlLnN0eWxlKCkuaW5zaWRlTGluaygpID09IEluc2lkZUxpbms6Ok5vdEluc2lkZSkK
ICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIFJlZjxDU1NDdXN0b21Qcm9wZXJ0eVZh
bHVlPiB2YWx1ZVRvQXBwbHkgPSBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpjcmVhdGUoZG93bmNh
c3Q8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4oKnByb3BlcnR5LmNzc1ZhbHVlW2luZGV4XSkpOwor
ICAgICAgICBSZWY8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4gdmFsdWVUb0FwcGx5ID0gZG93bmNh
c3Q8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4oKnByb3BlcnR5LmNzc1ZhbHVlW2luZGV4XSk7CiAK
ICAgICAgICAgaWYgKGluQ3ljbGUgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8Q1NTVmFy
aWFibGVSZWZlcmVuY2VWYWx1ZT4+KHZhbHVlVG9BcHBseS0+dmFsdWUoKSkpIHsKICAgICAgICAg
ICAgIC8vIFJlc29sdmUgdGhpcyB2YWx1ZSBzbyB0aGF0IHdlIHJlc2V0IGl0cyBkZXBlbmRlbmNp
ZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAKaW5kZXggYWRm
MTExODYwNGUzLi5iODVjZjQ2NmMxNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxl
L1N0eWxlVHJlZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRy
ZWVSZXNvbHZlci5jcHAKQEAgLTM2MSw2ICszNjEsMTEgQEAgRWxlbWVudFVwZGF0ZSBUcmVlUmVz
b2x2ZXI6OmNyZWF0ZUFuaW1hdGVkRWxlbWVudFVwZGF0ZShzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVy
U3QKICAgICBpZiAoYW5pbWF0aW9uSW1wYWN0KQogICAgICAgICBBZGp1c3Rlcjo6YWRqdXN0QW5p
bWF0ZWRTdHlsZSgqbmV3U3R5bGUsIHBhcmVudEJveFN0eWxlKCksIGFuaW1hdGlvbkltcGFjdCk7
CiAKKyAgICAvLyBEZWR1cGxpY2F0aW9uIHNwZWVkcyB1cCBlcXVhbGl0eSBjb21wYXJpc29ucyBh
cyB0aGUgcHJvcGVydGllcyBpbmhlcml0IHRvIGRlc2NlbmRhbnRzLgorICAgIC8vIEZJWE1FOiBU
aGVyZSBzaG91bGQgYmUgYSBtb3JlIGdlbmVyYWwgbWVjaGFuaXNtIGZvciB0aGlzLgorICAgIGlm
IChvbGRTdHlsZSkKKyAgICAgICAgbmV3U3R5bGUtPmRlZHVwbGljYXRlSW5oZXJpdGVkQ3VzdG9t
UHJvcGVydGllcygqb2xkU3R5bGUpOworCiAgICAgYXV0byBjaGFuZ2UgPSBvbGRTdHlsZSA/IGRl
dGVybWluZUNoYW5nZSgqb2xkU3R5bGUsICpuZXdTdHlsZSkgOiBEZXRhY2g7CiAKICAgICBhdXRv
IHZhbGlkaXR5ID0gZWxlbWVudC5zdHlsZVZhbGlkaXR5KCk7Cg==
</data>
<flag name="review"
          id="423558"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>408216</attachid>
            <date>2020-09-08 00:40:25 -0700</date>
            <delta_ts>2020-09-08 01:48:43 -0700</delta_ts>
            <desc>patch</desc>
            <filename>custom-property-deduplicate-3.patch</filename>
            <type>text/plain</type>
            <size>8566</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAxODQ5MWJhZjU2ZGMuLmZlMTY2NTFiNGE4NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDUwIEBACisyMDIwLTA5LTA3ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNv
bT4KKworICAgICAgICBDb21wYXJpbmcgc3R5bGVzIHdpdGggbGFyZ2UgYnV0IGlkZW50aWNhbCBj
dXN0b20gcHJvcGVydHkgbWFwcyBpcyBzbG93CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTYyNDEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY3OTQ2
NjA1PgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIEluIGEg
ZnVsbCBzdHlsZSByZWJ1aWxkIHdlIGxvc2Ugc2hhcmluZyBvZiBlcXVhbCBTdHlsZUN1c3RvbVBy
b3BlcnR5RGF0YXMgYmV0d2VlbiB0aGUgb2xkIGFuZCB0aGUgbmV3IHN0eWxlLgorICAgICAgICBD
dXN0b20gcHJvcGVydGllcyBhcmUgdXN1YWxseSBkZWZpbmVkIGluIGRvY3VtZW50IGVsZW1lbnQg
YW5kIHRoaXMgbGFjayBvZiBzaGFyaW5nIGluaGVyaXRzIHRvIGFsbCBlbGVtZW50cy4KKyAgICAg
ICAgV2l0aG91dCBzaGFyaW5nIGVxdWFsaXR5IGNvbXBhcmlzb25zIGVuZCB1cCByZXF1aXJpbmcg
ZGVlcCBjb21wYXJpc29ucywgd2hpY2ggY2FuIGJlIHNsb3cgaWYgdGhlcmUgYXJlIHRob3VzYW5k
cyBvZiBwcm9wZXJ0aWVzLgorCisgICAgICAgIEZpeCBieSBkZWR1cGxpY2F0aW5nIGlkZW50aWNh
bCBwcm9wZXJ0eSBtYXBzIGJldHdlZW4gdGhlIG9sZCB0aGUgbmV3IHN0eWxlLiBBbGwgdGhlIGRl
c2NlbmRhbnRzIHRoYXQgaW5oZXJpdCB0aGUgcHJvcGVydGllcyB3aWxsCisgICAgICAgIG5vdyBi
ZSBjaGVhcCB0byBjb21wYXJlLgorCisgICAgICAgIFRoZSBwYXRjaCBhbHNvIGNvbnRhaW5zIHNv
bWUgb3RoZXIgYmFzaWMgY3VzdG9tIHByb3BlcnR5IG9wdGltaXphdGlvbnMuCisKKyAgICAgICAg
R29pbmcgdG8gZnVsbCBzY3JlZW4gYW5kIGJhY2sgb24geW91dHViZSwgdGhpcyBwYXRjaCByZWR1
Y2VzIHRpbWUgaW4gdGhlIGxvbmdlc3Qgc3R5bGUgdXBkYXRlIGZyb20gfjQ2MG1zIHRvIH45MG1z
LgorCisgICAgICAgICogY3NzL0NTU0N1c3RvbVByb3BlcnR5VmFsdWUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTo6ZXF1YWxzIGNvbnN0KToKKworICAgICAg
ICBDaGVjayBmb3IgcG9pbnRlciBlcXVhbGl0eSBmaXJzdC4KKworICAgICAgICAqIHJlbmRlcmlu
Zy9zdHlsZS9SZW5kZXJTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6
ZGVkdXBsaWNhdGVJbmhlcml0ZWRDdXN0b21Qcm9wZXJ0aWVzKToKKworICAgICAgICBEZWR1cGxp
Y2F0ZSBpZiB0aGUgcHJvcGVydGllcyBhcmUgZXF1YWwgYnV0IG5vdCBzaGFyZWQuCisKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRJbmhlcml0ZWRDdXN0b21Qcm9wZXJ0eVZhbHVl
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXROb25Jbmhlcml0ZWRDdXN0b21Q
cm9wZXJ0eVZhbHVlKToKKworICAgICAgICBDaGVjayBpZiB0aGUgdmFsdWUgaXMgYWxyZWFkeSBp
biB0aGUgbWFwIGJlZm9yZSB0cmlnZ2VyaW5nIGNvcHktb24td3JpdGUuCisKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0
eWxlOjpzZXRJbmhlcml0ZWRDdXN0b21Qcm9wZXJ0eVZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXROb25Jbmhlcml0ZWRDdXN0b21Qcm9wZXJ0eVZhbHVl
KTogRGVsZXRlZC4KKyAgICAgICAgKiBzdHlsZS9TdHlsZUJ1aWxkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXI6OmFwcGx5Q3VzdG9tUHJvcGVydHkpOgorCisgICAgICAg
IERvbid0IGNyZWF0ZSB1bm5lY2VzYXJ5IGNvcGllcyBvZiBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVl
LgorCisgICAgICAgICogc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGU6OlRyZWVSZXNvbHZlcjo6Y3JlYXRlQW5pbWF0ZWRFbGVtZW50VXBkYXRlKToK
KworICAgICAgICBUcnkgdG8gZGVkdXBsaWNhdGUgYmVmb3JlIGNvbXBhcmluZyB0aGUgc3R5bGVz
LgorCiAyMDIwLTA4LTMwICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgog
CiAgICAgICAgIE1ha2UgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6bWFzayBhbmQgU3R5bGVC
YWNrZ3JvdW5kRGF0YTo6YmFja2dyb3VuZCBEYXRhUmVmcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0N1c3RvbVByb3BlcnR5VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0N1c3RvbVByb3BlcnR5VmFsdWUuY3BwCmluZGV4IDY1Y2Y0YzViY2JmZC4uMDkwN2EwNmM2
OGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3VzdG9tUHJvcGVydHlWYWx1
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1c3RvbVByb3BlcnR5VmFsdWUuY3Bw
CkBAIC0zMSw2ICszMSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogYm9vbCBDU1NDdXN0b21Q
cm9wZXJ0eVZhbHVlOjplcXVhbHMoY29uc3QgQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZSYgb3RoZXIp
IGNvbnN0CiB7CisgICAgaWYgKHRoaXMgPT0gJm90aGVyKQorICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICBpZiAobV9uYW1lICE9IG90aGVyLm1fbmFtZSB8fCBtX3ZhbHVlLmluZGV4KCkgIT0gb3Ro
ZXIubV92YWx1ZS5pbmRleCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIFdU
Rjo6c3dpdGNoT24obV92YWx1ZSwgWyZdKGNvbnN0IFJlZjxDU1NWYXJpYWJsZVJlZmVyZW5jZVZh
bHVlPiYgdmFsdWUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9SZW5kZXJTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGUuY3BwCmluZGV4IDdiNzVmYWVjZDI5OS4uYTAyMDAwZGM5NTFkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKQEAgLTIzMjksNiArMjMy
OSwzMCBAQCB2b2lkIFJlbmRlclN0eWxlOjpzZXRDb2x1bW5TdHlsZXNGcm9tUGFnaW5hdGlvbk1v
ZGUoY29uc3QgUGFnaW5hdGlvbjo6TW9kZSYgcGFnaQogICAgIH0KIH0KIAordm9pZCBSZW5kZXJT
dHlsZTo6ZGVkdXBsaWNhdGVJbmhlcml0ZWRDdXN0b21Qcm9wZXJ0aWVzKGNvbnN0IFJlbmRlclN0
eWxlJiBvdGhlcikKK3sKKyAgICBhdXRvJiBwcm9wZXJ0aWVzID0gY29uc3RfY2FzdDxEYXRhUmVm
PFN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhPiY+KG1fcmFyZUluaGVyaXRlZERhdGEtPmN1c3RvbVBy
b3BlcnRpZXMpOworICAgIGF1dG8mIG90aGVyUHJvcGVydGllcyA9IG90aGVyLm1fcmFyZUluaGVy
aXRlZERhdGEtPmN1c3RvbVByb3BlcnRpZXM7CisgICAgaWYgKHByb3BlcnRpZXMucHRyKCkgIT0g
b3RoZXJQcm9wZXJ0aWVzLnB0cigpICYmICpwcm9wZXJ0aWVzID09ICpvdGhlclByb3BlcnRpZXMp
CisgICAgICAgIHByb3BlcnRpZXMgPSBvdGhlclByb3BlcnRpZXM7Cit9CisKK3ZvaWQgUmVuZGVy
U3R5bGU6OnNldEluaGVyaXRlZEN1c3RvbVByb3BlcnR5VmFsdWUoY29uc3QgQXRvbVN0cmluZyYg
bmFtZSwgUmVmPENTU0N1c3RvbVByb3BlcnR5VmFsdWU+JiYgdmFsdWUpCit7CisgICAgYXV0byog
ZXhpc3RpbmdWYWx1ZSA9IG1fcmFyZUluaGVyaXRlZERhdGEtPmN1c3RvbVByb3BlcnRpZXMtPnZh
bHVlcy5nZXQobmFtZSk7CisgICAgaWYgKGV4aXN0aW5nVmFsdWUgJiYgZXhpc3RpbmdWYWx1ZS0+
ZXF1YWxzKHZhbHVlLmdldCgpKSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fcmFyZUluaGVyaXRl
ZERhdGEuYWNjZXNzKCkuY3VzdG9tUHJvcGVydGllcy5hY2Nlc3MoKS5zZXRDdXN0b21Qcm9wZXJ0
eVZhbHVlKG5hbWUsIFdURk1vdmUodmFsdWUpKTsKK30KKwordm9pZCBSZW5kZXJTdHlsZTo6c2V0
Tm9uSW5oZXJpdGVkQ3VzdG9tUHJvcGVydHlWYWx1ZShjb25zdCBBdG9tU3RyaW5nJiBuYW1lLCBS
ZWY8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4mJiB2YWx1ZSkKK3sKKyAgICBhdXRvKiBleGlzdGlu
Z1ZhbHVlID0gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Y3VzdG9tUHJvcGVydGllcy0+dmFsdWVz
LmdldChuYW1lKTsKKyAgICBpZiAoZXhpc3RpbmdWYWx1ZSAmJiBleGlzdGluZ1ZhbHVlLT5lcXVh
bHModmFsdWUuZ2V0KCkpKQorICAgICAgICByZXR1cm47CisgICAgbV9yYXJlTm9uSW5oZXJpdGVk
RGF0YS5hY2Nlc3MoKS5jdXN0b21Qcm9wZXJ0aWVzLmFjY2VzcygpLnNldEN1c3RvbVByb3BlcnR5
VmFsdWUobmFtZSwgV1RGTW92ZSh2YWx1ZSkpOworfQorCiAjaWYgRU5BQkxFKENTU19TQ1JPTExf
U05BUCkKIAogU2Nyb2xsU25hcFR5cGUgUmVuZGVyU3R5bGU6OmluaXRpYWxTY3JvbGxTbmFwVHlw
ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5
bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCmluZGV4
IDY3ZTIzNjljNzA4Zi4uMTYwMWI2Y2IxOTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvUmVuZGVyU3R5bGUuaApAQCAtMTgzLDExICsxODMsMTIgQEAgcHVibGljOgogCiAg
ICAgY29uc3QgUHNldWRvU3R5bGVDYWNoZSogY2FjaGVkUHNldWRvU3R5bGVzKCkgY29uc3QgeyBy
ZXR1cm4gbV9jYWNoZWRQc2V1ZG9TdHlsZXMuZ2V0KCk7IH0KIAorICAgIHZvaWQgZGVkdXBsaWNh
dGVJbmhlcml0ZWRDdXN0b21Qcm9wZXJ0aWVzKGNvbnN0IFJlbmRlclN0eWxlJik7CiAgICAgY29u
c3QgQ3VzdG9tUHJvcGVydHlWYWx1ZU1hcCYgaW5oZXJpdGVkQ3VzdG9tUHJvcGVydGllcygpIGNv
bnN0IHsgcmV0dXJuIG1fcmFyZUluaGVyaXRlZERhdGEtPmN1c3RvbVByb3BlcnRpZXMtPnZhbHVl
czsgfQogICAgIGNvbnN0IEN1c3RvbVByb3BlcnR5VmFsdWVNYXAmIG5vbkluaGVyaXRlZEN1c3Rv
bVByb3BlcnRpZXMoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5jdXN0
b21Qcm9wZXJ0aWVzLT52YWx1ZXM7IH0KICAgICBjb25zdCBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVl
KiBnZXRDdXN0b21Qcm9wZXJ0eShjb25zdCBBdG9tU3RyaW5nJikgY29uc3Q7Ci0gICAgdm9pZCBz
ZXRJbmhlcml0ZWRDdXN0b21Qcm9wZXJ0eVZhbHVlKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUsIFJl
ZjxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPiYmIHZhbHVlKSB7IHJldHVybiBtX3JhcmVJbmhlcml0
ZWREYXRhLmFjY2VzcygpLmN1c3RvbVByb3BlcnRpZXMuYWNjZXNzKCkuc2V0Q3VzdG9tUHJvcGVy
dHlWYWx1ZShuYW1lLCBXVEZNb3ZlKHZhbHVlKSk7IH0KLSAgICB2b2lkIHNldE5vbkluaGVyaXRl
ZEN1c3RvbVByb3BlcnR5VmFsdWUoY29uc3QgQXRvbVN0cmluZyYgbmFtZSwgUmVmPENTU0N1c3Rv
bVByb3BlcnR5VmFsdWU+JiYgdmFsdWUpIHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEu
YWNjZXNzKCkuY3VzdG9tUHJvcGVydGllcy5hY2Nlc3MoKS5zZXRDdXN0b21Qcm9wZXJ0eVZhbHVl
KG5hbWUsIFdURk1vdmUodmFsdWUpKTsgfQorICAgIHZvaWQgc2V0SW5oZXJpdGVkQ3VzdG9tUHJv
cGVydHlWYWx1ZShjb25zdCBBdG9tU3RyaW5nJiBuYW1lLCBSZWY8Q1NTQ3VzdG9tUHJvcGVydHlW
YWx1ZT4mJik7CisgICAgdm9pZCBzZXROb25Jbmhlcml0ZWRDdXN0b21Qcm9wZXJ0eVZhbHVlKGNv
bnN0IEF0b21TdHJpbmcmIG5hbWUsIFJlZjxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPiYmKTsKIAog
ICAgIHZvaWQgc2V0SGFzVmlld3BvcnRVbml0cyhib29sIHYgPSB0cnVlKSB7IG1fbm9uSW5oZXJp
dGVkRmxhZ3MuaGFzVmlld3BvcnRVbml0cyA9IHY7IH0KICAgICBib29sIGhhc1ZpZXdwb3J0VW5p
dHMoKSBjb25zdCB7IHJldHVybiBtX25vbkluaGVyaXRlZEZsYWdzLmhhc1ZpZXdwb3J0VW5pdHM7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXIuY3BwCmluZGV4IDFlZGRmMDYzMTJhNC4u
OWMwNjEwZGY2MmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlci5jcHAKQEAgLTE5
Myw3ICsxOTMsNyBAQCB2b2lkIEJ1aWxkZXI6OmFwcGx5Q3VzdG9tUHJvcGVydHkoY29uc3QgU3Ry
aW5nJiBuYW1lKQogICAgICAgICBpZiAoaW5kZXggIT0gU2VsZWN0b3JDaGVja2VyOjpNYXRjaERl
ZmF1bHQgJiYgbV9zdGF0ZS5zdHlsZSgpLmluc2lkZUxpbmsoKSA9PSBJbnNpZGVMaW5rOjpOb3RJ
bnNpZGUpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBSZWY8Q1NTQ3VzdG9tUHJv
cGVydHlWYWx1ZT4gdmFsdWVUb0FwcGx5ID0gQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTo6Y3JlYXRl
KGRvd25jYXN0PENTU0N1c3RvbVByb3BlcnR5VmFsdWU+KCpwcm9wZXJ0eS5jc3NWYWx1ZVtpbmRl
eF0pKTsKKyAgICAgICAgYXV0byB2YWx1ZVRvQXBwbHkgPSBtYWtlUmVmKGRvd25jYXN0PENTU0N1
c3RvbVByb3BlcnR5VmFsdWU+KCpwcm9wZXJ0eS5jc3NWYWx1ZVtpbmRleF0pKTsKIAogICAgICAg
ICBpZiAoaW5DeWNsZSkgewogICAgICAgICAgICAgbV9zdGF0ZS5tX2FwcGxpZWRDdXN0b21Qcm9w
ZXJ0aWVzLmFkZChuYW1lKTsgLy8gTWFrZSBzdXJlIHdlIGRvIG5vdCB0cnkgdG8gYXBwbHkgdGhp
cyBwcm9wZXJ0eSBhZ2FpbiB3aGlsZSByZXNvbHZpbmcgaXQuCkBAIC0yMzAsNyArMjMwLDcgQEAg
dm9pZCBCdWlsZGVyOjphcHBseUN1c3RvbVByb3BlcnR5KGNvbnN0IFN0cmluZyYgbmFtZSkKICAg
ICAgICAgaWYgKGluZGV4ICE9IFNlbGVjdG9yQ2hlY2tlcjo6TWF0Y2hEZWZhdWx0ICYmIG1fc3Rh
dGUuc3R5bGUoKS5pbnNpZGVMaW5rKCkgPT0gSW5zaWRlTGluazo6Tm90SW5zaWRlKQogICAgICAg
ICAgICAgY29udGludWU7CiAKLSAgICAgICAgUmVmPENTU0N1c3RvbVByb3BlcnR5VmFsdWU+IHZh
bHVlVG9BcHBseSA9IENTU0N1c3RvbVByb3BlcnR5VmFsdWU6OmNyZWF0ZShkb3duY2FzdDxDU1ND
dXN0b21Qcm9wZXJ0eVZhbHVlPigqcHJvcGVydHkuY3NzVmFsdWVbaW5kZXhdKSk7CisgICAgICAg
IGF1dG8gdmFsdWVUb0FwcGx5ID0gbWFrZVJlZihkb3duY2FzdDxDU1NDdXN0b21Qcm9wZXJ0eVZh
bHVlPigqcHJvcGVydHkuY3NzVmFsdWVbaW5kZXhdKSk7CiAKICAgICAgICAgaWYgKGluQ3ljbGUg
JiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8Q1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZT4+
KHZhbHVlVG9BcHBseS0+dmFsdWUoKSkpIHsKICAgICAgICAgICAgIC8vIFJlc29sdmUgdGhpcyB2
YWx1ZSBzbyB0aGF0IHdlIHJlc2V0IGl0cyBkZXBlbmRlbmNpZXMuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAKaW5kZXggYWRmMTExODYwNGUzLi5iODVjZjQ2NmMx
NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAKQEAgLTM2
MSw2ICszNjEsMTEgQEAgRWxlbWVudFVwZGF0ZSBUcmVlUmVzb2x2ZXI6OmNyZWF0ZUFuaW1hdGVk
RWxlbWVudFVwZGF0ZShzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3QKICAgICBpZiAoYW5pbWF0aW9u
SW1wYWN0KQogICAgICAgICBBZGp1c3Rlcjo6YWRqdXN0QW5pbWF0ZWRTdHlsZSgqbmV3U3R5bGUs
IHBhcmVudEJveFN0eWxlKCksIGFuaW1hdGlvbkltcGFjdCk7CiAKKyAgICAvLyBEZWR1cGxpY2F0
aW9uIHNwZWVkcyB1cCBlcXVhbGl0eSBjb21wYXJpc29ucyBhcyB0aGUgcHJvcGVydGllcyBpbmhl
cml0IHRvIGRlc2NlbmRhbnRzLgorICAgIC8vIEZJWE1FOiBUaGVyZSBzaG91bGQgYmUgYSBtb3Jl
IGdlbmVyYWwgbWVjaGFuaXNtIGZvciB0aGlzLgorICAgIGlmIChvbGRTdHlsZSkKKyAgICAgICAg
bmV3U3R5bGUtPmRlZHVwbGljYXRlSW5oZXJpdGVkQ3VzdG9tUHJvcGVydGllcygqb2xkU3R5bGUp
OworCiAgICAgYXV0byBjaGFuZ2UgPSBvbGRTdHlsZSA/IGRldGVybWluZUNoYW5nZSgqb2xkU3R5
bGUsICpuZXdTdHlsZSkgOiBEZXRhY2g7CiAKICAgICBhdXRvIHZhbGlkaXR5ID0gZWxlbWVudC5z
dHlsZVZhbGlkaXR5KCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>