<?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>51006</bug_id>
          
          <creation_ts>2010-12-13 21:11:10 -0800</creation_ts>
          <short_desc>Range::processContents needs cleanup</short_desc>
          <delta_ts>2011-02-28 05:24:48 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</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>P3</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>51005</dependson>
    
    <dependson>54282</dependson>
    
    <dependson>54425</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>abarth</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>eae</cc>
    
    <cc>eric</cc>
    
    <cc>mitz</cc>
    
    <cc>ojan</cc>
    
    <cc>sam</cc>
    
    <cc>tkent</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>321653</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-12-13 21:11:10 -0800</bug_when>
    <thetext>Range::processContents is one giant function that implements multiple features for Range.  We should split up this function into smaller pieces.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>328887</commentid>
    <comment_count>1</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-01-03 20:47:54 -0800</bug_when>
    <thetext>I&apos;m seeing some similarities between processContents and StyledMarkupAccumulator::serializeNodes but I&apos;m not sure how we can share code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>352629</commentid>
    <comment_count>2</comment_count>
      <attachid>82761</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-02-16 23:38:23 -0800</bug_when>
    <thetext>Created attachment 82761
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>356663</commentid>
    <comment_count>3</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-02-23 21:24:10 -0800</bug_when>
    <thetext>Could someone review my patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>358923</commentid>
    <comment_count>4</comment_count>
      <attachid>82761</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-02-28 00:48:54 -0800</bug_when>
    <thetext>Comment on attachment 82761
Patch

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

&gt; Source/WebCore/dom/Range.cpp:630
&gt; +    // This switch statement must be consistent with that of Range::processContentsBetweenOffsets.

So, we had better add a comment to Range::processContentBetweenoffsets().

&gt; Source/WebCore/dom/Range.cpp:760
&gt; +    // This switch statement must be consistent with that of lengthOfContentsInNode.

ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>358924</commentid>
    <comment_count>5</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-02-28 00:49:50 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 82761 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=82761&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/Range.cpp:630
&gt; &gt; +    // This switch statement must be consistent with that of Range::processContentsBetweenOffsets.
&gt; 
&gt; So, we had better add a comment to Range::processContentBetweenoffsets().
&gt; 
&gt; &gt; Source/WebCore/dom/Range.cpp:760
&gt; &gt; +    // This switch statement must be consistent with that of lengthOfContentsInNode.
&gt; 
&gt; ditto.

Oh, I was confused.  Ignore comments :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>358925</commentid>
    <comment_count>6</comment_count>
      <attachid>82761</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-02-28 00:50:58 -0800</bug_when>
    <thetext>Comment on attachment 82761
Patch

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

&gt;&gt; Source/WebCore/dom/Range.cpp:630
&gt;&gt; +    // This switch statement must be consistent with that of Range::processContentsBetweenOffsets.
&gt; 
&gt; So, we had better add a comment to Range::processContentBetweenoffsets().

I have.

&gt;&gt; Source/WebCore/dom/Range.cpp:760
&gt;&gt; +    // This switch statement must be consistent with that of lengthOfContentsInNode.
&gt; 
&gt; ditto.

This comment is added in processContentsBetweenOffsets, and refers back to lengthOfContentsInNode.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>358926</commentid>
    <comment_count>7</comment_count>
      <attachid>82761</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-02-28 00:51:01 -0800</bug_when>
    <thetext>Comment on attachment 82761
Patch

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

&gt;&gt; Source/WebCore/dom/Range.cpp:630
&gt;&gt; +    // This switch statement must be consistent with that of Range::processContentsBetweenOffsets.
&gt; 
&gt; So, we had better add a comment to Range::processContentBetweenoffsets().

I have.

&gt;&gt; Source/WebCore/dom/Range.cpp:760
&gt;&gt; +    // This switch statement must be consistent with that of lengthOfContentsInNode.
&gt; 
&gt; ditto.

This comment is added in processContentsBetweenOffsets, and refers back to lengthOfContentsInNode.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>358930</commentid>
    <comment_count>8</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-02-28 00:52:52 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; &gt; (From update of attachment 82761 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=82761&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/dom/Range.cpp:630
&gt; &gt; &gt; +    // This switch statement must be consistent with that of Range::processContentsBetweenOffsets.
&gt; &gt; 
&gt; &gt; So, we had better add a comment to Range::processContentBetweenoffsets().
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/dom/Range.cpp:760
&gt; &gt; &gt; +    // This switch statement must be consistent with that of lengthOfContentsInNode.
&gt; &gt; 
&gt; &gt; ditto.
&gt; 
&gt; Oh, I was confused.  Ignore comments :-)

Ah, ok.  Thanks for the review anyways :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>358995</commentid>
    <comment_count>9</comment_count>
      <attachid>82761</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-02-28 05:24:42 -0800</bug_when>
    <thetext>Comment on attachment 82761
Patch

Clearing flags on attachment: 82761

Committed r79854: &lt;http://trac.webkit.org/changeset/79854&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>358996</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-02-28 05:24:48 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82761</attachid>
            <date>2011-02-16 23:38:23 -0800</date>
            <delta_ts>2011-02-28 05:24:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-51006-20110217163821.patch</filename>
            <type>text/plain</type>
            <size>13159</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc4Nzk0KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzcgQEAKKzIwMTEtMDItMTYgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgUmFuZ2U6OnByb2Nlc3NDb250ZW50cyBuZWVkcyBjbGVhbnVwCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MTAwNgorCisg
ICAgICAgIFJlZmFjdG9yZWQgUmFuZ2U6OnByb2Nlc3NDb250ZW50cy4gIEV4dHJhY3RlZCBjaGls
ZE9mQ29tbW9uUm9vdEJlZm9yZU9mZnNldCBmcm9tIHByb2Nlc3NDb250ZW50cworICAgICAgICB3
aGljaCBpcyB1c2VkIHRvIGZpbmQgcHJvY2Vzc1N0YXJ0IGFuZCBwcm9jZXNzRW5kIHJlc3BlY3Rp
dmVseS4gIEluIHRoZSBjYXNlIG9mIHByb2Nlc3NTdGFydCwKKyAgICAgICAgd2UgdXNlIHRoZSBu
ZXh0IHNpYmxpbmcgb2YgdGhlIG5vZGUgcmV0dXJuZWQgYnkgY2hpbGRPZkNvbW1vblJvb3RCZWZv
cmVPZmZzZXQgd2hlbiBtX3N0YXJ0IGlzIG5vdAorICAgICAgICB0aGUgY29tbW9uIHJvb3QgYmVj
YXVzZSBjb3B5aW5nIG1fc3RhcnQncyBhbmNlc3RvcnMgd2lsbCByZXN1bHQgaW4gcHJvY2Vzc2lu
ZyB0b28gbXVjaCBjb250ZW50cy4KKworICAgICAgICBBbHNvIGV4dHJhY3RlZCBwcm9jZXNzTm9k
ZXMgYW5kIGRlbGV0ZUNoYXJhY3RlckRhdGEgZnJvbSBwcm9jZXNzQ29udGVudHMgYW5kIHByb2Nl
c3NDb250ZW50c0JldHdlZW5PZmZzZXRzLgorCisgICAgICAgIEluIGFkZGl0aW9uLCBsZW5ndGhP
ZkNvbnRlbnRzSW5Ob2RlIHdhcyBtb2RpZmllZCB0byByZXR1cm4gdGhlIGNvcnJlY3QgbGVuZ3Ro
IGluc3RlYWQgb2YKKyAgICAgICAgbnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSBiZWNh
dXNlIHRoZSBjb252ZW50aW9uIHRoYXQgcHJvY2Vzc0NvbnRlbnRzQmV0d2Vlbk9mZnNldHMgYXV0
b21hdGljYWxseQorICAgICAgICBjb3JyZWN0cyB0aGUgbGVuZ3RoIHdoZW4gZW5kT2Zmc2V0IGlz
IG51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkgc2VlbWVkIG1vcmUgY29uZnVzaW5nIHRo
YW4KKyAgICAgICAgaGF2aW5nIHR3byBzd2l0Y2ggc3RhdGVtZW50cyB0aGF0IG5lZWQgdG8gYmUg
Y29uc2lzdGVudC4KKworICAgICAgICBIaXN0b3JpY2FsbHksIGxlbmd0aE9mQ29udGVudHNJbk5v
ZGUgd2FzIGludHJvZHVjZWQgaW4gcjc4NDEzIGFzIGEgYnVpbGQgZml4IGJlY2F1c2UgdW5zaWdu
ZWQgY29uc3QKKyAgICAgICAgTGVuZ3RoT2ZDb250ZW50c0luTm9kZSBhZGRlZCBpbiByNzg0MDkg
dmlvbGF0ZWQgV2ViS2l0IEMrKyBydWxlcyBhbmQgY2F1c2VkIGJ1aWxkIGZhaWx1cmVzIG9uIE1h
YyBhbmQKKyAgICAgICAgb3RoZXIgcG9ydHMuCisKKyAgICAgICAgKiBkb20vUmFuZ2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y2hpbGRPZkNvbW1vblJvb3RCZWZvcmVPZmZzZXQpOiBFeHRyYWN0
ZWQgZnJvbSBwcm9jZXNzQ29udGVudHMuCisgICAgICAgIChXZWJDb3JlOjpsZW5ndGhPZkNvbnRl
bnRzSW5Ob2RlKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSYW5nZTo6cHJvY2Vzc0NvbnRl
bnRzKTogQ2FsbHMgY2hpbGRPZkNvbW1vblJvb3RCZWZvcmVPZmZzZXQsIGxlbmd0aE9mQ29udGVu
dHNJbk5vZGUsCisgICAgICAgIGFuZCBwcm9jZXNzTm9kZXMuCisgICAgICAgIChXZWJDb3JlOjpk
ZWxldGVDaGFyYWN0ZXJEYXRhKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSYW5nZTo6cHJv
Y2Vzc0NvbnRlbnRzQmV0d2Vlbk9mZnNldHMpOiBDYWxscyBkZWxldGVDaGFyYWN0ZXJEYXRhIGFu
ZCBwcm9jZXNzTm9kZXMuCisgICAgICAgIChXZWJDb3JlOjpSYW5nZTo6cHJvY2Vzc05vZGVzKTog
RXh0cmFjdGVkIGZyb20gcHJvY2Vzc0NvbnRlbnRzIGFuZCBwcm9jZXNzQ29udGVudHNCZXR3ZWVu
T2Zmc2V0cy4KKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlOjpwcm9jZXNzQW5jZXN0b3JzQW5kVGhl
aXJTaWJsaW5ncyk6CisgICAgICAgICogZG9tL1JhbmdlLmg6CisKIDIwMTEtMDItMTYgIEJyaWFu
IFJ5bmVyICA8YnJ5bmVyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJp
biBGaXNoZXIuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAJKHJldmlzaW9uIDc4Nzc2KQorKysgU291
cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjA3LDcgKzYwNyw0
OCBAQCBzdGF0aWMgaW5saW5lIE5vZGUqIGhpZ2hlc3RBbmNlc3RvclVuZGVyCiAgICAgcmV0dXJu
IG5vZGU7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbGVuZ3RoT2ZDb250ZW50c0luTm9k
ZSgpIHsgcmV0dXJuIG51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCk7IH0KK3N0YXRpYyBp
bmxpbmUgTm9kZSogY2hpbGRPZkNvbW1vblJvb3RCZWZvcmVPZmZzZXQoTm9kZSogY29udGFpbmVy
LCB1bnNpZ25lZCBvZmZzZXQsIE5vZGUqIGNvbW1vblJvb3QpCit7CisgICAgQVNTRVJUKGNvbnRh
aW5lcik7CisgICAgQVNTRVJUKGNvbW1vblJvb3QpOworICAgIEFTU0VSVChjb21tb25Sb290LT5j
b250YWlucyhjb250YWluZXIpKTsKKworICAgIGlmIChjb250YWluZXIgPT0gY29tbW9uUm9vdCkg
eworICAgICAgICBjb250YWluZXIgPSBjb250YWluZXItPmZpcnN0Q2hpbGQoKTsKKyAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgY29udGFpbmVyICYmIGkgPCBvZmZzZXQ7IGkrKykKKyAgICAg
ICAgICAgIGNvbnRhaW5lciA9IGNvbnRhaW5lci0+bmV4dFNpYmxpbmcoKTsKKyAgICB9IGVsc2Ug
eworICAgICAgICB3aGlsZSAoY29udGFpbmVyLT5wYXJlbnROb2RlKCkgIT0gY29tbW9uUm9vdCkK
KyAgICAgICAgICAgIGNvbnRhaW5lciA9IGNvbnRhaW5lci0+cGFyZW50Tm9kZSgpOworICAgIH0K
KworICAgIHJldHVybiBjb250YWluZXI7Cit9CisKK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgbGVu
Z3RoT2ZDb250ZW50c0luTm9kZShOb2RlKiBub2RlKQoreworICAgIC8vIFRoaXMgc3dpdGNoIHN0
YXRlbWVudCBtdXN0IGJlIGNvbnNpc3RlbnQgd2l0aCB0aGF0IG9mIFJhbmdlOjpwcm9jZXNzQ29u
dGVudHNCZXR3ZWVuT2Zmc2V0cy4KKyAgICBzd2l0Y2ggKG5vZGUtPm5vZGVUeXBlKCkpIHsKKyAg
ICBjYXNlIE5vZGU6OlRFWFRfTk9ERToKKyAgICBjYXNlIE5vZGU6OkNEQVRBX1NFQ1RJT05fTk9E
RToKKyAgICBjYXNlIE5vZGU6OkNPTU1FTlRfTk9ERToKKyAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PENoYXJhY3RlckRhdGEqPihub2RlKS0+bGVuZ3RoKCk7CisgICAgY2FzZSBOb2RlOjpQUk9D
RVNTSU5HX0lOU1RSVUNUSU9OX05PREU6CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxQcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb24qPihub2RlKS0+ZGF0YSgpLmxlbmd0aCgpOworICAgIGNhc2UgTm9k
ZTo6RUxFTUVOVF9OT0RFOgorICAgIGNhc2UgTm9kZTo6QVRUUklCVVRFX05PREU6CisgICAgY2Fz
ZSBOb2RlOjpFTlRJVFlfUkVGRVJFTkNFX05PREU6CisgICAgY2FzZSBOb2RlOjpFTlRJVFlfTk9E
RToKKyAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX05PREU6CisgICAgY2FzZSBOb2RlOjpET0NVTUVO
VF9UWVBFX05PREU6CisgICAgY2FzZSBOb2RlOjpET0NVTUVOVF9GUkFHTUVOVF9OT0RFOgorICAg
IGNhc2UgTm9kZTo6Tk9UQVRJT05fTk9ERToKKyAgICBjYXNlIE5vZGU6OlhQQVRIX05BTUVTUEFD
RV9OT0RFOgorICAgICAgICByZXR1cm4gbm9kZS0+Y2hpbGROb2RlQ291bnQoKTsKKyAgICB9Cisg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIDA7Cit9CiAKIFBhc3NSZWZQdHI8
RG9jdW1lbnRGcmFnbWVudD4gUmFuZ2U6OnByb2Nlc3NDb250ZW50cyhBY3Rpb25UeXBlIGFjdGlv
biwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CkBAIC02NTYsNyArNjk3LDcgQEAgUGFzc1JlZlB0cjxE
b2N1bWVudEZyYWdtZW50PiBSYW5nZTo6cHJvYwogCiAgICAgUmVmUHRyPE5vZGU+IGxlZnRDb250
ZW50czsKICAgICBpZiAobV9zdGFydC5jb250YWluZXIoKSAhPSBjb21tb25Sb290KSB7Ci0gICAg
ICAgIGxlZnRDb250ZW50cyA9IHByb2Nlc3NDb250ZW50c0JldHdlZW5PZmZzZXRzKGFjdGlvbiwg
MCwgbV9zdGFydC5jb250YWluZXIoKSwgbV9zdGFydC5vZmZzZXQoKSwgbGVuZ3RoT2ZDb250ZW50
c0luTm9kZSgpLCBlYyk7CisgICAgICAgIGxlZnRDb250ZW50cyA9IHByb2Nlc3NDb250ZW50c0Jl
dHdlZW5PZmZzZXRzKGFjdGlvbiwgMCwgbV9zdGFydC5jb250YWluZXIoKSwgbV9zdGFydC5vZmZz
ZXQoKSwgbGVuZ3RoT2ZDb250ZW50c0luTm9kZShtX3N0YXJ0LmNvbnRhaW5lcigpKSwgZWMpOwog
ICAgICAgICBsZWZ0Q29udGVudHMgPSBwcm9jZXNzQW5jZXN0b3JzQW5kVGhlaXJTaWJsaW5ncyhh
Y3Rpb24sIG1fc3RhcnQuY29udGFpbmVyKCksIFByb2Nlc3NDb250ZW50c0ZvcndhcmQsIGxlZnRD
b250ZW50cywgY29tbW9uUm9vdCwgZWMpOwogICAgIH0KIApAQCAtNjY3LDI3ICs3MDgsMTAgQEAg
UGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBSYW5nZTo6cHJvYwogICAgIH0KIAogICAgIC8v
IGRlbGV0ZSBhbGwgY2hpbGRyZW4gb2YgY29tbW9uUm9vdCBiZXR3ZWVuIHRoZSBzdGFydCBhbmQg
ZW5kIGNvbnRhaW5lcgotICAgIE5vZGUqIHByb2Nlc3NTdGFydDsgLy8gY2hpbGQgb2YgY29tbW9u
Um9vdAotICAgIGlmIChtX3N0YXJ0LmNvbnRhaW5lcigpID09IGNvbW1vblJvb3QpIHsKLSAgICAg
ICAgcHJvY2Vzc1N0YXJ0ID0gbV9zdGFydC5jb250YWluZXIoKS0+Zmlyc3RDaGlsZCgpOwotICAg
ICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1fc3RhcnQub2Zmc2V0KCk7IGkrKykKLSAgICAgICAg
ICAgIHByb2Nlc3NTdGFydCA9IHByb2Nlc3NTdGFydC0+bmV4dFNpYmxpbmcoKTsKLSAgICB9IGVs
c2UgewotICAgICAgICBwcm9jZXNzU3RhcnQgPSBtX3N0YXJ0LmNvbnRhaW5lcigpOwotICAgICAg
ICB3aGlsZSAocHJvY2Vzc1N0YXJ0LT5wYXJlbnROb2RlKCkgIT0gY29tbW9uUm9vdCkKLSAgICAg
ICAgICAgIHByb2Nlc3NTdGFydCA9IHByb2Nlc3NTdGFydC0+cGFyZW50Tm9kZSgpOworICAgIE5v
ZGUqIHByb2Nlc3NTdGFydCA9IGNoaWxkT2ZDb21tb25Sb290QmVmb3JlT2Zmc2V0KG1fc3RhcnQu
Y29udGFpbmVyKCksIG1fc3RhcnQub2Zmc2V0KCksIGNvbW1vblJvb3QpOworICAgIGlmIChtX3N0
YXJ0LmNvbnRhaW5lcigpICE9IGNvbW1vblJvb3QpIC8vIHByb2Nlc3NTdGFydCBjb250YWlucyBu
b2RlcyBiZWZvcmUgbV9zdGFydC4KICAgICAgICAgcHJvY2Vzc1N0YXJ0ID0gcHJvY2Vzc1N0YXJ0
LT5uZXh0U2libGluZygpOwotICAgIH0KLSAgICBOb2RlKiBwcm9jZXNzRW5kOyAvLyBjaGlsZCBv
ZiBjb21tb25Sb290Ci0gICAgaWYgKG1fZW5kLmNvbnRhaW5lcigpID09IGNvbW1vblJvb3QpIHsK
LSAgICAgICAgcHJvY2Vzc0VuZCA9IG1fZW5kLmNvbnRhaW5lcigpLT5maXJzdENoaWxkKCk7Ci0g
ICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbV9lbmQub2Zmc2V0KCk7IGkrKykKLSAgICAgICAg
ICAgIHByb2Nlc3NFbmQgPSBwcm9jZXNzRW5kLT5uZXh0U2libGluZygpOwotICAgIH0gZWxzZSB7
Ci0gICAgICAgIHByb2Nlc3NFbmQgPSBtX2VuZC5jb250YWluZXIoKTsKLSAgICAgICAgd2hpbGUg
KHByb2Nlc3NFbmQtPnBhcmVudE5vZGUoKSAhPSBjb21tb25Sb290KQotICAgICAgICAgICAgcHJv
Y2Vzc0VuZCA9IHByb2Nlc3NFbmQtPnBhcmVudE5vZGUoKTsKLSAgICB9CisgICAgTm9kZSogcHJv
Y2Vzc0VuZCA9IGNoaWxkT2ZDb21tb25Sb290QmVmb3JlT2Zmc2V0KG1fZW5kLmNvbnRhaW5lcigp
LCBtX2VuZC5vZmZzZXQoKSwgY29tbW9uUm9vdCk7CiAKICAgICAvLyBDb2xsYXBzZSB0aGUgcmFu
Z2UsIG1ha2luZyBzdXJlIHRoYXQgdGhlIHJlc3VsdCBpcyBub3Qgd2l0aGluIGEgbm9kZSB0aGF0
IHdhcyBwYXJ0aWFsbHkgc2VsZWN0ZWQuCiAgICAgaWYgKGFjdGlvbiA9PSBFWFRSQUNUX0NPTlRF
TlRTIHx8IGFjdGlvbiA9PSBERUxFVEVfQ09OVEVOVFMpIHsKQEAgLTcxMCwxNSArNzM0LDcgQEAg
UGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBSYW5nZTo6cHJvYwogICAgICAgICBOb2RlVmVj
dG9yIG5vZGVzOwogICAgICAgICBmb3IgKE5vZGUqIG4gPSBwcm9jZXNzU3RhcnQ7IG4gJiYgbiAh
PSBwcm9jZXNzRW5kOyBuID0gbi0+bmV4dFNpYmxpbmcoKSkKICAgICAgICAgICAgIG5vZGVzLmFw
cGVuZChuKTsKLSAgICAgICAgZm9yIChOb2RlVmVjdG9yOjpjb25zdF9pdGVyYXRvciBpdCA9IG5v
ZGVzLmJlZ2luKCk7IGl0ICE9IG5vZGVzLmVuZCgpOyBpdCsrKSB7Ci0gICAgICAgICAgICBOb2Rl
KiBuID0gaXQtPmdldCgpOwotICAgICAgICAgICAgaWYgKGFjdGlvbiA9PSBFWFRSQUNUX0NPTlRF
TlRTKQotICAgICAgICAgICAgICAgIGZyYWdtZW50LT5hcHBlbmRDaGlsZChuLCBlYyk7IC8vIHdp
bGwgcmVtb3ZlIGZyb20gY29tbW9uUm9vdAotICAgICAgICAgICAgZWxzZSBpZiAoYWN0aW9uID09
IENMT05FX0NPTlRFTlRTKQotICAgICAgICAgICAgICAgIGZyYWdtZW50LT5hcHBlbmRDaGlsZChu
LT5jbG9uZU5vZGUodHJ1ZSksIGVjKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAg
ICBjb21tb25Sb290LT5yZW1vdmVDaGlsZChuLCBlYyk7Ci0gICAgICAgIH0KKyAgICAgICAgcHJv
Y2Vzc05vZGVzKGFjdGlvbiwgbm9kZXMsIGNvbW1vblJvb3QsIGZyYWdtZW50LCBlYyk7CiAgICAg
fQogCiAgICAgaWYgKChhY3Rpb24gPT0gRVhUUkFDVF9DT05URU5UUyB8fCBhY3Rpb24gPT0gQ0xP
TkVfQ09OVEVOVFMpICYmIHJpZ2h0Q29udGVudHMpCkBAIC03MjcsMjYgKzc0MywzMCBAQCBQYXNz
UmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IFJhbmdlOjpwcm9jCiAgICAgcmV0dXJuIGZyYWdtZW50
LnJlbGVhc2UoKTsKIH0KIAorc3RhdGljIGlubGluZSB2b2lkIGRlbGV0ZUNoYXJhY3RlckRhdGEo
UGFzc1JlZlB0cjxDaGFyYWN0ZXJEYXRhPiBkYXRhLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5z
aWduZWQgZW5kT2Zmc2V0LCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAoZGF0YS0+bGVu
Z3RoKCkgLSBlbmRPZmZzZXQpCisgICAgICAgIGRhdGEtPmRlbGV0ZURhdGEoZW5kT2Zmc2V0LCBk
YXRhLT5sZW5ndGgoKSAtIGVuZE9mZnNldCwgZWMpOworICAgIGlmIChzdGFydE9mZnNldCkKKyAg
ICAgICAgZGF0YS0+ZGVsZXRlRGF0YSgwLCBzdGFydE9mZnNldCwgZWMpOworfQorCiBQYXNzUmVm
UHRyPE5vZGU+IFJhbmdlOjpwcm9jZXNzQ29udGVudHNCZXR3ZWVuT2Zmc2V0cyhBY3Rpb25UeXBl
IGFjdGlvbiwgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCwKICAgICBOb2Rl
KiBjb250YWluZXIsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQsIEV4
Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIEFTU0VSVChjb250YWluZXIpOwogICAgIEFTU0VSVChz
dGFydE9mZnNldCA8PSBlbmRPZmZzZXQpOwotICAgIAotICAgIFJlZlB0cjxOb2RlPiByZXN1bHQ7
CisKKyAgICAvLyBUaGlzIHN3aXRjaCBzdGF0ZW1lbnQgbXVzdCBiZSBjb25zaXN0ZW50IHdpdGgg
dGhhdCBvZiBsZW5ndGhPZkNvbnRlbnRzSW5Ob2RlLgorICAgIFJlZlB0cjxOb2RlPiByZXN1bHQ7
ICAgCiAgICAgc3dpdGNoIChjb250YWluZXItPm5vZGVUeXBlKCkpIHsKICAgICBjYXNlIE5vZGU6
OlRFWFRfTk9ERToKICAgICBjYXNlIE5vZGU6OkNEQVRBX1NFQ1RJT05fTk9ERToKICAgICBjYXNl
IE5vZGU6OkNPTU1FTlRfTk9ERToKLSAgICAgICAgQVNTRVJUKGVuZE9mZnNldCA8PSBzdGF0aWNf
Y2FzdDxDaGFyYWN0ZXJEYXRhKj4oY29udGFpbmVyKS0+bGVuZ3RoKCkgfHwgZW5kT2Zmc2V0ID09
IGxlbmd0aE9mQ29udGVudHNJbk5vZGUoKSk7Ci0gICAgICAgIGlmIChlbmRPZmZzZXQgPT0gbGVu
Z3RoT2ZDb250ZW50c0luTm9kZSgpKQotICAgICAgICAgICAgZW5kT2Zmc2V0ID0gc3RhdGljX2Nh
c3Q8Q2hhcmFjdGVyRGF0YSo+KGNvbnRhaW5lciktPmxlbmd0aCgpOworICAgICAgICBBU1NFUlQo
ZW5kT2Zmc2V0IDw9IHN0YXRpY19jYXN0PENoYXJhY3RlckRhdGEqPihjb250YWluZXIpLT5sZW5n
dGgoKSk7CiAgICAgICAgIGlmIChhY3Rpb24gPT0gRVhUUkFDVF9DT05URU5UUyB8fCBhY3Rpb24g
PT0gQ0xPTkVfQ09OVEVOVFMpIHsKICAgICAgICAgICAgIFJlZlB0cjxDaGFyYWN0ZXJEYXRhPiBj
ID0gc3RhdGljX3BvaW50ZXJfY2FzdDxDaGFyYWN0ZXJEYXRhPihjb250YWluZXItPmNsb25lTm9k
ZSh0cnVlKSk7Ci0gICAgICAgICAgICBpZiAoYy0+bGVuZ3RoKCkgLSBlbmRPZmZzZXQpCi0gICAg
ICAgICAgICAgICAgYy0+ZGVsZXRlRGF0YShlbmRPZmZzZXQsIGMtPmxlbmd0aCgpIC0gZW5kT2Zm
c2V0LCBlYyk7Ci0gICAgICAgICAgICBpZiAoc3RhcnRPZmZzZXQpCi0gICAgICAgICAgICAgICAg
Yy0+ZGVsZXRlRGF0YSgwLCBzdGFydE9mZnNldCwgZWMpOworICAgICAgICAgICAgZGVsZXRlQ2hh
cmFjdGVyRGF0YShjLCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0LCBlYyk7CiAgICAgICAgICAgICBp
ZiAoZnJhZ21lbnQpIHsKICAgICAgICAgICAgICAgICByZXN1bHQgPSBmcmFnbWVudDsKICAgICAg
ICAgICAgICAgICByZXN1bHQtPmFwcGVuZENoaWxkKGMucmVsZWFzZSgpLCBlYyk7CkBAIC03NTcs
OSArNzc3LDcgQEAgUGFzc1JlZlB0cjxOb2RlPiBSYW5nZTo6cHJvY2Vzc0NvbnRlbnRzQgogICAg
ICAgICAgICAgc3RhdGljX2Nhc3Q8Q2hhcmFjdGVyRGF0YSo+KGNvbnRhaW5lciktPmRlbGV0ZURh
dGEoc3RhcnRPZmZzZXQsIGVuZE9mZnNldCAtIHN0YXJ0T2Zmc2V0LCBlYyk7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgTm9kZTo6UFJPQ0VTU0lOR19JTlNUUlVDVElPTl9OT0RFOgotICAgICAg
ICBBU1NFUlQoZW5kT2Zmc2V0IDw9IHN0YXRpY19jYXN0PFByb2Nlc3NpbmdJbnN0cnVjdGlvbio+
KGNvbnRhaW5lciktPmRhdGEoKS5sZW5ndGgoKSB8fCBlbmRPZmZzZXQgPT0gbGVuZ3RoT2ZDb250
ZW50c0luTm9kZSgpKTsKLSAgICAgICAgaWYgKGVuZE9mZnNldCA9PSBsZW5ndGhPZkNvbnRlbnRz
SW5Ob2RlKCkpCi0gICAgICAgICAgICBlbmRPZmZzZXQgPSBzdGF0aWNfY2FzdDxQcm9jZXNzaW5n
SW5zdHJ1Y3Rpb24qPihjb250YWluZXIpLT5kYXRhKCkubGVuZ3RoKCk7CisgICAgICAgIEFTU0VS
VChlbmRPZmZzZXQgPD0gc3RhdGljX2Nhc3Q8UHJvY2Vzc2luZ0luc3RydWN0aW9uKj4oY29udGFp
bmVyKS0+ZGF0YSgpLmxlbmd0aCgpKTsKICAgICAgICAgaWYgKGFjdGlvbiA9PSBFWFRSQUNUX0NP
TlRFTlRTIHx8IGFjdGlvbiA9PSBDTE9ORV9DT05URU5UUykgewogICAgICAgICAgICAgUmVmUHRy
PFByb2Nlc3NpbmdJbnN0cnVjdGlvbj4gYyA9IHN0YXRpY19wb2ludGVyX2Nhc3Q8UHJvY2Vzc2lu
Z0luc3RydWN0aW9uPihjb250YWluZXItPmNsb25lTm9kZSh0cnVlKSk7CiAgICAgICAgICAgICBj
LT5zZXREYXRhKGMtPmRhdGEoKS5zdWJzdHJpbmcoc3RhcnRPZmZzZXQsIGVuZE9mZnNldCAtIHN0
YXJ0T2Zmc2V0KSwgZWMpOwpAQCAtODAwLDI1ICs4MTgsMzAgQEAgUGFzc1JlZlB0cjxOb2RlPiBS
YW5nZTo6cHJvY2Vzc0NvbnRlbnRzQgogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBzdGFydE9m
ZnNldDsgbiAmJiBpIDwgZW5kT2Zmc2V0OyBpKyssIG4gPSBuLT5uZXh0U2libGluZygpKQogICAg
ICAgICAgICAgbm9kZXMuYXBwZW5kKG4pOwogCi0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBub2Rlcy5zaXplKCk7IGkrKykgewotICAgICAgICAgICAgc3dpdGNoIChhY3Rpb24pIHsK
LSAgICAgICAgICAgIGNhc2UgREVMRVRFX0NPTlRFTlRTOgotICAgICAgICAgICAgICAgIGNvbnRh
aW5lci0+cmVtb3ZlQ2hpbGQobm9kZXNbaV0uZ2V0KCksIGVjKTsKLSAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgIGNhc2UgRVhUUkFDVF9DT05URU5UUzoKLSAgICAgICAgICAgICAg
ICByZXN1bHQtPmFwcGVuZENoaWxkKG5vZGVzW2ldLnJlbGVhc2UoKSwgZWMpOyAvLyB3aWxsIHJl
bW92ZSBuIGZyb20gaXRzIHBhcmVudAotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgY2FzZSBDTE9ORV9DT05URU5UUzoKLSAgICAgICAgICAgICAgICByZXN1bHQtPmFwcGVuZENo
aWxkKG5vZGVzW2ldLT5jbG9uZU5vZGUodHJ1ZSksIGVjKTsKLSAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQorICAgICAgICBwcm9jZXNzTm9kZXMoYWN0aW9u
LCBub2RlcywgY29udGFpbmVyLCByZXN1bHQsIGVjKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQog
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAordm9pZCBSYW5nZTo6cHJvY2Vzc05vZGVzKEFjdGlv
blR5cGUgYWN0aW9uLCBWZWN0b3I8UmVmUHRyPE5vZGU+ID4mIG5vZGVzLCBQYXNzUmVmUHRyPE5v
ZGU+IG9sZENvbnRhaW5lciwgUGFzc1JlZlB0cjxOb2RlPiBuZXdDb250YWluZXIsIEV4Y2VwdGlv
bkNvZGUmIGVjKQoreworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBub2Rlcy5zaXplKCk7
IGkrKykgeworICAgICAgICBzd2l0Y2ggKGFjdGlvbikgeworICAgICAgICBjYXNlIERFTEVURV9D
T05URU5UUzoKKyAgICAgICAgICAgIG9sZENvbnRhaW5lci0+cmVtb3ZlQ2hpbGQobm9kZXNbaV0u
Z2V0KCksIGVjKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVYVFJBQ1RfQ09O
VEVOVFM6CisgICAgICAgICAgICBuZXdDb250YWluZXItPmFwcGVuZENoaWxkKG5vZGVzW2ldLnJl
bGVhc2UoKSwgZWMpOyAvLyB3aWxsIHJlbW92ZSBuIGZyb20gaXRzIHBhcmVudAorICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ0xPTkVfQ09OVEVOVFM6CisgICAgICAgICAgICBuZXdD
b250YWluZXItPmFwcGVuZENoaWxkKG5vZGVzW2ldLT5jbG9uZU5vZGUodHJ1ZSksIGVjKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorfQorCiBQYXNzUmVmUHRyPE5vZGU+
IFJhbmdlOjpwcm9jZXNzQW5jZXN0b3JzQW5kVGhlaXJTaWJsaW5ncyhBY3Rpb25UeXBlIGFjdGlv
biwgTm9kZSogY29udGFpbmVyLCBDb250ZW50c1Byb2Nlc3NEaXJlY3Rpb24gZGlyZWN0aW9uLCBQ
YXNzUmVmUHRyPE5vZGU+IHBhc3NlZENsb25lZENvbnRhaW5lciwgTm9kZSogY29tbW9uUm9vdCwg
RXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgUmVmUHRyPE5vZGU+IGNsb25lZENvbnRhaW5lciA9
IHBhc3NlZENsb25lZENvbnRhaW5lcjsKQEAgLTgzOCw2ICs4NjEsNyBAQCBQYXNzUmVmUHRyPE5v
ZGU+IFJhbmdlOjpwcm9jZXNzQW5jZXN0b3JzCiAKICAgICAgICAgLy8gQ29weSBzaWJsaW5ncyBv
ZiBhbiBhbmNlc3RvciBvZiBzdGFydC9lbmQgY29udGFpbmVycwogICAgICAgICAvLyBGSVhNRTog
VGhpcyBhc3NlcnRpb24gbWF5IGZhaWwgaWYgRE9NIGlzIG1vZGlmaWVkIGR1cmluZyBtdXRhdGlv
biBldmVudAorICAgICAgICAvLyBGSVhNRTogU2hhcmUgY29kZSB3aXRoIFJhbmdlOjpwcm9jZXNz
Tm9kZXMKICAgICAgICAgQVNTRVJUKCFmaXJzdENoaWxkSW5BbmNlc3RvclRvUHJvY2VzcyB8fCBm
aXJzdENoaWxkSW5BbmNlc3RvclRvUHJvY2Vzcy0+cGFyZW50Tm9kZSgpID09IGFuY2VzdG9yKTsK
ICAgICAgICAgUmVmUHRyPE5vZGU+IG5leHQ7CiAgICAgICAgIGZvciAoTm9kZSogY2hpbGQgPSBm
aXJzdENoaWxkSW5BbmNlc3RvclRvUHJvY2Vzcy5nZXQoKTsgY2hpbGQ7IGNoaWxkID0gbmV4dC5n
ZXQoKSkgewpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmgJKHJldmlzaW9uIDc4Nzc2KQorKysgU291cmNlL1dl
YkNvcmUvZG9tL1JhbmdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNs
dWRlICJSYW5nZUJvdW5kYXJ5UG9pbnQuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKQEAgLTE0OCw2ICsxNDksNyBAQCBwcml2YXRlOgogICAgIGVudW0g
QWN0aW9uVHlwZSB7IERFTEVURV9DT05URU5UUywgRVhUUkFDVF9DT05URU5UUywgQ0xPTkVfQ09O
VEVOVFMgfTsKICAgICBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IHByb2Nlc3NDb250ZW50
cyhBY3Rpb25UeXBlLCBFeGNlcHRpb25Db2RlJik7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8Tm9k
ZT4gcHJvY2Vzc0NvbnRlbnRzQmV0d2Vlbk9mZnNldHMoQWN0aW9uVHlwZSwgUGFzc1JlZlB0cjxE
b2N1bWVudEZyYWdtZW50PiwgTm9kZSosIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBl
bmRPZmZzZXQsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBzdGF0aWMgdm9pZCBwcm9jZXNzTm9kZXMo
QWN0aW9uVHlwZSwgVmVjdG9yPFJlZlB0cjxOb2RlPiA+JiwgUGFzc1JlZlB0cjxOb2RlPiBvbGRD
b250YWluZXIsIFBhc3NSZWZQdHI8Tm9kZT4gbmV3Q29udGFpbmVyLCBFeGNlcHRpb25Db2RlJik7
CiAgICAgZW51bSBDb250ZW50c1Byb2Nlc3NEaXJlY3Rpb24geyBQcm9jZXNzQ29udGVudHNGb3J3
YXJkLCBQcm9jZXNzQ29udGVudHNCYWNrd2FyZCB9OwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPE5v
ZGU+IHByb2Nlc3NBbmNlc3RvcnNBbmRUaGVpclNpYmxpbmdzKEFjdGlvblR5cGUsIE5vZGUqIGNv
bnRhaW5lciwgQ29udGVudHNQcm9jZXNzRGlyZWN0aW9uLCBQYXNzUmVmUHRyPE5vZGU+IGNsb25l
ZENvbnRhaW5lciwgTm9kZSogY29tbW9uUm9vdCwgRXhjZXB0aW9uQ29kZSYpOwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>