<?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>64403</bug_id>
          
          <creation_ts>2011-07-12 15:28:58 -0700</creation_ts>
          <short_desc>Move RenderTextControl::indexForVisiblePosition to HTMLTextFormControlElement</short_desc>
          <delta_ts>2011-07-12 21:23:22 -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>Forms</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>ap</cc>
    
    <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>inferno</cc>
    
    <cc>morrita</cc>
    
    <cc>ojan</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>436020</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-07-12 15:28:58 -0700</bug_when>
    <thetext>RenderTextControl has two versions of indexForVisiblePosition, one inherited from RenderObject and another one that takes InnerTextElement in addition to VisiblePosition and used primarily in HTMLTextFormControlElement. 

We&apos;ve had quite few security vulnerabilities due to this function being called at undesirable timing in RenderTextControl.  Since only call sites of this function outside of HTMLTextFormControlElement is in accessibility, we should move this function to HTMLTextFormControlElement.

This will prevent people from inadvertently introducing a similar security vulnerabilities.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>436031</commentid>
    <comment_count>1</comment_count>
      <attachid>100577</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-07-12 15:40:44 -0700</bug_when>
    <thetext>Created attachment 100577
clanup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>436033</commentid>
    <comment_count>2</comment_count>
      <attachid>100577</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-07-12 15:41:43 -0700</bug_when>
    <thetext>Comment on attachment 100577
clanup

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

&gt; Source/WebCore/html/HTMLTextFormControlElement.cpp:41
&gt; +#include &quot;htmlediting.h&quot; // for enclosingTextFormControl

Oops, I should have removed this include :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>436036</commentid>
    <comment_count>3</comment_count>
      <attachid>100578</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-07-12 15:52:35 -0700</bug_when>
    <thetext>Created attachment 100578
Removed unnecessarily includes and forward declarations</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>436038</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-07-12 15:58:38 -0700</bug_when>
    <thetext>Sorry, I claimed http://trac.webkit.org/changeset/90849 was the last one but I keep finding more yaks in various places.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>436186</commentid>
    <comment_count>5</comment_count>
      <attachid>100578</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-07-12 20:02:54 -0700</bug_when>
    <thetext>Comment on attachment 100578
Removed unnecessarily includes and forward declarations

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

&gt; Source/WebCore/editing/htmlediting.cpp:-868
&gt; -    return ancestor != container ? toTextFormControl(ancestor) : 0;

This means |container| has a shadow host, right?
I think &quot;container-&gt;sahdowAncestorNode() != container&quot; idiom should represented as a Node&apos;s method (or a local variable at least).
I need to go back and read the Node.cpp to that intention.
(I agree that shadowAncestorNode() is a ugly name. But it&apos;s another story...)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>436200</commentid>
    <comment_count>6</comment_count>
      <attachid>100578</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-07-12 20:28:14 -0700</bug_when>
    <thetext>Comment on attachment 100578
Removed unnecessarily includes and forward declarations

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

&gt;&gt; Source/WebCore/editing/htmlediting.cpp:-868
&gt;&gt; -    return ancestor != container ? toTextFormControl(ancestor) : 0;
&gt; 
&gt; This means |container| has a shadow host, right?
&gt; I think &quot;container-&gt;sahdowAncestorNode() != container&quot; idiom should represented as a Node&apos;s method (or a local variable at least).
&gt; I need to go back and read the Node.cpp to that intention.
&gt; (I agree that shadowAncestorNode() is a ugly name. But it&apos;s another story...)

Extracting it as a Node&apos;s method (maybe inline?) make a sense but we should probably do that in a separate patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>436204</commentid>
    <comment_count>7</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-07-12 20:34:31 -0700</bug_when>
    <thetext>&gt; Extracting it as a Node&apos;s method (maybe inline?) make a sense but we should probably do that in a separate patch.
Sounds fine for me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>436223</commentid>
    <comment_count>8</comment_count>
      <attachid>100578</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-12 21:23:17 -0700</bug_when>
    <thetext>Comment on attachment 100578
Removed unnecessarily includes and forward declarations

Clearing flags on attachment: 100578

Committed r90885: &lt;http://trac.webkit.org/changeset/90885&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>436224</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-12 21:23:22 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100577</attachid>
            <date>2011-07-12 15:40:44 -0700</date>
            <delta_ts>2011-07-12 15:52:31 -0700</delta_ts>
            <desc>clanup</desc>
            <filename>bug-64403-20110712154043.patch</filename>
            <type>text/plain</type>
            <size>10914</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkwODYxKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTEtMDctMTIgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW92ZSBSZW5kZXJUZXh0Q29udHJv
bDo6aW5kZXhGb3JWaXNpYmxlUG9zaXRpb24gdG8gSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0NDAzCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZWQgaW5k
ZXhGb3JWaXNpYmxlUG9zaXRpb24gZnJvbSBSZW5kZXJUZXh0Q29udHJvbCB0byBIVE1MVGV4dEZv
cm1Db250cm9sRWxlbWVudC4KKworICAgICAgICBBbHNvIHJlcGxhY2VkIHRoZSBjYWxsIHRvIFJl
bmRlclRleHRDb250cm9sOjppc1NlbGVjdGFibGVFbGVtZW50IGJ5IGEgY2FsbCB0byBlbmNsb3Np
bmdUZXh0Rm9ybUNvbnRyb2wKKyAgICAgICAgKG1vdmVkIGZyb20gaHRtbGVkaXRpbmcgdG8gSFRN
TFRleHRGb3JtQ29udHJvbEVsZW1lbnQpIGJlY2F1c2Ugd2UgYXJlIG9ubHkgaW50ZXJlc3RlZCBp
biBjaGVja2luZworICAgICAgICB3aGV0aGVyIHRoZSBnaXZlbiBwb3NpdGlvbiBpcyBpbnNpZGUg
dGhlIGN1cnJlbnQgdGV4dCBmb3JtIGNvbnRyb2wgb3Igbm90LgorCisgICAgICAgIEluIGFkZGl0
aW9uLCBtb2Rlcm5pemVkIHRoZSBjb2RlIGluIGluZGV4Rm9yVmlzaWJsZVBvc2l0aW9uIGJ5IGNh
bGxpbmcgcGFyZW50QW5jaG9yZWRFcXVpdmFsZW50IG9uIHRoZQorICAgICAgICBnaXZlbiBwb3Np
dGlvbiBhbmQgcmVwbGFjaW5nIGNhbGxzIHRvIGRlcHJlY2F0ZU5vZGUgYW5kIGRlcHJlY2F0ZWRF
ZGl0aW5nT2Zmc2V0IGJ5IGNhbGxzIHRvIGNvbnRhaW5lck5vZGUKKyAgICAgICAgYW5kIG9mZnNl
dEluQ29udGFpbmVyLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3Q6OmluZGV4Rm9yVmlzaWJsZVBvc2l0aW9uKTogQ2FsbHMgaW5kZXhGb3JWaXNpYmxlUG9zaXRp
b24uCisgICAgICAgICogZWRpdGluZy9odG1sZWRpdGluZy5jcHA6IFJlbW92ZWQgZW5jbG9zaW5n
VGV4dEZyb21Db250cm9sLgorICAgICAgICAqIGVkaXRpbmcvaHRtbGVkaXRpbmcuaDogUmVtb3Zl
ZCBlbmNsb3NpbmdUZXh0RnJvbUNvbnRyb2wuCisgICAgICAgICogaHRtbC9IVE1MVGV4dEZvcm1D
b250cm9sRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEZvcm1Db250cm9s
RWxlbWVudDo6aW5kZXhGb3JWaXNpYmxlUG9zaXRpb24pOiBNb3ZlZCBmcm9tIFJlbmRlclRleHRD
b250cm9sLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmNv
bXB1dGVTZWxlY3Rpb25TdGFydCk6IENhbGxzIGluZGV4Rm9yVmlzaWJsZVBvc2l0aW9uLgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmNvbXB1dGVTZWxlY3Rp
b25FbmQpOiBDYWxscyBpbmRleEZvclZpc2libGVQb3NpdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6
OmVuY2xvc2luZ1RleHRGb3JtQ29udHJvbCk6IE1vdmVkIGZyb20gaHRtbGVkaXRpbmcuY3BwCisg
ICAgICAgICogaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clRleHRDb250cm9sLmg6CisKIDIwMTEtMDctMTIgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNl
ckBhcHBsZS5jb20+CiAKICAgICAgICAgQ2xlYW4gdXAgc29tZSBSZW5kZXJMYXllckNvbXBvc2l0
b3IgY29kZSByZWxhdGluZyB0byBzY3JvbGwgYW5kIHJvb3QgbGF5ZXJzCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdC5jcHAJKHJldmlzaW9uIDkwODUwKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ5
NSw3ICsyNDk1LDcgQEAgaW50IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmluZGV4Rm9yVgog
ewogICAgIGlmIChpc05hdGl2ZVRleHRDb250cm9sKCkpIHsKICAgICAgICAgSFRNTFRleHRGb3Jt
Q29udHJvbEVsZW1lbnQqIHRleHRDb250cm9sID0gdG9SZW5kZXJUZXh0Q29udHJvbChtX3JlbmRl
cmVyKS0+dGV4dEZvcm1Db250cm9sRWxlbWVudCgpOwotICAgICAgICByZXR1cm4gUmVuZGVyVGV4
dENvbnRyb2w6OmluZGV4Rm9yVmlzaWJsZVBvc2l0aW9uKHRleHRDb250cm9sLT5pbm5lclRleHRF
bGVtZW50KCksIHBvcyk7CisgICAgICAgIHJldHVybiB0ZXh0Q29udHJvbC0+aW5kZXhGb3JWaXNp
YmxlUG9zaXRpb24ocG9zKTsKICAgICB9CiAKICAgICBpZiAoIWlzVGV4dENvbnRyb2woKSkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCShyZXZpc2lvbiA5MDg1MCkK
KysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC04NTYsMTcgKzg1Niw2IEBAIE5vZGUgKnRhYlNwYW5Ob2RlKGNvbnN0IE5vZGUgKm5vZGUp
CiB7CiAgICAgcmV0dXJuIGlzVGFiU3BhblRleHROb2RlKG5vZGUpID8gbm9kZS0+cGFyZW50Tm9k
ZSgpIDogMDsKIH0KLQotSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQqIGVuY2xvc2luZ1RleHRG
b3JtQ29udHJvbChjb25zdCBQb3NpdGlvbiYgcG9zaXRpb24pCi17Ci0gICAgQVNTRVJUKHBvc2l0
aW9uLmlzTnVsbCgpIHx8IHBvc2l0aW9uLmFuY2hvclR5cGUoKSA9PSBQb3NpdGlvbjo6UG9zaXRp
b25Jc09mZnNldEluQW5jaG9yCi0gICAgICAgICAgIHx8IHBvc2l0aW9uLmNvbnRhaW5lck5vZGUo
KSB8fCAhcG9zaXRpb24uYW5jaG9yTm9kZSgpLT5zaGFkb3dBbmNlc3Rvck5vZGUoKSk7Ci0gICAg
Tm9kZSogY29udGFpbmVyID0gcG9zaXRpb24uY29udGFpbmVyTm9kZSgpOwotICAgIGlmICghY29u
dGFpbmVyKQotICAgICAgICByZXR1cm4gMDsKLSAgICBOb2RlKiBhbmNlc3RvciA9IGNvbnRhaW5l
ci0+c2hhZG93QW5jZXN0b3JOb2RlKCk7Ci0gICAgcmV0dXJuIGFuY2VzdG9yICE9IGNvbnRhaW5l
ciA/IHRvVGV4dEZvcm1Db250cm9sKGFuY2VzdG9yKSA6IDA7Ci19CiAgICAgCiBQb3NpdGlvbiBw
b3NpdGlvbk91dHNpZGVUYWJTcGFuKGNvbnN0IFBvc2l0aW9uJiBwb3MpCiB7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5oCShyZXZpc2lvbiA5MDg1MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMjE4LDcgKzIx
OCw2IEBAIFBhc3NSZWZQdHI8RWxlbWVudD4gY3JlYXRlQmxvY2tQbGFjZWhvbGQKIAogRWxlbWVu
dCogZWRpdGFibGVSb290Rm9yUG9zaXRpb24oY29uc3QgUG9zaXRpb24mKTsKIEVsZW1lbnQqIHVu
c3BsaXR0YWJsZUVsZW1lbnRGb3JQb3NpdGlvbihjb25zdCBQb3NpdGlvbiYpOwotSFRNTFRleHRG
b3JtQ29udHJvbEVsZW1lbnQqIGVuY2xvc2luZ1RleHRGb3JtQ29udHJvbChjb25zdCBQb3NpdGlv
biYpOwogCiAvLyBCb29sZWFuIGZ1bmN0aW9ucyBvbiBFbGVtZW50CiAgICAgCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcAko
cmV2aXNpb24gOTA4NTApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRy
b2xFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsOCBAQAogI2luY2x1ZGUg
IlJlbmRlclRleHRDb250cm9sLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNsdWRl
ICJTY3JpcHRFdmVudExpc3RlbmVyLmgiCisjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCisjaW5j
bHVkZSAiaHRtbGVkaXRpbmcuaCIgLy8gZm9yIGVuY2xvc2luZ1RleHRGb3JtQ29udHJvbAogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMjEzLDYgKzIx
NSwyMCBAQCB2b2lkIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpzZXRTZWxlCiAgICAgICAg
IGZyYW1lLT5zZWxlY3Rpb24oKS0+c2V0U2VsZWN0aW9uKG5ld1NlbGVjdGlvbik7CiB9CiAKK2lu
dCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6aW5kZXhGb3JWaXNpYmxlUG9zaXRpb24oY29u
c3QgVmlzaWJsZVBvc2l0aW9uJiBwb3MpIGNvbnN0Cit7CisgICAgUG9zaXRpb24gaW5kZXhQb3Np
dGlvbiA9IHBvcy5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpOwor
ICAgIGlmIChlbmNsb3NpbmdUZXh0Rm9ybUNvbnRyb2woaW5kZXhQb3NpdGlvbikgIT0gdGhpcykK
KyAgICAgICAgcmV0dXJuIDA7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgUmVmUHRy
PFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVhdGUoaW5kZXhQb3NpdGlvbi5kb2N1bWVudCgpKTsK
KyAgICByYW5nZS0+c2V0U3RhcnQoaW5uZXJUZXh0RWxlbWVudCgpLCAwLCBlYyk7CisgICAgQVNT
RVJUKCFlYyk7CisgICAgcmFuZ2UtPnNldEVuZChpbmRleFBvc2l0aW9uLmNvbnRhaW5lck5vZGUo
KSwgaW5kZXhQb3NpdGlvbi5vZmZzZXRJbkNvbnRhaW5lck5vZGUoKSwgZWMpOworICAgIEFTU0VS
VCghZWMpOworICAgIHJldHVybiBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHJhbmdlLmdldCgp
KTsKK30KKwogaW50IEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpzZWxlY3Rpb25TdGFydCgp
IGNvbnN0CiB7CiAgICAgaWYgKCFpc1RleHRGb3JtQ29udHJvbCgpKQpAQCAtMjI5LDcgKzI0NSw3
IEBAIGludCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6Y29tcHV0ZVMKICAgICBpZiAoIWZy
YW1lKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiBSZW5kZXJUZXh0Q29udHJvbDo6
aW5kZXhGb3JWaXNpYmxlUG9zaXRpb24oaW5uZXJUZXh0RWxlbWVudCgpLCBmcmFtZS0+c2VsZWN0
aW9uKCktPnN0YXJ0KCkpOworICAgIHJldHVybiBpbmRleEZvclZpc2libGVQb3NpdGlvbihmcmFt
ZS0+c2VsZWN0aW9uKCktPnN0YXJ0KCkpOwogfQogCiBpbnQgSFRNTFRleHRGb3JtQ29udHJvbEVs
ZW1lbnQ6OnNlbGVjdGlvbkVuZCgpIGNvbnN0CkBAIC0yNDcsNyArMjYzLDcgQEAgaW50IEhUTUxU
ZXh0Rm9ybUNvbnRyb2xFbGVtZW50Ojpjb21wdXRlUwogICAgIGlmICghZnJhbWUpCiAgICAgICAg
IHJldHVybiAwOwogCi0gICAgcmV0dXJuIFJlbmRlclRleHRDb250cm9sOjppbmRleEZvclZpc2li
bGVQb3NpdGlvbihpbm5lclRleHRFbGVtZW50KCksIGZyYW1lLT5zZWxlY3Rpb24oKS0+ZW5kKCkp
OworICAgIHJldHVybiBpbmRleEZvclZpc2libGVQb3NpdGlvbihmcmFtZS0+c2VsZWN0aW9uKCkt
PmVuZCgpKTsKIH0KIAogc3RhdGljIGlubGluZSB2b2lkIHNldENvbnRhaW5lckFuZE9mZnNldEZv
clJhbmdlKE5vZGUqIG5vZGUsIGludCBvZmZzZXQsIE5vZGUqJiBjb250YWluZXJOb2RlLCBpbnQm
IG9mZnNldEluQ29udGFpbmVyKQpAQCAtMzMzLDQgKzM0OSwxNSBAQCB2b2lkIEhUTUxUZXh0Rm9y
bUNvbnRyb2xFbGVtZW50OjpwYXJzZU1hCiAgICAgICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnRX
aXRoU3RhdGU6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpOwogfQogCitIVE1MVGV4dEZvcm1D
b250cm9sRWxlbWVudCogZW5jbG9zaW5nVGV4dEZvcm1Db250cm9sKGNvbnN0IFBvc2l0aW9uJiBw
b3NpdGlvbikKK3sKKyAgICBBU1NFUlQocG9zaXRpb24uaXNOdWxsKCkgfHwgcG9zaXRpb24uYW5j
aG9yVHlwZSgpID09IFBvc2l0aW9uOjpQb3NpdGlvbklzT2Zmc2V0SW5BbmNob3IKKyAgICAgICAg
ICAgfHwgcG9zaXRpb24uY29udGFpbmVyTm9kZSgpIHx8ICFwb3NpdGlvbi5hbmNob3JOb2RlKCkt
PnNoYWRvd0FuY2VzdG9yTm9kZSgpKTsKKyAgICBOb2RlKiBjb250YWluZXIgPSBwb3NpdGlvbi5j
b250YWluZXJOb2RlKCk7CisgICAgaWYgKCFjb250YWluZXIpCisgICAgICAgIHJldHVybiAwOwor
ICAgIE5vZGUqIGFuY2VzdG9yID0gY29udGFpbmVyLT5zaGFkb3dBbmNlc3Rvck5vZGUoKTsKKyAg
ICByZXR1cm4gYW5jZXN0b3IgIT0gY29udGFpbmVyID8gdG9UZXh0Rm9ybUNvbnRyb2woYW5jZXN0
b3IpIDogMDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViY29yZQpJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaAkocmV2aXNpb24gOTA4
NTApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CitjbGFzcyBQb3NpdGlvbjsKIGNsYXNzIFJlbmRlclRleHRDb250cm9sOworY2xhc3MgVmlzaWJs
ZVBvc2l0aW9uOwogCiBjbGFzcyBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudCA6IHB1YmxpYyBI
VE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlIHsKIHB1YmxpYzoKQEAgLTQ0LDYgKzQ2LDcg
QEAgcHVibGljOgogICAgIFN0cmluZyBzdHJpcHBlZFBsYWNlaG9sZGVyKCkgY29uc3Q7CiAgICAg
Ym9vbCBwbGFjZWhvbGRlclNob3VsZEJlVmlzaWJsZSgpIGNvbnN0OwogCisgICAgaW50IGluZGV4
Rm9yVmlzaWJsZVBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0OwogICAgIGlu
dCBzZWxlY3Rpb25TdGFydCgpIGNvbnN0OwogICAgIGludCBzZWxlY3Rpb25FbmQoKSBjb25zdDsK
ICAgICB2b2lkIHNldFNlbGVjdGlvblN0YXJ0KGludCk7CkBAIC0xMTUsNiArMTE4LDggQEAgaW5s
aW5lIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50KiB0b1RleAogICAgIHJldHVybiAobm9kZSAm
JiBub2RlLT5pc0VsZW1lbnROb2RlKCkgJiYgc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUpLT5p
c1RleHRGb3JtQ29udHJvbCgpKSA/IHN0YXRpY19jYXN0PEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVt
ZW50Kj4obm9kZSkgOiAwOwogfQogCitIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudCogZW5jbG9z
aW5nVGV4dEZvcm1Db250cm9sKGNvbnN0IFBvc2l0aW9uJik7CisKIH0gLy8gbmFtZXNwYWNlCiAK
ICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9s
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENv
bnRyb2wuY3BwCShyZXZpc2lvbiA5MDg1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUZXh0Q29udHJvbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDYgQEAKICNp
bmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lU2VsZWN0aW9uLmgiCiAjaW5jbHVkZSAi
SFRNTEJSRWxlbWVudC5oIgotI2luY2x1ZGUgIkhUTUxGb3JtQ29udHJvbEVsZW1lbnQuaCIKICNp
bmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5j
bHVkZSAiSGl0VGVzdFJlc3VsdC5oIgpAQCAtMzgsNyArMzcsNiBAQAogI2luY2x1ZGUgIlJlbmRl
clRleHQuaCIKICNpbmNsdWRlICJTY3JvbGxiYXJUaGVtZS5oIgogI2luY2x1ZGUgIlRleHQuaCIK
LSNpbmNsdWRlICJUZXh0Q29udHJvbElubmVyRWxlbWVudHMuaCIKICNpbmNsdWRlICJUZXh0SXRl
cmF0b3IuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW5jbHVkZSA8
d3RmL3VuaWNvZGUvQ2hhcmFjdGVyTmFtZXMuaD4KQEAgLTE4MywyMiArMTgxLDYgQEAgdm9pZCBS
ZW5kZXJUZXh0Q29udHJvbDo6c2V0TGFzdENoYW5nZVdhcwogICAgIGRvY3VtZW50KCktPnNldEln
bm9yZUF1dG9mb2N1cyhsYXN0Q2hhbmdlV2FzVXNlckVkaXQpOwogfQogCi1ib29sIFJlbmRlclRl
eHRDb250cm9sOjppc1NlbGVjdGFibGVFbGVtZW50KEhUTUxFbGVtZW50KiBpbm5lclRleHQsIE5v
ZGUqIG5vZGUpCi17Ci0gICAgaWYgKCFub2RlIHx8ICFpbm5lclRleHQpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIGlmIChub2RlLT5yb290RWRpdGFibGVFbGVtZW50KCkgPT0gaW5uZXJU
ZXh0KQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAKLSAgICBpZiAoIWlubmVyVGV4dC0+Y29u
dGFpbnMobm9kZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKLSAgICBOb2RlKiBzaGFk
b3dBbmNlc3RvciA9IG5vZGUtPnNoYWRvd0FuY2VzdG9yTm9kZSgpOwotICAgIHJldHVybiBzaGFk
b3dBbmNlc3RvciAmJiAoc2hhZG93QW5jZXN0b3ItPmhhc1RhZ05hbWUodGV4dGFyZWFUYWcpCi0g
ICAgICAgIHx8IChzaGFkb3dBbmNlc3Rvci0+aGFzVGFnTmFtZShpbnB1dFRhZykgJiYgc3RhdGlj
X2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KHNoYWRvd0FuY2VzdG9yKS0+aXNUZXh0RmllbGQoKSkp
OwotfQotCiBWaXNpYmxlUG9zaXRpb24gUmVuZGVyVGV4dENvbnRyb2w6OnZpc2libGVQb3NpdGlv
bkZvckluZGV4KGludCBpbmRleCkgY29uc3QKIHsKICAgICBpZiAoaW5kZXggPD0gMCkKQEAgLTIx
MiwyMCArMTk0LDYgQEAgVmlzaWJsZVBvc2l0aW9uIFJlbmRlclRleHRDb250cm9sOjp2aXNpYgog
ICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oaXQucmFuZ2UoKS0+ZW5kUG9zaXRpb24oKSwgVVBT
VFJFQU0pOwogfQogCi1pbnQgUmVuZGVyVGV4dENvbnRyb2w6OmluZGV4Rm9yVmlzaWJsZVBvc2l0
aW9uKEhUTUxFbGVtZW50KiBpbm5lclRleHRFbGVtZW50LCBjb25zdCBWaXNpYmxlUG9zaXRpb24m
IHBvcykKLXsKLSAgICBQb3NpdGlvbiBpbmRleFBvc2l0aW9uID0gcG9zLmRlZXBFcXVpdmFsZW50
KCk7Ci0gICAgaWYgKCFSZW5kZXJUZXh0Q29udHJvbDo6aXNTZWxlY3RhYmxlRWxlbWVudChpbm5l
clRleHRFbGVtZW50LCBpbmRleFBvc2l0aW9uLmRlcHJlY2F0ZWROb2RlKCkpKQotICAgICAgICBy
ZXR1cm4gMDsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBSZWZQdHI8UmFuZ2U+IHJh
bmdlID0gUmFuZ2U6OmNyZWF0ZShpbmRleFBvc2l0aW9uLmRvY3VtZW50KCkpOwotICAgIHJhbmdl
LT5zZXRTdGFydChpbm5lclRleHRFbGVtZW50LCAwLCBlYyk7Ci0gICAgQVNTRVJUKCFlYyk7Ci0g
ICAgcmFuZ2UtPnNldEVuZChpbmRleFBvc2l0aW9uLmRlcHJlY2F0ZWROb2RlKCksIGluZGV4UG9z
aXRpb24uZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSwgZWMpOwotICAgIEFTU0VSVCghZWMpOwot
ICAgIHJldHVybiBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHJhbmdlLmdldCgpKTsKLX0KLQog
dm9pZCBSZW5kZXJUZXh0Q29udHJvbDo6c3VidHJlZUhhc0NoYW5nZWQoKQogewogICAgIG1fbGFz
dENoYW5nZVdhc1VzZXJFZGl0ID0gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUZXh0Q29udHJvbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUZXh0Q29udHJvbC5oCShyZXZpc2lvbiA5MDg1MCkKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3
ICsyNyw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEhUTUxUZXh0Rm9ybUNvbnRy
b2xFbGVtZW50OwotY2xhc3MgVmlzaWJsZVNlbGVjdGlvbjsKIGNsYXNzIFRleHRDb250cm9sSW5u
ZXJFbGVtZW50OwogY2xhc3MgVGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50OwogCkBAIC00Niw3
ICs0NSw2IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgdGV4dFdpdGhIYXJkTGluZUJyZWFrcygpOwog
CiAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbkZvckluZGV4KGludCBpbmRleCkg
Y29uc3Q7Ci0gICAgc3RhdGljIGludCBpbmRleEZvclZpc2libGVQb3NpdGlvbihIVE1MRWxlbWVu
dCosIGNvbnN0IFZpc2libGVQb3NpdGlvbiYpOwogCiAgICAgdm9pZCB1cGRhdGVQbGFjZWhvbGRl
clZpc2liaWxpdHkoYm9vbCwgYm9vbCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100578</attachid>
            <date>2011-07-12 15:52:35 -0700</date>
            <delta_ts>2011-07-12 21:23:17 -0700</delta_ts>
            <desc>Removed unnecessarily includes and forward declarations</desc>
            <filename>bug-64403-20110712155234.patch</filename>
            <type>text/plain</type>
            <size>10913</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkwODYxKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTEtMDctMTIgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW92ZSBSZW5kZXJUZXh0Q29udHJv
bDo6aW5kZXhGb3JWaXNpYmxlUG9zaXRpb24gdG8gSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0NDAzCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZWQgaW5k
ZXhGb3JWaXNpYmxlUG9zaXRpb24gZnJvbSBSZW5kZXJUZXh0Q29udHJvbCB0byBIVE1MVGV4dEZv
cm1Db250cm9sRWxlbWVudC4KKworICAgICAgICBBbHNvIHJlcGxhY2VkIHRoZSBjYWxsIHRvIFJl
bmRlclRleHRDb250cm9sOjppc1NlbGVjdGFibGVFbGVtZW50IGJ5IGEgY2FsbCB0byBlbmNsb3Np
bmdUZXh0Rm9ybUNvbnRyb2wKKyAgICAgICAgKG1vdmVkIGZyb20gaHRtbGVkaXRpbmcgdG8gSFRN
TFRleHRGb3JtQ29udHJvbEVsZW1lbnQpIGJlY2F1c2Ugd2UgYXJlIG9ubHkgaW50ZXJlc3RlZCBp
biBjaGVja2luZworICAgICAgICB3aGV0aGVyIHRoZSBnaXZlbiBwb3NpdGlvbiBpcyBpbnNpZGUg
dGhlIGN1cnJlbnQgdGV4dCBmb3JtIGNvbnRyb2wgb3Igbm90LgorCisgICAgICAgIEluIGFkZGl0
aW9uLCBtb2Rlcm5pemVkIHRoZSBjb2RlIGluIGluZGV4Rm9yVmlzaWJsZVBvc2l0aW9uIGJ5IGNh
bGxpbmcgcGFyZW50QW5jaG9yZWRFcXVpdmFsZW50IG9uIHRoZQorICAgICAgICBnaXZlbiBwb3Np
dGlvbiBhbmQgcmVwbGFjaW5nIGNhbGxzIHRvIGRlcHJlY2F0ZU5vZGUgYW5kIGRlcHJlY2F0ZWRF
ZGl0aW5nT2Zmc2V0IGJ5IGNhbGxzIHRvIGNvbnRhaW5lck5vZGUKKyAgICAgICAgYW5kIG9mZnNl
dEluQ29udGFpbmVyLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3Q6OmluZGV4Rm9yVmlzaWJsZVBvc2l0aW9uKTogQ2FsbHMgaW5kZXhGb3JWaXNpYmxlUG9zaXRp
b24uCisgICAgICAgICogZWRpdGluZy9odG1sZWRpdGluZy5jcHA6IFJlbW92ZWQgZW5jbG9zaW5n
VGV4dEZyb21Db250cm9sLgorICAgICAgICAqIGVkaXRpbmcvaHRtbGVkaXRpbmcuaDogUmVtb3Zl
ZCBlbmNsb3NpbmdUZXh0RnJvbUNvbnRyb2wuCisgICAgICAgICogaHRtbC9IVE1MVGV4dEZvcm1D
b250cm9sRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEZvcm1Db250cm9s
RWxlbWVudDo6aW5kZXhGb3JWaXNpYmxlUG9zaXRpb24pOiBNb3ZlZCBmcm9tIFJlbmRlclRleHRD
b250cm9sLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmNv
bXB1dGVTZWxlY3Rpb25TdGFydCk6IENhbGxzIGluZGV4Rm9yVmlzaWJsZVBvc2l0aW9uLgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmNvbXB1dGVTZWxlY3Rp
b25FbmQpOiBDYWxscyBpbmRleEZvclZpc2libGVQb3NpdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6
OmVuY2xvc2luZ1RleHRGb3JtQ29udHJvbCk6IE1vdmVkIGZyb20gaHRtbGVkaXRpbmcuY3BwCisg
ICAgICAgICogaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clRleHRDb250cm9sLmg6CisKIDIwMTEtMDctMTIgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNl
ckBhcHBsZS5jb20+CiAKICAgICAgICAgQ2xlYW4gdXAgc29tZSBSZW5kZXJMYXllckNvbXBvc2l0
b3IgY29kZSByZWxhdGluZyB0byBzY3JvbGwgYW5kIHJvb3QgbGF5ZXJzCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdC5jcHAJKHJldmlzaW9uIDkwODUwKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ5
NSw3ICsyNDk1LDcgQEAgaW50IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmluZGV4Rm9yVgog
ewogICAgIGlmIChpc05hdGl2ZVRleHRDb250cm9sKCkpIHsKICAgICAgICAgSFRNTFRleHRGb3Jt
Q29udHJvbEVsZW1lbnQqIHRleHRDb250cm9sID0gdG9SZW5kZXJUZXh0Q29udHJvbChtX3JlbmRl
cmVyKS0+dGV4dEZvcm1Db250cm9sRWxlbWVudCgpOwotICAgICAgICByZXR1cm4gUmVuZGVyVGV4
dENvbnRyb2w6OmluZGV4Rm9yVmlzaWJsZVBvc2l0aW9uKHRleHRDb250cm9sLT5pbm5lclRleHRF
bGVtZW50KCksIHBvcyk7CisgICAgICAgIHJldHVybiB0ZXh0Q29udHJvbC0+aW5kZXhGb3JWaXNp
YmxlUG9zaXRpb24ocG9zKTsKICAgICB9CiAKICAgICBpZiAoIWlzVGV4dENvbnRyb2woKSkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCShyZXZpc2lvbiA5MDg1MCkK
KysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC04NTYsMTcgKzg1Niw2IEBAIE5vZGUgKnRhYlNwYW5Ob2RlKGNvbnN0IE5vZGUgKm5vZGUp
CiB7CiAgICAgcmV0dXJuIGlzVGFiU3BhblRleHROb2RlKG5vZGUpID8gbm9kZS0+cGFyZW50Tm9k
ZSgpIDogMDsKIH0KLQotSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQqIGVuY2xvc2luZ1RleHRG
b3JtQ29udHJvbChjb25zdCBQb3NpdGlvbiYgcG9zaXRpb24pCi17Ci0gICAgQVNTRVJUKHBvc2l0
aW9uLmlzTnVsbCgpIHx8IHBvc2l0aW9uLmFuY2hvclR5cGUoKSA9PSBQb3NpdGlvbjo6UG9zaXRp
b25Jc09mZnNldEluQW5jaG9yCi0gICAgICAgICAgIHx8IHBvc2l0aW9uLmNvbnRhaW5lck5vZGUo
KSB8fCAhcG9zaXRpb24uYW5jaG9yTm9kZSgpLT5zaGFkb3dBbmNlc3Rvck5vZGUoKSk7Ci0gICAg
Tm9kZSogY29udGFpbmVyID0gcG9zaXRpb24uY29udGFpbmVyTm9kZSgpOwotICAgIGlmICghY29u
dGFpbmVyKQotICAgICAgICByZXR1cm4gMDsKLSAgICBOb2RlKiBhbmNlc3RvciA9IGNvbnRhaW5l
ci0+c2hhZG93QW5jZXN0b3JOb2RlKCk7Ci0gICAgcmV0dXJuIGFuY2VzdG9yICE9IGNvbnRhaW5l
ciA/IHRvVGV4dEZvcm1Db250cm9sKGFuY2VzdG9yKSA6IDA7Ci19CiAgICAgCiBQb3NpdGlvbiBw
b3NpdGlvbk91dHNpZGVUYWJTcGFuKGNvbnN0IFBvc2l0aW9uJiBwb3MpCiB7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5oCShyZXZpc2lvbiA5MDg1MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMjE4LDcgKzIx
OCw2IEBAIFBhc3NSZWZQdHI8RWxlbWVudD4gY3JlYXRlQmxvY2tQbGFjZWhvbGQKIAogRWxlbWVu
dCogZWRpdGFibGVSb290Rm9yUG9zaXRpb24oY29uc3QgUG9zaXRpb24mKTsKIEVsZW1lbnQqIHVu
c3BsaXR0YWJsZUVsZW1lbnRGb3JQb3NpdGlvbihjb25zdCBQb3NpdGlvbiYpOwotSFRNTFRleHRG
b3JtQ29udHJvbEVsZW1lbnQqIGVuY2xvc2luZ1RleHRGb3JtQ29udHJvbChjb25zdCBQb3NpdGlv
biYpOwogCiAvLyBCb29sZWFuIGZ1bmN0aW9ucyBvbiBFbGVtZW50CiAgICAgCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcAko
cmV2aXNpb24gOTA4NTApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRy
b2xFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUg
IlJlbmRlclRleHRDb250cm9sLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNsdWRl
ICJTY3JpcHRFdmVudExpc3RlbmVyLmgiCisjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0yMTMsNiArMjE0
LDIwIEBAIHZvaWQgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnNldFNlbGUKICAgICAgICAg
ZnJhbWUtPnNlbGVjdGlvbigpLT5zZXRTZWxlY3Rpb24obmV3U2VsZWN0aW9uKTsKIH0KIAoraW50
IEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjppbmRleEZvclZpc2libGVQb3NpdGlvbihjb25z
dCBWaXNpYmxlUG9zaXRpb24mIHBvcykgY29uc3QKK3sKKyAgICBQb3NpdGlvbiBpbmRleFBvc2l0
aW9uID0gcG9zLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCk7Cisg
ICAgaWYgKGVuY2xvc2luZ1RleHRGb3JtQ29udHJvbChpbmRleFBvc2l0aW9uKSAhPSB0aGlzKQor
ICAgICAgICByZXR1cm4gMDsKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBSZWZQdHI8
UmFuZ2U+IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShpbmRleFBvc2l0aW9uLmRvY3VtZW50KCkpOwor
ICAgIHJhbmdlLT5zZXRTdGFydChpbm5lclRleHRFbGVtZW50KCksIDAsIGVjKTsKKyAgICBBU1NF
UlQoIWVjKTsKKyAgICByYW5nZS0+c2V0RW5kKGluZGV4UG9zaXRpb24uY29udGFpbmVyTm9kZSgp
LCBpbmRleFBvc2l0aW9uLm9mZnNldEluQ29udGFpbmVyTm9kZSgpLCBlYyk7CisgICAgQVNTRVJU
KCFlYyk7CisgICAgcmV0dXJuIFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2UuZ2V0KCkp
OworfQorCiBpbnQgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnNlbGVjdGlvblN0YXJ0KCkg
Y29uc3QKIHsKICAgICBpZiAoIWlzVGV4dEZvcm1Db250cm9sKCkpCkBAIC0yMjksNyArMjQ0LDcg
QEAgaW50IEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Ojpjb21wdXRlUwogICAgIGlmICghZnJh
bWUpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIFJlbmRlclRleHRDb250cm9sOjpp
bmRleEZvclZpc2libGVQb3NpdGlvbihpbm5lclRleHRFbGVtZW50KCksIGZyYW1lLT5zZWxlY3Rp
b24oKS0+c3RhcnQoKSk7CisgICAgcmV0dXJuIGluZGV4Rm9yVmlzaWJsZVBvc2l0aW9uKGZyYW1l
LT5zZWxlY3Rpb24oKS0+c3RhcnQoKSk7CiB9CiAKIGludCBIVE1MVGV4dEZvcm1Db250cm9sRWxl
bWVudDo6c2VsZWN0aW9uRW5kKCkgY29uc3QKQEAgLTI0Nyw3ICsyNjIsNyBAQCBpbnQgSFRNTFRl
eHRGb3JtQ29udHJvbEVsZW1lbnQ6OmNvbXB1dGVTCiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAg
cmV0dXJuIDA7CiAKLSAgICByZXR1cm4gUmVuZGVyVGV4dENvbnRyb2w6OmluZGV4Rm9yVmlzaWJs
ZVBvc2l0aW9uKGlubmVyVGV4dEVsZW1lbnQoKSwgZnJhbWUtPnNlbGVjdGlvbigpLT5lbmQoKSk7
CisgICAgcmV0dXJuIGluZGV4Rm9yVmlzaWJsZVBvc2l0aW9uKGZyYW1lLT5zZWxlY3Rpb24oKS0+
ZW5kKCkpOwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQgc2V0Q29udGFpbmVyQW5kT2Zmc2V0Rm9y
UmFuZ2UoTm9kZSogbm9kZSwgaW50IG9mZnNldCwgTm9kZSomIGNvbnRhaW5lck5vZGUsIGludCYg
b2Zmc2V0SW5Db250YWluZXIpCkBAIC0zMzMsNCArMzQ4LDE1IEBAIHZvaWQgSFRNTFRleHRGb3Jt
Q29udHJvbEVsZW1lbnQ6OnBhcnNlTWEKICAgICAgICAgSFRNTEZvcm1Db250cm9sRWxlbWVudFdp
dGhTdGF0ZTo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7CiB9CiAKK0hUTUxUZXh0Rm9ybUNv
bnRyb2xFbGVtZW50KiBlbmNsb3NpbmdUZXh0Rm9ybUNvbnRyb2woY29uc3QgUG9zaXRpb24mIHBv
c2l0aW9uKQoreworICAgIEFTU0VSVChwb3NpdGlvbi5pc051bGwoKSB8fCBwb3NpdGlvbi5hbmNo
b3JUeXBlKCkgPT0gUG9zaXRpb246OlBvc2l0aW9uSXNPZmZzZXRJbkFuY2hvcgorICAgICAgICAg
ICB8fCBwb3NpdGlvbi5jb250YWluZXJOb2RlKCkgfHwgIXBvc2l0aW9uLmFuY2hvck5vZGUoKS0+
c2hhZG93QW5jZXN0b3JOb2RlKCkpOworICAgIE5vZGUqIGNvbnRhaW5lciA9IHBvc2l0aW9uLmNv
bnRhaW5lck5vZGUoKTsKKyAgICBpZiAoIWNvbnRhaW5lcikKKyAgICAgICAgcmV0dXJuIDA7Cisg
ICAgTm9kZSogYW5jZXN0b3IgPSBjb250YWluZXItPnNoYWRvd0FuY2VzdG9yTm9kZSgpOworICAg
IHJldHVybiBhbmNlc3RvciAhPSBjb250YWluZXIgPyB0b1RleHRGb3JtQ29udHJvbChhbmNlc3Rv
cikgOiAwOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJjb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oCShyZXZpc2lvbiA5MDg1
MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
K2NsYXNzIFBvc2l0aW9uOwogY2xhc3MgUmVuZGVyVGV4dENvbnRyb2w7CitjbGFzcyBWaXNpYmxl
UG9zaXRpb247CiAKIGNsYXNzIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50IDogcHVibGljIEhU
TUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGUgewogcHVibGljOgpAQCAtNDQsNiArNDYsNyBA
QCBwdWJsaWM6CiAgICAgU3RyaW5nIHN0cmlwcGVkUGxhY2Vob2xkZXIoKSBjb25zdDsKICAgICBi
b29sIHBsYWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxlKCkgY29uc3Q7CiAKKyAgICBpbnQgaW5kZXhG
b3JWaXNpYmxlUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Q7CiAgICAgaW50
IHNlbGVjdGlvblN0YXJ0KCkgY29uc3Q7CiAgICAgaW50IHNlbGVjdGlvbkVuZCgpIGNvbnN0Owog
ICAgIHZvaWQgc2V0U2VsZWN0aW9uU3RhcnQoaW50KTsKQEAgLTExNSw2ICsxMTgsOCBAQCBpbmxp
bmUgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQqIHRvVGV4CiAgICAgcmV0dXJuIChub2RlICYm
IG5vZGUtPmlzRWxlbWVudE5vZGUoKSAmJiBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obm9kZSktPmlz
VGV4dEZvcm1Db250cm9sKCkpID8gc3RhdGljX2Nhc3Q8SFRNTFRleHRGb3JtQ29udHJvbEVsZW1l
bnQqPihub2RlKSA6IDA7CiB9CiAKK0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50KiBlbmNsb3Np
bmdUZXh0Rm9ybUNvbnRyb2woY29uc3QgUG9zaXRpb24mKTsKKwogfSAvLyBuYW1lc3BhY2UKIAog
I2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29u
dHJvbC5jcHAJKHJldmlzaW9uIDkwODUwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRleHRDb250cm9sLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNiBAQAogI2lu
Y2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVTZWxlY3Rpb24uaCIKICNpbmNsdWRlICJI
VE1MQlJFbGVtZW50LmgiCi0jaW5jbHVkZSAiSFRNTEZvcm1Db250cm9sRWxlbWVudC5oIgogI2lu
Y2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNs
dWRlICJIaXRUZXN0UmVzdWx0LmgiCkBAIC0zOCw3ICszNyw2IEBACiAjaW5jbHVkZSAiUmVuZGVy
VGV4dC5oIgogI2luY2x1ZGUgIlNjcm9sbGJhclRoZW1lLmgiCiAjaW5jbHVkZSAiVGV4dC5oIgot
I2luY2x1ZGUgIlRleHRDb250cm9sSW5uZXJFbGVtZW50cy5oIgogI2luY2x1ZGUgIlRleHRJdGVy
YXRvci5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRlIDx3
dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5oPgpAQCAtMTgzLDIyICsxODEsNiBAQCB2b2lkIFJl
bmRlclRleHRDb250cm9sOjpzZXRMYXN0Q2hhbmdlV2FzCiAgICAgZG9jdW1lbnQoKS0+c2V0SWdu
b3JlQXV0b2ZvY3VzKGxhc3RDaGFuZ2VXYXNVc2VyRWRpdCk7CiB9CiAKLWJvb2wgUmVuZGVyVGV4
dENvbnRyb2w6OmlzU2VsZWN0YWJsZUVsZW1lbnQoSFRNTEVsZW1lbnQqIGlubmVyVGV4dCwgTm9k
ZSogbm9kZSkKLXsKLSAgICBpZiAoIW5vZGUgfHwgIWlubmVyVGV4dCkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgaWYgKG5vZGUtPnJvb3RFZGl0YWJsZUVsZW1lbnQoKSA9PSBpbm5lclRl
eHQpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIAotICAgIGlmICghaW5uZXJUZXh0LT5jb250
YWlucyhub2RlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAotICAgIE5vZGUqIHNoYWRv
d0FuY2VzdG9yID0gbm9kZS0+c2hhZG93QW5jZXN0b3JOb2RlKCk7Ci0gICAgcmV0dXJuIHNoYWRv
d0FuY2VzdG9yICYmIChzaGFkb3dBbmNlc3Rvci0+aGFzVGFnTmFtZSh0ZXh0YXJlYVRhZykKLSAg
ICAgICAgfHwgKHNoYWRvd0FuY2VzdG9yLT5oYXNUYWdOYW1lKGlucHV0VGFnKSAmJiBzdGF0aWNf
Y2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4oc2hhZG93QW5jZXN0b3IpLT5pc1RleHRGaWVsZCgpKSk7
Ci19Ci0KIFZpc2libGVQb3NpdGlvbiBSZW5kZXJUZXh0Q29udHJvbDo6dmlzaWJsZVBvc2l0aW9u
Rm9ySW5kZXgoaW50IGluZGV4KSBjb25zdAogewogICAgIGlmIChpbmRleCA8PSAwKQpAQCAtMjEy
LDIwICsxOTQsNiBAQCBWaXNpYmxlUG9zaXRpb24gUmVuZGVyVGV4dENvbnRyb2w6OnZpc2liCiAg
ICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbihpdC5yYW5nZSgpLT5lbmRQb3NpdGlvbigpLCBVUFNU
UkVBTSk7CiB9CiAKLWludCBSZW5kZXJUZXh0Q29udHJvbDo6aW5kZXhGb3JWaXNpYmxlUG9zaXRp
b24oSFRNTEVsZW1lbnQqIGlubmVyVGV4dEVsZW1lbnQsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYg
cG9zKQotewotICAgIFBvc2l0aW9uIGluZGV4UG9zaXRpb24gPSBwb3MuZGVlcEVxdWl2YWxlbnQo
KTsKLSAgICBpZiAoIVJlbmRlclRleHRDb250cm9sOjppc1NlbGVjdGFibGVFbGVtZW50KGlubmVy
VGV4dEVsZW1lbnQsIGluZGV4UG9zaXRpb24uZGVwcmVjYXRlZE5vZGUoKSkpCi0gICAgICAgIHJl
dHVybiAwOwotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFJlZlB0cjxSYW5nZT4gcmFu
Z2UgPSBSYW5nZTo6Y3JlYXRlKGluZGV4UG9zaXRpb24uZG9jdW1lbnQoKSk7Ci0gICAgcmFuZ2Ut
PnNldFN0YXJ0KGlubmVyVGV4dEVsZW1lbnQsIDAsIGVjKTsKLSAgICBBU1NFUlQoIWVjKTsKLSAg
ICByYW5nZS0+c2V0RW5kKGluZGV4UG9zaXRpb24uZGVwcmVjYXRlZE5vZGUoKSwgaW5kZXhQb3Np
dGlvbi5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpLCBlYyk7Ci0gICAgQVNTRVJUKCFlYyk7Ci0g
ICAgcmV0dXJuIFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2UuZ2V0KCkpOwotfQotCiB2
b2lkIFJlbmRlclRleHRDb250cm9sOjpzdWJ0cmVlSGFzQ2hhbmdlZCgpCiB7CiAgICAgbV9sYXN0
Q2hhbmdlV2FzVXNlckVkaXQgPSB0cnVlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRleHRDb250cm9sLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRleHRDb250cm9sLmgJKHJldmlzaW9uIDkwODUwKQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDkg
KzI3LDYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSFRNTFRleHRGb3JtQ29udHJv
bEVsZW1lbnQ7Ci1jbGFzcyBWaXNpYmxlU2VsZWN0aW9uOwotY2xhc3MgVGV4dENvbnRyb2xJbm5l
ckVsZW1lbnQ7Ci1jbGFzcyBUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ7CiAKIGNsYXNzIFJl
bmRlclRleHRDb250cm9sIDogcHVibGljIFJlbmRlckJsb2NrIHsKIHB1YmxpYzoKQEAgLTQ2LDcg
KzQzLDYgQEAgcHVibGljOgogICAgIFN0cmluZyB0ZXh0V2l0aEhhcmRMaW5lQnJlYWtzKCk7CiAK
ICAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRm9ySW5kZXgoaW50IGluZGV4KSBj
b25zdDsKLSAgICBzdGF0aWMgaW50IGluZGV4Rm9yVmlzaWJsZVBvc2l0aW9uKEhUTUxFbGVtZW50
KiwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJik7CiAKICAgICB2b2lkIHVwZGF0ZVBsYWNlaG9sZGVy
VmlzaWJpbGl0eShib29sLCBib29sKTsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>