<?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>27325</bug_id>
          
          <creation_ts>2009-07-15 17:46:22 -0700</creation_ts>
          <short_desc>copyInheritableProperties and removeComputedInheritablePropertiesFrom should be deprecated</short_desc>
          <delta_ts>2009-07-24 16:16:46 -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>HTML Editing</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>All</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>
          
          <blocked>20348</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>darin</cc>
    
    <cc>eric</cc>
    
    <cc>justin.garcia</cc>
    
    <cc>mitz</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>132110</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2009-07-15 17:46:22 -0700</bug_when>
    <thetext>removeComputedInheritablePropertiesFrom is not used anywhere and copyInheritableProperties is used across the editing code but very inconsistently.  copyInheritableProperties is poorly named considering the usage of the function.  copyInheritableProperties should be deprecated and callers should use a better named function.

Below are just examples of how copyInheritableProperties is used:

553@ReplaceSelectionCommand.cpp
    RefPtr&lt;CSSMutableStyleDeclaration&gt; styleAtInsertionPos = rangeCompliantEquivalent(insertionPos).computedStyle()-&gt;copyInheritableProperties();
    String styleText = styleAtInsertionPos-&gt;cssText();
    
    if (styleText == static_cast&lt;Element*&gt;(sourceDocumentStyleSpan)-&gt;getAttribute(styleAttr)) {

Here, it&apos;s used to compare the styles of the source and destination.


55@RemoveFormatCommand.cpp
    // Get the default style for this editable root, it&apos;s the style that we&apos;ll give the
    // content that we&apos;re operating on.
    Node* root = frame-&gt;selection()-&gt;rootEditableElement();
    RefPtr&lt;CSSMutableStyleDeclaration&gt; defaultStyle = computedStyle(root)-&gt;copyInheritableProperties();

Here, it&apos;s used to copy styles.


281@DeleteSelectionCommand.cpp
    // Figure out the typing style in effect before the delete is done.
    RefPtr&lt;CSSComputedStyleDeclaration&gt; computedStyle = positionBeforeTabSpan(m_selectionToDelete.start()).computedStyle();
    m_typingStyle = computedStyle-&gt;copyInheritableProperties();

And here, it&apos;s used to retrieve the typing style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132115</commentid>
    <comment_count>1</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2009-07-15 17:55:57 -0700</bug_when>
    <thetext>Eric and I figured out that the last time any significant change was made to this function was http://trac.webkit.org/changeset/7314.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132116</commentid>
    <comment_count>2</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2009-07-15 18:00:42 -0700</bug_when>
    <thetext>It seems to me that while there are several usages of this function, we can categorize it into two:

1. Preserving styles - e.g. you want to preserve styles while editing

Because we almost always remove redundant styles when reapplying the style, we should make a function that takes the destination position, and applies the minimum styles automatically.

2. Typing styles - we set typingStyle

A lot of problems are caused by typing styles (e.g. highlight is lost in various cases).  It may make sense to make a new class, say, TypyingStyle class that centralizes code related to typing style.

Any alternative ideas / suggestions?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132119</commentid>
    <comment_count>3</comment_count>
      <attachid>32825</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2009-07-15 18:26:36 -0700</bug_when>
    <thetext>Created attachment 32825
removes removeComputedInheritablePropertiesFrom and renames copyInheritableProperties</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132120</commentid>
    <comment_count>4</comment_count>
      <attachid>32826</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2009-07-15 18:50:59 -0700</bug_when>
    <thetext>Created attachment 32826
Deprecates copyInheritableProperties and removes removeComputedInheritablePropertiesFrom

Added more detailed comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132324</commentid>
    <comment_count>5</comment_count>
    <who name="Justin Garcia">justin.garcia</who>
    <bug_when>2009-07-16 12:59:17 -0700</bug_when>
    <thetext>This seems reasonable except that preserving styles will still rely on the concept of inheritable properties.  Will it just not use this method that you&apos;re deprecating?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133286</commentid>
    <comment_count>6</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2009-07-20 16:18:59 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; This seems reasonable except that preserving styles will still rely on the
&gt; concept of inheritable properties.  Will it just not use this method that
&gt; you&apos;re deprecating?

I think when we preserve style during editing operations, we also want to preserve background color and text decorations, which are not inheritable properties of CSS.  So the name is still confusing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133871</commentid>
    <comment_count>7</comment_count>
      <attachid>32826</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-07-22 13:09:06 -0700</bug_when>
    <thetext>Comment on attachment 32826
Deprecates copyInheritableProperties and removes removeComputedInheritablePropertiesFrom

Seems fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134676</commentid>
    <comment_count>8</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2009-07-24 16:16:46 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/46280</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>32825</attachid>
            <date>2009-07-15 18:26:36 -0700</date>
            <delta_ts>2009-07-15 18:50:59 -0700</delta_ts>
            <desc>removes removeComputedInheritablePropertiesFrom and renames copyInheritableProperties</desc>
            <filename>fix27325</filename>
            <type>text/plain</type>
            <size>13887</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NTk2MykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzMgQEAKKzIwMDktMDctMTUgIFJ5b3N1a2UgTml3YSAgPHJ5b3N1a2Uubml3YUBn
bWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgY29weUluaGVyaXRhYmxlUHJvcGVydGllcyBhbmQgcmVtb3ZlQ29tcHV0ZWRJbmhlcml0YWJs
ZVByb3BlcnRpZXNGcm9tIHNob3VsZCBiZSBkZXByZWNhdGVkCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzMyNQorCisgICAgICAgIFJlbmFtaW5nIGNv
cHlJbmhlcml0YWJsZVByb3BlcnRpZXMgdG8gZGVwcmVjYXRlZENvcHlJbmhlcml0YWJsZVByb3Bl
cnRpZXMKKyAgICAgICAgUmVtb3ZpbmcgcmVtb3ZlQ29tcHV0ZWRJbmhlcml0YWJsZVByb3BlcnRp
ZXNGcm9tCisKKyAgICAgICAgVGhlcmUgaXMgbm8gdGVzdCBzaW5jZSB0aGUgcGF0Y2ggZG9lcyBu
b3QgY2hhbmdlIGFueSBiZWhhdmlvci4KKworICAgICAgICAqIGNzcy9DU1NDb21wdXRlZFN0eWxl
RGVjbGFyYXRpb24uY3BwOiByZW1vdmVDb21wdXRlZEluaGVyaXRhYmxlUHJvcGVydGllc0Zyb20g
aGFzIGJlZW4gcmVtb3ZlZAorICAgICAgICAoV2ViQ29yZTo6Q1NTQ29tcHV0ZWRTdHlsZURlY2xh
cmF0aW9uOjpkZXByZWNhdGVkQ29weUluaGVyaXRhYmxlUHJvcGVydGllcyk6IGhhcyBiZWVuIHJl
bmFtZWQgZnJvbSBjb3B5SW5oZXJpdGFibGVQcm9wZXJ0aWVzCisgICAgICAgICogY3NzL0NTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oOiBkaXR0bworICAgICAgICAqIGVkaXRpbmcvRGVsZXRl
U2VsZWN0aW9uQ29tbWFuZC5jcHA6IGRpdHRvCisgICAgICAgIChXZWJDb3JlOjpyZW1vdmVFbmNs
b3NpbmdBbmNob3JTdHlsZSk6IGRpdHRvCisgICAgICAgIChXZWJDb3JlOjpEZWxldGVTZWxlY3Rp
b25Db21tYW5kOjpzYXZlVHlwaW5nU3R5bGVTdGF0ZSk6IGRpdHRvCisgICAgICAgICogZWRpdGlu
Zy9FZGl0Q29tbWFuZC5jcHA6IGRpdHRvCisgICAgICAgIChXZWJDb3JlOjpFZGl0Q29tbWFuZDo6
c3R5bGVBdFBvc2l0aW9uKTogZGl0dG8KKyAgICAgICAgKiBlZGl0aW5nL1JlbW92ZUZvcm1hdENv
bW1hbmQuY3BwOiBkaXR0bworICAgICAgICAoV2ViQ29yZTo6UmVtb3ZlRm9ybWF0Q29tbWFuZDo6
ZG9BcHBseSk6IGRpdHRvCisgICAgICAgICogZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFu
ZC5jcHA6IGRpdHRvCisgICAgICAgIChXZWJDb3JlOjpoYW5kbGVTdHlsZVNwYW5zQmVmb3JlSW5z
ZXJ0aW9uKTogZGl0dG8KKyAgICAgICAgKFdlYkNvcmU6OlJlcGxhY2VTZWxlY3Rpb25Db21tYW5k
OjpoYW5kbGVTdHlsZVNwYW5zKTogZGl0dG8KKyAgICAgICAgKiBlZGl0aW5nL21hcmt1cC5jcHA6
IGRpdHRvCisgICAgICAgIChXZWJDb3JlOjpyZW1vdmVFbmNsb3NpbmdNYWlsQmxvY2txdW90ZVN0
eWxlKTogZGl0dG8KKyAgICAgICAgKFdlYkNvcmU6OnJlbW92ZURlZmF1bHRTdHlsZXMpOiBkaXR0
bworICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlTWFya3VwKTogZGl0dG8KKwogMjAwOS0wNy0xNSAg
RGF2aWQgTGV2aW4gIDxsZXZpbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgTGF5b3V0IHRlc3Qg
Zml4LCByZXZlcnRpbmcgcHJldmlvdXMgY2hhbmdlLgpJbmRleDogV2ViQ29yZS9jc3MvQ1NTQ29t
cHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCShyZXZpc2lvbiA0NTg2NCkKKysrIFdlYkNvcmUv
Y3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0
NzEsMTEgKzE0NzEsNiBAQCBzdGF0aWMgY29uc3QgaW50IGluaGVyaXRhYmxlUHJvcGVydGllc1td
CiAKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBudW1Jbmhlcml0YWJsZVByb3BlcnRpZXMgPSBzaXpl
b2YoaW5oZXJpdGFibGVQcm9wZXJ0aWVzKSAvIHNpemVvZihpbmhlcml0YWJsZVByb3BlcnRpZXNb
MF0pOwogCi12b2lkIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6cmVtb3ZlQ29tcHV0ZWRJ
bmhlcml0YWJsZVByb3BlcnRpZXNGcm9tKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBkZWNs
YXJhdGlvbikKLXsKLSAgICBkZWNsYXJhdGlvbi0+cmVtb3ZlUHJvcGVydGllc0luU2V0KGluaGVy
aXRhYmxlUHJvcGVydGllcywgbnVtSW5oZXJpdGFibGVQcm9wZXJ0aWVzKTsKLX0KLQogYm9vbCBD
U1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmNzc1Byb3BlcnR5TWF0Y2hlcyhjb25zdCBDU1NQ
cm9wZXJ0eSogcHJvcGVydHkpIGNvbnN0CiB7CiAgICAgaWYgKHByb3BlcnR5LT5pZCgpID09IENT
U1Byb3BlcnR5Rm9udFNpemUgJiYgcHJvcGVydHktPnZhbHVlKCktPmlzUHJpbWl0aXZlVmFsdWUo
KSAmJiBtX25vZGUpIHsKQEAgLTE0OTIsNyArMTQ4Nyw3IEBAIGJvb2wgQ1NTQ29tcHV0ZWRTdHls
ZURlY2xhcmF0aW9uOjpjc3NQcm8KICAgICByZXR1cm4gQ1NTU3R5bGVEZWNsYXJhdGlvbjo6Y3Nz
UHJvcGVydHlNYXRjaGVzKHByb3BlcnR5KTsKIH0KIAotUGFzc1JlZlB0cjxDU1NNdXRhYmxlU3R5
bGVEZWNsYXJhdGlvbj4gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpjb3B5SW5oZXJpdGFi
bGVQcm9wZXJ0aWVzKCkgY29uc3QKK1Bhc3NSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRp
b24+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6ZGVwcmVjYXRlZENvcHlJbmhlcml0YWJs
ZVByb3BlcnRpZXMoKSBjb25zdAogewogICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJh
dGlvbj4gc3R5bGUgPSBjb3B5UHJvcGVydGllc0luU2V0KGluaGVyaXRhYmxlUHJvcGVydGllcywg
bnVtSW5oZXJpdGFibGVQcm9wZXJ0aWVzKTsKICAgICBpZiAoc3R5bGUgJiYgbV9ub2RlICYmIG1f
bm9kZS0+Y29tcHV0ZWRTdHlsZSgpKSB7CkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0
eWxlRGVjbGFyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0
eWxlRGVjbGFyYXRpb24uaAkocmV2aXNpb24gNDU4NjQpCisrKyBXZWJDb3JlL2Nzcy9DU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNTUsMTAgKzU1LDcgQEAg
cHVibGljOgogICAgIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IGdldFNWR1Byb3BlcnR5Q1NTVmFsdWUo
aW50IHByb3BlcnR5SUQsIEVVcGRhdGVMYXlvdXQpIGNvbnN0OwogI2VuZGlmCiAKLSAgICBQYXNz
UmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBjb3B5SW5oZXJpdGFibGVQcm9wZXJ0
aWVzKCkgY29uc3Q7Ci0KLSAgICBzdGF0aWMgdm9pZCByZW1vdmVDb21wdXRlZEluaGVyaXRhYmxl
UHJvcGVydGllc0Zyb20oQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qKTsKLQorICAgIFBhc3NS
ZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IGRlcHJlY2F0ZWRDb3B5SW5oZXJpdGFi
bGVQcm9wZXJ0aWVzKCkgY29uc3Q7CiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBib29sIGNzc1By
b3BlcnR5TWF0Y2hlcyhjb25zdCBDU1NQcm9wZXJ0eSopIGNvbnN0OwogCkluZGV4OiBXZWJDb3Jl
L2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCShyZXZpc2lvbiA0NTg2NCkKKysr
IFdlYkNvcmUvZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjYwLDggKzI2MCw4IEBAIHN0YXRpYyB2b2lkIHJlbW92ZUVuY2xvc2luZ0FuY2hvclN0
eWxlKEMKICAgICBpZiAoIWVuY2xvc2luZ0FuY2hvciB8fCAhZW5jbG9zaW5nQW5jaG9yLT5wYXJl
bnROb2RlKCkpCiAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIAotICAgIFJlZlB0cjxDU1NN
dXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gcGFyZW50U3R5bGUgPSBQb3NpdGlvbihlbmNsb3NpbmdB
bmNob3ItPnBhcmVudE5vZGUoKSwgMCkuY29tcHV0ZWRTdHlsZSgpLT5jb3B5SW5oZXJpdGFibGVQ
cm9wZXJ0aWVzKCk7Ci0gICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBhbmNo
b3JTdHlsZSA9IFBvc2l0aW9uKGVuY2xvc2luZ0FuY2hvciwgMCkuY29tcHV0ZWRTdHlsZSgpLT5j
b3B5SW5oZXJpdGFibGVQcm9wZXJ0aWVzKCk7CisgICAgUmVmUHRyPENTU011dGFibGVTdHlsZURl
Y2xhcmF0aW9uPiBwYXJlbnRTdHlsZSA9IFBvc2l0aW9uKGVuY2xvc2luZ0FuY2hvci0+cGFyZW50
Tm9kZSgpLCAwKS5jb21wdXRlZFN0eWxlKCktPmRlcHJlY2F0ZWRDb3B5SW5oZXJpdGFibGVQcm9w
ZXJ0aWVzKCk7CisgICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBhbmNob3JT
dHlsZSA9IFBvc2l0aW9uKGVuY2xvc2luZ0FuY2hvciwgMCkuY29tcHV0ZWRTdHlsZSgpLT5kZXBy
ZWNhdGVkQ29weUluaGVyaXRhYmxlUHJvcGVydGllcygpOwogICAgIHBhcmVudFN0eWxlLT5kaWZm
KGFuY2hvclN0eWxlLmdldCgpKTsKICAgICBhbmNob3JTdHlsZS0+ZGlmZihzdHlsZSk7CiB9CkBA
IC0yODAsNyArMjgwLDcgQEAgdm9pZCBEZWxldGVTZWxlY3Rpb25Db21tYW5kOjpzYXZlVHlwaW5n
UwogICAgICAgICAKICAgICAvLyBGaWd1cmUgb3V0IHRoZSB0eXBpbmcgc3R5bGUgaW4gZWZmZWN0
IGJlZm9yZSB0aGUgZGVsZXRlIGlzIGRvbmUuCiAgICAgUmVmUHRyPENTU0NvbXB1dGVkU3R5bGVE
ZWNsYXJhdGlvbj4gY29tcHV0ZWRTdHlsZSA9IHBvc2l0aW9uQmVmb3JlVGFiU3BhbihtX3NlbGVj
dGlvblRvRGVsZXRlLnN0YXJ0KCkpLmNvbXB1dGVkU3R5bGUoKTsKLSAgICBtX3R5cGluZ1N0eWxl
ID0gY29tcHV0ZWRTdHlsZS0+Y29weUluaGVyaXRhYmxlUHJvcGVydGllcygpOworICAgIG1fdHlw
aW5nU3R5bGUgPSBjb21wdXRlZFN0eWxlLT5kZXByZWNhdGVkQ29weUluaGVyaXRhYmxlUHJvcGVy
dGllcygpOwogICAgIAogICAgIHJlbW92ZUVuY2xvc2luZ0FuY2hvclN0eWxlKG1fdHlwaW5nU3R5
bGUuZ2V0KCksIG1fc2VsZWN0aW9uVG9EZWxldGUuc3RhcnQoKSk7CiAgICAgCkBAIC0yODgsNyAr
Mjg4LDcgQEAgdm9pZCBEZWxldGVTZWxlY3Rpb25Db21tYW5kOjpzYXZlVHlwaW5nUwogICAgIC8v
IFdlJ2xsIHVzZSB0aGlzIGxhdGVyIGluIGNvbXB1dGVUeXBpbmdTdHlsZUFmdGVyRGVsZXRlIGlm
IHdlIGVuZCB1cCBvdXRzaWRlIG9mIGEgTWFpbCBibG9ja3F1b3RlCiAgICAgaWYgKG5lYXJlc3RN
YWlsQmxvY2txdW90ZShtX3NlbGVjdGlvblRvRGVsZXRlLnN0YXJ0KCkubm9kZSgpKSkgewogICAg
ICAgICBjb21wdXRlZFN0eWxlID0gbV9zZWxlY3Rpb25Ub0RlbGV0ZS5lbmQoKS5jb21wdXRlZFN0
eWxlKCk7Ci0gICAgICAgIG1fZGVsZXRlSW50b0Jsb2NrcXVvdGVTdHlsZSA9IGNvbXB1dGVkU3R5
bGUtPmNvcHlJbmhlcml0YWJsZVByb3BlcnRpZXMoKTsKKyAgICAgICAgbV9kZWxldGVJbnRvQmxv
Y2txdW90ZVN0eWxlID0gY29tcHV0ZWRTdHlsZS0+ZGVwcmVjYXRlZENvcHlJbmhlcml0YWJsZVBy
b3BlcnRpZXMoKTsKICAgICB9IGVsc2UKICAgICAgICAgbV9kZWxldGVJbnRvQmxvY2txdW90ZVN0
eWxlID0gMDsKIH0KSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9FZGl0Q29tbWFuZC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL0VkaXRDb21tYW5kLmNwcAkocmV2aXNpb24gNDU4NjQp
CisrKyBXZWJDb3JlL2VkaXRpbmcvRWRpdENvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
OTcsNyArMTk3LDcgQEAgYm9vbCBFZGl0Q29tbWFuZDo6aXNUeXBpbmdDb21tYW5kKCkgY29ucwog
CiBQYXNzUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBFZGl0Q29tbWFuZDo6c3R5
bGVBdFBvc2l0aW9uKGNvbnN0IFBvc2l0aW9uICZwb3MpCiB7Ci0gICAgUmVmUHRyPENTU011dGFi
bGVTdHlsZURlY2xhcmF0aW9uPiBzdHlsZSA9IHBvc2l0aW9uQmVmb3JlVGFiU3Bhbihwb3MpLmNv
bXB1dGVkU3R5bGUoKS0+Y29weUluaGVyaXRhYmxlUHJvcGVydGllcygpOworICAgIFJlZlB0cjxD
U1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gc3R5bGUgPSBwb3NpdGlvbkJlZm9yZVRhYlNwYW4o
cG9zKS5jb21wdXRlZFN0eWxlKCktPmRlcHJlY2F0ZWRDb3B5SW5oZXJpdGFibGVQcm9wZXJ0aWVz
KCk7CiAgCiAgICAgLy8gRklYTUU6IEl0IHNlZW1zIG1pc2xlYWRpbmcgdG8gYWxzbyBpbmNsdWRl
IHRoZSB0eXBpbmcgc3R5bGUgd2hlbiByZXR1cm5pbmcgdGhlIHN0eWxlIGF0IHNvbWUgYXJiaXRy
YXJ5CiAgICAgLy8gcG9zaXRpb24gaW4gdGhlIGRvY3VtZW50LgpJbmRleDogV2ViQ29yZS9lZGl0
aW5nL1JlbW92ZUZvcm1hdENvbW1hbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGlu
Zy9SZW1vdmVGb3JtYXRDb21tYW5kLmNwcAkocmV2aXNpb24gNDU4NjQpCisrKyBXZWJDb3JlL2Vk
aXRpbmcvUmVtb3ZlRm9ybWF0Q29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1
LDcgQEAgdm9pZCBSZW1vdmVGb3JtYXRDb21tYW5kOjpkb0FwcGx5KCkKICAgICAvLyBHZXQgdGhl
IGRlZmF1bHQgc3R5bGUgZm9yIHRoaXMgZWRpdGFibGUgcm9vdCwgaXQncyB0aGUgc3R5bGUgdGhh
dCB3ZSdsbCBnaXZlIHRoZQogICAgIC8vIGNvbnRlbnQgdGhhdCB3ZSdyZSBvcGVyYXRpbmcgb24u
CiAgICAgTm9kZSogcm9vdCA9IGZyYW1lLT5zZWxlY3Rpb24oKS0+cm9vdEVkaXRhYmxlRWxlbWVu
dCgpOwotICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gZGVmYXVsdFN0eWxl
ID0gY29tcHV0ZWRTdHlsZShyb290KS0+Y29weUluaGVyaXRhYmxlUHJvcGVydGllcygpOworICAg
IFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gZGVmYXVsdFN0eWxlID0gY29tcHV0
ZWRTdHlsZShyb290KS0+ZGVwcmVjYXRlZENvcHlJbmhlcml0YWJsZVByb3BlcnRpZXMoKTsKICAg
ICAKICAgICAvLyBEZWxldGUgdGhlIHNlbGVjdGVkIGNvbnRlbnQuCiAgICAgLy8gRklYTUU6IFdl
IHNob3VsZCBiZSBhYmxlIHRvIGxlYXZlIHRoaXMgdG8gaW5zZXJ0VGV4dCwgYnV0IGl0cyBkZWxl
dGUgb3BlcmF0aW9uCkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1h
bmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29t
bWFuZC5jcHAJKHJldmlzaW9uIDQ1ODY0KQorKysgV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxl
Y3Rpb25Db21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUwLDcgKzU1MCw3IEBAIHN0YXRp
YyBib29sIGhhbmRsZVN0eWxlU3BhbnNCZWZvcmVJbnNlcnQKICAgICBOb2RlKiBzb3VyY2VEb2N1
bWVudFN0eWxlU3BhbiA9IHRvcE5vZGU7CiAgICAgUmVmUHRyPE5vZGU+IGNvcGllZFJhbmdlU3R5
bGVTcGFuID0gc291cmNlRG9jdW1lbnRTdHlsZVNwYW4tPmZpcnN0Q2hpbGQoKTsKICAgICAKLSAg
ICBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IHN0eWxlQXRJbnNlcnRpb25Qb3Mg
PSByYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQoaW5zZXJ0aW9uUG9zKS5jb21wdXRlZFN0eWxlKCkt
PmNvcHlJbmhlcml0YWJsZVByb3BlcnRpZXMoKTsKKyAgICBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxl
RGVjbGFyYXRpb24+IHN0eWxlQXRJbnNlcnRpb25Qb3MgPSByYW5nZUNvbXBsaWFudEVxdWl2YWxl
bnQoaW5zZXJ0aW9uUG9zKS5jb21wdXRlZFN0eWxlKCktPmRlcHJlY2F0ZWRDb3B5SW5oZXJpdGFi
bGVQcm9wZXJ0aWVzKCk7CiAgICAgU3RyaW5nIHN0eWxlVGV4dCA9IHN0eWxlQXRJbnNlcnRpb25Q
b3MtPmNzc1RleHQoKTsKICAgICAKICAgICBpZiAoc3R5bGVUZXh0ID09IHN0YXRpY19jYXN0PEVs
ZW1lbnQqPihzb3VyY2VEb2N1bWVudFN0eWxlU3BhbiktPmdldEF0dHJpYnV0ZShzdHlsZUF0dHIp
KSB7CkBAIC02MDYsOCArNjA2LDggQEAgdm9pZCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6aGFu
ZGxlU3R5bAogICAgIC8vIHN0eWxlcyBmcm9tIGJsb2NrcXVvdGVOb2RlIGFyZSBhbGxvd2VkIHRv
IG92ZXJyaWRlIHRob3NlIGZyb20gdGhlIHNvdXJjZSBkb2N1bWVudCwgc2VlIDxyZGFyOi8vcHJv
YmxlbS80OTMwOTg2PiBhbmQgPHJkYXI6Ly9wcm9ibGVtLzUwODkzMjc+LgogICAgIE5vZGUqIGJs
b2NrcXVvdGVOb2RlID0gaXNNYWlsUGFzdGVBc1F1b3RhdGlvbk5vZGUoY29udGV4dCkgPyBjb250
ZXh0IDogbmVhcmVzdE1haWxCbG9ja3F1b3RlKGNvbnRleHQpOwogICAgIGlmIChibG9ja3F1b3Rl
Tm9kZSkgewotICAgICAgICBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IGJsb2Nr
cXVvdGVTdHlsZSA9IGNvbXB1dGVkU3R5bGUoYmxvY2txdW90ZU5vZGUpLT5jb3B5SW5oZXJpdGFi
bGVQcm9wZXJ0aWVzKCk7Ci0gICAgICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlv
bj4gcGFyZW50U3R5bGUgPSBjb21wdXRlZFN0eWxlKGJsb2NrcXVvdGVOb2RlLT5wYXJlbnROb2Rl
KCkpLT5jb3B5SW5oZXJpdGFibGVQcm9wZXJ0aWVzKCk7CisgICAgICAgIFJlZlB0cjxDU1NNdXRh
YmxlU3R5bGVEZWNsYXJhdGlvbj4gYmxvY2txdW90ZVN0eWxlID0gY29tcHV0ZWRTdHlsZShibG9j
a3F1b3RlTm9kZSktPmRlcHJlY2F0ZWRDb3B5SW5oZXJpdGFibGVQcm9wZXJ0aWVzKCk7CisgICAg
ICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gcGFyZW50U3R5bGUgPSBjb21w
dXRlZFN0eWxlKGJsb2NrcXVvdGVOb2RlLT5wYXJlbnROb2RlKCkpLT5kZXByZWNhdGVkQ29weUlu
aGVyaXRhYmxlUHJvcGVydGllcygpOwogICAgICAgICBwYXJlbnRTdHlsZS0+ZGlmZihibG9ja3F1
b3RlU3R5bGUuZ2V0KCkpOwogCiAgICAgICAgIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpj
b25zdF9pdGVyYXRvciBlbmQgPSBibG9ja3F1b3RlU3R5bGUtPmVuZCgpOwpAQCAtNjE5LDcgKzYx
OSw3IEBAIHZvaWQgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmhhbmRsZVN0eWwKICAgICAgICAg
Y29udGV4dCA9IGJsb2NrcXVvdGVOb2RlLT5wYXJlbnROb2RlKCk7CiAgICAgfQogICAgIAotICAg
IFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gY29udGV4dFN0eWxlID0gY29tcHV0
ZWRTdHlsZShjb250ZXh0KS0+Y29weUluaGVyaXRhYmxlUHJvcGVydGllcygpOworICAgIFJlZlB0
cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gY29udGV4dFN0eWxlID0gY29tcHV0ZWRTdHls
ZShjb250ZXh0KS0+ZGVwcmVjYXRlZENvcHlJbmhlcml0YWJsZVByb3BlcnRpZXMoKTsKICAgICBj
b250ZXh0U3R5bGUtPmRpZmYoc291cmNlRG9jdW1lbnRTdHlsZS5nZXQoKSk7CiAgICAgCiAgICAg
Ly8gUmVtb3ZlIGJsb2NrIHByb3BlcnRpZXMgaW4gdGhlIHNwYW4ncyBzdHlsZS4gVGhpcyBwcmV2
ZW50cyBwcm9wZXJ0aWVzIHRoYXQgcHJvYmFibHkgaGF2ZSBubyBlZmZlY3QgCkBAIC02NTUsNyAr
NjU1LDcgQEAgdm9pZCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6aGFuZGxlU3R5bAogICAgIAog
ICAgIC8vIFJlbW92ZSByZWR1bmRhbnQgc3R5bGVzLgogICAgIGNvbnRleHQgPSBjb3BpZWRSYW5n
ZVN0eWxlU3Bhbi0+cGFyZW50Tm9kZSgpOwotICAgIGNvbnRleHRTdHlsZSA9IGNvbXB1dGVkU3R5
bGUoY29udGV4dCktPmNvcHlJbmhlcml0YWJsZVByb3BlcnRpZXMoKTsKKyAgICBjb250ZXh0U3R5
bGUgPSBjb21wdXRlZFN0eWxlKGNvbnRleHQpLT5kZXByZWNhdGVkQ29weUluaGVyaXRhYmxlUHJv
cGVydGllcygpOwogICAgIGNvbnRleHRTdHlsZS0+ZGlmZihjb3BpZWRSYW5nZVN0eWxlLmdldCgp
KTsKICAgICAKICAgICAvLyBTZWUgdGhlIGNvbW1lbnRzIGFib3ZlIGFib3V0IHJlbW92aW5nIGJs
b2NrIHByb3BlcnRpZXMuCkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAkocmV2aXNpb24gNDU4NjQpCisrKyBX
ZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjkyLDggKzI5Miw4
IEBAIHN0YXRpYyB2b2lkIHJlbW92ZUVuY2xvc2luZ01haWxCbG9ja3F1b3QKICAgICBpZiAoIWJs
b2NrcXVvdGUgfHwgIWJsb2NrcXVvdGUtPnBhcmVudE5vZGUoKSkKICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAgICAgCi0gICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBwYXJl
bnRTdHlsZSA9IFBvc2l0aW9uKGJsb2NrcXVvdGUtPnBhcmVudE5vZGUoKSwgMCkuY29tcHV0ZWRT
dHlsZSgpLT5jb3B5SW5oZXJpdGFibGVQcm9wZXJ0aWVzKCk7Ci0gICAgUmVmUHRyPENTU011dGFi
bGVTdHlsZURlY2xhcmF0aW9uPiBibG9ja3F1b3RlU3R5bGUgPSBQb3NpdGlvbihibG9ja3F1b3Rl
LCAwKS5jb21wdXRlZFN0eWxlKCktPmNvcHlJbmhlcml0YWJsZVByb3BlcnRpZXMoKTsKKyAgICBS
ZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IHBhcmVudFN0eWxlID0gUG9zaXRpb24o
YmxvY2txdW90ZS0+cGFyZW50Tm9kZSgpLCAwKS5jb21wdXRlZFN0eWxlKCktPmRlcHJlY2F0ZWRD
b3B5SW5oZXJpdGFibGVQcm9wZXJ0aWVzKCk7CisgICAgUmVmUHRyPENTU011dGFibGVTdHlsZURl
Y2xhcmF0aW9uPiBibG9ja3F1b3RlU3R5bGUgPSBQb3NpdGlvbihibG9ja3F1b3RlLCAwKS5jb21w
dXRlZFN0eWxlKCktPmRlcHJlY2F0ZWRDb3B5SW5oZXJpdGFibGVQcm9wZXJ0aWVzKCk7CiAgICAg
cGFyZW50U3R5bGUtPmRpZmYoYmxvY2txdW90ZVN0eWxlLmdldCgpKTsKICAgICBibG9ja3F1b3Rl
U3R5bGUtPmRpZmYoc3R5bGUpOwogfQpAQCAtMzAzLDcgKzMwMyw3IEBAIHN0YXRpYyB2b2lkIHJl
bW92ZURlZmF1bHRTdHlsZXMoQ1NTTXV0YWIKICAgICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVu
dC0+ZG9jdW1lbnRFbGVtZW50KCkpCiAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIAotICAg
IFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gZG9jdW1lbnRTdHlsZSA9IGNvbXB1
dGVkU3R5bGUoZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpKS0+Y29weUluaGVyaXRhYmxlUHJv
cGVydGllcygpOworICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gZG9jdW1l
bnRTdHlsZSA9IGNvbXB1dGVkU3R5bGUoZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpKS0+ZGVw
cmVjYXRlZENvcHlJbmhlcml0YWJsZVByb3BlcnRpZXMoKTsKICAgICBkb2N1bWVudFN0eWxlLT5k
aWZmKHN0eWxlKTsKIH0KIApAQCAtOTMwLDcgKzkzMCw3IEBAIFN0cmluZyBjcmVhdGVNYXJrdXAo
Y29uc3QgUmFuZ2UqIHJhbmdlLCAKICAgICAKICAgICBOb2RlKiBjaGVja0FuY2VzdG9yID0gc3Bl
Y2lhbENvbW1vbkFuY2VzdG9yID8gc3BlY2lhbENvbW1vbkFuY2VzdG9yIDogY29tbW9uQW5jZXN0
b3I7CiAgICAgaWYgKGNoZWNrQW5jZXN0b3ItPnJlbmRlcmVyKCkpIHsKLSAgICAgICAgUmVmUHRy
PENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBjaGVja0FuY2VzdG9yU3R5bGUgPSBjb21wdXRl
ZFN0eWxlKGNoZWNrQW5jZXN0b3IpLT5jb3B5SW5oZXJpdGFibGVQcm9wZXJ0aWVzKCk7CisgICAg
ICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gY2hlY2tBbmNlc3RvclN0eWxl
ID0gY29tcHV0ZWRTdHlsZShjaGVja0FuY2VzdG9yKS0+ZGVwcmVjYXRlZENvcHlJbmhlcml0YWJs
ZVByb3BlcnRpZXMoKTsKICAgICAgICAgaWYgKCFwcm9wZXJ0eU1pc3NpbmdPckVxdWFsVG9Ob25l
KGNoZWNrQW5jZXN0b3JTdHlsZS5nZXQoKSwgQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlv
bnNJbkVmZmVjdCkpCiAgICAgICAgICAgICBzcGVjaWFsQ29tbW9uQW5jZXN0b3IgPSBlbmNsb3Np
bmdOb2RlT2ZUeXBlKFBvc2l0aW9uKGNoZWNrQW5jZXN0b3IsIDApLCAmZWxlbWVudEhhc1RleHRE
ZWNvcmF0aW9uUHJvcGVydHkpOwogICAgIH0KQEAgLTEwMDAsNyArMTAwMCw3IEBAIFN0cmluZyBj
cmVhdGVNYXJrdXAoY29uc3QgUmFuZ2UqIHJhbmdlLCAKICAgICAvLyBBZGQgYSB3cmFwcGVyIHNw
YW4gd2l0aCB0aGUgc3R5bGVzIHRoYXQgYWxsIG9mIHRoZSBub2RlcyBpbiB0aGUgbWFya3VwIGlu
aGVyaXQuCiAgICAgTm9kZSogcGFyZW50T2ZMYXN0Q2xvc2VkID0gbGFzdENsb3NlZCA/IGxhc3RD
bG9zZWQtPnBhcmVudE5vZGUoKSA6IDA7CiAgICAgaWYgKHBhcmVudE9mTGFzdENsb3NlZCAmJiBw
YXJlbnRPZkxhc3RDbG9zZWQtPnJlbmRlcmVyKCkpIHsKLSAgICAgICAgUmVmUHRyPENTU011dGFi
bGVTdHlsZURlY2xhcmF0aW9uPiBzdHlsZSA9IGNvbXB1dGVkU3R5bGUocGFyZW50T2ZMYXN0Q2xv
c2VkKS0+Y29weUluaGVyaXRhYmxlUHJvcGVydGllcygpOworICAgICAgICBSZWZQdHI8Q1NTTXV0
YWJsZVN0eWxlRGVjbGFyYXRpb24+IHN0eWxlID0gY29tcHV0ZWRTdHlsZShwYXJlbnRPZkxhc3RD
bG9zZWQpLT5kZXByZWNhdGVkQ29weUluaGVyaXRhYmxlUHJvcGVydGllcygpOwogCiAgICAgICAg
IC8vIFN0eWxlcyB0aGF0IE1haWwgYmxvY2txdW90ZXMgY29udHJpYnV0ZSBzaG91bGQgb25seSBi
ZSBwbGFjZWQgb24gdGhlIE1haWwgYmxvY2txdW90ZSwgdG8gaGVscAogICAgICAgICAvLyB1cyBk
aWZmZXJlbnRpYXRlIHRob3NlIHN0eWxlcyBmcm9tIG9uZXMgdGhhdCB0aGUgdXNlciBoYXMgYXBw
bGllZC4gIFRoaXMgaGVscHMgdXMKQEAgLTEwMzIsNyArMTAzMiw3IEBAIFN0cmluZyBjcmVhdGVN
YXJrdXAoY29uc3QgUmFuZ2UqIHJhbmdlLCAKICAgICAgICAgLy8gQWRkIGEgc3R5bGUgc3BhbiB3
aXRoIHRoZSBkb2N1bWVudCdzIGRlZmF1bHQgc3R5bGVzLiAgV2UgYWRkIHRoZXNlIGluIGEgc2Vw
YXJhdGUKICAgICAgICAgLy8gc3BhbiBzbyB0aGF0IGF0IHBhc3RlIHRpbWUgd2UgY2FuIGRpZmZl
cmVudGlhdGUgYmV0d2VlbiBkb2N1bWVudCBkZWZhdWx0cyBhbmQgdXNlcgogICAgICAgICAvLyBh
cHBsaWVkIHN0eWxlcy4KLSAgICAgICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9u
PiBkZWZhdWx0U3R5bGUgPSBjb21wdXRlZFN0eWxlKGRvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQo
KSktPmNvcHlJbmhlcml0YWJsZVByb3BlcnRpZXMoKTsKKyAgICAgICAgUmVmUHRyPENTU011dGFi
bGVTdHlsZURlY2xhcmF0aW9uPiBkZWZhdWx0U3R5bGUgPSBjb21wdXRlZFN0eWxlKGRvY3VtZW50
LT5kb2N1bWVudEVsZW1lbnQoKSktPmRlcHJlY2F0ZWRDb3B5SW5oZXJpdGFibGVQcm9wZXJ0aWVz
KCk7CiAgICAgICAgIAogICAgICAgICBpZiAoZGVmYXVsdFN0eWxlLT5sZW5ndGgoKSA+IDApIHsK
ICAgICAgICAgICAgIFZlY3RvcjxVQ2hhcj4gb3BlblRhZzsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>32826</attachid>
            <date>2009-07-15 18:50:59 -0700</date>
            <delta_ts>2009-07-22 13:09:06 -0700</delta_ts>
            <desc>Deprecates copyInheritableProperties and removes removeComputedInheritablePropertiesFrom</desc>
            <filename>fix27325b</filename>
            <type>text/plain</type>
            <size>14471</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NTk2MykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzcgQEAKKzIwMDktMDctMTUgIFJ5b3N1a2UgTml3YSAgPHJ5b3N1a2Uubml3YUBn
bWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgY29weUluaGVyaXRhYmxlUHJvcGVydGllcyBhbmQgcmVtb3ZlQ29tcHV0ZWRJbmhlcml0YWJs
ZVByb3BlcnRpZXNGcm9tIHNob3VsZCBiZSBkZXByZWNhdGVkCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzMyNQorCisgICAgICAgIFRoaXMgcGF0Y2gg
ZGVwcmVjYXRlcyBjb3B5SW5oZXJpdGFibGVQcm9wZXJ0aWVzIGJlY2F1c2UgaXQgaGFzIGJlZW4g
dXNlZCBmb3IgdHdvIGRpZmZlcmVudCBwdXJwb3NlczoKKyAgICAgICAgMS4gIENhbGN1bGF0aW5n
IHRoZSB0eXBpbmcgc3R5bGUuCisgICAgICAgIDIuICBNb3ZpbmcgSFRNTCBzdWJ0cmVlcyBhbmQg
c2Vla2luZyB0byByZW1vdmUgcmVkdW5kYW50IHN0eWxlcy4KKyAgICAgICAgVGhlc2UgdGFza3Mg
c2hvdWxkIGJlIGJyb2tlbiBvdXQgaW50byB0d28gc2VwYXJhdGUgZnVuY3Rpb25zLiAgTmV3IGNv
ZGUgc2hvdWxkIG5vdCB1c2UgdGhpcyBmdW5jdGlvbi4KKworICAgICAgICBJdCBkZWxldGVzIHJl
bW92ZUNvbXB1dGVkSW5oZXJpdGFibGVQcm9wZXJ0aWVzRnJvbSBiZWNhdXNlIGl0IGhhc24ndCBi
ZWVuIHVzZWQgYW55d2hlcmUuCisKKyAgICAgICAgVGhlcmUgaXMgbm8gdGVzdCBzaW5jZSB0aGUg
cGF0Y2ggZG9lcyBub3QgY2hhbmdlIGFueSBiZWhhdmlvci4KKworICAgICAgICAqIGNzcy9DU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwOiByZW1vdmVDb21wdXRlZEluaGVyaXRhYmxlUHJv
cGVydGllc0Zyb20gaGFzIGJlZW4gcmVtb3ZlZAorICAgICAgICAoV2ViQ29yZTo6Q1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uOjpkZXByZWNhdGVkQ29weUluaGVyaXRhYmxlUHJvcGVydGllcyk6
IGhhcyBiZWVuIHJlbmFtZWQgZnJvbSBjb3B5SW5oZXJpdGFibGVQcm9wZXJ0aWVzCisgICAgICAg
ICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oOiBkaXR0bworICAgICAgICAqIGVk
aXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHA6IGRpdHRvCisgICAgICAgIChXZWJDb3Jl
OjpyZW1vdmVFbmNsb3NpbmdBbmNob3JTdHlsZSk6IGRpdHRvCisgICAgICAgIChXZWJDb3JlOjpE
ZWxldGVTZWxlY3Rpb25Db21tYW5kOjpzYXZlVHlwaW5nU3R5bGVTdGF0ZSk6IGRpdHRvCisgICAg
ICAgICogZWRpdGluZy9FZGl0Q29tbWFuZC5jcHA6IGRpdHRvCisgICAgICAgIChXZWJDb3JlOjpF
ZGl0Q29tbWFuZDo6c3R5bGVBdFBvc2l0aW9uKTogZGl0dG8KKyAgICAgICAgKiBlZGl0aW5nL1Jl
bW92ZUZvcm1hdENvbW1hbmQuY3BwOiBkaXR0bworICAgICAgICAoV2ViQ29yZTo6UmVtb3ZlRm9y
bWF0Q29tbWFuZDo6ZG9BcHBseSk6IGRpdHRvCisgICAgICAgICogZWRpdGluZy9SZXBsYWNlU2Vs
ZWN0aW9uQ29tbWFuZC5jcHA6IGRpdHRvCisgICAgICAgIChXZWJDb3JlOjpoYW5kbGVTdHlsZVNw
YW5zQmVmb3JlSW5zZXJ0aW9uKTogZGl0dG8KKyAgICAgICAgKFdlYkNvcmU6OlJlcGxhY2VTZWxl
Y3Rpb25Db21tYW5kOjpoYW5kbGVTdHlsZVNwYW5zKTogZGl0dG8KKyAgICAgICAgKiBlZGl0aW5n
L21hcmt1cC5jcHA6IGRpdHRvCisgICAgICAgIChXZWJDb3JlOjpyZW1vdmVFbmNsb3NpbmdNYWls
QmxvY2txdW90ZVN0eWxlKTogZGl0dG8KKyAgICAgICAgKFdlYkNvcmU6OnJlbW92ZURlZmF1bHRT
dHlsZXMpOiBkaXR0bworICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlTWFya3VwKTogZGl0dG8KKwog
MjAwOS0wNy0xNSAgRGF2aWQgTGV2aW4gIDxsZXZpbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
TGF5b3V0IHRlc3QgZml4LCByZXZlcnRpbmcgcHJldmlvdXMgY2hhbmdlLgpJbmRleDogV2ViQ29y
ZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCShyZXZpc2lvbiA0NTg2NCkK
KysrIFdlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE0NzEsMTEgKzE0NzEsNiBAQCBzdGF0aWMgY29uc3QgaW50IGluaGVyaXRhYmxl
UHJvcGVydGllc1tdCiAKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBudW1Jbmhlcml0YWJsZVByb3Bl
cnRpZXMgPSBzaXplb2YoaW5oZXJpdGFibGVQcm9wZXJ0aWVzKSAvIHNpemVvZihpbmhlcml0YWJs
ZVByb3BlcnRpZXNbMF0pOwogCi12b2lkIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6cmVt
b3ZlQ29tcHV0ZWRJbmhlcml0YWJsZVByb3BlcnRpZXNGcm9tKENTU011dGFibGVTdHlsZURlY2xh
cmF0aW9uKiBkZWNsYXJhdGlvbikKLXsKLSAgICBkZWNsYXJhdGlvbi0+cmVtb3ZlUHJvcGVydGll
c0luU2V0KGluaGVyaXRhYmxlUHJvcGVydGllcywgbnVtSW5oZXJpdGFibGVQcm9wZXJ0aWVzKTsK
LX0KLQogYm9vbCBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmNzc1Byb3BlcnR5TWF0Y2hl
cyhjb25zdCBDU1NQcm9wZXJ0eSogcHJvcGVydHkpIGNvbnN0CiB7CiAgICAgaWYgKHByb3BlcnR5
LT5pZCgpID09IENTU1Byb3BlcnR5Rm9udFNpemUgJiYgcHJvcGVydHktPnZhbHVlKCktPmlzUHJp
bWl0aXZlVmFsdWUoKSAmJiBtX25vZGUpIHsKQEAgLTE0OTIsNyArMTQ4NywxMSBAQCBib29sIENT
U0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Y3NzUHJvCiAgICAgcmV0dXJuIENTU1N0eWxlRGVj
bGFyYXRpb246OmNzc1Byb3BlcnR5TWF0Y2hlcyhwcm9wZXJ0eSk7CiB9CiAKLVBhc3NSZWZQdHI8
Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6
Y29weUluaGVyaXRhYmxlUHJvcGVydGllcygpIGNvbnN0CisvLyBGSVhNRTogZGVwcmVjYXRlZENv
cHlJbmhlcml0YWJsZVByb3BlcnRpZXMgaXMgdXNlZCBmb3IgdHdvIHB1cnBvc2VzOgorLy8gMS4g
IENhbGN1bGF0aW5nIHRoZSB0eXBpbmcgc3R5bGUuCisvLyAyLiAgTW92aW5nIEhUTUwgc3VidHJl
ZXMgYW5kIHNlZWtpbmcgdG8gcmVtb3ZlIHJlZHVuZGFudCBzdHlsZXMuCisvLyBUaGVzZSB0YXNr
cyBzaG91bGQgYmUgYnJva2VuIG91dCBpbnRvIHR3byBzZXBhcmF0ZSBmdW5jdGlvbnMuICBOZXcg
Y29kZSBzaG91bGQgbm90IHVzZSB0aGlzIGZ1bmN0aW9uLgorUGFzc1JlZlB0cjxDU1NNdXRhYmxl
U3R5bGVEZWNsYXJhdGlvbj4gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpkZXByZWNhdGVk
Q29weUluaGVyaXRhYmxlUHJvcGVydGllcygpIGNvbnN0CiB7CiAgICAgUmVmUHRyPENTU011dGFi
bGVTdHlsZURlY2xhcmF0aW9uPiBzdHlsZSA9IGNvcHlQcm9wZXJ0aWVzSW5TZXQoaW5oZXJpdGFi
bGVQcm9wZXJ0aWVzLCBudW1Jbmhlcml0YWJsZVByb3BlcnRpZXMpOwogICAgIGlmIChzdHlsZSAm
JiBtX25vZGUgJiYgbV9ub2RlLT5jb21wdXRlZFN0eWxlKCkpIHsKSW5kZXg6IFdlYkNvcmUvY3Nz
L0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3Nz
L0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oCShyZXZpc2lvbiA0NTg2NCkKKysrIFdlYkNv
cmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC01
NSwxMCArNTUsNyBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gZ2V0U1ZHUHJv
cGVydHlDU1NWYWx1ZShpbnQgcHJvcGVydHlJRCwgRVVwZGF0ZUxheW91dCkgY29uc3Q7CiAjZW5k
aWYKIAotICAgIFBhc3NSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IGNvcHlJbmhl
cml0YWJsZVByb3BlcnRpZXMoKSBjb25zdDsKLQotICAgIHN0YXRpYyB2b2lkIHJlbW92ZUNvbXB1
dGVkSW5oZXJpdGFibGVQcm9wZXJ0aWVzRnJvbShDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiop
OwotCisgICAgUGFzc1JlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gZGVwcmVjYXRl
ZENvcHlJbmhlcml0YWJsZVByb3BlcnRpZXMoKSBjb25zdDsKIHByb3RlY3RlZDoKICAgICB2aXJ0
dWFsIGJvb2wgY3NzUHJvcGVydHlNYXRjaGVzKGNvbnN0IENTU1Byb3BlcnR5KikgY29uc3Q7CiAK
SW5kZXg6IFdlYkNvcmUvZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAJKHJldmlz
aW9uIDQ1ODY0KQorKysgV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNjAsOCArMjYwLDggQEAgc3RhdGljIHZvaWQgcmVtb3ZlRW5j
bG9zaW5nQW5jaG9yU3R5bGUoQwogICAgIGlmICghZW5jbG9zaW5nQW5jaG9yIHx8ICFlbmNsb3Np
bmdBbmNob3ItPnBhcmVudE5vZGUoKSkKICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgCi0g
ICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBwYXJlbnRTdHlsZSA9IFBvc2l0
aW9uKGVuY2xvc2luZ0FuY2hvci0+cGFyZW50Tm9kZSgpLCAwKS5jb21wdXRlZFN0eWxlKCktPmNv
cHlJbmhlcml0YWJsZVByb3BlcnRpZXMoKTsKLSAgICBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVj
bGFyYXRpb24+IGFuY2hvclN0eWxlID0gUG9zaXRpb24oZW5jbG9zaW5nQW5jaG9yLCAwKS5jb21w
dXRlZFN0eWxlKCktPmNvcHlJbmhlcml0YWJsZVByb3BlcnRpZXMoKTsKKyAgICBSZWZQdHI8Q1NT
TXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IHBhcmVudFN0eWxlID0gUG9zaXRpb24oZW5jbG9zaW5n
QW5jaG9yLT5wYXJlbnROb2RlKCksIDApLmNvbXB1dGVkU3R5bGUoKS0+ZGVwcmVjYXRlZENvcHlJ
bmhlcml0YWJsZVByb3BlcnRpZXMoKTsKKyAgICBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFy
YXRpb24+IGFuY2hvclN0eWxlID0gUG9zaXRpb24oZW5jbG9zaW5nQW5jaG9yLCAwKS5jb21wdXRl
ZFN0eWxlKCktPmRlcHJlY2F0ZWRDb3B5SW5oZXJpdGFibGVQcm9wZXJ0aWVzKCk7CiAgICAgcGFy
ZW50U3R5bGUtPmRpZmYoYW5jaG9yU3R5bGUuZ2V0KCkpOwogICAgIGFuY2hvclN0eWxlLT5kaWZm
KHN0eWxlKTsKIH0KQEAgLTI4MCw3ICsyODAsNyBAQCB2b2lkIERlbGV0ZVNlbGVjdGlvbkNvbW1h
bmQ6OnNhdmVUeXBpbmdTCiAgICAgICAgIAogICAgIC8vIEZpZ3VyZSBvdXQgdGhlIHR5cGluZyBz
dHlsZSBpbiBlZmZlY3QgYmVmb3JlIHRoZSBkZWxldGUgaXMgZG9uZS4KICAgICBSZWZQdHI8Q1NT
Q29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uPiBjb21wdXRlZFN0eWxlID0gcG9zaXRpb25CZWZvcmVU
YWJTcGFuKG1fc2VsZWN0aW9uVG9EZWxldGUuc3RhcnQoKSkuY29tcHV0ZWRTdHlsZSgpOwotICAg
IG1fdHlwaW5nU3R5bGUgPSBjb21wdXRlZFN0eWxlLT5jb3B5SW5oZXJpdGFibGVQcm9wZXJ0aWVz
KCk7CisgICAgbV90eXBpbmdTdHlsZSA9IGNvbXB1dGVkU3R5bGUtPmRlcHJlY2F0ZWRDb3B5SW5o
ZXJpdGFibGVQcm9wZXJ0aWVzKCk7CiAgICAgCiAgICAgcmVtb3ZlRW5jbG9zaW5nQW5jaG9yU3R5
bGUobV90eXBpbmdTdHlsZS5nZXQoKSwgbV9zZWxlY3Rpb25Ub0RlbGV0ZS5zdGFydCgpKTsKICAg
ICAKQEAgLTI4OCw3ICsyODgsNyBAQCB2b2lkIERlbGV0ZVNlbGVjdGlvbkNvbW1hbmQ6OnNhdmVU
eXBpbmdTCiAgICAgLy8gV2UnbGwgdXNlIHRoaXMgbGF0ZXIgaW4gY29tcHV0ZVR5cGluZ1N0eWxl
QWZ0ZXJEZWxldGUgaWYgd2UgZW5kIHVwIG91dHNpZGUgb2YgYSBNYWlsIGJsb2NrcXVvdGUKICAg
ICBpZiAobmVhcmVzdE1haWxCbG9ja3F1b3RlKG1fc2VsZWN0aW9uVG9EZWxldGUuc3RhcnQoKS5u
b2RlKCkpKSB7CiAgICAgICAgIGNvbXB1dGVkU3R5bGUgPSBtX3NlbGVjdGlvblRvRGVsZXRlLmVu
ZCgpLmNvbXB1dGVkU3R5bGUoKTsKLSAgICAgICAgbV9kZWxldGVJbnRvQmxvY2txdW90ZVN0eWxl
ID0gY29tcHV0ZWRTdHlsZS0+Y29weUluaGVyaXRhYmxlUHJvcGVydGllcygpOworICAgICAgICBt
X2RlbGV0ZUludG9CbG9ja3F1b3RlU3R5bGUgPSBjb21wdXRlZFN0eWxlLT5kZXByZWNhdGVkQ29w
eUluaGVyaXRhYmxlUHJvcGVydGllcygpOwogICAgIH0gZWxzZQogICAgICAgICBtX2RlbGV0ZUlu
dG9CbG9ja3F1b3RlU3R5bGUgPSAwOwogfQpJbmRleDogV2ViQ29yZS9lZGl0aW5nL0VkaXRDb21t
YW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvRWRpdENvbW1hbmQuY3BwCShy
ZXZpc2lvbiA0NTg2NCkKKysrIFdlYkNvcmUvZWRpdGluZy9FZGl0Q29tbWFuZC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE5Nyw3ICsxOTcsNyBAQCBib29sIEVkaXRDb21tYW5kOjppc1R5cGluZ0Nv
bW1hbmQoKSBjb25zCiAKIFBhc3NSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IEVk
aXRDb21tYW5kOjpzdHlsZUF0UG9zaXRpb24oY29uc3QgUG9zaXRpb24gJnBvcykKIHsKLSAgICBS
ZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IHN0eWxlID0gcG9zaXRpb25CZWZvcmVU
YWJTcGFuKHBvcykuY29tcHV0ZWRTdHlsZSgpLT5jb3B5SW5oZXJpdGFibGVQcm9wZXJ0aWVzKCk7
CisgICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBzdHlsZSA9IHBvc2l0aW9u
QmVmb3JlVGFiU3Bhbihwb3MpLmNvbXB1dGVkU3R5bGUoKS0+ZGVwcmVjYXRlZENvcHlJbmhlcml0
YWJsZVByb3BlcnRpZXMoKTsKICAKICAgICAvLyBGSVhNRTogSXQgc2VlbXMgbWlzbGVhZGluZyB0
byBhbHNvIGluY2x1ZGUgdGhlIHR5cGluZyBzdHlsZSB3aGVuIHJldHVybmluZyB0aGUgc3R5bGUg
YXQgc29tZSBhcmJpdHJhcnkKICAgICAvLyBwb3NpdGlvbiBpbiB0aGUgZG9jdW1lbnQuCkluZGV4
OiBXZWJDb3JlL2VkaXRpbmcvUmVtb3ZlRm9ybWF0Q29tbWFuZC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9lZGl0aW5nL1JlbW92ZUZvcm1hdENvbW1hbmQuY3BwCShyZXZpc2lvbiA0NTg2NCkK
KysrIFdlYkNvcmUvZWRpdGluZy9SZW1vdmVGb3JtYXRDb21tYW5kLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTUsNyArNTUsNyBAQCB2b2lkIFJlbW92ZUZvcm1hdENvbW1hbmQ6OmRvQXBwbHkoKQog
ICAgIC8vIEdldCB0aGUgZGVmYXVsdCBzdHlsZSBmb3IgdGhpcyBlZGl0YWJsZSByb290LCBpdCdz
IHRoZSBzdHlsZSB0aGF0IHdlJ2xsIGdpdmUgdGhlCiAgICAgLy8gY29udGVudCB0aGF0IHdlJ3Jl
IG9wZXJhdGluZyBvbi4KICAgICBOb2RlKiByb290ID0gZnJhbWUtPnNlbGVjdGlvbigpLT5yb290
RWRpdGFibGVFbGVtZW50KCk7Ci0gICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9u
PiBkZWZhdWx0U3R5bGUgPSBjb21wdXRlZFN0eWxlKHJvb3QpLT5jb3B5SW5oZXJpdGFibGVQcm9w
ZXJ0aWVzKCk7CisgICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBkZWZhdWx0
U3R5bGUgPSBjb21wdXRlZFN0eWxlKHJvb3QpLT5kZXByZWNhdGVkQ29weUluaGVyaXRhYmxlUHJv
cGVydGllcygpOwogICAgIAogICAgIC8vIERlbGV0ZSB0aGUgc2VsZWN0ZWQgY29udGVudC4KICAg
ICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJlIGFibGUgdG8gbGVhdmUgdGhpcyB0byBpbnNlcnRUZXh0
LCBidXQgaXRzIGRlbGV0ZSBvcGVyYXRpb24KSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9SZXBsYWNl
U2VsZWN0aW9uQ29tbWFuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL1JlcGxh
Y2VTZWxlY3Rpb25Db21tYW5kLmNwcAkocmV2aXNpb24gNDU4NjQpCisrKyBXZWJDb3JlL2VkaXRp
bmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NTAsNyAr
NTUwLDcgQEAgc3RhdGljIGJvb2wgaGFuZGxlU3R5bGVTcGFuc0JlZm9yZUluc2VydAogICAgIE5v
ZGUqIHNvdXJjZURvY3VtZW50U3R5bGVTcGFuID0gdG9wTm9kZTsKICAgICBSZWZQdHI8Tm9kZT4g
Y29waWVkUmFuZ2VTdHlsZVNwYW4gPSBzb3VyY2VEb2N1bWVudFN0eWxlU3Bhbi0+Zmlyc3RDaGls
ZCgpOwogICAgIAotICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gc3R5bGVB
dEluc2VydGlvblBvcyA9IHJhbmdlQ29tcGxpYW50RXF1aXZhbGVudChpbnNlcnRpb25Qb3MpLmNv
bXB1dGVkU3R5bGUoKS0+Y29weUluaGVyaXRhYmxlUHJvcGVydGllcygpOworICAgIFJlZlB0cjxD
U1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gc3R5bGVBdEluc2VydGlvblBvcyA9IHJhbmdlQ29t
cGxpYW50RXF1aXZhbGVudChpbnNlcnRpb25Qb3MpLmNvbXB1dGVkU3R5bGUoKS0+ZGVwcmVjYXRl
ZENvcHlJbmhlcml0YWJsZVByb3BlcnRpZXMoKTsKICAgICBTdHJpbmcgc3R5bGVUZXh0ID0gc3R5
bGVBdEluc2VydGlvblBvcy0+Y3NzVGV4dCgpOwogICAgIAogICAgIGlmIChzdHlsZVRleHQgPT0g
c3RhdGljX2Nhc3Q8RWxlbWVudCo+KHNvdXJjZURvY3VtZW50U3R5bGVTcGFuKS0+Z2V0QXR0cmli
dXRlKHN0eWxlQXR0cikpIHsKQEAgLTYwNiw4ICs2MDYsOCBAQCB2b2lkIFJlcGxhY2VTZWxlY3Rp
b25Db21tYW5kOjpoYW5kbGVTdHlsCiAgICAgLy8gc3R5bGVzIGZyb20gYmxvY2txdW90ZU5vZGUg
YXJlIGFsbG93ZWQgdG8gb3ZlcnJpZGUgdGhvc2UgZnJvbSB0aGUgc291cmNlIGRvY3VtZW50LCBz
ZWUgPHJkYXI6Ly9wcm9ibGVtLzQ5MzA5ODY+IGFuZCA8cmRhcjovL3Byb2JsZW0vNTA4OTMyNz4u
CiAgICAgTm9kZSogYmxvY2txdW90ZU5vZGUgPSBpc01haWxQYXN0ZUFzUXVvdGF0aW9uTm9kZShj
b250ZXh0KSA/IGNvbnRleHQgOiBuZWFyZXN0TWFpbEJsb2NrcXVvdGUoY29udGV4dCk7CiAgICAg
aWYgKGJsb2NrcXVvdGVOb2RlKSB7Ci0gICAgICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNs
YXJhdGlvbj4gYmxvY2txdW90ZVN0eWxlID0gY29tcHV0ZWRTdHlsZShibG9ja3F1b3RlTm9kZSkt
PmNvcHlJbmhlcml0YWJsZVByb3BlcnRpZXMoKTsKLSAgICAgICAgUmVmUHRyPENTU011dGFibGVT
dHlsZURlY2xhcmF0aW9uPiBwYXJlbnRTdHlsZSA9IGNvbXB1dGVkU3R5bGUoYmxvY2txdW90ZU5v
ZGUtPnBhcmVudE5vZGUoKSktPmNvcHlJbmhlcml0YWJsZVByb3BlcnRpZXMoKTsKKyAgICAgICAg
UmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBibG9ja3F1b3RlU3R5bGUgPSBjb21w
dXRlZFN0eWxlKGJsb2NrcXVvdGVOb2RlKS0+ZGVwcmVjYXRlZENvcHlJbmhlcml0YWJsZVByb3Bl
cnRpZXMoKTsKKyAgICAgICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBwYXJl
bnRTdHlsZSA9IGNvbXB1dGVkU3R5bGUoYmxvY2txdW90ZU5vZGUtPnBhcmVudE5vZGUoKSktPmRl
cHJlY2F0ZWRDb3B5SW5oZXJpdGFibGVQcm9wZXJ0aWVzKCk7CiAgICAgICAgIHBhcmVudFN0eWxl
LT5kaWZmKGJsb2NrcXVvdGVTdHlsZS5nZXQoKSk7CiAKICAgICAgICAgQ1NTTXV0YWJsZVN0eWxl
RGVjbGFyYXRpb246OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGJsb2NrcXVvdGVTdHlsZS0+ZW5kKCk7
CkBAIC02MTksNyArNjE5LDcgQEAgdm9pZCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6aGFuZGxl
U3R5bAogICAgICAgICBjb250ZXh0ID0gYmxvY2txdW90ZU5vZGUtPnBhcmVudE5vZGUoKTsKICAg
ICB9CiAgICAgCi0gICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBjb250ZXh0
U3R5bGUgPSBjb21wdXRlZFN0eWxlKGNvbnRleHQpLT5jb3B5SW5oZXJpdGFibGVQcm9wZXJ0aWVz
KCk7CisgICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBjb250ZXh0U3R5bGUg
PSBjb21wdXRlZFN0eWxlKGNvbnRleHQpLT5kZXByZWNhdGVkQ29weUluaGVyaXRhYmxlUHJvcGVy
dGllcygpOwogICAgIGNvbnRleHRTdHlsZS0+ZGlmZihzb3VyY2VEb2N1bWVudFN0eWxlLmdldCgp
KTsKICAgICAKICAgICAvLyBSZW1vdmUgYmxvY2sgcHJvcGVydGllcyBpbiB0aGUgc3BhbidzIHN0
eWxlLiBUaGlzIHByZXZlbnRzIHByb3BlcnRpZXMgdGhhdCBwcm9iYWJseSBoYXZlIG5vIGVmZmVj
dCAKQEAgLTY1NSw3ICs2NTUsNyBAQCB2b2lkIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpoYW5k
bGVTdHlsCiAgICAgCiAgICAgLy8gUmVtb3ZlIHJlZHVuZGFudCBzdHlsZXMuCiAgICAgY29udGV4
dCA9IGNvcGllZFJhbmdlU3R5bGVTcGFuLT5wYXJlbnROb2RlKCk7Ci0gICAgY29udGV4dFN0eWxl
ID0gY29tcHV0ZWRTdHlsZShjb250ZXh0KS0+Y29weUluaGVyaXRhYmxlUHJvcGVydGllcygpOwor
ICAgIGNvbnRleHRTdHlsZSA9IGNvbXB1dGVkU3R5bGUoY29udGV4dCktPmRlcHJlY2F0ZWRDb3B5
SW5oZXJpdGFibGVQcm9wZXJ0aWVzKCk7CiAgICAgY29udGV4dFN0eWxlLT5kaWZmKGNvcGllZFJh
bmdlU3R5bGUuZ2V0KCkpOwogICAgIAogICAgIC8vIFNlZSB0aGUgY29tbWVudHMgYWJvdmUgYWJv
dXQgcmVtb3ZpbmcgYmxvY2sgcHJvcGVydGllcy4KSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9tYXJr
dXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCShyZXZpc2lv
biA0NTg2NCkKKysrIFdlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yOTIsOCArMjkyLDggQEAgc3RhdGljIHZvaWQgcmVtb3ZlRW5jbG9zaW5nTWFpbEJsb2NrcXVv
dAogICAgIGlmICghYmxvY2txdW90ZSB8fCAhYmxvY2txdW90ZS0+cGFyZW50Tm9kZSgpKQogICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICAKLSAgICBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVj
bGFyYXRpb24+IHBhcmVudFN0eWxlID0gUG9zaXRpb24oYmxvY2txdW90ZS0+cGFyZW50Tm9kZSgp
LCAwKS5jb21wdXRlZFN0eWxlKCktPmNvcHlJbmhlcml0YWJsZVByb3BlcnRpZXMoKTsKLSAgICBS
ZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IGJsb2NrcXVvdGVTdHlsZSA9IFBvc2l0
aW9uKGJsb2NrcXVvdGUsIDApLmNvbXB1dGVkU3R5bGUoKS0+Y29weUluaGVyaXRhYmxlUHJvcGVy
dGllcygpOworICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gcGFyZW50U3R5
bGUgPSBQb3NpdGlvbihibG9ja3F1b3RlLT5wYXJlbnROb2RlKCksIDApLmNvbXB1dGVkU3R5bGUo
KS0+ZGVwcmVjYXRlZENvcHlJbmhlcml0YWJsZVByb3BlcnRpZXMoKTsKKyAgICBSZWZQdHI8Q1NT
TXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IGJsb2NrcXVvdGVTdHlsZSA9IFBvc2l0aW9uKGJsb2Nr
cXVvdGUsIDApLmNvbXB1dGVkU3R5bGUoKS0+ZGVwcmVjYXRlZENvcHlJbmhlcml0YWJsZVByb3Bl
cnRpZXMoKTsKICAgICBwYXJlbnRTdHlsZS0+ZGlmZihibG9ja3F1b3RlU3R5bGUuZ2V0KCkpOwog
ICAgIGJsb2NrcXVvdGVTdHlsZS0+ZGlmZihzdHlsZSk7CiB9CkBAIC0zMDMsNyArMzAzLDcgQEAg
c3RhdGljIHZvaWQgcmVtb3ZlRGVmYXVsdFN0eWxlcyhDU1NNdXRhYgogICAgIGlmICghZG9jdW1l
bnQgfHwgIWRvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKSkKICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAgICAgCi0gICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBkb2N1bWVu
dFN0eWxlID0gY29tcHV0ZWRTdHlsZShkb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCkpLT5jb3B5
SW5oZXJpdGFibGVQcm9wZXJ0aWVzKCk7CisgICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xh
cmF0aW9uPiBkb2N1bWVudFN0eWxlID0gY29tcHV0ZWRTdHlsZShkb2N1bWVudC0+ZG9jdW1lbnRF
bGVtZW50KCkpLT5kZXByZWNhdGVkQ29weUluaGVyaXRhYmxlUHJvcGVydGllcygpOwogICAgIGRv
Y3VtZW50U3R5bGUtPmRpZmYoc3R5bGUpOwogfQogCkBAIC05MzAsNyArOTMwLDcgQEAgU3RyaW5n
IGNyZWF0ZU1hcmt1cChjb25zdCBSYW5nZSogcmFuZ2UsIAogICAgIAogICAgIE5vZGUqIGNoZWNr
QW5jZXN0b3IgPSBzcGVjaWFsQ29tbW9uQW5jZXN0b3IgPyBzcGVjaWFsQ29tbW9uQW5jZXN0b3Ig
OiBjb21tb25BbmNlc3RvcjsKICAgICBpZiAoY2hlY2tBbmNlc3Rvci0+cmVuZGVyZXIoKSkgewot
ICAgICAgICBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IGNoZWNrQW5jZXN0b3JT
dHlsZSA9IGNvbXB1dGVkU3R5bGUoY2hlY2tBbmNlc3RvciktPmNvcHlJbmhlcml0YWJsZVByb3Bl
cnRpZXMoKTsKKyAgICAgICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBjaGVj
a0FuY2VzdG9yU3R5bGUgPSBjb21wdXRlZFN0eWxlKGNoZWNrQW5jZXN0b3IpLT5kZXByZWNhdGVk
Q29weUluaGVyaXRhYmxlUHJvcGVydGllcygpOwogICAgICAgICBpZiAoIXByb3BlcnR5TWlzc2lu
Z09yRXF1YWxUb05vbmUoY2hlY2tBbmNlc3RvclN0eWxlLmdldCgpLCBDU1NQcm9wZXJ0eVdlYmtp
dFRleHREZWNvcmF0aW9uc0luRWZmZWN0KSkKICAgICAgICAgICAgIHNwZWNpYWxDb21tb25BbmNl
c3RvciA9IGVuY2xvc2luZ05vZGVPZlR5cGUoUG9zaXRpb24oY2hlY2tBbmNlc3RvciwgMCksICZl
bGVtZW50SGFzVGV4dERlY29yYXRpb25Qcm9wZXJ0eSk7CiAgICAgfQpAQCAtMTAwMCw3ICsxMDAw
LDcgQEAgU3RyaW5nIGNyZWF0ZU1hcmt1cChjb25zdCBSYW5nZSogcmFuZ2UsIAogICAgIC8vIEFk
ZCBhIHdyYXBwZXIgc3BhbiB3aXRoIHRoZSBzdHlsZXMgdGhhdCBhbGwgb2YgdGhlIG5vZGVzIGlu
IHRoZSBtYXJrdXAgaW5oZXJpdC4KICAgICBOb2RlKiBwYXJlbnRPZkxhc3RDbG9zZWQgPSBsYXN0
Q2xvc2VkID8gbGFzdENsb3NlZC0+cGFyZW50Tm9kZSgpIDogMDsKICAgICBpZiAocGFyZW50T2ZM
YXN0Q2xvc2VkICYmIHBhcmVudE9mTGFzdENsb3NlZC0+cmVuZGVyZXIoKSkgewotICAgICAgICBS
ZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IHN0eWxlID0gY29tcHV0ZWRTdHlsZShw
YXJlbnRPZkxhc3RDbG9zZWQpLT5jb3B5SW5oZXJpdGFibGVQcm9wZXJ0aWVzKCk7CisgICAgICAg
IFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gc3R5bGUgPSBjb21wdXRlZFN0eWxl
KHBhcmVudE9mTGFzdENsb3NlZCktPmRlcHJlY2F0ZWRDb3B5SW5oZXJpdGFibGVQcm9wZXJ0aWVz
KCk7CiAKICAgICAgICAgLy8gU3R5bGVzIHRoYXQgTWFpbCBibG9ja3F1b3RlcyBjb250cmlidXRl
IHNob3VsZCBvbmx5IGJlIHBsYWNlZCBvbiB0aGUgTWFpbCBibG9ja3F1b3RlLCB0byBoZWxwCiAg
ICAgICAgIC8vIHVzIGRpZmZlcmVudGlhdGUgdGhvc2Ugc3R5bGVzIGZyb20gb25lcyB0aGF0IHRo
ZSB1c2VyIGhhcyBhcHBsaWVkLiAgVGhpcyBoZWxwcyB1cwpAQCAtMTAzMiw3ICsxMDMyLDcgQEAg
U3RyaW5nIGNyZWF0ZU1hcmt1cChjb25zdCBSYW5nZSogcmFuZ2UsIAogICAgICAgICAvLyBBZGQg
YSBzdHlsZSBzcGFuIHdpdGggdGhlIGRvY3VtZW50J3MgZGVmYXVsdCBzdHlsZXMuICBXZSBhZGQg
dGhlc2UgaW4gYSBzZXBhcmF0ZQogICAgICAgICAvLyBzcGFuIHNvIHRoYXQgYXQgcGFzdGUgdGlt
ZSB3ZSBjYW4gZGlmZmVyZW50aWF0ZSBiZXR3ZWVuIGRvY3VtZW50IGRlZmF1bHRzIGFuZCB1c2Vy
CiAgICAgICAgIC8vIGFwcGxpZWQgc3R5bGVzLgotICAgICAgICBSZWZQdHI8Q1NTTXV0YWJsZVN0
eWxlRGVjbGFyYXRpb24+IGRlZmF1bHRTdHlsZSA9IGNvbXB1dGVkU3R5bGUoZG9jdW1lbnQtPmRv
Y3VtZW50RWxlbWVudCgpKS0+Y29weUluaGVyaXRhYmxlUHJvcGVydGllcygpOworICAgICAgICBS
ZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IGRlZmF1bHRTdHlsZSA9IGNvbXB1dGVk
U3R5bGUoZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpKS0+ZGVwcmVjYXRlZENvcHlJbmhlcml0
YWJsZVByb3BlcnRpZXMoKTsKICAgICAgICAgCiAgICAgICAgIGlmIChkZWZhdWx0U3R5bGUtPmxl
bmd0aCgpID4gMCkgewogICAgICAgICAgICAgVmVjdG9yPFVDaGFyPiBvcGVuVGFnOwo=
</data>
<flag name="review"
          id="17187"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>