<?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>47624</bug_id>
          
          <creation_ts>2010-10-13 14:43:42 -0700</creation_ts>
          <short_desc>Add AudioResamplerKernel files</short_desc>
          <delta_ts>2010-10-27 15:29:15 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</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="Chris Rogers">crogers</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cmarrin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>jamesr</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kbr</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>293728</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2010-10-13 14:43:42 -0700</bug_when>
    <thetext>Add AudioResamplerKernel files</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>293730</commentid>
    <comment_count>1</comment_count>
      <attachid>70667</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2010-10-13 14:45:12 -0700</bug_when>
    <thetext>Created attachment 70667
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>299932</commentid>
    <comment_count>2</comment_count>
      <attachid>70667</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-10-26 18:51:03 -0700</bug_when>
    <thetext>Comment on attachment 70667
Patch

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

A few comments and questions.

&gt; WebCore/platform/audio/AudioResamplerKernel.cpp:59
&gt; +    int endIndex = static_cast&lt;int&gt;(nextFractionalIndex + 1.0); // round up to next integer index

Should this just use ceil()?

&gt; WebCore/platform/audio/AudioResamplerKernel.cpp:102
&gt; +        double sample2 = source[readIndex + 1];

It would be really nice to have some assertions (perhaps hoisted out of the loop) that m_virtualReadIndex + (framesToProcess * rate) + 1 is not going to walk off the end of the source buffer.

&gt; WebCore/platform/audio/AudioResamplerKernel.h:57
&gt; +protected:

Can these members be private rather than protected?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300424</commentid>
    <comment_count>3</comment_count>
      <attachid>70667</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2010-10-27 12:07:02 -0700</bug_when>
    <thetext>Comment on attachment 70667
Patch

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

&gt;&gt; WebCore/platform/audio/AudioResamplerKernel.cpp:59
&gt;&gt; +    int endIndex = static_cast&lt;int&gt;(nextFractionalIndex + 1.0); // round up to next integer index
&gt; 
&gt; Should this just use ceil()?

ceil() doesn&apos;t have quite the same behavior.  For example ceil(1.0) == 1.0, but we need the value 2 since we need to have one sample *past* the rounded-down version.

&gt;&gt; WebCore/platform/audio/AudioResamplerKernel.cpp:102
&gt;&gt; +        double sample2 = source[readIndex + 1];
&gt; 
&gt; It would be really nice to have some assertions (perhaps hoisted out of the loop) that m_virtualReadIndex + (framesToProcess * rate) + 1 is not going to walk off the end of the source buffer.

FIXED: added some assertions before entering the loop.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300432</commentid>
    <comment_count>4</comment_count>
      <attachid>72068</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2010-10-27 12:12:07 -0700</bug_when>
    <thetext>Created attachment 72068
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300524</commentid>
    <comment_count>5</comment_count>
      <attachid>72068</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-10-27 13:44:38 -0700</bug_when>
    <thetext>Comment on attachment 72068
Patch

Looks good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300631</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-10-27 15:28:16 -0700</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 72068:

fast/workers/storage/use-same-database-in-page-and-workers.html

Please file bugs against the tests.  These tests were authored by dumi@chromium.org.  The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300633</commentid>
    <comment_count>7</comment_count>
      <attachid>72068</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-10-27 15:29:08 -0700</bug_when>
    <thetext>Comment on attachment 72068
Patch

Clearing flags on attachment: 72068

Committed r70719: &lt;http://trac.webkit.org/changeset/70719&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300634</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-10-27 15:29:15 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70667</attachid>
            <date>2010-10-13 14:45:12 -0700</date>
            <delta_ts>2010-10-27 12:12:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47624-20101013144510.patch</filename>
            <type>text/plain</type>
            <size>9984</size>
            <attacher name="Chris Rogers">crogers</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2OTY5OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjAgQEAKKzIwMTAtMTAtMTMgIENocmlzIFJvZ2VycyAgPGNyb2dlcnNAZ29vZ2xl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgQXVkaW9SZXNhbXBsZXJLZXJuZWwgZmlsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3NjI0CisKKyAgICAgICAgTm8gbmV3IHRlc3RzIHNpbmNl
IGF1ZGlvIEFQSSBpcyBub3QgeWV0IGltcGxlbWVudGVkLgorCisgICAgICAgICogcGxhdGZvcm0v
YXVkaW8vQXVkaW9SZXNhbXBsZXJLZXJuZWwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvUmVzYW1wbGVyS2VybmVsOjpBdWRpb1Jlc2FtcGxlcktlcm5lbCk6CisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb1Jlc2FtcGxlcktlcm5lbDo6Z2V0U291cmNlUG9pbnRlcik6CisgICAgICAg
IChXZWJDb3JlOjpBdWRpb1Jlc2FtcGxlcktlcm5lbDo6cHJvY2Vzcyk6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1Jlc2FtcGxlcktlcm5lbDo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9SZXNhbXBsZXJLZXJuZWw6OnJhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0F1ZGlv
UmVzYW1wbGVyS2VybmVsLmg6IEFkZGVkLgorCiAyMDEwLTEwLTEzICBCcmVudCBGdWxnaGFtICA8
YmZ1bGdoYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkIFdpbkNhaXJvIGJ1aWxk
IGZpeC4KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9SZXNhbXBsZXJLZXJuZWwu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9SZXNhbXBsZXJL
ZXJuZWwuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Jl
c2FtcGxlcktlcm5lbC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTM5IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEwLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFdFQl9BVURJTykKKworI2lu
Y2x1ZGUgIkF1ZGlvUmVzYW1wbGVyS2VybmVsLmgiCisKKyNpbmNsdWRlICJBdWRpb1Jlc2FtcGxl
ci5oIgorI2luY2x1ZGUgPGFsZ29yaXRobT4KKwordXNpbmcgbmFtZXNwYWNlIHN0ZDsKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworICAgIAorY29uc3Qgc2l6ZV90IEF1ZGlvUmVzYW1wbGVyS2VybmVs
OjpNYXhGcmFtZXNUb1Byb2Nlc3MgPSAxMjg7CisKK0F1ZGlvUmVzYW1wbGVyS2VybmVsOjpBdWRp
b1Jlc2FtcGxlcktlcm5lbChBdWRpb1Jlc2FtcGxlciogcmVzYW1wbGVyKQorICAgIDogbV9yZXNh
bXBsZXIocmVzYW1wbGVyKQorICAgIC8vIFRoZSBidWZmZXIgc2l6ZSBtdXN0IGJlIGxhcmdlIGVu
b3VnaCB0byBob2xkIHVwIHRvIHR3byBleHRyYSBzYW1wbGUgZnJhbWVzIGZvciB0aGUgbGluZWFy
IGludGVycG9sYXRpb24uCisgICAgLCBtX3NvdXJjZUJ1ZmZlcigyICsgc3RhdGljX2Nhc3Q8aW50
PihNYXhGcmFtZXNUb1Byb2Nlc3MgKiBBdWRpb1Jlc2FtcGxlcjo6TWF4UmF0ZSkpCisgICAgLCBt
X3ZpcnR1YWxSZWFkSW5kZXgoMC4wKQorICAgICwgbV9maWxsSW5kZXgoMCkKK3sKKyAgICBtX2xh
c3RWYWx1ZXNbMF0gPSAwLjBmOworICAgIG1fbGFzdFZhbHVlc1sxXSA9IDAuMGY7Cit9CisKK2Zs
b2F0KiBBdWRpb1Jlc2FtcGxlcktlcm5lbDo6Z2V0U291cmNlUG9pbnRlcihzaXplX3QgZnJhbWVz
VG9Qcm9jZXNzLCBzaXplX3QqIG51bWJlck9mU291cmNlRnJhbWVzTmVlZGVkUCkKK3sKKyAgICBB
U1NFUlQoZnJhbWVzVG9Qcm9jZXNzIDw9IE1heEZyYW1lc1RvUHJvY2Vzcyk7CisgICAgCisgICAg
Ly8gQ2FsY3VsYXRlIHRoZSBuZXh0ICJ2aXJ0dWFsIiBpbmRleC4gIEFmdGVyIHByb2Nlc3MoKSBp
cyBjYWxsZWQsIG1fdmlydHVhbFJlYWRJbmRleCB3aWxsIGVxdWFsIHRoaXMgdmFsdWUuCisgICAg
ZG91YmxlIG5leHRGcmFjdGlvbmFsSW5kZXggPSBtX3ZpcnR1YWxSZWFkSW5kZXggKyBmcmFtZXNU
b1Byb2Nlc3MgKiByYXRlKCk7CisKKyAgICAvLyBCZWNhdXNlIHdlJ3JlIGxpbmVhcmx5IGludGVy
cG9sYXRpbmcgYmV0d2VlbiB0aGUgcHJldmlvdXMgYW5kIG5leHQgc2FtcGxlIHdlIG5lZWQgdG8g
cm91bmQgdXAgc28gd2UgaW5jbHVkZSB0aGUgbmV4dCBzYW1wbGUuCisgICAgaW50IGVuZEluZGV4
ID0gc3RhdGljX2Nhc3Q8aW50PihuZXh0RnJhY3Rpb25hbEluZGV4ICsgMS4wKTsgLy8gcm91bmQg
dXAgdG8gbmV4dCBpbnRlZ2VyIGluZGV4CisKKyAgICAvLyBEZXRlcm1pbmUgaG93IG1hbnkgaW5w
dXQgZnJhbWVzIHdlJ2xsIG5lZWQuCisgICAgLy8gV2UgbmVlZCB0byBmaWxsIHRoZSBidWZmZXIg
dXAgdG8gYW5kIGluY2x1ZGluZyBlbmRJbmRleCAoc28gYWRkIDEpIGJ1dCB3ZSd2ZSBhbHJlYWR5
IGJ1ZmZlcmVkIG1fZmlsbEluZGV4IGZyYW1lcyBmcm9tIGxhc3QgdGltZS4KKyAgICBzaXplX3Qg
ZnJhbWVzTmVlZGVkID0gMSArIGVuZEluZGV4IC0gbV9maWxsSW5kZXg7CisgICAgaWYgKG51bWJl
ck9mU291cmNlRnJhbWVzTmVlZGVkUCkKKyAgICAgICAgKm51bWJlck9mU291cmNlRnJhbWVzTmVl
ZGVkUCA9IGZyYW1lc05lZWRlZDsKKworICAgIC8vIERvIGJvdW5kcyBjaGVja2luZyBmb3IgdGhl
IHNvdXJjZSBidWZmZXIuCisgICAgYm9vbCBpc0dvb2QgPSBtX2ZpbGxJbmRleCA8IG1fc291cmNl
QnVmZmVyLnNpemUoKSAmJiBtX2ZpbGxJbmRleCArIGZyYW1lc05lZWRlZCA8PSBtX3NvdXJjZUJ1
ZmZlci5zaXplKCk7CisgICAgQVNTRVJUKGlzR29vZCk7CisgICAgaWYgKCFpc0dvb2QpCisgICAg
ICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIG1fc291cmNlQnVmZmVyLmRhdGEoKSArIG1fZmls
bEluZGV4OworfQorCit2b2lkIEF1ZGlvUmVzYW1wbGVyS2VybmVsOjpwcm9jZXNzKGZsb2F0KiBk
ZXN0aW5hdGlvbiwgc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKK3sKKyAgICBBU1NFUlQoZnJhbWVz
VG9Qcm9jZXNzIDw9IE1heEZyYW1lc1RvUHJvY2Vzcyk7CisKKyAgICBmbG9hdCogc291cmNlID0g
bV9zb3VyY2VCdWZmZXIuZGF0YSgpOworICAgIAorICAgIGRvdWJsZSByYXRlID0gdGhpcy0+cmF0
ZSgpOworICAgIHJhdGUgPSBtYXgoMC4wLCByYXRlKTsKKyAgICByYXRlID0gbWluKEF1ZGlvUmVz
YW1wbGVyOjpNYXhSYXRlLCByYXRlKTsKKyAgICAKKyAgICAvLyBTdGFydCBvdXQgd2l0aCB0aGUg
cHJldmlvdXMgc2F2ZWQgdmFsdWVzIChpZiBhbnkpLgorICAgIGlmIChtX2ZpbGxJbmRleCA+IDAp
IHsKKyAgICAgICAgc291cmNlWzBdID0gbV9sYXN0VmFsdWVzWzBdOworICAgICAgICBzb3VyY2Vb
MV0gPSBtX2xhc3RWYWx1ZXNbMV07CisgICAgfQorCisgICAgLy8gTWFrZSBhIGxvY2FsIGNvcHku
CisgICAgZG91YmxlIHZpcnR1YWxSZWFkSW5kZXggPSBtX3ZpcnR1YWxSZWFkSW5kZXg7CisKKyAg
ICAvLyBEbyB0aGUgbGluZWFyIGludGVycG9sYXRpb24uCisgICAgaW50IG4gPSBmcmFtZXNUb1By
b2Nlc3M7CisgICAgd2hpbGUgKG4tLSkgeworICAgICAgICBpbnQgcmVhZEluZGV4ID0gc3RhdGlj
X2Nhc3Q8aW50Pih2aXJ0dWFsUmVhZEluZGV4KTsKKyAgICAgICAgZG91YmxlIGludGVycG9sYXRp
b25GYWN0b3IgPSB2aXJ0dWFsUmVhZEluZGV4IC0gcmVhZEluZGV4OworCisgICAgICAgIGRvdWJs
ZSBzYW1wbGUxID0gc291cmNlW3JlYWRJbmRleF07CisgICAgICAgIGRvdWJsZSBzYW1wbGUyID0g
c291cmNlW3JlYWRJbmRleCArIDFdOworCisgICAgICAgIGRvdWJsZSBzYW1wbGUgPSAoMS4wIC0g
aW50ZXJwb2xhdGlvbkZhY3RvcikgKiBzYW1wbGUxICsgaW50ZXJwb2xhdGlvbkZhY3RvciAqIHNh
bXBsZTI7CisKKyAgICAgICAgKmRlc3RpbmF0aW9uKysgPSBzdGF0aWNfY2FzdDxmbG9hdD4oc2Ft
cGxlKTsKKworICAgICAgICB2aXJ0dWFsUmVhZEluZGV4ICs9IHJhdGU7CisgICAgfSAgICAgICAg
ICAgICAgICAgICAgICAgIAorCisgICAgLy8gU2F2ZSB0aGUgbGFzdCB0d28gc2FtcGxlLWZyYW1l
cyB3aGljaCB3aWxsIGxhdGVyIGJlIHVzZWQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgc291cmNl
IGJ1ZmZlciB0aGUgbmV4dCB0aW1lIGFyb3VuZC4KKyAgICBpbnQgcmVhZEluZGV4ID0gc3RhdGlj
X2Nhc3Q8aW50Pih2aXJ0dWFsUmVhZEluZGV4KTsKKyAgICBtX2xhc3RWYWx1ZXNbMF0gPSBzb3Vy
Y2VbcmVhZEluZGV4XTsKKyAgICBtX2xhc3RWYWx1ZXNbMV0gPSBzb3VyY2VbcmVhZEluZGV4ICsg
MV07CisgICAgbV9maWxsSW5kZXggPSAyOworCisgICAgLy8gV3JhcCB0aGUgdmlydHVhbCByZWFk
IGluZGV4IGJhY2sgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuCisgICAgdmlydHVhbFJlYWRJ
bmRleCAtPSByZWFkSW5kZXg7CisKKyAgICAvLyBQdXQgbG9jYWwgY29weSBiYWNrIGludG8gbWVt
YmVyIHZhcmlhYmxlLgorICAgIG1fdmlydHVhbFJlYWRJbmRleCA9IHZpcnR1YWxSZWFkSW5kZXg7
Cit9CisKK3ZvaWQgQXVkaW9SZXNhbXBsZXJLZXJuZWw6OnJlc2V0KCkKK3sKKyAgICBtX3ZpcnR1
YWxSZWFkSW5kZXggPSAwLjA7CisgICAgbV9maWxsSW5kZXggPSAwOworICAgIG1fbGFzdFZhbHVl
c1swXSA9IDAuMGY7CisgICAgbV9sYXN0VmFsdWVzWzFdID0gMC4wZjsKK30KKworZG91YmxlIEF1
ZGlvUmVzYW1wbGVyS2VybmVsOjpyYXRlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9yZXNhbXBs
ZXItPnJhdGUoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5B
QkxFKFdFQl9BVURJTykKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9SZXNhbXBs
ZXJLZXJuZWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUmVz
YW1wbGVyS2VybmVsLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1
ZGlvUmVzYW1wbGVyS2VybmVsLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzYgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIEF1ZGlvUmVzYW1wbGVyS2VybmVsX2gKKyNkZWZpbmUgQXVkaW9SZXNh
bXBsZXJLZXJuZWxfaAorCisjaW5jbHVkZSAiQXVkaW9BcnJheS5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIEF1ZGlvUmVzYW1wbGVyOworCisvLyBBdWRpb1Jlc2FtcGxlcktlcm5l
bCBkb2VzIHJlc2FtcGxpbmcgb24gYSBzaW5nbGUgbW9ubyBjaGFubmVsLgorLy8gSXQgdXNlcyBh
IHNpbXBsZSBsaW5lYXIgaW50ZXJwb2xhdGlvbiBmb3IgZ29vZCBwZXJmb3JtYW5jZS4KKworY2xh
c3MgQXVkaW9SZXNhbXBsZXJLZXJuZWwgeworcHVibGljOgorICAgIEF1ZGlvUmVzYW1wbGVyS2Vy
bmVsKEF1ZGlvUmVzYW1wbGVyKik7CisKKyAgICAvLyBnZXRTb3VyY2VQb2ludGVyKCkgc2hvdWxk
IGJlIGNhbGxlZCBlYWNoIHRpbWUgYmVmb3JlIHByb2Nlc3MoKSBpcyBjYWxsZWQuCisgICAgLy8g
R2l2ZW4gYSBudW1iZXIgb2YgZnJhbWVzIHRvIHByb2Nlc3MgKGZvciBzdWJzZXF1ZW50IGNhbGwg
dG8gcHJvY2VzcygpKSwgaXQgcmV0dXJucyBhIHBvaW50ZXIgYW5kIG51bWJlck9mU291cmNlRnJh
bWVzTmVlZGVkCisgICAgLy8gd2hlcmUgc2FtcGxlIGRhdGEgc2hvdWxkIGJlIGNvcGllZC4gVGhp
cyBzYW1wbGUgZGF0YSBwcm92aWRlcyB0aGUgaW5wdXQgdG8gdGhlIHJlc2FtcGxlciB3aGVuIHBy
b2Nlc3MoKSBpcyBjYWxsZWQuCisgICAgLy8gZnJhbWVzVG9Qcm9jZXNzIG11c3QgYmUgbGVzcyB0
aGFuIG9yIGVxdWFsIHRvIE1heEZyYW1lc1RvUHJvY2Vzcy4KKyAgICBmbG9hdCogZ2V0U291cmNl
UG9pbnRlcihzaXplX3QgZnJhbWVzVG9Qcm9jZXNzLCBzaXplX3QqIG51bWJlck9mU291cmNlRnJh
bWVzTmVlZGVkKTsKKworICAgIC8vIHByb2Nlc3MoKSByZXNhbXBsZXMgZnJhbWVzVG9Qcm9jZXNz
IGZyYW1lcyBmcm9tIHRoZSBzb3VyY2UgaW50byBkZXN0aW5hdGlvbi4KKyAgICAvLyBFYWNoIGNh
bGwgdG8gcHJvY2VzcygpIG11c3QgYmUgcHJlY2VkZWQgYnkgYSBjYWxsIHRvIGdldFNvdXJjZVBv
aW50ZXIoKSBzbyB0aGF0IHNvdXJjZSBpbnB1dCBtYXkgYmUgc3VwcGxpZWQuCisgICAgLy8gZnJh
bWVzVG9Qcm9jZXNzIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIE1heEZyYW1lc1RvUHJv
Y2Vzcy4KKyAgICB2b2lkIHByb2Nlc3MoZmxvYXQqIGRlc3RpbmF0aW9uLCBzaXplX3QgZnJhbWVz
VG9Qcm9jZXNzKTsKKworICAgIC8vIFJlc2V0cyB0aGUgcHJvY2Vzc2luZyBzdGF0ZS4KKyAgICB2
b2lkIHJlc2V0KCk7CisKKyAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IE1heEZyYW1lc1RvUHJvY2Vz
czsKKworcHJvdGVjdGVkOgorICAgIGRvdWJsZSByYXRlKCkgY29uc3Q7CisKKyAgICBBdWRpb1Jl
c2FtcGxlciogbV9yZXNhbXBsZXI7CisgICAgQXVkaW9GbG9hdEFycmF5IG1fc291cmNlQnVmZmVy
OworICAgIAorICAgIC8vIFRoaXMgaXMgYSAoZmxvYXRpbmcgcG9pbnQpIHJlYWQgaW5kZXggb24g
dGhlIGlucHV0IHN0cmVhbS4KKyAgICBkb3VibGUgbV92aXJ0dWFsUmVhZEluZGV4OworCisgICAg
Ly8gV2UgbmVlZCB0byBoYXZlIGNvbnRpbnVpdHkgZnJvbSBvbmUgY2FsbCBvZiBwcm9jZXNzKCkg
dG8gdGhlIG5leHQuCisgICAgLy8gbV9sYXN0VmFsdWVzIHN0b3JlcyB0aGUgbGFzdCB0d28gc2Ft
cGxlIHZhbHVlcyBmcm9tIHRoZSBsYXN0IGNhbGwgdG8gcHJvY2VzcygpLgorICAgIC8vIG1fZmls
bEluZGV4IHJlcHJlc2VudHMgaG93IG1hbnkgYnVmZmVyZWQgc2FtcGxlcyB3ZSBoYXZlIHdoaWNo
IGNhbiBiZSBhcyBtYW55IGFzIDIuCisgICAgLy8gRm9yIHRoZSBmaXJzdCBjYWxsIHRvIHByb2Nl
c3MoKSAob3IgYWZ0ZXIgcmVzZXQoKSkgdGhlcmUgd2lsbCBiZSBubyBidWZmZXJlZCBzYW1wbGVz
LgorICAgIGZsb2F0IG1fbGFzdFZhbHVlc1syXTsKKyAgICB1bnNpZ25lZCBtX2ZpbGxJbmRleDsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEF1ZGlvUmVzYW1wbGVy
S2VybmVsX2gK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72068</attachid>
            <date>2010-10-27 12:12:07 -0700</date>
            <delta_ts>2010-10-27 15:29:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47624-20101027121205.patch</filename>
            <type>text/plain</type>
            <size>10213</size>
            <attacher name="Chris Rogers">crogers</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MDY4NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjAgQEAKKzIwMTAtMTAtMjcgIENocmlzIFJvZ2VycyAgPGNyb2dlcnNAZ29vZ2xl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgQXVkaW9SZXNhbXBsZXJLZXJuZWwgZmlsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3NjI0CisKKyAgICAgICAgTm8gbmV3IHRlc3RzIHNpbmNl
IGF1ZGlvIEFQSSBpcyBub3QgeWV0IGltcGxlbWVudGVkLgorCisgICAgICAgICogcGxhdGZvcm0v
YXVkaW8vQXVkaW9SZXNhbXBsZXJLZXJuZWwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvUmVzYW1wbGVyS2VybmVsOjpBdWRpb1Jlc2FtcGxlcktlcm5lbCk6CisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb1Jlc2FtcGxlcktlcm5lbDo6Z2V0U291cmNlUG9pbnRlcik6CisgICAgICAg
IChXZWJDb3JlOjpBdWRpb1Jlc2FtcGxlcktlcm5lbDo6cHJvY2Vzcyk6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1Jlc2FtcGxlcktlcm5lbDo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9SZXNhbXBsZXJLZXJuZWw6OnJhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0F1ZGlv
UmVzYW1wbGVyS2VybmVsLmg6IEFkZGVkLgorCiAyMDEwLTEwLTI3ICBBbGV4YW5kZXIgUGF2bG92
ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVs
ZG1hbi4KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9SZXNhbXBsZXJLZXJuZWwu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9SZXNhbXBsZXJL
ZXJuZWwuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Jl
c2FtcGxlcktlcm5lbC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTQzIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEwLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFdFQl9BVURJTykKKworI2lu
Y2x1ZGUgIkF1ZGlvUmVzYW1wbGVyS2VybmVsLmgiCisKKyNpbmNsdWRlICJBdWRpb1Jlc2FtcGxl
ci5oIgorI2luY2x1ZGUgPGFsZ29yaXRobT4KKwordXNpbmcgbmFtZXNwYWNlIHN0ZDsKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworICAgIAorY29uc3Qgc2l6ZV90IEF1ZGlvUmVzYW1wbGVyS2VybmVs
OjpNYXhGcmFtZXNUb1Byb2Nlc3MgPSAxMjg7CisKK0F1ZGlvUmVzYW1wbGVyS2VybmVsOjpBdWRp
b1Jlc2FtcGxlcktlcm5lbChBdWRpb1Jlc2FtcGxlciogcmVzYW1wbGVyKQorICAgIDogbV9yZXNh
bXBsZXIocmVzYW1wbGVyKQorICAgIC8vIFRoZSBidWZmZXIgc2l6ZSBtdXN0IGJlIGxhcmdlIGVu
b3VnaCB0byBob2xkIHVwIHRvIHR3byBleHRyYSBzYW1wbGUgZnJhbWVzIGZvciB0aGUgbGluZWFy
IGludGVycG9sYXRpb24uCisgICAgLCBtX3NvdXJjZUJ1ZmZlcigyICsgc3RhdGljX2Nhc3Q8aW50
PihNYXhGcmFtZXNUb1Byb2Nlc3MgKiBBdWRpb1Jlc2FtcGxlcjo6TWF4UmF0ZSkpCisgICAgLCBt
X3ZpcnR1YWxSZWFkSW5kZXgoMC4wKQorICAgICwgbV9maWxsSW5kZXgoMCkKK3sKKyAgICBtX2xh
c3RWYWx1ZXNbMF0gPSAwLjBmOworICAgIG1fbGFzdFZhbHVlc1sxXSA9IDAuMGY7Cit9CisKK2Zs
b2F0KiBBdWRpb1Jlc2FtcGxlcktlcm5lbDo6Z2V0U291cmNlUG9pbnRlcihzaXplX3QgZnJhbWVz
VG9Qcm9jZXNzLCBzaXplX3QqIG51bWJlck9mU291cmNlRnJhbWVzTmVlZGVkUCkKK3sKKyAgICBB
U1NFUlQoZnJhbWVzVG9Qcm9jZXNzIDw9IE1heEZyYW1lc1RvUHJvY2Vzcyk7CisgICAgCisgICAg
Ly8gQ2FsY3VsYXRlIHRoZSBuZXh0ICJ2aXJ0dWFsIiBpbmRleC4gIEFmdGVyIHByb2Nlc3MoKSBp
cyBjYWxsZWQsIG1fdmlydHVhbFJlYWRJbmRleCB3aWxsIGVxdWFsIHRoaXMgdmFsdWUuCisgICAg
ZG91YmxlIG5leHRGcmFjdGlvbmFsSW5kZXggPSBtX3ZpcnR1YWxSZWFkSW5kZXggKyBmcmFtZXNU
b1Byb2Nlc3MgKiByYXRlKCk7CisKKyAgICAvLyBCZWNhdXNlIHdlJ3JlIGxpbmVhcmx5IGludGVy
cG9sYXRpbmcgYmV0d2VlbiB0aGUgcHJldmlvdXMgYW5kIG5leHQgc2FtcGxlIHdlIG5lZWQgdG8g
cm91bmQgdXAgc28gd2UgaW5jbHVkZSB0aGUgbmV4dCBzYW1wbGUuCisgICAgaW50IGVuZEluZGV4
ID0gc3RhdGljX2Nhc3Q8aW50PihuZXh0RnJhY3Rpb25hbEluZGV4ICsgMS4wKTsgLy8gcm91bmQg
dXAgdG8gbmV4dCBpbnRlZ2VyIGluZGV4CisKKyAgICAvLyBEZXRlcm1pbmUgaG93IG1hbnkgaW5w
dXQgZnJhbWVzIHdlJ2xsIG5lZWQuCisgICAgLy8gV2UgbmVlZCB0byBmaWxsIHRoZSBidWZmZXIg
dXAgdG8gYW5kIGluY2x1ZGluZyBlbmRJbmRleCAoc28gYWRkIDEpIGJ1dCB3ZSd2ZSBhbHJlYWR5
IGJ1ZmZlcmVkIG1fZmlsbEluZGV4IGZyYW1lcyBmcm9tIGxhc3QgdGltZS4KKyAgICBzaXplX3Qg
ZnJhbWVzTmVlZGVkID0gMSArIGVuZEluZGV4IC0gbV9maWxsSW5kZXg7CisgICAgaWYgKG51bWJl
ck9mU291cmNlRnJhbWVzTmVlZGVkUCkKKyAgICAgICAgKm51bWJlck9mU291cmNlRnJhbWVzTmVl
ZGVkUCA9IGZyYW1lc05lZWRlZDsKKworICAgIC8vIERvIGJvdW5kcyBjaGVja2luZyBmb3IgdGhl
IHNvdXJjZSBidWZmZXIuCisgICAgYm9vbCBpc0dvb2QgPSBtX2ZpbGxJbmRleCA8IG1fc291cmNl
QnVmZmVyLnNpemUoKSAmJiBtX2ZpbGxJbmRleCArIGZyYW1lc05lZWRlZCA8PSBtX3NvdXJjZUJ1
ZmZlci5zaXplKCk7CisgICAgQVNTRVJUKGlzR29vZCk7CisgICAgaWYgKCFpc0dvb2QpCisgICAg
ICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIG1fc291cmNlQnVmZmVyLmRhdGEoKSArIG1fZmls
bEluZGV4OworfQorCit2b2lkIEF1ZGlvUmVzYW1wbGVyS2VybmVsOjpwcm9jZXNzKGZsb2F0KiBk
ZXN0aW5hdGlvbiwgc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKK3sKKyAgICBBU1NFUlQoZnJhbWVz
VG9Qcm9jZXNzIDw9IE1heEZyYW1lc1RvUHJvY2Vzcyk7CisKKyAgICBmbG9hdCogc291cmNlID0g
bV9zb3VyY2VCdWZmZXIuZGF0YSgpOworICAgIAorICAgIGRvdWJsZSByYXRlID0gdGhpcy0+cmF0
ZSgpOworICAgIHJhdGUgPSBtYXgoMC4wLCByYXRlKTsKKyAgICByYXRlID0gbWluKEF1ZGlvUmVz
YW1wbGVyOjpNYXhSYXRlLCByYXRlKTsKKyAgICAKKyAgICAvLyBTdGFydCBvdXQgd2l0aCB0aGUg
cHJldmlvdXMgc2F2ZWQgdmFsdWVzIChpZiBhbnkpLgorICAgIGlmIChtX2ZpbGxJbmRleCA+IDAp
IHsKKyAgICAgICAgc291cmNlWzBdID0gbV9sYXN0VmFsdWVzWzBdOworICAgICAgICBzb3VyY2Vb
MV0gPSBtX2xhc3RWYWx1ZXNbMV07CisgICAgfQorCisgICAgLy8gTWFrZSBhIGxvY2FsIGNvcHku
CisgICAgZG91YmxlIHZpcnR1YWxSZWFkSW5kZXggPSBtX3ZpcnR1YWxSZWFkSW5kZXg7CisgICAg
CisgICAgLy8gU2FuaXR5IGNoZWNrIHNvdXJjZSBidWZmZXIgYWNjZXNzLgorICAgIEFTU0VSVChm
cmFtZXNUb1Byb2Nlc3MgPiAwKTsKKyAgICBBU1NFUlQodmlydHVhbFJlYWRJbmRleCA+PSAwICYm
IDEgKyBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odmlydHVhbFJlYWRJbmRleCArIChmcmFtZXNUb1By
b2Nlc3MgLSAxKSAqIHJhdGUpIDwgbV9zb3VyY2VCdWZmZXIuc2l6ZSgpKTsKKworICAgIC8vIERv
IHRoZSBsaW5lYXIgaW50ZXJwb2xhdGlvbi4KKyAgICBpbnQgbiA9IGZyYW1lc1RvUHJvY2VzczsK
KyAgICB3aGlsZSAobi0tKSB7CisgICAgICAgIHVuc2lnbmVkIHJlYWRJbmRleCA9IHN0YXRpY19j
YXN0PHVuc2lnbmVkPih2aXJ0dWFsUmVhZEluZGV4KTsKKyAgICAgICAgZG91YmxlIGludGVycG9s
YXRpb25GYWN0b3IgPSB2aXJ0dWFsUmVhZEluZGV4IC0gcmVhZEluZGV4OworCisgICAgICAgIGRv
dWJsZSBzYW1wbGUxID0gc291cmNlW3JlYWRJbmRleF07CisgICAgICAgIGRvdWJsZSBzYW1wbGUy
ID0gc291cmNlW3JlYWRJbmRleCArIDFdOworCisgICAgICAgIGRvdWJsZSBzYW1wbGUgPSAoMS4w
IC0gaW50ZXJwb2xhdGlvbkZhY3RvcikgKiBzYW1wbGUxICsgaW50ZXJwb2xhdGlvbkZhY3RvciAq
IHNhbXBsZTI7CisKKyAgICAgICAgKmRlc3RpbmF0aW9uKysgPSBzdGF0aWNfY2FzdDxmbG9hdD4o
c2FtcGxlKTsKKworICAgICAgICB2aXJ0dWFsUmVhZEluZGV4ICs9IHJhdGU7CisgICAgfSAgICAg
ICAgICAgICAgICAgICAgICAgIAorCisgICAgLy8gU2F2ZSB0aGUgbGFzdCB0d28gc2FtcGxlLWZy
YW1lcyB3aGljaCB3aWxsIGxhdGVyIGJlIHVzZWQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgc291
cmNlIGJ1ZmZlciB0aGUgbmV4dCB0aW1lIGFyb3VuZC4KKyAgICBpbnQgcmVhZEluZGV4ID0gc3Rh
dGljX2Nhc3Q8aW50Pih2aXJ0dWFsUmVhZEluZGV4KTsKKyAgICBtX2xhc3RWYWx1ZXNbMF0gPSBz
b3VyY2VbcmVhZEluZGV4XTsKKyAgICBtX2xhc3RWYWx1ZXNbMV0gPSBzb3VyY2VbcmVhZEluZGV4
ICsgMV07CisgICAgbV9maWxsSW5kZXggPSAyOworCisgICAgLy8gV3JhcCB0aGUgdmlydHVhbCBy
ZWFkIGluZGV4IGJhY2sgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuCisgICAgdmlydHVhbFJl
YWRJbmRleCAtPSByZWFkSW5kZXg7CisKKyAgICAvLyBQdXQgbG9jYWwgY29weSBiYWNrIGludG8g
bWVtYmVyIHZhcmlhYmxlLgorICAgIG1fdmlydHVhbFJlYWRJbmRleCA9IHZpcnR1YWxSZWFkSW5k
ZXg7Cit9CisKK3ZvaWQgQXVkaW9SZXNhbXBsZXJLZXJuZWw6OnJlc2V0KCkKK3sKKyAgICBtX3Zp
cnR1YWxSZWFkSW5kZXggPSAwLjA7CisgICAgbV9maWxsSW5kZXggPSAwOworICAgIG1fbGFzdFZh
bHVlc1swXSA9IDAuMGY7CisgICAgbV9sYXN0VmFsdWVzWzFdID0gMC4wZjsKK30KKworZG91Ymxl
IEF1ZGlvUmVzYW1wbGVyS2VybmVsOjpyYXRlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9yZXNh
bXBsZXItPnJhdGUoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
RU5BQkxFKFdFQl9BVURJTykKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9SZXNh
bXBsZXJLZXJuZWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlv
UmVzYW1wbGVyS2VybmVsLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L0F1ZGlvUmVzYW1wbGVyS2VybmVsLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzYgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIEF1ZGlvUmVzYW1wbGVyS2VybmVsX2gKKyNkZWZpbmUgQXVkaW9S
ZXNhbXBsZXJLZXJuZWxfaAorCisjaW5jbHVkZSAiQXVkaW9BcnJheS5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIEF1ZGlvUmVzYW1wbGVyOworCisvLyBBdWRpb1Jlc2FtcGxlcktl
cm5lbCBkb2VzIHJlc2FtcGxpbmcgb24gYSBzaW5nbGUgbW9ubyBjaGFubmVsLgorLy8gSXQgdXNl
cyBhIHNpbXBsZSBsaW5lYXIgaW50ZXJwb2xhdGlvbiBmb3IgZ29vZCBwZXJmb3JtYW5jZS4KKwor
Y2xhc3MgQXVkaW9SZXNhbXBsZXJLZXJuZWwgeworcHVibGljOgorICAgIEF1ZGlvUmVzYW1wbGVy
S2VybmVsKEF1ZGlvUmVzYW1wbGVyKik7CisKKyAgICAvLyBnZXRTb3VyY2VQb2ludGVyKCkgc2hv
dWxkIGJlIGNhbGxlZCBlYWNoIHRpbWUgYmVmb3JlIHByb2Nlc3MoKSBpcyBjYWxsZWQuCisgICAg
Ly8gR2l2ZW4gYSBudW1iZXIgb2YgZnJhbWVzIHRvIHByb2Nlc3MgKGZvciBzdWJzZXF1ZW50IGNh
bGwgdG8gcHJvY2VzcygpKSwgaXQgcmV0dXJucyBhIHBvaW50ZXIgYW5kIG51bWJlck9mU291cmNl
RnJhbWVzTmVlZGVkCisgICAgLy8gd2hlcmUgc2FtcGxlIGRhdGEgc2hvdWxkIGJlIGNvcGllZC4g
VGhpcyBzYW1wbGUgZGF0YSBwcm92aWRlcyB0aGUgaW5wdXQgdG8gdGhlIHJlc2FtcGxlciB3aGVu
IHByb2Nlc3MoKSBpcyBjYWxsZWQuCisgICAgLy8gZnJhbWVzVG9Qcm9jZXNzIG11c3QgYmUgbGVz
cyB0aGFuIG9yIGVxdWFsIHRvIE1heEZyYW1lc1RvUHJvY2Vzcy4KKyAgICBmbG9hdCogZ2V0U291
cmNlUG9pbnRlcihzaXplX3QgZnJhbWVzVG9Qcm9jZXNzLCBzaXplX3QqIG51bWJlck9mU291cmNl
RnJhbWVzTmVlZGVkKTsKKworICAgIC8vIHByb2Nlc3MoKSByZXNhbXBsZXMgZnJhbWVzVG9Qcm9j
ZXNzIGZyYW1lcyBmcm9tIHRoZSBzb3VyY2UgaW50byBkZXN0aW5hdGlvbi4KKyAgICAvLyBFYWNo
IGNhbGwgdG8gcHJvY2VzcygpIG11c3QgYmUgcHJlY2VkZWQgYnkgYSBjYWxsIHRvIGdldFNvdXJj
ZVBvaW50ZXIoKSBzbyB0aGF0IHNvdXJjZSBpbnB1dCBtYXkgYmUgc3VwcGxpZWQuCisgICAgLy8g
ZnJhbWVzVG9Qcm9jZXNzIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIE1heEZyYW1lc1Rv
UHJvY2Vzcy4KKyAgICB2b2lkIHByb2Nlc3MoZmxvYXQqIGRlc3RpbmF0aW9uLCBzaXplX3QgZnJh
bWVzVG9Qcm9jZXNzKTsKKworICAgIC8vIFJlc2V0cyB0aGUgcHJvY2Vzc2luZyBzdGF0ZS4KKyAg
ICB2b2lkIHJlc2V0KCk7CisKKyAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IE1heEZyYW1lc1RvUHJv
Y2VzczsKKworcHJpdmF0ZToKKyAgICBkb3VibGUgcmF0ZSgpIGNvbnN0OworCisgICAgQXVkaW9S
ZXNhbXBsZXIqIG1fcmVzYW1wbGVyOworICAgIEF1ZGlvRmxvYXRBcnJheSBtX3NvdXJjZUJ1ZmZl
cjsKKyAgICAKKyAgICAvLyBUaGlzIGlzIGEgKGZsb2F0aW5nIHBvaW50KSByZWFkIGluZGV4IG9u
IHRoZSBpbnB1dCBzdHJlYW0uCisgICAgZG91YmxlIG1fdmlydHVhbFJlYWRJbmRleDsKKworICAg
IC8vIFdlIG5lZWQgdG8gaGF2ZSBjb250aW51aXR5IGZyb20gb25lIGNhbGwgb2YgcHJvY2Vzcygp
IHRvIHRoZSBuZXh0LgorICAgIC8vIG1fbGFzdFZhbHVlcyBzdG9yZXMgdGhlIGxhc3QgdHdvIHNh
bXBsZSB2YWx1ZXMgZnJvbSB0aGUgbGFzdCBjYWxsIHRvIHByb2Nlc3MoKS4KKyAgICAvLyBtX2Zp
bGxJbmRleCByZXByZXNlbnRzIGhvdyBtYW55IGJ1ZmZlcmVkIHNhbXBsZXMgd2UgaGF2ZSB3aGlj
aCBjYW4gYmUgYXMgbWFueSBhcyAyLgorICAgIC8vIEZvciB0aGUgZmlyc3QgY2FsbCB0byBwcm9j
ZXNzKCkgKG9yIGFmdGVyIHJlc2V0KCkpIHRoZXJlIHdpbGwgYmUgbm8gYnVmZmVyZWQgc2FtcGxl
cy4KKyAgICBmbG9hdCBtX2xhc3RWYWx1ZXNbMl07CisgICAgdW5zaWduZWQgbV9maWxsSW5kZXg7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBBdWRpb1Jlc2FtcGxl
cktlcm5lbF9oCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>