<?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>45003</bug_id>
          
          <creation_ts>2010-08-31 16:26:08 -0700</creation_ts>
          <short_desc>Add AudioBuffer files</short_desc>
          <delta_ts>2010-09-09 18:12:27 -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>abarth</cc>
    
    <cc>cmarrin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>eric</cc>
    
    <cc>japhet</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kbr</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>272476</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2010-08-31 16:26:08 -0700</bug_when>
    <thetext>Add AudioBuffer files</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272479</commentid>
    <comment_count>1</comment_count>
      <attachid>66136</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2010-08-31 16:27:27 -0700</bug_when>
    <thetext>Created attachment 66136
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272480</commentid>
    <comment_count>2</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2010-08-31 16:28:35 -0700</bug_when>
    <thetext>Implements AudioBuffer as described in the web audio specification:
http://chromium.googlecode.com/svn/trunk/samples/audio/specification/specification.html#AudioBuffer-section</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>275472</commentid>
    <comment_count>3</comment_count>
      <attachid>66136</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-09-07 17:55:36 -0700</bug_when>
    <thetext>Comment on attachment 66136
Patch

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

Looks basically fine overall but I&apos;d like to avoid memsets and memcpys strewn throughout the code, so suggesting a couple of refactorings. Also two tiny grammatical fixes.

&gt; WebCore/webaudio/AudioBuffer.cpp:73
&gt; +    // Copy audio data from the bus to the Float32Array&apos;s we manage.
Float32Array&apos;s -&gt; Float32Arrays

&gt; WebCore/webaudio/AudioBuffer.cpp:78
&gt; +        memcpy(channelDataArray-&gt;data(), bus-&gt;channel(i)-&gt;data(), sizeof(float) * m_length);
Please go ahead and add the appropriate setRange method taking const T* as the source data to TypedArrayBase.h, with the paired setRangeImpl in ArrayBufferView.cpp. See the existing TypedArrayBase::set and ArrayBufferView::setImpl.

&gt; WebCore/webaudio/AudioBuffer.cpp:100
&gt; +            memset(getChannelData(i)-&gt;data(), 0, sizeof(float) * length());
Please go ahead and add the appropriate zeroRange call to TypedArrayBase and implementation in ArrayBufferView.

&gt; WebCore/webaudio/AudioBuffer.h:46
&gt; +    // Returns 0 if data is not valid audio file.
not valid -&gt; not a valid</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>276176</commentid>
    <comment_count>4</comment_count>
      <attachid>66963</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2010-09-08 16:53:50 -0700</bug_when>
    <thetext>Created attachment 66963
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>276180</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2010-09-08 16:55:30 -0700</bug_when>
    <thetext>Hi Ken, I&apos;ve addressed your comments including adding setRange() and zeroRange() to TypedArrayBase which I&apos;ve added in a separate patch:

https://bugs.webkit.org/show_bug.cgi?id=45419</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>276760</commentid>
    <comment_count>6</comment_count>
      <attachid>66963</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-09-09 14:18:28 -0700</bug_when>
    <thetext>Comment on attachment 66963
Patch

Thanks for making these changes; this looks good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>276852</commentid>
    <comment_count>7</comment_count>
      <attachid>66963</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-09-09 16:59:12 -0700</bug_when>
    <thetext>Comment on attachment 66963
Patch

Clearing flags on attachment: 66963

Committed r67128: &lt;http://trac.webkit.org/changeset/67128&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>276853</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-09-09 16:59:17 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>276901</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-09-09 18:12:27 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/67128 might have broken Chromium Mac Release
The following changes are on the blame list:
http://trac.webkit.org/changeset/67128
http://trac.webkit.org/changeset/67129
http://trac.webkit.org/changeset/67126
http://trac.webkit.org/changeset/67127</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>66136</attachid>
            <date>2010-08-31 16:27:27 -0700</date>
            <delta_ts>2010-09-08 16:53:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-45003-20100831162725.patch</filename>
            <type>text/plain</type>
            <size>11319</size>
            <attacher name="Chris Rogers">crogers</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NjU1MikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjkgQEAKKzIwMTAtMDgtMzEgIENocmlzIFJvZ2VycyAgPGNyb2dlcnNAZ29vZ2xl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgQXVkaW9CdWZmZXIgZmlsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTQ1MDAzCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIHNpbmNlIGF1ZGlvIEFQ
SSBpcyBub3QgeWV0IGltcGxlbWVudGVkLgorCisgICAgICAgICogd2ViYXVkaW86IEFkZGVkLgor
ICAgICAgICAqIHdlYmF1ZGlvL0F1ZGlvQnVmZmVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpBdWRpb0J1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVmZmVy
OjpjcmVhdGVGcm9tQXVkaW9GaWxlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1ZmZl
cjo6QXVkaW9CdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdWZmZXI6OnJlbGVhc2VN
ZW1vcnkpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdWZmZXI6OmdldENoYW5uZWxEYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVmZmVyOjp6ZXJvKToKKyAgICAgICAgKiB3ZWJhdWRp
by9BdWRpb0J1ZmZlci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVmZmVyOjps
ZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdWZmZXI6OmR1cmF0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvQnVmZmVyOjpzYW1wbGVSYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvQnVmZmVyOjpudW1iZXJPZkNoYW5uZWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
QnVmZmVyOjpnYWluKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVmZmVyOjpzZXRHYWluKToK
KyAgICAgICAgKiB3ZWJhdWRpby9BdWRpb0J1ZmZlci5pZGw6IEFkZGVkLgorCiAyMDEwLTA4LTMx
ICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBE
YXZlIEh5YXR0LgpJbmRleDogV2ViQ29yZS93ZWJhdWRpby9BdWRpb0J1ZmZlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS93ZWJhdWRpby9BdWRpb0J1ZmZlci5jcHAJKHJldmlzaW9uIDApCisr
KyBXZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwxMDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9m
IEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAg
aXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoV0VCX0FVRElPKSAm
IEVOQUJMRSgzRF9DQU5WQVMpCisKKyNpbmNsdWRlICJBdWRpb0J1ZmZlci5oIgorCisjaW5jbHVk
ZSAiQXVkaW9CdXMuaCIKKyNpbmNsdWRlICJBdWRpb0ZpbGVSZWFkZXIuaCIKKyNpbmNsdWRlIDx3
dGYvT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc1JlZlB0cjxBdWRpb0J1
ZmZlcj4gQXVkaW9CdWZmZXI6OmNyZWF0ZSh1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBzaXpl
X3QgbnVtYmVyT2ZGcmFtZXMsIGRvdWJsZSBzYW1wbGVSYXRlKQoreworICAgIHJldHVybiBhZG9w
dFJlZihuZXcgQXVkaW9CdWZmZXIobnVtYmVyT2ZDaGFubmVscywgbnVtYmVyT2ZGcmFtZXMsIHNh
bXBsZVJhdGUpKTsKK30KKworUGFzc1JlZlB0cjxBdWRpb0J1ZmZlcj4gQXVkaW9CdWZmZXI6OmNy
ZWF0ZUZyb21BdWRpb0ZpbGVEYXRhKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBkYXRhU2l6ZSwg
Ym9vbCBtaXhUb01vbm8sIGRvdWJsZSBzYW1wbGVSYXRlKQoreworICAgIE93blB0cjxBdWRpb0J1
cz4gYnVzID0gY3JlYXRlQnVzRnJvbUluTWVtb3J5QXVkaW9GaWxlKGRhdGEsIGRhdGFTaXplLCBt
aXhUb01vbm8sIHNhbXBsZVJhdGUpOworICAgIGlmIChidXMuZ2V0KCkpCisgICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgQXVkaW9CdWZmZXIoYnVzLmdldCgpKSk7CisKKyAgICByZXR1cm4gMDsK
K30KKworQXVkaW9CdWZmZXI6OkF1ZGlvQnVmZmVyKHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMs
IHNpemVfdCBudW1iZXJPZkZyYW1lcywgZG91YmxlIHNhbXBsZVJhdGUpCisgICAgOiBtX2dhaW4o
MS4wKQorICAgICwgbV9zYW1wbGVSYXRlKHNhbXBsZVJhdGUpCisgICAgLCBtX2xlbmd0aChudW1i
ZXJPZkZyYW1lcykKK3sKKyAgICBtX2NoYW5uZWxzLnJlc2VydmVDYXBhY2l0eShudW1iZXJPZkNo
YW5uZWxzKTsKKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZkNoYW5uZWxz
OyArK2kpIHsKKyAgICAgICAgUmVmUHRyPEZsb2F0MzJBcnJheT4gY2hhbm5lbERhdGFBcnJheSA9
IEZsb2F0MzJBcnJheTo6Y3JlYXRlKG1fbGVuZ3RoKTsKKyAgICAgICAgbV9jaGFubmVscy5hcHBl
bmQoY2hhbm5lbERhdGFBcnJheSk7CisgICAgfQorfQorCitBdWRpb0J1ZmZlcjo6QXVkaW9CdWZm
ZXIoQXVkaW9CdXMqIGJ1cykKKyAgICA6IG1fZ2FpbigxLjApCisgICAgLCBtX3NhbXBsZVJhdGUo
YnVzLT5zYW1wbGVSYXRlKCkpCisgICAgLCBtX2xlbmd0aChidXMtPmxlbmd0aCgpKQoreworICAg
IC8vIENvcHkgYXVkaW8gZGF0YSBmcm9tIHRoZSBidXMgdG8gdGhlIEZsb2F0MzJBcnJheSdzIHdl
IG1hbmFnZS4KKyAgICB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzID0gYnVzLT5udW1iZXJPZkNo
YW5uZWxzKCk7CisgICAgbV9jaGFubmVscy5yZXNlcnZlQ2FwYWNpdHkobnVtYmVyT2ZDaGFubmVs
cyk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mQ2hhbm5lbHM7ICsraSkg
eworICAgICAgICBSZWZQdHI8RmxvYXQzMkFycmF5PiBjaGFubmVsRGF0YUFycmF5ID0gRmxvYXQz
MkFycmF5OjpjcmVhdGUobV9sZW5ndGgpOworICAgICAgICBtZW1jcHkoY2hhbm5lbERhdGFBcnJh
eS0+ZGF0YSgpLCBidXMtPmNoYW5uZWwoaSktPmRhdGEoKSwgc2l6ZW9mKGZsb2F0KSAqIG1fbGVu
Z3RoKTsKKyAgICAgICAgbV9jaGFubmVscy5hcHBlbmQoY2hhbm5lbERhdGFBcnJheSk7CisgICAg
fQorfQorCit2b2lkIEF1ZGlvQnVmZmVyOjpyZWxlYXNlTWVtb3J5KCkKK3sKKyAgICBtX2NoYW5u
ZWxzLmNsZWFyKCk7Cit9CisKK0Zsb2F0MzJBcnJheSogQXVkaW9CdWZmZXI6OmdldENoYW5uZWxE
YXRhKHVuc2lnbmVkIGNoYW5uZWxJbmRleCkKK3sKKyAgICBpZiAoY2hhbm5lbEluZGV4ID49IG1f
Y2hhbm5lbHMuc2l6ZSgpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBtX2NoYW5u
ZWxzW2NoYW5uZWxJbmRleF0uZ2V0KCk7Cit9CisKK3ZvaWQgQXVkaW9CdWZmZXI6Onplcm8oKQor
eworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2NoYW5uZWxzLnNpemUoKTsgKytpKSB7
CisgICAgICAgIGlmIChnZXRDaGFubmVsRGF0YShpKS0+ZGF0YSgpKQorICAgICAgICAgICAgbWVt
c2V0KGdldENoYW5uZWxEYXRhKGkpLT5kYXRhKCksIDAsIHNpemVvZihmbG9hdCkgKiBsZW5ndGgo
KSk7CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFC
TEUoV0VCX0FVRElPKSAmIEVOQUJMRSgzRF9DQU5WQVMpCkluZGV4OiBXZWJDb3JlL3dlYmF1ZGlv
L0F1ZGlvQnVmZmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS93ZWJhdWRpby9BdWRpb0J1ZmZl
ci5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS93ZWJhdWRpby9BdWRpb0J1ZmZlci5oCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVp
dGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBu
YW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisg
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBBdWRpb0J1ZmZlcl9oCisjZGVmaW5l
IEF1ZGlvQnVmZmVyX2gKKworI2luY2x1ZGUgIkZsb2F0MzJBcnJheS5oIgorI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIEF1ZGlvQnVzOworICAgIAorY2xhc3MgQXVkaW9CdWZmZXIgOiBwdWJsaWMg
UmVmQ291bnRlZDxBdWRpb0J1ZmZlcj4geworcHVibGljOiAgIAorICAgIHN0YXRpYyBQYXNzUmVm
UHRyPEF1ZGlvQnVmZmVyPiBjcmVhdGUodW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90
IG51bWJlck9mRnJhbWVzLCBkb3VibGUgc2FtcGxlUmF0ZSk7CisKKyAgICAvLyBSZXR1cm5zIDAg
aWYgZGF0YSBpcyBub3QgdmFsaWQgYXVkaW8gZmlsZS4KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxB
dWRpb0J1ZmZlcj4gY3JlYXRlRnJvbUF1ZGlvRmlsZURhdGEoY29uc3Qgdm9pZCogZGF0YSwgc2l6
ZV90IGRhdGFTaXplLCBib29sIG1peFRvTW9ubywgZG91YmxlIHNhbXBsZVJhdGUpOworCisgICAg
Ly8gRm9ybWF0CisgICAgc2l6ZV90IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9
CisgICAgZG91YmxlIGR1cmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbGVuZ3RoKCkgLyBzYW1wbGVS
YXRlKCk7IH0KKyAgICBkb3VibGUgc2FtcGxlUmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2FtcGxl
UmF0ZTsgfQorCisgICAgLy8gQ2hhbm5lbCBkYXRhIGFjY2VzcworICAgIHVuc2lnbmVkIG51bWJl
ck9mQ2hhbm5lbHMoKSBjb25zdCB7IHJldHVybiBtX2NoYW5uZWxzLnNpemUoKTsgfQorICAgIEZs
b2F0MzJBcnJheSogZ2V0Q2hhbm5lbERhdGEodW5zaWduZWQgY2hhbm5lbEluZGV4KTsKKyAgICB2
b2lkIHplcm8oKTsKKworICAgIC8vIFNjYWxhciBnYWluCisgICAgZG91YmxlIGdhaW4oKSBjb25z
dCB7IHJldHVybiBtX2dhaW47IH0KKyAgICB2b2lkIHNldEdhaW4oZG91YmxlIGdhaW4pIHsgbV9n
YWluID0gZ2FpbjsgfQorCisgICAgLy8gQmVjYXVzZSBhbiBBdWRpb0J1ZmZlciBoYXMgYSBKYXZh
U2NyaXB0IHdyYXBwZXIsIHdoaWNoIHdpbGwgYmUgZ2FyYmFnZSBjb2xsZWN0ZWQsIGl0IG1heSB0
YWtlIGF3aGlsZSBmb3IgdGhpcyBvYmplY3QgdG8gYmUgZGVsZXRlZC4KKyAgICAvLyByZWxlYXNl
TWVtb3J5KCkgY2FuIGJlIGNhbGxlZCB3aGVuIHRoZSBBdWRpb0NvbnRleHQgZ29lcyBhd2F5LCBz
byB3ZSBjYW4gcmVsZWFzZSB0aGUgbWVtb3J5IGVhcmxpZXIgdGhhbiB3aGVuIHRoZSBnYXJiYWdl
IGNvbGxlY3Rpb24gaGFwcGVucy4KKyAgICAvLyBDYXJlZnVsISBPbmx5IGNhbGwgdGhpcyB3aGVu
IHRoZSBwYWdlIHVubG9hZHMsIGFmdGVyIHRoZSBBdWRpb0NvbnRleHQgaXMgbm8gbG9uZ2VyIHBy
b2Nlc3NpbmcuCisgICAgdm9pZCByZWxlYXNlTWVtb3J5KCk7CisgICAgCitwcm90ZWN0ZWQ6Cisg
ICAgQXVkaW9CdWZmZXIodW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IG51bWJlck9m
RnJhbWVzLCBkb3VibGUgc2FtcGxlUmF0ZSk7CisgICAgQXVkaW9CdWZmZXIoQXVkaW9CdXMqIGJ1
cyk7CisKKyAgICBkb3VibGUgbV9nYWluOyAvLyBzY2FsYXIgZ2FpbgorICAgIGRvdWJsZSBtX3Nh
bXBsZVJhdGU7CisgICAgc2l6ZV90IG1fbGVuZ3RoOworCisgICAgVmVjdG9yPFJlZlB0cjxGbG9h
dDMyQXJyYXk+ID4gbV9jaGFubmVsczsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIEF1ZGlvQnVmZmVyX2gKSW5kZXg6IFdlYkNvcmUvd2ViYXVkaW8vQXVkaW9CdWZm
ZXIuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvd2ViYXVkaW8vQXVkaW9CdWZmZXIuaWRsCShy
ZXZpc2lvbiAwKQorKysgV2ViQ29yZS93ZWJhdWRpby9BdWRpb0J1ZmZlci5pZGwJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVy
IHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVz
IG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCittb2R1bGUgYXVkaW8geworICAgIGludGVyZmFjZSBbCisg
ICAgICAgIENvbmRpdGlvbmFsPVdFQl9BVURJTyAmIDNEX0NBTlZBUworICAgIF0gQXVkaW9CdWZm
ZXIgeworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyBsZW5ndGg7IC8vIGluIHNhbXBs
ZS1mcmFtZXMKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGZsb2F0IGR1cmF0aW9uOyAvLyBp
biBzZWNvbmRzCisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBmbG9hdCBzYW1wbGVSYXRlOyAv
LyBpbiBzYW1wbGUtZnJhbWVzIHBlciBzZWNvbmQKKworICAgICAgICBhdHRyaWJ1dGUgZmxvYXQg
Z2FpbjsgLy8gbGluZWFyIGdhaW4gKGRlZmF1bHQgMS4wKQorCisgICAgICAgIC8vIENoYW5uZWwg
YWNjZXNzCisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIG51bWJlck9m
Q2hhbm5lbHM7CisgICAgICAgIEZsb2F0MzJBcnJheSBnZXRDaGFubmVsRGF0YShpbiB1bnNpZ25l
ZCBsb25nIGNoYW5uZWxJbmRleCk7CisgICAgfTsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>66963</attachid>
            <date>2010-09-08 16:53:50 -0700</date>
            <delta_ts>2010-09-09 16:59:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-45003-20100908165348.patch</filename>
            <type>text/plain</type>
            <size>11369</size>
            <attacher name="Chris Rogers">crogers</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NzAzNykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjggQEAKKzIwMTAtMDktMDggIENocmlzIFJvZ2VycyAgPGNyb2dlcnNAZ29vZ2xl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgQXVkaW9CdWZmZXIgZmlsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTQ1MDAzCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIHNpbmNlIGF1ZGlvIEFQ
SSBpcyBub3QgeWV0IGltcGxlbWVudGVkLgorCisgICAgICAgICogd2ViYXVkaW8vQXVkaW9CdWZm
ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVmZmVyOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdWZmZXI6OmNyZWF0ZUZyb21BdWRpb0ZpbGVEYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVmZmVyOjpBdWRpb0J1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb0J1ZmZlcjo6cmVsZWFzZU1lbW9yeSk6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb0J1ZmZlcjo6Z2V0Q2hhbm5lbERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdWZm
ZXI6Onplcm8pOgorICAgICAgICAqIHdlYmF1ZGlvL0F1ZGlvQnVmZmVyLmg6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6QXVkaW9CdWZmZXI6Omxlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb0J1ZmZlcjo6ZHVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdWZmZXI6OnNh
bXBsZVJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdWZmZXI6Om51bWJlck9mQ2hhbm5l
bHMpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdWZmZXI6OmdhaW4pOgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9CdWZmZXI6OnNldEdhaW4pOgorICAgICAgICAqIHdlYmF1ZGlvL0F1ZGlvQnVm
ZmVyLmlkbDogQWRkZWQuCisKIDIwMTAtMDktMDggIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUu
Y29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgYXR0ZW1wdCB0byBmaXggdGhlIE1hYyBidWlsZHMu
CkluZGV4OiBXZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUv
d2ViYXVkaW8vQXVkaW9CdWZmZXIuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExMCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29t
cHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
CisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
QU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShXRUJfQVVESU8pICYgRU5BQkxFKDNE
X0NBTlZBUykKKworI2luY2x1ZGUgIkF1ZGlvQnVmZmVyLmgiCisKKyNpbmNsdWRlICJBdWRpb0J1
cy5oIgorI2luY2x1ZGUgIkF1ZGlvRmlsZVJlYWRlci5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNv
ZGUuaCIKKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
UGFzc1JlZlB0cjxBdWRpb0J1ZmZlcj4gQXVkaW9CdWZmZXI6OmNyZWF0ZSh1bnNpZ25lZCBudW1i
ZXJPZkNoYW5uZWxzLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMsIGRvdWJsZSBzYW1wbGVSYXRlKQor
eworICAgIHJldHVybiBhZG9wdFJlZihuZXcgQXVkaW9CdWZmZXIobnVtYmVyT2ZDaGFubmVscywg
bnVtYmVyT2ZGcmFtZXMsIHNhbXBsZVJhdGUpKTsKK30KKworUGFzc1JlZlB0cjxBdWRpb0J1ZmZl
cj4gQXVkaW9CdWZmZXI6OmNyZWF0ZUZyb21BdWRpb0ZpbGVEYXRhKGNvbnN0IHZvaWQqIGRhdGEs
IHNpemVfdCBkYXRhU2l6ZSwgYm9vbCBtaXhUb01vbm8sIGRvdWJsZSBzYW1wbGVSYXRlKQorewor
ICAgIE93blB0cjxBdWRpb0J1cz4gYnVzID0gY3JlYXRlQnVzRnJvbUluTWVtb3J5QXVkaW9GaWxl
KGRhdGEsIGRhdGFTaXplLCBtaXhUb01vbm8sIHNhbXBsZVJhdGUpOworICAgIGlmIChidXMuZ2V0
KCkpCisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQXVkaW9CdWZmZXIoYnVzLmdldCgpKSk7
CisKKyAgICByZXR1cm4gMDsKK30KKworQXVkaW9CdWZmZXI6OkF1ZGlvQnVmZmVyKHVuc2lnbmVk
IG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZkZyYW1lcywgZG91YmxlIHNhbXBsZVJh
dGUpCisgICAgOiBtX2dhaW4oMS4wKQorICAgICwgbV9zYW1wbGVSYXRlKHNhbXBsZVJhdGUpCisg
ICAgLCBtX2xlbmd0aChudW1iZXJPZkZyYW1lcykKK3sKKyAgICBtX2NoYW5uZWxzLnJlc2VydmVD
YXBhY2l0eShudW1iZXJPZkNoYW5uZWxzKTsKKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBudW1iZXJPZkNoYW5uZWxzOyArK2kpIHsKKyAgICAgICAgUmVmUHRyPEZsb2F0MzJBcnJheT4g
Y2hhbm5lbERhdGFBcnJheSA9IEZsb2F0MzJBcnJheTo6Y3JlYXRlKG1fbGVuZ3RoKTsKKyAgICAg
ICAgbV9jaGFubmVscy5hcHBlbmQoY2hhbm5lbERhdGFBcnJheSk7CisgICAgfQorfQorCitBdWRp
b0J1ZmZlcjo6QXVkaW9CdWZmZXIoQXVkaW9CdXMqIGJ1cykKKyAgICA6IG1fZ2FpbigxLjApCisg
ICAgLCBtX3NhbXBsZVJhdGUoYnVzLT5zYW1wbGVSYXRlKCkpCisgICAgLCBtX2xlbmd0aChidXMt
Pmxlbmd0aCgpKQoreworICAgIC8vIENvcHkgYXVkaW8gZGF0YSBmcm9tIHRoZSBidXMgdG8gdGhl
IEZsb2F0MzJBcnJheXMgd2UgbWFuYWdlLgorICAgIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMg
PSBidXMtPm51bWJlck9mQ2hhbm5lbHMoKTsKKyAgICBtX2NoYW5uZWxzLnJlc2VydmVDYXBhY2l0
eShudW1iZXJPZkNoYW5uZWxzKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVy
T2ZDaGFubmVsczsgKytpKSB7CisgICAgICAgIFJlZlB0cjxGbG9hdDMyQXJyYXk+IGNoYW5uZWxE
YXRhQXJyYXkgPSBGbG9hdDMyQXJyYXk6OmNyZWF0ZShtX2xlbmd0aCk7CisgICAgICAgIEV4Y2Vw
dGlvbkNvZGUgZWM7CisgICAgICAgIGNoYW5uZWxEYXRhQXJyYXktPnNldFJhbmdlKGJ1cy0+Y2hh
bm5lbChpKS0+ZGF0YSgpLCBtX2xlbmd0aCwgMCwgZWMpOworICAgICAgICBtX2NoYW5uZWxzLmFw
cGVuZChjaGFubmVsRGF0YUFycmF5KTsKKyAgICB9Cit9CisKK3ZvaWQgQXVkaW9CdWZmZXI6OnJl
bGVhc2VNZW1vcnkoKQoreworICAgIG1fY2hhbm5lbHMuY2xlYXIoKTsKK30KKworRmxvYXQzMkFy
cmF5KiBBdWRpb0J1ZmZlcjo6Z2V0Q2hhbm5lbERhdGEodW5zaWduZWQgY2hhbm5lbEluZGV4KQor
eworICAgIGlmIChjaGFubmVsSW5kZXggPj0gbV9jaGFubmVscy5zaXplKCkpCisgICAgICAgIHJl
dHVybiAwOworCisgICAgcmV0dXJuIG1fY2hhbm5lbHNbY2hhbm5lbEluZGV4XS5nZXQoKTsKK30K
Kwordm9pZCBBdWRpb0J1ZmZlcjo6emVybygpCit7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG1fY2hhbm5lbHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKGdldENoYW5uZWxEYXRh
KGkpKSB7CisgICAgICAgICAgICBFeGNlcHRpb25Db2RlIGVjOworICAgICAgICAgICAgZ2V0Q2hh
bm5lbERhdGEoaSktPnplcm9SYW5nZSgwLCBsZW5ndGgoKSwgZWMpOworICAgICAgICB9CisgICAg
fQorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FV
RElPKSAmIEVOQUJMRSgzRF9DQU5WQVMpCkluZGV4OiBXZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQnVm
ZmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS93ZWJhdWRpby9BdWRpb0J1ZmZlci5oCShyZXZp
c2lvbiAwKQorKysgV2ViQ29yZS93ZWJhdWRpby9BdWRpb0J1ZmZlci5oCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUg
bmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgor
ICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
KyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAq
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBBdWRpb0J1ZmZlcl9oCisjZGVmaW5lIEF1ZGlvQnVm
ZmVyX2gKKworI2luY2x1ZGUgIkZsb2F0MzJBcnJheS5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVm
UHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIEF1ZGlvQnVzOworICAgIAorY2xhc3MgQXVkaW9CdWZmZXIgOiBwdWJsaWMgUmVmQ291bnRl
ZDxBdWRpb0J1ZmZlcj4geworcHVibGljOiAgIAorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEF1ZGlv
QnVmZmVyPiBjcmVhdGUodW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IG51bWJlck9m
RnJhbWVzLCBkb3VibGUgc2FtcGxlUmF0ZSk7CisKKyAgICAvLyBSZXR1cm5zIDAgaWYgZGF0YSBp
cyBub3QgYSB2YWxpZCBhdWRpbyBmaWxlLgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEF1ZGlvQnVm
ZmVyPiBjcmVhdGVGcm9tQXVkaW9GaWxlRGF0YShjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QgZGF0
YVNpemUsIGJvb2wgbWl4VG9Nb25vLCBkb3VibGUgc2FtcGxlUmF0ZSk7CisKKyAgICAvLyBGb3Jt
YXQKKyAgICBzaXplX3QgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9sZW5ndGg7IH0KKyAgICBk
b3VibGUgZHVyYXRpb24oKSBjb25zdCB7IHJldHVybiBsZW5ndGgoKSAvIHNhbXBsZVJhdGUoKTsg
fQorICAgIGRvdWJsZSBzYW1wbGVSYXRlKCkgY29uc3QgeyByZXR1cm4gbV9zYW1wbGVSYXRlOyB9
CisKKyAgICAvLyBDaGFubmVsIGRhdGEgYWNjZXNzCisgICAgdW5zaWduZWQgbnVtYmVyT2ZDaGFu
bmVscygpIGNvbnN0IHsgcmV0dXJuIG1fY2hhbm5lbHMuc2l6ZSgpOyB9CisgICAgRmxvYXQzMkFy
cmF5KiBnZXRDaGFubmVsRGF0YSh1bnNpZ25lZCBjaGFubmVsSW5kZXgpOworICAgIHZvaWQgemVy
bygpOworCisgICAgLy8gU2NhbGFyIGdhaW4KKyAgICBkb3VibGUgZ2FpbigpIGNvbnN0IHsgcmV0
dXJuIG1fZ2FpbjsgfQorICAgIHZvaWQgc2V0R2Fpbihkb3VibGUgZ2FpbikgeyBtX2dhaW4gPSBn
YWluOyB9CisKKyAgICAvLyBCZWNhdXNlIGFuIEF1ZGlvQnVmZmVyIGhhcyBhIEphdmFTY3JpcHQg
d3JhcHBlciwgd2hpY2ggd2lsbCBiZSBnYXJiYWdlIGNvbGxlY3RlZCwgaXQgbWF5IHRha2UgYXdo
aWxlIGZvciB0aGlzIG9iamVjdCB0byBiZSBkZWxldGVkLgorICAgIC8vIHJlbGVhc2VNZW1vcnko
KSBjYW4gYmUgY2FsbGVkIHdoZW4gdGhlIEF1ZGlvQ29udGV4dCBnb2VzIGF3YXksIHNvIHdlIGNh
biByZWxlYXNlIHRoZSBtZW1vcnkgZWFybGllciB0aGFuIHdoZW4gdGhlIGdhcmJhZ2UgY29sbGVj
dGlvbiBoYXBwZW5zLgorICAgIC8vIENhcmVmdWwhIE9ubHkgY2FsbCB0aGlzIHdoZW4gdGhlIHBh
Z2UgdW5sb2FkcywgYWZ0ZXIgdGhlIEF1ZGlvQ29udGV4dCBpcyBubyBsb25nZXIgcHJvY2Vzc2lu
Zy4KKyAgICB2b2lkIHJlbGVhc2VNZW1vcnkoKTsKKyAgICAKK3Byb3RlY3RlZDoKKyAgICBBdWRp
b0J1ZmZlcih1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMs
IGRvdWJsZSBzYW1wbGVSYXRlKTsKKyAgICBBdWRpb0J1ZmZlcihBdWRpb0J1cyogYnVzKTsKKwor
ICAgIGRvdWJsZSBtX2dhaW47IC8vIHNjYWxhciBnYWluCisgICAgZG91YmxlIG1fc2FtcGxlUmF0
ZTsKKyAgICBzaXplX3QgbV9sZW5ndGg7CisKKyAgICBWZWN0b3I8UmVmUHRyPEZsb2F0MzJBcnJh
eT4gPiBtX2NoYW5uZWxzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gQXVkaW9CdWZmZXJfaApJbmRleDogV2ViQ29yZS93ZWJhdWRpby9BdWRpb0J1ZmZlci5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS93ZWJhdWRpby9BdWRpb0J1ZmZlci5pZGwJKHJldmlzaW9u
IDApCisrKyBXZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmlkbAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5h
bWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAq
ICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisg
KiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKK21vZHVsZSBhdWRpbyB7CisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAg
Q29uZGl0aW9uYWw9V0VCX0FVRElPICYgM0RfQ0FOVkFTCisgICAgXSBBdWRpb0J1ZmZlciB7Cisg
ICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nIGxlbmd0aDsgLy8gaW4gc2FtcGxlLWZyYW1l
cworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgZmxvYXQgZHVyYXRpb247IC8vIGluIHNlY29u
ZHMKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGZsb2F0IHNhbXBsZVJhdGU7IC8vIGluIHNh
bXBsZS1mcmFtZXMgcGVyIHNlY29uZAorCisgICAgICAgIGF0dHJpYnV0ZSBmbG9hdCBnYWluOyAv
LyBsaW5lYXIgZ2FpbiAoZGVmYXVsdCAxLjApCisKKyAgICAgICAgLy8gQ2hhbm5lbCBhY2Nlc3MK
KyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZDaGFubmVs
czsKKyAgICAgICAgRmxvYXQzMkFycmF5IGdldENoYW5uZWxEYXRhKGluIHVuc2lnbmVkIGxvbmcg
Y2hhbm5lbEluZGV4KTsKKyAgICB9OworfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>