<?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>46234</bug_id>
          
          <creation_ts>2010-09-21 17:21:39 -0700</creation_ts>
          <short_desc>Add HRTFDatabaseLoader files</short_desc>
          <delta_ts>2010-09-27 19:08:48 -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>282679</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2010-09-21 17:21:39 -0700</bug_when>
    <thetext>Add HRTFDatabaseLoader files</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282682</commentid>
    <comment_count>1</comment_count>
      <attachid>68315</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2010-09-21 17:22:43 -0700</bug_when>
    <thetext>Created attachment 68315
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>284774</commentid>
    <comment_count>2</comment_count>
      <attachid>68315</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-09-24 15:34:11 -0700</bug_when>
    <thetext>Comment on attachment 68315
Patch

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

How is this class supposed to be used?  It seems that a user would first call loadAsynchronously(), but then have nothing better to do but poll isLoaded() until it returns true, which doesn&apos;t seem very useful.  Should this expose a callback for users?

r- for the unsafe use of RefPtr across threads.

&gt; WebCore/platform/audio/HRTFDatabaseLoader.cpp:76
&gt; +        m_hrtfDatabase = HRTFDatabase::createForSubject(&quot;Composite&quot;, m_databaseSampleRate);

It is not safe to increment a reference on a RefCounted object from one thread and then increment/decrement references from another thread.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>284825</commentid>
    <comment_count>3</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2010-09-24 16:19:17 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 68315 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=68315&amp;action=review
&gt; 
&gt; How is this class supposed to be used?  It seems that a user would first call loadAsynchronously(), but then have nothing better to do but poll isLoaded() until it returns true, which doesn&apos;t seem very useful.  Should this expose a callback for users?

Sorry, I didn&apos;t suppy enough context about this patch.  Please see WebCore/webaudio/AudioContext.cpp for the call to loadAsynchronously().
Also there is a method AudioContext::isRunnable() which calls the isLoaded() method.  Then the audio thread calls context()-&gt;isRunnable() at the start of each render cycle.  Please see patch:

https://bugs.webkit.org/attachment.cgi?id=68416&amp;action=prettypatch


&gt; 
&gt; r- for the unsafe use of RefPtr across threads.
&gt; 
&gt; &gt; WebCore/platform/audio/HRTFDatabaseLoader.cpp:76
&gt; &gt; +        m_hrtfDatabase = HRTFDatabase::createForSubject(&quot;Composite&quot;, m_databaseSampleRate);
&gt; 
&gt; It is not safe to increment a reference on a RefCounted object from one thread and then increment/decrement references from another thread.

I believe that it is safe to call m_hrtfDatabase.clear() in the unload() method because waitForThreadCompletion() has already returned.  Also, in the calling
sequences actually used for this code, it should be safe for HRTFPanner::pan() to make the reference.  But in re-reading this I think it&apos;s unnecessary.
I think I could clean this up by having the database() method return just a simple HRTFDatabase* pointer to avoid any possible problems here and also simplify the API.

I&apos;ll re-post a patch with that change and the corresponding change to the HRTFPanner patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>284831</commentid>
    <comment_count>4</comment_count>
      <attachid>68784</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2010-09-24 16:25:05 -0700</bug_when>
    <thetext>Created attachment 68784
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>285760</commentid>
    <comment_count>5</comment_count>
      <attachid>68961</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2010-09-27 14:46:56 -0700</bug_when>
    <thetext>Created attachment 68961
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>285761</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2010-09-27 14:48:19 -0700</bug_when>
    <thetext>Hi James, as we discussed offline, I&apos;ve reworked this class to use an OwnPtr&lt;HRTFDatabase&gt; instead of RefPtr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>285833</commentid>
    <comment_count>7</comment_count>
      <attachid>68981</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2010-09-27 15:53:41 -0700</bug_when>
    <thetext>Created attachment 68981
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>285836</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2010-09-27 15:54:30 -0700</bug_when>
    <thetext>Sorry, another patch to fix order of ASSERT around line 54 of HRTFDatabaseLoader.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>285898</commentid>
    <comment_count>9</comment_count>
      <attachid>68981</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-09-27 16:50:05 -0700</bug_when>
    <thetext>Comment on attachment 68981
Patch

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

Looking pretty good!  Thanks for the threading ASSERT()s, they make it much easier to reason about.

r- for nits

&gt; WebCore/platform/audio/HRTFDatabaseLoader.cpp:65
&gt; +    , m_databaseSampleRate(44100.0) // proper value gets set later

the constructor should just take the sample rate as a parameter since it&apos;s always set immediately after construction

&gt; WebCore/platform/audio/HRTFDatabaseLoader.h:60
&gt; +    static HRTFDatabaseLoader* s_loader; // singleton

should this be public?

&gt; WebCore/platform/audio/HRTFDatabaseLoader.h:72
&gt; +    mutable OwnPtr&lt;HRTFDatabase&gt; m_hrtfDatabase;

nit: it doesn&apos;t appear mutable is needed here

&gt; WebCore/platform/audio/HRTFDatabaseLoader.h:81
&gt; +// defaultHRTFDatabase() gives access to the loaded database.
&gt; +// This can be called from any thread, but it is the callers responsibilty to call this while the context (and thus HRTFDatabaseLoader)
&gt; +// is still alive.  Otherwise this will return 0.
&gt; +extern HRTFDatabase* defaultHRTFDatabase();

This should be a static function on HRTFDatabaseLoader, no reason to put this directly in the WebCore namespace.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>285965</commentid>
    <comment_count>10</comment_count>
      <attachid>69001</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2010-09-27 17:50:44 -0700</bug_when>
    <thetext>Created attachment 69001
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>285966</commentid>
    <comment_count>11</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2010-09-27 17:51:18 -0700</bug_when>
    <thetext>James, I think I&apos;ve addressed the rest of your comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>285968</commentid>
    <comment_count>12</comment_count>
      <attachid>69001</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-09-27 17:54:03 -0700</bug_when>
    <thetext>Comment on attachment 69001
Patch

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

R=me

&gt; WebCore/platform/audio/HRTFDatabaseLoader.h:67
&gt; +    HRTFDatabaseLoader(double sampleRate);    

nit: explicit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>285971</commentid>
    <comment_count>13</comment_count>
      <attachid>69003</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2010-09-27 17:58:02 -0700</bug_when>
    <thetext>Created attachment 69003
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>285972</commentid>
    <comment_count>14</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2010-09-27 17:58:43 -0700</bug_when>
    <thetext>Thanks James, I addressed the last nit - was R+ before.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>286001</commentid>
    <comment_count>15</comment_count>
      <attachid>69003</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-09-27 19:08:41 -0700</bug_when>
    <thetext>Comment on attachment 69003
Patch

Clearing flags on attachment: 69003

Committed r68470: &lt;http://trac.webkit.org/changeset/68470&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>286002</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-09-27 19:08:48 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>68315</attachid>
            <date>2010-09-21 17:22:43 -0700</date>
            <delta_ts>2010-09-24 16:25:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-46234-20100921172242.patch</filename>
            <type>text/plain</type>
            <size>8242</size>
            <attacher name="Chris Rogers">crogers</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2Nzk5NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjQgQEAKKzIwMTAtMDktMjEgIENocmlzIFJvZ2VycyAgPGNyb2dlcnNAZ29vZ2xl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgSFJURkRhdGFiYXNlTG9hZGVyIGZpbGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD00NjIzNAorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBzaW5jZSBh
dWRpbyBBUEkgaXMgbm90IHlldCBpbXBsZW1lbnRlZC4KKworICAgICAgICAqIHBsYXRmb3JtL2F1
ZGlvL0hSVEZEYXRhYmFzZUxvYWRlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SFJU
RkRhdGFiYXNlTG9hZGVyOjpsb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6aHJ0ZkRhdGFiYXNl
TG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhSVEZEYXRhYmFzZUxvYWRlcjo6SFJURkRhdGFi
YXNlTG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OmRhdGFiYXNlTG9hZGVyRW50cnkpOgorICAg
ICAgICAoV2ViQ29yZTo6SFJURkRhdGFiYXNlTG9hZGVyOjpsb2FkKToKKyAgICAgICAgKFdlYkNv
cmU6OkhSVEZEYXRhYmFzZUxvYWRlcjo6bG9hZEFzeW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdl
YkNvcmU6OkhSVEZEYXRhYmFzZUxvYWRlcjo6aXNMb2FkZWQpOgorICAgICAgICAoV2ViQ29yZTo6
SFJURkRhdGFiYXNlTG9hZGVyOjp1bmxvYWQpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0hS
VEZEYXRhYmFzZUxvYWRlci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhSVEZEYXRhYmFz
ZUxvYWRlcjo6ZGF0YWJhc2UpOgorCiAyMDEwLTA5LTIxICBQcmF0aWsgU29sYW5raSAgPHBzb2xh
bmtpQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbiBhbmQg
RGFyaW4gQWRsZXIuCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFzZUxv
YWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJh
c2VMb2FkZXIuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRG
RGF0YWJhc2VMb2FkZXIuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExNCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIs
IEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAg
ICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwor
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShXRUJfQVVESU8pCisKKyNpbmNsdWRlICJIUlRG
RGF0YWJhc2VMb2FkZXIuaCIKKworI2luY2x1ZGUgIkhSVEZEYXRhYmFzZS5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK0hSVEZEYXRhYmFzZUxvYWRlciogSFJURkRhdGFiYXNlTG9hZGVyOjpz
X2xvYWRlciA9IDA7CisKK0hSVEZEYXRhYmFzZUxvYWRlciogSFJURkRhdGFiYXNlTG9hZGVyOjps
b2FkZXIoKQoreworICAgIGlmICghc19sb2FkZXIpCisgICAgICAgIHNfbG9hZGVyID0gbmV3IEhS
VEZEYXRhYmFzZUxvYWRlcigpOworICAgIHJldHVybiBzX2xvYWRlcjsKK30KKworSFJURkRhdGFi
YXNlTG9hZGVyKiBocnRmRGF0YWJhc2VMb2FkZXIoKQoreworICAgIHJldHVybiBIUlRGRGF0YWJh
c2VMb2FkZXI6OmxvYWRlcigpOworfQorCitIUlRGRGF0YWJhc2VMb2FkZXI6OkhSVEZEYXRhYmFz
ZUxvYWRlcigpCisgICAgOiBtX2hydGZEYXRhYmFzZSgwKQorICAgICwgbV9kYXRhYmFzZUxvYWRl
clRocmVhZCgwKQorICAgICwgbV9zdGFydGVkTG9hZGluZ0RhdGFiYXNlKGZhbHNlKQorICAgICwg
bV9kYXRhYmFzZVNhbXBsZVJhdGUoNDQxMDAuMCkgLy8gcHJvcGVyIHZhbHVlIGdldHMgc2V0IGxh
dGVyCit7Cit9CisKKy8vIEFzeW5jaHJvbm91c2x5IGxvYWQgdGhlIGRhdGFiYXNlIGluIHRoaXMg
dGhyZWFkLgorc3RhdGljIHZvaWQqIGRhdGFiYXNlTG9hZGVyRW50cnkodm9pZCogdGhyZWFkRGF0
YSkKK3sKKyAgICBIUlRGRGF0YWJhc2VMb2FkZXIqIGxvYWRlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8
SFJURkRhdGFiYXNlTG9hZGVyKj4odGhyZWFkRGF0YSk7CisgICAgQVNTRVJUKGxvYWRlcik7Cisg
ICAgbG9hZGVyLT5sb2FkKCk7CisgICAgCisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgSFJURkRh
dGFiYXNlTG9hZGVyOjpsb2FkKCkKK3sKKyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKyAg
ICBpZiAoIW1faHJ0ZkRhdGFiYXNlLmdldCgpKSB7CisgICAgICAgIC8vIExvYWQgdGhlIGRlZmF1
bHQgIkNvbXBvc2l0ZSIgSFJURiBkYXRhYmFzZS4KKyAgICAgICAgbV9ocnRmRGF0YWJhc2UgPSBI
UlRGRGF0YWJhc2U6OmNyZWF0ZUZvclN1YmplY3QoIkNvbXBvc2l0ZSIsIG1fZGF0YWJhc2VTYW1w
bGVSYXRlKTsKKyAgICB9Cit9CisKK3ZvaWQgSFJURkRhdGFiYXNlTG9hZGVyOjpsb2FkQXN5bmNo
cm9ub3VzbHkoZG91YmxlIHNhbXBsZVJhdGUpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKKyAgICAKKyAgICBpZiAoIW1faHJ0ZkRhdGFiYXNlLmdldCgpICYmICFtX3N0YXJ0ZWRMb2Fk
aW5nRGF0YWJhc2UpIHsKKyAgICAgICAgLy8gU3RhcnQgdGhlIGFzeW5jaHJvbm91cyBkYXRhYmFz
ZSBsb2FkaW5nIHByb2Nlc3MuCisgICAgICAgIG1fc3RhcnRlZExvYWRpbmdEYXRhYmFzZSA9IHRy
dWU7CisgICAgICAgIG1fZGF0YWJhc2VTYW1wbGVSYXRlID0gc2FtcGxlUmF0ZTsKKyAgICAgICAg
bV9kYXRhYmFzZUxvYWRlclRocmVhZCA9IGNyZWF0ZVRocmVhZChkYXRhYmFzZUxvYWRlckVudHJ5
LCB0aGlzLCAiSFJURiBkYXRhYmFzZSBsb2FkZXIiKTsKKyAgICB9Cit9CisKK2Jvb2wgSFJURkRh
dGFiYXNlTG9hZGVyOjppc0xvYWRlZCgpCit7CisgICAgcmV0dXJuIG1faHJ0ZkRhdGFiYXNlLmdl
dCgpOworfQorCit2b2lkIEhSVEZEYXRhYmFzZUxvYWRlcjo6dW5sb2FkKCkKK3sKKyAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgaWYgKG1fc3RhcnRlZExvYWRpbmdEYXRhYmFzZSkK
KyAgICAgICAgd2FpdEZvclRocmVhZENvbXBsZXRpb24obV9kYXRhYmFzZUxvYWRlclRocmVhZCwg
MCk7CisgICAgCisgICAgbV9zdGFydGVkTG9hZGluZ0RhdGFiYXNlID0gZmFsc2U7CisgICAgbV9k
YXRhYmFzZUxvYWRlclRocmVhZCA9IDA7CisgICAgCisgICAgbV9ocnRmRGF0YWJhc2UuY2xlYXIo
KTsKKyAgICAgICAgCisgICAgSFJURkRhdGFiYXNlOjpjbGVhbnVwKCk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVESU8pCkluZGV4OiBXZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFzZUxvYWRlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlTG9hZGVyLmgJKHJldmlzaW9uIDApCisr
KyBXZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFzZUxvYWRlci5oCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDc2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0
aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBv
ZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YK
KyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBIUlRGRGF0YWJhc2VMb2FkZXJfaAorI2RlZmlu
ZSBIUlRGRGF0YWJhc2VMb2FkZXJfaAorCisjaW5jbHVkZSAiSFJURkRhdGFiYXNlLmgiCisjaW5j
bHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVk
ZSA8d3RmL1RocmVhZGluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIEhSVEZEYXRh
YmFzZUxvYWRlciB3aWxsIGFzeW5jaHJvbm91c2x5IGxvYWQgdGhlIGRlZmF1bHQgSFJURkRhdGFi
YXNlIGluIGEgbmV3IHRocmVhZC4KKworY2xhc3MgSFJURkRhdGFiYXNlTG9hZGVyIHsKK3B1Ymxp
YzoKKyAgICAvLyBTaW5nbGV0b24gYWNjZXNzb3IKKyAgICBzdGF0aWMgSFJURkRhdGFiYXNlTG9h
ZGVyKiBsb2FkZXIoKTsKKyAgICAKKyAgICAvLyBJZiBpdCBoYXNuJ3QgYWxyZWFkeSBiZWVuIGxv
YWRlZCwgY3JlYXRlcyBhIG5ldyB0aHJlYWQgYW5kIGluaXRpYXRlcyBhc3luY2hyb25vdXMgbG9h
ZGluZyBvZiB0aGUgZGVmYXVsdCBkYXRhYmFzZS4KKyAgICAvLyBUaGlzIG11c3QgYmUgY2FsbGVk
IGZyb20gdGhlIG1haW4gdGhyZWFkLgorICAgIHZvaWQgbG9hZEFzeW5jaHJvbm91c2x5KGRvdWJs
ZSBzYW1wbGVSYXRlKTsKKworICAgIC8vIFJldHVybnMgdHJ1ZSBvbmNlIHRoZSBkZWZhdWx0IGRh
dGFiYXNlIGhhcyBiZWVuIGNvbXBsZXRlbHkgbG9hZGVkLgorICAgIGJvb2wgaXNMb2FkZWQoKTsK
KyAgICAKKyAgICBQYXNzUmVmUHRyPEhSVEZEYXRhYmFzZT4gZGF0YWJhc2UoKSB7IHJldHVybiBt
X2hydGZEYXRhYmFzZTsgfQorICAgIAorICAgIC8vIEdldHMgcmlkIG9mIGFsbG9jYXRlZCByZXNv
dXJjZXMgZm9yIHRoZSBkZWZhdWx0IGRhdGFiYXNlLgorICAgIC8vIFRoaXMgbXVzdCBiZSBjYWxs
ZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQuCisgICAgdm9pZCB1bmxvYWQoKTsKKworICAgIC8vIENh
bGxlZCBpbiBhc3luY2hyb25vdXMgbG9hZGluZyB0aHJlYWQuCisgICAgdm9pZCBsb2FkKCk7CisK
K3ByaXZhdGU6CisgICAgSFJURkRhdGFiYXNlTG9hZGVyKCk7CisgICAgc3RhdGljIEhSVEZEYXRh
YmFzZUxvYWRlciogc19sb2FkZXI7IC8vIHNpbmdsZXRvbgorICAgIAorICAgIFJlZlB0cjxIUlRG
RGF0YWJhc2U+IG1faHJ0ZkRhdGFiYXNlOworICAgIFRocmVhZElkZW50aWZpZXIgbV9kYXRhYmFz
ZUxvYWRlclRocmVhZDsKKyAgICBib29sIG1fc3RhcnRlZExvYWRpbmdEYXRhYmFzZTsKKyAgICBk
b3VibGUgbV9kYXRhYmFzZVNhbXBsZVJhdGU7ICAgIAorfTsKKworZXh0ZXJuIEhSVEZEYXRhYmFz
ZUxvYWRlciogaHJ0ZkRhdGFiYXNlTG9hZGVyKCk7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIEhSVEZEYXRhYmFzZUxvYWRlcl9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>68784</attachid>
            <date>2010-09-24 16:25:05 -0700</date>
            <delta_ts>2010-09-27 14:46:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-46234-20100924162504.patch</filename>
            <type>text/plain</type>
            <size>8226</size>
            <attacher name="Chris Rogers">crogers</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2ODMxMikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjQgQEAKKzIwMTAtMDktMjQgIENocmlzIFJvZ2VycyAgPGNyb2dlcnNAZ29vZ2xl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgSFJURkRhdGFiYXNlTG9hZGVyIGZpbGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD00NjIzNAorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBzaW5jZSBh
dWRpbyBBUEkgaXMgbm90IHlldCBpbXBsZW1lbnRlZC4KKworICAgICAgICAqIHBsYXRmb3JtL2F1
ZGlvL0hSVEZEYXRhYmFzZUxvYWRlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SFJU
RkRhdGFiYXNlTG9hZGVyOjpsb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6aHJ0ZkRhdGFiYXNl
TG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhSVEZEYXRhYmFzZUxvYWRlcjo6SFJURkRhdGFi
YXNlTG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OmRhdGFiYXNlTG9hZGVyRW50cnkpOgorICAg
ICAgICAoV2ViQ29yZTo6SFJURkRhdGFiYXNlTG9hZGVyOjpsb2FkKToKKyAgICAgICAgKFdlYkNv
cmU6OkhSVEZEYXRhYmFzZUxvYWRlcjo6bG9hZEFzeW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdl
YkNvcmU6OkhSVEZEYXRhYmFzZUxvYWRlcjo6aXNMb2FkZWQpOgorICAgICAgICAoV2ViQ29yZTo6
SFJURkRhdGFiYXNlTG9hZGVyOjp1bmxvYWQpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0hS
VEZEYXRhYmFzZUxvYWRlci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhSVEZEYXRhYmFz
ZUxvYWRlcjo6ZGF0YWJhc2UpOgorCiAyMDEwLTA5LTI0ICBQYXdlbCBIYWpkYW4gIDxwaGFqZGFu
LmpyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEdW1pdHJ1IERhbmlsaXVj
LgpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2VMb2FkZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlTG9hZGVyLmNw
cAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlTG9h
ZGVyLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMTQgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBw
bGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisKKyNpZiBFTkFCTEUoV0VCX0FVRElPKQorCisjaW5jbHVkZSAiSFJURkRhdGFiYXNlTG9h
ZGVyLmgiCisKKyNpbmNsdWRlICJIUlRGRGF0YWJhc2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitIUlRGRGF0YWJhc2VMb2FkZXIqIEhSVEZEYXRhYmFzZUxvYWRlcjo6c19sb2FkZXIgPSAw
OworCitIUlRGRGF0YWJhc2VMb2FkZXIqIEhSVEZEYXRhYmFzZUxvYWRlcjo6bG9hZGVyKCkKK3sK
KyAgICBpZiAoIXNfbG9hZGVyKQorICAgICAgICBzX2xvYWRlciA9IG5ldyBIUlRGRGF0YWJhc2VM
b2FkZXIoKTsKKyAgICByZXR1cm4gc19sb2FkZXI7Cit9CisKK0hSVEZEYXRhYmFzZUxvYWRlciog
aHJ0ZkRhdGFiYXNlTG9hZGVyKCkKK3sKKyAgICByZXR1cm4gSFJURkRhdGFiYXNlTG9hZGVyOjps
b2FkZXIoKTsKK30KKworSFJURkRhdGFiYXNlTG9hZGVyOjpIUlRGRGF0YWJhc2VMb2FkZXIoKQor
ICAgIDogbV9ocnRmRGF0YWJhc2UoMCkKKyAgICAsIG1fZGF0YWJhc2VMb2FkZXJUaHJlYWQoMCkK
KyAgICAsIG1fc3RhcnRlZExvYWRpbmdEYXRhYmFzZShmYWxzZSkKKyAgICAsIG1fZGF0YWJhc2VT
YW1wbGVSYXRlKDQ0MTAwLjApIC8vIHByb3BlciB2YWx1ZSBnZXRzIHNldCBsYXRlcgoreworfQor
CisvLyBBc3luY2hyb25vdXNseSBsb2FkIHRoZSBkYXRhYmFzZSBpbiB0aGlzIHRocmVhZC4KK3N0
YXRpYyB2b2lkKiBkYXRhYmFzZUxvYWRlckVudHJ5KHZvaWQqIHRocmVhZERhdGEpCit7CisgICAg
SFJURkRhdGFiYXNlTG9hZGVyKiBsb2FkZXIgPSByZWludGVycHJldF9jYXN0PEhSVEZEYXRhYmFz
ZUxvYWRlcio+KHRocmVhZERhdGEpOworICAgIEFTU0VSVChsb2FkZXIpOworICAgIGxvYWRlci0+
bG9hZCgpOworICAgIAorICAgIHJldHVybiAwOworfQorCit2b2lkIEhSVEZEYXRhYmFzZUxvYWRl
cjo6bG9hZCgpCit7CisgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKCFtX2hy
dGZEYXRhYmFzZS5nZXQoKSkgeworICAgICAgICAvLyBMb2FkIHRoZSBkZWZhdWx0ICJDb21wb3Np
dGUiIEhSVEYgZGF0YWJhc2UuCisgICAgICAgIG1faHJ0ZkRhdGFiYXNlID0gSFJURkRhdGFiYXNl
OjpjcmVhdGVGb3JTdWJqZWN0KCJDb21wb3NpdGUiLCBtX2RhdGFiYXNlU2FtcGxlUmF0ZSk7Cisg
ICAgfQorfQorCit2b2lkIEhSVEZEYXRhYmFzZUxvYWRlcjo6bG9hZEFzeW5jaHJvbm91c2x5KGRv
dWJsZSBzYW1wbGVSYXRlKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgCisg
ICAgaWYgKCFtX2hydGZEYXRhYmFzZS5nZXQoKSAmJiAhbV9zdGFydGVkTG9hZGluZ0RhdGFiYXNl
KSB7CisgICAgICAgIC8vIFN0YXJ0IHRoZSBhc3luY2hyb25vdXMgZGF0YWJhc2UgbG9hZGluZyBw
cm9jZXNzLgorICAgICAgICBtX3N0YXJ0ZWRMb2FkaW5nRGF0YWJhc2UgPSB0cnVlOworICAgICAg
ICBtX2RhdGFiYXNlU2FtcGxlUmF0ZSA9IHNhbXBsZVJhdGU7CisgICAgICAgIG1fZGF0YWJhc2VM
b2FkZXJUaHJlYWQgPSBjcmVhdGVUaHJlYWQoZGF0YWJhc2VMb2FkZXJFbnRyeSwgdGhpcywgIkhS
VEYgZGF0YWJhc2UgbG9hZGVyIik7CisgICAgfQorfQorCitib29sIEhSVEZEYXRhYmFzZUxvYWRl
cjo6aXNMb2FkZWQoKQoreworICAgIHJldHVybiBtX2hydGZEYXRhYmFzZS5nZXQoKTsKK30KKwor
dm9pZCBIUlRGRGF0YWJhc2VMb2FkZXI6OnVubG9hZCgpCit7CisgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKKworICAgIGlmIChtX3N0YXJ0ZWRMb2FkaW5nRGF0YWJhc2UpCisgICAgICAgIHdh
aXRGb3JUaHJlYWRDb21wbGV0aW9uKG1fZGF0YWJhc2VMb2FkZXJUaHJlYWQsIDApOworICAgIAor
ICAgIG1fc3RhcnRlZExvYWRpbmdEYXRhYmFzZSA9IGZhbHNlOworICAgIG1fZGF0YWJhc2VMb2Fk
ZXJUaHJlYWQgPSAwOworICAgIAorICAgIG1faHJ0ZkRhdGFiYXNlLmNsZWFyKCk7CisgICAgICAg
IAorICAgIEhSVEZEYXRhYmFzZTo6Y2xlYW51cCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKQpJbmRleDogV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9IUlRGRGF0YWJhc2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0hSVEZEYXRhYmFzZUxvYWRlci5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2VMb2FkZXIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw3NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2Yg
QXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBp
dHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgSFJURkRhdGFiYXNlTG9hZGVyX2gKKyNkZWZpbmUgSFJURkRhdGFi
YXNlTG9hZGVyX2gKKworI2luY2x1ZGUgIkhSVEZEYXRhYmFzZS5oIgorI2luY2x1ZGUgPHd0Zi9Q
YXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9UaHJl
YWRpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBIUlRGRGF0YWJhc2VMb2FkZXIg
d2lsbCBhc3luY2hyb25vdXNseSBsb2FkIHRoZSBkZWZhdWx0IEhSVEZEYXRhYmFzZSBpbiBhIG5l
dyB0aHJlYWQuCisKK2NsYXNzIEhSVEZEYXRhYmFzZUxvYWRlciB7CitwdWJsaWM6CisgICAgLy8g
U2luZ2xldG9uIGFjY2Vzc29yCisgICAgc3RhdGljIEhSVEZEYXRhYmFzZUxvYWRlciogbG9hZGVy
KCk7CisgICAgCisgICAgLy8gSWYgaXQgaGFzbid0IGFscmVhZHkgYmVlbiBsb2FkZWQsIGNyZWF0
ZXMgYSBuZXcgdGhyZWFkIGFuZCBpbml0aWF0ZXMgYXN5bmNocm9ub3VzIGxvYWRpbmcgb2YgdGhl
IGRlZmF1bHQgZGF0YWJhc2UuCisgICAgLy8gVGhpcyBtdXN0IGJlIGNhbGxlZCBmcm9tIHRoZSBt
YWluIHRocmVhZC4KKyAgICB2b2lkIGxvYWRBc3luY2hyb25vdXNseShkb3VibGUgc2FtcGxlUmF0
ZSk7CisKKyAgICAvLyBSZXR1cm5zIHRydWUgb25jZSB0aGUgZGVmYXVsdCBkYXRhYmFzZSBoYXMg
YmVlbiBjb21wbGV0ZWx5IGxvYWRlZC4KKyAgICBib29sIGlzTG9hZGVkKCk7CisgICAgCisgICAg
SFJURkRhdGFiYXNlKiBkYXRhYmFzZSgpIHsgcmV0dXJuIG1faHJ0ZkRhdGFiYXNlLmdldCgpOyB9
CisgICAgCisgICAgLy8gR2V0cyByaWQgb2YgYWxsb2NhdGVkIHJlc291cmNlcyBmb3IgdGhlIGRl
ZmF1bHQgZGF0YWJhc2UuCisgICAgLy8gVGhpcyBtdXN0IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWlu
IHRocmVhZC4KKyAgICB2b2lkIHVubG9hZCgpOworCisgICAgLy8gQ2FsbGVkIGluIGFzeW5jaHJv
bm91cyBsb2FkaW5nIHRocmVhZC4KKyAgICB2b2lkIGxvYWQoKTsKKworcHJpdmF0ZToKKyAgICBI
UlRGRGF0YWJhc2VMb2FkZXIoKTsKKyAgICBzdGF0aWMgSFJURkRhdGFiYXNlTG9hZGVyKiBzX2xv
YWRlcjsgLy8gc2luZ2xldG9uCisgICAgCisgICAgUmVmUHRyPEhSVEZEYXRhYmFzZT4gbV9ocnRm
RGF0YWJhc2U7CisgICAgVGhyZWFkSWRlbnRpZmllciBtX2RhdGFiYXNlTG9hZGVyVGhyZWFkOwor
ICAgIGJvb2wgbV9zdGFydGVkTG9hZGluZ0RhdGFiYXNlOworICAgIGRvdWJsZSBtX2RhdGFiYXNl
U2FtcGxlUmF0ZTsgICAgCit9OworCitleHRlcm4gSFJURkRhdGFiYXNlTG9hZGVyKiBocnRmRGF0
YWJhc2VMb2FkZXIoKTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gSFJU
RkRhdGFiYXNlTG9hZGVyX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>68961</attachid>
            <date>2010-09-27 14:46:56 -0700</date>
            <delta_ts>2010-09-27 15:53:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-46234-20100927144655.patch</filename>
            <type>text/plain</type>
            <size>9570</size>
            <attacher name="Chris Rogers">crogers</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2ODQyNCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjUgQEAKKzIwMTAtMDktMjcgIENocmlzIFJvZ2VycyAgPGNyb2dlcnNAZ29vZ2xl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgSFJURkRhdGFiYXNlTG9hZGVyIGZpbGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD00NjIzNAorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBzaW5jZSBh
dWRpbyBBUEkgaXMgbm90IHlldCBpbXBsZW1lbnRlZC4KKworICAgICAgICAqIHBsYXRmb3JtL2F1
ZGlvL0hSVEZEYXRhYmFzZUxvYWRlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SFJU
RkRhdGFiYXNlTG9hZGVyOjpjcmVhdGVBbmRMb2FkQXN5bmNocm9ub3VzbHlJZk5lY2Vzc2FyeSk6
CisgICAgICAgIChXZWJDb3JlOjpIUlRGRGF0YWJhc2VMb2FkZXI6OkhSVEZEYXRhYmFzZUxvYWRl
cik6CisgICAgICAgIChXZWJDb3JlOjpIUlRGRGF0YWJhc2VMb2FkZXI6On5IUlRGRGF0YWJhc2VM
b2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6ZGF0YWJhc2VMb2FkZXJFbnRyeSk6CisgICAgICAg
IChXZWJDb3JlOjpIUlRGRGF0YWJhc2VMb2FkZXI6OmxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6
SFJURkRhdGFiYXNlTG9hZGVyOjpsb2FkQXN5bmNocm9ub3VzbHkpOgorICAgICAgICAoV2ViQ29y
ZTo6SFJURkRhdGFiYXNlTG9hZGVyOjppc0xvYWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpkZWZh
dWx0SFJURkRhdGFiYXNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2VM
b2FkZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpIUlRGRGF0YWJhc2VMb2FkZXI6OmRh
dGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkhSVEZEYXRhYmFzZUxvYWRlcjo6ZGF0YWJhc2VT
YW1wbGVSYXRlKToKKwogMjAxMC0wOS0xNCAgWmhlbnlhbyBNbyAgPHptb0Bnb29nbGUuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUnVzc2VsbC4KSW5kZXg6IFdlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFzZUxvYWRlci5jcHAJKHJldmlzaW9uIDApCisrKyBX
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFzZUxvYWRlci5jcHAJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMTM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0
aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBv
ZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YK
KyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFdF
Ql9BVURJTykKKworI2luY2x1ZGUgIkhSVEZEYXRhYmFzZUxvYWRlci5oIgorCisjaW5jbHVkZSAi
SFJURkRhdGFiYXNlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8gU2luZ2xldG9uCitI
UlRGRGF0YWJhc2VMb2FkZXIqIEhSVEZEYXRhYmFzZUxvYWRlcjo6c19sb2FkZXIgPSAwOworCitQ
YXNzUmVmUHRyPEhSVEZEYXRhYmFzZUxvYWRlcj4gSFJURkRhdGFiYXNlTG9hZGVyOjpjcmVhdGVB
bmRMb2FkQXN5bmNocm9ub3VzbHlJZk5lY2Vzc2FyeShkb3VibGUgc2FtcGxlUmF0ZSkKK3sKKyAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgUmVmUHRyPEhSVEZEYXRhYmFzZUxvYWRl
cj4gbG9hZGVyOworICAgIAorICAgIGlmICghc19sb2FkZXIpIHsKKyAgICAgICAgLy8gTGF6aWx5
IGNyZWF0ZSBhbmQgbG9hZC4KKyAgICAgICAgbG9hZGVyID0gYWRvcHRSZWYobmV3IEhSVEZEYXRh
YmFzZUxvYWRlcigpKTsKKyAgICAgICAgc19sb2FkZXIgPSBsb2FkZXIuZ2V0KCk7CisgICAgICAg
IGxvYWRlci0+bG9hZEFzeW5jaHJvbm91c2x5KHNhbXBsZVJhdGUpOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIEFTU0VSVChzYW1wbGVSYXRlID09IGxvYWRlci0+ZGF0YWJhc2VTYW1wbGVSYXRlKCkp
OworICAgICAgICBsb2FkZXIgPSBzX2xvYWRlcjsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIGxv
YWRlcjsKK30KKworSFJURkRhdGFiYXNlTG9hZGVyOjpIUlRGRGF0YWJhc2VMb2FkZXIoKQorICAg
IDogbV9ocnRmRGF0YWJhc2UoMCkKKyAgICAsIG1fZGF0YWJhc2VMb2FkZXJUaHJlYWQoMCkKKyAg
ICAsIG1fc3RhcnRlZExvYWRpbmdEYXRhYmFzZShmYWxzZSkKKyAgICAsIG1fZGF0YWJhc2VTYW1w
bGVSYXRlKDQ0MTAwLjApIC8vIHByb3BlciB2YWx1ZSBnZXRzIHNldCBsYXRlcgoreworICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7Cit9CisKK0hSVEZEYXRhYmFzZUxvYWRlcjo6fkhSVEZEYXRh
YmFzZUxvYWRlcigpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIGlmICht
X3N0YXJ0ZWRMb2FkaW5nRGF0YWJhc2UpCisgICAgICAgIHdhaXRGb3JUaHJlYWRDb21wbGV0aW9u
KG1fZGF0YWJhc2VMb2FkZXJUaHJlYWQsIDApOworICAgIAorICAgIG1fc3RhcnRlZExvYWRpbmdE
YXRhYmFzZSA9IGZhbHNlOworICAgIG1fZGF0YWJhc2VMb2FkZXJUaHJlYWQgPSAwOworICAgIAor
ICAgIG1faHJ0ZkRhdGFiYXNlLmNsZWFyKCk7CisgICAgCisgICAgLy8gQ2xlYXIgb3V0IHNpbmds
ZXRvbi4KKyAgICBBU1NFUlQodGhpcyA9PSBzX2xvYWRlcik7CisgICAgc19sb2FkZXIgPSAwOwor
fQorCisKKy8vIEFzeW5jaHJvbm91c2x5IGxvYWQgdGhlIGRhdGFiYXNlIGluIHRoaXMgdGhyZWFk
Lgorc3RhdGljIHZvaWQqIGRhdGFiYXNlTG9hZGVyRW50cnkodm9pZCogdGhyZWFkRGF0YSkKK3sK
KyAgICBIUlRGRGF0YWJhc2VMb2FkZXIqIGxvYWRlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8SFJURkRh
dGFiYXNlTG9hZGVyKj4odGhyZWFkRGF0YSk7CisgICAgQVNTRVJUKGxvYWRlcik7CisgICAgbG9h
ZGVyLT5sb2FkKCk7CisgICAgCisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgSFJURkRhdGFiYXNl
TG9hZGVyOjpsb2FkKCkKK3sKKyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKyAgICBpZiAo
IW1faHJ0ZkRhdGFiYXNlLmdldCgpKSB7CisgICAgICAgIC8vIExvYWQgdGhlIGRlZmF1bHQgSFJU
RiBkYXRhYmFzZS4KKyAgICAgICAgbV9ocnRmRGF0YWJhc2UgPSBIUlRGRGF0YWJhc2U6OmNyZWF0
ZShtX2RhdGFiYXNlU2FtcGxlUmF0ZSk7CisgICAgfQorfQorCit2b2lkIEhSVEZEYXRhYmFzZUxv
YWRlcjo6bG9hZEFzeW5jaHJvbm91c2x5KGRvdWJsZSBzYW1wbGVSYXRlKQoreworICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CisgICAgCisgICAgaWYgKCFtX2hydGZEYXRhYmFzZS5nZXQoKSAm
JiAhbV9zdGFydGVkTG9hZGluZ0RhdGFiYXNlKSB7CisgICAgICAgIC8vIFN0YXJ0IHRoZSBhc3lu
Y2hyb25vdXMgZGF0YWJhc2UgbG9hZGluZyBwcm9jZXNzLgorICAgICAgICBtX3N0YXJ0ZWRMb2Fk
aW5nRGF0YWJhc2UgPSB0cnVlOworICAgICAgICBtX2RhdGFiYXNlU2FtcGxlUmF0ZSA9IHNhbXBs
ZVJhdGU7CisgICAgICAgIG1fZGF0YWJhc2VMb2FkZXJUaHJlYWQgPSBjcmVhdGVUaHJlYWQoZGF0
YWJhc2VMb2FkZXJFbnRyeSwgdGhpcywgIkhSVEYgZGF0YWJhc2UgbG9hZGVyIik7CisgICAgfQor
fQorCitib29sIEhSVEZEYXRhYmFzZUxvYWRlcjo6aXNMb2FkZWQoKSBjb25zdAoreworICAgIHJl
dHVybiBtX2hydGZEYXRhYmFzZS5nZXQoKTsKK30KKworSFJURkRhdGFiYXNlKiBkZWZhdWx0SFJU
RkRhdGFiYXNlKCkKK3sKKyAgICBpZiAoIUhSVEZEYXRhYmFzZUxvYWRlcjo6c19sb2FkZXIpCisg
ICAgICAgIHJldHVybiAwOworICAgIAorICAgIHJldHVybiBIUlRGRGF0YWJhc2VMb2FkZXI6OnNf
bG9hZGVyLT5kYXRhYmFzZSgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyBFTkFCTEUoV0VCX0FVRElPKQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRG
RGF0YWJhc2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hS
VEZEYXRhYmFzZUxvYWRlci5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9IUlRGRGF0YWJhc2VMb2FkZXIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4NSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0
ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisg
KiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgSFJURkRhdGFiYXNlTG9hZGVyX2gKKyNkZWZpbmUgSFJURkRhdGFiYXNlTG9hZGVyX2gK
KworI2luY2x1ZGUgIkhSVEZEYXRhYmFzZS5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Cisj
aW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIEhS
VEZEYXRhYmFzZUxvYWRlciB3aWxsIGFzeW5jaHJvbm91c2x5IGxvYWQgdGhlIGRlZmF1bHQgSFJU
RkRhdGFiYXNlIGluIGEgbmV3IHRocmVhZC4KKworY2xhc3MgSFJURkRhdGFiYXNlTG9hZGVyIDog
cHVibGljIFJlZkNvdW50ZWQ8SFJURkRhdGFiYXNlTG9hZGVyPiB7CitwdWJsaWM6CisgICAgLy8g
TGF6aWx5IGNyZWF0ZXMgdGhlIHNpbmdsZXRvbiBIUlRGRGF0YWJhc2VMb2FkZXIgKGlmIG5vdCBh
bHJlYWR5IGNyZWF0ZWQpIGFuZCBzdGFydHMgbG9hZGluZyBhc3luY2hyb25vdXNseSAod2hlbiBj
cmVhdGVkIHRoZSBmaXJzdCB0aW1lKS4KKyAgICAvLyBSZXR1cm5zIHRoZSBzaW5nbGV0b24gSFJU
RkRhdGFiYXNlTG9hZGVyLgorICAgIC8vIE11c3QgYmUgY2FsbGVkIGZyb20gdGhlIG1haW4gdGhy
ZWFkLgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhSVEZEYXRhYmFzZUxvYWRlcj4gY3JlYXRlQW5k
TG9hZEFzeW5jaHJvbm91c2x5SWZOZWNlc3NhcnkoZG91YmxlIHNhbXBsZVJhdGUpOworCisgICAg
Ly8gQm90aCBjb25zdHJ1Y3RvciBhbmQgZGVzdHJ1Y3RvciBtdXN0IGJlIGNhbGxlZCBmcm9tIHRo
ZSBtYWluIHRocmVhZC4KKyAgICB+SFJURkRhdGFiYXNlTG9hZGVyKCk7CisgICAgCisgICAgLy8g
UmV0dXJucyB0cnVlIG9uY2UgdGhlIGRlZmF1bHQgZGF0YWJhc2UgaGFzIGJlZW4gY29tcGxldGVs
eSBsb2FkZWQuCisgICAgYm9vbCBpc0xvYWRlZCgpIGNvbnN0OworICAgIAorICAgIEhSVEZEYXRh
YmFzZSogZGF0YWJhc2UoKSB7IHJldHVybiBtX2hydGZEYXRhYmFzZS5nZXQoKTsgfQorICAgIAor
ICAgIC8vIENhbGxlZCBpbiBhc3luY2hyb25vdXMgbG9hZGluZyB0aHJlYWQuCisgICAgdm9pZCBs
b2FkKCk7CisKKyAgICBzdGF0aWMgSFJURkRhdGFiYXNlTG9hZGVyKiBzX2xvYWRlcjsgLy8gc2lu
Z2xldG9uCisKK3ByaXZhdGU6CisgICAgLy8gQm90aCBjb25zdHJ1Y3RvciBhbmQgZGVzdHJ1Y3Rv
ciBtdXN0IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHRocmVhZC4KKyAgICBIUlRGRGF0YWJhc2VM
b2FkZXIoKTsgICAgCisgICAgCisgICAgLy8gSWYgaXQgaGFzbid0IGFscmVhZHkgYmVlbiBsb2Fk
ZWQsIGNyZWF0ZXMgYSBuZXcgdGhyZWFkIGFuZCBpbml0aWF0ZXMgYXN5bmNocm9ub3VzIGxvYWRp
bmcgb2YgdGhlIGRlZmF1bHQgZGF0YWJhc2UuCisgICAgLy8gVGhpcyBtdXN0IGJlIGNhbGxlZCBm
cm9tIHRoZSBtYWluIHRocmVhZC4KKyAgICB2b2lkIGxvYWRBc3luY2hyb25vdXNseShkb3VibGUg
c2FtcGxlUmF0ZSk7CisKKyAgICBkb3VibGUgZGF0YWJhc2VTYW1wbGVSYXRlKCkgY29uc3QgeyBy
ZXR1cm4gbV9kYXRhYmFzZVNhbXBsZVJhdGU7IH0KKworICAgIG11dGFibGUgT3duUHRyPEhSVEZE
YXRhYmFzZT4gbV9ocnRmRGF0YWJhc2U7CisgICAgVGhyZWFkSWRlbnRpZmllciBtX2RhdGFiYXNl
TG9hZGVyVGhyZWFkOworICAgIGJvb2wgbV9zdGFydGVkTG9hZGluZ0RhdGFiYXNlOworICAgIGRv
dWJsZSBtX2RhdGFiYXNlU2FtcGxlUmF0ZTsgICAgCit9OworCisvLyBkZWZhdWx0SFJURkRhdGFi
YXNlKCkgZ2l2ZXMgYWNjZXNzIHRvIHRoZSBsb2FkZWQgZGF0YWJhc2UuCisvLyBUaGlzIGNhbiBi
ZSBjYWxsZWQgZnJvbSBhbnkgdGhyZWFkLCBidXQgaXQgaXMgdGhlIGNhbGxlcnMgcmVzcG9uc2li
aWx0eSB0byBjYWxsIHRoaXMgd2hpbGUgdGhlIGNvbnRleHQgKGFuZCB0aHVzIEhSVEZEYXRhYmFz
ZUxvYWRlcikKKy8vIGlzIHN0aWxsIGFsaXZlLiAgT3RoZXJ3aXNlIHRoaXMgd2lsbCByZXR1cm4g
MC4KK2V4dGVybiBIUlRGRGF0YWJhc2UqIGRlZmF1bHRIUlRGRGF0YWJhc2UoKTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gSFJURkRhdGFiYXNlTG9hZGVyX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>68981</attachid>
            <date>2010-09-27 15:53:41 -0700</date>
            <delta_ts>2010-09-27 17:50:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-46234-20100927155340.patch</filename>
            <type>text/plain</type>
            <size>9567</size>
            <attacher name="Chris Rogers">crogers</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2ODQzMykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjUgQEAKKzIwMTAtMDktMjcgIENocmlzIFJvZ2VycyAgPGNyb2dlcnNAZ29vZ2xl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgSFJURkRhdGFiYXNlTG9hZGVyIGZpbGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD00NjIzNAorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBzaW5jZSBh
dWRpbyBBUEkgaXMgbm90IHlldCBpbXBsZW1lbnRlZC4KKworICAgICAgICAqIHBsYXRmb3JtL2F1
ZGlvL0hSVEZEYXRhYmFzZUxvYWRlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SFJU
RkRhdGFiYXNlTG9hZGVyOjpjcmVhdGVBbmRMb2FkQXN5bmNocm9ub3VzbHlJZk5lY2Vzc2FyeSk6
CisgICAgICAgIChXZWJDb3JlOjpIUlRGRGF0YWJhc2VMb2FkZXI6OkhSVEZEYXRhYmFzZUxvYWRl
cik6CisgICAgICAgIChXZWJDb3JlOjpIUlRGRGF0YWJhc2VMb2FkZXI6On5IUlRGRGF0YWJhc2VM
b2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6ZGF0YWJhc2VMb2FkZXJFbnRyeSk6CisgICAgICAg
IChXZWJDb3JlOjpIUlRGRGF0YWJhc2VMb2FkZXI6OmxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6
SFJURkRhdGFiYXNlTG9hZGVyOjpsb2FkQXN5bmNocm9ub3VzbHkpOgorICAgICAgICAoV2ViQ29y
ZTo6SFJURkRhdGFiYXNlTG9hZGVyOjppc0xvYWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpkZWZh
dWx0SFJURkRhdGFiYXNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2VM
b2FkZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpIUlRGRGF0YWJhc2VMb2FkZXI6OmRh
dGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkhSVEZEYXRhYmFzZUxvYWRlcjo6ZGF0YWJhc2VT
YW1wbGVSYXRlKToKKwogMjAxMC0wOS0yNyAgRGF2aWQgSHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KSW5kZXg6IFdlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vSFJURkRhdGFiYXNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFzZUxvYWRlci5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFzZUxvYWRlci5jcHAJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMTM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFs
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
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFdFQl9B
VURJTykKKworI2luY2x1ZGUgIkhSVEZEYXRhYmFzZUxvYWRlci5oIgorCisjaW5jbHVkZSAiSFJU
RkRhdGFiYXNlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8gU2luZ2xldG9uCitIUlRG
RGF0YWJhc2VMb2FkZXIqIEhSVEZEYXRhYmFzZUxvYWRlcjo6c19sb2FkZXIgPSAwOworCitQYXNz
UmVmUHRyPEhSVEZEYXRhYmFzZUxvYWRlcj4gSFJURkRhdGFiYXNlTG9hZGVyOjpjcmVhdGVBbmRM
b2FkQXN5bmNocm9ub3VzbHlJZk5lY2Vzc2FyeShkb3VibGUgc2FtcGxlUmF0ZSkKK3sKKyAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgUmVmUHRyPEhSVEZEYXRhYmFzZUxvYWRlcj4g
bG9hZGVyOworICAgIAorICAgIGlmICghc19sb2FkZXIpIHsKKyAgICAgICAgLy8gTGF6aWx5IGNy
ZWF0ZSBhbmQgbG9hZC4KKyAgICAgICAgbG9hZGVyID0gYWRvcHRSZWYobmV3IEhSVEZEYXRhYmFz
ZUxvYWRlcigpKTsKKyAgICAgICAgc19sb2FkZXIgPSBsb2FkZXIuZ2V0KCk7CisgICAgICAgIGxv
YWRlci0+bG9hZEFzeW5jaHJvbm91c2x5KHNhbXBsZVJhdGUpOworICAgIH0gZWxzZSB7CisgICAg
ICAgIGxvYWRlciA9IHNfbG9hZGVyOworICAgICAgICBBU1NFUlQoc2FtcGxlUmF0ZSA9PSBsb2Fk
ZXItPmRhdGFiYXNlU2FtcGxlUmF0ZSgpKTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIGxvYWRl
cjsKK30KKworSFJURkRhdGFiYXNlTG9hZGVyOjpIUlRGRGF0YWJhc2VMb2FkZXIoKQorICAgIDog
bV9ocnRmRGF0YWJhc2UoMCkKKyAgICAsIG1fZGF0YWJhc2VMb2FkZXJUaHJlYWQoMCkKKyAgICAs
IG1fc3RhcnRlZExvYWRpbmdEYXRhYmFzZShmYWxzZSkKKyAgICAsIG1fZGF0YWJhc2VTYW1wbGVS
YXRlKDQ0MTAwLjApIC8vIHByb3BlciB2YWx1ZSBnZXRzIHNldCBsYXRlcgoreworICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7Cit9CisKK0hSVEZEYXRhYmFzZUxvYWRlcjo6fkhSVEZEYXRhYmFz
ZUxvYWRlcigpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIGlmIChtX3N0
YXJ0ZWRMb2FkaW5nRGF0YWJhc2UpCisgICAgICAgIHdhaXRGb3JUaHJlYWRDb21wbGV0aW9uKG1f
ZGF0YWJhc2VMb2FkZXJUaHJlYWQsIDApOworICAgIAorICAgIG1fc3RhcnRlZExvYWRpbmdEYXRh
YmFzZSA9IGZhbHNlOworICAgIG1fZGF0YWJhc2VMb2FkZXJUaHJlYWQgPSAwOworICAgIAorICAg
IG1faHJ0ZkRhdGFiYXNlLmNsZWFyKCk7CisgICAgCisgICAgLy8gQ2xlYXIgb3V0IHNpbmdsZXRv
bi4KKyAgICBBU1NFUlQodGhpcyA9PSBzX2xvYWRlcik7CisgICAgc19sb2FkZXIgPSAwOworfQor
CisKKy8vIEFzeW5jaHJvbm91c2x5IGxvYWQgdGhlIGRhdGFiYXNlIGluIHRoaXMgdGhyZWFkLgor
c3RhdGljIHZvaWQqIGRhdGFiYXNlTG9hZGVyRW50cnkodm9pZCogdGhyZWFkRGF0YSkKK3sKKyAg
ICBIUlRGRGF0YWJhc2VMb2FkZXIqIGxvYWRlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8SFJURkRhdGFi
YXNlTG9hZGVyKj4odGhyZWFkRGF0YSk7CisgICAgQVNTRVJUKGxvYWRlcik7CisgICAgbG9hZGVy
LT5sb2FkKCk7CisgICAgCisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgSFJURkRhdGFiYXNlTG9h
ZGVyOjpsb2FkKCkKK3sKKyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKyAgICBpZiAoIW1f
aHJ0ZkRhdGFiYXNlLmdldCgpKSB7CisgICAgICAgIC8vIExvYWQgdGhlIGRlZmF1bHQgSFJURiBk
YXRhYmFzZS4KKyAgICAgICAgbV9ocnRmRGF0YWJhc2UgPSBIUlRGRGF0YWJhc2U6OmNyZWF0ZSht
X2RhdGFiYXNlU2FtcGxlUmF0ZSk7CisgICAgfQorfQorCit2b2lkIEhSVEZEYXRhYmFzZUxvYWRl
cjo6bG9hZEFzeW5jaHJvbm91c2x5KGRvdWJsZSBzYW1wbGVSYXRlKQoreworICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CisgICAgCisgICAgaWYgKCFtX2hydGZEYXRhYmFzZS5nZXQoKSAmJiAh
bV9zdGFydGVkTG9hZGluZ0RhdGFiYXNlKSB7CisgICAgICAgIC8vIFN0YXJ0IHRoZSBhc3luY2hy
b25vdXMgZGF0YWJhc2UgbG9hZGluZyBwcm9jZXNzLgorICAgICAgICBtX3N0YXJ0ZWRMb2FkaW5n
RGF0YWJhc2UgPSB0cnVlOworICAgICAgICBtX2RhdGFiYXNlU2FtcGxlUmF0ZSA9IHNhbXBsZVJh
dGU7CisgICAgICAgIG1fZGF0YWJhc2VMb2FkZXJUaHJlYWQgPSBjcmVhdGVUaHJlYWQoZGF0YWJh
c2VMb2FkZXJFbnRyeSwgdGhpcywgIkhSVEYgZGF0YWJhc2UgbG9hZGVyIik7CisgICAgfQorfQor
Citib29sIEhSVEZEYXRhYmFzZUxvYWRlcjo6aXNMb2FkZWQoKSBjb25zdAoreworICAgIHJldHVy
biBtX2hydGZEYXRhYmFzZS5nZXQoKTsKK30KKworSFJURkRhdGFiYXNlKiBkZWZhdWx0SFJURkRh
dGFiYXNlKCkKK3sKKyAgICBpZiAoIUhSVEZEYXRhYmFzZUxvYWRlcjo6c19sb2FkZXIpCisgICAg
ICAgIHJldHVybiAwOworICAgIAorICAgIHJldHVybiBIUlRGRGF0YWJhc2VMb2FkZXI6OnNfbG9h
ZGVyLT5kYXRhYmFzZSgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBFTkFCTEUoV0VCX0FVRElPKQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRGF0
YWJhc2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZE
YXRhYmFzZUxvYWRlci5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9I
UlRGRGF0YWJhc2VMb2FkZXIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4NSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIs
IEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAg
ICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwor
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgSFJURkRhdGFiYXNlTG9hZGVyX2gKKyNkZWZpbmUgSFJURkRhdGFiYXNlTG9hZGVyX2gKKwor
I2luY2x1ZGUgIkhSVEZEYXRhYmFzZS5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Cisj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5j
bHVkZSA8d3RmL1RocmVhZGluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIEhSVEZE
YXRhYmFzZUxvYWRlciB3aWxsIGFzeW5jaHJvbm91c2x5IGxvYWQgdGhlIGRlZmF1bHQgSFJURkRh
dGFiYXNlIGluIGEgbmV3IHRocmVhZC4KKworY2xhc3MgSFJURkRhdGFiYXNlTG9hZGVyIDogcHVi
bGljIFJlZkNvdW50ZWQ8SFJURkRhdGFiYXNlTG9hZGVyPiB7CitwdWJsaWM6CisgICAgLy8gTGF6
aWx5IGNyZWF0ZXMgdGhlIHNpbmdsZXRvbiBIUlRGRGF0YWJhc2VMb2FkZXIgKGlmIG5vdCBhbHJl
YWR5IGNyZWF0ZWQpIGFuZCBzdGFydHMgbG9hZGluZyBhc3luY2hyb25vdXNseSAod2hlbiBjcmVh
dGVkIHRoZSBmaXJzdCB0aW1lKS4KKyAgICAvLyBSZXR1cm5zIHRoZSBzaW5nbGV0b24gSFJURkRh
dGFiYXNlTG9hZGVyLgorICAgIC8vIE11c3QgYmUgY2FsbGVkIGZyb20gdGhlIG1haW4gdGhyZWFk
LgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhSVEZEYXRhYmFzZUxvYWRlcj4gY3JlYXRlQW5kTG9h
ZEFzeW5jaHJvbm91c2x5SWZOZWNlc3NhcnkoZG91YmxlIHNhbXBsZVJhdGUpOworCisgICAgLy8g
Qm90aCBjb25zdHJ1Y3RvciBhbmQgZGVzdHJ1Y3RvciBtdXN0IGJlIGNhbGxlZCBmcm9tIHRoZSBt
YWluIHRocmVhZC4KKyAgICB+SFJURkRhdGFiYXNlTG9hZGVyKCk7CisgICAgCisgICAgLy8gUmV0
dXJucyB0cnVlIG9uY2UgdGhlIGRlZmF1bHQgZGF0YWJhc2UgaGFzIGJlZW4gY29tcGxldGVseSBs
b2FkZWQuCisgICAgYm9vbCBpc0xvYWRlZCgpIGNvbnN0OworICAgIAorICAgIEhSVEZEYXRhYmFz
ZSogZGF0YWJhc2UoKSB7IHJldHVybiBtX2hydGZEYXRhYmFzZS5nZXQoKTsgfQorICAgIAorICAg
IC8vIENhbGxlZCBpbiBhc3luY2hyb25vdXMgbG9hZGluZyB0aHJlYWQuCisgICAgdm9pZCBsb2Fk
KCk7CisKKyAgICBzdGF0aWMgSFJURkRhdGFiYXNlTG9hZGVyKiBzX2xvYWRlcjsgLy8gc2luZ2xl
dG9uCisKK3ByaXZhdGU6CisgICAgLy8gQm90aCBjb25zdHJ1Y3RvciBhbmQgZGVzdHJ1Y3RvciBt
dXN0IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHRocmVhZC4KKyAgICBIUlRGRGF0YWJhc2VMb2Fk
ZXIoKTsgICAgCisgICAgCisgICAgLy8gSWYgaXQgaGFzbid0IGFscmVhZHkgYmVlbiBsb2FkZWQs
IGNyZWF0ZXMgYSBuZXcgdGhyZWFkIGFuZCBpbml0aWF0ZXMgYXN5bmNocm9ub3VzIGxvYWRpbmcg
b2YgdGhlIGRlZmF1bHQgZGF0YWJhc2UuCisgICAgLy8gVGhpcyBtdXN0IGJlIGNhbGxlZCBmcm9t
IHRoZSBtYWluIHRocmVhZC4KKyAgICB2b2lkIGxvYWRBc3luY2hyb25vdXNseShkb3VibGUgc2Ft
cGxlUmF0ZSk7CisKKyAgICBkb3VibGUgZGF0YWJhc2VTYW1wbGVSYXRlKCkgY29uc3QgeyByZXR1
cm4gbV9kYXRhYmFzZVNhbXBsZVJhdGU7IH0KKworICAgIG11dGFibGUgT3duUHRyPEhSVEZEYXRh
YmFzZT4gbV9ocnRmRGF0YWJhc2U7CisgICAgVGhyZWFkSWRlbnRpZmllciBtX2RhdGFiYXNlTG9h
ZGVyVGhyZWFkOworICAgIGJvb2wgbV9zdGFydGVkTG9hZGluZ0RhdGFiYXNlOworICAgIGRvdWJs
ZSBtX2RhdGFiYXNlU2FtcGxlUmF0ZTsgICAgCit9OworCisvLyBkZWZhdWx0SFJURkRhdGFiYXNl
KCkgZ2l2ZXMgYWNjZXNzIHRvIHRoZSBsb2FkZWQgZGF0YWJhc2UuCisvLyBUaGlzIGNhbiBiZSBj
YWxsZWQgZnJvbSBhbnkgdGhyZWFkLCBidXQgaXQgaXMgdGhlIGNhbGxlcnMgcmVzcG9uc2liaWx0
eSB0byBjYWxsIHRoaXMgd2hpbGUgdGhlIGNvbnRleHQgKGFuZCB0aHVzIEhSVEZEYXRhYmFzZUxv
YWRlcikKKy8vIGlzIHN0aWxsIGFsaXZlLiAgT3RoZXJ3aXNlIHRoaXMgd2lsbCByZXR1cm4gMC4K
K2V4dGVybiBIUlRGRGF0YWJhc2UqIGRlZmF1bHRIUlRGRGF0YWJhc2UoKTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gSFJURkRhdGFiYXNlTG9hZGVyX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69001</attachid>
            <date>2010-09-27 17:50:44 -0700</date>
            <delta_ts>2010-09-27 17:57:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-46234-20100927175042.patch</filename>
            <type>text/plain</type>
            <size>9510</size>
            <attacher name="Chris Rogers">crogers</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2ODQ2MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjUgQEAKKzIwMTAtMDktMjcgIENocmlzIFJvZ2VycyAgPGNyb2dlcnNAZ29vZ2xl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgSFJURkRhdGFiYXNlTG9hZGVyIGZpbGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD00NjIzNAorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBzaW5jZSBh
dWRpbyBBUEkgaXMgbm90IHlldCBpbXBsZW1lbnRlZC4KKworICAgICAgICAqIHBsYXRmb3JtL2F1
ZGlvL0hSVEZEYXRhYmFzZUxvYWRlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SFJU
RkRhdGFiYXNlTG9hZGVyOjpjcmVhdGVBbmRMb2FkQXN5bmNocm9ub3VzbHlJZk5lY2Vzc2FyeSk6
CisgICAgICAgIChXZWJDb3JlOjpIUlRGRGF0YWJhc2VMb2FkZXI6OkhSVEZEYXRhYmFzZUxvYWRl
cik6CisgICAgICAgIChXZWJDb3JlOjpIUlRGRGF0YWJhc2VMb2FkZXI6On5IUlRGRGF0YWJhc2VM
b2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6ZGF0YWJhc2VMb2FkZXJFbnRyeSk6CisgICAgICAg
IChXZWJDb3JlOjpIUlRGRGF0YWJhc2VMb2FkZXI6OmxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6
SFJURkRhdGFiYXNlTG9hZGVyOjpsb2FkQXN5bmNocm9ub3VzbHkpOgorICAgICAgICAoV2ViQ29y
ZTo6SFJURkRhdGFiYXNlTG9hZGVyOjppc0xvYWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpIUlRG
RGF0YWJhc2VMb2FkZXI6OmRlZmF1bHRIUlRGRGF0YWJhc2UpOgorICAgICAgICAqIHBsYXRmb3Jt
L2F1ZGlvL0hSVEZEYXRhYmFzZUxvYWRlci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhS
VEZEYXRhYmFzZUxvYWRlcjo6ZGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6SFJURkRhdGFi
YXNlTG9hZGVyOjpkYXRhYmFzZVNhbXBsZVJhdGUpOgorCiAyMDEwLTA5LTI3ICBDaHJpcyBGbGVp
emFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQmV0aCBE
YWtpbi4KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlTG9hZGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFzZUxvYWRl
ci5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFz
ZUxvYWRlci5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTMzIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAo
IkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9t
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRS
SUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorCisjaWYgRU5BQkxFKFdFQl9BVURJTykKKworI2luY2x1ZGUgIkhSVEZEYXRhYmFz
ZUxvYWRlci5oIgorCisjaW5jbHVkZSAiSFJURkRhdGFiYXNlLmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworLy8gU2luZ2xldG9uCitIUlRGRGF0YWJhc2VMb2FkZXIqIEhSVEZEYXRhYmFzZUxv
YWRlcjo6c19sb2FkZXIgPSAwOworCitQYXNzUmVmUHRyPEhSVEZEYXRhYmFzZUxvYWRlcj4gSFJU
RkRhdGFiYXNlTG9hZGVyOjpjcmVhdGVBbmRMb2FkQXN5bmNocm9ub3VzbHlJZk5lY2Vzc2FyeShk
b3VibGUgc2FtcGxlUmF0ZSkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAg
UmVmUHRyPEhSVEZEYXRhYmFzZUxvYWRlcj4gbG9hZGVyOworICAgIAorICAgIGlmICghc19sb2Fk
ZXIpIHsKKyAgICAgICAgLy8gTGF6aWx5IGNyZWF0ZSBhbmQgbG9hZC4KKyAgICAgICAgbG9hZGVy
ID0gYWRvcHRSZWYobmV3IEhSVEZEYXRhYmFzZUxvYWRlcihzYW1wbGVSYXRlKSk7CisgICAgICAg
IHNfbG9hZGVyID0gbG9hZGVyLmdldCgpOworICAgICAgICBsb2FkZXItPmxvYWRBc3luY2hyb25v
dXNseSgpOworICAgIH0gZWxzZSB7CisgICAgICAgIGxvYWRlciA9IHNfbG9hZGVyOworICAgICAg
ICBBU1NFUlQoc2FtcGxlUmF0ZSA9PSBsb2FkZXItPmRhdGFiYXNlU2FtcGxlUmF0ZSgpKTsKKyAg
ICB9CisgICAgCisgICAgcmV0dXJuIGxvYWRlcjsKK30KKworSFJURkRhdGFiYXNlTG9hZGVyOjpI
UlRGRGF0YWJhc2VMb2FkZXIoZG91YmxlIHNhbXBsZVJhdGUpCisgICAgOiBtX2hydGZEYXRhYmFz
ZSgwKQorICAgICwgbV9kYXRhYmFzZUxvYWRlclRocmVhZCgwKQorICAgICwgbV9zdGFydGVkTG9h
ZGluZ0RhdGFiYXNlKGZhbHNlKQorICAgICwgbV9kYXRhYmFzZVNhbXBsZVJhdGUoc2FtcGxlUmF0
ZSkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworfQorCitIUlRGRGF0YWJhc2VMb2Fk
ZXI6On5IUlRGRGF0YWJhc2VMb2FkZXIoKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CisKKyAgICBpZiAobV9zdGFydGVkTG9hZGluZ0RhdGFiYXNlKQorICAgICAgICB3YWl0Rm9yVGhy
ZWFkQ29tcGxldGlvbihtX2RhdGFiYXNlTG9hZGVyVGhyZWFkLCAwKTsKKyAgICAKKyAgICBtX3N0
YXJ0ZWRMb2FkaW5nRGF0YWJhc2UgPSBmYWxzZTsKKyAgICBtX2RhdGFiYXNlTG9hZGVyVGhyZWFk
ID0gMDsKKyAgICAKKyAgICBtX2hydGZEYXRhYmFzZS5jbGVhcigpOworICAgIAorICAgIC8vIENs
ZWFyIG91dCBzaW5nbGV0b24uCisgICAgQVNTRVJUKHRoaXMgPT0gc19sb2FkZXIpOworICAgIHNf
bG9hZGVyID0gMDsKK30KKworCisvLyBBc3luY2hyb25vdXNseSBsb2FkIHRoZSBkYXRhYmFzZSBp
biB0aGlzIHRocmVhZC4KK3N0YXRpYyB2b2lkKiBkYXRhYmFzZUxvYWRlckVudHJ5KHZvaWQqIHRo
cmVhZERhdGEpCit7CisgICAgSFJURkRhdGFiYXNlTG9hZGVyKiBsb2FkZXIgPSByZWludGVycHJl
dF9jYXN0PEhSVEZEYXRhYmFzZUxvYWRlcio+KHRocmVhZERhdGEpOworICAgIEFTU0VSVChsb2Fk
ZXIpOworICAgIGxvYWRlci0+bG9hZCgpOworICAgIAorICAgIHJldHVybiAwOworfQorCit2b2lk
IEhSVEZEYXRhYmFzZUxvYWRlcjo6bG9hZCgpCit7CisgICAgQVNTRVJUKCFpc01haW5UaHJlYWQo
KSk7CisgICAgaWYgKCFtX2hydGZEYXRhYmFzZS5nZXQoKSkgeworICAgICAgICAvLyBMb2FkIHRo
ZSBkZWZhdWx0IEhSVEYgZGF0YWJhc2UuCisgICAgICAgIG1faHJ0ZkRhdGFiYXNlID0gSFJURkRh
dGFiYXNlOjpjcmVhdGUobV9kYXRhYmFzZVNhbXBsZVJhdGUpOworICAgIH0KK30KKwordm9pZCBI
UlRGRGF0YWJhc2VMb2FkZXI6OmxvYWRBc3luY2hyb25vdXNseSgpCit7CisgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKKyAgICAKKyAgICBpZiAoIW1faHJ0ZkRhdGFiYXNlLmdldCgpICYmICFt
X3N0YXJ0ZWRMb2FkaW5nRGF0YWJhc2UpIHsKKyAgICAgICAgLy8gU3RhcnQgdGhlIGFzeW5jaHJv
bm91cyBkYXRhYmFzZSBsb2FkaW5nIHByb2Nlc3MuCisgICAgICAgIG1fc3RhcnRlZExvYWRpbmdE
YXRhYmFzZSA9IHRydWU7CisgICAgICAgIG1fZGF0YWJhc2VMb2FkZXJUaHJlYWQgPSBjcmVhdGVU
aHJlYWQoZGF0YWJhc2VMb2FkZXJFbnRyeSwgdGhpcywgIkhSVEYgZGF0YWJhc2UgbG9hZGVyIik7
CisgICAgfQorfQorCitib29sIEhSVEZEYXRhYmFzZUxvYWRlcjo6aXNMb2FkZWQoKSBjb25zdAor
eworICAgIHJldHVybiBtX2hydGZEYXRhYmFzZS5nZXQoKTsKK30KKworSFJURkRhdGFiYXNlKiBI
UlRGRGF0YWJhc2VMb2FkZXI6OmRlZmF1bHRIUlRGRGF0YWJhc2UoKQoreworICAgIGlmICghc19s
b2FkZXIpCisgICAgICAgIHJldHVybiAwOworICAgIAorICAgIHJldHVybiBzX2xvYWRlci0+ZGF0
YWJhc2UoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxF
KFdFQl9BVURJTykKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlTG9h
ZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2VM
b2FkZXIuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFi
YXNlTG9hZGVyLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODUgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgi
QXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEhSVEZE
YXRhYmFzZUxvYWRlcl9oCisjZGVmaW5lIEhSVEZEYXRhYmFzZUxvYWRlcl9oCisKKyNpbmNsdWRl
ICJIUlRGRGF0YWJhc2UuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0
Zi9UaHJlYWRpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBIUlRGRGF0YWJhc2VM
b2FkZXIgd2lsbCBhc3luY2hyb25vdXNseSBsb2FkIHRoZSBkZWZhdWx0IEhSVEZEYXRhYmFzZSBp
biBhIG5ldyB0aHJlYWQuCisKK2NsYXNzIEhSVEZEYXRhYmFzZUxvYWRlciA6IHB1YmxpYyBSZWZD
b3VudGVkPEhSVEZEYXRhYmFzZUxvYWRlcj4geworcHVibGljOgorICAgIC8vIExhemlseSBjcmVh
dGVzIHRoZSBzaW5nbGV0b24gSFJURkRhdGFiYXNlTG9hZGVyIChpZiBub3QgYWxyZWFkeSBjcmVh
dGVkKSBhbmQgc3RhcnRzIGxvYWRpbmcgYXN5bmNocm9ub3VzbHkgKHdoZW4gY3JlYXRlZCB0aGUg
Zmlyc3QgdGltZSkuCisgICAgLy8gUmV0dXJucyB0aGUgc2luZ2xldG9uIEhSVEZEYXRhYmFzZUxv
YWRlci4KKyAgICAvLyBNdXN0IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHRocmVhZC4KKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxIUlRGRGF0YWJhc2VMb2FkZXI+IGNyZWF0ZUFuZExvYWRBc3luY2hy
b25vdXNseUlmTmVjZXNzYXJ5KGRvdWJsZSBzYW1wbGVSYXRlKTsKKworICAgIC8vIEJvdGggY29u
c3RydWN0b3IgYW5kIGRlc3RydWN0b3IgbXVzdCBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiB0aHJl
YWQuCisgICAgfkhSVEZEYXRhYmFzZUxvYWRlcigpOworICAgIAorICAgIC8vIFJldHVybnMgdHJ1
ZSBvbmNlIHRoZSBkZWZhdWx0IGRhdGFiYXNlIGhhcyBiZWVuIGNvbXBsZXRlbHkgbG9hZGVkLgor
ICAgIGJvb2wgaXNMb2FkZWQoKSBjb25zdDsKKyAgICAKKyAgICBIUlRGRGF0YWJhc2UqIGRhdGFi
YXNlKCkgeyByZXR1cm4gbV9ocnRmRGF0YWJhc2UuZ2V0KCk7IH0KKyAgICAKKyAgICAvLyBDYWxs
ZWQgaW4gYXN5bmNocm9ub3VzIGxvYWRpbmcgdGhyZWFkLgorICAgIHZvaWQgbG9hZCgpOworCisg
ICAgLy8gZGVmYXVsdEhSVEZEYXRhYmFzZSgpIGdpdmVzIGFjY2VzcyB0byB0aGUgbG9hZGVkIGRh
dGFiYXNlLgorICAgIC8vIFRoaXMgY2FuIGJlIGNhbGxlZCBmcm9tIGFueSB0aHJlYWQsIGJ1dCBp
dCBpcyB0aGUgY2FsbGVycyByZXNwb25zaWJpbHR5IHRvIGNhbGwgdGhpcyB3aGlsZSB0aGUgY29u
dGV4dCAoYW5kIHRodXMgSFJURkRhdGFiYXNlTG9hZGVyKQorICAgIC8vIGlzIHN0aWxsIGFsaXZl
LiAgT3RoZXJ3aXNlIHRoaXMgd2lsbCByZXR1cm4gMC4KKyAgICBzdGF0aWMgSFJURkRhdGFiYXNl
KiBkZWZhdWx0SFJURkRhdGFiYXNlKCk7CisKK3ByaXZhdGU6CisgICAgLy8gQm90aCBjb25zdHJ1
Y3RvciBhbmQgZGVzdHJ1Y3RvciBtdXN0IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHRocmVhZC4K
KyAgICBIUlRGRGF0YWJhc2VMb2FkZXIoZG91YmxlIHNhbXBsZVJhdGUpOyAgICAKKyAgICAKKyAg
ICAvLyBJZiBpdCBoYXNuJ3QgYWxyZWFkeSBiZWVuIGxvYWRlZCwgY3JlYXRlcyBhIG5ldyB0aHJl
YWQgYW5kIGluaXRpYXRlcyBhc3luY2hyb25vdXMgbG9hZGluZyBvZiB0aGUgZGVmYXVsdCBkYXRh
YmFzZS4KKyAgICAvLyBUaGlzIG11c3QgYmUgY2FsbGVkIGZyb20gdGhlIG1haW4gdGhyZWFkLgor
ICAgIHZvaWQgbG9hZEFzeW5jaHJvbm91c2x5KCk7CisKKyAgICBkb3VibGUgZGF0YWJhc2VTYW1w
bGVSYXRlKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhYmFzZVNhbXBsZVJhdGU7IH0KKworICAgIHN0
YXRpYyBIUlRGRGF0YWJhc2VMb2FkZXIqIHNfbG9hZGVyOyAvLyBzaW5nbGV0b24KKyAgICBPd25Q
dHI8SFJURkRhdGFiYXNlPiBtX2hydGZEYXRhYmFzZTsKKyAgICBUaHJlYWRJZGVudGlmaWVyIG1f
ZGF0YWJhc2VMb2FkZXJUaHJlYWQ7CisgICAgYm9vbCBtX3N0YXJ0ZWRMb2FkaW5nRGF0YWJhc2U7
CisgICAgZG91YmxlIG1fZGF0YWJhc2VTYW1wbGVSYXRlOyAgICAKK307CisKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gSFJURkRhdGFiYXNlTG9hZGVyX2gK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69003</attachid>
            <date>2010-09-27 17:58:02 -0700</date>
            <delta_ts>2010-09-27 19:08:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-46234-20100927175801.patch</filename>
            <type>text/plain</type>
            <size>9519</size>
            <attacher name="Chris Rogers">crogers</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2ODQ2MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjUgQEAKKzIwMTAtMDktMjcgIENocmlzIFJvZ2VycyAgPGNyb2dlcnNAZ29vZ2xl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgSFJURkRhdGFiYXNlTG9hZGVyIGZpbGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD00NjIzNAorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBzaW5jZSBh
dWRpbyBBUEkgaXMgbm90IHlldCBpbXBsZW1lbnRlZC4KKworICAgICAgICAqIHBsYXRmb3JtL2F1
ZGlvL0hSVEZEYXRhYmFzZUxvYWRlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SFJU
RkRhdGFiYXNlTG9hZGVyOjpjcmVhdGVBbmRMb2FkQXN5bmNocm9ub3VzbHlJZk5lY2Vzc2FyeSk6
CisgICAgICAgIChXZWJDb3JlOjpIUlRGRGF0YWJhc2VMb2FkZXI6OkhSVEZEYXRhYmFzZUxvYWRl
cik6CisgICAgICAgIChXZWJDb3JlOjpIUlRGRGF0YWJhc2VMb2FkZXI6On5IUlRGRGF0YWJhc2VM
b2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6ZGF0YWJhc2VMb2FkZXJFbnRyeSk6CisgICAgICAg
IChXZWJDb3JlOjpIUlRGRGF0YWJhc2VMb2FkZXI6OmxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6
SFJURkRhdGFiYXNlTG9hZGVyOjpsb2FkQXN5bmNocm9ub3VzbHkpOgorICAgICAgICAoV2ViQ29y
ZTo6SFJURkRhdGFiYXNlTG9hZGVyOjppc0xvYWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpIUlRG
RGF0YWJhc2VMb2FkZXI6OmRlZmF1bHRIUlRGRGF0YWJhc2UpOgorICAgICAgICAqIHBsYXRmb3Jt
L2F1ZGlvL0hSVEZEYXRhYmFzZUxvYWRlci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhS
VEZEYXRhYmFzZUxvYWRlcjo6ZGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6SFJURkRhdGFi
YXNlTG9hZGVyOjpkYXRhYmFzZVNhbXBsZVJhdGUpOgorCiAyMDEwLTA5LTI3ICBDaHJpcyBGbGVp
emFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQmV0aCBE
YWtpbi4KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlTG9hZGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFzZUxvYWRl
ci5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFz
ZUxvYWRlci5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTMzIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAo
IkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9t
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRS
SUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorCisjaWYgRU5BQkxFKFdFQl9BVURJTykKKworI2luY2x1ZGUgIkhSVEZEYXRhYmFz
ZUxvYWRlci5oIgorCisjaW5jbHVkZSAiSFJURkRhdGFiYXNlLmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworLy8gU2luZ2xldG9uCitIUlRGRGF0YWJhc2VMb2FkZXIqIEhSVEZEYXRhYmFzZUxv
YWRlcjo6c19sb2FkZXIgPSAwOworCitQYXNzUmVmUHRyPEhSVEZEYXRhYmFzZUxvYWRlcj4gSFJU
RkRhdGFiYXNlTG9hZGVyOjpjcmVhdGVBbmRMb2FkQXN5bmNocm9ub3VzbHlJZk5lY2Vzc2FyeShk
b3VibGUgc2FtcGxlUmF0ZSkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAg
UmVmUHRyPEhSVEZEYXRhYmFzZUxvYWRlcj4gbG9hZGVyOworICAgIAorICAgIGlmICghc19sb2Fk
ZXIpIHsKKyAgICAgICAgLy8gTGF6aWx5IGNyZWF0ZSBhbmQgbG9hZC4KKyAgICAgICAgbG9hZGVy
ID0gYWRvcHRSZWYobmV3IEhSVEZEYXRhYmFzZUxvYWRlcihzYW1wbGVSYXRlKSk7CisgICAgICAg
IHNfbG9hZGVyID0gbG9hZGVyLmdldCgpOworICAgICAgICBsb2FkZXItPmxvYWRBc3luY2hyb25v
dXNseSgpOworICAgIH0gZWxzZSB7CisgICAgICAgIGxvYWRlciA9IHNfbG9hZGVyOworICAgICAg
ICBBU1NFUlQoc2FtcGxlUmF0ZSA9PSBsb2FkZXItPmRhdGFiYXNlU2FtcGxlUmF0ZSgpKTsKKyAg
ICB9CisgICAgCisgICAgcmV0dXJuIGxvYWRlcjsKK30KKworSFJURkRhdGFiYXNlTG9hZGVyOjpI
UlRGRGF0YWJhc2VMb2FkZXIoZG91YmxlIHNhbXBsZVJhdGUpCisgICAgOiBtX2hydGZEYXRhYmFz
ZSgwKQorICAgICwgbV9kYXRhYmFzZUxvYWRlclRocmVhZCgwKQorICAgICwgbV9zdGFydGVkTG9h
ZGluZ0RhdGFiYXNlKGZhbHNlKQorICAgICwgbV9kYXRhYmFzZVNhbXBsZVJhdGUoc2FtcGxlUmF0
ZSkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworfQorCitIUlRGRGF0YWJhc2VMb2Fk
ZXI6On5IUlRGRGF0YWJhc2VMb2FkZXIoKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CisKKyAgICBpZiAobV9zdGFydGVkTG9hZGluZ0RhdGFiYXNlKQorICAgICAgICB3YWl0Rm9yVGhy
ZWFkQ29tcGxldGlvbihtX2RhdGFiYXNlTG9hZGVyVGhyZWFkLCAwKTsKKyAgICAKKyAgICBtX3N0
YXJ0ZWRMb2FkaW5nRGF0YWJhc2UgPSBmYWxzZTsKKyAgICBtX2RhdGFiYXNlTG9hZGVyVGhyZWFk
ID0gMDsKKyAgICAKKyAgICBtX2hydGZEYXRhYmFzZS5jbGVhcigpOworICAgIAorICAgIC8vIENs
ZWFyIG91dCBzaW5nbGV0b24uCisgICAgQVNTRVJUKHRoaXMgPT0gc19sb2FkZXIpOworICAgIHNf
bG9hZGVyID0gMDsKK30KKworCisvLyBBc3luY2hyb25vdXNseSBsb2FkIHRoZSBkYXRhYmFzZSBp
biB0aGlzIHRocmVhZC4KK3N0YXRpYyB2b2lkKiBkYXRhYmFzZUxvYWRlckVudHJ5KHZvaWQqIHRo
cmVhZERhdGEpCit7CisgICAgSFJURkRhdGFiYXNlTG9hZGVyKiBsb2FkZXIgPSByZWludGVycHJl
dF9jYXN0PEhSVEZEYXRhYmFzZUxvYWRlcio+KHRocmVhZERhdGEpOworICAgIEFTU0VSVChsb2Fk
ZXIpOworICAgIGxvYWRlci0+bG9hZCgpOworICAgIAorICAgIHJldHVybiAwOworfQorCit2b2lk
IEhSVEZEYXRhYmFzZUxvYWRlcjo6bG9hZCgpCit7CisgICAgQVNTRVJUKCFpc01haW5UaHJlYWQo
KSk7CisgICAgaWYgKCFtX2hydGZEYXRhYmFzZS5nZXQoKSkgeworICAgICAgICAvLyBMb2FkIHRo
ZSBkZWZhdWx0IEhSVEYgZGF0YWJhc2UuCisgICAgICAgIG1faHJ0ZkRhdGFiYXNlID0gSFJURkRh
dGFiYXNlOjpjcmVhdGUobV9kYXRhYmFzZVNhbXBsZVJhdGUpOworICAgIH0KK30KKwordm9pZCBI
UlRGRGF0YWJhc2VMb2FkZXI6OmxvYWRBc3luY2hyb25vdXNseSgpCit7CisgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKKyAgICAKKyAgICBpZiAoIW1faHJ0ZkRhdGFiYXNlLmdldCgpICYmICFt
X3N0YXJ0ZWRMb2FkaW5nRGF0YWJhc2UpIHsKKyAgICAgICAgLy8gU3RhcnQgdGhlIGFzeW5jaHJv
bm91cyBkYXRhYmFzZSBsb2FkaW5nIHByb2Nlc3MuCisgICAgICAgIG1fc3RhcnRlZExvYWRpbmdE
YXRhYmFzZSA9IHRydWU7CisgICAgICAgIG1fZGF0YWJhc2VMb2FkZXJUaHJlYWQgPSBjcmVhdGVU
aHJlYWQoZGF0YWJhc2VMb2FkZXJFbnRyeSwgdGhpcywgIkhSVEYgZGF0YWJhc2UgbG9hZGVyIik7
CisgICAgfQorfQorCitib29sIEhSVEZEYXRhYmFzZUxvYWRlcjo6aXNMb2FkZWQoKSBjb25zdAor
eworICAgIHJldHVybiBtX2hydGZEYXRhYmFzZS5nZXQoKTsKK30KKworSFJURkRhdGFiYXNlKiBI
UlRGRGF0YWJhc2VMb2FkZXI6OmRlZmF1bHRIUlRGRGF0YWJhc2UoKQoreworICAgIGlmICghc19s
b2FkZXIpCisgICAgICAgIHJldHVybiAwOworICAgIAorICAgIHJldHVybiBzX2xvYWRlci0+ZGF0
YWJhc2UoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxF
KFdFQl9BVURJTykKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlTG9h
ZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2VM
b2FkZXIuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFi
YXNlTG9hZGVyLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODUgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgi
QXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEhSVEZE
YXRhYmFzZUxvYWRlcl9oCisjZGVmaW5lIEhSVEZEYXRhYmFzZUxvYWRlcl9oCisKKyNpbmNsdWRl
ICJIUlRGRGF0YWJhc2UuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0
Zi9UaHJlYWRpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBIUlRGRGF0YWJhc2VM
b2FkZXIgd2lsbCBhc3luY2hyb25vdXNseSBsb2FkIHRoZSBkZWZhdWx0IEhSVEZEYXRhYmFzZSBp
biBhIG5ldyB0aHJlYWQuCisKK2NsYXNzIEhSVEZEYXRhYmFzZUxvYWRlciA6IHB1YmxpYyBSZWZD
b3VudGVkPEhSVEZEYXRhYmFzZUxvYWRlcj4geworcHVibGljOgorICAgIC8vIExhemlseSBjcmVh
dGVzIHRoZSBzaW5nbGV0b24gSFJURkRhdGFiYXNlTG9hZGVyIChpZiBub3QgYWxyZWFkeSBjcmVh
dGVkKSBhbmQgc3RhcnRzIGxvYWRpbmcgYXN5bmNocm9ub3VzbHkgKHdoZW4gY3JlYXRlZCB0aGUg
Zmlyc3QgdGltZSkuCisgICAgLy8gUmV0dXJucyB0aGUgc2luZ2xldG9uIEhSVEZEYXRhYmFzZUxv
YWRlci4KKyAgICAvLyBNdXN0IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHRocmVhZC4KKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxIUlRGRGF0YWJhc2VMb2FkZXI+IGNyZWF0ZUFuZExvYWRBc3luY2hy
b25vdXNseUlmTmVjZXNzYXJ5KGRvdWJsZSBzYW1wbGVSYXRlKTsKKworICAgIC8vIEJvdGggY29u
c3RydWN0b3IgYW5kIGRlc3RydWN0b3IgbXVzdCBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiB0aHJl
YWQuCisgICAgfkhSVEZEYXRhYmFzZUxvYWRlcigpOworICAgIAorICAgIC8vIFJldHVybnMgdHJ1
ZSBvbmNlIHRoZSBkZWZhdWx0IGRhdGFiYXNlIGhhcyBiZWVuIGNvbXBsZXRlbHkgbG9hZGVkLgor
ICAgIGJvb2wgaXNMb2FkZWQoKSBjb25zdDsKKyAgICAKKyAgICBIUlRGRGF0YWJhc2UqIGRhdGFi
YXNlKCkgeyByZXR1cm4gbV9ocnRmRGF0YWJhc2UuZ2V0KCk7IH0KKyAgICAKKyAgICAvLyBDYWxs
ZWQgaW4gYXN5bmNocm9ub3VzIGxvYWRpbmcgdGhyZWFkLgorICAgIHZvaWQgbG9hZCgpOworCisg
ICAgLy8gZGVmYXVsdEhSVEZEYXRhYmFzZSgpIGdpdmVzIGFjY2VzcyB0byB0aGUgbG9hZGVkIGRh
dGFiYXNlLgorICAgIC8vIFRoaXMgY2FuIGJlIGNhbGxlZCBmcm9tIGFueSB0aHJlYWQsIGJ1dCBp
dCBpcyB0aGUgY2FsbGVycyByZXNwb25zaWJpbHR5IHRvIGNhbGwgdGhpcyB3aGlsZSB0aGUgY29u
dGV4dCAoYW5kIHRodXMgSFJURkRhdGFiYXNlTG9hZGVyKQorICAgIC8vIGlzIHN0aWxsIGFsaXZl
LiAgT3RoZXJ3aXNlIHRoaXMgd2lsbCByZXR1cm4gMC4KKyAgICBzdGF0aWMgSFJURkRhdGFiYXNl
KiBkZWZhdWx0SFJURkRhdGFiYXNlKCk7CisKK3ByaXZhdGU6CisgICAgLy8gQm90aCBjb25zdHJ1
Y3RvciBhbmQgZGVzdHJ1Y3RvciBtdXN0IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHRocmVhZC4K
KyAgICBleHBsaWNpdCBIUlRGRGF0YWJhc2VMb2FkZXIoZG91YmxlIHNhbXBsZVJhdGUpOyAgICAK
KyAgICAKKyAgICAvLyBJZiBpdCBoYXNuJ3QgYWxyZWFkeSBiZWVuIGxvYWRlZCwgY3JlYXRlcyBh
IG5ldyB0aHJlYWQgYW5kIGluaXRpYXRlcyBhc3luY2hyb25vdXMgbG9hZGluZyBvZiB0aGUgZGVm
YXVsdCBkYXRhYmFzZS4KKyAgICAvLyBUaGlzIG11c3QgYmUgY2FsbGVkIGZyb20gdGhlIG1haW4g
dGhyZWFkLgorICAgIHZvaWQgbG9hZEFzeW5jaHJvbm91c2x5KCk7CisKKyAgICBkb3VibGUgZGF0
YWJhc2VTYW1wbGVSYXRlKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhYmFzZVNhbXBsZVJhdGU7IH0K
KworICAgIHN0YXRpYyBIUlRGRGF0YWJhc2VMb2FkZXIqIHNfbG9hZGVyOyAvLyBzaW5nbGV0b24K
KyAgICBPd25QdHI8SFJURkRhdGFiYXNlPiBtX2hydGZEYXRhYmFzZTsKKyAgICBUaHJlYWRJZGVu
dGlmaWVyIG1fZGF0YWJhc2VMb2FkZXJUaHJlYWQ7CisgICAgYm9vbCBtX3N0YXJ0ZWRMb2FkaW5n
RGF0YWJhc2U7CisgICAgZG91YmxlIG1fZGF0YWJhc2VTYW1wbGVSYXRlOyAgICAKK307CisKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gSFJURkRhdGFiYXNlTG9hZGVyX2gK
</data>

          </attachment>
      

    </bug>

</bugzilla>