<?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>103856</bug_id>
          
          <creation_ts>2012-12-02 22:44:21 -0800</creation_ts>
          <short_desc>ENABLE(IMAGE_DECODER_DOWN_SAMPLING): Don&apos;t swizzle decode down sampled images</short_desc>
          <delta_ts>2012-12-05 17:56:25 -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>New Bugs</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>
          <dependson>98878</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="noel gordon">noel.gordon</reporter>
          <assigned_to name="noel gordon">noel.gordon</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>ljaehun.lim</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yong.li.webkit</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>781141</commentid>
    <comment_count>0</comment_count>
    <who name="noel gordon">noel.gordon</who>
    <bug_when>2012-12-02 22:44:21 -0800</bug_when>
    <thetext>Add a way to query the JPEG decoder down scaling member</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781143</commentid>
    <comment_count>1</comment_count>
      <attachid>177183</attachid>
    <who name="noel gordon">noel.gordon</who>
    <bug_when>2012-12-02 22:49:25 -0800</bug_when>
    <thetext>Created attachment 177183
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781152</commentid>
    <comment_count>2</comment_count>
      <attachid>177183</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-12-02 23:01:11 -0800</bug_when>
    <thetext>Comment on attachment 177183
Patch

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        No new tests, no change in behavior.

Yeah, this patch looks to change no behavior.  So, why you need this change now?
I guess you will do something later.  Why don&apos;t you do this simple change when you really need it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781161</commentid>
    <comment_count>3</comment_count>
    <who name="noel gordon">noel.gordon</who>
    <bug_when>2012-12-02 23:21:55 -0800</bug_when>
    <thetext>The is preparation fot the thing we&apos;ll do next, once Jaehun and Young Li come online tomorrow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781435</commentid>
    <comment_count>4</comment_count>
    <who name="noel gordon">noel.gordon</who>
    <bug_when>2012-12-03 07:39:21 -0800</bug_when>
    <thetext>Tapping my fingers ...

(In reply to comment #2)

&gt; I guess you will do something later.  Why don&apos;t you do this simple change when you really need it?

Here you go, the whole simple change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781452</commentid>
    <comment_count>5</comment_count>
    <who name="noel gordon">noel.gordon</who>
    <bug_when>2012-12-03 07:49:00 -0800</bug_when>
    <thetext>Adding jaehun and yoli, per https://bugs.webkit.org/show_bug.cgi?id=98878#c10</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781455</commentid>
    <comment_count>6</comment_count>
      <attachid>177256</attachid>
    <who name="noel gordon">noel.gordon</who>
    <bug_when>2012-12-03 07:51:39 -0800</bug_when>
    <thetext>Created attachment 177256
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781457</commentid>
    <comment_count>7</comment_count>
    <who name="noel gordon">noel.gordon</who>
    <bug_when>2012-12-03 07:55:02 -0800</bug_when>
    <thetext>jaehun and yoli: your ports use ENABLE(IMAGE_DECODER_DOWN_SAMPLING) and it has no tests.  Could you please check this change works for you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781460</commentid>
    <comment_count>8</comment_count>
      <attachid>177256</attachid>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2012-12-03 07:56:36 -0800</bug_when>
    <thetext>Comment on attachment 177256
Patch

Wow, I have a very similar patch. If this is done, then (!m_scaled) check in my previous patch isn&apos;t needed. But wouldn&apos;t copying from 4-byte to 4-byte still faster than copying from 3-byte to 4-byte?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781467</commentid>
    <comment_count>9</comment_count>
    <who name="noel gordon">noel.gordon</who>
    <bug_when>2012-12-03 08:05:12 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 177256 [details])
&gt; If this is done, then (!m_scaled) check in my previous patch isn&apos;t needed.

It is still needed: unscaled images will/should still be turbo swizzled, right?

Here we are dealing with the scaled case only.
 
&gt; But wouldn&apos;t copying from 4-byte to 4-byte still faster than copying from 3-byte to 4-byte?

Maybe, maybe not. One SSE instruction moves 8 bytes as fast as it does one byte, I believe.  I have nor real test harness for IMAGE_DECODER_DOWN_SAMPLING.  Not sure how you guys test it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781477</commentid>
    <comment_count>10</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2012-12-03 08:20:07 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; (From update of attachment 177256 [details] [details])
&gt; &gt; If this is done, then (!m_scaled) check in my previous patch isn&apos;t needed.
&gt; 
&gt; It is still needed: unscaled images will/should still be turbo swizzled, right?

Oops. you are right

&gt; &gt; But wouldn&apos;t copying from 4-byte to 4-byte still faster than copying from 3-byte to 4-byte?
&gt; 
&gt; Maybe, maybe not. One SSE instruction moves 8 bytes as fast as it does one byte, I believe.  I have nor real test harness for IMAGE_DECODER_DOWN_SAMPLING.  Not sure how you guys test it.

I&apos;ll try to get some time this week to test it. jaehun, are you going to test it?

As it doesn&apos;t fix any currently-known issue, I will r- the patch, until we get some performance numbers that show this patch helps.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781479</commentid>
    <comment_count>11</comment_count>
      <attachid>177256</attachid>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2012-12-03 08:24:02 -0800</bug_when>
    <thetext>Comment on attachment 177256
Patch

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

r- until we get perf numbers showing this helps.

&gt; Source/WebCore/platform/image-decoders/jpeg/JPEGImageDecoder.cpp:397
&gt; +#if ENABLE(IMAGE_DECODER_DOWN_SAMPLING) &amp;&amp; defined(TURBO_JPEG_RGB_SWIZZLE)
&gt; +            // There&apos;s no point swizzle decoding if image down sampling will
&gt; +            // be applied. Revert to using JSC_RGB in that case.
&gt; +            if (m_decoder-&gt;willDownSample() &amp;&amp; turboSwizzled(m_info.out_color_space))
&gt; +                m_info.out_color_space = JCS_RGB;
&gt; +#endif

What will happen if jpeg_color_space is JCS_CMYK? I would move this code into:

359359 switch (m_info.jpeg_color_space) {
360360 case JCS_GRAYSCALE:
361361 case JCS_RGB:
362362 case JCS_YCbCr:
363363 // libjpeg can convert GRAYSCALE and YCbCr image pixels to RGB.
364364 m_info.out_color_space = rgbOutputColorSpace();
365365#if defined(TURBO_JPEG_RGB_SWIZZLE)
366366 if (m_info.saw_JFIF_marker)
367367 break;
368368 // FIXME: Swizzle decoding does not support Adobe transform=0
369369 // images (yet), so revert to using JSC_RGB in that case.
370370 if (m_info.saw_Adobe_marker &amp;&amp; !m_info.Adobe_transform)
371371 m_info.out_color_space = JCS_RGB;
372372#endif
373373 break;

And move the switch block after setSize(). What do you think?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781673</commentid>
    <comment_count>12</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2012-12-03 11:11:12 -0800</bug_when>
    <thetext>I did a quick test upon a random large jpeg. I turned on down sampling and set the limit to 128K pixels, and made the decoder decode only when all data arrives. I cannot tell any diff between the results with and w/o the patch. I&apos;m not against of the change, though, if the JCS_CMYK thing is fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782004</commentid>
    <comment_count>13</comment_count>
    <who name="Jaehun Lim">ljaehun.lim</who>
    <bug_when>2012-12-03 16:10:40 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; jaehun and yoli: your ports use ENABLE(IMAGE_DECODER_DOWN_SAMPLING) and it has no tests.  Could you please check this change works for you.

This patch works good for me. I checked with some test cases those had failed before my patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782159</commentid>
    <comment_count>14</comment_count>
    <who name="noel gordon">noel.gordon</who>
    <bug_when>2012-12-03 20:04:45 -0800</bug_when>
    <thetext>(In reply to comment #11)

&gt; &gt; Source/WebCore/platform/image-decoders/jpeg/JPEGImageDecoder.cpp:397
&gt; &gt; +#if ENABLE(IMAGE_DECODER_DOWN_SAMPLING) &amp;&amp; defined(TURBO_JPEG_RGB_SWIZZLE)
&gt; &gt; +            // There&apos;s no point swizzle decoding if image down sampling will
&gt; &gt; +            // be applied. Revert to using JSC_RGB in that case.
&gt; &gt; +            if (m_decoder-&gt;willDownSample() &amp;&amp; turboSwizzled(m_info.out_color_space))
&gt; &gt; +                m_info.out_color_space = JCS_RGB;
&gt; &gt; +#endif
&gt; 
&gt; What will happen if jpeg_color_space is JCS_CMYK?

We don&apos;t (and can&apos;t) swizzle decode JCS_CMYK, see http://trac.webkit.org/browser/trunk/Source/WebCore/platform/image-decoders/jpeg/JPEGImageDecoder.cpp?rev=136410#L68</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782163</commentid>
    <comment_count>15</comment_count>
    <who name="noel gordon">noel.gordon</who>
    <bug_when>2012-12-03 20:14:10 -0800</bug_when>
    <thetext>(In reply to comment #11)

&gt; And move the switch block after setSize(). What do you think?

I don&apos;t see why, and it would be the subject of another bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782168</commentid>
    <comment_count>16</comment_count>
    <who name="noel gordon">noel.gordon</who>
    <bug_when>2012-12-03 20:18:44 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; I did a quick test upon a random large jpeg. I turned on down sampling and set the limit to 128K pixels, and made the decoder decode only when all data arrives. I cannot tell any diff between the results with and w/o the patch.

Yes thank you, that is the expected result.  For scaled images, we must pass the data through buffer.setRGBA slow path.  Swizzle decoding is fast since it avoids that slow path.

&gt; I&apos;m not against of the change, though, if the JCS_CMYK thing is fixed.

The JCS_CMYK does not need fixing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782171</commentid>
    <comment_count>17</comment_count>
    <who name="noel gordon">noel.gordon</who>
    <bug_when>2012-12-03 20:19:56 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; &gt; jaehun and yoli: your ports use ENABLE(IMAGE_DECODER_DOWN_SAMPLING) and it has no tests.  Could you please check this change works for you.
&gt; 
&gt; This patch works good for me. I checked with some test cases those had failed before my patch.

Thank you for checking.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782192</commentid>
    <comment_count>18</comment_count>
      <attachid>177407</attachid>
    <who name="noel gordon">noel.gordon</who>
    <bug_when>2012-12-03 21:01:54 -0800</bug_when>
    <thetext>Created attachment 177407
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782532</commentid>
    <comment_count>19</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2012-12-04 07:36:55 -0800</bug_when>
    <thetext>I see JCS_CMYK isn&apos;t a problem with your patch, as you check turboSwizzled(m_info.out_color_space) before setting out_color_space to RGB.


(In reply to comment #15)
&gt; (In reply to comment #11)
&gt; 
&gt; &gt; And move the switch block after setSize(). What do you think?
&gt; 
&gt; I don&apos;t see why, and it would be the subject of another bug.

Wouldn&apos;t it be much neater to put all the changes to m_info.out_color_space together in one block?

In that way, it saves a call to turboSwizzled() and the code can be merged to existing #if defined(TURBO_JPEG_RGB_SWIZZLE) block.

switch (m_info.jpeg_color_space) {
case JCS_GRAYSCALE:
case JCS_RGB:
case JCS_YCbCr:
     // libjpeg can convert GRAYSCALE and YCbCr image pixels to RGB.
     m_info.out_color_space = rgbOutputColorSpace();
#if defined(TURBO_JPEG_RGB_SWIZZLE)
#if ENABLE(IMAGE_DECODER_DOWN_SAMPLING)
     // There&apos;s no point swizzle decoding if image down sampling will
     // be applied. Revert to using JSC_RGB in that case.
     if (m_decoder-&gt;willDownSample()) {
         m_info.out_color_space = JCS_RGB;
         break;
#endif
    if (m_info.saw_JFIF_marker)
       break;
....</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783001</commentid>
    <comment_count>20</comment_count>
    <who name="noel gordon">noel.gordon</who>
    <bug_when>2012-12-04 15:06:41 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; I see JCS_CMYK isn&apos;t a problem with your patch, as you check turboSwizzled(m_info.out_color_space) before setting out_color_space to RGB.

Exactly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783015</commentid>
    <comment_count>21</comment_count>
    <who name="noel gordon">noel.gordon</who>
    <bug_when>2012-12-04 15:16:25 -0800</bug_when>
    <thetext>&gt; Wouldn&apos;t it be much neater to put all the changes to m_info.out_color_space together in one block?

Note there&apos;s also a block following the switch that deals with color profiles and m_info.out_color_space.  My goal was to keep these areas of the code together.  We could move the color profile handling into the switch statement too, but neatness as a virtue would be gone :/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783016</commentid>
    <comment_count>22</comment_count>
    <who name="noel gordon">noel.gordon</who>
    <bug_when>2012-12-04 15:17:45 -0800</bug_when>
    <thetext>(In reply to comment #19)
 
&gt; In that way, it saves a call to turboSwizzled() and the code can be merged to existing #if defined(TURBO_JPEG_RGB_SWIZZLE) block.

turboSwizzled() is inline, the compile doesn&apos;t really call it :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783020</commentid>
    <comment_count>23</comment_count>
    <who name="noel gordon">noel.gordon</who>
    <bug_when>2012-12-04 15:19:26 -0800</bug_when>
    <thetext>ahem ... the compiler doesn&apos;t really call it :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783776</commentid>
    <comment_count>24</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2012-12-05 08:26:10 -0800</bug_when>
    <thetext>(In reply to comment #22)
&gt; (In reply to comment #19)
&gt; 
&gt; &gt; In that way, it saves a call to turboSwizzled() and the code can be merged to existing #if defined(TURBO_JPEG_RGB_SWIZZLE) block.
&gt; 
&gt; turboSwizzled() is inline, the compile doesn&apos;t really call it :)

I know. but for neatness :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783779</commentid>
    <comment_count>25</comment_count>
      <attachid>177407</attachid>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2012-12-05 08:29:21 -0800</bug_when>
    <thetext>Comment on attachment 177407
Patch

r+. I don&apos;t see it helps performance, but at least it cleans some code in outputScanline. Also Jaehun has seen this fixed some tests. See Comment #13 From Jaehun Lim.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783785</commentid>
    <comment_count>26</comment_count>
      <attachid>177407</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-05 08:37:14 -0800</bug_when>
    <thetext>Comment on attachment 177407
Patch

Clearing flags on attachment: 177407

Committed r136693: &lt;http://trac.webkit.org/changeset/136693&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783786</commentid>
    <comment_count>27</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-05 08:37:18 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784376</commentid>
    <comment_count>28</comment_count>
    <who name="noel gordon">noel.gordon</who>
    <bug_when>2012-12-05 17:56:25 -0800</bug_when>
    <thetext>(In reply to comment #25)
&gt; r+. I don&apos;t see it helps performance, but at least it cleans some code in outputScanline. Also Jaehun has seen this fixed some tests. See Comment #13 From Jaehun Lim.

Thank you.  And yes, no change in performance, and some cleanup to avoid confusion about libjpeg-turbo use in outputScanlines() per bug 98878#c9</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177183</attachid>
            <date>2012-12-02 22:49:25 -0800</date>
            <delta_ts>2012-12-03 07:51:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103856-20121203174652.patch</filename>
            <type>text/plain</type>
            <size>1573</size>
            <attacher name="noel gordon">noel.gordon</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2MzYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzQxMTA4YTIwYzljNzFm
NmRmNjlkNTgyYmY1MzQzMTU4ODg5MmFiZi4uM2ZlZWQzYTY4NmI1ZThiMjU5Yjg5NmE3YTQzNTY5
MDQ5YTYzN2Y0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTEyLTAyICBOb2Vs
IEdvcmRvbiAgPG5vZWwuZ29yZG9uQGdtYWlsLmNvbT4KKworICAgICAgICBBZGQgYSB3YXkgdG8g
cXVlcnkgdGhlIEpQRUcgZGVjb2RlciBkb3duIHNjYWxpbmcgbWVtYmVyCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDM4NTYKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIGNoYW5n
ZSBpbiBiZWhhdmlvci4KKworICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcv
SlBFR0ltYWdlRGVjb2Rlci5oOgorICAgICAgICAoV2ViQ29yZTo6SlBFR0ltYWdlRGVjb2Rlcjo6
ZG93blNjYWxlcyk6IEVOQUJMRV9JTUFHRV9ERUNPRElOR19ET1dOX1NBTVBMSU5HIHNjYWxlcwor
ICAgICAgICBpbWFnZXMgZG93biBjbGllbnQtc2lkZS4gQWRkIGFjY2Vzc29yIGRvd25TY2FsZXMo
KSB0byB0aGUgSlBFRyBkZWNvZGVyIHRvIGRldGVybWluZQorICAgICAgICBpZiB0aGUgZGVjb2Rl
ZCBKUEVHIGltYWdlIHdpbGwgYmUgc2NhbGVkIGRvd24gKGFrYSBkb3duIHNhbXBsZWQpLgorCiAy
MDEyLTEyLTAyICBNYXJ5IFd1ICA8bWFyeS53dUB0b3JjaG1vYmlsZS5jb20uY24+CiAKICAgICAg
ICAgc2hvdWxkIHNuaWZmIGl0IGlmIG1pbWV0eXBlIGRvbid0IGNvbnRhaW4gYSBzbGFzaC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBF
R0ltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
anBlZy9KUEVHSW1hZ2VEZWNvZGVyLmgKaW5kZXggMGJhZGZkNGNjZWUyZmQ5NTNiMDU4OTVkNTc2
YzJmZTNjZGFjN2E1NS4uMTUwYzcwMTU4MDQ2ZWE3OWU2YjNmNTJmOTBmZjQyMmNhN2ExNjI2YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9K
UEVHSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmgKQEAgLTUwLDYgKzUwLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICAvLyBKUEVHSW1hZ2VSZWFkZXIhCiAgICAgICAgIHZpcnR1YWwg
Ym9vbCBzZXRGYWlsZWQoKTsKIAorICAgICAgICBib29sIGRvd25TY2FsZXMoKSB7IHJldHVybiBJ
bWFnZURlY29kZXI6Om1fc2NhbGVkOyB9OwogICAgICAgICBib29sIG91dHB1dFNjYW5saW5lcygp
OwogICAgICAgICB2b2lkIGpwZWdDb21wbGV0ZSgpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177256</attachid>
            <date>2012-12-03 07:51:39 -0800</date>
            <delta_ts>2012-12-03 21:01:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103856-20121204024904.patch</filename>
            <type>text/plain</type>
            <size>6832</size>
            <attacher name="noel gordon">noel.gordon</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2Mzc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzBiMTkzOTBkOWUyZGI0
NzAwMzA0MmJmYTUxZTgyMGU5NTY4YWM3Mi4uNmZkMjI4OWU2MjM5NzFkN2M1N2EzNjM3ZGMyYTgy
ZDk0ZDNjYTk2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEyLTEyLTAzICBOb2Vs
IEdvcmRvbiAgPG5vZWwuZ29yZG9uQGdtYWlsLmNvbT4KKworICAgICAgICBFTkFCTEUoSU1BR0Vf
REVDT0RFUl9ET1dOX1NBTVBMSU5HKTogRG9uJ3Qgc3dpenpsZSBkZWNvZGUgZG93biBzYW1wbGVk
IGltYWdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTAzODU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
Rm9yIHBvcnRzIHVzaW5nIEVOQUJMRShJTUFHRV9ERUNPREVSX0RPV05fU0FNUExJTkcpLCB0dXJi
byBzd2l6emxlIGRlY29kZXMgcHJvdmlkZQorICAgICAgICBubyBzcGVlZC11cCB3aGVuIHRoZSBk
ZWNvZGVkIGltYWdlIHdpbGwgYmUgZG93biBzYW1wbGVkLiBKdXN0IHVzZSBKQ1NfUkdCIGRlY29k
aW5nCisgICAgICAgIGluIHRoYXQgY2FzZSwgdG8gc2ltcGxpZnkgb3V0cHV0IGNvbG9yIHNwYWNl
IGhhbmRsaW5nIGluIG91dHB1dFNjYW5saW5lcygpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4g
Q292ZXJlZCBieSBleGlzdGluZyBKUEVHIGRlY29kaW5nIHRlc3RzLgorCisgICAgICAgICogcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpQRUdJbWFnZVJlYWRlcjo6ZGVjb2RlKTogbGlianBlZy10dXJibyBzd2l6emxl
IGRlY29kZXMgcHJvdmlkZXMgbm8gcmVhbAorICAgICAgICBzcGVlZC11cCBpZiB0aGUgaW1hZ2Ug
d2lsbCBiZSBkb3duIHNhbXBsZWQuIFJldmVydCB0byB1c2luZyBKQ1NfUkdBIGluIHRoaXMgY2Fz
ZS4KKyAgICAgICAgKFdlYkNvcmU6OnNldFBpeGVsKTogUmVtb3ZlIHRoZSBsaWJqcGVnLXR1cmJv
IEpDU19FWFRfQkdSQSBhbmQgSkNTX0VYVF9SR0JBIGNhc2VzLgorICAgICAgICAoV2ViQ29yZTo6
SlBFR0ltYWdlRGVjb2Rlcjo6b3V0cHV0U2NhbmxpbmVzKTogZGl0dG8uCisgICAgICAgICogcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgIChX
ZWJDb3JlOjpKUEVHSW1hZ2VEZWNvZGVyOjp3aWxsRG93blNhbXBsZSk6IFJldHVybiB0cnVlIGlm
IGltYWdlIGRvd24gc2FtcGxpbmcgCisgICAgICAgIHdpbGwgYmUgYXBwbGllZCB0byB0aGUgZGVj
b2RlZCBpbWFnZSAobV9zY2FsZWQpLiBOb3RlOiB0aGUgd2lsbERvd25TYW1wbGUoKSByZXR1cm4K
KyAgICAgICAgaXMgdmFsaWQgb25seSBhZnRlciBzZXRTaXplKCkgaGFzIGJlZW4gY2FsbGVkOiBh
ZGQgYW4gQVNTRVJUIGZvciB0aGF0LgorCiAyMDEyLTEyLTAzICBNaWtoYWlsIFBvemRueWFrb3Yg
IDxtaWtoYWlsLnBvemRueWFrb3ZAaW50ZWwuY29tPgogCiAgICAgICAgIENTUyBEZXZpY2UgQWRh
cHRhdGlvbjogd2luZG93LmlubmVyV2lkdGggcmV0dXJucyB3cm9uZyB2YWx1ZSBpZiBDU1Mgdmll
d3BvcnQgZGVzY3JpcHRvcnMgYXJlIGFwcGxpZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIu
Y3BwCmluZGV4IGUxNTJhMmVjYmFlMmVjZTAyMTUwMjRjMTA3MmJkNjkyYTI3ZTBkN2IuLjBhYjI5
ZGU0MTdjNzA3MTUwNmI0MjRlOTBiODM5M2EwODc3Njc2YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1h
Z2VEZWNvZGVyLmNwcApAQCAtMzgxLDE5ICszODEsNiBAQCBwdWJsaWM6CiAgICAgICAgICAgICAg
ICAgcmV0dXJuIG1fZGVjb2Rlci0+c2V0RmFpbGVkKCk7CiAgICAgICAgICAgICB9CiAKLSAgICAg
ICAgICAgIC8vIERvbid0IGFsbG9jYXRlIGEgZ2lhbnQgYW5kIHN1cGVyZmx1b3VzIG1lbW9yeSBi
dWZmZXIgd2hlbiB0aGUKLSAgICAgICAgICAgIC8vIGltYWdlIGlzIGEgc2VxdWVudGlhbCBKUEVH
LgotICAgICAgICAgICAgbV9pbmZvLmJ1ZmZlcmVkX2ltYWdlID0ganBlZ19oYXNfbXVsdGlwbGVf
c2NhbnMoJm1faW5mbyk7Ci0KLSAgICAgICAgICAgIC8vIFVzZWQgdG8gc2V0IHVwIGltYWdlIHNp
emUgc28gYXJyYXlzIGNhbiBiZSBhbGxvY2F0ZWQuCi0gICAgICAgICAgICBqcGVnX2NhbGNfb3V0
cHV0X2RpbWVuc2lvbnMoJm1faW5mbyk7Ci0KLSAgICAgICAgICAgIC8vIE1ha2UgYSBvbmUtcm93
LWhpZ2ggc2FtcGxlIGFycmF5IHRoYXQgd2lsbCBnbyBhd2F5IHdoZW4gZG9uZSB3aXRoCi0gICAg
ICAgICAgICAvLyBpbWFnZS4gQWx3YXlzIG1ha2UgaXQgYmlnIGVub3VnaCB0byBob2xkIGFuIFJH
QiByb3cuICBTaW5jZSB0aGlzCi0gICAgICAgICAgICAvLyB1c2VzIHRoZSBJSkcgbWVtb3J5IG1h
bmFnZXIsIGl0IG11c3QgYmUgYWxsb2NhdGVkIGJlZm9yZSB0aGUgY2FsbAotICAgICAgICAgICAg
Ly8gdG8ganBlZ19zdGFydF9jb21wcmVzcygpLgotICAgICAgICAgICAgbV9zYW1wbGVzID0gKCpt
X2luZm8ubWVtLT5hbGxvY19zYXJyYXkpKChqX2NvbW1vbl9wdHIpICZtX2luZm8sIEpQT09MX0lN
QUdFLCBtX2luZm8ub3V0cHV0X3dpZHRoICogNCwgMSk7Ci0KICAgICAgICAgICAgIG1fc3RhdGUg
PSBKUEVHX1NUQVJUX0RFQ09NUFJFU1M7CiAKICAgICAgICAgICAgIC8vIFdlIGNhbiBmaWxsIGlu
IHRoZSBzaXplIG5vdyB0aGF0IHRoZSBoZWFkZXIgaXMgYXZhaWxhYmxlLgpAQCAtNDAyLDYgKzM4
OSwxMiBAQCBwdWJsaWM6CiAKICAgICAgICAgICAgIG1fZGVjb2Rlci0+c2V0T3JpZW50YXRpb24o
cmVhZEltYWdlT3JpZW50YXRpb24oaW5mbygpKSk7CiAKKyNpZiBFTkFCTEUoSU1BR0VfREVDT0RF
Ul9ET1dOX1NBTVBMSU5HKSAmJiBkZWZpbmVkKFRVUkJPX0pQRUdfUkdCX1NXSVpaTEUpCisgICAg
ICAgICAgICAvLyBUaGVyZSdzIG5vIHBvaW50IHN3aXp6bGUgZGVjb2RpbmcgaWYgaW1hZ2UgZG93
biBzYW1wbGluZyB3aWxsCisgICAgICAgICAgICAvLyBiZSBhcHBsaWVkLiBSZXZlcnQgdG8gdXNp
bmcgSlNDX1JHQiBpbiB0aGF0IGNhc2UuCisgICAgICAgICAgICBpZiAobV9kZWNvZGVyLT53aWxs
RG93blNhbXBsZSgpICYmIHR1cmJvU3dpenpsZWQobV9pbmZvLm91dF9jb2xvcl9zcGFjZSkpCisg
ICAgICAgICAgICAgICAgbV9pbmZvLm91dF9jb2xvcl9zcGFjZSA9IEpDU19SR0I7CisjZW5kaWYK
ICAgICAgICAgICAgIC8vIEFsbG93IGNvbG9yIG1hbmFnZW1lbnQgb2YgdGhlIGRlY29kZWQgUkdC
QSBwaXhlbHMgaWYgcG9zc2libGUuCiAgICAgICAgICAgICBpZiAoIW1fZGVjb2Rlci0+aWdub3Jl
c0dhbW1hQW5kQ29sb3JQcm9maWxlKCkpIHsKICAgICAgICAgICAgICAgICBDb2xvclByb2ZpbGUg
cmdiSW5wdXREZXZpY2VDb2xvclByb2ZpbGUgPSByZWFkQ29sb3JQcm9maWxlKGluZm8oKSk7CkBA
IC00MTcsOSArNDEwLDIzIEBAIHB1YmxpYzoKICNlbmRpZgogICAgICAgICAgICAgfQogCisgICAg
ICAgICAgICAvLyBEb24ndCBhbGxvY2F0ZSBhIGdpYW50IGFuZCBzdXBlcmZsdW91cyBtZW1vcnkg
YnVmZmVyIHdoZW4gdGhlCisgICAgICAgICAgICAvLyBpbWFnZSBpcyBhIHNlcXVlbnRpYWwgSlBF
Ry4KKyAgICAgICAgICAgIG1faW5mby5idWZmZXJlZF9pbWFnZSA9IGpwZWdfaGFzX211bHRpcGxl
X3NjYW5zKCZtX2luZm8pOworCisgICAgICAgICAgICAvLyBVc2VkIHRvIHNldCB1cCBpbWFnZSBz
aXplIHNvIGFycmF5cyBjYW4gYmUgYWxsb2NhdGVkLgorICAgICAgICAgICAganBlZ19jYWxjX291
dHB1dF9kaW1lbnNpb25zKCZtX2luZm8pOworCisgICAgICAgICAgICAvLyBNYWtlIGEgb25lLXJv
dy1oaWdoIHNhbXBsZSBhcnJheSB0aGF0IHdpbGwgZ28gYXdheSB3aGVuIGRvbmUgd2l0aAorICAg
ICAgICAgICAgLy8gaW1hZ2UuIEFsd2F5cyBtYWtlIGl0IGJpZyBlbm91Z2ggdG8gaG9sZCBhbiBS
R0Igcm93LiBTaW5jZSB0aGlzCisgICAgICAgICAgICAvLyB1c2VzIHRoZSBJSkcgbWVtb3J5IG1h
bmFnZXIsIGl0IG11c3QgYmUgYWxsb2NhdGVkIGJlZm9yZSB0aGUgY2FsbAorICAgICAgICAgICAg
Ly8gdG8ganBlZ19zdGFydF9jb21wcmVzcygpLgorICAgICAgICAgICAgLy8gRklYTUU6IG5vdGUg
dGhhdCBzb21lIG91dHB1dCBjb2xvciBzcGFjZXMgZG8gbm90IG5lZWQgdGhlIHNhbXBsZXMKKyAg
ICAgICAgICAgIC8vIGJ1ZmZlci4gUmVtb3ZlIHRoaXMgYWxsb2NhdGlvbiBmb3IgdGhvc2UgY29s
b3Igc3BhY2VzLgorICAgICAgICAgICAgbV9zYW1wbGVzID0gKCptX2luZm8ubWVtLT5hbGxvY19z
YXJyYXkpKChqX2NvbW1vbl9wdHIpICZtX2luZm8sIEpQT09MX0lNQUdFLCBtX2luZm8ub3V0cHV0
X3dpZHRoICogNCwgMSk7CisKICAgICAgICAgICAgIGlmIChtX2RlY29kaW5nU2l6ZU9ubHkpIHsK
LSAgICAgICAgICAgICAgICAvLyBXZSBjYW4gc3RvcCBoZXJlLiAgUmVkdWNlIG91ciBidWZmZXIg
bGVuZ3RoIGFuZCBhdmFpbGFibGUKLSAgICAgICAgICAgICAgICAvLyBkYXRhLgorICAgICAgICAg
ICAgICAgIC8vIFdlIGNhbiBzdG9wIGhlcmUuIFJlZHVjZSBvdXIgYnVmZmVyIGxlbmd0aCBhbmQg
YXZhaWxhYmxlIGRhdGEuCiAgICAgICAgICAgICAgICAgbV9idWZmZXJMZW5ndGggLT0gbV9pbmZv
LnNyYy0+Ynl0ZXNfaW5fYnVmZmVyOwogICAgICAgICAgICAgICAgIG1faW5mby5zcmMtPmJ5dGVz
X2luX2J1ZmZlciA9IDA7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC02NTIsMTIg
KzY1OSw2IEBAIHZvaWQgc2V0UGl4ZWwoSW1hZ2VGcmFtZSYgYnVmZmVyLCBJbWFnZUZyYW1lOjpQ
aXhlbERhdGEqIGN1cnJlbnRBZGRyZXNzLCBKU0FNUEFSCiAgICAgSlNBTVBMRSoganNhbXBsZSA9
ICpzYW1wbGVzICsgY29sdW1uICogKHN0YXRpY19jYXN0PEpfQ09MT1JfU1BBQ0U+KGNvbG9yU3Bh
Y2UpID09IEpDU19SR0IgPyAzIDogNCk7CiAKICAgICBzd2l0Y2ggKHN0YXRpY19jYXN0PEpfQ09M
T1JfU1BBQ0U+KGNvbG9yU3BhY2UpKSB7Ci0jaWYgZGVmaW5lZChUVVJCT19KUEVHX1JHQl9TV0la
WkxFKQotICAgIGNhc2UgSkNTX0VYVF9CR1JBOgotICAgICAgICBidWZmZXIuc2V0UkdCQShjdXJy
ZW50QWRkcmVzcywganNhbXBsZVsyXSwganNhbXBsZVsxXSwganNhbXBsZVswXSwgMHhGRik7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgSkNTX0VYVF9SR0JBOiAvLyBGYWxsYmFjayB0byBKU0Nf
UkdCIGNhc2UgaGVyZS4KLSNlbmRpZgogICAgIGNhc2UgSkNTX1JHQjoKICAgICAgICAgYnVmZmVy
LnNldFJHQkEoY3VycmVudEFkZHJlc3MsIGpzYW1wbGVbMF0sIGpzYW1wbGVbMV0sIGpzYW1wbGVb
Ml0sIDB4RkYpOwogICAgICAgICBicmVhazsKQEAgLTc2MywxMiArNzY0LDYgQEAgYm9vbCBKUEVH
SW1hZ2VEZWNvZGVyOjpvdXRwdXRTY2FubGluZXMoKQogICAgIC8vIHRoZSBwcm9wZXIgY29kZSB3
aWxsIGJlIGdlbmVyYXRlZCBhdCBjb21waWxlIHRpbWUuCiAgICAgY2FzZSBKQ1NfUkdCOgogICAg
ICAgICByZXR1cm4gb3V0cHV0U2NhbmxpbmVzPEpDU19SR0I+KGJ1ZmZlcik7Ci0jaWYgZGVmaW5l
ZChUVVJCT19KUEVHX1JHQl9TV0laWkxFKQotICAgIGNhc2UgSkNTX0VYVF9SR0JBOgotICAgICAg
ICByZXR1cm4gb3V0cHV0U2NhbmxpbmVzPEpDU19FWFRfUkdCQT4oYnVmZmVyKTsKLSAgICBjYXNl
IEpDU19FWFRfQkdSQToKLSAgICAgICAgcmV0dXJuIG91dHB1dFNjYW5saW5lczxKQ1NfRVhUX0JH
UkE+KGJ1ZmZlcik7Ci0jZW5kaWYKICAgICBjYXNlIEpDU19DTVlLOgogICAgICAgICByZXR1cm4g
b3V0cHV0U2NhbmxpbmVzPEpDU19DTVlLPihidWZmZXIpOwogICAgIGRlZmF1bHQ6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFn
ZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcv
SlBFR0ltYWdlRGVjb2Rlci5oCmluZGV4IDBiYWRmZDRjY2VlMmZkOTUzYjA1ODk1ZDU3NmMyZmUz
Y2RhYzdhNTUuLjY3YjlkZTIxNDJlZTI0ZWZkNzg1Y2Y4NDg3MDg3NjU2MDNhZmNlOTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0lt
YWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oCkBAIC01MCw2ICs1MCwxMiBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIC8vIEpQRUdJbWFnZVJlYWRlciEKICAgICAgICAgdmlydHVhbCBib29s
IHNldEZhaWxlZCgpOwogCisgICAgICAgIGJvb2wgd2lsbERvd25TYW1wbGUoKQorICAgICAgICB7
CisgICAgICAgICAgICBBU1NFUlQoSW1hZ2VEZWNvZGVyOjppc1NpemVBdmFpbGFibGUoKSk7Cisg
ICAgICAgICAgICByZXR1cm4gbV9zY2FsZWQ7CisgICAgICAgIH0KKwogICAgICAgICBib29sIG91
dHB1dFNjYW5saW5lcygpOwogICAgICAgICB2b2lkIGpwZWdDb21wbGV0ZSgpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177407</attachid>
            <date>2012-12-03 21:01:54 -0800</date>
            <delta_ts>2012-12-05 08:37:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103856-20121204155919.patch</filename>
            <type>text/plain</type>
            <size>7460</size>
            <attacher name="noel gordon">noel.gordon</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2NDcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTk2ZDc0M2UwMjYwODQ0
MWRmYzUwNWNjNWIzMDQyOTA0NTVkMWY0Ny4uNGY5M2ZlOTA0NjU3OGNhN2Q1OTc5ZjhmMmU0MWI1
NzUyZTcyZWI3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEyLTEyLTAzICBOb2Vs
IEdvcmRvbiAgPG5vZWwuZ29yZG9uQGdtYWlsLmNvbT4KKworICAgICAgICBFTkFCTEUoSU1BR0Vf
REVDT0RFUl9ET1dOX1NBTVBMSU5HKTogRG9uJ3Qgc3dpenpsZSBkZWNvZGUgZG93biBzYW1wbGVk
IGltYWdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTAzODU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
Rm9yIHBvcnRzIHVzaW5nIEVOQUJMRShJTUFHRV9ERUNPREVSX0RPV05fU0FNUExJTkcpLCB0dXJi
byBzd2l6emxlIGRlY29kZXMgcHJvdmlkZQorICAgICAgICBubyBzcGVlZC11cCB3aGVuIHRoZSBk
ZWNvZGVkIGltYWdlIHdpbGwgYmUgZG93biBzYW1wbGVkIGJlY2F1c2UgdGhlIGRhdGEgbXVzdCBw
YXNzCisgICAgICAgIHRocm91Z2ggdGhlIGJ1ZmZlci5zZXRSR0JBKCkgc2xvdyBwYXRoLiBUaGF0
IGlzIG5vdCB0aGUgc3dpenpsZWQgcGF0aC4gSW5zdGVhZCB1c2UKKyAgICAgICAgSkNTX1JHQiBk
ZWNvZGVzIHRvIGNsYXJpZnkgdGhlIG91dHB1dCBjb2xvciBzcGFjZSBoYW5kbGluZyBpbiBvdXRw
dXRTY2FubGluZXMoKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIENvdmVyZWQgYnkgZXhpc3Rp
bmcgSlBFRyBkZWNvZGluZyB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKUEVHSW1h
Z2VSZWFkZXI6OmRlY29kZSk6IGxpYmpwZWctdHVyYm8gc3dpenpsZSBkZWNvZGVzIHByb3ZpZGVz
IG5vIHJlYWwKKyAgICAgICAgc3BlZWQtdXAgaWYgdGhlIGltYWdlIHdpbGwgYmUgZG93biBzYW1w
bGVkLiBSZXZlcnQgdG8gdXNpbmcgSkNTX1JHQSBpbiB0aGlzIGNhc2UuCisgICAgICAgIChXZWJD
b3JlOjpzZXRQaXhlbCk6IFJlbW92ZSB0aGUgbGlianBlZy10dXJibyBKQ1NfRVhUX0JHUkEgYW5k
IEpDU19FWFRfUkdCQSBjYXNlcy4KKyAgICAgICAgKFdlYkNvcmU6OkpQRUdJbWFnZURlY29kZXI6
Om91dHB1dFNjYW5saW5lcyk6IGRpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oOgorICAgICAgICAoV2ViQ29yZTo6SlBFR0ltYWdl
RGVjb2Rlcjo6d2lsbERvd25TYW1wbGUpOiBSZXR1cm4gdHJ1ZSBpZiBpbWFnZSBkb3duIHNhbXBs
aW5nIAorICAgICAgICB3aWxsIGJlIGFwcGxpZWQgdG8gdGhlIGRlY29kZWQgaW1hZ2UgKG1fc2Nh
bGVkKS4gTm90ZTogdGhlIHdpbGxEb3duU2FtcGxlKCkgcmV0dXJuCisgICAgICAgIHZhbHVlIGlz
IHZhbGlkIG9ubHkgYWZ0ZXIgc2V0U2l6ZSgpIGhhcyBiZWVuIGNhbGxlZDogYWRkIGFuIEFTU0VS
VCBmb3IgdGhhdC4KKwogMjAxMi0xMi0wMyAgUmFmYWVsIFdlaW5zdGVpbiAgPHJhZmFlbHdAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIEltcGxlbWVudCBIVE1MVGVtcGxhdGVFbGVtZW50CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJ
bWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
anBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBmMTgyYzEzYWZjMGJlMDliOTYyOWFmMmU1
MDdlMTQ4MzViZDc1ODYzLi5hOTc3MmZjMDhkOTc4Y2IwMjZhYjc4OGYxNGZkMzUyZDNlMDRkNWRj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVn
L0pQRUdJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKQEAgLTM3MCwxOSArMzcwLDYgQEAg
cHVibGljOgogICAgICAgICAgICAgICAgIHJldHVybiBtX2RlY29kZXItPnNldEZhaWxlZCgpOwog
ICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAvLyBEb24ndCBhbGxvY2F0ZSBhIGdpYW50IGFu
ZCBzdXBlcmZsdW91cyBtZW1vcnkgYnVmZmVyIHdoZW4gdGhlCi0gICAgICAgICAgICAvLyBpbWFn
ZSBpcyBhIHNlcXVlbnRpYWwgSlBFRy4KLSAgICAgICAgICAgIG1faW5mby5idWZmZXJlZF9pbWFn
ZSA9IGpwZWdfaGFzX211bHRpcGxlX3NjYW5zKCZtX2luZm8pOwotCi0gICAgICAgICAgICAvLyBV
c2VkIHRvIHNldCB1cCBpbWFnZSBzaXplIHNvIGFycmF5cyBjYW4gYmUgYWxsb2NhdGVkLgotICAg
ICAgICAgICAganBlZ19jYWxjX291dHB1dF9kaW1lbnNpb25zKCZtX2luZm8pOwotCi0gICAgICAg
ICAgICAvLyBNYWtlIGEgb25lLXJvdy1oaWdoIHNhbXBsZSBhcnJheSB0aGF0IHdpbGwgZ28gYXdh
eSB3aGVuIGRvbmUgd2l0aAotICAgICAgICAgICAgLy8gaW1hZ2UuIEFsd2F5cyBtYWtlIGl0IGJp
ZyBlbm91Z2ggdG8gaG9sZCBhbiBSR0Igcm93LiAgU2luY2UgdGhpcwotICAgICAgICAgICAgLy8g
dXNlcyB0aGUgSUpHIG1lbW9yeSBtYW5hZ2VyLCBpdCBtdXN0IGJlIGFsbG9jYXRlZCBiZWZvcmUg
dGhlIGNhbGwKLSAgICAgICAgICAgIC8vIHRvIGpwZWdfc3RhcnRfY29tcHJlc3MoKS4KLSAgICAg
ICAgICAgIG1fc2FtcGxlcyA9ICgqbV9pbmZvLm1lbS0+YWxsb2Nfc2FycmF5KSgoal9jb21tb25f
cHRyKSAmbV9pbmZvLCBKUE9PTF9JTUFHRSwgbV9pbmZvLm91dHB1dF93aWR0aCAqIDQsIDEpOwot
CiAgICAgICAgICAgICBtX3N0YXRlID0gSlBFR19TVEFSVF9ERUNPTVBSRVNTOwogCiAgICAgICAg
ICAgICAvLyBXZSBjYW4gZmlsbCBpbiB0aGUgc2l6ZSBub3cgdGhhdCB0aGUgaGVhZGVyIGlzIGF2
YWlsYWJsZS4KQEAgLTM5MSw2ICszNzgsMTIgQEAgcHVibGljOgogCiAgICAgICAgICAgICBtX2Rl
Y29kZXItPnNldE9yaWVudGF0aW9uKHJlYWRJbWFnZU9yaWVudGF0aW9uKGluZm8oKSkpOwogCisj
aWYgRU5BQkxFKElNQUdFX0RFQ09ERVJfRE9XTl9TQU1QTElORykgJiYgZGVmaW5lZChUVVJCT19K
UEVHX1JHQl9TV0laWkxFKQorICAgICAgICAgICAgLy8gVGhlcmUncyBubyBwb2ludCBzd2l6emxl
IGRlY29kaW5nIGlmIGltYWdlIGRvd24gc2FtcGxpbmcgd2lsbAorICAgICAgICAgICAgLy8gYmUg
YXBwbGllZC4gUmV2ZXJ0IHRvIHVzaW5nIEpTQ19SR0IgaW4gdGhhdCBjYXNlLgorICAgICAgICAg
ICAgaWYgKG1fZGVjb2Rlci0+d2lsbERvd25TYW1wbGUoKSAmJiB0dXJib1N3aXp6bGVkKG1faW5m
by5vdXRfY29sb3Jfc3BhY2UpKQorICAgICAgICAgICAgICAgIG1faW5mby5vdXRfY29sb3Jfc3Bh
Y2UgPSBKQ1NfUkdCOworI2VuZGlmCiAgICAgICAgICAgICAvLyBBbGxvdyBjb2xvciBtYW5hZ2Vt
ZW50IG9mIHRoZSBkZWNvZGVkIFJHQkEgcGl4ZWxzIGlmIHBvc3NpYmxlLgogICAgICAgICAgICAg
aWYgKCFtX2RlY29kZXItPmlnbm9yZXNHYW1tYUFuZENvbG9yUHJvZmlsZSgpKSB7CiAgICAgICAg
ICAgICAgICAgQ29sb3JQcm9maWxlIHJnYklucHV0RGV2aWNlQ29sb3JQcm9maWxlID0gcmVhZENv
bG9yUHJvZmlsZShpbmZvKCkpOwpAQCAtNDA2LDkgKzM5OSwyMyBAQCBwdWJsaWM6CiAjZW5kaWYK
ICAgICAgICAgICAgIH0KIAorICAgICAgICAgICAgLy8gRG9uJ3QgYWxsb2NhdGUgYSBnaWFudCBh
bmQgc3VwZXJmbHVvdXMgbWVtb3J5IGJ1ZmZlciB3aGVuIHRoZQorICAgICAgICAgICAgLy8gaW1h
Z2UgaXMgYSBzZXF1ZW50aWFsIEpQRUcuCisgICAgICAgICAgICBtX2luZm8uYnVmZmVyZWRfaW1h
Z2UgPSBqcGVnX2hhc19tdWx0aXBsZV9zY2FucygmbV9pbmZvKTsKKworICAgICAgICAgICAgLy8g
VXNlZCB0byBzZXQgdXAgaW1hZ2Ugc2l6ZSBzbyBhcnJheXMgY2FuIGJlIGFsbG9jYXRlZC4KKyAg
ICAgICAgICAgIGpwZWdfY2FsY19vdXRwdXRfZGltZW5zaW9ucygmbV9pbmZvKTsKKworICAgICAg
ICAgICAgLy8gTWFrZSBhIG9uZS1yb3ctaGlnaCBzYW1wbGUgYXJyYXkgdGhhdCB3aWxsIGdvIGF3
YXkgd2hlbiBkb25lIHdpdGgKKyAgICAgICAgICAgIC8vIGltYWdlLiBBbHdheXMgbWFrZSBpdCBi
aWcgZW5vdWdoIHRvIGhvbGQgYW4gUkdCIHJvdy4gU2luY2UgdGhpcworICAgICAgICAgICAgLy8g
dXNlcyB0aGUgSUpHIG1lbW9yeSBtYW5hZ2VyLCBpdCBtdXN0IGJlIGFsbG9jYXRlZCBiZWZvcmUg
dGhlIGNhbGwKKyAgICAgICAgICAgIC8vIHRvIGpwZWdfc3RhcnRfY29tcHJlc3MoKS4KKyAgICAg
ICAgICAgIC8vIEZJWE1FOiBub3RlIHRoYXQgc29tZSBvdXRwdXQgY29sb3Igc3BhY2VzIGRvIG5v
dCBuZWVkIHRoZSBzYW1wbGVzCisgICAgICAgICAgICAvLyBidWZmZXIuIFJlbW92ZSB0aGlzIGFs
bG9jYXRpb24gZm9yIHRob3NlIGNvbG9yIHNwYWNlcy4KKyAgICAgICAgICAgIG1fc2FtcGxlcyA9
ICgqbV9pbmZvLm1lbS0+YWxsb2Nfc2FycmF5KSgoal9jb21tb25fcHRyKSAmbV9pbmZvLCBKUE9P
TF9JTUFHRSwgbV9pbmZvLm91dHB1dF93aWR0aCAqIDQsIDEpOworCiAgICAgICAgICAgICBpZiAo
bV9kZWNvZGluZ1NpemVPbmx5KSB7Ci0gICAgICAgICAgICAgICAgLy8gV2UgY2FuIHN0b3AgaGVy
ZS4gIFJlZHVjZSBvdXIgYnVmZmVyIGxlbmd0aCBhbmQgYXZhaWxhYmxlCi0gICAgICAgICAgICAg
ICAgLy8gZGF0YS4KKyAgICAgICAgICAgICAgICAvLyBXZSBjYW4gc3RvcCBoZXJlLiBSZWR1Y2Ug
b3VyIGJ1ZmZlciBsZW5ndGggYW5kIGF2YWlsYWJsZSBkYXRhLgogICAgICAgICAgICAgICAgIG1f
YnVmZmVyTGVuZ3RoIC09IG1faW5mby5zcmMtPmJ5dGVzX2luX2J1ZmZlcjsKICAgICAgICAgICAg
ICAgICBtX2luZm8uc3JjLT5ieXRlc19pbl9idWZmZXIgPSAwOwogICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwpAQCAtNjQxLDEyICs2NDgsNiBAQCB2b2lkIHNldFBpeGVsKEltYWdlRnJhbWUm
IGJ1ZmZlciwgSW1hZ2VGcmFtZTo6UGl4ZWxEYXRhKiBjdXJyZW50QWRkcmVzcywgSlNBTVBBUgog
ICAgIEpTQU1QTEUqIGpzYW1wbGUgPSAqc2FtcGxlcyArIGNvbHVtbiAqIChjb2xvclNwYWNlID09
IEpDU19SR0IgPyAzIDogNCk7CiAKICAgICBzd2l0Y2ggKGNvbG9yU3BhY2UpIHsKLSNpZiBkZWZp
bmVkKFRVUkJPX0pQRUdfUkdCX1NXSVpaTEUpCi0gICAgY2FzZSBKQ1NfRVhUX0JHUkE6Ci0gICAg
ICAgIGJ1ZmZlci5zZXRSR0JBKGN1cnJlbnRBZGRyZXNzLCBqc2FtcGxlWzJdLCBqc2FtcGxlWzFd
LCBqc2FtcGxlWzBdLCAweEZGKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBKQ1NfRVhUX1JH
QkE6IC8vIEZhbGxiYWNrIHRvIEpTQ19SR0IgY2FzZSBoZXJlLgotI2VuZGlmCiAgICAgY2FzZSBK
Q1NfUkdCOgogICAgICAgICBidWZmZXIuc2V0UkdCQShjdXJyZW50QWRkcmVzcywganNhbXBsZVsw
XSwganNhbXBsZVsxXSwganNhbXBsZVsyXSwgMHhGRik7CiAgICAgICAgIGJyZWFrOwpAQCAtNjcx
LDcgKzY3Miw2IEBAIGJvb2wgSlBFR0ltYWdlRGVjb2Rlcjo6b3V0cHV0U2NhbmxpbmVzKEltYWdl
RnJhbWUmIGJ1ZmZlcikKIHsKICAgICBKU0FNUEFSUkFZIHNhbXBsZXMgPSBtX3JlYWRlci0+c2Ft
cGxlcygpOwogICAgIGpwZWdfZGVjb21wcmVzc19zdHJ1Y3QqIGluZm8gPSBtX3JlYWRlci0+aW5m
bygpOwotCiAgICAgaW50IHdpZHRoID0gaXNTY2FsZWQgPyBtX3NjYWxlZENvbHVtbnMuc2l6ZSgp
IDogaW5mby0+b3V0cHV0X3dpZHRoOwogCiAgICAgd2hpbGUgKGluZm8tPm91dHB1dF9zY2FubGlu
ZSA8IGluZm8tPm91dHB1dF9oZWlnaHQpIHsKQEAgLTY5Miw3ICs2OTIsNiBAQCBib29sIEpQRUdJ
bWFnZURlY29kZXI6Om91dHB1dFNjYW5saW5lcyhJbWFnZUZyYW1lJiBidWZmZXIpCiAjZW5kaWYK
IAogICAgICAgICBJbWFnZUZyYW1lOjpQaXhlbERhdGEqIGN1cnJlbnRBZGRyZXNzID0gYnVmZmVy
LmdldEFkZHIoMCwgZGVzdFkpOwotCiAgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgd2lkdGg7
ICsreCkgewogICAgICAgICAgICAgc2V0UGl4ZWw8Y29sb3JTcGFjZT4oYnVmZmVyLCBjdXJyZW50
QWRkcmVzcywgc2FtcGxlcywgaXNTY2FsZWQgPyBtX3NjYWxlZENvbHVtbnNbeF0gOiB4KTsKICAg
ICAgICAgICAgICsrY3VycmVudEFkZHJlc3M7CkBAIC03NTEsMTIgKzc1MCw2IEBAIGJvb2wgSlBF
R0ltYWdlRGVjb2Rlcjo6b3V0cHV0U2NhbmxpbmVzKCkKICAgICAvLyB0aGUgcHJvcGVyIGNvZGUg
d2lsbCBiZSBnZW5lcmF0ZWQgYXQgY29tcGlsZSB0aW1lLgogICAgIGNhc2UgSkNTX1JHQjoKICAg
ICAgICAgcmV0dXJuIG91dHB1dFNjYW5saW5lczxKQ1NfUkdCPihidWZmZXIpOwotI2lmIGRlZmlu
ZWQoVFVSQk9fSlBFR19SR0JfU1dJWlpMRSkKLSAgICBjYXNlIEpDU19FWFRfUkdCQToKLSAgICAg
ICAgcmV0dXJuIG91dHB1dFNjYW5saW5lczxKQ1NfRVhUX1JHQkE+KGJ1ZmZlcik7Ci0gICAgY2Fz
ZSBKQ1NfRVhUX0JHUkE6Ci0gICAgICAgIHJldHVybiBvdXRwdXRTY2FubGluZXM8SkNTX0VYVF9C
R1JBPihidWZmZXIpOwotI2VuZGlmCiAgICAgY2FzZSBKQ1NfQ01ZSzoKICAgICAgICAgcmV0dXJu
IG91dHB1dFNjYW5saW5lczxKQ1NfQ01ZSz4oYnVmZmVyKTsKICAgICBkZWZhdWx0OgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1h
Z2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVn
L0pQRUdJbWFnZURlY29kZXIuaAppbmRleCBhZjc2YzZhMTEzOGVmYWUwN2RkYmYwYTk2MjM2ODMx
N2QxMDIwZjBmLi5iMWY2MWExNGQ5YTVlZDM5YzFlMDI2YjY2ZjM5NjgxZGUxYzk2MDRiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJ
bWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9qcGVnL0pQRUdJbWFnZURlY29kZXIuaApAQCAtNjQsNiArNjQsMTIgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICAvLyBKUEVHSW1hZ2VSZWFkZXIhCiAgICAgICAgIHZpcnR1YWwgYm9v
bCBzZXRGYWlsZWQoKTsKIAorICAgICAgICBib29sIHdpbGxEb3duU2FtcGxlKCkKKyAgICAgICAg
eworICAgICAgICAgICAgQVNTRVJUKEltYWdlRGVjb2Rlcjo6aXNTaXplQXZhaWxhYmxlKCkpOwor
ICAgICAgICAgICAgcmV0dXJuIG1fc2NhbGVkOworICAgICAgICB9CisKICAgICAgICAgYm9vbCBv
dXRwdXRTY2FubGluZXMoKTsKICAgICAgICAgdm9pZCBqcGVnQ29tcGxldGUoKTsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>