<?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>86340</bug_id>
          
          <creation_ts>2012-05-13 23:53:30 -0700</creation_ts>
          <short_desc>[CG] CGImageCreateWithImageInRect is too slow, but for now we still need to use it</short_desc>
          <delta_ts>2013-03-01 10:02: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>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>ddkilzer</cc>
    
    <cc>ggaren</cc>
    
    <cc>mitz</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yongjun_zhang</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>622706</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-05-13 23:53:30 -0700</bug_when>
    <thetext>[CG] CGImageCreateImageWithRect is too slow, but for now we still need to use it</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>622711</commentid>
    <comment_count>1</comment_count>
      <attachid>141653</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-05-13 23:57:12 -0700</bug_when>
    <thetext>Created attachment 141653
First cut; needs performance testing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>622713</commentid>
    <comment_count>2</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-05-13 23:58:32 -0700</bug_when>
    <thetext>I suspect that calling TimerBase::start every time is too slow. Some other technique for clearing the cache when idle would probably be more efficient.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>622717</commentid>
    <comment_count>3</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-05-14 00:03:50 -0700</bug_when>
    <thetext>Hmm, is this using a cache size based on the number of subimages? I could see a pathological case where someone uses subimages which are nearly the entirety of a large image (or even comparatively small portions of a very large image), and suddenly their memory usage explodes. Can we base it on the total size of the cached subimages instead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>622720</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-05-14 00:08:33 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Hmm, is this using a cache size based on the number of subimages? I could see a pathological case where someone uses subimages which are nearly the entirety of a large image (or even comparatively small portions of a very large image), and suddenly their memory usage explodes. Can we base it on the total size of the cached subimages instead?

Subimages don’t copy the bits, so the sizes of the subimages are not relevant.

The sizes of the base images might be relevant.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>622723</commentid>
    <comment_count>5</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-05-14 00:09:48 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; Hmm, is this using a cache size based on the number of subimages? I could see a pathological case where someone uses subimages which are nearly the entirety of a large image (or even comparatively small portions of a very large image), and suddenly their memory usage explodes. Can we base it on the total size of the cached subimages instead?
&gt; 
&gt; Subimages don’t copy the bits, so the sizes of the subimages are not relevant.
&gt; 
&gt; The sizes of the base images might be relevant.

Oh, that&apos;s comforting.

I wonder why they&apos;re so slow to compute, then?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>622725</commentid>
    <comment_count>6</comment_count>
    <who name="">mitz</who>
    <bug_when>2012-05-14 00:14:12 -0700</bug_when>
    <thetext>Did you mean CGImageCreateWithImageInRect?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>623063</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-05-14 10:08:52 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; I wonder why they&apos;re so slow to compute, then?

I believe the issue is that they are made of multiple memory blocks and memory allocation and deallocation is costly even when the amounts of memory are small. But there may be other factors as well. Allocating and deallocating may be causing trouble with caching inside Core Graphics, for example.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>623214</commentid>
    <comment_count>8</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-05-14 12:32:43 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; I suspect that calling TimerBase::start every time is too slow. Some other technique for clearing the cache when idle would probably be more efficient.

How about this:
If timer is idle, start it for 1s, else:
    Set a flag saying &quot;the next timer fire should just restart the timer instead of clearing the cache&quot;.

This ensures only 1 timer start per second, which solves the cost of TimerBase::start. It has the negative side-effect of making the timer &quot;sloppy&quot;. In the pathological case, if you create 1 subimage per second, you&apos;ll never clear the cache. This seems acceptable, since the pathological case is, in point of fact, getting value out of the cache, and the cache has an absolute bound at maxSubimageCacheSize.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>623510</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2012-05-14 17:45:05 -0700</bug_when>
    <thetext>&lt;rdar://problem/11451243&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>623588</commentid>
    <comment_count>10</comment_count>
      <attachid>141846</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-05-14 20:20:56 -0700</bug_when>
    <thetext>Created attachment 141846
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>623589</commentid>
    <comment_count>11</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-05-14 20:21:41 -0700</bug_when>
    <thetext>We measured a significant speedup on the IE fish tank test; I think this is ready to land.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>623747</commentid>
    <comment_count>12</comment_count>
      <attachid>141846</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-05-15 00:31:10 -0700</bug_when>
    <thetext>Comment on attachment 141846
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>624176</commentid>
    <comment_count>13</comment_count>
      <attachid>141846</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-15 09:22:10 -0700</bug_when>
    <thetext>Comment on attachment 141846
Patch

Clearing flags on attachment: 141846

Committed r117083: &lt;http://trac.webkit.org/changeset/117083&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>624177</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-15 09:22:15 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>637321</commentid>
    <comment_count>15</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-05-30 09:41:43 -0700</bug_when>
    <thetext>Later testing showed different results. I am no longer sure this is a speed-up and we may want to either turn it off or roll it out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844277</commentid>
    <comment_count>16</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-02-28 11:34:25 -0800</bug_when>
    <thetext>I see subimage caching being expensive on http://www.thewildernessdowntown.com</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845262</commentid>
    <comment_count>17</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-03-01 10:02:48 -0800</bug_when>
    <thetext>Feel free to turn this off or roll this out as per my 2012-05-30 comment. Especially if we have test data indicating that’s the right thing to do.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>141653</attachid>
            <date>2012-05-13 23:57:12 -0700</date>
            <delta_ts>2012-05-14 20:20:51 -0700</delta_ts>
            <desc>First cut; needs performance testing</desc>
            <filename>bug-86340-20120513235711.patch</filename>
            <type>text/plain</type>
            <size>6647</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExNjkyNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBACisyMDEyLTA1LTEzICBEYXJpbiBB
ZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBbQ0ddIENHSW1hZ2VDcmVhdGVJbWFn
ZVdpdGhSZWN0IGlzIHRvbyBzbG93LCBidXQgZm9yIG5vdyB3ZSBzdGlsbCBuZWVkIHRvIHVzZSBp
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODYzNDAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBh
dGNoIGFkZHMgYSBzdWJpbWFnZSBjYWNoZSB0byBkZWZyYXkgdGhlIGNvc3Qgb2YgQ0dJbWFnZUNy
ZWF0ZUltYWdlV2l0aFJlY3QuCisgICAgICAgIExhdGVyLCB3ZSB3aWxsIHJlc3RydWN0dXJlIHRo
ZSBjb2RlIHNvIGl0IGRvZXNuJ3QgdXNlIHRoYXQgZnVuY3Rpb24sIGJ1dCBhdCB0aGUKKyAgICAg
ICAgbW9tZW50IHRoZXJlIGFyZSBDRyBpc3N1ZXMgYmxvY2tpbmcgdGhhdCBjaGFuZ2UuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHA6CisgICAg
ICAgIChTdWJpbWFnZUNhY2hlRW50cnkpOiBBZGRlZC4gQW4gZW50cnkgaW4gdGhlIGNhY2hlLgor
ICAgICAgICAoU3ViaW1hZ2VDYWNoZUVudHJ5VHJhaXRzKTogQWRkZWQuIFRyYWl0cyBmb3IgdGhl
IGNhY2hlLgorICAgICAgICAoU3ViaW1hZ2VDYWNoZUhhc2gpOiBBZGRlZC4gSGFzaCBmdW5jdGlv
biBmb3IgdGhlIGNhY2hlLgorICAgICAgICAoU3ViaW1hZ2VSZXF1ZXN0KTogQWRkZWQuIEEga2V5
IHRvIGxvb2sgdXAgaW4gdGhlIGNhY2hlLgorICAgICAgICAoU3ViaW1hZ2VDYWNoZUFkZGVyKTog
QWRkZWQuIFRyYW5zbGF0b3IgdG8gYWRkIHRvIHRoZSBjYWNoZS4KKyAgICAgICAgKFN1YmltYWdl
Q2FjaGVUaW1lcik6IEFkZGVkLiBUaW1lciB0aGF0IGNsZWFycyB0aGUgY2FjaGUgYWZ0ZXIgYSBz
ZWNvbmQKKyAgICAgICAgb2YgaW5hY3Rpdml0eS4KKyAgICAgICAgKFN1YmltYWdlQ2FjaGVXaXRo
VGltZXIpOiBBZGRlZC4gQ2FjaGUgYW5kIGl0cyB0aW1lci4KKyAgICAgICAgKFdlYkNvcmU6OnN1
YmltYWdlQ2FjaGUpOiBBZGRlZC4gRnVuY3Rpb24gcmV0dXJuaW5nIHRoZSBzaW5nbGUgZ2xvYmFs
IHRpbWVyLgorICAgICAgICAoV2ViQ29yZTo6U3ViaW1hZ2VDYWNoZVRpbWVyOjpmaXJlZCk6IEFk
ZGVkLiBDbGVhciB0aGUgY2FjaGUgd2hlbiB0aGUgdGltZXIgZmlyZXMuCisgICAgICAgIChXZWJD
b3JlOjpzdWJpbWFnZSk6IEFkZGVkLiBQdXRzIGFuIGVudHJ5IGluIHRoZSBjYWNoZS4KKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKTogQ2hhbmdlZCB0
byBjYWxsIHRoZSBzdWJpbWFnZSBmdW5jdGlvbi4KKwogMjAxMi0wNS0xMyAgTm9lbCBHb3Jkb24g
IDxub2VsLmdvcmRvbkBnbWFpbC5jb20+CiAKICAgICAgICAgW2Nocm9taXVtXSBSZW1vdmUgcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMveGJtIGZyb20gV2ViQ29yZS5neXAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRl
eHRDRy5jcHAJKHJldmlzaW9uIDExNjkwOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDAzLCAy
MDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExLCAyMDEyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOCBFcmljIFNl
aWRlbCA8ZXJpY0B3ZWJraXQub3JnPgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMzcsNyArMzcsNyBA
QAogI2luY2x1ZGUgIlBhdGguaCIKICNpbmNsdWRlICJQYXR0ZXJuLmgiCiAjaW5jbHVkZSAiU2hh
ZG93Qmx1ci5oIgotCisjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDxDb3JlR3JhcGhpY3Mv
Q29yZUdyYXBoaWNzLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3
dGYvT3duQXJyYXlQdHIuaD4KQEAgLTczLDcgKzczLDEwNyBAQCBleHRlcm4gIkMiIHsKIAogdXNp
bmcgbmFtZXNwYWNlIHN0ZDsKIAorLy8gRklYTUU6IFRoZSBmb2xsb3dpbmcgdXNpbmcgZGVjbGFy
YXRpb24gc2hvdWxkIGJlIGluIDx3dGYvSGFzaEZ1bmN0aW9ucy5oPi4KK3VzaW5nIFdURjo6aW50
SGFzaDsKKworLy8gRklYTUU6IFRoZSBmb2xsb3dpbmcgdXNpbmcgZGVjbGFyYXRpb24gc2hvdWxk
IGJlIGluIDx3dGYvSGFzaFRyYWl0cy5oPi4KK3VzaW5nIFdURjo6R2VuZXJpY0hhc2hUcmFpdHM7
CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IFN1YmltYWdlQ2FjaGVFbnRyeSB7Cisg
ICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGltYWdlOworICAgIEZsb2F0UmVjdCByZWN0OworICAg
IFJldGFpblB0cjxDR0ltYWdlUmVmPiBzdWJpbWFnZTsKK307CisKK3N0cnVjdCBTdWJpbWFnZUNh
Y2hlRW50cnlUcmFpdHMgOiBHZW5lcmljSGFzaFRyYWl0czxTdWJpbWFnZUNhY2hlRW50cnk+IHsK
KyAgICB0eXBlZGVmIEhhc2hUcmFpdHM8UmV0YWluUHRyPENHSW1hZ2VSZWY+ID4gSW1hZ2VUcmFp
dHM7CisKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBlbXB0eVZhbHVlSXNaZXJvID0gdHJ1ZTsKKwor
ICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0lzRW1wdHlWYWx1ZUZ1bmN0aW9uID0gdHJ1ZTsKKyAg
ICBzdGF0aWMgYm9vbCBpc0VtcHR5VmFsdWUoY29uc3QgU3ViaW1hZ2VDYWNoZUVudHJ5JiB2YWx1
ZSkgeyByZXR1cm4gIXZhbHVlLmltYWdlOyB9CisKKyAgICBzdGF0aWMgdm9pZCBjb25zdHJ1Y3RE
ZWxldGVkVmFsdWUoU3ViaW1hZ2VDYWNoZUVudHJ5JiBzbG90KSB7IEltYWdlVHJhaXRzOjpjb25z
dHJ1Y3REZWxldGVkVmFsdWUoc2xvdC5pbWFnZSk7IH0KKyAgICBzdGF0aWMgYm9vbCBpc0RlbGV0
ZWRWYWx1ZShjb25zdCBTdWJpbWFnZUNhY2hlRW50cnkmIHZhbHVlKSB7IHJldHVybiBJbWFnZVRy
YWl0czo6aXNEZWxldGVkVmFsdWUodmFsdWUuaW1hZ2UpOyB9Cit9OworCitzdHJ1Y3QgU3ViaW1h
Z2VDYWNoZUhhc2ggeworICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKENHSW1hZ2VSZWYgaW1hZ2Us
IGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKKyAgICB7CisgICAgICAgIHJldHVybiBpbnRIYXNoKChz
dGF0aWNfY2FzdDx1aW50NjRfdD4oUHRySGFzaDxDR0ltYWdlUmVmPjo6aGFzaChpbWFnZSkpIDw8
IDMyKQorICAgICAgICAgICAgfCAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJlY3QueCgpKSA8PCAx
NikgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmVjdC55KCkpKTsKKyAgICB9CisgICAgc3RhdGlj
IHVuc2lnbmVkIGhhc2goY29uc3QgU3ViaW1hZ2VDYWNoZUVudHJ5JiBrZXkpCisgICAgeworICAg
ICAgICByZXR1cm4gaGFzaChrZXkuaW1hZ2UuZ2V0KCksIGtleS5yZWN0KTsKKyAgICB9CisgICAg
c3RhdGljIGJvb2wgZXF1YWwoY29uc3QgU3ViaW1hZ2VDYWNoZUVudHJ5JiBhLCBjb25zdCBTdWJp
bWFnZUNhY2hlRW50cnkmIGIpCisgICAgeworICAgICAgICByZXR1cm4gYS5pbWFnZSA9PSBiLmlt
YWdlICYmIGEucmVjdCA9PSBiLnJlY3Q7CisgICAgfQorICAgIHN0YXRpYyBjb25zdCBib29sIHNh
ZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gdHJ1ZTsKK307CisKK3R5cGVkZWYgSGFzaFNl
dDxTdWJpbWFnZUNhY2hlRW50cnksIFN1YmltYWdlQ2FjaGVIYXNoLCBTdWJpbWFnZUNhY2hlRW50
cnlUcmFpdHM+IFN1YmltYWdlQ2FjaGU7CisKK3N0cnVjdCBTdWJpbWFnZVJlcXVlc3QgeworICAg
IENHSW1hZ2VSZWYgaW1hZ2U7CisgICAgY29uc3QgRmxvYXRSZWN0JiByZWN0OworICAgIFN1Ymlt
YWdlUmVxdWVzdChDR0ltYWdlUmVmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpIDogaW1h
Z2UoaW1hZ2UpLCByZWN0KHJlY3QpIHsgfQorfTsKKworc3RydWN0IFN1YmltYWdlQ2FjaGVBZGRl
ciB7CisgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgU3ViaW1hZ2VSZXF1ZXN0JiB2YWx1
ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBTdWJpbWFnZUNhY2hlSGFzaDo6aGFzaCh2YWx1ZS5p
bWFnZSwgdmFsdWUucmVjdCk7CisgICAgfQorICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFN1
YmltYWdlQ2FjaGVFbnRyeSYgYSwgY29uc3QgU3ViaW1hZ2VSZXF1ZXN0JiBiKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGEuaW1hZ2UgPT0gYi5pbWFnZSAmJiBhLnJlY3QgPT0gYi5yZWN0OworICAg
IH0KKyAgICBzdGF0aWMgdm9pZCB0cmFuc2xhdGUoU3ViaW1hZ2VDYWNoZUVudHJ5JiBlbnRyeSwg
Y29uc3QgU3ViaW1hZ2VSZXF1ZXN0JiByZXF1ZXN0LCB1bnNpZ25lZCAvKmhhc2hDb2RlKi8pCisg
ICAgeworICAgICAgICBlbnRyeS5pbWFnZSA9IHJlcXVlc3QuaW1hZ2U7CisgICAgICAgIGVudHJ5
LnJlY3QgPSByZXF1ZXN0LnJlY3Q7CisgICAgICAgIGVudHJ5LnN1YmltYWdlID0gYWRvcHRDRihD
R0ltYWdlQ3JlYXRlV2l0aEltYWdlSW5SZWN0KHJlcXVlc3QuaW1hZ2UsIHJlcXVlc3QucmVjdCkp
OworICAgIH0KK307CisKK2NsYXNzIFN1YmltYWdlQ2FjaGVUaW1lciA6IHByaXZhdGUgVGltZXJC
YXNlIHsKK3B1YmxpYzoKKyAgICB2b2lkIHJlc3RhcnQoKSB7IHN0YXJ0T25lU2hvdCgxKTsgfQor
cHJpdmF0ZToKKyAgICB2aXJ0dWFsIHZvaWQgZmlyZWQoKSBPVkVSUklERTsKK307CisKK3N0cnVj
dCBTdWJpbWFnZUNhY2hlV2l0aFRpbWVyIHsKKyAgICBTdWJpbWFnZUNhY2hlIGNhY2hlOworICAg
IFN1YmltYWdlQ2FjaGVUaW1lciB0aW1lcjsKK307CisKK3N0YXRpYyBTdWJpbWFnZUNhY2hlV2l0
aFRpbWVyJiBzdWJpbWFnZUNhY2hlKCkKK3sKKyAgICBzdGF0aWMgU3ViaW1hZ2VDYWNoZVdpdGhU
aW1lciYgY2FjaGUgPSAqbmV3IFN1YmltYWdlQ2FjaGVXaXRoVGltZXI7CisgICAgcmV0dXJuIGNh
Y2hlOworfQorCit2b2lkIFN1YmltYWdlQ2FjaGVUaW1lcjo6ZmlyZWQoKQoreworICAgIHN1Ymlt
YWdlQ2FjaGUoKS5jYWNoZS5jbGVhcigpOworfQorCitzdGF0aWMgUmV0YWluUHRyPENHSW1hZ2VS
ZWY+IHN1YmltYWdlKENHSW1hZ2VSZWYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKK3sK
KyAgICBjb25zdCBpbnQgbWF4U3ViaW1hZ2VDYWNoZVNpemUgPSAxMDA7CisgICAgU3ViaW1hZ2VD
YWNoZVdpdGhUaW1lciYgY2FjaGUgPSBzdWJpbWFnZUNhY2hlKCk7CisgICAgY2FjaGUudGltZXIu
cmVzdGFydCgpOworICAgIGlmIChjYWNoZS5jYWNoZS5zaXplKCkgPT0gbWF4U3ViaW1hZ2VDYWNo
ZVNpemUpCisgICAgICAgIGNhY2hlLmNhY2hlLnJlbW92ZShjYWNoZS5jYWNoZS5iZWdpbigpKTsK
KyAgICBBU1NFUlQoY2FjaGUuY2FjaGUuc2l6ZSgpIDwgbWF4U3ViaW1hZ2VDYWNoZVNpemUpOwor
ICAgIHJldHVybiBjYWNoZS5jYWNoZS5hZGQ8U3ViaW1hZ2VSZXF1ZXN0LCBTdWJpbWFnZUNhY2hl
QWRkZXI+KFN1YmltYWdlUmVxdWVzdChpbWFnZSwgcmVjdCkpLml0ZXJhdG9yLT5zdWJpbWFnZTsK
K30KICAgICAKIHN0YXRpYyBDR0NvbG9yU3BhY2VSZWYgY3JlYXRlTGluZWFyU1JHQkNvbG9yU3Bh
Y2UoKQogewpAQCAtMjEyLDcgKzMxMiw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0
aXZlSW1hZ2UoTmEKICAgICAgICAgICAgIHN1YmltYWdlUmVjdC5zZXRIZWlnaHQoY2VpbGYoc3Vi
aW1hZ2VSZWN0LmhlaWdodCgpICsgdG9wUGFkZGluZykpOwogICAgICAgICAgICAgYWRqdXN0ZWRE
ZXN0UmVjdC5zZXRIZWlnaHQoc3ViaW1hZ2VSZWN0LmhlaWdodCgpIC8geVNjYWxlKTsKIAotICAg
ICAgICAgICAgaW1hZ2UuYWRvcHRDRihDR0ltYWdlQ3JlYXRlV2l0aEltYWdlSW5SZWN0KGltYWdl
LmdldCgpLCBzdWJpbWFnZVJlY3QpKTsKKyAgICAgICAgICAgIGltYWdlID0gc3ViaW1hZ2UoaW1h
Z2UuZ2V0KCksIHN1YmltYWdlUmVjdCk7CiAgICAgICAgICAgICBpZiAoY3VyckhlaWdodCA8IHNy
Y1JlY3QubWF4WSgpKSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKENHSW1hZ2VHZXRIZWlnaHQo
aW1hZ2UuZ2V0KCkpID09IGN1cnJIZWlnaHQgLSBDR1JlY3RJbnRlZ3JhbChzcmNSZWN0KS5vcmln
aW4ueSk7CiAgICAgICAgICAgICAgICAgYWRqdXN0ZWREZXN0UmVjdC5zZXRIZWlnaHQoQ0dJbWFn
ZUdldEhlaWdodChpbWFnZS5nZXQoKSkgLyB5U2NhbGUpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>141846</attachid>
            <date>2012-05-14 20:20:56 -0700</date>
            <delta_ts>2012-05-15 09:22:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-86340-20120514202055.patch</filename>
            <type>text/plain</type>
            <size>7761</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExNjkyNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDEyLTA1LTEzICBEYXJpbiBB
ZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBbQ0ddIENHSW1hZ2VDcmVhdGVXaXRo
SW1hZ2VJblJlY3QgaXMgdG9vIHNsb3csIGJ1dCBmb3Igbm93IHdlIHN0aWxsIG5lZWQgdG8gdXNl
IGl0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NjM0
MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
cGF0Y2ggYWRkcyBhIHN1YmltYWdlIGNhY2hlIHRvIGRlZnJheSB0aGUgY29zdCBvZiBDR0ltYWdl
Q3JlYXRlV2l0aEltYWdlSW5SZWN0LgorICAgICAgICBMYXRlciwgd2Ugd2lsbCByZXN0cnVjdHVy
ZSB0aGUgY29kZSBzbyBpdCBkb2Vzbid0IHVzZSB0aGF0IGZ1bmN0aW9uLCBidXQgYXQgdGhlCisg
ICAgICAgIG1vbWVudCB0aGVyZSBhcmUgQ0cgaXNzdWVzIGJsb2NraW5nIHRoYXQgY2hhbmdlLgor
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwOgor
ICAgICAgICAoU3ViaW1hZ2VDYWNoZUVudHJ5KTogQWRkZWQuIEFuIGVudHJ5IGluIHRoZSBjYWNo
ZS4KKyAgICAgICAgKFN1YmltYWdlQ2FjaGVFbnRyeVRyYWl0cyk6IEFkZGVkLiBUcmFpdHMgZm9y
IHRoZSBjYWNoZS4KKyAgICAgICAgKFN1YmltYWdlQ2FjaGVIYXNoKTogQWRkZWQuIEhhc2ggZnVu
Y3Rpb24gZm9yIHRoZSBjYWNoZS4KKyAgICAgICAgKFN1YmltYWdlQ2FjaGVUaW1lcik6IEFkZGVk
LiBUaW1lciB0aGF0IGNsZWFycyB0aGUgY2FjaGUgYWZ0ZXIgYSBzZWNvbmQKKyAgICAgICAgb2Yg
aW5hY3Rpdml0eS4KKyAgICAgICAgKFN1YmltYWdlQ2FjaGVXaXRoVGltZXIpOiBBZGRlZC4gQ2Fj
aGUgYW5kIGl0cyB0aW1lci4KKyAgICAgICAgKFdlYkNvcmU6OnN1YmltYWdlQ2FjaGUpOiBBZGRl
ZC4gRnVuY3Rpb24gcmV0dXJuaW5nIHRoZSBzaW5nbGUgZ2xvYmFsIHRpbWVyLgorICAgICAgICAo
V2ViQ29yZTo6U3ViaW1hZ2VDYWNoZVRpbWVyOjpyZXN0YXJ0KTogQWRkZWQuIFN0YXJ0IHRoZSB0
aW1lci4KKyAgICAgICAgKFdlYkNvcmU6OlN1YmltYWdlQ2FjaGVUaW1lcjo6ZmlyZWQpOiBBZGRl
ZC4gQ2xlYXIgdGhlIGNhY2hlIHdoZW4gdGhlIHRpbWVyIGZpcmVzLgorICAgICAgICAoU3ViaW1h
Z2VSZXF1ZXN0KTogQWRkZWQuIEEga2V5IHRvIGxvb2sgdXAgaW4gdGhlIGNhY2hlLgorICAgICAg
ICAoU3ViaW1hZ2VDYWNoZUFkZGVyKTogQWRkZWQuIFRyYW5zbGF0b3IgdG8gYWRkIHRvIHRoZSBj
YWNoZS4KKyAgICAgICAgKFdlYkNvcmU6OnN1YmltYWdlKTogQWRkZWQuIFB1dHMgYW4gZW50cnkg
aW4gdGhlIGNhY2hlLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0
aXZlSW1hZ2UpOiBDaGFuZ2VkIHRvIGNhbGwgdGhlIHN1YmltYWdlIGZ1bmN0aW9uLgorCiAyMDEy
LTA1LTEzICBOb2VsIEdvcmRvbiAgPG5vZWwuZ29yZG9uQGdtYWlsLmNvbT4KIAogICAgICAgICBb
Y2hyb21pdW1dIFJlbW92ZSBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy94Ym0gZnJvbSBXZWJDb3Jl
Lmd5cApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3ND
b250ZXh0Q0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAkocmV2aXNpb24gMTE2OTA5KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwMywgMjAw
NCwgMjAwNSwgMjAwNiwgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIw
MTAsIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJp
Z2h0IChDKSAyMDA4IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+CiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CkBAIC0zNyw3ICszNyw3IEBACiAjaW5jbHVkZSAiUGF0aC5oIgogI2luY2x1ZGUgIlBhdHRl
cm4uaCIKICNpbmNsdWRlICJTaGFkb3dCbHVyLmgiCi0KKyNpbmNsdWRlICJUaW1lci5oIgogI2lu
Y2x1ZGUgPENvcmVHcmFwaGljcy9Db3JlR3JhcGhpY3MuaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4
dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9Pd25BcnJheVB0ci5oPgpAQCAtNzMsOCArNzMsMTQyIEBA
IGV4dGVybiAiQyIgewogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCisvLyBGSVhNRTogVGhlIGZv
bGxvd2luZyB1c2luZyBkZWNsYXJhdGlvbiBzaG91bGQgYmUgaW4gPHd0Zi9IYXNoRnVuY3Rpb25z
Lmg+LgordXNpbmcgV1RGOjppbnRIYXNoOworCisvLyBGSVhNRTogVGhlIGZvbGxvd2luZyB1c2lu
ZyBkZWNsYXJhdGlvbiBzaG91bGQgYmUgaW4gPHd0Zi9IYXNoVHJhaXRzLmg+LgordXNpbmcgV1RG
OjpHZW5lcmljSGFzaFRyYWl0czsKKworI2RlZmluZSBDQUNIRV9TVUJJTUFHRVMgMQorCiBuYW1l
c3BhY2UgV2ViQ29yZSB7Ci0gICAgCisKKyNpZiAhQ0FDSEVfU1VCSU1BR0VTCisKK3N0YXRpYyBp
bmxpbmUgUmV0YWluUHRyPENHSW1hZ2VSZWY+IHN1YmltYWdlKENHSW1hZ2VSZWYgaW1hZ2UsIGNv
bnN0IEZsb2F0UmVjdCYgcmVjdCkKK3sKKyAgICByZXR1cm4gYWRvcHRDRihDR0ltYWdlQ3JlYXRl
V2l0aEltYWdlSW5SZWN0KGltYWdlLCByZWN0KSk7Cit9CisKKyNlbHNlIC8vIENBQ0hFX1NVQklN
QUdFUworCitzdGF0aWMgY29uc3QgZG91YmxlIHN1YmltYWdlQ2FjaGVDbGVhckRlbGF5ID0gMTsK
K3N0YXRpYyBjb25zdCBpbnQgbWF4U3ViaW1hZ2VDYWNoZVNpemUgPSAzMDA7CisKK3N0cnVjdCBT
dWJpbWFnZUNhY2hlRW50cnkgeworICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZTsKKyAg
ICBGbG9hdFJlY3QgcmVjdDsKKyAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gc3ViaW1hZ2U7Cit9
OworCitzdHJ1Y3QgU3ViaW1hZ2VDYWNoZUVudHJ5VHJhaXRzIDogR2VuZXJpY0hhc2hUcmFpdHM8
U3ViaW1hZ2VDYWNoZUVudHJ5PiB7CisgICAgdHlwZWRlZiBIYXNoVHJhaXRzPFJldGFpblB0cjxD
R0ltYWdlUmVmPiA+IEltYWdlVHJhaXRzOworCisgICAgc3RhdGljIGNvbnN0IGJvb2wgZW1wdHlW
YWx1ZUlzWmVybyA9IHRydWU7CisKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNJc0VtcHR5VmFs
dWVGdW5jdGlvbiA9IHRydWU7CisgICAgc3RhdGljIGJvb2wgaXNFbXB0eVZhbHVlKGNvbnN0IFN1
YmltYWdlQ2FjaGVFbnRyeSYgdmFsdWUpIHsgcmV0dXJuICF2YWx1ZS5pbWFnZTsgfQorCisgICAg
c3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKFN1YmltYWdlQ2FjaGVFbnRyeSYgc2xv
dCkgeyBJbWFnZVRyYWl0czo6Y29uc3RydWN0RGVsZXRlZFZhbHVlKHNsb3QuaW1hZ2UpOyB9Cisg
ICAgc3RhdGljIGJvb2wgaXNEZWxldGVkVmFsdWUoY29uc3QgU3ViaW1hZ2VDYWNoZUVudHJ5JiB2
YWx1ZSkgeyByZXR1cm4gSW1hZ2VUcmFpdHM6OmlzRGVsZXRlZFZhbHVlKHZhbHVlLmltYWdlKTsg
fQorfTsKKworc3RydWN0IFN1YmltYWdlQ2FjaGVIYXNoIHsKKyAgICBzdGF0aWMgdW5zaWduZWQg
aGFzaChDR0ltYWdlUmVmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCisgICAgeworICAg
ICAgICByZXR1cm4gaW50SGFzaCgoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KFB0ckhhc2g8Q0dJbWFn
ZVJlZj46Omhhc2goaW1hZ2UpKSA8PCAzMikKKyAgICAgICAgICAgIHwgKHN0YXRpY19jYXN0PHVu
c2lnbmVkPihyZWN0LngoKSkgPDwgMTYpIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJlY3QueSgp
KSk7CisgICAgfQorICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFN1YmltYWdlQ2FjaGVF
bnRyeSYga2V5KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGhhc2goa2V5LmltYWdlLmdldCgpLCBr
ZXkucmVjdCk7CisgICAgfQorICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFN1YmltYWdlQ2Fj
aGVFbnRyeSYgYSwgY29uc3QgU3ViaW1hZ2VDYWNoZUVudHJ5JiBiKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGEuaW1hZ2UgPT0gYi5pbWFnZSAmJiBhLnJlY3QgPT0gYi5yZWN0OworICAgIH0KKyAg
ICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IHRydWU7
Cit9OworCit0eXBlZGVmIEhhc2hTZXQ8U3ViaW1hZ2VDYWNoZUVudHJ5LCBTdWJpbWFnZUNhY2hl
SGFzaCwgU3ViaW1hZ2VDYWNoZUVudHJ5VHJhaXRzPiBTdWJpbWFnZUNhY2hlOworCitjbGFzcyBT
dWJpbWFnZUNhY2hlVGltZXIgOiBwcml2YXRlIFRpbWVyQmFzZSB7CitwdWJsaWM6CisgICAgU3Vi
aW1hZ2VDYWNoZVRpbWVyKCkgOiBtX3Nob3VsZFJlc3RhcnRXaGVuVGltZXJGaXJlcyhmYWxzZSkg
eyB9CisgICAgdm9pZCByZXN0YXJ0KCk7Citwcml2YXRlOgorICAgIHZpcnR1YWwgdm9pZCBmaXJl
ZCgpIE9WRVJSSURFOworICAgIGJvb2wgbV9zaG91bGRSZXN0YXJ0V2hlblRpbWVyRmlyZXM7Cit9
OworCitzdHJ1Y3QgU3ViaW1hZ2VDYWNoZVdpdGhUaW1lciB7CisgICAgU3ViaW1hZ2VDYWNoZSBj
YWNoZTsKKyAgICBTdWJpbWFnZUNhY2hlVGltZXIgdGltZXI7Cit9OworCitzdGF0aWMgU3ViaW1h
Z2VDYWNoZVdpdGhUaW1lciYgc3ViaW1hZ2VDYWNoZSgpCit7CisgICAgc3RhdGljIFN1YmltYWdl
Q2FjaGVXaXRoVGltZXImIGNhY2hlID0gKm5ldyBTdWJpbWFnZUNhY2hlV2l0aFRpbWVyOworICAg
IHJldHVybiBjYWNoZTsKK30KKworaW5saW5lIHZvaWQgU3ViaW1hZ2VDYWNoZVRpbWVyOjpyZXN0
YXJ0KCkKK3sKKyAgICAvLyBTZXR0aW5nIHRoaXMgYm9vbGVhbiBpcyBtdWNoIG1vcmUgZWZmaWNp
ZW50IHRoYW4gY2FsbGluZyBzdGFydE9uZVNob3QKKyAgICAvLyBhZ2Fpbiwgd2hpY2ggbWlnaHQg
cmVzdWx0IGluIHJlc2NoZWR1bGluZyB0aGUgc3lzdGVtIHRpbWVyIGFuZCB0aGF0CisgICAgLy8g
Y2FuIGJlIHF1aXRlIGV4cGVuc2l2ZS4KKyAgICBpZiAoaXNBY3RpdmUoKSkgeworICAgICAgICBt
X3Nob3VsZFJlc3RhcnRXaGVuVGltZXJGaXJlcyA9IHRydWU7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgc3RhcnRPbmVTaG90KHN1YmltYWdlQ2FjaGVDbGVhckRlbGF5KTsKK30KKwordm9p
ZCBTdWJpbWFnZUNhY2hlVGltZXI6OmZpcmVkKCkKK3sKKyAgICBpZiAobV9zaG91bGRSZXN0YXJ0
V2hlblRpbWVyRmlyZXMpIHsKKyAgICAgICAgbV9zaG91bGRSZXN0YXJ0V2hlblRpbWVyRmlyZXMg
PSBmYWxzZTsKKyAgICAgICAgc3RhcnRPbmVTaG90KHN1YmltYWdlQ2FjaGVDbGVhckRlbGF5KTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBzdWJpbWFnZUNhY2hlKCkuY2FjaGUuY2xlYXIo
KTsKK30KKworc3RydWN0IFN1YmltYWdlUmVxdWVzdCB7CisgICAgQ0dJbWFnZVJlZiBpbWFnZTsK
KyAgICBjb25zdCBGbG9hdFJlY3QmIHJlY3Q7CisgICAgU3ViaW1hZ2VSZXF1ZXN0KENHSW1hZ2VS
ZWYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkgOiBpbWFnZShpbWFnZSksIHJlY3QocmVj
dCkgeyB9Cit9OworCitzdHJ1Y3QgU3ViaW1hZ2VDYWNoZUFkZGVyIHsKKyAgICBzdGF0aWMgdW5z
aWduZWQgaGFzaChjb25zdCBTdWJpbWFnZVJlcXVlc3QmIHZhbHVlKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIFN1YmltYWdlQ2FjaGVIYXNoOjpoYXNoKHZhbHVlLmltYWdlLCB2YWx1ZS5yZWN0KTsK
KyAgICB9CisgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgU3ViaW1hZ2VDYWNoZUVudHJ5JiBh
LCBjb25zdCBTdWJpbWFnZVJlcXVlc3QmIGIpCisgICAgeworICAgICAgICByZXR1cm4gYS5pbWFn
ZSA9PSBiLmltYWdlICYmIGEucmVjdCA9PSBiLnJlY3Q7CisgICAgfQorICAgIHN0YXRpYyB2b2lk
IHRyYW5zbGF0ZShTdWJpbWFnZUNhY2hlRW50cnkmIGVudHJ5LCBjb25zdCBTdWJpbWFnZVJlcXVl
c3QmIHJlcXVlc3QsIHVuc2lnbmVkIC8qaGFzaENvZGUqLykKKyAgICB7CisgICAgICAgIGVudHJ5
LmltYWdlID0gcmVxdWVzdC5pbWFnZTsKKyAgICAgICAgZW50cnkucmVjdCA9IHJlcXVlc3QucmVj
dDsKKyAgICAgICAgZW50cnkuc3ViaW1hZ2UgPSBhZG9wdENGKENHSW1hZ2VDcmVhdGVXaXRoSW1h
Z2VJblJlY3QocmVxdWVzdC5pbWFnZSwgcmVxdWVzdC5yZWN0KSk7CisgICAgfQorfTsKKworc3Rh
dGljIFJldGFpblB0cjxDR0ltYWdlUmVmPiBzdWJpbWFnZShDR0ltYWdlUmVmIGltYWdlLCBjb25z
dCBGbG9hdFJlY3QmIHJlY3QpCit7CisgICAgU3ViaW1hZ2VDYWNoZVdpdGhUaW1lciYgY2FjaGUg
PSBzdWJpbWFnZUNhY2hlKCk7CisgICAgY2FjaGUudGltZXIucmVzdGFydCgpOworICAgIGlmIChj
YWNoZS5jYWNoZS5zaXplKCkgPT0gbWF4U3ViaW1hZ2VDYWNoZVNpemUpCisgICAgICAgIGNhY2hl
LmNhY2hlLnJlbW92ZShjYWNoZS5jYWNoZS5iZWdpbigpKTsKKyAgICBBU1NFUlQoY2FjaGUuY2Fj
aGUuc2l6ZSgpIDwgbWF4U3ViaW1hZ2VDYWNoZVNpemUpOworICAgIHJldHVybiBjYWNoZS5jYWNo
ZS5hZGQ8U3ViaW1hZ2VSZXF1ZXN0LCBTdWJpbWFnZUNhY2hlQWRkZXI+KFN1YmltYWdlUmVxdWVz
dChpbWFnZSwgcmVjdCkpLml0ZXJhdG9yLT5zdWJpbWFnZTsKK30KKworI2VuZGlmIC8vIENBQ0hF
X1NVQklNQUdFUworCiBzdGF0aWMgQ0dDb2xvclNwYWNlUmVmIGNyZWF0ZUxpbmVhclNSR0JDb2xv
clNwYWNlKCkKIHsKICAgICAvLyBJZiB3ZSBmYWlsIHRvIGxvYWQgdGhlIGxpbmVhcml6ZWQgc1JH
QiBJQ0MgcHJvZmlsZSwgZmFsbCBiYWNrIHRvIERldmljZVJHQi4KQEAgLTIxMiw3ICszNDYsNyBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKE5hCiAgICAgICAgICAgICBz
dWJpbWFnZVJlY3Quc2V0SGVpZ2h0KGNlaWxmKHN1YmltYWdlUmVjdC5oZWlnaHQoKSArIHRvcFBh
ZGRpbmcpKTsKICAgICAgICAgICAgIGFkanVzdGVkRGVzdFJlY3Quc2V0SGVpZ2h0KHN1YmltYWdl
UmVjdC5oZWlnaHQoKSAvIHlTY2FsZSk7CiAKLSAgICAgICAgICAgIGltYWdlLmFkb3B0Q0YoQ0dJ
bWFnZUNyZWF0ZVdpdGhJbWFnZUluUmVjdChpbWFnZS5nZXQoKSwgc3ViaW1hZ2VSZWN0KSk7Cisg
ICAgICAgICAgICBpbWFnZSA9IHN1YmltYWdlKGltYWdlLmdldCgpLCBzdWJpbWFnZVJlY3QpOwog
ICAgICAgICAgICAgaWYgKGN1cnJIZWlnaHQgPCBzcmNSZWN0Lm1heFkoKSkgewogICAgICAgICAg
ICAgICAgIEFTU0VSVChDR0ltYWdlR2V0SGVpZ2h0KGltYWdlLmdldCgpKSA9PSBjdXJySGVpZ2h0
IC0gQ0dSZWN0SW50ZWdyYWwoc3JjUmVjdCkub3JpZ2luLnkpOwogICAgICAgICAgICAgICAgIGFk
anVzdGVkRGVzdFJlY3Quc2V0SGVpZ2h0KENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UuZ2V0KCkpIC8g
eVNjYWxlKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>