<?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>236115</bug_id>
          
          <creation_ts>2022-02-03 18:26:41 -0800</creation_ts>
          <short_desc>Cache some expensive AXIsolatedObject properties lazily.</short_desc>
          <delta_ts>2022-02-04 11:21:04 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Accessibility</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="Andres Gonzalez">andresg_22</reporter>
          <assigned_to name="Andres Gonzalez">andresg_22</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>andresg_22</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cfleizach</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>samuel_white</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1837205</commentid>
    <comment_count>0</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2022-02-03 18:26:41 -0800</bug_when>
    <thetext>Cache some expensive AXIsolatedObject properties lazily.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837206</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-02-03 18:26:54 -0800</bug_when>
    <thetext>&lt;rdar://problem/88467667&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837214</commentid>
    <comment_count>2</comment_count>
      <attachid>450850</attachid>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2022-02-03 18:45:59 -0800</bug_when>
    <thetext>Created attachment 450850
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837232</commentid>
    <comment_count>3</comment_count>
      <attachid>450850</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2022-02-03 19:59:06 -0800</bug_when>
    <thetext>Comment on attachment 450850
Patch

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

&gt; Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp:978
&gt; +String AXIsolatedObject::getOrRetrieveStringPropertyValue(AXPropertyName propertyName)

Get and retrieve seem like synonyms here so you could probably drop both and just call it stringPropertyValue()

&gt; Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp:1009
&gt; +        setProperty(propertyName, value.isolatedCopy());

should we cache if the string is empty</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837330</commentid>
    <comment_count>4</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2022-02-04 05:16:54 -0800</bug_when>
    <thetext>(In reply to chris fleizach from comment #3)
&gt; Comment on attachment 450850 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=450850&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp:978
&gt; &gt; +String AXIsolatedObject::getOrRetrieveStringPropertyValue(AXPropertyName propertyName)
&gt; 
&gt; Get and retrieve seem like synonyms here so you could probably drop both and
&gt; just call it stringPropertyValue()

The idea is to differentiate it from stringAttributeValue that I intend to rename stringPropertyValue. The getOrRetrieve makes explicit that the value is either gotten from the cache or retrieved from the main thread. The reason I&apos;d like to rename stringAttributeValue -&gt; stringPropertyValue is the confusing overload of &quot;attribute&quot; which is used for HTML element attributes, platform API methods, and AXCoreObject methods.

&gt; 
&gt; &gt; Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp:1009
&gt; &gt; +        setProperty(propertyName, value.isolatedCopy());
&gt; 
&gt; should we cache if the string is empty

I think so since that the behavior of the live object as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837378</commentid>
    <comment_count>5</comment_count>
      <attachid>450850</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2022-02-04 07:25:40 -0800</bug_when>
    <thetext>Comment on attachment 450850
Patch

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

&gt;&gt;&gt; Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp:978
&gt;&gt;&gt; +String AXIsolatedObject::getOrRetrieveStringPropertyValue(AXPropertyName propertyName)
&gt;&gt; 
&gt;&gt; Get and retrieve seem like synonyms here so you could probably drop both and just call it stringPropertyValue()
&gt; 
&gt; The idea is to differentiate it from stringAttributeValue that I intend to rename stringPropertyValue. The getOrRetrieve makes explicit that the value is either gotten from the cache or retrieved from the main thread. The reason I&apos;d like to rename stringAttributeValue -&gt; stringPropertyValue is the confusing overload of &quot;attribute&quot; which is used for HTML element attributes, platform API methods, and AXCoreObject methods.

In this case maybe cachedStringPropertyValue would be good</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837518</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-04 11:20:59 -0800</bug_when>
    <thetext>Committed r289131 (246828@main): &lt;https://commits.webkit.org/246828@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 450850.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450850</attachid>
            <date>2022-02-03 18:45:59 -0800</date>
            <delta_ts>2022-02-04 11:21:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236115-20220203214558.patch</filename>
            <type>text/plain</type>
            <size>9342</size>
            <attacher name="Andres Gonzalez">andresg_22</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5MDYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGZkN2IwZWYyMmQ5YzM3
NjQ1Yjk1YzYzODMxYzA3OWU1ZmZkODAzYS4uYTdkNDljOGQxZTliYjQ0NmNhYThjYzk0MjAxNzE5
YzAwZGU1NmQ0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDIyLTAyLTAzICBBbmRy
ZXMgR29uemFsZXogIDxhbmRyZXNnXzIyQGFwcGxlLmNvbT4KKworICAgICAgICBDYWNoZSBzb21l
IGV4cGVuc2l2ZSBBWElzb2xhdGVkT2JqZWN0IHByb3BlcnRpZXMgbGF6aWx5LgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2MTE1CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS84ODQ2NzY2Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBTb21lIHByb3BlcnRpZXMgY2FuIGJlIHZlcnkgZXhwZW5zaXZlIHRv
IGNvbXB1dGUgZm9yIGV2ZXJ5IG9iamVjdCwgYW5kCisgICAgICAgIG1heSBub3QgZXZlbiBiZSB1
c2VkIGJ5IHRoZSBjbGllbnRzLiBGdXJ0aGVybW9yZQorICAgICAgICBkZXNjcmlwdGlvbkF0dHJp
YnV0ZVZhbHVlKCkgYW5kIHRpdGxlQXR0cmlidXRlVmFsdWUoKSBjYWxsCisgICAgICAgIHRleHRV
bmRlckVsZW1lbnQoKSB3aGljaCBtYXkgY3Jhc2ggaWYgaXQgaXMgY2FsbGVkIGluIHRoZSBtaWRk
bGUgb2YgYQorICAgICAgICBsYXlvdXQuIFRoaXMgaXMgdGhlIGFjdHVhbCBjYXVzZSBvZgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwNDQ2LgorICAg
ICAgICBJbiB0aGlzIHBhdGNoLCB3ZSBkZWxheSB0aGUgY29tcHV0YXRpb24gYW5kIGNhY2hpbmcg
b2YgdGhlc2UgdHdvCisgICAgICAgIHByb3BlcnRpZXMgdW50aWwgdGhleSBhcmUgZmlyc3QgcmVx
dWVzdGVkLiBUaGlzIHNvbHZlcyBib3RoIHRoZSB3YXN0ZWZ1bAorICAgICAgICBjb21wdXRhdGlv
biBpZiB0aGVzZSBwcm9wZXJ0aWVzIGFyZSBub3QgdXNlZCwgYW5kIG1vcmUgaW1wb3J0YW50bHkg
dGhlCisgICAgICAgIGNyYXNoIGluIHRoZSBhYm92ZSBtZW50aW9uZWQgYnVnLgorICAgICAgICBU
aGlzIGlzIGEgZm9sbG93IHVwIGNoYW5nZSB0bzoKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjA1MworCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9p
c29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBWElz
b2xhdGVkT2JqZWN0OjpnZXRPclJldHJpZXZlU3RyaW5nUHJvcGVydHlWYWx1ZSk6CisgICAgICAg
IE5ldyBtZXRob2QgdG8gbGF6aWx5IHJldHJpZXZlIGFuZCBjYWNoZSBhbnkgU3RyaW5nIHByb3Bl
cnR5LgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6aW5uZXJIVE1MIGNvbnN0
KTogVXNlcyBnZXRPclJldHJpZXZlU3RyaW5nUHJvcGVydHlWYWx1ZS4KKyAgICAgICAgKFdlYkNv
cmU6OkFYSXNvbGF0ZWRPYmplY3Q6Om91dGVySFRNTCBjb25zdCk6IERpdG8uCisgICAgICAgICog
YWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oOgorICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL21hYy9BWElzb2xhdGVkT2JqZWN0TWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6aW5pdGlhbGl6ZVBsYXRmb3JtUHJv
cGVydGllcyk6CisgICAgICAgIE5vIGxvbmdlciBjYWNoZXMgdGhlIGFib3ZlIG1lbnRpb25lZCBw
cm9wZXJ0aWVzLgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6ZGVzY3JpcHRp
b25BdHRyaWJ1dGVWYWx1ZSBjb25zdCk6IFVzZXMgZ2V0T3JSZXRyaWV2ZVN0cmluZ1Byb3BlcnR5
VmFsdWUuCisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojp0aXRsZUF0dHJpYnV0
ZVZhbHVlIGNvbnN0KTogRGl0by4KKwogMjAyMi0wMi0wMyAgRnLDqWTDqXJpYyBXYW5nICA8Zndh
bmdAaWdhbGlhLmNvbT4KIAogICAgICAgICBudWxsIHB0ciBkZXJlZiBpbiBSZW5kZXJUcmVlQnVp
bGRlcjo6QmxvY2s6OmF0dGFjaElnbm9yaW5nQ29udGludWF0aW9uCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRP
YmplY3QuY3BwCmluZGV4IDAyZmJkNDVlODI3MjJiNmZkY2VmYzkwZWU2NmU3ZTc1NTZhODAzM2Uu
LjVjNmIxMTZiNjEwYzlhNDIxZDY2M2Y3MjFlODdkOGRjNTA5OTk0MzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNv
bGF0ZWRPYmplY3QuY3BwCkBAIC05NzUsNiArOTc1LDQzIEBAIGludCBBWElzb2xhdGVkT2JqZWN0
OjppbnRBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIGNvbnN0CiAg
ICAgKTsKIH0KIAorU3RyaW5nIEFYSXNvbGF0ZWRPYmplY3Q6OmdldE9yUmV0cmlldmVTdHJpbmdQ
cm9wZXJ0eVZhbHVlKEFYUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK3sKKyAgICBpZiAobV9w
cm9wZXJ0eU1hcC5jb250YWlucyhwcm9wZXJ0eU5hbWUpKQorICAgICAgICByZXR1cm4gc3RyaW5n
QXR0cmlidXRlVmFsdWUocHJvcGVydHlOYW1lKTsKKworICAgIEFjY2Vzc2liaWxpdHk6OnBlcmZv
cm1GdW5jdGlvbk9uTWFpblRocmVhZChbJnByb3BlcnR5TmFtZSwgdGhpc10gKCkgeworICAgICAg
ICBhdXRvKiBheE9iamVjdCA9IGFzc29jaWF0ZWRBWE9iamVjdCgpOworICAgICAgICBpZiAoIWF4
T2JqZWN0KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIFN0cmluZyB2YWx1ZTsKKyAg
ICAgICAgc3dpdGNoIChwcm9wZXJ0eU5hbWUpIHsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICAg
ICAgY2FzZSBBWFByb3BlcnR5TmFtZTo6RGVzY3JpcHRpb246CisgICAgICAgICAgICB2YWx1ZSA9
IGF4T2JqZWN0LT5kZXNjcmlwdGlvbkF0dHJpYnV0ZVZhbHVlKCk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBBWFByb3BlcnR5TmFtZTo6VGl0bGVBdHRyaWJ1dGVWYWx1ZToKKyAg
ICAgICAgICAgIHZhbHVlID0gYXhPYmplY3QtPnRpdGxlQXR0cmlidXRlVmFsdWUoKTsKKyAgICAg
ICAgICAgIGJyZWFrOworI2VuZGlmCisgICAgICAgIGNhc2UgQVhQcm9wZXJ0eU5hbWU6OklubmVy
SFRNTDoKKyAgICAgICAgICAgIHZhbHVlID0gYXhPYmplY3QtPmlubmVySFRNTCgpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQVhQcm9wZXJ0eU5hbWU6Ok91dGVySFRNTDoKKyAg
ICAgICAgICAgIHZhbHVlID0gYXhPYmplY3QtPm91dGVySFRNTCgpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisg
ICAgICAgIC8vIENhY2hlIHZhbHVlIHNvIHRoYXQgdGhlcmUgaXMgbm8gbmVlZCB0byBhY2Nlc3Mg
dGhlIG1haW4gdGhyZWFkIGluIHN1YnNlcXVlbnQgY2FsbHMuCisgICAgICAgIHNldFByb3BlcnR5
KHByb3BlcnR5TmFtZSwgdmFsdWUuaXNvbGF0ZWRDb3B5KCkpOworICAgIH0pOworCisgICAgcmV0
dXJuIHN0cmluZ0F0dHJpYnV0ZVZhbHVlKHByb3BlcnR5TmFtZSk7Cit9CisKIHZvaWQgQVhJc29s
YXRlZE9iamVjdDo6ZmlsbENoaWxkcmVuVmVjdG9yRm9yUHJvcGVydHkoQVhQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGNoaWxkcmVuKSBjb25z
dAogewogICAgIFZlY3RvcjxBWElEPiBjaGlsZElEcyA9IHZlY3RvckF0dHJpYnV0ZVZhbHVlPEFY
SUQ+KHByb3BlcnR5TmFtZSk7CkBAIC0yNDM2LDM0ICsyNDczLDEyIEBAIHZvaWQgQVhJc29sYXRl
ZE9iamVjdDo6c2V0SXNJZ25vcmVkRnJvbVBhcmVudERhdGFGb3JDaGlsZChBWENvcmVPYmplY3Qq
KQogCiBTdHJpbmcgQVhJc29sYXRlZE9iamVjdDo6aW5uZXJIVE1MKCkgY29uc3QKIHsKLSAgICBp
ZiAobV9wcm9wZXJ0eU1hcC5jb250YWlucyhBWFByb3BlcnR5TmFtZTo6SW5uZXJIVE1MKSkKLSAg
ICAgICAgcmV0dXJuIHN0cmluZ0F0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJbm5lckhU
TUwpOwotCi0gICAgcmV0dXJuIEFjY2Vzc2liaWxpdHk6OnJldHJpZXZlVmFsdWVGcm9tTWFpblRo
cmVhZDxTdHJpbmc+KFt0aGlzXSAoKSAtPiBTdHJpbmcgewotICAgICAgICBhdXRvKiBheE9iamVj
dCA9IGFzc29jaWF0ZWRBWE9iamVjdCgpOwotICAgICAgICBTdHJpbmcgdmFsdWUgPSBheE9iamVj
dCA/IGF4T2JqZWN0LT5pbm5lckhUTUwoKS5pc29sYXRlZENvcHkoKSA6IFN0cmluZygpOwotCi0g
ICAgICAgIC8vIENhY2hlIHZhbHVlIHNvIHRoYXQgdGhlcmUgaXMgbm8gbmVlZCB0byBhY2Nlc3Mg
dGhlIG1haW4gdGhyZWFkIGluIHN1YnNlcXVlbnQgY2FsbHMuCi0gICAgICAgIGNvbnN0X2Nhc3Q8
QVhJc29sYXRlZE9iamVjdCo+KHRoaXMpLT5zZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SW5u
ZXJIVE1MLCB2YWx1ZSk7Ci0KLSAgICAgICAgcmV0dXJuIHZhbHVlOwotICAgIH0pOworICAgIHJl
dHVybiBjb25zdF9jYXN0PEFYSXNvbGF0ZWRPYmplY3QqPih0aGlzKS0+Z2V0T3JSZXRyaWV2ZVN0
cmluZ1Byb3BlcnR5VmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklubmVySFRNTCk7CiB9CiAKIFN0cmlu
ZyBBWElzb2xhdGVkT2JqZWN0OjpvdXRlckhUTUwoKSBjb25zdAogewotICAgIGlmIChtX3Byb3Bl
cnR5TWFwLmNvbnRhaW5zKEFYUHJvcGVydHlOYW1lOjpPdXRlckhUTUwpKQotICAgICAgICByZXR1
cm4gc3RyaW5nQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6Ok91dGVySFRNTCk7Ci0KLSAg
ICByZXR1cm4gQWNjZXNzaWJpbGl0eTo6cmV0cmlldmVWYWx1ZUZyb21NYWluVGhyZWFkPFN0cmlu
Zz4oW3RoaXNdICgpIC0+IFN0cmluZyB7Ci0gICAgICAgIGF1dG8qIGF4T2JqZWN0ID0gYXNzb2Np
YXRlZEFYT2JqZWN0KCk7Ci0gICAgICAgIFN0cmluZyB2YWx1ZSA9IGF4T2JqZWN0ID8gYXhPYmpl
Y3QtPm91dGVySFRNTCgpLmlzb2xhdGVkQ29weSgpIDogU3RyaW5nKCk7Ci0KLSAgICAgICAgLy8g
Q2FjaGUgdmFsdWUgc28gdGhhdCB0aGVyZSBpcyBubyBuZWVkIHRvIGFjY2VzcyB0aGUgbWFpbiB0
aHJlYWQgaW4gc3Vic2VxdWVudCBjYWxscy4KLSAgICAgICAgY29uc3RfY2FzdDxBWElzb2xhdGVk
T2JqZWN0Kj4odGhpcyktPnNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpPdXRlckhUTUwsIHZh
bHVlKTsKLQotICAgICAgICByZXR1cm4gdmFsdWU7Ci0gICAgfSk7CisgICAgcmV0dXJuIGNvbnN0
X2Nhc3Q8QVhJc29sYXRlZE9iamVjdCo+KHRoaXMpLT5nZXRPclJldHJpZXZlU3RyaW5nUHJvcGVy
dHlWYWx1ZShBWFByb3BlcnR5TmFtZTo6T3V0ZXJIVE1MKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRl
ZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9p
c29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oCmluZGV4IDkzMTkwMTVhYmRjNmRhZjAwMjEw
YTgzZTJjOThkOGRlZjJlMTNkNGIuLjI2ZDUwMzc4YWQwYTljOTQzNWJmOGE2MzM2YmZiNWY3NGRh
OGM2OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0
cmVlL0FYSXNvbGF0ZWRPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmgKQEAgLTk4LDYgKzk4LDExIEBAIHByaXZh
dGU6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RkOjpwYWlyPFQsIFQ+IHBhaXJBdHRyaWJ1
dGVWYWx1ZShBWFByb3BlcnR5TmFtZSkgY29uc3Q7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4g
VCBwcm9wZXJ0eVZhbHVlKEFYUHJvcGVydHlOYW1lKSBjb25zdDsKIAorICAgIC8vIFRoZSBmb2xs
b3dpbmcgbWV0aG9kIHBlcmZvcm1zIGEgbGF6eSBjYWNoaW5nIG9mIHRoZSBnaXZlbiBwcm9wZXJ0
eS4KKyAgICAvLyBJZiB0aGUgcHJvcGVydHkgaXMgYWxyZWFkeSBpbiBtX3Byb3BlcnR5TWFwLCBy
ZXR1cm5zIHRoZSBleGlzdGluZyB2YWx1ZS4KKyAgICAvLyBJZiBub3QsIHJldHJpZXZlcyB0aGUg
cHJvcGVydHkgZnJvbSB0aGUgbWFpbiB0aHJlYWQgYW5kIGNhY2hlIGl0IGZvciBsYXRlciB1c2Uu
CisgICAgU3RyaW5nIGdldE9yUmV0cmlldmVTdHJpbmdQcm9wZXJ0eVZhbHVlKEFYUHJvcGVydHlO
YW1lKTsKKwogICAgIHZvaWQgZmlsbENoaWxkcmVuVmVjdG9yRm9yUHJvcGVydHkoQVhQcm9wZXJ0
eU5hbWUsIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0OwogICAgIHZvaWQgc2V0
TWF0aHNjcmlwdHMoQVhQcm9wZXJ0eU5hbWUsIEFYQ29yZU9iamVjdCYpOwogICAgIHZvaWQgaW5z
ZXJ0TWF0aFBhaXJzKFZlY3RvcjxzdGQ6OnBhaXI8QVhJRCwgQVhJRD4+JiwgQWNjZXNzaWJpbGl0
eU1hdGhNdWx0aXNjcmlwdFBhaXJzJik7CkBAIC0zMzIsOSArMzM3LDkgQEAgcHJpdmF0ZToKICNp
ZiBQTEFURk9STShDT0NPQSkKICAgICBib29sIGZpbGVVcGxvYWRCdXR0b25SZXR1cm5zVmFsdWVJ
blRpdGxlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJv
cGVydHlOYW1lOjpGaWxlVXBsb2FkQnV0dG9uUmV0dXJuc1ZhbHVlSW5UaXRsZSk7IH0KICAgICBT
dHJpbmcgc3BlZWNoSGludEF0dHJpYnV0ZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
c3RyaW5nQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OlNwZWVjaEhpbnQpOyB9Ci0gICAg
U3RyaW5nIGRlc2NyaXB0aW9uQXR0cmlidXRlVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBzdHJpbmdBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6RGVzY3JpcHRpb24pOyB9Cisg
ICAgU3RyaW5nIGRlc2NyaXB0aW9uQXR0cmlidXRlVmFsdWUoKSBjb25zdCBvdmVycmlkZTsKICAg
ICBTdHJpbmcgaGVscFRleHRBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IHN0cmluZ0F0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpIZWxwVGV4dCk7IH0KLSAgICBT
dHJpbmcgdGl0bGVBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHN0cmlu
Z0F0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpUaXRsZUF0dHJpYnV0ZVZhbHVlKTsgfQor
ICAgIFN0cmluZyB0aXRsZUF0dHJpYnV0ZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGU7CiAjZW5kaWYK
ICNpZiBQTEFURk9STShNQUMpCiAgICAgYm9vbCBjYXJldEJyb3dzaW5nRW5hYmxlZCgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6Q2Fy
ZXRCcm93c2luZ0VuYWJsZWQpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2lzb2xhdGVkdHJlZS9tYWMvQVhJc29sYXRlZE9iamVjdE1hYy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL21hYy9BWElzb2xhdGVkT2JqZWN0TWFj
Lm1tCmluZGV4IDJlMmIxZTA0OGI2MDcxM2U3ODk0ZjY1NzUzNzhhMTVlOTJmMzUxOGUuLjNjODVi
ODBlZTNhODA1YmVlODViNTA0NDQ5OGNiMjUxYTQyZjhlYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL21hYy9BWElzb2xhdGVkT2JqZWN0TWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL21hYy9B
WElzb2xhdGVkT2JqZWN0TWFjLm1tCkBAIC0zNCwxMSArMzQsOSBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHZvaWQgQVhJc29sYXRlZE9iamVjdDo6aW5pdGlhbGl6ZVBsYXRmb3JtUHJvcGVydGll
cyhjb25zdCBBWENvcmVPYmplY3QmIG9iamVjdCwgYm9vbCBpc1Jvb3QpCiB7Ci0gICAgc2V0UHJv
cGVydHkoQVhQcm9wZXJ0eU5hbWU6OkRlc2NyaXB0aW9uLCBvYmplY3QuZGVzY3JpcHRpb25BdHRy
aWJ1dGVWYWx1ZSgpLmlzb2xhdGVkQ29weSgpKTsKICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5
TmFtZTo6SGFzQXBwbGVQREZBbm5vdGF0aW9uQXR0cmlidXRlLCBvYmplY3QuaGFzQXBwbGVQREZB
bm5vdGF0aW9uQXR0cmlidXRlKCkpOwogICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpI
ZWxwVGV4dCwgb2JqZWN0LmhlbHBUZXh0QXR0cmlidXRlVmFsdWUoKS5pc29sYXRlZENvcHkoKSk7
CiAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OlNwZWVjaEhpbnQsIG9iamVjdC5zcGVl
Y2hIaW50QXR0cmlidXRlVmFsdWUoKS5pc29sYXRlZENvcHkoKSk7Ci0gICAgc2V0UHJvcGVydHko
QVhQcm9wZXJ0eU5hbWU6OlRpdGxlQXR0cmlidXRlVmFsdWUsIG9iamVjdC50aXRsZUF0dHJpYnV0
ZVZhbHVlKCkuaXNvbGF0ZWRDb3B5KCkpOwogICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1l
OjpDYXJldEJyb3dzaW5nRW5hYmxlZCwgb2JqZWN0LmNhcmV0QnJvd3NpbmdFbmFibGVkKCkpOwog
CiAgICAgaWYgKGlzUm9vdCkKQEAgLTEwMCw2ICs5OCwxNiBAQCB2b2lkIEFYSXNvbGF0ZWRPYmpl
Y3Q6OnNldFByZXZlbnRLZXlib2FyZERPTUV2ZW50RGlzcGF0Y2goYm9vbCB2YWx1ZSkKICAgICB9
KTsKIH0KIAorU3RyaW5nIEFYSXNvbGF0ZWRPYmplY3Q6OmRlc2NyaXB0aW9uQXR0cmlidXRlVmFs
dWUoKSBjb25zdAoreworICAgIHJldHVybiBjb25zdF9jYXN0PEFYSXNvbGF0ZWRPYmplY3QqPih0
aGlzKS0+Z2V0T3JSZXRyaWV2ZVN0cmluZ1Byb3BlcnR5VmFsdWUoQVhQcm9wZXJ0eU5hbWU6OkRl
c2NyaXB0aW9uKTsKK30KKworU3RyaW5nIEFYSXNvbGF0ZWRPYmplY3Q6OnRpdGxlQXR0cmlidXRl
VmFsdWUoKSBjb25zdAoreworICAgIHJldHVybiBjb25zdF9jYXN0PEFYSXNvbGF0ZWRPYmplY3Qq
Pih0aGlzKS0+Z2V0T3JSZXRyaWV2ZVN0cmluZ1Byb3BlcnR5VmFsdWUoQVhQcm9wZXJ0eU5hbWU6
OlRpdGxlQXR0cmlidXRlVmFsdWUpOworfQorCiB9IC8vIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVO
QUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpICYmIFBMQVRGT1JNKE1BQykK
</data>

          </attachment>
      

    </bug>

</bugzilla>