<?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>49999</bug_id>
          
          <creation_ts>2010-11-23 18:17:04 -0800</creation_ts>
          <short_desc>better V8 bindings for HTML5 ImageData</short_desc>
          <delta_ts>2010-12-02 02:40:29 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Yuqiang Xian">yuqiang.xian</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>antonm</cc>
    
    <cc>commit-queue</cc>
    
    <cc>iposva</cc>
    
    <cc>peter</cc>
    
    <cc>pfeldman</cc>
    
    <cc>vitalyr</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>313102</commentid>
    <comment_count>0</comment_count>
    <who name="Yuqiang Xian">yuqiang.xian</who>
    <bug_when>2010-11-23 18:17:04 -0800</bug_when>
    <thetext>Details please see the Chromium bug - http://code.google.com/p/chromium/issues/detail?id=3473.

V8 has already avoided the CanvasPixelArray element access through the C++ bindings by introducing a PixelArray class in V8 space (http://code.google.com/p/v8/source/detail?r=2549, http://trac.webkit.org/changeset/46495). 

Actually we can go further. Currently V8 still needs to wrap the CanvasPixelArray object through the C++ bindings, and it&apos;s still a big performance issue in some cases like the below example -

frame = context.getImageData(0, 0, canvas.width, canvas.height);
…	
for (var i = 0; i &lt; frame.data.length; i += 4) {
	var r = frame.data[i + 0];
	var g = frame.data[i + 1];
	var b = frame.data[i + 2];
	
	var v = r + g + b;
	v /= 3;
	
	frame.data[i + 0] = v;
	frame.data[i + 1] = v;
	frame.data[i + 2] = v;
}	
…	
context.putImageData(frame, 0, 0);

There’ll be frequent invocations from Jitted code to native C++ code and big overhead for object bindings for “frame.data” access. Every “frame.data” access in the loop runs into the object binding code, which then lookups the hash map maintaining the relationship between DOM objects and the corresponding V8 objects, and returns the V8 object for “data” (a CanvasPixelArray object wrapper), and thus the object bindings overhead comes out. 

We can create a normal V8 object which has a PixelArray as the backing storage, and set the &quot;data&quot; property of ImageData object to it. This way we don&apos;t need to call through the C++ bindings for ImageData &quot;data&quot; access. This eliminates big overhead in switching between JavaScript and native contexts and performing object bindings when there&apos;re frequent &quot;data&quot; property accesses of ImageData.

This is also similar to the approach how JSC handles ImageData.

Back to the example case again, we see &gt;3X performance with the proposed change, when handling a 800x600 sized canvas.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>313105</commentid>
    <comment_count>1</comment_count>
      <attachid>74714</attachid>
    <who name="Yuqiang Xian">yuqiang.xian</who>
    <bug_when>2010-11-23 18:26:50 -0800</bug_when>
    <thetext>Created attachment 74714
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>313321</commentid>
    <comment_count>2</comment_count>
    <who name="Vitaly Repeshko">vitalyr</who>
    <bug_when>2010-11-24 09:00:29 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; Created an attachment (id=74714) [details]
&gt; proposed patch

The key part here is avoiding hitting a C++ callback when reading the &quot;data&quot; property on a JS wrapper of ImageData object. Setting a pure JS property on the wrapper is a good idea. Yet modifying the way the value of the property is computed is not necessary and I think can be only harmful. Instead of creating a new object template and instantiating it, we should reuse the CanvasPixelArray wraper, i.e. do something like this:
if (!wrapper.IsEmpty()) {
    v8::Handle&lt;v8::Value&gt; pixelArray = toV8(impl-&gt;data());
    if (!pixelArray.IsEmpty())
        wrapper-&gt;Set(v8::String::NewSymbol(&quot;data&quot;), pixelArray, v8::ReadOnly);
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>313566</commentid>
    <comment_count>3</comment_count>
      <attachid>74821</attachid>
    <who name="Yuqiang Xian">yuqiang.xian</who>
    <bug_when>2010-11-24 17:58:47 -0800</bug_when>
    <thetext>Created attachment 74821
updated patch

Vitaly, thanks for the comments.

I agree with you. And here&apos;s the updated patch. Please help review it.
BTW, I also set the &quot;length&quot; property of CanvasPixelArray to be a pure V8 object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>313567</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-11-24 18:00:28 -0800</bug_when>
    <thetext>Attachment 74821 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;WebCore/ChangeLog&apos;, u&apos;WebCore/WebCore.gypi&apos;, u&apos;WebCore/bindings/scripts/CodeGeneratorV8.pm&apos;, u&apos;WebCore/bindings/v8/custom/V8CanvasPixelArrayCustom.cpp&apos;, u&apos;WebCore/bindings/v8/custom/V8ImageDataCustom.cpp&apos;, u&apos;WebCore/html/ImageData.idl&apos;, u&apos;WebCore/html/canvas/CanvasPixelArray.idl&apos;]&quot; exit_code: 1
WebCore/bindings/v8/custom/V8ImageDataCustom.cpp:32:  Found other header before a header this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
WebCore/bindings/v8/custom/V8ImageDataCustom.cpp:33:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Total errors found: 2 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>313572</commentid>
    <comment_count>5</comment_count>
      <attachid>74823</attachid>
    <who name="Yuqiang Xian">yuqiang.xian</who>
    <bug_when>2010-11-24 18:07:57 -0800</bug_when>
    <thetext>Created attachment 74823
updated patch

resolve the style issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>313684</commentid>
    <comment_count>6</comment_count>
    <who name="Vitaly Repeshko">vitalyr</who>
    <bug_when>2010-11-25 04:10:45 -0800</bug_when>
    <thetext>Looks good. A few nits:
o After &quot;Reviewed by&quot; line in the change log add a short one-line summary: &quot;[V8] Speed up data property access for ImageData.&quot;
o Update the rest of the change log description to emphasize the fact that pure JS properties are used.
o Comments in code should be formatted like sentences, starting with a capital letter.
o Typo: &quot;elimnating&quot; -&gt; &quot;eliminating&quot;.

After these are done you&apos;ll need a WebKit reviewer to set r+ (I can&apos;d to this yet). Pavel (cc&apos;ed) agreed to help.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>313688</commentid>
    <comment_count>7</comment_count>
      <attachid>74823</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-11-25 04:14:30 -0800</bug_when>
    <thetext>Comment on attachment 74823
updated patch

Rubber stamping so that you could land it once Vitaly&apos;s comments are addressed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>313849</commentid>
    <comment_count>8</comment_count>
      <attachid>74894</attachid>
    <who name="Yuqiang Xian">yuqiang.xian</who>
    <bug_when>2010-11-25 13:28:23 -0800</bug_when>
    <thetext>Created attachment 74894
updated patch

Thanks for the comments, Vitaly.

Here&apos;s the updated patch addressing your comments.

Thanks, -Yuqiang</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>313895</commentid>
    <comment_count>9</comment_count>
      <attachid>74894</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-11-25 20:58:06 -0800</bug_when>
    <thetext>Comment on attachment 74894
updated patch

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

&gt; WebCore/ChangeLog:13
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=49999

Nit: bug reference should follow the commit title, before the blank line.

[Title]
[bug link]
&lt;blank line&gt;
[Discription]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>314126</commentid>
    <comment_count>10</comment_count>
      <attachid>74823</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-11-27 06:38:04 -0800</bug_when>
    <thetext>Comment on attachment 74823
updated patch

Cleared Pavel Feldman&apos;s review+ from obsolete attachment 74823 so that this bug does not appear in http://webkit.org/pending-commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>314854</commentid>
    <comment_count>11</comment_count>
      <attachid>75103</attachid>
    <who name="Yuqiang Xian">yuqiang.xian</who>
    <bug_when>2010-11-29 21:55:31 -0800</bug_when>
    <thetext>Created attachment 75103
updated patch

Update the patch addressing Pavel&apos;s comment.

Thanks, -Yuqiang</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316054</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-12-02 02:38:21 -0800</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 75103:

http/tests/media/video-load-twice.html

Please file bugs against the tests.  These tests were authored by eric.carlson@apple.com and hclam@google.com.  The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316056</commentid>
    <comment_count>13</comment_count>
      <attachid>75103</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-12-02 02:40:23 -0800</bug_when>
    <thetext>Comment on attachment 75103
updated patch

Clearing flags on attachment: 75103

Committed r73119: &lt;http://trac.webkit.org/changeset/73119&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316057</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-12-02 02:40:29 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74714</attachid>
            <date>2010-11-23 18:26:50 -0800</date>
            <delta_ts>2010-11-24 17:58:47 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>imagedata.webkit.patch</filename>
            <type>text/plain</type>
            <size>5828</size>
            <attacher name="Yuqiang Xian">yuqiang.xian</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MjY0MykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjIgQEAKKzIwMTAtMTEtMjMgIFl1cWlhbmcgWGlhbiAgPHl1cWlhbmcueGlhbkBp
bnRlbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgV2UgY2FuIGNyZWF0ZSBhIG5vcm1hbCBWOCBvYmplY3Qgd2hpY2ggaGFzIGEgUGl4ZWxBcnJh
eSBhcyB0aGUgYmFja2luZyBzdG9yYWdlLCAKKyAgICAgICAgYW5kIHNldCB0aGUgImRhdGEiIHBy
b3BlcnR5IG9mIEltYWdlRGF0YSBvYmplY3QgdG8gaXQuIAorICAgICAgICBUaGlzIHdheSB3ZSBk
b24ndCBuZWVkIHRvIGNhbGwgdGhyb3VnaCB0aGUgQysrIGJpbmRpbmdzIGZvciBJbWFnZURhdGEg
ImRhdGEiIGFjY2Vzcy4gCisgICAgICAgIFRoaXMgZWxpbWluYXRlcyBiaWcgb3ZlcmhlYWQgaW4g
c3dpdGNoaW5nIGJldHdlZW4gSmF2YVNjcmlwdCBhbmQgbmF0aXZlIGNvbnRleHRzIGFuZAorICAg
ICAgICBwZXJmb3JtaW5nIG9iamVjdCBiaW5kaW5ncyB3aGVuIHRoZXJlJ3JlIGZyZXF1ZW50ICJk
YXRhIiBwcm9wZXJ0eSBhY2Nlc3NlcyBvZiBJbWFnZURhdGEuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00OTk5OQorCisgICAgICAgIE5vIG5ldyB0ZXN0
cy4gUmVseWluZyBvbiBleGlzdGluZyBDYW52YXMgdGVzdHMuCisKKyAgICAgICAgKiBXZWJDb3Jl
Lmd5cGk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG06Cisg
ICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW1hZ2VEYXRhQ3VzdG9tLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjp0b1Y4KToKKyAgICAgICAgKiBodG1sL0ltYWdlRGF0YS5pZGw6
CisKIDIwMTAtMTEtMjMgIENyaXMgTmVja2FyICA8Y2RuQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0JKHJldmlzaW9uIDcyNjQzKQorKysgV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQkod29ya2luZyBjb3B5KQpAQCAtMjUy
Nyw3ICsyNTI3LDcgQEAKICAgICAjIFdlIGRvbid0IGdlbmVyYXRlIGEgY3VzdG9tIGNvbnZlcnRl
ciAoYnV0IEpTQyBkb2VzKSBmb3IgdGhlIGZvbGxvd2luZzoKICAgICByZXR1cm4gMCBpZiAkaW50
ZXJmYWNlTmFtZSBlcSAiQWJzdHJhY3RXb3JrZXIiOwogICAgIHJldHVybiAwIGlmICRpbnRlcmZh
Y2VOYW1lIGVxICJDYW52YXNSZW5kZXJpbmdDb250ZXh0IjsKLSAgICByZXR1cm4gMCBpZiAkaW50
ZXJmYWNlTmFtZSBlcSAiSW1hZ2VEYXRhIjsKKyAgICByZXR1cm4gMSBpZiAkaW50ZXJmYWNlTmFt
ZSBlcSAiSW1hZ2VEYXRhIjsKICAgICByZXR1cm4gMCBpZiAkaW50ZXJmYWNlTmFtZSBlcSAiU1ZH
RWxlbWVudEluc3RhbmNlIjsKIAogICAgICMgRm9yIGV2ZXJ5dGhpbmcgZWxzZSwgZG8gd2hhdCBK
U0MgZG9lcy4KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW1hZ2VEYXRhQ3Vz
dG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEltYWdl
RGF0YUN1c3RvbS5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEltYWdlRGF0YUN1c3RvbS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTkgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICog
ZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVjhJbWFnZURhdGEuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChJbWFnZURhdGEqIGltcGwpCit7
CisgICAgaWYgKCFpbXBsKQorICAgICAgICByZXR1cm4gdjg6Ok51bGwoKTsKKyAgICB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBWOEltYWdlRGF0YTo6d3JhcChpbXBsKTsKKyAgICBp
ZiAoIXdyYXBwZXIuSXNFbXB0eSgpKSB7CisgICAgICAgIC8vIGNyZWF0ZSBhIFY4IENhbnZhc1Bp
eGVsQXJyYXkgb2JqZWN0LgorICAgICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdFRlbXBsYXRlPiBj
cGEgPSB2ODo6T2JqZWN0VGVtcGxhdGU6Ok5ldygpOworICAgICAgICB2ODo6TG9jYWw8djg6Ok9i
amVjdD4gY3BhT2JqID0gU2FmZUFsbG9jYXRpb246Om5ld0luc3RhbmNlKGNwYSk7CisgICAgICAg
IGNwYU9iai0+U2V0SW5kZXhlZFByb3BlcnRpZXNUb1BpeGVsRGF0YShpbXBsLT5kYXRhKCktPmRh
dGEoKS0+ZGF0YSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW1wbC0+ZGF0YSgpLT5sZW5ndGgoKSk7CisgICAgICAgIGNwYU9iai0+U2V0KHY4OjpT
dHJpbmc6Ok5ldygibGVuZ3RoIiksCisgICAgICAgICAgICAgICAgICAgIHY4OjpJbnRlZ2VyOjpO
ZXcoaW1wbC0+ZGF0YSgpLT5sZW5ndGgoKSksCisgICAgICAgICAgICAgICAgICAgIHY4OjpSZWFk
T25seSk7CisgICAgICAgIC8vIHNldCB0aGUgZGF0YSBwcm9wZXJ0eSBvZiB0aGUgSW1hZ2VEYXRh
IG9iamVjdCB0bworICAgICAgICAvLyB0aGUgY3JlYXRlZCB2OCBvYmplY3QsIGVsaW1uYXRpbmcg
dGhlIG5lZWQgdG8KKyAgICAgICAgLy8gYmluZCB0aGUgQysrIENhbnZhc1BpeGVsQXJyYXkgb2Jq
ZWN0LgorICAgICAgICB3cmFwcGVyLT5TZXQodjg6OlN0cmluZzo6TmV3KCJkYXRhIiksIGNwYU9i
aiwgdjg6OlJlYWRPbmx5KTsKKyAgICB9CisKKyAgICByZXR1cm4gd3JhcHBlcjsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDcyNjQzKQorKysgV2ViQ29yZS9X
ZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTc0NSw2ICs3NDUsNyBAQAogICAgICAgICAg
ICAgJ2JpbmRpbmdzL3Y4L0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwJywKICAgICAgICAgICAgICdi
aW5kaW5ncy92OC9JREJCaW5kaW5nVXRpbGl0aWVzLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOENhbnZhc1BpeGVsQXJyYXlDdXN0b20uY3BwJywKKyAgICAgICAgICAgICdi
aW5kaW5ncy92OC9jdXN0b20vVjhJbWFnZURhdGFDdXN0b20uY3BwJywKICAgICAgICAgICAgICdi
aW5kaW5ncy92OC9jdXN0b20vVjhBcnJheUJ1ZmZlclZpZXdDdXN0b20uaCcsCiAgICAgICAgICAg
ICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXJyYXlCdWZmZXJDdXN0b20uY3BwJywKICAgICAgICAg
ICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhJbnQ4QXJyYXlDdXN0b20uY3BwJywKSW5kZXg6IFdl
YkNvcmUvaHRtbC9JbWFnZURhdGEuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9JbWFn
ZURhdGEuaWRsCShyZXZpc2lvbiA3MjY0MykKKysrIFdlYkNvcmUvaHRtbC9JbWFnZURhdGEuaWRs
CSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBACiAgICAgXSBJbWFnZURhdGEgewogICAg
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyB3aWR0aDsKICAgICAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIGxvbmcgaGVpZ2h0OwotI2lmICFkZWZpbmVkKExBTkdVQUdFX0pBVkFTQ1JJUFQpIHx8
ICFMQU5HVUFHRV9KQVZBU0NSSVBUIHx8IGRlZmluZWQoVjhfQklORElORykgJiYgVjhfQklORElO
RworI2lmICFkZWZpbmVkKExBTkdVQUdFX0pBVkFTQ1JJUFQpIHx8ICFMQU5HVUFHRV9KQVZBU0NS
SVBUCiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBDYW52YXNQaXhlbEFycmF5IGRhdGE7CiAj
ZW5kaWYKICAgICB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74821</attachid>
            <date>2010-11-24 17:58:47 -0800</date>
            <delta_ts>2010-11-24 18:07:57 -0800</delta_ts>
            <desc>updated patch</desc>
            <filename>imagedata.webkit.new.patch</filename>
            <type>text/plain</type>
            <size>6879</size>
            <attacher name="Yuqiang Xian">yuqiang.xian</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MjcwOSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjUgQEAKKzIwMTAtMTEtMjQgIFl1cWlhbmcgWGlhbiAgPHl1cWlhbmcueGlhbkBp
bnRlbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgV2UgY2FuIGNyZWF0ZSBhIG5vcm1hbCBWOCBvYmplY3Qgd2hpY2ggaGFzIGEgUGl4ZWxBcnJh
eSBhcyB0aGUgYmFja2luZyBzdG9yYWdlLCAKKyAgICAgICAgYW5kIHNldCB0aGUgImRhdGEiIHBy
b3BlcnR5IG9mIEltYWdlRGF0YSBvYmplY3QgdG8gaXQuIAorICAgICAgICBUaGlzIHdheSB3ZSBk
b24ndCBuZWVkIHRvIGNhbGwgdGhyb3VnaCB0aGUgQysrIGJpbmRpbmdzIGZvciBJbWFnZURhdGEg
ImRhdGEiIGFjY2Vzcy4gCisgICAgICAgIFRoaXMgZWxpbWluYXRlcyBiaWcgb3ZlcmhlYWQgaW4g
c3dpdGNoaW5nIGJldHdlZW4gSmF2YVNjcmlwdCBhbmQgbmF0aXZlIGNvbnRleHRzIGFuZAorICAg
ICAgICBwZXJmb3JtaW5nIG9iamVjdCBiaW5kaW5ncyB3aGVuIHRoZXJlJ3JlIGZyZXF1ZW50ICJk
YXRhIiBwcm9wZXJ0eSBhY2Nlc3NlcyBvZiBJbWFnZURhdGEuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00OTk5OQorCisgICAgICAgIE5vIG5ldyB0ZXN0
cy4gUmVseWluZyBvbiBleGlzdGluZyBDYW52YXMgdGVzdHMuCisKKyAgICAgICAgKiBXZWJDb3Jl
Lmd5cGk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG06Cisg
ICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q2FudmFzUGl4ZWxBcnJheUN1c3RvbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjp0b1Y4KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20v
VjhJbWFnZURhdGFDdXN0b20uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnRvVjgpOgor
ICAgICAgICAqIGh0bWwvSW1hZ2VEYXRhLmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52
YXNQaXhlbEFycmF5LmlkbDoKKwogMjAxMC0xMS0yNCAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUnVzc2VsbC4KSW5k
ZXg6IFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQkocmV2aXNp
b24gNzI3MDkpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBt
CSh3b3JraW5nIGNvcHkpCkBAIC0yNTI3LDcgKzI1MjcsNiBAQAogICAgICMgV2UgZG9uJ3QgZ2Vu
ZXJhdGUgYSBjdXN0b20gY29udmVydGVyIChidXQgSlNDIGRvZXMpIGZvciB0aGUgZm9sbG93aW5n
OgogICAgIHJldHVybiAwIGlmICRpbnRlcmZhY2VOYW1lIGVxICJBYnN0cmFjdFdvcmtlciI7CiAg
ICAgcmV0dXJuIDAgaWYgJGludGVyZmFjZU5hbWUgZXEgIkNhbnZhc1JlbmRlcmluZ0NvbnRleHQi
OwotICAgIHJldHVybiAwIGlmICRpbnRlcmZhY2VOYW1lIGVxICJJbWFnZURhdGEiOwogICAgIHJl
dHVybiAwIGlmICRpbnRlcmZhY2VOYW1lIGVxICJTVkdFbGVtZW50SW5zdGFuY2UiOwogCiAgICAg
IyBGb3IgZXZlcnl0aGluZyBlbHNlLCBkbyB3aGF0IEpTQyBkb2VzLgpJbmRleDogV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhDYW52YXNQaXhlbEFycmF5Q3VzdG9tLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENhbnZhc1BpeGVsQXJyYXlDdXN0b20u
Y3BwCShyZXZpc2lvbiA3MjcwOSkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q2Fu
dmFzUGl4ZWxBcnJheUN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDggKzM4LDEyIEBA
CiAgICAgaWYgKCFpbXBsKQogICAgICAgICByZXR1cm4gdjg6Ok51bGwoKTsKICAgICB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBWOENhbnZhc1BpeGVsQXJyYXk6OndyYXAoaW1wbCk7
Ci0gICAgaWYgKCF3cmFwcGVyLklzRW1wdHkoKSkKKyAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgp
KSB7CiAgICAgICAgIHdyYXBwZXItPlNldEluZGV4ZWRQcm9wZXJ0aWVzVG9QaXhlbERhdGEoaW1w
bC0+ZGF0YSgpLT5kYXRhKCksIGltcGwtPmxlbmd0aCgpKTsKKyAgICAgICAgd3JhcHBlci0+U2V0
KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgibGVuZ3RoIiksCisgICAgICAgICAgICAgICAgICAgICB2
ODo6SW50ZWdlcjo6TmV3KGltcGwtPmxlbmd0aCgpKSwKKyAgICAgICAgICAgICAgICAgICAgIHY4
OjpSZWFkT25seSk7CisgICAgfQogICAgIHJldHVybiB3cmFwcGVyOwogfQogCkluZGV4OiBXZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEltYWdlRGF0YUN1c3RvbS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbWFnZURhdGFDdXN0b20uY3BwCShyZXZp
c2lvbiAwKQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbWFnZURhdGFDdXN0b20u
Y3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
KyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlY4Q2FudmFzUGl4ZWxBcnJheS5oIgorI2luY2x1ZGUgIlY4SW1hZ2VEYXRhLmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKwordjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoSW1hZ2VE
YXRhKiBpbXBsKQoreworICAgIGlmICghaW1wbCkKKyAgICAgICAgcmV0dXJuIHY4OjpOdWxsKCk7
CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gVjhJbWFnZURhdGE6OndyYXAo
aW1wbCk7CisgICAgaWYgKCF3cmFwcGVyLklzRW1wdHkoKSkgeworICAgICAgICAvLyBjcmVhdGUg
YSBWOCBDYW52YXNQaXhlbEFycmF5IG9iamVjdC4KKyAgICAgICAgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IHBpeGVsQXJyYXkgPSB0b1Y4KGltcGwtPmRhdGEoKSk7CisgICAgICAgIC8vIHNldCB0aGUg
ImRhdGEiIHByb3BlcnR5IG9mIHRoZSBJbWFnZURhdGEgb2JqZWN0IHRvCisgICAgICAgIC8vIHRo
ZSBjcmVhdGVkIHY4IG9iamVjdCwgZWxpbW5hdGluZyB0aGUgQysrIGNhbGxiYWNrCisgICAgICAg
IC8vIHdoZW4gYWNjZXNzaW5nIHRoZSAiZGF0YSIgcHJvcGVydHkuCisgICAgICAgIGlmICghcGl4
ZWxBcnJheS5Jc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIHdyYXBwZXItPlNldCh2ODo6U3RyaW5n
OjpOZXdTeW1ib2woImRhdGEiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBwaXhlbEFycmF5
LAorICAgICAgICAgICAgICAgICAgICAgICAgIHY4OjpSZWFkT25seSk7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICByZXR1cm4gd3JhcHBlcjsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkJKHJldmlzaW9uIDcyNzA5KQorKysgV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcg
Y29weSkKQEAgLTc0NCw2ICs3NDQsNyBAQAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L0NoaWxk
VGhyZWFkRE9NRGF0YS5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9JREJCaW5kaW5nVXRp
bGl0aWVzLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvSURCQmluZGluZ1V0aWxpdGll
cy5oJywKKyAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhJbWFnZURhdGFDdXN0b20u
Y3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhDYW52YXNQaXhlbEFycmF5
Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXJyYXlCdWZm
ZXJWaWV3Q3VzdG9tLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEFycmF5
QnVmZmVyQ3VzdG9tLmNwcCcsCkluZGV4OiBXZWJDb3JlL2h0bWwvSW1hZ2VEYXRhLmlkbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSW1hZ2VEYXRhLmlkbAkocmV2aXNpb24gNzI3MDkpCisr
KyBXZWJDb3JlL2h0bWwvSW1hZ2VEYXRhLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMs
NyBAQAogICAgIF0gSW1hZ2VEYXRhIHsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGxvbmcg
d2lkdGg7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nIGhlaWdodDsKLSNpZiAhZGVm
aW5lZChMQU5HVUFHRV9KQVZBU0NSSVBUKSB8fCAhTEFOR1VBR0VfSkFWQVNDUklQVCB8fCBkZWZp
bmVkKFY4X0JJTkRJTkcpICYmIFY4X0JJTkRJTkcKKyNpZiAhZGVmaW5lZChMQU5HVUFHRV9KQVZB
U0NSSVBUKSB8fCAhTEFOR1VBR0VfSkFWQVNDUklQVAogICAgICAgICByZWFkb25seSBhdHRyaWJ1
dGUgQ2FudmFzUGl4ZWxBcnJheSBkYXRhOwogI2VuZGlmCiAgICAgfTsKSW5kZXg6IFdlYkNvcmUv
aHRtbC9jYW52YXMvQ2FudmFzUGl4ZWxBcnJheS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNQaXhlbEFycmF5LmlkbAkocmV2aXNpb24gNzI3MDkpCisrKyBXZWJD
b3JlL2h0bWwvY2FudmFzL0NhbnZhc1BpeGVsQXJyYXkuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0z
NCw3ICszNCw5IEBACiAgICAgICAgIEhhc051bWVyaWNJbmRleEdldHRlciwKICAgICAgICAgSGFz
Q3VzdG9tSW5kZXhTZXR0ZXIKICAgICBdIENhbnZhc1BpeGVsQXJyYXkgeworI2lmICFkZWZpbmVk
KFY4X0JJTkRJTkcpIHx8ICFWOF9CSU5ESU5HCiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBs
b25nIGxlbmd0aDsKKyNlbmRpZgogICAgIH07CiAjZW5kaWYKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74823</attachid>
            <date>2010-11-24 18:07:57 -0800</date>
            <delta_ts>2010-11-27 06:38:04 -0800</delta_ts>
            <desc>updated patch</desc>
            <filename>imagedata.webkit.new.patch</filename>
            <type>text/plain</type>
            <size>6881</size>
            <attacher name="Yuqiang Xian">yuqiang.xian</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MjcwOSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjUgQEAKKzIwMTAtMTEtMjQgIFl1cWlhbmcgWGlhbiAgPHl1cWlhbmcueGlhbkBp
bnRlbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgV2UgY2FuIGNyZWF0ZSBhIG5vcm1hbCBWOCBvYmplY3Qgd2hpY2ggaGFzIGEgUGl4ZWxBcnJh
eSBhcyB0aGUgYmFja2luZyBzdG9yYWdlLCAKKyAgICAgICAgYW5kIHNldCB0aGUgImRhdGEiIHBy
b3BlcnR5IG9mIEltYWdlRGF0YSBvYmplY3QgdG8gaXQuIAorICAgICAgICBUaGlzIHdheSB3ZSBk
b24ndCBuZWVkIHRvIGNhbGwgdGhyb3VnaCB0aGUgQysrIGJpbmRpbmdzIGZvciBJbWFnZURhdGEg
ImRhdGEiIGFjY2Vzcy4gCisgICAgICAgIFRoaXMgZWxpbWluYXRlcyBiaWcgb3ZlcmhlYWQgaW4g
c3dpdGNoaW5nIGJldHdlZW4gSmF2YVNjcmlwdCBhbmQgbmF0aXZlIGNvbnRleHRzIGFuZAorICAg
ICAgICBwZXJmb3JtaW5nIG9iamVjdCBiaW5kaW5ncyB3aGVuIHRoZXJlJ3JlIGZyZXF1ZW50ICJk
YXRhIiBwcm9wZXJ0eSBhY2Nlc3NlcyBvZiBJbWFnZURhdGEuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00OTk5OQorCisgICAgICAgIE5vIG5ldyB0ZXN0
cy4gUmVseWluZyBvbiBleGlzdGluZyBDYW52YXMgdGVzdHMuCisKKyAgICAgICAgKiBXZWJDb3Jl
Lmd5cGk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG06Cisg
ICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q2FudmFzUGl4ZWxBcnJheUN1c3RvbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjp0b1Y4KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20v
VjhJbWFnZURhdGFDdXN0b20uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnRvVjgpOgor
ICAgICAgICAqIGh0bWwvSW1hZ2VEYXRhLmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52
YXNQaXhlbEFycmF5LmlkbDoKKwogMjAxMC0xMS0yNCAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUnVzc2VsbC4KSW5k
ZXg6IFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQkocmV2aXNp
b24gNzI3MDkpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBt
CSh3b3JraW5nIGNvcHkpCkBAIC0yNTI3LDcgKzI1MjcsNiBAQAogICAgICMgV2UgZG9uJ3QgZ2Vu
ZXJhdGUgYSBjdXN0b20gY29udmVydGVyIChidXQgSlNDIGRvZXMpIGZvciB0aGUgZm9sbG93aW5n
OgogICAgIHJldHVybiAwIGlmICRpbnRlcmZhY2VOYW1lIGVxICJBYnN0cmFjdFdvcmtlciI7CiAg
ICAgcmV0dXJuIDAgaWYgJGludGVyZmFjZU5hbWUgZXEgIkNhbnZhc1JlbmRlcmluZ0NvbnRleHQi
OwotICAgIHJldHVybiAwIGlmICRpbnRlcmZhY2VOYW1lIGVxICJJbWFnZURhdGEiOwogICAgIHJl
dHVybiAwIGlmICRpbnRlcmZhY2VOYW1lIGVxICJTVkdFbGVtZW50SW5zdGFuY2UiOwogCiAgICAg
IyBGb3IgZXZlcnl0aGluZyBlbHNlLCBkbyB3aGF0IEpTQyBkb2VzLgpJbmRleDogV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhDYW52YXNQaXhlbEFycmF5Q3VzdG9tLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENhbnZhc1BpeGVsQXJyYXlDdXN0b20u
Y3BwCShyZXZpc2lvbiA3MjcwOSkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q2Fu
dmFzUGl4ZWxBcnJheUN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDggKzM4LDEyIEBA
CiAgICAgaWYgKCFpbXBsKQogICAgICAgICByZXR1cm4gdjg6Ok51bGwoKTsKICAgICB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBWOENhbnZhc1BpeGVsQXJyYXk6OndyYXAoaW1wbCk7
Ci0gICAgaWYgKCF3cmFwcGVyLklzRW1wdHkoKSkKKyAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgp
KSB7CiAgICAgICAgIHdyYXBwZXItPlNldEluZGV4ZWRQcm9wZXJ0aWVzVG9QaXhlbERhdGEoaW1w
bC0+ZGF0YSgpLT5kYXRhKCksIGltcGwtPmxlbmd0aCgpKTsKKyAgICAgICAgd3JhcHBlci0+U2V0
KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgibGVuZ3RoIiksCisgICAgICAgICAgICAgICAgICAgICB2
ODo6SW50ZWdlcjo6TmV3KGltcGwtPmxlbmd0aCgpKSwKKyAgICAgICAgICAgICAgICAgICAgIHY4
OjpSZWFkT25seSk7CisgICAgfQogICAgIHJldHVybiB3cmFwcGVyOwogfQogCkluZGV4OiBXZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEltYWdlRGF0YUN1c3RvbS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbWFnZURhdGFDdXN0b20uY3BwCShyZXZp
c2lvbiAwKQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbWFnZURhdGFDdXN0b20u
Y3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
KyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlY4SW1hZ2VEYXRhLmgiCisKKyNpbmNsdWRlICJWOENhbnZhc1BpeGVsQXJyYXkuaCIK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChJbWFn
ZURhdGEqIGltcGwpCit7CisgICAgaWYgKCFpbXBsKQorICAgICAgICByZXR1cm4gdjg6Ok51bGwo
KTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBWOEltYWdlRGF0YTo6d3Jh
cChpbXBsKTsKKyAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKSB7CisgICAgICAgIC8vIGNyZWF0
ZSBhIFY4IENhbnZhc1BpeGVsQXJyYXkgb2JqZWN0LgorICAgICAgICB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gcGl4ZWxBcnJheSA9IHRvVjgoaW1wbC0+ZGF0YSgpKTsKKyAgICAgICAgLy8gc2V0IHRo
ZSAiZGF0YSIgcHJvcGVydHkgb2YgdGhlIEltYWdlRGF0YSBvYmplY3QgdG8KKyAgICAgICAgLy8g
dGhlIGNyZWF0ZWQgdjggb2JqZWN0LCBlbGltbmF0aW5nIHRoZSBDKysgY2FsbGJhY2sKKyAgICAg
ICAgLy8gd2hlbiBhY2Nlc3NpbmcgdGhlICJkYXRhIiBwcm9wZXJ0eS4KKyAgICAgICAgaWYgKCFw
aXhlbEFycmF5LklzRW1wdHkoKSkgeworICAgICAgICAgICAgd3JhcHBlci0+U2V0KHY4OjpTdHJp
bmc6Ok5ld1N5bWJvbCgiZGF0YSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHBpeGVsQXJy
YXksCisgICAgICAgICAgICAgICAgICAgICAgICAgdjg6OlJlYWRPbmx5KTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIHJldHVybiB3cmFwcGVyOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CkluZGV4OiBXZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNv
cmUuZ3lwaQkocmV2aXNpb24gNzI3MDkpCisrKyBXZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2lu
ZyBjb3B5KQpAQCAtNzQ0LDYgKzc0NCw3IEBACiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvQ2hp
bGRUaHJlYWRET01EYXRhLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L0lEQkJpbmRpbmdV
dGlsaXRpZXMuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9JREJCaW5kaW5nVXRpbGl0
aWVzLmgnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEltYWdlRGF0YUN1c3Rv
bS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENhbnZhc1BpeGVsQXJy
YXlDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhBcnJheUJ1
ZmZlclZpZXdDdXN0b20uaCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXJy
YXlCdWZmZXJDdXN0b20uY3BwJywKSW5kZXg6IFdlYkNvcmUvaHRtbC9JbWFnZURhdGEuaWRsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9JbWFnZURhdGEuaWRsCShyZXZpc2lvbiA3MjcwOSkK
KysrIFdlYkNvcmUvaHRtbC9JbWFnZURhdGEuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICsz
Myw3IEBACiAgICAgXSBJbWFnZURhdGEgewogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9u
ZyB3aWR0aDsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGxvbmcgaGVpZ2h0OwotI2lmICFk
ZWZpbmVkKExBTkdVQUdFX0pBVkFTQ1JJUFQpIHx8ICFMQU5HVUFHRV9KQVZBU0NSSVBUIHx8IGRl
ZmluZWQoVjhfQklORElORykgJiYgVjhfQklORElORworI2lmICFkZWZpbmVkKExBTkdVQUdFX0pB
VkFTQ1JJUFQpIHx8ICFMQU5HVUFHRV9KQVZBU0NSSVBUCiAgICAgICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBDYW52YXNQaXhlbEFycmF5IGRhdGE7CiAjZW5kaWYKICAgICB9OwpJbmRleDogV2ViQ29y
ZS9odG1sL2NhbnZhcy9DYW52YXNQaXhlbEFycmF5LmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2h0bWwvY2FudmFzL0NhbnZhc1BpeGVsQXJyYXkuaWRsCShyZXZpc2lvbiA3MjcwOSkKKysrIFdl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUGl4ZWxBcnJheS5pZGwJKHdvcmtpbmcgY29weSkKQEAg
LTM0LDcgKzM0LDkgQEAKICAgICAgICAgSGFzTnVtZXJpY0luZGV4R2V0dGVyLAogICAgICAgICBI
YXNDdXN0b21JbmRleFNldHRlcgogICAgIF0gQ2FudmFzUGl4ZWxBcnJheSB7CisjaWYgIWRlZmlu
ZWQoVjhfQklORElORykgfHwgIVY4X0JJTkRJTkcKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IGxvbmcgbGVuZ3RoOworI2VuZGlmCiAgICAgfTsKICNlbmRpZgogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74894</attachid>
            <date>2010-11-25 13:28:23 -0800</date>
            <delta_ts>2010-11-29 21:55:31 -0800</delta_ts>
            <desc>updated patch</desc>
            <filename>imagedata.webkit.r2.patch</filename>
            <type>text/plain</type>
            <size>6911</size>
            <attacher name="Yuqiang Xian">yuqiang.xian</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3Mjc0NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjggQEAKKzIwMTAtMTEtMjUgIFl1cWlhbmcgWGlhbiAgPHl1cWlhbmcueGlhbkBp
bnRlbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgW1Y4XSBTcGVlZCB1cCBkYXRhIHByb3BlcnR5IGFjY2VzcyBmb3IgSW1hZ2VEYXRhLgorCisg
ICAgICAgIFdlIGNyZWF0ZSBhIG5vcm1hbCBWOCBvYmplY3Qgd2hpY2ggaGFzIGEgUGl4ZWxBcnJh
eSBhcyB0aGUgYmFja2luZyBzdG9yYWdlLAorICAgICAgICBhbmQgc2V0IHRoZSAiZGF0YSIgcHJv
cGVydHkgb2YgdGhlIEltYWdlRGF0YSBvYmplY3QgdG8gaXQuIAorICAgICAgICBUaGlzIHdheSAi
ZGF0YSIgYmVjb21lcyBhIHB1cmUgSlMgcHJvcGVydHkgYW5kIHdlIGRvbid0IG5lZWQgdG8gY2Fs
bCB0aHJvdWdoCisgICAgICAgIHRoZSBDKysgYmluZGluZ3MgZm9yIEltYWdlRGF0YSAiZGF0YSIg
YWNjZXNzLiAKKyAgICAgICAgVGhpcyBlbGltaW5hdGVzIGJpZyBvdmVyaGVhZCBpbiBzd2l0Y2hp
bmcgYmV0d2VlbiBKYXZhU2NyaXB0IGFuZAorICAgICAgICBuYXRpdmUgY29udGV4dHMgYW5kIHBl
cmZvcm1pbmcgb2JqZWN0IGJpbmRpbmdzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NDk5OTkKKworICAgICAgICBObyBuZXcgdGVzdHMuIFJlbHlpbmcg
b24gZXhpc3RpbmcgQ2FudmFzIHRlc3RzLgorCisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtOgorICAgICAgICAqIGJp
bmRpbmdzL3Y4L2N1c3RvbS9WOENhbnZhc1BpeGVsQXJyYXlDdXN0b20uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6dG9WOCk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW1hZ2VEYXRh
Q3VzdG9tLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjp0b1Y4KToKKyAgICAgICAgKiBo
dG1sL0ltYWdlRGF0YS5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUGl4ZWxBcnJh
eS5pZGw6CisKIDIwMTAtMTEtMjUgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IERhbiBCZXJuc3RlaW4uCkluZGV4OiBXZWJDb3JlL1dlYkNv
cmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24gNzI3
NDYpCisrKyBXZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtNzQ3LDYgKzc0
Nyw3IEBACiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvSURCQmluZGluZ1V0aWxpdGllcy5oJywK
ICAgICAgICAgICAgICdiaW5kaW5ncy92OC9PcHRpb25zT2JqZWN0LmNwcCcsCiAgICAgICAgICAg
ICAnYmluZGluZ3MvdjgvT3B0aW9uc09iamVjdC5oJywKKyAgICAgICAgICAgICdiaW5kaW5ncy92
OC9jdXN0b20vVjhJbWFnZURhdGFDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92
OC9jdXN0b20vVjhDYW52YXNQaXhlbEFycmF5Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4QXJyYXlCdWZmZXJWaWV3Q3VzdG9tLmgnLAogICAgICAgICAgICAg
J2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEFycmF5QnVmZmVyQ3VzdG9tLmNwcCcsCkluZGV4OiBXZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0JKHJldmlzaW9uIDcyNzQ2
KQorKysgV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQkod29ya2lu
ZyBjb3B5KQpAQCAtMjUyNyw3ICsyNTI3LDYgQEAKICAgICAjIFdlIGRvbid0IGdlbmVyYXRlIGEg
Y3VzdG9tIGNvbnZlcnRlciAoYnV0IEpTQyBkb2VzKSBmb3IgdGhlIGZvbGxvd2luZzoKICAgICBy
ZXR1cm4gMCBpZiAkaW50ZXJmYWNlTmFtZSBlcSAiQWJzdHJhY3RXb3JrZXIiOwogICAgIHJldHVy
biAwIGlmICRpbnRlcmZhY2VOYW1lIGVxICJDYW52YXNSZW5kZXJpbmdDb250ZXh0IjsKLSAgICBy
ZXR1cm4gMCBpZiAkaW50ZXJmYWNlTmFtZSBlcSAiSW1hZ2VEYXRhIjsKICAgICByZXR1cm4gMCBp
ZiAkaW50ZXJmYWNlTmFtZSBlcSAiU1ZHRWxlbWVudEluc3RhbmNlIjsKIAogICAgICMgRm9yIGV2
ZXJ5dGhpbmcgZWxzZSwgZG8gd2hhdCBKU0MgZG9lcy4KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4Q2FudmFzUGl4ZWxBcnJheUN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDYW52YXNQaXhlbEFycmF5Q3VzdG9tLmNwcAkocmV2
aXNpb24gNzI3NDYpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENhbnZhc1BpeGVs
QXJyYXlDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw4ICszOCwxMiBAQAogICAgIGlm
ICghaW1wbCkKICAgICAgICAgcmV0dXJuIHY4OjpOdWxsKCk7CiAgICAgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiB3cmFwcGVyID0gVjhDYW52YXNQaXhlbEFycmF5Ojp3cmFwKGltcGwpOwotICAgIGlm
ICghd3JhcHBlci5Jc0VtcHR5KCkpCisgICAgaWYgKCF3cmFwcGVyLklzRW1wdHkoKSkgewogICAg
ICAgICB3cmFwcGVyLT5TZXRJbmRleGVkUHJvcGVydGllc1RvUGl4ZWxEYXRhKGltcGwtPmRhdGEo
KS0+ZGF0YSgpLCBpbXBsLT5sZW5ndGgoKSk7CisgICAgICAgIHdyYXBwZXItPlNldCh2ODo6U3Ry
aW5nOjpOZXdTeW1ib2woImxlbmd0aCIpLAorICAgICAgICAgICAgICAgICAgICAgdjg6OkludGVn
ZXI6Ok5ldyhpbXBsLT5sZW5ndGgoKSksCisgICAgICAgICAgICAgICAgICAgICB2ODo6UmVhZE9u
bHkpOworICAgIH0KICAgICByZXR1cm4gd3JhcHBlcjsKIH0KIApJbmRleDogV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhJbWFnZURhdGFDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW1hZ2VEYXRhQ3VzdG9tLmNwcAkocmV2aXNpb24gMCkK
KysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW1hZ2VEYXRhQ3VzdG9tLmNwcAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisg
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJW
OEltYWdlRGF0YS5oIgorCisjaW5jbHVkZSAiVjhDYW52YXNQaXhlbEFycmF5LmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKwordjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoSW1hZ2VEYXRhKiBp
bXBsKQoreworICAgIGlmICghaW1wbCkKKyAgICAgICAgcmV0dXJuIHY4OjpOdWxsKCk7CisgICAg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gVjhJbWFnZURhdGE6OndyYXAoaW1wbCk7
CisgICAgaWYgKCF3cmFwcGVyLklzRW1wdHkoKSkgeworICAgICAgICAvLyBDcmVhdGUgYSBWOCBD
YW52YXNQaXhlbEFycmF5IG9iamVjdC4KKyAgICAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHBp
eGVsQXJyYXkgPSB0b1Y4KGltcGwtPmRhdGEoKSk7CisgICAgICAgIC8vIFNldCB0aGUgImRhdGEi
IHByb3BlcnR5IG9mIHRoZSBJbWFnZURhdGEgb2JqZWN0IHRvCisgICAgICAgIC8vIHRoZSBjcmVh
dGVkIHY4IG9iamVjdCwgZWxpbWluYXRpbmcgdGhlIEMrKyBjYWxsYmFjaworICAgICAgICAvLyB3
aGVuIGFjY2Vzc2luZyB0aGUgImRhdGEiIHByb3BlcnR5LgorICAgICAgICBpZiAoIXBpeGVsQXJy
YXkuSXNFbXB0eSgpKSB7CisgICAgICAgICAgICB3cmFwcGVyLT5TZXQodjg6OlN0cmluZzo6TmV3
U3ltYm9sKCJkYXRhIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgcGl4ZWxBcnJheSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICB2ODo6UmVhZE9ubHkpOworICAgICAgICB9CisgICAgfQor
CisgICAgcmV0dXJuIHdyYXBwZXI7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6
IFdlYkNvcmUvaHRtbC9JbWFnZURhdGEuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9J
bWFnZURhdGEuaWRsCShyZXZpc2lvbiA3Mjc0NikKKysrIFdlYkNvcmUvaHRtbC9JbWFnZURhdGEu
aWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBACiAgICAgXSBJbWFnZURhdGEgewog
ICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyB3aWR0aDsKICAgICAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIGxvbmcgaGVpZ2h0OwotI2lmICFkZWZpbmVkKExBTkdVQUdFX0pBVkFTQ1JJUFQp
IHx8ICFMQU5HVUFHRV9KQVZBU0NSSVBUIHx8IGRlZmluZWQoVjhfQklORElORykgJiYgVjhfQklO
RElORworI2lmICFkZWZpbmVkKExBTkdVQUdFX0pBVkFTQ1JJUFQpIHx8ICFMQU5HVUFHRV9KQVZB
U0NSSVBUCiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBDYW52YXNQaXhlbEFycmF5IGRhdGE7
CiAjZW5kaWYKICAgICB9OwpJbmRleDogV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNQaXhlbEFy
cmF5LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1BpeGVsQXJy
YXkuaWRsCShyZXZpc2lvbiA3Mjc0NikKKysrIFdlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUGl4
ZWxBcnJheS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDkgQEAKICAgICAgICAgSGFz
TnVtZXJpY0luZGV4R2V0dGVyLAogICAgICAgICBIYXNDdXN0b21JbmRleFNldHRlcgogICAgIF0g
Q2FudmFzUGl4ZWxBcnJheSB7CisjaWYgIWRlZmluZWQoVjhfQklORElORykgfHwgIVY4X0JJTkRJ
TkcKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGxvbmcgbGVuZ3RoOworI2VuZGlmCiAgICAg
fTsKICNlbmRpZgogfQo=
</data>
<flag name="review"
          id="65604"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75103</attachid>
            <date>2010-11-29 21:55:31 -0800</date>
            <delta_ts>2010-12-02 02:40:23 -0800</delta_ts>
            <desc>updated patch</desc>
            <filename>imagedata.webkit.1130.patch</filename>
            <type>text/plain</type>
            <size>6907</size>
            <attacher name="Yuqiang Xian">yuqiang.xian</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3Mjg4MikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjggQEAKKzIwMTAtMTEtMjkgIFl1cWlhbmcgWGlhbiAgPHl1cWlhbmcueGlhbkBp
bnRlbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgW1Y4XSBTcGVlZCB1cCBkYXRhIHByb3BlcnR5IGFjY2VzcyBmb3IgSW1hZ2VEYXRhLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDk5OTkKKworICAg
ICAgICBXZSBjcmVhdGUgYSBub3JtYWwgVjggb2JqZWN0IHdoaWNoIGhhcyBhIFBpeGVsQXJyYXkg
YXMgdGhlIGJhY2tpbmcgc3RvcmFnZSwKKyAgICAgICAgYW5kIHNldCB0aGUgImRhdGEiIHByb3Bl
cnR5IG9mIHRoZSBJbWFnZURhdGEgb2JqZWN0IHRvIGl0LiAKKyAgICAgICAgVGhpcyB3YXkgImRh
dGEiIGJlY29tZXMgYSBwdXJlIEpTIHByb3BlcnR5IGFuZCB3ZSBkb24ndCBuZWVkIHRvIGNhbGwg
dGhyb3VnaAorICAgICAgICB0aGUgQysrIGJpbmRpbmdzIGZvciBJbWFnZURhdGEgImRhdGEiIGFj
Y2Vzcy4gCisgICAgICAgIFRoaXMgZWxpbWluYXRlcyBiaWcgb3ZlcmhlYWQgaW4gc3dpdGNoaW5n
IGJldHdlZW4gSmF2YVNjcmlwdCBhbmQgbmF0aXZlCisgICAgICAgIGNvbnRleHRzIGFuZCBwZXJm
b3JtaW5nIG9iamVjdCBiaW5kaW5ncy4KKworICAgICAgICBObyBuZXcgdGVzdHMuIFJlbHlpbmcg
b24gZXhpc3RpbmcgQ2FudmFzIHRlc3RzLgorCisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtOgorICAgICAgICAqIGJp
bmRpbmdzL3Y4L2N1c3RvbS9WOENhbnZhc1BpeGVsQXJyYXlDdXN0b20uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6dG9WOCk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW1hZ2VEYXRh
Q3VzdG9tLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjp0b1Y4KToKKyAgICAgICAgKiBo
dG1sL0ltYWdlRGF0YS5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUGl4ZWxBcnJh
eS5pZGw6CisKIDIwMTAtMTEtMjkgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQkocmV2aXNpb24gNzI4ODIpCisrKyBXZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCSh3b3JraW5nIGNvcHkpCkBAIC0y
NTI3LDcgKzI1MjcsNiBAQAogICAgICMgV2UgZG9uJ3QgZ2VuZXJhdGUgYSBjdXN0b20gY29udmVy
dGVyIChidXQgSlNDIGRvZXMpIGZvciB0aGUgZm9sbG93aW5nOgogICAgIHJldHVybiAwIGlmICRp
bnRlcmZhY2VOYW1lIGVxICJBYnN0cmFjdFdvcmtlciI7CiAgICAgcmV0dXJuIDAgaWYgJGludGVy
ZmFjZU5hbWUgZXEgIkNhbnZhc1JlbmRlcmluZ0NvbnRleHQiOwotICAgIHJldHVybiAwIGlmICRp
bnRlcmZhY2VOYW1lIGVxICJJbWFnZURhdGEiOwogICAgIHJldHVybiAwIGlmICRpbnRlcmZhY2VO
YW1lIGVxICJTVkdFbGVtZW50SW5zdGFuY2UiOwogCiAgICAgIyBGb3IgZXZlcnl0aGluZyBlbHNl
LCBkbyB3aGF0IEpTQyBkb2VzLgpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhD
YW52YXNQaXhlbEFycmF5Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOENhbnZhc1BpeGVsQXJyYXlDdXN0b20uY3BwCShyZXZpc2lvbiA3Mjg4MikK
KysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q2FudmFzUGl4ZWxBcnJheUN1c3RvbS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDggKzM4LDEyIEBACiAgICAgaWYgKCFpbXBsKQogICAg
ICAgICByZXR1cm4gdjg6Ok51bGwoKTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBw
ZXIgPSBWOENhbnZhc1BpeGVsQXJyYXk6OndyYXAoaW1wbCk7Ci0gICAgaWYgKCF3cmFwcGVyLklz
RW1wdHkoKSkKKyAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKSB7CiAgICAgICAgIHdyYXBwZXIt
PlNldEluZGV4ZWRQcm9wZXJ0aWVzVG9QaXhlbERhdGEoaW1wbC0+ZGF0YSgpLT5kYXRhKCksIGlt
cGwtPmxlbmd0aCgpKTsKKyAgICAgICAgd3JhcHBlci0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJv
bCgibGVuZ3RoIiksCisgICAgICAgICAgICAgICAgICAgICB2ODo6SW50ZWdlcjo6TmV3KGltcGwt
Pmxlbmd0aCgpKSwKKyAgICAgICAgICAgICAgICAgICAgIHY4OjpSZWFkT25seSk7CisgICAgfQog
ICAgIHJldHVybiB3cmFwcGVyOwogfQogCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEltYWdlRGF0YUN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhJbWFnZURhdGFDdXN0b20uY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhJbWFnZURhdGFDdXN0b20uY3BwCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBt
ZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlY4SW1hZ2VEYXRhLmgi
CisKKyNpbmNsdWRlICJWOENhbnZhc1BpeGVsQXJyYXkuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChJbWFnZURhdGEqIGltcGwpCit7CisgICAg
aWYgKCFpbXBsKQorICAgICAgICByZXR1cm4gdjg6Ok51bGwoKTsKKyAgICB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IHdyYXBwZXIgPSBWOEltYWdlRGF0YTo6d3JhcChpbXBsKTsKKyAgICBpZiAoIXdy
YXBwZXIuSXNFbXB0eSgpKSB7CisgICAgICAgIC8vIENyZWF0ZSBhIFY4IENhbnZhc1BpeGVsQXJy
YXkgb2JqZWN0LgorICAgICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcGl4ZWxBcnJheSA9IHRv
VjgoaW1wbC0+ZGF0YSgpKTsKKyAgICAgICAgLy8gU2V0IHRoZSAiZGF0YSIgcHJvcGVydHkgb2Yg
dGhlIEltYWdlRGF0YSBvYmplY3QgdG8KKyAgICAgICAgLy8gdGhlIGNyZWF0ZWQgdjggb2JqZWN0
LCBlbGltaW5hdGluZyB0aGUgQysrIGNhbGxiYWNrCisgICAgICAgIC8vIHdoZW4gYWNjZXNzaW5n
IHRoZSAiZGF0YSIgcHJvcGVydHkuCisgICAgICAgIGlmICghcGl4ZWxBcnJheS5Jc0VtcHR5KCkp
IHsKKyAgICAgICAgICAgIHdyYXBwZXItPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woImRhdGEi
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBwaXhlbEFycmF5LAorICAgICAgICAgICAgICAg
ICAgICAgICAgIHY4OjpSZWFkT25seSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4g
d3JhcHBlcjsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9XZWJD
b3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDcy
ODgyKQorKysgV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTc0Nyw2ICs3
NDcsNyBAQAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L0lEQkJpbmRpbmdVdGlsaXRpZXMuaCcs
CiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvT3B0aW9uc09iamVjdC5jcHAnLAogICAgICAgICAg
ICAgJ2JpbmRpbmdzL3Y4L09wdGlvbnNPYmplY3QuaCcsCisgICAgICAgICAgICAnYmluZGluZ3Mv
djgvY3VzdG9tL1Y4SW1hZ2VEYXRhQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3Mv
djgvY3VzdG9tL1Y4Q2FudmFzUGl4ZWxBcnJheUN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEFycmF5QnVmZmVyVmlld0N1c3RvbS5oJywKICAgICAgICAgICAg
ICdiaW5kaW5ncy92OC9jdXN0b20vVjhBcnJheUJ1ZmZlckN1c3RvbS5jcHAnLApJbmRleDogV2Vi
Q29yZS9odG1sL0ltYWdlRGF0YS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0ltYWdl
RGF0YS5pZGwJKHJldmlzaW9uIDcyODgyKQorKysgV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5pZGwJ
KHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAKICAgICBdIEltYWdlRGF0YSB7CiAgICAg
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nIHdpZHRoOwogICAgICAgICByZWFkb25seSBhdHRy
aWJ1dGUgbG9uZyBoZWlnaHQ7Ci0jaWYgIWRlZmluZWQoTEFOR1VBR0VfSkFWQVNDUklQVCkgfHwg
IUxBTkdVQUdFX0pBVkFTQ1JJUFQgfHwgZGVmaW5lZChWOF9CSU5ESU5HKSAmJiBWOF9CSU5ESU5H
CisjaWYgIWRlZmluZWQoTEFOR1VBR0VfSkFWQVNDUklQVCkgfHwgIUxBTkdVQUdFX0pBVkFTQ1JJ
UFQKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIENhbnZhc1BpeGVsQXJyYXkgZGF0YTsKICNl
bmRpZgogICAgIH07CkluZGV4OiBXZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1BpeGVsQXJyYXku
aWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUGl4ZWxBcnJheS5p
ZGwJKHJldmlzaW9uIDcyODgyKQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNQaXhlbEFy
cmF5LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsOSBAQAogICAgICAgICBIYXNOdW1l
cmljSW5kZXhHZXR0ZXIsCiAgICAgICAgIEhhc0N1c3RvbUluZGV4U2V0dGVyCiAgICAgXSBDYW52
YXNQaXhlbEFycmF5IHsKKyNpZiAhZGVmaW5lZChWOF9CSU5ESU5HKSB8fCAhVjhfQklORElORwog
ICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyBsZW5ndGg7CisjZW5kaWYKICAgICB9Owog
I2VuZGlmCiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>