Merge lp:~vlad-lesin/percona-server/i_s-innodb-changed-pages into lp:~laurynas-biveinis/percona-server/xtradb-changed-page-tracking

Proposed by Vlad Lesin
Status: Work in progress
Proposed branch: lp:~vlad-lesin/percona-server/i_s-innodb-changed-pages
Merge into: lp:~laurynas-biveinis/percona-server/xtradb-changed-page-tracking
Diff against target: 9440 lines (+1148/-3792)
68 files modified
Makefile (+1/-5)
Percona-Server/mysql-test/r/information_schema.result (+13/-13)
Percona-Server/mysql-test/r/information_schema_db.result (+3/-3)
Percona-Server/mysql-test/r/mysqlshow.result (+6/-6)
Percona-Server/mysql-test/r/percona_server_variables_debug.result (+1/-0)
Percona-Server/mysql-test/r/percona_server_variables_release.result (+1/-0)
Percona-Server/mysql-test/suite/innodb_plugin/r/percona_bug_951588.result (+12/-0)
Percona-Server/mysql-test/suite/innodb_plugin/r/percona_bug_999147.result (+10/-0)
Percona-Server/mysql-test/suite/innodb_plugin/r/percona_changed_pages.result (+41/-0)
Percona-Server/mysql-test/suite/innodb_plugin/r/percona_changed_pages_empty.result (+2/-0)
Percona-Server/mysql-test/suite/innodb_plugin/r/percona_skip_innodb_i_s.result (+94/-0)
Percona-Server/mysql-test/suite/innodb_plugin/t/percona_bug_951588.test (+29/-0)
Percona-Server/mysql-test/suite/innodb_plugin/t/percona_bug_999147-master.opt (+1/-0)
Percona-Server/mysql-test/suite/innodb_plugin/t/percona_bug_999147.test (+29/-0)
Percona-Server/mysql-test/suite/innodb_plugin/t/percona_changed_pages-master.opt (+1/-0)
Percona-Server/mysql-test/suite/innodb_plugin/t/percona_changed_pages.test (+103/-0)
Percona-Server/mysql-test/suite/innodb_plugin/t/percona_changed_pages_empty-master.opt (+1/-0)
Percona-Server/mysql-test/suite/innodb_plugin/t/percona_changed_pages_empty.test (+8/-0)
Percona-Server/mysql-test/suite/innodb_plugin/t/percona_skip_innodb_i_s-master.opt (+1/-0)
Percona-Server/mysql-test/suite/innodb_plugin/t/percona_skip_innodb_i_s.test (+21/-0)
Percona-Server/sql/handler.cc (+2/-0)
Percona-Server/sql/log_event.cc (+42/-3)
Percona-Server/sql/signal_handler.cc (+6/-4)
Percona-Server/sql/sql_show.cc (+10/-4)
Percona-Server/storage/innodb_plugin/Makefile.am (+0/-1)
Percona-Server/storage/innodb_plugin/buf/buf0lru.c (+37/-3)
Percona-Server/storage/innodb_plugin/dict/dict0dict.c (+0/-6)
Percona-Server/storage/innodb_plugin/fil/fil0fil.c (+4/-1)
Percona-Server/storage/innodb_plugin/handler/ha_innodb.cc (+9/-1)
Percona-Server/storage/innodb_plugin/handler/handler0alter.cc (+2/-0)
Percona-Server/storage/innodb_plugin/handler/i_s.cc (+308/-159)
Percona-Server/storage/innodb_plugin/handler/i_s.h (+1/-1)
Percona-Server/storage/innodb_plugin/handler/innodb_patch_info.h (+0/-51)
Percona-Server/storage/innodb_plugin/include/log0online.h (+60/-0)
Percona-Server/storage/innodb_plugin/include/srv0srv.h (+3/-0)
Percona-Server/storage/innodb_plugin/log/log0online.c (+160/-1)
Percona-Server/storage/innodb_plugin/row/row0mysql.c (+1/-1)
Percona-Server/storage/innodb_plugin/srv/srv0srv.c (+2/-0)
build/debian/control (+1/-1)
build/debian/rules (+1/-1)
build/percona-server.spec (+2/-2)
build/percona-shared-compat.spec (+1/-1)
doc/Makefile (+13/-0)
doc/source/conf.py (+3/-3)
doc/source/diagnostics/innodb_stats.rst (+2/-3)
doc/source/diagnostics/misc_info_schema_tables.rst (+1/-1)
doc/source/diagnostics/mysql_syslog.rst (+1/-1)
doc/source/diagnostics/slow_extended.rst (+2/-2)
doc/source/flexibility/buff_read_ahead_area.rst (+1/-1)
doc/source/flexibility/mysqlbinlog_change_db.rst (+55/-9)
doc/source/installation/apt_repo.rst (+13/-2)
doc/source/management/innodb_expand_import.rst (+4/-1)
doc/source/management/innodb_fast_index_creation.rst (+1/-22)
doc/source/management/innodb_lru_dump_restore.rst (+1/-1)
doc/source/percona-theme/layout.html (+0/-503)
doc/source/percona-theme/searchbox.html (+0/-22)
doc/source/percona-theme/static/default.css_t (+0/-433)
doc/source/percona-theme/static/jquery.min.js (+0/-154)
doc/source/percona-theme/static/percona.com.css (+0/-1849)
doc/source/percona-theme/static/percona.com.js (+0/-269)
doc/source/percona-theme/static/sidebar.js (+0/-151)
doc/source/percona-theme/theme.conf (+0/-32)
doc/source/release-notes/Percona-Server-5.1.63-13.4.rst (+15/-0)
doc/source/reliability/innodb_corrupt_table_action.rst (+0/-23)
doc/source/reliability/innodb_recovery_update_relay_log.rst (+2/-2)
doc/source/scalability/innodb_expand_undo_slots.rst (+2/-2)
doc/source/scalability/innodb_extra_rseg.rst (+2/-0)
lrusort.py (+0/-38)
To merge this branch: bzr merge lp:~vlad-lesin/percona-server/i_s-innodb-changed-pages
Reviewer Review Type Date Requested Status
Laurynas Biveinis Needs Fixing
Review via email: mp+115502@code.launchpad.net

Description of the change

Trying once more. The initial branch is lp:~laurynas-biveinis/percona-server/xtradb-changed-page-tracking .

Remade the test. Now it creates redo log records twice as much as the redo log size. As the 1st half is guaranteed to be tracked it checks if the number of tracked pages is greater than or equal to the number of first half. Also it checks if innodb-file-per-table is set and a new table is created and inserted to, then part of the records must have space id equal to the new table space id and "low" page ids;

To post a comment you must log in.
Revision history for this message
Laurynas Biveinis (laurynas-biveinis) wrote :
Download full text (3.8 KiB)

Some feature design and code questions. Maybe not all of them need to
be resolved right now.

- We need to know somehow if the current run is complete, i.e. if we
  query some LSN interval, the last block we read should have the last
  block bit set, if we silently output partial data, the user will not
  know if he should re-query the last part of LSN interval or not. I
  am not sure what would be the best way. Another column for last
  block bit flag? That would be quite clumsy for users to use.

- Likewise I am not sure what should we do about corrupted blocks in
  the middle of requested LSN intervals (and maybe missing LSN
  interval data too). Another boolean column "this block is continuous
  from the previous block"?

- In any case I guess we should diagnose bad block checksums we
  encounter to the error log at least. That's easy, but it raises the
  issue of what would happen if the I_S query would attempt to read the
  last bitmap block while it's being written. Currently such block
  would be ignored correctly, but in this case we would get false
  errors. I think we should introduce a log online mutex for the last
  written block protection. Acquire it in the log writer around the
  block write + sync. Acquire it (and immediatelly release) in the
  log iterator right before the read when (offset == file size - 1
  block).

General comments:

- Please submit an MP against lp:percona-server/5.1, as the current
  target branch has been merged.

- I guess the current code did not implement the index condition
  pushdown yet?

- There is no decision on the I_S table row count limit system
  variable in the blueprint, but the code has it, please update the
  blueprint.

- Please add tests for LSNs too. Unfortunately, their values are not
  that predictable, so the basic test would be to check that start lsn
  < end lsn.

- Please add tests for the index condition pushdown, i.e. where
  start_lsn > ... and end_lsn < .... The lsn values for this test can
  be taken from the 1st query on I_S, and get the e.g. MIN, MAX, and
  median values of the tracked interval.

- The new system var requires a new sys_var/var_name-basic.test. In
  the current branch, isn't sys_vars/all_vars test failing due to that
  test being missing?

- Code formatting issues (I know, these are very pedantic): the
  /*=====*/ under function names should match the function name
  length. The function arg comments should start with /*!< in: or /*!<
  out: or /*!< in/out:

- Indentation issue around diff lines 308--312: both args and code
  should be indented by 1 tab. Likewise in many other places in
  log0online.c etc.. Also there should be 1 tab between var type and
  name in the local var declarations.

- (srv_changed_pages_limit ? output_rows_num < srv_changed_pages_limit
  : TRUE) can be simplified to (!srv_changed_pages_limit ||
  output_rows_num < srv_changed_pages_limit)

- Maybe log_online_bitmap_iterator_init should set the rest of the
  fields it does not touch now to some safe values?

- No need for the comment in diff lines 618--620, 646--648, it should
  be enough to mention it once in log0online.c next to the first file
  name printing place.

-...

Read more...

review: Needs Fixing
Revision history for this message
Vlad Lesin (vlad-lesin) wrote :

> Some feature design and code questions. Maybe not all of them need to
> be resolved right now.
>
> - We need to know somehow if the current run is complete, i.e. if we
> query some LSN interval, the last block we read should have the last
> block bit set, if we silently output partial data, the user will not
> know if he should re-query the last part of LSN interval or not. I
> am not sure what would be the best way. Another column for last
> block bit flag? That would be quite clumsy for users to use.

Maybe it's better to wait until log tracking thread completely write all blocks for certain lsn interval?

About holes. We could to have another I_S for holes and bad blocks recognition. Another option you described below:

> - Likewise I am not sure what should we do about corrupted blocks in
> the middle of requested LSN intervals (and maybe missing LSN
> interval data too). Another boolean column "this block is continuous
> from the previous block"?

It's easy to recognize bad blocks just ckecksum checking. And we could read lsn interval completely before output which allows us to recognize not completely written lsn intervals checking "last block" flag at the end of interval. We could use linked list of changed pages inside of iterator instead of just one page to hold lsn range.

> - In any case I guess we should diagnose bad block checksums we
> encounter to the error log at least. That's easy, but it raises the
> issue of what would happen if the I_S query would attempt to read the
> last bitmap block while it's being written. Currently such block
> would be ignored correctly, but in this case we would get false
> errors. I think we should introduce a log online mutex for the last
> written block protection. Acquire it in the log writer around the
> block write + sync. Acquire it (and immediatelly release) in the
> log iterator right before the read when (offset == file size - 1
> block).

Yes, mutex would help us to avoid reading not completely written blocks. But what about partially written lsn intervals? Maybe that mutex should protect the whole interval writing? Not only one block?

> - What is the purpose of LOG_BITMAP_ITERATOR_* macros? Except for
> LOG_BITMAP_ITERATOR_PAGE_NUM

The purpose is to hide implementation of iterator. We can change the content of iterator and some work logic not changing the code which uses the iterator.

Revision history for this message
Laurynas Biveinis (laurynas-biveinis) wrote :

> > - We need to know somehow if the current run is complete, i.e. if we
> > query some LSN interval, the last block we read should have the last
> > block bit set, if we silently output partial data, the user will not
> > know if he should re-query the last part of LSN interval or not. I
> > am not sure what would be the best way. Another column for last
> > block bit flag? That would be quite clumsy for users to use.
>
> Maybe it's better to wait until log tracking thread completely write all
> blocks for certain lsn interval?

Such wait could be very long on a busy server that starves the log following thread.

> About holes. We could to have another I_S for holes and bad blocks
> recognition.

Can you describe in more detail how you imagine this another I_S table?

> Another option you described below:
>
> > - Likewise I am not sure what should we do about corrupted blocks in
> > the middle of requested LSN intervals (and maybe missing LSN
> > interval data too). Another boolean column "this block is continuous
> > from the previous block"?
>
> It's easy to recognize bad blocks just ckecksum checking. And we could read
> lsn interval completely before output which allows us to recognize not
> completely written lsn intervals checking "last block" flag at the end of
> interval. We could use linked list of changed pages inside of iterator instead
> of just one page to hold lsn range.

But the issue is not the detection of bad or missing data, but rather what to do when this situation happens.

> > - In any case I guess we should diagnose bad block checksums we
> > encounter to the error log at least. That's easy, but it raises the
> > issue of what would happen if the I_S query would attempt to read the
> > last bitmap block while it's being written. Currently such block
> > would be ignored correctly, but in this case we would get false
> > errors. I think we should introduce a log online mutex for the last
> > written block protection. Acquire it in the log writer around the
> > block write + sync. Acquire it (and immediatelly release) in the
> > log iterator right before the read when (offset == file size - 1
> > block).
>
> Yes, mutex would help us to avoid reading not completely written blocks. But
> what about partially written lsn intervals? Maybe that mutex should protect
> the whole interval writing? Not only one block?

It probably depends on what we decide to do for the above questions.

> > - What is the purpose of LOG_BITMAP_ITERATOR_* macros? Except for
> > LOG_BITMAP_ITERATOR_PAGE_NUM
>
> The purpose is to hide implementation of iterator. We can change the content
> of iterator and some work logic not changing the code which uses the iterator.

Ah, I see, thanks. I assumed this was not the case, because the struct itself was in a header file.

Revision history for this message
Vlad Lesin (vlad-lesin) wrote :

> But the issue is not the detection of bad or missing data, but rather what to
> do when this situation happens.

Ok, let's back to the purpose of the table at all. As I understood, the purpose is to have some statisticts to see how it's going on, maybe to anylize something. This table is not for precise calculations, as I understood, it is for estimations. At the other hand It would be usefull to see if there is something wrong with bitmap files in information schema. So I propose to leave the table as is. The name of the table is "Changed pages". It shows changed tables. It doesn't guarantee real time information mapping by design. I don't think it is really important to show the last written blocks or lsn intervals if they are not completely written at the moment of table generation. As for holes or bad blocks we could just ignore them due to purpose of this table.

But I propose to have two addiditional tables. One for bad blocks (previous page id, previous lsn range, bitmap file name, start bad block offset, number of bad blocks). And one for holes (start lsn, end lsn, bitmap file name, number of written blocks).

Revision history for this message
Vlad Lesin (vlad-lesin) wrote :
Download full text (4.0 KiB)

> General comments:
>
> - Please submit an MP against lp:percona-server/5.1, as the current
> target branch has been merged.
Done.

> - I guess the current code did not implement the index condition
> pushdown yet?

It does.
 if (cond && !cond->val_int())
  continue;

cond->val_int() traverses the condition tree and calculates condition value using fields values stored earlier.

But we discussed it would be useful to recognize
"START_LSN >some_value_1 and END_LSN < some_value_2"
expression to prevent scanning the rest of bitmap file(s)
after reaching the upper limit.

In progress.

> - There is no decision on the I_S table row count limit system
> variable in the blueprint, but the code has it, please update the
> blueprint.

Done.

> - Please add tests for LSNs too. Unfortunately, their values are not
> that predictable, so the basic test would be to check that start lsn
> < end lsn.
 Done.

> - Please add tests for the index condition pushdown, i.e. where
> start_lsn > ... and end_lsn < .... The lsn values for this test can
> be taken from the 1st query on I_S, and get the e.g. MIN, MAX, and
> median values of the tracked interval.

The condition can be any, not only start_lsn >... and end_lsn <... .
And the size of the table is limited with that condition. As I understood
the main purpose of condition pushdown for this table is to limit memory size
for storing temporary table. How can we test that size? Beside that the condition
is checked twice. The first is during table generation and the second is during
query execution. So it may be situation when we get right query execution result
but pushdown doesn't work and the table were completely stored in memory before
output. So how it can be tested?

I'm afraid I don't understand your idea. Do you offer to make several queries with the
following "where" expressions?
1) start_lsn > 0 and end_lsn < ($max_lsn/2)
2) start_lsn > 0 and end_lsn < $max_lsn
3) ($max_lsn/2) >= 0 and end_lsn < ($max_lsn)

If yes, what expected results should be?

> - The new system var requires a new sys_var/var_name-basic.test. In
> the current branch, isn't sys_vars/all_vars test failing due to that
> test being missing?

I think my mistake is in wrong naming of the variable type. It isn't a system
variable, it's plugin variable. Jenkins build didn't show any problems with variable tests.
And I saw another innodb_* variables without tests in sys_var test suite.

> - Code formatting issues (I know, these are very pedantic): the
> /*=====*/ under function names should match the function name
> length. The function arg comments should start with /*!< in: or /*!<
> out: or /*!< in/out:
Done.

> - Indentation issue around diff lines 308--312: both args and code
> should be indented by 1 tab. Likewise in many other places in
> log0online.c etc.. Also there should be 1 tab between var type and
> name in the local var declarations.
Done.

> - (srv_changed_pages_limit ? output_rows_num < srv_changed_pages_limit
> : TRUE) can be simplified to (!srv_changed_pages_limit ||
> output_rows_num < srv_changed_pages_limit)
Done.

> - Maybe log_online_bitmap_iterator_init should set the r...

Read more...

Revision history for this message
Laurynas Biveinis (laurynas-biveinis) wrote :

> Ok, let's back to the purpose of the table at all. As I understood, the
> purpose is to have some statisticts to see how it's going on, maybe to anylize
> something. This table is not for precise calculations, as I understood, it is
> for estimations. At the other hand It would be usefull to see if there is
> something wrong with bitmap files in information schema. So I propose to leave
> the table as is. The name of the table is "Changed pages". It shows changed
> tables. It doesn't guarantee real time information mapping by design. I don't
> think it is really important to show the last written blocks or lsn intervals
> if they are not completely written at the moment of table generation. As for
> holes or bad blocks we could just ignore them due to purpose of this table.

Yes, this is a good idea.

> But I propose to have two addiditional tables. One for bad blocks (previous
> page id, previous lsn range, bitmap file name, start bad block offset, number
> of bad blocks). And one for holes (start lsn, end lsn, bitmap file name,
> number of written blocks).

Looks OK, but 1) I wonder if we have to distinguish between a hole and a bad block, 2) is it that important for the user to have this info queriable through I_S because the main table is "best effort" only. Please check with Vadim.

Revision history for this message
Laurynas Biveinis (laurynas-biveinis) wrote :

> > - Please add tests for the index condition pushdown, i.e. where
> > start_lsn > ... and end_lsn < .... The lsn values for this test can
> > be taken from the 1st query on I_S, and get the e.g. MIN, MAX, and
> > median values of the tracked interval.
>
> The condition can be any, not only start_lsn >... and end_lsn <... .
> And the size of the table is limited with that condition. As I understood
> the main purpose of condition pushdown for this table is to limit memory size
> for storing temporary table. How can we test that size? Beside that the
> condition
> is checked twice. The first is during table generation and the second is
> during
> query execution. So it may be situation when we get right query execution
> result
> but pushdown doesn't work and the table were completely stored in memory
> before
> output. So how it can be tested?

Yes, it is impossible to test completely. Maybe let's add a WHERE start_lsn > .. AND end_lsn < ... query to tests but don't call it an ICP test. But perhaps it's not useful at all.

> I'm afraid I don't understand your idea. Do you offer to make several queries
> with the
> following "where" expressions?
> 1) start_lsn > 0 and end_lsn < ($max_lsn/2)
> 2) start_lsn > 0 and end_lsn < $max_lsn
> 3) ($max_lsn/2) >= 0 and end_lsn < ($max_lsn)

I had 1) in mind.

> If yes, what expected results should be?

Well, about anything. That limits the usefulness, I agree.

Revision history for this message
Vlad Lesin (vlad-lesin) wrote :

> > - I guess the current code did not implement the index condition
> > pushdown yet?
>
> It does.
> if (cond && !cond->val_int())
> continue;
>
> cond->val_int() traverses the condition tree and calculates condition value
> using fields values stored earlier.
>
> But we discussed it would be useful to recognize
> "START_LSN >some_value_1 and END_LSN < some_value_2"
> expression to prevent scanning the rest of bitmap file(s)
> after reaching the upper limit.
>
> In progress.

The main trouble is we need common mysql code to implement this. For example to traverse
condition tree we need to know the type of Items, but they are defined in sql/item*.h.

So we could place the function which traverses condition tree to recognize our pattern
in common mysql code somewhere near calc_lookup_values_from_cond() and use it as
external function in handler/i_s.cc but I doubt it's a good solution.

At the other hand we could make it common enough to be placed in common code like
calc_lookup_values_from_cond().

I mean we could parse the following patterns:
 - some_expression & cmp
 - cmp & some_expression
 - cmp & cmp
 - cmp
where cmp is:
 - some_field (<|<=) uint_value
 - uint_value (>|>=) some_field
 - some_field (<|<=) uint_value
 - uint_value (>|>=) some_field
to the following structure:
{
  string field_name1;
  uint field_value1;
  string field_name2;
  string field_value2;
}

And the purpose of the function would be to get maximum field
value after which there is not sense to scan table/file/something else.
As the code is common enough to be used not only for our I_S table generation
it could be placed to the common mysql code.

Any opinions/ideas?

Revision history for this message
Vlad Lesin (vlad-lesin) wrote :

> I wonder if we have to distinguish between a hole and a bad
> block.

I think the distinguish is in units of measuring.
Bad block is a page range while hole is lsn range.

Revision history for this message
Laurynas Biveinis (laurynas-biveinis) wrote :

> The main trouble is we need common mysql code to implement this. For example
> to traverse
> condition tree we need to know the type of Items, but they are defined in
> sql/item*.h.

I believe it's OK to include sql/*.h in the innodb handler/ source files. But then it needs checking if InnoDB built as a plugin can link to all the symbols it needs.

> So we could place the function which traverses condition tree to recognize our
> pattern
> in common mysql code somewhere near calc_lookup_values_from_cond() and use it
> as
> external function in handler/i_s.cc but I doubt it's a good solution.
>
> At the other hand we could make it common enough to be placed in common code
> like
> calc_lookup_values_from_cond().

If the above works, then I think let's keep it local to i_s.cc at first for now.

> I mean we could parse the following patterns:
> - some_expression & cmp
> - cmp & some_expression
> - cmp & cmp
> - cmp
> where cmp is:
> - some_field (<|<=) uint_value
> - uint_value (>|>=) some_field
> - some_field (<|<=) uint_value
> - uint_value (>|>=) some_field
> to the following structure:
> {
> string field_name1;
> uint field_value1;
> string field_name2;
> string field_value2;
> }
>
> And the purpose of the function would be to get maximum field
> value after which there is not sense to scan table/file/something else.

Looks good. I'd tweak the top-most recognized pattern to be
term & term & ... & term
Where
term can be a "cmp", as defined above, or anything else (ignored)
Then maintain a lower and upper bound for the range and go through each cmp looking if it enables to reduce the range.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'Makefile'
--- Makefile 2012-05-09 04:14:12 +0000
+++ Makefile 2012-08-15 14:13:58 +0000
@@ -6,7 +6,7 @@
6KEWPIE ?=kewpie6KEWPIE ?=kewpie
7BASEDIR = $(CURDIR)7BASEDIR = $(CURDIR)
88
9all: main install-lic misc handlersocket maatkit-udf autorun9all: main install-lic handlersocket maatkit-udf autorun
10 @echo ""10 @echo ""
11 @echo "Percona Server source code is ready"11 @echo "Percona Server source code is ready"
12 @echo "Now change directory to $(PERCONA_SERVER) define variables as show below"12 @echo "Now change directory to $(PERCONA_SERVER) define variables as show below"
@@ -41,10 +41,6 @@
4141
42main: prepare42main: prepare
4343
44misc:
45 @echo "Installing other files"
46 install -m 644 lrusort.py $(PERCONA_SERVER)/scripts
47
48clean:44clean:
49 rm -rf $(PERCONA_SERVER) $(PERCONA_SERVER_SHORT_1)45 rm -rf $(PERCONA_SERVER) $(PERCONA_SERVER_SHORT_1)
5046
5147
=== modified file 'Percona-Server/mysql-test/r/information_schema.result'
--- Percona-Server/mysql-test/r/information_schema.result 2011-11-24 02:00:56 +0000
+++ Percona-Server/mysql-test/r/information_schema.result 2012-08-15 14:13:58 +0000
@@ -81,9 +81,9 @@
81VIEWS81VIEWS
82INNODB_BUFFER_POOL_PAGES_INDEX82INNODB_BUFFER_POOL_PAGES_INDEX
83INNODB_RSEG83INNODB_RSEG
84INNODB_LOCKS84INNODB_CHANGED_PAGES
85INNODB_BUFFER_POOL_PAGES85INNODB_BUFFER_POOL_PAGES
86XTRADB_ENHANCEMENTS86INNODB_TABLE_STATS
87INNODB_TRX87INNODB_TRX
88XTRADB_ADMIN_COMMAND88XTRADB_ADMIN_COMMAND
89INNODB_LOCK_WAITS89INNODB_LOCK_WAITS
@@ -96,7 +96,7 @@
96INNODB_SYS_INDEXES96INNODB_SYS_INDEXES
97INNODB_BUFFER_POOL_PAGES_BLOB97INNODB_BUFFER_POOL_PAGES_BLOB
98INNODB_CMPMEM_RESET98INNODB_CMPMEM_RESET
99INNODB_TABLE_STATS99INNODB_LOCKS
100columns_priv100columns_priv
101db101db
102event102event
@@ -901,8 +901,8 @@
901TEMPORARY_TABLES TABLE_NAME select901TEMPORARY_TABLES TABLE_NAME select
902TABLE_STATISTICS TABLE_NAME select902TABLE_STATISTICS TABLE_NAME select
903VIEWS TABLE_NAME select903VIEWS TABLE_NAME select
904INNODB_TABLE_STATS table_name select
904INNODB_INDEX_STATS table_name select905INNODB_INDEX_STATS table_name select
905INNODB_TABLE_STATS table_name select
906delete from mysql.user where user='mysqltest_4';906delete from mysql.user where user='mysqltest_4';
907delete from mysql.db where user='mysqltest_4';907delete from mysql.db where user='mysqltest_4';
908flush privileges;908flush privileges;
@@ -1333,9 +1333,9 @@
1333VIEWS TABLE_SCHEMA1333VIEWS TABLE_SCHEMA
1334INNODB_BUFFER_POOL_PAGES_INDEX index_id1334INNODB_BUFFER_POOL_PAGES_INDEX index_id
1335INNODB_RSEG rseg_id1335INNODB_RSEG rseg_id
1336INNODB_LOCKS lock_id1336INNODB_CHANGED_PAGES space_id
1337INNODB_BUFFER_POOL_PAGES page_type1337INNODB_BUFFER_POOL_PAGES page_type
1338XTRADB_ENHANCEMENTS name1338INNODB_TABLE_STATS table_schema
1339INNODB_TRX trx_id1339INNODB_TRX trx_id
1340XTRADB_ADMIN_COMMAND result_message1340XTRADB_ADMIN_COMMAND result_message
1341INNODB_LOCK_WAITS requesting_trx_id1341INNODB_LOCK_WAITS requesting_trx_id
@@ -1348,7 +1348,7 @@
1348INNODB_SYS_INDEXES TABLE_ID1348INNODB_SYS_INDEXES TABLE_ID
1349INNODB_BUFFER_POOL_PAGES_BLOB space_id1349INNODB_BUFFER_POOL_PAGES_BLOB space_id
1350INNODB_CMPMEM_RESET page_size1350INNODB_CMPMEM_RESET page_size
1351INNODB_TABLE_STATS table_schema1351INNODB_LOCKS lock_id
1352SELECT t.table_name, c1.column_name1352SELECT t.table_name, c1.column_name
1353FROM information_schema.tables t1353FROM information_schema.tables t
1354INNER JOIN1354INNER JOIN
@@ -1402,9 +1402,9 @@
1402VIEWS TABLE_SCHEMA1402VIEWS TABLE_SCHEMA
1403INNODB_BUFFER_POOL_PAGES_INDEX index_id1403INNODB_BUFFER_POOL_PAGES_INDEX index_id
1404INNODB_RSEG rseg_id1404INNODB_RSEG rseg_id
1405INNODB_LOCKS lock_id1405INNODB_CHANGED_PAGES space_id
1406INNODB_BUFFER_POOL_PAGES page_type1406INNODB_BUFFER_POOL_PAGES page_type
1407XTRADB_ENHANCEMENTS name1407INNODB_TABLE_STATS table_schema
1408INNODB_TRX trx_id1408INNODB_TRX trx_id
1409XTRADB_ADMIN_COMMAND result_message1409XTRADB_ADMIN_COMMAND result_message
1410INNODB_LOCK_WAITS requesting_trx_id1410INNODB_LOCK_WAITS requesting_trx_id
@@ -1417,15 +1417,15 @@
1417INNODB_SYS_INDEXES TABLE_ID1417INNODB_SYS_INDEXES TABLE_ID
1418INNODB_BUFFER_POOL_PAGES_BLOB space_id1418INNODB_BUFFER_POOL_PAGES_BLOB space_id
1419INNODB_CMPMEM_RESET page_size1419INNODB_CMPMEM_RESET page_size
1420INNODB_TABLE_STATS table_schema1420INNODB_LOCKS lock_id
1421SELECT MAX(table_name) FROM information_schema.tables WHERE table_schema IN ('mysql', 'INFORMATION_SCHEMA', 'test');1421SELECT MAX(table_name) FROM information_schema.tables WHERE table_schema IN ('mysql', 'INFORMATION_SCHEMA', 'test');
1422MAX(table_name)1422MAX(table_name)
1423XTRADB_ENHANCEMENTS1423XTRADB_ADMIN_COMMAND
1424SELECT table_name from information_schema.tables1424SELECT table_name from information_schema.tables
1425WHERE table_name=(SELECT MAX(table_name)1425WHERE table_name=(SELECT MAX(table_name)
1426FROM information_schema.tables WHERE table_schema IN ('mysql', 'INFORMATION_SCHEMA', 'test'));1426FROM information_schema.tables WHERE table_schema IN ('mysql', 'INFORMATION_SCHEMA', 'test'));
1427table_name1427table_name
1428XTRADB_ENHANCEMENTS1428XTRADB_ADMIN_COMMAND
1429DROP TABLE IF EXISTS bug23037;1429DROP TABLE IF EXISTS bug23037;
1430DROP FUNCTION IF EXISTS get_value;1430DROP FUNCTION IF EXISTS get_value;
1431SELECT COLUMN_NAME, MD5(COLUMN_DEFAULT), LENGTH(COLUMN_DEFAULT) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='bug23037';1431SELECT COLUMN_NAME, MD5(COLUMN_DEFAULT), LENGTH(COLUMN_DEFAULT) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='bug23037';
@@ -1500,6 +1500,7 @@
1500INNODB_BUFFER_POOL_PAGES information_schema.INNODB_BUFFER_POOL_PAGES 11500INNODB_BUFFER_POOL_PAGES information_schema.INNODB_BUFFER_POOL_PAGES 1
1501INNODB_BUFFER_POOL_PAGES_BLOB information_schema.INNODB_BUFFER_POOL_PAGES_BLOB 11501INNODB_BUFFER_POOL_PAGES_BLOB information_schema.INNODB_BUFFER_POOL_PAGES_BLOB 1
1502INNODB_BUFFER_POOL_PAGES_INDEX information_schema.INNODB_BUFFER_POOL_PAGES_INDEX 11502INNODB_BUFFER_POOL_PAGES_INDEX information_schema.INNODB_BUFFER_POOL_PAGES_INDEX 1
1503INNODB_CHANGED_PAGES information_schema.INNODB_CHANGED_PAGES 1
1503INNODB_CMP information_schema.INNODB_CMP 11504INNODB_CMP information_schema.INNODB_CMP 1
1504INNODB_CMPMEM information_schema.INNODB_CMPMEM 11505INNODB_CMPMEM information_schema.INNODB_CMPMEM 1
1505INNODB_CMPMEM_RESET information_schema.INNODB_CMPMEM_RESET 11506INNODB_CMPMEM_RESET information_schema.INNODB_CMPMEM_RESET 1
@@ -1536,7 +1537,6 @@
1536USER_PRIVILEGES information_schema.USER_PRIVILEGES 11537USER_PRIVILEGES information_schema.USER_PRIVILEGES 1
1537USER_STATISTICS information_schema.USER_STATISTICS 11538USER_STATISTICS information_schema.USER_STATISTICS 1
1538VIEWS information_schema.VIEWS 11539VIEWS information_schema.VIEWS 1
1539XTRADB_ENHANCEMENTS information_schema.XTRADB_ENHANCEMENTS 1
1540create table t1(f1 int);1540create table t1(f1 int);
1541create view v1 as select f1+1 as a from t1;1541create view v1 as select f1+1 as a from t1;
1542create table t2 (f1 int, f2 int);1542create table t2 (f1 int, f2 int);
15431543
=== modified file 'Percona-Server/mysql-test/r/information_schema_db.result'
--- Percona-Server/mysql-test/r/information_schema_db.result 2011-11-24 02:00:56 +0000
+++ Percona-Server/mysql-test/r/information_schema_db.result 2012-08-15 14:13:58 +0000
@@ -43,9 +43,9 @@
43VIEWS43VIEWS
44INNODB_BUFFER_POOL_PAGES_INDEX44INNODB_BUFFER_POOL_PAGES_INDEX
45INNODB_RSEG45INNODB_RSEG
46INNODB_LOCKS46INNODB_CHANGED_PAGES
47INNODB_BUFFER_POOL_PAGES47INNODB_BUFFER_POOL_PAGES
48XTRADB_ENHANCEMENTS48INNODB_TABLE_STATS
49INNODB_TRX49INNODB_TRX
50XTRADB_ADMIN_COMMAND50XTRADB_ADMIN_COMMAND
51INNODB_LOCK_WAITS51INNODB_LOCK_WAITS
@@ -58,7 +58,7 @@
58INNODB_SYS_INDEXES58INNODB_SYS_INDEXES
59INNODB_BUFFER_POOL_PAGES_BLOB59INNODB_BUFFER_POOL_PAGES_BLOB
60INNODB_CMPMEM_RESET60INNODB_CMPMEM_RESET
61INNODB_TABLE_STATS61INNODB_LOCKS
62show tables from INFORMATION_SCHEMA like 'T%';62show tables from INFORMATION_SCHEMA like 'T%';
63Tables_in_information_schema (T%)63Tables_in_information_schema (T%)
64TABLES64TABLES
6565
=== modified file 'Percona-Server/mysql-test/r/mysqlshow.result'
--- Percona-Server/mysql-test/r/mysqlshow.result 2011-11-24 02:00:56 +0000
+++ Percona-Server/mysql-test/r/mysqlshow.result 2012-08-15 14:13:58 +0000
@@ -117,9 +117,9 @@
117| VIEWS |117| VIEWS |
118| INNODB_BUFFER_POOL_PAGES_INDEX |118| INNODB_BUFFER_POOL_PAGES_INDEX |
119| INNODB_RSEG |119| INNODB_RSEG |
120| INNODB_LOCKS |120| INNODB_CHANGED_PAGES |
121| INNODB_BUFFER_POOL_PAGES |121| INNODB_BUFFER_POOL_PAGES |
122| XTRADB_ENHANCEMENTS |122| INNODB_TABLE_STATS |
123| INNODB_TRX |123| INNODB_TRX |
124| XTRADB_ADMIN_COMMAND |124| XTRADB_ADMIN_COMMAND |
125| INNODB_LOCK_WAITS |125| INNODB_LOCK_WAITS |
@@ -132,7 +132,7 @@
132| INNODB_SYS_INDEXES |132| INNODB_SYS_INDEXES |
133| INNODB_BUFFER_POOL_PAGES_BLOB |133| INNODB_BUFFER_POOL_PAGES_BLOB |
134| INNODB_CMPMEM_RESET |134| INNODB_CMPMEM_RESET |
135| INNODB_TABLE_STATS |135| INNODB_LOCKS |
136+---------------------------------------+136+---------------------------------------+
137Database: INFORMATION_SCHEMA137Database: INFORMATION_SCHEMA
138+---------------------------------------+138+---------------------------------------+
@@ -176,9 +176,9 @@
176| VIEWS |176| VIEWS |
177| INNODB_BUFFER_POOL_PAGES_INDEX |177| INNODB_BUFFER_POOL_PAGES_INDEX |
178| INNODB_RSEG |178| INNODB_RSEG |
179| INNODB_LOCKS |179| INNODB_CHANGED_PAGES |
180| INNODB_BUFFER_POOL_PAGES |180| INNODB_BUFFER_POOL_PAGES |
181| XTRADB_ENHANCEMENTS |181| INNODB_TABLE_STATS |
182| INNODB_TRX |182| INNODB_TRX |
183| XTRADB_ADMIN_COMMAND |183| XTRADB_ADMIN_COMMAND |
184| INNODB_LOCK_WAITS |184| INNODB_LOCK_WAITS |
@@ -191,7 +191,7 @@
191| INNODB_SYS_INDEXES |191| INNODB_SYS_INDEXES |
192| INNODB_BUFFER_POOL_PAGES_BLOB |192| INNODB_BUFFER_POOL_PAGES_BLOB |
193| INNODB_CMPMEM_RESET |193| INNODB_CMPMEM_RESET |
194| INNODB_TABLE_STATS |194| INNODB_LOCKS |
195+---------------------------------------+195+---------------------------------------+
196Wildcard: inf_rmation_schema196Wildcard: inf_rmation_schema
197+--------------------+197+--------------------+
198198
=== modified file 'Percona-Server/mysql-test/r/percona_server_variables_debug.result'
--- Percona-Server/mysql-test/r/percona_server_variables_debug.result 2012-06-14 09:16:03 +0000
+++ Percona-Server/mysql-test/r/percona_server_variables_debug.result 2012-08-15 14:13:58 +0000
@@ -86,6 +86,7 @@
86INNODB_BUFFER_POOL_SHM_CHECKSUM86INNODB_BUFFER_POOL_SHM_CHECKSUM
87INNODB_BUFFER_POOL_SHM_KEY87INNODB_BUFFER_POOL_SHM_KEY
88INNODB_BUFFER_POOL_SIZE88INNODB_BUFFER_POOL_SIZE
89INNODB_CHANGED_PAGES_LIMIT
89INNODB_CHANGE_BUFFERING90INNODB_CHANGE_BUFFERING
90INNODB_CHECKPOINT_AGE_TARGET91INNODB_CHECKPOINT_AGE_TARGET
91INNODB_CHECKSUMS92INNODB_CHECKSUMS
9293
=== modified file 'Percona-Server/mysql-test/r/percona_server_variables_release.result'
--- Percona-Server/mysql-test/r/percona_server_variables_release.result 2012-06-14 09:16:03 +0000
+++ Percona-Server/mysql-test/r/percona_server_variables_release.result 2012-08-15 14:13:58 +0000
@@ -84,6 +84,7 @@
84INNODB_BUFFER_POOL_SHM_CHECKSUM84INNODB_BUFFER_POOL_SHM_CHECKSUM
85INNODB_BUFFER_POOL_SHM_KEY85INNODB_BUFFER_POOL_SHM_KEY
86INNODB_BUFFER_POOL_SIZE86INNODB_BUFFER_POOL_SIZE
87INNODB_CHANGED_PAGES_LIMIT
87INNODB_CHANGE_BUFFERING88INNODB_CHANGE_BUFFERING
88INNODB_CHECKPOINT_AGE_TARGET89INNODB_CHECKPOINT_AGE_TARGET
89INNODB_CHECKSUMS90INNODB_CHECKSUMS
9091
=== added file 'Percona-Server/mysql-test/suite/innodb_plugin/r/percona_bug_951588.result'
--- Percona-Server/mysql-test/suite/innodb_plugin/r/percona_bug_951588.result 1970-01-01 00:00:00 +0000
+++ Percona-Server/mysql-test/suite/innodb_plugin/r/percona_bug_951588.result 2012-08-15 14:13:58 +0000
@@ -0,0 +1,12 @@
1DROP TABLE IF EXISTS t1;
2CREATE TEMPORARY TABLE t1 (a INT) ENGINE=InnoDB;
3INSERT INTO t1 VALUES (1), (2), (3);
4SET DEBUG_SYNC= 'start_ha_write_row SIGNAL write_in_progress WAIT_FOR i_s_completed';
5ALTER TABLE t1 ADD COLUMN b VARCHAR(10);
6SET DEBUG_SYNC= 'now WAIT_FOR write_in_progress';
7SELECT COUNT(*) FROM INFORMATION_SCHEMA.GLOBAL_TEMPORARY_TABLES;
8COUNT(*)
92
10SET DEBUG_SYNC= 'now SIGNAL i_s_completed';
11DROP TABLE t1;
12SET DEBUG_SYNC='reset';
013
=== added file 'Percona-Server/mysql-test/suite/innodb_plugin/r/percona_bug_999147.result'
--- Percona-Server/mysql-test/suite/innodb_plugin/r/percona_bug_999147.result 1970-01-01 00:00:00 +0000
+++ Percona-Server/mysql-test/suite/innodb_plugin/r/percona_bug_999147.result 2012-08-15 14:13:58 +0000
@@ -0,0 +1,10 @@
1DROP TABLE IF EXISTS t1;
2SET SESSION expand_fast_index_creation=ON;
3CREATE TEMPORARY TABLE t1 (a INT, b INT, INDEX(a)) ENGINE=InnoDB;
4SET debug="+d,crash_innodb_add_index_after";
5ALTER TABLE t1 ADD INDEX (b);
6ERROR HY000: Lost connection to MySQL server during query
7SELECT NAME FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES;
8NAME
9SYS_FOREIGN
10SYS_FOREIGN_COLS
011
=== added file 'Percona-Server/mysql-test/suite/innodb_plugin/r/percona_changed_pages.result'
--- Percona-Server/mysql-test/suite/innodb_plugin/r/percona_changed_pages.result 1970-01-01 00:00:00 +0000
+++ Percona-Server/mysql-test/suite/innodb_plugin/r/percona_changed_pages.result 2012-08-15 14:13:58 +0000
@@ -0,0 +1,41 @@
1SELECT @@innodb_track_changed_pages;
2@@innodb_track_changed_pages
31
4SET @OLD_INNODB_CHANGED_PAGES_LIMIT = @@GLOBAL.INNODB_CHANGED_PAGES_LIMIT;
5SET GLOBAL INNODB_CHANGED_PAGES_LIMIT = 0;
6CREATE TABLE T1 (F1 CHAR(255)) ENGINE=INNODB;
7SET @t1_space_id =
8(SELECT SPACE
9FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES
10WHERE
11INFORMATION_SCHEMA.INNODB_SYS_TABLES.SCHEMA='test' AND
12INFORMATION_SCHEMA.INNODB_SYS_TABLES.NAME='T1');
13SET GLOBAL INNODB_CHANGED_PAGES_LIMIT = 0;
14SELECT COUNT(DISTINCT PAGE_ID) >= (1024000/16384)
15FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES
16WHERE SPACE_ID = @t1_space_id;
17COUNT(DISTINCT PAGE_ID) >= (1024000/16384)
181
19SELECT MAX(PAGE_ID) < (3*1024000/16384)
20FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES
21WHERE SPACE_ID = @t1_space_id;
22MAX(PAGE_ID) < (3*1024000/16384)
231
24SELECT COUNT(*)
25FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES
26WHERE START_LSN >= END_LSN;
27COUNT(*)
280
29SELECT COUNT(*) = @cond_test_pages_count
30FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES
31WHERE
32END_LSN > (@cond_test_lsn - 1) AND
33END_LSN < (@cond_test_lsn + 1);
34COUNT(*) = @cond_test_pages_count
351
36SET GLOBAL INNODB_CHANGED_PAGES_LIMIT = 1;
37SELECT COUNT(*) FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES;
38COUNT(*)
391
40SET GLOBAL INNODB_CHANGED_PAGES_LIMIT = @OLD_INNODB_CHANGED_PAGES_LIMIT;
41DROP TABLE T1;
042
=== added file 'Percona-Server/mysql-test/suite/innodb_plugin/r/percona_changed_pages_empty.result'
--- Percona-Server/mysql-test/suite/innodb_plugin/r/percona_changed_pages_empty.result 1970-01-01 00:00:00 +0000
+++ Percona-Server/mysql-test/suite/innodb_plugin/r/percona_changed_pages_empty.result 2012-08-15 14:13:58 +0000
@@ -0,0 +1,2 @@
1SELECT * FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES;
2space_id page_id start_lsn end_lsn
03
=== added file 'Percona-Server/mysql-test/suite/innodb_plugin/r/percona_skip_innodb_i_s.result'
--- Percona-Server/mysql-test/suite/innodb_plugin/r/percona_skip_innodb_i_s.result 1970-01-01 00:00:00 +0000
+++ Percona-Server/mysql-test/suite/innodb_plugin/r/percona_skip_innodb_i_s.result 2012-08-15 14:13:58 +0000
@@ -0,0 +1,94 @@
1SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='INFORMATION_SCHEMA' AND TABLE_NAME LIKE 'INNODB%' ORDER BY TABLE_NAME;
2TABLE_NAME
3INNODB_BUFFER_POOL_PAGES
4INNODB_BUFFER_POOL_PAGES_BLOB
5INNODB_BUFFER_POOL_PAGES_INDEX
6INNODB_CHANGED_PAGES
7INNODB_CMP
8INNODB_CMPMEM
9INNODB_CMPMEM_RESET
10INNODB_CMP_RESET
11INNODB_INDEX_STATS
12INNODB_LOCKS
13INNODB_LOCK_WAITS
14INNODB_RSEG
15INNODB_SYS_INDEXES
16INNODB_SYS_STATS
17INNODB_SYS_TABLES
18INNODB_TABLE_STATS
19INNODB_TRX
20SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='INFORMATION_SCHEMA' AND TABLE_NAME LIKE 'XTRADB%' ORDER BY TABLE_NAME;
21TABLE_NAME
22XTRADB_ADMIN_COMMAND
23SELECT * FROM INFORMATION_SCHEMA.INNODB_BUFFER_POOL_PAGES_INDEX;
24index_id space_id page_no n_recs data_size hashed access_time modified dirty old lru_position fix_count flush_type
25Warnings:
26Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.INNODB_BUFFER_POOL_PAGES_INDEX but the InnoDB storage engine is not installed
27SELECT * FROM INFORMATION_SCHEMA.INNODB_RSEG;
28rseg_id space_id zip_size page_no max_size curr_size
29Warnings:
30Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.INNODB_RSEG but the InnoDB storage engine is not installed
31SELECT * FROM INFORMATION_SCHEMA.INNODB_CMP;
32page_size compress_ops compress_ops_ok compress_time uncompress_ops uncompress_time
33Warnings:
34Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.INNODB_CMP but the InnoDB storage engine is not installed
35SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX;
36trx_id trx_state trx_started trx_requested_lock_id trx_wait_started trx_weight trx_mysql_thread_id trx_query
37Warnings:
38Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.INNODB_TRX but the InnoDB storage engine is not installed
39SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;
40requesting_trx_id requested_lock_id blocking_trx_id blocking_lock_id
41Warnings:
42Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.INNODB_LOCK_WAITS but the InnoDB storage engine is not installed
43SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;
44lock_id lock_trx_id lock_mode lock_type lock_table lock_index lock_space lock_page lock_rec lock_data
45Warnings:
46Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.INNODB_LOCKS but the InnoDB storage engine is not installed
47SELECT * FROM INFORMATION_SCHEMA.INNODB_CMP_RESET;
48page_size compress_ops compress_ops_ok compress_time uncompress_ops uncompress_time
49Warnings:
50Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.INNODB_CMP_RESET but the InnoDB storage engine is not installed
51SELECT * FROM INFORMATION_SCHEMA.INNODB_BUFFER_POOL_PAGES;
52page_type space_id page_no lru_position fix_count flush_type
53Warnings:
54Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.INNODB_BUFFER_POOL_PAGES but the InnoDB storage engine is not installed
55SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES;
56SCHEMA NAME ID N_COLS TYPE MIX_ID MIX_LEN CLUSTER_NAME SPACE
57Warnings:
58Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.INNODB_SYS_TABLES but the InnoDB storage engine is not installed
59SELECT * FROM INFORMATION_SCHEMA.INNODB_BUFFER_POOL_PAGES_INDEX;
60index_id space_id page_no n_recs data_size hashed access_time modified dirty old lru_position fix_count flush_type
61Warnings:
62Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.INNODB_BUFFER_POOL_PAGES_INDEX but the InnoDB storage engine is not installed
63SELECT * FROM INFORMATION_SCHEMA.INNODB_CMPMEM;
64page_size pages_used pages_free relocation_ops relocation_time
65Warnings:
66Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.INNODB_CMPMEM but the InnoDB storage engine is not installed
67SELECT * FROM INFORMATION_SCHEMA.INNODB_BUFFER_POOL_PAGES_BLOB;
68space_id page_no compressed part_len next_page_no lru_position fix_count flush_type
69Warnings:
70Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.INNODB_BUFFER_POOL_PAGES_BLOB but the InnoDB storage engine is not installed
71SELECT * FROM INFORMATION_SCHEMA.INNODB_CMPMEM_RESET;
72page_size pages_used pages_free relocation_ops relocation_time
73Warnings:
74Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.INNODB_CMPMEM_RESET but the InnoDB storage engine is not installed
75SELECT * FROM INFORMATION_SCHEMA.INNODB_TABLE_STATS;
76table_schema table_name rows clust_size other_size modified
77Warnings:
78Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.INNODB_TABLE_STATS but the InnoDB storage engine is not installed
79SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_STATS;
80INDEX_ID KEY_COLS DIFF_VALS NON_NULL_VALS
81Warnings:
82Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.INNODB_SYS_STATS but the InnoDB storage engine is not installed
83SELECT * FROM INFORMATION_SCHEMA.INNODB_INDEX_STATS;
84table_schema table_name index_name fields row_per_keys index_size leaf_pages
85Warnings:
86Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.INNODB_INDEX_STATS but the InnoDB storage engine is not installed
87SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_INDEXES;
88TABLE_ID ID NAME N_FIELDS TYPE SPACE PAGE_NO
89Warnings:
90Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.INNODB_SYS_INDEXES but the InnoDB storage engine is not installed
91SELECT * FROM INFORMATION_SCHEMA.XTRADB_ADMIN_COMMAND;
92result_message
93Warnings:
94Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.XTRADB_ADMIN_COMMAND but the InnoDB storage engine is not installed
095
=== added file 'Percona-Server/mysql-test/suite/innodb_plugin/t/percona_bug_951588.test'
--- Percona-Server/mysql-test/suite/innodb_plugin/t/percona_bug_951588.test 1970-01-01 00:00:00 +0000
+++ Percona-Server/mysql-test/suite/innodb_plugin/t/percona_bug_951588.test 2012-08-15 14:13:58 +0000
@@ -0,0 +1,29 @@
1# Test for bug 951588 (Querying I_S.TEMPORARY_TABLES crashes parallel threads working on temp tables)
2
3--source include/have_innodb_plugin.inc
4--source include/have_debug_sync.inc
5
6--disable_warnings
7DROP TABLE IF EXISTS t1;
8--enable_warnings
9
10CREATE TEMPORARY TABLE t1 (a INT) ENGINE=InnoDB;
11INSERT INTO t1 VALUES (1), (2), (3);
12
13SET DEBUG_SYNC= 'start_ha_write_row SIGNAL write_in_progress WAIT_FOR i_s_completed';
14send ALTER TABLE t1 ADD COLUMN b VARCHAR(10);
15
16connect (conn2,localhost,root,,);
17connection conn2;
18
19SET DEBUG_SYNC= 'now WAIT_FOR write_in_progress';
20SELECT COUNT(*) FROM INFORMATION_SCHEMA.GLOBAL_TEMPORARY_TABLES;
21SET DEBUG_SYNC= 'now SIGNAL i_s_completed';
22
23disconnect conn2;
24connection default;
25reap;
26
27DROP TABLE t1;
28
29SET DEBUG_SYNC='reset';
030
=== added file 'Percona-Server/mysql-test/suite/innodb_plugin/t/percona_bug_999147-master.opt'
--- Percona-Server/mysql-test/suite/innodb_plugin/t/percona_bug_999147-master.opt 1970-01-01 00:00:00 +0000
+++ Percona-Server/mysql-test/suite/innodb_plugin/t/percona_bug_999147-master.opt 2012-08-15 14:13:58 +0000
@@ -0,0 +1,1 @@
1--skip-stack-trace --skip-core-file --innodb-file-per-table=1
02
=== added file 'Percona-Server/mysql-test/suite/innodb_plugin/t/percona_bug_999147.test'
--- Percona-Server/mysql-test/suite/innodb_plugin/t/percona_bug_999147.test 1970-01-01 00:00:00 +0000
+++ Percona-Server/mysql-test/suite/innodb_plugin/t/percona_bug_999147.test 2012-08-15 14:13:58 +0000
@@ -0,0 +1,29 @@
1# Test for Percona Server bug 999147 (A crash that leaves behind an
2# InnoDB temporary table with indexes results in an unbootable server)
3# https://bugs.launchpad.net/percona-server/+bug/999147
4
5-- source include/not_embedded.inc
6-- source include/not_valgrind.inc
7-- source include/not_crashrep.inc
8-- source include/have_debug.inc
9-- source include/have_innodb.inc
10
11--disable_warnings
12DROP TABLE IF EXISTS t1;
13--enable_warnings
14
15SET SESSION expand_fast_index_creation=ON;
16
17CREATE TEMPORARY TABLE t1 (a INT, b INT, INDEX(a)) ENGINE=InnoDB;
18
19--exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
20
21SET debug="+d,crash_innodb_add_index_after";
22--error 2013
23ALTER TABLE t1 ADD INDEX (b);
24
25--enable_reconnect
26
27--source include/wait_until_connected_again.inc
28
29SELECT NAME FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES;
030
=== added file 'Percona-Server/mysql-test/suite/innodb_plugin/t/percona_changed_pages-master.opt'
--- Percona-Server/mysql-test/suite/innodb_plugin/t/percona_changed_pages-master.opt 1970-01-01 00:00:00 +0000
+++ Percona-Server/mysql-test/suite/innodb_plugin/t/percona_changed_pages-master.opt 2012-08-15 14:13:58 +0000
@@ -0,0 +1,1 @@
1--innodb_track_changed_pages=TRUE --innodb_log_file_size=1M --innodb-file-per-table
02
=== added file 'Percona-Server/mysql-test/suite/innodb_plugin/t/percona_changed_pages.test'
--- Percona-Server/mysql-test/suite/innodb_plugin/t/percona_changed_pages.test 1970-01-01 00:00:00 +0000
+++ Percona-Server/mysql-test/suite/innodb_plugin/t/percona_changed_pages.test 2012-08-15 14:13:58 +0000
@@ -0,0 +1,103 @@
1###########################################
2# Test for I_S.INNODB_CHANGED_PAGES table #
3###########################################
4
5--source include/have_innodb_plugin.inc
6
7SELECT @@innodb_track_changed_pages;
8
9SET @OLD_INNODB_CHANGED_PAGES_LIMIT = @@GLOBAL.INNODB_CHANGED_PAGES_LIMIT;
10
11SET GLOBAL INNODB_CHANGED_PAGES_LIMIT = 0;
12
13CREATE TABLE T1 (F1 CHAR(255)) ENGINE=INNODB;
14SET @t1_space_id =
15 (SELECT SPACE
16 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES
17 WHERE
18 INFORMATION_SCHEMA.INNODB_SYS_TABLES.SCHEMA='test' AND
19 INFORMATION_SCHEMA.INNODB_SYS_TABLES.NAME='T1');
20
21--disable_query_log
22--disable_result_log
23
24#########################################################################
25# The maximum log size is 1MB. Each row occupies at least 256 bytes. #
26# Each iteration inserts 100 rows. They occupies at least 25KB. To be #
27# sure that tracking log thread wrote at least 1M/16K pages we need to #
28# exceed maximum log size twice. That means we should do at least #
29# 2M/25K = 80 iterations. #
30#########################################################################
31--let $i=80
32
33while ($i)
34{
35--dec $i
36INSERT INTO T1 (F1) VALUES
37("1"), ("2"), ("3"), ("4"), ("5"), ("6"), ("7"), ("8"), ("9"), ("10"),
38("11"), ("12"), ("13"), ("14"), ("15"), ("16"), ("17"), ("18"), ("19"), ("20"),
39("21"), ("22"), ("23"), ("24"), ("25"), ("26"), ("27"), ("28"), ("29"), ("30"),
40("31"), ("32"), ("33"), ("34"), ("35"), ("36"), ("37"), ("38"), ("39"), ("40"),
41("41"), ("42"), ("43"), ("44"), ("45"), ("46"), ("47"), ("48"), ("49"), ("50"),
42("51"), ("52"), ("53"), ("54"), ("55"), ("56"), ("57"), ("58"), ("59"), ("60"),
43("61"), ("62"), ("63"), ("64"), ("65"), ("66"), ("67"), ("68"), ("69"), ("70"),
44("71"), ("72"), ("73"), ("74"), ("75"), ("76"), ("77"), ("78"), ("79"), ("80"),
45("81"), ("82"), ("83"), ("84"), ("85"), ("86"), ("87"), ("88"), ("89"), ("90"),
46("91"), ("92"), ("93"), ("94"), ("95"), ("96"), ("97"), ("98"), ("99"), ("100");
47}
48
49###################################################################
50# Gather data for condition pushdown testing not using conditions #
51###################################################################
52SET @cond_test_lsn=
53 (SELECT MIN(end_lsn)
54 FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES);
55
56SET @cond_test_pages_count=
57 (SELECT count(*)
58 FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES
59 GROUP BY end_lsn
60 ORDER BY end_lsn
61 LIMIT 1);
62
63--enable_query_log
64--enable_result_log
65
66###############################################################
67# Check if the number of changed pages is greater than 1M/16K #
68###############################################################
69SET GLOBAL INNODB_CHANGED_PAGES_LIMIT = 0;
70SELECT COUNT(DISTINCT PAGE_ID) >= (1024000/16384)
71 FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES
72 WHERE SPACE_ID = @t1_space_id;
73#############################################################
74# Check if the maximum page id is less than resonable limit #
75#############################################################
76SELECT MAX(PAGE_ID) < (3*1024000/16384)
77 FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES
78 WHERE SPACE_ID = @t1_space_id;
79########################################################
80# The records where START_LSN >= END_LSN should absent #
81########################################################
82SELECT COUNT(*)
83 FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES
84 WHERE START_LSN >= END_LSN;
85
86######################################################
87# Check condition if pushdown doesn't break anything #
88######################################################
89SELECT COUNT(*) = @cond_test_pages_count
90 FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES
91 WHERE
92 END_LSN > (@cond_test_lsn - 1) AND
93 END_LSN < (@cond_test_lsn + 1);
94
95################################################
96# Check how limit for maximum rows count works #
97################################################
98SET GLOBAL INNODB_CHANGED_PAGES_LIMIT = 1;
99SELECT COUNT(*) FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES;
100
101SET GLOBAL INNODB_CHANGED_PAGES_LIMIT = @OLD_INNODB_CHANGED_PAGES_LIMIT;
102
103DROP TABLE T1;
0104
=== added file 'Percona-Server/mysql-test/suite/innodb_plugin/t/percona_changed_pages_empty-master.opt'
--- Percona-Server/mysql-test/suite/innodb_plugin/t/percona_changed_pages_empty-master.opt 1970-01-01 00:00:00 +0000
+++ Percona-Server/mysql-test/suite/innodb_plugin/t/percona_changed_pages_empty-master.opt 2012-08-15 14:13:58 +0000
@@ -0,0 +1,1 @@
1--innodb_track_changed_pages=false
02
=== added file 'Percona-Server/mysql-test/suite/innodb_plugin/t/percona_changed_pages_empty.test'
--- Percona-Server/mysql-test/suite/innodb_plugin/t/percona_changed_pages_empty.test 1970-01-01 00:00:00 +0000
+++ Percona-Server/mysql-test/suite/innodb_plugin/t/percona_changed_pages_empty.test 2012-08-15 14:13:58 +0000
@@ -0,0 +1,8 @@
1###############################################################################
2# Test for empty I_S.INNODB_CHANGED_PAGES table. The table should be empty if#
3# innodb_track_changed_pages is false. #
4###############################################################################
5
6--source include/have_innodb_plugin.inc
7
8SELECT * FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES;
09
=== added file 'Percona-Server/mysql-test/suite/innodb_plugin/t/percona_skip_innodb_i_s-master.opt'
--- Percona-Server/mysql-test/suite/innodb_plugin/t/percona_skip_innodb_i_s-master.opt 1970-01-01 00:00:00 +0000
+++ Percona-Server/mysql-test/suite/innodb_plugin/t/percona_skip_innodb_i_s-master.opt 2012-08-15 14:13:58 +0000
@@ -0,0 +1,1 @@
1--skip-innodb
02
=== added file 'Percona-Server/mysql-test/suite/innodb_plugin/t/percona_skip_innodb_i_s.test'
--- Percona-Server/mysql-test/suite/innodb_plugin/t/percona_skip_innodb_i_s.test 1970-01-01 00:00:00 +0000
+++ Percona-Server/mysql-test/suite/innodb_plugin/t/percona_skip_innodb_i_s.test 2012-08-15 14:13:58 +0000
@@ -0,0 +1,21 @@
1# we just test that we don't crash. The SELECT below is to ensure we update the test if we add I_S tables for INNODB or XTRADB
2SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='INFORMATION_SCHEMA' AND TABLE_NAME LIKE 'INNODB%' ORDER BY TABLE_NAME;
3SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='INFORMATION_SCHEMA' AND TABLE_NAME LIKE 'XTRADB%' ORDER BY TABLE_NAME;
4SELECT * FROM INFORMATION_SCHEMA.INNODB_BUFFER_POOL_PAGES_INDEX;
5SELECT * FROM INFORMATION_SCHEMA.INNODB_RSEG;
6SELECT * FROM INFORMATION_SCHEMA.INNODB_CMP;
7SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX;
8SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;
9SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;
10SELECT * FROM INFORMATION_SCHEMA.INNODB_CMP_RESET;
11SELECT * FROM INFORMATION_SCHEMA.INNODB_BUFFER_POOL_PAGES;
12SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES;
13SELECT * FROM INFORMATION_SCHEMA.INNODB_BUFFER_POOL_PAGES_INDEX;
14SELECT * FROM INFORMATION_SCHEMA.INNODB_CMPMEM;
15SELECT * FROM INFORMATION_SCHEMA.INNODB_BUFFER_POOL_PAGES_BLOB;
16SELECT * FROM INFORMATION_SCHEMA.INNODB_CMPMEM_RESET;
17SELECT * FROM INFORMATION_SCHEMA.INNODB_TABLE_STATS;
18SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_STATS;
19SELECT * FROM INFORMATION_SCHEMA.INNODB_INDEX_STATS;
20SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_INDEXES;
21SELECT * FROM INFORMATION_SCHEMA.XTRADB_ADMIN_COMMAND;
022
=== modified file 'Percona-Server/sql/handler.cc'
--- Percona-Server/sql/handler.cc 2012-05-09 04:14:12 +0000
+++ Percona-Server/sql/handler.cc 2012-08-15 14:13:58 +0000
@@ -27,6 +27,7 @@
27#include "rpl_filter.h"27#include "rpl_filter.h"
28#include <myisampack.h>28#include <myisampack.h>
29#include <errno.h>29#include <errno.h>
30#include "debug_sync.h" // DEBUG_SYNC
3031
31#ifdef WITH_PARTITION_STORAGE_ENGINE32#ifdef WITH_PARTITION_STORAGE_ENGINE
32#include "ha_partition.h"33#include "ha_partition.h"
@@ -4795,6 +4796,7 @@
4795 int error;4796 int error;
4796 Log_func *log_func= Write_rows_log_event::binlog_row_logging_function;4797 Log_func *log_func= Write_rows_log_event::binlog_row_logging_function;
4797 DBUG_ENTER("handler::ha_write_row");4798 DBUG_ENTER("handler::ha_write_row");
4799 DEBUG_SYNC(ha_thd(), "start_ha_write_row");
47984800
4799 mark_trx_read_write();4801 mark_trx_read_write();
48004802
48014803
=== modified file 'Percona-Server/sql/log_event.cc'
--- Percona-Server/sql/log_event.cc 2012-05-09 04:14:12 +0000
+++ Percona-Server/sql/log_event.cc 2012-08-15 14:13:58 +0000
@@ -3162,11 +3162,35 @@
3162 const char *query_arg, uint32 q_len_arg)3162 const char *query_arg, uint32 q_len_arg)
3163{3163{
3164 LEX_STRING new_db;3164 LEX_STRING new_db;
3165 char* query_buf;
3166 int query_buf_len;
3165 int expected_error,actual_error= 0;3167 int expected_error,actual_error= 0;
3166 HA_CREATE_INFO db_options;3168 HA_CREATE_INFO db_options;
3167 bool process_log_slow_statement= false;3169 bool process_log_slow_statement= false;
31683170
3169 /*3171 /*
3172 We must allocate some extra memory for query cache
3173 The query buffer layout is:
3174 buffer :==
3175 <statement> The input statement(s)
3176 '\0' Terminating null char (1 byte)
3177 <length> Length of following current database name (size_t)
3178 <db_name> Name of current database
3179 <flags> Flags struct
3180 */
3181 query_buf_len = q_len_arg + 1 + sizeof(size_t) + thd->db_length
3182 + QUERY_CACHE_FLAGS_SIZE + 1;
3183 if ((query_buf= (char *) thd->alloc(query_buf_len)))
3184 {
3185 memcpy(query_buf, query_arg, q_len_arg);
3186 query_buf[q_len_arg]= 0;
3187 memcpy(query_buf+q_len_arg+1, (char *) &thd->db_length, sizeof(size_t));
3188 }
3189 else
3190 goto end;
3191
3192
3193 /*
3170 Colleagues: please never free(thd->catalog) in MySQL. This would3194 Colleagues: please never free(thd->catalog) in MySQL. This would
3171 lead to bugs as here thd->catalog is a part of an alloced block,3195 lead to bugs as here thd->catalog is a part of an alloced block,
3172 not an entire alloced block (see3196 not an entire alloced block (see
@@ -3246,7 +3270,7 @@
3246 if (is_trans_keyword() || rpl_filter->db_ok(thd->db))3270 if (is_trans_keyword() || rpl_filter->db_ok(thd->db))
3247 {3271 {
3248 thd->set_time((time_t)when);3272 thd->set_time((time_t)when);
3249 thd->set_query((char*)query_arg, q_len_arg);3273 thd->set_query((char*) query_buf, q_len_arg);
3250 VOID(pthread_mutex_lock(&LOCK_thread_count));3274 VOID(pthread_mutex_lock(&LOCK_thread_count));
3251 thd->query_id = next_query_id();3275 thd->query_id = next_query_id();
3252 VOID(pthread_mutex_unlock(&LOCK_thread_count));3276 VOID(pthread_mutex_unlock(&LOCK_thread_count));
@@ -4821,12 +4845,26 @@
4821 enum enum_duplicates handle_dup;4845 enum enum_duplicates handle_dup;
4822 bool ignore= 0;4846 bool ignore= 0;
4823 char *load_data_query;4847 char *load_data_query;
48244848 int query_buf_len;
4849
4850 /*
4851 We must allocate some extra memory for query cache
4852 The query buffer layout is:
4853 buffer :==
4854 <statement> The input statement(s)
4855 '\0' Terminating null char (1 byte)
4856 <length> Length of following current database name (size_t)
4857 <db_name> Name of current database
4858 <flags> Flags struct
4859 */
4860 query_buf_len = get_query_buffer_length() + 1 + sizeof(size_t)
4861 + thd->db_length + QUERY_CACHE_FLAGS_SIZE + 1;
4862
4825 /*4863 /*
4826 Forge LOAD DATA INFILE query which will be used in SHOW PROCESS LIST4864 Forge LOAD DATA INFILE query which will be used in SHOW PROCESS LIST
4827 and written to slave's binlog if binlogging is on.4865 and written to slave's binlog if binlogging is on.
4828 */4866 */
4829 if (!(load_data_query= (char *)thd->alloc(get_query_buffer_length() + 1)))4867 if (!(load_data_query= (char *) thd->alloc(query_buf_len)))
4830 {4868 {
4831 /*4869 /*
4832 This will set thd->fatal_error in case of OOM. So we surely will notice4870 This will set thd->fatal_error in case of OOM. So we surely will notice
@@ -4837,6 +4875,7 @@
48374875
4838 print_query(FALSE, NULL, load_data_query, &end, NULL, NULL);4876 print_query(FALSE, NULL, load_data_query, &end, NULL, NULL);
4839 *end= 0;4877 *end= 0;
4878 memcpy(end+1, (char *) &thd->db_length, sizeof(size_t));
4840 thd->set_query(load_data_query, (uint) (end - load_data_query));4879 thd->set_query(load_data_query, (uint) (end - load_data_query));
48414880
4842 if (sql_ex.opt_flags & REPLACE_FLAG)4881 if (sql_ex.opt_flags & REPLACE_FLAG)
48434882
=== modified file 'Percona-Server/sql/signal_handler.cc'
--- Percona-Server/sql/signal_handler.cc 2012-03-06 12:30:30 +0000
+++ Percona-Server/sql/signal_handler.cc 2012-08-15 14:13:58 +0000
@@ -99,7 +99,9 @@
99 my_safe_printf_stderr("%s",99 my_safe_printf_stderr("%s",
100 "We will try our best to scrape up some info that will hopefully help\n"100 "We will try our best to scrape up some info that will hopefully help\n"
101 "diagnose the problem, but since we have already crashed, \n"101 "diagnose the problem, but since we have already crashed, \n"
102 "something is definitely wrong and this may fail.\n\n");102 "something is definitely wrong and this may fail.\n"
103 "Please help us make Percona Server better by reporting any\n"
104 "bugs at http://bugs.percona.com/\n\n");
103105
104 my_safe_printf_stderr("key_buffer_size=%lu\n",106 my_safe_printf_stderr("key_buffer_size=%lu\n",
105 (ulong) dflt_key_cache->key_cache_mem_size);107 (ulong) dflt_key_cache->key_cache_mem_size);
@@ -192,9 +194,9 @@
192 my_safe_printf_stderr("Status: %s\n\n", kreason);194 my_safe_printf_stderr("Status: %s\n\n", kreason);
193 }195 }
194 my_safe_printf_stderr("%s",196 my_safe_printf_stderr("%s",
195 "The manual page at "197 "You may download the Percona Server operations manual by visiting\n"
196 "http://dev.mysql.com/doc/mysql/en/crashing.html contains\n"198 "http://www.percona.com/software/percona-server/. You may find information\n"
197 "information that should help you find out what is causing the crash.\n");199 "in the manual which will help you identify the cause of the crash.\n");
198200
199#endif /* HAVE_STACKTRACE */201#endif /* HAVE_STACKTRACE */
200202
201203
=== modified file 'Percona-Server/sql/sql_show.cc'
--- Percona-Server/sql/sql_show.cc 2012-05-09 04:14:12 +0000
+++ Percona-Server/sql/sql_show.cc 2012-08-15 14:13:58 +0000
@@ -3694,8 +3694,9 @@
3694 DBUG_RETURN(schema_table_store_record(thd, table));3694 DBUG_RETURN(schema_table_store_record(thd, table));
36953695
3696 //engine3696 //engine
3697 handler *handle= tmp_table->file;3697 handler *file= tmp_table->file;
3698 char *engineType = (char *)(handle ? handle->table_type() : "UNKNOWN");3698 // Assume that invoking handler::table_type() on a shared handler is safe
3699 const char *engineType = (file) ? file->table_type() : "UNKNOWN";
3699 table->field[3]->store(engineType, strlen(engineType), cs);3700 table->field[3]->store(engineType, strlen(engineType), cs);
37003701
3701 //name3702 //name
@@ -3706,12 +3707,15 @@
3706 }3707 }
37073708
3708 // file stats3709 // file stats
3709 handler *file= tmp_table->file;
3710
3711 if (file) {3710 if (file) {
37123711
3713 MYSQL_TIME time;3712 MYSQL_TIME time;
37143713
3714 /* We have only one handler object for a temp table globally and it might
3715 be in use by other thread. Do not trash it by invoking handler methods on
3716 it but rather clone it. */
3717 file = file->clone(tmp_table->s->normalized_path.str, thd->mem_root);
3718
3715 /**3719 /**
3716 TODO: InnoDB stat(file) checks file on short names within data dictionary3720 TODO: InnoDB stat(file) checks file on short names within data dictionary
3717 rather than using full path, because of that, temp files created in3721 rather than using full path, because of that, temp files created in
@@ -3741,6 +3745,8 @@
3741 table->field[10]->store_time(&time, MYSQL_TIMESTAMP_DATETIME);3745 table->field[10]->store_time(&time, MYSQL_TIMESTAMP_DATETIME);
3742 table->field[10]->set_notnull();3746 table->field[10]->set_notnull();
3743 }3747 }
3748
3749 file->close();
3744 }3750 }
37453751
3746 DBUG_RETURN(schema_table_store_record(thd, table));3752 DBUG_RETURN(schema_table_store_record(thd, table));
37473753
=== modified file 'Percona-Server/storage/innodb_plugin/Makefile.am'
--- Percona-Server/storage/innodb_plugin/Makefile.am 2012-06-14 09:16:03 +0000
+++ Percona-Server/storage/innodb_plugin/Makefile.am 2012-08-15 14:13:58 +0000
@@ -227,7 +227,6 @@
227 include/ut0vec.h \227 include/ut0vec.h \
228 include/ut0vec.ic \228 include/ut0vec.ic \
229 include/ut0wqueue.h \229 include/ut0wqueue.h \
230 handler/innodb_patch_info.h \
231 mem/mem0dbg.c230 mem/mem0dbg.c
232231
233EXTRA_LIBRARIES= libinnobase.a232EXTRA_LIBRARIES= libinnobase.a
234233
=== modified file 'Percona-Server/storage/innodb_plugin/buf/buf0lru.c'
--- Percona-Server/storage/innodb_plugin/buf/buf0lru.c 2011-11-24 16:33:30 +0000
+++ Percona-Server/storage/innodb_plugin/buf/buf0lru.c 2012-08-15 14:13:58 +0000
@@ -48,6 +48,7 @@
48#include "page0zip.h"48#include "page0zip.h"
49#include "log0recv.h"49#include "log0recv.h"
50#include "srv0srv.h"50#include "srv0srv.h"
51#include "srv0start.h"
5152
52/** The number of blocks from the LRU_old pointer onward, including53/** The number of blocks from the LRU_old pointer onward, including
53the block pointed to, must be buf_LRU_old_ratio/BUF_LRU_OLD_RATIO_DIV54the block pointed to, must be buf_LRU_old_ratio/BUF_LRU_OLD_RATIO_DIV
@@ -2098,6 +2099,7 @@
2098/********************************************************************//**2099/********************************************************************//**
2099Dump the LRU page list to the specific file. */2100Dump the LRU page list to the specific file. */
2100#define LRU_DUMP_FILE "ib_lru_dump"2101#define LRU_DUMP_FILE "ib_lru_dump"
2102#define LRU_DUMP_TEMP_FILE "ib_lru_dump.tmp"
21012103
2102UNIV_INTERN2104UNIV_INTERN
2103ibool2105ibool
@@ -2132,7 +2134,7 @@
2132 goto end;2134 goto end;
2133 }2135 }
21342136
2135 dump_file = os_file_create(LRU_DUMP_FILE, OS_FILE_OVERWRITE,2137 dump_file = os_file_create(LRU_DUMP_TEMP_FILE, OS_FILE_OVERWRITE,
2136 OS_FILE_NORMAL, OS_DATA_FILE, &success);2138 OS_FILE_NORMAL, OS_DATA_FILE, &success);
2137 if (!success) {2139 if (!success) {
2138 os_file_get_last_error(TRUE);2140 os_file_get_last_error(TRUE);
@@ -2156,6 +2158,13 @@
2156 offset++;2158 offset++;
21572159
2158 if (offset == UNIV_PAGE_SIZE/4) {2160 if (offset == UNIV_PAGE_SIZE/4) {
2161 if (srv_shutdown_state != SRV_SHUTDOWN_NONE) {
2162 success = 0;
2163 fprintf(stderr,
2164 " InnoDB: stopped dumping lru pages"
2165 " because of server shutdown.\n");
2166 goto end;
2167 }
2159 success = os_file_write(LRU_DUMP_FILE, dump_file, buffer,2168 success = os_file_write(LRU_DUMP_FILE, dump_file, buffer,
2160 (buffers << UNIV_PAGE_SIZE_SHIFT) & 0xFFFFFFFFUL,2169 (buffers << UNIV_PAGE_SIZE_SHIFT) & 0xFFFFFFFFUL,
2161 (buffers >> (32 - UNIV_PAGE_SIZE_SHIFT)),2170 (buffers >> (32 - UNIV_PAGE_SIZE_SHIFT)),
@@ -2194,8 +2203,16 @@
21942203
2195 ret = TRUE;2204 ret = TRUE;
2196end:2205end:
2197 if (dump_file != -1)2206 if (dump_file != -1) {
2207 if (success) {
2208 success = os_file_flush(dump_file, TRUE);
2209 }
2198 os_file_close(dump_file);2210 os_file_close(dump_file);
2211 }
2212 if (success) {
2213 success = os_file_rename(LRU_DUMP_TEMP_FILE,
2214 LRU_DUMP_FILE);
2215 }
2199 if (buffer_base)2216 if (buffer_base)
2200 ut_free(buffer_base);2217 ut_free(buffer_base);
22012218
@@ -2241,6 +2258,7 @@
2241 dump_record_t* records = NULL;2258 dump_record_t* records = NULL;
2242 ulint size;2259 ulint size;
2243 ulint size_high;2260 ulint size_high;
2261 ulint recsize = sizeof(dump_record_t);
2244 ulint length;2262 ulint length;
22452263
2246 dump_file = os_file_create_simple_no_error_handling(2264 dump_file = os_file_create_simple_no_error_handling(
@@ -2248,7 +2266,15 @@
2248 if (!success || !os_file_get_size(dump_file, &size, &size_high)) {2266 if (!success || !os_file_get_size(dump_file, &size, &size_high)) {
2249 os_file_get_last_error(TRUE);2267 os_file_get_last_error(TRUE);
2250 fprintf(stderr,2268 fprintf(stderr,
2251 " InnoDB: cannot open %s\n", LRU_DUMP_FILE);2269 " InnoDB: cannot open %s,"
2270 " buffer pool preload not done\n",
2271 LRU_DUMP_FILE);
2272 goto end;
2273 }
2274
2275 if (size == 0 || size_high > 0 || size % recsize) {
2276 fprintf(stderr, " InnoDB: broken LRU dump file,"
2277 " buffer pool preload not done\n");
2252 goto end;2278 goto end;
2253 }2279 }
22542280
@@ -2332,6 +2358,14 @@
2332 if (offset % 16 == 15) {2358 if (offset % 16 == 15) {
2333 os_aio_simulated_wake_handler_threads();2359 os_aio_simulated_wake_handler_threads();
2334 buf_flush_free_margin(FALSE);2360 buf_flush_free_margin(FALSE);
2361 /* skip loading of the rest of the file if we are
2362 terminating anyway*/
2363 if (srv_shutdown_state != SRV_SHUTDOWN_NONE) {
2364 fprintf(stderr,
2365 " InnoDB: stopped loading LRU pages"
2366 " because of server shutdown.\n");
2367 break;
2368 }
2335 }2369 }
23362370
2337 zip_size = fil_space_get_zip_size(space_id);2371 zip_size = fil_space_get_zip_size(space_id);
23382372
=== modified file 'Percona-Server/storage/innodb_plugin/dict/dict0dict.c'
--- Percona-Server/storage/innodb_plugin/dict/dict0dict.c 2012-05-09 04:14:12 +0000
+++ Percona-Server/storage/innodb_plugin/dict/dict0dict.c 2012-08-15 14:13:58 +0000
@@ -4622,12 +4622,6 @@
4622 }4622 }
4623 btr_pcur_close(&pcur);4623 btr_pcur_close(&pcur);
4624 mtr_commit(&mtr);4624 mtr_commit(&mtr);
4625
4626 if (rests) {
4627 fprintf(stderr, "InnoDB: Warning: failed to store %lu stats entries"
4628 " of %s/%s to SYS_STATS system table.\n",
4629 rests, index->table_name, index->name);
4630 }
4631}4625}
4632/*===========================================*/4626/*===========================================*/
46334627
46344628
=== modified file 'Percona-Server/storage/innodb_plugin/fil/fil0fil.c'
--- Percona-Server/storage/innodb_plugin/fil/fil0fil.c 2012-05-09 04:14:12 +0000
+++ Percona-Server/storage/innodb_plugin/fil/fil0fil.c 2012-08-15 14:13:58 +0000
@@ -3375,6 +3375,7 @@
3375 for (offset = 0; offset < free_limit_bytes;3375 for (offset = 0; offset < free_limit_bytes;
3376 offset += zip_size ? zip_size : UNIV_PAGE_SIZE) {3376 offset += zip_size ? zip_size : UNIV_PAGE_SIZE) {
3377 ibool page_is_corrupt;3377 ibool page_is_corrupt;
3378 ibool is_descr_page = FALSE;
33783379
3379 success = os_file_read(file, page,3380 success = os_file_read(file, page,
3380 (ulint)(offset & 0xFFFFFFFFUL),3381 (ulint)(offset & 0xFFFFFFFFUL),
@@ -3413,6 +3414,7 @@
34133414
3414 /* store as descr page */3415 /* store as descr page */
3415 memcpy(descr_page, page, (zip_size ? zip_size : UNIV_PAGE_SIZE));3416 memcpy(descr_page, page, (zip_size ? zip_size : UNIV_PAGE_SIZE));
3417 is_descr_page = TRUE;
34163418
3417 } else if (descr_is_corrupt) {3419 } else if (descr_is_corrupt) {
3418 /* unknown state of the page */3420 /* unknown state of the page */
@@ -3489,7 +3491,8 @@
3489 }3491 }
3490 }3492 }
34913493
3492 if (fil_page_get_type(page) == FIL_PAGE_INDEX) {3494 if (fil_page_get_type(page) ==
3495 FIL_PAGE_INDEX && !is_descr_page) {
3493 dulint tmp = mach_read_from_8(page + (PAGE_HEADER + PAGE_INDEX_ID));3496 dulint tmp = mach_read_from_8(page + (PAGE_HEADER + PAGE_INDEX_ID));
34943497
3495 for (i = 0; i < n_index; i++) {3498 for (i = 0; i < n_index; i++) {
34963499
=== modified file 'Percona-Server/storage/innodb_plugin/handler/ha_innodb.cc'
--- Percona-Server/storage/innodb_plugin/handler/ha_innodb.cc 2012-06-14 09:16:03 +0000
+++ Percona-Server/storage/innodb_plugin/handler/ha_innodb.cc 2012-08-15 14:13:58 +0000
@@ -11934,6 +11934,13 @@
11934 "Track the redo log for changed pages and output a changed page bitmap",11934 "Track the redo log for changed pages and output a changed page bitmap",
11935 NULL, NULL, FALSE);11935 NULL, NULL, FALSE);
1193611936
11937static MYSQL_SYSVAR_ULONGLONG(changed_pages_limit, srv_changed_pages_limit,
11938 PLUGIN_VAR_RQCMDARG,
11939 "The maximum number of rows for "
11940 "INFORMATION_SCHEMA.INNODB_CHANGED_PAGES table, "
11941 "0 - unlimited",
11942 NULL, NULL, 1000000, 0, ~0ULL, 0);
11943
11937#if defined UNIV_DEBUG || defined UNIV_IBUF_DEBUG11944#if defined UNIV_DEBUG || defined UNIV_IBUF_DEBUG
11938static MYSQL_SYSVAR_UINT(change_buffering_debug, ibuf_debug,11945static MYSQL_SYSVAR_UINT(change_buffering_debug, ibuf_debug,
11939 PLUGIN_VAR_RQCMDARG,11946 PLUGIN_VAR_RQCMDARG,
@@ -12181,6 +12188,7 @@
12181 MYSQL_SYSVAR(use_sys_malloc),12188 MYSQL_SYSVAR(use_sys_malloc),
12182 MYSQL_SYSVAR(change_buffering),12189 MYSQL_SYSVAR(change_buffering),
12183 MYSQL_SYSVAR(track_changed_pages),12190 MYSQL_SYSVAR(track_changed_pages),
12191 MYSQL_SYSVAR(changed_pages_limit),
12184#if defined UNIV_DEBUG || defined UNIV_IBUF_DEBUG12192#if defined UNIV_DEBUG || defined UNIV_IBUF_DEBUG
12185 MYSQL_SYSVAR(change_buffering_debug),12193 MYSQL_SYSVAR(change_buffering_debug),
12186#endif /* UNIV_DEBUG || UNIV_IBUF_DEBUG */12194#endif /* UNIV_DEBUG || UNIV_IBUF_DEBUG */
@@ -12231,7 +12239,7 @@
12231i_s_innodb_sys_tables,12239i_s_innodb_sys_tables,
12232i_s_innodb_sys_indexes,12240i_s_innodb_sys_indexes,
12233i_s_innodb_sys_stats,12241i_s_innodb_sys_stats,
12234i_s_innodb_patches12242i_s_innodb_changed_pages
12235mysql_declare_plugin_end;12243mysql_declare_plugin_end;
1223612244
12237/** @brief Initialize the default value of innodb_commit_concurrency.12245/** @brief Initialize the default value of innodb_commit_concurrency.
1223812246
=== modified file 'Percona-Server/storage/innodb_plugin/handler/handler0alter.cc'
--- Percona-Server/storage/innodb_plugin/handler/handler0alter.cc 2012-05-09 04:14:12 +0000
+++ Percona-Server/storage/innodb_plugin/handler/handler0alter.cc 2012-08-15 14:13:58 +0000
@@ -823,6 +823,8 @@
823 innodb_table, indexed_table,823 innodb_table, indexed_table,
824 index, num_of_idx, table);824 index, num_of_idx, table);
825825
826 DBUG_EXECUTE_IF("crash_innodb_add_index_after", DBUG_SUICIDE(););
827
826error_handling:828error_handling:
827 /* After an error, remove all those index definitions from the829 /* After an error, remove all those index definitions from the
828 dictionary which were defined. */830 dictionary which were defined. */
829831
=== modified file 'Percona-Server/storage/innodb_plugin/handler/i_s.cc'
--- Percona-Server/storage/innodb_plugin/handler/i_s.cc 2011-11-24 16:33:30 +0000
+++ Percona-Server/storage/innodb_plugin/handler/i_s.cc 2012-08-15 14:13:58 +0000
@@ -22,8 +22,15 @@
2222
23Created July 18, 2007 Vasil Dimov23Created July 18, 2007 Vasil Dimov
24*******************************************************/24*******************************************************/
25#ifndef MYSQL_SERVER
26#define MYSQL_SERVER /* For Item_* classes */
27#include <mysql_priv.h>
28/* Prevent influence of this definition to other headers */
29#undef MYSQL_SERVER
30#else
31#include <mysql_priv.h>
32#endif //MYSQL_SERVER
2533
26#include <mysql_priv.h>
27#include <mysqld_error.h>34#include <mysqld_error.h>
2835
29#include <m_ctype.h>36#include <m_ctype.h>
@@ -32,7 +39,6 @@
32#include <mysys_err.h>39#include <mysys_err.h>
33#include <my_sys.h>40#include <my_sys.h>
34#include "i_s.h"41#include "i_s.h"
35#include "innodb_patch_info.h"
36#include <mysql/plugin.h>42#include <mysql/plugin.h>
3743
38extern "C" {44extern "C" {
@@ -48,6 +54,7 @@
48#include "dict0dict.h" /* for dict_sys */54#include "dict0dict.h" /* for dict_sys */
49#include "btr0pcur.h"55#include "btr0pcur.h"
50#include "buf0lru.h" /* for XTRA_LRU_[DUMP/RESTORE] */56#include "buf0lru.h" /* for XTRA_LRU_[DUMP/RESTORE] */
57#include "log0online.h"
51}58}
5259
53static const char plugin_author[] = "Innobase Oy";60static const char plugin_author[] = "Innobase Oy";
@@ -224,168 +231,11 @@
224 return(ret);231 return(ret);
225}232}
226233
227/* Fields of the dynamic table INFORMATION_SCHEMA.innodb_patches */
228static ST_FIELD_INFO innodb_patches_fields_info[] =
229{
230#define IDX_PATCH_NAME 0
231 {STRUCT_FLD(field_name, "name"),
232 STRUCT_FLD(field_length, 255),
233 STRUCT_FLD(field_type, MYSQL_TYPE_STRING),
234 STRUCT_FLD(value, 0),
235 STRUCT_FLD(field_flags, 0),
236 STRUCT_FLD(old_name, ""),
237 STRUCT_FLD(open_method, SKIP_OPEN_TABLE)},
238
239#define IDX_PATCH_DESCR 1
240 {STRUCT_FLD(field_name, "description"),
241 STRUCT_FLD(field_length, 255),
242 STRUCT_FLD(field_type, MYSQL_TYPE_STRING),
243 STRUCT_FLD(value, 0),
244 STRUCT_FLD(field_flags, 0),
245 STRUCT_FLD(old_name, ""),
246 STRUCT_FLD(open_method, SKIP_OPEN_TABLE)},
247
248#define IDX_PATCH_COMMENT 2
249 {STRUCT_FLD(field_name, "comment"),
250 STRUCT_FLD(field_length, 100),
251 STRUCT_FLD(field_type, MYSQL_TYPE_STRING),
252 STRUCT_FLD(value, 0),
253 STRUCT_FLD(field_flags, 0),
254 STRUCT_FLD(old_name, ""),
255 STRUCT_FLD(open_method, SKIP_OPEN_TABLE)},
256
257#define IDX_PATCH_LINK 3
258 {STRUCT_FLD(field_name, "link"),
259 STRUCT_FLD(field_length, 255),
260 STRUCT_FLD(field_type, MYSQL_TYPE_STRING),
261 STRUCT_FLD(value, 0),
262 STRUCT_FLD(field_flags, 0),
263 STRUCT_FLD(old_name, ""),
264 STRUCT_FLD(open_method, SKIP_OPEN_TABLE)},
265
266 END_OF_ST_FIELD_INFO
267};
268
269static struct st_mysql_information_schema i_s_info =234static struct st_mysql_information_schema i_s_info =
270{235{
271 MYSQL_INFORMATION_SCHEMA_INTERFACE_VERSION236 MYSQL_INFORMATION_SCHEMA_INTERFACE_VERSION
272};237};
273238
274/***********************************************************************
275Fill the dynamic table information_schema.innodb_patches */
276static
277int
278innodb_patches_fill(
279/*=============*/
280 /* out: 0 on success, 1 on failure */
281 THD* thd, /* in: thread */
282 TABLE_LIST* tables, /* in/out: tables to fill */
283 COND* cond) /* in: condition (ignored) */
284{
285 TABLE* table = (TABLE *) tables->table;
286 int status = 0;
287 int i;
288 Field** fields;
289
290
291 DBUG_ENTER("innodb_patches_fill");
292 fields = table->field;
293
294 /* deny access to non-superusers */
295 if (check_global_access(thd, PROCESS_ACL)) {
296
297 DBUG_RETURN(0);
298 }
299
300 RETURN_IF_INNODB_NOT_STARTED(tables->schema_table_name);
301
302 for (i = 0; innodb_enhancements[i].file; i++) {
303
304 field_store_string(fields[0],innodb_enhancements[i].file);
305 field_store_string(fields[1],innodb_enhancements[i].name);
306 field_store_string(fields[2],innodb_enhancements[i].comment);
307 field_store_string(fields[3],innodb_enhancements[i].link);
308
309 if (schema_table_store_record(thd, table)) {
310 status = 1;
311 break;
312 }
313
314 }
315
316
317 DBUG_RETURN(status);
318}
319
320/***********************************************************************
321Bind the dynamic table information_schema.innodb_patches. */
322static
323int
324innodb_patches_init(
325/*=========*/
326 /* out: 0 on success */
327 void* p) /* in/out: table schema object */
328{
329 DBUG_ENTER("innodb_patches_init");
330 ST_SCHEMA_TABLE* schema = (ST_SCHEMA_TABLE*) p;
331
332 schema->fields_info = innodb_patches_fields_info;
333 schema->fill_table = innodb_patches_fill;
334
335 DBUG_RETURN(0);
336}
337
338
339UNIV_INTERN struct st_mysql_plugin i_s_innodb_patches =
340{
341 /* the plugin type (a MYSQL_XXX_PLUGIN value) */
342 /* int */
343 STRUCT_FLD(type, MYSQL_INFORMATION_SCHEMA_PLUGIN),
344
345 /* pointer to type-specific plugin descriptor */
346 /* void* */
347 STRUCT_FLD(info, &i_s_info),
348
349 /* plugin name */
350 /* const char* */
351 STRUCT_FLD(name, "XTRADB_ENHANCEMENTS"),
352
353 /* plugin author (for SHOW PLUGINS) */
354 /* const char* */
355 STRUCT_FLD(author, "Percona"),
356
357 /* general descriptive text (for SHOW PLUGINS) */
358 /* const char* */
359 STRUCT_FLD(descr, "Enhancements applied to InnoDB plugin"),
360
361 /* the plugin license (PLUGIN_LICENSE_XXX) */
362 /* int */
363 STRUCT_FLD(license, PLUGIN_LICENSE_GPL),
364
365 /* the function to invoke when plugin is loaded */
366 /* int (*)(void*); */
367 STRUCT_FLD(init, innodb_patches_init),
368
369 /* the function to invoke when plugin is unloaded */
370 /* int (*)(void*); */
371 STRUCT_FLD(deinit, i_s_common_deinit),
372
373 /* plugin version (for SHOW PLUGINS) */
374 /* unsigned int */
375 STRUCT_FLD(version, INNODB_VERSION_SHORT),
376
377 /* struct st_mysql_show_var* */
378 STRUCT_FLD(status_vars, NULL),
379
380 /* struct st_mysql_sys_var** */
381 STRUCT_FLD(system_vars, NULL),
382
383 /* reserved for dependency checking */
384 /* void* */
385 STRUCT_FLD(__reserved1, NULL)
386};
387
388
389static ST_FIELD_INFO i_s_innodb_buffer_pool_pages_fields_info[] =239static ST_FIELD_INFO i_s_innodb_buffer_pool_pages_fields_info[] =
390{240{
391 {STRUCT_FLD(field_name, "page_type"),241 {STRUCT_FLD(field_name, "page_type"),
@@ -1956,6 +1806,8 @@
19561806
1957 DBUG_ENTER("i_s_cmp_fill_low");1807 DBUG_ENTER("i_s_cmp_fill_low");
19581808
1809 RETURN_IF_INNODB_NOT_STARTED(tables->schema_table_name);
1810
1959 /* deny access to non-superusers */1811 /* deny access to non-superusers */
1960 if (check_global_access(thd, PROCESS_ACL)) {1812 if (check_global_access(thd, PROCESS_ACL)) {
19611813
@@ -2224,6 +2076,8 @@
22242076
2225 DBUG_ENTER("i_s_cmpmem_fill_low");2077 DBUG_ENTER("i_s_cmpmem_fill_low");
22262078
2079 RETURN_IF_INNODB_NOT_STARTED(tables->schema_table_name);
2080
2227 /* deny access to non-superusers */2081 /* deny access to non-superusers */
2228 if (check_global_access(thd, PROCESS_ACL)) {2082 if (check_global_access(thd, PROCESS_ACL)) {
22292083
@@ -2512,6 +2366,8 @@
25122366
2513 DBUG_ENTER("i_s_innodb_rseg_fill");2367 DBUG_ENTER("i_s_innodb_rseg_fill");
25142368
2369 RETURN_IF_INNODB_NOT_STARTED(tables->schema_table_name);
2370
2515 /* deny access to non-superusers */2371 /* deny access to non-superusers */
2516 if (check_global_access(thd, PROCESS_ACL)) {2372 if (check_global_access(thd, PROCESS_ACL)) {
25172373
@@ -2645,6 +2501,8 @@
26452501
2646 DBUG_ENTER("i_s_innodb_admin_command_fill");2502 DBUG_ENTER("i_s_innodb_admin_command_fill");
26472503
2504 RETURN_IF_INNODB_NOT_STARTED(tables->schema_table_name);
2505
2648 /* deny access to non-superusers */2506 /* deny access to non-superusers */
2649 if (check_global_access(thd, PROCESS_ACL)) {2507 if (check_global_access(thd, PROCESS_ACL)) {
2650 DBUG_RETURN(0);2508 DBUG_RETURN(0);
@@ -2902,6 +2760,8 @@
29022760
2903 DBUG_ENTER("i_s_innodb_table_stats_fill");2761 DBUG_ENTER("i_s_innodb_table_stats_fill");
29042762
2763 RETURN_IF_INNODB_NOT_STARTED(tables->schema_table_name);
2764
2905 /* deny access to non-superusers */2765 /* deny access to non-superusers */
2906 if (check_global_access(thd, PROCESS_ACL)) {2766 if (check_global_access(thd, PROCESS_ACL)) {
2907 DBUG_RETURN(0);2767 DBUG_RETURN(0);
@@ -2965,6 +2825,8 @@
29652825
2966 DBUG_ENTER("i_s_innodb_index_stats_fill");2826 DBUG_ENTER("i_s_innodb_index_stats_fill");
29672827
2828 RETURN_IF_INNODB_NOT_STARTED(tables->schema_table_name);
2829
2968 /* deny access to non-superusers */2830 /* deny access to non-superusers */
2969 if (check_global_access(thd, PROCESS_ACL)) {2831 if (check_global_access(thd, PROCESS_ACL)) {
2970 DBUG_RETURN(0);2832 DBUG_RETURN(0);
@@ -3612,6 +3474,8 @@
36123474
3613 DBUG_ENTER("i_s_innodb_schema_table_fill");3475 DBUG_ENTER("i_s_innodb_schema_table_fill");
36143476
3477 RETURN_IF_INNODB_NOT_STARTED(tables->schema_table_name);
3478
3615 /* deny access to non-superusers */3479 /* deny access to non-superusers */
3616 if (check_global_access(thd, PROCESS_ACL)) {3480 if (check_global_access(thd, PROCESS_ACL)) {
3617 DBUG_RETURN(0);3481 DBUG_RETURN(0);
@@ -3783,3 +3647,288 @@
3783 STRUCT_FLD(system_vars, NULL),3647 STRUCT_FLD(system_vars, NULL),
3784 STRUCT_FLD(__reserved1, NULL)3648 STRUCT_FLD(__reserved1, NULL)
3785};3649};
3650
3651static ST_FIELD_INFO i_s_innodb_changed_pages_info[] =
3652{
3653 {STRUCT_FLD(field_name, "space_id"),
3654 STRUCT_FLD(field_length, MY_INT32_NUM_DECIMAL_DIGITS),
3655 STRUCT_FLD(field_type, MYSQL_TYPE_LONG),
3656 STRUCT_FLD(value, 0),
3657 STRUCT_FLD(field_flags, MY_I_S_UNSIGNED),
3658 STRUCT_FLD(old_name, ""),
3659 STRUCT_FLD(open_method, SKIP_OPEN_TABLE)},
3660
3661 {STRUCT_FLD(field_name, "page_id"),
3662 STRUCT_FLD(field_length, MY_INT32_NUM_DECIMAL_DIGITS),
3663 STRUCT_FLD(field_type, MYSQL_TYPE_LONG),
3664 STRUCT_FLD(value, 0),
3665 STRUCT_FLD(field_flags, MY_I_S_UNSIGNED),
3666 STRUCT_FLD(old_name, ""),
3667 STRUCT_FLD(open_method, SKIP_OPEN_TABLE)},
3668
3669 {STRUCT_FLD(field_name, "start_lsn"),
3670 STRUCT_FLD(field_length, MY_INT64_NUM_DECIMAL_DIGITS),
3671 STRUCT_FLD(field_type, MYSQL_TYPE_LONGLONG),
3672 STRUCT_FLD(value, 0),
3673 STRUCT_FLD(field_flags, MY_I_S_UNSIGNED),
3674 STRUCT_FLD(old_name, ""),
3675 STRUCT_FLD(open_method, SKIP_OPEN_TABLE)},
3676
3677 {STRUCT_FLD(field_name, "end_lsn"),
3678 STRUCT_FLD(field_length, MY_INT64_NUM_DECIMAL_DIGITS),
3679 STRUCT_FLD(field_type, MYSQL_TYPE_LONGLONG),
3680 STRUCT_FLD(value, 0),
3681 STRUCT_FLD(field_flags, MY_I_S_UNSIGNED),
3682 STRUCT_FLD(old_name, ""),
3683 STRUCT_FLD(open_method, SKIP_OPEN_TABLE)},
3684
3685 END_OF_ST_FIELD_INFO
3686};
3687
3688/***********************************************************************
3689 This function parses condition and gets upper bounds for start and end LSN's
3690 if condition corresponds to certain pattern.
3691
3692 We can't know right position to avoid scanning bitmap files from the beginning
3693 to the lower bound. But we can stop scanning bitmap files if we reach upper bound.
3694
3695 It's expected the most used queries will be like the following:
3696
3697 SELECT * FROM INNODB_CHANGED_PAGES WHERE START_LSN > num1 AND start_lsn < num2;
3698
3699 That's why the pattern is:
3700
3701 pattern: comp | and_comp;
3702 comp: lsn < int_num | lsn <= int_num | int_num > lsn | int_num >= lsn;
3703 lsn: start_lsn | end_lsn;
3704 and_comp: some_expression AND some_expression | some_expression AND and_comp;
3705 some_expression: comp | any_other_expression;
3706
3707 Suppose the condition is start_lsn < 100, this means we have to read all
3708 blocks with start_lsn < 100. Which is equivalent to reading all the blocks
3709 with end_lsn <= 99, or just end_lsn < 100. That's why it's enough to find
3710 maximum lsn value, doesn't matter if this is start or end lsn and compare
3711 it with "start_lsn" field.
3712
3713 Example:
3714
3715 SELECT * FROM INNODB_CHANGED_PAGES
3716 WHERE
3717 start_lsn > 10 AND
3718 end_lsn <= 1111 AND
3719 555 > end_lsn AND
3720 page_id = 100;
3721
3722 max_lsn will be set to 555.
3723*/
3724static
3725void
3726limit_lsn_range_from_condition(
3727/*===========================*/
3728 TABLE* table, /*!<in: table */
3729 COND* cond, /*!<in: condition */
3730 ib_uint64_t* max_lsn) /*!<in/out: maximum LSN
3731 (must be initialized with maximum
3732 available value) */
3733{
3734 if (cond->type() != Item::COND_ITEM &&
3735 cond->type() != Item::FUNC_ITEM)
3736 return;
3737
3738 switch (((Item_func*) cond)->functype())
3739 {
3740 case Item_func::COND_AND_FUNC:
3741 {
3742 List_iterator<Item> li(*((Item_cond*) cond)->
3743 argument_list());
3744 Item *item;
3745 while ((item= li++))
3746 limit_lsn_range_from_condition(table,
3747 item,
3748 max_lsn);
3749 break;
3750 }
3751 case Item_func::LT_FUNC:
3752 case Item_func::LE_FUNC:
3753 case Item_func::GT_FUNC:
3754 case Item_func::GE_FUNC:
3755 {
3756 Item *left;
3757 Item *right;
3758 Item_field *item_field;
3759 ib_uint64_t tmp_result;
3760
3761 /*
3762 a <= b equals to b >= a that's why we just exchange
3763 "left" and "right" in the case of ">" or ">="
3764 function
3765 */
3766 if (((Item_func*) cond)->functype() ==
3767 Item_func::LT_FUNC ||
3768 ((Item_func*) cond)->functype() ==
3769 Item_func::LE_FUNC)
3770 {
3771 left = ((Item_func*) cond)->arguments()[0];
3772 right = ((Item_func*) cond)->arguments()[1];
3773 } else {
3774 left = ((Item_func*) cond)->arguments()[1];
3775 right = ((Item_func*) cond)->arguments()[0];
3776 }
3777
3778 if (!left || !right)
3779 return;
3780 if (left->type() != Item::FIELD_ITEM)
3781 return;
3782 if (right->type() != Item::INT_ITEM)
3783 return;
3784
3785 item_field = (Item_field*)left;
3786
3787 if (/* START_LSN */
3788 table->field[2] != item_field->field &&
3789 /* END_LSN */
3790 table->field[3] != item_field->field)
3791 {
3792 return;
3793 }
3794
3795 /* Check if the current field belongs to our table */
3796 if (table != item_field->field->table)
3797 return;
3798
3799 tmp_result = right->val_int();
3800 if (tmp_result < *max_lsn)
3801 *max_lsn = tmp_result;
3802
3803 break;
3804 }
3805 default:;
3806 }
3807
3808}
3809
3810/***********************************************************************
3811Fill the dynamic table information_schema.innodb_changed_pages.
3812@return 0 on success, 1 on failure */
3813static
3814int
3815i_s_innodb_changed_pages_fill(
3816/*==========================*/
3817 THD* thd, /*!<in: thread */
3818 TABLE_LIST* tables, /*!<in/out: tables to fill */
3819 COND* cond) /*!<in: condition */
3820{
3821 TABLE* table = (TABLE *) tables->table;
3822 log_bitmap_iterator_t i;
3823 ib_uint64_t output_rows_num = 0UL;
3824 ib_uint64_t max_lsn = ~0ULL;
3825
3826 if (!srv_track_changed_pages)
3827 return 0;
3828
3829 if (!log_online_bitmap_iterator_init(&i))
3830 return 1;
3831
3832 if (cond)
3833 limit_lsn_range_from_condition(table, cond, &max_lsn);
3834
3835 while(log_online_bitmap_iterator_next(&i) &&
3836 (!srv_changed_pages_limit ||
3837 output_rows_num < srv_changed_pages_limit) &&
3838 /*
3839 There is no need to compare both start LSN and end LSN fields
3840 with maximum value. It's enough to compare only start LSN.
3841 Example:
3842
3843 max_lsn = 100
3844 \\\\\\\\\\\\\\\\\\\\\\\\\|\\\\\\\\ - Query 1
3845 I------I I-------I I-------------I I----I
3846 ////////////////// | - Query 2
3847 1 2 3 4
3848
3849 Query 1:
3850 SELECT * FROM INNODB_CHANGED_PAGES WHERE start_lsn < 100
3851 will select 1,2,3 bitmaps
3852 Query 2:
3853 SELECT * FROM INNODB_CHANGED_PAGES WHERE end_lsn < 100
3854 will select 1,2 bitmaps
3855
3856 The condition start_lsn <= 100 will be false after reading
3857 1,2,3 bitmaps which suits for both cases.
3858 */
3859 LOG_BITMAP_ITERATOR_START_LSN(i) <= max_lsn)
3860 {
3861 if (!LOG_BITMAP_ITERATOR_PAGE_CHANGED(i))
3862 continue;
3863
3864 /* SPACE_ID */
3865 table->field[0]->store(
3866 LOG_BITMAP_ITERATOR_SPACE_ID(i));
3867 /* PAGE_ID */
3868 table->field[1]->store(
3869 LOG_BITMAP_ITERATOR_PAGE_NUM(i));
3870 /* START_LSN */
3871 table->field[2]->store(
3872 LOG_BITMAP_ITERATOR_START_LSN(i));
3873 /* END_LSN */
3874 table->field[3]->store(
3875 LOG_BITMAP_ITERATOR_END_LSN(i));
3876
3877 /*
3878 I_S tables are in-memory tables. If bitmap file is big enough
3879 a lot of memory can be used to store the table. But the size
3880 of used memory can be diminished if we store only data which
3881 corresponds to some conditions (in WHERE sql clause). Here
3882 conditions are checked for the field values stored above.
3883
3884 Conditions are checked twice. The first is here (during table
3885 generation) and the second during query execution. Maybe it
3886 makes sense to use some flag in THD object to avoid double
3887 checking.
3888 */
3889 if (cond && !cond->val_int())
3890 continue;
3891
3892 if (schema_table_store_record(thd, table))
3893 {
3894 log_online_bitmap_iterator_release(&i);
3895 return 1;
3896 }
3897
3898 ++output_rows_num;
3899 }
3900
3901 log_online_bitmap_iterator_release(&i);
3902 return 0;
3903}
3904
3905static
3906int
3907i_s_innodb_changed_pages_init(
3908/*==========================*/
3909 void* p)
3910{
3911 DBUG_ENTER("i_s_innodb_changed_pages_init");
3912 ST_SCHEMA_TABLE* schema = (ST_SCHEMA_TABLE*) p;
3913
3914 schema->fields_info = i_s_innodb_changed_pages_info;
3915 schema->fill_table = i_s_innodb_changed_pages_fill;
3916
3917 DBUG_RETURN(0);
3918}
3919
3920UNIV_INTERN struct st_mysql_plugin i_s_innodb_changed_pages =
3921{
3922 STRUCT_FLD(type, MYSQL_INFORMATION_SCHEMA_PLUGIN),
3923 STRUCT_FLD(info, &i_s_info),
3924 STRUCT_FLD(name, "INNODB_CHANGED_PAGES"),
3925 STRUCT_FLD(author, "Percona"),
3926 STRUCT_FLD(descr, "InnoDB CHANGED_PAGES table"),
3927 STRUCT_FLD(license, PLUGIN_LICENSE_GPL),
3928 STRUCT_FLD(init, i_s_innodb_changed_pages_init),
3929 STRUCT_FLD(deinit, i_s_common_deinit),
3930 STRUCT_FLD(version, 0x0100 /* 1.0 */),
3931 STRUCT_FLD(status_vars, NULL),
3932 STRUCT_FLD(system_vars, NULL),
3933 STRUCT_FLD(__reserved1, NULL)
3934};
37863935
=== modified file 'Percona-Server/storage/innodb_plugin/handler/i_s.h'
--- Percona-Server/storage/innodb_plugin/handler/i_s.h 2011-11-24 02:00:45 +0000
+++ Percona-Server/storage/innodb_plugin/handler/i_s.h 2012-08-15 14:13:58 +0000
@@ -36,7 +36,6 @@
36extern struct st_mysql_plugin i_s_innodb_cmp_reset;36extern struct st_mysql_plugin i_s_innodb_cmp_reset;
37extern struct st_mysql_plugin i_s_innodb_cmpmem;37extern struct st_mysql_plugin i_s_innodb_cmpmem;
38extern struct st_mysql_plugin i_s_innodb_cmpmem_reset;38extern struct st_mysql_plugin i_s_innodb_cmpmem_reset;
39extern struct st_mysql_plugin i_s_innodb_patches;
40extern struct st_mysql_plugin i_s_innodb_rseg;39extern struct st_mysql_plugin i_s_innodb_rseg;
41extern struct st_mysql_plugin i_s_innodb_table_stats;40extern struct st_mysql_plugin i_s_innodb_table_stats;
42extern struct st_mysql_plugin i_s_innodb_index_stats;41extern struct st_mysql_plugin i_s_innodb_index_stats;
@@ -44,5 +43,6 @@
44extern struct st_mysql_plugin i_s_innodb_sys_tables;43extern struct st_mysql_plugin i_s_innodb_sys_tables;
45extern struct st_mysql_plugin i_s_innodb_sys_indexes;44extern struct st_mysql_plugin i_s_innodb_sys_indexes;
46extern struct st_mysql_plugin i_s_innodb_sys_stats;45extern struct st_mysql_plugin i_s_innodb_sys_stats;
46extern struct st_mysql_plugin i_s_innodb_changed_pages;
4747
48#endif /* i_s_h */48#endif /* i_s_h */
4949
=== removed file 'Percona-Server/storage/innodb_plugin/handler/innodb_patch_info.h'
--- Percona-Server/storage/innodb_plugin/handler/innodb_patch_info.h 2011-11-24 02:00:45 +0000
+++ Percona-Server/storage/innodb_plugin/handler/innodb_patch_info.h 1970-01-01 00:00:00 +0000
@@ -1,51 +0,0 @@
1/* Copyright (C) 2002-2006 MySQL AB
2
3 This program is free software; you can redistribute it and/or modify
4 it under the terms of the GNU General Public License as published by
5 the Free Software Foundation; version 2 of the License.
6
7 This program is distributed in the hope that it will be useful,
8 but WITHOUT ANY WARRANTY; without even the implied warranty of
9 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 GNU General Public License for more details.
11
12 You should have received a copy of the GNU General Public License
13 along with this program; if not, write to the Free Software
14 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
15
16#ifdef USE_PRAGMA_INTERFACE
17#pragma interface /* gcc class implementation */
18#endif
19
20struct innodb_enhancement {
21 const char *file;
22 const char *name;
23 const char *comment;
24 const char *link;
25}innodb_enhancements[] = {
26{"xtradb_show_enhancements","I_S.XTRADB_ENHANCEMENTS","","http://www.percona.com/docs/wiki/percona-xtradb"},
27{"innodb_show_status","Improvements to SHOW INNODB STATUS","Memory information and lock info fixes","http://www.percona.com/docs/wiki/percona-xtradb"},
28{"innodb_io","Improvements to InnoDB IO","","http://www.percona.com/docs/wiki/percona-xtradb"},
29{"innodb_opt_lru_count","Fix of buffer_pool mutex","Decreases contention on buffer_pool mutex on LRU operations","http://www.percona.com/docs/wiki/percona-xtradb"},
30{"innodb_buffer_pool_pages","Information of buffer pool content","","http://www.percona.com/docs/wiki/percona-xtradb"},
31{"innodb_expand_undo_slots","expandable maximum number of undo slots","from 1024 (default) to about 4000","http://www.percona.com/docs/wiki/percona-xtradb"},
32{"innodb_extra_rseg","allow to create extra rollback segments","When create new db, the new parameter allows to create more rollback segments","http://www.percona.com/docs/wiki/percona-xtradb"},
33{"innodb_overwrite_relay_log_info","overwrite relay-log.info when slave recovery","Building as plugin, it is not used.","http://www.percona.com/docs/wiki/percona-xtradb:innodb_overwrite_relay_log_info"},
34{"innodb_thread_concurrency_timer_based","use InnoDB timer based concurrency throttling (backport from MySQL 5.4.0)","",""},
35{"innodb_expand_import","convert .ibd file automatically when import tablespace","the files are generated by xtrabackup export mode.","http://www.percona.com/docs/wiki/percona-xtradb"},
36{"innodb_dict_size_limit","Limit dictionary cache size","Variable innodb_dict_size_limit in bytes","http://www.percona.com/docs/wiki/percona-xtradb"},
37{"innodb_split_buf_pool_mutex","More fix of buffer_pool mutex","Spliting buf_pool_mutex and optimizing based on innodb_opt_lru_count","http://www.percona.com/docs/wiki/percona-xtradb"},
38{"innodb_stats","Additional features about InnoDB statistics/optimizer","","http://www.percona.com/docs/wiki/percona-xtradb"},
39{"innodb_recovery_patches","Bugfixes and adjustments about recovery process","","http://www.percona.com/docs/wiki/percona-xtradb"},
40{"innodb_purge_thread","Enable to use purge devoted thread","","http://www.percona.com/docs/wiki/percona-xtradb"},
41{"innodb_admin_command_base","XtraDB specific command interface through i_s","","http://www.percona.com/docs/wiki/percona-xtradb"},
42{"innodb_show_lock_name","Show mutex/lock name instead of crated file/line","","http://www.percona.com/docs/wiki/percona-xtradb"},
43{"innodb_extend_slow","Extended statistics in slow.log","It is InnoDB-part only. It needs to patch also to mysqld.","http://www.percona.com/docs/wiki/percona-xtradb"},
44{"innodb_lru_dump_restore","Dump and restore command for content of buffer pool","","http://www.percona.com/docs/wiki/percona-xtradb"},
45{"innodb_separate_doublewrite","Add option 'innodb_doublewrite_file' to separate doublewrite dedicated tablespace","","http://www.percona.com/docs/wiki/percona-xtradb"},
46{"innodb_pass_corrupt_table","Treat tables as corrupt instead of crash, when meet corrupt blocks","","http://www.percona.com/docs/wiki/percona-xtradb"},
47{"innodb_fast_checksum","Using the checksum on 32bit-unit calculation","incompatible for unpatched ver.","http://www.percona.com/docs/wiki/percona-xtradb"},
48{"innodb_files_extend","allow >4GB transaction log files, and can vary universal page size of datafiles","incompatible for unpatched ver.","http://www.percona.com/docs/wiki/percona-xtradb"},
49{"innodb_sys_tables_sys_indexes","Expose InnoDB SYS_TABLES and SYS_INDEXES schema tables","","http://www.percona.com/docs/wiki/percona-xtradb"},
50{NULL, NULL, NULL, NULL}
51};
520
=== modified file 'Percona-Server/storage/innodb_plugin/include/log0online.h'
--- Percona-Server/storage/innodb_plugin/include/log0online.h 2012-06-14 09:16:03 +0000
+++ Percona-Server/storage/innodb_plugin/include/log0online.h 2012-08-15 14:13:58 +0000
@@ -25,6 +25,7 @@
25#define log0online_h25#define log0online_h
2626
27#include "univ.i"27#include "univ.i"
28#include "os0file.h"
2829
29/*********************************************************************//**30/*********************************************************************//**
30Initializes the online log following subsytem. */31Initializes the online log following subsytem. */
@@ -48,4 +49,63 @@
48log_online_follow_redo_log();49log_online_follow_redo_log();
49/*=========================*/50/*=========================*/
5051
52/** The iterator through all bits of changed pages bitmap blocks */
53struct log_bitmap_iterator_struct
54{
55 char in_name[FN_REFLEN]; /*!< the file name for bitmap
56 input */
57 os_file_t in; /*!< the bitmap input file */
58 ib_uint64_t in_offset; /*!< the next write position in the
59 bitmap output file */
60 ib_uint32_t bit_offset; /*!< bit offset inside of bitmap
61 block*/
62 ib_uint64_t start_lsn; /*!< Start lsn of the block */
63 ib_uint64_t end_lsn; /*!< End lsn of the block */
64 ib_uint32_t space_id; /*!< Block space id */
65 ib_uint32_t first_page_id; /*!< First block page id */
66 ibool changed; /*!< true if current page was changed */
67 byte* page; /*!< Bitmap block */
68};
69
70typedef struct log_bitmap_iterator_struct log_bitmap_iterator_t;
71
72#define LOG_BITMAP_ITERATOR_START_LSN(i) \
73 ((i).start_lsn)
74#define LOG_BITMAP_ITERATOR_END_LSN(i) \
75 ((i).end_lsn)
76#define LOG_BITMAP_ITERATOR_SPACE_ID(i) \
77 ((i).space_id)
78#define LOG_BITMAP_ITERATOR_PAGE_NUM(i) \
79 ((i).first_page_id + (i).bit_offset)
80#define LOG_BITMAP_ITERATOR_PAGE_CHANGED(i) \
81 ((i).changed)
82
83/*********************************************************************//**
84Initializes log bitmap iterator.
85@return TRUE if the iterator is initialized OK, FALSE otherwise. */
86UNIV_INTERN
87ibool
88log_online_bitmap_iterator_init(
89/*============================*/
90 log_bitmap_iterator_t *i); /*!<in/out: iterator */
91
92/*********************************************************************//**
93Releases log bitmap iterator. */
94UNIV_INTERN
95void
96log_online_bitmap_iterator_release(
97/*===============================*/
98 log_bitmap_iterator_t *i); /*!<in/out: iterator */
99
100/*********************************************************************//**
101Iterates through bits of saved bitmap blocks.
102Sequentially reads blocks from bitmap file(s) and interates through
103their bits. Ignores blocks with wrong checksum.
104@return TRUE if iteration is successful, FALSE if all bits are iterated. */
105UNIV_INTERN
106ibool
107log_online_bitmap_iterator_next(
108/*============================*/
109 log_bitmap_iterator_t *i); /*!<in/out: iterator */
110
51#endif111#endif
52112
=== modified file 'Percona-Server/storage/innodb_plugin/include/srv0srv.h'
--- Percona-Server/storage/innodb_plugin/include/srv0srv.h 2012-06-14 09:16:03 +0000
+++ Percona-Server/storage/innodb_plugin/include/srv0srv.h 2012-08-15 14:13:58 +0000
@@ -136,6 +136,9 @@
136136
137extern my_bool srv_track_changed_pages;137extern my_bool srv_track_changed_pages;
138138
139extern
140ulonglong srv_changed_pages_limit;
141
139extern ibool srv_auto_extend_last_data_file;142extern ibool srv_auto_extend_last_data_file;
140extern ulint srv_last_file_size_max;143extern ulint srv_last_file_size_max;
141extern char** srv_log_group_home_dirs;144extern char** srv_log_group_home_dirs;
142145
=== modified file 'Percona-Server/storage/innodb_plugin/log/log0online.c'
--- Percona-Server/storage/innodb_plugin/log/log0online.c 2012-06-14 09:16:03 +0000
+++ Percona-Server/storage/innodb_plugin/log/log0online.c 2012-08-15 14:13:58 +0000
@@ -29,7 +29,6 @@
29#include "log0recv.h"29#include "log0recv.h"
30#include "mach0data.h"30#include "mach0data.h"
31#include "mtr0log.h"31#include "mtr0log.h"
32#include "os0file.h"
33#include "srv0srv.h"32#include "srv0srv.h"
34#include "srv0start.h"33#include "srv0start.h"
35#include "trx0sys.h"34#include "trx0sys.h"
@@ -84,6 +83,10 @@
84which case the first LSN of actual log records will be this. */83which case the first LSN of actual log records will be this. */
85#define MIN_TRACKED_LSN ((LOG_START_LSN) + (LOG_BLOCK_HDR_SIZE))84#define MIN_TRACKED_LSN ((LOG_START_LSN) + (LOG_BLOCK_HDR_SIZE))
8685
86/* Tests if num bit of bitmap is set */
87#define IS_BIT_SET(bitmap, num) \
88 (*((bitmap) + ((num) >> 3)) & (1UL << ((num) & 7UL)))
89
87/** The bitmap file block size in bytes. All writes will be multiples of this.90/** The bitmap file block size in bytes. All writes will be multiples of this.
88 */91 */
89enum {92enum {
@@ -117,6 +120,7 @@
117enum { MODIFIED_PAGE_BLOCK_BITMAP_LEN120enum { MODIFIED_PAGE_BLOCK_BITMAP_LEN
118 = MODIFIED_PAGE_BLOCK_UNUSED_2 - MODIFIED_PAGE_BLOCK_BITMAP };121 = MODIFIED_PAGE_BLOCK_UNUSED_2 - MODIFIED_PAGE_BLOCK_BITMAP };
119122
123
120/****************************************************************//**124/****************************************************************//**
121Provide a comparisson function for the RB-tree tree (space,125Provide a comparisson function for the RB-tree tree (space,
122block_start_page) pairs. Actual implementation does not matter as126block_start_page) pairs. Actual implementation does not matter as
@@ -922,3 +926,158 @@
922 log_bmp_sys->start_lsn = log_bmp_sys->end_lsn;926 log_bmp_sys->start_lsn = log_bmp_sys->end_lsn;
923 log_set_tracked_lsn(log_bmp_sys->start_lsn);927 log_set_tracked_lsn(log_bmp_sys->start_lsn);
924}928}
929
930/*********************************************************************//**
931Initializes log bitmap iterator.
932@return TRUE if the iterator is initialized OK, FALSE otherwise. */
933UNIV_INTERN
934ibool
935log_online_bitmap_iterator_init(
936/*============================*/
937 log_bitmap_iterator_t *i) /*!<in/out: iterator */
938{
939 ibool success;
940
941 ut_a(i);
942 ut_snprintf(i->in_name, FN_REFLEN, "%s%s%d", srv_data_home,
943 modified_page_stem, 1);
944 i->in_offset = 0;
945 /*
946 Set up bit offset out of the reasonable limit
947 to intiate reading block from file in
948 log_online_bitmap_iterator_next()
949 */
950 i->bit_offset = MODIFIED_PAGE_BLOCK_BITMAP_LEN;
951 i->in =
952 os_file_create_simple_no_error_handling(
953 i->in_name,
954 OS_FILE_OPEN,
955 OS_FILE_READ_ONLY,
956 &success);
957
958 if (!success) {
959 /* The following call prints an error message */
960 os_file_get_last_error(TRUE);
961 fprintf(stderr,
962 "InnoDB: Error: Cannot open \'%s\'\n",
963 i->in_name);
964 return FALSE;
965 }
966
967 i->page = ut_malloc(MODIFIED_PAGE_BLOCK_SIZE);
968
969 i->start_lsn = i->end_lsn = 0;
970 i->space_id = 0;
971 i->first_page_id = 0;
972 i->changed = FALSE;
973
974 return TRUE;
975}
976
977/*********************************************************************//**
978Releases log bitmap iterator. */
979UNIV_INTERN
980void
981log_online_bitmap_iterator_release(
982/*===============================*/
983 log_bitmap_iterator_t *i) /*!<in/out: iterator */
984{
985 ut_a(i);
986 os_file_close(i->in);
987 ut_free(i->page);
988}
989
990/*********************************************************************//**
991Iterates through bits of saved bitmap blocks.
992Sequentially reads blocks from bitmap file(s) and interates through
993their bits. Ignores blocks with wrong checksum.
994@return TRUE if iteration is successful, FALSE if all bits are iterated. */
995UNIV_INTERN
996ibool
997log_online_bitmap_iterator_next(
998/*============================*/
999 log_bitmap_iterator_t *i) /*!<in/out: iterator */
1000{
1001 ulint offset_low;
1002 ulint offset_high;
1003 ulint size_low;
1004 ulint size_high;
1005 ulint checksum = 0;
1006 ulint actual_checksum = !checksum;
1007
1008 ibool success;
1009
1010 ut_a(i);
1011
1012 if (i->bit_offset < MODIFIED_PAGE_BLOCK_BITMAP_LEN)
1013 {
1014 ++i->bit_offset;
1015 i->changed =
1016 IS_BIT_SET(i->page + MODIFIED_PAGE_BLOCK_BITMAP,
1017 i->bit_offset);
1018 return TRUE;
1019 }
1020
1021 while (checksum != actual_checksum)
1022 {
1023 success = os_file_get_size(i->in,
1024 &size_low,
1025 &size_high);
1026 if (!success) {
1027 os_file_get_last_error(TRUE);
1028 fprintf(stderr,
1029 "InnoDB: Warning: can't get size of "
1030 "page bitmap file \'%s\'\n",
1031 i->in_name);
1032 return FALSE;
1033 }
1034
1035 if (i->in_offset >=
1036 (ib_uint64_t)(size_low) +
1037 ((ib_uint64_t)(size_high) << 32))
1038 return FALSE;
1039
1040 offset_high = (ulint)(i->in_offset >> 32);
1041 offset_low = (ulint)(i->in_offset & 0xFFFFFFFF);
1042
1043 success = os_file_read(
1044 i->in,
1045 i->page,
1046 offset_low,
1047 offset_high,
1048 MODIFIED_PAGE_BLOCK_SIZE);
1049
1050 if (!success) {
1051 os_file_get_last_error(TRUE);
1052 fprintf(stderr,
1053 "InnoDB: Warning: failed reading "
1054 "changed page bitmap file \'%s\'\n",
1055 i->in_name);
1056 return FALSE;
1057 }
1058
1059 checksum = mach_read_from_4(
1060 i->page + MODIFIED_PAGE_BLOCK_CHECKSUM);
1061
1062 actual_checksum = log_online_calc_checksum(i->page);
1063
1064 i->in_offset += MODIFIED_PAGE_BLOCK_SIZE;
1065 }
1066
1067 i->start_lsn =
1068 mach_read_ull(i->page + MODIFIED_PAGE_START_LSN);
1069 i->end_lsn =
1070 mach_read_ull(i->page + MODIFIED_PAGE_END_LSN);
1071 i->space_id =
1072 mach_read_from_4(i->page + MODIFIED_PAGE_SPACE_ID);
1073 i->first_page_id =
1074 mach_read_from_4(i->page + MODIFIED_PAGE_1ST_PAGE_ID);
1075 i->bit_offset =
1076 0;
1077 i->changed =
1078 IS_BIT_SET(i->page + MODIFIED_PAGE_BLOCK_BITMAP,
1079 i->bit_offset);
1080
1081 return TRUE;
1082}
1083
9251084
=== modified file 'Percona-Server/storage/innodb_plugin/row/row0mysql.c'
--- Percona-Server/storage/innodb_plugin/row/row0mysql.c 2012-05-09 04:14:12 +0000
+++ Percona-Server/storage/innodb_plugin/row/row0mysql.c 2012-08-15 14:13:58 +0000
@@ -3635,7 +3635,7 @@
3635 btr_pcur_store_position(&pcur, &mtr);3635 btr_pcur_store_position(&pcur, &mtr);
3636 btr_pcur_commit_specify_mtr(&pcur, &mtr);3636 btr_pcur_commit_specify_mtr(&pcur, &mtr);
36373637
3638 table = dict_load_table(table_name);3638 table = dict_table_get_low(table_name);
36393639
3640 if (table) {3640 if (table) {
3641 row_drop_table_for_mysql(table_name, trx, FALSE);3641 row_drop_table_for_mysql(table_name, trx, FALSE);
36423642
=== modified file 'Percona-Server/storage/innodb_plugin/srv/srv0srv.c'
--- Percona-Server/storage/innodb_plugin/srv/srv0srv.c 2012-06-14 09:16:03 +0000
+++ Percona-Server/storage/innodb_plugin/srv/srv0srv.c 2012-08-15 14:13:58 +0000
@@ -164,6 +164,8 @@
164164
165UNIV_INTERN my_bool srv_track_changed_pages = TRUE;165UNIV_INTERN my_bool srv_track_changed_pages = TRUE;
166166
167UNIV_INTERN ulonglong srv_changed_pages_limit = 0;
168
167/* if TRUE, then we auto-extend the last data file */169/* if TRUE, then we auto-extend the last data file */
168UNIV_INTERN ibool srv_auto_extend_last_data_file = FALSE;170UNIV_INTERN ibool srv_auto_extend_last_data_file = FALSE;
169/* if != 0, this tells the max size auto-extending may increase the171/* if != 0, this tells the max size auto-extending may increase the
170172
=== modified file 'build/debian/control'
--- build/debian/control 2012-02-11 11:58:50 +0000
+++ build/debian/control 2012-08-15 14:13:58 +0000
@@ -3,7 +3,7 @@
3Priority: optional3Priority: optional
4Maintainer: Percona Server Development Team <mysql-dev@percona.com>4Maintainer: Percona Server Development Team <mysql-dev@percona.com>
5Uploaders: Ignacio Nin <ignacio.nin@percona.com>5Uploaders: Ignacio Nin <ignacio.nin@percona.com>
6Build-Depends: libtool (>= 1.4.2-7), procps | hurd, debhelper (>= 4.1.16), file (>= 3.28-1), libncurses5-dev (>= 5.0-6), perl (>= 5.6.0), libwrap0-dev (>= 7.6-8.3), zlib1g-dev (>= 1:1.1.3-5), psmisc, po-debconf, chrpath, automake (>= 1.9), doxygen, gs, dpatch, gawk, bison, lsb-release, fakeroot6Build-Depends: libtool (>= 1.4.2-7), procps | hurd, debhelper (>= 4.1.16), file (>= 3.28-1), libncurses5-dev (>= 5.0-6), perl (>= 5.6.0), libwrap0-dev (>= 7.6-8.3), zlib1g-dev (>= 1:1.1.3-5), psmisc, po-debconf, chrpath, automake (>= 1.9), doxygen, dpatch, gawk, bison, lsb-release, fakeroot
7Standards-Version: 3.8.07Standards-Version: 3.8.0
8Homepage: http://www.percona.com/software/8Homepage: http://www.percona.com/software/
9Vcs-Bzr: lp:percona-server/5.19Vcs-Bzr: lp:percona-server/5.1
1010
=== modified file 'build/debian/rules'
--- build/debian/rules 2012-02-10 11:58:26 +0000
+++ build/debian/rules 2012-08-15 14:13:58 +0000
@@ -9,7 +9,7 @@
9TMP=$(CURDIR)/debian/tmp/9TMP=$(CURDIR)/debian/tmp/
1010
11major_version_default=1311major_version_default=13
12minor_version_default=212minor_version_default=4
1313
14ARCH = $(shell dpkg-architecture -qDEB_BUILD_ARCH)14ARCH = $(shell dpkg-architecture -qDEB_BUILD_ARCH)
15ARCH_OS = $(shell dpkg-architecture -qDEB_BUILD_ARCH_OS)15ARCH_OS = $(shell dpkg-architecture -qDEB_BUILD_ARCH_OS)
1616
=== modified file 'build/percona-server.spec'
--- build/percona-server.spec 2012-04-24 16:53:04 +0000
+++ build/percona-server.spec 2012-08-15 14:13:58 +0000
@@ -14,9 +14,9 @@
14%define mysql_vendor Percona, Inc14%define mysql_vendor Percona, Inc
15%define redhatversion %(lsb_release -rs | awk -F. '{ print $1}')15%define redhatversion %(lsb_release -rs | awk -F. '{ print $1}')
16%define community 116%define community 1
17%define mysqlversion 5.1.6217%define mysqlversion 5.1.63
18%define majorversion 1318%define majorversion 13
19%define minorversion 319%define minorversion 4
20%define distribution rhel%{redhatversion}20%define distribution rhel%{redhatversion}
21%define release rel%{majorversion}.%{minorversion}.%{gotrevision}.%{distribution}21%define release rel%{majorversion}.%{minorversion}.%{gotrevision}.%{distribution}
2222
2323
=== modified file 'build/percona-shared-compat.spec'
--- build/percona-shared-compat.spec 2012-04-24 16:53:04 +0000
+++ build/percona-shared-compat.spec 2012-08-15 14:13:58 +0000
@@ -29,7 +29,7 @@
29# Change this to match the version of the shared libs you want to include29# Change this to match the version of the shared libs you want to include
30#30#
31%define version55 5.5.831%define version55 5.5.8
32%define version51 5.1.6232%define version51 5.1.63
33%define version50 5.0.9133%define version50 5.0.91
34%define version41 4.1.2234%define version41 4.1.22
35%define version40 4.0.2735%define version40 4.0.27
3636
=== modified file 'doc/Makefile'
--- doc/Makefile 2011-09-20 06:59:03 +0000
+++ doc/Makefile 2012-08-15 14:13:58 +0000
@@ -37,6 +37,14 @@
37 -rm -rf $(BUILDDIR)/*37 -rm -rf $(BUILDDIR)/*
3838
39html:39html:
40 @echo "Downloading percona-theme ..."
41 @wget -O percona-theme.tar.gz http://percona.com/docs/theme/percona-server/5.1
42 @echo "Extracting theme."
43 @tar -zxf percona-theme.tar.gz
44 @rm -rf source/percona-theme
45 @mv percona-theme source/percona-theme
46 @rm percona-theme.tar.gz
47 @echo "Building html doc"
40 $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html48 $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
41 @echo49 @echo
42 @echo "Build finished. The HTML pages are in $(BUILDDIR)/html."50 @echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
@@ -46,6 +54,11 @@
46 @echo54 @echo
47 @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."55 @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
4856
57offhtml:
58 $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
59 @echo
60 @echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
61
49singlehtml:62singlehtml:
50 $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml63 $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
51 @echo64 @echo
5265
=== modified file 'doc/source/conf.py'
--- doc/source/conf.py 2012-04-24 12:35:07 +0000
+++ doc/source/conf.py 2012-08-15 14:13:58 +0000
@@ -52,9 +52,9 @@
52# built documents.52# built documents.
53#53#
54# The short X.Y version.54# The short X.Y version.
55version = '5.1.62'55version = '5.1.63'
56# The full version, including alpha/beta/rc tags.56# The full version, including alpha/beta/rc tags.
57release = '5.1.62-13.3'57release = '5.1.63-13.4'
5858
59# The language for content autogenerated by Sphinx. Refer to documentation59# The language for content autogenerated by Sphinx. Refer to documentation
60# for a list of supported languages.60# for a list of supported languages.
@@ -224,7 +224,7 @@
224# Grouping the document tree into LaTeX files. List of tuples224# Grouping the document tree into LaTeX files. List of tuples
225# (source start file, target name, title, author, documentclass [howto/manual]).225# (source start file, target name, title, author, documentclass [howto/manual]).
226latex_documents = [226latex_documents = [
227 ('index', 'PerconaServer.tex', u'Percona Server Documentation',227 ('index', 'PerconaServer-5.1.tex', u'Percona Server Documentation',
228 u'Percona Inc', 'manual'),228 u'Percona Inc', 'manual'),
229]229]
230230
231231
=== modified file 'doc/source/diagnostics/innodb_stats.rst'
--- doc/source/diagnostics/innodb_stats.rst 2012-01-31 13:43:08 +0000
+++ doc/source/diagnostics/innodb_stats.rst 2012-08-15 14:13:58 +0000
@@ -54,13 +54,12 @@
5454
55.. variable:: innodb_use_sys_stats_table55.. variable:: innodb_use_sys_stats_table
5656
57 :version: 5.1.49-11.3 Variable introduced
57 :type: BOOLEAN58 :type: BOOLEAN
58 :default: 059 :default: 0
5960
6061
61If this option is enabled, |XtraDB| uses the ``SYS_STATS`` system table to store statistics of table indexes. Also, when |InnoDB| opens a table for the first time, it loads the statistics from ``SYS_STATS`` instead of sampling index pages. If you use a high ``stats_sample_pages`` value, the first open of a table is expensive. In such a case, this option will help. Note: This option may cause less frequent updating of statistics. So, you should intentionally use the ``ANALYZE TABLE`` command more often.62If this option is enabled, |XtraDB| uses the ``SYS_STATS`` system table to store statistics of table indexes. Also, when |InnoDB| opens a table for the first time, it loads the statistics from ``SYS_STATS`` instead of sampling index pages. If you use a high ``stats_sample_pages`` value, the first open of a table is expensive. In such a case, this option will help. Intended behavior is to never update statistics unless an explicit ``ANALYZE TABLE`` is issued.
62
63(This variable was introduced in release 5.1.49-rel11.3)
6463
6564
66INFORMATION_SCHEMA Tables65INFORMATION_SCHEMA Tables
6766
=== modified file 'doc/source/diagnostics/misc_info_schema_tables.rst'
--- doc/source/diagnostics/misc_info_schema_tables.rst 2012-04-02 07:06:54 +0000
+++ doc/source/diagnostics/misc_info_schema_tables.rst 2012-08-15 14:13:58 +0000
@@ -98,7 +98,7 @@
98Temporary tables98Temporary tables
99================99================
100100
101 Only temporary tables that were explicitly created with `CREATE TEMPORARY TABLE` or `ALTER TABLE` are shown, and not the ones created during query execution.101 Only temporary tables that were explicitly created with `CREATE TEMPORARY TABLE` are shown, and not the ones created during query execution. The temporary tables that are created for `ALTER TABLE` execution are not listed in `INFORMATION_SCHEMA.TEMPORARY_TABLES` or `GLOBAL_TEMPORARY_TABLES` tables.
102102
103.. table:: INFORMATION_SCHEMA.GLOBAL_TEMPORARY_TABLES103.. table:: INFORMATION_SCHEMA.GLOBAL_TEMPORARY_TABLES
104104
105105
=== modified file 'doc/source/diagnostics/mysql_syslog.rst'
--- doc/source/diagnostics/mysql_syslog.rst 2011-10-07 00:55:06 +0000
+++ doc/source/diagnostics/mysql_syslog.rst 2012-08-15 14:13:58 +0000
@@ -4,7 +4,7 @@
4 Log All Client Commands (``syslog``)4 Log All Client Commands (``syslog``)
5======================================5======================================
66
7When enabled, this feature causes all commands run on the client to be logged to ``syslog``.7When enabled, this feature causes all commands run by the command line client to be logged to ``syslog``. If you want to enable this option permanently, add it to the [mysql] group in my.cnf.
88
99
10Version Specific Information10Version Specific Information
1111
=== modified file 'doc/source/diagnostics/slow_extended.rst'
--- doc/source/diagnostics/slow_extended.rst 2011-10-07 00:55:06 +0000
+++ doc/source/diagnostics/slow_extended.rst 2012-08-15 14:13:58 +0000
@@ -179,10 +179,10 @@
179Specifies the time threshold for filtering queries out of the slow query log. The unit of time is seconds. This option has the same meaning as in a standard |MySQL| server, with the following changes:179Specifies the time threshold for filtering queries out of the slow query log. The unit of time is seconds. This option has the same meaning as in a standard |MySQL| server, with the following changes:
180180
181The option accepts fractional values. If set to 0.5, for example, queries longer than 1/2 second will be logged.181The option accepts fractional values. If set to 0.5, for example, queries longer than 1/2 second will be logged.
182
183If the value is set to 0, then all queries are logged. This is different from the standard |MySQL| build, where a value of 0 disables logging.
184Before version 1.01 of this feature, the value was an integer, and the unit of time was microseconds, not seconds.182Before version 1.01 of this feature, the value was an integer, and the unit of time was microseconds, not seconds.
185183
184If the value is set to 0, then all queries are logged. This is different from the standard |MySQL| build, prior to version 5.1.21, where a value of 0 disables logging. After |MySQL| 5.1.21 this has been changed to minimum value and you can disable/enable slow query log with ``slow_query_log`` variable.
185
186.. variable:: profiling_server186.. variable:: profiling_server
187187
188 :cli: Yes188 :cli: Yes
189189
=== modified file 'doc/source/flexibility/buff_read_ahead_area.rst'
--- doc/source/flexibility/buff_read_ahead_area.rst 2011-10-07 00:55:06 +0000
+++ doc/source/flexibility/buff_read_ahead_area.rst 2012-08-15 14:13:58 +0000
@@ -33,4 +33,4 @@
33Other Reading33Other Reading
34=============34=============
3535
36 * `BUF_READ_AHEAD_AREA Bottleneck <http://www.facebook.com/notes/|MySQL|facebook/using-pmp-to-double-|MySQL|-throughput-part-2/405092575932>`_36 * `BUF_READ_AHEAD_AREA Bottleneck <http://www.facebook.com/notes/MySQLfacebook/using-pmp-to-double-MySQL-throughput-part-2/405092575932>`_
3737
=== modified file 'doc/source/flexibility/mysqlbinlog_change_db.rst'
--- doc/source/flexibility/mysqlbinlog_change_db.rst 2012-04-24 12:35:07 +0000
+++ doc/source/flexibility/mysqlbinlog_change_db.rst 2012-08-15 14:13:58 +0000
@@ -7,15 +7,61 @@
7Sometimes there is a need to take a binary log and apply it to a database with 7Sometimes there is a need to take a binary log and apply it to a database with
8a different name than the original name of the database on binlog producer.8a different name than the original name of the database on binlog producer.
99
10If one is using statement-based replication, he can achieve this by grepping10New variable rewrite-db has been added to the mysqlbinlog utility that allows the changing names of the used databases in both Row-Based and Statement-Based replication. This was possible before by using tools like grep, awk and sed but only for SBR, because with RBR database name is encoded within the BINLOG ‘....’ statement.
11out "USE dbname" statements out of the output of mysqlbinlog(*). With11
12row-based replication this is no longer possible, as database name is encoded12Variable :variable:`rewrite-db` of **mysqlbinlog** utility allows to setup rewriting rule "from->"to".
13within the the BINLOG '....' statement.13
1414Example
15This task is about adding an option to mysqlbinlog that would allow to change 15=======
16the names of used databases in both RBR and SBR events.16
1717**mysqlbinlog** output before rewrite-db ::
18Varible :variable:`rewrite-db` of **mysqlbinlog** utility allows to setup rewriting rule "from->"to".18
19 $ mysqlbinlog mysql-bin.000005
20 ...
21 # at 175
22 #120517 13:10:00 server id 2 end_log_pos 203 Intvar
23 SET INSERT_ID=4083/*!*/;
24 # at 203
25 #120517 13:10:00 server id 2 end_log_pos 367 Query thread_id=88 exec_time=0 error_code=0
26 use world/*!*/;
27 SET TIMESTAMP=1337253000/*!*/;
28 insert into City (Name, CountryCode, District, Population) values ("New City", "ZMB", "TEX", 111000)
29 /*!*/;
30 # at 367
31 #120517 13:10:00 server id 2 end_log_pos 394 Xid = 1414
32 COMMIT/*!*/;
33 DELIMITER ;
34
35**mysqlbinlog** output when the new variable is used: ::
36
37 $ mysqlbinlog --rewrite-db='world->new_world' mysql-bin.000005
38 ...
39 # at 106
40 use new_world/*!*/;
41 #120517 13:10:00 server id 2 end_log_pos 175 Query thread_id=88 exec_time=0 error_code=0
42 SET TIMESTAMP=1337253000/*!*/;
43 SET @@session.pseudo_thread_id=88/*!*/;
44 SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
45 SET @@session.sql_mode=0/*!*/;
46 SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
47 /*!\C latin1 *//*!*/;
48 SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
49 SET @@session.lc_time_names=0/*!*/;
50 SET @@session.collation_database=DEFAULT/*!*/;
51 BEGIN
52 /*!*/;
53 # at 175
54 #120517 13:10:00 server id 2 end_log_pos 203 Intvar
55 SET INSERT_ID=4083/*!*/;
56 # at 203
57 #120517 13:10:00 server id 2 end_log_pos 367 Query thread_id=88 exec_time=0 error_code=0
58 SET TIMESTAMP=1337253000/*!*/;
59 insert into City (Name, CountryCode, District, Population) values ("New City", "ZMB", "TEX", 111000)
60 /*!*/;
61 # at 367
62 #120517 13:10:00 server id 2 end_log_pos 394 Xid = 1414
63 COMMIT/*!*/;
64
1965
20Version Specific Information66Version Specific Information
21============================67============================
2268
=== modified file 'doc/source/installation/apt_repo.rst'
--- doc/source/installation/apt_repo.rst 2012-05-08 06:48:26 +0000
+++ doc/source/installation/apt_repo.rst 2012-08-15 14:13:58 +0000
@@ -33,15 +33,14 @@
33Debian33Debian
34------34------
3535
36 * 5.0 (lenny)
37 * 6.0 (squeeze)36 * 6.0 (squeeze)
3837
39Ubuntu38Ubuntu
40------39------
4140
42 * 10.04LTS (lucid)41 * 10.04LTS (lucid)
43 * 11.04 (natty)
44 * 11.10 (oneiric)42 * 11.10 (oneiric)
43 * 12.04LTS (precise)
4544
4645
47Release Candidate Repository46Release Candidate Repository
@@ -51,3 +50,15 @@
5150
52 deb http://repo.percona.com/apt-rc VERSION main51 deb http://repo.percona.com/apt-rc VERSION main
53 deb-src http://repo.percona.com/apt-rc VERSION main52 deb-src http://repo.percona.com/apt-rc VERSION main
53
54
55Apt-Pinning the packages
56========================
57
58In some cases you might need to "pin" the selected packages to avoid the upgrades from the distribution repositories. You'll need to make a new file :file:`/etc/apt/preferences.d/00percona.pref` and add the following lines in it: ::
59
60 Package: *
61 Pin: release o=Percona Development Team
62 Pin-Priority: 1001
63
64For more information about the pinning you can check the official `debian wiki <http://wiki.debian.org/AptPreferences>`_.
5465
=== modified file 'doc/source/management/innodb_expand_import.rst'
--- doc/source/management/innodb_expand_import.rst 2011-10-07 00:55:06 +0000
+++ doc/source/management/innodb_expand_import.rst 2012-08-15 14:13:58 +0000
@@ -10,6 +10,9 @@
1010
11The normal version can import only the backed-up .ibd file at the same place.11The normal version can import only the backed-up .ibd file at the same place.
1212
13.. note::
14
15 This feature is unsupported with InnoDB data files created with MySQL 5.0 and MySQL 5.1 prior to version 5.1.7 due to InnoDB file format limitation. It may work in some cases, but may result in crashes on import as well, see bug :bug:`1000221` and bug :bug:`727704` for examples and details.
1316
14Example17Example
15=======18=======
@@ -128,7 +131,7 @@
128.. lock all tables in the database ``example``131.. lock all tables in the database ``example``
129.. "ALTER TABLE ... DISCARD TABLESPACE" for all tables in ``exmple``132.. "ALTER TABLE ... DISCARD TABLESPACE" for all tables in ``exmple``
130.. unlock all tables in the database ``example``133.. unlock all tables in the database ``example``
131.. (and we need to get all create table clause (e.g. "|MySQL|dump --no-data"))134.. (and we need to get all create table clause (e.g. "mysqldump --no-data"))
132.. obtain *.ibd *.exp as exported files135.. obtain *.ibd *.exp as exported files
133.. Target: (innodb_expand_import should be 1)136.. Target: (innodb_expand_import should be 1)
134137
135138
=== modified file 'doc/source/management/innodb_fast_index_creation.rst'
--- doc/source/management/innodb_fast_index_creation.rst 2011-10-07 00:55:06 +0000
+++ doc/source/management/innodb_fast_index_creation.rst 2012-08-15 14:13:58 +0000
@@ -4,7 +4,7 @@
4 Fast Index Creation4 Fast Index Creation
5=====================5=====================
66
7Percona has implemented several changes related to |MySQL| 's fast index creation feature. This feature extends the ``ALTER TABLE`` command by adding a new clause that provides online index renaming capability, that is renaming indexes without rebuilding the whole table.7Percona has implemented several changes related to |MySQL|'s fast index creation feature. Extended features, besides disabling :variable:`fast_index_creation`, can be enabled with :variable:`expand_fast_index_creation`.
88
9Disabling Fast Index Creation9Disabling Fast Index Creation
10=============================10=============================
@@ -14,27 +14,6 @@
14This feature implements a session variable that disables fast index creation. This causes indexes to be created in the way they were created before fast index creation was implemented. While this is slower, it avoids the problem of data dictionary inconsistency between |MySQL| and |InnoDB|.14This feature implements a session variable that disables fast index creation. This causes indexes to be created in the way they were created before fast index creation was implemented. While this is slower, it avoids the problem of data dictionary inconsistency between |MySQL| and |InnoDB|.
1515
1616
17:command:`mysqldump`
18--------------------
19
20A new option, ``--innodb-optimize-keys``, was implemented in :command:`mysqldump`. It changes the way |InnoDB| tables are dumped, so that secondary and foreign keys are created after loading the data, thus taking advantage of fast index creation. More specifically:
21
22 * ``KEY``, ``UNIQUE KEY``, and ``CONSTRAINT`` clauses are omitted from ``CREATE TABLE`` statements corresponding to |InnoDB| tables.
23
24 * An additional ``ALTER TABLE`` is issued after dumping the data, in order to create the previously omitted keys.
25
26Delaying foreign key creation does not introduce any additional risks, as :command:`mysqldump` always prepends its output with ``SET FOREIGN_KEY_CHECKS=0`` anyway.
27
28
29``ALTER TABLE``
30---------------
31
32When ``ALTER TABLE`` requires a table copy, secondary keys are now dropped and recreated later, after copying the data. The following restrictions apply:
33
34 * Only non-unique keys can be involved in this optimization.
35
36 * If the table contains foreign keys, or a foreign key is being added as a part of the current ``ALTER TABLE`` statement, the optimization is disabled for all keys.
37
38``OPTIMIZE TABLE``17``OPTIMIZE TABLE``
39------------------18------------------
4019
4120
=== modified file 'doc/source/management/innodb_lru_dump_restore.rst'
--- doc/source/management/innodb_lru_dump_restore.rst 2012-04-21 07:20:03 +0000
+++ doc/source/management/innodb_lru_dump_restore.rst 2012-08-15 14:13:58 +0000
@@ -135,4 +135,4 @@
135Other reading135Other reading
136=============136=============
137137
138 * `Save / restore buffer pool <http://www.|MySQL|performanceblog.com/2010/01/20/|XtraDB|-feature-save-restore-buffer-pool/>`_138 * `Save / restore buffer pool <http://www.mysqlperformanceblog.com/2010/01/20/XtraDB-feature-save-restore-buffer-pool/>`_
139139
=== added directory 'doc/source/percona-theme'
=== removed directory 'doc/source/percona-theme'
=== added file 'doc/source/percona-theme/layout.html'
--- doc/source/percona-theme/layout.html 1970-01-01 00:00:00 +0000
+++ doc/source/percona-theme/layout.html 2012-08-15 14:13:58 +0000
@@ -0,0 +1,407 @@
1{#
2 basic/layout.html
3 ~~~~~~~~~~~~~~~~~
4
5 Master layout template for Sphinx themes.
6
7 :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
8 :license: BSD, see LICENSE for details.
9#}
10{%- block doctype -%}
11<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
12 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
13{%- endblock %}
14{%- set reldelim1 = reldelim1 is not defined and ' &raquo;' or reldelim1 %}
15{%- set reldelim2 = reldelim2 is not defined and ' |' or reldelim2 %}
16{%- set render_sidebar = (not embedded) and (not theme_nosidebar|tobool) and
17 (sidebars != []) %}
18{%- set url_root = pathto('', 1) %}
19{# XXX necessary? #}
20{%- if url_root == '#' %}{% set url_root = '' %}{% endif %}
21{%- if not embedded and docstitle %}
22 {%- set titlesuffix = " &mdash; "|safe + docstitle|e %}
23{%- else %}
24 {%- set titlesuffix = "" %}
25{%- endif %}
26
27{%- macro relbar() %}
28 <div class="related">
29 <h3>{{ _('Navigation') }}</h3>
30 <ul>
31 {%- for rellink in rellinks %}
32 <li class="right" {% if loop.first %}style="margin-right: 10px"{% endif %}>
33 <a href="{{ pathto(rellink[0]) }}" title="{{ rellink[1]|striptags|e }}"
34 {{ accesskey(rellink[2]) }}>{{ rellink[3] }}</a>
35 {%- if not loop.first %}{{ reldelim2 }}{% endif %}</li>
36 {%- endfor %}
37 {%- block rootrellink %}
38 <li><a href="{{ pathto(master_doc) }}">{{ shorttitle|e }}</a>{{ reldelim1 }}</li>
39 {%- endblock %}
40 {%- for parent in parents %}
41 <li><a href="{{ parent.link|e }}" {% if loop.last %}{{ accesskey("U") }}{% endif %}>{{ parent.title }}</a>{{ reldelim1 }}</li>
42 {%- endfor %}
43 {%- block relbaritems %} {% endblock %}
44 </ul>
45 </div>
46{%- endmacro %}
47
48{%- macro sidebar() %}
49 {%- if render_sidebar %}
50 <div class="sphinxsidebar">
51 <div class="sphinxsidebarwrapper">
52
53 <div class="side-column-block"><a href="http://www.percona.com/software/percona-server/"><img alt="Percona Server" src="http://s2.percona.com/logo_percona_server_new.png" /></a></div>
54
55 <div class="side-column-block">
56 <div class="header">Call Us</div>
57 <div class="content">
58 <div class="numbers">
59 <div style="padding-bottom: 4px">
60 +1-888-316-9775 (USA - Sales)<br>
61 +1-208-473-2904 (USA - Sales)
62 </div>
63 <div style="padding-bottom: 4px;">
64 +44-208-133-0309 (UK - Sales)
65 </div>
66 <div style="padding-bottom: 4px;">
67 +1-877-862-4316 (Emergency)
68 </div>
69 <div>
70 +1-855-55TRAIN (Training)<br>
71 +1-925-271-5054 (Training)
72 </div>
73 </div>
74 </div>
75 </div>
76
77 <div class="side-column-block">
78 <div class="a-btn-container">
79 <a title="Download PDF Manual for Percona Server 5.1" href="http://form.percona.com/PerconaServer51OperationsManual2.html" class="a-btn-new">
80 <span class="a-btn-text">Download Manual</span>
81 <span class="a-btn-fixed-slide-text">PDF for version 5.1</span>
82 <span class="a-btn-icon-right"><span></span></span>
83 </a>
84 </div></div>
85
86 <div class="percona_com_ad" style="width:220px;"><script type="text/javascript" src="http://www.percona.com/ads.php?size=220x120"></script></div>
87
88 {%- if sidebars != None %}
89 {#- new style sidebar: explicitly include/exclude templates #}
90 {%- for sidebartemplate in sidebars %}
91 {%- include sidebartemplate %}
92 {%- endfor %}
93 {%- else %}
94 {#- old style sidebars: using blocks -- should be deprecated #}
95 {%- block serverseries %}
96 <div class="side-column-block">
97 <h3>Percona Server Series</h3>
98 <ul><li><a href="http://www.percona.com/doc/percona-server/5.1/">Percona Server 5.1</a></li><li><a href="http://www.percona.com/doc/percona-server/5.5/">Percona Server 5.5</a></li></ul>
99 </div>
100 {%- endblock %}
101 {%- block sidebartoc %}
102 {%- include "localtoc.html" %}
103 {%- endblock %}
104 {%- block sidebarrel %}
105 {%- include "relations.html" %}
106 {%- endblock %}
107 {%- block sidebarsourcelink %}
108 {%- include "sourcelink.html" %}
109 {%- endblock %}
110 {%- if customsidebar %}
111 {%- include customsidebar %}
112 {%- endif %}
113 {%- block sidebarsearch %}
114 {%- include "searchbox.html" %}
115 {%- endblock %}
116 {%- endif %}
117<br /><br />
118 <div class="side-column-block">
119 <ul class="side-contact-buttons">
120 <li><a href="http://form.percona.com/ContactMe.html" title="Contact Me" class="contact-me"><span>Contact Me</span></a></li>
121 <li><a href="http://www.percona.com/webinars/" title="Attend a Webinar" class="webinar"><span>Attend a Webinar</span></a></li>
122 <li><a href="http://www.percona.com/downloads/" title="Download Software" class="download-software"><span>Download Software</span></a></li>
123 <li><a href="http://www.percona.com/subscribe/" title="Register For Newsletters" class="newsletters"><span>Register For Newsletters</span></a></li>
124 </ul>
125 </div>
126
127 </div>
128 </div>
129 {%- endif %}
130{%- endmacro %}
131
132{%- macro script() %}
133 <script type="text/javascript">
134 var DOCUMENTATION_OPTIONS = {
135 URL_ROOT: '{{ url_root }}',
136 VERSION: '{{ release|e }}',
137 COLLAPSE_INDEX: false,
138 FILE_SUFFIX: '{{ '' if no_search_suffix else file_suffix }}',
139 HAS_SOURCE: {{ has_source|lower }}
140 };
141 </script>
142 {%- for scriptfile in script_files %}
143 <script type="text/javascript" src="{{ pathto(scriptfile, 1) }}"></script>
144 {%- endfor %}
145{%- endmacro %}
146
147{%- macro css() %}
148 <link rel="stylesheet" href="{{ pathto('_static/percona.com.css', 1) }}" type="text/css" />
149 <link rel="stylesheet" href="{{ pathto('_static/' + style, 1) }}" type="text/css" />
150 <link rel="stylesheet" href="{{ pathto('_static/pygments.css', 1) }}" type="text/css" />
151 {%- for cssfile in css_files %}
152 <link rel="stylesheet" href="{{ pathto(cssfile, 1) }}" type="text/css" />
153 {%- endfor %}
154{%- endmacro %}
155
156<html xmlns="http://www.w3.org/1999/xhtml">
157 <head>
158 <meta http-equiv="Content-Type" content="text/html; charset={{ encoding }}" />
159 {{ metatags }}
160 {%- block htmltitle %}
161 <title>{{ title|striptags|e }}{{ titlesuffix }}</title>
162 {%- endblock %}
163
164 {{ css() }}
165 {%- if not embedded %}
166 {{ script() }}
167 {%- if use_opensearch %}
168 <link rel="search" type="application/opensearchdescription+xml"
169 title="{% trans docstitle=docstitle|e %}Search within {{ docstitle }}{% endtrans %}"
170 href="{{ pathto('_static/opensearch.xml', 1) }}"/>
171 {%- endif %}
172
173<script src="{{ pathto('_static/percona.com.js', 1)}}" type="text/javascript"></script>
174
175 {%- if favicon %}
176 <link rel="shortcut icon" href="{{ pathto('_static/' + favicon, 1) }}"/>
177 {%- endif %}
178 {%- endif %}
179{%- block linktags %}
180 {%- if hasdoc('about') %}
181 <link rel="author" title="{{ _('About these documents') }}" href="{{ pathto('about') }}" />
182 {%- endif %}
183 {%- if hasdoc('genindex') %}
184 <link rel="index" title="{{ _('Index') }}" href="{{ pathto('genindex') }}" />
185 {%- endif %}
186 {%- if hasdoc('search') %}
187 <link rel="search" title="{{ _('Search') }}" href="{{ pathto('search') }}" />
188 {%- endif %}
189 {%- if hasdoc('copyright') %}
190 <link rel="copyright" title="{{ _('Copyright') }}" href="{{ pathto('copyright') }}" />
191 {%- endif %}
192 <link rel="top" title="{{ docstitle|e }}" href="{{ pathto('index') }}" />
193 {%- if parents %}
194 <link rel="up" title="{{ parents[-1].title|striptags|e }}" href="{{ parents[-1].link|e }}" />
195 {%- endif %}
196 {%- if next %}
197 <link rel="next" title="{{ next.title|striptags|e }}" href="{{ next.link|e }}" />
198 {%- endif %}
199 {%- if prev %}
200 <link rel="prev" title="{{ prev.title|striptags|e }}" href="{{ prev.link|e }}" />
201 {%- endif %}
202{%- endblock %}
203{%- block extrahead %} {% endblock %}
204 </head>
205 <body>
206
207{%- block header %}
208
209 <!-- <div id="stickywrapper"> -->
210 <!-- <div id="stickycontent"> -->
211 <div id="header"><div class="header">
212 <div class="logo"><a href="http://www.percona.com/" onfocus="this.blur()"><img src="http://s3.percona.com/ui-logo.png" alt="Percona Performance Consulting Experts" width="240" height="55" /></a></div>
213 <div class="right">
214 <div class="searchlink"><a onmouseover="SEARCH.Open()"><img id="searchlink-anchor" src="http://s2.percona.com/ui-search.png" alt="" /></a></div>
215 <span class="inv"><![CDATA[<noindex>]]></span>
216 <div class="navicontainer"><div class="navi">
217 <span id="navilink-span-about-us" ><a id="navilink-a-about-us" href="/about-us/">About Us</a></span><span id="navilink-span-mysql-consulting" ><a id="navilink-a-mysql-consulting" href="/mysql-consulting/">Consulting</a></span><span id="navilink-span-support" ><a id="navilink-a-support" href="/mysql-support/">Support</a></span><span id="navilink-span-training" ><a id="navilink-a-training" href="/training/">Training</a></span><span id="navilink-span-development" ><a id="navilink-a-development" href="/development/">Development</a></span><span id="navilink-span-software" ><a id="navilink-a-software" href="/software/">Software</a></span><span id="navilink-span-events" ><a id="navilink-a-events" href="/live/">Events</a></span><span id="navilink-span-contact" ><a id="navilink-a-contact" href="/contact/">Contact Us</a></span>
218 </div></div>
219
220 <span class="inv"><![CDATA[</noindex>]]></span>
221 <span class="inv"><![CDATA[</noindex>]]></span>
222 </div>
223 </div></div>
224 <div id="stripe"></div>
225
226{% endblock %}
227
228 <!-- <div id="stripe"></div> -->
229
230{%- block content %}
231
232
233
234 {%- block sidebar1 %} {# possible location for sidebar #} {% endblock %}
235
236 <div class="document">
237
238
239
240 {%- block document %}
241 <div class="documentwrapper">
242 {%- if render_sidebar %}
243 <div class="bodywrapper">
244 {%- endif %}
245
246 {%- block relbar1 %}{{ relbar() }}{% endblock %}
247
248 <div class="body">
249 {% block body %} {% endblock %}
250 </div>
251
252 {%- block relbar2 %}{{ relbar() }}
253
254 {%- if render_sidebar %}
255 <div class="percona_com_ad" style="margin:auto;width:630px;"><script type="text/javascript" src="http://www.percona.com/ads.php?size=630x80"></script></div>
256 </div>
257 {%- endif %}
258
259
260
261 </div>
262
263 {%- endblock %}
264
265 {%- block sidebar2 %}{{ sidebar() }}{% endblock %}
266
267 <div class="clearer"></div>
268
269 {%- if last_updated %}
270 {% trans last_updated=last_updated|e %}Last updated on {{ last_updated }}.{% endtrans %}
271 {%- endif %}
272
273
274
275
276 <div class="license">
277
278 {%- if show_copyright %}
279 {%- if hasdoc('copyright') %}
280 {% trans path=pathto('copyright'), copyright=copyright|e %}&copy; <a href="{{ path }}">Copyright</a> {{ copyright }}.{% endtrans %}
281 {%- else %}
282 {% trans copyright=copyright|e %}&copy; Copyright {{ copyright }}.{% endtrans %}
283 {%- endif %}
284 {%- endif %}
285
286 <br />
287 Except where otherwise noted, this documentation is licensed under the following license:
288 <br />
289 <a class="urlextern" rel="license" href="http://creativecommons.org/licenses/by-sa/2.0/">
290 CC Attribution-ShareAlike 2.0 Generic</a><br />
291
292 {%- if show_sphinx %}
293 {% trans sphinx_version=sphinx_version|e %}Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> {{ sphinx_version }}.{% endtrans %}
294 {%- endif %}
295
296 </div>
297
298 </div>
299 {%- endblock %}
300
301 {% endblock %}
302
303{%- block footer %}
304
305 <div class="file-bugs">
306 This documentation is developed in Launchpad as part of the <a href="https://code.launchpad.net/percona-server">Percona Server source code</a>.<br/>
307 If you spotted innacuracies, errors, don't understood it or you think something is missing or should be improved, please <a href="https://bugs.launchpad.net/percona-server/+filebug?field.tags=doc&amp;field.comment=[In:Percona Server Documentation]&amp;?field.tags=doc&amp;field.title=[DOC] ">file a bug</a>.
308
309 </div>
310
311 <div id="footer">
312
313 <div class="footer">
314 <div class="logo"><img width="110" height="25" alt="" src="{{ pathto('_static/ui-footer-logo.png', 1) }}">
315 </div>
316
317 <div class="text">
318 <span class="inv"><!--[CDATA[<noindex-->]]&gt;</span>
319 Call us: 1-888-316-9775 • <a href="/contact">Contact Us</a><br>
320 MySQL and InnoDB are trademarks of Oracle Corp.<br>
321 Proudly running <a href="/software/percona-server/">Percona Server<span id="recentServerVersion"></span></a><br>
322 Copyright &copy; 2006-2011 Percona Inc.<br>
323 <a href="/about-us/policies/">Copyright, Trademark, and Privacy Policy</a> • <a href="/sitemap/">Sitemap</a>
324 <span class="inv"><!--[CDATA[</noindex-->]]&gt;</span>
325 </div>
326 </div>
327
328 </div>
329{%- endblock %}
330<span class="inv"><!--[CDATA[<noindex-->]]&gt;</span>
331<div id="submenus">
332 <div class="navi-dropdown" id="navi-dropdown-about-us">
333 <div class="navi-dropdown-header-l"><!-- //--></div>
334 <div class="navi-dropdown-content"><div class="item"><a href="/about-us/our-mission/">Our Mission</a></div><div class="item"><a href="/about-us/why-percona/">Why Percona?</a></div><div class="item"><a href="/about-us/procedures/">Coordinating with Percona</a></div><div class="item"><a href="/about-us/customers/">Customers</a></div><div class="item"><a href="/webinars/">Webinars</a></div><div class="item"><a href="/about-us/mysql-case-studies/">MySQL Case Studies</a></div><div class="item"><a href="/about-us/our-team/">Our Team</a></div><div class="item"><a href="/about-us/books/">Our Books</a></div><div class="item"><a href="/about-us/blogs/">Our Blogs</a></div><div class="item"><a href="/about-us/mysql-white-papers/">MySQL White Papers</a></div><div class="item"><a href="/about-us/conferences/">Conferences</a></div><div class="item"><a href="/about-us/presentations/">Presentations</a></div><div class="item"><a href="/about-us/newsletters/">Newsletters</a></div><div class="item"><a href="/about-us/pressreleases/">Press Releases</a></div><div class="item"><a href="/about-us/careers/">Careers</a></div> </div>
335 <div class="navi-dropdown-footer"><!-- //--></div>
336 </div><div class="navi-dropdown" id="navi-dropdown-mysql-consulting">
337 <div class="navi-dropdown-header-l"><!-- //--></div>
338 <div class="navi-dropdown-content"><div class="item"><a href="/mysql-consulting/overview/">MySQL Consulting Overview</a></div><div class="item"><a href="/mysql-consulting/prices/">MySQL Consulting Prices</a></div><div class="item"><a href="/mysql-consulting/architecture/">MySQL Architecture &amp; Design</a></div><div class="item"><a href="/mysql-consulting/mysql-backups/">MySQL Backups</a></div><div class="item"><a href="/mysql-consulting/cloud-computing/">MySQL Cloud Solutions</a></div><div class="item"><a href="/mysql-consulting/cluster/">MySQL Cluster Consulting</a></div><div class="item"><a href="/mysql-consulting/data-warehousing/">MySQL Data Warehousing</a></div><div class="item"><a href="/mysql-consulting/data-recovery/">MySQL Data Recovery</a></div><div class="item"><a href="/mysql-consulting/high-availability/">MySQL High Availability</a></div><div class="item"><a href="/mysql-consulting/mysql-monitoring-graphing/">MySQL Monitoring &amp; Graphing</a></div><div class="item"><a href="/mysql-consulting/mysql-onsite-consulting/">MySQL Onsite Consulting</a></div><div class="item"><a href="/mysql-consulting/performance-audit/">MySQL Performance Audit</a></div><div class="item"><a href="/mysql-consulting/remote-dba/">MySQL Remote DBA</a></div><div class="item"><a href="/mysql-consulting/mysql-replication/">MySQL Replication</a></div><div class="item"><a href="/mysql-consulting/upgrade/">MySQL Version Upgrades</a></div><div class="item"><a href="/mysql-consulting/24x7-emergency/">Emergency 24&times;7 Consulting</a></div><div class="item"><a href="/mysql-consulting/migration/">Migration to MySQL</a></div><div class="item"><a href="/drizzle-consulting/">Drizzle Consulting</a></div><div class="item"><a href="/mysql-consulting/sphinx/">Sphinx Consulting</a></div><div class="item"><a href="/mysql-consulting/drbd/">DRBD Consulting</a></div><div class="item"><a href="/mysql-consulting/memcached/">Memcached Consulting</a></div><div class="item"><a href="/mysql-consulting/other-services/">Other Consulting Services</a></div> </div>
339 <div class="navi-dropdown-footer"><!-- //--></div>
340 </div><div class="navi-dropdown" id="navi-dropdown-support">
341 <div class="navi-dropdown-header-l"><!-- //--></div>
342 <div class="navi-dropdown-content"><div class="item"><a href="/mysql-support/">MySQL Support Overview</a></div><div class="item"><a href="/prices/mysql-support/">MySQL Support Prices</a></div><div class="item"><a href="/mysql-support/policies/">MySQL Support Policies</a></div><div class="item"><a href="/mysql-support/consulting-vs-support/">Consulting vs. Support</a></div><div class="item"><a href="https://customers.percona.com">Customer Portal Login</a></div> </div>
343 <div class="navi-dropdown-footer"><!-- //--></div>
344 </div><div class="navi-dropdown" id="navi-dropdown-training">
345 <div class="navi-dropdown-header-l"><!-- //--></div>
346 <div class="navi-dropdown-content"><div class="item"><a href="/training/">MySQL Training Overview</a></div><div class="item"><a href="/prices/training/">MySQL Training Prices</a></div><div class="item"><a href="/training/classes/dba/">MySQL DBA Training</a></div><div class="item"><a href="/training/classes/developers/">MySQL Developer Training</a></div><div class="item"><a href="/training/classes/operations/">MySQL Operations Training</a></div><div class="item"><a href="/training/classes/innodb/">InnoDB &amp; XtraDB Training</a></div><div class="item"><a href="/training/classes/custom-onsite/">Custom Onsite Training</a></div> </div>
347 <div class="navi-dropdown-footer"><!-- //--></div>
348 </div><div class="navi-dropdown" id="navi-dropdown-development">
349 <div class="navi-dropdown-header-l"><!-- //--></div>
350 <div class="navi-dropdown-content"><div class="item"><a href="/development/mysql/">MySQL Development Overview</a></div><div class="item"><a href="/development/prices/">Custom Development Prices</a></div><div class="item"><a href="/development/maintenance/">MySQL Support Overview</a></div><div class="item"><a href="/development/benchmarking/">Custom Product Evaluation</a></div><div class="item"><a href="/development/maatkit/">Custom Maatkit Development</a></div><div class="item"><a href="/development/custom-tools/">Custom Tools Development</a></div> </div>
351 <div class="navi-dropdown-footer"><!-- //--></div>
352 </div><div class="navi-dropdown" id="navi-dropdown-software">
353 <div class="navi-dropdown-header-l"><!-- //--></div>
354 <div class="navi-dropdown-content"><div class="item"><a href="/software/">Percona Software for MySQL</a></div><div class="item"><a href="/software/percona-server/">Percona Server with XtraDB</a></div><div class="item"><a href="/software/percona-xtradb-cluster/">Percona XtraDB Cluster</a></div><div class="item"><a href="/software/percona-xtrabackup/">Percona XtraBackup</a></div><div class="item"><a href="/software/mysql-innodb-data-recovery-tools/">Data Recovery Toolkit</a></div><div class="item"><a href="/software/percona-xtradb/">Percona XtraDB</a></div><div class="item"><a href="/software/percona-toolkit/">Percona Toolkit</a></div><div class="item"><a href="/software/percona-monitoring-plugins/">Percona Monitoring Plugins</a></div><div class="item"><a href="/prices/software/">Software Prices</a></div><div class="item"><a href="/downloads/">Downloads</a></div><div class="item"><a href="/software/repositories/">Repositories</a></div><div class="item"><a href="/software/documentation/">Documentation</a></div><div class="item"><a href="http://forum.percona.com">Forum</a></div><div class="item"><a href="http://groups.google.com/group/percona-discussion">Google Discussion</a></div><div class="item"><a href="https://launchpad.net/percona-server">Launchpad</a></div> </div>
355 <div class="navi-dropdown-footer"><!-- //--></div>
356 </div><div class="navi-dropdown" id="navi-dropdown-events">
357 <div class="navi-dropdown-header-r"><!-- //--></div>
358 <div class="navi-dropdown-content"><div class="item"><a href="/live/nyc-2012/">New York 2012</a></div><div class="item"><a href="/live/london-2012/">London 2012</a></div><div class="item"><a href="/live/mysql-conference-2013/">MySQL Conference &amp; Expo 2013</a></div><div class="item"><a href="/live/mysql-conference-2012/">MySQL Conference &amp; Expo 2012</a></div><div class="item"><a href="/live/">Previous Percona Live Events</a></div> </div>
359 <div class="navi-dropdown-footer"><!-- //--></div>
360 </div><div class="navi-dropdown" id="navi-dropdown-contact">
361 <div class="navi-dropdown-header-r"><!-- //--></div>
362 <div class="navi-dropdown-content"><div class="item"><a href="/contact/24x7-emergency/">24&times;7 Emergency</a></div><div class="item"><a href="/contact/sales/">Sales &amp; General Inquiries</a></div><div class="item"><a href="/contact/billing/">Billing Inquiries</a></div><div class="item"><a href="https://customers.percona.com">Customer Portal Login</a></div><div class="item"><a href="/contact/phone-directory/">Phone Directory</a></div><div class="item"><a href="/subscribe/">Subscribe to Newsletter</a></div> </div>
363 <div class="navi-dropdown-footer"><!-- //--></div>
364 </div>
365 <div id="search-dropdown" class="search-dropdown">
366 <div class="search-dropdown-header"><!-- //--></div>
367 <div class="search-dropdown-content">
368 <div class="search-info">Search Percona.com:</div>
369 <form method="get" action="http://search.percona.com/search/" id="search-form">
370 <div class="form"><input type="text" id="search-input" name="q" maxlength="100"></div>
371 </form>
372 </div>
373 <div class="search-dropdown-footer"><!-- //--></div>
374 </div>
375</div>
376<div id="stats">
377<!-- GA //-->
378 <script src="http://www.percona.com/static/js/urchin.js" type="text/javascript"></script>
379 <script type="text/javascript">
380 _uacct = "UA-343802-3";
381 urchinTracker();
382 </script>
383<!-- /GA //-->
384<!-- NAVI //-->
385<script type="text/javascript">//<![CDATA[
386var navi = [{id:"about-us", direction: "l"},{id:"mysql-consulting", direction: "l"},{id:"support", direction: "l"},{id:"training", direction: "l"},{id:"development", direction: "l"},{id:"software", direction: "l"},{id:"events", direction: "r"},{id:"contact", direction: "r"}];
387for(var i = 0, c = navi.length; i < c; i++) {
388window.jQuery('#navilink-a-' + navi[i].id).bind('mouseover',{id: navi[i].id, direction:navi[i].direction}, function(e) { NAVI.Open(e.data.id, e.data.direction); } );
389}
390window.jQuery('#search-form').bind('submit', function() { window.location.href = jQuery('#search-form').attr('action') + jQuery('#search-input').val(); return false; });
391//]]></script>
392<!-- /NAVI //-->
393<script type="text/javascript">
394//<![CDATA[
395Percona.host = 'www.percona.com';
396Percona.getRecentServerVersion('#recentServerVersion');
397//]]>
398</script>
399</div>
400 </body>
401</html>
402
403
404
405{% if theme_collapsiblesidebar|tobool %}
406{% set script_files = script_files + ['_static/sidebar.js'] %}
407{% endif %}
0408
=== removed file 'doc/source/percona-theme/layout.html'
--- doc/source/percona-theme/layout.html 2012-04-12 14:06:33 +0000
+++ doc/source/percona-theme/layout.html 1970-01-01 00:00:00 +0000
@@ -1,503 +0,0 @@
1{#
2 basic/layout.html
3 ~~~~~~~~~~~~~~~~~
4
5 Master layout template for Sphinx themes.
6
7 :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
8 :license: BSD, see LICENSE for details.
9#}
10{%- block doctype -%}
11<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
12 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
13{%- endblock %}
14{%- set reldelim1 = reldelim1 is not defined and ' &raquo;' or reldelim1 %}
15{%- set reldelim2 = reldelim2 is not defined and ' |' or reldelim2 %}
16{%- set render_sidebar = (not embedded) and (not theme_nosidebar|tobool) and
17 (sidebars != []) %}
18{%- set url_root = pathto('', 1) %}
19{# XXX necessary? #}
20{%- if url_root == '#' %}{% set url_root = '' %}{% endif %}
21{%- if not embedded and docstitle %}
22 {%- set titlesuffix = " &mdash; "|safe + docstitle|e %}
23{%- else %}
24 {%- set titlesuffix = "" %}
25{%- endif %}
26
27{%- macro relbar() %}
28 <div class="related">
29 <h3>{{ _('Navigation') }}</h3>
30 <ul>
31 {%- for rellink in rellinks %}
32 <li class="right" {% if loop.first %}style="margin-right: 10px"{% endif %}>
33 <a href="{{ pathto(rellink[0]) }}" title="{{ rellink[1]|striptags|e }}"
34 {{ accesskey(rellink[2]) }}>{{ rellink[3] }}</a>
35 {%- if not loop.first %}{{ reldelim2 }}{% endif %}</li>
36 {%- endfor %}
37 {%- block rootrellink %}
38 <li><a href="{{ pathto(master_doc) }}">{{ shorttitle|e }}</a>{{ reldelim1 }}</li>
39 {%- endblock %}
40 {%- for parent in parents %}
41 <li><a href="{{ parent.link|e }}" {% if loop.last %}{{ accesskey("U") }}{% endif %}>{{ parent.title }}</a>{{ reldelim1 }}</li>
42 {%- endfor %}
43 {%- block relbaritems %} {% endblock %}
44 </ul>
45 </div>
46{%- endmacro %}
47
48{%- macro sidebar() %}
49 {%- if render_sidebar %}
50 <div class="sphinxsidebar">
51 <div class="sphinxsidebarwrapper">
52
53 <div class="side-column-block"><a href="http://www.percona.com/software/percona-server/"><img alt="Percona Server" src="http://s2.percona.com/logo_percona_server_new.png" /></a></div>
54
55 <div class="side-column-block">
56 <div class="header">Call Us</div>
57 <div class="content">
58 <div class="numbers">
59 <div style="padding-bottom: 4px">
60 +1-888-316-9775 (USA - Sales)<br>
61 +1-208-473-2904 (USA - Sales)
62 </div>
63 <div style="padding-bottom: 4px;">
64 +44-208-133-0309 (UK - Sales)
65 </div>
66 <div style="padding-bottom: 4px;">
67 +1-877-862-4316 (Emergency)
68 </div>
69 <div>
70 +1-855-55TRAIN (Training)<br>
71 +1-925-271-5054 (Training)
72 </div>
73 </div>
74 </div>
75 </div>
76
77 <div class="side-column-block">
78
79 <div class="a-btn-container"><a title="Download PDF Manual for Percona Server 5.1" href="http://form.percona.com/PerconaServer51OperationsManual2.html" class="a-btn-new"><span class="a-btn-text">Download Manual</span><span class="a-btn-fixed-slide-text">PDF for 5.1</span><span class="a-btn-icon-right"><span></span></span></a>
80 </div>
81 </div>
82 {%- if sidebars != None %}
83 {#- new style sidebar: explicitly include/exclude templates #}
84 {%- for sidebartemplate in sidebars %}
85 {%- include sidebartemplate %}
86 {%- endfor %}
87 {%- else %}
88 {#- old style sidebars: using blocks -- should be deprecated #}
89 {%- block serverseries %}
90 <div class="side-column-block">
91 <h3>Percona Server Series</h3>
92 <ul>
93 <li><a href="http://www.percona.com/doc/percona-server/5.5/">Percona Server 5.5</a></li>
94 <li><a href="http://www.percona.com/doc/percona-server/5.1/">Percona Server 5.1</a></li>
95 </ul>
96 </div>
97 {%- endblock %}
98 {%- block sidebartoc %}
99 {%- include "localtoc.html" %}
100 {%- endblock %}
101 {%- block sidebarrel %}
102 {%- include "relations.html" %}
103 {%- endblock %}
104 {%- block sidebarsourcelink %}
105 {%- include "sourcelink.html" %}
106 {%- endblock %}
107 {%- if customsidebar %}
108 {%- include customsidebar %}
109 {%- endif %}
110 {%- block sidebarsearch %}
111 {%- include "searchbox.html" %}
112 {%- endblock %}
113 {%- endif %}
114<br /><br />
115 <div class="side-column-block">
116 <ul class="side-contact-buttons">
117 <li><a href="http://form.percona.com/ContactMe.html" title="Contact Me" class="contact-me"><span>Contact Me</span></a></li>
118 <li><a href="http://www.percona.com/webinars/" title="Attend a Webinar" class="webinar"><span>Attend a Webinar</span></a></li>
119 <li><a href="http://www.percona.com/downloads/" title="Download Software" class="download-software"><span>Download Software</span></a></li>
120 <li><a href="http://www.percona.com/subscribe/" title="Register For Newsletters" class="newsletters"><span>Register For Newsletters</span></a></li>
121 </ul>
122 </div>
123
124 </div>
125 </div>
126 {%- endif %}
127{%- endmacro %}
128
129{%- macro script() %}
130 <script type="text/javascript">
131 var DOCUMENTATION_OPTIONS = {
132 URL_ROOT: '{{ url_root }}',
133 VERSION: '{{ release|e }}',
134 COLLAPSE_INDEX: false,
135 FILE_SUFFIX: '{{ '' if no_search_suffix else file_suffix }}',
136 HAS_SOURCE: {{ has_source|lower }}
137 };
138 </script>
139 {%- for scriptfile in script_files %}
140 <script type="text/javascript" src="{{ pathto(scriptfile, 1) }}"></script>
141 {%- endfor %}
142{%- endmacro %}
143
144{%- macro css() %}
145 <link rel="stylesheet" href="{{ pathto('_static/percona.com.css', 1) }}" type="text/css" />
146 <link rel="stylesheet" href="{{ pathto('_static/' + style, 1) }}" type="text/css" />
147 <link rel="stylesheet" href="{{ pathto('_static/pygments.css', 1) }}" type="text/css" />
148 {%- for cssfile in css_files %}
149 <link rel="stylesheet" href="{{ pathto(cssfile, 1) }}" type="text/css" />
150 {%- endfor %}
151{%- endmacro %}
152
153<html xmlns="http://www.w3.org/1999/xhtml">
154 <head>
155 <meta http-equiv="Content-Type" content="text/html; charset={{ encoding }}" />
156 {{ metatags }}
157 {%- block htmltitle %}
158 <title>{{ title|striptags|e }}{{ titlesuffix }}</title>
159 {%- endblock %}
160
161 {{ css() }}
162 {%- if not embedded %}
163 {{ script() }}
164 {%- if use_opensearch %}
165 <link rel="search" type="application/opensearchdescription+xml"
166 title="{% trans docstitle=docstitle|e %}Search within {{ docstitle }}{% endtrans %}"
167 href="{{ pathto('_static/opensearch.xml', 1) }}"/>
168 {%- endif %}
169
170<script src="{{ pathto('_static/percona.com.js', 1)}}" type="text/javascript"></script>
171
172 {%- if favicon %}
173 <link rel="shortcut icon" href="{{ pathto('_static/' + favicon, 1) }}"/>
174 {%- endif %}
175 {%- endif %}
176{%- block linktags %}
177 {%- if hasdoc('about') %}
178 <link rel="author" title="{{ _('About these documents') }}" href="{{ pathto('about') }}" />
179 {%- endif %}
180 {%- if hasdoc('genindex') %}
181 <link rel="index" title="{{ _('Index') }}" href="{{ pathto('genindex') }}" />
182 {%- endif %}
183 {%- if hasdoc('search') %}
184 <link rel="search" title="{{ _('Search') }}" href="{{ pathto('search') }}" />
185 {%- endif %}
186 {%- if hasdoc('copyright') %}
187 <link rel="copyright" title="{{ _('Copyright') }}" href="{{ pathto('copyright') }}" />
188 {%- endif %}
189 <link rel="top" title="{{ docstitle|e }}" href="{{ pathto('index') }}" />
190 {%- if parents %}
191 <link rel="up" title="{{ parents[-1].title|striptags|e }}" href="{{ parents[-1].link|e }}" />
192 {%- endif %}
193 {%- if next %}
194 <link rel="next" title="{{ next.title|striptags|e }}" href="{{ next.link|e }}" />
195 {%- endif %}
196 {%- if prev %}
197 <link rel="prev" title="{{ prev.title|striptags|e }}" href="{{ prev.link|e }}" />
198 {%- endif %}
199{%- endblock %}
200{%- block extrahead %} {% endblock %}
201 </head>
202 <body>
203
204{%- block header %}
205
206 <!-- <div id="stickywrapper"> -->
207 <!-- <div id="stickycontent"> -->
208 <div id="header"><div class="header">
209 <div class="logo"><a href="http://www.percona.com/" onfocus="this.blur()"><img src="http://s3.percona.com/ui-logo.png" alt="Percona Performance Consulting Experts" width="240" height="55" /></a></div>
210 <div class="right">
211 <div class="searchlink"><a onmouseover="SEARCH.Open()"><img id="searchlink-anchor" src="http://s2.percona.com/ui-search.png" alt="" /></a></div>
212 <span class="inv"><![CDATA[<noindex>]]></span>
213 <div class="navicontainer"><div class="navi">
214 <span id="navilink-span-about-us" ><a id="navilink-a-about-us" href="http://www.percona.com/about-us/">About Us</a></span><span id="navilink-span-mysql-consulting" ><a id="navilink-a-mysql-consulting" href="http://www.percona.com/mysql-consulting/">Consulting</a></span><span id="navilink-span-support" ><a id="navilink-a-support" href="http://www.percona.com/mysql-support/">Support</a></span><span id="navilink-span-training" ><a id="navilink-a-training" href="http://www.percona.com/training/">Training</a></span><span id="navilink-span-development" ><a id="navilink-a-development" href="http://www.percona.com/development/">Development</a></span><span id="navilink-span-software" class="selected"><a class="selected" id="navilink-a-software" href="http://www.percona.com/software/">Software</a></span><span id="navilink-span-events" ><a id="navilink-a-events" href="http://www.percona.com/live/">Events</a></span><span id="navilink-span-contact" ><a id="navilink-a-contact" href="http://www.percona.com/contact/">Contact Us</a></span> </div></div>
215
216 <span class="inv"><![CDATA[</noindex>]]></span>
217 <span class="inv"><![CDATA[</noindex>]]></span>
218 </div>
219 </div></div>
220 <div id="stripe"></div>
221
222{% endblock %}
223
224 <!-- <div id="stripe"></div> -->
225
226{%- block content %}
227
228
229
230 {%- block sidebar1 %} {# possible location for sidebar #} {% endblock %}
231
232 <div class="document">
233
234
235
236 {%- block document %}
237 <div class="documentwrapper">
238 {%- if render_sidebar %}
239 <div class="bodywrapper">
240 {%- endif %}
241
242 {%- block relbar1 %}{{ relbar() }}{% endblock %}
243
244 <div class="body">
245 {% block body %} {% endblock %}
246 </div>
247
248 {%- block relbar2 %}{{ relbar() }}
249
250 {%- if render_sidebar %}
251 </div>
252 {%- endif %}
253
254
255
256 </div>
257
258 {%- endblock %}
259
260 {%- block sidebar2 %}{{ sidebar() }}{% endblock %}
261
262 <div class="clearer"></div>
263
264 {%- if last_updated %}
265 {% trans last_updated=last_updated|e %}Last updated on {{ last_updated }}.{% endtrans %}
266 {%- endif %}
267
268 <div class="license">
269
270 {%- if show_copyright %}
271 {%- if hasdoc('copyright') %}
272 {% trans path=pathto('copyright'), copyright=copyright|e %}&copy; <a href="{{ path }}">Copyright</a> {{ copyright }}.{% endtrans %}
273 {%- else %}
274 {% trans copyright=copyright|e %}&copy; Copyright {{ copyright }}.{% endtrans %}
275 {%- endif %}
276 {%- endif %}
277
278 <br />
279 Except where otherwise noted, this documentation is licensed under the following license:
280 <br />
281 <a class="urlextern" rel="license" href="http://creativecommons.org/licenses/by-sa/2.0/">
282 CC Attribution-ShareAlike 2.0 Generic</a><br />
283
284 {%- if show_sphinx %}
285 {% trans sphinx_version=sphinx_version|e %}Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> {{ sphinx_version }}.{% endtrans %}
286 {%- endif %}
287
288 </div>
289
290 </div>
291 {%- endblock %}
292
293 {% endblock %}
294
295{%- block footer %}
296
297 <div class="file-bugs">
298 This documentation is developed in Launchpad as part of the <a href="https://code.launchpad.net/percona-server">Percona Server source code</a>.<br/>
299 If you spotted innacuracies, errors, don't understood it or you think something is missing or should be improved, please <a href="https://bugs.launchpad.net/percona-server/+filebug?field.tags=doc&amp;field.comment=[In:Percona Server Documentation]&amp;?field.tags=doc&amp;field.title=[DOC] ">file a bug</a>.
300
301 </div>
302
303 <div id="footer">
304
305 <div class="footer">
306 <div class="logo"><img width="110" height="25" alt="" src="{{ pathto('_static/ui-footer-logo.png', 1) }}">
307 </div>
308
309 <div class="text">
310 <span class="inv"><!--[CDATA[<noindex-->]]&gt;</span>
311 Call us: 1-888-316-9775 • <a href="/contact">Contact Us</a><br>
312 MySQL and InnoDB are trademarks of Oracle Corp.<br>
313 Proudly running <a href="/software/percona-server/">Percona Server<span id="recentServerVersion"></span></a><br>
314 Copyright &copy; 2006-2011 Percona Inc.<br>
315 <a href="/about-us/policies/">Copyright, Trademark, and Privacy Policy</a> • <a href="/sitemap/">Sitemap</a>
316 <span class="inv"><!--[CDATA[</noindex-->]]&gt;</span>
317 </div>
318 </div>
319
320 </div>
321{%- endblock %}
322<span class="inv"><!--[CDATA[<noindex-->]]&gt;</span>
323<div id="submenus">
324 <div class="navi-dropdown" id="navi-dropdown-about-us">
325 <div class="navi-dropdown-header-l"><!-- //--></div>
326 <div class="navi-dropdown-content">
327 <div class="item"><a href="http://www.percona.com/about-us/our-mission/">Our Mission</a></div>
328 <div class="item"><a href="http://www.percona.com/about-us/why-percona/">Why Percona?</a></div>
329 <div class="item"><a href="http://www.percona.com/about-us/procedures/">Coordinating with Percona</a></div>
330 <div class="item"><a href="http://www.percona.com/about-us/customers/">Customers</a></div>
331 <div class="item"><a href="http://www.percona.com/webinars/">Webinars</a></div>
332 <div class="item"><a href="http://www.percona.com/about-us/mysql-case-studies/">MySQL Case Studies</a></div>
333 <div class="item"><a href="http://www.percona.com/about-us/our-team/">Our Team</a></div>
334
335 <div class="item"><a href="http://www.percona.com/about-us/books/">Our Books</a></div>
336 <div class="item"><a href="http://www.percona.com/about-us/blogs/">Our Blogs</a></div>
337 <div class="item"><a href="http://www.percona.com/about-us/mysql-white-papers/">MySQL White Papers</a></div>
338 <div class="item"><a href="http://www.percona.com/about-us/conferences/">Conferences</a></div>
339 <div class="item"><a href="http://www.percona.com/about-us/presentations/">Presentations</a></div>
340 <div class="item"><a href="http://www.percona.com/about-us/newsletters/">Newsletters</a></div>
341 <div class="item"><a href="http://www.percona.com/about-us/pressreleases/">Press Releases</a></div>
342 <div class="item"><a href="http://www.percona.com/about-us/percona-in-the-news/">In The News</a></div>
343 <div class="item"><a href="http://www.percona.com/about-us/careers/">Careers</a></div>
344
345 </div>
346 <div class="navi-dropdown-footer"><!-- //--></div>
347 </div>
348 <div class="navi-dropdown" id="navi-dropdown-mysql-consulting">
349 <div class="navi-dropdown-header-l"><!-- //--></div>
350 <div class="navi-dropdown-content">
351 <div class="item"><a href="http://www.percona.com/mysql-consulting/overview/">MySQL Consulting Overview</a></div>
352 <div class="item"><a href="http://www.percona.com/mysql-consulting/prices/">MySQL Consulting Prices</a></div>
353 <div class="item"><a href="http://www.percona.com/mysql-consulting/architecture/">MySQL Architecture &amp; Design</a></div>
354 <div class="item"><a href="http://www.percona.com/mysql-consulting/mysql-backups/">MySQL Backups</a></div>
355 <div class="item"><a href="http://www.percona.com/mysql-consulting/cloud-computing/">MySQL Cloud Solutions</a></div>
356
357 <div class="item"><a href="http://www.percona.com/mysql-consulting/cluster/">MySQL Cluster Consulting</a></div>
358 <div class="item"><a href="http://www.percona.com/mysql-consulting/data-warehousing/">MySQL Data Warehousing</a></div>
359 <div class="item"><a href="http://www.percona.com/mysql-consulting/data-recovery/">MySQL Data Recovery</a></div>
360 <div class="item"><a href="http://www.percona.com/mysql-consulting/high-availability/">MySQL High Availability</a></div>
361 <div class="item"><a href="http://www.percona.com/mysql-consulting/mysql-monitoring-graphing/">MySQL Monitoring &amp; Graphing</a></div>
362 <div class="item"><a href="http://www.percona.com/mysql-consulting/mysql-onsite-consulting/">MySQL Onsite Consulting</a></div>
363 <div class="item"><a href="http://www.percona.com/mysql-consulting/performance-audit/">MySQL Performance Audit</a></div>
364 <div class="item"><a href="http://www.percona.com/mysql-consulting/remote-dba/">MySQL Remote DBA</a></div>
365
366 <div class="item"><a href="http://www.percona.com/mysql-consulting/mysql-replication/">MySQL Replication</a></div>
367 <div class="item"><a href="http://www.percona.com/mysql-consulting/upgrade/">MySQL Version Upgrades</a></div>
368 <div class="item"><a href="http://www.percona.com/mysql-consulting/24x7-emergency/">Emergency 24&times;7 Consulting</a></div>
369 <div class="item"><a href="http://www.percona.com/mysql-consulting/migration/">Migration to MySQL</a></div>
370 <div class="item"><a href="http://www.percona.com/drizzle-consulting/">Drizzle Consulting</a></div>
371 <div class="item"><a href="http://www.percona.com/mysql-consulting/sphinx/">Sphinx Consulting</a></div>
372 <div class="item"><a href="http://www.percona.com/mysql-consulting/drbd/">DRBD Consulting</a></div>
373 <div class="item"><a href="http://www.percona.com/mysql-consulting/memcached/">Memcached Consulting</a></div>
374
375 <div class="item"><a href="http://www.percona.com/mysql-consulting/other-services/">Other Consulting Services</a></div>
376 </div>
377 <div class="navi-dropdown-footer"><!-- //--></div>
378 </div>
379 <div class="navi-dropdown" id="navi-dropdown-support">
380 <div class="navi-dropdown-header-l"><!-- //--></div>
381 <div class="navi-dropdown-content">
382 <div class="item"><a href="http://www.percona.com/mysql-support/">MySQL Support Overview</a></div>
383 <div class="item"><a href="http://www.percona.com/prices/mysql-support/">MySQL Support Prices</a></div>
384 <div class="item"><a href="http://www.percona.com/mysql-support/policies/">MySQL Support Policies</a></div>
385 <div class="item"><a href="http://www.percona.com/mysql-support/consulting-vs-support/">Consulting vs. Support</a></div>
386 <div class="item"><a href="https://customers.percona.com">Customer Portal Login</a></div>
387
388 </div>
389 <div class="navi-dropdown-footer"><!-- //--></div>
390 </div>
391 <div class="navi-dropdown" id="navi-dropdown-training">
392 <div class="navi-dropdown-header-l"><!-- //--></div>
393 <div class="navi-dropdown-content">
394 <div class="item"><a href="http://www.percona.com/training/">MySQL Training Overview</a></div>
395 <div class="item"><a href="http://www.percona.com/prices/training/">MySQL Training Prices</a></div>
396 <div class="item"><a href="http://www.percona.com/training/classes/dba/">MySQL DBA Training</a></div>
397 <div class="item"><a href="http://www.percona.com/training/classes/developers/">MySQL Developer Training</a></div>
398 <div class="item"><a href="http://www.percona.com/training/classes/operations/">MySQL Operations Training</a></div>
399 <div class="item"><a href="http://www.percona.com/training/classes/innodb/">InnoDB &amp; XtraDB Training</a></div>
400
401 <div class="item"><a href="http://www.percona.com/training/classes/custom-onsite/">Custom Onsite Training</a></div>
402 </div>
403 <div class="navi-dropdown-footer"><!-- //--></div>
404 </div>
405 <div class="navi-dropdown" id="navi-dropdown-development">
406 <div class="navi-dropdown-header-l"><!-- //--></div>
407 <div class="navi-dropdown-content">
408 <div class="item"><a href="http://www.percona.com/development/mysql/">MySQL Development Overview</a></div>
409 <div class="item"><a href="http://www.percona.com/development/prices/">Custom Development Prices</a></div>
410 <div class="item"><a href="http://www.percona.com/development/maintenance/">MySQL Support Overview</a></div>
411 <div class="item"><a href="http://www.percona.com/development/benchmarking/">Custom Product Evaluation</a></div>
412 <div class="item"><a href="http://www.percona.com/development/maatkit/">Custom Maatkit Development</a></div>
413
414 <div class="item"><a href="http://www.percona.com/development/custom-tools/">Custom Tools Development</a></div>
415 </div>
416 <div class="navi-dropdown-footer"><!-- //--></div>
417 </div>
418 <div class="navi-dropdown" id="navi-dropdown-software">
419 <div class="navi-dropdown-header-l"><!-- //--></div>
420 <div class="navi-dropdown-content">
421 <div class="item"><a href="http://www.percona.com/software/">Percona Software for MySQL</a></div>
422 <div class="item"><a href="http://www.percona.com/software/percona-server/">Percona Server with XtraDB</a></div>
423 <div class="item"><a href="http://www.percona.com/software/percona-xtradb-cluster/">Percona XtraDB Cluster</a></div>
424 <div class="item"><a href="http://www.percona.com/software/percona-xtrabackup/">Percona XtraBackup</a></div>
425 <div class="item"><a href="http://www.percona.com/software/mysql-innodb-data-recovery-tools/">Data Recovery Toolkit</a></div>
426 <div class="item"><a href="http://www.percona.com/software/percona-xtradb/">Percona XtraDB</a></div>
427 <div class="item"><a href="http://www.percona.com/software/percona-toolkit/">Percona Toolkit</a></div>
428 <div class="item"><a href="http://www.percona.com/software/percona-monitoring-plugins/">Percona Monitoring Plugins</a></div>
429 <div class="item"><a href="http://www.percona.com/prices/software/">Software Prices</a></div>
430 <div class="item"><a href="http://www.percona.com/downloads/">Downloads</a></div>
431 <div class="item"><a href="http://www.percona.com/software/repositories/">Repositories</a></div>
432 <div class="item"><a href="http://www.percona.com/software/documentation/">Documentation</a></div>
433 <div class="item"><a href="http://forum.percona.com">Forum</a></div>
434 <div class="item"><a href="http://groups.google.com/group/percona-discussion">Google Discussion</a></div>
435 <div class="item"><a href="https://launchpad.net/percona-server">Launchpad</a></div>
436 </div>
437 <div class="navi-dropdown-footer"><!-- //--></div>
438 </div>
439 <div class="navi-dropdown" id="navi-dropdown-events">
440 <div class="navi-dropdown-header-r"><!-- //--></div>
441 <div class="navi-dropdown-content">
442 <div class="item"><a href="http://www.percona.com/live/mysql-conference-2012/">MySQL Conference &amp; Expo 2012</a></div>
443 <div class="item"><a href="http://www.percona.com/live/">Previous Percona Live Events</a></div>
444 </div>
445 <div class="navi-dropdown-footer"><!-- //--></div>
446 </div>
447
448 <div class="navi-dropdown" id="navi-dropdown-contact">
449 <div class="navi-dropdown-header-r"><!-- //--></div>
450 <div class="navi-dropdown-content">
451 <div class="item"><a href="http://www.percona.com/contact/24x7-emergency/">24&times;7 Emergency</a></div>
452 <div class="item"><a href="http://www.percona.com/contact/sales/">Sales &amp; General Inquiries</a></div>
453 <div class="item"><a href="http://www.percona.com/contact/billing/">Billing Inquiries</a></div>
454 <div class="item"><a href="https://customers.percona.com">Customer Portal Login</a></div>
455 <div class="item"><a href="http://www.percona.com/contact/phone-directory/">Phone Directory</a></div>
456 <div class="item"><a href="http://www.percona.com/subscribe/">Subscribe to Newsletter</a></div>
457
458 </div>
459 <div class="navi-dropdown-footer"><!-- //--></div>
460 </div>
461 <div id="search-dropdown" class="search-dropdown">
462 <div class="search-dropdown-header"><!-- //--></div>
463 <div class="search-dropdown-content">
464 <div class="search-info">Search Percona.com:</div>
465 <form method="get" action="http://search.percona.com/search/" id="search-form">
466 <div class="form"><input type="text" id="search-input" name="q" maxlength="100"></div>
467 </form>
468 </div>
469 <div class="search-dropdown-footer"><!-- //--></div>
470 </div>
471</div>
472<div id="stats">
473<!-- GA //-->
474 <script src="http://www.percona.com/static/js/urchin.js" type="text/javascript"></script>
475 <script type="text/javascript">
476 _uacct = "UA-343802-3";
477 urchinTracker();
478 </script>
479<!-- /GA //-->
480<!-- NAVI //-->
481<script type="text/javascript">//<![CDATA[
482var navi = [{id:"about-us", direction: "l"},{id:"mysql-consulting", direction: "l"},{id:"support", direction: "l"},{id:"training", direction: "l"},{id:"development", direction: "l"},{id:"software", direction: "l"},{id:"events", direction: "r"},{id:"contact", direction: "r"}];
483for(var i = 0, c = navi.length; i < c; i++) {
484window.jQuery('#navilink-a-' + navi[i].id).bind('mouseover',{id: navi[i].id, direction:navi[i].direction}, function(e) { NAVI.Open(e.data.id, e.data.direction); } );
485}
486window.jQuery('#search-form').bind('submit', function() { window.location.href = jQuery('#search-form').attr('action') + jQuery('#search-input').val(); return false; });
487//]]></script>
488<!-- /NAVI //-->
489<script type="text/javascript">
490//<![CDATA[
491Percona.host = 'www.percona.com';
492Percona.getRecentServerVersion('#recentServerVersion');
493//]]>
494</script>
495</div>
496 </body>
497</html>
498
499
500
501{% if theme_collapsiblesidebar|tobool %}
502{% set script_files = script_files + ['_static/sidebar.js'] %}
503{% endif %}
5040
=== added file 'doc/source/percona-theme/searchbox.html'
--- doc/source/percona-theme/searchbox.html 1970-01-01 00:00:00 +0000
+++ doc/source/percona-theme/searchbox.html 2012-08-15 14:13:58 +0000
@@ -0,0 +1,22 @@
1{#
2 basic/searchbox.html
3 ~~~~~~~~~~~~~~~~~~~~
4
5 Sphinx sidebar template: quick search box.
6
7 :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
8 :license: BSD, see LICENSE for details.
9#}
10{%- if pagename != "search" %}
11<div id="searchbox" style="display: none; padding: 3px;">
12 <h3>{{ _('Quick search') }}</h3>
13 <form class="search" action="{{ pathto('search') }}" method="get">
14 <input type="text" name="q" size="18" />
15 <input type="submit" value="{{ _('Go') }}" />
16 <input type="hidden" name="check_keywords" value="yes" />
17 <input type="hidden" name="area" value="default" />
18 </form>
19
20</div>
21<script type="text/javascript">$('#searchbox').show(0);</script>
22{%- endif %}
023
=== removed file 'doc/source/percona-theme/searchbox.html'
--- doc/source/percona-theme/searchbox.html 2011-09-20 06:59:03 +0000
+++ doc/source/percona-theme/searchbox.html 1970-01-01 00:00:00 +0000
@@ -1,22 +0,0 @@
1{#
2 basic/searchbox.html
3 ~~~~~~~~~~~~~~~~~~~~
4
5 Sphinx sidebar template: quick search box.
6
7 :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
8 :license: BSD, see LICENSE for details.
9#}
10{%- if pagename != "search" %}
11<div id="searchbox" style="display: none; padding: 3px;">
12 <h3>{{ _('Quick search') }}</h3>
13 <form class="search" action="{{ pathto('search') }}" method="get">
14 <input type="text" name="q" size="18" />
15 <input type="submit" value="{{ _('Go') }}" />
16 <input type="hidden" name="check_keywords" value="yes" />
17 <input type="hidden" name="area" value="default" />
18 </form>
19
20</div>
21<script type="text/javascript">$('#searchbox').show(0);</script>
22{%- endif %}
230
=== added directory 'doc/source/percona-theme/static'
=== removed directory 'doc/source/percona-theme/static'
=== added file 'doc/source/percona-theme/static/boxes_header_bulletpoint.png'
24Binary files doc/source/percona-theme/static/boxes_header_bulletpoint.png 1970-01-01 00:00:00 +0000 and doc/source/percona-theme/static/boxes_header_bulletpoint.png 2012-08-15 14:13:58 +0000 differ1Binary files doc/source/percona-theme/static/boxes_header_bulletpoint.png 1970-01-01 00:00:00 +0000 and doc/source/percona-theme/static/boxes_header_bulletpoint.png 2012-08-15 14:13:58 +0000 differ
=== removed file 'doc/source/percona-theme/static/boxes_header_bulletpoint.png'
25Binary files doc/source/percona-theme/static/boxes_header_bulletpoint.png 2012-04-12 14:06:33 +0000 and doc/source/percona-theme/static/boxes_header_bulletpoint.png 1970-01-01 00:00:00 +0000 differ2Binary files doc/source/percona-theme/static/boxes_header_bulletpoint.png 2012-04-12 14:06:33 +0000 and doc/source/percona-theme/static/boxes_header_bulletpoint.png 1970-01-01 00:00:00 +0000 differ
=== added file 'doc/source/percona-theme/static/boxes_header_bulletpoint.png.moved'
26Binary files doc/source/percona-theme/static/boxes_header_bulletpoint.png.moved 1970-01-01 00:00:00 +0000 and doc/source/percona-theme/static/boxes_header_bulletpoint.png.moved 2012-08-15 14:13:58 +0000 differ3Binary files doc/source/percona-theme/static/boxes_header_bulletpoint.png.moved 1970-01-01 00:00:00 +0000 and doc/source/percona-theme/static/boxes_header_bulletpoint.png.moved 2012-08-15 14:13:58 +0000 differ
=== removed file 'doc/source/percona-theme/static/boxes_header_bulletpoint.png.moved'
27Binary files doc/source/percona-theme/static/boxes_header_bulletpoint.png.moved 2012-04-12 14:06:33 +0000 and doc/source/percona-theme/static/boxes_header_bulletpoint.png.moved 1970-01-01 00:00:00 +0000 differ4Binary files doc/source/percona-theme/static/boxes_header_bulletpoint.png.moved 2012-04-12 14:06:33 +0000 and doc/source/percona-theme/static/boxes_header_bulletpoint.png.moved 1970-01-01 00:00:00 +0000 differ
=== added file 'doc/source/percona-theme/static/button-download-icon.png'
28Binary files doc/source/percona-theme/static/button-download-icon.png 1970-01-01 00:00:00 +0000 and doc/source/percona-theme/static/button-download-icon.png 2012-08-15 14:13:58 +0000 differ5Binary files doc/source/percona-theme/static/button-download-icon.png 1970-01-01 00:00:00 +0000 and doc/source/percona-theme/static/button-download-icon.png 2012-08-15 14:13:58 +0000 differ
=== removed file 'doc/source/percona-theme/static/button-download-icon.png'
29Binary files doc/source/percona-theme/static/button-download-icon.png 2012-04-12 14:06:33 +0000 and doc/source/percona-theme/static/button-download-icon.png 1970-01-01 00:00:00 +0000 differ6Binary files doc/source/percona-theme/static/button-download-icon.png 2012-04-12 14:06:33 +0000 and doc/source/percona-theme/static/button-download-icon.png 1970-01-01 00:00:00 +0000 differ
=== added file 'doc/source/percona-theme/static/button-download-icon.png.moved'
30Binary files doc/source/percona-theme/static/button-download-icon.png.moved 1970-01-01 00:00:00 +0000 and doc/source/percona-theme/static/button-download-icon.png.moved 2012-08-15 14:13:58 +0000 differ7Binary files doc/source/percona-theme/static/button-download-icon.png.moved 1970-01-01 00:00:00 +0000 and doc/source/percona-theme/static/button-download-icon.png.moved 2012-08-15 14:13:58 +0000 differ
=== removed file 'doc/source/percona-theme/static/button-download-icon.png.moved'
31Binary files doc/source/percona-theme/static/button-download-icon.png.moved 2012-04-12 14:06:33 +0000 and doc/source/percona-theme/static/button-download-icon.png.moved 1970-01-01 00:00:00 +0000 differ8Binary files doc/source/percona-theme/static/button-download-icon.png.moved 2012-04-12 14:06:33 +0000 and doc/source/percona-theme/static/button-download-icon.png.moved 1970-01-01 00:00:00 +0000 differ
=== added file 'doc/source/percona-theme/static/content_list_bulletpoint.png'
32Binary files doc/source/percona-theme/static/content_list_bulletpoint.png 1970-01-01 00:00:00 +0000 and doc/source/percona-theme/static/content_list_bulletpoint.png 2012-08-15 14:13:58 +0000 differ9Binary files doc/source/percona-theme/static/content_list_bulletpoint.png 1970-01-01 00:00:00 +0000 and doc/source/percona-theme/static/content_list_bulletpoint.png 2012-08-15 14:13:58 +0000 differ
=== removed file 'doc/source/percona-theme/static/content_list_bulletpoint.png'
33Binary files doc/source/percona-theme/static/content_list_bulletpoint.png 2012-04-12 14:06:33 +0000 and doc/source/percona-theme/static/content_list_bulletpoint.png 1970-01-01 00:00:00 +0000 differ10Binary files doc/source/percona-theme/static/content_list_bulletpoint.png 2012-04-12 14:06:33 +0000 and doc/source/percona-theme/static/content_list_bulletpoint.png 1970-01-01 00:00:00 +0000 differ
=== added file 'doc/source/percona-theme/static/content_list_bulletpoint.png.moved'
34Binary files doc/source/percona-theme/static/content_list_bulletpoint.png.moved 1970-01-01 00:00:00 +0000 and doc/source/percona-theme/static/content_list_bulletpoint.png.moved 2012-08-15 14:13:58 +0000 differ11Binary files doc/source/percona-theme/static/content_list_bulletpoint.png.moved 1970-01-01 00:00:00 +0000 and doc/source/percona-theme/static/content_list_bulletpoint.png.moved 2012-08-15 14:13:58 +0000 differ
=== removed file 'doc/source/percona-theme/static/content_list_bulletpoint.png.moved'
35Binary files doc/source/percona-theme/static/content_list_bulletpoint.png.moved 2012-04-12 14:06:33 +0000 and doc/source/percona-theme/static/content_list_bulletpoint.png.moved 1970-01-01 00:00:00 +0000 differ12Binary files doc/source/percona-theme/static/content_list_bulletpoint.png.moved 2012-04-12 14:06:33 +0000 and doc/source/percona-theme/static/content_list_bulletpoint.png.moved 1970-01-01 00:00:00 +0000 differ
=== added file 'doc/source/percona-theme/static/default.css_t'
--- doc/source/percona-theme/static/default.css_t 1970-01-01 00:00:00 +0000
+++ doc/source/percona-theme/static/default.css_t 2012-08-15 14:13:58 +0000
@@ -0,0 +1,433 @@
1/*
2 * default.css_t
3 * ~~~~~~~~~~~~~
4 *
5 * Sphinx stylesheet -- default theme.
6 *
7 * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
8 * :license: BSD, see LICENSE for details.
9 *
10 */
11
12@import url("basic.css");
13
14/* -- page layout ----------------------------------------------------------- */
15
16body {
17 font-size: 12px;
18 line-height: 16px;
19 font-family: Arial;
20
21 background-color: #fff;
22 color: #333333;
23 line-height: 20px;
24 margin: 0;
25 padding: 0;
26
27}
28
29div.document {
30 background-color: #fff;
31 margin: 0 auto;
32 overflow: hidden;
33 padding: 30px 0;
34 width: 960px;
35}
36
37div.documentwrapper {
38 /* float: left; */
39 /* width: 100%; */
40
41}
42
43div.bodywrapper {
44 margin: 10 0 0 0px;
45 width: 660px;
46 float:right;
47}
48
49div.body {
50 background-color: #fff;
51 color: #333333;
52 padding: 0 0 20px;
53}
54
55{%- if theme_rightsidebar|tobool %}
56div.bodywrapper {
57 margin: 0 {{ theme_sidebarwidth }}px 0 0;
58}
59{%- endif %}
60
61div.footer {
62 /* color: {{ theme_footertextcolor }}; */
63 /* width: 100%; */
64 /* padding: 9px 0 9px 0; */
65 /* text-align: center; */
66 /* font-size: 75%; */
67 font: 80% "Lucida Grande",Verdana,Lucida,Helvetica,Arial,sans-serif;
68 background: none repeat scroll 0 0 #333333;
69 border-top: 2px solid #D95200;
70 overflow: hidden;
71}
72
73div.footer a {
74 color: {{ theme_footertextcolor }};
75 text-decoration: underline;
76}
77
78div.related {
79 background-color: #ccc;
80 line-height: 30px;
81 color: #333;
82 background: none repeat scroll 0 0 #F8F8F8;
83 border: 1px solid #E0E0E0;
84 clear: both;
85 padding: 10px;
86 width: 635px;
87 margin-bottom: 5px;
88}
89
90div.related a {
91 color: #999;
92}
93
94div.sphinxsidebar {
95 margin-left: 0px;
96 margin-right: 30px;
97 color: #333333;
98 font-family: Arial,Helvetica,sans-serif;
99 width: 260px;
100 {%- if theme_stickysidebar|tobool %}
101 top: 30px;
102 bottom: 0;
103 margin: 0;
104 position: fixed;
105 overflow: auto;
106 height: auto;
107 {%- endif %}
108 {%- if theme_rightsidebar|tobool %}
109 float: right;
110 {%- if theme_stickysidebar|tobool %}
111 right: 0;
112 {%- endif %}
113 {%- endif %}
114}
115
116{%- if theme_stickysidebar|tobool %}
117/* this is nice, but it it leads to hidden headings when jumping
118 to an anchor */
119/*
120div.related {
121 position: fixed;
122}
123
124div.documentwrapper {
125 margin-top: 30px;
126}
127*/
128{%- endif %}
129
130div.sphinxsidebar h3 {
131 /* font-family: {{ theme_headfont }}; */
132 color: #999;
133 font-size: 18px;
134 line-height: 15px;
135 font-weight: 400;
136 margin-left: 5px;
137 padding: 0;
138}
139
140div.sphinxsidebar h3 a {
141 color: #333;
142}
143
144div.sphinxsidebar a:hover {
145 /* color: #333; */
146}
147
148div.sphinxsidebar h4 {
149 /* font-family: {{ theme_headfont }}; */
150 color: #666;
151 font-size: 18px;
152 font-weight: normal;
153 margin: 5px 0 0 5px;
154 padding: 0;
155}
156
157div.sphinxsidebar p {
158 color: #333;
159 margin-bottom: 5px;
160 margin-left: 5px;
161}
162
163div.sphinxsidebar p.topless {
164 margin: 5px 10px 10px 10px;
165}
166
167div.sphinxsidebar ul {
168 margin: 10px;
169 padding-left: 5px;
170 color: #333;
171}
172
173div.sphinxsidebar a {
174 color: #D12907;
175}
176
177div.sphinxsidebar input {
178 border: 1px solid #999;
179 font-family: sans-serif;
180 font-size: 1em;
181}
182
183{% if theme_collapsiblesidebar|tobool %}
184/* for collapsible sidebar */
185div#sidebarbutton {
186 background-color: {{ theme_sidebarbtncolor }};
187}
188{% endif %}
189
190/* -- hyperlink styles ------------------------------------------------------ */
191
192a {
193 color: #D12907;
194 text-decoration: underline;
195 border: medium none;
196 cursor: pointer;
197}
198
199a:visited {
200 color: #D12907;
201 text-decoration: underline;
202}
203
204a:hover {
205 color: #D12907;
206 text-decoration: underline;
207}
208
209{% if theme_externalrefs|tobool %}
210a.external {
211 text-decoration: none;
212 border-bottom: 1px dashed {{ theme_linkcolor }};
213}
214
215a.external:hover {
216 text-decoration: none;
217 border-bottom: none;
218}
219
220a.external:visited {
221 text-decoration: none;
222 border-bottom: 1px dashed {{ theme_visitedlinkcolor }};
223}
224{% endif %}
225
226/* -- body styles ----------------------------------------------------------- */
227
228
229
230a.headerlink {
231 color: {{ theme_headlinkcolor }};
232 font-size: 0.8em;
233 padding: 0 4px 0 4px;
234 text-decoration: none;
235}
236
237a.headerlink:hover {
238 background-color: {{ theme_headlinkcolor }};
239 color: white;
240}
241
242div.body dd, div.body li {
243 text-align: justify;
244}
245
246div.body dt {
247 list-style-type: square;
248 /* margin: 8px 0 8px 30px; */
249 padding: 0 4px 0 5px;
250
251}
252
253div.body p {
254 text-align: justify;
255/* line-height: 130%;*/
256 margin: 10px 0;
257}
258
259/* div.body ul, */
260div.body li {
261 list-style-type: square;
262 margin: 8px 0 8px 30px;
263 padding: 0 4px 0 5px;
264}
265
266.reference em {
267 font-style: normal;
268}
269
270.std-term {
271 font-style: normal;
272 font-weight: 400;
273 color: #FF7400
274}
275
276div.admonition p.admonition-title + p {
277 display: inline;
278}
279
280div.admonition p {
281 margin-bottom: 5px;
282}
283
284div.admonition pre {
285 margin-bottom: 5px;
286}
287
288div.admonition ul, div.admonition ol {
289 margin-bottom: 5px;
290}
291
292div.note {
293 background-color: #eee;
294 border: 1px solid #ccc;
295}
296
297div.seealso {
298 background-color: #ffc;
299 border: 1px solid #ff6;
300}
301
302div.topic {
303 background-color: #eee;
304}
305
306div.warning {
307 background-color: #ffe4e4;
308 border: 1px solid #f66;
309}
310
311p.admonition-title {
312 display: inline;
313}
314
315p.admonition-title:after {
316 content: ":";
317}
318
319pre {
320 padding: 10px;
321 background-color: #F0E6D9/* {{ theme_codebgcolor }} */;
322 color: {{ theme_codetextcolor }};
323 line-height: 120%;
324 border: 1px dashed #ED9821;
325 font-size: 80%;
326 overflow: auto;
327 /* border-left: none; */
328 /* border-right: none; */
329}
330
331tt {
332/* background-color: #ecf0f3;
333 padding: 0 1px 0 1px;
334 font-size: 0.95em;*/
335 font-weight: 400;
336}
337
338div.body td {
339 text-align: none;
340}
341
342table.docutils th {
343 background-color: #DEE7EC;
344 border: 1px solid #8CACBB;
345 padding: 3px;
346 text-align: center;
347 font-style: normal;
348 font-weight: 400;
349}
350
351table.docutils td {
352 border: 1px solid #8CACBB;
353 padding: 3px;
354 line-height: 16px;
355 vertical-align: middle;
356}
357
358.warning tt {
359 background: #efc2c2;
360}
361
362.note tt {
363 background: #d6d6d6;
364}
365
366.viewcode-back {
367 font-family: {{ theme_bodyfont }};
368}
369
370div.viewcode-block:target {
371 background-color: #f4debf;
372 border-top: 1px solid #ac9;
373 border-bottom: 1px solid #ac9;
374}
375
376.file-bugs {
377 background: none repeat scroll 0 0 #E8E8E8;
378 border: 1px solid #E0E0E0;
379 clear: both;
380 color: #333333;
381 padding: 10px;
382 text-align: center;
383 font-size: 90%;
384}
385
386div.footer .footer {
387 margin: 0 auto;
388 overflow: hidden;
389 padding: 10px 0;
390 width: 960px;
391 border-top: none;
392}
393
394div.footer .footer .logo {
395 float: left;
396 overflow: hidden;
397 padding: 17px 0 0;
398}
399
400div.footer .footer .text {
401 color: #E0E0E0;
402 float: right;
403 font-family: Arial,Helvetica,sans-serif;
404 font-size: 11px;
405 line-height: 15px;
406 overflow: hidden;
407 text-align: right;
408}
409
410div.license {
411 font-size: 80%;
412 /* padding: 0.5em; */
413 text-align: center;
414 margin: 13px 0 -15px;
415}
416
417#sidenavi.noborder {
418 border-right: medium none;
419 border-top: medium none;
420 margin: 0;
421}
422
423#sidenavi {
424 color: #333333;
425 /* float: left; */
426 font-family: Arial,Helvetica,sans-serif;
427 font-size: 18px;
428 line-height: 25px;
429 overflow: hidden;
430 padding: 10px 0 8px 0px;
431 width: 255px;
432}
433
0434
=== removed file 'doc/source/percona-theme/static/default.css_t'
--- doc/source/percona-theme/static/default.css_t 2012-04-12 14:06:33 +0000
+++ doc/source/percona-theme/static/default.css_t 1970-01-01 00:00:00 +0000
@@ -1,433 +0,0 @@
1/*
2 * default.css_t
3 * ~~~~~~~~~~~~~
4 *
5 * Sphinx stylesheet -- default theme.
6 *
7 * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
8 * :license: BSD, see LICENSE for details.
9 *
10 */
11
12@import url("basic.css");
13
14/* -- page layout ----------------------------------------------------------- */
15
16body {
17 font-size: 12px;
18 line-height: 16px;
19 font-family: Arial;
20
21 background-color: #fff;
22 color: #333333;
23 line-height: 20px;
24 margin: 0;
25 padding: 0;
26
27}
28
29div.document {
30 background-color: #fff;
31 margin: 0 auto;
32 overflow: hidden;
33 padding: 30px 0;
34 width: 960px;
35}
36
37div.documentwrapper {
38 /* float: left; */
39 /* width: 100%; */
40
41}
42
43div.bodywrapper {
44 margin: 10 0 0 0px;
45 width: 660px;
46 float:right;
47}
48
49div.body {
50 background-color: #fff;
51 color: #333333;
52 padding: 0 0 20px;
53}
54
55{%- if theme_rightsidebar|tobool %}
56div.bodywrapper {
57 margin: 0 {{ theme_sidebarwidth }}px 0 0;
58}
59{%- endif %}
60
61div.footer {
62 /* color: {{ theme_footertextcolor }}; */
63 /* width: 100%; */
64 /* padding: 9px 0 9px 0; */
65 /* text-align: center; */
66 /* font-size: 75%; */
67 font: 80% "Lucida Grande",Verdana,Lucida,Helvetica,Arial,sans-serif;
68 background: none repeat scroll 0 0 #333333;
69 border-top: 2px solid #D95200;
70 overflow: hidden;
71}
72
73div.footer a {
74 color: {{ theme_footertextcolor }};
75 text-decoration: underline;
76}
77
78div.related {
79 background-color: #ccc;
80 line-height: 30px;
81 color: #333;
82 background: none repeat scroll 0 0 #F8F8F8;
83 border: 1px solid #E0E0E0;
84 clear: both;
85 padding: 10px;
86 width: 635px;
87 margin-bottom: 5px;
88}
89
90div.related a {
91 color: #999;
92}
93
94div.sphinxsidebar {
95 margin-left: 0px;
96 margin-right: 30px;
97 color: #333333;
98 font-family: Arial,Helvetica,sans-serif;
99 width: 260px;
100 {%- if theme_stickysidebar|tobool %}
101 top: 30px;
102 bottom: 0;
103 margin: 0;
104 position: fixed;
105 overflow: auto;
106 height: auto;
107 {%- endif %}
108 {%- if theme_rightsidebar|tobool %}
109 float: right;
110 {%- if theme_stickysidebar|tobool %}
111 right: 0;
112 {%- endif %}
113 {%- endif %}
114}
115
116{%- if theme_stickysidebar|tobool %}
117/* this is nice, but it it leads to hidden headings when jumping
118 to an anchor */
119/*
120div.related {
121 position: fixed;
122}
123
124div.documentwrapper {
125 margin-top: 30px;
126}
127*/
128{%- endif %}
129
130div.sphinxsidebar h3 {
131 /* font-family: {{ theme_headfont }}; */
132 color: #999;
133 font-size: 18px;
134 line-height: 15px;
135 font-weight: 400;
136 margin-left: 5px;
137 padding: 0;
138}
139
140div.sphinxsidebar h3 a {
141 color: #333;
142}
143
144div.sphinxsidebar a:hover {
145 /* color: #333; */
146}
147
148div.sphinxsidebar h4 {
149 /* font-family: {{ theme_headfont }}; */
150 color: #666;
151 font-size: 18px;
152 font-weight: normal;
153 margin: 5px 0 0 5px;
154 padding: 0;
155}
156
157div.sphinxsidebar p {
158 color: #333;
159 margin-bottom: 5px;
160 margin-left: 5px;
161}
162
163div.sphinxsidebar p.topless {
164 margin: 5px 10px 10px 10px;
165}
166
167div.sphinxsidebar ul {
168 margin: 10px;
169 padding-left: 5px;
170 color: #333;
171}
172
173div.sphinxsidebar a {
174 color: #D12907;
175}
176
177div.sphinxsidebar input {
178 border: 1px solid #999;
179 font-family: sans-serif;
180 font-size: 1em;
181}
182
183{% if theme_collapsiblesidebar|tobool %}
184/* for collapsible sidebar */
185div#sidebarbutton {
186 background-color: {{ theme_sidebarbtncolor }};
187}
188{% endif %}
189
190/* -- hyperlink styles ------------------------------------------------------ */
191
192a {
193 color: #D12907;
194 text-decoration: underline;
195 border: medium none;
196 cursor: pointer;
197}
198
199a:visited {
200 color: #D12907;
201 text-decoration: underline;
202}
203
204a:hover {
205 color: #D12907;
206 text-decoration: underline;
207}
208
209{% if theme_externalrefs|tobool %}
210a.external {
211 text-decoration: none;
212 border-bottom: 1px dashed {{ theme_linkcolor }};
213}
214
215a.external:hover {
216 text-decoration: none;
217 border-bottom: none;
218}
219
220a.external:visited {
221 text-decoration: none;
222 border-bottom: 1px dashed {{ theme_visitedlinkcolor }};
223}
224{% endif %}
225
226/* -- body styles ----------------------------------------------------------- */
227
228
229
230a.headerlink {
231 color: {{ theme_headlinkcolor }};
232 font-size: 0.8em;
233 padding: 0 4px 0 4px;
234 text-decoration: none;
235}
236
237a.headerlink:hover {
238 background-color: {{ theme_headlinkcolor }};
239 color: white;
240}
241
242div.body dd, div.body li {
243 text-align: justify;
244}
245
246div.body dt {
247 list-style-type: square;
248 /* margin: 8px 0 8px 30px; */
249 padding: 0 4px 0 5px;
250
251}
252
253div.body p {
254 text-align: justify;
255/* line-height: 130%;*/
256 margin: 10px 0;
257}
258
259/* div.body ul, */
260div.body li {
261 list-style-type: square;
262 margin: 8px 0 8px 30px;
263 padding: 0 4px 0 5px;
264}
265
266.reference em {
267 font-style: normal;
268}
269
270.std-term {
271 font-style: normal;
272 font-weight: 400;
273 color: #FF7400
274}
275
276div.admonition p.admonition-title + p {
277 display: inline;
278}
279
280div.admonition p {
281 margin-bottom: 5px;
282}
283
284div.admonition pre {
285 margin-bottom: 5px;
286}
287
288div.admonition ul, div.admonition ol {
289 margin-bottom: 5px;
290}
291
292div.note {
293 background-color: #eee;
294 border: 1px solid #ccc;
295}
296
297div.seealso {
298 background-color: #ffc;
299 border: 1px solid #ff6;
300}
301
302div.topic {
303 background-color: #eee;
304}
305
306div.warning {
307 background-color: #ffe4e4;
308 border: 1px solid #f66;
309}
310
311p.admonition-title {
312 display: inline;
313}
314
315p.admonition-title:after {
316 content: ":";
317}
318
319pre {
320 padding: 10px;
321 background-color: #F0E6D9/* {{ theme_codebgcolor }} */;
322 color: {{ theme_codetextcolor }};
323 line-height: 120%;
324 border: 1px dashed #ED9821;
325 font-size: 80%;
326 overflow: auto;
327 /* border-left: none; */
328 /* border-right: none; */
329}
330
331tt {
332/* background-color: #ecf0f3;
333 padding: 0 1px 0 1px;
334 font-size: 0.95em;*/
335 font-weight: 400;
336}
337
338div.body td {
339 text-align: none;
340}
341
342table.docutils th {
343 background-color: #DEE7EC;
344 border: 1px solid #8CACBB;
345 padding: 3px;
346 text-align: center;
347 font-style: normal;
348 font-weight: 400;
349}
350
351table.docutils td {
352 border: 1px solid #8CACBB;
353 padding: 3px;
354 line-height: 16px;
355 vertical-align: middle;
356}
357
358.warning tt {
359 background: #efc2c2;
360}
361
362.note tt {
363 background: #d6d6d6;
364}
365
366.viewcode-back {
367 font-family: {{ theme_bodyfont }};
368}
369
370div.viewcode-block:target {
371 background-color: #f4debf;
372 border-top: 1px solid #ac9;
373 border-bottom: 1px solid #ac9;
374}
375
376.file-bugs {
377 background: none repeat scroll 0 0 #E8E8E8;
378 border: 1px solid #E0E0E0;
379 clear: both;
380 color: #333333;
381 padding: 10px;
382 text-align: center;
383 font-size: 90%;
384}
385
386div.footer .footer {
387 margin: 0 auto;
388 overflow: hidden;
389 padding: 10px 0;
390 width: 960px;
391 border-top: none;
392}
393
394div.footer .footer .logo {
395 float: left;
396 overflow: hidden;
397 padding: 17px 0 0;
398}
399
400div.footer .footer .text {
401 color: #E0E0E0;
402 float: right;
403 font-family: Arial,Helvetica,sans-serif;
404 font-size: 11px;
405 line-height: 15px;
406 overflow: hidden;
407 text-align: right;
408}
409
410div.license {
411 font-size: 80%;
412 /* padding: 0.5em; */
413 text-align: center;
414 margin: 13px 0 -15px;
415}
416
417#sidenavi.noborder {
418 border-right: medium none;
419 border-top: medium none;
420 margin: 0;
421}
422
423#sidenavi {
424 color: #333333;
425 /* float: left; */
426 font-family: Arial,Helvetica,sans-serif;
427 font-size: 18px;
428 line-height: 25px;
429 overflow: hidden;
430 padding: 10px 0 8px 0px;
431 width: 255px;
432}
433
4340
=== added file 'doc/source/percona-theme/static/email-small.png'
435Binary files doc/source/percona-theme/static/email-small.png 1970-01-01 00:00:00 +0000 and doc/source/percona-theme/static/email-small.png 2012-08-15 14:13:58 +0000 differ1Binary files doc/source/percona-theme/static/email-small.png 1970-01-01 00:00:00 +0000 and doc/source/percona-theme/static/email-small.png 2012-08-15 14:13:58 +0000 differ
=== removed file 'doc/source/percona-theme/static/email-small.png'
436Binary files doc/source/percona-theme/static/email-small.png 2011-09-20 06:59:03 +0000 and doc/source/percona-theme/static/email-small.png 1970-01-01 00:00:00 +0000 differ2Binary files doc/source/percona-theme/static/email-small.png 2011-09-20 06:59:03 +0000 and doc/source/percona-theme/static/email-small.png 1970-01-01 00:00:00 +0000 differ
=== added file 'doc/source/percona-theme/static/jquery.min.js'
--- doc/source/percona-theme/static/jquery.min.js 1970-01-01 00:00:00 +0000
+++ doc/source/percona-theme/static/jquery.min.js 2012-08-15 14:13:58 +0000
@@ -0,0 +1,154 @@
1/*!
2 * jQuery JavaScript Library v1.4.2
3 * http://jquery.com/
4 *
5 * Copyright 2010, John Resig
6 * Dual licensed under the MIT or GPL Version 2 licenses.
7 * http://jquery.org/license
8 *
9 * Includes Sizzle.js
10 * http://sizzlejs.com/
11 * Copyright 2010, The Dojo Foundation
12 * Released under the MIT, BSD, and GPL Licenses.
13 *
14 * Date: Sat Feb 13 22:33:48 2010 -0500
15 */
16(function(A,w){function ma(){if(!c.isReady){try{s.documentElement.doScroll("left")}catch(a){setTimeout(ma,1);return}c.ready()}}function Qa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,j){var i=a.length;if(typeof b==="object"){for(var o in b)X(a,o,b[o],f,e,d);return a}if(d!==w){f=!j&&f&&c.isFunction(d);for(o=0;o<i;o++)e(a[o],b,f?d.call(a[o],o,e(a[o],b)):d,j);return a}return i?
17e(a[0],b):w}function J(){return(new Date).getTime()}function Y(){return false}function Z(){return true}function na(a,b,d){d[0].type=a;return c.event.handle.apply(b,d)}function oa(a){var b,d=[],f=[],e=arguments,j,i,o,k,n,r;i=c.data(this,"events");if(!(a.liveFired===this||!i||!i.live||a.button&&a.type==="click")){a.liveFired=this;var u=i.live.slice(0);for(k=0;k<u.length;k++){i=u[k];i.origType.replace(O,"")===a.type?f.push(i.selector):u.splice(k--,1)}j=c(a.target).closest(f,a.currentTarget);n=0;for(r=
18j.length;n<r;n++)for(k=0;k<u.length;k++){i=u[k];if(j[n].selector===i.selector){o=j[n].elem;f=null;if(i.preType==="mouseenter"||i.preType==="mouseleave")f=c(a.relatedTarget).closest(i.selector)[0];if(!f||f!==o)d.push({elem:o,handleObj:i})}}n=0;for(r=d.length;n<r;n++){j=d[n];a.currentTarget=j.elem;a.data=j.handleObj.data;a.handleObj=j.handleObj;if(j.handleObj.origHandler.apply(j.elem,e)===false){b=false;break}}return b}}function pa(a,b){return"live."+(a&&a!=="*"?a+".":"")+b.replace(/\./g,"`").replace(/ /g,
19"&")}function qa(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function ra(a,b){var d=0;b.each(function(){if(this.nodeName===(a[d]&&a[d].nodeName)){var f=c.data(a[d++]),e=c.data(this,f);if(f=f&&f.events){delete e.handle;e.events={};for(var j in f)for(var i in f[j])c.event.add(this,j,f[j][i],f[j][i].data)}}})}function sa(a,b,d){var f,e,j;b=b&&b[0]?b[0].ownerDocument||b[0]:s;if(a.length===1&&typeof a[0]==="string"&&a[0].length<512&&b===s&&!ta.test(a[0])&&(c.support.checkClone||!ua.test(a[0]))){e=
20true;if(j=c.fragments[a[0]])if(j!==1)f=j}if(!f){f=b.createDocumentFragment();c.clean(a,b,f,d)}if(e)c.fragments[a[0]]=j?f:1;return{fragment:f,cacheable:e}}function K(a,b){var d={};c.each(va.concat.apply([],va.slice(0,b)),function(){d[this]=a});return d}function wa(a){return"scrollTo"in a&&a.document?a:a.nodeType===9?a.defaultView||a.parentWindow:false}var c=function(a,b){return new c.fn.init(a,b)},Ra=A.jQuery,Sa=A.$,s=A.document,T,Ta=/^[^<]*(<[\w\W]+>)[^>]*$|^#([\w-]+)$/,Ua=/^.[^:#\[\.,]*$/,Va=/\S/,
21Wa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Xa=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,P=navigator.userAgent,xa=false,Q=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,R=Array.prototype.slice,ya=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(a==="body"&&!b){this.context=s;this[0]=s.body;this.selector="body";this.length=1;return this}if(typeof a==="string")if((d=Ta.exec(a))&&
22(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:s;if(a=Xa.exec(a))if(c.isPlainObject(b)){a=[s.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=sa([d[1]],[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}return c.merge(this,a)}else{if(b=s.getElementById(d[2])){if(b.id!==d[2])return T.find(a);this.length=1;this[0]=b}this.context=s;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=s;a=s.getElementsByTagName(a);return c.merge(this,
23a)}else return!b||b.jquery?(b||T).find(a):c(b).find(a);else if(c.isFunction(a))return T.ready(a);if(a.selector!==w){this.selector=a.selector;this.context=a.context}return c.makeArray(a,this)},selector:"",jquery:"1.4.2",length:0,size:function(){return this.length},toArray:function(){return R.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){var f=c();c.isArray(a)?ba.apply(f,a):c.merge(f,a);f.prevObject=this;f.context=this.context;if(b===
24"find")f.selector=this.selector+(this.selector?" ":"")+d;else if(b)f.selector=this.selector+"."+b+"("+d+")";return f},each:function(a,b){return c.each(this,a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(s,c);else Q&&Q.push(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(R.apply(this,arguments),"slice",R.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this,
25function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice};c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,j,i,o;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b<d;b++)if((e=arguments[b])!=null)for(j in e){i=a[j];o=e[j];if(a!==o)if(f&&o&&(c.isPlainObject(o)||c.isArray(o))){i=i&&(c.isPlainObject(i)||
26c.isArray(i))?i:c.isArray(o)?[]:{};a[j]=c.extend(f,i,o)}else if(o!==w)a[j]=o}return a};c.extend({noConflict:function(a){A.$=Sa;if(a)A.jQuery=Ra;return c},isReady:false,ready:function(){if(!c.isReady){if(!s.body)return setTimeout(c.ready,13);c.isReady=true;if(Q){for(var a,b=0;a=Q[b++];)a.call(s,c);Q=null}c.fn.triggerHandler&&c(s).triggerHandler("ready")}},bindReady:function(){if(!xa){xa=true;if(s.readyState==="complete")return c.ready();if(s.addEventListener){s.addEventListener("DOMContentLoaded",
27L,false);A.addEventListener("load",c.ready,false)}else if(s.attachEvent){s.attachEvent("onreadystatechange",L);A.attachEvent("onload",c.ready);var a=false;try{a=A.frameElement==null}catch(b){}s.documentElement.doScroll&&a&&ma()}}},isFunction:function(a){return $.call(a)==="[object Function]"},isArray:function(a){return $.call(a)==="[object Array]"},isPlainObject:function(a){if(!a||$.call(a)!=="[object Object]"||a.nodeType||a.setInterval)return false;if(a.constructor&&!aa.call(a,"constructor")&&!aa.call(a.constructor.prototype,
28"isPrototypeOf"))return false;var b;for(b in a);return b===w||aa.call(a,b)},isEmptyObject:function(a){for(var b in a)return false;return true},error:function(a){throw a;},parseJSON:function(a){if(typeof a!=="string"||!a)return null;a=c.trim(a);if(/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return A.JSON&&A.JSON.parse?A.JSON.parse(a):(new Function("return "+
29a))();else c.error("Invalid JSON: "+a)},noop:function(){},globalEval:function(a){if(a&&Va.test(a)){var b=s.getElementsByTagName("head")[0]||s.documentElement,d=s.createElement("script");d.type="text/javascript";if(c.support.scriptEval)d.appendChild(s.createTextNode(a));else d.text=a;b.insertBefore(d,b.firstChild);b.removeChild(d)}},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,b,d){var f,e=0,j=a.length,i=j===w||c.isFunction(a);if(d)if(i)for(f in a){if(b.apply(a[f],
30d)===false)break}else for(;e<j;){if(b.apply(a[e++],d)===false)break}else if(i)for(f in a){if(b.call(a[f],f,a[f])===false)break}else for(d=a[0];e<j&&b.call(d,e,d)!==false;d=a[++e]);return a},trim:function(a){return(a||"").replace(Wa,"")},makeArray:function(a,b){b=b||[];if(a!=null)a.length==null||typeof a==="string"||c.isFunction(a)||typeof a!=="function"&&a.setInterval?ba.call(b,a):c.merge(b,a);return b},inArray:function(a,b){if(b.indexOf)return b.indexOf(a);for(var d=0,f=b.length;d<f;d++)if(b[d]===
31a)return d;return-1},merge:function(a,b){var d=a.length,f=0;if(typeof b.length==="number")for(var e=b.length;f<e;f++)a[d++]=b[f];else for(;b[f]!==w;)a[d++]=b[f++];a.length=d;return a},grep:function(a,b,d){for(var f=[],e=0,j=a.length;e<j;e++)!d!==!b(a[e],e)&&f.push(a[e]);return f},map:function(a,b,d){for(var f=[],e,j=0,i=a.length;j<i;j++){e=b(a[j],j,d);if(e!=null)f[f.length]=e}return f.concat.apply([],f)},guid:1,proxy:function(a,b,d){if(arguments.length===2)if(typeof b==="string"){d=a;a=d[b];b=w}else if(b&&
32!c.isFunction(b)){d=b;b=w}if(!b&&a)b=function(){return a.apply(d||this,arguments)};if(a)b.guid=a.guid=a.guid||b.guid||c.guid++;return b},uaMatch:function(a){a=a.toLowerCase();a=/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version)?[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||!/compatible/.test(a)&&/(mozilla)(?:.*? rv:([\w.]+))?/.exec(a)||[];return{browser:a[1]||"",version:a[2]||"0"}},browser:{}});P=c.uaMatch(P);if(P.browser){c.browser[P.browser]=true;c.browser.version=P.version}if(c.browser.webkit)c.browser.safari=
33true;if(ya)c.inArray=function(a,b){return ya.call(b,a)};T=c(s);if(s.addEventListener)L=function(){s.removeEventListener("DOMContentLoaded",L,false);c.ready()};else if(s.attachEvent)L=function(){if(s.readyState==="complete"){s.detachEvent("onreadystatechange",L);c.ready()}};(function(){c.support={};var a=s.documentElement,b=s.createElement("script"),d=s.createElement("div"),f="script"+J();d.style.display="none";d.innerHTML=" <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";
34var e=d.getElementsByTagName("*"),j=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!j)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(j.getAttribute("style")),hrefNormalized:j.getAttribute("href")==="/a",opacity:/^0.55$/.test(j.style.opacity),cssFloat:!!j.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:s.createElement("select").appendChild(s.createElement("option")).selected,
35parentNode:d.removeChild(d.appendChild(s.createElement("div"))).parentNode===null,deleteExpando:true,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};b.type="text/javascript";try{b.appendChild(s.createTextNode("window."+f+"=1;"))}catch(i){}a.insertBefore(b,a.firstChild);if(A[f]){c.support.scriptEval=true;delete A[f]}try{delete b.test}catch(o){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function k(){c.support.noCloneEvent=
36false;d.detachEvent("onclick",k)});d.cloneNode(true).fireEvent("onclick")}d=s.createElement("div");d.innerHTML="<input type='radio' name='radiotest' checked='checked'/>";a=s.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var k=s.createElement("div");k.style.width=k.style.paddingLeft="1px";s.body.appendChild(k);c.boxModel=c.support.boxModel=k.offsetWidth===2;s.body.removeChild(k).style.display="none"});a=function(k){var n=
37s.createElement("div");k="on"+k;var r=k in n;if(!r){n.setAttribute(k,"return;");r=typeof n[k]==="function"}return r};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=j=null}})();c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ya=0,za={};c.extend({cache:{},expando:G,noData:{embed:true,object:true,
38applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var f=a[G],e=c.cache;if(!f&&typeof b==="string"&&d===w)return null;f||(f=++Ya);if(typeof b==="object"){a[G]=f;e[f]=c.extend(true,{},b)}else if(!e[f]){a[G]=f;e[f]={}}a=e[f];if(d!==w)a[b]=d;return typeof b==="string"?a[b]:a}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{if(c.support.deleteExpando)delete a[c.expando];
39else a.removeAttribute&&a.removeAttribute(c.expando);delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this,a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===w){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===w&&this.length)f=c.data(this[0],a);return f===w&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this,
40a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d);return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b===
41w)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var Aa=/[\n\t]/g,ca=/\s+/,Za=/\r/g,$a=/href|src|style/,ab=/(button|input)/i,bb=/(button|input|object|select|textarea)/i,
42cb=/^(a|area)$/i,Ba=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(n){var r=c(this);r.addClass(a.call(this,n,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1)if(e.className){for(var j=" "+e.className+" ",
43i=e.className,o=0,k=b.length;o<k;o++)if(j.indexOf(" "+b[o]+" ")<0)i+=" "+b[o];e.className=c.trim(i)}else e.className=a}return this},removeClass:function(a){if(c.isFunction(a))return this.each(function(k){var n=c(this);n.removeClass(a.call(this,k,n.attr("class")))});if(a&&typeof a==="string"||a===w)for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1&&e.className)if(a){for(var j=(" "+e.className+" ").replace(Aa," "),i=0,o=b.length;i<o;i++)j=j.replace(" "+b[i]+" ",
44" ");e.className=c.trim(j)}else e.className=""}return this},toggleClass:function(a,b){var d=typeof a,f=typeof b==="boolean";if(c.isFunction(a))return this.each(function(e){var j=c(this);j.toggleClass(a.call(this,e,j.attr("class"),b),b)});return this.each(function(){if(d==="string")for(var e,j=0,i=c(this),o=b,k=a.split(ca);e=k[j++];){o=f?o:!i.hasClass(e);i[o?"addClass":"removeClass"](e)}else if(d==="undefined"||d==="boolean"){this.className&&c.data(this,"__className__",this.className);this.className=
45this.className||a===false?"":c.data(this,"__className__")||""}})},hasClass:function(a){a=" "+a+" ";for(var b=0,d=this.length;b<d;b++)if((" "+this[b].className+" ").replace(Aa," ").indexOf(a)>-1)return true;return false},val:function(a){if(a===w){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value||{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var j=b?d:0;for(d=b?d+1:e.length;j<d;j++){var i=
46e[j];if(i.selected){a=c(i).val();if(b)return a;f.push(a)}}return f}if(Ba.test(b.type)&&!c.support.checkOn)return b.getAttribute("value")===null?"on":b.value;return(b.value||"").replace(Za,"")}return w}var o=c.isFunction(a);return this.each(function(k){var n=c(this),r=a;if(this.nodeType===1){if(o)r=a.call(this,k,n.val());if(typeof r==="number")r+="";if(c.isArray(r)&&Ba.test(this.type))this.checked=c.inArray(n.val(),r)>=0;else if(c.nodeName(this,"select")){var u=c.makeArray(r);c("option",this).each(function(){this.selected=
47c.inArray(c(this).val(),u)>=0});if(!u.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return w;if(f&&b in c.attrFn)return c(a)[b](d);f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==w;b=f&&c.props[b]||b;if(a.nodeType===1){var j=$a.test(b);if(b in a&&f&&!j){if(e){b==="type"&&ab.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed");
48a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:w;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText=""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&j?a.getAttribute(b,2):a.getAttribute(b);return a===null?w:a}return c.style(a,b,d)}});var O=/\.(.*)$/,db=function(a){return a.replace(/[^\w\s\.\|`]/g,
49function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==A&&!a.frameElement)a=A;var e,j;if(d.handler){e=d;d=e.handler}if(!d.guid)d.guid=c.guid++;if(j=c.data(a)){var i=j.events=j.events||{},o=j.handle;if(!o)j.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,arguments):w};o.elem=a;b=b.split(" ");for(var k,n=0,r;k=b[n++];){j=e?c.extend({},e):{handler:d,data:f};if(k.indexOf(".")>-1){r=k.split(".");
50k=r.shift();j.namespace=r.slice(0).sort().join(".")}else{r=[];j.namespace=""}j.type=k;j.guid=d.guid;var u=i[k],z=c.event.special[k]||{};if(!u){u=i[k]=[];if(!z.setup||z.setup.call(a,f,r,o)===false)if(a.addEventListener)a.addEventListener(k,o,false);else a.attachEvent&&a.attachEvent("on"+k,o)}if(z.add){z.add.call(a,j);if(!j.handler.guid)j.handler.guid=d.guid}u.push(j);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){var e,j=0,i,o,k,n,r,u,z=c.data(a),
51C=z&&z.events;if(z&&C){if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(e in C)c.event.remove(a,e+b)}else{for(b=b.split(" ");e=b[j++];){n=e;i=e.indexOf(".")<0;o=[];if(!i){o=e.split(".");e=o.shift();k=new RegExp("(^|\\.)"+c.map(o.slice(0).sort(),db).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(r=C[e])if(d){n=c.event.special[e]||{};for(B=f||0;B<r.length;B++){u=r[B];if(d.guid===u.guid){if(i||k.test(u.namespace)){f==null&&r.splice(B--,1);n.remove&&n.remove.call(a,u)}if(f!=
52null)break}}if(r.length===0||f!=null&&r.length===1){if(!n.teardown||n.teardown.call(a,o)===false)Ca(a,e,z.handle);delete C[e]}}else for(var B=0;B<r.length;B++){u=r[B];if(i||k.test(u.namespace)){c.event.remove(a,n,u.handler,B);r.splice(B--,1)}}}if(c.isEmptyObject(C)){if(b=z.handle)b.elem=null;delete z.events;delete z.handle;c.isEmptyObject(z)&&c.removeData(a)}}}}},trigger:function(a,b,d,f){var e=a.type||a;if(!f){a=typeof a==="object"?a[G]?a:c.extend(c.Event(e),a):c.Event(e);if(e.indexOf("!")>=0){a.type=
53e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return w;a.result=w;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d,b);f=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(j){}if(!a.isPropagationStopped()&&
54f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){f=a.target;var i,o=c.nodeName(f,"a")&&e==="click",k=c.event.special[e]||{};if((!k._default||k._default.call(d,a)===false)&&!o&&!(f&&f.nodeName&&c.noData[f.nodeName.toLowerCase()])){try{if(f[e]){if(i=f["on"+e])f["on"+e]=null;c.event.triggered=true;f[e]()}}catch(n){}if(i)f["on"+e]=i;c.event.triggered=false}}},handle:function(a){var b,d,f,e;a=arguments[0]=c.event.fix(a||A.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive;
55if(!b){d=a.type.split(".");a.type=d.shift();f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)")}e=c.data(this,"events");d=e[a.type];if(e&&d){d=d.slice(0);e=0;for(var j=d.length;e<j;e++){var i=d[e];if(b||f.test(i.namespace)){a.handler=i.handler;a.data=i.data;a.handleObj=i;i=i.handler.apply(this,arguments);if(i!==w){a.result=i;if(i===false){a.preventDefault();a.stopPropagation()}}if(a.isImmediatePropagationStopped())break}}}return a.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
56fix:function(a){if(a[G])return a;var b=a;a=c.Event(b);for(var d=this.props.length,f;d;){f=this.props[--d];a[f]=b[f]}if(!a.target)a.target=a.srcElement||s;if(a.target.nodeType===3)a.target=a.target.parentNode;if(!a.relatedTarget&&a.fromElement)a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement;if(a.pageX==null&&a.clientX!=null){b=s.documentElement;d=s.body;a.pageX=a.clientX+(b&&b.scrollLeft||d&&d.scrollLeft||0)-(b&&b.clientLeft||d&&d.clientLeft||0);a.pageY=a.clientY+(b&&b.scrollTop||
57d&&d.scrollTop||0)-(b&&b.clientTop||d&&d.clientTop||0)}if(!a.which&&(a.charCode||a.charCode===0?a.charCode:a.keyCode))a.which=a.charCode||a.keyCode;if(!a.metaKey&&a.ctrlKey)a.metaKey=a.ctrlKey;if(!a.which&&a.button!==w)a.which=a.button&1?1:a.button&2?3:a.button&4?2:0;return a},guid:1E8,proxy:c.proxy,special:{ready:{setup:c.bindReady,teardown:c.noop},live:{add:function(a){c.event.add(this,a.origType,c.extend({},a,{handler:oa}))},remove:function(a){var b=true,d=a.origType.replace(O,"");c.each(c.data(this,
58"events").live||[],function(){if(d===this.origType.replace(O,""))return b=false});b&&c.event.remove(this,a.origType,oa)}},beforeunload:{setup:function(a,b,d){if(this.setInterval)this.onbeforeunload=d;return false},teardown:function(a,b){if(this.onbeforeunload===b)this.onbeforeunload=null}}}};var Ca=s.removeEventListener?function(a,b,d){a.removeEventListener(b,d,false)}:function(a,b,d){a.detachEvent("on"+b,d)};c.Event=function(a){if(!this.preventDefault)return new c.Event(a);if(a&&a.type){this.originalEvent=
59a;this.type=a.type}else this.type=a;this.timeStamp=J();this[G]=true};c.Event.prototype={preventDefault:function(){this.isDefaultPrevented=Z;var a=this.originalEvent;if(a){a.preventDefault&&a.preventDefault();a.returnValue=false}},stopPropagation:function(){this.isPropagationStopped=Z;var a=this.originalEvent;if(a){a.stopPropagation&&a.stopPropagation();a.cancelBubble=true}},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=Z;this.stopPropagation()},isDefaultPrevented:Y,isPropagationStopped:Y,
60isImmediatePropagationStopped:Y};var Da=function(a){var b=a.relatedTarget;try{for(;b&&b!==this;)b=b.parentNode;if(b!==this){a.type=a.data;c.event.handle.apply(this,arguments)}}catch(d){}},Ea=function(a){a.type=a.data;c.event.handle.apply(this,arguments)};c.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){c.event.special[a]={setup:function(d){c.event.add(this,b,d&&d.selector?Ea:Da,a)},teardown:function(d){c.event.remove(this,b,d&&d.selector?Ea:Da)}}});if(!c.support.submitBubbles)c.event.special.submit=
61{setup:function(){if(this.nodeName.toLowerCase()!=="form"){c.event.add(this,"click.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="submit"||d==="image")&&c(b).closest("form").length)return na("submit",this,arguments)});c.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="text"||d==="password")&&c(b).closest("form").length&&a.keyCode===13)return na("submit",this,arguments)})}else return false},teardown:function(){c.event.remove(this,".specialSubmit")}};
62if(!c.support.changeBubbles){var da=/textarea|input|select/i,ea,Fa=function(a){var b=a.type,d=a.value;if(b==="radio"||b==="checkbox")d=a.checked;else if(b==="select-multiple")d=a.selectedIndex>-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},fa=function(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Fa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data",
63e);if(!(f===w||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:fa,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return fa.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return fa.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a,
64"_change_data",Fa(a))}},setup:function(){if(this.type==="file")return false;for(var a in ea)c.event.add(this,a+".specialChange",ea[a]);return da.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return da.test(this.nodeName)}};ea=c.event.special.change.filters}s.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this,f)}c.event.special[b]={setup:function(){this.addEventListener(a,
65d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof d==="object"){for(var j in d)this[b](j,f,d[j],e);return this}if(c.isFunction(f)){e=f;f=w}var i=b==="one"?c.proxy(e,function(k){c(this).unbind(k,i);return e.apply(this,arguments)}):e;if(d==="unload"&&b!=="one")this.one(d,f,e);else{j=0;for(var o=this.length;j<o;j++)c.event.add(this[j],d,i,f)}return this}});c.fn.extend({unbind:function(a,b){if(typeof a==="object"&&
66!a.preventDefault)for(var d in a)this.unbind(d,a[d]);else{d=0;for(var f=this.length;d<f;d++)c.event.remove(this[d],a,b)}return this},delegate:function(a,b,d,f){return this.live(b,d,f,a)},undelegate:function(a,b,d){return arguments.length===0?this.unbind("live"):this.die(b,null,d,a)},trigger:function(a,b){return this.each(function(){c.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0]){a=c.Event(a);a.preventDefault();a.stopPropagation();c.event.trigger(a,b,this[0]);return a.result}},
67toggle:function(a){for(var b=arguments,d=1;d<b.length;)c.proxy(a,b[d++]);return this.click(c.proxy(a,function(f){var e=(c.data(this,"lastToggle"+a.guid)||0)%d;c.data(this,"lastToggle"+a.guid,e+1);f.preventDefault();return b[e].apply(this,arguments)||false}))},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var Ga={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};c.each(["live","die"],function(a,b){c.fn[b]=function(d,f,e,j){var i,o=0,k,n,r=j||this.selector,
68u=j?this:c(this.context);if(c.isFunction(f)){e=f;f=w}for(d=(d||"").split(" ");(i=d[o++])!=null;){j=O.exec(i);k="";if(j){k=j[0];i=i.replace(O,"")}if(i==="hover")d.push("mouseenter"+k,"mouseleave"+k);else{n=i;if(i==="focus"||i==="blur"){d.push(Ga[i]+k);i+=k}else i=(Ga[i]||i)+k;b==="live"?u.each(function(){c.event.add(this,pa(i,r),{data:f,selector:r,handler:e,origType:i,origHandler:e,preType:n})}):u.unbind(pa(i,r),e)}}return this}});c.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "),
69function(a,b){c.fn[b]=function(d){return d?this.bind(b,d):this.trigger(b)};if(c.attrFn)c.attrFn[b]=true});A.attachEvent&&!A.addEventListener&&A.attachEvent("onunload",function(){for(var a in c.cache)if(c.cache[a].handle)try{c.event.remove(c.cache[a].handle.elem)}catch(b){}});(function(){function a(g){for(var h="",l,m=0;g[m];m++){l=g[m];if(l.nodeType===3||l.nodeType===4)h+=l.nodeValue;else if(l.nodeType!==8)h+=a(l.childNodes)}return h}function b(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];
70if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1&&!p){t.sizcache=l;t.sizset=q}if(t.nodeName.toLowerCase()===h){y=t;break}t=t[g]}m[q]=y}}}function d(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1){if(!p){t.sizcache=l;t.sizset=q}if(typeof h!=="string"){if(t===h){y=true;break}}else if(k.filter(h,[t]).length>0){y=t;break}}t=t[g]}m[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
71e=0,j=Object.prototype.toString,i=false,o=true;[0,0].sort(function(){o=false;return 0});var k=function(g,h,l,m){l=l||[];var q=h=h||s;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||typeof g!=="string")return l;for(var p=[],v,t,y,S,H=true,M=x(h),I=g;(f.exec(""),v=f.exec(I))!==null;){I=v[3];p.push(v[1]);if(v[2]){S=v[3];break}}if(p.length>1&&r.exec(g))if(p.length===2&&n.relative[p[0]])t=ga(p[0]+p[1],h);else for(t=n.relative[p[0]]?[h]:k(p.shift(),h);p.length;){g=p.shift();if(n.relative[g])g+=p.shift();
72t=ga(g,t)}else{if(!m&&p.length>1&&h.nodeType===9&&!M&&n.match.ID.test(p[0])&&!n.match.ID.test(p[p.length-1])){v=k.find(p.shift(),h,M);h=v.expr?k.filter(v.expr,v.set)[0]:v.set[0]}if(h){v=m?{expr:p.pop(),set:z(m)}:k.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=v.expr?k.filter(v.expr,v.set):v.set;if(p.length>0)y=z(t);else H=false;for(;p.length;){var D=p.pop();v=D;if(n.relative[D])v=p.pop();else D="";if(v==null)v=h;n.relative[D](y,v,M)}}else y=[]}y||(y=t);y||k.error(D||
73g);if(j.call(y)==="[object Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&E(h,y[g])))l.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&l.push(t[g]);else l.push.apply(l,y);else z(y,l);if(S){k(S,q,l,m);k.uniqueSort(l)}return l};k.uniqueSort=function(g){if(B){i=o;g.sort(B);if(i)for(var h=1;h<g.length;h++)g[h]===g[h-1]&&g.splice(h--,1)}return g};k.matches=function(g,h){return k(g,null,null,h)};k.find=function(g,h,l){var m,q;if(!g)return[];
74for(var p=0,v=n.order.length;p<v;p++){var t=n.order[p];if(q=n.leftMatch[t].exec(g)){var y=q[1];q.splice(1,1);if(y.substr(y.length-1)!=="\\"){q[1]=(q[1]||"").replace(/\\/g,"");m=n.find[t](q,h,l);if(m!=null){g=g.replace(n.match[t],"");break}}}}m||(m=h.getElementsByTagName("*"));return{set:m,expr:g}};k.filter=function(g,h,l,m){for(var q=g,p=[],v=h,t,y,S=h&&h[0]&&x(h[0]);g&&h.length;){for(var H in n.filter)if((t=n.leftMatch[H].exec(g))!=null&&t[2]){var M=n.filter[H],I,D;D=t[1];y=false;t.splice(1,1);if(D.substr(D.length-
751)!=="\\"){if(v===p)p=[];if(n.preFilter[H])if(t=n.preFilter[H](t,v,l,p,m,S)){if(t===true)continue}else y=I=true;if(t)for(var U=0;(D=v[U])!=null;U++)if(D){I=M(D,t,U,v);var Ha=m^!!I;if(l&&I!=null)if(Ha)y=true;else v[U]=false;else if(Ha){p.push(D);y=true}}if(I!==w){l||(v=p);g=g.replace(n.match[H],"");if(!y)return[];break}}}if(g===q)if(y==null)k.error(g);else break;q=g}return v};k.error=function(g){throw"Syntax error, unrecognized expression: "+g;};var n=k.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
76CLASS:/\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(g){return g.getAttribute("href")}},
77relative:{"+":function(g,h){var l=typeof h==="string",m=l&&!/\W/.test(h);l=l&&!m;if(m)h=h.toLowerCase();m=0;for(var q=g.length,p;m<q;m++)if(p=g[m]){for(;(p=p.previousSibling)&&p.nodeType!==1;);g[m]=l||p&&p.nodeName.toLowerCase()===h?p||false:p===h}l&&k.filter(h,g,true)},">":function(g,h){var l=typeof h==="string";if(l&&!/\W/.test(h)){h=h.toLowerCase();for(var m=0,q=g.length;m<q;m++){var p=g[m];if(p){l=p.parentNode;g[m]=l.nodeName.toLowerCase()===h?l:false}}}else{m=0;for(q=g.length;m<q;m++)if(p=g[m])g[m]=
78l?p.parentNode:p.parentNode===h;l&&k.filter(h,g,true)}},"":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("parentNode",h,m,g,p,l)},"~":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("previousSibling",h,m,g,p,l)}},find:{ID:function(g,h,l){if(typeof h.getElementById!=="undefined"&&!l)return(g=h.getElementById(g[1]))?[g]:[]},NAME:function(g,h){if(typeof h.getElementsByName!=="undefined"){var l=[];
79h=h.getElementsByName(g[1]);for(var m=0,q=h.length;m<q;m++)h[m].getAttribute("name")===g[1]&&l.push(h[m]);return l.length===0?null:l}},TAG:function(g,h){return h.getElementsByTagName(g[1])}},preFilter:{CLASS:function(g,h,l,m,q,p){g=" "+g[1].replace(/\\/g,"")+" ";if(p)return g;p=0;for(var v;(v=h[p])!=null;p++)if(v)if(q^(v.className&&(" "+v.className+" ").replace(/[\t\n]/g," ").indexOf(g)>=0))l||m.push(v);else if(l)h[p]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()},
80CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||1)-0;g[3]=h[3]-0}g[0]=e++;return g},ATTR:function(g,h,l,m,q,p){h=g[1].replace(/\\/g,"");if(!p&&n.attrMap[h])g[1]=n.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,l,m,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,h);else{g=k.filter(g[3],h,l,true^q);l||m.push.apply(m,
81g);return false}else if(n.match.POS.test(g[0])||n.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,l){return!!k(l[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)},
82text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}},
83setFilters:{first:function(g,h){return h===0},last:function(g,h,l,m){return h===m.length-1},even:function(g,h){return h%2===0},odd:function(g,h){return h%2===1},lt:function(g,h,l){return h<l[3]-0},gt:function(g,h,l){return h>l[3]-0},nth:function(g,h,l){return l[3]-0===h},eq:function(g,h,l){return l[3]-0===h}},filter:{PSEUDO:function(g,h,l,m){var q=h[1],p=n.filters[q];if(p)return p(g,l,h,m);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h=
84h[3];l=0;for(m=h.length;l<m;l++)if(h[l]===g)return false;return true}else k.error("Syntax error, unrecognized expression: "+q)},CHILD:function(g,h){var l=h[1],m=g;switch(l){case "only":case "first":for(;m=m.previousSibling;)if(m.nodeType===1)return false;if(l==="first")return true;m=g;case "last":for(;m=m.nextSibling;)if(m.nodeType===1)return false;return true;case "nth":l=h[2];var q=h[3];if(l===1&&q===0)return true;h=h[0];var p=g.parentNode;if(p&&(p.sizcache!==h||!g.nodeIndex)){var v=0;for(m=p.firstChild;m;m=
85m.nextSibling)if(m.nodeType===1)m.nodeIndex=++v;p.sizcache=h}g=g.nodeIndex-q;return l===0?g===0:g%l===0&&g/l>=0}},ID:function(g,h){return g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return h==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var l=h[1];g=n.attrHandle[l]?n.attrHandle[l](g):g[l]!=null?g[l]:g.getAttribute(l);l=g+"";var m=h[2];h=h[4];return g==null?m==="!=":m===
86"="?l===h:m==="*="?l.indexOf(h)>=0:m==="~="?(" "+l+" ").indexOf(h)>=0:!h?l&&g!==false:m==="!="?l!==h:m==="^="?l.indexOf(h)===0:m==="$="?l.substr(l.length-h.length)===h:m==="|="?l===h||l.substr(0,h.length+1)===h+"-":false},POS:function(g,h,l,m){var q=n.setFilters[h[2]];if(q)return q(g,l,h,m)}}},r=n.match.POS;for(var u in n.match){n.match[u]=new RegExp(n.match[u].source+/(?![^\[]*\])(?![^\(]*\))/.source);n.leftMatch[u]=new RegExp(/(^(?:.|\r|\n)*?)/.source+n.match[u].source.replace(/\\(\d+)/g,function(g,
87h){return"\\"+(h-0+1)}))}var z=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return h}return g};try{Array.prototype.slice.call(s.documentElement.childNodes,0)}catch(C){z=function(g,h){h=h||[];if(j.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var l=0,m=g.length;l<m;l++)h.push(g[l]);else for(l=0;g[l];l++)h.push(g[l]);return h}}var B;if(s.documentElement.compareDocumentPosition)B=function(g,h){if(!g.compareDocumentPosition||
88!h.compareDocumentPosition){if(g==h)i=true;return g.compareDocumentPosition?-1:1}g=g.compareDocumentPosition(h)&4?-1:g===h?0:1;if(g===0)i=true;return g};else if("sourceIndex"in s.documentElement)B=function(g,h){if(!g.sourceIndex||!h.sourceIndex){if(g==h)i=true;return g.sourceIndex?-1:1}g=g.sourceIndex-h.sourceIndex;if(g===0)i=true;return g};else if(s.createRange)B=function(g,h){if(!g.ownerDocument||!h.ownerDocument){if(g==h)i=true;return g.ownerDocument?-1:1}var l=g.ownerDocument.createRange(),m=
89h.ownerDocument.createRange();l.setStart(g,0);l.setEnd(g,0);m.setStart(h,0);m.setEnd(h,0);g=l.compareBoundaryPoints(Range.START_TO_END,m);if(g===0)i=true;return g};(function(){var g=s.createElement("div"),h="script"+(new Date).getTime();g.innerHTML="<a name='"+h+"'/>";var l=s.documentElement;l.insertBefore(g,l.firstChild);if(s.getElementById(h)){n.find.ID=function(m,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(m[1]))?q.id===m[1]||typeof q.getAttributeNode!=="undefined"&&
90q.getAttributeNode("id").nodeValue===m[1]?[q]:w:[]};n.filter.ID=function(m,q){var p=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&p&&p.nodeValue===q}}l.removeChild(g);l=g=null})();(function(){var g=s.createElement("div");g.appendChild(s.createComment(""));if(g.getElementsByTagName("*").length>0)n.find.TAG=function(h,l){l=l.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var m=0;l[m];m++)l[m].nodeType===1&&h.push(l[m]);l=h}return l};g.innerHTML="<a href='#'></a>";
91if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")n.attrHandle.href=function(h){return h.getAttribute("href",2)};g=null})();s.querySelectorAll&&function(){var g=k,h=s.createElement("div");h.innerHTML="<p class='TEST'></p>";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){k=function(m,q,p,v){q=q||s;if(!v&&q.nodeType===9&&!x(q))try{return z(q.querySelectorAll(m),p)}catch(t){}return g(m,q,p,v)};for(var l in g)k[l]=g[l];h=null}}();
92(function(){var g=s.createElement("div");g.innerHTML="<div class='test e'></div><div class='test'></div>";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){n.order.splice(1,0,"CLASS");n.find.CLASS=function(h,l,m){if(typeof l.getElementsByClassName!=="undefined"&&!m)return l.getElementsByClassName(h[1])};g=null}}})();var E=s.compareDocumentPosition?function(g,h){return!!(g.compareDocumentPosition(h)&16)}:
93function(g,h){return g!==h&&(g.contains?g.contains(h):true)},x=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},ga=function(g,h){var l=[],m="",q;for(h=h.nodeType?[h]:h;q=n.match.PSEUDO.exec(g);){m+=q[0];g=g.replace(n.match.PSEUDO,"")}g=n.relative[g]?g+"*":g;q=0;for(var p=h.length;q<p;q++)k(g,h[q],l);return k.filter(m,l)};c.find=k;c.expr=k.selectors;c.expr[":"]=c.expr.filters;c.unique=k.uniqueSort;c.text=a;c.isXMLDoc=x;c.contains=E})();var eb=/Until$/,fb=/^(?:parents|prevUntil|prevAll)/,
94gb=/,/;R=Array.prototype.slice;var Ia=function(a,b,d){if(c.isFunction(b))return c.grep(a,function(e,j){return!!b.call(e,j,e)===d});else if(b.nodeType)return c.grep(a,function(e){return e===b===d});else if(typeof b==="string"){var f=c.grep(a,function(e){return e.nodeType===1});if(Ua.test(b))return c.filter(b,f,!d);else b=c.filter(b,f)}return c.grep(a,function(e){return c.inArray(e,b)>=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f<e;f++){d=b.length;
95c.find(a,this[f],b);if(f>0)for(var j=d;j<b.length;j++)for(var i=0;i<d;i++)if(b[i]===b[j]){b.splice(j--,1);break}}return b},has:function(a){var b=c(a);return this.filter(function(){for(var d=0,f=b.length;d<f;d++)if(c.contains(this,b[d]))return true})},not:function(a){return this.pushStack(Ia(this,a,false),"not",a)},filter:function(a){return this.pushStack(Ia(this,a,true),"filter",a)},is:function(a){return!!a&&c.filter(a,this).length>0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,j=
96{},i;if(f&&a.length){e=0;for(var o=a.length;e<o;e++){i=a[e];j[i]||(j[i]=c.expr.match.POS.test(i)?c(i,b||this.context):i)}for(;f&&f.ownerDocument&&f!==b;){for(i in j){e=j[i];if(e.jquery?e.index(f)>-1:c(f).is(e)){d.push({selector:i,elem:f});delete j[i]}}f=f.parentNode}}return d}var k=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(n,r){for(;r&&r.ownerDocument&&r!==b;){if(k?k.index(r)>-1:c(r).is(a))return r;r=r.parentNode}return null})},index:function(a){if(!a||typeof a===
97"string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(),a);return this.pushStack(qa(a[0])||qa(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode",
98d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")?
99a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var e=c.map(this,b,d);eb.test(a)||(f=d);if(f&&typeof f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e):e;if((this.length>1||gb.test(f))&&fb.test(a))e=e.reverse();return this.pushStack(e,a,R.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return c.find.matches(a,b)},dir:function(a,b,d){var f=[];for(a=a[b];a&&a.nodeType!==9&&(d===w||a.nodeType!==1||!c(a).is(d));){a.nodeType===
1001&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var Ja=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ka=/(<([\w:]+)[^>]*?)\/>/g,hb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,La=/<([\w:]+)/,ib=/<tbody/i,jb=/<|&#?\w+;/,ta=/<script|<object|<embed|<option|<style/i,ua=/checked\s*(?:[^=]|=\s*.checked.)/i,Ma=function(a,b,d){return hb.test(d)?
101a:b+"></"+d+">"},F={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if(!c.support.htmlSerialize)F._default=[1,"div<div>","</div>"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d=
102c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==w)return this.empty().append((this[0]&&this[0].ownerDocument||s).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this},
103wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})},
104prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,
105this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,f;(f=this[d])!=null;d++)if(!a||c.filter(a,[f]).length){if(!b&&f.nodeType===1){c.cleanData(f.getElementsByTagName("*"));c.cleanData([f])}f.parentNode&&f.parentNode.removeChild(f)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild);
106return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Ja,"").replace(/=([^="'>\s]+\/)>/g,'="$1">').replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){ra(this,b);ra(this.find("*"),b.find("*"))}return b},html:function(a){if(a===w)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Ja,
107""):null;else if(typeof a==="string"&&!ta.test(a)&&(c.support.leadingWhitespace||!V.test(a))&&!F[(La.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Ka,Ma);try{for(var b=0,d=this.length;b<d;b++)if(this[b].nodeType===1){c.cleanData(this[b].getElementsByTagName("*"));this[b].innerHTML=a}}catch(f){this.empty().append(a)}}else c.isFunction(a)?this.each(function(e){var j=c(this),i=j.html();j.empty().append(function(){return a.call(this,e,i)})}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&
108this[0].parentNode){if(c.isFunction(a))return this.each(function(b){var d=c(this),f=d.html();d.replaceWith(a.call(this,b,f))});if(typeof a!=="string")a=c(a).detach();return this.each(function(){var b=this.nextSibling,d=this.parentNode;c(this).remove();b?c(b).before(a):c(d).append(a)})}else return this.pushStack(c(c.isFunction(a)?a():a),"replaceWith",a)},detach:function(a){return this.remove(a,true)},domManip:function(a,b,d){function f(u){return c.nodeName(u,"table")?u.getElementsByTagName("tbody")[0]||
109u.appendChild(u.ownerDocument.createElement("tbody")):u}var e,j,i=a[0],o=[],k;if(!c.support.checkClone&&arguments.length===3&&typeof i==="string"&&ua.test(i))return this.each(function(){c(this).domManip(a,b,d,true)});if(c.isFunction(i))return this.each(function(u){var z=c(this);a[0]=i.call(this,u,b?z.html():w);z.domManip(a,b,d)});if(this[0]){e=i&&i.parentNode;e=c.support.parentNode&&e&&e.nodeType===11&&e.childNodes.length===this.length?{fragment:e}:sa(a,this,o);k=e.fragment;if(j=k.childNodes.length===
1101?(k=k.firstChild):k.firstChild){b=b&&c.nodeName(j,"tr");for(var n=0,r=this.length;n<r;n++)d.call(b?f(this[n],j):this[n],n>0||e.cacheable||this.length>1?k.cloneNode(true):k)}o.length&&c.each(o,Qa)}return this}});c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var f=[];d=c(d);var e=this.length===1&&this[0].parentNode;if(e&&e.nodeType===11&&e.childNodes.length===1&&d.length===1){d[b](this[0]);
111return this}else{e=0;for(var j=d.length;e<j;e++){var i=(e>0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),i);f=f.concat(i)}return this.pushStack(f,a,d.selector)}}});c.extend({clean:function(a,b,d,f){b=b||s;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||s;for(var e=[],j=0,i;(i=a[j])!=null;j++){if(typeof i==="number")i+="";if(i){if(typeof i==="string"&&!jb.test(i))i=b.createTextNode(i);else if(typeof i==="string"){i=i.replace(Ka,Ma);var o=(La.exec(i)||["",
112""])[1].toLowerCase(),k=F[o]||F._default,n=k[0],r=b.createElement("div");for(r.innerHTML=k[1]+i+k[2];n--;)r=r.lastChild;if(!c.support.tbody){n=ib.test(i);o=o==="table"&&!n?r.firstChild&&r.firstChild.childNodes:k[1]==="<table>"&&!n?r.childNodes:[];for(k=o.length-1;k>=0;--k)c.nodeName(o[k],"tbody")&&!o[k].childNodes.length&&o[k].parentNode.removeChild(o[k])}!c.support.leadingWhitespace&&V.test(i)&&r.insertBefore(b.createTextNode(V.exec(i)[0]),r.firstChild);i=r.childNodes}if(i.nodeType)e.push(i);else e=
113c.merge(e,i)}}if(d)for(j=0;e[j];j++)if(f&&c.nodeName(e[j],"script")&&(!e[j].type||e[j].type.toLowerCase()==="text/javascript"))f.push(e[j].parentNode?e[j].parentNode.removeChild(e[j]):e[j]);else{e[j].nodeType===1&&e.splice.apply(e,[j+1,0].concat(c.makeArray(e[j].getElementsByTagName("script"))));d.appendChild(e[j])}return e},cleanData:function(a){for(var b,d,f=c.cache,e=c.event.special,j=c.support.deleteExpando,i=0,o;(o=a[i])!=null;i++)if(d=o[c.expando]){b=f[d];if(b.events)for(var k in b.events)e[k]?
114c.event.remove(o,k):Ca(o,k,b.handle);if(j)delete o[c.expando];else o.removeAttribute&&o.removeAttribute(c.expando);delete f[d]}}});var kb=/z-?index|font-?weight|opacity|zoom|line-?height/i,Na=/alpha\([^)]*\)/,Oa=/opacity=([^)]*)/,ha=/float/i,ia=/-([a-z])/ig,lb=/([A-Z])/g,mb=/^-?\d+(?:px)?$/i,nb=/^-?\d/,ob={position:"absolute",visibility:"hidden",display:"block"},pb=["Left","Right"],qb=["Top","Bottom"],rb=s.defaultView&&s.defaultView.getComputedStyle,Pa=c.support.cssFloat?"cssFloat":"styleFloat",ja=
115function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return X(this,a,b,true,function(d,f,e){if(e===w)return c.curCSS(d,f);if(typeof e==="number"&&!kb.test(f))e+="px";c.style(d,f,e)})};c.extend({style:function(a,b,d){if(!a||a.nodeType===3||a.nodeType===8)return w;if((b==="width"||b==="height")&&parseFloat(d)<0)d=w;var f=a.style||a,e=d!==w;if(!c.support.opacity&&b==="opacity"){if(e){f.zoom=1;b=parseInt(d,10)+""==="NaN"?"":"alpha(opacity="+d*100+")";a=f.filter||c.curCSS(a,"filter")||"";f.filter=
116Na.test(a)?a.replace(Na,b):b}return f.filter&&f.filter.indexOf("opacity=")>=0?parseFloat(Oa.exec(f.filter)[1])/100+"":""}if(ha.test(b))b=Pa;b=b.replace(ia,ja);if(e)f[b]=d;return f[b]},css:function(a,b,d,f){if(b==="width"||b==="height"){var e,j=b==="width"?pb:qb;function i(){e=b==="width"?a.offsetWidth:a.offsetHeight;f!=="border"&&c.each(j,function(){f||(e-=parseFloat(c.curCSS(a,"padding"+this,true))||0);if(f==="margin")e+=parseFloat(c.curCSS(a,"margin"+this,true))||0;else e-=parseFloat(c.curCSS(a,
117"border"+this+"Width",true))||0})}a.offsetWidth!==0?i():c.swap(a,ob,i);return Math.max(0,Math.round(e))}return c.curCSS(a,b,d)},curCSS:function(a,b,d){var f,e=a.style;if(!c.support.opacity&&b==="opacity"&&a.currentStyle){f=Oa.test(a.currentStyle.filter||"")?parseFloat(RegExp.$1)/100+"":"";return f===""?"1":f}if(ha.test(b))b=Pa;if(!d&&e&&e[b])f=e[b];else if(rb){if(ha.test(b))b="float";b=b.replace(lb,"-$1").toLowerCase();e=a.ownerDocument.defaultView;if(!e)return null;if(a=e.getComputedStyle(a,null))f=
118a.getPropertyValue(b);if(b==="opacity"&&f==="")f="1"}else if(a.currentStyle){d=b.replace(ia,ja);f=a.currentStyle[b]||a.currentStyle[d];if(!mb.test(f)&&nb.test(f)){b=e.left;var j=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;e.left=d==="fontSize"?"1em":f||0;f=e.pixelLeft+"px";e.left=b;a.runtimeStyle.left=j}}return f},swap:function(a,b,d){var f={};for(var e in b){f[e]=a.style[e];a.style[e]=b[e]}d.call(a);for(e in b)a.style[e]=f[e]}});if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b=
119a.offsetWidth,d=a.offsetHeight,f=a.nodeName.toLowerCase()==="tr";return b===0&&d===0&&!f?true:b>0&&d>0&&!f?false:c.curCSS(a,"display")==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var sb=J(),tb=/<script(.|\s)*?\/script>/gi,ub=/select|textarea/i,vb=/color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,N=/=\?(&|$)/,ka=/\?/,wb=/(\?|&)_=.*?(&|$)/,xb=/^(\w+:)?\/\/([^\/?#]+)/,yb=/%20/g,zb=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!==
120"string")return zb.call(this,a);else if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var e=a.slice(f,a.length);a=a.slice(0,f)}f="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b==="object"){b=c.param(b,c.ajaxSettings.traditional);f="POST"}var j=this;c.ajax({url:a,type:f,dataType:"html",data:b,complete:function(i,o){if(o==="success"||o==="notmodified")j.html(e?c("<div />").append(i.responseText.replace(tb,"")).find(e):i.responseText);d&&j.each(d,[i.responseText,o,i])}});return this},
121serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ub.test(this.nodeName)||vb.test(this.type))}).map(function(a,b){a=c(this).val();return a==null?null:c.isArray(a)?c.map(a,function(d){return{name:b.name,value:d}}):{name:b.name,value:a}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),
122function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:f})},getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:f})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href,
123global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:A.XMLHttpRequest&&(A.location.protocol!=="file:"||!A.ActiveXObject)?function(){return new A.XMLHttpRequest}:function(){try{return new A.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},etag:{},ajax:function(a){function b(){e.success&&
124e.success.call(k,o,i,x);e.global&&f("ajaxSuccess",[x,e])}function d(){e.complete&&e.complete.call(k,x,i);e.global&&f("ajaxComplete",[x,e]);e.global&&!--c.active&&c.event.trigger("ajaxStop")}function f(q,p){(e.context?c(e.context):c.event).trigger(q,p)}var e=c.extend(true,{},c.ajaxSettings,a),j,i,o,k=a&&a.context||e,n=e.type.toUpperCase();if(e.data&&e.processData&&typeof e.data!=="string")e.data=c.param(e.data,e.traditional);if(e.dataType==="jsonp"){if(n==="GET")N.test(e.url)||(e.url+=(ka.test(e.url)?
125"&":"?")+(e.jsonp||"callback")+"=?");else if(!e.data||!N.test(e.data))e.data=(e.data?e.data+"&":"")+(e.jsonp||"callback")+"=?";e.dataType="json"}if(e.dataType==="json"&&(e.data&&N.test(e.data)||N.test(e.url))){j=e.jsonpCallback||"jsonp"+sb++;if(e.data)e.data=(e.data+"").replace(N,"="+j+"$1");e.url=e.url.replace(N,"="+j+"$1");e.dataType="script";A[j]=A[j]||function(q){o=q;b();d();A[j]=w;try{delete A[j]}catch(p){}z&&z.removeChild(C)}}if(e.dataType==="script"&&e.cache===null)e.cache=false;if(e.cache===
126false&&n==="GET"){var r=J(),u=e.url.replace(wb,"$1_="+r+"$2");e.url=u+(u===e.url?(ka.test(e.url)?"&":"?")+"_="+r:"")}if(e.data&&n==="GET")e.url+=(ka.test(e.url)?"&":"?")+e.data;e.global&&!c.active++&&c.event.trigger("ajaxStart");r=(r=xb.exec(e.url))&&(r[1]&&r[1]!==location.protocol||r[2]!==location.host);if(e.dataType==="script"&&n==="GET"&&r){var z=s.getElementsByTagName("head")[0]||s.documentElement,C=s.createElement("script");C.src=e.url;if(e.scriptCharset)C.charset=e.scriptCharset;if(!j){var B=
127false;C.onload=C.onreadystatechange=function(){if(!B&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){B=true;b();d();C.onload=C.onreadystatechange=null;z&&C.parentNode&&z.removeChild(C)}}}z.insertBefore(C,z.firstChild);return w}var E=false,x=e.xhr();if(x){e.username?x.open(n,e.url,e.async,e.username,e.password):x.open(n,e.url,e.async);try{if(e.data||a&&a.contentType)x.setRequestHeader("Content-Type",e.contentType);if(e.ifModified){c.lastModified[e.url]&&x.setRequestHeader("If-Modified-Since",
128c.lastModified[e.url]);c.etag[e.url]&&x.setRequestHeader("If-None-Match",c.etag[e.url])}r||x.setRequestHeader("X-Requested-With","XMLHttpRequest");x.setRequestHeader("Accept",e.dataType&&e.accepts[e.dataType]?e.accepts[e.dataType]+", */*":e.accepts._default)}catch(ga){}if(e.beforeSend&&e.beforeSend.call(k,x,e)===false){e.global&&!--c.active&&c.event.trigger("ajaxStop");x.abort();return false}e.global&&f("ajaxSend",[x,e]);var g=x.onreadystatechange=function(q){if(!x||x.readyState===0||q==="abort"){E||
129d();E=true;if(x)x.onreadystatechange=c.noop}else if(!E&&x&&(x.readyState===4||q==="timeout")){E=true;x.onreadystatechange=c.noop;i=q==="timeout"?"timeout":!c.httpSuccess(x)?"error":e.ifModified&&c.httpNotModified(x,e.url)?"notmodified":"success";var p;if(i==="success")try{o=c.httpData(x,e.dataType,e)}catch(v){i="parsererror";p=v}if(i==="success"||i==="notmodified")j||b();else c.handleError(e,x,i,p);d();q==="timeout"&&x.abort();if(e.async)x=null}};try{var h=x.abort;x.abort=function(){x&&h.call(x);
130g("abort")}}catch(l){}e.async&&e.timeout>0&&setTimeout(function(){x&&!E&&g("timeout")},e.timeout);try{x.send(n==="POST"||n==="PUT"||n==="DELETE"?e.data:null)}catch(m){c.handleError(e,x,null,m);d()}e.async||g();return x}},handleError:function(a,b,d,f){if(a.error)a.error.call(a.context||a,b,d,f);if(a.global)(a.context?c(a.context):c.event).trigger("ajaxError",[b,a,f])},active:0,httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status===
1311223||a.status===0}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),f=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(f)c.etag[b]=f;return a.status===304||a.status===0},httpData:function(a,b,d){var f=a.getResponseHeader("content-type")||"",e=b==="xml"||!b&&f.indexOf("xml")>=0;a=e?a.responseXML:a.responseText;e&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b===
132"json"||!b&&f.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&f.indexOf("javascript")>=0)c.globalEval(a);return a},param:function(a,b){function d(i,o){if(c.isArray(o))c.each(o,function(k,n){b||/\[\]$/.test(i)?f(i,n):d(i+"["+(typeof n==="object"||c.isArray(n)?k:"")+"]",n)});else!b&&o!=null&&typeof o==="object"?c.each(o,function(k,n){d(i+"["+k+"]",n)}):f(i,o)}function f(i,o){o=c.isFunction(o)?o():o;e[e.length]=encodeURIComponent(i)+"="+encodeURIComponent(o)}var e=[];if(b===w)b=c.ajaxSettings.traditional;
133if(c.isArray(a)||a.jquery)c.each(a,function(){f(this.name,this.value)});else for(var j in a)d(j,a[j]);return e.join("&").replace(yb,"+")}});var la={},Ab=/toggle|show|hide/,Bb=/^([+-]=)?([\d+-.]+)(.*)$/,W,va=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b){if(a||a===0)return this.animate(K("show",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");
134this[a].style.display=d||"";if(c.css(this[a],"display")==="none"){d=this[a].nodeName;var f;if(la[d])f=la[d];else{var e=c("<"+d+" />").appendTo("body");f=e.css("display");if(f==="none")f="block";e.remove();la[d]=f}c.data(this[a],"olddisplay",f)}}a=0;for(b=this.length;a<b;a++)this[a].style.display=c.data(this[a],"olddisplay")||"";return this}},hide:function(a,b){if(a||a===0)return this.animate(K("hide",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");!d&&d!=="none"&&c.data(this[a],
135"olddisplay",c.css(this[a],"display"))}a=0;for(b=this.length;a<b;a++)this[a].style.display="none";return this}},_toggle:c.fn.toggle,toggle:function(a,b){var d=typeof a==="boolean";if(c.isFunction(a)&&c.isFunction(b))this._toggle.apply(this,arguments);else a==null||d?this.each(function(){var f=d?a:c(this).is(":hidden");c(this)[f?"show":"hide"]()}):this.animate(K("toggle",3),a,b);return this},fadeTo:function(a,b,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,d)},
136animate:function(a,b,d,f){var e=c.speed(b,d,f);if(c.isEmptyObject(a))return this.each(e.complete);return this[e.queue===false?"each":"queue"](function(){var j=c.extend({},e),i,o=this.nodeType===1&&c(this).is(":hidden"),k=this;for(i in a){var n=i.replace(ia,ja);if(i!==n){a[n]=a[i];delete a[i];i=n}if(a[i]==="hide"&&o||a[i]==="show"&&!o)return j.complete.call(this);if((i==="height"||i==="width")&&this.style){j.display=c.css(this,"display");j.overflow=this.style.overflow}if(c.isArray(a[i])){(j.specialEasing=
137j.specialEasing||{})[i]=a[i][1];a[i]=a[i][0]}}if(j.overflow!=null)this.style.overflow="hidden";j.curAnim=c.extend({},a);c.each(a,function(r,u){var z=new c.fx(k,j,r);if(Ab.test(u))z[u==="toggle"?o?"show":"hide":u](a);else{var C=Bb.exec(u),B=z.cur(true)||0;if(C){u=parseFloat(C[2]);var E=C[3]||"px";if(E!=="px"){k.style[r]=(u||1)+E;B=(u||1)/z.cur(true)*B;k.style[r]=B+E}if(C[1])u=(C[1]==="-="?-1:1)*u+B;z.custom(B,u,E)}else z.custom(B,u,"")}});return true})},stop:function(a,b){var d=c.timers;a&&this.queue([]);
138this.each(function(){for(var f=d.length-1;f>=0;f--)if(d[f].elem===this){b&&d[f](true);d.splice(f,1)}});b||this.dequeue();return this}});c.each({slideDown:K("show",1),slideUp:K("hide",1),slideToggle:K("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,f){return this.animate(b,d,f)}});c.extend({speed:function(a,b,d){var f=a&&typeof a==="object"?a:{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};f.duration=c.fx.off?0:typeof f.duration===
139"number"?f.duration:c.fx.speeds[f.duration]||c.fx.speeds._default;f.old=f.complete;f.complete=function(){f.queue!==false&&c(this).dequeue();c.isFunction(f.old)&&f.old.call(this)};return f},easing:{linear:function(a,b,d,f){return d+f*a},swing:function(a,b,d,f){return(-Math.cos(a*Math.PI)/2+0.5)*f+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]||
140c.fx.step._default)(this);if((this.prop==="height"||this.prop==="width")&&this.elem.style)this.elem.style.display="block"},cur:function(a){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];return(a=parseFloat(c.css(this.elem,this.prop,a)))&&a>-10000?a:parseFloat(c.curCSS(this.elem,this.prop))||0},custom:function(a,b,d){function f(j){return e.step(j)}this.startTime=J();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start;
141this.pos=this.state=0;var e=this;f.elem=this.elem;if(f()&&c.timers.push(f)&&!W)W=setInterval(c.fx.tick,13)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(a){var b=J(),d=true;if(a||b>=this.options.duration+this.startTime){this.now=
142this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var f in this.options.curAnim)if(this.options.curAnim[f]!==true)d=false;if(d){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;a=c.data(this.elem,"olddisplay");this.elem.style.display=a?a:this.options.display;if(c.css(this.elem,"display")==="none")this.elem.style.display="block"}this.options.hide&&c(this.elem).hide();if(this.options.hide||this.options.show)for(var e in this.options.curAnim)c.style(this.elem,
143e,this.options.orig[e]);this.options.complete.call(this.elem)}return false}else{e=b-this.startTime;this.state=e/this.options.duration;a=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||a](this.state,e,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=c.timers,b=0;b<a.length;b++)a[b]()||a.splice(b--,1);a.length||
144c.fx.stop()},stop:function(){clearInterval(W);W=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){c.style(a.elem,"opacity",a.now)},_default:function(a){if(a.elem.style&&a.elem.style[a.prop]!=null)a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit;else a.elem[a.prop]=a.now}}});if(c.expr&&c.expr.filters)c.expr.filters.animated=function(a){return c.grep(c.timers,function(b){return a===b.elem}).length};c.fn.offset="getBoundingClientRect"in s.documentElement?
145function(a){var b=this[0];if(a)return this.each(function(e){c.offset.setOffset(this,a,e)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);var d=b.getBoundingClientRect(),f=b.ownerDocument;b=f.body;f=f.documentElement;return{top:d.top+(self.pageYOffset||c.support.boxModel&&f.scrollTop||b.scrollTop)-(f.clientTop||b.clientTop||0),left:d.left+(self.pageXOffset||c.support.boxModel&&f.scrollLeft||b.scrollLeft)-(f.clientLeft||b.clientLeft||0)}}:function(a){var b=
146this[0];if(a)return this.each(function(r){c.offset.setOffset(this,a,r)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);c.offset.initialize();var d=b.offsetParent,f=b,e=b.ownerDocument,j,i=e.documentElement,o=e.body;f=(e=e.defaultView)?e.getComputedStyle(b,null):b.currentStyle;for(var k=b.offsetTop,n=b.offsetLeft;(b=b.parentNode)&&b!==o&&b!==i;){if(c.offset.supportsFixedPosition&&f.position==="fixed")break;j=e?e.getComputedStyle(b,null):b.currentStyle;
147k-=b.scrollTop;n-=b.scrollLeft;if(b===d){k+=b.offsetTop;n+=b.offsetLeft;if(c.offset.doesNotAddBorder&&!(c.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(b.nodeName))){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=d;d=b.offsetParent}if(c.offset.subtractsBorderForOverflowNotVisible&&j.overflow!=="visible"){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=j}if(f.position==="relative"||f.position==="static"){k+=o.offsetTop;n+=o.offsetLeft}if(c.offset.supportsFixedPosition&&
148f.position==="fixed"){k+=Math.max(i.scrollTop,o.scrollTop);n+=Math.max(i.scrollLeft,o.scrollLeft)}return{top:k,left:n}};c.offset={initialize:function(){var a=s.body,b=s.createElement("div"),d,f,e,j=parseFloat(c.curCSS(a,"marginTop",true))||0;c.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"});b.innerHTML="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";
149a.insertBefore(b,a.firstChild);d=b.firstChild;f=d.firstChild;e=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=f.offsetTop!==5;this.doesAddBorderForTableAndCells=e.offsetTop===5;f.style.position="fixed";f.style.top="20px";this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15;f.style.position=f.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==j;a.removeChild(b);
150c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.curCSS(a,"marginTop",true))||0;d+=parseFloat(c.curCSS(a,"marginLeft",true))||0}return{top:b,left:d}},setOffset:function(a,b,d){if(/static/.test(c.curCSS(a,"position")))a.style.position="relative";var f=c(a),e=f.offset(),j=parseInt(c.curCSS(a,"top",true),10)||0,i=parseInt(c.curCSS(a,"left",true),10)||0;if(c.isFunction(b))b=b.call(a,
151d,e);d={top:b.top-e.top+j,left:b.left-e.left+i};"using"in b?b.using.call(a,d):f.css(d)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),f=/^body|html$/i.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.curCSS(a,"marginTop",true))||0;d.left-=parseFloat(c.curCSS(a,"marginLeft",true))||0;f.top+=parseFloat(c.curCSS(b[0],"borderTopWidth",true))||0;f.left+=parseFloat(c.curCSS(b[0],"borderLeftWidth",true))||0;return{top:d.top-
152f.top,left:d.left-f.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||s.body;a&&!/^body|html$/i.test(a.nodeName)&&c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(f){var e=this[0],j;if(!e)return null;if(f!==w)return this.each(function(){if(j=wa(this))j.scrollTo(!a?f:c(j).scrollLeft(),a?f:c(j).scrollTop());else this[d]=f});else return(j=wa(e))?"pageXOffset"in j?j[a?"pageYOffset":
153"pageXOffset"]:c.support.boxModel&&j.document.documentElement[d]||j.document.body[d]:e[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();c.fn["inner"+b]=function(){return this[0]?c.css(this[0],d,false,"padding"):null};c.fn["outer"+b]=function(f){return this[0]?c.css(this[0],d,false,f?"margin":"border"):null};c.fn[d]=function(f){var e=this[0];if(!e)return f==null?null:this;if(c.isFunction(f))return this.each(function(j){var i=c(this);i[d](f.call(this,j,i[d]()))});return"scrollTo"in
154e&&e.document?e.document.compatMode==="CSS1Compat"&&e.document.documentElement["client"+b]||e.document.body["client"+b]:e.nodeType===9?Math.max(e.documentElement["client"+b],e.body["scroll"+b],e.documentElement["scroll"+b],e.body["offset"+b],e.documentElement["offset"+b]):f===w?c.css(e,d):this.css(d,typeof f==="string"?f:f+"px")}});A.jQuery=A.$=c})(window);
0155
=== removed file 'doc/source/percona-theme/static/jquery.min.js'
--- doc/source/percona-theme/static/jquery.min.js 2011-09-20 06:59:03 +0000
+++ doc/source/percona-theme/static/jquery.min.js 1970-01-01 00:00:00 +0000
@@ -1,154 +0,0 @@
1/*!
2 * jQuery JavaScript Library v1.4.2
3 * http://jquery.com/
4 *
5 * Copyright 2010, John Resig
6 * Dual licensed under the MIT or GPL Version 2 licenses.
7 * http://jquery.org/license
8 *
9 * Includes Sizzle.js
10 * http://sizzlejs.com/
11 * Copyright 2010, The Dojo Foundation
12 * Released under the MIT, BSD, and GPL Licenses.
13 *
14 * Date: Sat Feb 13 22:33:48 2010 -0500
15 */
16(function(A,w){function ma(){if(!c.isReady){try{s.documentElement.doScroll("left")}catch(a){setTimeout(ma,1);return}c.ready()}}function Qa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,j){var i=a.length;if(typeof b==="object"){for(var o in b)X(a,o,b[o],f,e,d);return a}if(d!==w){f=!j&&f&&c.isFunction(d);for(o=0;o<i;o++)e(a[o],b,f?d.call(a[o],o,e(a[o],b)):d,j);return a}return i?
17e(a[0],b):w}function J(){return(new Date).getTime()}function Y(){return false}function Z(){return true}function na(a,b,d){d[0].type=a;return c.event.handle.apply(b,d)}function oa(a){var b,d=[],f=[],e=arguments,j,i,o,k,n,r;i=c.data(this,"events");if(!(a.liveFired===this||!i||!i.live||a.button&&a.type==="click")){a.liveFired=this;var u=i.live.slice(0);for(k=0;k<u.length;k++){i=u[k];i.origType.replace(O,"")===a.type?f.push(i.selector):u.splice(k--,1)}j=c(a.target).closest(f,a.currentTarget);n=0;for(r=
18j.length;n<r;n++)for(k=0;k<u.length;k++){i=u[k];if(j[n].selector===i.selector){o=j[n].elem;f=null;if(i.preType==="mouseenter"||i.preType==="mouseleave")f=c(a.relatedTarget).closest(i.selector)[0];if(!f||f!==o)d.push({elem:o,handleObj:i})}}n=0;for(r=d.length;n<r;n++){j=d[n];a.currentTarget=j.elem;a.data=j.handleObj.data;a.handleObj=j.handleObj;if(j.handleObj.origHandler.apply(j.elem,e)===false){b=false;break}}return b}}function pa(a,b){return"live."+(a&&a!=="*"?a+".":"")+b.replace(/\./g,"`").replace(/ /g,
19"&")}function qa(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function ra(a,b){var d=0;b.each(function(){if(this.nodeName===(a[d]&&a[d].nodeName)){var f=c.data(a[d++]),e=c.data(this,f);if(f=f&&f.events){delete e.handle;e.events={};for(var j in f)for(var i in f[j])c.event.add(this,j,f[j][i],f[j][i].data)}}})}function sa(a,b,d){var f,e,j;b=b&&b[0]?b[0].ownerDocument||b[0]:s;if(a.length===1&&typeof a[0]==="string"&&a[0].length<512&&b===s&&!ta.test(a[0])&&(c.support.checkClone||!ua.test(a[0]))){e=
20true;if(j=c.fragments[a[0]])if(j!==1)f=j}if(!f){f=b.createDocumentFragment();c.clean(a,b,f,d)}if(e)c.fragments[a[0]]=j?f:1;return{fragment:f,cacheable:e}}function K(a,b){var d={};c.each(va.concat.apply([],va.slice(0,b)),function(){d[this]=a});return d}function wa(a){return"scrollTo"in a&&a.document?a:a.nodeType===9?a.defaultView||a.parentWindow:false}var c=function(a,b){return new c.fn.init(a,b)},Ra=A.jQuery,Sa=A.$,s=A.document,T,Ta=/^[^<]*(<[\w\W]+>)[^>]*$|^#([\w-]+)$/,Ua=/^.[^:#\[\.,]*$/,Va=/\S/,
21Wa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Xa=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,P=navigator.userAgent,xa=false,Q=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,R=Array.prototype.slice,ya=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(a==="body"&&!b){this.context=s;this[0]=s.body;this.selector="body";this.length=1;return this}if(typeof a==="string")if((d=Ta.exec(a))&&
22(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:s;if(a=Xa.exec(a))if(c.isPlainObject(b)){a=[s.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=sa([d[1]],[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}return c.merge(this,a)}else{if(b=s.getElementById(d[2])){if(b.id!==d[2])return T.find(a);this.length=1;this[0]=b}this.context=s;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=s;a=s.getElementsByTagName(a);return c.merge(this,
23a)}else return!b||b.jquery?(b||T).find(a):c(b).find(a);else if(c.isFunction(a))return T.ready(a);if(a.selector!==w){this.selector=a.selector;this.context=a.context}return c.makeArray(a,this)},selector:"",jquery:"1.4.2",length:0,size:function(){return this.length},toArray:function(){return R.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){var f=c();c.isArray(a)?ba.apply(f,a):c.merge(f,a);f.prevObject=this;f.context=this.context;if(b===
24"find")f.selector=this.selector+(this.selector?" ":"")+d;else if(b)f.selector=this.selector+"."+b+"("+d+")";return f},each:function(a,b){return c.each(this,a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(s,c);else Q&&Q.push(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(R.apply(this,arguments),"slice",R.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this,
25function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice};c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,j,i,o;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b<d;b++)if((e=arguments[b])!=null)for(j in e){i=a[j];o=e[j];if(a!==o)if(f&&o&&(c.isPlainObject(o)||c.isArray(o))){i=i&&(c.isPlainObject(i)||
26c.isArray(i))?i:c.isArray(o)?[]:{};a[j]=c.extend(f,i,o)}else if(o!==w)a[j]=o}return a};c.extend({noConflict:function(a){A.$=Sa;if(a)A.jQuery=Ra;return c},isReady:false,ready:function(){if(!c.isReady){if(!s.body)return setTimeout(c.ready,13);c.isReady=true;if(Q){for(var a,b=0;a=Q[b++];)a.call(s,c);Q=null}c.fn.triggerHandler&&c(s).triggerHandler("ready")}},bindReady:function(){if(!xa){xa=true;if(s.readyState==="complete")return c.ready();if(s.addEventListener){s.addEventListener("DOMContentLoaded",
27L,false);A.addEventListener("load",c.ready,false)}else if(s.attachEvent){s.attachEvent("onreadystatechange",L);A.attachEvent("onload",c.ready);var a=false;try{a=A.frameElement==null}catch(b){}s.documentElement.doScroll&&a&&ma()}}},isFunction:function(a){return $.call(a)==="[object Function]"},isArray:function(a){return $.call(a)==="[object Array]"},isPlainObject:function(a){if(!a||$.call(a)!=="[object Object]"||a.nodeType||a.setInterval)return false;if(a.constructor&&!aa.call(a,"constructor")&&!aa.call(a.constructor.prototype,
28"isPrototypeOf"))return false;var b;for(b in a);return b===w||aa.call(a,b)},isEmptyObject:function(a){for(var b in a)return false;return true},error:function(a){throw a;},parseJSON:function(a){if(typeof a!=="string"||!a)return null;a=c.trim(a);if(/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return A.JSON&&A.JSON.parse?A.JSON.parse(a):(new Function("return "+
29a))();else c.error("Invalid JSON: "+a)},noop:function(){},globalEval:function(a){if(a&&Va.test(a)){var b=s.getElementsByTagName("head")[0]||s.documentElement,d=s.createElement("script");d.type="text/javascript";if(c.support.scriptEval)d.appendChild(s.createTextNode(a));else d.text=a;b.insertBefore(d,b.firstChild);b.removeChild(d)}},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,b,d){var f,e=0,j=a.length,i=j===w||c.isFunction(a);if(d)if(i)for(f in a){if(b.apply(a[f],
30d)===false)break}else for(;e<j;){if(b.apply(a[e++],d)===false)break}else if(i)for(f in a){if(b.call(a[f],f,a[f])===false)break}else for(d=a[0];e<j&&b.call(d,e,d)!==false;d=a[++e]);return a},trim:function(a){return(a||"").replace(Wa,"")},makeArray:function(a,b){b=b||[];if(a!=null)a.length==null||typeof a==="string"||c.isFunction(a)||typeof a!=="function"&&a.setInterval?ba.call(b,a):c.merge(b,a);return b},inArray:function(a,b){if(b.indexOf)return b.indexOf(a);for(var d=0,f=b.length;d<f;d++)if(b[d]===
31a)return d;return-1},merge:function(a,b){var d=a.length,f=0;if(typeof b.length==="number")for(var e=b.length;f<e;f++)a[d++]=b[f];else for(;b[f]!==w;)a[d++]=b[f++];a.length=d;return a},grep:function(a,b,d){for(var f=[],e=0,j=a.length;e<j;e++)!d!==!b(a[e],e)&&f.push(a[e]);return f},map:function(a,b,d){for(var f=[],e,j=0,i=a.length;j<i;j++){e=b(a[j],j,d);if(e!=null)f[f.length]=e}return f.concat.apply([],f)},guid:1,proxy:function(a,b,d){if(arguments.length===2)if(typeof b==="string"){d=a;a=d[b];b=w}else if(b&&
32!c.isFunction(b)){d=b;b=w}if(!b&&a)b=function(){return a.apply(d||this,arguments)};if(a)b.guid=a.guid=a.guid||b.guid||c.guid++;return b},uaMatch:function(a){a=a.toLowerCase();a=/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version)?[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||!/compatible/.test(a)&&/(mozilla)(?:.*? rv:([\w.]+))?/.exec(a)||[];return{browser:a[1]||"",version:a[2]||"0"}},browser:{}});P=c.uaMatch(P);if(P.browser){c.browser[P.browser]=true;c.browser.version=P.version}if(c.browser.webkit)c.browser.safari=
33true;if(ya)c.inArray=function(a,b){return ya.call(b,a)};T=c(s);if(s.addEventListener)L=function(){s.removeEventListener("DOMContentLoaded",L,false);c.ready()};else if(s.attachEvent)L=function(){if(s.readyState==="complete"){s.detachEvent("onreadystatechange",L);c.ready()}};(function(){c.support={};var a=s.documentElement,b=s.createElement("script"),d=s.createElement("div"),f="script"+J();d.style.display="none";d.innerHTML=" <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";
34var e=d.getElementsByTagName("*"),j=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!j)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(j.getAttribute("style")),hrefNormalized:j.getAttribute("href")==="/a",opacity:/^0.55$/.test(j.style.opacity),cssFloat:!!j.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:s.createElement("select").appendChild(s.createElement("option")).selected,
35parentNode:d.removeChild(d.appendChild(s.createElement("div"))).parentNode===null,deleteExpando:true,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};b.type="text/javascript";try{b.appendChild(s.createTextNode("window."+f+"=1;"))}catch(i){}a.insertBefore(b,a.firstChild);if(A[f]){c.support.scriptEval=true;delete A[f]}try{delete b.test}catch(o){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function k(){c.support.noCloneEvent=
36false;d.detachEvent("onclick",k)});d.cloneNode(true).fireEvent("onclick")}d=s.createElement("div");d.innerHTML="<input type='radio' name='radiotest' checked='checked'/>";a=s.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var k=s.createElement("div");k.style.width=k.style.paddingLeft="1px";s.body.appendChild(k);c.boxModel=c.support.boxModel=k.offsetWidth===2;s.body.removeChild(k).style.display="none"});a=function(k){var n=
37s.createElement("div");k="on"+k;var r=k in n;if(!r){n.setAttribute(k,"return;");r=typeof n[k]==="function"}return r};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=j=null}})();c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ya=0,za={};c.extend({cache:{},expando:G,noData:{embed:true,object:true,
38applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var f=a[G],e=c.cache;if(!f&&typeof b==="string"&&d===w)return null;f||(f=++Ya);if(typeof b==="object"){a[G]=f;e[f]=c.extend(true,{},b)}else if(!e[f]){a[G]=f;e[f]={}}a=e[f];if(d!==w)a[b]=d;return typeof b==="string"?a[b]:a}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{if(c.support.deleteExpando)delete a[c.expando];
39else a.removeAttribute&&a.removeAttribute(c.expando);delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this,a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===w){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===w&&this.length)f=c.data(this[0],a);return f===w&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this,
40a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d);return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b===
41w)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var Aa=/[\n\t]/g,ca=/\s+/,Za=/\r/g,$a=/href|src|style/,ab=/(button|input)/i,bb=/(button|input|object|select|textarea)/i,
42cb=/^(a|area)$/i,Ba=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(n){var r=c(this);r.addClass(a.call(this,n,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1)if(e.className){for(var j=" "+e.className+" ",
43i=e.className,o=0,k=b.length;o<k;o++)if(j.indexOf(" "+b[o]+" ")<0)i+=" "+b[o];e.className=c.trim(i)}else e.className=a}return this},removeClass:function(a){if(c.isFunction(a))return this.each(function(k){var n=c(this);n.removeClass(a.call(this,k,n.attr("class")))});if(a&&typeof a==="string"||a===w)for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1&&e.className)if(a){for(var j=(" "+e.className+" ").replace(Aa," "),i=0,o=b.length;i<o;i++)j=j.replace(" "+b[i]+" ",
44" ");e.className=c.trim(j)}else e.className=""}return this},toggleClass:function(a,b){var d=typeof a,f=typeof b==="boolean";if(c.isFunction(a))return this.each(function(e){var j=c(this);j.toggleClass(a.call(this,e,j.attr("class"),b),b)});return this.each(function(){if(d==="string")for(var e,j=0,i=c(this),o=b,k=a.split(ca);e=k[j++];){o=f?o:!i.hasClass(e);i[o?"addClass":"removeClass"](e)}else if(d==="undefined"||d==="boolean"){this.className&&c.data(this,"__className__",this.className);this.className=
45this.className||a===false?"":c.data(this,"__className__")||""}})},hasClass:function(a){a=" "+a+" ";for(var b=0,d=this.length;b<d;b++)if((" "+this[b].className+" ").replace(Aa," ").indexOf(a)>-1)return true;return false},val:function(a){if(a===w){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value||{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var j=b?d:0;for(d=b?d+1:e.length;j<d;j++){var i=
46e[j];if(i.selected){a=c(i).val();if(b)return a;f.push(a)}}return f}if(Ba.test(b.type)&&!c.support.checkOn)return b.getAttribute("value")===null?"on":b.value;return(b.value||"").replace(Za,"")}return w}var o=c.isFunction(a);return this.each(function(k){var n=c(this),r=a;if(this.nodeType===1){if(o)r=a.call(this,k,n.val());if(typeof r==="number")r+="";if(c.isArray(r)&&Ba.test(this.type))this.checked=c.inArray(n.val(),r)>=0;else if(c.nodeName(this,"select")){var u=c.makeArray(r);c("option",this).each(function(){this.selected=
47c.inArray(c(this).val(),u)>=0});if(!u.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return w;if(f&&b in c.attrFn)return c(a)[b](d);f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==w;b=f&&c.props[b]||b;if(a.nodeType===1){var j=$a.test(b);if(b in a&&f&&!j){if(e){b==="type"&&ab.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed");
48a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:w;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText=""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&j?a.getAttribute(b,2):a.getAttribute(b);return a===null?w:a}return c.style(a,b,d)}});var O=/\.(.*)$/,db=function(a){return a.replace(/[^\w\s\.\|`]/g,
49function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==A&&!a.frameElement)a=A;var e,j;if(d.handler){e=d;d=e.handler}if(!d.guid)d.guid=c.guid++;if(j=c.data(a)){var i=j.events=j.events||{},o=j.handle;if(!o)j.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,arguments):w};o.elem=a;b=b.split(" ");for(var k,n=0,r;k=b[n++];){j=e?c.extend({},e):{handler:d,data:f};if(k.indexOf(".")>-1){r=k.split(".");
50k=r.shift();j.namespace=r.slice(0).sort().join(".")}else{r=[];j.namespace=""}j.type=k;j.guid=d.guid;var u=i[k],z=c.event.special[k]||{};if(!u){u=i[k]=[];if(!z.setup||z.setup.call(a,f,r,o)===false)if(a.addEventListener)a.addEventListener(k,o,false);else a.attachEvent&&a.attachEvent("on"+k,o)}if(z.add){z.add.call(a,j);if(!j.handler.guid)j.handler.guid=d.guid}u.push(j);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){var e,j=0,i,o,k,n,r,u,z=c.data(a),
51C=z&&z.events;if(z&&C){if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(e in C)c.event.remove(a,e+b)}else{for(b=b.split(" ");e=b[j++];){n=e;i=e.indexOf(".")<0;o=[];if(!i){o=e.split(".");e=o.shift();k=new RegExp("(^|\\.)"+c.map(o.slice(0).sort(),db).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(r=C[e])if(d){n=c.event.special[e]||{};for(B=f||0;B<r.length;B++){u=r[B];if(d.guid===u.guid){if(i||k.test(u.namespace)){f==null&&r.splice(B--,1);n.remove&&n.remove.call(a,u)}if(f!=
52null)break}}if(r.length===0||f!=null&&r.length===1){if(!n.teardown||n.teardown.call(a,o)===false)Ca(a,e,z.handle);delete C[e]}}else for(var B=0;B<r.length;B++){u=r[B];if(i||k.test(u.namespace)){c.event.remove(a,n,u.handler,B);r.splice(B--,1)}}}if(c.isEmptyObject(C)){if(b=z.handle)b.elem=null;delete z.events;delete z.handle;c.isEmptyObject(z)&&c.removeData(a)}}}}},trigger:function(a,b,d,f){var e=a.type||a;if(!f){a=typeof a==="object"?a[G]?a:c.extend(c.Event(e),a):c.Event(e);if(e.indexOf("!")>=0){a.type=
53e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return w;a.result=w;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d,b);f=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(j){}if(!a.isPropagationStopped()&&
54f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){f=a.target;var i,o=c.nodeName(f,"a")&&e==="click",k=c.event.special[e]||{};if((!k._default||k._default.call(d,a)===false)&&!o&&!(f&&f.nodeName&&c.noData[f.nodeName.toLowerCase()])){try{if(f[e]){if(i=f["on"+e])f["on"+e]=null;c.event.triggered=true;f[e]()}}catch(n){}if(i)f["on"+e]=i;c.event.triggered=false}}},handle:function(a){var b,d,f,e;a=arguments[0]=c.event.fix(a||A.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive;
55if(!b){d=a.type.split(".");a.type=d.shift();f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)")}e=c.data(this,"events");d=e[a.type];if(e&&d){d=d.slice(0);e=0;for(var j=d.length;e<j;e++){var i=d[e];if(b||f.test(i.namespace)){a.handler=i.handler;a.data=i.data;a.handleObj=i;i=i.handler.apply(this,arguments);if(i!==w){a.result=i;if(i===false){a.preventDefault();a.stopPropagation()}}if(a.isImmediatePropagationStopped())break}}}return a.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
56fix:function(a){if(a[G])return a;var b=a;a=c.Event(b);for(var d=this.props.length,f;d;){f=this.props[--d];a[f]=b[f]}if(!a.target)a.target=a.srcElement||s;if(a.target.nodeType===3)a.target=a.target.parentNode;if(!a.relatedTarget&&a.fromElement)a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement;if(a.pageX==null&&a.clientX!=null){b=s.documentElement;d=s.body;a.pageX=a.clientX+(b&&b.scrollLeft||d&&d.scrollLeft||0)-(b&&b.clientLeft||d&&d.clientLeft||0);a.pageY=a.clientY+(b&&b.scrollTop||
57d&&d.scrollTop||0)-(b&&b.clientTop||d&&d.clientTop||0)}if(!a.which&&(a.charCode||a.charCode===0?a.charCode:a.keyCode))a.which=a.charCode||a.keyCode;if(!a.metaKey&&a.ctrlKey)a.metaKey=a.ctrlKey;if(!a.which&&a.button!==w)a.which=a.button&1?1:a.button&2?3:a.button&4?2:0;return a},guid:1E8,proxy:c.proxy,special:{ready:{setup:c.bindReady,teardown:c.noop},live:{add:function(a){c.event.add(this,a.origType,c.extend({},a,{handler:oa}))},remove:function(a){var b=true,d=a.origType.replace(O,"");c.each(c.data(this,
58"events").live||[],function(){if(d===this.origType.replace(O,""))return b=false});b&&c.event.remove(this,a.origType,oa)}},beforeunload:{setup:function(a,b,d){if(this.setInterval)this.onbeforeunload=d;return false},teardown:function(a,b){if(this.onbeforeunload===b)this.onbeforeunload=null}}}};var Ca=s.removeEventListener?function(a,b,d){a.removeEventListener(b,d,false)}:function(a,b,d){a.detachEvent("on"+b,d)};c.Event=function(a){if(!this.preventDefault)return new c.Event(a);if(a&&a.type){this.originalEvent=
59a;this.type=a.type}else this.type=a;this.timeStamp=J();this[G]=true};c.Event.prototype={preventDefault:function(){this.isDefaultPrevented=Z;var a=this.originalEvent;if(a){a.preventDefault&&a.preventDefault();a.returnValue=false}},stopPropagation:function(){this.isPropagationStopped=Z;var a=this.originalEvent;if(a){a.stopPropagation&&a.stopPropagation();a.cancelBubble=true}},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=Z;this.stopPropagation()},isDefaultPrevented:Y,isPropagationStopped:Y,
60isImmediatePropagationStopped:Y};var Da=function(a){var b=a.relatedTarget;try{for(;b&&b!==this;)b=b.parentNode;if(b!==this){a.type=a.data;c.event.handle.apply(this,arguments)}}catch(d){}},Ea=function(a){a.type=a.data;c.event.handle.apply(this,arguments)};c.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){c.event.special[a]={setup:function(d){c.event.add(this,b,d&&d.selector?Ea:Da,a)},teardown:function(d){c.event.remove(this,b,d&&d.selector?Ea:Da)}}});if(!c.support.submitBubbles)c.event.special.submit=
61{setup:function(){if(this.nodeName.toLowerCase()!=="form"){c.event.add(this,"click.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="submit"||d==="image")&&c(b).closest("form").length)return na("submit",this,arguments)});c.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="text"||d==="password")&&c(b).closest("form").length&&a.keyCode===13)return na("submit",this,arguments)})}else return false},teardown:function(){c.event.remove(this,".specialSubmit")}};
62if(!c.support.changeBubbles){var da=/textarea|input|select/i,ea,Fa=function(a){var b=a.type,d=a.value;if(b==="radio"||b==="checkbox")d=a.checked;else if(b==="select-multiple")d=a.selectedIndex>-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},fa=function(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Fa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data",
63e);if(!(f===w||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:fa,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return fa.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return fa.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a,
64"_change_data",Fa(a))}},setup:function(){if(this.type==="file")return false;for(var a in ea)c.event.add(this,a+".specialChange",ea[a]);return da.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return da.test(this.nodeName)}};ea=c.event.special.change.filters}s.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this,f)}c.event.special[b]={setup:function(){this.addEventListener(a,
65d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof d==="object"){for(var j in d)this[b](j,f,d[j],e);return this}if(c.isFunction(f)){e=f;f=w}var i=b==="one"?c.proxy(e,function(k){c(this).unbind(k,i);return e.apply(this,arguments)}):e;if(d==="unload"&&b!=="one")this.one(d,f,e);else{j=0;for(var o=this.length;j<o;j++)c.event.add(this[j],d,i,f)}return this}});c.fn.extend({unbind:function(a,b){if(typeof a==="object"&&
66!a.preventDefault)for(var d in a)this.unbind(d,a[d]);else{d=0;for(var f=this.length;d<f;d++)c.event.remove(this[d],a,b)}return this},delegate:function(a,b,d,f){return this.live(b,d,f,a)},undelegate:function(a,b,d){return arguments.length===0?this.unbind("live"):this.die(b,null,d,a)},trigger:function(a,b){return this.each(function(){c.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0]){a=c.Event(a);a.preventDefault();a.stopPropagation();c.event.trigger(a,b,this[0]);return a.result}},
67toggle:function(a){for(var b=arguments,d=1;d<b.length;)c.proxy(a,b[d++]);return this.click(c.proxy(a,function(f){var e=(c.data(this,"lastToggle"+a.guid)||0)%d;c.data(this,"lastToggle"+a.guid,e+1);f.preventDefault();return b[e].apply(this,arguments)||false}))},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var Ga={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};c.each(["live","die"],function(a,b){c.fn[b]=function(d,f,e,j){var i,o=0,k,n,r=j||this.selector,
68u=j?this:c(this.context);if(c.isFunction(f)){e=f;f=w}for(d=(d||"").split(" ");(i=d[o++])!=null;){j=O.exec(i);k="";if(j){k=j[0];i=i.replace(O,"")}if(i==="hover")d.push("mouseenter"+k,"mouseleave"+k);else{n=i;if(i==="focus"||i==="blur"){d.push(Ga[i]+k);i+=k}else i=(Ga[i]||i)+k;b==="live"?u.each(function(){c.event.add(this,pa(i,r),{data:f,selector:r,handler:e,origType:i,origHandler:e,preType:n})}):u.unbind(pa(i,r),e)}}return this}});c.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "),
69function(a,b){c.fn[b]=function(d){return d?this.bind(b,d):this.trigger(b)};if(c.attrFn)c.attrFn[b]=true});A.attachEvent&&!A.addEventListener&&A.attachEvent("onunload",function(){for(var a in c.cache)if(c.cache[a].handle)try{c.event.remove(c.cache[a].handle.elem)}catch(b){}});(function(){function a(g){for(var h="",l,m=0;g[m];m++){l=g[m];if(l.nodeType===3||l.nodeType===4)h+=l.nodeValue;else if(l.nodeType!==8)h+=a(l.childNodes)}return h}function b(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];
70if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1&&!p){t.sizcache=l;t.sizset=q}if(t.nodeName.toLowerCase()===h){y=t;break}t=t[g]}m[q]=y}}}function d(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1){if(!p){t.sizcache=l;t.sizset=q}if(typeof h!=="string"){if(t===h){y=true;break}}else if(k.filter(h,[t]).length>0){y=t;break}}t=t[g]}m[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
71e=0,j=Object.prototype.toString,i=false,o=true;[0,0].sort(function(){o=false;return 0});var k=function(g,h,l,m){l=l||[];var q=h=h||s;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||typeof g!=="string")return l;for(var p=[],v,t,y,S,H=true,M=x(h),I=g;(f.exec(""),v=f.exec(I))!==null;){I=v[3];p.push(v[1]);if(v[2]){S=v[3];break}}if(p.length>1&&r.exec(g))if(p.length===2&&n.relative[p[0]])t=ga(p[0]+p[1],h);else for(t=n.relative[p[0]]?[h]:k(p.shift(),h);p.length;){g=p.shift();if(n.relative[g])g+=p.shift();
72t=ga(g,t)}else{if(!m&&p.length>1&&h.nodeType===9&&!M&&n.match.ID.test(p[0])&&!n.match.ID.test(p[p.length-1])){v=k.find(p.shift(),h,M);h=v.expr?k.filter(v.expr,v.set)[0]:v.set[0]}if(h){v=m?{expr:p.pop(),set:z(m)}:k.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=v.expr?k.filter(v.expr,v.set):v.set;if(p.length>0)y=z(t);else H=false;for(;p.length;){var D=p.pop();v=D;if(n.relative[D])v=p.pop();else D="";if(v==null)v=h;n.relative[D](y,v,M)}}else y=[]}y||(y=t);y||k.error(D||
73g);if(j.call(y)==="[object Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&E(h,y[g])))l.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&l.push(t[g]);else l.push.apply(l,y);else z(y,l);if(S){k(S,q,l,m);k.uniqueSort(l)}return l};k.uniqueSort=function(g){if(B){i=o;g.sort(B);if(i)for(var h=1;h<g.length;h++)g[h]===g[h-1]&&g.splice(h--,1)}return g};k.matches=function(g,h){return k(g,null,null,h)};k.find=function(g,h,l){var m,q;if(!g)return[];
74for(var p=0,v=n.order.length;p<v;p++){var t=n.order[p];if(q=n.leftMatch[t].exec(g)){var y=q[1];q.splice(1,1);if(y.substr(y.length-1)!=="\\"){q[1]=(q[1]||"").replace(/\\/g,"");m=n.find[t](q,h,l);if(m!=null){g=g.replace(n.match[t],"");break}}}}m||(m=h.getElementsByTagName("*"));return{set:m,expr:g}};k.filter=function(g,h,l,m){for(var q=g,p=[],v=h,t,y,S=h&&h[0]&&x(h[0]);g&&h.length;){for(var H in n.filter)if((t=n.leftMatch[H].exec(g))!=null&&t[2]){var M=n.filter[H],I,D;D=t[1];y=false;t.splice(1,1);if(D.substr(D.length-
751)!=="\\"){if(v===p)p=[];if(n.preFilter[H])if(t=n.preFilter[H](t,v,l,p,m,S)){if(t===true)continue}else y=I=true;if(t)for(var U=0;(D=v[U])!=null;U++)if(D){I=M(D,t,U,v);var Ha=m^!!I;if(l&&I!=null)if(Ha)y=true;else v[U]=false;else if(Ha){p.push(D);y=true}}if(I!==w){l||(v=p);g=g.replace(n.match[H],"");if(!y)return[];break}}}if(g===q)if(y==null)k.error(g);else break;q=g}return v};k.error=function(g){throw"Syntax error, unrecognized expression: "+g;};var n=k.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
76CLASS:/\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(g){return g.getAttribute("href")}},
77relative:{"+":function(g,h){var l=typeof h==="string",m=l&&!/\W/.test(h);l=l&&!m;if(m)h=h.toLowerCase();m=0;for(var q=g.length,p;m<q;m++)if(p=g[m]){for(;(p=p.previousSibling)&&p.nodeType!==1;);g[m]=l||p&&p.nodeName.toLowerCase()===h?p||false:p===h}l&&k.filter(h,g,true)},">":function(g,h){var l=typeof h==="string";if(l&&!/\W/.test(h)){h=h.toLowerCase();for(var m=0,q=g.length;m<q;m++){var p=g[m];if(p){l=p.parentNode;g[m]=l.nodeName.toLowerCase()===h?l:false}}}else{m=0;for(q=g.length;m<q;m++)if(p=g[m])g[m]=
78l?p.parentNode:p.parentNode===h;l&&k.filter(h,g,true)}},"":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("parentNode",h,m,g,p,l)},"~":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("previousSibling",h,m,g,p,l)}},find:{ID:function(g,h,l){if(typeof h.getElementById!=="undefined"&&!l)return(g=h.getElementById(g[1]))?[g]:[]},NAME:function(g,h){if(typeof h.getElementsByName!=="undefined"){var l=[];
79h=h.getElementsByName(g[1]);for(var m=0,q=h.length;m<q;m++)h[m].getAttribute("name")===g[1]&&l.push(h[m]);return l.length===0?null:l}},TAG:function(g,h){return h.getElementsByTagName(g[1])}},preFilter:{CLASS:function(g,h,l,m,q,p){g=" "+g[1].replace(/\\/g,"")+" ";if(p)return g;p=0;for(var v;(v=h[p])!=null;p++)if(v)if(q^(v.className&&(" "+v.className+" ").replace(/[\t\n]/g," ").indexOf(g)>=0))l||m.push(v);else if(l)h[p]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()},
80CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||1)-0;g[3]=h[3]-0}g[0]=e++;return g},ATTR:function(g,h,l,m,q,p){h=g[1].replace(/\\/g,"");if(!p&&n.attrMap[h])g[1]=n.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,l,m,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,h);else{g=k.filter(g[3],h,l,true^q);l||m.push.apply(m,
81g);return false}else if(n.match.POS.test(g[0])||n.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,l){return!!k(l[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)},
82text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}},
83setFilters:{first:function(g,h){return h===0},last:function(g,h,l,m){return h===m.length-1},even:function(g,h){return h%2===0},odd:function(g,h){return h%2===1},lt:function(g,h,l){return h<l[3]-0},gt:function(g,h,l){return h>l[3]-0},nth:function(g,h,l){return l[3]-0===h},eq:function(g,h,l){return l[3]-0===h}},filter:{PSEUDO:function(g,h,l,m){var q=h[1],p=n.filters[q];if(p)return p(g,l,h,m);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h=
84h[3];l=0;for(m=h.length;l<m;l++)if(h[l]===g)return false;return true}else k.error("Syntax error, unrecognized expression: "+q)},CHILD:function(g,h){var l=h[1],m=g;switch(l){case "only":case "first":for(;m=m.previousSibling;)if(m.nodeType===1)return false;if(l==="first")return true;m=g;case "last":for(;m=m.nextSibling;)if(m.nodeType===1)return false;return true;case "nth":l=h[2];var q=h[3];if(l===1&&q===0)return true;h=h[0];var p=g.parentNode;if(p&&(p.sizcache!==h||!g.nodeIndex)){var v=0;for(m=p.firstChild;m;m=
85m.nextSibling)if(m.nodeType===1)m.nodeIndex=++v;p.sizcache=h}g=g.nodeIndex-q;return l===0?g===0:g%l===0&&g/l>=0}},ID:function(g,h){return g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return h==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var l=h[1];g=n.attrHandle[l]?n.attrHandle[l](g):g[l]!=null?g[l]:g.getAttribute(l);l=g+"";var m=h[2];h=h[4];return g==null?m==="!=":m===
86"="?l===h:m==="*="?l.indexOf(h)>=0:m==="~="?(" "+l+" ").indexOf(h)>=0:!h?l&&g!==false:m==="!="?l!==h:m==="^="?l.indexOf(h)===0:m==="$="?l.substr(l.length-h.length)===h:m==="|="?l===h||l.substr(0,h.length+1)===h+"-":false},POS:function(g,h,l,m){var q=n.setFilters[h[2]];if(q)return q(g,l,h,m)}}},r=n.match.POS;for(var u in n.match){n.match[u]=new RegExp(n.match[u].source+/(?![^\[]*\])(?![^\(]*\))/.source);n.leftMatch[u]=new RegExp(/(^(?:.|\r|\n)*?)/.source+n.match[u].source.replace(/\\(\d+)/g,function(g,
87h){return"\\"+(h-0+1)}))}var z=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return h}return g};try{Array.prototype.slice.call(s.documentElement.childNodes,0)}catch(C){z=function(g,h){h=h||[];if(j.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var l=0,m=g.length;l<m;l++)h.push(g[l]);else for(l=0;g[l];l++)h.push(g[l]);return h}}var B;if(s.documentElement.compareDocumentPosition)B=function(g,h){if(!g.compareDocumentPosition||
88!h.compareDocumentPosition){if(g==h)i=true;return g.compareDocumentPosition?-1:1}g=g.compareDocumentPosition(h)&4?-1:g===h?0:1;if(g===0)i=true;return g};else if("sourceIndex"in s.documentElement)B=function(g,h){if(!g.sourceIndex||!h.sourceIndex){if(g==h)i=true;return g.sourceIndex?-1:1}g=g.sourceIndex-h.sourceIndex;if(g===0)i=true;return g};else if(s.createRange)B=function(g,h){if(!g.ownerDocument||!h.ownerDocument){if(g==h)i=true;return g.ownerDocument?-1:1}var l=g.ownerDocument.createRange(),m=
89h.ownerDocument.createRange();l.setStart(g,0);l.setEnd(g,0);m.setStart(h,0);m.setEnd(h,0);g=l.compareBoundaryPoints(Range.START_TO_END,m);if(g===0)i=true;return g};(function(){var g=s.createElement("div"),h="script"+(new Date).getTime();g.innerHTML="<a name='"+h+"'/>";var l=s.documentElement;l.insertBefore(g,l.firstChild);if(s.getElementById(h)){n.find.ID=function(m,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(m[1]))?q.id===m[1]||typeof q.getAttributeNode!=="undefined"&&
90q.getAttributeNode("id").nodeValue===m[1]?[q]:w:[]};n.filter.ID=function(m,q){var p=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&p&&p.nodeValue===q}}l.removeChild(g);l=g=null})();(function(){var g=s.createElement("div");g.appendChild(s.createComment(""));if(g.getElementsByTagName("*").length>0)n.find.TAG=function(h,l){l=l.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var m=0;l[m];m++)l[m].nodeType===1&&h.push(l[m]);l=h}return l};g.innerHTML="<a href='#'></a>";
91if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")n.attrHandle.href=function(h){return h.getAttribute("href",2)};g=null})();s.querySelectorAll&&function(){var g=k,h=s.createElement("div");h.innerHTML="<p class='TEST'></p>";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){k=function(m,q,p,v){q=q||s;if(!v&&q.nodeType===9&&!x(q))try{return z(q.querySelectorAll(m),p)}catch(t){}return g(m,q,p,v)};for(var l in g)k[l]=g[l];h=null}}();
92(function(){var g=s.createElement("div");g.innerHTML="<div class='test e'></div><div class='test'></div>";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){n.order.splice(1,0,"CLASS");n.find.CLASS=function(h,l,m){if(typeof l.getElementsByClassName!=="undefined"&&!m)return l.getElementsByClassName(h[1])};g=null}}})();var E=s.compareDocumentPosition?function(g,h){return!!(g.compareDocumentPosition(h)&16)}:
93function(g,h){return g!==h&&(g.contains?g.contains(h):true)},x=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},ga=function(g,h){var l=[],m="",q;for(h=h.nodeType?[h]:h;q=n.match.PSEUDO.exec(g);){m+=q[0];g=g.replace(n.match.PSEUDO,"")}g=n.relative[g]?g+"*":g;q=0;for(var p=h.length;q<p;q++)k(g,h[q],l);return k.filter(m,l)};c.find=k;c.expr=k.selectors;c.expr[":"]=c.expr.filters;c.unique=k.uniqueSort;c.text=a;c.isXMLDoc=x;c.contains=E})();var eb=/Until$/,fb=/^(?:parents|prevUntil|prevAll)/,
94gb=/,/;R=Array.prototype.slice;var Ia=function(a,b,d){if(c.isFunction(b))return c.grep(a,function(e,j){return!!b.call(e,j,e)===d});else if(b.nodeType)return c.grep(a,function(e){return e===b===d});else if(typeof b==="string"){var f=c.grep(a,function(e){return e.nodeType===1});if(Ua.test(b))return c.filter(b,f,!d);else b=c.filter(b,f)}return c.grep(a,function(e){return c.inArray(e,b)>=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f<e;f++){d=b.length;
95c.find(a,this[f],b);if(f>0)for(var j=d;j<b.length;j++)for(var i=0;i<d;i++)if(b[i]===b[j]){b.splice(j--,1);break}}return b},has:function(a){var b=c(a);return this.filter(function(){for(var d=0,f=b.length;d<f;d++)if(c.contains(this,b[d]))return true})},not:function(a){return this.pushStack(Ia(this,a,false),"not",a)},filter:function(a){return this.pushStack(Ia(this,a,true),"filter",a)},is:function(a){return!!a&&c.filter(a,this).length>0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,j=
96{},i;if(f&&a.length){e=0;for(var o=a.length;e<o;e++){i=a[e];j[i]||(j[i]=c.expr.match.POS.test(i)?c(i,b||this.context):i)}for(;f&&f.ownerDocument&&f!==b;){for(i in j){e=j[i];if(e.jquery?e.index(f)>-1:c(f).is(e)){d.push({selector:i,elem:f});delete j[i]}}f=f.parentNode}}return d}var k=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(n,r){for(;r&&r.ownerDocument&&r!==b;){if(k?k.index(r)>-1:c(r).is(a))return r;r=r.parentNode}return null})},index:function(a){if(!a||typeof a===
97"string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(),a);return this.pushStack(qa(a[0])||qa(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode",
98d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")?
99a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var e=c.map(this,b,d);eb.test(a)||(f=d);if(f&&typeof f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e):e;if((this.length>1||gb.test(f))&&fb.test(a))e=e.reverse();return this.pushStack(e,a,R.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return c.find.matches(a,b)},dir:function(a,b,d){var f=[];for(a=a[b];a&&a.nodeType!==9&&(d===w||a.nodeType!==1||!c(a).is(d));){a.nodeType===
1001&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var Ja=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ka=/(<([\w:]+)[^>]*?)\/>/g,hb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,La=/<([\w:]+)/,ib=/<tbody/i,jb=/<|&#?\w+;/,ta=/<script|<object|<embed|<option|<style/i,ua=/checked\s*(?:[^=]|=\s*.checked.)/i,Ma=function(a,b,d){return hb.test(d)?
101a:b+"></"+d+">"},F={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if(!c.support.htmlSerialize)F._default=[1,"div<div>","</div>"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d=
102c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==w)return this.empty().append((this[0]&&this[0].ownerDocument||s).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this},
103wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})},
104prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,
105this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,f;(f=this[d])!=null;d++)if(!a||c.filter(a,[f]).length){if(!b&&f.nodeType===1){c.cleanData(f.getElementsByTagName("*"));c.cleanData([f])}f.parentNode&&f.parentNode.removeChild(f)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild);
106return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Ja,"").replace(/=([^="'>\s]+\/)>/g,'="$1">').replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){ra(this,b);ra(this.find("*"),b.find("*"))}return b},html:function(a){if(a===w)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Ja,
107""):null;else if(typeof a==="string"&&!ta.test(a)&&(c.support.leadingWhitespace||!V.test(a))&&!F[(La.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Ka,Ma);try{for(var b=0,d=this.length;b<d;b++)if(this[b].nodeType===1){c.cleanData(this[b].getElementsByTagName("*"));this[b].innerHTML=a}}catch(f){this.empty().append(a)}}else c.isFunction(a)?this.each(function(e){var j=c(this),i=j.html();j.empty().append(function(){return a.call(this,e,i)})}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&
108this[0].parentNode){if(c.isFunction(a))return this.each(function(b){var d=c(this),f=d.html();d.replaceWith(a.call(this,b,f))});if(typeof a!=="string")a=c(a).detach();return this.each(function(){var b=this.nextSibling,d=this.parentNode;c(this).remove();b?c(b).before(a):c(d).append(a)})}else return this.pushStack(c(c.isFunction(a)?a():a),"replaceWith",a)},detach:function(a){return this.remove(a,true)},domManip:function(a,b,d){function f(u){return c.nodeName(u,"table")?u.getElementsByTagName("tbody")[0]||
109u.appendChild(u.ownerDocument.createElement("tbody")):u}var e,j,i=a[0],o=[],k;if(!c.support.checkClone&&arguments.length===3&&typeof i==="string"&&ua.test(i))return this.each(function(){c(this).domManip(a,b,d,true)});if(c.isFunction(i))return this.each(function(u){var z=c(this);a[0]=i.call(this,u,b?z.html():w);z.domManip(a,b,d)});if(this[0]){e=i&&i.parentNode;e=c.support.parentNode&&e&&e.nodeType===11&&e.childNodes.length===this.length?{fragment:e}:sa(a,this,o);k=e.fragment;if(j=k.childNodes.length===
1101?(k=k.firstChild):k.firstChild){b=b&&c.nodeName(j,"tr");for(var n=0,r=this.length;n<r;n++)d.call(b?f(this[n],j):this[n],n>0||e.cacheable||this.length>1?k.cloneNode(true):k)}o.length&&c.each(o,Qa)}return this}});c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var f=[];d=c(d);var e=this.length===1&&this[0].parentNode;if(e&&e.nodeType===11&&e.childNodes.length===1&&d.length===1){d[b](this[0]);
111return this}else{e=0;for(var j=d.length;e<j;e++){var i=(e>0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),i);f=f.concat(i)}return this.pushStack(f,a,d.selector)}}});c.extend({clean:function(a,b,d,f){b=b||s;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||s;for(var e=[],j=0,i;(i=a[j])!=null;j++){if(typeof i==="number")i+="";if(i){if(typeof i==="string"&&!jb.test(i))i=b.createTextNode(i);else if(typeof i==="string"){i=i.replace(Ka,Ma);var o=(La.exec(i)||["",
112""])[1].toLowerCase(),k=F[o]||F._default,n=k[0],r=b.createElement("div");for(r.innerHTML=k[1]+i+k[2];n--;)r=r.lastChild;if(!c.support.tbody){n=ib.test(i);o=o==="table"&&!n?r.firstChild&&r.firstChild.childNodes:k[1]==="<table>"&&!n?r.childNodes:[];for(k=o.length-1;k>=0;--k)c.nodeName(o[k],"tbody")&&!o[k].childNodes.length&&o[k].parentNode.removeChild(o[k])}!c.support.leadingWhitespace&&V.test(i)&&r.insertBefore(b.createTextNode(V.exec(i)[0]),r.firstChild);i=r.childNodes}if(i.nodeType)e.push(i);else e=
113c.merge(e,i)}}if(d)for(j=0;e[j];j++)if(f&&c.nodeName(e[j],"script")&&(!e[j].type||e[j].type.toLowerCase()==="text/javascript"))f.push(e[j].parentNode?e[j].parentNode.removeChild(e[j]):e[j]);else{e[j].nodeType===1&&e.splice.apply(e,[j+1,0].concat(c.makeArray(e[j].getElementsByTagName("script"))));d.appendChild(e[j])}return e},cleanData:function(a){for(var b,d,f=c.cache,e=c.event.special,j=c.support.deleteExpando,i=0,o;(o=a[i])!=null;i++)if(d=o[c.expando]){b=f[d];if(b.events)for(var k in b.events)e[k]?
114c.event.remove(o,k):Ca(o,k,b.handle);if(j)delete o[c.expando];else o.removeAttribute&&o.removeAttribute(c.expando);delete f[d]}}});var kb=/z-?index|font-?weight|opacity|zoom|line-?height/i,Na=/alpha\([^)]*\)/,Oa=/opacity=([^)]*)/,ha=/float/i,ia=/-([a-z])/ig,lb=/([A-Z])/g,mb=/^-?\d+(?:px)?$/i,nb=/^-?\d/,ob={position:"absolute",visibility:"hidden",display:"block"},pb=["Left","Right"],qb=["Top","Bottom"],rb=s.defaultView&&s.defaultView.getComputedStyle,Pa=c.support.cssFloat?"cssFloat":"styleFloat",ja=
115function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return X(this,a,b,true,function(d,f,e){if(e===w)return c.curCSS(d,f);if(typeof e==="number"&&!kb.test(f))e+="px";c.style(d,f,e)})};c.extend({style:function(a,b,d){if(!a||a.nodeType===3||a.nodeType===8)return w;if((b==="width"||b==="height")&&parseFloat(d)<0)d=w;var f=a.style||a,e=d!==w;if(!c.support.opacity&&b==="opacity"){if(e){f.zoom=1;b=parseInt(d,10)+""==="NaN"?"":"alpha(opacity="+d*100+")";a=f.filter||c.curCSS(a,"filter")||"";f.filter=
116Na.test(a)?a.replace(Na,b):b}return f.filter&&f.filter.indexOf("opacity=")>=0?parseFloat(Oa.exec(f.filter)[1])/100+"":""}if(ha.test(b))b=Pa;b=b.replace(ia,ja);if(e)f[b]=d;return f[b]},css:function(a,b,d,f){if(b==="width"||b==="height"){var e,j=b==="width"?pb:qb;function i(){e=b==="width"?a.offsetWidth:a.offsetHeight;f!=="border"&&c.each(j,function(){f||(e-=parseFloat(c.curCSS(a,"padding"+this,true))||0);if(f==="margin")e+=parseFloat(c.curCSS(a,"margin"+this,true))||0;else e-=parseFloat(c.curCSS(a,
117"border"+this+"Width",true))||0})}a.offsetWidth!==0?i():c.swap(a,ob,i);return Math.max(0,Math.round(e))}return c.curCSS(a,b,d)},curCSS:function(a,b,d){var f,e=a.style;if(!c.support.opacity&&b==="opacity"&&a.currentStyle){f=Oa.test(a.currentStyle.filter||"")?parseFloat(RegExp.$1)/100+"":"";return f===""?"1":f}if(ha.test(b))b=Pa;if(!d&&e&&e[b])f=e[b];else if(rb){if(ha.test(b))b="float";b=b.replace(lb,"-$1").toLowerCase();e=a.ownerDocument.defaultView;if(!e)return null;if(a=e.getComputedStyle(a,null))f=
118a.getPropertyValue(b);if(b==="opacity"&&f==="")f="1"}else if(a.currentStyle){d=b.replace(ia,ja);f=a.currentStyle[b]||a.currentStyle[d];if(!mb.test(f)&&nb.test(f)){b=e.left;var j=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;e.left=d==="fontSize"?"1em":f||0;f=e.pixelLeft+"px";e.left=b;a.runtimeStyle.left=j}}return f},swap:function(a,b,d){var f={};for(var e in b){f[e]=a.style[e];a.style[e]=b[e]}d.call(a);for(e in b)a.style[e]=f[e]}});if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b=
119a.offsetWidth,d=a.offsetHeight,f=a.nodeName.toLowerCase()==="tr";return b===0&&d===0&&!f?true:b>0&&d>0&&!f?false:c.curCSS(a,"display")==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var sb=J(),tb=/<script(.|\s)*?\/script>/gi,ub=/select|textarea/i,vb=/color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,N=/=\?(&|$)/,ka=/\?/,wb=/(\?|&)_=.*?(&|$)/,xb=/^(\w+:)?\/\/([^\/?#]+)/,yb=/%20/g,zb=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!==
120"string")return zb.call(this,a);else if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var e=a.slice(f,a.length);a=a.slice(0,f)}f="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b==="object"){b=c.param(b,c.ajaxSettings.traditional);f="POST"}var j=this;c.ajax({url:a,type:f,dataType:"html",data:b,complete:function(i,o){if(o==="success"||o==="notmodified")j.html(e?c("<div />").append(i.responseText.replace(tb,"")).find(e):i.responseText);d&&j.each(d,[i.responseText,o,i])}});return this},
121serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ub.test(this.nodeName)||vb.test(this.type))}).map(function(a,b){a=c(this).val();return a==null?null:c.isArray(a)?c.map(a,function(d){return{name:b.name,value:d}}):{name:b.name,value:a}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),
122function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:f})},getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:f})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href,
123global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:A.XMLHttpRequest&&(A.location.protocol!=="file:"||!A.ActiveXObject)?function(){return new A.XMLHttpRequest}:function(){try{return new A.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},etag:{},ajax:function(a){function b(){e.success&&
124e.success.call(k,o,i,x);e.global&&f("ajaxSuccess",[x,e])}function d(){e.complete&&e.complete.call(k,x,i);e.global&&f("ajaxComplete",[x,e]);e.global&&!--c.active&&c.event.trigger("ajaxStop")}function f(q,p){(e.context?c(e.context):c.event).trigger(q,p)}var e=c.extend(true,{},c.ajaxSettings,a),j,i,o,k=a&&a.context||e,n=e.type.toUpperCase();if(e.data&&e.processData&&typeof e.data!=="string")e.data=c.param(e.data,e.traditional);if(e.dataType==="jsonp"){if(n==="GET")N.test(e.url)||(e.url+=(ka.test(e.url)?
125"&":"?")+(e.jsonp||"callback")+"=?");else if(!e.data||!N.test(e.data))e.data=(e.data?e.data+"&":"")+(e.jsonp||"callback")+"=?";e.dataType="json"}if(e.dataType==="json"&&(e.data&&N.test(e.data)||N.test(e.url))){j=e.jsonpCallback||"jsonp"+sb++;if(e.data)e.data=(e.data+"").replace(N,"="+j+"$1");e.url=e.url.replace(N,"="+j+"$1");e.dataType="script";A[j]=A[j]||function(q){o=q;b();d();A[j]=w;try{delete A[j]}catch(p){}z&&z.removeChild(C)}}if(e.dataType==="script"&&e.cache===null)e.cache=false;if(e.cache===
126false&&n==="GET"){var r=J(),u=e.url.replace(wb,"$1_="+r+"$2");e.url=u+(u===e.url?(ka.test(e.url)?"&":"?")+"_="+r:"")}if(e.data&&n==="GET")e.url+=(ka.test(e.url)?"&":"?")+e.data;e.global&&!c.active++&&c.event.trigger("ajaxStart");r=(r=xb.exec(e.url))&&(r[1]&&r[1]!==location.protocol||r[2]!==location.host);if(e.dataType==="script"&&n==="GET"&&r){var z=s.getElementsByTagName("head")[0]||s.documentElement,C=s.createElement("script");C.src=e.url;if(e.scriptCharset)C.charset=e.scriptCharset;if(!j){var B=
127false;C.onload=C.onreadystatechange=function(){if(!B&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){B=true;b();d();C.onload=C.onreadystatechange=null;z&&C.parentNode&&z.removeChild(C)}}}z.insertBefore(C,z.firstChild);return w}var E=false,x=e.xhr();if(x){e.username?x.open(n,e.url,e.async,e.username,e.password):x.open(n,e.url,e.async);try{if(e.data||a&&a.contentType)x.setRequestHeader("Content-Type",e.contentType);if(e.ifModified){c.lastModified[e.url]&&x.setRequestHeader("If-Modified-Since",
128c.lastModified[e.url]);c.etag[e.url]&&x.setRequestHeader("If-None-Match",c.etag[e.url])}r||x.setRequestHeader("X-Requested-With","XMLHttpRequest");x.setRequestHeader("Accept",e.dataType&&e.accepts[e.dataType]?e.accepts[e.dataType]+", */*":e.accepts._default)}catch(ga){}if(e.beforeSend&&e.beforeSend.call(k,x,e)===false){e.global&&!--c.active&&c.event.trigger("ajaxStop");x.abort();return false}e.global&&f("ajaxSend",[x,e]);var g=x.onreadystatechange=function(q){if(!x||x.readyState===0||q==="abort"){E||
129d();E=true;if(x)x.onreadystatechange=c.noop}else if(!E&&x&&(x.readyState===4||q==="timeout")){E=true;x.onreadystatechange=c.noop;i=q==="timeout"?"timeout":!c.httpSuccess(x)?"error":e.ifModified&&c.httpNotModified(x,e.url)?"notmodified":"success";var p;if(i==="success")try{o=c.httpData(x,e.dataType,e)}catch(v){i="parsererror";p=v}if(i==="success"||i==="notmodified")j||b();else c.handleError(e,x,i,p);d();q==="timeout"&&x.abort();if(e.async)x=null}};try{var h=x.abort;x.abort=function(){x&&h.call(x);
130g("abort")}}catch(l){}e.async&&e.timeout>0&&setTimeout(function(){x&&!E&&g("timeout")},e.timeout);try{x.send(n==="POST"||n==="PUT"||n==="DELETE"?e.data:null)}catch(m){c.handleError(e,x,null,m);d()}e.async||g();return x}},handleError:function(a,b,d,f){if(a.error)a.error.call(a.context||a,b,d,f);if(a.global)(a.context?c(a.context):c.event).trigger("ajaxError",[b,a,f])},active:0,httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status===
1311223||a.status===0}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),f=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(f)c.etag[b]=f;return a.status===304||a.status===0},httpData:function(a,b,d){var f=a.getResponseHeader("content-type")||"",e=b==="xml"||!b&&f.indexOf("xml")>=0;a=e?a.responseXML:a.responseText;e&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b===
132"json"||!b&&f.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&f.indexOf("javascript")>=0)c.globalEval(a);return a},param:function(a,b){function d(i,o){if(c.isArray(o))c.each(o,function(k,n){b||/\[\]$/.test(i)?f(i,n):d(i+"["+(typeof n==="object"||c.isArray(n)?k:"")+"]",n)});else!b&&o!=null&&typeof o==="object"?c.each(o,function(k,n){d(i+"["+k+"]",n)}):f(i,o)}function f(i,o){o=c.isFunction(o)?o():o;e[e.length]=encodeURIComponent(i)+"="+encodeURIComponent(o)}var e=[];if(b===w)b=c.ajaxSettings.traditional;
133if(c.isArray(a)||a.jquery)c.each(a,function(){f(this.name,this.value)});else for(var j in a)d(j,a[j]);return e.join("&").replace(yb,"+")}});var la={},Ab=/toggle|show|hide/,Bb=/^([+-]=)?([\d+-.]+)(.*)$/,W,va=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b){if(a||a===0)return this.animate(K("show",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");
134this[a].style.display=d||"";if(c.css(this[a],"display")==="none"){d=this[a].nodeName;var f;if(la[d])f=la[d];else{var e=c("<"+d+" />").appendTo("body");f=e.css("display");if(f==="none")f="block";e.remove();la[d]=f}c.data(this[a],"olddisplay",f)}}a=0;for(b=this.length;a<b;a++)this[a].style.display=c.data(this[a],"olddisplay")||"";return this}},hide:function(a,b){if(a||a===0)return this.animate(K("hide",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");!d&&d!=="none"&&c.data(this[a],
135"olddisplay",c.css(this[a],"display"))}a=0;for(b=this.length;a<b;a++)this[a].style.display="none";return this}},_toggle:c.fn.toggle,toggle:function(a,b){var d=typeof a==="boolean";if(c.isFunction(a)&&c.isFunction(b))this._toggle.apply(this,arguments);else a==null||d?this.each(function(){var f=d?a:c(this).is(":hidden");c(this)[f?"show":"hide"]()}):this.animate(K("toggle",3),a,b);return this},fadeTo:function(a,b,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,d)},
136animate:function(a,b,d,f){var e=c.speed(b,d,f);if(c.isEmptyObject(a))return this.each(e.complete);return this[e.queue===false?"each":"queue"](function(){var j=c.extend({},e),i,o=this.nodeType===1&&c(this).is(":hidden"),k=this;for(i in a){var n=i.replace(ia,ja);if(i!==n){a[n]=a[i];delete a[i];i=n}if(a[i]==="hide"&&o||a[i]==="show"&&!o)return j.complete.call(this);if((i==="height"||i==="width")&&this.style){j.display=c.css(this,"display");j.overflow=this.style.overflow}if(c.isArray(a[i])){(j.specialEasing=
137j.specialEasing||{})[i]=a[i][1];a[i]=a[i][0]}}if(j.overflow!=null)this.style.overflow="hidden";j.curAnim=c.extend({},a);c.each(a,function(r,u){var z=new c.fx(k,j,r);if(Ab.test(u))z[u==="toggle"?o?"show":"hide":u](a);else{var C=Bb.exec(u),B=z.cur(true)||0;if(C){u=parseFloat(C[2]);var E=C[3]||"px";if(E!=="px"){k.style[r]=(u||1)+E;B=(u||1)/z.cur(true)*B;k.style[r]=B+E}if(C[1])u=(C[1]==="-="?-1:1)*u+B;z.custom(B,u,E)}else z.custom(B,u,"")}});return true})},stop:function(a,b){var d=c.timers;a&&this.queue([]);
138this.each(function(){for(var f=d.length-1;f>=0;f--)if(d[f].elem===this){b&&d[f](true);d.splice(f,1)}});b||this.dequeue();return this}});c.each({slideDown:K("show",1),slideUp:K("hide",1),slideToggle:K("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,f){return this.animate(b,d,f)}});c.extend({speed:function(a,b,d){var f=a&&typeof a==="object"?a:{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};f.duration=c.fx.off?0:typeof f.duration===
139"number"?f.duration:c.fx.speeds[f.duration]||c.fx.speeds._default;f.old=f.complete;f.complete=function(){f.queue!==false&&c(this).dequeue();c.isFunction(f.old)&&f.old.call(this)};return f},easing:{linear:function(a,b,d,f){return d+f*a},swing:function(a,b,d,f){return(-Math.cos(a*Math.PI)/2+0.5)*f+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]||
140c.fx.step._default)(this);if((this.prop==="height"||this.prop==="width")&&this.elem.style)this.elem.style.display="block"},cur:function(a){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];return(a=parseFloat(c.css(this.elem,this.prop,a)))&&a>-10000?a:parseFloat(c.curCSS(this.elem,this.prop))||0},custom:function(a,b,d){function f(j){return e.step(j)}this.startTime=J();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start;
141this.pos=this.state=0;var e=this;f.elem=this.elem;if(f()&&c.timers.push(f)&&!W)W=setInterval(c.fx.tick,13)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(a){var b=J(),d=true;if(a||b>=this.options.duration+this.startTime){this.now=
142this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var f in this.options.curAnim)if(this.options.curAnim[f]!==true)d=false;if(d){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;a=c.data(this.elem,"olddisplay");this.elem.style.display=a?a:this.options.display;if(c.css(this.elem,"display")==="none")this.elem.style.display="block"}this.options.hide&&c(this.elem).hide();if(this.options.hide||this.options.show)for(var e in this.options.curAnim)c.style(this.elem,
143e,this.options.orig[e]);this.options.complete.call(this.elem)}return false}else{e=b-this.startTime;this.state=e/this.options.duration;a=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||a](this.state,e,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=c.timers,b=0;b<a.length;b++)a[b]()||a.splice(b--,1);a.length||
144c.fx.stop()},stop:function(){clearInterval(W);W=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){c.style(a.elem,"opacity",a.now)},_default:function(a){if(a.elem.style&&a.elem.style[a.prop]!=null)a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit;else a.elem[a.prop]=a.now}}});if(c.expr&&c.expr.filters)c.expr.filters.animated=function(a){return c.grep(c.timers,function(b){return a===b.elem}).length};c.fn.offset="getBoundingClientRect"in s.documentElement?
145function(a){var b=this[0];if(a)return this.each(function(e){c.offset.setOffset(this,a,e)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);var d=b.getBoundingClientRect(),f=b.ownerDocument;b=f.body;f=f.documentElement;return{top:d.top+(self.pageYOffset||c.support.boxModel&&f.scrollTop||b.scrollTop)-(f.clientTop||b.clientTop||0),left:d.left+(self.pageXOffset||c.support.boxModel&&f.scrollLeft||b.scrollLeft)-(f.clientLeft||b.clientLeft||0)}}:function(a){var b=
146this[0];if(a)return this.each(function(r){c.offset.setOffset(this,a,r)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);c.offset.initialize();var d=b.offsetParent,f=b,e=b.ownerDocument,j,i=e.documentElement,o=e.body;f=(e=e.defaultView)?e.getComputedStyle(b,null):b.currentStyle;for(var k=b.offsetTop,n=b.offsetLeft;(b=b.parentNode)&&b!==o&&b!==i;){if(c.offset.supportsFixedPosition&&f.position==="fixed")break;j=e?e.getComputedStyle(b,null):b.currentStyle;
147k-=b.scrollTop;n-=b.scrollLeft;if(b===d){k+=b.offsetTop;n+=b.offsetLeft;if(c.offset.doesNotAddBorder&&!(c.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(b.nodeName))){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=d;d=b.offsetParent}if(c.offset.subtractsBorderForOverflowNotVisible&&j.overflow!=="visible"){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=j}if(f.position==="relative"||f.position==="static"){k+=o.offsetTop;n+=o.offsetLeft}if(c.offset.supportsFixedPosition&&
148f.position==="fixed"){k+=Math.max(i.scrollTop,o.scrollTop);n+=Math.max(i.scrollLeft,o.scrollLeft)}return{top:k,left:n}};c.offset={initialize:function(){var a=s.body,b=s.createElement("div"),d,f,e,j=parseFloat(c.curCSS(a,"marginTop",true))||0;c.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"});b.innerHTML="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";
149a.insertBefore(b,a.firstChild);d=b.firstChild;f=d.firstChild;e=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=f.offsetTop!==5;this.doesAddBorderForTableAndCells=e.offsetTop===5;f.style.position="fixed";f.style.top="20px";this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15;f.style.position=f.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==j;a.removeChild(b);
150c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.curCSS(a,"marginTop",true))||0;d+=parseFloat(c.curCSS(a,"marginLeft",true))||0}return{top:b,left:d}},setOffset:function(a,b,d){if(/static/.test(c.curCSS(a,"position")))a.style.position="relative";var f=c(a),e=f.offset(),j=parseInt(c.curCSS(a,"top",true),10)||0,i=parseInt(c.curCSS(a,"left",true),10)||0;if(c.isFunction(b))b=b.call(a,
151d,e);d={top:b.top-e.top+j,left:b.left-e.left+i};"using"in b?b.using.call(a,d):f.css(d)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),f=/^body|html$/i.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.curCSS(a,"marginTop",true))||0;d.left-=parseFloat(c.curCSS(a,"marginLeft",true))||0;f.top+=parseFloat(c.curCSS(b[0],"borderTopWidth",true))||0;f.left+=parseFloat(c.curCSS(b[0],"borderLeftWidth",true))||0;return{top:d.top-
152f.top,left:d.left-f.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||s.body;a&&!/^body|html$/i.test(a.nodeName)&&c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(f){var e=this[0],j;if(!e)return null;if(f!==w)return this.each(function(){if(j=wa(this))j.scrollTo(!a?f:c(j).scrollLeft(),a?f:c(j).scrollTop());else this[d]=f});else return(j=wa(e))?"pageXOffset"in j?j[a?"pageYOffset":
153"pageXOffset"]:c.support.boxModel&&j.document.documentElement[d]||j.document.body[d]:e[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();c.fn["inner"+b]=function(){return this[0]?c.css(this[0],d,false,"padding"):null};c.fn["outer"+b]=function(f){return this[0]?c.css(this[0],d,false,f?"margin":"border"):null};c.fn[d]=function(f){var e=this[0];if(!e)return f==null?null:this;if(c.isFunction(f))return this.each(function(j){var i=c(this);i[d](f.call(this,j,i[d]()))});return"scrollTo"in
154e&&e.document?e.document.compatMode==="CSS1Compat"&&e.document.documentElement["client"+b]||e.document.body["client"+b]:e.nodeType===9?Math.max(e.documentElement["client"+b],e.body["scroll"+b],e.documentElement["scroll"+b],e.body["offset"+b],e.documentElement["offset"+b]):f===w?c.css(e,d):this.css(d,typeof f==="string"?f:f+"px")}});A.jQuery=A.$=c})(window);
1550
=== added file 'doc/source/percona-theme/static/percona.com.css'
--- doc/source/percona-theme/static/percona.com.css 1970-01-01 00:00:00 +0000
+++ doc/source/percona-theme/static/percona.com.css 2012-08-15 14:13:58 +0000
@@ -0,0 +1,1850 @@
1body, html{
2 height:100%;
3 margin:0;
4 padding:0;
5 font-size: 12px;
6 line-height: 16px;
7 font-family: Arial;
8 color: #333333;
9}
10
11form{
12 display:inline
13}
14
15a, a:visited{
16 border:none;
17 cursor:pointer;
18 color: #d5390b;
19 text-decoration: underline;
20}
21a:hover
22{
23 color: #712000;
24 text-decoration: underline;
25}
26
27img{
28 border:none
29}
30
31div,img{
32 behavior:url(/static/css/iepngfix.htc)
33}
34
35em
36{
37 font-style: italic;
38}
39
40del
41{
42 text-decoration: line-through;
43}
44
45.hidden{
46 display:none
47}
48
49strong {
50 font-weight: bold;
51}
52
53html, body {
54 height: 100%;
55}
56
57#stickywrapper {
58 position: relative;
59 min-height: 100%;
60}
61
62* html #stickywrapper {
63 height: 100%;
64}
65
66#stickycontent {
67 padding-bottom: 102px;
68}
69
70#stickyfooter {
71 position: relative;
72 margin: -97px auto 0 auto;
73}
74a.links
75{
76 font-style: oblique;
77 text-decoration: underline;
78}
79span.subpart
80{
81 font-weight: bold;
82}
83
84/**
85 * LAYOUT
86 */
87
88#header{
89 background:#333;
90 height:95px;
91 overflow:hidden;
92 zoom:1
93}
94
95#header .header{
96 height:95px;
97 margin:0 auto;
98 overflow:hidden;
99 width:960px;
100 zoom:1
101}
102#header .header .logo{
103 float:left;
104 overflow:hidden;
105 padding:20px 0;
106 width:240px;
107 zoom:1
108}
109
110#header .header .logo
111{
112 overflow: hidden;
113 zoom: 1;
114 float: left;
115 width: 240px;
116 padding: 20px 0px;
117}
118
119#header .header .right
120{
121 overflow: hidden;
122 zoom: 1;
123 float: left;
124 width: 720px;
125 height: 35px;
126 padding: 30px 0px;
127}
128
129
130#header .header .right .searchlink
131{
132 overflow: hidden;
133 zoom: 1;
134 width: 35px;
135 height: 35px;
136 float: right;
137 padding: 0px 0px 0px 10px;
138}
139
140
141#header .header .right .navicontainer
142{
143 overflow: hidden;
144 zoom: 1;
145 float: right;
146 height: 35px;
147 background: #ffffff url(ui-navi-l.png) top left no-repeat;
148}
149
150#header .header .right .navi
151{
152 overflow: hidden;
153 zoom: 1;
154 height: 27px;
155 padding: 4px 10px;
156 background: url(ui-navi-r.png) top right no-repeat;
157}
158
159#header .header .right .navicontainer .navi span
160{
161 overflow: hidden;
162 zoom: 1;
163 height: 27px;
164 float: left;
165 margin: 0px;
166}
167#header .header .right .navicontainer .navi span:hover
168{
169 background: #f0f0f0 url(ui-navi-hover-l.png) top left no-repeat;
170}
171#header .header .right .navicontainer .navi span.selected, #header .header .right .navicontainer .navi span.selected:hover
172{
173 background: #d5390b url(ui-navi-sel-l.png) top left no-repeat;
174}
175
176#header .header .right .navicontainer .navi span a, #header .header .right .navicontainer .navi span a:visited
177{
178 display: block;
179 padding: 6px 10px 4px 10px;
180 height: 17px;
181 font-family: Arial, Helvetica, sans-serif;
182 font-size: 14px;
183 line-height: 14px;
184 color: #000000;
185 text-decoration: none;
186}
187#header .header .right .navicontainer .navi span a:hover
188{
189 background: url(ui-navi-hover-r.png) top right no-repeat;
190}
191#header .header .right .navicontainer .navi span.selected a.selected, #header .header .right .navicontainer .navi span.selected a.selected:visited, #header .header .right .navicontainer .navi span.selected a.selected:hover
192{
193 background: url(ui-navi-sel-r.png) top right no-repeat;
194 color: #ffffff;
195}
196
197
198
199/*
200 * Banners
201 */
202
203#slogan
204{
205 overflow: hidden;
206 zoom: 1;
207 height: 125px;
208 background: #d24300 url(ui-orange-front.png) bottom center no-repeat;
209 text-align: center;
210}
211
212#stripe
213{
214 overflow: hidden;
215 zoom: 1;
216 height: 20px;
217 background: #d24300 url(ui-orange-content.png) top center no-repeat;
218}
219
220
221
222/*
223 * Footer
224 */
225
226#footer
227{
228 overflow: hidden;
229 zoom: 1;
230 background: #333333;
231 border-top: 2px #d95200 solid;
232}
233
234#footer .footer
235{
236 overflow: hidden;
237 zoom: 1;
238 width: 960px;
239 margin: 0px auto;
240 padding: 10px 0px;
241}
242
243#footer .footer .logo
244{
245 overflow: hidden;
246 zoom: 1;
247 float: left;
248 padding: 17px 0px 0px 0px;
249}
250
251#footer .footer .text
252{
253 overflow: hidden;
254 zoom: 1;
255 float: right;
256 text-align: right;
257 font-family: Arial, Helvetica, sans-serif;
258 font-size: 11px;
259 line-height: 15px;
260 color: #e0e0e0;
261}
262
263#footer .footer .text a, #footer .footer .text a:visited
264{
265 color: #e0e0e0;
266 text-decoration: none;
267}
268#footer .footer .text a:hover
269{
270 color: #ffffff;
271 text-decoration: underline;
272}
273
274
275/*
276 * Menu Dropdowns
277 */
278
279div.navi-dropdown
280{
281 display: none;
282 position: absolute;
283 overflow: hidden;
284 zoom: 1;
285 width: 255px;
286 z-index: 900;
287}
288
289div.navi-dropdown .navi-dropdown-header-l
290{
291 overflow: hidden;
292 zoom: 1;
293 width: 255px;
294 height: 20px;
295 background: url(ui-dropdown-header-l.png) top left no-repeat;
296}
297
298div.navi-dropdown .navi-dropdown-header-r
299{
300 overflow: hidden;
301 zoom: 1;
302 width: 255px;
303 height: 20px;
304 background: url(ui-dropdown-header-r.png) top left no-repeat;
305}
306
307div.navi-dropdown .navi-dropdown-content
308{
309 overflow: hidden;
310 zoom: 1;
311 width: 225px;
312 padding: 0px 15px 5px 15px;
313 background: #ffffff url(ui-dropdown-bg.png) repeat-y;
314 font-family: Arial, Helvetica, sans-serif;
315 font-size: 14px;
316 line-height: 20px;
317 color: #333333;
318}
319
320div.navi-dropdown .navi-dropdown-content .item
321{
322 padding: 3px 0px 1px 0px;
323}
324
325div.navi-dropdown .navi-dropdown-content a, div.navi-dropdown .navi-dropdown-content a:visited
326{
327 display: block;
328 color: #333333;
329 text-decoration: none;
330}
331div.navi-dropdown .navi-dropdown-content a:hover
332{
333 color: #d12907;
334 text-decoration: underline;
335}
336
337div.navi-dropdown .navi-dropdown-footer
338{
339 overflow: hidden;
340 zoom: 1;
341 width: 255px;
342 height: 10px;
343 background: url(ui-dropdown-footer.png) top left no-repeat;
344}
345
346
347div.search-dropdown
348{
349 display: none;
350 position: absolute;
351 overflow: hidden;
352 zoom: 1;
353 width: 255px;
354}
355
356div.search-dropdown .search-dropdown-header
357{
358 overflow: hidden;
359 zoom: 1;
360 width: 255px;
361 height: 20px;
362 background: url(ui-dropdown-header-search.png) top left no-repeat;
363}
364
365div.search-dropdown .search-dropdown-content
366{
367 overflow: hidden;
368 zoom: 1;
369 width: 225px;
370 padding: 0px 15px 5px 15px;
371 background: #ffffff url(ui-dropdown-bg.png) repeat-y;
372 font-family: Arial, Helvetica, sans-serif;
373 font-size: 14px;
374 line-height: 20px;
375 color: #333333;
376}
377
378div.search-dropdown .search-dropdown-content .form
379{
380 padding-top: 2px;
381}
382
383div.search-dropdown .search-dropdown-content .form input
384{
385 border: 1px #c0c0c0 solid;
386 padding: 4px;
387 width: 210px;
388 outline: none;
389}
390div.search-dropdown .search-dropdown-content .form input:focus
391{
392 border: 1px #707070 solid;
393 outline: none;
394}
395
396div.search-dropdown .search-dropdown-footer
397{
398 overflow: hidden;
399 zoom: 1;
400 width: 255px;
401 height: 10px;
402 background: url(ui-dropdown-footer.png) top left no-repeat;
403}
404
405
406
407#left-column .navi-title {
408 font-size: 15px;
409 color: #d5390b;
410 margin-bottom: 20px;
411}
412
413#left-column .navi-title span {
414 background: url("left_menu_title_bullet.png") right top no-repeat;
415 padding-right: 20px;
416 padding-left: 10px;
417}
418
419#left-column .item, #left-column .subitem {
420
421 border-top: 1px solid #f3f1ee;
422}
423
424#left-column .subitem {
425 padding-left: 15px;
426}
427
428#left-column .item a, #left-column .subitem a {
429 min-height: 18px;
430 /* line-height: 23px; */
431
432 color: #a3a3a3;
433 font-size: 11px;
434 text-decoration: none;
435 display: block;
436 padding: 5px 0 2px 10px;
437 background: url('left_column_item_bulletpoint.png') left no-repeat;
438}
439#left-column .item a:hover {
440 text-decoration: underline;
441}
442
443#left-column .selected > a {
444 color: #b82c02;
445 background: url('left_menu_item_selected_bulletpoint.png') left no-repeat;
446}
447
448/*
449 * Front page
450 */
451.frontpage-text {
452 font-size: 13px;
453}
454div.frontpage-banners
455{
456 overflow: hidden;
457 zoom: 1;
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches

to all changes: