<?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>81905</bug_id>
          
          <creation_ts>2012-03-22 07:10:17 -0700</creation_ts>
          <short_desc>[GTK] WebAudio channelSize issue</short_desc>
          <delta_ts>2012-03-30 00:46:20 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="sangho park">gouache95</reporter>
          <assigned_to name="Philippe Normand">pnormand</assigned_to>
          <cc>crogers</cc>
    
    <cc>gouache95</cc>
    
    <cc>mrobinson</cc>
    
    <cc>pnormand</cc>
    
    <cc>s.choi</cc>
    
    <cc>slomo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>585227</commentid>
    <comment_count>0</comment_count>
    <who name="sangho park">gouache95</who>
    <bug_when>2012-03-22 07:10:17 -0700</bug_when>
    <thetext>Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:164
m_channelSize += GST_BUFFER_OFFSET_END(buffer) - GST_BUFFER_OFFSET(buffer);

in case of ogg file input without BOS information (e.g: http://labs.dinahmoe.com/ToneCraft/)
m_channelSize will be always &apos;0&apos;

so I think.. the code is needed to change like this,
m_channelSize += buffer-&gt;size * 0.25

i tested tonecraft page and succeed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585240</commentid>
    <comment_count>1</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-03-22 07:26:08 -0700</bug_when>
    <thetext>(In reply to comment #0)
&gt; Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:164
&gt; m_channelSize += GST_BUFFER_OFFSET_END(buffer) - GST_BUFFER_OFFSET(buffer);
&gt; 
&gt; in case of ogg file input without BOS information (e.g: http://labs.dinahmoe.com/ToneCraft/)
&gt; m_channelSize will be always &apos;0&apos;
&gt; 
&gt; so I think.. the code is needed to change like this,
&gt; m_channelSize += buffer-&gt;size * 0.25
&gt; 

Hum, can you explain this please?

Maybe it&apos;d be good to have a layout test for this issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585274</commentid>
    <comment_count>2</comment_count>
    <who name="sangho park">gouache95</who>
    <bug_when>2012-03-22 07:51:30 -0700</bug_when>
    <thetext>when i test &quot;http://labs.dinahmoe.com/ToneCraft/&quot; page,
gstreamer&apos;s &apos;oddgemux&apos; plugin warns... &quot;page is not BOS page, all streams identified&quot;.
as i know, most webaudio example page that contains ogg are same.

at this time, GST_BUFFER_OFFSET_END(buffer) and GST_BUFFER_OFFSET(buffer) were &apos;0&apos;. so i need a meaningful channel size.

what do you think about this situation?
hmm.. imo.. ogg wihout BOS information is not perfect file, but not evil...
and channel size can be calculated by size of buffer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585320</commentid>
    <comment_count>3</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-03-22 08:27:04 -0700</bug_when>
    <thetext>Sebastian, can you give some advice on this issue?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586266</commentid>
    <comment_count>4</comment_count>
      <attachid>133469</attachid>
    <who name="sangho park">gouache95</who>
    <bug_when>2012-03-23 06:13:41 -0700</bug_when>
    <thetext>Created attachment 133469
sample ogg file</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586283</commentid>
    <comment_count>5</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-03-23 06:31:25 -0700</bug_when>
    <thetext>I&apos;ll upload a patch in few minutes. Can you test it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586284</commentid>
    <comment_count>6</comment_count>
    <who name="sangho park">gouache95</who>
    <bug_when>2012-03-23 06:32:49 -0700</bug_when>
    <thetext>sure I&apos;m ready~~ :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586287</commentid>
    <comment_count>7</comment_count>
      <attachid>133472</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-03-23 06:36:10 -0700</bug_when>
    <thetext>Created attachment 133472
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586313</commentid>
    <comment_count>8</comment_count>
    <who name="sangho park">gouache95</who>
    <bug_when>2012-03-23 07:16:08 -0700</bug_when>
    <thetext>hmm.. i&apos;m compiling now.. but

in AudioFileReaderGStreamer.cpp, line 151~156 doesn&apos;t need anymore, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586328</commentid>
    <comment_count>9</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-03-23 07:28:47 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; hmm.. i&apos;m compiling now.. but
&gt; 
&gt; in AudioFileReaderGStreamer.cpp, line 151~156 doesn&apos;t need anymore, right?

Thue, but it&apos;s unrelated to this patch. Can be cleaned up when I land this one though, looks harmless!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586339</commentid>
    <comment_count>10</comment_count>
    <who name="sangho park">gouache95</who>
    <bug_when>2012-03-23 07:43:51 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; I&apos;ll upload a patch in few minutes. Can you test it?

test done. looks great!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>588726</commentid>
    <comment_count>11</comment_count>
      <attachid>133472</attachid>
    <who name="Sebastian Dröge (slomo)">slomo</who>
    <bug_when>2012-03-27 03:46:48 -0700</bug_when>
    <thetext>Comment on attachment 133472
Patch

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

&gt; Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:166
&gt; +    GstClockTime duration = gst_audio_duration_from_pad_buffer(sinkPad.get(), buffer);

This function is not in 0.11 anymore, just calculate the duration yourself from the buffer size and the caps (and in 0.11 the GstAudioInfo).

Other than that this is the correct thing to do, using the offset fields will only cause problems.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>588750</commentid>
    <comment_count>12</comment_count>
      <attachid>134022</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-03-27 04:30:24 -0700</bug_when>
    <thetext>Created attachment 134022
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>588756</commentid>
    <comment_count>13</comment_count>
      <attachid>134022</attachid>
    <who name="Sebastian Dröge (slomo)">slomo</who>
    <bug_when>2012-03-27 04:40:44 -0700</bug_when>
    <thetext>Comment on attachment 134022
Patch

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

&gt; Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:166
&gt; +    if (!gst_structure_get_int(structure, &quot;width&quot;, &amp;width) || !width) {

Note that all this will only work with 0.10 but I guess that&apos;s fine as this code has to be ported to 0.11/1.0 anyway

&gt; Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:172
&gt; +    long bytes = GST_BUFFER_SIZE(buffer);

Better use guint64 or something similar here instead of long. For the calculation one line below you need a 64 bit integer to prevent overflows.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>588763</commentid>
    <comment_count>14</comment_count>
      <attachid>134022</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-03-27 04:46:01 -0700</bug_when>
    <thetext>Comment on attachment 134022
Patch

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

&gt;&gt; Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:166
&gt;&gt; +    if (!gst_structure_get_int(structure, &quot;width&quot;, &amp;width) || !width) {
&gt; 
&gt; Note that all this will only work with 0.10 but I guess that&apos;s fine as this code has to be ported to 0.11/1.0 anyway

Yes.

&gt;&gt; Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:172
&gt;&gt; +    long bytes = GST_BUFFER_SIZE(buffer);
&gt; 
&gt; Better use guint64 or something similar here instead of long. For the calculation one line below you need a 64 bit integer to prevent overflows.

Oh hum yes, actually I can just directly use GST_BUFFER_SIZE below.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>588810</commentid>
    <comment_count>15</comment_count>
      <attachid>134038</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-03-27 05:57:24 -0700</bug_when>
    <thetext>Created attachment 134038
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589951</commentid>
    <comment_count>16</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-03-28 07:41:27 -0700</bug_when>
    <thetext>Martin can you have a look at this patch please? Sebastian did a first pass :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589958</commentid>
    <comment_count>17</comment_count>
      <attachid>134038</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-03-28 07:51:31 -0700</bug_when>
    <thetext>Comment on attachment 134038
Patch

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

&gt; Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:172
&gt; +    GstClockTime duration = (reinterpret_cast&lt;guint64&gt;(GST_BUFFER_SIZE(buffer)) * 8 * GST_SECOND) / (sampleRate * channels * width);

Oh hum that should be a static_cast.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591935</commentid>
    <comment_count>18</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-03-30 00:46:20 -0700</bug_when>
    <thetext>Committed r112646: &lt;http://trac.webkit.org/changeset/112646&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>133469</attachid>
            <date>2012-03-23 06:13:41 -0700</date>
            <delta_ts>2012-03-23 06:13:41 -0700</delta_ts>
            <desc>sample ogg file</desc>
            <filename>drums_1.ogg</filename>
            <type>video/ogg</type>
            <size>9800</size>
            <attacher name="sangho park">gouache95</attacher>
            
              <data encoding="base64">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
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkTQM0zwM0zwMAAAAAAAAAzfMATxQBTxQBAAAA
AAAAwPI8wBM9wBNFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcTQM0zwM0zwMAAAAAAAAAy/MATxQBzxMBAAAAAAAAQPM8
wBNFwBNFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAQ4A
AAEWQqEhKwKAOAEAhyRBkiBJ0DSAZFnQNGgaTBMgWRY0DZoG0wQAAAAAAAAAAABA8jRoGjQNogiQ
NA+aBk2DKAIAAAAAAAAAAAAgaRo0DZoGUQRImgZNg6ZBFAEAAAAAAAAAAADQTBOiCFGEaQI804Qo
QhRhmgAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAACAAQcAgAATykChISsCgDgBAIeiWBYAADiSY1kA
AOA4kmUBAIBlWaIIAACWpYkiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAIABBwCAABPKQKEhKwGAKAAAh6JYFnAcywKOY1lA
kiwLYFkAzQNoGkAUAYAAAIACBwCAABs0JRYHKDRkJQAQBQDgUBTL0jRR5DiWpWmiyJEsS9NEkWVp
mueZJjTN80wRoud5pgnP8zzThGmKoqoCUTRNAQAABQ4AAAE2aEosDlBoyEoAICQAwOE4luV5ouh5
omiaqspxLMvzRFEUTVNVVZXjaJbniaIomqaqqirL0jTPE0VRNE1VVV1omueJoiiapqq6LjzP80RR
FE1TVV0Xnud5oiiKpqmqrgtRFEXTNE1VVVXXBaJomqapqqrqukAURdM0VVVVXReIoiiapqqqrusC
0zRNVVVV15VdgGmqqqq6rusCVFVVXdd1ZRmgqqrquq4rywDXdV3XlWVZBuC6ruvKsiwAAODAAQAg
wAg6yaiyCBtNuPAAFBqyIgCIAgAAjGFKMaUMYxJCCqFhTEJIIWRSUioppQpCKiWVUkFIpaRSMkot
pZZSBSGVkkqpIKRSUikFAIAdOACAHVgIhYasBADyAAAIY5RijDHnJEJKMeaccxIhpRhzzjmpFGPO
OeeclJIx55xzTkrpmHPOOSelZMw555yTUjrnnHPOSSmldM4556SUUkLoHHRSSimdcw5CAQBABQ4A
AAE2imxOMBJUaMhKACAVAMDgOJalaZ4niqZpSZKmeZ7niaaqapKkaZ4niqapqjzP80RRFE1TVXme
54miKJqmqnJdURRF0zRNVSXLomiKpqmqqgvTNE3TVFXXhWmapmmqquvCtlVVVV3XdWHbqqqqruvK
wHVd13VlGciu67quLAsAAE9wAAAqsGF1hJOiscBCQ1YCABkAAIQxCCmEEFLIIKQQQkgphZAAAIAB
BwCAABPKQKEhKwGAVAAAgBBrrbXWWmsNY9Zaa6211hLnrLXWWmuttdZaa6211lprrbXWWmuttdZa
a6211lprrbXWWmuttdZaa6211lprrbXWWmuttdZaa6211lprrbXWWmuttdZaa6211lprrbXWWmut
tdZaa621VgAgdoUDwE6EDasjnBSNBRYashIACAcAAIxBiDHoJJRSSoUQY9BJSKW1GCuEGINQSkqt
tZg85xyEUlpqLcbkOecgpNRajDEm10JIKaWWYouxuBZCKim11mKsyRiVUmotthhr7cWolEpLMcYY
azDG5tRajDHWWosxOrcSS4wxxlqEEcbFFmOstdcijBGyxdJarbUGY4yxubXYas25GCOMri21VmvN
BQCYPDgAQCXYOMNK0lnhaHChISsBgNwAAAIhpRhjzDnnnHMOQgipUow55xyEEEIIoZRSUqUYc845
CCGEUEIppaSMMeYchBBCCKWUUkppKWXMOQghhFBKKaWU0lLrnHMQQgillFJKKSWl1DnnIIRQSiml
lFJKSi2EEEIooZRSSimllJRSSiGEUEoppZRSSimppZRCCKWUUkoppZRSUkophRBCKaWUUkoppaSU
WiullFJKKaWUUkpJLbWUUiillFJKKaWUklpKKaVSSimllFJKKSWl1FJKpZRSSimllFJKS6mllEop
pZRSSimllJRSSimlVEoppZRSSikppdRaSimllEoppZRSWmsppZZSKqWUUkoppbTUWmsttZRKKaWU
UkpprbWUUkoplVJKKaWUUgAA0IEDAECAEZUWYqcZVx6BIwoZJqBCQ1YCAGQAAAyjlFJJLUWCIqUY
pJZCJRVzUFKKKHMOUqypQs4g5iSVijGElINUMgeVUsxBCiFlTCkGrZUYOsaYo5hqKqFjDAAAAEEA
AIGQCQQKoMBABgAcICRIAQCFBYYOESJAjAID4+LSBgAgCJEZIhGxGCQmVANFxXQAsLjAkA8AGRob
aRcX0GWAC7q460AIQQhCEIsDKCABByfc8MQbnnCDE3SKSh0IAAAAAIADADwAACQbQERENHMcHR4f
ICEiIyQlT2dnUwABAAAAAAAAAAAAAAAAAgAAAJPkK6YBPCYnKAIAAAAA4AYAHwAASQoQERHNHEeH
xwdIiMgISYnJCUoAACCAAAAAAAAIIAABAQEAAAAAgAAAAAABAU9nZ1MAAMBKAAAAAAAAAAAAAAMA
AAATLVtiHD04tmtuZmhubXF3hIeb1P8n/37/af+F/4b/if/copNPH42HdZXOW3Ty6aPxsK7SeS7A
SpECKsDMRCeFkYHo95dSJELoIHCIHHXD+Dt7fq2cSikDKzcMLH8BnKr9x09i1c8+VfuPn8Sqn30u
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
DEKywL7BAOwbyQglrKIIDMCNMNOhxSGnB4QDXkX83rYvOCCB01Twa1veEIAAi7zlfm4V32rEqypX
ZKkCAAaAogGIauVUFu0RIK+MH4fO2seb2Z+S76/moy46uEmddV1P87Sdh6V6ojU7z3Ksl+pF/NQs
5f1N12b0+Hv9vM4RtNX0ctvqKX047m8dfqptvZ+d12vW18szj4tf1yVf2+HkcrSfe5k2mym4N/Ql
/kFle/45Pqv/mDunNShTswy9uGt+v1Xzn+e5fJY/gKlfcA78chy4iAtkh4TeHi5CXwUZojJPwwP/
wLbiZB3cJ7Vxz239rvsTcmf9xl1XHTq3iv42v3c4Ma1763Mek/kvj7UOZ5+zM9Nf5uI0m6KqfjP/
5fzqQ3C/66I5pBmqYcdT7mHrZA+z21NsyT9Mn0gNzS4eitN8RkfMzFC/IulD2KfYM5YfKeKbrNe2
jLzY8MrGSLbBvPTfV6QPxgjLMrp8ISRjxG1sACT4CzG0jgyKaF/8fhgjZIufwQJZej7WawPAbq5M
6hNauqlZi9DqLJ2BBgoAAT5F/Ny2NziggENV8Xtbv5gADIDTj20d26iqnKtGFSqqGAAAgPXZ6uuY
Rbb38Cu95n1dL3W5rJeP9vHz8lzBLNvFSca8XTAzafph3c/hvLy8wNP1WPtZ5OdW5vLP2qkjp71p
4/z2NZcs+6rL9Gtez2n/1KrEi6dHh9t+uWTSu8OEy+T12eVad00/zu0DyO2A1TKXu3tVHAXf+/vT
d4fIvcvtB5LJ55bY6HNSmXVfa611cL4umbVm/XxO58+5tuJSg9Xzu8ZfkxQ7MzgmVz+zJtw8cu0j
5r427sm4GYKnKKLHhf0Tnqa5aweI01Mnk12XlG8/M3vMstP9z1Yrh3ylHZ/1D/7qNc8NcVctTJ3z
RVszzKwf978U60o9J91d6nx/f+KC8yz59cz/1+eZLy1nhnXN983n2C8gsOVbtngFbPZN85JVGPtG
vMhaiS++uG0jBEYfQJZuGQBb1heybdtmNYAew9hnM8vY8EfCtkqVl/zyeqBpX+1hAYQBI2JNJy83
s5DBGABRPlX82tYPBKCB01Tx8+wfTAASONH3c86Zc41cVW2NqqhUAAAAxk57FPLkcDvE+4pl0vNx
bqeP9vFW58ZBTN0VXyvqNH55uRSX462dIxf3vxPuH/9/cYzvn/elBXk5V555vs7lW27PUcHL5P7t
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
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133472</attachid>
            <date>2012-03-23 06:36:10 -0700</date>
            <delta_ts>2012-03-27 04:30:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>Patch.patch</filename>
            <type>text/plain</type>
            <size>2762</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSA4NjdmNzUxMmNkNTViMTA0NjZmNzc5YTUzNDc1MDYxZjI5M2ZkNWQ2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBGcmksIDIzIE1hciAyMDEyIDE0OjM1OjQ3ICswMTAwClN1YmplY3Q6IFtQQVRDSF0g
UGF0Y2gKCi0tLQogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCAgIDEzICsrKysrKysrKysrKysKIC4uLi9hdWRpby9nc3RyZWFtZXIvQXVkaW9GaWxl
UmVhZGVyR1N0cmVhbWVyLmNwcCAgIHwgICAxMyArKysrKysrKysrKystCiAyIGZpbGVzIGNoYW5n
ZWQsIDI1IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDU4MGU1
MTguLmE5ZTFkZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0wMy0yMyAgUGhp
bGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gV2Vi
QXVkaW8gY2hhbm5lbFNpemUgaXNzdWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTgxOTA1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9GaWxlUmVhZGVy
R1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRmlsZVJlYWRlcjo6aGFuZGxl
QnVmZmVyKTogQ2FsY3VsYXRlIHRoZSBhdWRpbworICAgICAgICBidWZmZXIgZHVyYXRpb24gYW5k
IGZyYW1lcyBudW1iZXIgZnJvbSB0aGUgYnVmZmVyIGFuZCBwYWQgaW5zdGVhZAorICAgICAgICBv
ZiByZWx5aW5nIG9uIHRoZSBidWZmZXIgb2ZmZXRzIHRoYXQgYXJlIG5vdCBhbHdheXMgY29ycmVj
dGx5IHNldAorICAgICAgICBkZXBlbmRpbmcgb24gdGhlIGF1ZGlvIGZpbGUgZm9ybWF0LgorCiAy
MDEyLTAzLTEyICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAg
ICAgICBbSlNDXSBBdWRpb0Rlc3RpbmF0aW9uTm9kZSBldmVudCBub3RpZmljYXRpb24gZXJyb3Ig
b24gQXVkaW9Db250ZXh0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9nc3RyZWFtZXIvQXVkaW9GaWxlUmVhZGVyR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0ZpbGVSZWFkZXJHU3RyZWFtZXIuY3BwCmlu
ZGV4IGJiNzFjZDEuLmJiN2FmODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL2dzdHJlYW1lci9BdWRpb0ZpbGVSZWFkZXJHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0ZpbGVSZWFkZXJHU3RyZWFt
ZXIuY3BwCkBAIC0xNTUsMTMgKzE1NSwyNCBAQCBHc3RGbG93UmV0dXJuIEF1ZGlvRmlsZVJlYWRl
cjo6aGFuZGxlQnVmZmVyKEdzdEFwcFNpbmsqIHNpbmspCiAgICAgICAgIHJldHVybiBHU1RfRkxP
V19FUlJPUjsKICAgICB9CiAKKyAgICBnaW50IHNhbXBsZVJhdGUgPSAwOworICAgIGlmICghZ3N0
X3N0cnVjdHVyZV9nZXRfaW50KHN0cnVjdHVyZSwgInJhdGUiLCAmc2FtcGxlUmF0ZSkgfHwgIXNh
bXBsZVJhdGUpIHsKKyAgICAgICAgZ3N0X2NhcHNfdW5yZWYoY2Fwcyk7CisgICAgICAgIGdzdF9i
dWZmZXJfdW5yZWYoYnVmZmVyKTsKKyAgICAgICAgcmV0dXJuIEdTVF9GTE9XX0VSUk9SOworICAg
IH0KKworICAgIEdSZWZQdHI8R3N0UGFkPiBzaW5rUGFkID0gYWRvcHRHUmVmKGdzdF9lbGVtZW50
X2dldF9zdGF0aWNfcGFkKEdTVF9FTEVNRU5UKHNpbmspLCAic2luayIpKTsKKyAgICBHc3RDbG9j
a1RpbWUgZHVyYXRpb24gPSBnc3RfYXVkaW9fZHVyYXRpb25fZnJvbV9wYWRfYnVmZmVyKHNpbmtQ
YWQuZ2V0KCksIGJ1ZmZlcik7CisgICAgaW50IGZyYW1lcyA9IEdTVF9DTE9DS19USU1FX1RPX0ZS
QU1FUyhkdXJhdGlvbiwgc2FtcGxlUmF0ZSk7CisKICAgICAvLyBDaGVjayB0aGUgZmlyc3QgYXVk
aW8gY2hhbm5lbC4gVGhlIGJ1ZmZlciBpcyBzdXBwb3NlZCB0byBzdG9yZQogICAgIC8vIGRhdGEg
b2YgYSBzaW5nbGUgY2hhbm5lbCBhbnl3YXkuCiAgICAgR3N0QXVkaW9DaGFubmVsUG9zaXRpb24q
IHBvc2l0aW9ucyA9IGdzdF9hdWRpb19nZXRfY2hhbm5lbF9wb3NpdGlvbnMoc3RydWN0dXJlKTsK
ICAgICBzd2l0Y2ggKHBvc2l0aW9uc1swXSkgewogICAgIGNhc2UgR1NUX0FVRElPX0NIQU5ORUxf
UE9TSVRJT05fRlJPTlRfTEVGVDoKICAgICAgICAgZ3N0X2J1ZmZlcl9saXN0X2l0ZXJhdG9yX2Fk
ZChtX2Zyb250TGVmdEJ1ZmZlcnNJdGVyYXRvciwgYnVmZmVyKTsKLSAgICAgICAgbV9jaGFubmVs
U2l6ZSArPSBHU1RfQlVGRkVSX09GRlNFVF9FTkQoYnVmZmVyKSAtIEdTVF9CVUZGRVJfT0ZGU0VU
KGJ1ZmZlcik7CisgICAgICAgIG1fY2hhbm5lbFNpemUgKz0gZnJhbWVzOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX0ZST05UX1JJR0hUOgogICAg
ICAgICBnc3RfYnVmZmVyX2xpc3RfaXRlcmF0b3JfYWRkKG1fZnJvbnRSaWdodEJ1ZmZlcnNJdGVy
YXRvciwgYnVmZmVyKTsKLS0gCjEuNy45LjE=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134022</attachid>
            <date>2012-03-27 04:30:24 -0700</date>
            <delta_ts>2012-03-27 05:57:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81905-20120327133046.patch</filename>
            <type>text/plain</type>
            <size>2656</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyMjM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODIzZjk0N2M5MzBkYTUz
M2RhZjc2ZTFiYjc2MjJkYTViYWUxZjgxOS4uNTQ0Y2M1ZDUxNGM3NGNkZWNlNjJmZWJiNmUxZWI0
MmQ3YTA0YzM5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEyLTAzLTI3ICBQaGls
aXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBXZWJB
dWRpbyBjaGFubmVsU2l6ZSBpc3N1ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODE5MDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0ZpbGVSZWFkZXJH
U3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9GaWxlUmVhZGVyOjpoYW5kbGVC
dWZmZXIpOiBDYWxjdWxhdGUgdGhlIGF1ZGlvCisgICAgICAgIGJ1ZmZlciBkdXJhdGlvbiBhbmQg
ZnJhbWVzIG51bWJlciBmcm9tIHRoZSBidWZmZXIgYW5kIHBhZCBpbnN0ZWFkCisgICAgICAgIG9m
IHJlbHlpbmcgb24gdGhlIGJ1ZmZlciBvZmZldHMgdGhhdCBhcmUgbm90IGFsd2F5cyBjb3JyZWN0
bHkgc2V0CisgICAgICAgIGRlcGVuZGluZyBvbiB0aGUgYXVkaW8gZmlsZSBmb3JtYXQuCisKIDIw
MTItMDMtMjcgIExldmkgV2VpbnRyYXViICA8bGV2aXdAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFVwZGF0ZSB1c2FnZSBvZiBMYXlvdXRVbml0cyBpbiBSZW5kZXJMaXN0TWFya2VyCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9GaWxlUmVh
ZGVyR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1l
ci9BdWRpb0ZpbGVSZWFkZXJHU3RyZWFtZXIuY3BwCmluZGV4IDFjZjBhOWJhNjJkZWE0YTc0YWZh
MDc0MjI2Yzc1MmVjZGE3YWYyNWMuLjg5ZWI2Nzc1ZjRmYzM0ZDZkMGM5NjNmZDg1N2IwYzM2ODdi
ODMxOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1l
ci9BdWRpb0ZpbGVSZWFkZXJHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0ZpbGVSZWFkZXJHU3RyZWFtZXIuY3BwCkBAIC0xNTUs
MTMgKzE1NSwzMSBAQCBHc3RGbG93UmV0dXJuIEF1ZGlvRmlsZVJlYWRlcjo6aGFuZGxlQnVmZmVy
KEdzdEFwcFNpbmsqIHNpbmspCiAgICAgICAgIHJldHVybiBHU1RfRkxPV19FUlJPUjsKICAgICB9
CiAKKyAgICBnaW50IHNhbXBsZVJhdGUgPSAwOworICAgIGlmICghZ3N0X3N0cnVjdHVyZV9nZXRf
aW50KHN0cnVjdHVyZSwgInJhdGUiLCAmc2FtcGxlUmF0ZSkgfHwgIXNhbXBsZVJhdGUpIHsKKyAg
ICAgICAgZ3N0X2NhcHNfdW5yZWYoY2Fwcyk7CisgICAgICAgIGdzdF9idWZmZXJfdW5yZWYoYnVm
ZmVyKTsKKyAgICAgICAgcmV0dXJuIEdTVF9GTE9XX0VSUk9SOworICAgIH0KKworICAgIGdpbnQg
d2lkdGggPSAwOworICAgIGlmICghZ3N0X3N0cnVjdHVyZV9nZXRfaW50KHN0cnVjdHVyZSwgIndp
ZHRoIiwgJndpZHRoKSB8fCAhd2lkdGgpIHsKKyAgICAgICAgZ3N0X2NhcHNfdW5yZWYoY2Fwcyk7
CisgICAgICAgIGdzdF9idWZmZXJfdW5yZWYoYnVmZmVyKTsKKyAgICAgICAgcmV0dXJuIEdTVF9G
TE9XX0VSUk9SOworICAgIH0KKworICAgIGxvbmcgYnl0ZXMgPSBHU1RfQlVGRkVSX1NJWkUoYnVm
ZmVyKTsKKyAgICBHc3RDbG9ja1RpbWUgZHVyYXRpb24gPSAoYnl0ZXMgKiA4ICogR1NUX1NFQ09O
RCkgLyAoc2FtcGxlUmF0ZSAqIGNoYW5uZWxzICogd2lkdGgpOworICAgIGludCBmcmFtZXMgPSBH
U1RfQ0xPQ0tfVElNRV9UT19GUkFNRVMoZHVyYXRpb24sIHNhbXBsZVJhdGUpOworCiAgICAgLy8g
Q2hlY2sgdGhlIGZpcnN0IGF1ZGlvIGNoYW5uZWwuIFRoZSBidWZmZXIgaXMgc3VwcG9zZWQgdG8g
c3RvcmUKICAgICAvLyBkYXRhIG9mIGEgc2luZ2xlIGNoYW5uZWwgYW55d2F5LgogICAgIEdzdEF1
ZGlvQ2hhbm5lbFBvc2l0aW9uKiBwb3NpdGlvbnMgPSBnc3RfYXVkaW9fZ2V0X2NoYW5uZWxfcG9z
aXRpb25zKHN0cnVjdHVyZSk7CiAgICAgc3dpdGNoIChwb3NpdGlvbnNbMF0pIHsKICAgICBjYXNl
IEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX0ZST05UX0xFRlQ6CiAgICAgICAgIGdzdF9idWZm
ZXJfbGlzdF9pdGVyYXRvcl9hZGQobV9mcm9udExlZnRCdWZmZXJzSXRlcmF0b3IsIGJ1ZmZlcik7
Ci0gICAgICAgIG1fY2hhbm5lbFNpemUgKz0gR1NUX0JVRkZFUl9PRkZTRVRfRU5EKGJ1ZmZlcikg
LSBHU1RfQlVGRkVSX09GRlNFVChidWZmZXIpOworICAgICAgICBtX2NoYW5uZWxTaXplICs9IGZy
YW1lczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElP
Tl9GUk9OVF9SSUdIVDoKICAgICAgICAgZ3N0X2J1ZmZlcl9saXN0X2l0ZXJhdG9yX2FkZChtX2Zy
b250UmlnaHRCdWZmZXJzSXRlcmF0b3IsIGJ1ZmZlcik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134038</attachid>
            <date>2012-03-27 05:57:24 -0700</date>
            <delta_ts>2012-03-28 10:33:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81905-20120327145747.patch</filename>
            <type>text/plain</type>
            <size>2663</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyMjUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDM2OWFiMTVjNzBiMjMw
ODA4ODRjNzVjMGI2MzA1YjA4YjRjNzZiYS4uNGEyOWRiMjFlMTIwMWRkMWQwZjNkZTMzZTFkNTVk
MWQ2MjAwYzAxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEyLTAzLTI3ICBQaGls
aXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBXZWJB
dWRpbyBjaGFubmVsU2l6ZSBpc3N1ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODE5MDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0ZpbGVSZWFkZXJH
U3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9GaWxlUmVhZGVyOjpoYW5kbGVC
dWZmZXIpOiBDYWxjdWxhdGUgdGhlIGF1ZGlvCisgICAgICAgIGJ1ZmZlciBkdXJhdGlvbiBhbmQg
ZnJhbWVzIG51bWJlciBmcm9tIHRoZSBidWZmZXIgYW5kIGNhcHMgaW5zdGVhZAorICAgICAgICBv
ZiByZWx5aW5nIG9uIHRoZSBidWZmZXIgb2ZmZXRzIHRoYXQgYXJlIG5vdCBhbHdheXMgY29ycmVj
dGx5IHNldAorICAgICAgICBkZXBlbmRpbmcgb24gdGhlIGF1ZGlvIGZpbGUgZm9ybWF0LgorCiAy
MDEyLTAzLTI2ICBMZXZpIFdlaW50cmF1YiAgPGxldml3QGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBVbnJldmlld2VkLiBSZW1vdmluZyBjaGFuZ2UgbWFya2VycyBmcm9tIENoYW5nZUxvZy4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Zp
bGVSZWFkZXJHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0
cmVhbWVyL0F1ZGlvRmlsZVJlYWRlckdTdHJlYW1lci5jcHAKaW5kZXggMWNmMGE5YmE2MmRlYTRh
NzRhZmEwNzQyMjZjNzUyZWNkYTdhZjI1Yy4uMmFiOWVhNzEwNzk4NzNjYzVlODY3MGQ3MTRiNzFh
NDBjZTAyYjkxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0
cmVhbWVyL0F1ZGlvRmlsZVJlYWRlckdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRmlsZVJlYWRlckdTdHJlYW1lci5jcHAKQEAg
LTE1NSwxMyArMTU1LDMwIEBAIEdzdEZsb3dSZXR1cm4gQXVkaW9GaWxlUmVhZGVyOjpoYW5kbGVC
dWZmZXIoR3N0QXBwU2luayogc2luaykKICAgICAgICAgcmV0dXJuIEdTVF9GTE9XX0VSUk9SOwog
ICAgIH0KIAorICAgIGdpbnQgc2FtcGxlUmF0ZSA9IDA7CisgICAgaWYgKCFnc3Rfc3RydWN0dXJl
X2dldF9pbnQoc3RydWN0dXJlLCAicmF0ZSIsICZzYW1wbGVSYXRlKSB8fCAhc2FtcGxlUmF0ZSkg
eworICAgICAgICBnc3RfY2Fwc191bnJlZihjYXBzKTsKKyAgICAgICAgZ3N0X2J1ZmZlcl91bnJl
ZihidWZmZXIpOworICAgICAgICByZXR1cm4gR1NUX0ZMT1dfRVJST1I7CisgICAgfQorCisgICAg
Z2ludCB3aWR0aCA9IDA7CisgICAgaWYgKCFnc3Rfc3RydWN0dXJlX2dldF9pbnQoc3RydWN0dXJl
LCAid2lkdGgiLCAmd2lkdGgpIHx8ICF3aWR0aCkgeworICAgICAgICBnc3RfY2Fwc191bnJlZihj
YXBzKTsKKyAgICAgICAgZ3N0X2J1ZmZlcl91bnJlZihidWZmZXIpOworICAgICAgICByZXR1cm4g
R1NUX0ZMT1dfRVJST1I7CisgICAgfQorCisgICAgR3N0Q2xvY2tUaW1lIGR1cmF0aW9uID0gKHJl
aW50ZXJwcmV0X2Nhc3Q8Z3VpbnQ2ND4oR1NUX0JVRkZFUl9TSVpFKGJ1ZmZlcikpICogOCAqIEdT
VF9TRUNPTkQpIC8gKHNhbXBsZVJhdGUgKiBjaGFubmVscyAqIHdpZHRoKTsKKyAgICBpbnQgZnJh
bWVzID0gR1NUX0NMT0NLX1RJTUVfVE9fRlJBTUVTKGR1cmF0aW9uLCBzYW1wbGVSYXRlKTsKKwog
ICAgIC8vIENoZWNrIHRoZSBmaXJzdCBhdWRpbyBjaGFubmVsLiBUaGUgYnVmZmVyIGlzIHN1cHBv
c2VkIHRvIHN0b3JlCiAgICAgLy8gZGF0YSBvZiBhIHNpbmdsZSBjaGFubmVsIGFueXdheS4KICAg
ICBHc3RBdWRpb0NoYW5uZWxQb3NpdGlvbiogcG9zaXRpb25zID0gZ3N0X2F1ZGlvX2dldF9jaGFu
bmVsX3Bvc2l0aW9ucyhzdHJ1Y3R1cmUpOwogICAgIHN3aXRjaCAocG9zaXRpb25zWzBdKSB7CiAg
ICAgY2FzZSBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9GUk9OVF9MRUZUOgogICAgICAgICBn
c3RfYnVmZmVyX2xpc3RfaXRlcmF0b3JfYWRkKG1fZnJvbnRMZWZ0QnVmZmVyc0l0ZXJhdG9yLCBi
dWZmZXIpOwotICAgICAgICBtX2NoYW5uZWxTaXplICs9IEdTVF9CVUZGRVJfT0ZGU0VUX0VORChi
dWZmZXIpIC0gR1NUX0JVRkZFUl9PRkZTRVQoYnVmZmVyKTsKKyAgICAgICAgbV9jaGFubmVsU2l6
ZSArPSBmcmFtZXM7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgR1NUX0FVRElPX0NIQU5ORUxf
UE9TSVRJT05fRlJPTlRfUklHSFQ6CiAgICAgICAgIGdzdF9idWZmZXJfbGlzdF9pdGVyYXRvcl9h
ZGQobV9mcm9udFJpZ2h0QnVmZmVyc0l0ZXJhdG9yLCBidWZmZXIpOwo=
</data>
<flag name="review"
          id="138194"
          type_id="1"
          status="+"
          setter="mrobinson"
    />
          </attachment>
      

    </bug>

</bugzilla>