aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/rails-2.1.0/activesupport/lib
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/rails-2.1.0/activesupport/lib')
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support.rb55
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/base64.rb22
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/basic_object.rb24
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/buffered_logger.rb121
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/cache.rb145
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/cache/compressed_mem_cache_store.rb15
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/cache/drb_store.rb15
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/cache/file_store.rb70
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/cache/mem_cache_store.rb100
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/cache/memory_store.rb38
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/callbacks.rb275
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/clean_logger.rb127
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext.rb4
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/array.rb13
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/array/access.rb26
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/array/conversions.rb178
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/array/extract_options.rb20
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/array/grouping.rb63
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/array/random_access.rb12
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/base64.rb4
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/base64/encoding.rb13
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/benchmark.rb12
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/bigdecimal.rb6
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/bigdecimal/conversions.rb41
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/blank.rb53
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/cgi.rb5
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/cgi/escape_skipping_slashes.rb14
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/class.rb4
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/class/attribute_accessors.rb54
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/class/delegating_attributes.rb46
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/class/inheritable_attributes.rb140
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/class/removal.rb50
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/date.rb10
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/date/behavior.rb13
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/date/calculations.rb215
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/date/conversions.rb107
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/date_time.rb12
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/date_time/calculations.rb112
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/date_time/conversions.rb96
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/duplicable.rb37
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/enumerable.rb69
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/exception.rb41
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/file.rb21
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/float.rb5
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/float/rounding.rb24
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/hash.rb13
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/hash/conversions.rb259
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/hash/diff.rb19
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/hash/except.rb24
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/hash/indifferent_access.rb137
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/hash/keys.rb52
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/hash/reverse_merge.rb28
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/hash/slice.rb28
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/integer.rb7
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/integer/even_odd.rb29
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/integer/inflections.rb20
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/kernel.rb5
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/kernel/agnostics.rb11
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/kernel/daemonizing.rb7
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/kernel/debugger.rb13
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/kernel/reporting.rb59
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/kernel/requires.rb24
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/load_error.rb38
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/logger.rb16
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/module.rb8
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/module/aliasing.rb70
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/module/attr_accessor_with_default.rb31
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/module/attr_internal.rb32
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/module/attribute_accessors.rb58
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/module/delegation.rb64
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/module/inclusion.rb30
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/module/introspection.rb75
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/module/loading.rb23
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/name_error.rb17
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/numeric.rb9
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/numeric/bytes.rb44
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/numeric/conversions.rb19
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/numeric/time.rb91
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/object.rb4
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/object/conversions.rb14
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/object/extending.rb58
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/object/instance_variables.rb74
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/object/misc.rb59
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/pathname.rb7
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/pathname/clean_within.rb14
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/proc.rb12
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/process.rb1
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/process/daemon.rb25
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/range.rb11
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/range/blockless_step.rb32
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/range/conversions.rb27
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/range/include_range.rb30
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/range/overlaps.rb15
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/string.rb18
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/string/access.rb82
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/string/conversions.rb28
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/string/filters.rb26
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/string/inflections.rb148
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/string/iterators.rb21
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/string/starts_ends_with.rb35
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/string/unicode.rb68
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/string/xchar.rb11
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/symbol.rb14
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/test.rb1
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/test/unit/assertions.rb64
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/time.rb21
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/time/behavior.rb13
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/time/calculations.rb276
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/time/conversions.rb89
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/time/zones.rb86
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/dependencies.rb552
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/deprecation.rb205
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/duration.rb96
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/gzip.rb25
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/inflections.rb53
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/inflector.rb308
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/json.rb23
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/json/decoding.rb63
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/json/encoders/date.rb14
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/json/encoders/date_time.rb14
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/json/encoders/enumerable.rb12
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/json/encoders/false_class.rb5
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/json/encoders/hash.rb47
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/json/encoders/nil_class.rb5
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/json/encoders/numeric.rb5
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/json/encoders/object.rb6
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/json/encoders/regexp.rb5
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/json/encoders/string.rb36
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/json/encoders/symbol.rb5
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/json/encoders/time.rb14
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/json/encoders/true_class.rb5
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/json/encoding.rb37
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/json/variable.rb10
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/multibyte.rb9
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/multibyte/chars.rb137
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/multibyte/generators/generate_tables.rb149
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/multibyte/handlers/passthru_handler.rb9
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/multibyte/handlers/utf8_handler.rb564
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/multibyte/handlers/utf8_handler_proc.rb43
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/option_merger.rb25
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/ordered_hash.rb43
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/ordered_options.rb17
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/test_case.rb13
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/testing/default.rb9
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/testing/setup_and_teardown.rb93
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/time_with_zone.rb283
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/values/time_zone.rb394
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/values/unicode_tables.datbin0 -> 656156 bytes
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor.rb26
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/builder-2.1.2/blankslate.rb113
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/builder-2.1.2/builder.rb13
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/builder-2.1.2/builder/blankslate.rb20
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/builder-2.1.2/builder/css.rb250
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/builder-2.1.2/builder/xchar.rb115
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/builder-2.1.2/builder/xmlbase.rb139
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/builder-2.1.2/builder/xmlevents.rb63
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/builder-2.1.2/builder/xmlmarkup.rb328
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/memcache-client-1.5.0/memcache.rb849
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo.rb33
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/data_timezone.rb47
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/data_timezone_info.rb226
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Africa/Algiers.rb55
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Africa/Cairo.rb219
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Africa/Casablanca.rb38
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Africa/Harare.rb18
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Africa/Johannesburg.rb25
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Africa/Monrovia.rb22
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Africa/Nairobi.rb23
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Argentina/Buenos_Aires.rb166
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Argentina/San_Juan.rb170
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Bogota.rb23
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Caracas.rb23
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Chicago.rb283
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Chihuahua.rb136
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Denver.rb204
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Godthab.rb161
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Guatemala.rb27
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Halifax.rb274
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Indiana/Indianapolis.rb149
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Juneau.rb194
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/La_Paz.rb22
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Lima.rb35
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Los_Angeles.rb232
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Mazatlan.rb139
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Mexico_City.rb144
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Monterrey.rb131
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/New_York.rb282
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Phoenix.rb30
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Regina.rb74
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Santiago.rb205
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/St_Johns.rb288
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Tijuana.rb196
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Almaty.rb67
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Baghdad.rb73
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Baku.rb161
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Bangkok.rb20
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Chongqing.rb33
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Dhaka.rb27
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Hong_Kong.rb87
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Irkutsk.rb165
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Jakarta.rb30
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Jerusalem.rb163
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Kabul.rb20
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Kamchatka.rb163
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Karachi.rb28
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Katmandu.rb20
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Kolkata.rb25
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Krasnoyarsk.rb163
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Kuala_Lumpur.rb31
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Kuwait.rb18
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Magadan.rb163
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Muscat.rb18
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Novosibirsk.rb164
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Rangoon.rb24
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Riyadh.rb18
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Seoul.rb34
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Shanghai.rb35
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Singapore.rb33
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Taipei.rb59
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Tashkent.rb47
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Tbilisi.rb78
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Tehran.rb121
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Tokyo.rb30
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Ulaanbaatar.rb65
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Urumqi.rb33
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Vladivostok.rb164
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Yakutsk.rb163
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Yekaterinburg.rb165
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Yerevan.rb165
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Atlantic/Azores.rb270
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Atlantic/Cape_Verde.rb23
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Atlantic/South_Georgia.rb18
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Australia/Adelaide.rb187
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Australia/Brisbane.rb35
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Australia/Darwin.rb29
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Australia/Hobart.rb193
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Australia/Melbourne.rb185
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Australia/Perth.rb37
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Australia/Sydney.rb185
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Etc/UTC.rb16
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Amsterdam.rb228
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Athens.rb185
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Belgrade.rb163
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Berlin.rb188
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Bratislava.rb13
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Brussels.rb232
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Bucharest.rb181
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Budapest.rb197
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Copenhagen.rb179
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Dublin.rb276
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Helsinki.rb163
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Istanbul.rb218
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Kiev.rb168
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Lisbon.rb268
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Ljubljana.rb13
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/London.rb288
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Madrid.rb211
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Minsk.rb170
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Moscow.rb181
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Paris.rb232
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Prague.rb187
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Riga.rb176
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Rome.rb215
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Sarajevo.rb13
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Skopje.rb13
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Sofia.rb173
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Stockholm.rb165
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Tallinn.rb172
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Vienna.rb183
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Vilnius.rb170
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Warsaw.rb212
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Zagreb.rb13
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Pacific/Auckland.rb202
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Pacific/Fiji.rb23
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Pacific/Guam.rb22
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Pacific/Honolulu.rb28
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Pacific/Majuro.rb20
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Pacific/Midway.rb25
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Pacific/Noumea.rb25
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Pacific/Pago_Pago.rb26
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Pacific/Port_Moresby.rb20
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Pacific/Tongatapu.rb27
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/info_timezone.rb52
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/linked_timezone.rb51
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/linked_timezone_info.rb44
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/offset_rationals.rb95
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/time_or_datetime.rb292
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/timezone.rb508
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/timezone_definition.rb56
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/timezone_info.rb40
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/timezone_offset_info.rb94
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/timezone_period.rb198
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/timezone_transition_info.rb138
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/vendor/xml-simple-1.0.11/xmlsimple.rb1021
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/version.rb9
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/active_support/whiny_nil.rb58
-rw-r--r--vendor/rails-2.1.0/activesupport/lib/activesupport.rb1
297 files changed, 27386 insertions, 0 deletions
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support.rb b/vendor/rails-2.1.0/activesupport/lib/active_support.rb
new file mode 100644
index 000000000..e4cb145c9
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support.rb
@@ -0,0 +1,55 @@
+#--
+# Copyright (c) 2005 David Heinemeier Hansson
+#
+# Permission is hereby granted, free of charge, to any person obtaining
+# a copy of this software and associated documentation files (the
+# "Software"), to deal in the Software without restriction, including
+# without limitation the rights to use, copy, modify, merge, publish,
+# distribute, sublicense, and/or sell copies of the Software, and to
+# permit persons to whom the Software is furnished to do so, subject to
+# the following conditions:
+#
+# The above copyright notice and this permission notice shall be
+# included in all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+#++
+
+$:.unshift(File.dirname(__FILE__))
+
+require 'active_support/vendor'
+require 'active_support/basic_object'
+require 'active_support/inflector'
+require 'active_support/callbacks'
+
+require 'active_support/core_ext'
+
+require 'active_support/clean_logger'
+require 'active_support/buffered_logger'
+
+require 'active_support/gzip'
+require 'active_support/cache'
+
+require 'active_support/dependencies'
+require 'active_support/deprecation'
+
+require 'active_support/ordered_hash'
+require 'active_support/ordered_options'
+require 'active_support/option_merger'
+
+require 'active_support/values/time_zone'
+require 'active_support/duration'
+
+require 'active_support/json'
+
+require 'active_support/multibyte'
+
+require 'active_support/base64'
+
+require 'active_support/time_with_zone'
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/base64.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/base64.rb
new file mode 100644
index 000000000..602eef06b
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/base64.rb
@@ -0,0 +1,22 @@
+begin
+ require 'base64'
+rescue LoadError
+end
+
+module ActiveSupport
+ if defined? ::Base64
+ Base64 = ::Base64
+ else
+ # Ruby 1.9 doesn't provide base64, so we wrap this here
+ module Base64
+
+ def self.encode64(data)
+ [data].pack("m")
+ end
+
+ def self.decode64(data)
+ data.unpack("m").first
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/basic_object.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/basic_object.rb
new file mode 100644
index 000000000..e06da79d2
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/basic_object.rb
@@ -0,0 +1,24 @@
+# A base class with no predefined methods that tries to behave like Builder's
+# BlankSlate in Ruby 1.9. In Ruby pre-1.9, this is actually the
+# Builder::BlankSlate class.
+#
+# Ruby 1.9 introduces BasicObject which differs slightly from Builder's
+# BlankSlate that has been used so far. ActiveSupport::BasicObject provides a
+# barebones base class that emulates Builder::BlankSlate while still relying on
+# Ruby 1.9's BasicObject in Ruby 1.9.
+module ActiveSupport
+ if RUBY_VERSION >= '1.9'
+ class BasicObject < ::BasicObject
+ undef_method :==
+ undef_method :equal?
+
+ # Let ActiveSupport::BasicObject at least raise exceptions.
+ def raise(*args)
+ ::Object.send(:raise, *args)
+ end
+ end
+ else
+ require 'blankslate'
+ BasicObject = BlankSlate
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/buffered_logger.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/buffered_logger.rb
new file mode 100644
index 000000000..67b0a580e
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/buffered_logger.rb
@@ -0,0 +1,121 @@
+module ActiveSupport
+ # Inspired by the buffered logger idea by Ezra
+ class BufferedLogger
+ module Severity
+ DEBUG = 0
+ INFO = 1
+ WARN = 2
+ ERROR = 3
+ FATAL = 4
+ UNKNOWN = 5
+ end
+ include Severity
+
+ MAX_BUFFER_SIZE = 1000
+
+ # Set to false to disable the silencer
+ cattr_accessor :silencer
+ self.silencer = true
+
+ # Silences the logger for the duration of the block.
+ def silence(temporary_level = ERROR)
+ if silencer
+ begin
+ old_logger_level, self.level = level, temporary_level
+ yield self
+ ensure
+ self.level = old_logger_level
+ end
+ else
+ yield self
+ end
+ end
+
+ attr_accessor :level
+ attr_reader :auto_flushing
+ attr_reader :buffer
+
+ def initialize(log, level = DEBUG)
+ @level = level
+ @buffer = []
+ @auto_flushing = 1
+ @no_block = false
+
+ if log.respond_to?(:write)
+ @log = log
+ elsif File.exist?(log)
+ @log = open(log, (File::WRONLY | File::APPEND))
+ @log.sync = true
+ else
+ FileUtils.mkdir_p(File.dirname(log))
+ @log = open(log, (File::WRONLY | File::APPEND | File::CREAT))
+ @log.sync = true
+ @log.write("# Logfile created on %s" % [Time.now.to_s])
+ end
+ end
+
+ def set_non_blocking_io
+ if !RUBY_PLATFORM.match(/java|mswin/) && !(@log == STDOUT) && @log.respond_to?(:write_nonblock)
+ @no_block = true
+ end
+ end
+
+ def add(severity, message = nil, progname = nil, &block)
+ return if @level > severity
+ message = (message || (block && block.call) || progname).to_s
+ # If a newline is necessary then create a new message ending with a newline.
+ # Ensures that the original message is not mutated.
+ message = "#{message}\n" unless message[-1] == ?\n
+ buffer << message
+ auto_flush
+ message
+ end
+
+ for severity in Severity.constants
+ class_eval <<-EOT, __FILE__, __LINE__
+ def #{severity.downcase}(message = nil, progname = nil, &block)
+ add(#{severity}, message, progname, &block)
+ end
+
+ def #{severity.downcase}?
+ #{severity} >= @level
+ end
+ EOT
+ end
+
+ # Set the auto-flush period. Set to true to flush after every log message,
+ # to an integer to flush every N messages, or to false, nil, or zero to
+ # never auto-flush. If you turn auto-flushing off, be sure to regularly
+ # flush the log yourself -- it will eat up memory until you do.
+ def auto_flushing=(period)
+ @auto_flushing =
+ case period
+ when true; 1
+ when false, nil, 0; MAX_BUFFER_SIZE
+ when Integer; period
+ else raise ArgumentError, "Unrecognized auto_flushing period: #{period.inspect}"
+ end
+ end
+
+ def flush
+ unless buffer.empty?
+ if @no_block
+ @log.write_nonblock(buffer.slice!(0..-1).join)
+ else
+ @log.write(buffer.slice!(0..-1).join)
+ end
+ end
+ end
+
+ def close
+ flush
+ @log.close if @log.respond_to?(:close)
+ @log = nil
+ end
+
+ protected
+ def auto_flush
+ flush if buffer.size >= @auto_flushing
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/cache.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/cache.rb
new file mode 100644
index 000000000..2f1143e61
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/cache.rb
@@ -0,0 +1,145 @@
+require 'benchmark'
+
+module ActiveSupport
+ module Cache
+ def self.lookup_store(*store_option)
+ store, *parameters = *([ store_option ].flatten)
+
+ case store
+ when Symbol
+ store_class_name = (store == :drb_store ? "DRbStore" : store.to_s.camelize)
+ store_class = ActiveSupport::Cache.const_get(store_class_name)
+ store_class.new(*parameters)
+ when nil
+ ActiveSupport::Cache::MemoryStore.new
+ else
+ store
+ end
+ end
+
+ def self.expand_cache_key(key, namespace = nil)
+ expanded_cache_key = namespace ? "#{namespace}/" : ""
+
+ if ENV["RAILS_CACHE_ID"] || ENV["RAILS_APP_VERSION"]
+ expanded_cache_key << "#{ENV["RAILS_CACHE_ID"] || ENV["RAILS_APP_VERSION"]}/"
+ end
+
+ expanded_cache_key << case
+ when key.respond_to?(:cache_key)
+ key.cache_key
+ when key.is_a?(Array)
+ key.collect { |element| expand_cache_key(element) }.to_param
+ when key.respond_to?(:to_param)
+ key.to_param
+ end
+
+ expanded_cache_key
+ end
+
+
+ class Store
+ cattr_accessor :logger
+
+ def initialize
+ end
+
+ def threadsafe!
+ @mutex = Mutex.new
+ self.class.send :include, ThreadSafety
+ self
+ end
+
+ # Pass <tt>:force => true</tt> to force a cache miss.
+ def fetch(key, options = {})
+ @logger_off = true
+ if !options[:force] && value = read(key, options)
+ @logger_off = false
+ log("hit", key, options)
+ value
+ elsif block_given?
+ @logger_off = false
+ log("miss", key, options)
+
+ value = nil
+ seconds = Benchmark.realtime { value = yield }
+
+ @logger_off = true
+ write(key, value, options)
+ @logger_off = false
+
+ log("write (will save #{'%.5f' % seconds})", key, nil)
+
+ value
+ end
+ end
+
+ def read(key, options = nil)
+ log("read", key, options)
+ end
+
+ def write(key, value, options = nil)
+ log("write", key, options)
+ end
+
+ def delete(key, options = nil)
+ log("delete", key, options)
+ end
+
+ def delete_matched(matcher, options = nil)
+ log("delete matched", matcher.inspect, options)
+ end
+
+ def exist?(key, options = nil)
+ log("exist?", key, options)
+ end
+
+ def increment(key, amount = 1)
+ log("incrementing", key, amount)
+ if num = read(key)
+ write(key, num + amount)
+ else
+ nil
+ end
+ end
+
+ def decrement(key, amount = 1)
+ log("decrementing", key, amount)
+ if num = read(key)
+ write(key, num - amount)
+ else
+ nil
+ end
+ end
+
+ private
+ def log(operation, key, options)
+ logger.debug("Cache #{operation}: #{key}#{options ? " (#{options.inspect})" : ""}") if logger && !@logger_off
+ end
+ end
+
+
+ module ThreadSafety #:nodoc:
+ def read(key, options = nil) #:nodoc:
+ @mutex.synchronize { super }
+ end
+
+ def write(key, value, options = nil) #:nodoc:
+ @mutex.synchronize { super }
+ end
+
+ def delete(key, options = nil) #:nodoc:
+ @mutex.synchronize { super }
+ end
+
+ def delete_matched(matcher, options = nil) #:nodoc:
+ @mutex.synchronize { super }
+ end
+ end
+ end
+end
+
+require 'active_support/cache/file_store'
+require 'active_support/cache/memory_store'
+require 'active_support/cache/drb_store'
+require 'active_support/cache/mem_cache_store'
+require 'active_support/cache/compressed_mem_cache_store'
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/cache/compressed_mem_cache_store.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/cache/compressed_mem_cache_store.rb
new file mode 100644
index 000000000..9470ac9f6
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/cache/compressed_mem_cache_store.rb
@@ -0,0 +1,15 @@
+module ActiveSupport
+ module Cache
+ class CompressedMemCacheStore < MemCacheStore
+ def read(name, options = {})
+ if value = super(name, options.merge(:raw => true))
+ Marshal.load(ActiveSupport::Gzip.decompress(value))
+ end
+ end
+
+ def write(name, value, options = {})
+ super(name, ActiveSupport::Gzip.compress(Marshal.dump(value)), options.merge(:raw => true))
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/cache/drb_store.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/cache/drb_store.rb
new file mode 100644
index 000000000..b80c2ee4d
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/cache/drb_store.rb
@@ -0,0 +1,15 @@
+require 'drb'
+
+module ActiveSupport
+ module Cache
+ class DRbStore < MemoryStore #:nodoc:
+ attr_reader :address
+
+ def initialize(address = 'druby://localhost:9192')
+ super()
+ @address = address
+ @data = DRbObject.new(nil, address)
+ end
+ end
+ end
+end \ No newline at end of file
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/cache/file_store.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/cache/file_store.rb
new file mode 100644
index 000000000..5b771b1da
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/cache/file_store.rb
@@ -0,0 +1,70 @@
+module ActiveSupport
+ module Cache
+ class FileStore < Store
+ attr_reader :cache_path
+
+ def initialize(cache_path)
+ @cache_path = cache_path
+ end
+
+ def read(name, options = nil)
+ super
+ File.open(real_file_path(name), 'rb') { |f| f.read } rescue nil
+ end
+
+ def write(name, value, options = nil)
+ super
+ ensure_cache_path(File.dirname(real_file_path(name)))
+ File.open(real_file_path(name), "wb+") { |f| f.write(value) }
+ rescue => e
+ RAILS_DEFAULT_LOGGER.error "Couldn't create cache directory: #{name} (#{e.message})" if RAILS_DEFAULT_LOGGER
+ end
+
+ def delete(name, options = nil)
+ super
+ File.delete(real_file_path(name))
+ rescue SystemCallError => e
+ # If there's no cache, then there's nothing to complain about
+ end
+
+ def delete_matched(matcher, options = nil)
+ super
+ search_dir(@cache_path) do |f|
+ if f =~ matcher
+ begin
+ File.delete(f)
+ rescue SystemCallError => e
+ # If there's no cache, then there's nothing to complain about
+ end
+ end
+ end
+ end
+
+ def exist?(name, options = nil)
+ super
+ File.exist?(real_file_path(name))
+ end
+
+ private
+ def real_file_path(name)
+ '%s/%s.cache' % [@cache_path, name.gsub('?', '.').gsub(':', '.')]
+ end
+
+ def ensure_cache_path(path)
+ FileUtils.makedirs(path) unless File.exist?(path)
+ end
+
+ def search_dir(dir, &callback)
+ Dir.foreach(dir) do |d|
+ next if d == "." || d == ".."
+ name = File.join(dir, d)
+ if File.directory?(name)
+ search_dir(name, &callback)
+ else
+ callback.call name
+ end
+ end
+ end
+ end
+ end
+end \ No newline at end of file
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/cache/mem_cache_store.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/cache/mem_cache_store.rb
new file mode 100644
index 000000000..b3769b812
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/cache/mem_cache_store.rb
@@ -0,0 +1,100 @@
+require 'memcache'
+
+module ActiveSupport
+ module Cache
+ class MemCacheStore < Store
+ module Response
+ STORED = "STORED\r\n"
+ NOT_STORED = "NOT_STORED\r\n"
+ EXISTS = "EXISTS\r\n"
+ NOT_FOUND = "NOT_FOUND\r\n"
+ DELETED = "DELETED\r\n"
+ end
+
+ attr_reader :addresses
+
+ def initialize(*addresses)
+ addresses = addresses.flatten
+ options = addresses.extract_options!
+ addresses = ["localhost"] if addresses.empty?
+ @addresses = addresses
+ @data = MemCache.new(addresses, options)
+ end
+
+ def read(key, options = nil)
+ super
+ @data.get(key, raw?(options))
+ rescue MemCache::MemCacheError => e
+ logger.error("MemCacheError (#{e}): #{e.message}")
+ nil
+ end
+
+ # Set key = value. Pass :unless_exist => true if you don't
+ # want to update the cache if the key is already set.
+ def write(key, value, options = nil)
+ super
+ method = options && options[:unless_exist] ? :add : :set
+ response = @data.send(method, key, value, expires_in(options), raw?(options))
+ response == Response::STORED
+ rescue MemCache::MemCacheError => e
+ logger.error("MemCacheError (#{e}): #{e.message}")
+ false
+ end
+
+ def delete(key, options = nil)
+ super
+ response = @data.delete(key, expires_in(options))
+ response == Response::DELETED
+ rescue MemCache::MemCacheError => e
+ logger.error("MemCacheError (#{e}): #{e.message}")
+ false
+ end
+
+ def exist?(key, options = nil)
+ # Doesn't call super, cause exist? in memcache is in fact a read
+ # But who cares? Reading is very fast anyway
+ !read(key, options).nil?
+ end
+
+ def increment(key, amount = 1)
+ log("incrementing", key, amount)
+
+ response = @data.incr(key, amount)
+ response == Response::NOT_FOUND ? nil : response
+ rescue MemCache::MemCacheError
+ nil
+ end
+
+ def decrement(key, amount = 1)
+ log("decrement", key, amount)
+
+ response = data.decr(key, amount)
+ response == Response::NOT_FOUND ? nil : response
+ rescue MemCache::MemCacheError
+ nil
+ end
+
+ def delete_matched(matcher, options = nil)
+ super
+ raise "Not supported by Memcache"
+ end
+
+ def clear
+ @data.flush_all
+ end
+
+ def stats
+ @data.stats
+ end
+
+ private
+ def expires_in(options)
+ (options && options[:expires_in]) || 0
+ end
+
+ def raw?(options)
+ options && options[:raw]
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/cache/memory_store.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/cache/memory_store.rb
new file mode 100644
index 000000000..6f114273e
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/cache/memory_store.rb
@@ -0,0 +1,38 @@
+module ActiveSupport
+ module Cache
+ class MemoryStore < Store
+ def initialize
+ @data = {}
+ end
+
+ def read(name, options = nil)
+ super
+ @data[name]
+ end
+
+ def write(name, value, options = nil)
+ super
+ @data[name] = value
+ end
+
+ def delete(name, options = nil)
+ super
+ @data.delete(name)
+ end
+
+ def delete_matched(matcher, options = nil)
+ super
+ @data.delete_if { |k,v| k =~ matcher }
+ end
+
+ def exist?(name,options = nil)
+ super
+ @data.has_key?(name)
+ end
+
+ def clear
+ @data.clear
+ end
+ end
+ end
+end \ No newline at end of file
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/callbacks.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/callbacks.rb
new file mode 100644
index 000000000..9c59b7ac7
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/callbacks.rb
@@ -0,0 +1,275 @@
+module ActiveSupport
+ # Callbacks are hooks into the lifecycle of an object that allow you to trigger logic
+ # before or after an alteration of the object state.
+ #
+ # Mixing in this module allows you to define callbacks in your class.
+ #
+ # Example:
+ # class Storage
+ # include ActiveSupport::Callbacks
+ #
+ # define_callbacks :before_save, :after_save
+ # end
+ #
+ # class ConfigStorage < Storage
+ # before_save :saving_message
+ # def saving_message
+ # puts "saving..."
+ # end
+ #
+ # after_save do |object|
+ # puts "saved"
+ # end
+ #
+ # def save
+ # run_callbacks(:before_save)
+ # puts "- save"
+ # run_callbacks(:after_save)
+ # end
+ # end
+ #
+ # config = ConfigStorage.new
+ # config.save
+ #
+ # Output:
+ # saving...
+ # - save
+ # saved
+ #
+ # Callbacks from parent classes are inherited.
+ #
+ # Example:
+ # class Storage
+ # include ActiveSupport::Callbacks
+ #
+ # define_callbacks :before_save, :after_save
+ #
+ # before_save :prepare
+ # def prepare
+ # puts "preparing save"
+ # end
+ # end
+ #
+ # class ConfigStorage < Storage
+ # before_save :saving_message
+ # def saving_message
+ # puts "saving..."
+ # end
+ #
+ # after_save do |object|
+ # puts "saved"
+ # end
+ #
+ # def save
+ # run_callbacks(:before_save)
+ # puts "- save"
+ # run_callbacks(:after_save)
+ # end
+ # end
+ #
+ # config = ConfigStorage.new
+ # config.save
+ #
+ # Output:
+ # preparing save
+ # saving...
+ # - save
+ # saved
+ module Callbacks
+ class CallbackChain < Array
+ def self.build(kind, *methods, &block)
+ methods, options = extract_options(*methods, &block)
+ methods.map! { |method| Callback.new(kind, method, options) }
+ new(methods)
+ end
+
+ def run(object, options = {}, &terminator)
+ enumerator = options[:enumerator] || :each
+
+ unless block_given?
+ send(enumerator) { |callback| callback.call(object) }
+ else
+ send(enumerator) do |callback|
+ result = callback.call(object)
+ break result if terminator.call(result, object)
+ end
+ end
+ end
+
+ def |(chain)
+ if chain.is_a?(CallbackChain)
+ chain.each { |callback| self | callback }
+ else
+ if (found_callback = find(chain)) && (index = index(chain))
+ self[index] = chain
+ else
+ self << chain
+ end
+ end
+ self
+ end
+
+ def find(callback, &block)
+ select { |c| c == callback && (!block_given? || yield(c)) }.first
+ end
+
+ def delete(callback)
+ super(callback.is_a?(Callback) ? callback : find(callback))
+ end
+
+ private
+ def self.extract_options(*methods, &block)
+ methods.flatten!
+ options = methods.extract_options!
+ methods << block if block_given?
+ return methods, options
+ end
+
+ def extract_options(*methods, &block)
+ self.class.extract_options(*methods, &block)
+ end
+ end
+
+ class Callback
+ attr_reader :kind, :method, :identifier, :options
+
+ def initialize(kind, method, options = {})
+ @kind = kind
+ @method = method
+ @identifier = options[:identifier]
+ @options = options
+ end
+
+ def ==(other)
+ case other
+ when Callback
+ (self.identifier && self.identifier == other.identifier) || self.method == other.method
+ else
+ (self.identifier && self.identifier == other) || self.method == other
+ end
+ end
+
+ def eql?(other)
+ self == other
+ end
+
+ def dup
+ self.class.new(@kind, @method, @options.dup)
+ end
+
+ def call(*args, &block)
+ evaluate_method(method, *args, &block) if should_run_callback?(*args)
+ rescue LocalJumpError
+ raise ArgumentError,
+ "Cannot yield from a Proc type filter. The Proc must take two " +
+ "arguments and execute #call on the second argument."
+ end
+
+ private
+ def evaluate_method(method, *args, &block)
+ case method
+ when Symbol
+ object = args.shift
+ object.send(method, *args, &block)
+ when String
+ eval(method, args.first.instance_eval { binding })
+ when Proc, Method
+ method.call(*args, &block)
+ else
+ if method.respond_to?(kind)
+ method.send(kind, *args, &block)
+ else
+ raise ArgumentError,
+ "Callbacks must be a symbol denoting the method to call, a string to be evaluated, " +
+ "a block to be invoked, or an object responding to the callback method."
+ end
+ end
+ end
+
+ def should_run_callback?(*args)
+ if options[:if]
+ evaluate_method(options[:if], *args)
+ elsif options[:unless]
+ !evaluate_method(options[:unless], *args)
+ else
+ true
+ end
+ end
+ end
+
+ def self.included(base)
+ base.extend ClassMethods
+ end
+
+ module ClassMethods
+ def define_callbacks(*callbacks)
+ callbacks.each do |callback|
+ class_eval <<-"end_eval"
+ def self.#{callback}(*methods, &block)
+ callbacks = CallbackChain.build(:#{callback}, *methods, &block)
+ (@#{callback}_callbacks ||= CallbackChain.new).concat callbacks
+ end
+
+ def self.#{callback}_callback_chain
+ @#{callback}_callbacks ||= CallbackChain.new
+
+ if superclass.respond_to?(:#{callback}_callback_chain)
+ CallbackChain.new(superclass.#{callback}_callback_chain + @#{callback}_callbacks)
+ else
+ @#{callback}_callbacks
+ end
+ end
+ end_eval
+ end
+ end
+ end
+
+ # Runs all the callbacks defined for the given options.
+ #
+ # If a block is given it will be called after each callback receiving as arguments:
+ #
+ # * the result from the callback
+ # * the object which has the callback
+ #
+ # If the result from the block evaluates to false, the callback chain is stopped.
+ #
+ # Example:
+ # class Storage
+ # include ActiveSupport::Callbacks
+ #
+ # define_callbacks :before_save, :after_save
+ # end
+ #
+ # class ConfigStorage < Storage
+ # before_save :pass
+ # before_save :pass
+ # before_save :stop
+ # before_save :pass
+ #
+ # def pass
+ # puts "pass"
+ # end
+ #
+ # def stop
+ # puts "stop"
+ # return false
+ # end
+ #
+ # def save
+ # result = run_callbacks(:before_save) { |result, object| result == false }
+ # puts "- save" if result
+ # end
+ # end
+ #
+ # config = ConfigStorage.new
+ # config.save
+ #
+ # Output:
+ # pass
+ # pass
+ # stop
+ def run_callbacks(kind, options = {}, &block)
+ self.class.send("#{kind}_callback_chain").run(self, options, &block)
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/clean_logger.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/clean_logger.rb
new file mode 100644
index 000000000..b4c27ebc9
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/clean_logger.rb
@@ -0,0 +1,127 @@
+require 'logger'
+require 'active_support/core_ext/class/attribute_accessors'
+
+# Extensions to the built in Ruby logger.
+#
+# If you want to use the default log formatter as defined in the Ruby core, then you
+# will need to set the formatter for the logger as in:
+#
+# logger.formatter = Formatter.new
+#
+# You can then specify the datetime format, for example:
+#
+# logger.datetime_format = "%Y-%m-%d"
+#
+# Note: This logger is deprecated in favor of ActiveSupport::BufferedLogger
+class Logger
+ # Set to false to disable the silencer
+ cattr_accessor :silencer
+ self.silencer = true
+
+ # Silences the logger for the duration of the block.
+ def silence(temporary_level = Logger::ERROR)
+ if silencer
+ begin
+ old_logger_level, self.level = level, temporary_level
+ yield self
+ ensure
+ self.level = old_logger_level
+ end
+ else
+ yield self
+ end
+ end
+
+ alias :old_datetime_format= :datetime_format=
+ # Logging date-time format (string passed to +strftime+). Ignored if the formatter
+ # does not respond to datetime_format=.
+ def datetime_format=(datetime_format)
+ formatter.datetime_format = datetime_format if formatter.respond_to?(:datetime_format=)
+ end
+
+ alias :old_datetime_format :datetime_format
+ # Get the logging datetime format. Returns nil if the formatter does not support
+ # datetime formatting.
+ def datetime_format
+ formatter.datetime_format if formatter.respond_to?(:datetime_format)
+ end
+
+ alias :old_formatter :formatter if method_defined?(:formatter)
+ # Get the current formatter. The default formatter is a SimpleFormatter which only
+ # displays the log message
+ def formatter
+ @formatter ||= SimpleFormatter.new
+ end
+
+ unless const_defined? :Formatter
+ class Formatter
+ Format = "%s, [%s#%d] %5s -- %s: %s\n"
+
+ attr_accessor :datetime_format
+
+ def initialize
+ @datetime_format = nil
+ end
+
+ def call(severity, time, progname, msg)
+ Format % [severity[0..0], format_datetime(time), $$, severity, progname,
+ msg2str(msg)]
+ end
+
+ private
+ def format_datetime(time)
+ if @datetime_format.nil?
+ time.strftime("%Y-%m-%dT%H:%M:%S.") << "%06d " % time.usec
+ else
+ time.strftime(@datetime_format)
+ end
+ end
+
+ def msg2str(msg)
+ case msg
+ when ::String
+ msg
+ when ::Exception
+ "#{ msg.message } (#{ msg.class })\n" <<
+ (msg.backtrace || []).join("\n")
+ else
+ msg.inspect
+ end
+ end
+ end
+ end
+
+ # Simple formatter which only displays the message.
+ class SimpleFormatter < Logger::Formatter
+ # This method is invoked when a log event occurs
+ def call(severity, timestamp, progname, msg)
+ "#{String === msg ? msg : msg.inspect}\n"
+ end
+ end
+
+ private
+ alias old_format_message format_message
+
+ # Ruby 1.8.3 transposed the msg and progname arguments to format_message.
+ # We can't test RUBY_VERSION because some distributions don't keep Ruby
+ # and its standard library in sync, leading to installations of Ruby 1.8.2
+ # with Logger from 1.8.3 and vice versa.
+ if method_defined?(:formatter=)
+ def format_message(severity, timestamp, progname, msg)
+ formatter.call(severity, timestamp, progname, msg)
+ end
+ else
+ def format_message(severity, timestamp, msg, progname)
+ formatter.call(severity, timestamp, progname, msg)
+ end
+
+ attr_writer :formatter
+ public :formatter=
+
+ alias old_format_datetime format_datetime
+ def format_datetime(datetime) datetime end
+
+ alias old_msg2str msg2str
+ def msg2str(msg) msg end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext.rb
new file mode 100644
index 000000000..4deef8c7a
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext.rb
@@ -0,0 +1,4 @@
+Dir[File.dirname(__FILE__) + "/core_ext/*.rb"].sort.each do |path|
+ filename = File.basename(path)
+ require "active_support/core_ext/#{filename}"
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/array.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/array.rb
new file mode 100644
index 000000000..cc0a1ebc1
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/array.rb
@@ -0,0 +1,13 @@
+require 'active_support/core_ext/array/access'
+require 'active_support/core_ext/array/conversions'
+require 'active_support/core_ext/array/extract_options'
+require 'active_support/core_ext/array/grouping'
+require 'active_support/core_ext/array/random_access'
+
+class Array #:nodoc:
+ include ActiveSupport::CoreExtensions::Array::Access
+ include ActiveSupport::CoreExtensions::Array::Conversions
+ include ActiveSupport::CoreExtensions::Array::ExtractOptions
+ include ActiveSupport::CoreExtensions::Array::Grouping
+ include ActiveSupport::CoreExtensions::Array::RandomAccess
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/array/access.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/array/access.rb
new file mode 100644
index 000000000..21a8584bb
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/array/access.rb
@@ -0,0 +1,26 @@
+module ActiveSupport #:nodoc:
+ module CoreExtensions #:nodoc:
+ module Array #:nodoc:
+ # Makes it easier to access parts of an array.
+ module Access
+ # Returns the tail of the array from +position+.
+ #
+ # %w( a b c d ).from(0) # => %w( a b c d )
+ # %w( a b c d ).from(2) # => %w( c d )
+ # %w( a b c d ).from(10) # => nil
+ def from(position)
+ self[position..-1]
+ end
+
+ # Returns the beginning of the array up to +position+.
+ #
+ # %w( a b c d ).to(0) # => %w( a )
+ # %w( a b c d ).to(2) # => %w( a b c )
+ # %w( a b c d ).to(10) # => %w( a b c d )
+ def to(position)
+ self[0..position]
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/array/conversions.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/array/conversions.rb
new file mode 100644
index 000000000..a9882828c
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/array/conversions.rb
@@ -0,0 +1,178 @@
+require 'builder'
+
+module ActiveSupport #:nodoc:
+ module CoreExtensions #:nodoc:
+ module Array #:nodoc:
+ module Conversions
+ # Converts the array to a comma-separated sentence where the last element is joined by the connector word. Options:
+ # * <tt>:connector</tt> - The word used to join the last element in arrays with two or more elements (default: "and")
+ # * <tt>:skip_last_comma</tt> - Set to true to return "a, b and c" instead of "a, b, and c".
+ def to_sentence(options = {})
+ options.assert_valid_keys(:connector, :skip_last_comma)
+ options.reverse_merge! :connector => 'and', :skip_last_comma => false
+ options[:connector] = "#{options[:connector]} " unless options[:connector].nil? || options[:connector].strip == ''
+
+ case length
+ when 0
+ ""
+ when 1
+ self[0].to_s
+ when 2
+ "#{self[0]} #{options[:connector]}#{self[1]}"
+ else
+ "#{self[0...-1].join(', ')}#{options[:skip_last_comma] ? '' : ','} #{options[:connector]}#{self[-1]}"
+ end
+ end
+
+ # Calls <tt>to_param</tt> on all its elements and joins the result with
+ # slashes. This is used by <tt>url_for</tt> in Action Pack.
+ def to_param
+ map(&:to_param).join '/'
+ end
+
+ # Converts an array into a string suitable for use as a URL query string,
+ # using the given +key+ as the param name.
+ #
+ # ['Rails', 'coding'].to_query('hobbies') # => "hobbies%5B%5D=Rails&hobbies%5B%5D=coding"
+ def to_query(key)
+ collect { |value| value.to_query("#{key}[]") } * '&'
+ end
+
+ def self.included(base) #:nodoc:
+ base.class_eval do
+ alias_method :to_default_s, :to_s
+ alias_method :to_s, :to_formatted_s
+ end
+ end
+
+ # Converts a collection of elements into a formatted string by calling
+ # <tt>to_s</tt> on all elements and joining them:
+ #
+ # Blog.find(:all).to_formatted_s # => "First PostSecond PostThird Post"
+ #
+ # Adding in the <tt>:db</tt> argument as the format yields a prettier
+ # output:
+ #
+ # Blog.find(:all).to_formatted_s(:db) # => "First Post,Second Post,Third Post"
+ def to_formatted_s(format = :default)
+ case format
+ when :db
+ if respond_to?(:empty?) && self.empty?
+ "null"
+ else
+ collect { |element| element.id }.join(",")
+ end
+ else
+ to_default_s
+ end
+ end
+
+ # Returns a string that represents this array in XML by sending +to_xml+
+ # to each element. Active Record collections delegate their representation
+ # in XML to this method.
+ #
+ # All elements are expected to respond to +to_xml+, if any of them does
+ # not an exception is raised.
+ #
+ # The root node reflects the class name of the first element in plural
+ # if all elements belong to the same type and that's not Hash:
+ #
+ # customer.projects.to_xml
+ #
+ # <?xml version="1.0" encoding="UTF-8"?>
+ # <projects type="array">
+ # <project>
+ # <amount type="decimal">20000.0</amount>
+ # <customer-id type="integer">1567</customer-id>
+ # <deal-date type="date">2008-04-09</deal-date>
+ # ...
+ # </project>
+ # <project>
+ # <amount type="decimal">57230.0</amount>
+ # <customer-id type="integer">1567</customer-id>
+ # <deal-date type="date">2008-04-15</deal-date>
+ # ...
+ # </project>
+ # </projects>
+ #
+ # Otherwise the root element is "records":
+ #
+ # [{:foo => 1, :bar => 2}, {:baz => 3}].to_xml
+ #
+ # <?xml version="1.0" encoding="UTF-8"?>
+ # <records type="array">
+ # <record>
+ # <bar type="integer">2</bar>
+ # <foo type="integer">1</foo>
+ # </record>
+ # <record>
+ # <baz type="integer">3</baz>
+ # </record>
+ # </records>
+ #
+ # If the collection is empty the root element is "nil-classes" by default:
+ #
+ # [].to_xml
+ #
+ # <?xml version="1.0" encoding="UTF-8"?>
+ # <nil-classes type="array"/>
+ #
+ # To ensure a meaningful root element use the <tt>:root</tt> option:
+ #
+ # customer_with_no_projects.projects.to_xml(:root => "projects")
+ #
+ # <?xml version="1.0" encoding="UTF-8"?>
+ # <projects type="array"/>
+ #
+ # By default root children have as node name the one of the root
+ # singularized. You can change it with the <tt>:children</tt> option.
+ #
+ # The +options+ hash is passed downwards:
+ #
+ # Message.all.to_xml(:skip_types => true)
+ #
+ # <?xml version="1.0" encoding="UTF-8"?>
+ # <messages>
+ # <message>
+ # <created-at>2008-03-07T09:58:18+01:00</created-at>
+ # <id>1</id>
+ # <name>1</name>
+ # <updated-at>2008-03-07T09:58:18+01:00</updated-at>
+ # <user-id>1</user-id>
+ # </message>
+ # </messages>
+ #
+ def to_xml(options = {})
+ raise "Not all elements respond to to_xml" unless all? { |e| e.respond_to? :to_xml }
+
+ options[:root] ||= all? { |e| e.is_a?(first.class) && first.class.to_s != "Hash" } ? first.class.to_s.underscore.pluralize : "records"
+ options[:children] ||= options[:root].singularize
+ options[:indent] ||= 2
+ options[:builder] ||= Builder::XmlMarkup.new(:indent => options[:indent])
+
+ root = options.delete(:root).to_s
+ children = options.delete(:children)
+
+ if !options.has_key?(:dasherize) || options[:dasherize]
+ root = root.dasherize
+ end
+
+ options[:builder].instruct! unless options.delete(:skip_instruct)
+
+ opts = options.merge({ :root => children })
+
+ xml = options[:builder]
+ if empty?
+ xml.tag!(root, options[:skip_types] ? {} : {:type => "array"})
+ else
+ xml.tag!(root, options[:skip_types] ? {} : {:type => "array"}) {
+ yield xml if block_given?
+ each { |e| e.to_xml(opts.merge!({ :skip_instruct => true })) }
+ }
+ end
+ end
+
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/array/extract_options.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/array/extract_options.rb
new file mode 100644
index 000000000..eb917576d
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/array/extract_options.rb
@@ -0,0 +1,20 @@
+module ActiveSupport #:nodoc:
+ module CoreExtensions #:nodoc:
+ module Array #:nodoc:
+ module ExtractOptions
+ # Extracts options from a set of arguments. Removes and returns the last
+ # element in the array if it's a hash, otherwise returns a blank hash.
+ #
+ # def options(*args)
+ # args.extract_options!
+ # end
+ #
+ # options(1, 2) # => {}
+ # options(1, 2, :a => :b) # => {:a=>:b}
+ def extract_options!
+ last.is_a?(::Hash) ? pop : {}
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/array/grouping.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/array/grouping.rb
new file mode 100644
index 000000000..767acc4e0
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/array/grouping.rb
@@ -0,0 +1,63 @@
+require 'enumerator'
+
+module ActiveSupport #:nodoc:
+ module CoreExtensions #:nodoc:
+ module Array #:nodoc:
+ module Grouping
+ # Iterates over the array in groups of size +number+, padding any remaining
+ # slots with +fill_with+ unless it is +false+.
+ #
+ # %w(1 2 3 4 5 6 7).in_groups_of(3) {|g| p g}
+ # ["1", "2", "3"]
+ # ["4", "5", "6"]
+ # ["7", nil, nil]
+ #
+ # %w(1 2 3).in_groups_of(2, '&nbsp;') {|g| p g}
+ # ["1", "2"]
+ # ["3", "&nbsp;"]
+ #
+ # %w(1 2 3).in_groups_of(2, false) {|g| p g}
+ # ["1", "2"]
+ # ["3"]
+ def in_groups_of(number, fill_with = nil, &block)
+ if fill_with == false
+ collection = self
+ else
+ # size % number gives how many extra we have;
+ # subtracting from number gives how many to add;
+ # modulo number ensures we don't add group of just fill.
+ padding = (number - size % number) % number
+ collection = dup.concat([fill_with] * padding)
+ end
+
+ if block_given?
+ collection.each_slice(number, &block)
+ else
+ returning [] do |groups|
+ collection.each_slice(number) { |group| groups << group }
+ end
+ end
+ end
+
+ # Divides the array into one or more subarrays based on a delimiting +value+
+ # or the result of an optional block.
+ #
+ # [1, 2, 3, 4, 5].split(3) # => [[1, 2], [4, 5]]
+ # (1..10).to_a.split { |i| i % 3 == 0 } # => [[1, 2], [4, 5], [7, 8], [10]]
+ def split(value = nil, &block)
+ block ||= Proc.new { |e| e == value }
+
+ inject([[]]) do |results, element|
+ if block.call(element)
+ results << []
+ else
+ results.last << element
+ end
+
+ results
+ end
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/array/random_access.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/array/random_access.rb
new file mode 100644
index 000000000..54d17cbf3
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/array/random_access.rb
@@ -0,0 +1,12 @@
+module ActiveSupport #:nodoc:
+ module CoreExtensions #:nodoc:
+ module Array #:nodoc:
+ module RandomAccess
+ # Returns a random element from the array.
+ def rand
+ self[Kernel.rand(length)]
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/base64.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/base64.rb
new file mode 100644
index 000000000..235e2edf5
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/base64.rb
@@ -0,0 +1,4 @@
+require 'active_support/base64'
+require 'active_support/core_ext/base64/encoding'
+
+ActiveSupport::Base64.extend ActiveSupport::CoreExtensions::Base64::Encoding
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/base64/encoding.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/base64/encoding.rb
new file mode 100644
index 000000000..1a40da878
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/base64/encoding.rb
@@ -0,0 +1,13 @@
+module ActiveSupport #:nodoc:
+ module CoreExtensions #:nodoc:
+ module Base64 #:nodoc:
+ module Encoding
+ # Encodes the value as base64 without the newline breaks. This makes the base64 encoding readily usable as URL parameters
+ # or memcache keys without further processing.
+ def encode64s(value)
+ encode64(value).gsub(/\n/, '')
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/benchmark.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/benchmark.rb
new file mode 100644
index 000000000..79ba165e3
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/benchmark.rb
@@ -0,0 +1,12 @@
+require 'benchmark'
+
+class << Benchmark
+ remove_method :realtime
+
+ def realtime
+ r0 = Time.now
+ yield
+ r1 = Time.now
+ r1.to_f - r0.to_f
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/bigdecimal.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/bigdecimal.rb
new file mode 100644
index 000000000..d429078c9
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/bigdecimal.rb
@@ -0,0 +1,6 @@
+require 'bigdecimal'
+require 'active_support/core_ext/bigdecimal/conversions'
+
+class BigDecimal#:nodoc:
+ include ActiveSupport::CoreExtensions::BigDecimal::Conversions
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/bigdecimal/conversions.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/bigdecimal/conversions.rb
new file mode 100644
index 000000000..d2b01b1b8
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/bigdecimal/conversions.rb
@@ -0,0 +1,41 @@
+require 'yaml'
+
+module ActiveSupport #:nodoc:
+ module CoreExtensions #:nodoc:
+ module BigDecimal #:nodoc:
+ module Conversions
+ def self.included(base) #:nodoc:
+ base.instance_eval do
+ alias_method :_original_to_s, :to_s
+ alias_method :to_s, :to_formatted_s
+ end
+ end
+
+ def to_formatted_s(format="F")
+ _original_to_s(format)
+ end
+
+ yaml_as "tag:yaml.org,2002:float"
+ def to_yaml( opts = {} )
+ YAML::quick_emit( nil, opts ) do |out|
+ # This emits the number without any scientific notation.
+ # I prefer it to using self.to_f.to_s, which would lose precision.
+ #
+ # Note that YAML allows that when reconsituting floats
+ # to native types, some precision may get lost.
+ # There is no full precision real YAML tag that I am aware of.
+ str = self.to_s
+ if str == "Infinity"
+ str = ".Inf"
+ elsif str == "-Infinity"
+ str = "-.Inf"
+ elsif str == "NaN"
+ str = ".NaN"
+ end
+ out.scalar( "tag:yaml.org,2002:float", str, :plain )
+ end
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/blank.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/blank.rb
new file mode 100644
index 000000000..dfe33162e
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/blank.rb
@@ -0,0 +1,53 @@
+class Object
+ # An object is blank if it's false, empty, or a whitespace string.
+ # For example, "", " ", +nil+, [], and {} are blank.
+ #
+ # This simplifies
+ #
+ # if !address.nil? && !address.empty?
+ #
+ # to
+ #
+ # if !address.blank?
+ def blank?
+ respond_to?(:empty?) ? empty? : !self
+ end
+end
+
+class NilClass #:nodoc:
+ def blank?
+ true
+ end
+end
+
+class FalseClass #:nodoc:
+ def blank?
+ true
+ end
+end
+
+class TrueClass #:nodoc:
+ def blank?
+ false
+ end
+end
+
+class Array #:nodoc:
+ alias_method :blank?, :empty?
+end
+
+class Hash #:nodoc:
+ alias_method :blank?, :empty?
+end
+
+class String #:nodoc:
+ def blank?
+ self !~ /\S/
+ end
+end
+
+class Numeric #:nodoc:
+ def blank?
+ false
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/cgi.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/cgi.rb
new file mode 100644
index 000000000..db90e5c74
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/cgi.rb
@@ -0,0 +1,5 @@
+require 'active_support/core_ext/cgi/escape_skipping_slashes'
+
+class CGI #:nodoc:
+ extend ActiveSupport::CoreExtensions::CGI::EscapeSkippingSlashes
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/cgi/escape_skipping_slashes.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/cgi/escape_skipping_slashes.rb
new file mode 100644
index 000000000..a21e98fa8
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/cgi/escape_skipping_slashes.rb
@@ -0,0 +1,14 @@
+module ActiveSupport #:nodoc:
+ module CoreExtensions #:nodoc:
+ module CGI #:nodoc:
+ module EscapeSkippingSlashes #:nodoc:
+ def escape_skipping_slashes(str)
+ str = str.join('/') if str.respond_to? :join
+ str.gsub(/([^ \/a-zA-Z0-9_.-])/n) do
+ "%#{$1.unpack('H2').first.upcase}"
+ end.tr(' ', '+')
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/class.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/class.rb
new file mode 100644
index 000000000..44ad6c8c0
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/class.rb
@@ -0,0 +1,4 @@
+require 'active_support/core_ext/class/attribute_accessors'
+require 'active_support/core_ext/class/inheritable_attributes'
+require 'active_support/core_ext/class/removal'
+require 'active_support/core_ext/class/delegating_attributes'
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/class/attribute_accessors.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/class/attribute_accessors.rb
new file mode 100644
index 000000000..186ca69c0
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/class/attribute_accessors.rb
@@ -0,0 +1,54 @@
+# Extends the class object with class and instance accessors for class attributes,
+# just like the native attr* accessors for instance attributes.
+#
+# class Person
+# cattr_accessor :hair_colors
+# end
+#
+# Person.hair_colors = [:brown, :black, :blonde, :red]
+class Class
+ def cattr_reader(*syms)
+ syms.flatten.each do |sym|
+ next if sym.is_a?(Hash)
+ class_eval(<<-EOS, __FILE__, __LINE__)
+ unless defined? @@#{sym}
+ @@#{sym} = nil
+ end
+
+ def self.#{sym}
+ @@#{sym}
+ end
+
+ def #{sym}
+ @@#{sym}
+ end
+ EOS
+ end
+ end
+
+ def cattr_writer(*syms)
+ options = syms.extract_options!
+ syms.flatten.each do |sym|
+ class_eval(<<-EOS, __FILE__, __LINE__)
+ unless defined? @@#{sym}
+ @@#{sym} = nil
+ end
+
+ def self.#{sym}=(obj)
+ @@#{sym} = obj
+ end
+
+ #{"
+ def #{sym}=(obj)
+ @@#{sym} = obj
+ end
+ " unless options[:instance_writer] == false }
+ EOS
+ end
+ end
+
+ def cattr_accessor(*syms)
+ cattr_reader(*syms)
+ cattr_writer(*syms)
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/class/delegating_attributes.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/class/delegating_attributes.rb
new file mode 100644
index 000000000..368317df9
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/class/delegating_attributes.rb
@@ -0,0 +1,46 @@
+# These class attributes behave something like the class
+# inheritable accessors. But instead of copying the hash over at
+# the time the subclass is first defined, the accessors simply
+# delegate to their superclass unless they have been given a
+# specific value. This stops the strange situation where values
+# set after class definition don't get applied to subclasses.
+class Class
+ def superclass_delegating_reader(*names)
+ class_name_to_stop_searching_on = self.superclass.name.blank? ? "Object" : self.superclass.name
+ names.each do |name|
+ class_eval <<-EOS
+ def self.#{name}
+ if defined?(@#{name})
+ @#{name}
+ elsif superclass < #{class_name_to_stop_searching_on} && superclass.respond_to?(:#{name})
+ superclass.#{name}
+ end
+ end
+ def #{name}
+ self.class.#{name}
+ end
+ def self.#{name}?
+ !!#{name}
+ end
+ def #{name}?
+ !!#{name}
+ end
+ EOS
+ end
+ end
+
+ def superclass_delegating_writer(*names)
+ names.each do |name|
+ class_eval <<-EOS
+ def self.#{name}=(value)
+ @#{name} = value
+ end
+ EOS
+ end
+ end
+
+ def superclass_delegating_accessor(*names)
+ superclass_delegating_reader(*names)
+ superclass_delegating_writer(*names)
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/class/inheritable_attributes.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/class/inheritable_attributes.rb
new file mode 100644
index 000000000..8724a492b
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/class/inheritable_attributes.rb
@@ -0,0 +1,140 @@
+# Retain for backward compatibility. Methods are now included in Class.
+module ClassInheritableAttributes # :nodoc:
+end
+
+# Allows attributes to be shared within an inheritance hierarchy, but where each descendant gets a copy of
+# their parents' attributes, instead of just a pointer to the same. This means that the child can add elements
+# to, for example, an array without those additions being shared with either their parent, siblings, or
+# children, which is unlike the regular class-level attributes that are shared across the entire hierarchy.
+class Class # :nodoc:
+ def class_inheritable_reader(*syms)
+ syms.each do |sym|
+ next if sym.is_a?(Hash)
+ class_eval <<-EOS
+ def self.#{sym}
+ read_inheritable_attribute(:#{sym})
+ end
+
+ def #{sym}
+ self.class.#{sym}
+ end
+ EOS
+ end
+ end
+
+ def class_inheritable_writer(*syms)
+ options = syms.extract_options!
+ syms.each do |sym|
+ class_eval <<-EOS
+ def self.#{sym}=(obj)
+ write_inheritable_attribute(:#{sym}, obj)
+ end
+
+ #{"
+ def #{sym}=(obj)
+ self.class.#{sym} = obj
+ end
+ " unless options[:instance_writer] == false }
+ EOS
+ end
+ end
+
+ def class_inheritable_array_writer(*syms)
+ options = syms.extract_options!
+ syms.each do |sym|
+ class_eval <<-EOS
+ def self.#{sym}=(obj)
+ write_inheritable_array(:#{sym}, obj)
+ end
+
+ #{"
+ def #{sym}=(obj)
+ self.class.#{sym} = obj
+ end
+ " unless options[:instance_writer] == false }
+ EOS
+ end
+ end
+
+ def class_inheritable_hash_writer(*syms)
+ options = syms.extract_options!
+ syms.each do |sym|
+ class_eval <<-EOS
+ def self.#{sym}=(obj)
+ write_inheritable_hash(:#{sym}, obj)
+ end
+
+ #{"
+ def #{sym}=(obj)
+ self.class.#{sym} = obj
+ end
+ " unless options[:instance_writer] == false }
+ EOS
+ end
+ end
+
+ def class_inheritable_accessor(*syms)
+ class_inheritable_reader(*syms)
+ class_inheritable_writer(*syms)
+ end
+
+ def class_inheritable_array(*syms)
+ class_inheritable_reader(*syms)
+ class_inheritable_array_writer(*syms)
+ end
+
+ def class_inheritable_hash(*syms)
+ class_inheritable_reader(*syms)
+ class_inheritable_hash_writer(*syms)
+ end
+
+ def inheritable_attributes
+ @inheritable_attributes ||= EMPTY_INHERITABLE_ATTRIBUTES
+ end
+
+ def write_inheritable_attribute(key, value)
+ if inheritable_attributes.equal?(EMPTY_INHERITABLE_ATTRIBUTES)
+ @inheritable_attributes = {}
+ end
+ inheritable_attributes[key] = value
+ end
+
+ def write_inheritable_array(key, elements)
+ write_inheritable_attribute(key, []) if read_inheritable_attribute(key).nil?
+ write_inheritable_attribute(key, read_inheritable_attribute(key) + elements)
+ end
+
+ def write_inheritable_hash(key, hash)
+ write_inheritable_attribute(key, {}) if read_inheritable_attribute(key).nil?
+ write_inheritable_attribute(key, read_inheritable_attribute(key).merge(hash))
+ end
+
+ def read_inheritable_attribute(key)
+ inheritable_attributes[key]
+ end
+
+ def reset_inheritable_attributes
+ @inheritable_attributes = EMPTY_INHERITABLE_ATTRIBUTES
+ end
+
+ private
+ # Prevent this constant from being created multiple times
+ EMPTY_INHERITABLE_ATTRIBUTES = {}.freeze unless const_defined?(:EMPTY_INHERITABLE_ATTRIBUTES)
+
+ def inherited_with_inheritable_attributes(child)
+ inherited_without_inheritable_attributes(child) if respond_to?(:inherited_without_inheritable_attributes)
+
+ if inheritable_attributes.equal?(EMPTY_INHERITABLE_ATTRIBUTES)
+ new_inheritable_attributes = EMPTY_INHERITABLE_ATTRIBUTES
+ else
+ new_inheritable_attributes = inheritable_attributes.inject({}) do |memo, (key, value)|
+ memo.update(key => value.duplicable? ? value.dup : value)
+ end
+ end
+
+ child.instance_variable_set('@inheritable_attributes', new_inheritable_attributes)
+ end
+
+ alias inherited_without_inheritable_attributes inherited
+ alias inherited inherited_with_inheritable_attributes
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/class/removal.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/class/removal.rb
new file mode 100644
index 000000000..10660edb2
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/class/removal.rb
@@ -0,0 +1,50 @@
+class Class #:nodoc:
+
+ # Unassociates the class with its subclasses and removes the subclasses
+ # themselves.
+ #
+ # Integer.remove_subclasses # => [Bignum, Fixnum]
+ # Fixnum # => NameError: uninitialized constant Fixnum
+ def remove_subclasses
+ Object.remove_subclasses_of(self)
+ end
+
+ # Returns an array with the names of the subclasses of +self+ as strings.
+ #
+ # Integer.subclasses # => ["Bignum", "Fixnum"]
+ def subclasses
+ Object.subclasses_of(self).map { |o| o.to_s }
+ end
+
+ # Removes the classes in +klasses+ from their parent module.
+ #
+ # Ordinary classes belong to some module via a constant. This method computes
+ # that constant name from the class name and removes it from the module it
+ # belongs to.
+ #
+ # Object.remove_class(Integer) # => [Integer]
+ # Integer # => NameError: uninitialized constant Integer
+ #
+ # Take into account that in general the class object could be still stored
+ # somewhere else.
+ #
+ # i = Integer # => Integer
+ # Object.remove_class(Integer) # => [Integer]
+ # Integer # => NameError: uninitialized constant Integer
+ # i.subclasses # => ["Bignum", "Fixnum"]
+ # Fixnum.superclass # => Integer
+ def remove_class(*klasses)
+ klasses.flatten.each do |klass|
+ # Skip this class if there is nothing bound to this name
+ next unless defined?(klass.name)
+
+ basename = klass.to_s.split("::").last
+ parent = klass.parent
+
+ # Skip this class if it does not match the current one bound to this name
+ next unless parent.const_defined?(basename) && klass = parent.const_get(basename)
+
+ parent.instance_eval { remove_const basename } unless parent == klass
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/date.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/date.rb
new file mode 100644
index 000000000..3f56c560b
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/date.rb
@@ -0,0 +1,10 @@
+require 'date'
+require 'active_support/core_ext/date/behavior'
+require 'active_support/core_ext/date/calculations'
+require 'active_support/core_ext/date/conversions'
+
+class Date#:nodoc:
+ include ActiveSupport::CoreExtensions::Date::Behavior
+ include ActiveSupport::CoreExtensions::Date::Calculations
+ include ActiveSupport::CoreExtensions::Date::Conversions
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/date/behavior.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/date/behavior.rb
new file mode 100644
index 000000000..011cc17cb
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/date/behavior.rb
@@ -0,0 +1,13 @@
+module ActiveSupport #:nodoc:
+ module CoreExtensions #:nodoc:
+ module Date #:nodoc:
+ module Behavior
+ # Enable more predictable duck-typing on Date-like classes. See
+ # Object#acts_like?.
+ def acts_like_date?
+ true
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/date/calculations.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/date/calculations.rb
new file mode 100644
index 000000000..1e2dbf118
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/date/calculations.rb
@@ -0,0 +1,215 @@
+module ActiveSupport #:nodoc:
+ module CoreExtensions #:nodoc:
+ module Date #:nodoc:
+ # Enables the use of time calculations within Time itself
+ module Calculations
+ def self.included(base) #:nodoc:
+ base.extend ClassMethods
+
+ base.instance_eval do
+ alias_method :plus_without_duration, :+
+ alias_method :+, :plus_with_duration
+
+ alias_method :minus_without_duration, :-
+ alias_method :-, :minus_with_duration
+ end
+ end
+
+ module ClassMethods
+ # Returns a new Date representing the date 1 day ago (i.e. yesterday's date).
+ def yesterday
+ ::Date.today.yesterday
+ end
+
+ # Returns a new Date representing the date 1 day after today (i.e. tomorrow's date).
+ def tomorrow
+ ::Date.today.tomorrow
+ end
+
+ # Returns Time.zone.today when config.time_zone is set, otherwise just returns Date.today.
+ def current
+ ::Time.zone_default ? ::Time.zone.today : ::Date.today
+ end
+ end
+
+ # Converts Date to a Time (or DateTime if necessary) with the time portion set to the beginning of the day (0:00)
+ # and then subtracts the specified number of seconds
+ def ago(seconds)
+ to_time.since(-seconds)
+ end
+
+ # Converts Date to a Time (or DateTime if necessary) with the time portion set to the beginning of the day (0:00)
+ # and then adds the specified number of seconds
+ def since(seconds)
+ to_time.since(seconds)
+ end
+ alias :in :since
+
+ # Converts Date to a Time (or DateTime if necessary) with the time portion set to the beginning of the day (0:00)
+ def beginning_of_day
+ to_time
+ end
+ alias :midnight :beginning_of_day
+ alias :at_midnight :beginning_of_day
+ alias :at_beginning_of_day :beginning_of_day
+
+ # Converts Date to a Time (or DateTime if necessary) with the time portion set to the end of the day (23:59:59)
+ def end_of_day
+ to_time.end_of_day
+ end
+
+ def plus_with_duration(other) #:nodoc:
+ if ActiveSupport::Duration === other
+ other.since(self)
+ else
+ plus_without_duration(other)
+ end
+ end
+
+ def minus_with_duration(other) #:nodoc:
+ if ActiveSupport::Duration === other
+ plus_with_duration(-other)
+ else
+ minus_without_duration(other)
+ end
+ end
+
+ # Provides precise Date calculations for years, months, and days. The +options+ parameter takes a hash with
+ # any of these keys: <tt>:years</tt>, <tt>:months</tt>, <tt>:weeks</tt>, <tt>:days</tt>.
+ def advance(options)
+ d = self
+ d = d >> options.delete(:years) * 12 if options[:years]
+ d = d >> options.delete(:months) if options[:months]
+ d = d + options.delete(:weeks) * 7 if options[:weeks]
+ d = d + options.delete(:days) if options[:days]
+ d
+ end
+
+ # Returns a new Date where one or more of the elements have been changed according to the +options+ parameter.
+ #
+ # Examples:
+ #
+ # Date.new(2007, 5, 12).change(:day => 1) # => Date.new(2007, 5, 1)
+ # Date.new(2007, 5, 12).change(:year => 2005, :month => 1) # => Date.new(2005, 1, 12)
+ def change(options)
+ ::Date.new(
+ options[:year] || self.year,
+ options[:month] || self.month,
+ options[:day] || self.day
+ )
+ end
+
+ # Returns a new Date/DateTime representing the time a number of specified months ago
+ def months_ago(months)
+ advance(:months => -months)
+ end
+
+ # Returns a new Date/DateTime representing the time a number of specified months in the future
+ def months_since(months)
+ advance(:months => months)
+ end
+
+ # Returns a new Date/DateTime representing the time a number of specified years ago
+ def years_ago(years)
+ advance(:years => -years)
+ end
+
+ # Returns a new Date/DateTime representing the time a number of specified years in the future
+ def years_since(years)
+ advance(:years => years)
+ end
+
+ # Short-hand for years_ago(1)
+ def last_year
+ years_ago(1)
+ end
+
+ # Short-hand for years_since(1)
+ def next_year
+ years_since(1)
+ end
+
+ # Short-hand for months_ago(1)
+ def last_month
+ months_ago(1)
+ end
+
+ # Short-hand for months_since(1)
+ def next_month
+ months_since(1)
+ end
+
+ # Returns a new Date/DateTime representing the "start" of this week (i.e, Monday; DateTime objects will have time set to 0:00)
+ def beginning_of_week
+ days_to_monday = self.wday!=0 ? self.wday-1 : 6
+ result = self - days_to_monday
+ self.acts_like?(:time) ? result.midnight : result
+ end
+ alias :monday :beginning_of_week
+ alias :at_beginning_of_week :beginning_of_week
+
+ # Returns a new Date/DateTime representing the end of this week (Sunday, DateTime objects will have time set to 23:59:59)
+ def end_of_week
+ days_to_sunday = self.wday!=0 ? 7-self.wday : 0
+ result = self + days_to_sunday.days
+ self.acts_like?(:time) ? result.end_of_day : result
+ end
+ alias :at_end_of_week :end_of_week
+
+ # Returns a new Date/DateTime representing the start of the given day in next week (default is Monday).
+ def next_week(day = :monday)
+ days_into_week = { :monday => 0, :tuesday => 1, :wednesday => 2, :thursday => 3, :friday => 4, :saturday => 5, :sunday => 6}
+ result = (self + 7).beginning_of_week + days_into_week[day]
+ self.acts_like?(:time) ? result.change(:hour => 0) : result
+ end
+
+ # Returns a new ; DateTime objects will have time set to 0:00DateTime representing the start of the month (1st of the month; DateTime objects will have time set to 0:00)
+ def beginning_of_month
+ self.acts_like?(:time) ? change(:day => 1,:hour => 0, :min => 0, :sec => 0) : change(:day => 1)
+ end
+ alias :at_beginning_of_month :beginning_of_month
+
+ # Returns a new Date/DateTime representing the end of the month (last day of the month; DateTime objects will have time set to 0:00)
+ def end_of_month
+ last_day = ::Time.days_in_month( self.month, self.year )
+ self.acts_like?(:time) ? change(:day => last_day, :hour => 23, :min => 59, :sec => 59) : change(:day => last_day)
+ end
+ alias :at_end_of_month :end_of_month
+
+ # Returns a new Date/DateTime representing the start of the quarter (1st of january, april, july, october; DateTime objects will have time set to 0:00)
+ def beginning_of_quarter
+ beginning_of_month.change(:month => [10, 7, 4, 1].detect { |m| m <= self.month })
+ end
+ alias :at_beginning_of_quarter :beginning_of_quarter
+
+ # Returns a new Date/DateTime representing the end of the quarter (last day of march, june, september, december; DateTime objects will have time set to 23:59:59)
+ def end_of_quarter
+ change(:month => [3, 6, 9, 12].detect { |m| m >= self.month }).end_of_month
+ end
+ alias :at_end_of_quarter :end_of_quarter
+
+ # Returns a new Date/DateTime representing the start of the year (1st of january; DateTime objects will have time set to 0:00)
+ def beginning_of_year
+ self.acts_like?(:time) ? change(:month => 1, :day => 1, :hour => 0, :min => 0, :sec => 0) : change(:month => 1, :day => 1)
+ end
+ alias :at_beginning_of_year :beginning_of_year
+
+ # Returns a new Time representing the end of the year (31st of december; DateTime objects will have time set to 23:59:59)
+ def end_of_year
+ self.acts_like?(:time) ? change(:month => 12,:day => 31,:hour => 23, :min => 59, :sec => 59) : change(:month => 12, :day => 31)
+ end
+ alias :at_end_of_year :end_of_year
+
+ # Convenience method which returns a new Date/DateTime representing the time 1 day ago
+ def yesterday
+ self - 1
+ end
+
+ # Convenience method which returns a new Date/DateTime representing the time 1 day since the instance time
+ def tomorrow
+ self + 1
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/date/conversions.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/date/conversions.rb
new file mode 100644
index 000000000..d2d9699d0
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/date/conversions.rb
@@ -0,0 +1,107 @@
+module ActiveSupport #:nodoc:
+ module CoreExtensions #:nodoc:
+ module Date #:nodoc:
+ # Converting dates to formatted strings, times, and datetimes.
+ module Conversions
+ DATE_FORMATS = {
+ :short => "%e %b",
+ :long => "%B %e, %Y",
+ :db => "%Y-%m-%d",
+ :number => "%Y%m%d",
+ :long_ordinal => lambda { |date| date.strftime("%B #{date.day.ordinalize}, %Y") }, # => "April 25th, 2007"
+ :rfc822 => "%e %b %Y"
+ }
+
+ def self.included(base) #:nodoc:
+ base.instance_eval do
+ alias_method :to_default_s, :to_s
+ alias_method :to_s, :to_formatted_s
+ alias_method :default_inspect, :inspect
+ alias_method :inspect, :readable_inspect
+
+ # Ruby 1.9 has Date#to_time which converts to localtime only.
+ remove_method :to_time if base.instance_methods.include?(:to_time)
+
+ # Ruby 1.9 has Date#xmlschema which converts to a string without the time component.
+ remove_method :xmlschema if base.instance_methods.include?(:xmlschema)
+ end
+ end
+
+ # Convert to a formatted string. See DATE_FORMATS for predefined formats.
+ #
+ # This method is aliased to <tt>to_s</tt>.
+ #
+ # ==== Examples:
+ # date = Date.new(2007, 11, 10) # => Sat, 10 Nov 2007
+ #
+ # date.to_formatted_s(:db) # => "2007-11-10"
+ # date.to_s(:db) # => "2007-11-10"
+ #
+ # date.to_formatted_s(:short) # => "10 Nov"
+ # date.to_formatted_s(:long) # => "November 10, 2007"
+ # date.to_formatted_s(:long_ordinal) # => "November 10th, 2007"
+ # date.to_formatted_s(:rfc822) # => "10 Nov 2007"
+ #
+ # == Adding your own time formats to to_formatted_s
+ # You can add your own formats to the Date::DATE_FORMATS hash.
+ # Use the format name as the hash key and either a strftime string
+ # or Proc instance that takes a date argument as the value.
+ #
+ # # config/initializers/time_formats.rb
+ # Date::DATE_FORMATS[:month_and_year] = "%B %Y"
+ # Date::DATE_FORMATS[:short_ordinal] = lambda { |date| date.strftime("%B #{date.day.ordinalize}") }
+ def to_formatted_s(format = :default)
+ if formatter = DATE_FORMATS[format]
+ if formatter.respond_to?(:call)
+ formatter.call(self).to_s
+ else
+ strftime(formatter)
+ end
+ else
+ to_default_s
+ end
+ end
+
+ # Overrides the default inspect method with a human readable one, e.g., "Mon, 21 Feb 2005"
+ def readable_inspect
+ strftime("%a, %d %b %Y")
+ end
+
+ # A method to keep Time, Date and DateTime instances interchangeable on conversions.
+ # In this case, it simply returns +self+.
+ def to_date
+ self
+ end if RUBY_VERSION < '1.9'
+
+ # Converts a Date instance to a Time, where the time is set to the beginning of the day.
+ # The timezone can be either :local or :utc (default :local).
+ #
+ # ==== Examples:
+ # date = Date.new(2007, 11, 10) # => Sat, 10 Nov 2007
+ #
+ # date.to_time # => Sat Nov 10 00:00:00 0800 2007
+ # date.to_time(:local) # => Sat Nov 10 00:00:00 0800 2007
+ #
+ # date.to_time(:utc) # => Sat Nov 10 00:00:00 UTC 2007
+ def to_time(form = :local)
+ ::Time.send("#{form}_time", year, month, day)
+ end
+
+ # Converts a Date instance to a DateTime, where the time is set to the beginning of the day
+ # and UTC offset is set to 0.
+ #
+ # ==== Example:
+ # date = Date.new(2007, 11, 10) # => Sat, 10 Nov 2007
+ #
+ # date.to_datetime # => Sat, 10 Nov 2007 00:00:00 0000
+ def to_datetime
+ ::DateTime.civil(year, month, day, 0, 0, 0, 0)
+ end if RUBY_VERSION < '1.9'
+
+ def xmlschema
+ to_time.xmlschema
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/date_time.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/date_time.rb
new file mode 100644
index 000000000..66a93eac4
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/date_time.rb
@@ -0,0 +1,12 @@
+require 'date'
+require 'active_support/core_ext/time/behavior'
+require 'active_support/core_ext/time/zones'
+require 'active_support/core_ext/date_time/calculations'
+require 'active_support/core_ext/date_time/conversions'
+
+class DateTime
+ include ActiveSupport::CoreExtensions::Time::Behavior
+ include ActiveSupport::CoreExtensions::Time::Zones
+ include ActiveSupport::CoreExtensions::DateTime::Calculations
+ include ActiveSupport::CoreExtensions::DateTime::Conversions
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/date_time/calculations.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/date_time/calculations.rb
new file mode 100644
index 000000000..155c961a9
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/date_time/calculations.rb
@@ -0,0 +1,112 @@
+require 'rational'
+
+module ActiveSupport #:nodoc:
+ module CoreExtensions #:nodoc:
+ module DateTime #:nodoc:
+ # Enables the use of time calculations within DateTime itself
+ module Calculations
+ def self.included(base) #:nodoc:
+ base.extend ClassMethods
+
+ base.class_eval do
+ alias_method :compare_without_coercion, :<=>
+ alias_method :<=>, :compare_with_coercion
+ end
+ end
+
+ module ClassMethods
+ # DateTimes aren't aware of DST rules, so use a consistent non-DST offset when creating a DateTime with an offset in the local zone
+ def local_offset
+ ::Time.local(2007).utc_offset.to_r / 86400
+ end
+ end
+
+ # Seconds since midnight: DateTime.now.seconds_since_midnight
+ def seconds_since_midnight
+ self.sec + (self.min * 60) + (self.hour * 3600)
+ end
+
+ # Returns a new DateTime where one or more of the elements have been changed according to the +options+ parameter. The time options
+ # (hour, minute, sec) reset cascadingly, so if only the hour is passed, then minute and sec is set to 0. If the hour and
+ # minute is passed, then sec is set to 0.
+ def change(options)
+ ::DateTime.civil(
+ options[:year] || self.year,
+ options[:month] || self.month,
+ options[:day] || self.day,
+ options[:hour] || self.hour,
+ options[:min] || (options[:hour] ? 0 : self.min),
+ options[:sec] || ((options[:hour] || options[:min]) ? 0 : self.sec),
+ options[:offset] || self.offset,
+ options[:start] || self.start
+ )
+ end
+
+ # Uses Date to provide precise Time calculations for years, months, and days.
+ # The +options+ parameter takes a hash with any of these keys: <tt>:years</tt>,
+ # <tt>:months</tt>, <tt>:weeks</tt>, <tt>:days</tt>, <tt>:hours</tt>,
+ # <tt>:minutes</tt>, <tt>:seconds</tt>.
+ def advance(options)
+ d = to_date.advance(options)
+ datetime_advanced_by_date = change(:year => d.year, :month => d.month, :day => d.day)
+ seconds_to_advance = (options[:seconds] || 0) + (options[:minutes] || 0) * 60 + (options[:hours] || 0) * 3600
+ seconds_to_advance == 0 ? datetime_advanced_by_date : datetime_advanced_by_date.since(seconds_to_advance)
+ end
+
+ # Returns a new DateTime representing the time a number of seconds ago
+ # Do not use this method in combination with x.months, use months_ago instead!
+ def ago(seconds)
+ self.since(-seconds)
+ end
+
+ # Returns a new DateTime representing the time a number of seconds since the instance time
+ # Do not use this method in combination with x.months, use months_since instead!
+ def since(seconds)
+ self + Rational(seconds.round, 86400)
+ end
+ alias :in :since
+
+ # Returns a new DateTime representing the start of the day (0:00)
+ def beginning_of_day
+ change(:hour => 0)
+ end
+ alias :midnight :beginning_of_day
+ alias :at_midnight :beginning_of_day
+ alias :at_beginning_of_day :beginning_of_day
+
+ # Returns a new DateTime representing the end of the day (23:59:59)
+ def end_of_day
+ change(:hour => 23, :min => 59, :sec => 59)
+ end
+
+ # Adjusts DateTime to UTC by adding its offset value; offset is set to 0
+ #
+ # Example:
+ #
+ # DateTime.civil(2005, 2, 21, 10, 11, 12, Rational(-6, 24)) # => Mon, 21 Feb 2005 10:11:12 -0600
+ # DateTime.civil(2005, 2, 21, 10, 11, 12, Rational(-6, 24)).utc # => Mon, 21 Feb 2005 16:11:12 +0000
+ def utc
+ new_offset(0)
+ end
+ alias_method :getutc, :utc
+
+ # Returns true if offset == 0
+ def utc?
+ offset == 0
+ end
+
+ # Returns the offset value in seconds
+ def utc_offset
+ (offset * 86400).to_i
+ end
+
+ # Layers additional behavior on DateTime#<=> so that Time and ActiveSupport::TimeWithZone instances can be compared with a DateTime
+ def compare_with_coercion(other)
+ other = other.comparable_time if other.respond_to?(:comparable_time)
+ other = other.to_datetime unless other.acts_like?(:date)
+ compare_without_coercion(other)
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/date_time/conversions.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/date_time/conversions.rb
new file mode 100644
index 000000000..c0175a5f2
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/date_time/conversions.rb
@@ -0,0 +1,96 @@
+module ActiveSupport #:nodoc:
+ module CoreExtensions #:nodoc:
+ module DateTime #:nodoc:
+ # Converting datetimes to formatted strings, dates, and times.
+ module Conversions
+ def self.append_features(base) #:nodoc:
+ base.class_eval do
+ alias_method :default_inspect, :inspect
+ alias_method :to_default_s, :to_s unless (instance_methods(false) & [:to_s, 'to_s']).empty?
+
+ # Ruby 1.9 has DateTime#to_time which internally relies on Time. We define our own #to_time which allows
+ # DateTimes outside the range of what can be created with Time.
+ remove_method :to_time if instance_methods.include?(:to_time)
+ end
+
+ super
+
+ base.class_eval do
+ alias_method :to_s, :to_formatted_s
+ alias_method :inspect, :readable_inspect
+ end
+ end
+
+ # Convert to a formatted string. See Time::DATE_FORMATS for predefined formats.
+ #
+ # This method is aliased to <tt>to_s</tt>.
+ #
+ # === Examples:
+ # datetime = DateTime.civil(2007, 12, 4, 0, 0, 0, 0) # => Tue, 04 Dec 2007 00:00:00 +0000
+ #
+ # datetime.to_formatted_s(:db) # => "2007-12-04 00:00:00"
+ # datetime.to_s(:db) # => "2007-12-04 00:00:00"
+ # datetime.to_s(:number) # => "20071204000000"
+ # datetime.to_formatted_s(:short) # => "04 Dec 00:00"
+ # datetime.to_formatted_s(:long) # => "December 04, 2007 00:00"
+ # datetime.to_formatted_s(:long_ordinal) # => "December 4th, 2007 00:00"
+ # datetime.to_formatted_s(:rfc822) # => "Tue, 04 Dec 2007 00:00:00 +0000"
+ #
+ # == Adding your own datetime formats to to_formatted_s
+ # DateTime formats are shared with Time. You can add your own to the
+ # Time::DATE_FORMATS hash. Use the format name as the hash key and
+ # either a strftime string or Proc instance that takes a time or
+ # datetime argument as the value.
+ #
+ # # config/initializers/time_formats.rb
+ # Time::DATE_FORMATS[:month_and_year] = "%B %Y"
+ # Time::DATE_FORMATS[:short_ordinal] = lambda { |time| time.strftime("%B #{time.day.ordinalize}") }
+ def to_formatted_s(format = :default)
+ return to_default_s unless formatter = ::Time::DATE_FORMATS[format]
+ formatter.respond_to?(:call) ? formatter.call(self).to_s : strftime(formatter)
+ end
+
+ # Returns the +utc_offset+ as an +HH:MM formatted string. Examples:
+ #
+ # datetime = DateTime.civil(2000, 1, 1, 0, 0, 0, Rational(-6, 24))
+ # datetime.formatted_offset # => "-06:00"
+ # datetime.formatted_offset(false) # => "-0600"
+ def formatted_offset(colon = true, alternate_utc_string = nil)
+ utc? && alternate_utc_string || utc_offset.to_utc_offset_s(colon)
+ end
+
+ # Overrides the default inspect method with a human readable one, e.g., "Mon, 21 Feb 2005 14:30:00 +0000"
+ def readable_inspect
+ to_s(:rfc822)
+ end
+
+ # Converts self to a Ruby Date object; time portion is discarded
+ def to_date
+ ::Date.new(year, month, day)
+ end
+
+ # Attempts to convert self to a Ruby Time object; returns self if out of range of Ruby Time class
+ # If self has an offset other than 0, self will just be returned unaltered, since there's no clean way to map it to a Time
+ def to_time
+ self.offset == 0 ? ::Time.utc_time(year, month, day, hour, min, sec) : self
+ end
+
+ # To be able to keep Times, Dates and DateTimes interchangeable on conversions
+ def to_datetime
+ self
+ end
+
+ # Converts datetime to an appropriate format for use in XML
+ def xmlschema
+ strftime("%Y-%m-%dT%H:%M:%S%Z")
+ end if RUBY_VERSION < '1.9'
+
+ # Converts self to a floating-point number of seconds since the Unix epoch
+ def to_f
+ days_since_unix_epoch = self - ::DateTime.civil(1970)
+ (days_since_unix_epoch * 86_400).to_f
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/duplicable.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/duplicable.rb
new file mode 100644
index 000000000..adbbfd8c6
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/duplicable.rb
@@ -0,0 +1,37 @@
+class Object
+ # Can you safely .dup this object?
+ # False for nil, false, true, symbols, and numbers; true otherwise.
+ def duplicable?
+ true
+ end
+end
+
+class NilClass #:nodoc:
+ def duplicable?
+ false
+ end
+end
+
+class FalseClass #:nodoc:
+ def duplicable?
+ false
+ end
+end
+
+class TrueClass #:nodoc:
+ def duplicable?
+ false
+ end
+end
+
+class Symbol #:nodoc:
+ def duplicable?
+ false
+ end
+end
+
+class Numeric #:nodoc:
+ def duplicable?
+ false
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/enumerable.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/enumerable.rb
new file mode 100644
index 000000000..f1469aa0e
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/enumerable.rb
@@ -0,0 +1,69 @@
+module Enumerable
+ # Ruby 1.8.7 introduces group_by, but the result isn't ordered. Override it.
+ remove_method(:group_by) if [].respond_to?(:group_by) && RUBY_VERSION < '1.9'
+
+ # Collect an enumerable into sets, grouped by the result of a block. Useful,
+ # for example, for grouping records by date.
+ #
+ # Example:
+ #
+ # latest_transcripts.group_by(&:day).each do |day, transcripts|
+ # p "#{day} -> #{transcripts.map(&:class).join(', ')}"
+ # end
+ # "2006-03-01 -> Transcript"
+ # "2006-02-28 -> Transcript"
+ # "2006-02-27 -> Transcript, Transcript"
+ # "2006-02-26 -> Transcript, Transcript"
+ # "2006-02-25 -> Transcript"
+ # "2006-02-24 -> Transcript, Transcript"
+ # "2006-02-23 -> Transcript"
+ def group_by
+ inject ActiveSupport::OrderedHash.new do |grouped, element|
+ (grouped[yield(element)] ||= []) << element
+ grouped
+ end
+ end unless [].respond_to?(:group_by)
+
+ # Calculates a sum from the elements. Examples:
+ #
+ # payments.sum { |p| p.price * p.tax_rate }
+ # payments.sum(&:price)
+ #
+ # The latter is a shortcut for:
+ #
+ # payments.inject { |sum, p| sum + p.price }
+ #
+ # It can also calculate the sum without the use of a block.
+ #
+ # [5, 15, 10].sum # => 30
+ # ["foo", "bar"].sum # => "foobar"
+ # [[1, 2], [3, 1, 5]].sum => [1, 2, 3, 1, 5]
+ #
+ # The default sum of an empty list is zero. You can override this default:
+ #
+ # [].sum(Payment.new(0)) { |i| i.amount } # => Payment.new(0)
+ #
+ def sum(identity = 0, &block)
+ return identity unless size > 0
+
+ if block_given?
+ map(&block).sum
+ else
+ inject { |sum, element| sum + element }
+ end
+ end
+
+ # Convert an enumerable to a hash. Examples:
+ #
+ # people.index_by(&:login)
+ # => { "nextangle" => <Person ...>, "chade-" => <Person ...>, ...}
+ # people.index_by { |person| "#{person.first_name} #{person.last_name}" }
+ # => { "Chade- Fowlersburg-e" => <Person ...>, "David Heinemeier Hansson" => <Person ...>, ...}
+ #
+ def index_by
+ inject({}) do |accum, elem|
+ accum[yield(elem)] = elem
+ accum
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/exception.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/exception.rb
new file mode 100644
index 000000000..57c856833
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/exception.rb
@@ -0,0 +1,41 @@
+module ActiveSupport
+ if RUBY_VERSION >= '1.9'
+ FrozenObjectError = RuntimeError
+ else
+ FrozenObjectError = TypeError
+ end
+end
+
+class Exception # :nodoc:
+ def clean_message
+ Pathname.clean_within message
+ end
+
+ TraceSubstitutions = []
+ FrameworkRegexp = /generated|vendor|dispatch|ruby|script\/\w+/
+
+ def clean_backtrace
+ backtrace.collect do |line|
+ Pathname.clean_within(TraceSubstitutions.inject(line) do |result, (regexp, sub)|
+ result.gsub regexp, sub
+ end)
+ end
+ end
+
+ def application_backtrace
+ before_application_frame = true
+
+ trace = clean_backtrace.reject do |line|
+ non_app_frame = (line =~ FrameworkRegexp)
+ before_application_frame = false unless non_app_frame
+ non_app_frame && ! before_application_frame
+ end
+
+ # If we didn't find any application frames, return an empty app trace.
+ before_application_frame ? [] : trace
+ end
+
+ def framework_backtrace
+ clean_backtrace.grep FrameworkRegexp
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/file.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/file.rb
new file mode 100644
index 000000000..45d93b220
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/file.rb
@@ -0,0 +1,21 @@
+require 'tempfile'
+
+# Write to a file atomically. Useful for situations where you don't
+# want other processes or threads to see half-written files.
+#
+# File.atomic_write("important.file") do |file|
+# file.write("hello")
+# end
+#
+# If your temp directory is not on the same filesystem as the file you're
+# trying to write, you can provide a different temporary directory.
+#
+# File.atomic_write("/data/something.important", "/data/tmp") do |f|
+# file.write("hello")
+# end
+def File.atomic_write(file_name, temp_dir = Dir.tmpdir)
+ temp_file = Tempfile.new(File.basename(file_name), temp_dir)
+ yield temp_file
+ temp_file.close
+ File.rename(temp_file.path, file_name)
+end \ No newline at end of file
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/float.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/float.rb
new file mode 100644
index 000000000..86862b715
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/float.rb
@@ -0,0 +1,5 @@
+require 'active_support/core_ext/float/rounding'
+
+class Float #:nodoc:
+ include ActiveSupport::CoreExtensions::Float::Rounding
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/float/rounding.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/float/rounding.rb
new file mode 100644
index 000000000..062d46683
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/float/rounding.rb
@@ -0,0 +1,24 @@
+module ActiveSupport #:nodoc:
+ module CoreExtensions #:nodoc:
+ module Float #:nodoc:
+ module Rounding
+ def self.included(base) #:nodoc:
+ base.class_eval do
+ alias_method :round_without_precision, :round
+ alias_method :round, :round_with_precision
+ end
+ end
+
+ # Rounds the float with the specified precision.
+ #
+ # x = 1.337
+ # x.round # => 1
+ # x.round(1) # => 1.3
+ # x.round(2) # => 1.34
+ def round_with_precision(precision = nil)
+ precision.nil? ? round_without_precision : (self * (10 ** precision)).round / (10 ** precision).to_f
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/hash.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/hash.rb
new file mode 100644
index 000000000..6cbd9dd37
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/hash.rb
@@ -0,0 +1,13 @@
+%w(keys indifferent_access reverse_merge conversions diff slice except).each do |ext|
+ require "active_support/core_ext/hash/#{ext}"
+end
+
+class Hash #:nodoc:
+ include ActiveSupport::CoreExtensions::Hash::Keys
+ include ActiveSupport::CoreExtensions::Hash::IndifferentAccess
+ include ActiveSupport::CoreExtensions::Hash::ReverseMerge
+ include ActiveSupport::CoreExtensions::Hash::Conversions
+ include ActiveSupport::CoreExtensions::Hash::Diff
+ include ActiveSupport::CoreExtensions::Hash::Slice
+ include ActiveSupport::CoreExtensions::Hash::Except
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/hash/conversions.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/hash/conversions.rb
new file mode 100644
index 000000000..2c606b401
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/hash/conversions.rb
@@ -0,0 +1,259 @@
+require 'date'
+require 'cgi'
+require 'builder'
+require 'xmlsimple'
+
+# Locked down XmlSimple#xml_in_string
+class XmlSimple
+ # Same as xml_in but doesn't try to smartly shoot itself in the foot.
+ def xml_in_string(string, options = nil)
+ handle_options('in', options)
+
+ @doc = parse(string)
+ result = collapse(@doc.root)
+
+ if @options['keeproot']
+ merge({}, @doc.root.name, result)
+ else
+ result
+ end
+ end
+
+ def self.xml_in_string(string, options = nil)
+ new.xml_in_string(string, options)
+ end
+end
+
+# This module exists to decorate files deserialized using Hash.from_xml with
+# the <tt>original_filename</tt> and <tt>content_type</tt> methods.
+module FileLike #:nodoc:
+ attr_writer :original_filename, :content_type
+
+ def original_filename
+ @original_filename || 'untitled'
+ end
+
+ def content_type
+ @content_type || 'application/octet-stream'
+ end
+end
+
+module ActiveSupport #:nodoc:
+ module CoreExtensions #:nodoc:
+ module Hash #:nodoc:
+ module Conversions
+
+ XML_TYPE_NAMES = {
+ "Symbol" => "symbol",
+ "Fixnum" => "integer",
+ "Bignum" => "integer",
+ "BigDecimal" => "decimal",
+ "Float" => "float",
+ "Date" => "date",
+ "DateTime" => "datetime",
+ "Time" => "datetime",
+ "TrueClass" => "boolean",
+ "FalseClass" => "boolean"
+ } unless defined?(XML_TYPE_NAMES)
+
+ XML_FORMATTING = {
+ "symbol" => Proc.new { |symbol| symbol.to_s },
+ "date" => Proc.new { |date| date.to_s(:db) },
+ "datetime" => Proc.new { |time| time.xmlschema },
+ "binary" => Proc.new { |binary| ActiveSupport::Base64.encode64(binary) },
+ "yaml" => Proc.new { |yaml| yaml.to_yaml }
+ } unless defined?(XML_FORMATTING)
+
+ # TODO: use Time.xmlschema instead of Time.parse;
+ # use regexp instead of Date.parse
+ unless defined?(XML_PARSING)
+ XML_PARSING = {
+ "symbol" => Proc.new { |symbol| symbol.to_sym },
+ "date" => Proc.new { |date| ::Date.parse(date) },
+ "datetime" => Proc.new { |time| ::Time.parse(time).utc rescue ::DateTime.parse(time).utc },
+ "integer" => Proc.new { |integer| integer.to_i },
+ "float" => Proc.new { |float| float.to_f },
+ "decimal" => Proc.new { |number| BigDecimal(number) },
+ "boolean" => Proc.new { |boolean| %w(1 true).include?(boolean.strip) },
+ "string" => Proc.new { |string| string.to_s },
+ "yaml" => Proc.new { |yaml| YAML::load(yaml) rescue yaml },
+ "base64Binary" => Proc.new { |bin| ActiveSupport::Base64.decode64(bin) },
+ "file" => Proc.new do |file, entity|
+ f = StringIO.new(ActiveSupport::Base64.decode64(file))
+ f.extend(FileLike)
+ f.original_filename = entity['name']
+ f.content_type = entity['content_type']
+ f
+ end
+ }
+
+ XML_PARSING.update(
+ "double" => XML_PARSING["float"],
+ "dateTime" => XML_PARSING["datetime"]
+ )
+ end
+
+ def self.included(klass)
+ klass.extend(ClassMethods)
+ end
+
+ # Converts a hash into a string suitable for use as a URL query string. An optional <tt>namespace</tt> can be
+ # passed to enclose the param names (see example below).
+ #
+ # ==== Example:
+ # { :name => 'David', :nationality => 'Danish' }.to_query # => "name=David&nationality=Danish"
+ #
+ # { :name => 'David', :nationality => 'Danish' }.to_query('user') # => "user%5Bname%5D=David&user%5Bnationality%5D=Danish"
+ def to_query(namespace = nil)
+ collect do |key, value|
+ value.to_query(namespace ? "#{namespace}[#{key}]" : key)
+ end.sort * '&'
+ end
+
+ alias_method :to_param, :to_query
+
+ def to_xml(options = {})
+ options[:indent] ||= 2
+ options.reverse_merge!({ :builder => Builder::XmlMarkup.new(:indent => options[:indent]),
+ :root => "hash" })
+ options[:builder].instruct! unless options.delete(:skip_instruct)
+ dasherize = !options.has_key?(:dasherize) || options[:dasherize]
+ root = dasherize ? options[:root].to_s.dasherize : options[:root].to_s
+
+ options[:builder].__send__(:method_missing, root) do
+ each do |key, value|
+ case value
+ when ::Hash
+ value.to_xml(options.merge({ :root => key, :skip_instruct => true }))
+ when ::Array
+ value.to_xml(options.merge({ :root => key, :children => key.to_s.singularize, :skip_instruct => true}))
+ when ::Method, ::Proc
+ # If the Method or Proc takes two arguments, then
+ # pass the suggested child element name. This is
+ # used if the Method or Proc will be operating over
+ # multiple records and needs to create an containing
+ # element that will contain the objects being
+ # serialized.
+ if 1 == value.arity
+ value.call(options.merge({ :root => key, :skip_instruct => true }))
+ else
+ value.call(options.merge({ :root => key, :skip_instruct => true }), key.to_s.singularize)
+ end
+ else
+ if value.respond_to?(:to_xml)
+ value.to_xml(options.merge({ :root => key, :skip_instruct => true }))
+ else
+ type_name = XML_TYPE_NAMES[value.class.name]
+
+ key = dasherize ? key.to_s.dasherize : key.to_s
+
+ attributes = options[:skip_types] || value.nil? || type_name.nil? ? { } : { :type => type_name }
+ if value.nil?
+ attributes[:nil] = true
+ end
+
+ options[:builder].tag!(key,
+ XML_FORMATTING[type_name] ? XML_FORMATTING[type_name].call(value) : value,
+ attributes
+ )
+ end
+ end
+ end
+
+ yield options[:builder] if block_given?
+ end
+
+ end
+
+ module ClassMethods
+ def from_xml(xml)
+ # TODO: Refactor this into something much cleaner that doesn't rely on XmlSimple
+ typecast_xml_value(undasherize_keys(XmlSimple.xml_in_string(xml,
+ 'forcearray' => false,
+ 'forcecontent' => true,
+ 'keeproot' => true,
+ 'contentkey' => '__content__')
+ ))
+ end
+
+ private
+ def typecast_xml_value(value)
+ case value.class.to_s
+ when 'Hash'
+ if value['type'] == 'array'
+ child_key, entries = value.detect { |k,v| k != 'type' } # child_key is throwaway
+ if entries.nil? || (c = value['__content__'] && c.blank?)
+ []
+ else
+ case entries.class.to_s # something weird with classes not matching here. maybe singleton methods breaking is_a?
+ when "Array"
+ entries.collect { |v| typecast_xml_value(v) }
+ when "Hash"
+ [typecast_xml_value(entries)]
+ else
+ raise "can't typecast #{entries.inspect}"
+ end
+ end
+ elsif value.has_key?("__content__")
+ content = value["__content__"]
+ if parser = XML_PARSING[value["type"]]
+ if parser.arity == 2
+ XML_PARSING[value["type"]].call(content, value)
+ else
+ XML_PARSING[value["type"]].call(content)
+ end
+ else
+ content
+ end
+ elsif value['type'] == 'string' && value['nil'] != 'true'
+ ""
+ # blank or nil parsed values are represented by nil
+ elsif value.blank? || value['nil'] == 'true'
+ nil
+ # If the type is the only element which makes it then
+ # this still makes the value nil, except if type is
+ # a XML node(where type['value'] is a Hash)
+ elsif value['type'] && value.size == 1 && !value['type'].is_a?(::Hash)
+ nil
+ else
+ xml_value = value.inject({}) do |h,(k,v)|
+ h[k] = typecast_xml_value(v)
+ h
+ end
+
+ # Turn { :files => { :file => #<StringIO> } into { :files => #<StringIO> } so it is compatible with
+ # how multipart uploaded files from HTML appear
+ xml_value["file"].is_a?(StringIO) ? xml_value["file"] : xml_value
+ end
+ when 'Array'
+ value.map! { |i| typecast_xml_value(i) }
+ case value.length
+ when 0 then nil
+ when 1 then value.first
+ else value
+ end
+ when 'String'
+ value
+ else
+ raise "can't typecast #{value.class.name} - #{value.inspect}"
+ end
+ end
+
+ def undasherize_keys(params)
+ case params.class.to_s
+ when "Hash"
+ params.inject({}) do |h,(k,v)|
+ h[k.to_s.tr("-", "_")] = undasherize_keys(v)
+ h
+ end
+ when "Array"
+ params.map { |v| undasherize_keys(v) }
+ else
+ params
+ end
+ end
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/hash/diff.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/hash/diff.rb
new file mode 100644
index 000000000..6abd67882
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/hash/diff.rb
@@ -0,0 +1,19 @@
+module ActiveSupport #:nodoc:
+ module CoreExtensions #:nodoc:
+ module Hash #:nodoc:
+ module Diff
+ # Returns a hash that represents the difference between two hashes.
+ #
+ # Examples:
+ #
+ # {1 => 2}.diff(1 => 2) # => {}
+ # {1 => 2}.diff(1 => 3) # => {1 => 2}
+ # {}.diff(1 => 2) # => {1 => 2}
+ # {1 => 2, 3 => 4}.diff(1 => 2) # => {3 => 4}
+ def diff(h2)
+ self.dup.delete_if { |k, v| h2[k] == v }.merge(h2.dup.delete_if { |k, v| self.has_key?(k) })
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/hash/except.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/hash/except.rb
new file mode 100644
index 000000000..8362cd880
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/hash/except.rb
@@ -0,0 +1,24 @@
+require 'set'
+
+module ActiveSupport #:nodoc:
+ module CoreExtensions #:nodoc:
+ module Hash #:nodoc:
+ # Return a hash that includes everything but the given keys. This is useful for
+ # limiting a set of parameters to everything but a few known toggles:
+ #
+ # @person.update_attributes(params[:person].except(:admin))
+ module Except
+ # Returns a new hash without the given keys.
+ def except(*keys)
+ rejected = Set.new(respond_to?(:convert_key) ? keys.map { |key| convert_key(key) } : keys)
+ reject { |key,| rejected.include?(key) }
+ end
+
+ # Replaces the hash without only the given keys.
+ def except!(*keys)
+ replace(except(*keys))
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/hash/indifferent_access.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/hash/indifferent_access.rb
new file mode 100644
index 000000000..c96c5160b
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/hash/indifferent_access.rb
@@ -0,0 +1,137 @@
+# This class has dubious semantics and we only have it so that
+# people can write params[:key] instead of params['key']
+# and they get the same value for both keys.
+
+class HashWithIndifferentAccess < Hash
+ def initialize(constructor = {})
+ if constructor.is_a?(Hash)
+ super()
+ update(constructor)
+ else
+ super(constructor)
+ end
+ end
+
+ def default(key = nil)
+ if key.is_a?(Symbol) && include?(key = key.to_s)
+ self[key]
+ else
+ super
+ end
+ end
+
+ alias_method :regular_writer, :[]= unless method_defined?(:regular_writer)
+ alias_method :regular_update, :update unless method_defined?(:regular_update)
+
+ # Assigns a new value to the hash:
+ #
+ # hash = HashWithIndifferentAccess.new
+ # hash[:key] = "value"
+ #
+ def []=(key, value)
+ regular_writer(convert_key(key), convert_value(value))
+ end
+
+ # Updates the instantized hash with values from the second:
+ #
+ # hash_1 = HashWithIndifferentAccess.new
+ # hash_1[:key] = "value"
+ #
+ # hash_2 = HashWithIndifferentAccess.new
+ # hash_2[:key] = "New Value!"
+ #
+ # hash_1.update(hash_2) # => {"key"=>"New Value!"}
+ #
+ def update(other_hash)
+ other_hash.each_pair { |key, value| regular_writer(convert_key(key), convert_value(value)) }
+ self
+ end
+
+ alias_method :merge!, :update
+
+ # Checks the hash for a key matching the argument passed in:
+ #
+ # hash = HashWithIndifferentAccess.new
+ # hash["key"] = "value"
+ # hash.key? :key # => true
+ # hash.key? "key" # => true
+ #
+ def key?(key)
+ super(convert_key(key))
+ end
+
+ alias_method :include?, :key?
+ alias_method :has_key?, :key?
+ alias_method :member?, :key?
+
+ # Fetches the value for the specified key, same as doing hash[key]
+ def fetch(key, *extras)
+ super(convert_key(key), *extras)
+ end
+
+ # Returns an array of the values at the specified indices:
+ #
+ # hash = HashWithIndifferentAccess.new
+ # hash[:a] = "x"
+ # hash[:b] = "y"
+ # hash.values_at("a", "b") # => ["x", "y"]
+ #
+ def values_at(*indices)
+ indices.collect {|key| self[convert_key(key)]}
+ end
+
+ # Returns an exact copy of the hash.
+ def dup
+ HashWithIndifferentAccess.new(self)
+ end
+
+ # Merges the instantized and the specified hashes together, giving precedence to the values from the second hash
+ # Does not overwrite the existing hash.
+ def merge(hash)
+ self.dup.update(hash)
+ end
+
+ # Removes a specified key from the hash.
+ def delete(key)
+ super(convert_key(key))
+ end
+
+ def stringify_keys!; self end
+ def symbolize_keys!; self end
+ def to_options!; self end
+
+ # Convert to a Hash with String keys.
+ def to_hash
+ Hash.new(default).merge(self)
+ end
+
+ protected
+ def convert_key(key)
+ key.kind_of?(Symbol) ? key.to_s : key
+ end
+
+ def convert_value(value)
+ case value
+ when Hash
+ value.with_indifferent_access
+ when Array
+ value.collect { |e| e.is_a?(Hash) ? e.with_indifferent_access : e }
+ else
+ value
+ end
+ end
+end
+
+module ActiveSupport #:nodoc:
+ module CoreExtensions #:nodoc:
+ module Hash #:nodoc:
+ module IndifferentAccess #:nodoc:
+ def with_indifferent_access
+ hash = HashWithIndifferentAccess.new(self)
+ hash.default = self.default
+ hash
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/hash/keys.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/hash/keys.rb
new file mode 100644
index 000000000..7312bcb41
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/hash/keys.rb
@@ -0,0 +1,52 @@
+module ActiveSupport #:nodoc:
+ module CoreExtensions #:nodoc:
+ module Hash #:nodoc:
+ module Keys
+ # Return a new hash with all keys converted to strings.
+ def stringify_keys
+ inject({}) do |options, (key, value)|
+ options[key.to_s] = value
+ options
+ end
+ end
+
+ # Destructively convert all keys to strings.
+ def stringify_keys!
+ keys.each do |key|
+ self[key.to_s] = delete(key)
+ end
+ self
+ end
+
+ # Return a new hash with all keys converted to symbols.
+ def symbolize_keys
+ inject({}) do |options, (key, value)|
+ options[(key.to_sym rescue key) || key] = value
+ options
+ end
+ end
+
+ # Destructively convert all keys to symbols.
+ def symbolize_keys!
+ self.replace(self.symbolize_keys)
+ end
+
+ alias_method :to_options, :symbolize_keys
+ alias_method :to_options!, :symbolize_keys!
+
+ # Validate all keys in a hash match *valid keys, raising ArgumentError on a mismatch.
+ # Note that keys are NOT treated indifferently, meaning if you use strings for keys but assert symbols
+ # as keys, this will fail.
+ #
+ # ==== Examples:
+ # { :name => "Rob", :years => "28" }.assert_valid_keys(:name, :age) # => raises "ArgumentError: Unknown key(s): years"
+ # { :name => "Rob", :age => "28" }.assert_valid_keys("name", "age") # => raises "ArgumentError: Unknown key(s): name, age"
+ # { :name => "Rob", :age => "28" }.assert_valid_keys(:name, :age) # => passes, raises nothing
+ def assert_valid_keys(*valid_keys)
+ unknown_keys = keys - [valid_keys].flatten
+ raise(ArgumentError, "Unknown key(s): #{unknown_keys.join(", ")}") unless unknown_keys.empty?
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/hash/reverse_merge.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/hash/reverse_merge.rb
new file mode 100644
index 000000000..7af10846e
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/hash/reverse_merge.rb
@@ -0,0 +1,28 @@
+module ActiveSupport #:nodoc:
+ module CoreExtensions #:nodoc:
+ module Hash #:nodoc:
+ # Allows for reverse merging where its the keys in the calling hash that wins over those in the <tt>other_hash</tt>.
+ # This is particularly useful for initializing an incoming option hash with default values:
+ #
+ # def setup(options = {})
+ # options.reverse_merge! :size => 25, :velocity => 10
+ # end
+ #
+ # The default <tt>:size</tt> and <tt>:velocity</tt> is only set if the +options+ passed in doesn't already have those keys set.
+ module ReverseMerge
+ # Performs the opposite of merge, with the keys and values from the first hash taking precedence over the second.
+ def reverse_merge(other_hash)
+ other_hash.merge(self)
+ end
+
+ # Performs the opposite of merge, with the keys and values from the first hash taking precedence over the second.
+ # Modifies the receiver in place.
+ def reverse_merge!(other_hash)
+ replace(reverse_merge(other_hash))
+ end
+
+ alias_method :reverse_update, :reverse_merge!
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/hash/slice.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/hash/slice.rb
new file mode 100644
index 000000000..6fe5e0533
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/hash/slice.rb
@@ -0,0 +1,28 @@
+require 'set'
+
+module ActiveSupport #:nodoc:
+ module CoreExtensions #:nodoc:
+ module Hash #:nodoc:
+ # Slice a hash to include only the given keys. This is useful for
+ # limiting an options hash to valid keys before passing to a method:
+ #
+ # def search(criteria = {})
+ # assert_valid_keys(:mass, :velocity, :time)
+ # end
+ #
+ # search(options.slice(:mass, :velocity, :time))
+ module Slice
+ # Returns a new hash with only the given keys.
+ def slice(*keys)
+ allowed = Set.new(respond_to?(:convert_key) ? keys.map { |key| convert_key(key) } : keys)
+ reject { |key,| !allowed.include?(key) }
+ end
+
+ # Replaces the hash with only the given keys.
+ def slice!(*keys)
+ replace(slice(*keys))
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/integer.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/integer.rb
new file mode 100644
index 000000000..d1e6d76ac
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/integer.rb
@@ -0,0 +1,7 @@
+require 'active_support/core_ext/integer/even_odd'
+require 'active_support/core_ext/integer/inflections'
+
+class Integer #:nodoc:
+ include ActiveSupport::CoreExtensions::Integer::EvenOdd
+ include ActiveSupport::CoreExtensions::Integer::Inflections
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/integer/even_odd.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/integer/even_odd.rb
new file mode 100644
index 000000000..b1d1e2806
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/integer/even_odd.rb
@@ -0,0 +1,29 @@
+module ActiveSupport #:nodoc:
+ module CoreExtensions #:nodoc:
+ module Integer #:nodoc:
+ # For checking if a fixnum is even or odd.
+ #
+ # 2.even? # => true
+ # 2.odd? # => false
+ # 1.even? # => false
+ # 1.odd? # => true
+ # 0.even? # => true
+ # 0.odd? # => false
+ # -1.even? # => false
+ # -1.odd? # => true
+ module EvenOdd
+ def multiple_of?(number)
+ self % number == 0
+ end
+
+ def even?
+ multiple_of? 2
+ end if RUBY_VERSION < '1.9'
+
+ def odd?
+ !even?
+ end if RUBY_VERSION < '1.9'
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/integer/inflections.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/integer/inflections.rb
new file mode 100644
index 000000000..804702beb
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/integer/inflections.rb
@@ -0,0 +1,20 @@
+require 'active_support/inflector'
+
+module ActiveSupport #:nodoc:
+ module CoreExtensions #:nodoc:
+ module Integer #:nodoc:
+ module Inflections
+ # Ordinalize turns a number into an ordinal string used to denote the
+ # position in an ordered sequence such as 1st, 2nd, 3rd, 4th.
+ #
+ # 1.ordinalize # => "1st"
+ # 2.ordinalize # => "2nd"
+ # 1002.ordinalize # => "1002nd"
+ # 1003.ordinalize # => "1003rd"
+ def ordinalize
+ Inflector.ordinalize(self)
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/kernel.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/kernel.rb
new file mode 100644
index 000000000..1922d804b
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/kernel.rb
@@ -0,0 +1,5 @@
+require 'active_support/core_ext/kernel/daemonizing'
+require 'active_support/core_ext/kernel/reporting'
+require 'active_support/core_ext/kernel/agnostics'
+require 'active_support/core_ext/kernel/requires'
+require 'active_support/core_ext/kernel/debugger'
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/kernel/agnostics.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/kernel/agnostics.rb
new file mode 100644
index 000000000..c0cb4fb42
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/kernel/agnostics.rb
@@ -0,0 +1,11 @@
+class Object
+ # Makes backticks behave (somewhat more) similarly on all platforms.
+ # On win32 `nonexistent_command` raises Errno::ENOENT; on Unix, the
+ # spawned shell prints a message to stderr and sets $?. We emulate
+ # Unix on the former but not the latter.
+ def `(command) #:nodoc:
+ super
+ rescue Errno::ENOENT => e
+ STDERR.puts "#$0: #{e}"
+ end
+end \ No newline at end of file
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/kernel/daemonizing.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/kernel/daemonizing.rb
new file mode 100644
index 000000000..ed9d1f9bf
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/kernel/daemonizing.rb
@@ -0,0 +1,7 @@
+module Kernel
+ # Turns the current script into a daemon process that detaches from the console.
+ # It can be shut down with a TERM signal.
+ def daemonize
+ Process.daemon
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/kernel/debugger.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/kernel/debugger.rb
new file mode 100644
index 000000000..c74d6cf88
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/kernel/debugger.rb
@@ -0,0 +1,13 @@
+module Kernel
+ unless respond_to?(:debugger)
+ # Starts a debugging session if ruby-debug has been loaded (call script/server --debugger to do load it).
+ def debugger
+ RAILS_DEFAULT_LOGGER.info "\n***** Debugger requested, but was not available: Start server with --debugger to enable *****\n"
+ end
+ end
+
+ def breakpoint
+ RAILS_DEFAULT_LOGGER.info "\n***** The 'breakpoint' command has been renamed 'debugger' -- please change *****\n"
+ debugger
+ end
+end \ No newline at end of file
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/kernel/reporting.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/kernel/reporting.rb
new file mode 100644
index 000000000..0f101e8fa
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/kernel/reporting.rb
@@ -0,0 +1,59 @@
+module Kernel
+ # Sets $VERBOSE to nil for the duration of the block and back to its original value afterwards.
+ #
+ # silence_warnings do
+ # value = noisy_call # no warning voiced
+ # end
+ #
+ # noisy_call # warning voiced
+ def silence_warnings
+ old_verbose, $VERBOSE = $VERBOSE, nil
+ yield
+ ensure
+ $VERBOSE = old_verbose
+ end
+
+ # Sets $VERBOSE to true for the duration of the block and back to its original value afterwards.
+ def enable_warnings
+ old_verbose, $VERBOSE = $VERBOSE, true
+ yield
+ ensure
+ $VERBOSE = old_verbose
+ end
+
+ # For compatibility
+ def silence_stderr #:nodoc:
+ silence_stream(STDERR) { yield }
+ end
+
+ # Silences any stream for the duration of the block.
+ #
+ # silence_stream(STDOUT) do
+ # puts 'This will never be seen'
+ # end
+ #
+ # puts 'But this will'
+ def silence_stream(stream)
+ old_stream = stream.dup
+ stream.reopen(RUBY_PLATFORM =~ /mswin/ ? 'NUL:' : '/dev/null')
+ stream.sync = true
+ yield
+ ensure
+ stream.reopen(old_stream)
+ end
+
+ # Blocks and ignores any exception passed as argument if raised within the block.
+ #
+ # suppress(ZeroDivisionError) do
+ # 1/0
+ # puts "This code is NOT reached"
+ # end
+ #
+ # puts "This code gets executed and nothing related to ZeroDivisionError was seen"
+ def suppress(*exception_classes)
+ begin yield
+ rescue Exception => e
+ raise unless exception_classes.any? { |cls| e.kind_of?(cls) }
+ end
+ end
+end \ No newline at end of file
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/kernel/requires.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/kernel/requires.rb
new file mode 100644
index 000000000..323fea49f
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/kernel/requires.rb
@@ -0,0 +1,24 @@
+module Kernel
+ # Require a library with fallback to RubyGems. Warnings during library
+ # loading are silenced to increase signal/noise for application warnings.
+ def require_library_or_gem(library_name)
+ silence_warnings do
+ begin
+ require library_name
+ rescue LoadError => cannot_require
+ # 1. Requiring the module is unsuccessful, maybe it's a gem and nobody required rubygems yet. Try.
+ begin
+ require 'rubygems'
+ rescue LoadError => rubygems_not_installed
+ raise cannot_require
+ end
+ # 2. Rubygems is installed and loaded. Try to load the library again
+ begin
+ require library_name
+ rescue LoadError => gem_not_installed
+ raise cannot_require
+ end
+ end
+ end
+ end
+end \ No newline at end of file
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/load_error.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/load_error.rb
new file mode 100644
index 000000000..6165e9544
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/load_error.rb
@@ -0,0 +1,38 @@
+class MissingSourceFile < LoadError #:nodoc:
+ attr_reader :path
+ def initialize(message, path)
+ super(message)
+ @path = path
+ end
+
+ def is_missing?(path)
+ path.gsub(/\.rb$/, '') == self.path.gsub(/\.rb$/, '')
+ end
+
+ def self.from_message(message)
+ REGEXPS.each do |regexp, capture|
+ match = regexp.match(message)
+ return MissingSourceFile.new(message, match[capture]) unless match.nil?
+ end
+ nil
+ end
+
+ REGEXPS = [
+ [/^no such file to load -- (.+)$/i, 1],
+ [/^Missing \w+ (file\s*)?([^\s]+.rb)$/i, 2],
+ [/^Missing API definition file in (.+)$/i, 1]
+ ] unless defined?(REGEXPS)
+end
+
+module ActiveSupport #:nodoc:
+ module CoreExtensions #:nodoc:
+ module LoadErrorExtensions #:nodoc:
+ module LoadErrorClassMethods #:nodoc:
+ def new(*args)
+ (self == LoadError && MissingSourceFile.from_message(args.first)) || super
+ end
+ end
+ ::LoadError.extend(LoadErrorClassMethods)
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/logger.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/logger.rb
new file mode 100644
index 000000000..9c1fd274a
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/logger.rb
@@ -0,0 +1,16 @@
+# Adds the 'around_level' method to Logger.
+
+class Logger
+ def self.define_around_helper(level)
+ module_eval <<-end_eval
+ def around_#{level}(before_message, after_message, &block)
+ self.#{level}(before_message)
+ return_value = block.call(self)
+ self.#{level}(after_message)
+ return return_value
+ end
+ end_eval
+ end
+ [:debug, :info, :error, :fatal].each {|level| define_around_helper(level) }
+
+end \ No newline at end of file
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/module.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/module.rb
new file mode 100644
index 000000000..da8d5b376
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/module.rb
@@ -0,0 +1,8 @@
+require 'active_support/core_ext/module/inclusion'
+require 'active_support/core_ext/module/attribute_accessors'
+require 'active_support/core_ext/module/attr_internal'
+require 'active_support/core_ext/module/attr_accessor_with_default'
+require 'active_support/core_ext/module/delegation'
+require 'active_support/core_ext/module/introspection'
+require 'active_support/core_ext/module/loading'
+require 'active_support/core_ext/module/aliasing'
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/module/aliasing.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/module/aliasing.rb
new file mode 100644
index 000000000..1894e3b0a
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/module/aliasing.rb
@@ -0,0 +1,70 @@
+class Module
+ # Encapsulates the common pattern of:
+ #
+ # alias_method :foo_without_feature, :foo
+ # alias_method :foo, :foo_with_feature
+ #
+ # With this, you simply do:
+ #
+ # alias_method_chain :foo, :feature
+ #
+ # And both aliases are set up for you.
+ #
+ # Query and bang methods (foo?, foo!) keep the same punctuation:
+ #
+ # alias_method_chain :foo?, :feature
+ #
+ # is equivalent to
+ #
+ # alias_method :foo_without_feature?, :foo?
+ # alias_method :foo?, :foo_with_feature?
+ #
+ # so you can safely chain foo, foo?, and foo! with the same feature.
+ def alias_method_chain(target, feature)
+ # Strip out punctuation on predicates or bang methods since
+ # e.g. target?_without_feature is not a valid method name.
+ aliased_target, punctuation = target.to_s.sub(/([?!=])$/, ''), $1
+ yield(aliased_target, punctuation) if block_given?
+
+ with_method, without_method = "#{aliased_target}_with_#{feature}#{punctuation}", "#{aliased_target}_without_#{feature}#{punctuation}"
+
+ alias_method without_method, target
+ alias_method target, with_method
+
+ case
+ when public_method_defined?(without_method)
+ public target
+ when protected_method_defined?(without_method)
+ protected target
+ when private_method_defined?(without_method)
+ private target
+ end
+ end
+
+ # Allows you to make aliases for attributes, which includes
+ # getter, setter, and query methods.
+ #
+ # Example:
+ #
+ # class Content < ActiveRecord::Base
+ # # has a title attribute
+ # end
+ #
+ # class Email < Content
+ # alias_attribute :subject, :title
+ # end
+ #
+ # e = Email.find(1)
+ # e.title # => "Superstars"
+ # e.subject # => "Superstars"
+ # e.subject? # => true
+ # e.subject = "Megastars"
+ # e.title # => "Megastars"
+ def alias_attribute(new_name, old_name)
+ module_eval <<-STR, __FILE__, __LINE__+1
+ def #{new_name}; self.#{old_name}; end
+ def #{new_name}?; self.#{old_name}?; end
+ def #{new_name}=(v); self.#{old_name} = v; end
+ STR
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/module/attr_accessor_with_default.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/module/attr_accessor_with_default.rb
new file mode 100644
index 000000000..683789d85
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/module/attr_accessor_with_default.rb
@@ -0,0 +1,31 @@
+class Module
+ # Declare an attribute accessor with an initial default return value.
+ #
+ # To give attribute <tt>:age</tt> the initial value <tt>25</tt>:
+ #
+ # class Person
+ # attr_accessor_with_default :age, 25
+ # end
+ #
+ # some_person.age
+ # => 25
+ # some_person.age = 26
+ # some_person.age
+ # => 26
+ #
+ # To give attribute <tt>:element_name</tt> a dynamic default value, evaluated
+ # in scope of self:
+ #
+ # attr_accessor_with_default(:element_name) { name.underscore }
+ #
+ def attr_accessor_with_default(sym, default = nil, &block)
+ raise 'Default value or block required' unless !default.nil? || block
+ define_method(sym, block_given? ? block : Proc.new { default })
+ module_eval(<<-EVAL, __FILE__, __LINE__)
+ def #{sym}=(value)
+ class << self; attr_reader :#{sym} end
+ @#{sym} = value
+ end
+ EVAL
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/module/attr_internal.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/module/attr_internal.rb
new file mode 100644
index 000000000..b66c0d750
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/module/attr_internal.rb
@@ -0,0 +1,32 @@
+class Module
+ # Declares an attribute reader backed by an internally-named instance variable.
+ def attr_internal_reader(*attrs)
+ attrs.each do |attr|
+ module_eval "def #{attr}() #{attr_internal_ivar_name(attr)} end"
+ end
+ end
+
+ # Declares an attribute writer backed by an internally-named instance variable.
+ def attr_internal_writer(*attrs)
+ attrs.each do |attr|
+ module_eval "def #{attr}=(v) #{attr_internal_ivar_name(attr)} = v end"
+ end
+ end
+
+ # Declares an attribute reader and writer backed by an internally-named instance
+ # variable.
+ def attr_internal_accessor(*attrs)
+ attr_internal_reader(*attrs)
+ attr_internal_writer(*attrs)
+ end
+
+ alias_method :attr_internal, :attr_internal_accessor
+
+ private
+ mattr_accessor :attr_internal_naming_format
+ self.attr_internal_naming_format = '@_%s'
+
+ def attr_internal_ivar_name(attr)
+ attr_internal_naming_format % attr
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/module/attribute_accessors.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/module/attribute_accessors.rb
new file mode 100644
index 000000000..51e1c9af9
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/module/attribute_accessors.rb
@@ -0,0 +1,58 @@
+# Extends the module object with module and instance accessors for class attributes,
+# just like the native attr* accessors for instance attributes.
+#
+# module AppConfiguration
+# mattr_accessor :google_api_key
+# self.google_api_key = "123456789"
+#
+# mattr_accessor :paypal_url
+# self.paypal_url = "www.sandbox.paypal.com"
+# end
+#
+# AppConfiguration.google_api_key = "overriding the api key!"
+class Module
+ def mattr_reader(*syms)
+ syms.each do |sym|
+ next if sym.is_a?(Hash)
+ class_eval(<<-EOS, __FILE__, __LINE__)
+ unless defined? @@#{sym}
+ @@#{sym} = nil
+ end
+
+ def self.#{sym}
+ @@#{sym}
+ end
+
+ def #{sym}
+ @@#{sym}
+ end
+ EOS
+ end
+ end
+
+ def mattr_writer(*syms)
+ options = syms.extract_options!
+ syms.each do |sym|
+ class_eval(<<-EOS, __FILE__, __LINE__)
+ unless defined? @@#{sym}
+ @@#{sym} = nil
+ end
+
+ def self.#{sym}=(obj)
+ @@#{sym} = obj
+ end
+
+ #{"
+ def #{sym}=(obj)
+ @@#{sym} = obj
+ end
+ " unless options[:instance_writer] == false }
+ EOS
+ end
+ end
+
+ def mattr_accessor(*syms)
+ mattr_reader(*syms)
+ mattr_writer(*syms)
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/module/delegation.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/module/delegation.rb
new file mode 100644
index 000000000..e0b5f3e37
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/module/delegation.rb
@@ -0,0 +1,64 @@
+class Module
+ # Provides a delegate class method to easily expose contained objects' methods
+ # as your own. Pass one or more methods (specified as symbols or strings)
+ # and the name of the target object as the final <tt>:to</tt> option (also a symbol
+ # or string). At least one method and the <tt>:to</tt> option are required.
+ #
+ # Delegation is particularly useful with Active Record associations:
+ #
+ # class Greeter < ActiveRecord::Base
+ # def hello() "hello" end
+ # def goodbye() "goodbye" end
+ # end
+ #
+ # class Foo < ActiveRecord::Base
+ # belongs_to :greeter
+ # delegate :hello, :to => :greeter
+ # end
+ #
+ # Foo.new.hello # => "hello"
+ # Foo.new.goodbye # => NoMethodError: undefined method `goodbye' for #<Foo:0x1af30c>
+ #
+ # Multiple delegates to the same target are allowed:
+ #
+ # class Foo < ActiveRecord::Base
+ # belongs_to :greeter
+ # delegate :hello, :goodbye, :to => :greeter
+ # end
+ #
+ # Foo.new.goodbye # => "goodbye"
+ #
+ # Methods can be delegated to instance variables, class variables, or constants
+ # by providing them as a symbols:
+ #
+ # class Foo
+ # CONSTANT_ARRAY = [0,1,2,3]
+ # @@class_array = [4,5,6,7]
+ #
+ # def initialize
+ # @instance_array = [8,9,10,11]
+ # end
+ # delegate :sum, :to => :CONSTANT_ARRAY
+ # delegate :min, :to => :@@class_array
+ # delegate :max, :to => :@instance_array
+ # end
+ #
+ # Foo.new.sum # => 6
+ # Foo.new.min # => 4
+ # Foo.new.max # => 11
+ #
+ def delegate(*methods)
+ options = methods.pop
+ unless options.is_a?(Hash) && to = options[:to]
+ raise ArgumentError, "Delegation needs a target. Supply an options hash with a :to key as the last argument (e.g. delegate :hello, :to => :greeter)."
+ end
+
+ methods.each do |method|
+ module_eval(<<-EOS, "(__DELEGATION__)", 1)
+ def #{method}(*args, &block)
+ #{to}.__send__(#{method.inspect}, *args, &block)
+ end
+ EOS
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/module/inclusion.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/module/inclusion.rb
new file mode 100644
index 000000000..4f2384164
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/module/inclusion.rb
@@ -0,0 +1,30 @@
+class Module
+ # Returns the classes in the current ObjectSpace where this module has been
+ # mixed in according to Module#included_modules.
+ #
+ # module M
+ # end
+ #
+ # module N
+ # include M
+ # end
+ #
+ # class C
+ # include M
+ # end
+ #
+ # class D < C
+ # end
+ #
+ # p M.included_in_classes # => [C, D]
+ #
+ def included_in_classes
+ classes = []
+ ObjectSpace.each_object(Class) { |k| classes << k if k.included_modules.include?(self) }
+
+ classes.reverse.inject([]) do |unique_classes, klass|
+ unique_classes << klass unless unique_classes.collect { |k| k.to_s }.include?(klass.to_s)
+ unique_classes
+ end
+ end
+end \ No newline at end of file
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/module/introspection.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/module/introspection.rb
new file mode 100644
index 000000000..40bbebb7c
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/module/introspection.rb
@@ -0,0 +1,75 @@
+class Module
+ # Returns the module which contains this one according to its name.
+ #
+ # module M
+ # module N
+ # end
+ # end
+ # X = M::N
+ #
+ # p M::N.parent # => M
+ # p X.parent # => M
+ #
+ # The parent of top-level and anonymous modules is Object.
+ #
+ # p M.parent # => Object
+ # p Module.new.parent # => Object
+ #
+ def parent
+ parent_name = name.split('::')[0..-2] * '::'
+ parent_name.empty? ? Object : parent_name.constantize
+ end
+
+ # Returns all the parents of this module according to its name, ordered from
+ # nested outwards. The receiver is not contained within the result.
+ #
+ # module M
+ # module N
+ # end
+ # end
+ # X = M::N
+ #
+ # p M.parents # => [Object]
+ # p M::N.parents # => [M, Object]
+ # p X.parents # => [M, Object]
+ #
+ def parents
+ parents = []
+ parts = name.split('::')[0..-2]
+ until parts.empty?
+ parents << (parts * '::').constantize
+ parts.pop
+ end
+ parents << Object unless parents.include? Object
+ parents
+ end
+
+ if RUBY_VERSION < '1.9'
+ # Returns the constants that have been defined locally by this object and
+ # not in an ancestor. This method is exact if running under Ruby 1.9. In
+ # previous versions it may miss some constants if their definition in some
+ # ancestor is identical to their definition in the receiver.
+ def local_constants
+ inherited = {}
+
+ ancestors.each do |anc|
+ next if anc == self
+ anc.constants.each { |const| inherited[const] = anc.const_get(const) }
+ end
+
+ constants.select do |const|
+ !inherited.key?(const) || inherited[const].object_id != const_get(const).object_id
+ end
+ end
+ else
+ def local_constants #:nodoc:
+ constants(false)
+ end
+ end
+
+ # Returns the names of the constants defined locally rather than the
+ # constants themselves. See <tt>local_constants</tt>.
+ def local_constant_names
+ local_constants.map(&:to_s)
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/module/loading.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/module/loading.rb
new file mode 100644
index 000000000..4b4b110b2
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/module/loading.rb
@@ -0,0 +1,23 @@
+class Module
+ # Returns String#underscore applied to the module name minus trailing classes.
+ #
+ # ActiveRecord.as_load_path # => "active_record"
+ # ActiveRecord::Associations.as_load_path # => "active_record/associations"
+ # ActiveRecord::Base.as_load_path # => "active_record" (Base is a class)
+ #
+ # The Kernel module gives an empty string by definition.
+ #
+ # Kernel.as_load_path # => ""
+ # Math.as_load_path # => "math"
+ def as_load_path
+ if self == Object || self == Kernel
+ ''
+ elsif is_a? Class
+ parent == self ? '' : parent.as_load_path
+ else
+ name.split('::').collect do |word|
+ word.underscore
+ end * '/'
+ end
+ end
+end \ No newline at end of file
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/name_error.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/name_error.rb
new file mode 100644
index 000000000..49176c12d
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/name_error.rb
@@ -0,0 +1,17 @@
+# Add a +missing_name+ method to NameError instances.
+class NameError #:nodoc:
+ # Add a method to obtain the missing name from a NameError.
+ def missing_name
+ $1 if /((::)?([A-Z]\w*)(::[A-Z]\w*)*)$/ =~ message
+ end
+
+ # Was this exception raised because the given name was missing?
+ def missing_name?(name)
+ if name.is_a? Symbol
+ last_name = (missing_name || '').split('::').last
+ last_name == name.to_s
+ else
+ missing_name == name.to_s
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/numeric.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/numeric.rb
new file mode 100644
index 000000000..759b86b81
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/numeric.rb
@@ -0,0 +1,9 @@
+require 'active_support/core_ext/numeric/time'
+require 'active_support/core_ext/numeric/bytes'
+require 'active_support/core_ext/numeric/conversions'
+
+class Numeric #:nodoc:
+ include ActiveSupport::CoreExtensions::Numeric::Time
+ include ActiveSupport::CoreExtensions::Numeric::Bytes
+ include ActiveSupport::CoreExtensions::Numeric::Conversions
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/numeric/bytes.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/numeric/bytes.rb
new file mode 100644
index 000000000..56477673a
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/numeric/bytes.rb
@@ -0,0 +1,44 @@
+module ActiveSupport #:nodoc:
+ module CoreExtensions #:nodoc:
+ module Numeric #:nodoc:
+ # Enables the use of byte calculations and declarations, like 45.bytes + 2.6.megabytes
+ module Bytes
+ def bytes
+ self
+ end
+ alias :byte :bytes
+
+ def kilobytes
+ self * 1024
+ end
+ alias :kilobyte :kilobytes
+
+ def megabytes
+ self * 1024.kilobytes
+ end
+ alias :megabyte :megabytes
+
+ def gigabytes
+ self * 1024.megabytes
+ end
+ alias :gigabyte :gigabytes
+
+ def terabytes
+ self * 1024.gigabytes
+ end
+ alias :terabyte :terabytes
+
+ def petabytes
+ self * 1024.terabytes
+ end
+ alias :petabyte :petabytes
+
+ def exabytes
+ self * 1024.petabytes
+ end
+ alias :exabyte :exabytes
+
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/numeric/conversions.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/numeric/conversions.rb
new file mode 100644
index 000000000..e652ae5ca
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/numeric/conversions.rb
@@ -0,0 +1,19 @@
+module ActiveSupport #:nodoc:
+ module CoreExtensions #:nodoc:
+ module Numeric #:nodoc:
+ module Conversions
+ # Assumes self represents an offset from UTC in seconds (as returned from Time#utc_offset)
+ # and turns this into an +HH:MM formatted string. Example:
+ #
+ # -21_600.to_utc_offset_s # => "-06:00"
+ def to_utc_offset_s(colon=true)
+ seconds = self
+ sign = (seconds < 0 ? -1 : 1)
+ hours = seconds.abs / 3600
+ minutes = (seconds.abs % 3600) / 60
+ "%+03d%s%02d" % [ hours * sign, colon ? ":" : "", minutes ]
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/numeric/time.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/numeric/time.rb
new file mode 100644
index 000000000..aac698f7a
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/numeric/time.rb
@@ -0,0 +1,91 @@
+module ActiveSupport #:nodoc:
+ module CoreExtensions #:nodoc:
+ module Numeric #:nodoc:
+ # Enables the use of time calculations and declarations, like 45.minutes + 2.hours + 4.years.
+ #
+ # These methods use Time#advance for precise date calculations when using from_now, ago, etc.
+ # as well as adding or subtracting their results from a Time object. For example:
+ #
+ # # equivalent to Time.now.advance(:months => 1)
+ # 1.month.from_now
+ #
+ # # equivalent to Time.now.advance(:years => 2)
+ # 2.years.from_now
+ #
+ # # equivalent to Time.now.advance(:months => 4, :years => 5)
+ # (4.months + 5.years).from_now
+ #
+ # While these methods provide precise calculation when used as in the examples above, care
+ # should be taken to note that this is not true if the result of `months', `years', etc is
+ # converted before use:
+ #
+ # # equivalent to 30.days.to_i.from_now
+ # 1.month.to_i.from_now
+ #
+ # # equivalent to 365.25.days.to_f.from_now
+ # 1.year.to_f.from_now
+ #
+ # In such cases, Ruby's core
+ # Date[http://stdlib.rubyonrails.org/libdoc/date/rdoc/index.html] and
+ # Time[http://stdlib.rubyonrails.org/libdoc/time/rdoc/index.html] should be used for precision
+ # date and time arithmetic
+ module Time
+ def seconds
+ ActiveSupport::Duration.new(self, [[:seconds, self]])
+ end
+ alias :second :seconds
+
+ def minutes
+ ActiveSupport::Duration.new(self * 60, [[:seconds, self * 60]])
+ end
+ alias :minute :minutes
+
+ def hours
+ ActiveSupport::Duration.new(self * 3600, [[:seconds, self * 3600]])
+ end
+ alias :hour :hours
+
+ def days
+ ActiveSupport::Duration.new(self * 24.hours, [[:days, self]])
+ end
+ alias :day :days
+
+ def weeks
+ ActiveSupport::Duration.new(self * 7.days, [[:days, self * 7]])
+ end
+ alias :week :weeks
+
+ def fortnights
+ ActiveSupport::Duration.new(self * 2.weeks, [[:days, self * 14]])
+ end
+ alias :fortnight :fortnights
+
+ def months
+ ActiveSupport::Duration.new(self * 30.days, [[:months, self]])
+ end
+ alias :month :months
+
+ def years
+ ActiveSupport::Duration.new(self * 365.25.days, [[:years, self]])
+ end
+ alias :year :years
+
+ # Reads best without arguments: 10.minutes.ago
+ def ago(time = ::Time.now)
+ time - self
+ end
+
+ # Reads best with argument: 10.minutes.until(time)
+ alias :until :ago
+
+ # Reads best with argument: 10.minutes.since(time)
+ def since(time = ::Time.now)
+ time + self
+ end
+
+ # Reads best without arguments: 10.minutes.from_now
+ alias :from_now :since
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/object.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/object.rb
new file mode 100644
index 000000000..bbc7d8167
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/object.rb
@@ -0,0 +1,4 @@
+require 'active_support/core_ext/object/conversions'
+require 'active_support/core_ext/object/extending'
+require 'active_support/core_ext/object/instance_variables'
+require 'active_support/core_ext/object/misc'
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/object/conversions.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/object/conversions.rb
new file mode 100644
index 000000000..ad752f0fc
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/object/conversions.rb
@@ -0,0 +1,14 @@
+class Object
+ # Alias of <tt>to_s</tt>.
+ def to_param
+ to_s
+ end
+
+ # Converts an object into a string suitable for use as a URL query string, using the given <tt>key</tt> as the
+ # param name.
+ #
+ # Note: This method is defined as a default implementation for all Objects for Hash#to_query to work.
+ def to_query(key)
+ "#{CGI.escape(key.to_s)}=#{CGI.escape(to_param.to_s)}"
+ end
+end \ No newline at end of file
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/object/extending.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/object/extending.rb
new file mode 100644
index 000000000..43a2be916
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/object/extending.rb
@@ -0,0 +1,58 @@
+class Object
+ def remove_subclasses_of(*superclasses) #:nodoc:
+ Class.remove_class(*subclasses_of(*superclasses))
+ end
+
+ def subclasses_of(*superclasses) #:nodoc:
+ subclasses = []
+
+ # Exclude this class unless it's a subclass of our supers and is defined.
+ # We check defined? in case we find a removed class that has yet to be
+ # garbage collected. This also fails for anonymous classes -- please
+ # submit a patch if you have a workaround.
+ ObjectSpace.each_object(Class) do |k|
+ if superclasses.any? { |superclass| k < superclass } &&
+ (k.name.blank? || eval("defined?(::#{k}) && ::#{k}.object_id == k.object_id"))
+ subclasses << k
+ end
+ end
+
+ subclasses
+ end
+
+ def extended_by #:nodoc:
+ ancestors = class << self; ancestors end
+ ancestors.select { |mod| mod.class == Module } - [ Object, Kernel ]
+ end
+
+ def extend_with_included_modules_from(object) #:nodoc:
+ object.extended_by.each { |mod| extend mod }
+ end
+
+ unless defined? instance_exec # 1.9
+ module InstanceExecMethods #:nodoc:
+ end
+ include InstanceExecMethods
+
+ # Evaluate the block with the given arguments within the context of
+ # this object, so self is set to the method receiver.
+ #
+ # From Mauricio's http://eigenclass.org/hiki/bounded+space+instance_exec
+ def instance_exec(*args, &block)
+ begin
+ old_critical, Thread.critical = Thread.critical, true
+ n = 0
+ n += 1 while respond_to?(method_name = "__instance_exec#{n}")
+ InstanceExecMethods.module_eval { define_method(method_name, &block) }
+ ensure
+ Thread.critical = old_critical
+ end
+
+ begin
+ send(method_name, *args)
+ ensure
+ InstanceExecMethods.module_eval { remove_method(method_name) } rescue nil
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/object/instance_variables.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/object/instance_variables.rb
new file mode 100644
index 000000000..9f1d4ed2a
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/object/instance_variables.rb
@@ -0,0 +1,74 @@
+class Object
+ # Available in 1.8.6 and later.
+ unless respond_to?(:instance_variable_defined?)
+ def instance_variable_defined?(variable)
+ instance_variables.include?(variable.to_s)
+ end
+ end
+
+ # Returns a hash that maps instance variable names without "@" to their
+ # corresponding values. Keys are strings both in Ruby 1.8 and 1.9.
+ #
+ # class C
+ # def initialize(x, y)
+ # @x, @y = x, y
+ # end
+ # end
+ #
+ # C.new(0, 1).instance_values # => {"x" => 0, "y" => 1}
+ def instance_values #:nodoc:
+ instance_variables.inject({}) do |values, name|
+ values[name.to_s[1..-1]] = instance_variable_get(name)
+ values
+ end
+ end
+
+ # Returns an array of instance variable names including "@". They are strings
+ # both in Ruby 1.8 and 1.9.
+ #
+ # class C
+ # def initialize(x, y)
+ # @x, @y = x, y
+ # end
+ # end
+ #
+ # C.new(0, 1).instance_variable_names # => ["@y", "@x"]
+ if RUBY_VERSION >= '1.9'
+ def instance_variable_names
+ instance_variables.map(&:to_s)
+ end
+ else
+ alias_method :instance_variable_names, :instance_variables
+ end
+
+ # Copies the instance variables of +object+ into +self+.
+ #
+ # Instance variable names in the +exclude+ array are ignored. If +object+
+ # responds to <tt>protected_instance_variables</tt> the ones returned are
+ # also ignored. For example, Rails controllers implement that method.
+ #
+ # In both cases strings and symbols are understood, and they have to include
+ # the at sign.
+ #
+ # class C
+ # def initialize(x, y, z)
+ # @x, @y, @z = x, y, z
+ # end
+ #
+ # def protected_instance_variables
+ # %w(@z)
+ # end
+ # end
+ #
+ # a = C.new(0, 1, 2)
+ # b = C.new(3, 4, 5)
+ #
+ # a.copy_instance_variables_from(b, [:@y])
+ # # a is now: @x = 3, @y = 1, @z = 2
+ def copy_instance_variables_from(object, exclude = []) #:nodoc:
+ exclude += object.protected_instance_variables if object.respond_to? :protected_instance_variables
+
+ vars = object.instance_variables.map(&:to_s) - exclude.map(&:to_s)
+ vars.each { |name| instance_variable_set(name, object.instance_variable_get(name)) }
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/object/misc.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/object/misc.rb
new file mode 100644
index 000000000..8384a1232
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/object/misc.rb
@@ -0,0 +1,59 @@
+class Object
+ unless respond_to?(:send!)
+ # Anticipating Ruby 1.9 neutering send
+ alias send! send
+ end
+
+ # A Ruby-ized realization of the K combinator, courtesy of Mikael Brockman.
+ #
+ # def foo
+ # returning values = [] do
+ # values << 'bar'
+ # values << 'baz'
+ # end
+ # end
+ #
+ # foo # => ['bar', 'baz']
+ #
+ # def foo
+ # returning [] do |values|
+ # values << 'bar'
+ # values << 'baz'
+ # end
+ # end
+ #
+ # foo # => ['bar', 'baz']
+ #
+ def returning(value)
+ yield(value)
+ value
+ end
+
+ # An elegant way to refactor out common options
+ #
+ # with_options :order => 'created_at', :class_name => 'Comment' do |post|
+ # post.has_many :comments, :conditions => ['approved = ?', true], :dependent => :delete_all
+ # post.has_many :unapproved_comments, :conditions => ['approved = ?', false]
+ # post.has_many :all_comments
+ # end
+ #
+ # Can also be used with an explicit receiver:
+ #
+ # map.with_options :controller => "people" do |people|
+ # people.connect "/people", :action => "index"
+ # people.connect "/people/:id", :action => "show"
+ # end
+ #
+ def with_options(options)
+ yield ActiveSupport::OptionMerger.new(self, options)
+ end
+
+ # A duck-type assistant method. For example, Active Support extends Date
+ # to define an acts_like_date? method, and extends Time to define
+ # acts_like_time?. As a result, we can do "x.acts_like?(:time)" and
+ # "x.acts_like?(:date)" to do duck-type-safe comparisons, since classes that
+ # we want to act like Time simply need to define an acts_like_time? method.
+ def acts_like?(duck)
+ respond_to? "acts_like_#{duck}?"
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/pathname.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/pathname.rb
new file mode 100644
index 000000000..4c5318ee6
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/pathname.rb
@@ -0,0 +1,7 @@
+require 'pathname'
+require 'active_support/core_ext/pathname/clean_within'
+
+class Pathname#:nodoc:
+ extend ActiveSupport::CoreExtensions::Pathname::CleanWithin
+end
+
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/pathname/clean_within.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/pathname/clean_within.rb
new file mode 100644
index 000000000..ae03e1bc5
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/pathname/clean_within.rb
@@ -0,0 +1,14 @@
+module ActiveSupport #:nodoc:
+ module CoreExtensions #:nodoc:
+ module Pathname #:nodoc:
+ module CleanWithin
+ # Clean the paths contained in the provided string.
+ def clean_within(string)
+ string.gsub(%r{[\w. ]+(/[\w. ]+)+(\.rb)?(\b|$)}) do |path|
+ new(path).cleanpath
+ end
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/proc.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/proc.rb
new file mode 100644
index 000000000..2ca23f62e
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/proc.rb
@@ -0,0 +1,12 @@
+class Proc #:nodoc:
+ def bind(object)
+ block, time = self, Time.now
+ (class << object; self end).class_eval do
+ method_name = "__bind_#{time.to_i}_#{time.usec}"
+ define_method(method_name, &block)
+ method = instance_method(method_name)
+ remove_method(method_name)
+ method
+ end.bind(object)
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/process.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/process.rb
new file mode 100644
index 000000000..0b0bc6dc6
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/process.rb
@@ -0,0 +1 @@
+require 'active_support/core_ext/process/daemon'
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/process/daemon.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/process/daemon.rb
new file mode 100644
index 000000000..95ad5f8a5
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/process/daemon.rb
@@ -0,0 +1,25 @@
+if RUBY_VERSION < "1.9"
+ module Process
+ def self.daemon(nochdir = nil, noclose = nil)
+ exit if fork # Parent exits, child continues.
+ Process.setsid # Become session leader.
+ exit if fork # Zap session leader. See [1].
+
+ unless nochdir
+ Dir.chdir "/" # Release old working directory.
+ end
+
+ File.umask 0000 # Ensure sensible umask. Adjust as needed.
+
+ unless noclose
+ STDIN.reopen "/dev/null" # Free file descriptors and
+ STDOUT.reopen "/dev/null", "a" # point them somewhere sensible.
+ STDERR.reopen '/dev/null', 'a'
+ end
+
+ trap("TERM") { exit }
+
+ return 0
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/range.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/range.rb
new file mode 100644
index 000000000..0d2b169e3
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/range.rb
@@ -0,0 +1,11 @@
+require 'active_support/core_ext/range/conversions'
+require 'active_support/core_ext/range/overlaps'
+require 'active_support/core_ext/range/include_range'
+require 'active_support/core_ext/range/blockless_step'
+
+class Range #:nodoc:
+ include ActiveSupport::CoreExtensions::Range::Conversions
+ include ActiveSupport::CoreExtensions::Range::Overlaps
+ include ActiveSupport::CoreExtensions::Range::IncludeRange
+ include ActiveSupport::CoreExtensions::Range::BlocklessStep
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/range/blockless_step.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/range/blockless_step.rb
new file mode 100644
index 000000000..39dac8563
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/range/blockless_step.rb
@@ -0,0 +1,32 @@
+module ActiveSupport #:nodoc:
+ module CoreExtensions #:nodoc:
+ module Range #:nodoc:
+ # Return an array when step is called without a block.
+ module BlocklessStep
+ def self.included(base) #:nodoc:
+ base.alias_method_chain :step, :blockless
+ end
+
+ if RUBY_VERSION < '1.9'
+ def step_with_blockless(value, &block)
+ if block_given?
+ step_without_blockless(value, &block)
+ else
+ returning [] do |array|
+ step_without_blockless(value) { |step| array << step }
+ end
+ end
+ end
+ else
+ def step_with_blockless(value, &block)
+ if block_given?
+ step_without_blockless(value, &block)
+ else
+ step_without_blockless(value).to_a
+ end
+ end
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/range/conversions.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/range/conversions.rb
new file mode 100644
index 000000000..932bdedad
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/range/conversions.rb
@@ -0,0 +1,27 @@
+module ActiveSupport #:nodoc:
+ module CoreExtensions #:nodoc:
+ module Range #:nodoc:
+ # Getting ranges in different convenient string representations and other objects
+ module Conversions
+ RANGE_FORMATS = {
+ :db => Proc.new { |start, stop| "BETWEEN '#{start.to_s(:db)}' AND '#{stop.to_s(:db)}'" }
+ }
+
+ def self.included(base) #:nodoc:
+ base.class_eval do
+ alias_method :to_default_s, :to_s
+ alias_method :to_s, :to_formatted_s
+ end
+ end
+ # Gives a human readable format of the range.
+ #
+ # ==== Example:
+ #
+ # [1..100].to_formatted_s # => "1..100"
+ def to_formatted_s(format = :default)
+ RANGE_FORMATS[format] ? RANGE_FORMATS[format].call(first, last) : to_default_s
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/range/include_range.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/range/include_range.rb
new file mode 100644
index 000000000..9a7d23569
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/range/include_range.rb
@@ -0,0 +1,30 @@
+module ActiveSupport #:nodoc:
+ module CoreExtensions #:nodoc:
+ module Range #:nodoc:
+ # Check if a Range includes another Range.
+ module IncludeRange
+ def self.included(base) #:nodoc:
+ base.alias_method_chain :include?, :range
+ end
+
+ # Extends the default Range#include? to support range comparisons.
+ # (1..5).include?(1..5) # => true
+ # (1..5).include?(2..3) # => true
+ # (1..5).include?(2..6) # => false
+ #
+ # The native Range#include? behavior is untouched.
+ # ("a".."f").include?("c") # => true
+ # (5..9).include?(11) # => false
+ def include_with_range?(value)
+ if value.is_a?(::Range)
+ operator = exclude_end? ? :< : :<=
+ end_value = value.exclude_end? ? last.succ : last
+ include?(value.first) && (value.last <=> end_value).send(operator, 0)
+ else
+ include_without_range?(value)
+ end
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/range/overlaps.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/range/overlaps.rb
new file mode 100644
index 000000000..43c69453e
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/range/overlaps.rb
@@ -0,0 +1,15 @@
+module ActiveSupport #:nodoc:
+ module CoreExtensions #:nodoc:
+ module Range #:nodoc:
+ # Check if Ranges overlap.
+ module Overlaps
+ # Compare two ranges and see if they overlap eachother
+ # (1..5).overlaps?(4..6) # => true
+ # (1..5).overlaps?(7..9) # => false
+ def overlaps?(other)
+ include?(other.first) || other.include?(first)
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/string.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/string.rb
new file mode 100644
index 000000000..25386af70
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/string.rb
@@ -0,0 +1,18 @@
+require 'active_support/core_ext/string/inflections'
+require 'active_support/core_ext/string/conversions'
+require 'active_support/core_ext/string/access'
+require 'active_support/core_ext/string/starts_ends_with'
+require 'active_support/core_ext/string/iterators'
+require 'active_support/core_ext/string/unicode'
+require 'active_support/core_ext/string/xchar'
+require 'active_support/core_ext/string/filters'
+
+class String #:nodoc:
+ include ActiveSupport::CoreExtensions::String::Access
+ include ActiveSupport::CoreExtensions::String::Conversions
+ include ActiveSupport::CoreExtensions::String::Filters
+ include ActiveSupport::CoreExtensions::String::Inflections
+ include ActiveSupport::CoreExtensions::String::StartsEndsWith
+ include ActiveSupport::CoreExtensions::String::Iterators
+ include ActiveSupport::CoreExtensions::String::Unicode
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/string/access.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/string/access.rb
new file mode 100644
index 000000000..1a949c0b7
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/string/access.rb
@@ -0,0 +1,82 @@
+module ActiveSupport #:nodoc:
+ module CoreExtensions #:nodoc:
+ module String #:nodoc:
+ unless '1.9'.respond_to?(:force_encoding)
+ # Makes it easier to access parts of a string, such as specific characters and substrings.
+ module Access
+ # Returns the character at the +position+ treating the string as an array (where 0 is the first character).
+ #
+ # Examples:
+ # "hello".at(0) # => "h"
+ # "hello".at(4) # => "o"
+ # "hello".at(10) # => nil
+ def at(position)
+ chars[position, 1].to_s
+ end
+
+ # Returns the remaining of the string from the +position+ treating the string as an array (where 0 is the first character).
+ #
+ # Examples:
+ # "hello".from(0) # => "hello"
+ # "hello".from(2) # => "llo"
+ # "hello".from(10) # => nil
+ def from(position)
+ chars[position..-1].to_s
+ end
+
+ # Returns the beginning of the string up to the +position+ treating the string as an array (where 0 is the first character).
+ #
+ # Examples:
+ # "hello".to(0) # => "h"
+ # "hello".to(2) # => "hel"
+ # "hello".to(10) # => "hello"
+ def to(position)
+ chars[0..position].to_s
+ end
+
+ # Returns the first character of the string or the first +limit+ characters.
+ #
+ # Examples:
+ # "hello".first # => "h"
+ # "hello".first(2) # => "he"
+ # "hello".first(10) # => "hello"
+ def first(limit = 1)
+ chars[0..(limit - 1)].to_s
+ end
+
+ # Returns the last character of the string or the last +limit+ characters.
+ #
+ # Examples:
+ # "hello".last # => "o"
+ # "hello".last(2) # => "lo"
+ # "hello".last(10) # => "hello"
+ def last(limit = 1)
+ (chars[(-limit)..-1] || self).to_s
+ end
+ end
+ else
+ module Access #:nodoc:
+ def at(position)
+ self[position]
+ end
+
+ def from(position)
+ self[position..-1]
+ end
+
+ def to(position)
+ self[0..position]
+ end
+
+ def first(limit = 1)
+ self[0..(limit - 1)]
+ end
+
+ def last(limit = 1)
+ from(-limit) || self
+ end
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/string/conversions.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/string/conversions.rb
new file mode 100644
index 000000000..d4334dcef
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/string/conversions.rb
@@ -0,0 +1,28 @@
+require 'date'
+
+module ActiveSupport #:nodoc:
+ module CoreExtensions #:nodoc:
+ module String #:nodoc:
+ # Converting strings to other objects
+ module Conversions
+ # 'a'.ord == 'a'[0] for Ruby 1.9 forward compatibility.
+ def ord
+ self[0]
+ end if RUBY_VERSION < '1.9'
+
+ # Form can be either :utc (default) or :local.
+ def to_time(form = :utc)
+ ::Time.send("#{form}_time", *::Date._parse(self, false).values_at(:year, :mon, :mday, :hour, :min, :sec).map { |arg| arg || 0 })
+ end
+
+ def to_date
+ ::Date.new(*::Date._parse(self, false).values_at(:year, :mon, :mday))
+ end
+
+ def to_datetime
+ ::DateTime.civil(*::Date._parse(self, false).values_at(:year, :mon, :mday, :hour, :min, :sec).map { |arg| arg || 0 })
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/string/filters.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/string/filters.rb
new file mode 100644
index 000000000..0329fbb8d
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/string/filters.rb
@@ -0,0 +1,26 @@
+module ActiveSupport #:nodoc:
+ module CoreExtensions #:nodoc:
+ module String #:nodoc:
+ module Filters
+ # Returns the string, first removing all whitespace on both ends of
+ # the string, and then changing remaining consecutive whitespace
+ # groups into one space each.
+ #
+ # Examples:
+ # %{ Multi-line
+ # string }.squish # => "Multi-line string"
+ # " foo bar \n \t boo".squish # => "foo bar boo"
+ def squish
+ dup.squish!
+ end
+
+ # Performs a destructive squish. See String#squish.
+ def squish!
+ strip!
+ gsub!(/\s+/, ' ')
+ self
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/string/inflections.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/string/inflections.rb
new file mode 100644
index 000000000..a009d7c08
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/string/inflections.rb
@@ -0,0 +1,148 @@
+require 'active_support/inflector'
+
+module ActiveSupport #:nodoc:
+ module CoreExtensions #:nodoc:
+ module String #:nodoc:
+ # String inflections define new methods on the String class to transform names for different purposes.
+ # For instance, you can figure out the name of a database from the name of a class.
+ #
+ # "ScaleScore".tableize # => "scale_scores"
+ module Inflections
+ # Returns the plural form of the word in the string.
+ #
+ # "post".pluralize # => "posts"
+ # "octopus".pluralize # => "octopi"
+ # "sheep".pluralize # => "sheep"
+ # "words".pluralize # => "words"
+ # "the blue mailman".pluralize # => "the blue mailmen"
+ # "CamelOctopus".pluralize # => "CamelOctopi"
+ def pluralize
+ Inflector.pluralize(self)
+ end
+
+ # The reverse of +pluralize+, returns the singular form of a word in a string.
+ #
+ # "posts".singularize # => "post"
+ # "octopi".singularize # => "octopus"
+ # "sheep".singluarize # => "sheep"
+ # "word".singluarize # => "word"
+ # "the blue mailmen".singularize # => "the blue mailman"
+ # "CamelOctopi".singularize # => "CamelOctopus"
+ def singularize
+ Inflector.singularize(self)
+ end
+
+ # By default, +camelize+ converts strings to UpperCamelCase. If the argument to camelize
+ # is set to <tt>:lower</tt> then camelize produces lowerCamelCase.
+ #
+ # +camelize+ will also convert '/' to '::' which is useful for converting paths to namespaces.
+ #
+ # "active_record".camelize # => "ActiveRecord"
+ # "active_record".camelize(:lower) # => "activeRecord"
+ # "active_record/errors".camelize # => "ActiveRecord::Errors"
+ # "active_record/errors".camelize(:lower) # => "activeRecord::Errors"
+ def camelize(first_letter = :upper)
+ case first_letter
+ when :upper then Inflector.camelize(self, true)
+ when :lower then Inflector.camelize(self, false)
+ end
+ end
+ alias_method :camelcase, :camelize
+
+ # Capitalizes all the words and replaces some characters in the string to create
+ # a nicer looking title. +titleize+ is meant for creating pretty output. It is not
+ # used in the Rails internals.
+ #
+ # +titleize+ is also aliased as +titlecase+.
+ #
+ # "man from the boondocks".titleize # => "Man From The Boondocks"
+ # "x-men: the last stand".titleize # => "X Men: The Last Stand"
+ def titleize
+ Inflector.titleize(self)
+ end
+ alias_method :titlecase, :titleize
+
+ # The reverse of +camelize+. Makes an underscored, lowercase form from the expression in the string.
+ #
+ # +underscore+ will also change '::' to '/' to convert namespaces to paths.
+ #
+ # "ActiveRecord".underscore # => "active_record"
+ # "ActiveRecord::Errors".underscore # => active_record/errors
+ def underscore
+ Inflector.underscore(self)
+ end
+
+ # Replaces underscores with dashes in the string.
+ #
+ # "puni_puni" # => "puni-puni"
+ def dasherize
+ Inflector.dasherize(self)
+ end
+
+ # Removes the module part from the constant expression in the string.
+ #
+ # "ActiveRecord::CoreExtensions::String::Inflections".demodulize # => "Inflections"
+ # "Inflections".demodulize # => "Inflections"
+ def demodulize
+ Inflector.demodulize(self)
+ end
+
+ # Creates the name of a table like Rails does for models to table names. This method
+ # uses the +pluralize+ method on the last word in the string.
+ #
+ # "RawScaledScorer".tableize # => "raw_scaled_scorers"
+ # "egg_and_ham".tableize # => "egg_and_hams"
+ # "fancyCategory".tableize # => "fancy_categories"
+ def tableize
+ Inflector.tableize(self)
+ end
+
+ # Create a class name from a plural table name like Rails does for table names to models.
+ # Note that this returns a string and not a class. (To convert to an actual class
+ # follow +classify+ with +constantize+.)
+ #
+ # "egg_and_hams".classify # => "EggAndHam"
+ # "posts".classify # => "Post"
+ #
+ # Singular names are not handled correctly.
+ #
+ # "business".classify # => "Busines"
+ def classify
+ Inflector.classify(self)
+ end
+
+ # Capitalizes the first word, turns underscores into spaces, and strips '_id'.
+ # Like +titleize+, this is meant for creating pretty output.
+ #
+ # "employee_salary" # => "Employee salary"
+ # "author_id" # => "Author"
+ def humanize
+ Inflector.humanize(self)
+ end
+
+ # Creates a foreign key name from a class name.
+ # +separate_class_name_and_id_with_underscore+ sets whether
+ # the method should put '_' between the name and 'id'.
+ #
+ # Examples
+ # "Message".foreign_key # => "message_id"
+ # "Message".foreign_key(false) # => "messageid"
+ # "Admin::Post".foreign_key # => "post_id"
+ def foreign_key(separate_class_name_and_id_with_underscore = true)
+ Inflector.foreign_key(self, separate_class_name_and_id_with_underscore)
+ end
+
+ # +constantize+ tries to find a declared constant with the name specified
+ # in the string. It raises a NameError when the name is not in CamelCase
+ # or is not initialized.
+ #
+ # Examples
+ # "Module".constantize # => Module
+ # "Class".constantize # => Class
+ def constantize
+ Inflector.constantize(self)
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/string/iterators.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/string/iterators.rb
new file mode 100644
index 000000000..66a08a5cd
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/string/iterators.rb
@@ -0,0 +1,21 @@
+require 'strscan'
+
+module ActiveSupport #:nodoc:
+ module CoreExtensions #:nodoc:
+ module String #:nodoc:
+ # Custom string iterators
+ module Iterators
+ def self.append_features(base)
+ super unless '1.9'.respond_to?(:each_char)
+ end
+
+ # Yields a single-character string for each character in the string.
+ # When $KCODE = 'UTF8', multi-byte characters are yielded appropriately.
+ def each_char
+ scanner, char = StringScanner.new(self), /./mu
+ loop { yield(scanner.scan(char) || break) }
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/string/starts_ends_with.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/string/starts_ends_with.rb
new file mode 100644
index 000000000..09f9a188b
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/string/starts_ends_with.rb
@@ -0,0 +1,35 @@
+module ActiveSupport #:nodoc:
+ module CoreExtensions #:nodoc:
+ module String #:nodoc:
+ # Additional string tests.
+ module StartsEndsWith
+ def self.append_features(base)
+ if '1.8.7 and up'.respond_to?(:start_with?)
+ base.class_eval do
+ alias_method :starts_with?, :start_with?
+ alias_method :ends_with?, :end_with?
+ end
+ else
+ super
+ base.class_eval do
+ alias_method :start_with?, :starts_with?
+ alias_method :end_with?, :ends_with?
+ end
+ end
+ end
+
+ # Does the string start with the specified +prefix+?
+ def starts_with?(prefix)
+ prefix = prefix.to_s
+ self[0, prefix.length] == prefix
+ end
+
+ # Does the string end with the specified +suffix+?
+ def ends_with?(suffix)
+ suffix = suffix.to_s
+ self[-suffix.length, suffix.length] == suffix
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/string/unicode.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/string/unicode.rb
new file mode 100644
index 000000000..5e20534d1
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/string/unicode.rb
@@ -0,0 +1,68 @@
+module ActiveSupport #:nodoc:
+ module CoreExtensions #:nodoc:
+ module String #:nodoc:
+ unless '1.9'.respond_to?(:force_encoding)
+ # Define methods for handling unicode data.
+ module Unicode
+ def self.append_features(base)
+ if '1.8.7'.respond_to?(:chars)
+ base.class_eval { remove_method :chars }
+ end
+ super
+ end
+
+ # +chars+ is a Unicode safe proxy for string methods. It creates and returns an instance of the
+ # ActiveSupport::Multibyte::Chars class which encapsulates the original string. A Unicode safe version of all
+ # the String methods are defined on this proxy class. Undefined methods are forwarded to String, so all of the
+ # string overrides can also be called through the +chars+ proxy.
+ #
+ # name = 'Claus Müller'
+ # name.reverse # => "rell??M sualC"
+ # name.length # => 13
+ #
+ # name.chars.reverse.to_s # => "rellüM sualC"
+ # name.chars.length # => 12
+ #
+ #
+ # All the methods on the chars proxy which normally return a string will return a Chars object. This allows
+ # method chaining on the result of any of these methods.
+ #
+ # name.chars.reverse.length # => 12
+ #
+ # The Char object tries to be as interchangeable with String objects as possible: sorting and comparing between
+ # String and Char work like expected. The bang! methods change the internal string representation in the Chars
+ # object. Interoperability problems can be resolved easily with a +to_s+ call.
+ #
+ # For more information about the methods defined on the Chars proxy see ActiveSupport::Multibyte::Chars and
+ # ActiveSupport::Multibyte::Handlers::UTF8Handler.
+ def chars
+ ActiveSupport::Multibyte::Chars.new(self)
+ end
+
+ # Returns true if the string has UTF-8 semantics (a String used for purely byte resources is unlikely to have
+ # them), returns false otherwise.
+ def is_utf8?
+ ActiveSupport::Multibyte::Handlers::UTF8Handler.consumes?(self)
+ end
+ end
+ else
+ module Unicode #:nodoc:
+ def chars
+ self
+ end
+
+ def is_utf8?
+ case encoding
+ when Encoding::UTF_8
+ valid_encoding?
+ when Encoding::ASCII_8BIT
+ dup.force_encoding('UTF-8').valid_encoding?
+ else
+ false
+ end
+ end
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/string/xchar.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/string/xchar.rb
new file mode 100644
index 000000000..df186e42d
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/string/xchar.rb
@@ -0,0 +1,11 @@
+begin
+ # See http://bogomips.org/fast_xs/ by Eric Wong
+ require 'fast_xs'
+
+ class String
+ alias_method :original_xs, :to_xs if method_defined?(:to_xs)
+ alias_method :to_xs, :fast_xs
+ end
+rescue LoadError
+ # fast_xs extension unavailable.
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/symbol.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/symbol.rb
new file mode 100644
index 000000000..e4ac44380
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/symbol.rb
@@ -0,0 +1,14 @@
+unless :to_proc.respond_to?(:to_proc)
+ class Symbol
+ # Turns the symbol into a simple proc, which is especially useful for enumerations. Examples:
+ #
+ # # The same as people.collect { |p| p.name }
+ # people.collect(&:name)
+ #
+ # # The same as people.select { |p| p.manager? }.collect { |p| p.salary }
+ # people.select(&:manager?).collect(&:salary)
+ def to_proc
+ Proc.new { |*args| args.shift.__send__(self, *args) }
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/test.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/test.rb
new file mode 100644
index 000000000..c0b19bdc5
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/test.rb
@@ -0,0 +1 @@
+require 'active_support/core_ext/test/unit/assertions'
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/test/unit/assertions.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/test/unit/assertions.rb
new file mode 100644
index 000000000..77fe325fb
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/test/unit/assertions.rb
@@ -0,0 +1,64 @@
+module Test
+ module Unit
+ #--
+ # FIXME: no Proc#binding in Ruby 2, must change this API
+ #++
+ module Assertions
+ # Test numeric difference between the return value of an expression as a result of what is evaluated
+ # in the yielded block.
+ #
+ # assert_difference 'Article.count' do
+ # post :create, :article => {...}
+ # end
+ #
+ # An arbitrary expression is passed in and evaluated.
+ #
+ # assert_difference 'assigns(:article).comments(:reload).size' do
+ # post :create, :comment => {...}
+ # end
+ #
+ # An arbitrary positive or negative difference can be specified. The default is +1.
+ #
+ # assert_difference 'Article.count', -1 do
+ # post :delete, :id => ...
+ # end
+ #
+ # An array of expressions can also be passed in and evaluated.
+ #
+ # assert_difference [ 'Article.count', 'Post.count' ], +2 do
+ # post :create, :article => {...}
+ # end
+ #
+ # A error message can be specified.
+ #
+ # assert_difference 'Article.count', -1, "An Article should be destroyed" do
+ # post :delete, :id => ...
+ # end
+ def assert_difference(expressions, difference = 1, message = nil, &block)
+ expression_evaluations = Array(expressions).collect{ |expression| lambda { eval(expression, block.send!(:binding)) } }
+
+ original_values = expression_evaluations.inject([]) { |memo, expression| memo << expression.call }
+ yield
+ expression_evaluations.each_with_index do |expression, i|
+ assert_equal original_values[i] + difference, expression.call, message
+ end
+ end
+
+ # Assertion that the numeric result of evaluating an expression is not changed before and after
+ # invoking the passed in block.
+ #
+ # assert_no_difference 'Article.count' do
+ # post :create, :article => invalid_attributes
+ # end
+ #
+ # A error message can be specified.
+ #
+ # assert_no_difference 'Article.count', "An Article should not be destroyed" do
+ # post :create, :article => invalid_attributes
+ # end
+ def assert_no_difference(expressions, message = nil, &block)
+ assert_difference expressions, 0, message, &block
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/time.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/time.rb
new file mode 100644
index 000000000..ea50511a9
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/time.rb
@@ -0,0 +1,21 @@
+require 'date'
+require 'time'
+
+# Ruby 1.8-cvs and 1.9 define private Time#to_date
+class Time
+ %w(to_date to_datetime).each do |method|
+ public method if private_instance_methods.include?(method)
+ end
+end
+
+require 'active_support/core_ext/time/behavior'
+require 'active_support/core_ext/time/calculations'
+require 'active_support/core_ext/time/conversions'
+require 'active_support/core_ext/time/zones'
+
+class Time#:nodoc:
+ include ActiveSupport::CoreExtensions::Time::Behavior
+ include ActiveSupport::CoreExtensions::Time::Calculations
+ include ActiveSupport::CoreExtensions::Time::Conversions
+ include ActiveSupport::CoreExtensions::Time::Zones
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/time/behavior.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/time/behavior.rb
new file mode 100644
index 000000000..a5c0baacd
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/time/behavior.rb
@@ -0,0 +1,13 @@
+module ActiveSupport #:nodoc:
+ module CoreExtensions #:nodoc:
+ module Time #:nodoc:
+ module Behavior
+ # Enable more predictable duck-typing on Time-like classes. See
+ # Object#acts_like?.
+ def acts_like_time?
+ true
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/time/calculations.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/time/calculations.rb
new file mode 100644
index 000000000..2cce78267
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/time/calculations.rb
@@ -0,0 +1,276 @@
+module ActiveSupport #:nodoc:
+ module CoreExtensions #:nodoc:
+ module Time #:nodoc:
+ # Enables the use of time calculations within Time itself
+ module Calculations
+ def self.included(base) #:nodoc:
+ base.extend ClassMethods
+
+ base.class_eval do
+ alias_method :plus_without_duration, :+
+ alias_method :+, :plus_with_duration
+
+ alias_method :minus_without_duration, :-
+ alias_method :-, :minus_with_duration
+
+ alias_method :minus_without_coercion, :-
+ alias_method :-, :minus_with_coercion
+
+ alias_method :compare_without_coercion, :<=>
+ alias_method :<=>, :compare_with_coercion
+ end
+ end
+
+ COMMON_YEAR_DAYS_IN_MONTH = [nil, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
+
+ module ClassMethods
+ # Overriding case equality method so that it returns true for ActiveSupport::TimeWithZone instances
+ def ===(other)
+ other.is_a?(::Time)
+ end
+
+ # Return the number of days in the given month.
+ # If no year is specified, it will use the current year.
+ def days_in_month(month, year = now.year)
+ return 29 if month == 2 && ::Date.gregorian_leap?(year)
+ COMMON_YEAR_DAYS_IN_MONTH[month]
+ end
+
+ # Returns a new Time if requested year can be accommodated by Ruby's Time class
+ # (i.e., if year is within either 1970..2038 or 1902..2038, depending on system architecture);
+ # otherwise returns a DateTime
+ def time_with_datetime_fallback(utc_or_local, year, month=1, day=1, hour=0, min=0, sec=0, usec=0)
+ ::Time.send(utc_or_local, year, month, day, hour, min, sec, usec)
+ rescue
+ offset = utc_or_local.to_sym == :local ? ::DateTime.local_offset : 0
+ ::DateTime.civil(year, month, day, hour, min, sec, offset)
+ end
+
+ # Wraps class method +time_with_datetime_fallback+ with +utc_or_local+ set to <tt>:utc</tt>.
+ def utc_time(*args)
+ time_with_datetime_fallback(:utc, *args)
+ end
+
+ # Wraps class method +time_with_datetime_fallback+ with +utc_or_local+ set to <tt>:local</tt>.
+ def local_time(*args)
+ time_with_datetime_fallback(:local, *args)
+ end
+ end
+
+ # Seconds since midnight: Time.now.seconds_since_midnight
+ def seconds_since_midnight
+ self.to_i - self.change(:hour => 0).to_i + (self.usec/1.0e+6)
+ end
+
+ # Returns a new Time where one or more of the elements have been changed according to the +options+ parameter. The time options
+ # (hour, minute, sec, usec) reset cascadingly, so if only the hour is passed, then minute, sec, and usec is set to 0. If the hour and
+ # minute is passed, then sec and usec is set to 0.
+ def change(options)
+ ::Time.send(
+ self.utc? ? :utc_time : :local_time,
+ options[:year] || self.year,
+ options[:month] || self.month,
+ options[:day] || self.day,
+ options[:hour] || self.hour,
+ options[:min] || (options[:hour] ? 0 : self.min),
+ options[:sec] || ((options[:hour] || options[:min]) ? 0 : self.sec),
+ options[:usec] || ((options[:hour] || options[:min] || options[:sec]) ? 0 : self.usec)
+ )
+ end
+
+ # Uses Date to provide precise Time calculations for years, months, and days.
+ # The +options+ parameter takes a hash with any of these keys: <tt>:years</tt>,
+ # <tt>:months</tt>, <tt>:weeks</tt>, <tt>:days</tt>, <tt>:hours</tt>,
+ # <tt>:minutes</tt>, <tt>:seconds</tt>.
+ def advance(options)
+ d = to_date.advance(options)
+ time_advanced_by_date = change(:year => d.year, :month => d.month, :day => d.day)
+ seconds_to_advance = (options[:seconds] || 0) + (options[:minutes] || 0) * 60 + (options[:hours] || 0) * 3600
+ seconds_to_advance == 0 ? time_advanced_by_date : time_advanced_by_date.since(seconds_to_advance)
+ end
+
+ # Returns a new Time representing the time a number of seconds ago, this is basically a wrapper around the Numeric extension
+ def ago(seconds)
+ self.since(-seconds)
+ end
+
+ # Returns a new Time representing the time a number of seconds since the instance time, this is basically a wrapper around
+ # the Numeric extension.
+ def since(seconds)
+ f = seconds.since(self)
+ if ActiveSupport::Duration === seconds
+ f
+ else
+ initial_dst = self.dst? ? 1 : 0
+ final_dst = f.dst? ? 1 : 0
+ (seconds.abs >= 86400 && initial_dst != final_dst) ? f + (initial_dst - final_dst).hours : f
+ end
+ rescue
+ self.to_datetime.since(seconds)
+ end
+ alias :in :since
+
+ # Returns a new Time representing the time a number of specified months ago
+ def months_ago(months)
+ advance(:months => -months)
+ end
+
+ # Returns a new Time representing the time a number of specified months in the future
+ def months_since(months)
+ advance(:months => months)
+ end
+
+ # Returns a new Time representing the time a number of specified years ago
+ def years_ago(years)
+ advance(:years => -years)
+ end
+
+ # Returns a new Time representing the time a number of specified years in the future
+ def years_since(years)
+ advance(:years => years)
+ end
+
+ # Short-hand for years_ago(1)
+ def last_year
+ years_ago(1)
+ end
+
+ # Short-hand for years_since(1)
+ def next_year
+ years_since(1)
+ end
+
+
+ # Short-hand for months_ago(1)
+ def last_month
+ months_ago(1)
+ end
+
+ # Short-hand for months_since(1)
+ def next_month
+ months_since(1)
+ end
+
+ # Returns a new Time representing the "start" of this week (Monday, 0:00)
+ def beginning_of_week
+ days_to_monday = self.wday!=0 ? self.wday-1 : 6
+ (self - days_to_monday.days).midnight
+ end
+ alias :monday :beginning_of_week
+ alias :at_beginning_of_week :beginning_of_week
+
+ # Returns a new Time representing the end of this week (Sunday, 23:59:59)
+ def end_of_week
+ days_to_sunday = self.wday!=0 ? 7-self.wday : 0
+ (self + days_to_sunday.days).end_of_day
+ end
+ alias :at_end_of_week :end_of_week
+
+ # Returns a new Time representing the start of the given day in next week (default is Monday).
+ def next_week(day = :monday)
+ days_into_week = { :monday => 0, :tuesday => 1, :wednesday => 2, :thursday => 3, :friday => 4, :saturday => 5, :sunday => 6}
+ since(1.week).beginning_of_week.since(days_into_week[day].day).change(:hour => 0)
+ end
+
+ # Returns a new Time representing the start of the day (0:00)
+ def beginning_of_day
+ (self - self.seconds_since_midnight).change(:usec => 0)
+ end
+ alias :midnight :beginning_of_day
+ alias :at_midnight :beginning_of_day
+ alias :at_beginning_of_day :beginning_of_day
+
+ # Returns a new Time representing the end of the day (23:59:59)
+ def end_of_day
+ change(:hour => 23, :min => 59, :sec => 59)
+ end
+
+ # Returns a new Time representing the start of the month (1st of the month, 0:00)
+ def beginning_of_month
+ #self - ((self.mday-1).days + self.seconds_since_midnight)
+ change(:day => 1,:hour => 0, :min => 0, :sec => 0, :usec => 0)
+ end
+ alias :at_beginning_of_month :beginning_of_month
+
+ # Returns a new Time representing the end of the month (last day of the month, 0:00)
+ def end_of_month
+ #self - ((self.mday-1).days + self.seconds_since_midnight)
+ last_day = ::Time.days_in_month( self.month, self.year )
+ change(:day => last_day, :hour => 23, :min => 59, :sec => 59, :usec => 0)
+ end
+ alias :at_end_of_month :end_of_month
+
+ # Returns a new Time representing the start of the quarter (1st of january, april, july, october, 0:00)
+ def beginning_of_quarter
+ beginning_of_month.change(:month => [10, 7, 4, 1].detect { |m| m <= self.month })
+ end
+ alias :at_beginning_of_quarter :beginning_of_quarter
+
+ # Returns a new Time representing the end of the quarter (last day of march, june, september, december, 23:59:59)
+ def end_of_quarter
+ change(:month => [3, 6, 9, 12].detect { |m| m >= self.month }).end_of_month
+ end
+ alias :at_end_of_quarter :end_of_quarter
+
+ # Returns a new Time representing the start of the year (1st of january, 0:00)
+ def beginning_of_year
+ change(:month => 1,:day => 1,:hour => 0, :min => 0, :sec => 0, :usec => 0)
+ end
+ alias :at_beginning_of_year :beginning_of_year
+
+ # Returns a new Time representing the end of the year (31st of december, 23:59:59)
+ def end_of_year
+ change(:month => 12,:day => 31,:hour => 23, :min => 59, :sec => 59)
+ end
+ alias :at_end_of_year :end_of_year
+
+ # Convenience method which returns a new Time representing the time 1 day ago
+ def yesterday
+ advance(:days => -1)
+ end
+
+ # Convenience method which returns a new Time representing the time 1 day since the instance time
+ def tomorrow
+ advance(:days => 1)
+ end
+
+ def plus_with_duration(other) #:nodoc:
+ if ActiveSupport::Duration === other
+ other.since(self)
+ else
+ plus_without_duration(other)
+ end
+ end
+
+ def minus_with_duration(other) #:nodoc:
+ if ActiveSupport::Duration === other
+ other.until(self)
+ else
+ minus_without_duration(other)
+ end
+ end
+
+ # Time#- can also be used to determine the number of seconds between two Time instances.
+ # We're layering on additional behavior so that ActiveSupport::TimeWithZone instances
+ # are coerced into values that Time#- will recognize
+ def minus_with_coercion(other)
+ other = other.comparable_time if other.respond_to?(:comparable_time)
+ minus_without_coercion(other)
+ end
+
+ # Layers additional behavior on Time#<=> so that DateTime and ActiveSupport::TimeWithZone instances
+ # can be chronologically compared with a Time
+ def compare_with_coercion(other)
+ # if other is an ActiveSupport::TimeWithZone, coerce a Time instance from it so we can do <=> comparision
+ other = other.comparable_time if other.respond_to?(:comparable_time)
+ if other.acts_like?(:date)
+ # other is a Date/DateTime, so coerce self #to_datetime and hand off to DateTime#<=>
+ to_datetime.compare_without_coercion(other)
+ else
+ compare_without_coercion(other)
+ end
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/time/conversions.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/time/conversions.rb
new file mode 100644
index 000000000..905400830
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/time/conversions.rb
@@ -0,0 +1,89 @@
+module ActiveSupport #:nodoc:
+ module CoreExtensions #:nodoc:
+ module Time #:nodoc:
+ # Converting times to formatted strings, dates, and datetimes.
+ module Conversions
+ DATE_FORMATS = {
+ :db => "%Y-%m-%d %H:%M:%S",
+ :number => "%Y%m%d%H%M%S",
+ :time => "%H:%M",
+ :short => "%d %b %H:%M",
+ :long => "%B %d, %Y %H:%M",
+ :long_ordinal => lambda { |time| time.strftime("%B #{time.day.ordinalize}, %Y %H:%M") },
+ :rfc822 => "%a, %d %b %Y %H:%M:%S %z"
+ }
+
+ def self.included(base) #:nodoc:
+ base.class_eval do
+ alias_method :to_default_s, :to_s
+ alias_method :to_s, :to_formatted_s
+ end
+ end
+
+ # Converts to a formatted string. See DATE_FORMATS for builtin formats.
+ #
+ # This method is aliased to <tt>to_s</tt>.
+ #
+ # time = Time.now # => Thu Jan 18 06:10:17 CST 2007
+ #
+ # time.to_formatted_s(:time) # => "06:10:17"
+ # time.to_s(:time) # => "06:10:17"
+ #
+ # time.to_formatted_s(:db) # => "2007-01-18 06:10:17"
+ # time.to_formatted_s(:short) # => "18 Jan 06:10"
+ # time.to_formatted_s(:long) # => "January 18, 2007 06:10"
+ # time.to_formatted_s(:long_ordinal) # => "January 18th, 2007 06:10"
+ # time.to_formatted_s(:rfc822) # => "Thu, 18 Jan 2007 06:10:17 -0600"
+ #
+ # == Adding your own time formats to +to_formatted_s+
+ # You can add your own formats to the Time::DATE_FORMATS hash.
+ # Use the format name as the hash key and either a strftime string
+ # or Proc instance that takes a time argument as the value.
+ #
+ # # config/initializers/time_formats.rb
+ # Time::DATE_FORMATS[:month_and_year] = "%B %Y"
+ # Time::DATE_FORMATS[:short_ordinal] = lambda { |time| time.strftime("%B #{time.day.ordinalize}") }
+ def to_formatted_s(format = :default)
+ return to_default_s unless formatter = DATE_FORMATS[format]
+ formatter.respond_to?(:call) ? formatter.call(self).to_s : strftime(formatter)
+ end
+
+ # Returns the UTC offset as an +HH:MM formatted string.
+ #
+ # Time.local(2000).formatted_offset # => "-06:00"
+ # Time.local(2000).formatted_offset(false) # => "-0600"
+ def formatted_offset(colon = true, alternate_utc_string = nil)
+ utc? && alternate_utc_string || utc_offset.to_utc_offset_s(colon)
+ end
+
+ # Converts a Time object to a Date, dropping hour, minute, and second precision.
+ #
+ # my_time = Time.now # => Mon Nov 12 22:59:51 -0500 2007
+ # my_time.to_date # => Mon, 12 Nov 2007
+ #
+ # your_time = Time.parse("1/13/2009 1:13:03 P.M.") # => Tue Jan 13 13:13:03 -0500 2009
+ # your_time.to_date # => Tue, 13 Jan 2009
+ def to_date
+ ::Date.new(year, month, day)
+ end
+
+ # A method to keep Time, Date and DateTime instances interchangeable on conversions.
+ # In this case, it simply returns +self+.
+ def to_time
+ self
+ end
+
+ # Converts a Time instance to a Ruby DateTime instance, preserving UTC offset.
+ #
+ # my_time = Time.now # => Mon Nov 12 23:04:21 -0500 2007
+ # my_time.to_datetime # => Mon, 12 Nov 2007 23:04:21 -0500
+ #
+ # your_time = Time.parse("1/13/2009 1:13:03 P.M.") # => Tue Jan 13 13:13:03 -0500 2009
+ # your_time.to_datetime # => Tue, 13 Jan 2009 13:13:03 -0500
+ def to_datetime
+ ::DateTime.civil(year, month, day, hour, min, sec, Rational(utc_offset, 86400))
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/time/zones.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/time/zones.rb
new file mode 100644
index 000000000..079ecdd48
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/core_ext/time/zones.rb
@@ -0,0 +1,86 @@
+module ActiveSupport #:nodoc:
+ module CoreExtensions #:nodoc:
+ module Time #:nodoc:
+ module Zones
+ def self.included(base) #:nodoc:
+ base.extend(ClassMethods) if base == ::Time # i.e., don't include class methods in DateTime
+ end
+
+ module ClassMethods
+ attr_accessor :zone_default
+
+ # Returns the TimeZone for the current request, if this has been set (via Time.zone=).
+ # If <tt>Time.zone</tt> has not been set for the current request, returns the TimeZone specified in <tt>config.time_zone</tt>.
+ def zone
+ Thread.current[:time_zone] || zone_default
+ end
+
+ # Sets <tt>Time.zone</tt> to a TimeZone object for the current request/thread.
+ #
+ # This method accepts any of the following:
+ #
+ # * A Rails TimeZone object.
+ # * An identifier for a Rails TimeZone object (e.g., "Eastern Time (US & Canada)", <tt>-5.hours</tt>).
+ # * A TZInfo::Timezone object.
+ # * An identifier for a TZInfo::Timezone object (e.g., "America/New_York").
+ #
+ # Here's an example of how you might set <tt>Time.zone</tt> on a per request basis -- <tt>current_user.time_zone</tt>
+ # just needs to return a string identifying the user's preferred TimeZone:
+ #
+ # class ApplicationController < ActionController::Base
+ # before_filter :set_time_zone
+ #
+ # def set_time_zone
+ # Time.zone = current_user.time_zone
+ # end
+ # end
+ def zone=(time_zone)
+ Thread.current[:time_zone] = get_zone(time_zone)
+ end
+
+ # Allows override of <tt>Time.zone</tt> locally inside supplied block; resets <tt>Time.zone</tt> to existing value when done.
+ def use_zone(time_zone)
+ old_zone, ::Time.zone = ::Time.zone, get_zone(time_zone)
+ yield
+ ensure
+ ::Time.zone = old_zone
+ end
+
+ # Returns <tt>Time.zone.now</tt> when <tt>config.time_zone</tt> is set, otherwise just returns <tt>Time.now</tt>.
+ def current
+ ::Time.zone_default ? ::Time.zone.now : ::Time.now
+ end
+
+ private
+ def get_zone(time_zone)
+ return time_zone if time_zone.nil? || time_zone.is_a?(TimeZone)
+ # lookup timezone based on identifier (unless we've been passed a TZInfo::Timezone)
+ unless time_zone.respond_to?(:period_for_local)
+ time_zone = TimeZone[time_zone] || TZInfo::Timezone.get(time_zone) rescue nil
+ end
+ # Return if a TimeZone instance, or wrap in a TimeZone instance if a TZInfo::Timezone
+ if time_zone
+ time_zone.is_a?(TimeZone) ? time_zone : TimeZone.create(time_zone.name, nil, time_zone)
+ end
+ end
+ end
+
+ # Returns the simultaneous time in <tt>Time.zone</tt>.
+ #
+ # Time.zone = 'Hawaii' # => 'Hawaii'
+ # Time.utc(2000).in_time_zone # => Fri, 31 Dec 1999 14:00:00 HST -10:00
+ #
+ # This method is similar to Time#localtime, except that it uses <tt>Time.zone</tt> as the local zone
+ # instead of the operating system's time zone.
+ #
+ # You can also pass in a TimeZone instance or string that identifies a TimeZone as an argument,
+ # and the conversion will be based on that zone instead of <tt>Time.zone</tt>.
+ #
+ # Time.utc(2000).in_time_zone('Alaska') # => Fri, 31 Dec 1999 15:00:00 AKST -09:00
+ def in_time_zone(zone = ::Time.zone)
+ ActiveSupport::TimeWithZone.new(utc? ? self : getutc, ::Time.send!(:get_zone, zone))
+ end
+ end
+ end
+ end
+end \ No newline at end of file
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/dependencies.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/dependencies.rb
new file mode 100644
index 000000000..da2ece610
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/dependencies.rb
@@ -0,0 +1,552 @@
+require 'set'
+require 'active_support/core_ext/module/attribute_accessors'
+require 'active_support/core_ext/load_error'
+require 'active_support/core_ext/kernel'
+
+module Dependencies #:nodoc:
+ extend self
+
+ # Should we turn on Ruby warnings on the first load of dependent files?
+ mattr_accessor :warnings_on_first_load
+ self.warnings_on_first_load = false
+
+ # All files ever loaded.
+ mattr_accessor :history
+ self.history = Set.new
+
+ # All files currently loaded.
+ mattr_accessor :loaded
+ self.loaded = Set.new
+
+ # Should we load files or require them?
+ mattr_accessor :mechanism
+ self.mechanism = :load
+
+ # The set of directories from which we may automatically load files. Files
+ # under these directories will be reloaded on each request in development mode,
+ # unless the directory also appears in load_once_paths.
+ mattr_accessor :load_paths
+ self.load_paths = []
+
+ # The set of directories from which automatically loaded constants are loaded
+ # only once. All directories in this set must also be present in +load_paths+.
+ mattr_accessor :load_once_paths
+ self.load_once_paths = []
+
+ # An array of qualified constant names that have been loaded. Adding a name to
+ # this array will cause it to be unloaded the next time Dependencies are cleared.
+ mattr_accessor :autoloaded_constants
+ self.autoloaded_constants = []
+
+ # An array of constant names that need to be unloaded on every request. Used
+ # to allow arbitrary constants to be marked for unloading.
+ mattr_accessor :explicitly_unloadable_constants
+ self.explicitly_unloadable_constants = []
+
+ # Set to true to enable logging of const_missing and file loads
+ mattr_accessor :log_activity
+ self.log_activity = false
+
+ # An internal stack used to record which constants are loaded by any block.
+ mattr_accessor :constant_watch_stack
+ self.constant_watch_stack = []
+
+ def load?
+ mechanism == :load
+ end
+
+ def depend_on(file_name, swallow_load_errors = false)
+ path = search_for_file(file_name)
+ require_or_load(path || file_name)
+ rescue LoadError
+ raise unless swallow_load_errors
+ end
+
+ def associate_with(file_name)
+ depend_on(file_name, true)
+ end
+
+ def clear
+ log_call
+ loaded.clear
+ remove_unloadable_constants!
+ end
+
+ def require_or_load(file_name, const_path = nil)
+ log_call file_name, const_path
+ file_name = $1 if file_name =~ /^(.*)\.rb$/
+ expanded = File.expand_path(file_name)
+ return if loaded.include?(expanded)
+
+ # Record that we've seen this file *before* loading it to avoid an
+ # infinite loop with mutual dependencies.
+ loaded << expanded
+
+ begin
+ if load?
+ log "loading #{file_name}"
+
+ # Enable warnings iff this file has not been loaded before and
+ # warnings_on_first_load is set.
+ load_args = ["#{file_name}.rb"]
+ load_args << const_path unless const_path.nil?
+
+ if !warnings_on_first_load or history.include?(expanded)
+ result = load_file(*load_args)
+ else
+ enable_warnings { result = load_file(*load_args) }
+ end
+ else
+ log "requiring #{file_name}"
+ result = require file_name
+ end
+ rescue Exception
+ loaded.delete expanded
+ raise
+ end
+
+ # Record history *after* loading so first load gets warnings.
+ history << expanded
+ return result
+ end
+
+ # Is the provided constant path defined?
+ def qualified_const_defined?(path)
+ raise NameError, "#{path.inspect} is not a valid constant name!" unless
+ /^(::)?([A-Z]\w*)(::[A-Z]\w*)*$/ =~ path
+
+ names = path.to_s.split('::')
+ names.shift if names.first.empty?
+
+ # We can't use defined? because it will invoke const_missing for the parent
+ # of the name we are checking.
+ names.inject(Object) do |mod, name|
+ return false unless uninherited_const_defined?(mod, name)
+ mod.const_get name
+ end
+ return true
+ end
+
+ if Module.method(:const_defined?).arity == 1
+ # Does this module define this constant?
+ # Wrapper to accomodate changing Module#const_defined? in Ruby 1.9
+ def uninherited_const_defined?(mod, const)
+ mod.const_defined?(const)
+ end
+ else
+ def uninherited_const_defined?(mod, const) #:nodoc:
+ mod.const_defined?(const, false)
+ end
+ end
+
+ # Given +path+, a filesystem path to a ruby file, return an array of constant
+ # paths which would cause Dependencies to attempt to load this file.
+ def loadable_constants_for_path(path, bases = load_paths)
+ path = $1 if path =~ /\A(.*)\.rb\Z/
+ expanded_path = File.expand_path(path)
+
+ bases.collect do |root|
+ expanded_root = File.expand_path(root)
+ next unless %r{\A#{Regexp.escape(expanded_root)}(/|\\)} =~ expanded_path
+
+ nesting = expanded_path[(expanded_root.size)..-1]
+ nesting = nesting[1..-1] if nesting && nesting[0] == ?/
+ next if nesting.blank?
+
+ [
+ nesting.camelize,
+ # Special case: application.rb might define ApplicationControlller.
+ ('ApplicationController' if nesting == 'application')
+ ]
+ end.flatten.compact.uniq
+ end
+
+ # Search for a file in load_paths matching the provided suffix.
+ def search_for_file(path_suffix)
+ path_suffix = path_suffix + '.rb' unless path_suffix.ends_with? '.rb'
+ load_paths.each do |root|
+ path = File.join(root, path_suffix)
+ return path if File.file? path
+ end
+ nil # Gee, I sure wish we had first_match ;-)
+ end
+
+ # Does the provided path_suffix correspond to an autoloadable module?
+ # Instead of returning a boolean, the autoload base for this module is returned.
+ def autoloadable_module?(path_suffix)
+ load_paths.each do |load_path|
+ return load_path if File.directory? File.join(load_path, path_suffix)
+ end
+ nil
+ end
+
+ def load_once_path?(path)
+ load_once_paths.any? { |base| path.starts_with? base }
+ end
+
+ # Attempt to autoload the provided module name by searching for a directory
+ # matching the expect path suffix. If found, the module is created and assigned
+ # to +into+'s constants with the name +const_name+. Provided that the directory
+ # was loaded from a reloadable base path, it is added to the set of constants
+ # that are to be unloaded.
+ def autoload_module!(into, const_name, qualified_name, path_suffix)
+ return nil unless base_path = autoloadable_module?(path_suffix)
+ mod = Module.new
+ into.const_set const_name, mod
+ autoloaded_constants << qualified_name unless load_once_paths.include?(base_path)
+ return mod
+ end
+
+ # Load the file at the provided path. +const_paths+ is a set of qualified
+ # constant names. When loading the file, Dependencies will watch for the
+ # addition of these constants. Each that is defined will be marked as
+ # autoloaded, and will be removed when Dependencies.clear is next called.
+ #
+ # If the second parameter is left off, then Dependencies will construct a set
+ # of names that the file at +path+ may define. See
+ # +loadable_constants_for_path+ for more details.
+ def load_file(path, const_paths = loadable_constants_for_path(path))
+ log_call path, const_paths
+ const_paths = [const_paths].compact unless const_paths.is_a? Array
+ parent_paths = const_paths.collect { |const_path| /(.*)::[^:]+\Z/ =~ const_path ? $1 : :Object }
+
+ result = nil
+ newly_defined_paths = new_constants_in(*parent_paths) do
+ result = load_without_new_constant_marking path
+ end
+
+ autoloaded_constants.concat newly_defined_paths unless load_once_path?(path)
+ autoloaded_constants.uniq!
+ log "loading #{path} defined #{newly_defined_paths * ', '}" unless newly_defined_paths.empty?
+ return result
+ end
+
+ # Return the constant path for the provided parent and constant name.
+ def qualified_name_for(mod, name)
+ mod_name = to_constant_name mod
+ (%w(Object Kernel).include? mod_name) ? name.to_s : "#{mod_name}::#{name}"
+ end
+
+ # Load the constant named +const_name+ which is missing from +from_mod+. If
+ # it is not possible to load the constant into from_mod, try its parent module
+ # using const_missing.
+ def load_missing_constant(from_mod, const_name)
+ log_call from_mod, const_name
+ if from_mod == Kernel
+ if ::Object.const_defined?(const_name)
+ log "Returning Object::#{const_name} for Kernel::#{const_name}"
+ return ::Object.const_get(const_name)
+ else
+ log "Substituting Object for Kernel"
+ from_mod = Object
+ end
+ end
+
+ # If we have an anonymous module, all we can do is attempt to load from Object.
+ from_mod = Object if from_mod.name.blank?
+
+ unless qualified_const_defined?(from_mod.name) && from_mod.name.constantize.object_id == from_mod.object_id
+ raise ArgumentError, "A copy of #{from_mod} has been removed from the module tree but is still active!"
+ end
+
+ raise ArgumentError, "#{from_mod} is not missing constant #{const_name}!" if uninherited_const_defined?(from_mod, const_name)
+
+ qualified_name = qualified_name_for from_mod, const_name
+ path_suffix = qualified_name.underscore
+ name_error = NameError.new("uninitialized constant #{qualified_name}")
+
+ file_path = search_for_file(path_suffix)
+ if file_path && ! loaded.include?(File.expand_path(file_path)) # We found a matching file to load
+ require_or_load file_path
+ raise LoadError, "Expected #{file_path} to define #{qualified_name}" unless uninherited_const_defined?(from_mod, const_name)
+ return from_mod.const_get(const_name)
+ elsif mod = autoload_module!(from_mod, const_name, qualified_name, path_suffix)
+ return mod
+ elsif (parent = from_mod.parent) && parent != from_mod &&
+ ! from_mod.parents.any? { |p| uninherited_const_defined?(p, const_name) }
+ # If our parents do not have a constant named +const_name+ then we are free
+ # to attempt to load upwards. If they do have such a constant, then this
+ # const_missing must be due to from_mod::const_name, which should not
+ # return constants from from_mod's parents.
+ begin
+ return parent.const_missing(const_name)
+ rescue NameError => e
+ raise unless e.missing_name? qualified_name_for(parent, const_name)
+ raise name_error
+ end
+ else
+ raise name_error
+ end
+ end
+
+ # Remove the constants that have been autoloaded, and those that have been
+ # marked for unloading.
+ def remove_unloadable_constants!
+ autoloaded_constants.each { |const| remove_constant const }
+ autoloaded_constants.clear
+ explicitly_unloadable_constants.each { |const| remove_constant const }
+ end
+
+ # Determine if the given constant has been automatically loaded.
+ def autoloaded?(desc)
+ # No name => anonymous module.
+ return false if desc.is_a?(Module) && desc.name.blank?
+ name = to_constant_name desc
+ return false unless qualified_const_defined? name
+ return autoloaded_constants.include?(name)
+ end
+
+ # Will the provided constant descriptor be unloaded?
+ def will_unload?(const_desc)
+ autoloaded?(desc) ||
+ explicitly_unloadable_constants.include?(to_constant_name(const_desc))
+ end
+
+ # Mark the provided constant name for unloading. This constant will be
+ # unloaded on each request, not just the next one.
+ def mark_for_unload(const_desc)
+ name = to_constant_name const_desc
+ if explicitly_unloadable_constants.include? name
+ return false
+ else
+ explicitly_unloadable_constants << name
+ return true
+ end
+ end
+
+ # Run the provided block and detect the new constants that were loaded during
+ # its execution. Constants may only be regarded as 'new' once -- so if the
+ # block calls +new_constants_in+ again, then the constants defined within the
+ # inner call will not be reported in this one.
+ #
+ # If the provided block does not run to completion, and instead raises an
+ # exception, any new constants are regarded as being only partially defined
+ # and will be removed immediately.
+ def new_constants_in(*descs)
+ log_call(*descs)
+
+ # Build the watch frames. Each frame is a tuple of
+ # [module_name_as_string, constants_defined_elsewhere]
+ watch_frames = descs.collect do |desc|
+ if desc.is_a? Module
+ mod_name = desc.name
+ initial_constants = desc.local_constant_names
+ elsif desc.is_a?(String) || desc.is_a?(Symbol)
+ mod_name = desc.to_s
+
+ # Handle the case where the module has yet to be defined.
+ initial_constants = if qualified_const_defined?(mod_name)
+ mod_name.constantize.local_constant_names
+ else
+ []
+ end
+ else
+ raise Argument, "#{desc.inspect} does not describe a module!"
+ end
+
+ [mod_name, initial_constants]
+ end
+
+ constant_watch_stack.concat watch_frames
+
+ aborting = true
+ begin
+ yield # Now yield to the code that is to define new constants.
+ aborting = false
+ ensure
+ # Find the new constants.
+ new_constants = watch_frames.collect do |mod_name, prior_constants|
+ # Module still doesn't exist? Treat it as if it has no constants.
+ next [] unless qualified_const_defined?(mod_name)
+
+ mod = mod_name.constantize
+ next [] unless mod.is_a? Module
+ new_constants = mod.local_constant_names - prior_constants
+
+ # Make sure no other frames takes credit for these constants.
+ constant_watch_stack.each do |frame_name, constants|
+ constants.concat new_constants if frame_name == mod_name
+ end
+
+ new_constants.collect do |suffix|
+ mod_name == "Object" ? suffix : "#{mod_name}::#{suffix}"
+ end
+ end.flatten
+
+ log "New constants: #{new_constants * ', '}"
+
+ if aborting
+ log "Error during loading, removing partially loaded constants "
+ new_constants.each { |name| remove_constant name }
+ new_constants.clear
+ end
+ end
+
+ return new_constants
+ ensure
+ # Remove the stack frames that we added.
+ if defined?(watch_frames) && ! watch_frames.blank?
+ frame_ids = watch_frames.collect(&:object_id)
+ constant_watch_stack.delete_if do |watch_frame|
+ frame_ids.include? watch_frame.object_id
+ end
+ end
+ end
+
+ class LoadingModule #:nodoc:
+ # Old style environment.rb referenced this method directly. Please note, it doesn't
+ # actually *do* anything any more.
+ def self.root(*args)
+ if defined?(RAILS_DEFAULT_LOGGER)
+ RAILS_DEFAULT_LOGGER.warn "Your environment.rb uses the old syntax, it may not continue to work in future releases."
+ RAILS_DEFAULT_LOGGER.warn "For upgrade instructions please see: http://manuals.rubyonrails.com/read/book/19"
+ end
+ end
+ end
+
+ # Convert the provided const desc to a qualified constant name (as a string).
+ # A module, class, symbol, or string may be provided.
+ def to_constant_name(desc) #:nodoc:
+ name = case desc
+ when String then desc.starts_with?('::') ? desc[2..-1] : desc
+ when Symbol then desc.to_s
+ when Module
+ raise ArgumentError, "Anonymous modules have no name to be referenced by" if desc.name.blank?
+ desc.name
+ else raise TypeError, "Not a valid constant descriptor: #{desc.inspect}"
+ end
+ end
+
+ def remove_constant(const) #:nodoc:
+ return false unless qualified_const_defined? const
+
+ const = $1 if /\A::(.*)\Z/ =~ const.to_s
+ names = const.to_s.split('::')
+ if names.size == 1 # It's under Object
+ parent = Object
+ else
+ parent = (names[0..-2] * '::').constantize
+ end
+
+ log "removing constant #{const}"
+ parent.instance_eval { remove_const names.last }
+ return true
+ end
+
+protected
+ def log_call(*args)
+ if defined?(RAILS_DEFAULT_LOGGER) && RAILS_DEFAULT_LOGGER && log_activity
+ arg_str = args.collect(&:inspect) * ', '
+ /in `([a-z_\?\!]+)'/ =~ caller(1).first
+ selector = $1 || '<unknown>'
+ log "called #{selector}(#{arg_str})"
+ end
+ end
+
+ def log(msg)
+ if defined?(RAILS_DEFAULT_LOGGER) && RAILS_DEFAULT_LOGGER && log_activity
+ RAILS_DEFAULT_LOGGER.debug "Dependencies: #{msg}"
+ end
+ end
+
+end
+
+Object.instance_eval do
+ define_method(:require_or_load) { |file_name| Dependencies.require_or_load(file_name) } unless Object.respond_to?(:require_or_load)
+ define_method(:require_dependency) { |file_name| Dependencies.depend_on(file_name) } unless Object.respond_to?(:require_dependency)
+ define_method(:require_association) { |file_name| Dependencies.associate_with(file_name) } unless Object.respond_to?(:require_association)
+end
+
+class Module #:nodoc:
+ # Rename the original handler so we can chain it to the new one
+ alias :rails_original_const_missing :const_missing
+
+ # Use const_missing to autoload associations so we don't have to
+ # require_association when using single-table inheritance.
+ def const_missing(class_id)
+ Dependencies.load_missing_constant self, class_id
+ end
+
+ def unloadable(const_desc = self)
+ super(const_desc)
+ end
+
+end
+
+class Class
+ def const_missing(const_name)
+ if [Object, Kernel].include?(self) || parent == self
+ super
+ else
+ begin
+ begin
+ Dependencies.load_missing_constant self, const_name
+ rescue NameError
+ parent.send :const_missing, const_name
+ end
+ rescue NameError => e
+ # Make sure that the name we are missing is the one that caused the error
+ parent_qualified_name = Dependencies.qualified_name_for parent, const_name
+ raise unless e.missing_name? parent_qualified_name
+ qualified_name = Dependencies.qualified_name_for self, const_name
+ raise NameError.new("uninitialized constant #{qualified_name}").copy_blame!(e)
+ end
+ end
+ end
+end
+
+class Object
+ alias_method :load_without_new_constant_marking, :load
+
+ def load(file, *extras) #:nodoc:
+ Dependencies.new_constants_in(Object) { super }
+ rescue Exception => exception # errors from loading file
+ exception.blame_file! file
+ raise
+ end
+
+ def require(file, *extras) #:nodoc:
+ Dependencies.new_constants_in(Object) { super }
+ rescue Exception => exception # errors from required file
+ exception.blame_file! file
+ raise
+ end
+
+ # Mark the given constant as unloadable. Unloadable constants are removed each
+ # time dependencies are cleared.
+ #
+ # Note that marking a constant for unloading need only be done once. Setup
+ # or init scripts may list each unloadable constant that may need unloading;
+ # each constant will be removed for every subsequent clear, as opposed to for
+ # the first clear.
+ #
+ # The provided constant descriptor may be a (non-anonymous) module or class,
+ # or a qualified constant name as a string or symbol.
+ #
+ # Returns true if the constant was not previously marked for unloading, false
+ # otherwise.
+ def unloadable(const_desc)
+ Dependencies.mark_for_unload const_desc
+ end
+end
+
+# Add file-blaming to exceptions
+class Exception #:nodoc:
+ def blame_file!(file)
+ (@blamed_files ||= []).unshift file
+ end
+
+ def blamed_files
+ @blamed_files ||= []
+ end
+
+ def describe_blame
+ return nil if blamed_files.empty?
+ "This error occurred while loading the following files:\n #{blamed_files.join "\n "}"
+ end
+
+ def copy_blame!(exc)
+ @blamed_files = exc.blamed_files.clone
+ self
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/deprecation.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/deprecation.rb
new file mode 100644
index 000000000..758aef544
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/deprecation.rb
@@ -0,0 +1,205 @@
+require 'yaml'
+
+module ActiveSupport
+ module Deprecation #:nodoc:
+ mattr_accessor :debug
+ self.debug = false
+
+ # Choose the default warn behavior according to RAILS_ENV.
+ # Ignore deprecation warnings in production.
+ DEFAULT_BEHAVIORS = {
+ 'test' => Proc.new { |message, callstack|
+ $stderr.puts(message)
+ $stderr.puts callstack.join("\n ") if debug
+ },
+ 'development' => Proc.new { |message, callstack|
+ logger = defined?(::RAILS_DEFAULT_LOGGER) ? ::RAILS_DEFAULT_LOGGER : Logger.new($stderr)
+ logger.warn message
+ logger.debug callstack.join("\n ") if debug
+ }
+ }
+
+ class << self
+ def warn(message = nil, callstack = caller)
+ behavior.call(deprecation_message(callstack, message), callstack) if behavior && !silenced?
+ end
+
+ def default_behavior
+ if defined?(RAILS_ENV)
+ DEFAULT_BEHAVIORS[RAILS_ENV.to_s]
+ else
+ DEFAULT_BEHAVIORS['test']
+ end
+ end
+
+ # Have deprecations been silenced?
+ def silenced?
+ @silenced = false unless defined?(@silenced)
+ @silenced
+ end
+
+ # Silence deprecation warnings within the block.
+ def silence
+ old_silenced, @silenced = @silenced, true
+ yield
+ ensure
+ @silenced = old_silenced
+ end
+
+ attr_writer :silenced
+
+
+ private
+ def deprecation_message(callstack, message = nil)
+ message ||= "You are using deprecated behavior which will be removed from Rails 2.0."
+ "DEPRECATION WARNING: #{message} See http://www.rubyonrails.org/deprecation for details. #{deprecation_caller_message(callstack)}"
+ end
+
+ def deprecation_caller_message(callstack)
+ file, line, method = extract_callstack(callstack)
+ if file
+ if line && method
+ "(called from #{method} at #{file}:#{line})"
+ else
+ "(called from #{file}:#{line})"
+ end
+ end
+ end
+
+ def extract_callstack(callstack)
+ if md = callstack.first.match(/^(.+?):(\d+)(?::in `(.*?)')?/)
+ md.captures
+ else
+ callstack.first
+ end
+ end
+ end
+
+ # Behavior is a block that takes a message argument.
+ mattr_accessor :behavior
+ self.behavior = default_behavior
+
+ # Warnings are not silenced by default.
+ self.silenced = false
+
+ module ClassMethods #:nodoc:
+ # Declare that a method has been deprecated.
+ def deprecate(*method_names)
+ options = method_names.extract_options!
+ method_names = method_names + options.keys
+ method_names.each do |method_name|
+ alias_method_chain(method_name, :deprecation) do |target, punctuation|
+ class_eval(<<-EOS, __FILE__, __LINE__)
+ def #{target}_with_deprecation#{punctuation}(*args, &block)
+ ::ActiveSupport::Deprecation.warn(self.class.deprecated_method_warning(:#{method_name}, #{options[method_name].inspect}), caller)
+ #{target}_without_deprecation#{punctuation}(*args, &block)
+ end
+ EOS
+ end
+ end
+ end
+
+ def deprecated_method_warning(method_name, message=nil)
+ warning = "#{method_name} is deprecated and will be removed from Rails #{deprecation_horizon}"
+ case message
+ when Symbol then "#{warning} (use #{message} instead)"
+ when String then "#{warning} (#{message})"
+ else warning
+ end
+ end
+
+ def deprecation_horizon
+ '2.0'
+ end
+ end
+
+ module Assertions #:nodoc:
+ def assert_deprecated(match = nil, &block)
+ result, warnings = collect_deprecations(&block)
+ assert !warnings.empty?, "Expected a deprecation warning within the block but received none"
+ if match
+ match = Regexp.new(Regexp.escape(match)) unless match.is_a?(Regexp)
+ assert warnings.any? { |w| w =~ match }, "No deprecation warning matched #{match}: #{warnings.join(', ')}"
+ end
+ result
+ end
+
+ def assert_not_deprecated(&block)
+ result, deprecations = collect_deprecations(&block)
+ assert deprecations.empty?, "Expected no deprecation warning within the block but received #{deprecations.size}: \n #{deprecations * "\n "}"
+ result
+ end
+
+ private
+ def collect_deprecations
+ old_behavior = ActiveSupport::Deprecation.behavior
+ deprecations = []
+ ActiveSupport::Deprecation.behavior = Proc.new do |message, callstack|
+ deprecations << message
+ end
+ result = yield
+ [result, deprecations]
+ ensure
+ ActiveSupport::Deprecation.behavior = old_behavior
+ end
+ end
+
+ # Stand-in for <tt>@request</tt>, <tt>@attributes</tt>, <tt>@params</tt>, etc.
+ # which emits deprecation warnings on any method call (except +inspect+).
+ class DeprecatedInstanceVariableProxy #:nodoc:
+ silence_warnings do
+ instance_methods.each { |m| undef_method m unless m =~ /^__/ }
+ end
+
+ def initialize(instance, method, var = "@#{method}")
+ @instance, @method, @var = instance, method, var
+ end
+
+ # Don't give a deprecation warning on inspect since test/unit and error
+ # logs rely on it for diagnostics.
+ def inspect
+ target.inspect
+ end
+
+ private
+ def method_missing(called, *args, &block)
+ warn caller, called, args
+ target.__send__(called, *args, &block)
+ end
+
+ def target
+ @instance.__send__(@method)
+ end
+
+ def warn(callstack, called, args)
+ ActiveSupport::Deprecation.warn("#{@var} is deprecated! Call #{@method}.#{called} instead of #{@var}.#{called}. Args: #{args.inspect}", callstack)
+ end
+ end
+
+ end
+end
+
+class Module
+ include ActiveSupport::Deprecation::ClassMethods
+end
+
+require 'test/unit/error'
+
+module Test
+ module Unit
+ class TestCase
+ include ActiveSupport::Deprecation::Assertions
+ end
+
+ class Error # :nodoc:
+ # Silence warnings when reporting test errors.
+ def message_with_silenced_deprecation
+ ActiveSupport::Deprecation.silence do
+ message_without_silenced_deprecation
+ end
+ end
+
+ alias_method_chain :message, :silenced_deprecation
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/duration.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/duration.rb
new file mode 100644
index 000000000..8eae85d38
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/duration.rb
@@ -0,0 +1,96 @@
+module ActiveSupport
+ # Provides accurate date and time measurements using Date#advance and
+ # Time#advance, respectively. It mainly supports the methods on Numeric,
+ # such as in this example:
+ #
+ # 1.month.ago # equivalent to Time.now.advance(:months => -1)
+ class Duration < BasicObject
+ attr_accessor :value, :parts
+
+ def initialize(value, parts) #:nodoc:
+ @value, @parts = value, parts
+ end
+
+ # Adds another Duration or a Numeric to this Duration. Numeric values
+ # are treated as seconds.
+ def +(other)
+ if Duration === other
+ Duration.new(value + other.value, @parts + other.parts)
+ else
+ Duration.new(value + other, @parts + [[:seconds, other]])
+ end
+ end
+
+ # Subtracts another Duration or a Numeric from this Duration. Numeric
+ # values are treated as seconds.
+ def -(other)
+ self + (-other)
+ end
+
+ def -@ #:nodoc:
+ Duration.new(-value, parts.map { |type,number| [type, -number] })
+ end
+
+ def is_a?(klass) #:nodoc:
+ klass == Duration || super
+ end
+
+ # Returns true if <tt>other</tt> is also a Duration instance with the
+ # same <tt>value</tt>, or if <tt>other == value</tt>.
+ def ==(other)
+ if Duration === other
+ other.value == value
+ else
+ other == value
+ end
+ end
+
+ def self.===(other) #:nodoc:
+ other.is_a?(Duration) rescue super
+ end
+
+ # Calculates a new Time or Date that is as far in the future
+ # as this Duration represents.
+ def since(time = ::Time.current)
+ sum(1, time)
+ end
+ alias :from_now :since
+
+ # Calculates a new Time or Date that is as far in the past
+ # as this Duration represents.
+ def ago(time = ::Time.current)
+ sum(-1, time)
+ end
+ alias :until :ago
+
+ def inspect #:nodoc:
+ consolidated = parts.inject(::Hash.new(0)) { |h,part| h[part.first] += part.last; h }
+ [:years, :months, :days, :minutes, :seconds].map do |length|
+ n = consolidated[length]
+ "#{n} #{n == 1 ? length.to_s.singularize : length.to_s}" if n.nonzero?
+ end.compact.to_sentence
+ end
+
+ protected
+
+ def sum(sign, time = ::Time.current) #:nodoc:
+ parts.inject(time) do |t,(type,number)|
+ if t.acts_like?(:time) || t.acts_like?(:date)
+ if type == :seconds
+ t.since(sign * number)
+ else
+ t.advance(type => sign * number)
+ end
+ else
+ raise ::ArgumentError, "expected a time or date, got #{time.inspect}"
+ end
+ end
+ end
+
+ private
+
+ def method_missing(method, *args, &block) #:nodoc:
+ value.send(method, *args)
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/gzip.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/gzip.rb
new file mode 100644
index 000000000..35a50e9a7
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/gzip.rb
@@ -0,0 +1,25 @@
+require 'zlib'
+require 'stringio'
+
+module ActiveSupport
+ # A convenient wrapper for the zlib standard library that allows compression/decompression of strings with gzip.
+ module Gzip
+ class Stream < StringIO
+ def close; rewind; end
+ end
+
+ # Decompresses a gzipped string.
+ def self.decompress(source)
+ Zlib::GzipReader.new(StringIO.new(source)).read
+ end
+
+ # Compresses a string using gzip.
+ def self.compress(source)
+ output = Stream.new
+ gz = Zlib::GzipWriter.new(output)
+ gz.write(source)
+ gz.close
+ output.string
+ end
+ end
+end \ No newline at end of file
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/inflections.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/inflections.rb
new file mode 100644
index 000000000..967722c2b
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/inflections.rb
@@ -0,0 +1,53 @@
+Inflector.inflections do |inflect|
+ inflect.plural(/$/, 's')
+ inflect.plural(/s$/i, 's')
+ inflect.plural(/(ax|test)is$/i, '\1es')
+ inflect.plural(/(octop|vir)us$/i, '\1i')
+ inflect.plural(/(alias|status)$/i, '\1es')
+ inflect.plural(/(bu)s$/i, '\1ses')
+ inflect.plural(/(buffal|tomat)o$/i, '\1oes')
+ inflect.plural(/([ti])um$/i, '\1a')
+ inflect.plural(/sis$/i, 'ses')
+ inflect.plural(/(?:([^f])fe|([lr])f)$/i, '\1\2ves')
+ inflect.plural(/(hive)$/i, '\1s')
+ inflect.plural(/([^aeiouy]|qu)y$/i, '\1ies')
+ inflect.plural(/(x|ch|ss|sh)$/i, '\1es')
+ inflect.plural(/(matr|vert|ind)(?:ix|ex)$/i, '\1ices')
+ inflect.plural(/([m|l])ouse$/i, '\1ice')
+ inflect.plural(/^(ox)$/i, '\1en')
+ inflect.plural(/(quiz)$/i, '\1zes')
+
+ inflect.singular(/s$/i, '')
+ inflect.singular(/(n)ews$/i, '\1ews')
+ inflect.singular(/([ti])a$/i, '\1um')
+ inflect.singular(/((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$/i, '\1\2sis')
+ inflect.singular(/(^analy)ses$/i, '\1sis')
+ inflect.singular(/([^f])ves$/i, '\1fe')
+ inflect.singular(/(hive)s$/i, '\1')
+ inflect.singular(/(tive)s$/i, '\1')
+ inflect.singular(/([lr])ves$/i, '\1f')
+ inflect.singular(/([^aeiouy]|qu)ies$/i, '\1y')
+ inflect.singular(/(s)eries$/i, '\1eries')
+ inflect.singular(/(m)ovies$/i, '\1ovie')
+ inflect.singular(/(x|ch|ss|sh)es$/i, '\1')
+ inflect.singular(/([m|l])ice$/i, '\1ouse')
+ inflect.singular(/(bus)es$/i, '\1')
+ inflect.singular(/(o)es$/i, '\1')
+ inflect.singular(/(shoe)s$/i, '\1')
+ inflect.singular(/(cris|ax|test)es$/i, '\1is')
+ inflect.singular(/(octop|vir)i$/i, '\1us')
+ inflect.singular(/(alias|status)es$/i, '\1')
+ inflect.singular(/^(ox)en/i, '\1')
+ inflect.singular(/(vert|ind)ices$/i, '\1ex')
+ inflect.singular(/(matr)ices$/i, '\1ix')
+ inflect.singular(/(quiz)zes$/i, '\1')
+
+ inflect.irregular('person', 'people')
+ inflect.irregular('man', 'men')
+ inflect.irregular('child', 'children')
+ inflect.irregular('sex', 'sexes')
+ inflect.irregular('move', 'moves')
+ inflect.irregular('cow', 'kine')
+
+ inflect.uncountable(%w(equipment information rice money species series fish sheep))
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/inflector.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/inflector.rb
new file mode 100644
index 000000000..a4fd61931
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/inflector.rb
@@ -0,0 +1,308 @@
+require 'singleton'
+
+# The Inflector transforms words from singular to plural, class names to table names, modularized class names to ones without,
+# and class names to foreign keys. The default inflections for pluralization, singularization, and uncountable words are kept
+# in inflections.rb.
+#
+# The Rails core team has stated patches for the inflections library will not be accepted
+# in order to avoid breaking legacy applications which may be relying on errant inflections.
+# If you discover an incorrect inflection and require it for your application, you'll need
+# to correct it yourself (explained below).
+module Inflector
+ # A singleton instance of this class is yielded by Inflector.inflections, which can then be used to specify additional
+ # inflection rules. Examples:
+ #
+ # Inflector.inflections do |inflect|
+ # inflect.plural /^(ox)$/i, '\1\2en'
+ # inflect.singular /^(ox)en/i, '\1'
+ #
+ # inflect.irregular 'octopus', 'octopi'
+ #
+ # inflect.uncountable "equipment"
+ # end
+ #
+ # New rules are added at the top. So in the example above, the irregular rule for octopus will now be the first of the
+ # pluralization and singularization rules that is runs. This guarantees that your rules run before any of the rules that may
+ # already have been loaded.
+ class Inflections
+ include Singleton
+
+ attr_reader :plurals, :singulars, :uncountables
+
+ def initialize
+ @plurals, @singulars, @uncountables = [], [], []
+ end
+
+ # Specifies a new pluralization rule and its replacement. The rule can either be a string or a regular expression.
+ # The replacement should always be a string that may include references to the matched data from the rule.
+ def plural(rule, replacement)
+ @plurals.insert(0, [rule, replacement])
+ end
+
+ # Specifies a new singularization rule and its replacement. The rule can either be a string or a regular expression.
+ # The replacement should always be a string that may include references to the matched data from the rule.
+ def singular(rule, replacement)
+ @singulars.insert(0, [rule, replacement])
+ end
+
+ # Specifies a new irregular that applies to both pluralization and singularization at the same time. This can only be used
+ # for strings, not regular expressions. You simply pass the irregular in singular and plural form.
+ #
+ # Examples:
+ # irregular 'octopus', 'octopi'
+ # irregular 'person', 'people'
+ def irregular(singular, plural)
+ if singular[0,1].upcase == plural[0,1].upcase
+ plural(Regexp.new("(#{singular[0,1]})#{singular[1..-1]}$", "i"), '\1' + plural[1..-1])
+ singular(Regexp.new("(#{plural[0,1]})#{plural[1..-1]}$", "i"), '\1' + singular[1..-1])
+ else
+ plural(Regexp.new("#{singular[0,1].upcase}(?i)#{singular[1..-1]}$"), plural[0,1].upcase + plural[1..-1])
+ plural(Regexp.new("#{singular[0,1].downcase}(?i)#{singular[1..-1]}$"), plural[0,1].downcase + plural[1..-1])
+ singular(Regexp.new("#{plural[0,1].upcase}(?i)#{plural[1..-1]}$"), singular[0,1].upcase + singular[1..-1])
+ singular(Regexp.new("#{plural[0,1].downcase}(?i)#{plural[1..-1]}$"), singular[0,1].downcase + singular[1..-1])
+ end
+ end
+
+ # Add uncountable words that shouldn't be attempted inflected.
+ #
+ # Examples:
+ # uncountable "money"
+ # uncountable "money", "information"
+ # uncountable %w( money information rice )
+ def uncountable(*words)
+ (@uncountables << words).flatten!
+ end
+
+ # Clears the loaded inflections within a given scope (default is <tt>:all</tt>).
+ # Give the scope as a symbol of the inflection type, the options are: <tt>:plurals</tt>,
+ # <tt>:singulars</tt>, <tt>:uncountables</tt>.
+ #
+ # Examples:
+ # clear :all
+ # clear :plurals
+ def clear(scope = :all)
+ case scope
+ when :all
+ @plurals, @singulars, @uncountables = [], [], []
+ else
+ instance_variable_set "@#{scope}", []
+ end
+ end
+ end
+
+ extend self
+
+ # Yields a singleton instance of Inflector::Inflections so you can specify additional
+ # inflector rules.
+ #
+ # Example:
+ # Inflector.inflections do |inflect|
+ # inflect.uncountable "rails"
+ # end
+ def inflections
+ if block_given?
+ yield Inflections.instance
+ else
+ Inflections.instance
+ end
+ end
+
+ # Returns the plural form of the word in the string.
+ #
+ # Examples:
+ # "post".pluralize # => "posts"
+ # "octopus".pluralize # => "octopi"
+ # "sheep".pluralize # => "sheep"
+ # "words".pluralize # => "words"
+ # "the blue mailman".pluralize # => "the blue mailmen"
+ # "CamelOctopus".pluralize # => "CamelOctopi"
+ def pluralize(word)
+ result = word.to_s.dup
+
+ if word.empty? || inflections.uncountables.include?(result.downcase)
+ result
+ else
+ inflections.plurals.each { |(rule, replacement)| break if result.gsub!(rule, replacement) }
+ result
+ end
+ end
+
+ # The reverse of +pluralize+, returns the singular form of a word in a string.
+ #
+ # Examples:
+ # "posts".singularize # => "post"
+ # "octopi".singularize # => "octopus"
+ # "sheep".singluarize # => "sheep"
+ # "word".singluarize # => "word"
+ # "the blue mailmen".singularize # => "the blue mailman"
+ # "CamelOctopi".singularize # => "CamelOctopus"
+ def singularize(word)
+ result = word.to_s.dup
+
+ if inflections.uncountables.include?(result.downcase)
+ result
+ else
+ inflections.singulars.each { |(rule, replacement)| break if result.gsub!(rule, replacement) }
+ result
+ end
+ end
+
+ # By default, +camelize+ converts strings to UpperCamelCase. If the argument to +camelize+
+ # is set to <tt>:lower</tt> then +camelize+ produces lowerCamelCase.
+ #
+ # +camelize+ will also convert '/' to '::' which is useful for converting paths to namespaces.
+ #
+ # Examples:
+ # "active_record".camelize # => "ActiveRecord"
+ # "active_record".camelize(:lower) # => "activeRecord"
+ # "active_record/errors".camelize # => "ActiveRecord::Errors"
+ # "active_record/errors".camelize(:lower) # => "activeRecord::Errors"
+ def camelize(lower_case_and_underscored_word, first_letter_in_uppercase = true)
+ if first_letter_in_uppercase
+ lower_case_and_underscored_word.to_s.gsub(/\/(.?)/) { "::#{$1.upcase}" }.gsub(/(?:^|_)(.)/) { $1.upcase }
+ else
+ lower_case_and_underscored_word.first + camelize(lower_case_and_underscored_word)[1..-1]
+ end
+ end
+
+ # Capitalizes all the words and replaces some characters in the string to create
+ # a nicer looking title. +titleize+ is meant for creating pretty output. It is not
+ # used in the Rails internals.
+ #
+ # +titleize+ is also aliased as as +titlecase+.
+ #
+ # Examples:
+ # "man from the boondocks".titleize # => "Man From The Boondocks"
+ # "x-men: the last stand".titleize # => "X Men: The Last Stand"
+ def titleize(word)
+ humanize(underscore(word)).gsub(/\b('?[a-z])/) { $1.capitalize }
+ end
+
+ # The reverse of +camelize+. Makes an underscored, lowercase form from the expression in the string.
+ #
+ # Changes '::' to '/' to convert namespaces to paths.
+ #
+ # Examples:
+ # "ActiveRecord".underscore # => "active_record"
+ # "ActiveRecord::Errors".underscore # => active_record/errors
+ def underscore(camel_cased_word)
+ camel_cased_word.to_s.gsub(/::/, '/').
+ gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
+ gsub(/([a-z\d])([A-Z])/,'\1_\2').
+ tr("-", "_").
+ downcase
+ end
+
+ # Replaces underscores with dashes in the string.
+ #
+ # Example:
+ # "puni_puni" # => "puni-puni"
+ def dasherize(underscored_word)
+ underscored_word.gsub(/_/, '-')
+ end
+
+ # Capitalizes the first word and turns underscores into spaces and strips a
+ # trailing "_id", if any. Like +titleize+, this is meant for creating pretty output.
+ #
+ # Examples:
+ # "employee_salary" # => "Employee salary"
+ # "author_id" # => "Author"
+ def humanize(lower_case_and_underscored_word)
+ lower_case_and_underscored_word.to_s.gsub(/_id$/, "").gsub(/_/, " ").capitalize
+ end
+
+ # Removes the module part from the expression in the string.
+ #
+ # Examples:
+ # "ActiveRecord::CoreExtensions::String::Inflections".demodulize # => "Inflections"
+ # "Inflections".demodulize # => "Inflections"
+ def demodulize(class_name_in_module)
+ class_name_in_module.to_s.gsub(/^.*::/, '')
+ end
+
+ # Create the name of a table like Rails does for models to table names. This method
+ # uses the +pluralize+ method on the last word in the string.
+ #
+ # Examples
+ # "RawScaledScorer".tableize # => "raw_scaled_scorers"
+ # "egg_and_ham".tableize # => "egg_and_hams"
+ # "fancyCategory".tableize # => "fancy_categories"
+ def tableize(class_name)
+ pluralize(underscore(class_name))
+ end
+
+ # Create a class name from a plural table name like Rails does for table names to models.
+ # Note that this returns a string and not a Class. (To convert to an actual class
+ # follow +classify+ with +constantize+.)
+ #
+ # Examples:
+ # "egg_and_hams".classify # => "EggAndHam"
+ # "posts".classify # => "Post"
+ #
+ # Singular names are not handled correctly:
+ # "business".classify # => "Busines"
+ def classify(table_name)
+ # strip out any leading schema name
+ camelize(singularize(table_name.to_s.sub(/.*\./, '')))
+ end
+
+ # Creates a foreign key name from a class name.
+ # +separate_class_name_and_id_with_underscore+ sets whether
+ # the method should put '_' between the name and 'id'.
+ #
+ # Examples:
+ # "Message".foreign_key # => "message_id"
+ # "Message".foreign_key(false) # => "messageid"
+ # "Admin::Post".foreign_key # => "post_id"
+ def foreign_key(class_name, separate_class_name_and_id_with_underscore = true)
+ underscore(demodulize(class_name)) + (separate_class_name_and_id_with_underscore ? "_id" : "id")
+ end
+
+ # Tries to find a constant with the name specified in the argument string:
+ #
+ # "Module".constantize # => Module
+ # "Test::Unit".constantize # => Test::Unit
+ #
+ # The name is assumed to be the one of a top-level constant, no matter whether
+ # it starts with "::" or not. No lexical context is taken into account:
+ #
+ # C = 'outside'
+ # module M
+ # C = 'inside'
+ # C # => 'inside'
+ # "C".constantize # => 'outside', same as ::C
+ # end
+ #
+ # NameError is raised when the name is not in CamelCase or the constant is
+ # unknown.
+ def constantize(camel_cased_word)
+ unless /\A(?:::)?([A-Z]\w*(?:::[A-Z]\w*)*)\z/ =~ camel_cased_word
+ raise NameError, "#{camel_cased_word.inspect} is not a valid constant name!"
+ end
+
+ Object.module_eval("::#{$1}", __FILE__, __LINE__)
+ end
+
+ # Turns a number into an ordinal string used to denote the position in an
+ # ordered sequence such as 1st, 2nd, 3rd, 4th.
+ #
+ # Examples:
+ # ordinalize(1) # => "1st"
+ # ordinalize(2) # => "2nd"
+ # ordinalize(1002) # => "1002nd"
+ # ordinalize(1003) # => "1003rd"
+ def ordinalize(number)
+ if (11..13).include?(number.to_i % 100)
+ "#{number}th"
+ else
+ case number.to_i % 10
+ when 1; "#{number}st"
+ when 2; "#{number}nd"
+ when 3; "#{number}rd"
+ else "#{number}th"
+ end
+ end
+ end
+end
+
+require File.dirname(__FILE__) + '/inflections'
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/json.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/json.rb
new file mode 100644
index 000000000..54a7becd0
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/json.rb
@@ -0,0 +1,23 @@
+module ActiveSupport
+ # If true, use ISO 8601 format for dates and times. Otherwise, fall back to the Active Support legacy format.
+ mattr_accessor :use_standard_json_time_format
+
+ class << self
+ def escape_html_entities_in_json
+ @escape_html_entities_in_json
+ end
+
+ def escape_html_entities_in_json=(value)
+ ActiveSupport::JSON::Encoding.escape_regex = \
+ if value
+ /[\010\f\n\r\t"\\><&]/
+ else
+ /[\010\f\n\r\t"\\]/
+ end
+ @escape_html_entities_in_json = value
+ end
+ end
+end
+
+require 'active_support/json/encoding'
+require 'active_support/json/decoding'
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/json/decoding.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/json/decoding.rb
new file mode 100644
index 000000000..fdb219dbf
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/json/decoding.rb
@@ -0,0 +1,63 @@
+require 'yaml'
+require 'strscan'
+
+module ActiveSupport
+ module JSON
+ class ParseError < StandardError
+ end
+
+ class << self
+ # Converts a JSON string into a Ruby object.
+ def decode(json)
+ YAML.load(convert_json_to_yaml(json))
+ rescue ArgumentError => e
+ raise ParseError, "Invalid JSON string"
+ end
+
+ protected
+ # matches YAML-formatted dates
+ DATE_REGEX = /^\d{4}-\d{2}-\d{2}|\d{4}-\d{1,2}-\d{1,2}[ \t]+\d{1,2}:\d{2}:\d{2}(\.[0-9]*)?(([ \t]*)Z|[-+]\d{2}?(:\d{2})?)?$/
+
+ # Ensure that ":" and "," are always followed by a space
+ def convert_json_to_yaml(json) #:nodoc:
+ scanner, quoting, marks, pos, times = StringScanner.new(json), false, [], nil, []
+ while scanner.scan_until(/(\\['"]|['":,\\]|\\.)/)
+ case char = scanner[1]
+ when '"', "'"
+ if !quoting
+ quoting = char
+ pos = scanner.pos
+ elsif quoting == char
+ if json[pos..scanner.pos-2] =~ DATE_REGEX
+ # found a date, track the exact positions of the quotes so we can remove them later.
+ # oh, and increment them for each current mark, each one is an extra padded space that bumps
+ # the position in the final YAML output
+ total_marks = marks.size
+ times << pos+total_marks << scanner.pos+total_marks
+ end
+ quoting = false
+ end
+ when ":",","
+ marks << scanner.pos - 1 unless quoting
+ end
+ end
+
+ if marks.empty?
+ json.gsub(/\\\//, '/')
+ else
+ left_pos = [-1].push(*marks)
+ right_pos = marks << json.length
+ output = []
+ left_pos.each_with_index do |left, i|
+ output << json[left.succ..right_pos[i]]
+ end
+ output = output * " "
+
+ times.each { |i| output[i-1] = ' ' }
+ output.gsub!(/\\\//, '/')
+ output
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/json/encoders/date.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/json/encoders/date.rb
new file mode 100644
index 000000000..cb9419d29
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/json/encoders/date.rb
@@ -0,0 +1,14 @@
+class Date
+ # Returns a JSON string representing the date.
+ #
+ # ==== Example:
+ # Date.new(2005,2,1).to_json
+ # # => "2005/02/01"
+ def to_json(options = nil)
+ if ActiveSupport.use_standard_json_time_format
+ %("#{strftime("%Y-%m-%d")}")
+ else
+ %("#{strftime("%Y/%m/%d")}")
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/json/encoders/date_time.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/json/encoders/date_time.rb
new file mode 100644
index 000000000..d41c3e978
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/json/encoders/date_time.rb
@@ -0,0 +1,14 @@
+class DateTime
+ # Returns a JSON string representing the datetime.
+ #
+ # ==== Example:
+ # DateTime.civil(2005,2,1,15,15,10).to_json
+ # # => "2005/02/01 15:15:10 +0000"
+ def to_json(options = nil)
+ if ActiveSupport.use_standard_json_time_format
+ xmlschema.inspect
+ else
+ %("#{strftime("%Y/%m/%d %H:%M:%S %z")}")
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/json/encoders/enumerable.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/json/encoders/enumerable.rb
new file mode 100644
index 000000000..881b1d62c
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/json/encoders/enumerable.rb
@@ -0,0 +1,12 @@
+module Enumerable
+ # Returns a JSON string representing the enumerable. Any +options+
+ # given will be passed on to its elements. For example:
+ #
+ # users = User.find(:all)
+ # # => users.to_json(:only => :name)
+ #
+ # will pass the <tt>:only => :name</tt> option to each user.
+ def to_json(options = {}) #:nodoc:
+ "[#{map { |value| ActiveSupport::JSON.encode(value, options) } * ', '}]"
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/json/encoders/false_class.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/json/encoders/false_class.rb
new file mode 100644
index 000000000..bf0844334
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/json/encoders/false_class.rb
@@ -0,0 +1,5 @@
+class FalseClass
+ def to_json(options = nil) #:nodoc:
+ 'false'
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/json/encoders/hash.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/json/encoders/hash.rb
new file mode 100644
index 000000000..b9bdd55fa
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/json/encoders/hash.rb
@@ -0,0 +1,47 @@
+class Hash
+ # Returns a JSON string representing the hash.
+ #
+ # Without any +options+, the returned JSON string will include all
+ # the hash keys. For example:
+ #
+ # { :name => "Konata Izumi", 'age' => 16, 1 => 2 }.to_json
+ # # => {"name": "Konata Izumi", 1: 2, "age": 16}
+ #
+ # The keys in the JSON string are unordered due to the nature of hashes.
+ #
+ # The <tt>:only</tt> and <tt>:except</tt> options can be used to limit the
+ # attributes included, and will accept 1 or more hash keys to include/exclude.
+ #
+ # { :name => "Konata Izumi", 'age' => 16, 1 => 2 }.to_json(:only => [:name, 'age'])
+ # # => {"name": "Konata Izumi", "age": 16}
+ #
+ # { :name => "Konata Izumi", 'age' => 16, 1 => 2 }.to_json(:except => 1)
+ # # => {"name": "Konata Izumi", "age": 16}
+ #
+ # The +options+ also filter down to any hash values. This is particularly
+ # useful for converting hashes containing ActiveRecord objects or any object
+ # that responds to options in their <tt>to_json</tt> method. For example:
+ #
+ # users = User.find(:all)
+ # { :users => users, :count => users.size }.to_json(:include => :posts)
+ #
+ # would pass the <tt>:include => :posts</tt> option to <tt>users</tt>,
+ # allowing the posts association in the User model to be converted to JSON
+ # as well.
+ def to_json(options = {}) #:nodoc:
+ hash_keys = self.keys
+
+ if options[:except]
+ hash_keys = hash_keys - Array(options[:except])
+ elsif options[:only]
+ hash_keys = hash_keys & Array(options[:only])
+ end
+
+ returning result = '{' do
+ result << hash_keys.map do |key|
+ "#{ActiveSupport::JSON.encode(key)}: #{ActiveSupport::JSON.encode(self[key], options)}"
+ end * ', '
+ result << '}'
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/json/encoders/nil_class.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/json/encoders/nil_class.rb
new file mode 100644
index 000000000..4763471ac
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/json/encoders/nil_class.rb
@@ -0,0 +1,5 @@
+class NilClass
+ def to_json(options = nil) #:nodoc:
+ 'null'
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/json/encoders/numeric.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/json/encoders/numeric.rb
new file mode 100644
index 000000000..38713fb36
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/json/encoders/numeric.rb
@@ -0,0 +1,5 @@
+class Numeric
+ def to_json(options = nil) #:nodoc:
+ to_s
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/json/encoders/object.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/json/encoders/object.rb
new file mode 100644
index 000000000..ca215d496
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/json/encoders/object.rb
@@ -0,0 +1,6 @@
+class Object
+ # Dumps object in JSON (JavaScript Object Notation). See www.json.org for more info.
+ def to_json(options = {})
+ ActiveSupport::JSON.encode(instance_values, options)
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/json/encoders/regexp.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/json/encoders/regexp.rb
new file mode 100644
index 000000000..b6116b70b
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/json/encoders/regexp.rb
@@ -0,0 +1,5 @@
+class Regexp
+ def to_json(options = nil) #:nodoc:
+ inspect
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/json/encoders/string.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/json/encoders/string.rb
new file mode 100644
index 000000000..5ef797955
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/json/encoders/string.rb
@@ -0,0 +1,36 @@
+module ActiveSupport
+ module JSON
+ module Encoding
+ mattr_accessor :escape_regex
+
+ ESCAPED_CHARS = {
+ "\010" => '\b',
+ "\f" => '\f',
+ "\n" => '\n',
+ "\r" => '\r',
+ "\t" => '\t',
+ '"' => '\"',
+ '\\' => '\\\\',
+ '>' => '\u003E',
+ '<' => '\u003C',
+ '&' => '\u0026'
+ }
+ end
+ end
+end
+
+ActiveSupport.escape_html_entities_in_json = true
+
+class String
+ def to_json(options = nil) #:nodoc:
+ json = '"' + gsub(ActiveSupport::JSON::Encoding.escape_regex) { |s|
+ ActiveSupport::JSON::Encoding::ESCAPED_CHARS[s]
+ }
+ json.force_encoding('ascii-8bit') if respond_to?(:force_encoding)
+ json.gsub(/([\xC0-\xDF][\x80-\xBF]|
+ [\xE0-\xEF][\x80-\xBF]{2}|
+ [\xF0-\xF7][\x80-\xBF]{3})+/nx) { |s|
+ s.unpack("U*").pack("n*").unpack("H*")[0].gsub(/.{4}/, '\\\\u\&')
+ } + '"'
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/json/encoders/symbol.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/json/encoders/symbol.rb
new file mode 100644
index 000000000..485112f97
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/json/encoders/symbol.rb
@@ -0,0 +1,5 @@
+class Symbol
+ def to_json(options = {}) #:nodoc:
+ ActiveSupport::JSON.encode(to_s, options)
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/json/encoders/time.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/json/encoders/time.rb
new file mode 100644
index 000000000..57ed3c9e3
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/json/encoders/time.rb
@@ -0,0 +1,14 @@
+class Time
+ # Returns a JSON string representing the time.
+ #
+ # ==== Example:
+ # Time.utc(2005,2,1,15,15,10).to_json
+ # # => 2005/02/01 15:15:10 +0000"
+ def to_json(options = nil)
+ if ActiveSupport.use_standard_json_time_format
+ xmlschema.inspect
+ else
+ %("#{strftime("%Y/%m/%d %H:%M:%S")} #{formatted_offset(false)}")
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/json/encoders/true_class.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/json/encoders/true_class.rb
new file mode 100644
index 000000000..037d812b3
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/json/encoders/true_class.rb
@@ -0,0 +1,5 @@
+class TrueClass
+ def to_json(options = nil) #:nodoc:
+ 'true'
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/json/encoding.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/json/encoding.rb
new file mode 100644
index 000000000..8650e3422
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/json/encoding.rb
@@ -0,0 +1,37 @@
+require 'active_support/json/variable'
+require 'active_support/json/encoders/object' # Require explicitly for rdoc.
+Dir["#{File.dirname(__FILE__)}/encoders/**/*.rb"].each do |file|
+ basename = File.basename(file, '.rb')
+ unless basename == 'object'
+ require "active_support/json/encoders/#{basename}"
+ end
+end
+
+module ActiveSupport
+ module JSON
+ class CircularReferenceError < StandardError
+ end
+
+ class << self
+ REFERENCE_STACK_VARIABLE = :json_reference_stack #:nodoc:
+
+ # Converts a Ruby object into a JSON string.
+ def encode(value, options = {})
+ raise_on_circular_reference(value) do
+ value.send(:to_json, options)
+ end
+ end
+
+ protected
+ def raise_on_circular_reference(value) #:nodoc:
+ stack = Thread.current[REFERENCE_STACK_VARIABLE] ||= []
+ raise CircularReferenceError, 'object references itself' if
+ stack.include? value
+ stack << value
+ yield
+ ensure
+ stack.pop
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/json/variable.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/json/variable.rb
new file mode 100644
index 000000000..7fd23b0a9
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/json/variable.rb
@@ -0,0 +1,10 @@
+module ActiveSupport
+ module JSON
+ # A string that returns itself as its JSON-encoded form.
+ class Variable < String
+ def to_json(options=nil)
+ self
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/multibyte.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/multibyte.rb
new file mode 100644
index 000000000..27c0d180a
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/multibyte.rb
@@ -0,0 +1,9 @@
+module ActiveSupport
+ module Multibyte #:nodoc:
+ DEFAULT_NORMALIZATION_FORM = :kc
+ NORMALIZATIONS_FORMS = [:c, :kc, :d, :kd]
+ UNICODE_VERSION = '5.0.0'
+ end
+end
+
+require 'active_support/multibyte/chars'
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/multibyte/chars.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/multibyte/chars.rb
new file mode 100644
index 000000000..185d03020
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/multibyte/chars.rb
@@ -0,0 +1,137 @@
+require 'active_support/multibyte/handlers/utf8_handler'
+require 'active_support/multibyte/handlers/passthru_handler'
+
+# Encapsulates all the functionality related to the Chars proxy.
+module ActiveSupport::Multibyte #:nodoc:
+ # Chars enables you to work transparently with multibyte encodings in the Ruby String class without having extensive
+ # knowledge about the encoding. A Chars object accepts a string upon initialization and proxies String methods in an
+ # encoding safe manner. All the normal String methods are also implemented on the proxy.
+ #
+ # String methods are proxied through the Chars object, and can be accessed through the +chars+ method. Methods
+ # which would normally return a String object now return a Chars object so methods can be chained.
+ #
+ # "The Perfect String ".chars.downcase.strip.normalize # => "the perfect string"
+ #
+ # Chars objects are perfectly interchangeable with String objects as long as no explicit class checks are made.
+ # If certain methods do explicitly check the class, call +to_s+ before you pass chars objects to them.
+ #
+ # bad.explicit_checking_method "T".chars.downcase.to_s
+ #
+ # The actual operations on the string are delegated to handlers. Theoretically handlers can be implemented for
+ # any encoding, but the default handler handles UTF-8. This handler is set during initialization, if you want to
+ # use you own handler, you can set it on the Chars class. Look at the UTF8Handler source for an example how to
+ # implement your own handler. If you your own handler to work on anything but UTF-8 you probably also
+ # want to override Chars#handler.
+ #
+ # ActiveSupport::Multibyte::Chars.handler = MyHandler
+ #
+ # Note that a few methods are defined on Chars instead of the handler because they are defined on Object or Kernel
+ # and method_missing can't catch them.
+ class Chars
+
+ attr_reader :string # The contained string
+ alias_method :to_s, :string
+
+ include Comparable
+
+ # The magic method to make String and Chars comparable
+ def to_str
+ # Using any other ways of overriding the String itself will lead you all the way from infinite loops to
+ # core dumps. Don't go there.
+ @string
+ end
+
+ # Make duck-typing with String possible
+ def respond_to?(method, include_priv = false)
+ super || @string.respond_to?(method, include_priv) ||
+ handler.respond_to?(method, include_priv) ||
+ (method.to_s =~ /(.*)!/ && handler.respond_to?($1, include_priv)) ||
+ false
+ end
+
+ # Create a new Chars instance.
+ def initialize(str)
+ @string = str.respond_to?(:string) ? str.string : str
+ end
+
+ # Returns -1, 0 or +1 depending on whether the Chars object is to be sorted before, equal or after the
+ # object on the right side of the operation. It accepts any object that implements +to_s+. See String.<=>
+ # for more details.
+ def <=>(other); @string <=> other.to_s; end
+
+ # Works just like String#split, with the exception that the items in the resulting list are Chars
+ # instances instead of String. This makes chaining methods easier.
+ def split(*args)
+ @string.split(*args).map { |i| i.chars }
+ end
+
+ # Gsub works exactly the same as gsub on a normal string.
+ def gsub(*a, &b); @string.gsub(*a, &b).chars; end
+
+ # Like String.=~ only it returns the character offset (in codepoints) instead of the byte offset.
+ def =~(other)
+ handler.translate_offset(@string, @string =~ other)
+ end
+
+ # Try to forward all undefined methods to the handler, when a method is not defined on the handler, send it to
+ # the contained string. Method_missing is also responsible for making the bang! methods destructive.
+ def method_missing(m, *a, &b)
+ begin
+ # Simulate methods with a ! at the end because we can't touch the enclosed string from the handlers.
+ if m.to_s =~ /^(.*)\!$/ && handler.respond_to?($1)
+ result = handler.send($1, @string, *a, &b)
+ if result == @string
+ result = nil
+ else
+ @string.replace result
+ end
+ elsif handler.respond_to?(m)
+ result = handler.send(m, @string, *a, &b)
+ else
+ result = @string.send(m, *a, &b)
+ end
+ rescue Handlers::EncodingError
+ @string.replace handler.tidy_bytes(@string)
+ retry
+ end
+
+ if result.kind_of?(String)
+ result.chars
+ else
+ result
+ end
+ end
+
+ # Set the handler class for the Char objects.
+ def self.handler=(klass)
+ @@handler = klass
+ end
+
+ # Returns the proper handler for the contained string depending on $KCODE and the encoding of the string. This
+ # method is used internally to always redirect messages to the proper classes depending on the context.
+ def handler
+ if utf8_pragma?
+ @@handler
+ else
+ ActiveSupport::Multibyte::Handlers::PassthruHandler
+ end
+ end
+
+ private
+
+ # +utf8_pragma+ checks if it can send this string to the handlers. It makes sure @string isn't nil and $KCODE is
+ # set to 'UTF8'.
+ def utf8_pragma?
+ !@string.nil? && ($KCODE == 'UTF8')
+ end
+ end
+end
+
+# When we can load the utf8proc library, override normalization with the faster methods
+begin
+ require 'utf8proc_native'
+ require 'active_support/multibyte/handlers/utf8_handler_proc'
+ ActiveSupport::Multibyte::Chars.handler = ActiveSupport::Multibyte::Handlers::UTF8HandlerProc
+rescue LoadError
+ ActiveSupport::Multibyte::Chars.handler = ActiveSupport::Multibyte::Handlers::UTF8Handler
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/multibyte/generators/generate_tables.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/multibyte/generators/generate_tables.rb
new file mode 100644
index 000000000..7f807585c
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/multibyte/generators/generate_tables.rb
@@ -0,0 +1,149 @@
+#!/usr/bin/env ruby
+begin
+ require File.dirname(__FILE__) + '/../../../active_support'
+rescue IOError
+end
+require 'open-uri'
+require 'tmpdir'
+
+module ActiveSupport::Multibyte::Handlers #:nodoc:
+ class UnicodeDatabase #:nodoc:
+ def self.load
+ [Hash.new(Codepoint.new),[],{},{}]
+ end
+ end
+
+ class UnicodeTableGenerator #:nodoc:
+ BASE_URI = "http://www.unicode.org/Public/#{ActiveSupport::Multibyte::UNICODE_VERSION}/ucd/"
+ SOURCES = {
+ :codepoints => BASE_URI + 'UnicodeData.txt',
+ :composition_exclusion => BASE_URI + 'CompositionExclusions.txt',
+ :grapheme_break_property => BASE_URI + 'auxiliary/GraphemeBreakProperty.txt',
+ :cp1252 => 'http://unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP1252.TXT'
+ }
+
+ def initialize
+ @ucd = UnicodeDatabase.new
+
+ default = Codepoint.new
+ default.combining_class = 0
+ default.uppercase_mapping = 0
+ default.lowercase_mapping = 0
+ @ucd.codepoints = Hash.new(default)
+
+ @ucd.composition_exclusion = []
+ @ucd.composition_map = {}
+ @ucd.boundary = {}
+ @ucd.cp1252 = {}
+ end
+
+ def parse_codepoints(line)
+ codepoint = Codepoint.new
+ raise "Could not parse input." unless line =~ /^
+ ([0-9A-F]+); # code
+ ([^;]+); # name
+ ([A-Z]+); # general category
+ ([0-9]+); # canonical combining class
+ ([A-Z]+); # bidi class
+ (<([A-Z]*)>)? # decomposition type
+ ((\ ?[0-9A-F]+)*); # decompomposition mapping
+ ([0-9]*); # decimal digit
+ ([0-9]*); # digit
+ ([^;]*); # numeric
+ ([YN]*); # bidi mirrored
+ ([^;]*); # unicode 1.0 name
+ ([^;]*); # iso comment
+ ([0-9A-F]*); # simple uppercase mapping
+ ([0-9A-F]*); # simple lowercase mapping
+ ([0-9A-F]*)$/ix # simple titlecase mapping
+ codepoint.code = $1.hex
+ #codepoint.name = $2
+ #codepoint.category = $3
+ codepoint.combining_class = Integer($4)
+ #codepoint.bidi_class = $5
+ codepoint.decomp_type = $7
+ codepoint.decomp_mapping = ($8=='') ? nil : $8.split.collect { |element| element.hex }
+ #codepoint.bidi_mirrored = ($13=='Y') ? true : false
+ codepoint.uppercase_mapping = ($16=='') ? 0 : $16.hex
+ codepoint.lowercase_mapping = ($17=='') ? 0 : $17.hex
+ #codepoint.titlecase_mapping = ($18=='') ? nil : $18.hex
+ @ucd.codepoints[codepoint.code] = codepoint
+ end
+
+ def parse_grapheme_break_property(line)
+ if line =~ /^([0-9A-F\.]+)\s*;\s*([\w]+)\s*#/
+ type = $2.downcase.intern
+ @ucd.boundary[type] ||= []
+ if $1.include? '..'
+ parts = $1.split '..'
+ @ucd.boundary[type] << (parts[0].hex..parts[1].hex)
+ else
+ @ucd.boundary[type] << $1.hex
+ end
+ end
+ end
+
+ def parse_composition_exclusion(line)
+ if line =~ /^([0-9A-F]+)/i
+ @ucd.composition_exclusion << $1.hex
+ end
+ end
+
+ def parse_cp1252(line)
+ if line =~ /^([0-9A-Fx]+)\s([0-9A-Fx]+)/i
+ @ucd.cp1252[$1.hex] = $2.hex
+ end
+ end
+
+ def create_composition_map
+ @ucd.codepoints.each do |_, cp|
+ if !cp.nil? and cp.combining_class == 0 and cp.decomp_type.nil? and !cp.decomp_mapping.nil? and cp.decomp_mapping.length == 2 and @ucd[cp.decomp_mapping[0]].combining_class == 0 and !@ucd.composition_exclusion.include?(cp.code)
+ @ucd.composition_map[cp.decomp_mapping[0]] ||= {}
+ @ucd.composition_map[cp.decomp_mapping[0]][cp.decomp_mapping[1]] = cp.code
+ end
+ end
+ end
+
+ def normalize_boundary_map
+ @ucd.boundary.each do |k,v|
+ if [:lf, :cr].include? k
+ @ucd.boundary[k] = v[0]
+ end
+ end
+ end
+
+ def parse
+ SOURCES.each do |type, url|
+ filename = File.join(Dir.tmpdir, "#{url.split('/').last}")
+ unless File.exist?(filename)
+ $stderr.puts "Downloading #{url.split('/').last}"
+ File.open(filename, 'wb') do |target|
+ open(url) do |source|
+ source.each_line { |line| target.write line }
+ end
+ end
+ end
+ File.open(filename) do |file|
+ file.each_line { |line| send "parse_#{type}".intern, line }
+ end
+ end
+ create_composition_map
+ normalize_boundary_map
+ end
+
+ def dump_to(filename)
+ File.open(filename, 'wb') do |f|
+ f.write Marshal.dump([@ucd.codepoints, @ucd.composition_exclusion, @ucd.composition_map, @ucd.boundary, @ucd.cp1252])
+ end
+ end
+ end
+end
+
+if __FILE__ == $0
+ filename = ActiveSupport::Multibyte::Handlers::UnicodeDatabase.filename
+ generator = ActiveSupport::Multibyte::Handlers::UnicodeTableGenerator.new
+ generator.parse
+ print "Writing to: #{filename}"
+ generator.dump_to filename
+ puts " (#{File.size(filename)} bytes)"
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/multibyte/handlers/passthru_handler.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/multibyte/handlers/passthru_handler.rb
new file mode 100644
index 000000000..916215c2c
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/multibyte/handlers/passthru_handler.rb
@@ -0,0 +1,9 @@
+# Chars uses this handler when $KCODE is not set to 'UTF8'. Because this handler doesn't define any methods all call
+# will be forwarded to String.
+class ActiveSupport::Multibyte::Handlers::PassthruHandler #:nodoc:
+
+ # Return the original byteoffset
+ def self.translate_offset(string, byte_offset) #:nodoc:
+ byte_offset
+ end
+end \ No newline at end of file
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/multibyte/handlers/utf8_handler.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/multibyte/handlers/utf8_handler.rb
new file mode 100644
index 000000000..aa9c16f57
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/multibyte/handlers/utf8_handler.rb
@@ -0,0 +1,564 @@
+# Contains all the handlers and helper classes
+module ActiveSupport::Multibyte::Handlers #:nodoc:
+ class EncodingError < ArgumentError #:nodoc:
+ end
+
+ class Codepoint #:nodoc:
+ attr_accessor :code, :combining_class, :decomp_type, :decomp_mapping, :uppercase_mapping, :lowercase_mapping
+ end
+
+ class UnicodeDatabase #:nodoc:
+ attr_writer :codepoints, :composition_exclusion, :composition_map, :boundary, :cp1252
+
+ # self-expiring methods that lazily load the Unicode database and then return the value.
+ [:codepoints, :composition_exclusion, :composition_map, :boundary, :cp1252].each do |attr_name|
+ class_eval(<<-EOS, __FILE__, __LINE__)
+ def #{attr_name}
+ load
+ @#{attr_name}
+ end
+ EOS
+ end
+
+ # Shortcut to ucd.codepoints[]
+ def [](index); codepoints[index]; end
+
+ # Returns the directory in which the data files are stored
+ def self.dirname
+ File.dirname(__FILE__) + '/../../values/'
+ end
+
+ # Returns the filename for the data file for this version
+ def self.filename
+ File.expand_path File.join(dirname, "unicode_tables.dat")
+ end
+
+ # Loads the unicode database and returns all the internal objects of UnicodeDatabase
+ # Once the values have been loaded, define attr_reader methods for the instance variables.
+ def load
+ begin
+ @codepoints, @composition_exclusion, @composition_map, @boundary, @cp1252 = File.open(self.class.filename, 'rb') { |f| Marshal.load f.read }
+ rescue Exception => e
+ raise IOError.new("Couldn't load the unicode tables for UTF8Handler (#{e.message}), handler is unusable")
+ end
+ @codepoints ||= Hash.new(Codepoint.new)
+ @composition_exclusion ||= []
+ @composition_map ||= {}
+ @boundary ||= {}
+ @cp1252 ||= {}
+
+ # Redefine the === method so we can write shorter rules for grapheme cluster breaks
+ @boundary.each do |k,_|
+ @boundary[k].instance_eval do
+ def ===(other)
+ detect { |i| i === other } ? true : false
+ end
+ end if @boundary[k].kind_of?(Array)
+ end
+
+ # define attr_reader methods for the instance variables
+ class << self
+ attr_reader :codepoints, :composition_exclusion, :composition_map, :boundary, :cp1252
+ end
+ end
+ end
+
+ # UTF8Handler implements Unicode aware operations for strings, these operations will be used by the Chars
+ # proxy when $KCODE is set to 'UTF8'.
+ class UTF8Handler
+ # Hangul character boundaries and properties
+ HANGUL_SBASE = 0xAC00
+ HANGUL_LBASE = 0x1100
+ HANGUL_VBASE = 0x1161
+ HANGUL_TBASE = 0x11A7
+ HANGUL_LCOUNT = 19
+ HANGUL_VCOUNT = 21
+ HANGUL_TCOUNT = 28
+ HANGUL_NCOUNT = HANGUL_VCOUNT * HANGUL_TCOUNT
+ HANGUL_SCOUNT = 11172
+ HANGUL_SLAST = HANGUL_SBASE + HANGUL_SCOUNT
+ HANGUL_JAMO_FIRST = 0x1100
+ HANGUL_JAMO_LAST = 0x11FF
+
+ # All the unicode whitespace
+ UNICODE_WHITESPACE = [
+ (0x0009..0x000D).to_a, # White_Space # Cc [5] <control-0009>..<control-000D>
+ 0x0020, # White_Space # Zs SPACE
+ 0x0085, # White_Space # Cc <control-0085>
+ 0x00A0, # White_Space # Zs NO-BREAK SPACE
+ 0x1680, # White_Space # Zs OGHAM SPACE MARK
+ 0x180E, # White_Space # Zs MONGOLIAN VOWEL SEPARATOR
+ (0x2000..0x200A).to_a, # White_Space # Zs [11] EN QUAD..HAIR SPACE
+ 0x2028, # White_Space # Zl LINE SEPARATOR
+ 0x2029, # White_Space # Zp PARAGRAPH SEPARATOR
+ 0x202F, # White_Space # Zs NARROW NO-BREAK SPACE
+ 0x205F, # White_Space # Zs MEDIUM MATHEMATICAL SPACE
+ 0x3000, # White_Space # Zs IDEOGRAPHIC SPACE
+ ].flatten.freeze
+
+ # BOM (byte order mark) can also be seen as whitespace, it's a non-rendering character used to distinguish
+ # between little and big endian. This is not an issue in utf-8, so it must be ignored.
+ UNICODE_LEADERS_AND_TRAILERS = UNICODE_WHITESPACE + [65279] # ZERO-WIDTH NO-BREAK SPACE aka BOM
+
+ # Borrowed from the Kconv library by Shinji KONO - (also as seen on the W3C site)
+ UTF8_PAT = /\A(?:
+ [\x00-\x7f] |
+ [\xc2-\xdf] [\x80-\xbf] |
+ \xe0 [\xa0-\xbf] [\x80-\xbf] |
+ [\xe1-\xef] [\x80-\xbf] [\x80-\xbf] |
+ \xf0 [\x90-\xbf] [\x80-\xbf] [\x80-\xbf] |
+ [\xf1-\xf3] [\x80-\xbf] [\x80-\xbf] [\x80-\xbf] |
+ \xf4 [\x80-\x8f] [\x80-\xbf] [\x80-\xbf]
+ )*\z/xn
+
+ # Returns a regular expression pattern that matches the passed Unicode codepoints
+ def self.codepoints_to_pattern(array_of_codepoints) #:nodoc:
+ array_of_codepoints.collect{ |e| [e].pack 'U*' }.join('|')
+ end
+ UNICODE_TRAILERS_PAT = /(#{codepoints_to_pattern(UNICODE_LEADERS_AND_TRAILERS)})+\Z/
+ UNICODE_LEADERS_PAT = /\A(#{codepoints_to_pattern(UNICODE_LEADERS_AND_TRAILERS)})+/
+
+ class << self
+
+ # ///
+ # /// BEGIN String method overrides
+ # ///
+
+ # Inserts the passed string at specified codepoint offsets
+ def insert(str, offset, fragment)
+ str.replace(
+ u_unpack(str).insert(
+ offset,
+ u_unpack(fragment)
+ ).flatten.pack('U*')
+ )
+ end
+
+ # Returns the position of the passed argument in the string, counting in codepoints
+ def index(str, *args)
+ bidx = str.index(*args)
+ bidx ? (u_unpack(str.slice(0...bidx)).size) : nil
+ end
+
+ # Works just like the indexed replace method on string, except instead of byte offsets you specify
+ # character offsets.
+ #
+ # Example:
+ #
+ # s = "Müller"
+ # s.chars[2] = "e" # Replace character with offset 2
+ # s # => "Müeler"
+ #
+ # s = "Müller"
+ # s.chars[1, 2] = "ö" # Replace 2 characters at character offset 1
+ # s # => "Möler"
+ def []=(str, *args)
+ replace_by = args.pop
+ # Indexed replace with regular expressions already works
+ return str[*args] = replace_by if args.first.is_a?(Regexp)
+ result = u_unpack(str)
+ if args[0].is_a?(Fixnum)
+ raise IndexError, "index #{args[0]} out of string" if args[0] >= result.length
+ min = args[0]
+ max = args[1].nil? ? min : (min + args[1] - 1)
+ range = Range.new(min, max)
+ replace_by = [replace_by].pack('U') if replace_by.is_a?(Fixnum)
+ elsif args.first.is_a?(Range)
+ raise RangeError, "#{args[0]} out of range" if args[0].min >= result.length
+ range = args[0]
+ else
+ needle = args[0].to_s
+ min = index(str, needle)
+ max = min + length(needle) - 1
+ range = Range.new(min, max)
+ end
+ result[range] = u_unpack(replace_by)
+ str.replace(result.pack('U*'))
+ end
+
+ # Works just like String#rjust, only integer specifies characters instead of bytes.
+ #
+ # Example:
+ #
+ # "¾ cup".chars.rjust(8).to_s
+ # # => " ¾ cup"
+ #
+ # "¾ cup".chars.rjust(8, " ").to_s # Use non-breaking whitespace
+ # # => "   ¾ cup"
+ def rjust(str, integer, padstr=' ')
+ justify(str, integer, :right, padstr)
+ end
+
+ # Works just like String#ljust, only integer specifies characters instead of bytes.
+ #
+ # Example:
+ #
+ # "¾ cup".chars.rjust(8).to_s
+ # # => "¾ cup "
+ #
+ # "¾ cup".chars.rjust(8, " ").to_s # Use non-breaking whitespace
+ # # => "¾ cup   "
+ def ljust(str, integer, padstr=' ')
+ justify(str, integer, :left, padstr)
+ end
+
+ # Works just like String#center, only integer specifies characters instead of bytes.
+ #
+ # Example:
+ #
+ # "¾ cup".chars.center(8).to_s
+ # # => " ¾ cup "
+ #
+ # "¾ cup".chars.center(8, " ").to_s # Use non-breaking whitespace
+ # # => " ¾ cup  "
+ def center(str, integer, padstr=' ')
+ justify(str, integer, :center, padstr)
+ end
+
+ # Does Unicode-aware rstrip
+ def rstrip(str)
+ str.gsub(UNICODE_TRAILERS_PAT, '')
+ end
+
+ # Does Unicode-aware lstrip
+ def lstrip(str)
+ str.gsub(UNICODE_LEADERS_PAT, '')
+ end
+
+ # Removed leading and trailing whitespace
+ def strip(str)
+ str.gsub(UNICODE_LEADERS_PAT, '').gsub(UNICODE_TRAILERS_PAT, '')
+ end
+
+ # Returns the number of codepoints in the string
+ def size(str)
+ u_unpack(str).size
+ end
+ alias_method :length, :size
+
+ # Reverses codepoints in the string.
+ def reverse(str)
+ u_unpack(str).reverse.pack('U*')
+ end
+
+ # Implements Unicode-aware slice with codepoints. Slicing on one point returns the codepoints for that
+ # character.
+ def slice(str, *args)
+ if args.size > 2
+ raise ArgumentError, "wrong number of arguments (#{args.size} for 1)" # Do as if we were native
+ elsif (args.size == 2 && !(args.first.is_a?(Numeric) || args.first.is_a?(Regexp)))
+ raise TypeError, "cannot convert #{args.first.class} into Integer" # Do as if we were native
+ elsif (args.size == 2 && !args[1].is_a?(Numeric))
+ raise TypeError, "cannot convert #{args[1].class} into Integer" # Do as if we were native
+ elsif args[0].kind_of? Range
+ cps = u_unpack(str).slice(*args)
+ cps.nil? ? nil : cps.pack('U*')
+ elsif args[0].kind_of? Regexp
+ str.slice(*args)
+ elsif args.size == 1 && args[0].kind_of?(Numeric)
+ u_unpack(str)[args[0]]
+ else
+ u_unpack(str).slice(*args).pack('U*')
+ end
+ end
+ alias_method :[], :slice
+
+ # Convert characters in the string to uppercase
+ def upcase(str); to_case :uppercase_mapping, str; end
+
+ # Convert characters in the string to lowercase
+ def downcase(str); to_case :lowercase_mapping, str; end
+
+ # Returns a copy of +str+ with the first character converted to uppercase and the remainder to lowercase
+ def capitalize(str)
+ upcase(slice(str, 0..0)) + downcase(slice(str, 1..-1) || '')
+ end
+
+ # ///
+ # /// Extra String methods for unicode operations
+ # ///
+
+ # Returns the KC normalization of the string by default. NFKC is considered the best normalization form for
+ # passing strings to databases and validations.
+ #
+ # * <tt>str</tt> - The string to perform normalization on.
+ # * <tt>form</tt> - The form you want to normalize in. Should be one of the following:
+ # <tt>:c</tt>, <tt>:kc</tt>, <tt>:d</tt>, or <tt>:kd</tt>. Default is
+ # ActiveSupport::Multibyte::DEFAULT_NORMALIZATION_FORM.
+ def normalize(str, form=ActiveSupport::Multibyte::DEFAULT_NORMALIZATION_FORM)
+ # See http://www.unicode.org/reports/tr15, Table 1
+ codepoints = u_unpack(str)
+ case form
+ when :d
+ reorder_characters(decompose_codepoints(:canonical, codepoints))
+ when :c
+ compose_codepoints reorder_characters(decompose_codepoints(:canonical, codepoints))
+ when :kd
+ reorder_characters(decompose_codepoints(:compatability, codepoints))
+ when :kc
+ compose_codepoints reorder_characters(decompose_codepoints(:compatability, codepoints))
+ else
+ raise ArgumentError, "#{form} is not a valid normalization variant", caller
+ end.pack('U*')
+ end
+
+ # Perform decomposition on the characters in the string
+ def decompose(str)
+ decompose_codepoints(:canonical, u_unpack(str)).pack('U*')
+ end
+
+ # Perform composition on the characters in the string
+ def compose(str)
+ compose_codepoints u_unpack(str).pack('U*')
+ end
+
+ # ///
+ # /// BEGIN Helper methods for unicode operation
+ # ///
+
+ # Used to translate an offset from bytes to characters, for instance one received from a regular expression match
+ def translate_offset(str, byte_offset)
+ return nil if byte_offset.nil?
+ return 0 if str == ''
+ chunk = str[0..byte_offset]
+ begin
+ begin
+ chunk.unpack('U*').length - 1
+ rescue ArgumentError => e
+ chunk = str[0..(byte_offset+=1)]
+ # Stop retrying at the end of the string
+ raise e unless byte_offset < chunk.length
+ # We damaged a character, retry
+ retry
+ end
+ # Catch the ArgumentError so we can throw our own
+ rescue ArgumentError
+ raise EncodingError.new('malformed UTF-8 character')
+ end
+ end
+
+ # Checks if the string is valid UTF8.
+ def consumes?(str)
+ # Unpack is a little bit faster than regular expressions
+ begin
+ str.unpack('U*')
+ true
+ rescue ArgumentError
+ false
+ end
+ end
+
+ # Returns the number of grapheme clusters in the string. This method is very likely to be moved or renamed
+ # in future versions.
+ def g_length(str)
+ g_unpack(str).length
+ end
+
+ # Replaces all the non-utf-8 bytes by their iso-8859-1 or cp1252 equivalent resulting in a valid utf-8 string
+ def tidy_bytes(str)
+ str.split(//u).map do |c|
+ if !UTF8_PAT.match(c)
+ n = c.unpack('C')[0]
+ n < 128 ? n.chr :
+ n < 160 ? [UCD.cp1252[n] || n].pack('U') :
+ n < 192 ? "\xC2" + n.chr : "\xC3" + (n-64).chr
+ else
+ c
+ end
+ end.join
+ end
+
+ protected
+
+ # Detect whether the codepoint is in a certain character class. Primarily used by the
+ # grapheme cluster support.
+ def in_char_class?(codepoint, classes)
+ classes.detect { |c| UCD.boundary[c] === codepoint } ? true : false
+ end
+
+ # Unpack the string at codepoints boundaries
+ def u_unpack(str)
+ begin
+ str.unpack 'U*'
+ rescue ArgumentError
+ raise EncodingError.new('malformed UTF-8 character')
+ end
+ end
+
+ # Unpack the string at grapheme boundaries instead of codepoint boundaries
+ def g_unpack(str)
+ codepoints = u_unpack(str)
+ unpacked = []
+ pos = 0
+ marker = 0
+ eoc = codepoints.length
+ while(pos < eoc)
+ pos += 1
+ previous = codepoints[pos-1]
+ current = codepoints[pos]
+ if (
+ # CR X LF
+ one = ( previous == UCD.boundary[:cr] and current == UCD.boundary[:lf] ) or
+ # L X (L|V|LV|LVT)
+ two = ( UCD.boundary[:l] === previous and in_char_class?(current, [:l,:v,:lv,:lvt]) ) or
+ # (LV|V) X (V|T)
+ three = ( in_char_class?(previous, [:lv,:v]) and in_char_class?(current, [:v,:t]) ) or
+ # (LVT|T) X (T)
+ four = ( in_char_class?(previous, [:lvt,:t]) and UCD.boundary[:t] === current ) or
+ # X Extend
+ five = (UCD.boundary[:extend] === current)
+ )
+ else
+ unpacked << codepoints[marker..pos-1]
+ marker = pos
+ end
+ end
+ unpacked
+ end
+
+ # Reverse operation of g_unpack
+ def g_pack(unpacked)
+ unpacked.flatten
+ end
+
+ # Justifies a string in a certain way. Valid values for <tt>way</tt> are <tt>:right</tt>, <tt>:left</tt> and
+ # <tt>:center</tt>. Is primarily used as a helper method by <tt>rjust</tt>, <tt>ljust</tt> and <tt>center</tt>.
+ def justify(str, integer, way, padstr=' ')
+ raise ArgumentError, "zero width padding" if padstr.length == 0
+ padsize = integer - size(str)
+ padsize = padsize > 0 ? padsize : 0
+ case way
+ when :right
+ str.dup.insert(0, padding(padsize, padstr))
+ when :left
+ str.dup.insert(-1, padding(padsize, padstr))
+ when :center
+ lpad = padding((padsize / 2.0).floor, padstr)
+ rpad = padding((padsize / 2.0).ceil, padstr)
+ str.dup.insert(0, lpad).insert(-1, rpad)
+ end
+ end
+
+ # Generates a padding string of a certain size.
+ def padding(padsize, padstr=' ')
+ if padsize != 0
+ slice(padstr * ((padsize / size(padstr)) + 1), 0, padsize)
+ else
+ ''
+ end
+ end
+
+ # Convert characters to a different case
+ def to_case(way, str)
+ u_unpack(str).map do |codepoint|
+ cp = UCD[codepoint]
+ unless cp.nil?
+ ncp = cp.send(way)
+ ncp > 0 ? ncp : codepoint
+ else
+ codepoint
+ end
+ end.pack('U*')
+ end
+
+ # Re-order codepoints so the string becomes canonical
+ def reorder_characters(codepoints)
+ length = codepoints.length- 1
+ pos = 0
+ while pos < length do
+ cp1, cp2 = UCD[codepoints[pos]], UCD[codepoints[pos+1]]
+ if (cp1.combining_class > cp2.combining_class) && (cp2.combining_class > 0)
+ codepoints[pos..pos+1] = cp2.code, cp1.code
+ pos += (pos > 0 ? -1 : 1)
+ else
+ pos += 1
+ end
+ end
+ codepoints
+ end
+
+ # Decompose composed characters to the decomposed form
+ def decompose_codepoints(type, codepoints)
+ codepoints.inject([]) do |decomposed, cp|
+ # if it's a hangul syllable starter character
+ if HANGUL_SBASE <= cp and cp < HANGUL_SLAST
+ sindex = cp - HANGUL_SBASE
+ ncp = [] # new codepoints
+ ncp << HANGUL_LBASE + sindex / HANGUL_NCOUNT
+ ncp << HANGUL_VBASE + (sindex % HANGUL_NCOUNT) / HANGUL_TCOUNT
+ tindex = sindex % HANGUL_TCOUNT
+ ncp << (HANGUL_TBASE + tindex) unless tindex == 0
+ decomposed.concat ncp
+ # if the codepoint is decomposable in with the current decomposition type
+ elsif (ncp = UCD[cp].decomp_mapping) and (!UCD[cp].decomp_type || type == :compatability)
+ decomposed.concat decompose_codepoints(type, ncp.dup)
+ else
+ decomposed << cp
+ end
+ end
+ end
+
+ # Compose decomposed characters to the composed form
+ def compose_codepoints(codepoints)
+ pos = 0
+ eoa = codepoints.length - 1
+ starter_pos = 0
+ starter_char = codepoints[0]
+ previous_combining_class = -1
+ while pos < eoa
+ pos += 1
+ lindex = starter_char - HANGUL_LBASE
+ # -- Hangul
+ if 0 <= lindex and lindex < HANGUL_LCOUNT
+ vindex = codepoints[starter_pos+1] - HANGUL_VBASE rescue vindex = -1
+ if 0 <= vindex and vindex < HANGUL_VCOUNT
+ tindex = codepoints[starter_pos+2] - HANGUL_TBASE rescue tindex = -1
+ if 0 <= tindex and tindex < HANGUL_TCOUNT
+ j = starter_pos + 2
+ eoa -= 2
+ else
+ tindex = 0
+ j = starter_pos + 1
+ eoa -= 1
+ end
+ codepoints[starter_pos..j] = (lindex * HANGUL_VCOUNT + vindex) * HANGUL_TCOUNT + tindex + HANGUL_SBASE
+ end
+ starter_pos += 1
+ starter_char = codepoints[starter_pos]
+ # -- Other characters
+ else
+ current_char = codepoints[pos]
+ current = UCD[current_char]
+ if current.combining_class > previous_combining_class
+ if ref = UCD.composition_map[starter_char]
+ composition = ref[current_char]
+ else
+ composition = nil
+ end
+ unless composition.nil?
+ codepoints[starter_pos] = composition
+ starter_char = composition
+ codepoints.delete_at pos
+ eoa -= 1
+ pos -= 1
+ previous_combining_class = -1
+ else
+ previous_combining_class = current.combining_class
+ end
+ else
+ previous_combining_class = current.combining_class
+ end
+ if current.combining_class == 0
+ starter_pos = pos
+ starter_char = codepoints[pos]
+ end
+ end
+ end
+ codepoints
+ end
+
+ # UniCode Database
+ UCD = UnicodeDatabase.new
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/multibyte/handlers/utf8_handler_proc.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/multibyte/handlers/utf8_handler_proc.rb
new file mode 100644
index 000000000..f10eecc62
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/multibyte/handlers/utf8_handler_proc.rb
@@ -0,0 +1,43 @@
+# Methods in this handler call functions in the utf8proc ruby extension. These are significantly faster than the
+# pure ruby versions. Chars automatically uses this handler when it can load the utf8proc extension. For
+# documentation on handler methods see UTF8Handler.
+class ActiveSupport::Multibyte::Handlers::UTF8HandlerProc < ActiveSupport::Multibyte::Handlers::UTF8Handler #:nodoc:
+ class << self
+ def normalize(str, form=ActiveSupport::Multibyte::DEFAULT_NORMALIZATION_FORM) #:nodoc:
+ codepoints = str.unpack('U*')
+ case form
+ when :d
+ utf8map(str, :stable)
+ when :c
+ utf8map(str, :stable, :compose)
+ when :kd
+ utf8map(str, :stable, :compat)
+ when :kc
+ utf8map(str, :stable, :compose, :compat)
+ else
+ raise ArgumentError, "#{form} is not a valid normalization variant", caller
+ end
+ end
+
+ def decompose(str) #:nodoc:
+ utf8map(str, :stable)
+ end
+
+ def downcase(str) #:nodoc:c
+ utf8map(str, :casefold)
+ end
+
+ protected
+
+ def utf8map(str, *option_array) #:nodoc:
+ options = 0
+ option_array.each do |option|
+ flag = Utf8Proc::Options[option]
+ raise ArgumentError, "Unknown argument given to utf8map." unless
+ flag
+ options |= flag
+ end
+ return Utf8Proc::utf8map(str, options)
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/option_merger.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/option_merger.rb
new file mode 100644
index 000000000..1a4ff9db9
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/option_merger.rb
@@ -0,0 +1,25 @@
+module ActiveSupport
+ class OptionMerger #:nodoc:
+ instance_methods.each do |method|
+ undef_method(method) if method !~ /^(__|instance_eval|class|object_id)/
+ end
+
+ def initialize(context, options)
+ @context, @options = context, options
+ end
+
+ private
+ def method_missing(method, *arguments, &block)
+ merge_argument_options! arguments
+ @context.send!(method, *arguments, &block)
+ end
+
+ def merge_argument_options!(arguments)
+ arguments << if arguments.last.respond_to? :to_hash
+ @options.merge(arguments.pop)
+ else
+ @options.dup
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/ordered_hash.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/ordered_hash.rb
new file mode 100644
index 000000000..6993621ef
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/ordered_hash.rb
@@ -0,0 +1,43 @@
+# OrderedHash is namespaced to prevent conflicts with other implementations
+module ActiveSupport
+ # Hash is ordered in Ruby 1.9!
+ if RUBY_VERSION >= '1.9'
+ OrderedHash = ::Hash
+ else
+ class OrderedHash < Array #:nodoc:
+ def []=(key, value)
+ if pair = assoc(key)
+ pair.pop
+ pair << value
+ else
+ self << [key, value]
+ end
+ end
+
+ def [](key)
+ pair = assoc(key)
+ pair ? pair.last : nil
+ end
+
+ def delete(key)
+ pair = assoc(key)
+ pair ? array_index = index(pair) : nil
+ array_index ? delete_at(array_index).last : nil
+ end
+
+ def keys
+ collect { |key, value| key }
+ end
+
+ def values
+ collect { |key, value| value }
+ end
+
+ def to_hash
+ returning({}) do |hash|
+ each { |array| hash[array[0]] = array[1] }
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/ordered_options.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/ordered_options.rb
new file mode 100644
index 000000000..306376e9a
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/ordered_options.rb
@@ -0,0 +1,17 @@
+class OrderedOptions < ActiveSupport::OrderedHash #:nodoc:
+ def []=(key, value)
+ super(key.to_sym, value)
+ end
+
+ def [](key)
+ super(key.to_sym)
+ end
+
+ def method_missing(name, *args)
+ if name.to_s =~ /(.*)=$/
+ self[$1.to_sym] = args.first
+ else
+ self[name]
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/test_case.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/test_case.rb
new file mode 100644
index 000000000..67cde1556
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/test_case.rb
@@ -0,0 +1,13 @@
+require 'test/unit/testcase'
+require 'active_support/testing/setup_and_teardown'
+require 'active_support/testing/default'
+
+# TODO: move to core_ext
+class Test::Unit::TestCase #:nodoc:
+ include ActiveSupport::Testing::SetupAndTeardown
+end
+
+module ActiveSupport
+ class TestCase < Test::Unit::TestCase
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/testing/default.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/testing/default.rb
new file mode 100644
index 000000000..a0bd6303c
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/testing/default.rb
@@ -0,0 +1,9 @@
+module ActiveSupport
+ module Testing
+ module Default #:nodoc:
+ # Placeholder so test/unit ignores test cases without any tests.
+ def default_test
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/testing/setup_and_teardown.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/testing/setup_and_teardown.rb
new file mode 100644
index 000000000..ed8e34510
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/testing/setup_and_teardown.rb
@@ -0,0 +1,93 @@
+module ActiveSupport
+ module Testing
+ module SetupAndTeardown
+ # For compatibility with Ruby < 1.8.6
+ PASSTHROUGH_EXCEPTIONS =
+ if defined?(Test::Unit::TestCase::PASSTHROUGH_EXCEPTIONS)
+ Test::Unit::TestCase::PASSTHROUGH_EXCEPTIONS
+ else
+ [NoMemoryError, SignalException, Interrupt, SystemExit]
+ end
+
+ def self.included(base)
+ base.send :include, ActiveSupport::Callbacks
+ base.define_callbacks :setup, :teardown
+
+ begin
+ require 'mocha'
+ base.alias_method_chain :run, :callbacks_and_mocha
+ rescue LoadError
+ base.alias_method_chain :run, :callbacks
+ end
+ end
+
+ # This redefinition is unfortunate but test/unit shows us no alternative.
+ def run_with_callbacks(result) #:nodoc:
+ return if @method_name.to_s == "default_test"
+
+ yield(Test::Unit::TestCase::STARTED, name)
+ @_result = result
+ begin
+ run_callbacks :setup
+ setup
+ __send__(@method_name)
+ rescue Test::Unit::AssertionFailedError => e
+ add_failure(e.message, e.backtrace)
+ rescue *PASSTHROUGH_EXCEPTIONS
+ raise
+ rescue Exception
+ add_error($!)
+ ensure
+ begin
+ teardown
+ run_callbacks :teardown, :enumerator => :reverse_each
+ rescue Test::Unit::AssertionFailedError => e
+ add_failure(e.message, e.backtrace)
+ rescue *PASSTHROUGH_EXCEPTIONS
+ raise
+ rescue Exception
+ add_error($!)
+ end
+ end
+ result.add_run
+ yield(Test::Unit::TestCase::FINISHED, name)
+ end
+
+ # Doubly unfortunate: mocha does the same so we have to hax their hax.
+ def run_with_callbacks_and_mocha(result)
+ return if @method_name.to_s == "default_test"
+
+ yield(Test::Unit::TestCase::STARTED, name)
+ @_result = result
+ begin
+ mocha_setup
+ begin
+ run_callbacks :setup
+ setup
+ __send__(@method_name)
+ mocha_verify { add_assertion }
+ rescue Mocha::ExpectationError => e
+ add_failure(e.message, e.backtrace)
+ rescue Test::Unit::AssertionFailedError => e
+ add_failure(e.message, e.backtrace)
+ rescue StandardError, ScriptError
+ add_error($!)
+ ensure
+ begin
+ teardown
+ run_callbacks :teardown, :enumerator => :reverse_each
+ rescue Test::Unit::AssertionFailedError => e
+ add_failure(e.message, e.backtrace)
+ rescue StandardError, ScriptError
+ add_error($!)
+ end
+ end
+ ensure
+ mocha_teardown
+ end
+ result.add_run
+ yield(Test::Unit::TestCase::FINISHED, name)
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/time_with_zone.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/time_with_zone.rb
new file mode 100644
index 000000000..bfc5b1603
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/time_with_zone.rb
@@ -0,0 +1,283 @@
+require 'tzinfo'
+module ActiveSupport
+ # A Time-like class that can represent a time in any time zone. Necessary because standard Ruby Time instances are
+ # limited to UTC and the system's <tt>ENV['TZ']</tt> zone.
+ #
+ # You shouldn't ever need to create a TimeWithZone instance directly via <tt>new</tt> -- instead, Rails provides the methods
+ # +local+, +parse+, +at+ and +now+ on TimeZone instances, and +in_time_zone+ on Time and DateTime instances, for a more
+ # user-friendly syntax. Examples:
+ #
+ # Time.zone = 'Eastern Time (US & Canada)' # => 'Eastern Time (US & Canada)'
+ # Time.zone.local(2007, 2, 10, 15, 30, 45) # => Sat, 10 Feb 2007 15:30:45 EST -05:00
+ # Time.zone.parse('2007-02-01 15:30:45') # => Sat, 10 Feb 2007 15:30:45 EST -05:00
+ # Time.zone.at(1170361845) # => Sat, 10 Feb 2007 15:30:45 EST -05:00
+ # Time.zone.now # => Sun, 18 May 2008 13:07:55 EDT -04:00
+ # Time.utc(2007, 2, 10, 20, 30, 45).in_time_zone # => Sat, 10 Feb 2007 15:30:45 EST -05:00
+ #
+ # See TimeZone and ActiveSupport::CoreExtensions::Time::Zones for further documentation for these methods.
+ #
+ # TimeWithZone instances implement the same API as Ruby Time instances, so that Time and TimeWithZone instances are interchangable. Examples:
+ #
+ # t = Time.zone.now # => Sun, 18 May 2008 13:27:25 EDT -04:00
+ # t.hour # => 13
+ # t.dst? # => true
+ # t.utc_offset # => -14400
+ # t.zone # => "EDT"
+ # t.to_s(:rfc822) # => "Sun, 18 May 2008 13:27:25 -0400"
+ # t + 1.day # => Mon, 19 May 2008 13:27:25 EDT -04:00
+ # t.beginning_of_year # => Tue, 01 Jan 2008 00:00:00 EST -05:00
+ # t > Time.utc(1999) # => true
+ # t.is_a?(Time) # => true
+ # t.is_a?(ActiveSupport::TimeWithZone) # => true
+ class TimeWithZone
+ include Comparable
+ attr_reader :time_zone
+
+ def initialize(utc_time, time_zone, local_time = nil, period = nil)
+ @utc, @time_zone, @time = utc_time, time_zone, local_time
+ @period = @utc ? period : get_period_and_ensure_valid_local_time
+ end
+
+ # Returns a Time or DateTime instance that represents the time in +time_zone+.
+ def time
+ @time ||= period.to_local(@utc)
+ end
+
+ # Returns a Time or DateTime instance that represents the time in UTC.
+ def utc
+ @utc ||= period.to_utc(@time)
+ end
+ alias_method :comparable_time, :utc
+ alias_method :getgm, :utc
+ alias_method :getutc, :utc
+ alias_method :gmtime, :utc
+
+ # Returns the underlying TZInfo::TimezonePeriod.
+ def period
+ @period ||= time_zone.period_for_utc(@utc)
+ end
+
+ # Returns the simultaneous time in <tt>Time.zone</tt>, or the specified zone.
+ def in_time_zone(new_zone = ::Time.zone)
+ return self if time_zone == new_zone
+ utc.in_time_zone(new_zone)
+ end
+
+ # Returns a <tt>Time.local()</tt> instance of the simultaneous time in your system's <tt>ENV['TZ']</tt> zone
+ def localtime
+ utc.getlocal
+ end
+ alias_method :getlocal, :localtime
+
+ def dst?
+ period.dst?
+ end
+ alias_method :isdst, :dst?
+
+ def utc?
+ time_zone.name == 'UTC'
+ end
+ alias_method :gmt?, :utc?
+
+ def utc_offset
+ period.utc_total_offset
+ end
+ alias_method :gmt_offset, :utc_offset
+ alias_method :gmtoff, :utc_offset
+
+ def formatted_offset(colon = true, alternate_utc_string = nil)
+ utc? && alternate_utc_string || utc_offset.to_utc_offset_s(colon)
+ end
+
+ # Time uses +zone+ to display the time zone abbreviation, so we're duck-typing it.
+ def zone
+ period.zone_identifier.to_s
+ end
+
+ def inspect
+ "#{time.strftime('%a, %d %b %Y %H:%M:%S')} #{zone} #{formatted_offset}"
+ end
+
+ def xmlschema
+ "#{time.strftime("%Y-%m-%dT%H:%M:%S")}#{formatted_offset(true, 'Z')}"
+ end
+ alias_method :iso8601, :xmlschema
+
+ def to_json(options = nil)
+ if ActiveSupport.use_standard_json_time_format
+ xmlschema.inspect
+ else
+ %("#{time.strftime("%Y/%m/%d %H:%M:%S")} #{formatted_offset(false)}")
+ end
+ end
+
+ def to_yaml(options = {})
+ if options.kind_of?(YAML::Emitter)
+ utc.to_yaml(options)
+ else
+ time.to_yaml(options).gsub('Z', formatted_offset(true, 'Z'))
+ end
+ end
+
+ def httpdate
+ utc.httpdate
+ end
+
+ def rfc2822
+ to_s(:rfc822)
+ end
+ alias_method :rfc822, :rfc2822
+
+ # <tt>:db</tt> format outputs time in UTC; all others output time in local.
+ # Uses TimeWithZone's +strftime+, so <tt>%Z</tt> and <tt>%z</tt> work correctly.
+ def to_s(format = :default)
+ return utc.to_s(format) if format == :db
+ if formatter = ::Time::DATE_FORMATS[format]
+ formatter.respond_to?(:call) ? formatter.call(self).to_s : strftime(formatter)
+ else
+ "#{time.strftime("%Y-%m-%d %H:%M:%S")} #{formatted_offset(false, 'UTC')}" # mimicking Ruby 1.9 Time#to_s format
+ end
+ end
+
+ # Replaces <tt>%Z</tt> and <tt>%z</tt> directives with +zone+ and +formatted_offset+, respectively, before passing to
+ # Time#strftime, so that zone information is correct
+ def strftime(format)
+ format = format.gsub('%Z', zone).gsub('%z', formatted_offset(false))
+ time.strftime(format)
+ end
+
+ # Use the time in UTC for comparisons.
+ def <=>(other)
+ utc <=> other
+ end
+
+ def between?(min, max)
+ utc.between?(min, max)
+ end
+
+ def eql?(other)
+ utc == other
+ end
+
+ # If wrapped +time+ is a DateTime, use DateTime#since instead of <tt>+</tt>.
+ # Otherwise, just pass on to +method_missing+.
+ def +(other)
+ result = utc.acts_like?(:date) ? utc.since(other) : utc + other rescue utc.since(other)
+ result.in_time_zone(time_zone)
+ end
+
+ # If a time-like object is passed in, compare it with +utc+.
+ # Else if wrapped +time+ is a DateTime, use DateTime#ago instead of DateTime#-.
+ # Otherwise, just pass on to +method_missing+.
+ def -(other)
+ if other.acts_like?(:time)
+ utc - other
+ else
+ result = utc.acts_like?(:date) ? utc.ago(other) : utc - other rescue utc.ago(other)
+ result.in_time_zone(time_zone)
+ end
+ end
+
+ def since(other)
+ utc.since(other).in_time_zone(time_zone)
+ end
+
+ def ago(other)
+ utc.ago(other).in_time_zone(time_zone)
+ end
+
+ def advance(options)
+ utc.advance(options).in_time_zone(time_zone)
+ end
+
+ %w(year mon month day mday hour min sec).each do |method_name|
+ class_eval <<-EOV
+ def #{method_name}
+ time.#{method_name}
+ end
+ EOV
+ end
+
+ def usec
+ time.respond_to?(:usec) ? time.usec : 0
+ end
+
+ def to_a
+ [time.sec, time.min, time.hour, time.day, time.mon, time.year, time.wday, time.yday, dst?, zone]
+ end
+
+ def to_f
+ utc.to_f
+ end
+
+ def to_i
+ utc.to_i
+ end
+ alias_method :hash, :to_i
+ alias_method :tv_sec, :to_i
+
+ # A TimeWithZone acts like a Time, so just return +self+.
+ def to_time
+ self
+ end
+
+ def to_datetime
+ utc.to_datetime.new_offset(Rational(utc_offset, 86_400))
+ end
+
+ # So that +self+ <tt>acts_like?(:time)</tt>.
+ def acts_like_time?
+ true
+ end
+
+ # Say we're a Time to thwart type checking.
+ def is_a?(klass)
+ klass == ::Time || super
+ end
+ alias_method :kind_of?, :is_a?
+
+ # Neuter freeze because freezing can cause problems with lazy loading of attributes.
+ def freeze
+ self
+ end
+
+ def marshal_dump
+ [utc, time_zone.name, time]
+ end
+
+ def marshal_load(variables)
+ initialize(variables[0], ::Time.send!(:get_zone, variables[1]), variables[2])
+ end
+
+ # Ensure proxy class responds to all methods that underlying time instance responds to.
+ def respond_to?(sym, include_priv = false)
+ # consistently respond false to acts_like?(:date), regardless of whether #time is a Time or DateTime
+ return false if sym.to_s == 'acts_like_date?'
+ super || time.respond_to?(sym, include_priv)
+ end
+
+ # Send the missing method to +time+ instance, and wrap result in a new TimeWithZone with the existing +time_zone+.
+ def method_missing(sym, *args, &block)
+ result = time.__send__(sym, *args, &block)
+ result.acts_like?(:time) ? self.class.new(nil, time_zone, result) : result
+ end
+
+ private
+ def get_period_and_ensure_valid_local_time
+ # we don't want a Time.local instance enforcing its own DST rules as well,
+ # so transfer time values to a utc constructor if necessary
+ @time = transfer_time_values_to_utc_constructor(@time) unless @time.utc?
+ begin
+ @time_zone.period_for_local(@time)
+ rescue ::TZInfo::PeriodNotFound
+ # time is in the "spring forward" hour gap, so we're moving the time forward one hour and trying again
+ @time += 1.hour
+ retry
+ end
+ end
+
+ def transfer_time_values_to_utc_constructor(time)
+ ::Time.utc_time(time.year, time.month, time.day, time.hour, time.min, time.sec, time.respond_to?(:usec) ? time.usec : 0)
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/values/time_zone.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/values/time_zone.rb
new file mode 100644
index 000000000..a71c819fb
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/values/time_zone.rb
@@ -0,0 +1,394 @@
+# The TimeZone class serves as a wrapper around TZInfo::Timezone instances. It allows us to do the following:
+#
+# * Limit the set of zones provided by TZInfo to a meaningful subset of 142 zones.
+# * Retrieve and display zones with a friendlier name (e.g., "Eastern Time (US & Canada)" instead of "America/New_York").
+# * Lazily load TZInfo::Timezone instances only when they're needed.
+# * Create ActiveSupport::TimeWithZone instances via TimeZone's +local+, +parse+, +at+ and +now+ methods.
+#
+# If you set <tt>config.time_zone</tt> in the Rails Initializer, you can access this TimeZone object via <tt>Time.zone</tt>:
+#
+# # environment.rb:
+# Rails::Initializer.run do |config|
+# config.time_zone = "Eastern Time (US & Canada)"
+# end
+#
+# Time.zone # => #<TimeZone:0x514834...>
+# Time.zone.name # => "Eastern Time (US & Canada)"
+# Time.zone.now # => Sun, 18 May 2008 14:30:44 EDT -04:00
+#
+# The version of TZInfo bundled with Active Support only includes the definitions necessary to support the zones
+# defined by the TimeZone class. If you need to use zones that aren't defined by TimeZone, you'll need to install the TZInfo gem
+# (if a recent version of the gem is installed locally, this will be used instead of the bundled version.)
+class TimeZone
+ unless const_defined?(:MAPPING)
+ # Keys are Rails TimeZone names, values are TZInfo identifiers
+ MAPPING = {
+ "International Date Line West" => "Pacific/Midway",
+ "Midway Island" => "Pacific/Midway",
+ "Samoa" => "Pacific/Pago_Pago",
+ "Hawaii" => "Pacific/Honolulu",
+ "Alaska" => "America/Juneau",
+ "Pacific Time (US & Canada)" => "America/Los_Angeles",
+ "Tijuana" => "America/Tijuana",
+ "Mountain Time (US & Canada)" => "America/Denver",
+ "Arizona" => "America/Phoenix",
+ "Chihuahua" => "America/Chihuahua",
+ "Mazatlan" => "America/Mazatlan",
+ "Central Time (US & Canada)" => "America/Chicago",
+ "Saskatchewan" => "America/Regina",
+ "Guadalajara" => "America/Mexico_City",
+ "Mexico City" => "America/Mexico_City",
+ "Monterrey" => "America/Monterrey",
+ "Central America" => "America/Guatemala",
+ "Eastern Time (US & Canada)" => "America/New_York",
+ "Indiana (East)" => "America/Indiana/Indianapolis",
+ "Bogota" => "America/Bogota",
+ "Lima" => "America/Lima",
+ "Quito" => "America/Lima",
+ "Atlantic Time (Canada)" => "America/Halifax",
+ "Caracas" => "America/Caracas",
+ "La Paz" => "America/La_Paz",
+ "Santiago" => "America/Santiago",
+ "Newfoundland" => "America/St_Johns",
+ "Brasilia" => "America/Argentina/Buenos_Aires",
+ "Buenos Aires" => "America/Argentina/Buenos_Aires",
+ "Georgetown" => "America/Argentina/San_Juan",
+ "Greenland" => "America/Godthab",
+ "Mid-Atlantic" => "Atlantic/South_Georgia",
+ "Azores" => "Atlantic/Azores",
+ "Cape Verde Is." => "Atlantic/Cape_Verde",
+ "Dublin" => "Europe/Dublin",
+ "Edinburgh" => "Europe/Dublin",
+ "Lisbon" => "Europe/Lisbon",
+ "London" => "Europe/London",
+ "Casablanca" => "Africa/Casablanca",
+ "Monrovia" => "Africa/Monrovia",
+ "UTC" => "Etc/UTC",
+ "Belgrade" => "Europe/Belgrade",
+ "Bratislava" => "Europe/Bratislava",
+ "Budapest" => "Europe/Budapest",
+ "Ljubljana" => "Europe/Ljubljana",
+ "Prague" => "Europe/Prague",
+ "Sarajevo" => "Europe/Sarajevo",
+ "Skopje" => "Europe/Skopje",
+ "Warsaw" => "Europe/Warsaw",
+ "Zagreb" => "Europe/Zagreb",
+ "Brussels" => "Europe/Brussels",
+ "Copenhagen" => "Europe/Copenhagen",
+ "Madrid" => "Europe/Madrid",
+ "Paris" => "Europe/Paris",
+ "Amsterdam" => "Europe/Amsterdam",
+ "Berlin" => "Europe/Berlin",
+ "Bern" => "Europe/Berlin",
+ "Rome" => "Europe/Rome",
+ "Stockholm" => "Europe/Stockholm",
+ "Vienna" => "Europe/Vienna",
+ "West Central Africa" => "Africa/Algiers",
+ "Bucharest" => "Europe/Bucharest",
+ "Cairo" => "Africa/Cairo",
+ "Helsinki" => "Europe/Helsinki",
+ "Kyev" => "Europe/Kiev",
+ "Riga" => "Europe/Riga",
+ "Sofia" => "Europe/Sofia",
+ "Tallinn" => "Europe/Tallinn",
+ "Vilnius" => "Europe/Vilnius",
+ "Athens" => "Europe/Athens",
+ "Istanbul" => "Europe/Istanbul",
+ "Minsk" => "Europe/Minsk",
+ "Jerusalem" => "Asia/Jerusalem",
+ "Harare" => "Africa/Harare",
+ "Pretoria" => "Africa/Johannesburg",
+ "Moscow" => "Europe/Moscow",
+ "St. Petersburg" => "Europe/Moscow",
+ "Volgograd" => "Europe/Moscow",
+ "Kuwait" => "Asia/Kuwait",
+ "Riyadh" => "Asia/Riyadh",
+ "Nairobi" => "Africa/Nairobi",
+ "Baghdad" => "Asia/Baghdad",
+ "Tehran" => "Asia/Tehran",
+ "Abu Dhabi" => "Asia/Muscat",
+ "Muscat" => "Asia/Muscat",
+ "Baku" => "Asia/Baku",
+ "Tbilisi" => "Asia/Tbilisi",
+ "Yerevan" => "Asia/Yerevan",
+ "Kabul" => "Asia/Kabul",
+ "Ekaterinburg" => "Asia/Yekaterinburg",
+ "Islamabad" => "Asia/Karachi",
+ "Karachi" => "Asia/Karachi",
+ "Tashkent" => "Asia/Tashkent",
+ "Chennai" => "Asia/Kolkata",
+ "Kolkata" => "Asia/Kolkata",
+ "Mumbai" => "Asia/Kolkata",
+ "New Delhi" => "Asia/Kolkata",
+ "Kathmandu" => "Asia/Katmandu",
+ "Astana" => "Asia/Dhaka",
+ "Dhaka" => "Asia/Dhaka",
+ "Sri Jayawardenepura" => "Asia/Dhaka",
+ "Almaty" => "Asia/Almaty",
+ "Novosibirsk" => "Asia/Novosibirsk",
+ "Rangoon" => "Asia/Rangoon",
+ "Bangkok" => "Asia/Bangkok",
+ "Hanoi" => "Asia/Bangkok",
+ "Jakarta" => "Asia/Jakarta",
+ "Krasnoyarsk" => "Asia/Krasnoyarsk",
+ "Beijing" => "Asia/Shanghai",
+ "Chongqing" => "Asia/Chongqing",
+ "Hong Kong" => "Asia/Hong_Kong",
+ "Urumqi" => "Asia/Urumqi",
+ "Kuala Lumpur" => "Asia/Kuala_Lumpur",
+ "Singapore" => "Asia/Singapore",
+ "Taipei" => "Asia/Taipei",
+ "Perth" => "Australia/Perth",
+ "Irkutsk" => "Asia/Irkutsk",
+ "Ulaan Bataar" => "Asia/Ulaanbaatar",
+ "Seoul" => "Asia/Seoul",
+ "Osaka" => "Asia/Tokyo",
+ "Sapporo" => "Asia/Tokyo",
+ "Tokyo" => "Asia/Tokyo",
+ "Yakutsk" => "Asia/Yakutsk",
+ "Darwin" => "Australia/Darwin",
+ "Adelaide" => "Australia/Adelaide",
+ "Canberra" => "Australia/Melbourne",
+ "Melbourne" => "Australia/Melbourne",
+ "Sydney" => "Australia/Sydney",
+ "Brisbane" => "Australia/Brisbane",
+ "Hobart" => "Australia/Hobart",
+ "Vladivostok" => "Asia/Vladivostok",
+ "Guam" => "Pacific/Guam",
+ "Port Moresby" => "Pacific/Port_Moresby",
+ "Magadan" => "Asia/Magadan",
+ "Solomon Is." => "Asia/Magadan",
+ "New Caledonia" => "Pacific/Noumea",
+ "Fiji" => "Pacific/Fiji",
+ "Kamchatka" => "Asia/Kamchatka",
+ "Marshall Is." => "Pacific/Majuro",
+ "Auckland" => "Pacific/Auckland",
+ "Wellington" => "Pacific/Auckland",
+ "Nuku'alofa" => "Pacific/Tongatapu"
+ }.each { |name, zone| name.freeze; zone.freeze }
+ MAPPING.freeze
+ end
+
+ include Comparable
+ attr_reader :name
+
+ # Create a new TimeZone object with the given name and offset. The
+ # offset is the number of seconds that this time zone is offset from UTC
+ # (GMT). Seconds were chosen as the offset unit because that is the unit that
+ # Ruby uses to represent time zone offsets (see Time#utc_offset).
+ def initialize(name, utc_offset, tzinfo = nil)
+ @name = name
+ @utc_offset = utc_offset
+ @tzinfo = tzinfo
+ end
+
+ def utc_offset
+ @utc_offset ||= tzinfo.current_period.utc_offset
+ end
+
+ # Returns the offset of this time zone as a formatted string, of the
+ # format "+HH:MM".
+ def formatted_offset(colon=true, alternate_utc_string = nil)
+ utc_offset == 0 && alternate_utc_string || utc_offset.to_utc_offset_s(colon)
+ end
+
+ # Compare this time zone to the parameter. The two are comapred first on
+ # their offsets, and then by name.
+ def <=>(zone)
+ result = (utc_offset <=> zone.utc_offset)
+ result = (name <=> zone.name) if result == 0
+ result
+ end
+
+ # Returns a textual representation of this time zone.
+ def to_s
+ "(GMT#{formatted_offset}) #{name}"
+ end
+
+ # Method for creating new ActiveSupport::TimeWithZone instance in time zone of +self+ from given values. Example:
+ #
+ # Time.zone = "Hawaii" # => "Hawaii"
+ # Time.zone.local(2007, 2, 1, 15, 30, 45) # => Thu, 01 Feb 2007 15:30:45 HST -10:00
+ def local(*args)
+ time = Time.utc_time(*args)
+ ActiveSupport::TimeWithZone.new(nil, self, time)
+ end
+
+ # Method for creating new ActiveSupport::TimeWithZone instance in time zone of +self+ from number of seconds since the Unix epoch. Example:
+ #
+ # Time.zone = "Hawaii" # => "Hawaii"
+ # Time.utc(2000).to_f # => 946684800.0
+ # Time.zone.at(946684800.0) # => Fri, 31 Dec 1999 14:00:00 HST -10:00
+ def at(secs)
+ utc = Time.at(secs).utc rescue DateTime.civil(1970).since(secs)
+ utc.in_time_zone(self)
+ end
+
+ # Method for creating new ActiveSupport::TimeWithZone instance in time zone of +self+ from parsed string. Example:
+ #
+ # Time.zone = "Hawaii" # => "Hawaii"
+ # Time.zone.parse('1999-12-31 14:00:00') # => Fri, 31 Dec 1999 14:00:00 HST -10:00
+ #
+ # If upper components are missing from the string, they are supplied from TimeZone#now:
+ #
+ # Time.zone.now # => Fri, 31 Dec 1999 14:00:00 HST -10:00
+ # Time.zone.parse('22:30:00') # => Fri, 31 Dec 1999 22:30:00 HST -10:00
+ def parse(str, now=now)
+ date_parts = Date._parse(str)
+ return if date_parts.blank?
+ time = Time.parse(str, now) rescue DateTime.parse(str)
+ if date_parts[:offset].nil?
+ ActiveSupport::TimeWithZone.new(nil, self, time)
+ else
+ time.in_time_zone(self)
+ end
+ end
+
+ # Returns an ActiveSupport::TimeWithZone instance representing the current time
+ # in the time zone represented by +self+. Example:
+ #
+ # Time.zone = 'Hawaii' # => "Hawaii"
+ # Time.zone.now # => Wed, 23 Jan 2008 20:24:27 HST -10:00
+ def now
+ Time.now.utc.in_time_zone(self)
+ end
+
+ # Return the current date in this time zone.
+ def today
+ tzinfo.now.to_date
+ end
+
+ # Adjust the given time to the simultaneous time in the time zone represented by +self+. Returns a
+ # Time.utc() instance -- if you want an ActiveSupport::TimeWithZone instance, use Time#in_time_zone() instead.
+ def utc_to_local(time)
+ tzinfo.utc_to_local(time)
+ end
+
+ # Adjust the given time to the simultaneous time in UTC. Returns a Time.utc() instance.
+ def local_to_utc(time, dst=true)
+ tzinfo.local_to_utc(time, dst)
+ end
+
+ # Available so that TimeZone instances respond like TZInfo::Timezone instances
+ def period_for_utc(time)
+ tzinfo.period_for_utc(time)
+ end
+
+ # Available so that TimeZone instances respond like TZInfo::Timezone instances
+ def period_for_local(time, dst=true)
+ tzinfo.period_for_local(time, dst)
+ end
+
+ # TODO: Preload instead of lazy load for thread safety
+ def tzinfo
+ @tzinfo ||= TZInfo::Timezone.get(MAPPING[name])
+ end
+
+ unless const_defined?(:ZONES)
+ ZONES = []
+ ZONES_MAP = {}
+ [[-39_600, "International Date Line West", "Midway Island", "Samoa" ],
+ [-36_000, "Hawaii" ],
+ [-32_400, "Alaska" ],
+ [-28_800, "Pacific Time (US & Canada)", "Tijuana" ],
+ [-25_200, "Mountain Time (US & Canada)", "Chihuahua", "Mazatlan",
+ "Arizona" ],
+ [-21_600, "Central Time (US & Canada)", "Saskatchewan", "Guadalajara",
+ "Mexico City", "Monterrey", "Central America" ],
+ [-18_000, "Eastern Time (US & Canada)", "Indiana (East)", "Bogota",
+ "Lima", "Quito" ],
+ [-14_400, "Atlantic Time (Canada)", "Caracas", "La Paz", "Santiago" ],
+ [-12_600, "Newfoundland" ],
+ [-10_800, "Brasilia", "Buenos Aires", "Georgetown", "Greenland" ],
+ [ -7_200, "Mid-Atlantic" ],
+ [ -3_600, "Azores", "Cape Verde Is." ],
+ [ 0, "Dublin", "Edinburgh", "Lisbon", "London", "Casablanca",
+ "Monrovia", "UTC" ],
+ [ 3_600, "Belgrade", "Bratislava", "Budapest", "Ljubljana", "Prague",
+ "Sarajevo", "Skopje", "Warsaw", "Zagreb", "Brussels",
+ "Copenhagen", "Madrid", "Paris", "Amsterdam", "Berlin",
+ "Bern", "Rome", "Stockholm", "Vienna",
+ "West Central Africa" ],
+ [ 7_200, "Bucharest", "Cairo", "Helsinki", "Kyev", "Riga", "Sofia",
+ "Tallinn", "Vilnius", "Athens", "Istanbul", "Minsk",
+ "Jerusalem", "Harare", "Pretoria" ],
+ [ 10_800, "Moscow", "St. Petersburg", "Volgograd", "Kuwait", "Riyadh",
+ "Nairobi", "Baghdad" ],
+ [ 12_600, "Tehran" ],
+ [ 14_400, "Abu Dhabi", "Muscat", "Baku", "Tbilisi", "Yerevan" ],
+ [ 16_200, "Kabul" ],
+ [ 18_000, "Ekaterinburg", "Islamabad", "Karachi", "Tashkent" ],
+ [ 19_800, "Chennai", "Kolkata", "Mumbai", "New Delhi" ],
+ [ 20_700, "Kathmandu" ],
+ [ 21_600, "Astana", "Dhaka", "Sri Jayawardenepura", "Almaty",
+ "Novosibirsk" ],
+ [ 23_400, "Rangoon" ],
+ [ 25_200, "Bangkok", "Hanoi", "Jakarta", "Krasnoyarsk" ],
+ [ 28_800, "Beijing", "Chongqing", "Hong Kong", "Urumqi",
+ "Kuala Lumpur", "Singapore", "Taipei", "Perth", "Irkutsk",
+ "Ulaan Bataar" ],
+ [ 32_400, "Seoul", "Osaka", "Sapporo", "Tokyo", "Yakutsk" ],
+ [ 34_200, "Darwin", "Adelaide" ],
+ [ 36_000, "Canberra", "Melbourne", "Sydney", "Brisbane", "Hobart",
+ "Vladivostok", "Guam", "Port Moresby" ],
+ [ 39_600, "Magadan", "Solomon Is.", "New Caledonia" ],
+ [ 43_200, "Fiji", "Kamchatka", "Marshall Is.", "Auckland",
+ "Wellington" ],
+ [ 46_800, "Nuku'alofa" ]].
+ each do |offset, *places|
+ places.each do |place|
+ place.freeze
+ zone = new(place, offset)
+ ZONES << zone
+ ZONES_MAP[place] = zone
+ end
+ end
+ ZONES.sort!
+ ZONES.freeze
+ ZONES_MAP.freeze
+
+ US_ZONES = ZONES.find_all { |z| z.name =~ /US|Arizona|Indiana|Hawaii|Alaska/ }
+ US_ZONES.freeze
+ end
+
+ class << self
+ alias_method :create, :new
+
+ # Return a TimeZone instance with the given name, or +nil+ if no
+ # such TimeZone instance exists. (This exists to support the use of
+ # this class with the +composed_of+ macro.)
+ def new(name)
+ self[name]
+ end
+
+ # Return an array of all TimeZone objects. There are multiple
+ # TimeZone objects per time zone, in many cases, to make it easier
+ # for users to find their own time zone.
+ def all
+ ZONES
+ end
+
+ # Locate a specific time zone object. If the argument is a string, it
+ # is interpreted to mean the name of the timezone to locate. If it is a
+ # numeric value it is either the hour offset, or the second offset, of the
+ # timezone to find. (The first one with that offset will be returned.)
+ # Returns +nil+ if no such time zone is known to the system.
+ def [](arg)
+ case arg
+ when String
+ ZONES_MAP[arg]
+ when Numeric, ActiveSupport::Duration
+ arg *= 3600 if arg.abs <= 13
+ all.find { |z| z.utc_offset == arg.to_i }
+ else
+ raise ArgumentError, "invalid argument to TimeZone[]: #{arg.inspect}"
+ end
+ end
+
+ # A convenience method for returning a collection of TimeZone objects
+ # for time zones in the USA.
+ def us_zones
+ US_ZONES
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/values/unicode_tables.dat b/vendor/rails-2.1.0/activesupport/lib/active_support/values/unicode_tables.dat
new file mode 100644
index 000000000..35edb148c
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/values/unicode_tables.dat
Binary files differ
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor.rb
new file mode 100644
index 000000000..cdbcedc75
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor.rb
@@ -0,0 +1,26 @@
+# Prefer gems to the bundled libs.
+require 'rubygems'
+
+begin
+ gem 'builder', '~> 2.1.2'
+rescue Gem::LoadError
+ $:.unshift "#{File.dirname(__FILE__)}/vendor/builder-2.1.2"
+end
+
+begin
+ gem 'xml-simple', '~> 1.0.11'
+rescue Gem::LoadError
+ $:.unshift "#{File.dirname(__FILE__)}/vendor/xml-simple-1.0.11"
+end
+
+begin
+ gem 'memcache-client', '~> 1.5.0'
+rescue Gem::LoadError
+ $:.unshift "#{File.dirname(__FILE__)}/vendor/memcache-client-1.5.0"
+end
+
+begin
+ gem 'tzinfo', '~> 0.3.8'
+rescue Gem::LoadError
+ $:.unshift "#{File.dirname(__FILE__)}/vendor/tzinfo-0.3.8"
+end \ No newline at end of file
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/builder-2.1.2/blankslate.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/builder-2.1.2/blankslate.rb
new file mode 100644
index 000000000..da6034d9c
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/builder-2.1.2/blankslate.rb
@@ -0,0 +1,113 @@
+#!/usr/bin/env ruby
+#--
+# Copyright 2004, 2006 by Jim Weirich (jim@weirichhouse.org).
+# All rights reserved.
+
+# Permission is granted for use, copying, modification, distribution,
+# and distribution of modified versions of this work as long as the
+# above copyright notice is included.
+#++
+
+######################################################################
+# BlankSlate provides an abstract base class with no predefined
+# methods (except for <tt>\_\_send__</tt> and <tt>\_\_id__</tt>).
+# BlankSlate is useful as a base class when writing classes that
+# depend upon <tt>method_missing</tt> (e.g. dynamic proxies).
+#
+class BlankSlate
+ class << self
+
+ # Hide the method named +name+ in the BlankSlate class. Don't
+ # hide +instance_eval+ or any method beginning with "__".
+ def hide(name)
+ if instance_methods.include?(name.to_s) and
+ name !~ /^(__|instance_eval)/
+ @hidden_methods ||= {}
+ @hidden_methods[name.to_sym] = instance_method(name)
+ undef_method name
+ end
+ end
+
+ def find_hidden_method(name)
+ @hidden_methods ||= {}
+ @hidden_methods[name] || superclass.find_hidden_method(name)
+ end
+
+ # Redefine a previously hidden method so that it may be called on a blank
+ # slate object.
+ def reveal(name)
+ bound_method = nil
+ unbound_method = find_hidden_method(name)
+ fail "Don't know how to reveal method '#{name}'" unless unbound_method
+ define_method(name) do |*args|
+ bound_method ||= unbound_method.bind(self)
+ bound_method.call(*args)
+ end
+ end
+ end
+
+ instance_methods.each { |m| hide(m) }
+end
+
+######################################################################
+# Since Ruby is very dynamic, methods added to the ancestors of
+# BlankSlate <em>after BlankSlate is defined</em> will show up in the
+# list of available BlankSlate methods. We handle this by defining a
+# hook in the Object and Kernel classes that will hide any method
+# defined after BlankSlate has been loaded.
+#
+module Kernel
+ class << self
+ alias_method :blank_slate_method_added, :method_added
+
+ # Detect method additions to Kernel and remove them in the
+ # BlankSlate class.
+ def method_added(name)
+ result = blank_slate_method_added(name)
+ return result if self != Kernel
+ BlankSlate.hide(name)
+ result
+ end
+ end
+end
+
+######################################################################
+# Same as above, except in Object.
+#
+class Object
+ class << self
+ alias_method :blank_slate_method_added, :method_added
+
+ # Detect method additions to Object and remove them in the
+ # BlankSlate class.
+ def method_added(name)
+ result = blank_slate_method_added(name)
+ return result if self != Object
+ BlankSlate.hide(name)
+ result
+ end
+
+ def find_hidden_method(name)
+ nil
+ end
+ end
+end
+
+######################################################################
+# Also, modules included into Object need to be scanned and have their
+# instance methods removed from blank slate. In theory, modules
+# included into Kernel would have to be removed as well, but a
+# "feature" of Ruby prevents late includes into modules from being
+# exposed in the first place.
+#
+class Module
+ alias blankslate_original_append_features append_features
+ def append_features(mod)
+ result = blankslate_original_append_features(mod)
+ return result if mod != Object
+ instance_methods.each do |name|
+ BlankSlate.hide(name)
+ end
+ result
+ end
+end \ No newline at end of file
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/builder-2.1.2/builder.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/builder-2.1.2/builder.rb
new file mode 100644
index 000000000..971927766
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/builder-2.1.2/builder.rb
@@ -0,0 +1,13 @@
+#!/usr/bin/env ruby
+
+#--
+# Copyright 2004 by Jim Weirich (jim@weirichhouse.org).
+# All rights reserved.
+
+# Permission is granted for use, copying, modification, distribution,
+# and distribution of modified versions of this work as long as the
+# above copyright notice is included.
+#++
+
+require 'builder/xmlmarkup'
+require 'builder/xmlevents'
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/builder-2.1.2/builder/blankslate.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/builder-2.1.2/builder/blankslate.rb
new file mode 100644
index 000000000..2935b6f1d
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/builder-2.1.2/builder/blankslate.rb
@@ -0,0 +1,20 @@
+#!/usr/bin/env ruby
+#--
+# Copyright 2004, 2006 by Jim Weirich (jim@weirichhouse.org).
+# All rights reserved.
+
+# Permission is granted for use, copying, modification, distribution,
+# and distribution of modified versions of this work as long as the
+# above copyright notice is included.
+#++
+
+require 'blankslate'
+
+######################################################################
+# BlankSlate has been promoted to a top level name and is now
+# available as a standalone gem. We make the name available in the
+# Builder namespace for compatibility.
+#
+module Builder
+ BlankSlate = ::BlankSlate
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/builder-2.1.2/builder/css.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/builder-2.1.2/builder/css.rb
new file mode 100644
index 000000000..e086a1b13
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/builder-2.1.2/builder/css.rb
@@ -0,0 +1,250 @@
+#!/usr/bin/env ruby
+#--
+# Copyright 2004, 2005 by Jim Weirich (jim@weirichhouse.org).
+# Copyright 2005 by Scott Barron (scott@elitists.net).
+# All rights reserved.
+#
+# Permission is granted for use, copying, modification, distribution,
+# and distribution of modified versions of this work as long as the
+# above copyright notice is included.
+#
+# Much of this is taken from Jim's work in xmlbase.rb and xmlmarkup.rb.
+# Documentation has also been copied and pasted and modified to reflect
+# that we're building CSS here instead of XML. Jim is conducting the
+# orchestra here and I'm just off in the corner playing a flute.
+#++
+
+# Provide a flexible and easy to use Builder for creating Cascading
+# Style Sheets (CSS).
+
+
+require 'builder/blankslate'
+
+module Builder
+
+ # Create a Cascading Style Sheet (CSS) using Ruby.
+ #
+ # Example usage:
+ #
+ # css = Builder::CSS.new
+ #
+ # text_color = '#7F7F7F'
+ # preferred_fonts = 'Helvetica, Arial, sans_serif'
+ #
+ # css.comment! 'This is our stylesheet'
+ # css.body {
+ # background_color '#FAFAFA'
+ # font_size 'small'
+ # font_family preferred_fonts
+ # color text_color
+ # }
+ #
+ # css.id!('navbar') {
+ # width '500px'
+ # }
+ #
+ # css.class!('navitem') {
+ # color 'red'
+ # }
+ #
+ # css.a :hover {
+ # text_decoration 'underline'
+ # }
+ #
+ # css.div(:id => 'menu') {
+ # background 'green'
+ # }
+ #
+ # css.div(:class => 'foo') {
+ # background 'red'
+ # }
+ #
+ # This will yield the following stylesheet:
+ #
+ # /* This is our stylesheet */
+ # body {
+ # background_color: #FAFAFA;
+ # font_size: small;
+ # font_family: Helvetica, Arial, sans_serif;
+ # color: #7F7F7F;
+ # }
+ #
+ # #navbar {
+ # width: 500px;
+ # }
+ #
+ # .navitem {
+ # color: red;
+ # }
+ #
+ # a:hover {
+ # text_decoration: underline;
+ # }
+ #
+ # div#menu {
+ # background: green;
+ # }
+ #
+ # div.foo {
+ # background: red;
+ # }
+ #
+ class CSS < BlankSlate
+
+ # Create a CSS builder.
+ #
+ # out:: Object receiving the markup.1 +out+ must respond to
+ # <tt><<</tt>.
+ # indent:: Number of spaces used for indentation (0 implies no
+ # indentation and no line breaks).
+ #
+ def initialize(indent=2)
+ @indent = indent
+ @target = []
+ @parts = []
+ @library = {}
+ end
+
+ def +(part)
+ _join_with_op! '+'
+ self
+ end
+
+ def >>(part)
+ _join_with_op! ''
+ self
+ end
+
+ def >(part)
+ _join_with_op! '>'
+ self
+ end
+
+ def |(part)
+ _join_with_op! ','
+ self
+ end
+
+ # Return the target of the builder
+ def target!
+ @target * ''
+ end
+
+ # Create a comment string in the output.
+ def comment!(comment_text)
+ @target << "/* #{comment_text} */\n"
+ end
+
+ def id!(arg, &block)
+ _start_container('#'+arg.to_s, nil, block_given?)
+ _css_block(block) if block
+ _unify_block
+ self
+ end
+
+ def class!(arg, &block)
+ _start_container('.'+arg.to_s, nil, block_given?)
+ _css_block(block) if block
+ _unify_block
+ self
+ end
+
+ def store!(sym, &block)
+ @library[sym] = block.to_proc
+ end
+
+ def group!(*args, &block)
+ args.each do |arg|
+ if arg.is_a?(Symbol)
+ instance_eval(&@library[arg])
+ else
+ instance_eval(&arg)
+ end
+ _text ', ' unless arg == args.last
+ end
+ if block
+ _css_block(block)
+ _unify_block
+ end
+ end
+
+ def method_missing(sym, *args, &block)
+ sym = "#{sym}:#{args.shift}" if args.first.kind_of?(Symbol)
+ if block
+ _start_container(sym, args.first)
+ _css_block(block)
+ _unify_block
+ elsif @in_block
+ _indent
+ _css_line(sym, *args)
+ _newline
+ return self
+ else
+ _start_container(sym, args.first, false)
+ _unify_block
+ end
+ self
+ end
+
+ # "Cargo culted" from Jim who also "cargo culted" it. See xmlbase.rb.
+ def nil?
+ false
+ end
+
+ private
+ def _unify_block
+ @target << @parts * ''
+ @parts = []
+ end
+
+ def _join_with_op!(op)
+ rhs, lhs = @target.pop, @target.pop
+ @target << "#{lhs} #{op} #{rhs}"
+ end
+
+ def _text(text)
+ @parts << text
+ end
+
+ def _css_block(block)
+ _newline
+ _nested_structures(block)
+ _end_container
+ _end_block
+ end
+
+ def _end_block
+ _newline
+ _newline
+ end
+
+ def _newline
+ _text "\n"
+ end
+
+ def _indent
+ _text ' ' * @indent
+ end
+
+ def _nested_structures(block)
+ @in_block = true
+ self.instance_eval(&block)
+ @in_block = false
+ end
+
+ def _start_container(sym, atts = {}, with_bracket = true)
+ selector = sym.to_s
+ selector << ".#{atts[:class]}" if atts && atts[:class]
+ selector << '#' + "#{atts[:id]}" if atts && atts[:id]
+ @parts << "#{selector}#{with_bracket ? ' {' : ''}"
+ end
+
+ def _end_container
+ @parts << "}"
+ end
+
+ def _css_line(sym, *args)
+ _text("#{sym.to_s.gsub('_','-')}: #{args * ' '};")
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/builder-2.1.2/builder/xchar.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/builder-2.1.2/builder/xchar.rb
new file mode 100644
index 000000000..8bdbd0589
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/builder-2.1.2/builder/xchar.rb
@@ -0,0 +1,115 @@
+#!/usr/bin/env ruby
+
+# The XChar library is provided courtesy of Sam Ruby (See
+# http://intertwingly.net/stories/2005/09/28/xchar.rb)
+
+# --------------------------------------------------------------------
+
+# If the Builder::XChar module is not currently defined, fail on any
+# name clashes in standard library classes.
+
+module Builder
+ def self.check_for_name_collision(klass, method_name, defined_constant=nil)
+ if klass.instance_methods.include?(method_name.to_s)
+ fail RuntimeError,
+ "Name Collision: Method '#{method_name}' is already defined in #{klass}"
+ end
+ end
+end
+
+if ! defined?(Builder::XChar)
+ Builder.check_for_name_collision(String, "to_xs")
+ Builder.check_for_name_collision(Fixnum, "xchr")
+end
+
+######################################################################
+module Builder
+
+ ####################################################################
+ # XML Character converter, from Sam Ruby:
+ # (see http://intertwingly.net/stories/2005/09/28/xchar.rb).
+ #
+ module XChar # :nodoc:
+
+ # See
+ # http://intertwingly.net/stories/2004/04/14/i18n.html#CleaningWindows
+ # for details.
+ CP1252 = { # :nodoc:
+ 128 => 8364, # euro sign
+ 130 => 8218, # single low-9 quotation mark
+ 131 => 402, # latin small letter f with hook
+ 132 => 8222, # double low-9 quotation mark
+ 133 => 8230, # horizontal ellipsis
+ 134 => 8224, # dagger
+ 135 => 8225, # double dagger
+ 136 => 710, # modifier letter circumflex accent
+ 137 => 8240, # per mille sign
+ 138 => 352, # latin capital letter s with caron
+ 139 => 8249, # single left-pointing angle quotation mark
+ 140 => 338, # latin capital ligature oe
+ 142 => 381, # latin capital letter z with caron
+ 145 => 8216, # left single quotation mark
+ 146 => 8217, # right single quotation mark
+ 147 => 8220, # left double quotation mark
+ 148 => 8221, # right double quotation mark
+ 149 => 8226, # bullet
+ 150 => 8211, # en dash
+ 151 => 8212, # em dash
+ 152 => 732, # small tilde
+ 153 => 8482, # trade mark sign
+ 154 => 353, # latin small letter s with caron
+ 155 => 8250, # single right-pointing angle quotation mark
+ 156 => 339, # latin small ligature oe
+ 158 => 382, # latin small letter z with caron
+ 159 => 376, # latin capital letter y with diaeresis
+ }
+
+ # See http://www.w3.org/TR/REC-xml/#dt-chardata for details.
+ PREDEFINED = {
+ 38 => '&amp;', # ampersand
+ 60 => '&lt;', # left angle bracket
+ 62 => '&gt;', # right angle bracket
+ }
+
+ # See http://www.w3.org/TR/REC-xml/#charsets for details.
+ VALID = [
+ 0x9, 0xA, 0xD,
+ (0x20..0xD7FF),
+ (0xE000..0xFFFD),
+ (0x10000..0x10FFFF)
+ ]
+ end
+
+end
+
+
+######################################################################
+# Enhance the Fixnum class with a XML escaped character conversion.
+#
+class Fixnum
+ XChar = Builder::XChar if ! defined?(XChar)
+
+ # XML escaped version of chr
+ def xchr
+ n = XChar::CP1252[self] || self
+ case n when *XChar::VALID
+ XChar::PREDEFINED[n] or (n<128 ? n.chr : "&##{n};")
+ else
+ '*'
+ end
+ end
+end
+
+
+######################################################################
+# Enhance the String class with a XML escaped character version of
+# to_s.
+#
+class String
+ # XML escaped version of to_s
+ def to_xs
+ unpack('U*').map {|n| n.xchr}.join # ASCII, UTF-8
+ rescue
+ unpack('C*').map {|n| n.xchr}.join # ISO-8859-1, WIN-1252
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/builder-2.1.2/builder/xmlbase.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/builder-2.1.2/builder/xmlbase.rb
new file mode 100644
index 000000000..ace4b56d5
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/builder-2.1.2/builder/xmlbase.rb
@@ -0,0 +1,139 @@
+#!/usr/bin/env ruby
+
+require 'builder/blankslate'
+
+module Builder
+
+ # Generic error for builder
+ class IllegalBlockError < RuntimeError; end
+
+ # XmlBase is a base class for building XML builders. See
+ # Builder::XmlMarkup and Builder::XmlEvents for examples.
+ class XmlBase < BlankSlate
+
+ # Create an XML markup builder.
+ #
+ # out:: Object receiving the markup. +out+ must respond to
+ # <tt><<</tt>.
+ # indent:: Number of spaces used for indentation (0 implies no
+ # indentation and no line breaks).
+ # initial:: Level of initial indentation.
+ #
+ def initialize(indent=0, initial=0)
+ @indent = indent
+ @level = initial
+ end
+
+ # Create a tag named +sym+. Other than the first argument which
+ # is the tag name, the arguments are the same as the tags
+ # implemented via <tt>method_missing</tt>.
+ def tag!(sym, *args, &block)
+ method_missing(sym.to_sym, *args, &block)
+ end
+
+ # Create XML markup based on the name of the method. This method
+ # is never invoked directly, but is called for each markup method
+ # in the markup block.
+ def method_missing(sym, *args, &block)
+ text = nil
+ attrs = nil
+ sym = "#{sym}:#{args.shift}" if args.first.kind_of?(Symbol)
+ args.each do |arg|
+ case arg
+ when Hash
+ attrs ||= {}
+ attrs.merge!(arg)
+ else
+ text ||= ''
+ text << arg.to_s
+ end
+ end
+ if block
+ unless text.nil?
+ raise ArgumentError, "XmlMarkup cannot mix a text argument with a block"
+ end
+ _indent
+ _start_tag(sym, attrs)
+ _newline
+ _nested_structures(block)
+ _indent
+ _end_tag(sym)
+ _newline
+ elsif text.nil?
+ _indent
+ _start_tag(sym, attrs, true)
+ _newline
+ else
+ _indent
+ _start_tag(sym, attrs)
+ text! text
+ _end_tag(sym)
+ _newline
+ end
+ @target
+ end
+
+ # Append text to the output target. Escape any markup. May be
+ # used within the markup brackets as:
+ #
+ # builder.p { |b| b.br; b.text! "HI" } #=> <p><br/>HI</p>
+ def text!(text)
+ _text(_escape(text))
+ end
+
+ # Append text to the output target without escaping any markup.
+ # May be used within the markup brackets as:
+ #
+ # builder.p { |x| x << "<br/>HI" } #=> <p><br/>HI</p>
+ #
+ # This is useful when using non-builder enabled software that
+ # generates strings. Just insert the string directly into the
+ # builder without changing the inserted markup.
+ #
+ # It is also useful for stacking builder objects. Builders only
+ # use <tt><<</tt> to append to the target, so by supporting this
+ # method/operation builders can use other builders as their
+ # targets.
+ def <<(text)
+ _text(text)
+ end
+
+ # For some reason, nil? is sent to the XmlMarkup object. If nil?
+ # is not defined and method_missing is invoked, some strange kind
+ # of recursion happens. Since nil? won't ever be an XML tag, it
+ # is pretty safe to define it here. (Note: this is an example of
+ # cargo cult programming,
+ # cf. http://fishbowl.pastiche.org/2004/10/13/cargo_cult_programming).
+ def nil?
+ false
+ end
+
+ private
+
+ require 'builder/xchar'
+ def _escape(text)
+ text.to_xs
+ end
+
+ def _escape_quote(text)
+ _escape(text).gsub(%r{"}, '&quot;') # " WART
+ end
+
+ def _newline
+ return if @indent == 0
+ text! "\n"
+ end
+
+ def _indent
+ return if @indent == 0 || @level == 0
+ text!(" " * (@level * @indent))
+ end
+
+ def _nested_structures(block)
+ @level += 1
+ block.call(self)
+ ensure
+ @level -= 1
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/builder-2.1.2/builder/xmlevents.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/builder-2.1.2/builder/xmlevents.rb
new file mode 100644
index 000000000..91fcd21e1
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/builder-2.1.2/builder/xmlevents.rb
@@ -0,0 +1,63 @@
+#!/usr/bin/env ruby
+
+#--
+# Copyright 2004 by Jim Weirich (jim@weirichhouse.org).
+# All rights reserved.
+
+# Permission is granted for use, copying, modification, distribution,
+# and distribution of modified versions of this work as long as the
+# above copyright notice is included.
+#++
+
+require 'builder/xmlmarkup'
+
+module Builder
+
+ # Create a series of SAX-like XML events (e.g. start_tag, end_tag)
+ # from the markup code. XmlEvent objects are used in a way similar
+ # to XmlMarkup objects, except that a series of events are generated
+ # and passed to a handler rather than generating character-based
+ # markup.
+ #
+ # Usage:
+ # xe = Builder::XmlEvents.new(hander)
+ # xe.title("HI") # Sends start_tag/end_tag/text messages to the handler.
+ #
+ # Indentation may also be selected by providing value for the
+ # indentation size and initial indentation level.
+ #
+ # xe = Builder::XmlEvents.new(handler, indent_size, initial_indent_level)
+ #
+ # == XML Event Handler
+ #
+ # The handler object must expect the following events.
+ #
+ # [<tt>start_tag(tag, attrs)</tt>]
+ # Announces that a new tag has been found. +tag+ is the name of
+ # the tag and +attrs+ is a hash of attributes for the tag.
+ #
+ # [<tt>end_tag(tag)</tt>]
+ # Announces that an end tag for +tag+ has been found.
+ #
+ # [<tt>text(text)</tt>]
+ # Announces that a string of characters (+text+) has been found.
+ # A series of characters may be broken up into more than one
+ # +text+ call, so the client cannot assume that a single
+ # callback contains all the text data.
+ #
+ class XmlEvents < XmlMarkup
+ def text!(text)
+ @target.text(text)
+ end
+
+ def _start_tag(sym, attrs, end_too=false)
+ @target.start_tag(sym, attrs)
+ _end_tag(sym) if end_too
+ end
+
+ def _end_tag(sym)
+ @target.end_tag(sym)
+ end
+ end
+
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/builder-2.1.2/builder/xmlmarkup.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/builder-2.1.2/builder/xmlmarkup.rb
new file mode 100644
index 000000000..ec59dddc3
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/builder-2.1.2/builder/xmlmarkup.rb
@@ -0,0 +1,328 @@
+#!/usr/bin/env ruby
+#--
+# Copyright 2004, 2005 by Jim Weirich (jim@weirichhouse.org).
+# All rights reserved.
+
+# Permission is granted for use, copying, modification, distribution,
+# and distribution of modified versions of this work as long as the
+# above copyright notice is included.
+#++
+
+# Provide a flexible and easy to use Builder for creating XML markup.
+# See XmlBuilder for usage details.
+
+require 'builder/xmlbase'
+
+module Builder
+
+ # Create XML markup easily. All (well, almost all) methods sent to
+ # an XmlMarkup object will be translated to the equivalent XML
+ # markup. Any method with a block will be treated as an XML markup
+ # tag with nested markup in the block.
+ #
+ # Examples will demonstrate this easier than words. In the
+ # following, +xm+ is an +XmlMarkup+ object.
+ #
+ # xm.em("emphasized") # => <em>emphasized</em>
+ # xm.em { xmm.b("emp & bold") } # => <em><b>emph &amp; bold</b></em>
+ # xm.a("A Link", "href"=>"http://onestepback.org")
+ # # => <a href="http://onestepback.org">A Link</a>
+ # xm.div { br } # => <div><br/></div>
+ # xm.target("name"=>"compile", "option"=>"fast")
+ # # => <target option="fast" name="compile"\>
+ # # NOTE: order of attributes is not specified.
+ #
+ # xm.instruct! # <?xml version="1.0" encoding="UTF-8"?>
+ # xm.html { # <html>
+ # xm.head { # <head>
+ # xm.title("History") # <title>History</title>
+ # } # </head>
+ # xm.body { # <body>
+ # xm.comment! "HI" # <! -- HI -->
+ # xm.h1("Header") # <h1>Header</h1>
+ # xm.p("paragraph") # <p>paragraph</p>
+ # } # </body>
+ # } # </html>
+ #
+ # == Notes:
+ #
+ # * The order that attributes are inserted in markup tags is
+ # undefined.
+ #
+ # * Sometimes you wish to insert text without enclosing tags. Use
+ # the <tt>text!</tt> method to accomplish this.
+ #
+ # Example:
+ #
+ # xm.div { # <div>
+ # xm.text! "line"; xm.br # line<br/>
+ # xm.text! "another line"; xmbr # another line<br/>
+ # } # </div>
+ #
+ # * The special XML characters <, >, and & are converted to &lt;,
+ # &gt; and &amp; automatically. Use the <tt><<</tt> operation to
+ # insert text without modification.
+ #
+ # * Sometimes tags use special characters not allowed in ruby
+ # identifiers. Use the <tt>tag!</tt> method to handle these
+ # cases.
+ #
+ # Example:
+ #
+ # xml.tag!("SOAP:Envelope") { ... }
+ #
+ # will produce ...
+ #
+ # <SOAP:Envelope> ... </SOAP:Envelope>"
+ #
+ # <tt>tag!</tt> will also take text and attribute arguments (after
+ # the tag name) like normal markup methods. (But see the next
+ # bullet item for a better way to handle XML namespaces).
+ #
+ # * Direct support for XML namespaces is now available. If the
+ # first argument to a tag call is a symbol, it will be joined to
+ # the tag to produce a namespace:tag combination. It is easier to
+ # show this than describe it.
+ #
+ # xml.SOAP :Envelope do ... end
+ #
+ # Just put a space before the colon in a namespace to produce the
+ # right form for builder (e.g. "<tt>SOAP:Envelope</tt>" =>
+ # "<tt>xml.SOAP :Envelope</tt>")
+ #
+ # * XmlMarkup builds the markup in any object (called a _target_)
+ # that accepts the <tt><<</tt> method. If no target is given,
+ # then XmlMarkup defaults to a string target.
+ #
+ # Examples:
+ #
+ # xm = Builder::XmlMarkup.new
+ # result = xm.title("yada")
+ # # result is a string containing the markup.
+ #
+ # buffer = ""
+ # xm = Builder::XmlMarkup.new(buffer)
+ # # The markup is appended to buffer (using <<)
+ #
+ # xm = Builder::XmlMarkup.new(STDOUT)
+ # # The markup is written to STDOUT (using <<)
+ #
+ # xm = Builder::XmlMarkup.new
+ # x2 = Builder::XmlMarkup.new(:target=>xm)
+ # # Markup written to +x2+ will be send to +xm+.
+ #
+ # * Indentation is enabled by providing the number of spaces to
+ # indent for each level as a second argument to XmlBuilder.new.
+ # Initial indentation may be specified using a third parameter.
+ #
+ # Example:
+ #
+ # xm = Builder.new(:indent=>2)
+ # # xm will produce nicely formatted and indented XML.
+ #
+ # xm = Builder.new(:indent=>2, :margin=>4)
+ # # xm will produce nicely formatted and indented XML with 2
+ # # spaces per indent and an over all indentation level of 4.
+ #
+ # builder = Builder::XmlMarkup.new(:target=>$stdout, :indent=>2)
+ # builder.name { |b| b.first("Jim"); b.last("Weirich) }
+ # # prints:
+ # # <name>
+ # # <first>Jim</first>
+ # # <last>Weirich</last>
+ # # </name>
+ #
+ # * The instance_eval implementation which forces self to refer to
+ # the message receiver as self is now obsolete. We now use normal
+ # block calls to execute the markup block. This means that all
+ # markup methods must now be explicitly send to the xml builder.
+ # For instance, instead of
+ #
+ # xml.div { strong("text") }
+ #
+ # you need to write:
+ #
+ # xml.div { xml.strong("text") }
+ #
+ # Although more verbose, the subtle change in semantics within the
+ # block was found to be prone to error. To make this change a
+ # little less cumbersome, the markup block now gets the markup
+ # object sent as an argument, allowing you to use a shorter alias
+ # within the block.
+ #
+ # For example:
+ #
+ # xml_builder = Builder::XmlMarkup.new
+ # xml_builder.div { |xml|
+ # xml.stong("text")
+ # }
+ #
+ class XmlMarkup < XmlBase
+
+ # Create an XML markup builder. Parameters are specified by an
+ # option hash.
+ #
+ # :target=><em>target_object</em>::
+ # Object receiving the markup. +out+ must respond to the
+ # <tt><<</tt> operator. The default is a plain string target.
+ #
+ # :indent=><em>indentation</em>::
+ # Number of spaces used for indentation. The default is no
+ # indentation and no line breaks.
+ #
+ # :margin=><em>initial_indentation_level</em>::
+ # Amount of initial indentation (specified in levels, not
+ # spaces).
+ #
+ # :escape_attrs=><b>OBSOLETE</em>::
+ # The :escape_attrs option is no longer supported by builder
+ # (and will be quietly ignored). String attribute values are
+ # now automatically escaped. If you need unescaped attribute
+ # values (perhaps you are using entities in the attribute
+ # values), then give the value as a Symbol. This allows much
+ # finer control over escaping attribute values.
+ #
+ def initialize(options={})
+ indent = options[:indent] || 0
+ margin = options[:margin] || 0
+ super(indent, margin)
+ @target = options[:target] || ""
+ end
+
+ # Return the target of the builder.
+ def target!
+ @target
+ end
+
+ def comment!(comment_text)
+ _ensure_no_block block_given?
+ _special("<!-- ", " -->", comment_text, nil)
+ end
+
+ # Insert an XML declaration into the XML markup.
+ #
+ # For example:
+ #
+ # xml.declare! :ELEMENT, :blah, "yada"
+ # # => <!ELEMENT blah "yada">
+ def declare!(inst, *args, &block)
+ _indent
+ @target << "<!#{inst}"
+ args.each do |arg|
+ case arg
+ when String
+ @target << %{ "#{arg}"} # " WART
+ when Symbol
+ @target << " #{arg}"
+ end
+ end
+ if block_given?
+ @target << " ["
+ _newline
+ _nested_structures(block)
+ @target << "]"
+ end
+ @target << ">"
+ _newline
+ end
+
+ # Insert a processing instruction into the XML markup. E.g.
+ #
+ # For example:
+ #
+ # xml.instruct!
+ # #=> <?xml version="1.0" encoding="UTF-8"?>
+ # xml.instruct! :aaa, :bbb=>"ccc"
+ # #=> <?aaa bbb="ccc"?>
+ #
+ def instruct!(directive_tag=:xml, attrs={})
+ _ensure_no_block block_given?
+ if directive_tag == :xml
+ a = { :version=>"1.0", :encoding=>"UTF-8" }
+ attrs = a.merge attrs
+ end
+ _special(
+ "<?#{directive_tag}",
+ "?>",
+ nil,
+ attrs,
+ [:version, :encoding, :standalone])
+ end
+
+ # Insert a CDATA section into the XML markup.
+ #
+ # For example:
+ #
+ # xml.cdata!("text to be included in cdata")
+ # #=> <![CDATA[text to be included in cdata]]>
+ #
+ def cdata!(text)
+ _ensure_no_block block_given?
+ _special("<![CDATA[", "]]>", text, nil)
+ end
+
+ private
+
+ # NOTE: All private methods of a builder object are prefixed when
+ # a "_" character to avoid possible conflict with XML tag names.
+
+ # Insert text directly in to the builder's target.
+ def _text(text)
+ @target << text
+ end
+
+ # Insert special instruction.
+ def _special(open, close, data=nil, attrs=nil, order=[])
+ _indent
+ @target << open
+ @target << data if data
+ _insert_attributes(attrs, order) if attrs
+ @target << close
+ _newline
+ end
+
+ # Start an XML tag. If <tt>end_too</tt> is true, then the start
+ # tag is also the end tag (e.g. <br/>
+ def _start_tag(sym, attrs, end_too=false)
+ @target << "<#{sym}"
+ _insert_attributes(attrs)
+ @target << "/" if end_too
+ @target << ">"
+ end
+
+ # Insert an ending tag.
+ def _end_tag(sym)
+ @target << "</#{sym}>"
+ end
+
+ # Insert the attributes (given in the hash).
+ def _insert_attributes(attrs, order=[])
+ return if attrs.nil?
+ order.each do |k|
+ v = attrs[k]
+ @target << %{ #{k}="#{_attr_value(v)}"} if v # " WART
+ end
+ attrs.each do |k, v|
+ @target << %{ #{k}="#{_attr_value(v)}"} unless order.member?(k) # " WART
+ end
+ end
+
+ def _attr_value(value)
+ case value
+ when Symbol
+ value.to_s
+ else
+ _escape_quote(value.to_s)
+ end
+ end
+
+ def _ensure_no_block(got_block)
+ if got_block
+ fail IllegalBlockError,
+ "Blocks are not allowed on XML instructions"
+ end
+ end
+
+ end
+
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/memcache-client-1.5.0/memcache.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/memcache-client-1.5.0/memcache.rb
new file mode 100644
index 000000000..dda7f2c30
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/memcache-client-1.5.0/memcache.rb
@@ -0,0 +1,849 @@
+# All original code copyright 2005, 2006, 2007 Bob Cottrell, Eric Hodel,
+# The Robot Co-op. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# 3. Neither the names of the authors nor the names of their contributors
+# may be used to endorse or promote products derived from this software
+# without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS
+# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE
+# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+# OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
+# OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+# BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+# EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+require 'socket'
+require 'thread'
+require 'timeout'
+require 'rubygems'
+
+class String
+
+ ##
+ # Uses the ITU-T polynomial in the CRC32 algorithm.
+
+ def crc32_ITU_T
+ n = length
+ r = 0xFFFFFFFF
+
+ n.times do |i|
+ r ^= self[i]
+ 8.times do
+ if (r & 1) != 0 then
+ r = (r>>1) ^ 0xEDB88320
+ else
+ r >>= 1
+ end
+ end
+ end
+
+ r ^ 0xFFFFFFFF
+ end
+
+end
+
+##
+# A Ruby client library for memcached.
+#
+# This is intended to provide access to basic memcached functionality. It
+# does not attempt to be complete implementation of the entire API, but it is
+# approaching a complete implementation.
+
+class MemCache
+
+ ##
+ # The version of MemCache you are using.
+
+ VERSION = '1.5.0'
+
+ ##
+ # Default options for the cache object.
+
+ DEFAULT_OPTIONS = {
+ :namespace => nil,
+ :readonly => false,
+ :multithread => false,
+ }
+
+ ##
+ # Default memcached port.
+
+ DEFAULT_PORT = 11211
+
+ ##
+ # Default memcached server weight.
+
+ DEFAULT_WEIGHT = 1
+
+ ##
+ # The amount of time to wait for a response from a memcached server. If a
+ # response is not completed within this time, the connection to the server
+ # will be closed and an error will be raised.
+
+ attr_accessor :request_timeout
+
+ ##
+ # The namespace for this instance
+
+ attr_reader :namespace
+
+ ##
+ # The multithread setting for this instance
+
+ attr_reader :multithread
+
+ ##
+ # The servers this client talks to. Play at your own peril.
+
+ attr_reader :servers
+
+ ##
+ # Accepts a list of +servers+ and a list of +opts+. +servers+ may be
+ # omitted. See +servers=+ for acceptable server list arguments.
+ #
+ # Valid options for +opts+ are:
+ #
+ # [:namespace] Prepends this value to all keys added or retrieved.
+ # [:readonly] Raises an exeception on cache writes when true.
+ # [:multithread] Wraps cache access in a Mutex for thread safety.
+ #
+ # Other options are ignored.
+
+ def initialize(*args)
+ servers = []
+ opts = {}
+
+ case args.length
+ when 0 then # NOP
+ when 1 then
+ arg = args.shift
+ case arg
+ when Hash then opts = arg
+ when Array then servers = arg
+ when String then servers = [arg]
+ else raise ArgumentError, 'first argument must be Array, Hash or String'
+ end
+ when 2 then
+ servers, opts = args
+ else
+ raise ArgumentError, "wrong number of arguments (#{args.length} for 2)"
+ end
+
+ opts = DEFAULT_OPTIONS.merge opts
+ @namespace = opts[:namespace]
+ @readonly = opts[:readonly]
+ @multithread = opts[:multithread]
+ @mutex = Mutex.new if @multithread
+ @buckets = []
+ self.servers = servers
+ end
+
+ ##
+ # Returns a string representation of the cache object.
+
+ def inspect
+ "<MemCache: %d servers, %d buckets, ns: %p, ro: %p>" %
+ [@servers.length, @buckets.length, @namespace, @readonly]
+ end
+
+ ##
+ # Returns whether there is at least one active server for the object.
+
+ def active?
+ not @servers.empty?
+ end
+
+ ##
+ # Returns whether or not the cache object was created read only.
+
+ def readonly?
+ @readonly
+ end
+
+ ##
+ # Set the servers that the requests will be distributed between. Entries
+ # can be either strings of the form "hostname:port" or
+ # "hostname:port:weight" or MemCache::Server objects.
+
+ def servers=(servers)
+ # Create the server objects.
+ @servers = servers.collect do |server|
+ case server
+ when String
+ host, port, weight = server.split ':', 3
+ port ||= DEFAULT_PORT
+ weight ||= DEFAULT_WEIGHT
+ Server.new self, host, port, weight
+ when Server
+ if server.memcache.multithread != @multithread then
+ raise ArgumentError, "can't mix threaded and non-threaded servers"
+ end
+ server
+ else
+ raise TypeError, "cannot convert #{server.class} into MemCache::Server"
+ end
+ end
+
+ # Create an array of server buckets for weight selection of servers.
+ @buckets = []
+ @servers.each do |server|
+ server.weight.times { @buckets.push(server) }
+ end
+ end
+
+ ##
+ # Deceremets the value for +key+ by +amount+ and returns the new value.
+ # +key+ must already exist. If +key+ is not an integer, it is assumed to be
+ # 0. +key+ can not be decremented below 0.
+
+ def decr(key, amount = 1)
+ server, cache_key = request_setup key
+
+ if @multithread then
+ threadsafe_cache_decr server, cache_key, amount
+ else
+ cache_decr server, cache_key, amount
+ end
+ rescue TypeError, SocketError, SystemCallError, IOError => err
+ handle_error server, err
+ end
+
+ ##
+ # Retrieves +key+ from memcache. If +raw+ is false, the value will be
+ # unmarshalled.
+
+ def get(key, raw = false)
+ server, cache_key = request_setup key
+
+ value = if @multithread then
+ threadsafe_cache_get server, cache_key
+ else
+ cache_get server, cache_key
+ end
+
+ return nil if value.nil?
+
+ value = Marshal.load value unless raw
+
+ return value
+ rescue TypeError, SocketError, SystemCallError, IOError => err
+ handle_error server, err
+ end
+
+ ##
+ # Retrieves multiple values from memcached in parallel, if possible.
+ #
+ # The memcached protocol supports the ability to retrieve multiple
+ # keys in a single request. Pass in an array of keys to this method
+ # and it will:
+ #
+ # 1. map the key to the appropriate memcached server
+ # 2. send a single request to each server that has one or more key values
+ #
+ # Returns a hash of values.
+ #
+ # cache["a"] = 1
+ # cache["b"] = 2
+ # cache.get_multi "a", "b" # => { "a" => 1, "b" => 2 }
+
+ def get_multi(*keys)
+ raise MemCacheError, 'No active servers' unless active?
+
+ keys.flatten!
+ key_count = keys.length
+ cache_keys = {}
+ server_keys = Hash.new { |h,k| h[k] = [] }
+
+ # map keys to servers
+ keys.each do |key|
+ server, cache_key = request_setup key
+ cache_keys[cache_key] = key
+ server_keys[server] << cache_key
+ end
+
+ results = {}
+
+ server_keys.each do |server, keys_for_server|
+ keys_for_server = keys_for_server.join ' '
+ values = if @multithread then
+ threadsafe_cache_get_multi server, keys_for_server
+ else
+ cache_get_multi server, keys_for_server
+ end
+ values.each do |key, value|
+ results[cache_keys[key]] = Marshal.load value
+ end
+ end
+
+ return results
+ rescue TypeError, SocketError, SystemCallError, IOError => err
+ handle_error server, err
+ end
+
+ ##
+ # Increments the value for +key+ by +amount+ and retruns the new value.
+ # +key+ must already exist. If +key+ is not an integer, it is assumed to be
+ # 0.
+
+ def incr(key, amount = 1)
+ server, cache_key = request_setup key
+
+ if @multithread then
+ threadsafe_cache_incr server, cache_key, amount
+ else
+ cache_incr server, cache_key, amount
+ end
+ rescue TypeError, SocketError, SystemCallError, IOError => err
+ handle_error server, err
+ end
+
+ ##
+ # Add +key+ to the cache with value +value+ that expires in +expiry+
+ # seconds. If +raw+ is true, +value+ will not be Marshalled.
+ #
+ # Warning: Readers should not call this method in the event of a cache miss;
+ # see MemCache#add.
+
+ def set(key, value, expiry = 0, raw = false)
+ raise MemCacheError, "Update of readonly cache" if @readonly
+ server, cache_key = request_setup key
+ socket = server.socket
+
+ value = Marshal.dump value unless raw
+ command = "set #{cache_key} 0 #{expiry} #{value.size}\r\n#{value}\r\n"
+
+ begin
+ @mutex.lock if @multithread
+ socket.write command
+ result = socket.gets
+ raise_on_error_response! result
+ result
+ rescue SocketError, SystemCallError, IOError => err
+ server.close
+ raise MemCacheError, err.message
+ ensure
+ @mutex.unlock if @multithread
+ end
+ end
+
+ ##
+ # Add +key+ to the cache with value +value+ that expires in +expiry+
+ # seconds, but only if +key+ does not already exist in the cache.
+ # If +raw+ is true, +value+ will not be Marshalled.
+ #
+ # Readers should call this method in the event of a cache miss, not
+ # MemCache#set or MemCache#[]=.
+
+ def add(key, value, expiry = 0, raw = false)
+ raise MemCacheError, "Update of readonly cache" if @readonly
+ server, cache_key = request_setup key
+ socket = server.socket
+
+ value = Marshal.dump value unless raw
+ command = "add #{cache_key} 0 #{expiry} #{value.size}\r\n#{value}\r\n"
+
+ begin
+ @mutex.lock if @multithread
+ socket.write command
+ result = socket.gets
+ raise_on_error_response! result
+ result
+ rescue SocketError, SystemCallError, IOError => err
+ server.close
+ raise MemCacheError, err.message
+ ensure
+ @mutex.unlock if @multithread
+ end
+ end
+
+ ##
+ # Removes +key+ from the cache in +expiry+ seconds.
+
+ def delete(key, expiry = 0)
+ @mutex.lock if @multithread
+
+ raise MemCacheError, "No active servers" unless active?
+ cache_key = make_cache_key key
+ server = get_server_for_key cache_key
+
+ sock = server.socket
+ raise MemCacheError, "No connection to server" if sock.nil?
+
+ begin
+ sock.write "delete #{cache_key} #{expiry}\r\n"
+ result = sock.gets
+ raise_on_error_response! result
+ result
+ rescue SocketError, SystemCallError, IOError => err
+ server.close
+ raise MemCacheError, err.message
+ end
+ ensure
+ @mutex.unlock if @multithread
+ end
+
+ ##
+ # Flush the cache from all memcache servers.
+
+ def flush_all
+ raise MemCacheError, 'No active servers' unless active?
+ raise MemCacheError, "Update of readonly cache" if @readonly
+ begin
+ @mutex.lock if @multithread
+ @servers.each do |server|
+ begin
+ sock = server.socket
+ raise MemCacheError, "No connection to server" if sock.nil?
+ sock.write "flush_all\r\n"
+ result = sock.gets
+ raise_on_error_response! result
+ result
+ rescue SocketError, SystemCallError, IOError => err
+ server.close
+ raise MemCacheError, err.message
+ end
+ end
+ ensure
+ @mutex.unlock if @multithread
+ end
+ end
+
+ ##
+ # Reset the connection to all memcache servers. This should be called if
+ # there is a problem with a cache lookup that might have left the connection
+ # in a corrupted state.
+
+ def reset
+ @servers.each { |server| server.close }
+ end
+
+ ##
+ # Returns statistics for each memcached server. An explanation of the
+ # statistics can be found in the memcached docs:
+ #
+ # http://code.sixapart.com/svn/memcached/trunk/server/doc/protocol.txt
+ #
+ # Example:
+ #
+ # >> pp CACHE.stats
+ # {"localhost:11211"=>
+ # {"bytes"=>4718,
+ # "pid"=>20188,
+ # "connection_structures"=>4,
+ # "time"=>1162278121,
+ # "pointer_size"=>32,
+ # "limit_maxbytes"=>67108864,
+ # "cmd_get"=>14532,
+ # "version"=>"1.2.0",
+ # "bytes_written"=>432583,
+ # "cmd_set"=>32,
+ # "get_misses"=>0,
+ # "total_connections"=>19,
+ # "curr_connections"=>3,
+ # "curr_items"=>4,
+ # "uptime"=>1557,
+ # "get_hits"=>14532,
+ # "total_items"=>32,
+ # "rusage_system"=>0.313952,
+ # "rusage_user"=>0.119981,
+ # "bytes_read"=>190619}}
+ # => nil
+
+ def stats
+ raise MemCacheError, "No active servers" unless active?
+ server_stats = {}
+
+ @servers.each do |server|
+ sock = server.socket
+ raise MemCacheError, "No connection to server" if sock.nil?
+
+ value = nil
+ begin
+ sock.write "stats\r\n"
+ stats = {}
+ while line = sock.gets do
+ raise_on_error_response! line
+ break if line == "END\r\n"
+ if line =~ /\ASTAT ([\w]+) ([\w\.\:]+)/ then
+ name, value = $1, $2
+ stats[name] = case name
+ when 'version'
+ value
+ when 'rusage_user', 'rusage_system' then
+ seconds, microseconds = value.split(/:/, 2)
+ microseconds ||= 0
+ Float(seconds) + (Float(microseconds) / 1_000_000)
+ else
+ if value =~ /\A\d+\Z/ then
+ value.to_i
+ else
+ value
+ end
+ end
+ end
+ end
+ server_stats["#{server.host}:#{server.port}"] = stats
+ rescue SocketError, SystemCallError, IOError => err
+ server.close
+ raise MemCacheError, err.message
+ end
+ end
+
+ server_stats
+ end
+
+ ##
+ # Shortcut to get a value from the cache.
+
+ alias [] get
+
+ ##
+ # Shortcut to save a value in the cache. This method does not set an
+ # expiration on the entry. Use set to specify an explicit expiry.
+
+ def []=(key, value)
+ set key, value
+ end
+
+ protected
+
+ ##
+ # Create a key for the cache, incorporating the namespace qualifier if
+ # requested.
+
+ def make_cache_key(key)
+ if namespace.nil? then
+ key
+ else
+ "#{@namespace}:#{key}"
+ end
+ end
+
+ ##
+ # Pick a server to handle the request based on a hash of the key.
+
+ def get_server_for_key(key)
+ raise ArgumentError, "illegal character in key #{key.inspect}" if
+ key =~ /\s/
+ raise ArgumentError, "key too long #{key.inspect}" if key.length > 250
+ raise MemCacheError, "No servers available" if @servers.empty?
+ return @servers.first if @servers.length == 1
+
+ hkey = hash_for key
+
+ 20.times do |try|
+ server = @buckets[hkey % @buckets.nitems]
+ return server if server.alive?
+ hkey += hash_for "#{try}#{key}"
+ end
+
+ raise MemCacheError, "No servers available"
+ end
+
+ ##
+ # Returns an interoperable hash value for +key+. (I think, docs are
+ # sketchy for down servers).
+
+ def hash_for(key)
+ (key.crc32_ITU_T >> 16) & 0x7fff
+ end
+
+ ##
+ # Performs a raw decr for +cache_key+ from +server+. Returns nil if not
+ # found.
+
+ def cache_decr(server, cache_key, amount)
+ socket = server.socket
+ socket.write "decr #{cache_key} #{amount}\r\n"
+ text = socket.gets
+ raise_on_error_response! text
+ return nil if text == "NOT_FOUND\r\n"
+ return text.to_i
+ end
+
+ ##
+ # Fetches the raw data for +cache_key+ from +server+. Returns nil on cache
+ # miss.
+
+ def cache_get(server, cache_key)
+ socket = server.socket
+ socket.write "get #{cache_key}\r\n"
+ keyline = socket.gets # "VALUE <key> <flags> <bytes>\r\n"
+
+ if keyline.nil? then
+ server.close
+ raise MemCacheError, "lost connection to #{server.host}:#{server.port}"
+ end
+
+ raise_on_error_response! keyline
+ return nil if keyline == "END\r\n"
+
+ unless keyline =~ /(\d+)\r/ then
+ server.close
+ raise MemCacheError, "unexpected response #{keyline.inspect}"
+ end
+ value = socket.read $1.to_i
+ socket.read 2 # "\r\n"
+ socket.gets # "END\r\n"
+ return value
+ end
+
+ ##
+ # Fetches +cache_keys+ from +server+ using a multi-get.
+
+ def cache_get_multi(server, cache_keys)
+ values = {}
+ socket = server.socket
+ socket.write "get #{cache_keys}\r\n"
+
+ while keyline = socket.gets do
+ return values if keyline == "END\r\n"
+ raise_on_error_response! keyline
+
+ unless keyline =~ /\AVALUE (.+) (.+) (.+)/ then
+ server.close
+ raise MemCacheError, "unexpected response #{keyline.inspect}"
+ end
+
+ key, data_length = $1, $3
+ values[$1] = socket.read data_length.to_i
+ socket.read(2) # "\r\n"
+ end
+
+ server.close
+ raise MemCacheError, "lost connection to #{server.host}:#{server.port}"
+ end
+
+ ##
+ # Performs a raw incr for +cache_key+ from +server+. Returns nil if not
+ # found.
+
+ def cache_incr(server, cache_key, amount)
+ socket = server.socket
+ socket.write "incr #{cache_key} #{amount}\r\n"
+ text = socket.gets
+ raise_on_error_response! text
+ return nil if text == "NOT_FOUND\r\n"
+ return text.to_i
+ end
+
+ ##
+ # Handles +error+ from +server+.
+
+ def handle_error(server, error)
+ server.close if server
+ new_error = MemCacheError.new error.message
+ new_error.set_backtrace error.backtrace
+ raise new_error
+ end
+
+ ##
+ # Performs setup for making a request with +key+ from memcached. Returns
+ # the server to fetch the key from and the complete key to use.
+
+ def request_setup(key)
+ raise MemCacheError, 'No active servers' unless active?
+ cache_key = make_cache_key key
+ server = get_server_for_key cache_key
+ raise MemCacheError, 'No connection to server' if server.socket.nil?
+ return server, cache_key
+ end
+
+ def threadsafe_cache_decr(server, cache_key, amount) # :nodoc:
+ @mutex.lock
+ cache_decr server, cache_key, amount
+ ensure
+ @mutex.unlock
+ end
+
+ def threadsafe_cache_get(server, cache_key) # :nodoc:
+ @mutex.lock
+ cache_get server, cache_key
+ ensure
+ @mutex.unlock
+ end
+
+ def threadsafe_cache_get_multi(socket, cache_keys) # :nodoc:
+ @mutex.lock
+ cache_get_multi socket, cache_keys
+ ensure
+ @mutex.unlock
+ end
+
+ def threadsafe_cache_incr(server, cache_key, amount) # :nodoc:
+ @mutex.lock
+ cache_incr server, cache_key, amount
+ ensure
+ @mutex.unlock
+ end
+
+ def raise_on_error_response!(response)
+ if response =~ /\A(?:CLIENT_|SERVER_)?ERROR (.*)/
+ raise MemCacheError, $1.strip
+ end
+ end
+
+
+ ##
+ # This class represents a memcached server instance.
+
+ class Server
+
+ ##
+ # The amount of time to wait to establish a connection with a memcached
+ # server. If a connection cannot be established within this time limit,
+ # the server will be marked as down.
+
+ CONNECT_TIMEOUT = 0.25
+
+ ##
+ # The amount of time to wait before attempting to re-establish a
+ # connection with a server that is marked dead.
+
+ RETRY_DELAY = 30.0
+
+ ##
+ # The host the memcached server is running on.
+
+ attr_reader :host
+
+ ##
+ # The port the memcached server is listening on.
+
+ attr_reader :port
+
+ ##
+ # The weight given to the server.
+
+ attr_reader :weight
+
+ ##
+ # The time of next retry if the connection is dead.
+
+ attr_reader :retry
+
+ ##
+ # A text status string describing the state of the server.
+
+ attr_reader :status
+
+ ##
+ # Create a new MemCache::Server object for the memcached instance
+ # listening on the given host and port, weighted by the given weight.
+
+ def initialize(memcache, host, port = DEFAULT_PORT, weight = DEFAULT_WEIGHT)
+ raise ArgumentError, "No host specified" if host.nil? or host.empty?
+ raise ArgumentError, "No port specified" if port.nil? or port.to_i.zero?
+
+ @memcache = memcache
+ @host = host
+ @port = port.to_i
+ @weight = weight.to_i
+
+ @multithread = @memcache.multithread
+ @mutex = Mutex.new
+
+ @sock = nil
+ @retry = nil
+ @status = 'NOT CONNECTED'
+ end
+
+ ##
+ # Return a string representation of the server object.
+
+ def inspect
+ "<MemCache::Server: %s:%d [%d] (%s)>" % [@host, @port, @weight, @status]
+ end
+
+ ##
+ # Check whether the server connection is alive. This will cause the
+ # socket to attempt to connect if it isn't already connected and or if
+ # the server was previously marked as down and the retry time has
+ # been exceeded.
+
+ def alive?
+ !!socket
+ end
+
+ ##
+ # Try to connect to the memcached server targeted by this object.
+ # Returns the connected socket object on success or nil on failure.
+
+ def socket
+ @mutex.lock if @multithread
+ return @sock if @sock and not @sock.closed?
+
+ @sock = nil
+
+ # If the host was dead, don't retry for a while.
+ return if @retry and @retry > Time.now
+
+ # Attempt to connect if not already connected.
+ begin
+ @sock = timeout CONNECT_TIMEOUT do
+ TCPSocket.new @host, @port
+ end
+ if Socket.constants.include? 'TCP_NODELAY' then
+ @sock.setsockopt Socket::IPPROTO_TCP, Socket::TCP_NODELAY, 1
+ end
+ @retry = nil
+ @status = 'CONNECTED'
+ rescue SocketError, SystemCallError, IOError, Timeout::Error => err
+ mark_dead err.message
+ end
+
+ return @sock
+ ensure
+ @mutex.unlock if @multithread
+ end
+
+ ##
+ # Close the connection to the memcached server targeted by this
+ # object. The server is not considered dead.
+
+ def close
+ @mutex.lock if @multithread
+ @sock.close if @sock && !@sock.closed?
+ @sock = nil
+ @retry = nil
+ @status = "NOT CONNECTED"
+ ensure
+ @mutex.unlock if @multithread
+ end
+
+ private
+
+ ##
+ # Mark the server as dead and close its socket.
+
+ def mark_dead(reason = "Unknown error")
+ @sock.close if @sock && !@sock.closed?
+ @sock = nil
+ @retry = Time.now + RETRY_DELAY
+
+ @status = sprintf "DEAD: %s, will retry at %s", reason, @retry
+ end
+ end
+
+ ##
+ # Base MemCache exception class.
+
+ class MemCacheError < RuntimeError; end
+
+end
+
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo.rb
new file mode 100644
index 000000000..c8bdbeec5
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo.rb
@@ -0,0 +1,33 @@
+#--
+# Copyright (c) 2005-2006 Philip Ross
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in all
+# copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#++
+
+# Add the directory containing this file to the start of the load path if it
+# isn't there already.
+$:.unshift(File.dirname(__FILE__)) unless
+ $:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
+
+require 'tzinfo/timezone'
+# require 'tzinfo/country'
+# require 'tzinfo/tzdataparser'
+# require 'tzinfo/timezone_proxy'
+require 'tzinfo/data_timezone'
+require 'tzinfo/linked_timezone' \ No newline at end of file
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/data_timezone.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/data_timezone.rb
new file mode 100644
index 000000000..5eccbdf0d
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/data_timezone.rb
@@ -0,0 +1,47 @@
+#--
+# Copyright (c) 2006 Philip Ross
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in all
+# copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#++
+
+require 'tzinfo/info_timezone'
+
+module TZInfo
+
+ # A Timezone based on a DataTimezoneInfo.
+ class DataTimezone < InfoTimezone #:nodoc:
+
+ # Returns the TimezonePeriod for the given UTC time. utc can either be
+ # a DateTime, Time or integer timestamp (Time.to_i). Any timezone
+ # information in utc is ignored (it is treated as a UTC time).
+ #
+ # If no TimezonePeriod could be found, PeriodNotFound is raised.
+ def period_for_utc(utc)
+ info.period_for_utc(utc)
+ end
+
+ # Returns the set of TimezonePeriod instances that are valid for the given
+ # local time as an array. If you just want a single period, use
+ # period_for_local instead and specify how abiguities should be resolved.
+ # Raises PeriodNotFound if no periods are found for the given time.
+ def periods_for_local(local)
+ info.periods_for_local(local)
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/data_timezone_info.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/data_timezone_info.rb
new file mode 100644
index 000000000..f34fabc36
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/data_timezone_info.rb
@@ -0,0 +1,226 @@
+#--
+# Copyright (c) 2006 Philip Ross
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in all
+# copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#++
+
+require 'tzinfo/time_or_datetime'
+require 'tzinfo/timezone_info'
+require 'tzinfo/timezone_offset_info'
+require 'tzinfo/timezone_period'
+require 'tzinfo/timezone_transition_info'
+
+module TZInfo
+ # Thrown if no offsets have been defined when calling period_for_utc or
+ # periods_for_local. Indicates an error in the timezone data.
+ class NoOffsetsDefined < StandardError
+ end
+
+ # Represents a (non-linked) timezone defined in a data module.
+ class DataTimezoneInfo < TimezoneInfo #:nodoc:
+
+ # Constructs a new TimezoneInfo with its identifier.
+ def initialize(identifier)
+ super(identifier)
+ @offsets = {}
+ @transitions = []
+ end
+
+ # Defines a offset. The id uniquely identifies this offset within the
+ # timezone. utc_offset and std_offset define the offset in seconds of
+ # standard time from UTC and daylight savings from standard time
+ # respectively. abbreviation describes the timezone offset (e.g. GMT, BST,
+ # EST or EDT).
+ #
+ # The first offset to be defined is treated as the offset that applies
+ # until the first transition. This will usually be in Local Mean Time (LMT).
+ #
+ # ArgumentError will be raised if the id is already defined.
+ def offset(id, utc_offset, std_offset, abbreviation)
+ raise ArgumentError, 'Offset already defined' if @offsets.has_key?(id)
+
+ offset = TimezoneOffsetInfo.new(utc_offset, std_offset, abbreviation)
+ @offsets[id] = offset
+ @previous_offset = offset unless @previous_offset
+ end
+
+ # Defines a transition. Transitions must be defined in chronological order.
+ # ArgumentError will be raised if a transition is added out of order.
+ # offset_id refers to an id defined with offset. ArgumentError will be
+ # raised if the offset_id cannot be found. numerator_or_time and
+ # denomiator specify the time the transition occurs as. See
+ # TimezoneTransitionInfo for more detail about specifying times.
+ def transition(year, month, offset_id, numerator_or_time, denominator = nil)
+ offset = @offsets[offset_id]
+ raise ArgumentError, 'Offset not found' unless offset
+
+ if @transitions_index
+ if year < @last_year || (year == @last_year && month < @last_month)
+ raise ArgumentError, 'Transitions must be increasing date order'
+ end
+
+ # Record the position of the first transition with this index.
+ index = transition_index(year, month)
+ @transitions_index[index] ||= @transitions.length
+
+ # Fill in any gaps
+ (index - 1).downto(0) do |i|
+ break if @transitions_index[i]
+ @transitions_index[i] = @transitions.length
+ end
+ else
+ @transitions_index = [@transitions.length]
+ @start_year = year
+ @start_month = month
+ end
+
+ @transitions << TimezoneTransitionInfo.new(offset, @previous_offset,
+ numerator_or_time, denominator)
+ @last_year = year
+ @last_month = month
+ @previous_offset = offset
+ end
+
+ # Returns the TimezonePeriod for the given UTC time.
+ # Raises NoOffsetsDefined if no offsets have been defined.
+ def period_for_utc(utc)
+ unless @transitions.empty?
+ utc = TimeOrDateTime.wrap(utc)
+ index = transition_index(utc.year, utc.mon)
+
+ start_transition = nil
+ start = transition_before_end(index)
+ if start
+ start.downto(0) do |i|
+ if @transitions[i].at <= utc
+ start_transition = @transitions[i]
+ break
+ end
+ end
+ end
+
+ end_transition = nil
+ start = transition_after_start(index)
+ if start
+ start.upto(@transitions.length - 1) do |i|
+ if @transitions[i].at > utc
+ end_transition = @transitions[i]
+ break
+ end
+ end
+ end
+
+ if start_transition || end_transition
+ TimezonePeriod.new(start_transition, end_transition)
+ else
+ # Won't happen since there are transitions. Must always find one
+ # transition that is either >= or < the specified time.
+ raise 'No transitions found in search'
+ end
+ else
+ raise NoOffsetsDefined, 'No offsets have been defined' unless @previous_offset
+ TimezonePeriod.new(nil, nil, @previous_offset)
+ end
+ end
+
+ # Returns the set of TimezonePeriods for the given local time as an array.
+ # Results returned are ordered by increasing UTC start date.
+ # Returns an empty array if no periods are found for the given time.
+ # Raises NoOffsetsDefined if no offsets have been defined.
+ def periods_for_local(local)
+ unless @transitions.empty?
+ local = TimeOrDateTime.wrap(local)
+ index = transition_index(local.year, local.mon)
+
+ result = []
+
+ start_index = transition_after_start(index - 1)
+ if start_index && @transitions[start_index].local_end > local
+ if start_index > 0
+ if @transitions[start_index - 1].local_start <= local
+ result << TimezonePeriod.new(@transitions[start_index - 1], @transitions[start_index])
+ end
+ else
+ result << TimezonePeriod.new(nil, @transitions[start_index])
+ end
+ end
+
+ end_index = transition_before_end(index + 1)
+
+ if end_index
+ start_index = end_index unless start_index
+
+ start_index.upto(transition_before_end(index + 1)) do |i|
+ if @transitions[i].local_start <= local
+ if i + 1 < @transitions.length
+ if @transitions[i + 1].local_end > local
+ result << TimezonePeriod.new(@transitions[i], @transitions[i + 1])
+ end
+ else
+ result << TimezonePeriod.new(@transitions[i], nil)
+ end
+ end
+ end
+ end
+
+ result
+ else
+ raise NoOffsetsDefined, 'No offsets have been defined' unless @previous_offset
+ [TimezonePeriod.new(nil, nil, @previous_offset)]
+ end
+ end
+
+ private
+ # Returns the index into the @transitions_index array for a given year
+ # and month.
+ def transition_index(year, month)
+ index = (year - @start_year) * 2
+ index += 1 if month > 6
+ index -= 1 if @start_month > 6
+ index
+ end
+
+ # Returns the index into @transitions of the first transition that occurs
+ # on or after the start of the given index into @transitions_index.
+ # Returns nil if there are no such transitions.
+ def transition_after_start(index)
+ if index >= @transitions_index.length
+ nil
+ else
+ index = 0 if index < 0
+ @transitions_index[index]
+ end
+ end
+
+ # Returns the index into @transitions of the first transition that occurs
+ # before the end of the given index into @transitions_index.
+ # Returns nil if there are no such transitions.
+ def transition_before_end(index)
+ index = index + 1
+
+ if index <= 0
+ nil
+ elsif index >= @transitions_index.length
+ @transitions.length - 1
+ else
+ @transitions_index[index] - 1
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Africa/Algiers.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Africa/Algiers.rb
new file mode 100644
index 000000000..8c5f25577
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Africa/Algiers.rb
@@ -0,0 +1,55 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Africa
+ module Algiers
+ include TimezoneDefinition
+
+ timezone 'Africa/Algiers' do |tz|
+ tz.offset :o0, 732, 0, :LMT
+ tz.offset :o1, 561, 0, :PMT
+ tz.offset :o2, 0, 0, :WET
+ tz.offset :o3, 0, 3600, :WEST
+ tz.offset :o4, 3600, 0, :CET
+ tz.offset :o5, 3600, 3600, :CEST
+
+ tz.transition 1891, 3, :o1, 2170625843, 900
+ tz.transition 1911, 3, :o2, 69670267013, 28800
+ tz.transition 1916, 6, :o3, 58104707, 24
+ tz.transition 1916, 10, :o2, 58107323, 24
+ tz.transition 1917, 3, :o3, 58111499, 24
+ tz.transition 1917, 10, :o2, 58116227, 24
+ tz.transition 1918, 3, :o3, 58119899, 24
+ tz.transition 1918, 10, :o2, 58124963, 24
+ tz.transition 1919, 3, :o3, 58128467, 24
+ tz.transition 1919, 10, :o2, 58133699, 24
+ tz.transition 1920, 2, :o3, 58136867, 24
+ tz.transition 1920, 10, :o2, 58142915, 24
+ tz.transition 1921, 3, :o3, 58146323, 24
+ tz.transition 1921, 6, :o2, 58148699, 24
+ tz.transition 1939, 9, :o3, 58308443, 24
+ tz.transition 1939, 11, :o2, 4859173, 2
+ tz.transition 1940, 2, :o4, 29156215, 12
+ tz.transition 1944, 4, :o5, 58348405, 24
+ tz.transition 1944, 10, :o4, 4862743, 2
+ tz.transition 1945, 4, :o5, 58357141, 24
+ tz.transition 1945, 9, :o4, 58361147, 24
+ tz.transition 1946, 10, :o2, 58370411, 24
+ tz.transition 1956, 1, :o4, 4871003, 2
+ tz.transition 1963, 4, :o2, 58515203, 24
+ tz.transition 1971, 4, :o3, 41468400
+ tz.transition 1971, 9, :o2, 54774000
+ tz.transition 1977, 5, :o3, 231724800
+ tz.transition 1977, 10, :o4, 246236400
+ tz.transition 1978, 3, :o5, 259545600
+ tz.transition 1978, 9, :o4, 275274000
+ tz.transition 1979, 10, :o2, 309740400
+ tz.transition 1980, 4, :o3, 325468800
+ tz.transition 1980, 10, :o2, 341802000
+ tz.transition 1981, 5, :o4, 357523200
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Africa/Cairo.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Africa/Cairo.rb
new file mode 100644
index 000000000..6e6daf352
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Africa/Cairo.rb
@@ -0,0 +1,219 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Africa
+ module Cairo
+ include TimezoneDefinition
+
+ timezone 'Africa/Cairo' do |tz|
+ tz.offset :o0, 7500, 0, :LMT
+ tz.offset :o1, 7200, 0, :EET
+ tz.offset :o2, 7200, 3600, :EEST
+
+ tz.transition 1900, 9, :o1, 695604503, 288
+ tz.transition 1940, 7, :o2, 29157905, 12
+ tz.transition 1940, 9, :o1, 19439227, 8
+ tz.transition 1941, 4, :o2, 29161193, 12
+ tz.transition 1941, 9, :o1, 19442027, 8
+ tz.transition 1942, 3, :o2, 29165405, 12
+ tz.transition 1942, 10, :o1, 19445275, 8
+ tz.transition 1943, 3, :o2, 29169785, 12
+ tz.transition 1943, 10, :o1, 19448235, 8
+ tz.transition 1944, 3, :o2, 29174177, 12
+ tz.transition 1944, 10, :o1, 19451163, 8
+ tz.transition 1945, 4, :o2, 29178737, 12
+ tz.transition 1945, 10, :o1, 19454083, 8
+ tz.transition 1957, 5, :o2, 29231621, 12
+ tz.transition 1957, 9, :o1, 19488899, 8
+ tz.transition 1958, 4, :o2, 29235893, 12
+ tz.transition 1958, 9, :o1, 19491819, 8
+ tz.transition 1959, 4, :o2, 58480547, 24
+ tz.transition 1959, 9, :o1, 4873683, 2
+ tz.transition 1960, 4, :o2, 58489331, 24
+ tz.transition 1960, 9, :o1, 4874415, 2
+ tz.transition 1961, 4, :o2, 58498091, 24
+ tz.transition 1961, 9, :o1, 4875145, 2
+ tz.transition 1962, 4, :o2, 58506851, 24
+ tz.transition 1962, 9, :o1, 4875875, 2
+ tz.transition 1963, 4, :o2, 58515611, 24
+ tz.transition 1963, 9, :o1, 4876605, 2
+ tz.transition 1964, 4, :o2, 58524395, 24
+ tz.transition 1964, 9, :o1, 4877337, 2
+ tz.transition 1965, 4, :o2, 58533155, 24
+ tz.transition 1965, 9, :o1, 4878067, 2
+ tz.transition 1966, 4, :o2, 58541915, 24
+ tz.transition 1966, 10, :o1, 4878799, 2
+ tz.transition 1967, 4, :o2, 58550675, 24
+ tz.transition 1967, 10, :o1, 4879529, 2
+ tz.transition 1968, 4, :o2, 58559459, 24
+ tz.transition 1968, 10, :o1, 4880261, 2
+ tz.transition 1969, 4, :o2, 58568219, 24
+ tz.transition 1969, 10, :o1, 4880991, 2
+ tz.transition 1970, 4, :o2, 10364400
+ tz.transition 1970, 10, :o1, 23587200
+ tz.transition 1971, 4, :o2, 41900400
+ tz.transition 1971, 10, :o1, 55123200
+ tz.transition 1972, 4, :o2, 73522800
+ tz.transition 1972, 10, :o1, 86745600
+ tz.transition 1973, 4, :o2, 105058800
+ tz.transition 1973, 10, :o1, 118281600
+ tz.transition 1974, 4, :o2, 136594800
+ tz.transition 1974, 10, :o1, 149817600
+ tz.transition 1975, 4, :o2, 168130800
+ tz.transition 1975, 10, :o1, 181353600
+ tz.transition 1976, 4, :o2, 199753200
+ tz.transition 1976, 10, :o1, 212976000
+ tz.transition 1977, 4, :o2, 231289200
+ tz.transition 1977, 10, :o1, 244512000
+ tz.transition 1978, 4, :o2, 262825200
+ tz.transition 1978, 10, :o1, 276048000
+ tz.transition 1979, 4, :o2, 294361200
+ tz.transition 1979, 10, :o1, 307584000
+ tz.transition 1980, 4, :o2, 325983600
+ tz.transition 1980, 10, :o1, 339206400
+ tz.transition 1981, 4, :o2, 357519600
+ tz.transition 1981, 10, :o1, 370742400
+ tz.transition 1982, 7, :o2, 396399600
+ tz.transition 1982, 10, :o1, 402278400
+ tz.transition 1983, 7, :o2, 426812400
+ tz.transition 1983, 10, :o1, 433814400
+ tz.transition 1984, 4, :o2, 452214000
+ tz.transition 1984, 10, :o1, 465436800
+ tz.transition 1985, 4, :o2, 483750000
+ tz.transition 1985, 10, :o1, 496972800
+ tz.transition 1986, 4, :o2, 515286000
+ tz.transition 1986, 10, :o1, 528508800
+ tz.transition 1987, 4, :o2, 546822000
+ tz.transition 1987, 10, :o1, 560044800
+ tz.transition 1988, 4, :o2, 578444400
+ tz.transition 1988, 10, :o1, 591667200
+ tz.transition 1989, 5, :o2, 610412400
+ tz.transition 1989, 10, :o1, 623203200
+ tz.transition 1990, 4, :o2, 641516400
+ tz.transition 1990, 10, :o1, 654739200
+ tz.transition 1991, 4, :o2, 673052400
+ tz.transition 1991, 10, :o1, 686275200
+ tz.transition 1992, 4, :o2, 704674800
+ tz.transition 1992, 10, :o1, 717897600
+ tz.transition 1993, 4, :o2, 736210800
+ tz.transition 1993, 10, :o1, 749433600
+ tz.transition 1994, 4, :o2, 767746800
+ tz.transition 1994, 10, :o1, 780969600
+ tz.transition 1995, 4, :o2, 799020000
+ tz.transition 1995, 9, :o1, 812322000
+ tz.transition 1996, 4, :o2, 830469600
+ tz.transition 1996, 9, :o1, 843771600
+ tz.transition 1997, 4, :o2, 861919200
+ tz.transition 1997, 9, :o1, 875221200
+ tz.transition 1998, 4, :o2, 893368800
+ tz.transition 1998, 9, :o1, 906670800
+ tz.transition 1999, 4, :o2, 925423200
+ tz.transition 1999, 9, :o1, 938725200
+ tz.transition 2000, 4, :o2, 956872800
+ tz.transition 2000, 9, :o1, 970174800
+ tz.transition 2001, 4, :o2, 988322400
+ tz.transition 2001, 9, :o1, 1001624400
+ tz.transition 2002, 4, :o2, 1019772000
+ tz.transition 2002, 9, :o1, 1033074000
+ tz.transition 2003, 4, :o2, 1051221600
+ tz.transition 2003, 9, :o1, 1064523600
+ tz.transition 2004, 4, :o2, 1083276000
+ tz.transition 2004, 9, :o1, 1096578000
+ tz.transition 2005, 4, :o2, 1114725600
+ tz.transition 2005, 9, :o1, 1128027600
+ tz.transition 2006, 4, :o2, 1146175200
+ tz.transition 2006, 9, :o1, 1158872400
+ tz.transition 2007, 4, :o2, 1177624800
+ tz.transition 2007, 9, :o1, 1189112400
+ tz.transition 2008, 4, :o2, 1209074400
+ tz.transition 2008, 8, :o1, 1219957200
+ tz.transition 2009, 4, :o2, 1240524000
+ tz.transition 2009, 8, :o1, 1251406800
+ tz.transition 2010, 4, :o2, 1272578400
+ tz.transition 2010, 8, :o1, 1282856400
+ tz.transition 2011, 4, :o2, 1304028000
+ tz.transition 2011, 8, :o1, 1314306000
+ tz.transition 2012, 4, :o2, 1335477600
+ tz.transition 2012, 8, :o1, 1346360400
+ tz.transition 2013, 4, :o2, 1366927200
+ tz.transition 2013, 8, :o1, 1377810000
+ tz.transition 2014, 4, :o2, 1398376800
+ tz.transition 2014, 8, :o1, 1409259600
+ tz.transition 2015, 4, :o2, 1429826400
+ tz.transition 2015, 8, :o1, 1440709200
+ tz.transition 2016, 4, :o2, 1461880800
+ tz.transition 2016, 8, :o1, 1472158800
+ tz.transition 2017, 4, :o2, 1493330400
+ tz.transition 2017, 8, :o1, 1504213200
+ tz.transition 2018, 4, :o2, 1524780000
+ tz.transition 2018, 8, :o1, 1535662800
+ tz.transition 2019, 4, :o2, 1556229600
+ tz.transition 2019, 8, :o1, 1567112400
+ tz.transition 2020, 4, :o2, 1587679200
+ tz.transition 2020, 8, :o1, 1598562000
+ tz.transition 2021, 4, :o2, 1619733600
+ tz.transition 2021, 8, :o1, 1630011600
+ tz.transition 2022, 4, :o2, 1651183200
+ tz.transition 2022, 8, :o1, 1661461200
+ tz.transition 2023, 4, :o2, 1682632800
+ tz.transition 2023, 8, :o1, 1693515600
+ tz.transition 2024, 4, :o2, 1714082400
+ tz.transition 2024, 8, :o1, 1724965200
+ tz.transition 2025, 4, :o2, 1745532000
+ tz.transition 2025, 8, :o1, 1756414800
+ tz.transition 2026, 4, :o2, 1776981600
+ tz.transition 2026, 8, :o1, 1787864400
+ tz.transition 2027, 4, :o2, 1809036000
+ tz.transition 2027, 8, :o1, 1819314000
+ tz.transition 2028, 4, :o2, 1840485600
+ tz.transition 2028, 8, :o1, 1851368400
+ tz.transition 2029, 4, :o2, 1871935200
+ tz.transition 2029, 8, :o1, 1882818000
+ tz.transition 2030, 4, :o2, 1903384800
+ tz.transition 2030, 8, :o1, 1914267600
+ tz.transition 2031, 4, :o2, 1934834400
+ tz.transition 2031, 8, :o1, 1945717200
+ tz.transition 2032, 4, :o2, 1966888800
+ tz.transition 2032, 8, :o1, 1977166800
+ tz.transition 2033, 4, :o2, 1998338400
+ tz.transition 2033, 8, :o1, 2008616400
+ tz.transition 2034, 4, :o2, 2029788000
+ tz.transition 2034, 8, :o1, 2040670800
+ tz.transition 2035, 4, :o2, 2061237600
+ tz.transition 2035, 8, :o1, 2072120400
+ tz.transition 2036, 4, :o2, 2092687200
+ tz.transition 2036, 8, :o1, 2103570000
+ tz.transition 2037, 4, :o2, 2124136800
+ tz.transition 2037, 8, :o1, 2135019600
+ tz.transition 2038, 4, :o2, 29586521, 12
+ tz.transition 2038, 8, :o1, 19725299, 8
+ tz.transition 2039, 4, :o2, 29590889, 12
+ tz.transition 2039, 8, :o1, 19728211, 8
+ tz.transition 2040, 4, :o2, 29595257, 12
+ tz.transition 2040, 8, :o1, 19731179, 8
+ tz.transition 2041, 4, :o2, 29599625, 12
+ tz.transition 2041, 8, :o1, 19734091, 8
+ tz.transition 2042, 4, :o2, 29603993, 12
+ tz.transition 2042, 8, :o1, 19737003, 8
+ tz.transition 2043, 4, :o2, 29608361, 12
+ tz.transition 2043, 8, :o1, 19739915, 8
+ tz.transition 2044, 4, :o2, 29612813, 12
+ tz.transition 2044, 8, :o1, 19742827, 8
+ tz.transition 2045, 4, :o2, 29617181, 12
+ tz.transition 2045, 8, :o1, 19745795, 8
+ tz.transition 2046, 4, :o2, 29621549, 12
+ tz.transition 2046, 8, :o1, 19748707, 8
+ tz.transition 2047, 4, :o2, 29625917, 12
+ tz.transition 2047, 8, :o1, 19751619, 8
+ tz.transition 2048, 4, :o2, 29630285, 12
+ tz.transition 2048, 8, :o1, 19754531, 8
+ tz.transition 2049, 4, :o2, 29634737, 12
+ tz.transition 2049, 8, :o1, 19757443, 8
+ tz.transition 2050, 4, :o2, 29639105, 12
+ tz.transition 2050, 8, :o1, 19760355, 8
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Africa/Casablanca.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Africa/Casablanca.rb
new file mode 100644
index 000000000..10d28e761
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Africa/Casablanca.rb
@@ -0,0 +1,38 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Africa
+ module Casablanca
+ include TimezoneDefinition
+
+ timezone 'Africa/Casablanca' do |tz|
+ tz.offset :o0, -1820, 0, :LMT
+ tz.offset :o1, 0, 0, :WET
+ tz.offset :o2, 0, 3600, :WEST
+ tz.offset :o3, 3600, 0, :CET
+
+ tz.transition 1913, 10, :o1, 10454687371, 4320
+ tz.transition 1939, 9, :o2, 4859037, 2
+ tz.transition 1939, 11, :o1, 58310075, 24
+ tz.transition 1940, 2, :o2, 4859369, 2
+ tz.transition 1945, 11, :o1, 58362659, 24
+ tz.transition 1950, 6, :o2, 4866887, 2
+ tz.transition 1950, 10, :o1, 58406003, 24
+ tz.transition 1967, 6, :o2, 2439645, 1
+ tz.transition 1967, 9, :o1, 58554347, 24
+ tz.transition 1974, 6, :o2, 141264000
+ tz.transition 1974, 8, :o1, 147222000
+ tz.transition 1976, 5, :o2, 199756800
+ tz.transition 1976, 7, :o1, 207702000
+ tz.transition 1977, 5, :o2, 231292800
+ tz.transition 1977, 9, :o1, 244249200
+ tz.transition 1978, 6, :o2, 265507200
+ tz.transition 1978, 8, :o1, 271033200
+ tz.transition 1984, 3, :o3, 448243200
+ tz.transition 1985, 12, :o1, 504918000
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Africa/Harare.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Africa/Harare.rb
new file mode 100644
index 000000000..070c95ae0
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Africa/Harare.rb
@@ -0,0 +1,18 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Africa
+ module Harare
+ include TimezoneDefinition
+
+ timezone 'Africa/Harare' do |tz|
+ tz.offset :o0, 7452, 0, :LMT
+ tz.offset :o1, 7200, 0, :CAT
+
+ tz.transition 1903, 2, :o1, 1932939531, 800
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Africa/Johannesburg.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Africa/Johannesburg.rb
new file mode 100644
index 000000000..f0af0d8e3
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Africa/Johannesburg.rb
@@ -0,0 +1,25 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Africa
+ module Johannesburg
+ include TimezoneDefinition
+
+ timezone 'Africa/Johannesburg' do |tz|
+ tz.offset :o0, 6720, 0, :LMT
+ tz.offset :o1, 5400, 0, :SAST
+ tz.offset :o2, 7200, 0, :SAST
+ tz.offset :o3, 7200, 3600, :SAST
+
+ tz.transition 1892, 2, :o1, 108546139, 45
+ tz.transition 1903, 2, :o2, 38658791, 16
+ tz.transition 1942, 9, :o3, 4861245, 2
+ tz.transition 1943, 3, :o2, 58339307, 24
+ tz.transition 1943, 9, :o3, 4861973, 2
+ tz.transition 1944, 3, :o2, 58348043, 24
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Africa/Monrovia.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Africa/Monrovia.rb
new file mode 100644
index 000000000..40e711fa4
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Africa/Monrovia.rb
@@ -0,0 +1,22 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Africa
+ module Monrovia
+ include TimezoneDefinition
+
+ timezone 'Africa/Monrovia' do |tz|
+ tz.offset :o0, -2588, 0, :LMT
+ tz.offset :o1, -2588, 0, :MMT
+ tz.offset :o2, -2670, 0, :LRT
+ tz.offset :o3, 0, 0, :GMT
+
+ tz.transition 1882, 1, :o1, 52022445047, 21600
+ tz.transition 1919, 3, :o2, 52315600247, 21600
+ tz.transition 1972, 5, :o3, 73529070
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Africa/Nairobi.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Africa/Nairobi.rb
new file mode 100644
index 000000000..7b0a2f43b
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Africa/Nairobi.rb
@@ -0,0 +1,23 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Africa
+ module Nairobi
+ include TimezoneDefinition
+
+ timezone 'Africa/Nairobi' do |tz|
+ tz.offset :o0, 8836, 0, :LMT
+ tz.offset :o1, 10800, 0, :EAT
+ tz.offset :o2, 9000, 0, :BEAT
+ tz.offset :o3, 9885, 0, :BEAUT
+
+ tz.transition 1928, 6, :o1, 52389253391, 21600
+ tz.transition 1929, 12, :o2, 19407819, 8
+ tz.transition 1939, 12, :o3, 116622211, 48
+ tz.transition 1959, 12, :o1, 14036742061, 5760
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Argentina/Buenos_Aires.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Argentina/Buenos_Aires.rb
new file mode 100644
index 000000000..7536f7553
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Argentina/Buenos_Aires.rb
@@ -0,0 +1,166 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module America
+ module Argentina
+ module Buenos_Aires
+ include TimezoneDefinition
+
+ timezone 'America/Argentina/Buenos_Aires' do |tz|
+ tz.offset :o0, -14028, 0, :LMT
+ tz.offset :o1, -15408, 0, :CMT
+ tz.offset :o2, -14400, 0, :ART
+ tz.offset :o3, -14400, 3600, :ARST
+ tz.offset :o4, -10800, 0, :ART
+ tz.offset :o5, -10800, 3600, :ARST
+
+ tz.transition 1894, 10, :o1, 17374555169, 7200
+ tz.transition 1920, 5, :o2, 1453467407, 600
+ tz.transition 1930, 12, :o3, 7278935, 3
+ tz.transition 1931, 4, :o2, 19411461, 8
+ tz.transition 1931, 10, :o3, 7279889, 3
+ tz.transition 1932, 3, :o2, 19414141, 8
+ tz.transition 1932, 11, :o3, 7281038, 3
+ tz.transition 1933, 3, :o2, 19417061, 8
+ tz.transition 1933, 11, :o3, 7282133, 3
+ tz.transition 1934, 3, :o2, 19419981, 8
+ tz.transition 1934, 11, :o3, 7283228, 3
+ tz.transition 1935, 3, :o2, 19422901, 8
+ tz.transition 1935, 11, :o3, 7284323, 3
+ tz.transition 1936, 3, :o2, 19425829, 8
+ tz.transition 1936, 11, :o3, 7285421, 3
+ tz.transition 1937, 3, :o2, 19428749, 8
+ tz.transition 1937, 11, :o3, 7286516, 3
+ tz.transition 1938, 3, :o2, 19431669, 8
+ tz.transition 1938, 11, :o3, 7287611, 3
+ tz.transition 1939, 3, :o2, 19434589, 8
+ tz.transition 1939, 11, :o3, 7288706, 3
+ tz.transition 1940, 3, :o2, 19437517, 8
+ tz.transition 1940, 7, :o3, 7289435, 3
+ tz.transition 1941, 6, :o2, 19441285, 8
+ tz.transition 1941, 10, :o3, 7290848, 3
+ tz.transition 1943, 8, :o2, 19447501, 8
+ tz.transition 1943, 10, :o3, 7293038, 3
+ tz.transition 1946, 3, :o2, 19455045, 8
+ tz.transition 1946, 10, :o3, 7296284, 3
+ tz.transition 1963, 10, :o2, 19506429, 8
+ tz.transition 1963, 12, :o3, 7315136, 3
+ tz.transition 1964, 3, :o2, 19507645, 8
+ tz.transition 1964, 10, :o3, 7316051, 3
+ tz.transition 1965, 3, :o2, 19510565, 8
+ tz.transition 1965, 10, :o3, 7317146, 3
+ tz.transition 1966, 3, :o2, 19513485, 8
+ tz.transition 1966, 10, :o3, 7318241, 3
+ tz.transition 1967, 4, :o2, 19516661, 8
+ tz.transition 1967, 10, :o3, 7319294, 3
+ tz.transition 1968, 4, :o2, 19519629, 8
+ tz.transition 1968, 10, :o3, 7320407, 3
+ tz.transition 1969, 4, :o2, 19522541, 8
+ tz.transition 1969, 10, :o4, 7321499, 3
+ tz.transition 1974, 1, :o5, 128142000
+ tz.transition 1974, 5, :o4, 136605600
+ tz.transition 1988, 12, :o5, 596948400
+ tz.transition 1989, 3, :o4, 605066400
+ tz.transition 1989, 10, :o5, 624423600
+ tz.transition 1990, 3, :o4, 636516000
+ tz.transition 1990, 10, :o5, 656478000
+ tz.transition 1991, 3, :o4, 667965600
+ tz.transition 1991, 10, :o5, 687927600
+ tz.transition 1992, 3, :o4, 699415200
+ tz.transition 1992, 10, :o5, 719377200
+ tz.transition 1993, 3, :o4, 731469600
+ tz.transition 1999, 10, :o3, 938919600
+ tz.transition 2000, 3, :o4, 952052400
+ tz.transition 2007, 12, :o5, 1198983600
+ tz.transition 2008, 3, :o4, 1205632800
+ tz.transition 2008, 10, :o5, 1223175600
+ tz.transition 2009, 3, :o4, 1237082400
+ tz.transition 2009, 10, :o5, 1254625200
+ tz.transition 2010, 3, :o4, 1269136800
+ tz.transition 2010, 10, :o5, 1286074800
+ tz.transition 2011, 3, :o4, 1300586400
+ tz.transition 2011, 10, :o5, 1317524400
+ tz.transition 2012, 3, :o4, 1332036000
+ tz.transition 2012, 10, :o5, 1349578800
+ tz.transition 2013, 3, :o4, 1363485600
+ tz.transition 2013, 10, :o5, 1381028400
+ tz.transition 2014, 3, :o4, 1394935200
+ tz.transition 2014, 10, :o5, 1412478000
+ tz.transition 2015, 3, :o4, 1426384800
+ tz.transition 2015, 10, :o5, 1443927600
+ tz.transition 2016, 3, :o4, 1458439200
+ tz.transition 2016, 10, :o5, 1475377200
+ tz.transition 2017, 3, :o4, 1489888800
+ tz.transition 2017, 10, :o5, 1506826800
+ tz.transition 2018, 3, :o4, 1521338400
+ tz.transition 2018, 10, :o5, 1538881200
+ tz.transition 2019, 3, :o4, 1552788000
+ tz.transition 2019, 10, :o5, 1570330800
+ tz.transition 2020, 3, :o4, 1584237600
+ tz.transition 2020, 10, :o5, 1601780400
+ tz.transition 2021, 3, :o4, 1616292000
+ tz.transition 2021, 10, :o5, 1633230000
+ tz.transition 2022, 3, :o4, 1647741600
+ tz.transition 2022, 10, :o5, 1664679600
+ tz.transition 2023, 3, :o4, 1679191200
+ tz.transition 2023, 10, :o5, 1696129200
+ tz.transition 2024, 3, :o4, 1710640800
+ tz.transition 2024, 10, :o5, 1728183600
+ tz.transition 2025, 3, :o4, 1742090400
+ tz.transition 2025, 10, :o5, 1759633200
+ tz.transition 2026, 3, :o4, 1773540000
+ tz.transition 2026, 10, :o5, 1791082800
+ tz.transition 2027, 3, :o4, 1805594400
+ tz.transition 2027, 10, :o5, 1822532400
+ tz.transition 2028, 3, :o4, 1837044000
+ tz.transition 2028, 10, :o5, 1853982000
+ tz.transition 2029, 3, :o4, 1868493600
+ tz.transition 2029, 10, :o5, 1886036400
+ tz.transition 2030, 3, :o4, 1899943200
+ tz.transition 2030, 10, :o5, 1917486000
+ tz.transition 2031, 3, :o4, 1931392800
+ tz.transition 2031, 10, :o5, 1948935600
+ tz.transition 2032, 3, :o4, 1963447200
+ tz.transition 2032, 10, :o5, 1980385200
+ tz.transition 2033, 3, :o4, 1994896800
+ tz.transition 2033, 10, :o5, 2011834800
+ tz.transition 2034, 3, :o4, 2026346400
+ tz.transition 2034, 10, :o5, 2043284400
+ tz.transition 2035, 3, :o4, 2057796000
+ tz.transition 2035, 10, :o5, 2075338800
+ tz.transition 2036, 3, :o4, 2089245600
+ tz.transition 2036, 10, :o5, 2106788400
+ tz.transition 2037, 3, :o4, 2120695200
+ tz.transition 2037, 10, :o5, 2138238000
+ tz.transition 2038, 3, :o4, 29586043, 12
+ tz.transition 2038, 10, :o5, 19725597, 8
+ tz.transition 2039, 3, :o4, 29590411, 12
+ tz.transition 2039, 10, :o5, 19728509, 8
+ tz.transition 2040, 3, :o4, 29594779, 12
+ tz.transition 2040, 10, :o5, 19731477, 8
+ tz.transition 2041, 3, :o4, 29599147, 12
+ tz.transition 2041, 10, :o5, 19734389, 8
+ tz.transition 2042, 3, :o4, 29603515, 12
+ tz.transition 2042, 10, :o5, 19737301, 8
+ tz.transition 2043, 3, :o4, 29607883, 12
+ tz.transition 2043, 10, :o5, 19740213, 8
+ tz.transition 2044, 3, :o4, 29612335, 12
+ tz.transition 2044, 10, :o5, 19743125, 8
+ tz.transition 2045, 3, :o4, 29616703, 12
+ tz.transition 2045, 10, :o5, 19746037, 8
+ tz.transition 2046, 3, :o4, 29621071, 12
+ tz.transition 2046, 10, :o5, 19749005, 8
+ tz.transition 2047, 3, :o4, 29625439, 12
+ tz.transition 2047, 10, :o5, 19751917, 8
+ tz.transition 2048, 3, :o4, 29629807, 12
+ tz.transition 2048, 10, :o5, 19754829, 8
+ tz.transition 2049, 3, :o4, 29634259, 12
+ tz.transition 2049, 10, :o5, 19757741, 8
+ tz.transition 2050, 3, :o4, 29638627, 12
+ end
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Argentina/San_Juan.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Argentina/San_Juan.rb
new file mode 100644
index 000000000..a5413612e
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Argentina/San_Juan.rb
@@ -0,0 +1,170 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module America
+ module Argentina
+ module San_Juan
+ include TimezoneDefinition
+
+ timezone 'America/Argentina/San_Juan' do |tz|
+ tz.offset :o0, -16444, 0, :LMT
+ tz.offset :o1, -15408, 0, :CMT
+ tz.offset :o2, -14400, 0, :ART
+ tz.offset :o3, -14400, 3600, :ARST
+ tz.offset :o4, -10800, 0, :ART
+ tz.offset :o5, -10800, 3600, :ARST
+ tz.offset :o6, -14400, 0, :WART
+
+ tz.transition 1894, 10, :o1, 52123666111, 21600
+ tz.transition 1920, 5, :o2, 1453467407, 600
+ tz.transition 1930, 12, :o3, 7278935, 3
+ tz.transition 1931, 4, :o2, 19411461, 8
+ tz.transition 1931, 10, :o3, 7279889, 3
+ tz.transition 1932, 3, :o2, 19414141, 8
+ tz.transition 1932, 11, :o3, 7281038, 3
+ tz.transition 1933, 3, :o2, 19417061, 8
+ tz.transition 1933, 11, :o3, 7282133, 3
+ tz.transition 1934, 3, :o2, 19419981, 8
+ tz.transition 1934, 11, :o3, 7283228, 3
+ tz.transition 1935, 3, :o2, 19422901, 8
+ tz.transition 1935, 11, :o3, 7284323, 3
+ tz.transition 1936, 3, :o2, 19425829, 8
+ tz.transition 1936, 11, :o3, 7285421, 3
+ tz.transition 1937, 3, :o2, 19428749, 8
+ tz.transition 1937, 11, :o3, 7286516, 3
+ tz.transition 1938, 3, :o2, 19431669, 8
+ tz.transition 1938, 11, :o3, 7287611, 3
+ tz.transition 1939, 3, :o2, 19434589, 8
+ tz.transition 1939, 11, :o3, 7288706, 3
+ tz.transition 1940, 3, :o2, 19437517, 8
+ tz.transition 1940, 7, :o3, 7289435, 3
+ tz.transition 1941, 6, :o2, 19441285, 8
+ tz.transition 1941, 10, :o3, 7290848, 3
+ tz.transition 1943, 8, :o2, 19447501, 8
+ tz.transition 1943, 10, :o3, 7293038, 3
+ tz.transition 1946, 3, :o2, 19455045, 8
+ tz.transition 1946, 10, :o3, 7296284, 3
+ tz.transition 1963, 10, :o2, 19506429, 8
+ tz.transition 1963, 12, :o3, 7315136, 3
+ tz.transition 1964, 3, :o2, 19507645, 8
+ tz.transition 1964, 10, :o3, 7316051, 3
+ tz.transition 1965, 3, :o2, 19510565, 8
+ tz.transition 1965, 10, :o3, 7317146, 3
+ tz.transition 1966, 3, :o2, 19513485, 8
+ tz.transition 1966, 10, :o3, 7318241, 3
+ tz.transition 1967, 4, :o2, 19516661, 8
+ tz.transition 1967, 10, :o3, 7319294, 3
+ tz.transition 1968, 4, :o2, 19519629, 8
+ tz.transition 1968, 10, :o3, 7320407, 3
+ tz.transition 1969, 4, :o2, 19522541, 8
+ tz.transition 1969, 10, :o4, 7321499, 3
+ tz.transition 1974, 1, :o5, 128142000
+ tz.transition 1974, 5, :o4, 136605600
+ tz.transition 1988, 12, :o5, 596948400
+ tz.transition 1989, 3, :o4, 605066400
+ tz.transition 1989, 10, :o5, 624423600
+ tz.transition 1990, 3, :o4, 636516000
+ tz.transition 1990, 10, :o5, 656478000
+ tz.transition 1991, 3, :o6, 667792800
+ tz.transition 1991, 5, :o4, 673588800
+ tz.transition 1991, 10, :o5, 687927600
+ tz.transition 1992, 3, :o4, 699415200
+ tz.transition 1992, 10, :o5, 719377200
+ tz.transition 1993, 3, :o4, 731469600
+ tz.transition 1999, 10, :o3, 938919600
+ tz.transition 2000, 3, :o4, 952052400
+ tz.transition 2004, 5, :o6, 1085972400
+ tz.transition 2004, 7, :o4, 1090728000
+ tz.transition 2007, 12, :o5, 1198983600
+ tz.transition 2008, 3, :o4, 1205632800
+ tz.transition 2008, 10, :o5, 1223175600
+ tz.transition 2009, 3, :o4, 1237082400
+ tz.transition 2009, 10, :o5, 1254625200
+ tz.transition 2010, 3, :o4, 1269136800
+ tz.transition 2010, 10, :o5, 1286074800
+ tz.transition 2011, 3, :o4, 1300586400
+ tz.transition 2011, 10, :o5, 1317524400
+ tz.transition 2012, 3, :o4, 1332036000
+ tz.transition 2012, 10, :o5, 1349578800
+ tz.transition 2013, 3, :o4, 1363485600
+ tz.transition 2013, 10, :o5, 1381028400
+ tz.transition 2014, 3, :o4, 1394935200
+ tz.transition 2014, 10, :o5, 1412478000
+ tz.transition 2015, 3, :o4, 1426384800
+ tz.transition 2015, 10, :o5, 1443927600
+ tz.transition 2016, 3, :o4, 1458439200
+ tz.transition 2016, 10, :o5, 1475377200
+ tz.transition 2017, 3, :o4, 1489888800
+ tz.transition 2017, 10, :o5, 1506826800
+ tz.transition 2018, 3, :o4, 1521338400
+ tz.transition 2018, 10, :o5, 1538881200
+ tz.transition 2019, 3, :o4, 1552788000
+ tz.transition 2019, 10, :o5, 1570330800
+ tz.transition 2020, 3, :o4, 1584237600
+ tz.transition 2020, 10, :o5, 1601780400
+ tz.transition 2021, 3, :o4, 1616292000
+ tz.transition 2021, 10, :o5, 1633230000
+ tz.transition 2022, 3, :o4, 1647741600
+ tz.transition 2022, 10, :o5, 1664679600
+ tz.transition 2023, 3, :o4, 1679191200
+ tz.transition 2023, 10, :o5, 1696129200
+ tz.transition 2024, 3, :o4, 1710640800
+ tz.transition 2024, 10, :o5, 1728183600
+ tz.transition 2025, 3, :o4, 1742090400
+ tz.transition 2025, 10, :o5, 1759633200
+ tz.transition 2026, 3, :o4, 1773540000
+ tz.transition 2026, 10, :o5, 1791082800
+ tz.transition 2027, 3, :o4, 1805594400
+ tz.transition 2027, 10, :o5, 1822532400
+ tz.transition 2028, 3, :o4, 1837044000
+ tz.transition 2028, 10, :o5, 1853982000
+ tz.transition 2029, 3, :o4, 1868493600
+ tz.transition 2029, 10, :o5, 1886036400
+ tz.transition 2030, 3, :o4, 1899943200
+ tz.transition 2030, 10, :o5, 1917486000
+ tz.transition 2031, 3, :o4, 1931392800
+ tz.transition 2031, 10, :o5, 1948935600
+ tz.transition 2032, 3, :o4, 1963447200
+ tz.transition 2032, 10, :o5, 1980385200
+ tz.transition 2033, 3, :o4, 1994896800
+ tz.transition 2033, 10, :o5, 2011834800
+ tz.transition 2034, 3, :o4, 2026346400
+ tz.transition 2034, 10, :o5, 2043284400
+ tz.transition 2035, 3, :o4, 2057796000
+ tz.transition 2035, 10, :o5, 2075338800
+ tz.transition 2036, 3, :o4, 2089245600
+ tz.transition 2036, 10, :o5, 2106788400
+ tz.transition 2037, 3, :o4, 2120695200
+ tz.transition 2037, 10, :o5, 2138238000
+ tz.transition 2038, 3, :o4, 29586043, 12
+ tz.transition 2038, 10, :o5, 19725597, 8
+ tz.transition 2039, 3, :o4, 29590411, 12
+ tz.transition 2039, 10, :o5, 19728509, 8
+ tz.transition 2040, 3, :o4, 29594779, 12
+ tz.transition 2040, 10, :o5, 19731477, 8
+ tz.transition 2041, 3, :o4, 29599147, 12
+ tz.transition 2041, 10, :o5, 19734389, 8
+ tz.transition 2042, 3, :o4, 29603515, 12
+ tz.transition 2042, 10, :o5, 19737301, 8
+ tz.transition 2043, 3, :o4, 29607883, 12
+ tz.transition 2043, 10, :o5, 19740213, 8
+ tz.transition 2044, 3, :o4, 29612335, 12
+ tz.transition 2044, 10, :o5, 19743125, 8
+ tz.transition 2045, 3, :o4, 29616703, 12
+ tz.transition 2045, 10, :o5, 19746037, 8
+ tz.transition 2046, 3, :o4, 29621071, 12
+ tz.transition 2046, 10, :o5, 19749005, 8
+ tz.transition 2047, 3, :o4, 29625439, 12
+ tz.transition 2047, 10, :o5, 19751917, 8
+ tz.transition 2048, 3, :o4, 29629807, 12
+ tz.transition 2048, 10, :o5, 19754829, 8
+ tz.transition 2049, 3, :o4, 29634259, 12
+ tz.transition 2049, 10, :o5, 19757741, 8
+ tz.transition 2050, 3, :o4, 29638627, 12
+ end
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Bogota.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Bogota.rb
new file mode 100644
index 000000000..ef96435c6
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Bogota.rb
@@ -0,0 +1,23 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module America
+ module Bogota
+ include TimezoneDefinition
+
+ timezone 'America/Bogota' do |tz|
+ tz.offset :o0, -17780, 0, :LMT
+ tz.offset :o1, -17780, 0, :BMT
+ tz.offset :o2, -18000, 0, :COT
+ tz.offset :o3, -18000, 3600, :COST
+
+ tz.transition 1884, 3, :o1, 10407954409, 4320
+ tz.transition 1914, 11, :o2, 10456385929, 4320
+ tz.transition 1992, 5, :o3, 704869200
+ tz.transition 1993, 4, :o2, 733896000
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Caracas.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Caracas.rb
new file mode 100644
index 000000000..27392a540
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Caracas.rb
@@ -0,0 +1,23 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module America
+ module Caracas
+ include TimezoneDefinition
+
+ timezone 'America/Caracas' do |tz|
+ tz.offset :o0, -16064, 0, :LMT
+ tz.offset :o1, -16060, 0, :CMT
+ tz.offset :o2, -16200, 0, :VET
+ tz.offset :o3, -14400, 0, :VET
+
+ tz.transition 1890, 1, :o1, 1627673863, 675
+ tz.transition 1912, 2, :o2, 10452001043, 4320
+ tz.transition 1965, 1, :o3, 39020187, 16
+ tz.transition 2007, 12, :o2, 1197183600
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Chicago.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Chicago.rb
new file mode 100644
index 000000000..0996857cf
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Chicago.rb
@@ -0,0 +1,283 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module America
+ module Chicago
+ include TimezoneDefinition
+
+ timezone 'America/Chicago' do |tz|
+ tz.offset :o0, -21036, 0, :LMT
+ tz.offset :o1, -21600, 0, :CST
+ tz.offset :o2, -21600, 3600, :CDT
+ tz.offset :o3, -18000, 0, :EST
+ tz.offset :o4, -21600, 3600, :CWT
+ tz.offset :o5, -21600, 3600, :CPT
+
+ tz.transition 1883, 11, :o1, 9636533, 4
+ tz.transition 1918, 3, :o2, 14530103, 6
+ tz.transition 1918, 10, :o1, 58125451, 24
+ tz.transition 1919, 3, :o2, 14532287, 6
+ tz.transition 1919, 10, :o1, 58134187, 24
+ tz.transition 1920, 6, :o2, 14534933, 6
+ tz.transition 1920, 10, :o1, 58143091, 24
+ tz.transition 1921, 3, :o2, 14536655, 6
+ tz.transition 1921, 10, :o1, 58151827, 24
+ tz.transition 1922, 4, :o2, 14539049, 6
+ tz.transition 1922, 9, :o1, 58159723, 24
+ tz.transition 1923, 4, :o2, 14541233, 6
+ tz.transition 1923, 9, :o1, 58168627, 24
+ tz.transition 1924, 4, :o2, 14543417, 6
+ tz.transition 1924, 9, :o1, 58177363, 24
+ tz.transition 1925, 4, :o2, 14545601, 6
+ tz.transition 1925, 9, :o1, 58186099, 24
+ tz.transition 1926, 4, :o2, 14547785, 6
+ tz.transition 1926, 9, :o1, 58194835, 24
+ tz.transition 1927, 4, :o2, 14549969, 6
+ tz.transition 1927, 9, :o1, 58203571, 24
+ tz.transition 1928, 4, :o2, 14552195, 6
+ tz.transition 1928, 9, :o1, 58212475, 24
+ tz.transition 1929, 4, :o2, 14554379, 6
+ tz.transition 1929, 9, :o1, 58221211, 24
+ tz.transition 1930, 4, :o2, 14556563, 6
+ tz.transition 1930, 9, :o1, 58229947, 24
+ tz.transition 1931, 4, :o2, 14558747, 6
+ tz.transition 1931, 9, :o1, 58238683, 24
+ tz.transition 1932, 4, :o2, 14560931, 6
+ tz.transition 1932, 9, :o1, 58247419, 24
+ tz.transition 1933, 4, :o2, 14563157, 6
+ tz.transition 1933, 9, :o1, 58256155, 24
+ tz.transition 1934, 4, :o2, 14565341, 6
+ tz.transition 1934, 9, :o1, 58265059, 24
+ tz.transition 1935, 4, :o2, 14567525, 6
+ tz.transition 1935, 9, :o1, 58273795, 24
+ tz.transition 1936, 3, :o3, 14569373, 6
+ tz.transition 1936, 11, :o1, 58283707, 24
+ tz.transition 1937, 4, :o2, 14571893, 6
+ tz.transition 1937, 9, :o1, 58291267, 24
+ tz.transition 1938, 4, :o2, 14574077, 6
+ tz.transition 1938, 9, :o1, 58300003, 24
+ tz.transition 1939, 4, :o2, 14576303, 6
+ tz.transition 1939, 9, :o1, 58308739, 24
+ tz.transition 1940, 4, :o2, 14578487, 6
+ tz.transition 1940, 9, :o1, 58317643, 24
+ tz.transition 1941, 4, :o2, 14580671, 6
+ tz.transition 1941, 9, :o1, 58326379, 24
+ tz.transition 1942, 2, :o4, 14582399, 6
+ tz.transition 1945, 8, :o5, 58360379, 24
+ tz.transition 1945, 9, :o1, 58361491, 24
+ tz.transition 1946, 4, :o2, 14591633, 6
+ tz.transition 1946, 9, :o1, 58370227, 24
+ tz.transition 1947, 4, :o2, 14593817, 6
+ tz.transition 1947, 9, :o1, 58378963, 24
+ tz.transition 1948, 4, :o2, 14596001, 6
+ tz.transition 1948, 9, :o1, 58387699, 24
+ tz.transition 1949, 4, :o2, 14598185, 6
+ tz.transition 1949, 9, :o1, 58396435, 24
+ tz.transition 1950, 4, :o2, 14600411, 6
+ tz.transition 1950, 9, :o1, 58405171, 24
+ tz.transition 1951, 4, :o2, 14602595, 6
+ tz.transition 1951, 9, :o1, 58414075, 24
+ tz.transition 1952, 4, :o2, 14604779, 6
+ tz.transition 1952, 9, :o1, 58422811, 24
+ tz.transition 1953, 4, :o2, 14606963, 6
+ tz.transition 1953, 9, :o1, 58431547, 24
+ tz.transition 1954, 4, :o2, 14609147, 6
+ tz.transition 1954, 9, :o1, 58440283, 24
+ tz.transition 1955, 4, :o2, 14611331, 6
+ tz.transition 1955, 10, :o1, 58449859, 24
+ tz.transition 1956, 4, :o2, 14613557, 6
+ tz.transition 1956, 10, :o1, 58458595, 24
+ tz.transition 1957, 4, :o2, 14615741, 6
+ tz.transition 1957, 10, :o1, 58467331, 24
+ tz.transition 1958, 4, :o2, 14617925, 6
+ tz.transition 1958, 10, :o1, 58476067, 24
+ tz.transition 1959, 4, :o2, 14620109, 6
+ tz.transition 1959, 10, :o1, 58484803, 24
+ tz.transition 1960, 4, :o2, 14622293, 6
+ tz.transition 1960, 10, :o1, 58493707, 24
+ tz.transition 1961, 4, :o2, 14624519, 6
+ tz.transition 1961, 10, :o1, 58502443, 24
+ tz.transition 1962, 4, :o2, 14626703, 6
+ tz.transition 1962, 10, :o1, 58511179, 24
+ tz.transition 1963, 4, :o2, 14628887, 6
+ tz.transition 1963, 10, :o1, 58519915, 24
+ tz.transition 1964, 4, :o2, 14631071, 6
+ tz.transition 1964, 10, :o1, 58528651, 24
+ tz.transition 1965, 4, :o2, 14633255, 6
+ tz.transition 1965, 10, :o1, 58537555, 24
+ tz.transition 1966, 4, :o2, 14635439, 6
+ tz.transition 1966, 10, :o1, 58546291, 24
+ tz.transition 1967, 4, :o2, 14637665, 6
+ tz.transition 1967, 10, :o1, 58555027, 24
+ tz.transition 1968, 4, :o2, 14639849, 6
+ tz.transition 1968, 10, :o1, 58563763, 24
+ tz.transition 1969, 4, :o2, 14642033, 6
+ tz.transition 1969, 10, :o1, 58572499, 24
+ tz.transition 1970, 4, :o2, 9964800
+ tz.transition 1970, 10, :o1, 25686000
+ tz.transition 1971, 4, :o2, 41414400
+ tz.transition 1971, 10, :o1, 57740400
+ tz.transition 1972, 4, :o2, 73468800
+ tz.transition 1972, 10, :o1, 89190000
+ tz.transition 1973, 4, :o2, 104918400
+ tz.transition 1973, 10, :o1, 120639600
+ tz.transition 1974, 1, :o2, 126691200
+ tz.transition 1974, 10, :o1, 152089200
+ tz.transition 1975, 2, :o2, 162374400
+ tz.transition 1975, 10, :o1, 183538800
+ tz.transition 1976, 4, :o2, 199267200
+ tz.transition 1976, 10, :o1, 215593200
+ tz.transition 1977, 4, :o2, 230716800
+ tz.transition 1977, 10, :o1, 247042800
+ tz.transition 1978, 4, :o2, 262771200
+ tz.transition 1978, 10, :o1, 278492400
+ tz.transition 1979, 4, :o2, 294220800
+ tz.transition 1979, 10, :o1, 309942000
+ tz.transition 1980, 4, :o2, 325670400
+ tz.transition 1980, 10, :o1, 341391600
+ tz.transition 1981, 4, :o2, 357120000
+ tz.transition 1981, 10, :o1, 372841200
+ tz.transition 1982, 4, :o2, 388569600
+ tz.transition 1982, 10, :o1, 404895600
+ tz.transition 1983, 4, :o2, 420019200
+ tz.transition 1983, 10, :o1, 436345200
+ tz.transition 1984, 4, :o2, 452073600
+ tz.transition 1984, 10, :o1, 467794800
+ tz.transition 1985, 4, :o2, 483523200
+ tz.transition 1985, 10, :o1, 499244400
+ tz.transition 1986, 4, :o2, 514972800
+ tz.transition 1986, 10, :o1, 530694000
+ tz.transition 1987, 4, :o2, 544608000
+ tz.transition 1987, 10, :o1, 562143600
+ tz.transition 1988, 4, :o2, 576057600
+ tz.transition 1988, 10, :o1, 594198000
+ tz.transition 1989, 4, :o2, 607507200
+ tz.transition 1989, 10, :o1, 625647600
+ tz.transition 1990, 4, :o2, 638956800
+ tz.transition 1990, 10, :o1, 657097200
+ tz.transition 1991, 4, :o2, 671011200
+ tz.transition 1991, 10, :o1, 688546800
+ tz.transition 1992, 4, :o2, 702460800
+ tz.transition 1992, 10, :o1, 719996400
+ tz.transition 1993, 4, :o2, 733910400
+ tz.transition 1993, 10, :o1, 752050800
+ tz.transition 1994, 4, :o2, 765360000
+ tz.transition 1994, 10, :o1, 783500400
+ tz.transition 1995, 4, :o2, 796809600
+ tz.transition 1995, 10, :o1, 814950000
+ tz.transition 1996, 4, :o2, 828864000
+ tz.transition 1996, 10, :o1, 846399600
+ tz.transition 1997, 4, :o2, 860313600
+ tz.transition 1997, 10, :o1, 877849200
+ tz.transition 1998, 4, :o2, 891763200
+ tz.transition 1998, 10, :o1, 909298800
+ tz.transition 1999, 4, :o2, 923212800
+ tz.transition 1999, 10, :o1, 941353200
+ tz.transition 2000, 4, :o2, 954662400
+ tz.transition 2000, 10, :o1, 972802800
+ tz.transition 2001, 4, :o2, 986112000
+ tz.transition 2001, 10, :o1, 1004252400
+ tz.transition 2002, 4, :o2, 1018166400
+ tz.transition 2002, 10, :o1, 1035702000
+ tz.transition 2003, 4, :o2, 1049616000
+ tz.transition 2003, 10, :o1, 1067151600
+ tz.transition 2004, 4, :o2, 1081065600
+ tz.transition 2004, 10, :o1, 1099206000
+ tz.transition 2005, 4, :o2, 1112515200
+ tz.transition 2005, 10, :o1, 1130655600
+ tz.transition 2006, 4, :o2, 1143964800
+ tz.transition 2006, 10, :o1, 1162105200
+ tz.transition 2007, 3, :o2, 1173600000
+ tz.transition 2007, 11, :o1, 1194159600
+ tz.transition 2008, 3, :o2, 1205049600
+ tz.transition 2008, 11, :o1, 1225609200
+ tz.transition 2009, 3, :o2, 1236499200
+ tz.transition 2009, 11, :o1, 1257058800
+ tz.transition 2010, 3, :o2, 1268553600
+ tz.transition 2010, 11, :o1, 1289113200
+ tz.transition 2011, 3, :o2, 1300003200
+ tz.transition 2011, 11, :o1, 1320562800
+ tz.transition 2012, 3, :o2, 1331452800
+ tz.transition 2012, 11, :o1, 1352012400
+ tz.transition 2013, 3, :o2, 1362902400
+ tz.transition 2013, 11, :o1, 1383462000
+ tz.transition 2014, 3, :o2, 1394352000
+ tz.transition 2014, 11, :o1, 1414911600
+ tz.transition 2015, 3, :o2, 1425801600
+ tz.transition 2015, 11, :o1, 1446361200
+ tz.transition 2016, 3, :o2, 1457856000
+ tz.transition 2016, 11, :o1, 1478415600
+ tz.transition 2017, 3, :o2, 1489305600
+ tz.transition 2017, 11, :o1, 1509865200
+ tz.transition 2018, 3, :o2, 1520755200
+ tz.transition 2018, 11, :o1, 1541314800
+ tz.transition 2019, 3, :o2, 1552204800
+ tz.transition 2019, 11, :o1, 1572764400
+ tz.transition 2020, 3, :o2, 1583654400
+ tz.transition 2020, 11, :o1, 1604214000
+ tz.transition 2021, 3, :o2, 1615708800
+ tz.transition 2021, 11, :o1, 1636268400
+ tz.transition 2022, 3, :o2, 1647158400
+ tz.transition 2022, 11, :o1, 1667718000
+ tz.transition 2023, 3, :o2, 1678608000
+ tz.transition 2023, 11, :o1, 1699167600
+ tz.transition 2024, 3, :o2, 1710057600
+ tz.transition 2024, 11, :o1, 1730617200
+ tz.transition 2025, 3, :o2, 1741507200
+ tz.transition 2025, 11, :o1, 1762066800
+ tz.transition 2026, 3, :o2, 1772956800
+ tz.transition 2026, 11, :o1, 1793516400
+ tz.transition 2027, 3, :o2, 1805011200
+ tz.transition 2027, 11, :o1, 1825570800
+ tz.transition 2028, 3, :o2, 1836460800
+ tz.transition 2028, 11, :o1, 1857020400
+ tz.transition 2029, 3, :o2, 1867910400
+ tz.transition 2029, 11, :o1, 1888470000
+ tz.transition 2030, 3, :o2, 1899360000
+ tz.transition 2030, 11, :o1, 1919919600
+ tz.transition 2031, 3, :o2, 1930809600
+ tz.transition 2031, 11, :o1, 1951369200
+ tz.transition 2032, 3, :o2, 1962864000
+ tz.transition 2032, 11, :o1, 1983423600
+ tz.transition 2033, 3, :o2, 1994313600
+ tz.transition 2033, 11, :o1, 2014873200
+ tz.transition 2034, 3, :o2, 2025763200
+ tz.transition 2034, 11, :o1, 2046322800
+ tz.transition 2035, 3, :o2, 2057212800
+ tz.transition 2035, 11, :o1, 2077772400
+ tz.transition 2036, 3, :o2, 2088662400
+ tz.transition 2036, 11, :o1, 2109222000
+ tz.transition 2037, 3, :o2, 2120112000
+ tz.transition 2037, 11, :o1, 2140671600
+ tz.transition 2038, 3, :o2, 14792981, 6
+ tz.transition 2038, 11, :o1, 59177635, 24
+ tz.transition 2039, 3, :o2, 14795165, 6
+ tz.transition 2039, 11, :o1, 59186371, 24
+ tz.transition 2040, 3, :o2, 14797349, 6
+ tz.transition 2040, 11, :o1, 59195107, 24
+ tz.transition 2041, 3, :o2, 14799533, 6
+ tz.transition 2041, 11, :o1, 59203843, 24
+ tz.transition 2042, 3, :o2, 14801717, 6
+ tz.transition 2042, 11, :o1, 59212579, 24
+ tz.transition 2043, 3, :o2, 14803901, 6
+ tz.transition 2043, 11, :o1, 59221315, 24
+ tz.transition 2044, 3, :o2, 14806127, 6
+ tz.transition 2044, 11, :o1, 59230219, 24
+ tz.transition 2045, 3, :o2, 14808311, 6
+ tz.transition 2045, 11, :o1, 59238955, 24
+ tz.transition 2046, 3, :o2, 14810495, 6
+ tz.transition 2046, 11, :o1, 59247691, 24
+ tz.transition 2047, 3, :o2, 14812679, 6
+ tz.transition 2047, 11, :o1, 59256427, 24
+ tz.transition 2048, 3, :o2, 14814863, 6
+ tz.transition 2048, 11, :o1, 59265163, 24
+ tz.transition 2049, 3, :o2, 14817089, 6
+ tz.transition 2049, 11, :o1, 59274067, 24
+ tz.transition 2050, 3, :o2, 14819273, 6
+ tz.transition 2050, 11, :o1, 59282803, 24
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Chihuahua.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Chihuahua.rb
new file mode 100644
index 000000000..1710b57c7
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Chihuahua.rb
@@ -0,0 +1,136 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module America
+ module Chihuahua
+ include TimezoneDefinition
+
+ timezone 'America/Chihuahua' do |tz|
+ tz.offset :o0, -25460, 0, :LMT
+ tz.offset :o1, -25200, 0, :MST
+ tz.offset :o2, -21600, 0, :CST
+ tz.offset :o3, -21600, 3600, :CDT
+ tz.offset :o4, -25200, 3600, :MDT
+
+ tz.transition 1922, 1, :o1, 58153339, 24
+ tz.transition 1927, 6, :o2, 9700171, 4
+ tz.transition 1930, 11, :o1, 9705183, 4
+ tz.transition 1931, 5, :o2, 9705855, 4
+ tz.transition 1931, 10, :o1, 9706463, 4
+ tz.transition 1932, 4, :o2, 58243171, 24
+ tz.transition 1996, 4, :o3, 828864000
+ tz.transition 1996, 10, :o2, 846399600
+ tz.transition 1997, 4, :o3, 860313600
+ tz.transition 1997, 10, :o2, 877849200
+ tz.transition 1998, 4, :o4, 891766800
+ tz.transition 1998, 10, :o1, 909302400
+ tz.transition 1999, 4, :o4, 923216400
+ tz.transition 1999, 10, :o1, 941356800
+ tz.transition 2000, 4, :o4, 954666000
+ tz.transition 2000, 10, :o1, 972806400
+ tz.transition 2001, 5, :o4, 989139600
+ tz.transition 2001, 9, :o1, 1001836800
+ tz.transition 2002, 4, :o4, 1018170000
+ tz.transition 2002, 10, :o1, 1035705600
+ tz.transition 2003, 4, :o4, 1049619600
+ tz.transition 2003, 10, :o1, 1067155200
+ tz.transition 2004, 4, :o4, 1081069200
+ tz.transition 2004, 10, :o1, 1099209600
+ tz.transition 2005, 4, :o4, 1112518800
+ tz.transition 2005, 10, :o1, 1130659200
+ tz.transition 2006, 4, :o4, 1143968400
+ tz.transition 2006, 10, :o1, 1162108800
+ tz.transition 2007, 4, :o4, 1175418000
+ tz.transition 2007, 10, :o1, 1193558400
+ tz.transition 2008, 4, :o4, 1207472400
+ tz.transition 2008, 10, :o1, 1225008000
+ tz.transition 2009, 4, :o4, 1238922000
+ tz.transition 2009, 10, :o1, 1256457600
+ tz.transition 2010, 4, :o4, 1270371600
+ tz.transition 2010, 10, :o1, 1288512000
+ tz.transition 2011, 4, :o4, 1301821200
+ tz.transition 2011, 10, :o1, 1319961600
+ tz.transition 2012, 4, :o4, 1333270800
+ tz.transition 2012, 10, :o1, 1351411200
+ tz.transition 2013, 4, :o4, 1365325200
+ tz.transition 2013, 10, :o1, 1382860800
+ tz.transition 2014, 4, :o4, 1396774800
+ tz.transition 2014, 10, :o1, 1414310400
+ tz.transition 2015, 4, :o4, 1428224400
+ tz.transition 2015, 10, :o1, 1445760000
+ tz.transition 2016, 4, :o4, 1459674000
+ tz.transition 2016, 10, :o1, 1477814400
+ tz.transition 2017, 4, :o4, 1491123600
+ tz.transition 2017, 10, :o1, 1509264000
+ tz.transition 2018, 4, :o4, 1522573200
+ tz.transition 2018, 10, :o1, 1540713600
+ tz.transition 2019, 4, :o4, 1554627600
+ tz.transition 2019, 10, :o1, 1572163200
+ tz.transition 2020, 4, :o4, 1586077200
+ tz.transition 2020, 10, :o1, 1603612800
+ tz.transition 2021, 4, :o4, 1617526800
+ tz.transition 2021, 10, :o1, 1635667200
+ tz.transition 2022, 4, :o4, 1648976400
+ tz.transition 2022, 10, :o1, 1667116800
+ tz.transition 2023, 4, :o4, 1680426000
+ tz.transition 2023, 10, :o1, 1698566400
+ tz.transition 2024, 4, :o4, 1712480400
+ tz.transition 2024, 10, :o1, 1730016000
+ tz.transition 2025, 4, :o4, 1743930000
+ tz.transition 2025, 10, :o1, 1761465600
+ tz.transition 2026, 4, :o4, 1775379600
+ tz.transition 2026, 10, :o1, 1792915200
+ tz.transition 2027, 4, :o4, 1806829200
+ tz.transition 2027, 10, :o1, 1824969600
+ tz.transition 2028, 4, :o4, 1838278800
+ tz.transition 2028, 10, :o1, 1856419200
+ tz.transition 2029, 4, :o4, 1869728400
+ tz.transition 2029, 10, :o1, 1887868800
+ tz.transition 2030, 4, :o4, 1901782800
+ tz.transition 2030, 10, :o1, 1919318400
+ tz.transition 2031, 4, :o4, 1933232400
+ tz.transition 2031, 10, :o1, 1950768000
+ tz.transition 2032, 4, :o4, 1964682000
+ tz.transition 2032, 10, :o1, 1982822400
+ tz.transition 2033, 4, :o4, 1996131600
+ tz.transition 2033, 10, :o1, 2014272000
+ tz.transition 2034, 4, :o4, 2027581200
+ tz.transition 2034, 10, :o1, 2045721600
+ tz.transition 2035, 4, :o4, 2059030800
+ tz.transition 2035, 10, :o1, 2077171200
+ tz.transition 2036, 4, :o4, 2091085200
+ tz.transition 2036, 10, :o1, 2108620800
+ tz.transition 2037, 4, :o4, 2122534800
+ tz.transition 2037, 10, :o1, 2140070400
+ tz.transition 2038, 4, :o4, 19724143, 8
+ tz.transition 2038, 10, :o1, 14794367, 6
+ tz.transition 2039, 4, :o4, 19727055, 8
+ tz.transition 2039, 10, :o1, 14796551, 6
+ tz.transition 2040, 4, :o4, 19729967, 8
+ tz.transition 2040, 10, :o1, 14798735, 6
+ tz.transition 2041, 4, :o4, 19732935, 8
+ tz.transition 2041, 10, :o1, 14800919, 6
+ tz.transition 2042, 4, :o4, 19735847, 8
+ tz.transition 2042, 10, :o1, 14803103, 6
+ tz.transition 2043, 4, :o4, 19738759, 8
+ tz.transition 2043, 10, :o1, 14805287, 6
+ tz.transition 2044, 4, :o4, 19741671, 8
+ tz.transition 2044, 10, :o1, 14807513, 6
+ tz.transition 2045, 4, :o4, 19744583, 8
+ tz.transition 2045, 10, :o1, 14809697, 6
+ tz.transition 2046, 4, :o4, 19747495, 8
+ tz.transition 2046, 10, :o1, 14811881, 6
+ tz.transition 2047, 4, :o4, 19750463, 8
+ tz.transition 2047, 10, :o1, 14814065, 6
+ tz.transition 2048, 4, :o4, 19753375, 8
+ tz.transition 2048, 10, :o1, 14816249, 6
+ tz.transition 2049, 4, :o4, 19756287, 8
+ tz.transition 2049, 10, :o1, 14818475, 6
+ tz.transition 2050, 4, :o4, 19759199, 8
+ tz.transition 2050, 10, :o1, 14820659, 6
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Denver.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Denver.rb
new file mode 100644
index 000000000..1c1efb5ff
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Denver.rb
@@ -0,0 +1,204 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module America
+ module Denver
+ include TimezoneDefinition
+
+ timezone 'America/Denver' do |tz|
+ tz.offset :o0, -25196, 0, :LMT
+ tz.offset :o1, -25200, 0, :MST
+ tz.offset :o2, -25200, 3600, :MDT
+ tz.offset :o3, -25200, 3600, :MWT
+ tz.offset :o4, -25200, 3600, :MPT
+
+ tz.transition 1883, 11, :o1, 57819199, 24
+ tz.transition 1918, 3, :o2, 19373471, 8
+ tz.transition 1918, 10, :o1, 14531363, 6
+ tz.transition 1919, 3, :o2, 19376383, 8
+ tz.transition 1919, 10, :o1, 14533547, 6
+ tz.transition 1920, 3, :o2, 19379295, 8
+ tz.transition 1920, 10, :o1, 14535773, 6
+ tz.transition 1921, 3, :o2, 19382207, 8
+ tz.transition 1921, 5, :o1, 14536991, 6
+ tz.transition 1942, 2, :o3, 19443199, 8
+ tz.transition 1945, 8, :o4, 58360379, 24
+ tz.transition 1945, 9, :o1, 14590373, 6
+ tz.transition 1965, 4, :o2, 19511007, 8
+ tz.transition 1965, 10, :o1, 14634389, 6
+ tz.transition 1966, 4, :o2, 19513919, 8
+ tz.transition 1966, 10, :o1, 14636573, 6
+ tz.transition 1967, 4, :o2, 19516887, 8
+ tz.transition 1967, 10, :o1, 14638757, 6
+ tz.transition 1968, 4, :o2, 19519799, 8
+ tz.transition 1968, 10, :o1, 14640941, 6
+ tz.transition 1969, 4, :o2, 19522711, 8
+ tz.transition 1969, 10, :o1, 14643125, 6
+ tz.transition 1970, 4, :o2, 9968400
+ tz.transition 1970, 10, :o1, 25689600
+ tz.transition 1971, 4, :o2, 41418000
+ tz.transition 1971, 10, :o1, 57744000
+ tz.transition 1972, 4, :o2, 73472400
+ tz.transition 1972, 10, :o1, 89193600
+ tz.transition 1973, 4, :o2, 104922000
+ tz.transition 1973, 10, :o1, 120643200
+ tz.transition 1974, 1, :o2, 126694800
+ tz.transition 1974, 10, :o1, 152092800
+ tz.transition 1975, 2, :o2, 162378000
+ tz.transition 1975, 10, :o1, 183542400
+ tz.transition 1976, 4, :o2, 199270800
+ tz.transition 1976, 10, :o1, 215596800
+ tz.transition 1977, 4, :o2, 230720400
+ tz.transition 1977, 10, :o1, 247046400
+ tz.transition 1978, 4, :o2, 262774800
+ tz.transition 1978, 10, :o1, 278496000
+ tz.transition 1979, 4, :o2, 294224400
+ tz.transition 1979, 10, :o1, 309945600
+ tz.transition 1980, 4, :o2, 325674000
+ tz.transition 1980, 10, :o1, 341395200
+ tz.transition 1981, 4, :o2, 357123600
+ tz.transition 1981, 10, :o1, 372844800
+ tz.transition 1982, 4, :o2, 388573200
+ tz.transition 1982, 10, :o1, 404899200
+ tz.transition 1983, 4, :o2, 420022800
+ tz.transition 1983, 10, :o1, 436348800
+ tz.transition 1984, 4, :o2, 452077200
+ tz.transition 1984, 10, :o1, 467798400
+ tz.transition 1985, 4, :o2, 483526800
+ tz.transition 1985, 10, :o1, 499248000
+ tz.transition 1986, 4, :o2, 514976400
+ tz.transition 1986, 10, :o1, 530697600
+ tz.transition 1987, 4, :o2, 544611600
+ tz.transition 1987, 10, :o1, 562147200
+ tz.transition 1988, 4, :o2, 576061200
+ tz.transition 1988, 10, :o1, 594201600
+ tz.transition 1989, 4, :o2, 607510800
+ tz.transition 1989, 10, :o1, 625651200
+ tz.transition 1990, 4, :o2, 638960400
+ tz.transition 1990, 10, :o1, 657100800
+ tz.transition 1991, 4, :o2, 671014800
+ tz.transition 1991, 10, :o1, 688550400
+ tz.transition 1992, 4, :o2, 702464400
+ tz.transition 1992, 10, :o1, 720000000
+ tz.transition 1993, 4, :o2, 733914000
+ tz.transition 1993, 10, :o1, 752054400
+ tz.transition 1994, 4, :o2, 765363600
+ tz.transition 1994, 10, :o1, 783504000
+ tz.transition 1995, 4, :o2, 796813200
+ tz.transition 1995, 10, :o1, 814953600
+ tz.transition 1996, 4, :o2, 828867600
+ tz.transition 1996, 10, :o1, 846403200
+ tz.transition 1997, 4, :o2, 860317200
+ tz.transition 1997, 10, :o1, 877852800
+ tz.transition 1998, 4, :o2, 891766800
+ tz.transition 1998, 10, :o1, 909302400
+ tz.transition 1999, 4, :o2, 923216400
+ tz.transition 1999, 10, :o1, 941356800
+ tz.transition 2000, 4, :o2, 954666000
+ tz.transition 2000, 10, :o1, 972806400
+ tz.transition 2001, 4, :o2, 986115600
+ tz.transition 2001, 10, :o1, 1004256000
+ tz.transition 2002, 4, :o2, 1018170000
+ tz.transition 2002, 10, :o1, 1035705600
+ tz.transition 2003, 4, :o2, 1049619600
+ tz.transition 2003, 10, :o1, 1067155200
+ tz.transition 2004, 4, :o2, 1081069200
+ tz.transition 2004, 10, :o1, 1099209600
+ tz.transition 2005, 4, :o2, 1112518800
+ tz.transition 2005, 10, :o1, 1130659200
+ tz.transition 2006, 4, :o2, 1143968400
+ tz.transition 2006, 10, :o1, 1162108800
+ tz.transition 2007, 3, :o2, 1173603600
+ tz.transition 2007, 11, :o1, 1194163200
+ tz.transition 2008, 3, :o2, 1205053200
+ tz.transition 2008, 11, :o1, 1225612800
+ tz.transition 2009, 3, :o2, 1236502800
+ tz.transition 2009, 11, :o1, 1257062400
+ tz.transition 2010, 3, :o2, 1268557200
+ tz.transition 2010, 11, :o1, 1289116800
+ tz.transition 2011, 3, :o2, 1300006800
+ tz.transition 2011, 11, :o1, 1320566400
+ tz.transition 2012, 3, :o2, 1331456400
+ tz.transition 2012, 11, :o1, 1352016000
+ tz.transition 2013, 3, :o2, 1362906000
+ tz.transition 2013, 11, :o1, 1383465600
+ tz.transition 2014, 3, :o2, 1394355600
+ tz.transition 2014, 11, :o1, 1414915200
+ tz.transition 2015, 3, :o2, 1425805200
+ tz.transition 2015, 11, :o1, 1446364800
+ tz.transition 2016, 3, :o2, 1457859600
+ tz.transition 2016, 11, :o1, 1478419200
+ tz.transition 2017, 3, :o2, 1489309200
+ tz.transition 2017, 11, :o1, 1509868800
+ tz.transition 2018, 3, :o2, 1520758800
+ tz.transition 2018, 11, :o1, 1541318400
+ tz.transition 2019, 3, :o2, 1552208400
+ tz.transition 2019, 11, :o1, 1572768000
+ tz.transition 2020, 3, :o2, 1583658000
+ tz.transition 2020, 11, :o1, 1604217600
+ tz.transition 2021, 3, :o2, 1615712400
+ tz.transition 2021, 11, :o1, 1636272000
+ tz.transition 2022, 3, :o2, 1647162000
+ tz.transition 2022, 11, :o1, 1667721600
+ tz.transition 2023, 3, :o2, 1678611600
+ tz.transition 2023, 11, :o1, 1699171200
+ tz.transition 2024, 3, :o2, 1710061200
+ tz.transition 2024, 11, :o1, 1730620800
+ tz.transition 2025, 3, :o2, 1741510800
+ tz.transition 2025, 11, :o1, 1762070400
+ tz.transition 2026, 3, :o2, 1772960400
+ tz.transition 2026, 11, :o1, 1793520000
+ tz.transition 2027, 3, :o2, 1805014800
+ tz.transition 2027, 11, :o1, 1825574400
+ tz.transition 2028, 3, :o2, 1836464400
+ tz.transition 2028, 11, :o1, 1857024000
+ tz.transition 2029, 3, :o2, 1867914000
+ tz.transition 2029, 11, :o1, 1888473600
+ tz.transition 2030, 3, :o2, 1899363600
+ tz.transition 2030, 11, :o1, 1919923200
+ tz.transition 2031, 3, :o2, 1930813200
+ tz.transition 2031, 11, :o1, 1951372800
+ tz.transition 2032, 3, :o2, 1962867600
+ tz.transition 2032, 11, :o1, 1983427200
+ tz.transition 2033, 3, :o2, 1994317200
+ tz.transition 2033, 11, :o1, 2014876800
+ tz.transition 2034, 3, :o2, 2025766800
+ tz.transition 2034, 11, :o1, 2046326400
+ tz.transition 2035, 3, :o2, 2057216400
+ tz.transition 2035, 11, :o1, 2077776000
+ tz.transition 2036, 3, :o2, 2088666000
+ tz.transition 2036, 11, :o1, 2109225600
+ tz.transition 2037, 3, :o2, 2120115600
+ tz.transition 2037, 11, :o1, 2140675200
+ tz.transition 2038, 3, :o2, 19723975, 8
+ tz.transition 2038, 11, :o1, 14794409, 6
+ tz.transition 2039, 3, :o2, 19726887, 8
+ tz.transition 2039, 11, :o1, 14796593, 6
+ tz.transition 2040, 3, :o2, 19729799, 8
+ tz.transition 2040, 11, :o1, 14798777, 6
+ tz.transition 2041, 3, :o2, 19732711, 8
+ tz.transition 2041, 11, :o1, 14800961, 6
+ tz.transition 2042, 3, :o2, 19735623, 8
+ tz.transition 2042, 11, :o1, 14803145, 6
+ tz.transition 2043, 3, :o2, 19738535, 8
+ tz.transition 2043, 11, :o1, 14805329, 6
+ tz.transition 2044, 3, :o2, 19741503, 8
+ tz.transition 2044, 11, :o1, 14807555, 6
+ tz.transition 2045, 3, :o2, 19744415, 8
+ tz.transition 2045, 11, :o1, 14809739, 6
+ tz.transition 2046, 3, :o2, 19747327, 8
+ tz.transition 2046, 11, :o1, 14811923, 6
+ tz.transition 2047, 3, :o2, 19750239, 8
+ tz.transition 2047, 11, :o1, 14814107, 6
+ tz.transition 2048, 3, :o2, 19753151, 8
+ tz.transition 2048, 11, :o1, 14816291, 6
+ tz.transition 2049, 3, :o2, 19756119, 8
+ tz.transition 2049, 11, :o1, 14818517, 6
+ tz.transition 2050, 3, :o2, 19759031, 8
+ tz.transition 2050, 11, :o1, 14820701, 6
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Godthab.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Godthab.rb
new file mode 100644
index 000000000..1e05518b0
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Godthab.rb
@@ -0,0 +1,161 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module America
+ module Godthab
+ include TimezoneDefinition
+
+ timezone 'America/Godthab' do |tz|
+ tz.offset :o0, -12416, 0, :LMT
+ tz.offset :o1, -10800, 0, :WGT
+ tz.offset :o2, -10800, 3600, :WGST
+
+ tz.transition 1916, 7, :o1, 3268448069, 1350
+ tz.transition 1980, 4, :o2, 323845200
+ tz.transition 1980, 9, :o1, 338950800
+ tz.transition 1981, 3, :o2, 354675600
+ tz.transition 1981, 9, :o1, 370400400
+ tz.transition 1982, 3, :o2, 386125200
+ tz.transition 1982, 9, :o1, 401850000
+ tz.transition 1983, 3, :o2, 417574800
+ tz.transition 1983, 9, :o1, 433299600
+ tz.transition 1984, 3, :o2, 449024400
+ tz.transition 1984, 9, :o1, 465354000
+ tz.transition 1985, 3, :o2, 481078800
+ tz.transition 1985, 9, :o1, 496803600
+ tz.transition 1986, 3, :o2, 512528400
+ tz.transition 1986, 9, :o1, 528253200
+ tz.transition 1987, 3, :o2, 543978000
+ tz.transition 1987, 9, :o1, 559702800
+ tz.transition 1988, 3, :o2, 575427600
+ tz.transition 1988, 9, :o1, 591152400
+ tz.transition 1989, 3, :o2, 606877200
+ tz.transition 1989, 9, :o1, 622602000
+ tz.transition 1990, 3, :o2, 638326800
+ tz.transition 1990, 9, :o1, 654656400
+ tz.transition 1991, 3, :o2, 670381200
+ tz.transition 1991, 9, :o1, 686106000
+ tz.transition 1992, 3, :o2, 701830800
+ tz.transition 1992, 9, :o1, 717555600
+ tz.transition 1993, 3, :o2, 733280400
+ tz.transition 1993, 9, :o1, 749005200
+ tz.transition 1994, 3, :o2, 764730000
+ tz.transition 1994, 9, :o1, 780454800
+ tz.transition 1995, 3, :o2, 796179600
+ tz.transition 1995, 9, :o1, 811904400
+ tz.transition 1996, 3, :o2, 828234000
+ tz.transition 1996, 10, :o1, 846378000
+ tz.transition 1997, 3, :o2, 859683600
+ tz.transition 1997, 10, :o1, 877827600
+ tz.transition 1998, 3, :o2, 891133200
+ tz.transition 1998, 10, :o1, 909277200
+ tz.transition 1999, 3, :o2, 922582800
+ tz.transition 1999, 10, :o1, 941331600
+ tz.transition 2000, 3, :o2, 954032400
+ tz.transition 2000, 10, :o1, 972781200
+ tz.transition 2001, 3, :o2, 985482000
+ tz.transition 2001, 10, :o1, 1004230800
+ tz.transition 2002, 3, :o2, 1017536400
+ tz.transition 2002, 10, :o1, 1035680400
+ tz.transition 2003, 3, :o2, 1048986000
+ tz.transition 2003, 10, :o1, 1067130000
+ tz.transition 2004, 3, :o2, 1080435600
+ tz.transition 2004, 10, :o1, 1099184400
+ tz.transition 2005, 3, :o2, 1111885200
+ tz.transition 2005, 10, :o1, 1130634000
+ tz.transition 2006, 3, :o2, 1143334800
+ tz.transition 2006, 10, :o1, 1162083600
+ tz.transition 2007, 3, :o2, 1174784400
+ tz.transition 2007, 10, :o1, 1193533200
+ tz.transition 2008, 3, :o2, 1206838800
+ tz.transition 2008, 10, :o1, 1224982800
+ tz.transition 2009, 3, :o2, 1238288400
+ tz.transition 2009, 10, :o1, 1256432400
+ tz.transition 2010, 3, :o2, 1269738000
+ tz.transition 2010, 10, :o1, 1288486800
+ tz.transition 2011, 3, :o2, 1301187600
+ tz.transition 2011, 10, :o1, 1319936400
+ tz.transition 2012, 3, :o2, 1332637200
+ tz.transition 2012, 10, :o1, 1351386000
+ tz.transition 2013, 3, :o2, 1364691600
+ tz.transition 2013, 10, :o1, 1382835600
+ tz.transition 2014, 3, :o2, 1396141200
+ tz.transition 2014, 10, :o1, 1414285200
+ tz.transition 2015, 3, :o2, 1427590800
+ tz.transition 2015, 10, :o1, 1445734800
+ tz.transition 2016, 3, :o2, 1459040400
+ tz.transition 2016, 10, :o1, 1477789200
+ tz.transition 2017, 3, :o2, 1490490000
+ tz.transition 2017, 10, :o1, 1509238800
+ tz.transition 2018, 3, :o2, 1521939600
+ tz.transition 2018, 10, :o1, 1540688400
+ tz.transition 2019, 3, :o2, 1553994000
+ tz.transition 2019, 10, :o1, 1572138000
+ tz.transition 2020, 3, :o2, 1585443600
+ tz.transition 2020, 10, :o1, 1603587600
+ tz.transition 2021, 3, :o2, 1616893200
+ tz.transition 2021, 10, :o1, 1635642000
+ tz.transition 2022, 3, :o2, 1648342800
+ tz.transition 2022, 10, :o1, 1667091600
+ tz.transition 2023, 3, :o2, 1679792400
+ tz.transition 2023, 10, :o1, 1698541200
+ tz.transition 2024, 3, :o2, 1711846800
+ tz.transition 2024, 10, :o1, 1729990800
+ tz.transition 2025, 3, :o2, 1743296400
+ tz.transition 2025, 10, :o1, 1761440400
+ tz.transition 2026, 3, :o2, 1774746000
+ tz.transition 2026, 10, :o1, 1792890000
+ tz.transition 2027, 3, :o2, 1806195600
+ tz.transition 2027, 10, :o1, 1824944400
+ tz.transition 2028, 3, :o2, 1837645200
+ tz.transition 2028, 10, :o1, 1856394000
+ tz.transition 2029, 3, :o2, 1869094800
+ tz.transition 2029, 10, :o1, 1887843600
+ tz.transition 2030, 3, :o2, 1901149200
+ tz.transition 2030, 10, :o1, 1919293200
+ tz.transition 2031, 3, :o2, 1932598800
+ tz.transition 2031, 10, :o1, 1950742800
+ tz.transition 2032, 3, :o2, 1964048400
+ tz.transition 2032, 10, :o1, 1982797200
+ tz.transition 2033, 3, :o2, 1995498000
+ tz.transition 2033, 10, :o1, 2014246800
+ tz.transition 2034, 3, :o2, 2026947600
+ tz.transition 2034, 10, :o1, 2045696400
+ tz.transition 2035, 3, :o2, 2058397200
+ tz.transition 2035, 10, :o1, 2077146000
+ tz.transition 2036, 3, :o2, 2090451600
+ tz.transition 2036, 10, :o1, 2108595600
+ tz.transition 2037, 3, :o2, 2121901200
+ tz.transition 2037, 10, :o1, 2140045200
+ tz.transition 2038, 3, :o2, 59172253, 24
+ tz.transition 2038, 10, :o1, 59177461, 24
+ tz.transition 2039, 3, :o2, 59180989, 24
+ tz.transition 2039, 10, :o1, 59186197, 24
+ tz.transition 2040, 3, :o2, 59189725, 24
+ tz.transition 2040, 10, :o1, 59194933, 24
+ tz.transition 2041, 3, :o2, 59198629, 24
+ tz.transition 2041, 10, :o1, 59203669, 24
+ tz.transition 2042, 3, :o2, 59207365, 24
+ tz.transition 2042, 10, :o1, 59212405, 24
+ tz.transition 2043, 3, :o2, 59216101, 24
+ tz.transition 2043, 10, :o1, 59221141, 24
+ tz.transition 2044, 3, :o2, 59224837, 24
+ tz.transition 2044, 10, :o1, 59230045, 24
+ tz.transition 2045, 3, :o2, 59233573, 24
+ tz.transition 2045, 10, :o1, 59238781, 24
+ tz.transition 2046, 3, :o2, 59242309, 24
+ tz.transition 2046, 10, :o1, 59247517, 24
+ tz.transition 2047, 3, :o2, 59251213, 24
+ tz.transition 2047, 10, :o1, 59256253, 24
+ tz.transition 2048, 3, :o2, 59259949, 24
+ tz.transition 2048, 10, :o1, 59264989, 24
+ tz.transition 2049, 3, :o2, 59268685, 24
+ tz.transition 2049, 10, :o1, 59273893, 24
+ tz.transition 2050, 3, :o2, 59277421, 24
+ tz.transition 2050, 10, :o1, 59282629, 24
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Guatemala.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Guatemala.rb
new file mode 100644
index 000000000..a2bf73401
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Guatemala.rb
@@ -0,0 +1,27 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module America
+ module Guatemala
+ include TimezoneDefinition
+
+ timezone 'America/Guatemala' do |tz|
+ tz.offset :o0, -21724, 0, :LMT
+ tz.offset :o1, -21600, 0, :CST
+ tz.offset :o2, -21600, 3600, :CDT
+
+ tz.transition 1918, 10, :o1, 52312429831, 21600
+ tz.transition 1973, 11, :o2, 123055200
+ tz.transition 1974, 2, :o1, 130914000
+ tz.transition 1983, 5, :o2, 422344800
+ tz.transition 1983, 9, :o1, 433054800
+ tz.transition 1991, 3, :o2, 669708000
+ tz.transition 1991, 9, :o1, 684219600
+ tz.transition 2006, 4, :o2, 1146376800
+ tz.transition 2006, 10, :o1, 1159678800
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Halifax.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Halifax.rb
new file mode 100644
index 000000000..d25ae775b
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Halifax.rb
@@ -0,0 +1,274 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module America
+ module Halifax
+ include TimezoneDefinition
+
+ timezone 'America/Halifax' do |tz|
+ tz.offset :o0, -15264, 0, :LMT
+ tz.offset :o1, -14400, 0, :AST
+ tz.offset :o2, -14400, 3600, :ADT
+ tz.offset :o3, -14400, 3600, :AWT
+ tz.offset :o4, -14400, 3600, :APT
+
+ tz.transition 1902, 6, :o1, 724774703, 300
+ tz.transition 1916, 4, :o2, 7262864, 3
+ tz.transition 1916, 10, :o1, 19369101, 8
+ tz.transition 1918, 4, :o2, 9686791, 4
+ tz.transition 1918, 10, :o1, 58125545, 24
+ tz.transition 1920, 5, :o2, 7267361, 3
+ tz.transition 1920, 8, :o1, 19380525, 8
+ tz.transition 1921, 5, :o2, 7268447, 3
+ tz.transition 1921, 9, :o1, 19383501, 8
+ tz.transition 1922, 4, :o2, 7269524, 3
+ tz.transition 1922, 9, :o1, 19386421, 8
+ tz.transition 1923, 5, :o2, 7270637, 3
+ tz.transition 1923, 9, :o1, 19389333, 8
+ tz.transition 1924, 5, :o2, 7271729, 3
+ tz.transition 1924, 9, :o1, 19392349, 8
+ tz.transition 1925, 5, :o2, 7272821, 3
+ tz.transition 1925, 9, :o1, 19395373, 8
+ tz.transition 1926, 5, :o2, 7273955, 3
+ tz.transition 1926, 9, :o1, 19398173, 8
+ tz.transition 1927, 5, :o2, 7275005, 3
+ tz.transition 1927, 9, :o1, 19401197, 8
+ tz.transition 1928, 5, :o2, 7276139, 3
+ tz.transition 1928, 9, :o1, 19403989, 8
+ tz.transition 1929, 5, :o2, 7277231, 3
+ tz.transition 1929, 9, :o1, 19406861, 8
+ tz.transition 1930, 5, :o2, 7278323, 3
+ tz.transition 1930, 9, :o1, 19409877, 8
+ tz.transition 1931, 5, :o2, 7279415, 3
+ tz.transition 1931, 9, :o1, 19412901, 8
+ tz.transition 1932, 5, :o2, 7280486, 3
+ tz.transition 1932, 9, :o1, 19415813, 8
+ tz.transition 1933, 4, :o2, 7281578, 3
+ tz.transition 1933, 10, :o1, 19418781, 8
+ tz.transition 1934, 5, :o2, 7282733, 3
+ tz.transition 1934, 9, :o1, 19421573, 8
+ tz.transition 1935, 6, :o2, 7283867, 3
+ tz.transition 1935, 9, :o1, 19424605, 8
+ tz.transition 1936, 6, :o2, 7284962, 3
+ tz.transition 1936, 9, :o1, 19427405, 8
+ tz.transition 1937, 5, :o2, 7285967, 3
+ tz.transition 1937, 9, :o1, 19430429, 8
+ tz.transition 1938, 5, :o2, 7287059, 3
+ tz.transition 1938, 9, :o1, 19433341, 8
+ tz.transition 1939, 5, :o2, 7288235, 3
+ tz.transition 1939, 9, :o1, 19436253, 8
+ tz.transition 1940, 5, :o2, 7289264, 3
+ tz.transition 1940, 9, :o1, 19439221, 8
+ tz.transition 1941, 5, :o2, 7290356, 3
+ tz.transition 1941, 9, :o1, 19442133, 8
+ tz.transition 1942, 2, :o3, 9721599, 4
+ tz.transition 1945, 8, :o4, 58360379, 24
+ tz.transition 1945, 9, :o1, 58361489, 24
+ tz.transition 1946, 4, :o2, 9727755, 4
+ tz.transition 1946, 9, :o1, 58370225, 24
+ tz.transition 1947, 4, :o2, 9729211, 4
+ tz.transition 1947, 9, :o1, 58378961, 24
+ tz.transition 1948, 4, :o2, 9730667, 4
+ tz.transition 1948, 9, :o1, 58387697, 24
+ tz.transition 1949, 4, :o2, 9732123, 4
+ tz.transition 1949, 9, :o1, 58396433, 24
+ tz.transition 1951, 4, :o2, 9735063, 4
+ tz.transition 1951, 9, :o1, 58414073, 24
+ tz.transition 1952, 4, :o2, 9736519, 4
+ tz.transition 1952, 9, :o1, 58422809, 24
+ tz.transition 1953, 4, :o2, 9737975, 4
+ tz.transition 1953, 9, :o1, 58431545, 24
+ tz.transition 1954, 4, :o2, 9739431, 4
+ tz.transition 1954, 9, :o1, 58440281, 24
+ tz.transition 1956, 4, :o2, 9742371, 4
+ tz.transition 1956, 9, :o1, 58457921, 24
+ tz.transition 1957, 4, :o2, 9743827, 4
+ tz.transition 1957, 9, :o1, 58466657, 24
+ tz.transition 1958, 4, :o2, 9745283, 4
+ tz.transition 1958, 9, :o1, 58475393, 24
+ tz.transition 1959, 4, :o2, 9746739, 4
+ tz.transition 1959, 9, :o1, 58484129, 24
+ tz.transition 1962, 4, :o2, 9751135, 4
+ tz.transition 1962, 10, :o1, 58511177, 24
+ tz.transition 1963, 4, :o2, 9752591, 4
+ tz.transition 1963, 10, :o1, 58519913, 24
+ tz.transition 1964, 4, :o2, 9754047, 4
+ tz.transition 1964, 10, :o1, 58528649, 24
+ tz.transition 1965, 4, :o2, 9755503, 4
+ tz.transition 1965, 10, :o1, 58537553, 24
+ tz.transition 1966, 4, :o2, 9756959, 4
+ tz.transition 1966, 10, :o1, 58546289, 24
+ tz.transition 1967, 4, :o2, 9758443, 4
+ tz.transition 1967, 10, :o1, 58555025, 24
+ tz.transition 1968, 4, :o2, 9759899, 4
+ tz.transition 1968, 10, :o1, 58563761, 24
+ tz.transition 1969, 4, :o2, 9761355, 4
+ tz.transition 1969, 10, :o1, 58572497, 24
+ tz.transition 1970, 4, :o2, 9957600
+ tz.transition 1970, 10, :o1, 25678800
+ tz.transition 1971, 4, :o2, 41407200
+ tz.transition 1971, 10, :o1, 57733200
+ tz.transition 1972, 4, :o2, 73461600
+ tz.transition 1972, 10, :o1, 89182800
+ tz.transition 1973, 4, :o2, 104911200
+ tz.transition 1973, 10, :o1, 120632400
+ tz.transition 1974, 4, :o2, 136360800
+ tz.transition 1974, 10, :o1, 152082000
+ tz.transition 1975, 4, :o2, 167810400
+ tz.transition 1975, 10, :o1, 183531600
+ tz.transition 1976, 4, :o2, 199260000
+ tz.transition 1976, 10, :o1, 215586000
+ tz.transition 1977, 4, :o2, 230709600
+ tz.transition 1977, 10, :o1, 247035600
+ tz.transition 1978, 4, :o2, 262764000
+ tz.transition 1978, 10, :o1, 278485200
+ tz.transition 1979, 4, :o2, 294213600
+ tz.transition 1979, 10, :o1, 309934800
+ tz.transition 1980, 4, :o2, 325663200
+ tz.transition 1980, 10, :o1, 341384400
+ tz.transition 1981, 4, :o2, 357112800
+ tz.transition 1981, 10, :o1, 372834000
+ tz.transition 1982, 4, :o2, 388562400
+ tz.transition 1982, 10, :o1, 404888400
+ tz.transition 1983, 4, :o2, 420012000
+ tz.transition 1983, 10, :o1, 436338000
+ tz.transition 1984, 4, :o2, 452066400
+ tz.transition 1984, 10, :o1, 467787600
+ tz.transition 1985, 4, :o2, 483516000
+ tz.transition 1985, 10, :o1, 499237200
+ tz.transition 1986, 4, :o2, 514965600
+ tz.transition 1986, 10, :o1, 530686800
+ tz.transition 1987, 4, :o2, 544600800
+ tz.transition 1987, 10, :o1, 562136400
+ tz.transition 1988, 4, :o2, 576050400
+ tz.transition 1988, 10, :o1, 594190800
+ tz.transition 1989, 4, :o2, 607500000
+ tz.transition 1989, 10, :o1, 625640400
+ tz.transition 1990, 4, :o2, 638949600
+ tz.transition 1990, 10, :o1, 657090000
+ tz.transition 1991, 4, :o2, 671004000
+ tz.transition 1991, 10, :o1, 688539600
+ tz.transition 1992, 4, :o2, 702453600
+ tz.transition 1992, 10, :o1, 719989200
+ tz.transition 1993, 4, :o2, 733903200
+ tz.transition 1993, 10, :o1, 752043600
+ tz.transition 1994, 4, :o2, 765352800
+ tz.transition 1994, 10, :o1, 783493200
+ tz.transition 1995, 4, :o2, 796802400
+ tz.transition 1995, 10, :o1, 814942800
+ tz.transition 1996, 4, :o2, 828856800
+ tz.transition 1996, 10, :o1, 846392400
+ tz.transition 1997, 4, :o2, 860306400
+ tz.transition 1997, 10, :o1, 877842000
+ tz.transition 1998, 4, :o2, 891756000
+ tz.transition 1998, 10, :o1, 909291600
+ tz.transition 1999, 4, :o2, 923205600
+ tz.transition 1999, 10, :o1, 941346000
+ tz.transition 2000, 4, :o2, 954655200
+ tz.transition 2000, 10, :o1, 972795600
+ tz.transition 2001, 4, :o2, 986104800
+ tz.transition 2001, 10, :o1, 1004245200
+ tz.transition 2002, 4, :o2, 1018159200
+ tz.transition 2002, 10, :o1, 1035694800
+ tz.transition 2003, 4, :o2, 1049608800
+ tz.transition 2003, 10, :o1, 1067144400
+ tz.transition 2004, 4, :o2, 1081058400
+ tz.transition 2004, 10, :o1, 1099198800
+ tz.transition 2005, 4, :o2, 1112508000
+ tz.transition 2005, 10, :o1, 1130648400
+ tz.transition 2006, 4, :o2, 1143957600
+ tz.transition 2006, 10, :o1, 1162098000
+ tz.transition 2007, 3, :o2, 1173592800
+ tz.transition 2007, 11, :o1, 1194152400
+ tz.transition 2008, 3, :o2, 1205042400
+ tz.transition 2008, 11, :o1, 1225602000
+ tz.transition 2009, 3, :o2, 1236492000
+ tz.transition 2009, 11, :o1, 1257051600
+ tz.transition 2010, 3, :o2, 1268546400
+ tz.transition 2010, 11, :o1, 1289106000
+ tz.transition 2011, 3, :o2, 1299996000
+ tz.transition 2011, 11, :o1, 1320555600
+ tz.transition 2012, 3, :o2, 1331445600
+ tz.transition 2012, 11, :o1, 1352005200
+ tz.transition 2013, 3, :o2, 1362895200
+ tz.transition 2013, 11, :o1, 1383454800
+ tz.transition 2014, 3, :o2, 1394344800
+ tz.transition 2014, 11, :o1, 1414904400
+ tz.transition 2015, 3, :o2, 1425794400
+ tz.transition 2015, 11, :o1, 1446354000
+ tz.transition 2016, 3, :o2, 1457848800
+ tz.transition 2016, 11, :o1, 1478408400
+ tz.transition 2017, 3, :o2, 1489298400
+ tz.transition 2017, 11, :o1, 1509858000
+ tz.transition 2018, 3, :o2, 1520748000
+ tz.transition 2018, 11, :o1, 1541307600
+ tz.transition 2019, 3, :o2, 1552197600
+ tz.transition 2019, 11, :o1, 1572757200
+ tz.transition 2020, 3, :o2, 1583647200
+ tz.transition 2020, 11, :o1, 1604206800
+ tz.transition 2021, 3, :o2, 1615701600
+ tz.transition 2021, 11, :o1, 1636261200
+ tz.transition 2022, 3, :o2, 1647151200
+ tz.transition 2022, 11, :o1, 1667710800
+ tz.transition 2023, 3, :o2, 1678600800
+ tz.transition 2023, 11, :o1, 1699160400
+ tz.transition 2024, 3, :o2, 1710050400
+ tz.transition 2024, 11, :o1, 1730610000
+ tz.transition 2025, 3, :o2, 1741500000
+ tz.transition 2025, 11, :o1, 1762059600
+ tz.transition 2026, 3, :o2, 1772949600
+ tz.transition 2026, 11, :o1, 1793509200
+ tz.transition 2027, 3, :o2, 1805004000
+ tz.transition 2027, 11, :o1, 1825563600
+ tz.transition 2028, 3, :o2, 1836453600
+ tz.transition 2028, 11, :o1, 1857013200
+ tz.transition 2029, 3, :o2, 1867903200
+ tz.transition 2029, 11, :o1, 1888462800
+ tz.transition 2030, 3, :o2, 1899352800
+ tz.transition 2030, 11, :o1, 1919912400
+ tz.transition 2031, 3, :o2, 1930802400
+ tz.transition 2031, 11, :o1, 1951362000
+ tz.transition 2032, 3, :o2, 1962856800
+ tz.transition 2032, 11, :o1, 1983416400
+ tz.transition 2033, 3, :o2, 1994306400
+ tz.transition 2033, 11, :o1, 2014866000
+ tz.transition 2034, 3, :o2, 2025756000
+ tz.transition 2034, 11, :o1, 2046315600
+ tz.transition 2035, 3, :o2, 2057205600
+ tz.transition 2035, 11, :o1, 2077765200
+ tz.transition 2036, 3, :o2, 2088655200
+ tz.transition 2036, 11, :o1, 2109214800
+ tz.transition 2037, 3, :o2, 2120104800
+ tz.transition 2037, 11, :o1, 2140664400
+ tz.transition 2038, 3, :o2, 9861987, 4
+ tz.transition 2038, 11, :o1, 59177633, 24
+ tz.transition 2039, 3, :o2, 9863443, 4
+ tz.transition 2039, 11, :o1, 59186369, 24
+ tz.transition 2040, 3, :o2, 9864899, 4
+ tz.transition 2040, 11, :o1, 59195105, 24
+ tz.transition 2041, 3, :o2, 9866355, 4
+ tz.transition 2041, 11, :o1, 59203841, 24
+ tz.transition 2042, 3, :o2, 9867811, 4
+ tz.transition 2042, 11, :o1, 59212577, 24
+ tz.transition 2043, 3, :o2, 9869267, 4
+ tz.transition 2043, 11, :o1, 59221313, 24
+ tz.transition 2044, 3, :o2, 9870751, 4
+ tz.transition 2044, 11, :o1, 59230217, 24
+ tz.transition 2045, 3, :o2, 9872207, 4
+ tz.transition 2045, 11, :o1, 59238953, 24
+ tz.transition 2046, 3, :o2, 9873663, 4
+ tz.transition 2046, 11, :o1, 59247689, 24
+ tz.transition 2047, 3, :o2, 9875119, 4
+ tz.transition 2047, 11, :o1, 59256425, 24
+ tz.transition 2048, 3, :o2, 9876575, 4
+ tz.transition 2048, 11, :o1, 59265161, 24
+ tz.transition 2049, 3, :o2, 9878059, 4
+ tz.transition 2049, 11, :o1, 59274065, 24
+ tz.transition 2050, 3, :o2, 9879515, 4
+ tz.transition 2050, 11, :o1, 59282801, 24
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Indiana/Indianapolis.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Indiana/Indianapolis.rb
new file mode 100644
index 000000000..f1430f6c2
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Indiana/Indianapolis.rb
@@ -0,0 +1,149 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module America
+ module Indiana
+ module Indianapolis
+ include TimezoneDefinition
+
+ timezone 'America/Indiana/Indianapolis' do |tz|
+ tz.offset :o0, -20678, 0, :LMT
+ tz.offset :o1, -21600, 0, :CST
+ tz.offset :o2, -21600, 3600, :CDT
+ tz.offset :o3, -21600, 3600, :CWT
+ tz.offset :o4, -21600, 3600, :CPT
+ tz.offset :o5, -18000, 0, :EST
+ tz.offset :o6, -18000, 3600, :EDT
+
+ tz.transition 1883, 11, :o1, 9636533, 4
+ tz.transition 1918, 3, :o2, 14530103, 6
+ tz.transition 1918, 10, :o1, 58125451, 24
+ tz.transition 1919, 3, :o2, 14532287, 6
+ tz.transition 1919, 10, :o1, 58134187, 24
+ tz.transition 1941, 6, :o2, 14581007, 6
+ tz.transition 1941, 9, :o1, 58326379, 24
+ tz.transition 1942, 2, :o3, 14582399, 6
+ tz.transition 1945, 8, :o4, 58360379, 24
+ tz.transition 1945, 9, :o1, 58361491, 24
+ tz.transition 1946, 4, :o2, 14591633, 6
+ tz.transition 1946, 9, :o1, 58370227, 24
+ tz.transition 1947, 4, :o2, 14593817, 6
+ tz.transition 1947, 9, :o1, 58378963, 24
+ tz.transition 1948, 4, :o2, 14596001, 6
+ tz.transition 1948, 9, :o1, 58387699, 24
+ tz.transition 1949, 4, :o2, 14598185, 6
+ tz.transition 1949, 9, :o1, 58396435, 24
+ tz.transition 1950, 4, :o2, 14600411, 6
+ tz.transition 1950, 9, :o1, 58405171, 24
+ tz.transition 1951, 4, :o2, 14602595, 6
+ tz.transition 1951, 9, :o1, 58414075, 24
+ tz.transition 1952, 4, :o2, 14604779, 6
+ tz.transition 1952, 9, :o1, 58422811, 24
+ tz.transition 1953, 4, :o2, 14606963, 6
+ tz.transition 1953, 9, :o1, 58431547, 24
+ tz.transition 1954, 4, :o2, 14609147, 6
+ tz.transition 1954, 9, :o1, 58440283, 24
+ tz.transition 1955, 4, :o5, 14611331, 6
+ tz.transition 1957, 9, :o1, 58466659, 24
+ tz.transition 1958, 4, :o5, 14617925, 6
+ tz.transition 1969, 4, :o6, 58568131, 24
+ tz.transition 1969, 10, :o5, 9762083, 4
+ tz.transition 1970, 4, :o6, 9961200
+ tz.transition 1970, 10, :o5, 25682400
+ tz.transition 2006, 4, :o6, 1143961200
+ tz.transition 2006, 10, :o5, 1162101600
+ tz.transition 2007, 3, :o6, 1173596400
+ tz.transition 2007, 11, :o5, 1194156000
+ tz.transition 2008, 3, :o6, 1205046000
+ tz.transition 2008, 11, :o5, 1225605600
+ tz.transition 2009, 3, :o6, 1236495600
+ tz.transition 2009, 11, :o5, 1257055200
+ tz.transition 2010, 3, :o6, 1268550000
+ tz.transition 2010, 11, :o5, 1289109600
+ tz.transition 2011, 3, :o6, 1299999600
+ tz.transition 2011, 11, :o5, 1320559200
+ tz.transition 2012, 3, :o6, 1331449200
+ tz.transition 2012, 11, :o5, 1352008800
+ tz.transition 2013, 3, :o6, 1362898800
+ tz.transition 2013, 11, :o5, 1383458400
+ tz.transition 2014, 3, :o6, 1394348400
+ tz.transition 2014, 11, :o5, 1414908000
+ tz.transition 2015, 3, :o6, 1425798000
+ tz.transition 2015, 11, :o5, 1446357600
+ tz.transition 2016, 3, :o6, 1457852400
+ tz.transition 2016, 11, :o5, 1478412000
+ tz.transition 2017, 3, :o6, 1489302000
+ tz.transition 2017, 11, :o5, 1509861600
+ tz.transition 2018, 3, :o6, 1520751600
+ tz.transition 2018, 11, :o5, 1541311200
+ tz.transition 2019, 3, :o6, 1552201200
+ tz.transition 2019, 11, :o5, 1572760800
+ tz.transition 2020, 3, :o6, 1583650800
+ tz.transition 2020, 11, :o5, 1604210400
+ tz.transition 2021, 3, :o6, 1615705200
+ tz.transition 2021, 11, :o5, 1636264800
+ tz.transition 2022, 3, :o6, 1647154800
+ tz.transition 2022, 11, :o5, 1667714400
+ tz.transition 2023, 3, :o6, 1678604400
+ tz.transition 2023, 11, :o5, 1699164000
+ tz.transition 2024, 3, :o6, 1710054000
+ tz.transition 2024, 11, :o5, 1730613600
+ tz.transition 2025, 3, :o6, 1741503600
+ tz.transition 2025, 11, :o5, 1762063200
+ tz.transition 2026, 3, :o6, 1772953200
+ tz.transition 2026, 11, :o5, 1793512800
+ tz.transition 2027, 3, :o6, 1805007600
+ tz.transition 2027, 11, :o5, 1825567200
+ tz.transition 2028, 3, :o6, 1836457200
+ tz.transition 2028, 11, :o5, 1857016800
+ tz.transition 2029, 3, :o6, 1867906800
+ tz.transition 2029, 11, :o5, 1888466400
+ tz.transition 2030, 3, :o6, 1899356400
+ tz.transition 2030, 11, :o5, 1919916000
+ tz.transition 2031, 3, :o6, 1930806000
+ tz.transition 2031, 11, :o5, 1951365600
+ tz.transition 2032, 3, :o6, 1962860400
+ tz.transition 2032, 11, :o5, 1983420000
+ tz.transition 2033, 3, :o6, 1994310000
+ tz.transition 2033, 11, :o5, 2014869600
+ tz.transition 2034, 3, :o6, 2025759600
+ tz.transition 2034, 11, :o5, 2046319200
+ tz.transition 2035, 3, :o6, 2057209200
+ tz.transition 2035, 11, :o5, 2077768800
+ tz.transition 2036, 3, :o6, 2088658800
+ tz.transition 2036, 11, :o5, 2109218400
+ tz.transition 2037, 3, :o6, 2120108400
+ tz.transition 2037, 11, :o5, 2140668000
+ tz.transition 2038, 3, :o6, 59171923, 24
+ tz.transition 2038, 11, :o5, 9862939, 4
+ tz.transition 2039, 3, :o6, 59180659, 24
+ tz.transition 2039, 11, :o5, 9864395, 4
+ tz.transition 2040, 3, :o6, 59189395, 24
+ tz.transition 2040, 11, :o5, 9865851, 4
+ tz.transition 2041, 3, :o6, 59198131, 24
+ tz.transition 2041, 11, :o5, 9867307, 4
+ tz.transition 2042, 3, :o6, 59206867, 24
+ tz.transition 2042, 11, :o5, 9868763, 4
+ tz.transition 2043, 3, :o6, 59215603, 24
+ tz.transition 2043, 11, :o5, 9870219, 4
+ tz.transition 2044, 3, :o6, 59224507, 24
+ tz.transition 2044, 11, :o5, 9871703, 4
+ tz.transition 2045, 3, :o6, 59233243, 24
+ tz.transition 2045, 11, :o5, 9873159, 4
+ tz.transition 2046, 3, :o6, 59241979, 24
+ tz.transition 2046, 11, :o5, 9874615, 4
+ tz.transition 2047, 3, :o6, 59250715, 24
+ tz.transition 2047, 11, :o5, 9876071, 4
+ tz.transition 2048, 3, :o6, 59259451, 24
+ tz.transition 2048, 11, :o5, 9877527, 4
+ tz.transition 2049, 3, :o6, 59268355, 24
+ tz.transition 2049, 11, :o5, 9879011, 4
+ tz.transition 2050, 3, :o6, 59277091, 24
+ tz.transition 2050, 11, :o5, 9880467, 4
+ end
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Juneau.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Juneau.rb
new file mode 100644
index 000000000..f646f3f54
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Juneau.rb
@@ -0,0 +1,194 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module America
+ module Juneau
+ include TimezoneDefinition
+
+ timezone 'America/Juneau' do |tz|
+ tz.offset :o0, 54139, 0, :LMT
+ tz.offset :o1, -32261, 0, :LMT
+ tz.offset :o2, -28800, 0, :PST
+ tz.offset :o3, -28800, 3600, :PWT
+ tz.offset :o4, -28800, 3600, :PPT
+ tz.offset :o5, -28800, 3600, :PDT
+ tz.offset :o6, -32400, 0, :YST
+ tz.offset :o7, -32400, 0, :AKST
+ tz.offset :o8, -32400, 3600, :AKDT
+
+ tz.transition 1867, 10, :o1, 207641393861, 86400
+ tz.transition 1900, 8, :o2, 208677805061, 86400
+ tz.transition 1942, 2, :o3, 29164799, 12
+ tz.transition 1945, 8, :o4, 58360379, 24
+ tz.transition 1945, 9, :o2, 19453831, 8
+ tz.transition 1969, 4, :o5, 29284067, 12
+ tz.transition 1969, 10, :o2, 19524167, 8
+ tz.transition 1970, 4, :o5, 9972000
+ tz.transition 1970, 10, :o2, 25693200
+ tz.transition 1971, 4, :o5, 41421600
+ tz.transition 1971, 10, :o2, 57747600
+ tz.transition 1972, 4, :o5, 73476000
+ tz.transition 1972, 10, :o2, 89197200
+ tz.transition 1973, 4, :o5, 104925600
+ tz.transition 1973, 10, :o2, 120646800
+ tz.transition 1974, 1, :o5, 126698400
+ tz.transition 1974, 10, :o2, 152096400
+ tz.transition 1975, 2, :o5, 162381600
+ tz.transition 1975, 10, :o2, 183546000
+ tz.transition 1976, 4, :o5, 199274400
+ tz.transition 1976, 10, :o2, 215600400
+ tz.transition 1977, 4, :o5, 230724000
+ tz.transition 1977, 10, :o2, 247050000
+ tz.transition 1978, 4, :o5, 262778400
+ tz.transition 1978, 10, :o2, 278499600
+ tz.transition 1979, 4, :o5, 294228000
+ tz.transition 1979, 10, :o2, 309949200
+ tz.transition 1980, 4, :o5, 325677600
+ tz.transition 1980, 10, :o2, 341398800
+ tz.transition 1981, 4, :o5, 357127200
+ tz.transition 1981, 10, :o2, 372848400
+ tz.transition 1982, 4, :o5, 388576800
+ tz.transition 1982, 10, :o2, 404902800
+ tz.transition 1983, 4, :o5, 420026400
+ tz.transition 1983, 10, :o6, 436352400
+ tz.transition 1983, 11, :o7, 439030800
+ tz.transition 1984, 4, :o8, 452084400
+ tz.transition 1984, 10, :o7, 467805600
+ tz.transition 1985, 4, :o8, 483534000
+ tz.transition 1985, 10, :o7, 499255200
+ tz.transition 1986, 4, :o8, 514983600
+ tz.transition 1986, 10, :o7, 530704800
+ tz.transition 1987, 4, :o8, 544618800
+ tz.transition 1987, 10, :o7, 562154400
+ tz.transition 1988, 4, :o8, 576068400
+ tz.transition 1988, 10, :o7, 594208800
+ tz.transition 1989, 4, :o8, 607518000
+ tz.transition 1989, 10, :o7, 625658400
+ tz.transition 1990, 4, :o8, 638967600
+ tz.transition 1990, 10, :o7, 657108000
+ tz.transition 1991, 4, :o8, 671022000
+ tz.transition 1991, 10, :o7, 688557600
+ tz.transition 1992, 4, :o8, 702471600
+ tz.transition 1992, 10, :o7, 720007200
+ tz.transition 1993, 4, :o8, 733921200
+ tz.transition 1993, 10, :o7, 752061600
+ tz.transition 1994, 4, :o8, 765370800
+ tz.transition 1994, 10, :o7, 783511200
+ tz.transition 1995, 4, :o8, 796820400
+ tz.transition 1995, 10, :o7, 814960800
+ tz.transition 1996, 4, :o8, 828874800
+ tz.transition 1996, 10, :o7, 846410400
+ tz.transition 1997, 4, :o8, 860324400
+ tz.transition 1997, 10, :o7, 877860000
+ tz.transition 1998, 4, :o8, 891774000
+ tz.transition 1998, 10, :o7, 909309600
+ tz.transition 1999, 4, :o8, 923223600
+ tz.transition 1999, 10, :o7, 941364000
+ tz.transition 2000, 4, :o8, 954673200
+ tz.transition 2000, 10, :o7, 972813600
+ tz.transition 2001, 4, :o8, 986122800
+ tz.transition 2001, 10, :o7, 1004263200
+ tz.transition 2002, 4, :o8, 1018177200
+ tz.transition 2002, 10, :o7, 1035712800
+ tz.transition 2003, 4, :o8, 1049626800
+ tz.transition 2003, 10, :o7, 1067162400
+ tz.transition 2004, 4, :o8, 1081076400
+ tz.transition 2004, 10, :o7, 1099216800
+ tz.transition 2005, 4, :o8, 1112526000
+ tz.transition 2005, 10, :o7, 1130666400
+ tz.transition 2006, 4, :o8, 1143975600
+ tz.transition 2006, 10, :o7, 1162116000
+ tz.transition 2007, 3, :o8, 1173610800
+ tz.transition 2007, 11, :o7, 1194170400
+ tz.transition 2008, 3, :o8, 1205060400
+ tz.transition 2008, 11, :o7, 1225620000
+ tz.transition 2009, 3, :o8, 1236510000
+ tz.transition 2009, 11, :o7, 1257069600
+ tz.transition 2010, 3, :o8, 1268564400
+ tz.transition 2010, 11, :o7, 1289124000
+ tz.transition 2011, 3, :o8, 1300014000
+ tz.transition 2011, 11, :o7, 1320573600
+ tz.transition 2012, 3, :o8, 1331463600
+ tz.transition 2012, 11, :o7, 1352023200
+ tz.transition 2013, 3, :o8, 1362913200
+ tz.transition 2013, 11, :o7, 1383472800
+ tz.transition 2014, 3, :o8, 1394362800
+ tz.transition 2014, 11, :o7, 1414922400
+ tz.transition 2015, 3, :o8, 1425812400
+ tz.transition 2015, 11, :o7, 1446372000
+ tz.transition 2016, 3, :o8, 1457866800
+ tz.transition 2016, 11, :o7, 1478426400
+ tz.transition 2017, 3, :o8, 1489316400
+ tz.transition 2017, 11, :o7, 1509876000
+ tz.transition 2018, 3, :o8, 1520766000
+ tz.transition 2018, 11, :o7, 1541325600
+ tz.transition 2019, 3, :o8, 1552215600
+ tz.transition 2019, 11, :o7, 1572775200
+ tz.transition 2020, 3, :o8, 1583665200
+ tz.transition 2020, 11, :o7, 1604224800
+ tz.transition 2021, 3, :o8, 1615719600
+ tz.transition 2021, 11, :o7, 1636279200
+ tz.transition 2022, 3, :o8, 1647169200
+ tz.transition 2022, 11, :o7, 1667728800
+ tz.transition 2023, 3, :o8, 1678618800
+ tz.transition 2023, 11, :o7, 1699178400
+ tz.transition 2024, 3, :o8, 1710068400
+ tz.transition 2024, 11, :o7, 1730628000
+ tz.transition 2025, 3, :o8, 1741518000
+ tz.transition 2025, 11, :o7, 1762077600
+ tz.transition 2026, 3, :o8, 1772967600
+ tz.transition 2026, 11, :o7, 1793527200
+ tz.transition 2027, 3, :o8, 1805022000
+ tz.transition 2027, 11, :o7, 1825581600
+ tz.transition 2028, 3, :o8, 1836471600
+ tz.transition 2028, 11, :o7, 1857031200
+ tz.transition 2029, 3, :o8, 1867921200
+ tz.transition 2029, 11, :o7, 1888480800
+ tz.transition 2030, 3, :o8, 1899370800
+ tz.transition 2030, 11, :o7, 1919930400
+ tz.transition 2031, 3, :o8, 1930820400
+ tz.transition 2031, 11, :o7, 1951380000
+ tz.transition 2032, 3, :o8, 1962874800
+ tz.transition 2032, 11, :o7, 1983434400
+ tz.transition 2033, 3, :o8, 1994324400
+ tz.transition 2033, 11, :o7, 2014884000
+ tz.transition 2034, 3, :o8, 2025774000
+ tz.transition 2034, 11, :o7, 2046333600
+ tz.transition 2035, 3, :o8, 2057223600
+ tz.transition 2035, 11, :o7, 2077783200
+ tz.transition 2036, 3, :o8, 2088673200
+ tz.transition 2036, 11, :o7, 2109232800
+ tz.transition 2037, 3, :o8, 2120122800
+ tz.transition 2037, 11, :o7, 2140682400
+ tz.transition 2038, 3, :o8, 59171927, 24
+ tz.transition 2038, 11, :o7, 29588819, 12
+ tz.transition 2039, 3, :o8, 59180663, 24
+ tz.transition 2039, 11, :o7, 29593187, 12
+ tz.transition 2040, 3, :o8, 59189399, 24
+ tz.transition 2040, 11, :o7, 29597555, 12
+ tz.transition 2041, 3, :o8, 59198135, 24
+ tz.transition 2041, 11, :o7, 29601923, 12
+ tz.transition 2042, 3, :o8, 59206871, 24
+ tz.transition 2042, 11, :o7, 29606291, 12
+ tz.transition 2043, 3, :o8, 59215607, 24
+ tz.transition 2043, 11, :o7, 29610659, 12
+ tz.transition 2044, 3, :o8, 59224511, 24
+ tz.transition 2044, 11, :o7, 29615111, 12
+ tz.transition 2045, 3, :o8, 59233247, 24
+ tz.transition 2045, 11, :o7, 29619479, 12
+ tz.transition 2046, 3, :o8, 59241983, 24
+ tz.transition 2046, 11, :o7, 29623847, 12
+ tz.transition 2047, 3, :o8, 59250719, 24
+ tz.transition 2047, 11, :o7, 29628215, 12
+ tz.transition 2048, 3, :o8, 59259455, 24
+ tz.transition 2048, 11, :o7, 29632583, 12
+ tz.transition 2049, 3, :o8, 59268359, 24
+ tz.transition 2049, 11, :o7, 29637035, 12
+ tz.transition 2050, 3, :o8, 59277095, 24
+ tz.transition 2050, 11, :o7, 29641403, 12
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/La_Paz.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/La_Paz.rb
new file mode 100644
index 000000000..45c907899
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/La_Paz.rb
@@ -0,0 +1,22 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module America
+ module La_Paz
+ include TimezoneDefinition
+
+ timezone 'America/La_Paz' do |tz|
+ tz.offset :o0, -16356, 0, :LMT
+ tz.offset :o1, -16356, 0, :CMT
+ tz.offset :o2, -16356, 3600, :BOST
+ tz.offset :o3, -14400, 0, :BOT
+
+ tz.transition 1890, 1, :o1, 17361854563, 7200
+ tz.transition 1931, 10, :o2, 17471733763, 7200
+ tz.transition 1932, 3, :o3, 17472871063, 7200
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Lima.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Lima.rb
new file mode 100644
index 000000000..af68ac29f
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Lima.rb
@@ -0,0 +1,35 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module America
+ module Lima
+ include TimezoneDefinition
+
+ timezone 'America/Lima' do |tz|
+ tz.offset :o0, -18492, 0, :LMT
+ tz.offset :o1, -18516, 0, :LMT
+ tz.offset :o2, -18000, 0, :PET
+ tz.offset :o3, -18000, 3600, :PEST
+
+ tz.transition 1890, 1, :o1, 17361854741, 7200
+ tz.transition 1908, 7, :o2, 17410685143, 7200
+ tz.transition 1938, 1, :o3, 58293593, 24
+ tz.transition 1938, 4, :o2, 7286969, 3
+ tz.transition 1938, 9, :o3, 58300001, 24
+ tz.transition 1939, 3, :o2, 7288046, 3
+ tz.transition 1939, 9, :o3, 58308737, 24
+ tz.transition 1940, 3, :o2, 7289138, 3
+ tz.transition 1986, 1, :o3, 504939600
+ tz.transition 1986, 4, :o2, 512712000
+ tz.transition 1987, 1, :o3, 536475600
+ tz.transition 1987, 4, :o2, 544248000
+ tz.transition 1990, 1, :o3, 631170000
+ tz.transition 1990, 4, :o2, 638942400
+ tz.transition 1994, 1, :o3, 757400400
+ tz.transition 1994, 4, :o2, 765172800
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Los_Angeles.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Los_Angeles.rb
new file mode 100644
index 000000000..16007fd67
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Los_Angeles.rb
@@ -0,0 +1,232 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module America
+ module Los_Angeles
+ include TimezoneDefinition
+
+ timezone 'America/Los_Angeles' do |tz|
+ tz.offset :o0, -28378, 0, :LMT
+ tz.offset :o1, -28800, 0, :PST
+ tz.offset :o2, -28800, 3600, :PDT
+ tz.offset :o3, -28800, 3600, :PWT
+ tz.offset :o4, -28800, 3600, :PPT
+
+ tz.transition 1883, 11, :o1, 7227400, 3
+ tz.transition 1918, 3, :o2, 29060207, 12
+ tz.transition 1918, 10, :o1, 19375151, 8
+ tz.transition 1919, 3, :o2, 29064575, 12
+ tz.transition 1919, 10, :o1, 19378063, 8
+ tz.transition 1942, 2, :o3, 29164799, 12
+ tz.transition 1945, 8, :o4, 58360379, 24
+ tz.transition 1945, 9, :o1, 19453831, 8
+ tz.transition 1948, 3, :o2, 29191499, 12
+ tz.transition 1949, 1, :o1, 19463343, 8
+ tz.transition 1950, 4, :o2, 29200823, 12
+ tz.transition 1950, 9, :o1, 19468391, 8
+ tz.transition 1951, 4, :o2, 29205191, 12
+ tz.transition 1951, 9, :o1, 19471359, 8
+ tz.transition 1952, 4, :o2, 29209559, 12
+ tz.transition 1952, 9, :o1, 19474271, 8
+ tz.transition 1953, 4, :o2, 29213927, 12
+ tz.transition 1953, 9, :o1, 19477183, 8
+ tz.transition 1954, 4, :o2, 29218295, 12
+ tz.transition 1954, 9, :o1, 19480095, 8
+ tz.transition 1955, 4, :o2, 29222663, 12
+ tz.transition 1955, 9, :o1, 19483007, 8
+ tz.transition 1956, 4, :o2, 29227115, 12
+ tz.transition 1956, 9, :o1, 19485975, 8
+ tz.transition 1957, 4, :o2, 29231483, 12
+ tz.transition 1957, 9, :o1, 19488887, 8
+ tz.transition 1958, 4, :o2, 29235851, 12
+ tz.transition 1958, 9, :o1, 19491799, 8
+ tz.transition 1959, 4, :o2, 29240219, 12
+ tz.transition 1959, 9, :o1, 19494711, 8
+ tz.transition 1960, 4, :o2, 29244587, 12
+ tz.transition 1960, 9, :o1, 19497623, 8
+ tz.transition 1961, 4, :o2, 29249039, 12
+ tz.transition 1961, 9, :o1, 19500535, 8
+ tz.transition 1962, 4, :o2, 29253407, 12
+ tz.transition 1962, 10, :o1, 19503727, 8
+ tz.transition 1963, 4, :o2, 29257775, 12
+ tz.transition 1963, 10, :o1, 19506639, 8
+ tz.transition 1964, 4, :o2, 29262143, 12
+ tz.transition 1964, 10, :o1, 19509551, 8
+ tz.transition 1965, 4, :o2, 29266511, 12
+ tz.transition 1965, 10, :o1, 19512519, 8
+ tz.transition 1966, 4, :o2, 29270879, 12
+ tz.transition 1966, 10, :o1, 19515431, 8
+ tz.transition 1967, 4, :o2, 29275331, 12
+ tz.transition 1967, 10, :o1, 19518343, 8
+ tz.transition 1968, 4, :o2, 29279699, 12
+ tz.transition 1968, 10, :o1, 19521255, 8
+ tz.transition 1969, 4, :o2, 29284067, 12
+ tz.transition 1969, 10, :o1, 19524167, 8
+ tz.transition 1970, 4, :o2, 9972000
+ tz.transition 1970, 10, :o1, 25693200
+ tz.transition 1971, 4, :o2, 41421600
+ tz.transition 1971, 10, :o1, 57747600
+ tz.transition 1972, 4, :o2, 73476000
+ tz.transition 1972, 10, :o1, 89197200
+ tz.transition 1973, 4, :o2, 104925600
+ tz.transition 1973, 10, :o1, 120646800
+ tz.transition 1974, 1, :o2, 126698400
+ tz.transition 1974, 10, :o1, 152096400
+ tz.transition 1975, 2, :o2, 162381600
+ tz.transition 1975, 10, :o1, 183546000
+ tz.transition 1976, 4, :o2, 199274400
+ tz.transition 1976, 10, :o1, 215600400
+ tz.transition 1977, 4, :o2, 230724000
+ tz.transition 1977, 10, :o1, 247050000
+ tz.transition 1978, 4, :o2, 262778400
+ tz.transition 1978, 10, :o1, 278499600
+ tz.transition 1979, 4, :o2, 294228000
+ tz.transition 1979, 10, :o1, 309949200
+ tz.transition 1980, 4, :o2, 325677600
+ tz.transition 1980, 10, :o1, 341398800
+ tz.transition 1981, 4, :o2, 357127200
+ tz.transition 1981, 10, :o1, 372848400
+ tz.transition 1982, 4, :o2, 388576800
+ tz.transition 1982, 10, :o1, 404902800
+ tz.transition 1983, 4, :o2, 420026400
+ tz.transition 1983, 10, :o1, 436352400
+ tz.transition 1984, 4, :o2, 452080800
+ tz.transition 1984, 10, :o1, 467802000
+ tz.transition 1985, 4, :o2, 483530400
+ tz.transition 1985, 10, :o1, 499251600
+ tz.transition 1986, 4, :o2, 514980000
+ tz.transition 1986, 10, :o1, 530701200
+ tz.transition 1987, 4, :o2, 544615200
+ tz.transition 1987, 10, :o1, 562150800
+ tz.transition 1988, 4, :o2, 576064800
+ tz.transition 1988, 10, :o1, 594205200
+ tz.transition 1989, 4, :o2, 607514400
+ tz.transition 1989, 10, :o1, 625654800
+ tz.transition 1990, 4, :o2, 638964000
+ tz.transition 1990, 10, :o1, 657104400
+ tz.transition 1991, 4, :o2, 671018400
+ tz.transition 1991, 10, :o1, 688554000
+ tz.transition 1992, 4, :o2, 702468000
+ tz.transition 1992, 10, :o1, 720003600
+ tz.transition 1993, 4, :o2, 733917600
+ tz.transition 1993, 10, :o1, 752058000
+ tz.transition 1994, 4, :o2, 765367200
+ tz.transition 1994, 10, :o1, 783507600
+ tz.transition 1995, 4, :o2, 796816800
+ tz.transition 1995, 10, :o1, 814957200
+ tz.transition 1996, 4, :o2, 828871200
+ tz.transition 1996, 10, :o1, 846406800
+ tz.transition 1997, 4, :o2, 860320800
+ tz.transition 1997, 10, :o1, 877856400
+ tz.transition 1998, 4, :o2, 891770400
+ tz.transition 1998, 10, :o1, 909306000
+ tz.transition 1999, 4, :o2, 923220000
+ tz.transition 1999, 10, :o1, 941360400
+ tz.transition 2000, 4, :o2, 954669600
+ tz.transition 2000, 10, :o1, 972810000
+ tz.transition 2001, 4, :o2, 986119200
+ tz.transition 2001, 10, :o1, 1004259600
+ tz.transition 2002, 4, :o2, 1018173600
+ tz.transition 2002, 10, :o1, 1035709200
+ tz.transition 2003, 4, :o2, 1049623200
+ tz.transition 2003, 10, :o1, 1067158800
+ tz.transition 2004, 4, :o2, 1081072800
+ tz.transition 2004, 10, :o1, 1099213200
+ tz.transition 2005, 4, :o2, 1112522400
+ tz.transition 2005, 10, :o1, 1130662800
+ tz.transition 2006, 4, :o2, 1143972000
+ tz.transition 2006, 10, :o1, 1162112400
+ tz.transition 2007, 3, :o2, 1173607200
+ tz.transition 2007, 11, :o1, 1194166800
+ tz.transition 2008, 3, :o2, 1205056800
+ tz.transition 2008, 11, :o1, 1225616400
+ tz.transition 2009, 3, :o2, 1236506400
+ tz.transition 2009, 11, :o1, 1257066000
+ tz.transition 2010, 3, :o2, 1268560800
+ tz.transition 2010, 11, :o1, 1289120400
+ tz.transition 2011, 3, :o2, 1300010400
+ tz.transition 2011, 11, :o1, 1320570000
+ tz.transition 2012, 3, :o2, 1331460000
+ tz.transition 2012, 11, :o1, 1352019600
+ tz.transition 2013, 3, :o2, 1362909600
+ tz.transition 2013, 11, :o1, 1383469200
+ tz.transition 2014, 3, :o2, 1394359200
+ tz.transition 2014, 11, :o1, 1414918800
+ tz.transition 2015, 3, :o2, 1425808800
+ tz.transition 2015, 11, :o1, 1446368400
+ tz.transition 2016, 3, :o2, 1457863200
+ tz.transition 2016, 11, :o1, 1478422800
+ tz.transition 2017, 3, :o2, 1489312800
+ tz.transition 2017, 11, :o1, 1509872400
+ tz.transition 2018, 3, :o2, 1520762400
+ tz.transition 2018, 11, :o1, 1541322000
+ tz.transition 2019, 3, :o2, 1552212000
+ tz.transition 2019, 11, :o1, 1572771600
+ tz.transition 2020, 3, :o2, 1583661600
+ tz.transition 2020, 11, :o1, 1604221200
+ tz.transition 2021, 3, :o2, 1615716000
+ tz.transition 2021, 11, :o1, 1636275600
+ tz.transition 2022, 3, :o2, 1647165600
+ tz.transition 2022, 11, :o1, 1667725200
+ tz.transition 2023, 3, :o2, 1678615200
+ tz.transition 2023, 11, :o1, 1699174800
+ tz.transition 2024, 3, :o2, 1710064800
+ tz.transition 2024, 11, :o1, 1730624400
+ tz.transition 2025, 3, :o2, 1741514400
+ tz.transition 2025, 11, :o1, 1762074000
+ tz.transition 2026, 3, :o2, 1772964000
+ tz.transition 2026, 11, :o1, 1793523600
+ tz.transition 2027, 3, :o2, 1805018400
+ tz.transition 2027, 11, :o1, 1825578000
+ tz.transition 2028, 3, :o2, 1836468000
+ tz.transition 2028, 11, :o1, 1857027600
+ tz.transition 2029, 3, :o2, 1867917600
+ tz.transition 2029, 11, :o1, 1888477200
+ tz.transition 2030, 3, :o2, 1899367200
+ tz.transition 2030, 11, :o1, 1919926800
+ tz.transition 2031, 3, :o2, 1930816800
+ tz.transition 2031, 11, :o1, 1951376400
+ tz.transition 2032, 3, :o2, 1962871200
+ tz.transition 2032, 11, :o1, 1983430800
+ tz.transition 2033, 3, :o2, 1994320800
+ tz.transition 2033, 11, :o1, 2014880400
+ tz.transition 2034, 3, :o2, 2025770400
+ tz.transition 2034, 11, :o1, 2046330000
+ tz.transition 2035, 3, :o2, 2057220000
+ tz.transition 2035, 11, :o1, 2077779600
+ tz.transition 2036, 3, :o2, 2088669600
+ tz.transition 2036, 11, :o1, 2109229200
+ tz.transition 2037, 3, :o2, 2120119200
+ tz.transition 2037, 11, :o1, 2140678800
+ tz.transition 2038, 3, :o2, 29585963, 12
+ tz.transition 2038, 11, :o1, 19725879, 8
+ tz.transition 2039, 3, :o2, 29590331, 12
+ tz.transition 2039, 11, :o1, 19728791, 8
+ tz.transition 2040, 3, :o2, 29594699, 12
+ tz.transition 2040, 11, :o1, 19731703, 8
+ tz.transition 2041, 3, :o2, 29599067, 12
+ tz.transition 2041, 11, :o1, 19734615, 8
+ tz.transition 2042, 3, :o2, 29603435, 12
+ tz.transition 2042, 11, :o1, 19737527, 8
+ tz.transition 2043, 3, :o2, 29607803, 12
+ tz.transition 2043, 11, :o1, 19740439, 8
+ tz.transition 2044, 3, :o2, 29612255, 12
+ tz.transition 2044, 11, :o1, 19743407, 8
+ tz.transition 2045, 3, :o2, 29616623, 12
+ tz.transition 2045, 11, :o1, 19746319, 8
+ tz.transition 2046, 3, :o2, 29620991, 12
+ tz.transition 2046, 11, :o1, 19749231, 8
+ tz.transition 2047, 3, :o2, 29625359, 12
+ tz.transition 2047, 11, :o1, 19752143, 8
+ tz.transition 2048, 3, :o2, 29629727, 12
+ tz.transition 2048, 11, :o1, 19755055, 8
+ tz.transition 2049, 3, :o2, 29634179, 12
+ tz.transition 2049, 11, :o1, 19758023, 8
+ tz.transition 2050, 3, :o2, 29638547, 12
+ tz.transition 2050, 11, :o1, 19760935, 8
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Mazatlan.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Mazatlan.rb
new file mode 100644
index 000000000..ba9e6efcf
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Mazatlan.rb
@@ -0,0 +1,139 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module America
+ module Mazatlan
+ include TimezoneDefinition
+
+ timezone 'America/Mazatlan' do |tz|
+ tz.offset :o0, -25540, 0, :LMT
+ tz.offset :o1, -25200, 0, :MST
+ tz.offset :o2, -21600, 0, :CST
+ tz.offset :o3, -28800, 0, :PST
+ tz.offset :o4, -25200, 3600, :MDT
+
+ tz.transition 1922, 1, :o1, 58153339, 24
+ tz.transition 1927, 6, :o2, 9700171, 4
+ tz.transition 1930, 11, :o1, 9705183, 4
+ tz.transition 1931, 5, :o2, 9705855, 4
+ tz.transition 1931, 10, :o1, 9706463, 4
+ tz.transition 1932, 4, :o2, 58243171, 24
+ tz.transition 1942, 4, :o1, 9721895, 4
+ tz.transition 1949, 1, :o3, 58390339, 24
+ tz.transition 1970, 1, :o1, 28800
+ tz.transition 1996, 4, :o4, 828867600
+ tz.transition 1996, 10, :o1, 846403200
+ tz.transition 1997, 4, :o4, 860317200
+ tz.transition 1997, 10, :o1, 877852800
+ tz.transition 1998, 4, :o4, 891766800
+ tz.transition 1998, 10, :o1, 909302400
+ tz.transition 1999, 4, :o4, 923216400
+ tz.transition 1999, 10, :o1, 941356800
+ tz.transition 2000, 4, :o4, 954666000
+ tz.transition 2000, 10, :o1, 972806400
+ tz.transition 2001, 5, :o4, 989139600
+ tz.transition 2001, 9, :o1, 1001836800
+ tz.transition 2002, 4, :o4, 1018170000
+ tz.transition 2002, 10, :o1, 1035705600
+ tz.transition 2003, 4, :o4, 1049619600
+ tz.transition 2003, 10, :o1, 1067155200
+ tz.transition 2004, 4, :o4, 1081069200
+ tz.transition 2004, 10, :o1, 1099209600
+ tz.transition 2005, 4, :o4, 1112518800
+ tz.transition 2005, 10, :o1, 1130659200
+ tz.transition 2006, 4, :o4, 1143968400
+ tz.transition 2006, 10, :o1, 1162108800
+ tz.transition 2007, 4, :o4, 1175418000
+ tz.transition 2007, 10, :o1, 1193558400
+ tz.transition 2008, 4, :o4, 1207472400
+ tz.transition 2008, 10, :o1, 1225008000
+ tz.transition 2009, 4, :o4, 1238922000
+ tz.transition 2009, 10, :o1, 1256457600
+ tz.transition 2010, 4, :o4, 1270371600
+ tz.transition 2010, 10, :o1, 1288512000
+ tz.transition 2011, 4, :o4, 1301821200
+ tz.transition 2011, 10, :o1, 1319961600
+ tz.transition 2012, 4, :o4, 1333270800
+ tz.transition 2012, 10, :o1, 1351411200
+ tz.transition 2013, 4, :o4, 1365325200
+ tz.transition 2013, 10, :o1, 1382860800
+ tz.transition 2014, 4, :o4, 1396774800
+ tz.transition 2014, 10, :o1, 1414310400
+ tz.transition 2015, 4, :o4, 1428224400
+ tz.transition 2015, 10, :o1, 1445760000
+ tz.transition 2016, 4, :o4, 1459674000
+ tz.transition 2016, 10, :o1, 1477814400
+ tz.transition 2017, 4, :o4, 1491123600
+ tz.transition 2017, 10, :o1, 1509264000
+ tz.transition 2018, 4, :o4, 1522573200
+ tz.transition 2018, 10, :o1, 1540713600
+ tz.transition 2019, 4, :o4, 1554627600
+ tz.transition 2019, 10, :o1, 1572163200
+ tz.transition 2020, 4, :o4, 1586077200
+ tz.transition 2020, 10, :o1, 1603612800
+ tz.transition 2021, 4, :o4, 1617526800
+ tz.transition 2021, 10, :o1, 1635667200
+ tz.transition 2022, 4, :o4, 1648976400
+ tz.transition 2022, 10, :o1, 1667116800
+ tz.transition 2023, 4, :o4, 1680426000
+ tz.transition 2023, 10, :o1, 1698566400
+ tz.transition 2024, 4, :o4, 1712480400
+ tz.transition 2024, 10, :o1, 1730016000
+ tz.transition 2025, 4, :o4, 1743930000
+ tz.transition 2025, 10, :o1, 1761465600
+ tz.transition 2026, 4, :o4, 1775379600
+ tz.transition 2026, 10, :o1, 1792915200
+ tz.transition 2027, 4, :o4, 1806829200
+ tz.transition 2027, 10, :o1, 1824969600
+ tz.transition 2028, 4, :o4, 1838278800
+ tz.transition 2028, 10, :o1, 1856419200
+ tz.transition 2029, 4, :o4, 1869728400
+ tz.transition 2029, 10, :o1, 1887868800
+ tz.transition 2030, 4, :o4, 1901782800
+ tz.transition 2030, 10, :o1, 1919318400
+ tz.transition 2031, 4, :o4, 1933232400
+ tz.transition 2031, 10, :o1, 1950768000
+ tz.transition 2032, 4, :o4, 1964682000
+ tz.transition 2032, 10, :o1, 1982822400
+ tz.transition 2033, 4, :o4, 1996131600
+ tz.transition 2033, 10, :o1, 2014272000
+ tz.transition 2034, 4, :o4, 2027581200
+ tz.transition 2034, 10, :o1, 2045721600
+ tz.transition 2035, 4, :o4, 2059030800
+ tz.transition 2035, 10, :o1, 2077171200
+ tz.transition 2036, 4, :o4, 2091085200
+ tz.transition 2036, 10, :o1, 2108620800
+ tz.transition 2037, 4, :o4, 2122534800
+ tz.transition 2037, 10, :o1, 2140070400
+ tz.transition 2038, 4, :o4, 19724143, 8
+ tz.transition 2038, 10, :o1, 14794367, 6
+ tz.transition 2039, 4, :o4, 19727055, 8
+ tz.transition 2039, 10, :o1, 14796551, 6
+ tz.transition 2040, 4, :o4, 19729967, 8
+ tz.transition 2040, 10, :o1, 14798735, 6
+ tz.transition 2041, 4, :o4, 19732935, 8
+ tz.transition 2041, 10, :o1, 14800919, 6
+ tz.transition 2042, 4, :o4, 19735847, 8
+ tz.transition 2042, 10, :o1, 14803103, 6
+ tz.transition 2043, 4, :o4, 19738759, 8
+ tz.transition 2043, 10, :o1, 14805287, 6
+ tz.transition 2044, 4, :o4, 19741671, 8
+ tz.transition 2044, 10, :o1, 14807513, 6
+ tz.transition 2045, 4, :o4, 19744583, 8
+ tz.transition 2045, 10, :o1, 14809697, 6
+ tz.transition 2046, 4, :o4, 19747495, 8
+ tz.transition 2046, 10, :o1, 14811881, 6
+ tz.transition 2047, 4, :o4, 19750463, 8
+ tz.transition 2047, 10, :o1, 14814065, 6
+ tz.transition 2048, 4, :o4, 19753375, 8
+ tz.transition 2048, 10, :o1, 14816249, 6
+ tz.transition 2049, 4, :o4, 19756287, 8
+ tz.transition 2049, 10, :o1, 14818475, 6
+ tz.transition 2050, 4, :o4, 19759199, 8
+ tz.transition 2050, 10, :o1, 14820659, 6
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Mexico_City.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Mexico_City.rb
new file mode 100644
index 000000000..2347fce64
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Mexico_City.rb
@@ -0,0 +1,144 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module America
+ module Mexico_City
+ include TimezoneDefinition
+
+ timezone 'America/Mexico_City' do |tz|
+ tz.offset :o0, -23796, 0, :LMT
+ tz.offset :o1, -25200, 0, :MST
+ tz.offset :o2, -21600, 0, :CST
+ tz.offset :o3, -21600, 3600, :CDT
+ tz.offset :o4, -21600, 3600, :CWT
+
+ tz.transition 1922, 1, :o1, 58153339, 24
+ tz.transition 1927, 6, :o2, 9700171, 4
+ tz.transition 1930, 11, :o1, 9705183, 4
+ tz.transition 1931, 5, :o2, 9705855, 4
+ tz.transition 1931, 10, :o1, 9706463, 4
+ tz.transition 1932, 4, :o2, 58243171, 24
+ tz.transition 1939, 2, :o3, 9717199, 4
+ tz.transition 1939, 6, :o2, 58306553, 24
+ tz.transition 1940, 12, :o3, 9719891, 4
+ tz.transition 1941, 4, :o2, 58322057, 24
+ tz.transition 1943, 12, :o4, 9724299, 4
+ tz.transition 1944, 5, :o2, 58349081, 24
+ tz.transition 1950, 2, :o3, 9733299, 4
+ tz.transition 1950, 7, :o2, 58403825, 24
+ tz.transition 1996, 4, :o3, 828864000
+ tz.transition 1996, 10, :o2, 846399600
+ tz.transition 1997, 4, :o3, 860313600
+ tz.transition 1997, 10, :o2, 877849200
+ tz.transition 1998, 4, :o3, 891763200
+ tz.transition 1998, 10, :o2, 909298800
+ tz.transition 1999, 4, :o3, 923212800
+ tz.transition 1999, 10, :o2, 941353200
+ tz.transition 2000, 4, :o3, 954662400
+ tz.transition 2000, 10, :o2, 972802800
+ tz.transition 2001, 5, :o3, 989136000
+ tz.transition 2001, 9, :o2, 1001833200
+ tz.transition 2002, 4, :o3, 1018166400
+ tz.transition 2002, 10, :o2, 1035702000
+ tz.transition 2003, 4, :o3, 1049616000
+ tz.transition 2003, 10, :o2, 1067151600
+ tz.transition 2004, 4, :o3, 1081065600
+ tz.transition 2004, 10, :o2, 1099206000
+ tz.transition 2005, 4, :o3, 1112515200
+ tz.transition 2005, 10, :o2, 1130655600
+ tz.transition 2006, 4, :o3, 1143964800
+ tz.transition 2006, 10, :o2, 1162105200
+ tz.transition 2007, 4, :o3, 1175414400
+ tz.transition 2007, 10, :o2, 1193554800
+ tz.transition 2008, 4, :o3, 1207468800
+ tz.transition 2008, 10, :o2, 1225004400
+ tz.transition 2009, 4, :o3, 1238918400
+ tz.transition 2009, 10, :o2, 1256454000
+ tz.transition 2010, 4, :o3, 1270368000
+ tz.transition 2010, 10, :o2, 1288508400
+ tz.transition 2011, 4, :o3, 1301817600
+ tz.transition 2011, 10, :o2, 1319958000
+ tz.transition 2012, 4, :o3, 1333267200
+ tz.transition 2012, 10, :o2, 1351407600
+ tz.transition 2013, 4, :o3, 1365321600
+ tz.transition 2013, 10, :o2, 1382857200
+ tz.transition 2014, 4, :o3, 1396771200
+ tz.transition 2014, 10, :o2, 1414306800
+ tz.transition 2015, 4, :o3, 1428220800
+ tz.transition 2015, 10, :o2, 1445756400
+ tz.transition 2016, 4, :o3, 1459670400
+ tz.transition 2016, 10, :o2, 1477810800
+ tz.transition 2017, 4, :o3, 1491120000
+ tz.transition 2017, 10, :o2, 1509260400
+ tz.transition 2018, 4, :o3, 1522569600
+ tz.transition 2018, 10, :o2, 1540710000
+ tz.transition 2019, 4, :o3, 1554624000
+ tz.transition 2019, 10, :o2, 1572159600
+ tz.transition 2020, 4, :o3, 1586073600
+ tz.transition 2020, 10, :o2, 1603609200
+ tz.transition 2021, 4, :o3, 1617523200
+ tz.transition 2021, 10, :o2, 1635663600
+ tz.transition 2022, 4, :o3, 1648972800
+ tz.transition 2022, 10, :o2, 1667113200
+ tz.transition 2023, 4, :o3, 1680422400
+ tz.transition 2023, 10, :o2, 1698562800
+ tz.transition 2024, 4, :o3, 1712476800
+ tz.transition 2024, 10, :o2, 1730012400
+ tz.transition 2025, 4, :o3, 1743926400
+ tz.transition 2025, 10, :o2, 1761462000
+ tz.transition 2026, 4, :o3, 1775376000
+ tz.transition 2026, 10, :o2, 1792911600
+ tz.transition 2027, 4, :o3, 1806825600
+ tz.transition 2027, 10, :o2, 1824966000
+ tz.transition 2028, 4, :o3, 1838275200
+ tz.transition 2028, 10, :o2, 1856415600
+ tz.transition 2029, 4, :o3, 1869724800
+ tz.transition 2029, 10, :o2, 1887865200
+ tz.transition 2030, 4, :o3, 1901779200
+ tz.transition 2030, 10, :o2, 1919314800
+ tz.transition 2031, 4, :o3, 1933228800
+ tz.transition 2031, 10, :o2, 1950764400
+ tz.transition 2032, 4, :o3, 1964678400
+ tz.transition 2032, 10, :o2, 1982818800
+ tz.transition 2033, 4, :o3, 1996128000
+ tz.transition 2033, 10, :o2, 2014268400
+ tz.transition 2034, 4, :o3, 2027577600
+ tz.transition 2034, 10, :o2, 2045718000
+ tz.transition 2035, 4, :o3, 2059027200
+ tz.transition 2035, 10, :o2, 2077167600
+ tz.transition 2036, 4, :o3, 2091081600
+ tz.transition 2036, 10, :o2, 2108617200
+ tz.transition 2037, 4, :o3, 2122531200
+ tz.transition 2037, 10, :o2, 2140066800
+ tz.transition 2038, 4, :o3, 14793107, 6
+ tz.transition 2038, 10, :o2, 59177467, 24
+ tz.transition 2039, 4, :o3, 14795291, 6
+ tz.transition 2039, 10, :o2, 59186203, 24
+ tz.transition 2040, 4, :o3, 14797475, 6
+ tz.transition 2040, 10, :o2, 59194939, 24
+ tz.transition 2041, 4, :o3, 14799701, 6
+ tz.transition 2041, 10, :o2, 59203675, 24
+ tz.transition 2042, 4, :o3, 14801885, 6
+ tz.transition 2042, 10, :o2, 59212411, 24
+ tz.transition 2043, 4, :o3, 14804069, 6
+ tz.transition 2043, 10, :o2, 59221147, 24
+ tz.transition 2044, 4, :o3, 14806253, 6
+ tz.transition 2044, 10, :o2, 59230051, 24
+ tz.transition 2045, 4, :o3, 14808437, 6
+ tz.transition 2045, 10, :o2, 59238787, 24
+ tz.transition 2046, 4, :o3, 14810621, 6
+ tz.transition 2046, 10, :o2, 59247523, 24
+ tz.transition 2047, 4, :o3, 14812847, 6
+ tz.transition 2047, 10, :o2, 59256259, 24
+ tz.transition 2048, 4, :o3, 14815031, 6
+ tz.transition 2048, 10, :o2, 59264995, 24
+ tz.transition 2049, 4, :o3, 14817215, 6
+ tz.transition 2049, 10, :o2, 59273899, 24
+ tz.transition 2050, 4, :o3, 14819399, 6
+ tz.transition 2050, 10, :o2, 59282635, 24
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Monterrey.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Monterrey.rb
new file mode 100644
index 000000000..5816a9eab
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Monterrey.rb
@@ -0,0 +1,131 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module America
+ module Monterrey
+ include TimezoneDefinition
+
+ timezone 'America/Monterrey' do |tz|
+ tz.offset :o0, -24076, 0, :LMT
+ tz.offset :o1, -21600, 0, :CST
+ tz.offset :o2, -21600, 3600, :CDT
+
+ tz.transition 1922, 1, :o1, 9692223, 4
+ tz.transition 1988, 4, :o2, 576057600
+ tz.transition 1988, 10, :o1, 594198000
+ tz.transition 1996, 4, :o2, 828864000
+ tz.transition 1996, 10, :o1, 846399600
+ tz.transition 1997, 4, :o2, 860313600
+ tz.transition 1997, 10, :o1, 877849200
+ tz.transition 1998, 4, :o2, 891763200
+ tz.transition 1998, 10, :o1, 909298800
+ tz.transition 1999, 4, :o2, 923212800
+ tz.transition 1999, 10, :o1, 941353200
+ tz.transition 2000, 4, :o2, 954662400
+ tz.transition 2000, 10, :o1, 972802800
+ tz.transition 2001, 5, :o2, 989136000
+ tz.transition 2001, 9, :o1, 1001833200
+ tz.transition 2002, 4, :o2, 1018166400
+ tz.transition 2002, 10, :o1, 1035702000
+ tz.transition 2003, 4, :o2, 1049616000
+ tz.transition 2003, 10, :o1, 1067151600
+ tz.transition 2004, 4, :o2, 1081065600
+ tz.transition 2004, 10, :o1, 1099206000
+ tz.transition 2005, 4, :o2, 1112515200
+ tz.transition 2005, 10, :o1, 1130655600
+ tz.transition 2006, 4, :o2, 1143964800
+ tz.transition 2006, 10, :o1, 1162105200
+ tz.transition 2007, 4, :o2, 1175414400
+ tz.transition 2007, 10, :o1, 1193554800
+ tz.transition 2008, 4, :o2, 1207468800
+ tz.transition 2008, 10, :o1, 1225004400
+ tz.transition 2009, 4, :o2, 1238918400
+ tz.transition 2009, 10, :o1, 1256454000
+ tz.transition 2010, 4, :o2, 1270368000
+ tz.transition 2010, 10, :o1, 1288508400
+ tz.transition 2011, 4, :o2, 1301817600
+ tz.transition 2011, 10, :o1, 1319958000
+ tz.transition 2012, 4, :o2, 1333267200
+ tz.transition 2012, 10, :o1, 1351407600
+ tz.transition 2013, 4, :o2, 1365321600
+ tz.transition 2013, 10, :o1, 1382857200
+ tz.transition 2014, 4, :o2, 1396771200
+ tz.transition 2014, 10, :o1, 1414306800
+ tz.transition 2015, 4, :o2, 1428220800
+ tz.transition 2015, 10, :o1, 1445756400
+ tz.transition 2016, 4, :o2, 1459670400
+ tz.transition 2016, 10, :o1, 1477810800
+ tz.transition 2017, 4, :o2, 1491120000
+ tz.transition 2017, 10, :o1, 1509260400
+ tz.transition 2018, 4, :o2, 1522569600
+ tz.transition 2018, 10, :o1, 1540710000
+ tz.transition 2019, 4, :o2, 1554624000
+ tz.transition 2019, 10, :o1, 1572159600
+ tz.transition 2020, 4, :o2, 1586073600
+ tz.transition 2020, 10, :o1, 1603609200
+ tz.transition 2021, 4, :o2, 1617523200
+ tz.transition 2021, 10, :o1, 1635663600
+ tz.transition 2022, 4, :o2, 1648972800
+ tz.transition 2022, 10, :o1, 1667113200
+ tz.transition 2023, 4, :o2, 1680422400
+ tz.transition 2023, 10, :o1, 1698562800
+ tz.transition 2024, 4, :o2, 1712476800
+ tz.transition 2024, 10, :o1, 1730012400
+ tz.transition 2025, 4, :o2, 1743926400
+ tz.transition 2025, 10, :o1, 1761462000
+ tz.transition 2026, 4, :o2, 1775376000
+ tz.transition 2026, 10, :o1, 1792911600
+ tz.transition 2027, 4, :o2, 1806825600
+ tz.transition 2027, 10, :o1, 1824966000
+ tz.transition 2028, 4, :o2, 1838275200
+ tz.transition 2028, 10, :o1, 1856415600
+ tz.transition 2029, 4, :o2, 1869724800
+ tz.transition 2029, 10, :o1, 1887865200
+ tz.transition 2030, 4, :o2, 1901779200
+ tz.transition 2030, 10, :o1, 1919314800
+ tz.transition 2031, 4, :o2, 1933228800
+ tz.transition 2031, 10, :o1, 1950764400
+ tz.transition 2032, 4, :o2, 1964678400
+ tz.transition 2032, 10, :o1, 1982818800
+ tz.transition 2033, 4, :o2, 1996128000
+ tz.transition 2033, 10, :o1, 2014268400
+ tz.transition 2034, 4, :o2, 2027577600
+ tz.transition 2034, 10, :o1, 2045718000
+ tz.transition 2035, 4, :o2, 2059027200
+ tz.transition 2035, 10, :o1, 2077167600
+ tz.transition 2036, 4, :o2, 2091081600
+ tz.transition 2036, 10, :o1, 2108617200
+ tz.transition 2037, 4, :o2, 2122531200
+ tz.transition 2037, 10, :o1, 2140066800
+ tz.transition 2038, 4, :o2, 14793107, 6
+ tz.transition 2038, 10, :o1, 59177467, 24
+ tz.transition 2039, 4, :o2, 14795291, 6
+ tz.transition 2039, 10, :o1, 59186203, 24
+ tz.transition 2040, 4, :o2, 14797475, 6
+ tz.transition 2040, 10, :o1, 59194939, 24
+ tz.transition 2041, 4, :o2, 14799701, 6
+ tz.transition 2041, 10, :o1, 59203675, 24
+ tz.transition 2042, 4, :o2, 14801885, 6
+ tz.transition 2042, 10, :o1, 59212411, 24
+ tz.transition 2043, 4, :o2, 14804069, 6
+ tz.transition 2043, 10, :o1, 59221147, 24
+ tz.transition 2044, 4, :o2, 14806253, 6
+ tz.transition 2044, 10, :o1, 59230051, 24
+ tz.transition 2045, 4, :o2, 14808437, 6
+ tz.transition 2045, 10, :o1, 59238787, 24
+ tz.transition 2046, 4, :o2, 14810621, 6
+ tz.transition 2046, 10, :o1, 59247523, 24
+ tz.transition 2047, 4, :o2, 14812847, 6
+ tz.transition 2047, 10, :o1, 59256259, 24
+ tz.transition 2048, 4, :o2, 14815031, 6
+ tz.transition 2048, 10, :o1, 59264995, 24
+ tz.transition 2049, 4, :o2, 14817215, 6
+ tz.transition 2049, 10, :o1, 59273899, 24
+ tz.transition 2050, 4, :o2, 14819399, 6
+ tz.transition 2050, 10, :o1, 59282635, 24
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/New_York.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/New_York.rb
new file mode 100644
index 000000000..7d802bd2d
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/New_York.rb
@@ -0,0 +1,282 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module America
+ module New_York
+ include TimezoneDefinition
+
+ timezone 'America/New_York' do |tz|
+ tz.offset :o0, -17762, 0, :LMT
+ tz.offset :o1, -18000, 0, :EST
+ tz.offset :o2, -18000, 3600, :EDT
+ tz.offset :o3, -18000, 3600, :EWT
+ tz.offset :o4, -18000, 3600, :EPT
+
+ tz.transition 1883, 11, :o1, 57819197, 24
+ tz.transition 1918, 3, :o2, 58120411, 24
+ tz.transition 1918, 10, :o1, 9687575, 4
+ tz.transition 1919, 3, :o2, 58129147, 24
+ tz.transition 1919, 10, :o1, 9689031, 4
+ tz.transition 1920, 3, :o2, 58137883, 24
+ tz.transition 1920, 10, :o1, 9690515, 4
+ tz.transition 1921, 4, :o2, 58147291, 24
+ tz.transition 1921, 9, :o1, 9691831, 4
+ tz.transition 1922, 4, :o2, 58156195, 24
+ tz.transition 1922, 9, :o1, 9693287, 4
+ tz.transition 1923, 4, :o2, 58164931, 24
+ tz.transition 1923, 9, :o1, 9694771, 4
+ tz.transition 1924, 4, :o2, 58173667, 24
+ tz.transition 1924, 9, :o1, 9696227, 4
+ tz.transition 1925, 4, :o2, 58182403, 24
+ tz.transition 1925, 9, :o1, 9697683, 4
+ tz.transition 1926, 4, :o2, 58191139, 24
+ tz.transition 1926, 9, :o1, 9699139, 4
+ tz.transition 1927, 4, :o2, 58199875, 24
+ tz.transition 1927, 9, :o1, 9700595, 4
+ tz.transition 1928, 4, :o2, 58208779, 24
+ tz.transition 1928, 9, :o1, 9702079, 4
+ tz.transition 1929, 4, :o2, 58217515, 24
+ tz.transition 1929, 9, :o1, 9703535, 4
+ tz.transition 1930, 4, :o2, 58226251, 24
+ tz.transition 1930, 9, :o1, 9704991, 4
+ tz.transition 1931, 4, :o2, 58234987, 24
+ tz.transition 1931, 9, :o1, 9706447, 4
+ tz.transition 1932, 4, :o2, 58243723, 24
+ tz.transition 1932, 9, :o1, 9707903, 4
+ tz.transition 1933, 4, :o2, 58252627, 24
+ tz.transition 1933, 9, :o1, 9709359, 4
+ tz.transition 1934, 4, :o2, 58261363, 24
+ tz.transition 1934, 9, :o1, 9710843, 4
+ tz.transition 1935, 4, :o2, 58270099, 24
+ tz.transition 1935, 9, :o1, 9712299, 4
+ tz.transition 1936, 4, :o2, 58278835, 24
+ tz.transition 1936, 9, :o1, 9713755, 4
+ tz.transition 1937, 4, :o2, 58287571, 24
+ tz.transition 1937, 9, :o1, 9715211, 4
+ tz.transition 1938, 4, :o2, 58296307, 24
+ tz.transition 1938, 9, :o1, 9716667, 4
+ tz.transition 1939, 4, :o2, 58305211, 24
+ tz.transition 1939, 9, :o1, 9718123, 4
+ tz.transition 1940, 4, :o2, 58313947, 24
+ tz.transition 1940, 9, :o1, 9719607, 4
+ tz.transition 1941, 4, :o2, 58322683, 24
+ tz.transition 1941, 9, :o1, 9721063, 4
+ tz.transition 1942, 2, :o3, 58329595, 24
+ tz.transition 1945, 8, :o4, 58360379, 24
+ tz.transition 1945, 9, :o1, 9726915, 4
+ tz.transition 1946, 4, :o2, 58366531, 24
+ tz.transition 1946, 9, :o1, 9728371, 4
+ tz.transition 1947, 4, :o2, 58375267, 24
+ tz.transition 1947, 9, :o1, 9729827, 4
+ tz.transition 1948, 4, :o2, 58384003, 24
+ tz.transition 1948, 9, :o1, 9731283, 4
+ tz.transition 1949, 4, :o2, 58392739, 24
+ tz.transition 1949, 9, :o1, 9732739, 4
+ tz.transition 1950, 4, :o2, 58401643, 24
+ tz.transition 1950, 9, :o1, 9734195, 4
+ tz.transition 1951, 4, :o2, 58410379, 24
+ tz.transition 1951, 9, :o1, 9735679, 4
+ tz.transition 1952, 4, :o2, 58419115, 24
+ tz.transition 1952, 9, :o1, 9737135, 4
+ tz.transition 1953, 4, :o2, 58427851, 24
+ tz.transition 1953, 9, :o1, 9738591, 4
+ tz.transition 1954, 4, :o2, 58436587, 24
+ tz.transition 1954, 9, :o1, 9740047, 4
+ tz.transition 1955, 4, :o2, 58445323, 24
+ tz.transition 1955, 10, :o1, 9741643, 4
+ tz.transition 1956, 4, :o2, 58454227, 24
+ tz.transition 1956, 10, :o1, 9743099, 4
+ tz.transition 1957, 4, :o2, 58462963, 24
+ tz.transition 1957, 10, :o1, 9744555, 4
+ tz.transition 1958, 4, :o2, 58471699, 24
+ tz.transition 1958, 10, :o1, 9746011, 4
+ tz.transition 1959, 4, :o2, 58480435, 24
+ tz.transition 1959, 10, :o1, 9747467, 4
+ tz.transition 1960, 4, :o2, 58489171, 24
+ tz.transition 1960, 10, :o1, 9748951, 4
+ tz.transition 1961, 4, :o2, 58498075, 24
+ tz.transition 1961, 10, :o1, 9750407, 4
+ tz.transition 1962, 4, :o2, 58506811, 24
+ tz.transition 1962, 10, :o1, 9751863, 4
+ tz.transition 1963, 4, :o2, 58515547, 24
+ tz.transition 1963, 10, :o1, 9753319, 4
+ tz.transition 1964, 4, :o2, 58524283, 24
+ tz.transition 1964, 10, :o1, 9754775, 4
+ tz.transition 1965, 4, :o2, 58533019, 24
+ tz.transition 1965, 10, :o1, 9756259, 4
+ tz.transition 1966, 4, :o2, 58541755, 24
+ tz.transition 1966, 10, :o1, 9757715, 4
+ tz.transition 1967, 4, :o2, 58550659, 24
+ tz.transition 1967, 10, :o1, 9759171, 4
+ tz.transition 1968, 4, :o2, 58559395, 24
+ tz.transition 1968, 10, :o1, 9760627, 4
+ tz.transition 1969, 4, :o2, 58568131, 24
+ tz.transition 1969, 10, :o1, 9762083, 4
+ tz.transition 1970, 4, :o2, 9961200
+ tz.transition 1970, 10, :o1, 25682400
+ tz.transition 1971, 4, :o2, 41410800
+ tz.transition 1971, 10, :o1, 57736800
+ tz.transition 1972, 4, :o2, 73465200
+ tz.transition 1972, 10, :o1, 89186400
+ tz.transition 1973, 4, :o2, 104914800
+ tz.transition 1973, 10, :o1, 120636000
+ tz.transition 1974, 1, :o2, 126687600
+ tz.transition 1974, 10, :o1, 152085600
+ tz.transition 1975, 2, :o2, 162370800
+ tz.transition 1975, 10, :o1, 183535200
+ tz.transition 1976, 4, :o2, 199263600
+ tz.transition 1976, 10, :o1, 215589600
+ tz.transition 1977, 4, :o2, 230713200
+ tz.transition 1977, 10, :o1, 247039200
+ tz.transition 1978, 4, :o2, 262767600
+ tz.transition 1978, 10, :o1, 278488800
+ tz.transition 1979, 4, :o2, 294217200
+ tz.transition 1979, 10, :o1, 309938400
+ tz.transition 1980, 4, :o2, 325666800
+ tz.transition 1980, 10, :o1, 341388000
+ tz.transition 1981, 4, :o2, 357116400
+ tz.transition 1981, 10, :o1, 372837600
+ tz.transition 1982, 4, :o2, 388566000
+ tz.transition 1982, 10, :o1, 404892000
+ tz.transition 1983, 4, :o2, 420015600
+ tz.transition 1983, 10, :o1, 436341600
+ tz.transition 1984, 4, :o2, 452070000
+ tz.transition 1984, 10, :o1, 467791200
+ tz.transition 1985, 4, :o2, 483519600
+ tz.transition 1985, 10, :o1, 499240800
+ tz.transition 1986, 4, :o2, 514969200
+ tz.transition 1986, 10, :o1, 530690400
+ tz.transition 1987, 4, :o2, 544604400
+ tz.transition 1987, 10, :o1, 562140000
+ tz.transition 1988, 4, :o2, 576054000
+ tz.transition 1988, 10, :o1, 594194400
+ tz.transition 1989, 4, :o2, 607503600
+ tz.transition 1989, 10, :o1, 625644000
+ tz.transition 1990, 4, :o2, 638953200
+ tz.transition 1990, 10, :o1, 657093600
+ tz.transition 1991, 4, :o2, 671007600
+ tz.transition 1991, 10, :o1, 688543200
+ tz.transition 1992, 4, :o2, 702457200
+ tz.transition 1992, 10, :o1, 719992800
+ tz.transition 1993, 4, :o2, 733906800
+ tz.transition 1993, 10, :o1, 752047200
+ tz.transition 1994, 4, :o2, 765356400
+ tz.transition 1994, 10, :o1, 783496800
+ tz.transition 1995, 4, :o2, 796806000
+ tz.transition 1995, 10, :o1, 814946400
+ tz.transition 1996, 4, :o2, 828860400
+ tz.transition 1996, 10, :o1, 846396000
+ tz.transition 1997, 4, :o2, 860310000
+ tz.transition 1997, 10, :o1, 877845600
+ tz.transition 1998, 4, :o2, 891759600
+ tz.transition 1998, 10, :o1, 909295200
+ tz.transition 1999, 4, :o2, 923209200
+ tz.transition 1999, 10, :o1, 941349600
+ tz.transition 2000, 4, :o2, 954658800
+ tz.transition 2000, 10, :o1, 972799200
+ tz.transition 2001, 4, :o2, 986108400
+ tz.transition 2001, 10, :o1, 1004248800
+ tz.transition 2002, 4, :o2, 1018162800
+ tz.transition 2002, 10, :o1, 1035698400
+ tz.transition 2003, 4, :o2, 1049612400
+ tz.transition 2003, 10, :o1, 1067148000
+ tz.transition 2004, 4, :o2, 1081062000
+ tz.transition 2004, 10, :o1, 1099202400
+ tz.transition 2005, 4, :o2, 1112511600
+ tz.transition 2005, 10, :o1, 1130652000
+ tz.transition 2006, 4, :o2, 1143961200
+ tz.transition 2006, 10, :o1, 1162101600
+ tz.transition 2007, 3, :o2, 1173596400
+ tz.transition 2007, 11, :o1, 1194156000
+ tz.transition 2008, 3, :o2, 1205046000
+ tz.transition 2008, 11, :o1, 1225605600
+ tz.transition 2009, 3, :o2, 1236495600
+ tz.transition 2009, 11, :o1, 1257055200
+ tz.transition 2010, 3, :o2, 1268550000
+ tz.transition 2010, 11, :o1, 1289109600
+ tz.transition 2011, 3, :o2, 1299999600
+ tz.transition 2011, 11, :o1, 1320559200
+ tz.transition 2012, 3, :o2, 1331449200
+ tz.transition 2012, 11, :o1, 1352008800
+ tz.transition 2013, 3, :o2, 1362898800
+ tz.transition 2013, 11, :o1, 1383458400
+ tz.transition 2014, 3, :o2, 1394348400
+ tz.transition 2014, 11, :o1, 1414908000
+ tz.transition 2015, 3, :o2, 1425798000
+ tz.transition 2015, 11, :o1, 1446357600
+ tz.transition 2016, 3, :o2, 1457852400
+ tz.transition 2016, 11, :o1, 1478412000
+ tz.transition 2017, 3, :o2, 1489302000
+ tz.transition 2017, 11, :o1, 1509861600
+ tz.transition 2018, 3, :o2, 1520751600
+ tz.transition 2018, 11, :o1, 1541311200
+ tz.transition 2019, 3, :o2, 1552201200
+ tz.transition 2019, 11, :o1, 1572760800
+ tz.transition 2020, 3, :o2, 1583650800
+ tz.transition 2020, 11, :o1, 1604210400
+ tz.transition 2021, 3, :o2, 1615705200
+ tz.transition 2021, 11, :o1, 1636264800
+ tz.transition 2022, 3, :o2, 1647154800
+ tz.transition 2022, 11, :o1, 1667714400
+ tz.transition 2023, 3, :o2, 1678604400
+ tz.transition 2023, 11, :o1, 1699164000
+ tz.transition 2024, 3, :o2, 1710054000
+ tz.transition 2024, 11, :o1, 1730613600
+ tz.transition 2025, 3, :o2, 1741503600
+ tz.transition 2025, 11, :o1, 1762063200
+ tz.transition 2026, 3, :o2, 1772953200
+ tz.transition 2026, 11, :o1, 1793512800
+ tz.transition 2027, 3, :o2, 1805007600
+ tz.transition 2027, 11, :o1, 1825567200
+ tz.transition 2028, 3, :o2, 1836457200
+ tz.transition 2028, 11, :o1, 1857016800
+ tz.transition 2029, 3, :o2, 1867906800
+ tz.transition 2029, 11, :o1, 1888466400
+ tz.transition 2030, 3, :o2, 1899356400
+ tz.transition 2030, 11, :o1, 1919916000
+ tz.transition 2031, 3, :o2, 1930806000
+ tz.transition 2031, 11, :o1, 1951365600
+ tz.transition 2032, 3, :o2, 1962860400
+ tz.transition 2032, 11, :o1, 1983420000
+ tz.transition 2033, 3, :o2, 1994310000
+ tz.transition 2033, 11, :o1, 2014869600
+ tz.transition 2034, 3, :o2, 2025759600
+ tz.transition 2034, 11, :o1, 2046319200
+ tz.transition 2035, 3, :o2, 2057209200
+ tz.transition 2035, 11, :o1, 2077768800
+ tz.transition 2036, 3, :o2, 2088658800
+ tz.transition 2036, 11, :o1, 2109218400
+ tz.transition 2037, 3, :o2, 2120108400
+ tz.transition 2037, 11, :o1, 2140668000
+ tz.transition 2038, 3, :o2, 59171923, 24
+ tz.transition 2038, 11, :o1, 9862939, 4
+ tz.transition 2039, 3, :o2, 59180659, 24
+ tz.transition 2039, 11, :o1, 9864395, 4
+ tz.transition 2040, 3, :o2, 59189395, 24
+ tz.transition 2040, 11, :o1, 9865851, 4
+ tz.transition 2041, 3, :o2, 59198131, 24
+ tz.transition 2041, 11, :o1, 9867307, 4
+ tz.transition 2042, 3, :o2, 59206867, 24
+ tz.transition 2042, 11, :o1, 9868763, 4
+ tz.transition 2043, 3, :o2, 59215603, 24
+ tz.transition 2043, 11, :o1, 9870219, 4
+ tz.transition 2044, 3, :o2, 59224507, 24
+ tz.transition 2044, 11, :o1, 9871703, 4
+ tz.transition 2045, 3, :o2, 59233243, 24
+ tz.transition 2045, 11, :o1, 9873159, 4
+ tz.transition 2046, 3, :o2, 59241979, 24
+ tz.transition 2046, 11, :o1, 9874615, 4
+ tz.transition 2047, 3, :o2, 59250715, 24
+ tz.transition 2047, 11, :o1, 9876071, 4
+ tz.transition 2048, 3, :o2, 59259451, 24
+ tz.transition 2048, 11, :o1, 9877527, 4
+ tz.transition 2049, 3, :o2, 59268355, 24
+ tz.transition 2049, 11, :o1, 9879011, 4
+ tz.transition 2050, 3, :o2, 59277091, 24
+ tz.transition 2050, 11, :o1, 9880467, 4
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Phoenix.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Phoenix.rb
new file mode 100644
index 000000000..b514e0c0f
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Phoenix.rb
@@ -0,0 +1,30 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module America
+ module Phoenix
+ include TimezoneDefinition
+
+ timezone 'America/Phoenix' do |tz|
+ tz.offset :o0, -26898, 0, :LMT
+ tz.offset :o1, -25200, 0, :MST
+ tz.offset :o2, -25200, 3600, :MDT
+ tz.offset :o3, -25200, 3600, :MWT
+
+ tz.transition 1883, 11, :o1, 57819199, 24
+ tz.transition 1918, 3, :o2, 19373471, 8
+ tz.transition 1918, 10, :o1, 14531363, 6
+ tz.transition 1919, 3, :o2, 19376383, 8
+ tz.transition 1919, 10, :o1, 14533547, 6
+ tz.transition 1942, 2, :o3, 19443199, 8
+ tz.transition 1944, 1, :o1, 3500770681, 1440
+ tz.transition 1944, 4, :o3, 3500901781, 1440
+ tz.transition 1944, 10, :o1, 3501165241, 1440
+ tz.transition 1967, 4, :o2, 19516887, 8
+ tz.transition 1967, 10, :o1, 14638757, 6
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Regina.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Regina.rb
new file mode 100644
index 000000000..ebdb68814
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Regina.rb
@@ -0,0 +1,74 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module America
+ module Regina
+ include TimezoneDefinition
+
+ timezone 'America/Regina' do |tz|
+ tz.offset :o0, -25116, 0, :LMT
+ tz.offset :o1, -25200, 0, :MST
+ tz.offset :o2, -25200, 3600, :MDT
+ tz.offset :o3, -25200, 3600, :MWT
+ tz.offset :o4, -25200, 3600, :MPT
+ tz.offset :o5, -21600, 0, :CST
+
+ tz.transition 1905, 9, :o1, 17403046493, 7200
+ tz.transition 1918, 4, :o2, 19373583, 8
+ tz.transition 1918, 10, :o1, 14531387, 6
+ tz.transition 1930, 5, :o2, 58226419, 24
+ tz.transition 1930, 10, :o1, 9705019, 4
+ tz.transition 1931, 5, :o2, 58235155, 24
+ tz.transition 1931, 10, :o1, 9706475, 4
+ tz.transition 1932, 5, :o2, 58243891, 24
+ tz.transition 1932, 10, :o1, 9707931, 4
+ tz.transition 1933, 5, :o2, 58252795, 24
+ tz.transition 1933, 10, :o1, 9709387, 4
+ tz.transition 1934, 5, :o2, 58261531, 24
+ tz.transition 1934, 10, :o1, 9710871, 4
+ tz.transition 1937, 4, :o2, 58287235, 24
+ tz.transition 1937, 10, :o1, 9715267, 4
+ tz.transition 1938, 4, :o2, 58295971, 24
+ tz.transition 1938, 10, :o1, 9716695, 4
+ tz.transition 1939, 4, :o2, 58304707, 24
+ tz.transition 1939, 10, :o1, 9718179, 4
+ tz.transition 1940, 4, :o2, 58313611, 24
+ tz.transition 1940, 10, :o1, 9719663, 4
+ tz.transition 1941, 4, :o2, 58322347, 24
+ tz.transition 1941, 10, :o1, 9721119, 4
+ tz.transition 1942, 2, :o3, 19443199, 8
+ tz.transition 1945, 8, :o4, 58360379, 24
+ tz.transition 1945, 9, :o1, 14590373, 6
+ tz.transition 1946, 4, :o2, 19455399, 8
+ tz.transition 1946, 10, :o1, 14592641, 6
+ tz.transition 1947, 4, :o2, 19458423, 8
+ tz.transition 1947, 9, :o1, 14594741, 6
+ tz.transition 1948, 4, :o2, 19461335, 8
+ tz.transition 1948, 9, :o1, 14596925, 6
+ tz.transition 1949, 4, :o2, 19464247, 8
+ tz.transition 1949, 9, :o1, 14599109, 6
+ tz.transition 1950, 4, :o2, 19467215, 8
+ tz.transition 1950, 9, :o1, 14601293, 6
+ tz.transition 1951, 4, :o2, 19470127, 8
+ tz.transition 1951, 9, :o1, 14603519, 6
+ tz.transition 1952, 4, :o2, 19473039, 8
+ tz.transition 1952, 9, :o1, 14605703, 6
+ tz.transition 1953, 4, :o2, 19475951, 8
+ tz.transition 1953, 9, :o1, 14607887, 6
+ tz.transition 1954, 4, :o2, 19478863, 8
+ tz.transition 1954, 9, :o1, 14610071, 6
+ tz.transition 1955, 4, :o2, 19481775, 8
+ tz.transition 1955, 9, :o1, 14612255, 6
+ tz.transition 1956, 4, :o2, 19484743, 8
+ tz.transition 1956, 9, :o1, 14614481, 6
+ tz.transition 1957, 4, :o2, 19487655, 8
+ tz.transition 1957, 9, :o1, 14616665, 6
+ tz.transition 1959, 4, :o2, 19493479, 8
+ tz.transition 1959, 10, :o1, 14621201, 6
+ tz.transition 1960, 4, :o5, 19496391, 8
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Santiago.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Santiago.rb
new file mode 100644
index 000000000..0287c9ebc
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Santiago.rb
@@ -0,0 +1,205 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module America
+ module Santiago
+ include TimezoneDefinition
+
+ timezone 'America/Santiago' do |tz|
+ tz.offset :o0, -16966, 0, :LMT
+ tz.offset :o1, -16966, 0, :SMT
+ tz.offset :o2, -18000, 0, :CLT
+ tz.offset :o3, -14400, 0, :CLT
+ tz.offset :o4, -18000, 3600, :CLST
+ tz.offset :o5, -14400, 3600, :CLST
+
+ tz.transition 1890, 1, :o1, 104171127683, 43200
+ tz.transition 1910, 1, :o2, 104486660483, 43200
+ tz.transition 1916, 7, :o1, 58105097, 24
+ tz.transition 1918, 9, :o3, 104623388483, 43200
+ tz.transition 1919, 7, :o1, 7266422, 3
+ tz.transition 1927, 9, :o4, 104765386883, 43200
+ tz.transition 1928, 4, :o2, 7276013, 3
+ tz.transition 1928, 9, :o4, 58211777, 24
+ tz.transition 1929, 4, :o2, 7277108, 3
+ tz.transition 1929, 9, :o4, 58220537, 24
+ tz.transition 1930, 4, :o2, 7278203, 3
+ tz.transition 1930, 9, :o4, 58229297, 24
+ tz.transition 1931, 4, :o2, 7279298, 3
+ tz.transition 1931, 9, :o4, 58238057, 24
+ tz.transition 1932, 4, :o2, 7280396, 3
+ tz.transition 1932, 9, :o4, 58246841, 24
+ tz.transition 1942, 6, :o2, 7291535, 3
+ tz.transition 1942, 8, :o4, 58333745, 24
+ tz.transition 1946, 9, :o2, 19456517, 8
+ tz.transition 1947, 5, :o3, 58375865, 24
+ tz.transition 1968, 11, :o5, 7320491, 3
+ tz.transition 1969, 3, :o3, 19522485, 8
+ tz.transition 1969, 11, :o5, 7321646, 3
+ tz.transition 1970, 3, :o3, 7527600
+ tz.transition 1970, 10, :o5, 24465600
+ tz.transition 1971, 3, :o3, 37767600
+ tz.transition 1971, 10, :o5, 55915200
+ tz.transition 1972, 3, :o3, 69217200
+ tz.transition 1972, 10, :o5, 87969600
+ tz.transition 1973, 3, :o3, 100666800
+ tz.transition 1973, 9, :o5, 118209600
+ tz.transition 1974, 3, :o3, 132116400
+ tz.transition 1974, 10, :o5, 150868800
+ tz.transition 1975, 3, :o3, 163566000
+ tz.transition 1975, 10, :o5, 182318400
+ tz.transition 1976, 3, :o3, 195620400
+ tz.transition 1976, 10, :o5, 213768000
+ tz.transition 1977, 3, :o3, 227070000
+ tz.transition 1977, 10, :o5, 245217600
+ tz.transition 1978, 3, :o3, 258519600
+ tz.transition 1978, 10, :o5, 277272000
+ tz.transition 1979, 3, :o3, 289969200
+ tz.transition 1979, 10, :o5, 308721600
+ tz.transition 1980, 3, :o3, 321418800
+ tz.transition 1980, 10, :o5, 340171200
+ tz.transition 1981, 3, :o3, 353473200
+ tz.transition 1981, 10, :o5, 371620800
+ tz.transition 1982, 3, :o3, 384922800
+ tz.transition 1982, 10, :o5, 403070400
+ tz.transition 1983, 3, :o3, 416372400
+ tz.transition 1983, 10, :o5, 434520000
+ tz.transition 1984, 3, :o3, 447822000
+ tz.transition 1984, 10, :o5, 466574400
+ tz.transition 1985, 3, :o3, 479271600
+ tz.transition 1985, 10, :o5, 498024000
+ tz.transition 1986, 3, :o3, 510721200
+ tz.transition 1986, 10, :o5, 529473600
+ tz.transition 1987, 4, :o3, 545194800
+ tz.transition 1987, 10, :o5, 560923200
+ tz.transition 1988, 3, :o3, 574225200
+ tz.transition 1988, 10, :o5, 591768000
+ tz.transition 1989, 3, :o3, 605674800
+ tz.transition 1989, 10, :o5, 624427200
+ tz.transition 1990, 3, :o3, 637729200
+ tz.transition 1990, 9, :o5, 653457600
+ tz.transition 1991, 3, :o3, 668574000
+ tz.transition 1991, 10, :o5, 687326400
+ tz.transition 1992, 3, :o3, 700628400
+ tz.transition 1992, 10, :o5, 718776000
+ tz.transition 1993, 3, :o3, 732078000
+ tz.transition 1993, 10, :o5, 750225600
+ tz.transition 1994, 3, :o3, 763527600
+ tz.transition 1994, 10, :o5, 781675200
+ tz.transition 1995, 3, :o3, 794977200
+ tz.transition 1995, 10, :o5, 813729600
+ tz.transition 1996, 3, :o3, 826426800
+ tz.transition 1996, 10, :o5, 845179200
+ tz.transition 1997, 3, :o3, 859690800
+ tz.transition 1997, 10, :o5, 876628800
+ tz.transition 1998, 3, :o3, 889930800
+ tz.transition 1998, 9, :o5, 906868800
+ tz.transition 1999, 4, :o3, 923194800
+ tz.transition 1999, 10, :o5, 939528000
+ tz.transition 2000, 3, :o3, 952830000
+ tz.transition 2000, 10, :o5, 971582400
+ tz.transition 2001, 3, :o3, 984279600
+ tz.transition 2001, 10, :o5, 1003032000
+ tz.transition 2002, 3, :o3, 1015729200
+ tz.transition 2002, 10, :o5, 1034481600
+ tz.transition 2003, 3, :o3, 1047178800
+ tz.transition 2003, 10, :o5, 1065931200
+ tz.transition 2004, 3, :o3, 1079233200
+ tz.transition 2004, 10, :o5, 1097380800
+ tz.transition 2005, 3, :o3, 1110682800
+ tz.transition 2005, 10, :o5, 1128830400
+ tz.transition 2006, 3, :o3, 1142132400
+ tz.transition 2006, 10, :o5, 1160884800
+ tz.transition 2007, 3, :o3, 1173582000
+ tz.transition 2007, 10, :o5, 1192334400
+ tz.transition 2008, 3, :o3, 1206846000
+ tz.transition 2008, 10, :o5, 1223784000
+ tz.transition 2009, 3, :o3, 1237086000
+ tz.transition 2009, 10, :o5, 1255233600
+ tz.transition 2010, 3, :o3, 1268535600
+ tz.transition 2010, 10, :o5, 1286683200
+ tz.transition 2011, 3, :o3, 1299985200
+ tz.transition 2011, 10, :o5, 1318132800
+ tz.transition 2012, 3, :o3, 1331434800
+ tz.transition 2012, 10, :o5, 1350187200
+ tz.transition 2013, 3, :o3, 1362884400
+ tz.transition 2013, 10, :o5, 1381636800
+ tz.transition 2014, 3, :o3, 1394334000
+ tz.transition 2014, 10, :o5, 1413086400
+ tz.transition 2015, 3, :o3, 1426388400
+ tz.transition 2015, 10, :o5, 1444536000
+ tz.transition 2016, 3, :o3, 1457838000
+ tz.transition 2016, 10, :o5, 1475985600
+ tz.transition 2017, 3, :o3, 1489287600
+ tz.transition 2017, 10, :o5, 1508040000
+ tz.transition 2018, 3, :o3, 1520737200
+ tz.transition 2018, 10, :o5, 1539489600
+ tz.transition 2019, 3, :o3, 1552186800
+ tz.transition 2019, 10, :o5, 1570939200
+ tz.transition 2020, 3, :o3, 1584241200
+ tz.transition 2020, 10, :o5, 1602388800
+ tz.transition 2021, 3, :o3, 1615690800
+ tz.transition 2021, 10, :o5, 1633838400
+ tz.transition 2022, 3, :o3, 1647140400
+ tz.transition 2022, 10, :o5, 1665288000
+ tz.transition 2023, 3, :o3, 1678590000
+ tz.transition 2023, 10, :o5, 1697342400
+ tz.transition 2024, 3, :o3, 1710039600
+ tz.transition 2024, 10, :o5, 1728792000
+ tz.transition 2025, 3, :o3, 1741489200
+ tz.transition 2025, 10, :o5, 1760241600
+ tz.transition 2026, 3, :o3, 1773543600
+ tz.transition 2026, 10, :o5, 1791691200
+ tz.transition 2027, 3, :o3, 1804993200
+ tz.transition 2027, 10, :o5, 1823140800
+ tz.transition 2028, 3, :o3, 1836442800
+ tz.transition 2028, 10, :o5, 1855195200
+ tz.transition 2029, 3, :o3, 1867892400
+ tz.transition 2029, 10, :o5, 1886644800
+ tz.transition 2030, 3, :o3, 1899342000
+ tz.transition 2030, 10, :o5, 1918094400
+ tz.transition 2031, 3, :o3, 1930791600
+ tz.transition 2031, 10, :o5, 1949544000
+ tz.transition 2032, 3, :o3, 1962846000
+ tz.transition 2032, 10, :o5, 1980993600
+ tz.transition 2033, 3, :o3, 1994295600
+ tz.transition 2033, 10, :o5, 2012443200
+ tz.transition 2034, 3, :o3, 2025745200
+ tz.transition 2034, 10, :o5, 2044497600
+ tz.transition 2035, 3, :o3, 2057194800
+ tz.transition 2035, 10, :o5, 2075947200
+ tz.transition 2036, 3, :o3, 2088644400
+ tz.transition 2036, 10, :o5, 2107396800
+ tz.transition 2037, 3, :o3, 2120698800
+ tz.transition 2037, 10, :o5, 2138846400
+ tz.transition 2038, 3, :o3, 19723973, 8
+ tz.transition 2038, 10, :o5, 7397120, 3
+ tz.transition 2039, 3, :o3, 19726885, 8
+ tz.transition 2039, 10, :o5, 7398212, 3
+ tz.transition 2040, 3, :o3, 19729797, 8
+ tz.transition 2040, 10, :o5, 7399325, 3
+ tz.transition 2041, 3, :o3, 19732709, 8
+ tz.transition 2041, 10, :o5, 7400417, 3
+ tz.transition 2042, 3, :o3, 19735621, 8
+ tz.transition 2042, 10, :o5, 7401509, 3
+ tz.transition 2043, 3, :o3, 19738589, 8
+ tz.transition 2043, 10, :o5, 7402601, 3
+ tz.transition 2044, 3, :o3, 19741501, 8
+ tz.transition 2044, 10, :o5, 7403693, 3
+ tz.transition 2045, 3, :o3, 19744413, 8
+ tz.transition 2045, 10, :o5, 7404806, 3
+ tz.transition 2046, 3, :o3, 19747325, 8
+ tz.transition 2046, 10, :o5, 7405898, 3
+ tz.transition 2047, 3, :o3, 19750237, 8
+ tz.transition 2047, 10, :o5, 7406990, 3
+ tz.transition 2048, 3, :o3, 19753205, 8
+ tz.transition 2048, 10, :o5, 7408082, 3
+ tz.transition 2049, 3, :o3, 19756117, 8
+ tz.transition 2049, 10, :o5, 7409174, 3
+ tz.transition 2050, 3, :o3, 19759029, 8
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/St_Johns.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/St_Johns.rb
new file mode 100644
index 000000000..e4a3599d3
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/St_Johns.rb
@@ -0,0 +1,288 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module America
+ module St_Johns
+ include TimezoneDefinition
+
+ timezone 'America/St_Johns' do |tz|
+ tz.offset :o0, -12652, 0, :LMT
+ tz.offset :o1, -12652, 0, :NST
+ tz.offset :o2, -12652, 3600, :NDT
+ tz.offset :o3, -12600, 0, :NST
+ tz.offset :o4, -12600, 3600, :NDT
+ tz.offset :o5, -12600, 3600, :NWT
+ tz.offset :o6, -12600, 3600, :NPT
+ tz.offset :o7, -12600, 7200, :NDDT
+
+ tz.transition 1884, 1, :o1, 52038215563, 21600
+ tz.transition 1917, 4, :o2, 52300657363, 21600
+ tz.transition 1917, 9, :o1, 52304155663, 21600
+ tz.transition 1918, 4, :o2, 52308670963, 21600
+ tz.transition 1918, 10, :o1, 52312990063, 21600
+ tz.transition 1919, 5, :o2, 52317027463, 21600
+ tz.transition 1919, 8, :o1, 52319164963, 21600
+ tz.transition 1920, 5, :o2, 52324868263, 21600
+ tz.transition 1920, 11, :o1, 52328798563, 21600
+ tz.transition 1921, 5, :o2, 52332730663, 21600
+ tz.transition 1921, 10, :o1, 52336660963, 21600
+ tz.transition 1922, 5, :o2, 52340744263, 21600
+ tz.transition 1922, 10, :o1, 52344523363, 21600
+ tz.transition 1923, 5, :o2, 52348606663, 21600
+ tz.transition 1923, 10, :o1, 52352385763, 21600
+ tz.transition 1924, 5, :o2, 52356469063, 21600
+ tz.transition 1924, 10, :o1, 52360248163, 21600
+ tz.transition 1925, 5, :o2, 52364331463, 21600
+ tz.transition 1925, 10, :o1, 52368110563, 21600
+ tz.transition 1926, 5, :o2, 52372193863, 21600
+ tz.transition 1926, 11, :o1, 52376124163, 21600
+ tz.transition 1927, 5, :o2, 52380056263, 21600
+ tz.transition 1927, 10, :o1, 52383986563, 21600
+ tz.transition 1928, 5, :o2, 52388069863, 21600
+ tz.transition 1928, 10, :o1, 52391848963, 21600
+ tz.transition 1929, 5, :o2, 52395932263, 21600
+ tz.transition 1929, 10, :o1, 52399711363, 21600
+ tz.transition 1930, 5, :o2, 52403794663, 21600
+ tz.transition 1930, 10, :o1, 52407573763, 21600
+ tz.transition 1931, 5, :o2, 52411657063, 21600
+ tz.transition 1931, 10, :o1, 52415436163, 21600
+ tz.transition 1932, 5, :o2, 52419519463, 21600
+ tz.transition 1932, 10, :o1, 52423449763, 21600
+ tz.transition 1933, 5, :o2, 52427533063, 21600
+ tz.transition 1933, 10, :o1, 52431312163, 21600
+ tz.transition 1934, 5, :o2, 52435395463, 21600
+ tz.transition 1934, 10, :o1, 52439174563, 21600
+ tz.transition 1935, 3, :o3, 52442459563, 21600
+ tz.transition 1935, 5, :o4, 116540573, 48
+ tz.transition 1935, 10, :o3, 38849657, 16
+ tz.transition 1936, 5, :o4, 116558383, 48
+ tz.transition 1936, 10, :o3, 116565437, 48
+ tz.transition 1937, 5, :o4, 116575855, 48
+ tz.transition 1937, 10, :o3, 116582909, 48
+ tz.transition 1938, 5, :o4, 116593327, 48
+ tz.transition 1938, 10, :o3, 116600381, 48
+ tz.transition 1939, 5, :o4, 116611135, 48
+ tz.transition 1939, 10, :o3, 116617853, 48
+ tz.transition 1940, 5, :o4, 116628607, 48
+ tz.transition 1940, 10, :o3, 116635661, 48
+ tz.transition 1941, 5, :o4, 116646079, 48
+ tz.transition 1941, 10, :o3, 116653133, 48
+ tz.transition 1942, 5, :o5, 116663551, 48
+ tz.transition 1945, 8, :o6, 58360379, 24
+ tz.transition 1945, 9, :o3, 38907659, 16
+ tz.transition 1946, 5, :o4, 116733731, 48
+ tz.transition 1946, 10, :o3, 38913595, 16
+ tz.transition 1947, 5, :o4, 116751203, 48
+ tz.transition 1947, 10, :o3, 38919419, 16
+ tz.transition 1948, 5, :o4, 116768675, 48
+ tz.transition 1948, 10, :o3, 38925243, 16
+ tz.transition 1949, 5, :o4, 116786147, 48
+ tz.transition 1949, 10, :o3, 38931067, 16
+ tz.transition 1950, 5, :o4, 116803955, 48
+ tz.transition 1950, 10, :o3, 38937003, 16
+ tz.transition 1951, 4, :o4, 116820755, 48
+ tz.transition 1951, 9, :o3, 38942715, 16
+ tz.transition 1952, 4, :o4, 116838227, 48
+ tz.transition 1952, 9, :o3, 38948539, 16
+ tz.transition 1953, 4, :o4, 116855699, 48
+ tz.transition 1953, 9, :o3, 38954363, 16
+ tz.transition 1954, 4, :o4, 116873171, 48
+ tz.transition 1954, 9, :o3, 38960187, 16
+ tz.transition 1955, 4, :o4, 116890643, 48
+ tz.transition 1955, 9, :o3, 38966011, 16
+ tz.transition 1956, 4, :o4, 116908451, 48
+ tz.transition 1956, 9, :o3, 38971947, 16
+ tz.transition 1957, 4, :o4, 116925923, 48
+ tz.transition 1957, 9, :o3, 38977771, 16
+ tz.transition 1958, 4, :o4, 116943395, 48
+ tz.transition 1958, 9, :o3, 38983595, 16
+ tz.transition 1959, 4, :o4, 116960867, 48
+ tz.transition 1959, 9, :o3, 38989419, 16
+ tz.transition 1960, 4, :o4, 116978339, 48
+ tz.transition 1960, 10, :o3, 38995803, 16
+ tz.transition 1961, 4, :o4, 116996147, 48
+ tz.transition 1961, 10, :o3, 39001627, 16
+ tz.transition 1962, 4, :o4, 117013619, 48
+ tz.transition 1962, 10, :o3, 39007451, 16
+ tz.transition 1963, 4, :o4, 117031091, 48
+ tz.transition 1963, 10, :o3, 39013275, 16
+ tz.transition 1964, 4, :o4, 117048563, 48
+ tz.transition 1964, 10, :o3, 39019099, 16
+ tz.transition 1965, 4, :o4, 117066035, 48
+ tz.transition 1965, 10, :o3, 39025035, 16
+ tz.transition 1966, 4, :o4, 117083507, 48
+ tz.transition 1966, 10, :o3, 39030859, 16
+ tz.transition 1967, 4, :o4, 117101315, 48
+ tz.transition 1967, 10, :o3, 39036683, 16
+ tz.transition 1968, 4, :o4, 117118787, 48
+ tz.transition 1968, 10, :o3, 39042507, 16
+ tz.transition 1969, 4, :o4, 117136259, 48
+ tz.transition 1969, 10, :o3, 39048331, 16
+ tz.transition 1970, 4, :o4, 9955800
+ tz.transition 1970, 10, :o3, 25677000
+ tz.transition 1971, 4, :o4, 41405400
+ tz.transition 1971, 10, :o3, 57731400
+ tz.transition 1972, 4, :o4, 73459800
+ tz.transition 1972, 10, :o3, 89181000
+ tz.transition 1973, 4, :o4, 104909400
+ tz.transition 1973, 10, :o3, 120630600
+ tz.transition 1974, 4, :o4, 136359000
+ tz.transition 1974, 10, :o3, 152080200
+ tz.transition 1975, 4, :o4, 167808600
+ tz.transition 1975, 10, :o3, 183529800
+ tz.transition 1976, 4, :o4, 199258200
+ tz.transition 1976, 10, :o3, 215584200
+ tz.transition 1977, 4, :o4, 230707800
+ tz.transition 1977, 10, :o3, 247033800
+ tz.transition 1978, 4, :o4, 262762200
+ tz.transition 1978, 10, :o3, 278483400
+ tz.transition 1979, 4, :o4, 294211800
+ tz.transition 1979, 10, :o3, 309933000
+ tz.transition 1980, 4, :o4, 325661400
+ tz.transition 1980, 10, :o3, 341382600
+ tz.transition 1981, 4, :o4, 357111000
+ tz.transition 1981, 10, :o3, 372832200
+ tz.transition 1982, 4, :o4, 388560600
+ tz.transition 1982, 10, :o3, 404886600
+ tz.transition 1983, 4, :o4, 420010200
+ tz.transition 1983, 10, :o3, 436336200
+ tz.transition 1984, 4, :o4, 452064600
+ tz.transition 1984, 10, :o3, 467785800
+ tz.transition 1985, 4, :o4, 483514200
+ tz.transition 1985, 10, :o3, 499235400
+ tz.transition 1986, 4, :o4, 514963800
+ tz.transition 1986, 10, :o3, 530685000
+ tz.transition 1987, 4, :o4, 544591860
+ tz.transition 1987, 10, :o3, 562127460
+ tz.transition 1988, 4, :o7, 576041460
+ tz.transition 1988, 10, :o3, 594178260
+ tz.transition 1989, 4, :o4, 607491060
+ tz.transition 1989, 10, :o3, 625631460
+ tz.transition 1990, 4, :o4, 638940660
+ tz.transition 1990, 10, :o3, 657081060
+ tz.transition 1991, 4, :o4, 670995060
+ tz.transition 1991, 10, :o3, 688530660
+ tz.transition 1992, 4, :o4, 702444660
+ tz.transition 1992, 10, :o3, 719980260
+ tz.transition 1993, 4, :o4, 733894260
+ tz.transition 1993, 10, :o3, 752034660
+ tz.transition 1994, 4, :o4, 765343860
+ tz.transition 1994, 10, :o3, 783484260
+ tz.transition 1995, 4, :o4, 796793460
+ tz.transition 1995, 10, :o3, 814933860
+ tz.transition 1996, 4, :o4, 828847860
+ tz.transition 1996, 10, :o3, 846383460
+ tz.transition 1997, 4, :o4, 860297460
+ tz.transition 1997, 10, :o3, 877833060
+ tz.transition 1998, 4, :o4, 891747060
+ tz.transition 1998, 10, :o3, 909282660
+ tz.transition 1999, 4, :o4, 923196660
+ tz.transition 1999, 10, :o3, 941337060
+ tz.transition 2000, 4, :o4, 954646260
+ tz.transition 2000, 10, :o3, 972786660
+ tz.transition 2001, 4, :o4, 986095860
+ tz.transition 2001, 10, :o3, 1004236260
+ tz.transition 2002, 4, :o4, 1018150260
+ tz.transition 2002, 10, :o3, 1035685860
+ tz.transition 2003, 4, :o4, 1049599860
+ tz.transition 2003, 10, :o3, 1067135460
+ tz.transition 2004, 4, :o4, 1081049460
+ tz.transition 2004, 10, :o3, 1099189860
+ tz.transition 2005, 4, :o4, 1112499060
+ tz.transition 2005, 10, :o3, 1130639460
+ tz.transition 2006, 4, :o4, 1143948660
+ tz.transition 2006, 10, :o3, 1162089060
+ tz.transition 2007, 3, :o4, 1173583860
+ tz.transition 2007, 11, :o3, 1194143460
+ tz.transition 2008, 3, :o4, 1205033460
+ tz.transition 2008, 11, :o3, 1225593060
+ tz.transition 2009, 3, :o4, 1236483060
+ tz.transition 2009, 11, :o3, 1257042660
+ tz.transition 2010, 3, :o4, 1268537460
+ tz.transition 2010, 11, :o3, 1289097060
+ tz.transition 2011, 3, :o4, 1299987060
+ tz.transition 2011, 11, :o3, 1320546660
+ tz.transition 2012, 3, :o4, 1331436660
+ tz.transition 2012, 11, :o3, 1351996260
+ tz.transition 2013, 3, :o4, 1362886260
+ tz.transition 2013, 11, :o3, 1383445860
+ tz.transition 2014, 3, :o4, 1394335860
+ tz.transition 2014, 11, :o3, 1414895460
+ tz.transition 2015, 3, :o4, 1425785460
+ tz.transition 2015, 11, :o3, 1446345060
+ tz.transition 2016, 3, :o4, 1457839860
+ tz.transition 2016, 11, :o3, 1478399460
+ tz.transition 2017, 3, :o4, 1489289460
+ tz.transition 2017, 11, :o3, 1509849060
+ tz.transition 2018, 3, :o4, 1520739060
+ tz.transition 2018, 11, :o3, 1541298660
+ tz.transition 2019, 3, :o4, 1552188660
+ tz.transition 2019, 11, :o3, 1572748260
+ tz.transition 2020, 3, :o4, 1583638260
+ tz.transition 2020, 11, :o3, 1604197860
+ tz.transition 2021, 3, :o4, 1615692660
+ tz.transition 2021, 11, :o3, 1636252260
+ tz.transition 2022, 3, :o4, 1647142260
+ tz.transition 2022, 11, :o3, 1667701860
+ tz.transition 2023, 3, :o4, 1678591860
+ tz.transition 2023, 11, :o3, 1699151460
+ tz.transition 2024, 3, :o4, 1710041460
+ tz.transition 2024, 11, :o3, 1730601060
+ tz.transition 2025, 3, :o4, 1741491060
+ tz.transition 2025, 11, :o3, 1762050660
+ tz.transition 2026, 3, :o4, 1772940660
+ tz.transition 2026, 11, :o3, 1793500260
+ tz.transition 2027, 3, :o4, 1804995060
+ tz.transition 2027, 11, :o3, 1825554660
+ tz.transition 2028, 3, :o4, 1836444660
+ tz.transition 2028, 11, :o3, 1857004260
+ tz.transition 2029, 3, :o4, 1867894260
+ tz.transition 2029, 11, :o3, 1888453860
+ tz.transition 2030, 3, :o4, 1899343860
+ tz.transition 2030, 11, :o3, 1919903460
+ tz.transition 2031, 3, :o4, 1930793460
+ tz.transition 2031, 11, :o3, 1951353060
+ tz.transition 2032, 3, :o4, 1962847860
+ tz.transition 2032, 11, :o3, 1983407460
+ tz.transition 2033, 3, :o4, 1994297460
+ tz.transition 2033, 11, :o3, 2014857060
+ tz.transition 2034, 3, :o4, 2025747060
+ tz.transition 2034, 11, :o3, 2046306660
+ tz.transition 2035, 3, :o4, 2057196660
+ tz.transition 2035, 11, :o3, 2077756260
+ tz.transition 2036, 3, :o4, 2088646260
+ tz.transition 2036, 11, :o3, 2109205860
+ tz.transition 2037, 3, :o4, 2120095860
+ tz.transition 2037, 11, :o3, 2140655460
+ tz.transition 2038, 3, :o4, 3550315171, 1440
+ tz.transition 2038, 11, :o3, 3550657831, 1440
+ tz.transition 2039, 3, :o4, 3550839331, 1440
+ tz.transition 2039, 11, :o3, 3551181991, 1440
+ tz.transition 2040, 3, :o4, 3551363491, 1440
+ tz.transition 2040, 11, :o3, 3551706151, 1440
+ tz.transition 2041, 3, :o4, 3551887651, 1440
+ tz.transition 2041, 11, :o3, 3552230311, 1440
+ tz.transition 2042, 3, :o4, 3552411811, 1440
+ tz.transition 2042, 11, :o3, 3552754471, 1440
+ tz.transition 2043, 3, :o4, 3552935971, 1440
+ tz.transition 2043, 11, :o3, 3553278631, 1440
+ tz.transition 2044, 3, :o4, 3553470211, 1440
+ tz.transition 2044, 11, :o3, 3553812871, 1440
+ tz.transition 2045, 3, :o4, 3553994371, 1440
+ tz.transition 2045, 11, :o3, 3554337031, 1440
+ tz.transition 2046, 3, :o4, 3554518531, 1440
+ tz.transition 2046, 11, :o3, 3554861191, 1440
+ tz.transition 2047, 3, :o4, 3555042691, 1440
+ tz.transition 2047, 11, :o3, 3555385351, 1440
+ tz.transition 2048, 3, :o4, 3555566851, 1440
+ tz.transition 2048, 11, :o3, 3555909511, 1440
+ tz.transition 2049, 3, :o4, 3556101091, 1440
+ tz.transition 2049, 11, :o3, 3556443751, 1440
+ tz.transition 2050, 3, :o4, 3556625251, 1440
+ tz.transition 2050, 11, :o3, 3556967911, 1440
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Tijuana.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Tijuana.rb
new file mode 100644
index 000000000..423059da4
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Tijuana.rb
@@ -0,0 +1,196 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module America
+ module Tijuana
+ include TimezoneDefinition
+
+ timezone 'America/Tijuana' do |tz|
+ tz.offset :o0, -28084, 0, :LMT
+ tz.offset :o1, -25200, 0, :MST
+ tz.offset :o2, -28800, 0, :PST
+ tz.offset :o3, -28800, 3600, :PDT
+ tz.offset :o4, -28800, 3600, :PWT
+ tz.offset :o5, -28800, 3600, :PPT
+
+ tz.transition 1922, 1, :o1, 14538335, 6
+ tz.transition 1924, 1, :o2, 58170859, 24
+ tz.transition 1927, 6, :o1, 58201027, 24
+ tz.transition 1930, 11, :o2, 58231099, 24
+ tz.transition 1931, 4, :o3, 14558597, 6
+ tz.transition 1931, 9, :o2, 58238755, 24
+ tz.transition 1942, 4, :o4, 14582843, 6
+ tz.transition 1945, 8, :o5, 58360379, 24
+ tz.transition 1945, 11, :o2, 58362523, 24
+ tz.transition 1948, 4, :o3, 14595881, 6
+ tz.transition 1949, 1, :o2, 58390339, 24
+ tz.transition 1954, 4, :o3, 29218295, 12
+ tz.transition 1954, 9, :o2, 19480095, 8
+ tz.transition 1955, 4, :o3, 29222663, 12
+ tz.transition 1955, 9, :o2, 19483007, 8
+ tz.transition 1956, 4, :o3, 29227115, 12
+ tz.transition 1956, 9, :o2, 19485975, 8
+ tz.transition 1957, 4, :o3, 29231483, 12
+ tz.transition 1957, 9, :o2, 19488887, 8
+ tz.transition 1958, 4, :o3, 29235851, 12
+ tz.transition 1958, 9, :o2, 19491799, 8
+ tz.transition 1959, 4, :o3, 29240219, 12
+ tz.transition 1959, 9, :o2, 19494711, 8
+ tz.transition 1960, 4, :o3, 29244587, 12
+ tz.transition 1960, 9, :o2, 19497623, 8
+ tz.transition 1976, 4, :o3, 199274400
+ tz.transition 1976, 10, :o2, 215600400
+ tz.transition 1977, 4, :o3, 230724000
+ tz.transition 1977, 10, :o2, 247050000
+ tz.transition 1978, 4, :o3, 262778400
+ tz.transition 1978, 10, :o2, 278499600
+ tz.transition 1979, 4, :o3, 294228000
+ tz.transition 1979, 10, :o2, 309949200
+ tz.transition 1980, 4, :o3, 325677600
+ tz.transition 1980, 10, :o2, 341398800
+ tz.transition 1981, 4, :o3, 357127200
+ tz.transition 1981, 10, :o2, 372848400
+ tz.transition 1982, 4, :o3, 388576800
+ tz.transition 1982, 10, :o2, 404902800
+ tz.transition 1983, 4, :o3, 420026400
+ tz.transition 1983, 10, :o2, 436352400
+ tz.transition 1984, 4, :o3, 452080800
+ tz.transition 1984, 10, :o2, 467802000
+ tz.transition 1985, 4, :o3, 483530400
+ tz.transition 1985, 10, :o2, 499251600
+ tz.transition 1986, 4, :o3, 514980000
+ tz.transition 1986, 10, :o2, 530701200
+ tz.transition 1987, 4, :o3, 544615200
+ tz.transition 1987, 10, :o2, 562150800
+ tz.transition 1988, 4, :o3, 576064800
+ tz.transition 1988, 10, :o2, 594205200
+ tz.transition 1989, 4, :o3, 607514400
+ tz.transition 1989, 10, :o2, 625654800
+ tz.transition 1990, 4, :o3, 638964000
+ tz.transition 1990, 10, :o2, 657104400
+ tz.transition 1991, 4, :o3, 671018400
+ tz.transition 1991, 10, :o2, 688554000
+ tz.transition 1992, 4, :o3, 702468000
+ tz.transition 1992, 10, :o2, 720003600
+ tz.transition 1993, 4, :o3, 733917600
+ tz.transition 1993, 10, :o2, 752058000
+ tz.transition 1994, 4, :o3, 765367200
+ tz.transition 1994, 10, :o2, 783507600
+ tz.transition 1995, 4, :o3, 796816800
+ tz.transition 1995, 10, :o2, 814957200
+ tz.transition 1996, 4, :o3, 828871200
+ tz.transition 1996, 10, :o2, 846406800
+ tz.transition 1997, 4, :o3, 860320800
+ tz.transition 1997, 10, :o2, 877856400
+ tz.transition 1998, 4, :o3, 891770400
+ tz.transition 1998, 10, :o2, 909306000
+ tz.transition 1999, 4, :o3, 923220000
+ tz.transition 1999, 10, :o2, 941360400
+ tz.transition 2000, 4, :o3, 954669600
+ tz.transition 2000, 10, :o2, 972810000
+ tz.transition 2001, 4, :o3, 986119200
+ tz.transition 2001, 10, :o2, 1004259600
+ tz.transition 2002, 4, :o3, 1018173600
+ tz.transition 2002, 10, :o2, 1035709200
+ tz.transition 2003, 4, :o3, 1049623200
+ tz.transition 2003, 10, :o2, 1067158800
+ tz.transition 2004, 4, :o3, 1081072800
+ tz.transition 2004, 10, :o2, 1099213200
+ tz.transition 2005, 4, :o3, 1112522400
+ tz.transition 2005, 10, :o2, 1130662800
+ tz.transition 2006, 4, :o3, 1143972000
+ tz.transition 2006, 10, :o2, 1162112400
+ tz.transition 2007, 4, :o3, 1175421600
+ tz.transition 2007, 10, :o2, 1193562000
+ tz.transition 2008, 4, :o3, 1207476000
+ tz.transition 2008, 10, :o2, 1225011600
+ tz.transition 2009, 4, :o3, 1238925600
+ tz.transition 2009, 10, :o2, 1256461200
+ tz.transition 2010, 4, :o3, 1270375200
+ tz.transition 2010, 10, :o2, 1288515600
+ tz.transition 2011, 4, :o3, 1301824800
+ tz.transition 2011, 10, :o2, 1319965200
+ tz.transition 2012, 4, :o3, 1333274400
+ tz.transition 2012, 10, :o2, 1351414800
+ tz.transition 2013, 4, :o3, 1365328800
+ tz.transition 2013, 10, :o2, 1382864400
+ tz.transition 2014, 4, :o3, 1396778400
+ tz.transition 2014, 10, :o2, 1414314000
+ tz.transition 2015, 4, :o3, 1428228000
+ tz.transition 2015, 10, :o2, 1445763600
+ tz.transition 2016, 4, :o3, 1459677600
+ tz.transition 2016, 10, :o2, 1477818000
+ tz.transition 2017, 4, :o3, 1491127200
+ tz.transition 2017, 10, :o2, 1509267600
+ tz.transition 2018, 4, :o3, 1522576800
+ tz.transition 2018, 10, :o2, 1540717200
+ tz.transition 2019, 4, :o3, 1554631200
+ tz.transition 2019, 10, :o2, 1572166800
+ tz.transition 2020, 4, :o3, 1586080800
+ tz.transition 2020, 10, :o2, 1603616400
+ tz.transition 2021, 4, :o3, 1617530400
+ tz.transition 2021, 10, :o2, 1635670800
+ tz.transition 2022, 4, :o3, 1648980000
+ tz.transition 2022, 10, :o2, 1667120400
+ tz.transition 2023, 4, :o3, 1680429600
+ tz.transition 2023, 10, :o2, 1698570000
+ tz.transition 2024, 4, :o3, 1712484000
+ tz.transition 2024, 10, :o2, 1730019600
+ tz.transition 2025, 4, :o3, 1743933600
+ tz.transition 2025, 10, :o2, 1761469200
+ tz.transition 2026, 4, :o3, 1775383200
+ tz.transition 2026, 10, :o2, 1792918800
+ tz.transition 2027, 4, :o3, 1806832800
+ tz.transition 2027, 10, :o2, 1824973200
+ tz.transition 2028, 4, :o3, 1838282400
+ tz.transition 2028, 10, :o2, 1856422800
+ tz.transition 2029, 4, :o3, 1869732000
+ tz.transition 2029, 10, :o2, 1887872400
+ tz.transition 2030, 4, :o3, 1901786400
+ tz.transition 2030, 10, :o2, 1919322000
+ tz.transition 2031, 4, :o3, 1933236000
+ tz.transition 2031, 10, :o2, 1950771600
+ tz.transition 2032, 4, :o3, 1964685600
+ tz.transition 2032, 10, :o2, 1982826000
+ tz.transition 2033, 4, :o3, 1996135200
+ tz.transition 2033, 10, :o2, 2014275600
+ tz.transition 2034, 4, :o3, 2027584800
+ tz.transition 2034, 10, :o2, 2045725200
+ tz.transition 2035, 4, :o3, 2059034400
+ tz.transition 2035, 10, :o2, 2077174800
+ tz.transition 2036, 4, :o3, 2091088800
+ tz.transition 2036, 10, :o2, 2108624400
+ tz.transition 2037, 4, :o3, 2122538400
+ tz.transition 2037, 10, :o2, 2140074000
+ tz.transition 2038, 4, :o3, 29586215, 12
+ tz.transition 2038, 10, :o2, 19725823, 8
+ tz.transition 2039, 4, :o3, 29590583, 12
+ tz.transition 2039, 10, :o2, 19728735, 8
+ tz.transition 2040, 4, :o3, 29594951, 12
+ tz.transition 2040, 10, :o2, 19731647, 8
+ tz.transition 2041, 4, :o3, 29599403, 12
+ tz.transition 2041, 10, :o2, 19734559, 8
+ tz.transition 2042, 4, :o3, 29603771, 12
+ tz.transition 2042, 10, :o2, 19737471, 8
+ tz.transition 2043, 4, :o3, 29608139, 12
+ tz.transition 2043, 10, :o2, 19740383, 8
+ tz.transition 2044, 4, :o3, 29612507, 12
+ tz.transition 2044, 10, :o2, 19743351, 8
+ tz.transition 2045, 4, :o3, 29616875, 12
+ tz.transition 2045, 10, :o2, 19746263, 8
+ tz.transition 2046, 4, :o3, 29621243, 12
+ tz.transition 2046, 10, :o2, 19749175, 8
+ tz.transition 2047, 4, :o3, 29625695, 12
+ tz.transition 2047, 10, :o2, 19752087, 8
+ tz.transition 2048, 4, :o3, 29630063, 12
+ tz.transition 2048, 10, :o2, 19754999, 8
+ tz.transition 2049, 4, :o3, 29634431, 12
+ tz.transition 2049, 10, :o2, 19757967, 8
+ tz.transition 2050, 4, :o3, 29638799, 12
+ tz.transition 2050, 10, :o2, 19760879, 8
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Almaty.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Almaty.rb
new file mode 100644
index 000000000..9ee18970f
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Almaty.rb
@@ -0,0 +1,67 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Asia
+ module Almaty
+ include TimezoneDefinition
+
+ timezone 'Asia/Almaty' do |tz|
+ tz.offset :o0, 18468, 0, :LMT
+ tz.offset :o1, 18000, 0, :ALMT
+ tz.offset :o2, 21600, 0, :ALMT
+ tz.offset :o3, 21600, 3600, :ALMST
+
+ tz.transition 1924, 5, :o1, 1939125829, 800
+ tz.transition 1930, 6, :o2, 58227559, 24
+ tz.transition 1981, 3, :o3, 354909600
+ tz.transition 1981, 9, :o2, 370717200
+ tz.transition 1982, 3, :o3, 386445600
+ tz.transition 1982, 9, :o2, 402253200
+ tz.transition 1983, 3, :o3, 417981600
+ tz.transition 1983, 9, :o2, 433789200
+ tz.transition 1984, 3, :o3, 449604000
+ tz.transition 1984, 9, :o2, 465336000
+ tz.transition 1985, 3, :o3, 481060800
+ tz.transition 1985, 9, :o2, 496785600
+ tz.transition 1986, 3, :o3, 512510400
+ tz.transition 1986, 9, :o2, 528235200
+ tz.transition 1987, 3, :o3, 543960000
+ tz.transition 1987, 9, :o2, 559684800
+ tz.transition 1988, 3, :o3, 575409600
+ tz.transition 1988, 9, :o2, 591134400
+ tz.transition 1989, 3, :o3, 606859200
+ tz.transition 1989, 9, :o2, 622584000
+ tz.transition 1990, 3, :o3, 638308800
+ tz.transition 1990, 9, :o2, 654638400
+ tz.transition 1992, 3, :o3, 701802000
+ tz.transition 1992, 9, :o2, 717523200
+ tz.transition 1993, 3, :o3, 733262400
+ tz.transition 1993, 9, :o2, 748987200
+ tz.transition 1994, 3, :o3, 764712000
+ tz.transition 1994, 9, :o2, 780436800
+ tz.transition 1995, 3, :o3, 796161600
+ tz.transition 1995, 9, :o2, 811886400
+ tz.transition 1996, 3, :o3, 828216000
+ tz.transition 1996, 10, :o2, 846360000
+ tz.transition 1997, 3, :o3, 859665600
+ tz.transition 1997, 10, :o2, 877809600
+ tz.transition 1998, 3, :o3, 891115200
+ tz.transition 1998, 10, :o2, 909259200
+ tz.transition 1999, 3, :o3, 922564800
+ tz.transition 1999, 10, :o2, 941313600
+ tz.transition 2000, 3, :o3, 954014400
+ tz.transition 2000, 10, :o2, 972763200
+ tz.transition 2001, 3, :o3, 985464000
+ tz.transition 2001, 10, :o2, 1004212800
+ tz.transition 2002, 3, :o3, 1017518400
+ tz.transition 2002, 10, :o2, 1035662400
+ tz.transition 2003, 3, :o3, 1048968000
+ tz.transition 2003, 10, :o2, 1067112000
+ tz.transition 2004, 3, :o3, 1080417600
+ tz.transition 2004, 10, :o2, 1099166400
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Baghdad.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Baghdad.rb
new file mode 100644
index 000000000..774dca158
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Baghdad.rb
@@ -0,0 +1,73 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Asia
+ module Baghdad
+ include TimezoneDefinition
+
+ timezone 'Asia/Baghdad' do |tz|
+ tz.offset :o0, 10660, 0, :LMT
+ tz.offset :o1, 10656, 0, :BMT
+ tz.offset :o2, 10800, 0, :AST
+ tz.offset :o3, 10800, 3600, :ADT
+
+ tz.transition 1889, 12, :o1, 10417111387, 4320
+ tz.transition 1917, 12, :o2, 726478313, 300
+ tz.transition 1982, 4, :o3, 389048400
+ tz.transition 1982, 9, :o2, 402264000
+ tz.transition 1983, 3, :o3, 417906000
+ tz.transition 1983, 9, :o2, 433800000
+ tz.transition 1984, 3, :o3, 449614800
+ tz.transition 1984, 9, :o2, 465422400
+ tz.transition 1985, 3, :o3, 481150800
+ tz.transition 1985, 9, :o2, 496792800
+ tz.transition 1986, 3, :o3, 512517600
+ tz.transition 1986, 9, :o2, 528242400
+ tz.transition 1987, 3, :o3, 543967200
+ tz.transition 1987, 9, :o2, 559692000
+ tz.transition 1988, 3, :o3, 575416800
+ tz.transition 1988, 9, :o2, 591141600
+ tz.transition 1989, 3, :o3, 606866400
+ tz.transition 1989, 9, :o2, 622591200
+ tz.transition 1990, 3, :o3, 638316000
+ tz.transition 1990, 9, :o2, 654645600
+ tz.transition 1991, 4, :o3, 670464000
+ tz.transition 1991, 10, :o2, 686275200
+ tz.transition 1992, 4, :o3, 702086400
+ tz.transition 1992, 10, :o2, 717897600
+ tz.transition 1993, 4, :o3, 733622400
+ tz.transition 1993, 10, :o2, 749433600
+ tz.transition 1994, 4, :o3, 765158400
+ tz.transition 1994, 10, :o2, 780969600
+ tz.transition 1995, 4, :o3, 796694400
+ tz.transition 1995, 10, :o2, 812505600
+ tz.transition 1996, 4, :o3, 828316800
+ tz.transition 1996, 10, :o2, 844128000
+ tz.transition 1997, 4, :o3, 859852800
+ tz.transition 1997, 10, :o2, 875664000
+ tz.transition 1998, 4, :o3, 891388800
+ tz.transition 1998, 10, :o2, 907200000
+ tz.transition 1999, 4, :o3, 922924800
+ tz.transition 1999, 10, :o2, 938736000
+ tz.transition 2000, 4, :o3, 954547200
+ tz.transition 2000, 10, :o2, 970358400
+ tz.transition 2001, 4, :o3, 986083200
+ tz.transition 2001, 10, :o2, 1001894400
+ tz.transition 2002, 4, :o3, 1017619200
+ tz.transition 2002, 10, :o2, 1033430400
+ tz.transition 2003, 4, :o3, 1049155200
+ tz.transition 2003, 10, :o2, 1064966400
+ tz.transition 2004, 4, :o3, 1080777600
+ tz.transition 2004, 10, :o2, 1096588800
+ tz.transition 2005, 4, :o3, 1112313600
+ tz.transition 2005, 10, :o2, 1128124800
+ tz.transition 2006, 4, :o3, 1143849600
+ tz.transition 2006, 10, :o2, 1159660800
+ tz.transition 2007, 4, :o3, 1175385600
+ tz.transition 2007, 10, :o2, 1191196800
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Baku.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Baku.rb
new file mode 100644
index 000000000..e86340ebf
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Baku.rb
@@ -0,0 +1,161 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Asia
+ module Baku
+ include TimezoneDefinition
+
+ timezone 'Asia/Baku' do |tz|
+ tz.offset :o0, 11964, 0, :LMT
+ tz.offset :o1, 10800, 0, :BAKT
+ tz.offset :o2, 14400, 0, :BAKT
+ tz.offset :o3, 14400, 3600, :BAKST
+ tz.offset :o4, 10800, 3600, :BAKST
+ tz.offset :o5, 10800, 3600, :AZST
+ tz.offset :o6, 10800, 0, :AZT
+ tz.offset :o7, 14400, 0, :AZT
+ tz.offset :o8, 14400, 3600, :AZST
+
+ tz.transition 1924, 5, :o1, 17452133003, 7200
+ tz.transition 1957, 2, :o2, 19487187, 8
+ tz.transition 1981, 3, :o3, 354916800
+ tz.transition 1981, 9, :o2, 370724400
+ tz.transition 1982, 3, :o3, 386452800
+ tz.transition 1982, 9, :o2, 402260400
+ tz.transition 1983, 3, :o3, 417988800
+ tz.transition 1983, 9, :o2, 433796400
+ tz.transition 1984, 3, :o3, 449611200
+ tz.transition 1984, 9, :o2, 465343200
+ tz.transition 1985, 3, :o3, 481068000
+ tz.transition 1985, 9, :o2, 496792800
+ tz.transition 1986, 3, :o3, 512517600
+ tz.transition 1986, 9, :o2, 528242400
+ tz.transition 1987, 3, :o3, 543967200
+ tz.transition 1987, 9, :o2, 559692000
+ tz.transition 1988, 3, :o3, 575416800
+ tz.transition 1988, 9, :o2, 591141600
+ tz.transition 1989, 3, :o3, 606866400
+ tz.transition 1989, 9, :o2, 622591200
+ tz.transition 1990, 3, :o3, 638316000
+ tz.transition 1990, 9, :o2, 654645600
+ tz.transition 1991, 3, :o4, 670370400
+ tz.transition 1991, 8, :o5, 683496000
+ tz.transition 1991, 9, :o6, 686098800
+ tz.transition 1992, 3, :o5, 701812800
+ tz.transition 1992, 9, :o7, 717534000
+ tz.transition 1996, 3, :o8, 828234000
+ tz.transition 1996, 10, :o7, 846378000
+ tz.transition 1997, 3, :o8, 859680000
+ tz.transition 1997, 10, :o7, 877824000
+ tz.transition 1998, 3, :o8, 891129600
+ tz.transition 1998, 10, :o7, 909273600
+ tz.transition 1999, 3, :o8, 922579200
+ tz.transition 1999, 10, :o7, 941328000
+ tz.transition 2000, 3, :o8, 954028800
+ tz.transition 2000, 10, :o7, 972777600
+ tz.transition 2001, 3, :o8, 985478400
+ tz.transition 2001, 10, :o7, 1004227200
+ tz.transition 2002, 3, :o8, 1017532800
+ tz.transition 2002, 10, :o7, 1035676800
+ tz.transition 2003, 3, :o8, 1048982400
+ tz.transition 2003, 10, :o7, 1067126400
+ tz.transition 2004, 3, :o8, 1080432000
+ tz.transition 2004, 10, :o7, 1099180800
+ tz.transition 2005, 3, :o8, 1111881600
+ tz.transition 2005, 10, :o7, 1130630400
+ tz.transition 2006, 3, :o8, 1143331200
+ tz.transition 2006, 10, :o7, 1162080000
+ tz.transition 2007, 3, :o8, 1174780800
+ tz.transition 2007, 10, :o7, 1193529600
+ tz.transition 2008, 3, :o8, 1206835200
+ tz.transition 2008, 10, :o7, 1224979200
+ tz.transition 2009, 3, :o8, 1238284800
+ tz.transition 2009, 10, :o7, 1256428800
+ tz.transition 2010, 3, :o8, 1269734400
+ tz.transition 2010, 10, :o7, 1288483200
+ tz.transition 2011, 3, :o8, 1301184000
+ tz.transition 2011, 10, :o7, 1319932800
+ tz.transition 2012, 3, :o8, 1332633600
+ tz.transition 2012, 10, :o7, 1351382400
+ tz.transition 2013, 3, :o8, 1364688000
+ tz.transition 2013, 10, :o7, 1382832000
+ tz.transition 2014, 3, :o8, 1396137600
+ tz.transition 2014, 10, :o7, 1414281600
+ tz.transition 2015, 3, :o8, 1427587200
+ tz.transition 2015, 10, :o7, 1445731200
+ tz.transition 2016, 3, :o8, 1459036800
+ tz.transition 2016, 10, :o7, 1477785600
+ tz.transition 2017, 3, :o8, 1490486400
+ tz.transition 2017, 10, :o7, 1509235200
+ tz.transition 2018, 3, :o8, 1521936000
+ tz.transition 2018, 10, :o7, 1540684800
+ tz.transition 2019, 3, :o8, 1553990400
+ tz.transition 2019, 10, :o7, 1572134400
+ tz.transition 2020, 3, :o8, 1585440000
+ tz.transition 2020, 10, :o7, 1603584000
+ tz.transition 2021, 3, :o8, 1616889600
+ tz.transition 2021, 10, :o7, 1635638400
+ tz.transition 2022, 3, :o8, 1648339200
+ tz.transition 2022, 10, :o7, 1667088000
+ tz.transition 2023, 3, :o8, 1679788800
+ tz.transition 2023, 10, :o7, 1698537600
+ tz.transition 2024, 3, :o8, 1711843200
+ tz.transition 2024, 10, :o7, 1729987200
+ tz.transition 2025, 3, :o8, 1743292800
+ tz.transition 2025, 10, :o7, 1761436800
+ tz.transition 2026, 3, :o8, 1774742400
+ tz.transition 2026, 10, :o7, 1792886400
+ tz.transition 2027, 3, :o8, 1806192000
+ tz.transition 2027, 10, :o7, 1824940800
+ tz.transition 2028, 3, :o8, 1837641600
+ tz.transition 2028, 10, :o7, 1856390400
+ tz.transition 2029, 3, :o8, 1869091200
+ tz.transition 2029, 10, :o7, 1887840000
+ tz.transition 2030, 3, :o8, 1901145600
+ tz.transition 2030, 10, :o7, 1919289600
+ tz.transition 2031, 3, :o8, 1932595200
+ tz.transition 2031, 10, :o7, 1950739200
+ tz.transition 2032, 3, :o8, 1964044800
+ tz.transition 2032, 10, :o7, 1982793600
+ tz.transition 2033, 3, :o8, 1995494400
+ tz.transition 2033, 10, :o7, 2014243200
+ tz.transition 2034, 3, :o8, 2026944000
+ tz.transition 2034, 10, :o7, 2045692800
+ tz.transition 2035, 3, :o8, 2058393600
+ tz.transition 2035, 10, :o7, 2077142400
+ tz.transition 2036, 3, :o8, 2090448000
+ tz.transition 2036, 10, :o7, 2108592000
+ tz.transition 2037, 3, :o8, 2121897600
+ tz.transition 2037, 10, :o7, 2140041600
+ tz.transition 2038, 3, :o8, 4931021, 2
+ tz.transition 2038, 10, :o7, 4931455, 2
+ tz.transition 2039, 3, :o8, 4931749, 2
+ tz.transition 2039, 10, :o7, 4932183, 2
+ tz.transition 2040, 3, :o8, 4932477, 2
+ tz.transition 2040, 10, :o7, 4932911, 2
+ tz.transition 2041, 3, :o8, 4933219, 2
+ tz.transition 2041, 10, :o7, 4933639, 2
+ tz.transition 2042, 3, :o8, 4933947, 2
+ tz.transition 2042, 10, :o7, 4934367, 2
+ tz.transition 2043, 3, :o8, 4934675, 2
+ tz.transition 2043, 10, :o7, 4935095, 2
+ tz.transition 2044, 3, :o8, 4935403, 2
+ tz.transition 2044, 10, :o7, 4935837, 2
+ tz.transition 2045, 3, :o8, 4936131, 2
+ tz.transition 2045, 10, :o7, 4936565, 2
+ tz.transition 2046, 3, :o8, 4936859, 2
+ tz.transition 2046, 10, :o7, 4937293, 2
+ tz.transition 2047, 3, :o8, 4937601, 2
+ tz.transition 2047, 10, :o7, 4938021, 2
+ tz.transition 2048, 3, :o8, 4938329, 2
+ tz.transition 2048, 10, :o7, 4938749, 2
+ tz.transition 2049, 3, :o8, 4939057, 2
+ tz.transition 2049, 10, :o7, 4939491, 2
+ tz.transition 2050, 3, :o8, 4939785, 2
+ tz.transition 2050, 10, :o7, 4940219, 2
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Bangkok.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Bangkok.rb
new file mode 100644
index 000000000..139194e5e
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Bangkok.rb
@@ -0,0 +1,20 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Asia
+ module Bangkok
+ include TimezoneDefinition
+
+ timezone 'Asia/Bangkok' do |tz|
+ tz.offset :o0, 24124, 0, :LMT
+ tz.offset :o1, 24124, 0, :BMT
+ tz.offset :o2, 25200, 0, :ICT
+
+ tz.transition 1879, 12, :o1, 52006648769, 21600
+ tz.transition 1920, 3, :o2, 52324168769, 21600
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Chongqing.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Chongqing.rb
new file mode 100644
index 000000000..8c94b4ba8
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Chongqing.rb
@@ -0,0 +1,33 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Asia
+ module Chongqing
+ include TimezoneDefinition
+
+ timezone 'Asia/Chongqing' do |tz|
+ tz.offset :o0, 25580, 0, :LMT
+ tz.offset :o1, 25200, 0, :LONT
+ tz.offset :o2, 28800, 0, :CST
+ tz.offset :o3, 28800, 3600, :CDT
+
+ tz.transition 1927, 12, :o1, 10477063601, 4320
+ tz.transition 1980, 4, :o2, 325962000
+ tz.transition 1986, 5, :o3, 515520000
+ tz.transition 1986, 9, :o2, 527007600
+ tz.transition 1987, 4, :o3, 545155200
+ tz.transition 1987, 9, :o2, 558457200
+ tz.transition 1988, 4, :o3, 576604800
+ tz.transition 1988, 9, :o2, 589906800
+ tz.transition 1989, 4, :o3, 608659200
+ tz.transition 1989, 9, :o2, 621961200
+ tz.transition 1990, 4, :o3, 640108800
+ tz.transition 1990, 9, :o2, 653410800
+ tz.transition 1991, 4, :o3, 671558400
+ tz.transition 1991, 9, :o2, 684860400
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Dhaka.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Dhaka.rb
new file mode 100644
index 000000000..ccd026550
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Dhaka.rb
@@ -0,0 +1,27 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Asia
+ module Dhaka
+ include TimezoneDefinition
+
+ timezone 'Asia/Dhaka' do |tz|
+ tz.offset :o0, 21700, 0, :LMT
+ tz.offset :o1, 21200, 0, :HMT
+ tz.offset :o2, 23400, 0, :BURT
+ tz.offset :o3, 19800, 0, :IST
+ tz.offset :o4, 21600, 0, :DACT
+ tz.offset :o5, 21600, 0, :BDT
+
+ tz.transition 1889, 12, :o1, 2083422167, 864
+ tz.transition 1941, 9, :o2, 524937943, 216
+ tz.transition 1942, 5, :o3, 116663723, 48
+ tz.transition 1942, 8, :o2, 116668957, 48
+ tz.transition 1951, 9, :o4, 116828123, 48
+ tz.transition 1971, 3, :o5, 38772000
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Hong_Kong.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Hong_Kong.rb
new file mode 100644
index 000000000..f1edd75ac
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Hong_Kong.rb
@@ -0,0 +1,87 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Asia
+ module Hong_Kong
+ include TimezoneDefinition
+
+ timezone 'Asia/Hong_Kong' do |tz|
+ tz.offset :o0, 27396, 0, :LMT
+ tz.offset :o1, 28800, 0, :HKT
+ tz.offset :o2, 28800, 3600, :HKST
+
+ tz.transition 1904, 10, :o1, 5800279639, 2400
+ tz.transition 1946, 4, :o2, 38910885, 16
+ tz.transition 1946, 11, :o1, 116743453, 48
+ tz.transition 1947, 4, :o2, 38916613, 16
+ tz.transition 1947, 12, :o1, 116762365, 48
+ tz.transition 1948, 5, :o2, 38922773, 16
+ tz.transition 1948, 10, :o1, 116777053, 48
+ tz.transition 1949, 4, :o2, 38928149, 16
+ tz.transition 1949, 10, :o1, 116794525, 48
+ tz.transition 1950, 4, :o2, 38933973, 16
+ tz.transition 1950, 10, :o1, 116811997, 48
+ tz.transition 1951, 3, :o2, 38939797, 16
+ tz.transition 1951, 10, :o1, 116829469, 48
+ tz.transition 1952, 4, :o2, 38945733, 16
+ tz.transition 1952, 10, :o1, 116846941, 48
+ tz.transition 1953, 4, :o2, 38951557, 16
+ tz.transition 1953, 10, :o1, 116864749, 48
+ tz.transition 1954, 3, :o2, 38957157, 16
+ tz.transition 1954, 10, :o1, 116882221, 48
+ tz.transition 1955, 3, :o2, 38962981, 16
+ tz.transition 1955, 11, :o1, 116900029, 48
+ tz.transition 1956, 3, :o2, 38968805, 16
+ tz.transition 1956, 11, :o1, 116917501, 48
+ tz.transition 1957, 3, :o2, 38974741, 16
+ tz.transition 1957, 11, :o1, 116934973, 48
+ tz.transition 1958, 3, :o2, 38980565, 16
+ tz.transition 1958, 11, :o1, 116952445, 48
+ tz.transition 1959, 3, :o2, 38986389, 16
+ tz.transition 1959, 10, :o1, 116969917, 48
+ tz.transition 1960, 3, :o2, 38992213, 16
+ tz.transition 1960, 11, :o1, 116987725, 48
+ tz.transition 1961, 3, :o2, 38998037, 16
+ tz.transition 1961, 11, :o1, 117005197, 48
+ tz.transition 1962, 3, :o2, 39003861, 16
+ tz.transition 1962, 11, :o1, 117022669, 48
+ tz.transition 1963, 3, :o2, 39009797, 16
+ tz.transition 1963, 11, :o1, 117040141, 48
+ tz.transition 1964, 3, :o2, 39015621, 16
+ tz.transition 1964, 10, :o1, 117057613, 48
+ tz.transition 1965, 4, :o2, 39021893, 16
+ tz.transition 1965, 10, :o1, 117074413, 48
+ tz.transition 1966, 4, :o2, 39027717, 16
+ tz.transition 1966, 10, :o1, 117091885, 48
+ tz.transition 1967, 4, :o2, 39033541, 16
+ tz.transition 1967, 10, :o1, 117109693, 48
+ tz.transition 1968, 4, :o2, 39039477, 16
+ tz.transition 1968, 10, :o1, 117127165, 48
+ tz.transition 1969, 4, :o2, 39045301, 16
+ tz.transition 1969, 10, :o1, 117144637, 48
+ tz.transition 1970, 4, :o2, 9315000
+ tz.transition 1970, 10, :o1, 25036200
+ tz.transition 1971, 4, :o2, 40764600
+ tz.transition 1971, 10, :o1, 56485800
+ tz.transition 1972, 4, :o2, 72214200
+ tz.transition 1972, 10, :o1, 88540200
+ tz.transition 1973, 4, :o2, 104268600
+ tz.transition 1973, 10, :o1, 119989800
+ tz.transition 1974, 4, :o2, 135718200
+ tz.transition 1974, 10, :o1, 151439400
+ tz.transition 1975, 4, :o2, 167167800
+ tz.transition 1975, 10, :o1, 182889000
+ tz.transition 1976, 4, :o2, 198617400
+ tz.transition 1976, 10, :o1, 214338600
+ tz.transition 1977, 4, :o2, 230067000
+ tz.transition 1977, 10, :o1, 245788200
+ tz.transition 1979, 5, :o2, 295385400
+ tz.transition 1979, 10, :o1, 309292200
+ tz.transition 1980, 5, :o2, 326835000
+ tz.transition 1980, 10, :o1, 340741800
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Irkutsk.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Irkutsk.rb
new file mode 100644
index 000000000..2d47d9580
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Irkutsk.rb
@@ -0,0 +1,165 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Asia
+ module Irkutsk
+ include TimezoneDefinition
+
+ timezone 'Asia/Irkutsk' do |tz|
+ tz.offset :o0, 25040, 0, :LMT
+ tz.offset :o1, 25040, 0, :IMT
+ tz.offset :o2, 25200, 0, :IRKT
+ tz.offset :o3, 28800, 0, :IRKT
+ tz.offset :o4, 28800, 3600, :IRKST
+ tz.offset :o5, 25200, 3600, :IRKST
+
+ tz.transition 1879, 12, :o1, 2600332427, 1080
+ tz.transition 1920, 1, :o2, 2616136067, 1080
+ tz.transition 1930, 6, :o3, 58227557, 24
+ tz.transition 1981, 3, :o4, 354902400
+ tz.transition 1981, 9, :o3, 370710000
+ tz.transition 1982, 3, :o4, 386438400
+ tz.transition 1982, 9, :o3, 402246000
+ tz.transition 1983, 3, :o4, 417974400
+ tz.transition 1983, 9, :o3, 433782000
+ tz.transition 1984, 3, :o4, 449596800
+ tz.transition 1984, 9, :o3, 465328800
+ tz.transition 1985, 3, :o4, 481053600
+ tz.transition 1985, 9, :o3, 496778400
+ tz.transition 1986, 3, :o4, 512503200
+ tz.transition 1986, 9, :o3, 528228000
+ tz.transition 1987, 3, :o4, 543952800
+ tz.transition 1987, 9, :o3, 559677600
+ tz.transition 1988, 3, :o4, 575402400
+ tz.transition 1988, 9, :o3, 591127200
+ tz.transition 1989, 3, :o4, 606852000
+ tz.transition 1989, 9, :o3, 622576800
+ tz.transition 1990, 3, :o4, 638301600
+ tz.transition 1990, 9, :o3, 654631200
+ tz.transition 1991, 3, :o5, 670356000
+ tz.transition 1991, 9, :o2, 686084400
+ tz.transition 1992, 1, :o3, 695761200
+ tz.transition 1992, 3, :o4, 701794800
+ tz.transition 1992, 9, :o3, 717516000
+ tz.transition 1993, 3, :o4, 733255200
+ tz.transition 1993, 9, :o3, 748980000
+ tz.transition 1994, 3, :o4, 764704800
+ tz.transition 1994, 9, :o3, 780429600
+ tz.transition 1995, 3, :o4, 796154400
+ tz.transition 1995, 9, :o3, 811879200
+ tz.transition 1996, 3, :o4, 828208800
+ tz.transition 1996, 10, :o3, 846352800
+ tz.transition 1997, 3, :o4, 859658400
+ tz.transition 1997, 10, :o3, 877802400
+ tz.transition 1998, 3, :o4, 891108000
+ tz.transition 1998, 10, :o3, 909252000
+ tz.transition 1999, 3, :o4, 922557600
+ tz.transition 1999, 10, :o3, 941306400
+ tz.transition 2000, 3, :o4, 954007200
+ tz.transition 2000, 10, :o3, 972756000
+ tz.transition 2001, 3, :o4, 985456800
+ tz.transition 2001, 10, :o3, 1004205600
+ tz.transition 2002, 3, :o4, 1017511200
+ tz.transition 2002, 10, :o3, 1035655200
+ tz.transition 2003, 3, :o4, 1048960800
+ tz.transition 2003, 10, :o3, 1067104800
+ tz.transition 2004, 3, :o4, 1080410400
+ tz.transition 2004, 10, :o3, 1099159200
+ tz.transition 2005, 3, :o4, 1111860000
+ tz.transition 2005, 10, :o3, 1130608800
+ tz.transition 2006, 3, :o4, 1143309600
+ tz.transition 2006, 10, :o3, 1162058400
+ tz.transition 2007, 3, :o4, 1174759200
+ tz.transition 2007, 10, :o3, 1193508000
+ tz.transition 2008, 3, :o4, 1206813600
+ tz.transition 2008, 10, :o3, 1224957600
+ tz.transition 2009, 3, :o4, 1238263200
+ tz.transition 2009, 10, :o3, 1256407200
+ tz.transition 2010, 3, :o4, 1269712800
+ tz.transition 2010, 10, :o3, 1288461600
+ tz.transition 2011, 3, :o4, 1301162400
+ tz.transition 2011, 10, :o3, 1319911200
+ tz.transition 2012, 3, :o4, 1332612000
+ tz.transition 2012, 10, :o3, 1351360800
+ tz.transition 2013, 3, :o4, 1364666400
+ tz.transition 2013, 10, :o3, 1382810400
+ tz.transition 2014, 3, :o4, 1396116000
+ tz.transition 2014, 10, :o3, 1414260000
+ tz.transition 2015, 3, :o4, 1427565600
+ tz.transition 2015, 10, :o3, 1445709600
+ tz.transition 2016, 3, :o4, 1459015200
+ tz.transition 2016, 10, :o3, 1477764000
+ tz.transition 2017, 3, :o4, 1490464800
+ tz.transition 2017, 10, :o3, 1509213600
+ tz.transition 2018, 3, :o4, 1521914400
+ tz.transition 2018, 10, :o3, 1540663200
+ tz.transition 2019, 3, :o4, 1553968800
+ tz.transition 2019, 10, :o3, 1572112800
+ tz.transition 2020, 3, :o4, 1585418400
+ tz.transition 2020, 10, :o3, 1603562400
+ tz.transition 2021, 3, :o4, 1616868000
+ tz.transition 2021, 10, :o3, 1635616800
+ tz.transition 2022, 3, :o4, 1648317600
+ tz.transition 2022, 10, :o3, 1667066400
+ tz.transition 2023, 3, :o4, 1679767200
+ tz.transition 2023, 10, :o3, 1698516000
+ tz.transition 2024, 3, :o4, 1711821600
+ tz.transition 2024, 10, :o3, 1729965600
+ tz.transition 2025, 3, :o4, 1743271200
+ tz.transition 2025, 10, :o3, 1761415200
+ tz.transition 2026, 3, :o4, 1774720800
+ tz.transition 2026, 10, :o3, 1792864800
+ tz.transition 2027, 3, :o4, 1806170400
+ tz.transition 2027, 10, :o3, 1824919200
+ tz.transition 2028, 3, :o4, 1837620000
+ tz.transition 2028, 10, :o3, 1856368800
+ tz.transition 2029, 3, :o4, 1869069600
+ tz.transition 2029, 10, :o3, 1887818400
+ tz.transition 2030, 3, :o4, 1901124000
+ tz.transition 2030, 10, :o3, 1919268000
+ tz.transition 2031, 3, :o4, 1932573600
+ tz.transition 2031, 10, :o3, 1950717600
+ tz.transition 2032, 3, :o4, 1964023200
+ tz.transition 2032, 10, :o3, 1982772000
+ tz.transition 2033, 3, :o4, 1995472800
+ tz.transition 2033, 10, :o3, 2014221600
+ tz.transition 2034, 3, :o4, 2026922400
+ tz.transition 2034, 10, :o3, 2045671200
+ tz.transition 2035, 3, :o4, 2058372000
+ tz.transition 2035, 10, :o3, 2077120800
+ tz.transition 2036, 3, :o4, 2090426400
+ tz.transition 2036, 10, :o3, 2108570400
+ tz.transition 2037, 3, :o4, 2121876000
+ tz.transition 2037, 10, :o3, 2140020000
+ tz.transition 2038, 3, :o4, 9862041, 4
+ tz.transition 2038, 10, :o3, 9862909, 4
+ tz.transition 2039, 3, :o4, 9863497, 4
+ tz.transition 2039, 10, :o3, 9864365, 4
+ tz.transition 2040, 3, :o4, 9864953, 4
+ tz.transition 2040, 10, :o3, 9865821, 4
+ tz.transition 2041, 3, :o4, 9866437, 4
+ tz.transition 2041, 10, :o3, 9867277, 4
+ tz.transition 2042, 3, :o4, 9867893, 4
+ tz.transition 2042, 10, :o3, 9868733, 4
+ tz.transition 2043, 3, :o4, 9869349, 4
+ tz.transition 2043, 10, :o3, 9870189, 4
+ tz.transition 2044, 3, :o4, 9870805, 4
+ tz.transition 2044, 10, :o3, 9871673, 4
+ tz.transition 2045, 3, :o4, 9872261, 4
+ tz.transition 2045, 10, :o3, 9873129, 4
+ tz.transition 2046, 3, :o4, 9873717, 4
+ tz.transition 2046, 10, :o3, 9874585, 4
+ tz.transition 2047, 3, :o4, 9875201, 4
+ tz.transition 2047, 10, :o3, 9876041, 4
+ tz.transition 2048, 3, :o4, 9876657, 4
+ tz.transition 2048, 10, :o3, 9877497, 4
+ tz.transition 2049, 3, :o4, 9878113, 4
+ tz.transition 2049, 10, :o3, 9878981, 4
+ tz.transition 2050, 3, :o4, 9879569, 4
+ tz.transition 2050, 10, :o3, 9880437, 4
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Jakarta.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Jakarta.rb
new file mode 100644
index 000000000..cc58fa173
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Jakarta.rb
@@ -0,0 +1,30 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Asia
+ module Jakarta
+ include TimezoneDefinition
+
+ timezone 'Asia/Jakarta' do |tz|
+ tz.offset :o0, 25632, 0, :LMT
+ tz.offset :o1, 25632, 0, :JMT
+ tz.offset :o2, 26400, 0, :JAVT
+ tz.offset :o3, 27000, 0, :WIT
+ tz.offset :o4, 32400, 0, :JST
+ tz.offset :o5, 28800, 0, :WIT
+ tz.offset :o6, 25200, 0, :WIT
+
+ tz.transition 1867, 8, :o1, 720956461, 300
+ tz.transition 1923, 12, :o2, 87256267, 36
+ tz.transition 1932, 10, :o3, 87372439, 36
+ tz.transition 1942, 3, :o4, 38887059, 16
+ tz.transition 1945, 9, :o3, 19453769, 8
+ tz.transition 1948, 4, :o5, 38922755, 16
+ tz.transition 1950, 4, :o3, 14600413, 6
+ tz.transition 1963, 12, :o6, 39014323, 16
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Jerusalem.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Jerusalem.rb
new file mode 100644
index 000000000..9b737b899
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Jerusalem.rb
@@ -0,0 +1,163 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Asia
+ module Jerusalem
+ include TimezoneDefinition
+
+ timezone 'Asia/Jerusalem' do |tz|
+ tz.offset :o0, 8456, 0, :LMT
+ tz.offset :o1, 8440, 0, :JMT
+ tz.offset :o2, 7200, 0, :IST
+ tz.offset :o3, 7200, 3600, :IDT
+ tz.offset :o4, 7200, 7200, :IDDT
+
+ tz.transition 1879, 12, :o1, 26003326343, 10800
+ tz.transition 1917, 12, :o2, 5230643909, 2160
+ tz.transition 1940, 5, :o3, 29157377, 12
+ tz.transition 1942, 10, :o2, 19445315, 8
+ tz.transition 1943, 4, :o3, 4861631, 2
+ tz.transition 1943, 10, :o2, 19448235, 8
+ tz.transition 1944, 3, :o3, 29174177, 12
+ tz.transition 1944, 10, :o2, 19451163, 8
+ tz.transition 1945, 4, :o3, 29178737, 12
+ tz.transition 1945, 10, :o2, 58362251, 24
+ tz.transition 1946, 4, :o3, 4863853, 2
+ tz.transition 1946, 10, :o2, 19457003, 8
+ tz.transition 1948, 5, :o4, 29192333, 12
+ tz.transition 1948, 8, :o3, 7298386, 3
+ tz.transition 1948, 10, :o2, 58388555, 24
+ tz.transition 1949, 4, :o3, 29196449, 12
+ tz.transition 1949, 10, :o2, 58397315, 24
+ tz.transition 1950, 4, :o3, 29200649, 12
+ tz.transition 1950, 9, :o2, 4867079, 2
+ tz.transition 1951, 3, :o3, 29204849, 12
+ tz.transition 1951, 11, :o2, 4867923, 2
+ tz.transition 1952, 4, :o3, 4868245, 2
+ tz.transition 1952, 10, :o2, 4868609, 2
+ tz.transition 1953, 4, :o3, 4868959, 2
+ tz.transition 1953, 9, :o2, 4869267, 2
+ tz.transition 1954, 6, :o3, 29218877, 12
+ tz.transition 1954, 9, :o2, 19479979, 8
+ tz.transition 1955, 6, :o3, 4870539, 2
+ tz.transition 1955, 9, :o2, 19482891, 8
+ tz.transition 1956, 6, :o3, 29227529, 12
+ tz.transition 1956, 9, :o2, 4871493, 2
+ tz.transition 1957, 4, :o3, 4871915, 2
+ tz.transition 1957, 9, :o2, 19488827, 8
+ tz.transition 1974, 7, :o3, 142380000
+ tz.transition 1974, 10, :o2, 150843600
+ tz.transition 1975, 4, :o3, 167176800
+ tz.transition 1975, 8, :o2, 178664400
+ tz.transition 1985, 4, :o3, 482277600
+ tz.transition 1985, 9, :o2, 495579600
+ tz.transition 1986, 5, :o3, 516751200
+ tz.transition 1986, 9, :o2, 526424400
+ tz.transition 1987, 4, :o3, 545436000
+ tz.transition 1987, 9, :o2, 558478800
+ tz.transition 1988, 4, :o3, 576540000
+ tz.transition 1988, 9, :o2, 589237200
+ tz.transition 1989, 4, :o3, 609890400
+ tz.transition 1989, 9, :o2, 620773200
+ tz.transition 1990, 3, :o3, 638316000
+ tz.transition 1990, 8, :o2, 651618000
+ tz.transition 1991, 3, :o3, 669765600
+ tz.transition 1991, 8, :o2, 683672400
+ tz.transition 1992, 3, :o3, 701820000
+ tz.transition 1992, 9, :o2, 715726800
+ tz.transition 1993, 4, :o3, 733701600
+ tz.transition 1993, 9, :o2, 747176400
+ tz.transition 1994, 3, :o3, 765151200
+ tz.transition 1994, 8, :o2, 778021200
+ tz.transition 1995, 3, :o3, 796600800
+ tz.transition 1995, 9, :o2, 810075600
+ tz.transition 1996, 3, :o3, 826840800
+ tz.transition 1996, 9, :o2, 842821200
+ tz.transition 1997, 3, :o3, 858895200
+ tz.transition 1997, 9, :o2, 874184400
+ tz.transition 1998, 3, :o3, 890344800
+ tz.transition 1998, 9, :o2, 905029200
+ tz.transition 1999, 4, :o3, 923011200
+ tz.transition 1999, 9, :o2, 936313200
+ tz.transition 2000, 4, :o3, 955670400
+ tz.transition 2000, 10, :o2, 970783200
+ tz.transition 2001, 4, :o3, 986770800
+ tz.transition 2001, 9, :o2, 1001282400
+ tz.transition 2002, 3, :o3, 1017356400
+ tz.transition 2002, 10, :o2, 1033941600
+ tz.transition 2003, 3, :o3, 1048806000
+ tz.transition 2003, 10, :o2, 1065132000
+ tz.transition 2004, 4, :o3, 1081292400
+ tz.transition 2004, 9, :o2, 1095804000
+ tz.transition 2005, 4, :o3, 1112313600
+ tz.transition 2005, 10, :o2, 1128812400
+ tz.transition 2006, 3, :o3, 1143763200
+ tz.transition 2006, 9, :o2, 1159657200
+ tz.transition 2007, 3, :o3, 1175212800
+ tz.transition 2007, 9, :o2, 1189897200
+ tz.transition 2008, 3, :o3, 1206662400
+ tz.transition 2008, 10, :o2, 1223161200
+ tz.transition 2009, 3, :o3, 1238112000
+ tz.transition 2009, 9, :o2, 1254006000
+ tz.transition 2010, 3, :o3, 1269561600
+ tz.transition 2010, 9, :o2, 1284246000
+ tz.transition 2011, 4, :o3, 1301616000
+ tz.transition 2011, 10, :o2, 1317510000
+ tz.transition 2012, 3, :o3, 1333065600
+ tz.transition 2012, 9, :o2, 1348354800
+ tz.transition 2013, 3, :o3, 1364515200
+ tz.transition 2013, 9, :o2, 1378594800
+ tz.transition 2014, 3, :o3, 1395964800
+ tz.transition 2014, 9, :o2, 1411858800
+ tz.transition 2015, 3, :o3, 1427414400
+ tz.transition 2015, 9, :o2, 1442703600
+ tz.transition 2016, 4, :o3, 1459468800
+ tz.transition 2016, 10, :o2, 1475967600
+ tz.transition 2017, 3, :o3, 1490918400
+ tz.transition 2017, 9, :o2, 1506207600
+ tz.transition 2018, 3, :o3, 1522368000
+ tz.transition 2018, 9, :o2, 1537052400
+ tz.transition 2019, 3, :o3, 1553817600
+ tz.transition 2019, 10, :o2, 1570316400
+ tz.transition 2020, 3, :o3, 1585267200
+ tz.transition 2020, 9, :o2, 1601161200
+ tz.transition 2021, 3, :o3, 1616716800
+ tz.transition 2021, 9, :o2, 1631401200
+ tz.transition 2022, 4, :o3, 1648771200
+ tz.transition 2022, 10, :o2, 1664665200
+ tz.transition 2023, 3, :o3, 1680220800
+ tz.transition 2023, 9, :o2, 1695510000
+ tz.transition 2024, 3, :o3, 1711670400
+ tz.transition 2024, 10, :o2, 1728169200
+ tz.transition 2025, 3, :o3, 1743120000
+ tz.transition 2025, 9, :o2, 1759014000
+ tz.transition 2026, 3, :o3, 1774569600
+ tz.transition 2026, 9, :o2, 1789858800
+ tz.transition 2027, 3, :o3, 1806019200
+ tz.transition 2027, 10, :o2, 1823122800
+ tz.transition 2028, 3, :o3, 1838073600
+ tz.transition 2028, 9, :o2, 1853362800
+ tz.transition 2029, 3, :o3, 1869523200
+ tz.transition 2029, 9, :o2, 1884207600
+ tz.transition 2030, 3, :o3, 1900972800
+ tz.transition 2030, 10, :o2, 1917471600
+ tz.transition 2031, 3, :o3, 1932422400
+ tz.transition 2031, 9, :o2, 1947711600
+ tz.transition 2032, 3, :o3, 1963872000
+ tz.transition 2032, 9, :o2, 1978556400
+ tz.transition 2033, 4, :o3, 1995926400
+ tz.transition 2033, 10, :o2, 2011820400
+ tz.transition 2034, 3, :o3, 2027376000
+ tz.transition 2034, 9, :o2, 2042060400
+ tz.transition 2035, 3, :o3, 2058825600
+ tz.transition 2035, 10, :o2, 2075324400
+ tz.transition 2036, 3, :o3, 2090275200
+ tz.transition 2036, 9, :o2, 2106169200
+ tz.transition 2037, 3, :o3, 2121724800
+ tz.transition 2037, 9, :o2, 2136409200
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Kabul.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Kabul.rb
new file mode 100644
index 000000000..669c09790
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Kabul.rb
@@ -0,0 +1,20 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Asia
+ module Kabul
+ include TimezoneDefinition
+
+ timezone 'Asia/Kabul' do |tz|
+ tz.offset :o0, 16608, 0, :LMT
+ tz.offset :o1, 14400, 0, :AFT
+ tz.offset :o2, 16200, 0, :AFT
+
+ tz.transition 1889, 12, :o1, 2170231477, 900
+ tz.transition 1944, 12, :o2, 7294369, 3
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Kamchatka.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Kamchatka.rb
new file mode 100644
index 000000000..2f1690b3a
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Kamchatka.rb
@@ -0,0 +1,163 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Asia
+ module Kamchatka
+ include TimezoneDefinition
+
+ timezone 'Asia/Kamchatka' do |tz|
+ tz.offset :o0, 38076, 0, :LMT
+ tz.offset :o1, 39600, 0, :PETT
+ tz.offset :o2, 43200, 0, :PETT
+ tz.offset :o3, 43200, 3600, :PETST
+ tz.offset :o4, 39600, 3600, :PETST
+
+ tz.transition 1922, 11, :o1, 17448250027, 7200
+ tz.transition 1930, 6, :o2, 58227553, 24
+ tz.transition 1981, 3, :o3, 354888000
+ tz.transition 1981, 9, :o2, 370695600
+ tz.transition 1982, 3, :o3, 386424000
+ tz.transition 1982, 9, :o2, 402231600
+ tz.transition 1983, 3, :o3, 417960000
+ tz.transition 1983, 9, :o2, 433767600
+ tz.transition 1984, 3, :o3, 449582400
+ tz.transition 1984, 9, :o2, 465314400
+ tz.transition 1985, 3, :o3, 481039200
+ tz.transition 1985, 9, :o2, 496764000
+ tz.transition 1986, 3, :o3, 512488800
+ tz.transition 1986, 9, :o2, 528213600
+ tz.transition 1987, 3, :o3, 543938400
+ tz.transition 1987, 9, :o2, 559663200
+ tz.transition 1988, 3, :o3, 575388000
+ tz.transition 1988, 9, :o2, 591112800
+ tz.transition 1989, 3, :o3, 606837600
+ tz.transition 1989, 9, :o2, 622562400
+ tz.transition 1990, 3, :o3, 638287200
+ tz.transition 1990, 9, :o2, 654616800
+ tz.transition 1991, 3, :o4, 670341600
+ tz.transition 1991, 9, :o1, 686070000
+ tz.transition 1992, 1, :o2, 695746800
+ tz.transition 1992, 3, :o3, 701780400
+ tz.transition 1992, 9, :o2, 717501600
+ tz.transition 1993, 3, :o3, 733240800
+ tz.transition 1993, 9, :o2, 748965600
+ tz.transition 1994, 3, :o3, 764690400
+ tz.transition 1994, 9, :o2, 780415200
+ tz.transition 1995, 3, :o3, 796140000
+ tz.transition 1995, 9, :o2, 811864800
+ tz.transition 1996, 3, :o3, 828194400
+ tz.transition 1996, 10, :o2, 846338400
+ tz.transition 1997, 3, :o3, 859644000
+ tz.transition 1997, 10, :o2, 877788000
+ tz.transition 1998, 3, :o3, 891093600
+ tz.transition 1998, 10, :o2, 909237600
+ tz.transition 1999, 3, :o3, 922543200
+ tz.transition 1999, 10, :o2, 941292000
+ tz.transition 2000, 3, :o3, 953992800
+ tz.transition 2000, 10, :o2, 972741600
+ tz.transition 2001, 3, :o3, 985442400
+ tz.transition 2001, 10, :o2, 1004191200
+ tz.transition 2002, 3, :o3, 1017496800
+ tz.transition 2002, 10, :o2, 1035640800
+ tz.transition 2003, 3, :o3, 1048946400
+ tz.transition 2003, 10, :o2, 1067090400
+ tz.transition 2004, 3, :o3, 1080396000
+ tz.transition 2004, 10, :o2, 1099144800
+ tz.transition 2005, 3, :o3, 1111845600
+ tz.transition 2005, 10, :o2, 1130594400
+ tz.transition 2006, 3, :o3, 1143295200
+ tz.transition 2006, 10, :o2, 1162044000
+ tz.transition 2007, 3, :o3, 1174744800
+ tz.transition 2007, 10, :o2, 1193493600
+ tz.transition 2008, 3, :o3, 1206799200
+ tz.transition 2008, 10, :o2, 1224943200
+ tz.transition 2009, 3, :o3, 1238248800
+ tz.transition 2009, 10, :o2, 1256392800
+ tz.transition 2010, 3, :o3, 1269698400
+ tz.transition 2010, 10, :o2, 1288447200
+ tz.transition 2011, 3, :o3, 1301148000
+ tz.transition 2011, 10, :o2, 1319896800
+ tz.transition 2012, 3, :o3, 1332597600
+ tz.transition 2012, 10, :o2, 1351346400
+ tz.transition 2013, 3, :o3, 1364652000
+ tz.transition 2013, 10, :o2, 1382796000
+ tz.transition 2014, 3, :o3, 1396101600
+ tz.transition 2014, 10, :o2, 1414245600
+ tz.transition 2015, 3, :o3, 1427551200
+ tz.transition 2015, 10, :o2, 1445695200
+ tz.transition 2016, 3, :o3, 1459000800
+ tz.transition 2016, 10, :o2, 1477749600
+ tz.transition 2017, 3, :o3, 1490450400
+ tz.transition 2017, 10, :o2, 1509199200
+ tz.transition 2018, 3, :o3, 1521900000
+ tz.transition 2018, 10, :o2, 1540648800
+ tz.transition 2019, 3, :o3, 1553954400
+ tz.transition 2019, 10, :o2, 1572098400
+ tz.transition 2020, 3, :o3, 1585404000
+ tz.transition 2020, 10, :o2, 1603548000
+ tz.transition 2021, 3, :o3, 1616853600
+ tz.transition 2021, 10, :o2, 1635602400
+ tz.transition 2022, 3, :o3, 1648303200
+ tz.transition 2022, 10, :o2, 1667052000
+ tz.transition 2023, 3, :o3, 1679752800
+ tz.transition 2023, 10, :o2, 1698501600
+ tz.transition 2024, 3, :o3, 1711807200
+ tz.transition 2024, 10, :o2, 1729951200
+ tz.transition 2025, 3, :o3, 1743256800
+ tz.transition 2025, 10, :o2, 1761400800
+ tz.transition 2026, 3, :o3, 1774706400
+ tz.transition 2026, 10, :o2, 1792850400
+ tz.transition 2027, 3, :o3, 1806156000
+ tz.transition 2027, 10, :o2, 1824904800
+ tz.transition 2028, 3, :o3, 1837605600
+ tz.transition 2028, 10, :o2, 1856354400
+ tz.transition 2029, 3, :o3, 1869055200
+ tz.transition 2029, 10, :o2, 1887804000
+ tz.transition 2030, 3, :o3, 1901109600
+ tz.transition 2030, 10, :o2, 1919253600
+ tz.transition 2031, 3, :o3, 1932559200
+ tz.transition 2031, 10, :o2, 1950703200
+ tz.transition 2032, 3, :o3, 1964008800
+ tz.transition 2032, 10, :o2, 1982757600
+ tz.transition 2033, 3, :o3, 1995458400
+ tz.transition 2033, 10, :o2, 2014207200
+ tz.transition 2034, 3, :o3, 2026908000
+ tz.transition 2034, 10, :o2, 2045656800
+ tz.transition 2035, 3, :o3, 2058357600
+ tz.transition 2035, 10, :o2, 2077106400
+ tz.transition 2036, 3, :o3, 2090412000
+ tz.transition 2036, 10, :o2, 2108556000
+ tz.transition 2037, 3, :o3, 2121861600
+ tz.transition 2037, 10, :o2, 2140005600
+ tz.transition 2038, 3, :o3, 29586121, 12
+ tz.transition 2038, 10, :o2, 29588725, 12
+ tz.transition 2039, 3, :o3, 29590489, 12
+ tz.transition 2039, 10, :o2, 29593093, 12
+ tz.transition 2040, 3, :o3, 29594857, 12
+ tz.transition 2040, 10, :o2, 29597461, 12
+ tz.transition 2041, 3, :o3, 29599309, 12
+ tz.transition 2041, 10, :o2, 29601829, 12
+ tz.transition 2042, 3, :o3, 29603677, 12
+ tz.transition 2042, 10, :o2, 29606197, 12
+ tz.transition 2043, 3, :o3, 29608045, 12
+ tz.transition 2043, 10, :o2, 29610565, 12
+ tz.transition 2044, 3, :o3, 29612413, 12
+ tz.transition 2044, 10, :o2, 29615017, 12
+ tz.transition 2045, 3, :o3, 29616781, 12
+ tz.transition 2045, 10, :o2, 29619385, 12
+ tz.transition 2046, 3, :o3, 29621149, 12
+ tz.transition 2046, 10, :o2, 29623753, 12
+ tz.transition 2047, 3, :o3, 29625601, 12
+ tz.transition 2047, 10, :o2, 29628121, 12
+ tz.transition 2048, 3, :o3, 29629969, 12
+ tz.transition 2048, 10, :o2, 29632489, 12
+ tz.transition 2049, 3, :o3, 29634337, 12
+ tz.transition 2049, 10, :o2, 29636941, 12
+ tz.transition 2050, 3, :o3, 29638705, 12
+ tz.transition 2050, 10, :o2, 29641309, 12
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Karachi.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Karachi.rb
new file mode 100644
index 000000000..baa0d41d7
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Karachi.rb
@@ -0,0 +1,28 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Asia
+ module Karachi
+ include TimezoneDefinition
+
+ timezone 'Asia/Karachi' do |tz|
+ tz.offset :o0, 16092, 0, :LMT
+ tz.offset :o1, 19800, 0, :IST
+ tz.offset :o2, 19800, 3600, :IST
+ tz.offset :o3, 18000, 0, :KART
+ tz.offset :o4, 18000, 0, :PKT
+ tz.offset :o5, 18000, 3600, :PKST
+
+ tz.transition 1906, 12, :o1, 1934061051, 800
+ tz.transition 1942, 8, :o2, 116668957, 48
+ tz.transition 1945, 10, :o1, 116723675, 48
+ tz.transition 1951, 9, :o3, 116828125, 48
+ tz.transition 1971, 3, :o4, 38775600
+ tz.transition 2002, 4, :o5, 1018119660
+ tz.transition 2002, 10, :o4, 1033840860
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Katmandu.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Katmandu.rb
new file mode 100644
index 000000000..37dbea1f4
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Katmandu.rb
@@ -0,0 +1,20 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Asia
+ module Katmandu
+ include TimezoneDefinition
+
+ timezone 'Asia/Katmandu' do |tz|
+ tz.offset :o0, 20476, 0, :LMT
+ tz.offset :o1, 19800, 0, :IST
+ tz.offset :o2, 20700, 0, :NPT
+
+ tz.transition 1919, 12, :o1, 52322204081, 21600
+ tz.transition 1985, 12, :o2, 504901800
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Kolkata.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Kolkata.rb
new file mode 100644
index 000000000..1b6ffbd59
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Kolkata.rb
@@ -0,0 +1,25 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Asia
+ module Kolkata
+ include TimezoneDefinition
+
+ timezone 'Asia/Kolkata' do |tz|
+ tz.offset :o0, 21208, 0, :LMT
+ tz.offset :o1, 21200, 0, :HMT
+ tz.offset :o2, 23400, 0, :BURT
+ tz.offset :o3, 19800, 0, :IST
+ tz.offset :o4, 19800, 3600, :IST
+
+ tz.transition 1879, 12, :o1, 26003324749, 10800
+ tz.transition 1941, 9, :o2, 524937943, 216
+ tz.transition 1942, 5, :o3, 116663723, 48
+ tz.transition 1942, 8, :o4, 116668957, 48
+ tz.transition 1945, 10, :o3, 116723675, 48
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Krasnoyarsk.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Krasnoyarsk.rb
new file mode 100644
index 000000000..d6c503c15
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Krasnoyarsk.rb
@@ -0,0 +1,163 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Asia
+ module Krasnoyarsk
+ include TimezoneDefinition
+
+ timezone 'Asia/Krasnoyarsk' do |tz|
+ tz.offset :o0, 22280, 0, :LMT
+ tz.offset :o1, 21600, 0, :KRAT
+ tz.offset :o2, 25200, 0, :KRAT
+ tz.offset :o3, 25200, 3600, :KRAST
+ tz.offset :o4, 21600, 3600, :KRAST
+
+ tz.transition 1920, 1, :o1, 5232231163, 2160
+ tz.transition 1930, 6, :o2, 9704593, 4
+ tz.transition 1981, 3, :o3, 354906000
+ tz.transition 1981, 9, :o2, 370713600
+ tz.transition 1982, 3, :o3, 386442000
+ tz.transition 1982, 9, :o2, 402249600
+ tz.transition 1983, 3, :o3, 417978000
+ tz.transition 1983, 9, :o2, 433785600
+ tz.transition 1984, 3, :o3, 449600400
+ tz.transition 1984, 9, :o2, 465332400
+ tz.transition 1985, 3, :o3, 481057200
+ tz.transition 1985, 9, :o2, 496782000
+ tz.transition 1986, 3, :o3, 512506800
+ tz.transition 1986, 9, :o2, 528231600
+ tz.transition 1987, 3, :o3, 543956400
+ tz.transition 1987, 9, :o2, 559681200
+ tz.transition 1988, 3, :o3, 575406000
+ tz.transition 1988, 9, :o2, 591130800
+ tz.transition 1989, 3, :o3, 606855600
+ tz.transition 1989, 9, :o2, 622580400
+ tz.transition 1990, 3, :o3, 638305200
+ tz.transition 1990, 9, :o2, 654634800
+ tz.transition 1991, 3, :o4, 670359600
+ tz.transition 1991, 9, :o1, 686088000
+ tz.transition 1992, 1, :o2, 695764800
+ tz.transition 1992, 3, :o3, 701798400
+ tz.transition 1992, 9, :o2, 717519600
+ tz.transition 1993, 3, :o3, 733258800
+ tz.transition 1993, 9, :o2, 748983600
+ tz.transition 1994, 3, :o3, 764708400
+ tz.transition 1994, 9, :o2, 780433200
+ tz.transition 1995, 3, :o3, 796158000
+ tz.transition 1995, 9, :o2, 811882800
+ tz.transition 1996, 3, :o3, 828212400
+ tz.transition 1996, 10, :o2, 846356400
+ tz.transition 1997, 3, :o3, 859662000
+ tz.transition 1997, 10, :o2, 877806000
+ tz.transition 1998, 3, :o3, 891111600
+ tz.transition 1998, 10, :o2, 909255600
+ tz.transition 1999, 3, :o3, 922561200
+ tz.transition 1999, 10, :o2, 941310000
+ tz.transition 2000, 3, :o3, 954010800
+ tz.transition 2000, 10, :o2, 972759600
+ tz.transition 2001, 3, :o3, 985460400
+ tz.transition 2001, 10, :o2, 1004209200
+ tz.transition 2002, 3, :o3, 1017514800
+ tz.transition 2002, 10, :o2, 1035658800
+ tz.transition 2003, 3, :o3, 1048964400
+ tz.transition 2003, 10, :o2, 1067108400
+ tz.transition 2004, 3, :o3, 1080414000
+ tz.transition 2004, 10, :o2, 1099162800
+ tz.transition 2005, 3, :o3, 1111863600
+ tz.transition 2005, 10, :o2, 1130612400
+ tz.transition 2006, 3, :o3, 1143313200
+ tz.transition 2006, 10, :o2, 1162062000
+ tz.transition 2007, 3, :o3, 1174762800
+ tz.transition 2007, 10, :o2, 1193511600
+ tz.transition 2008, 3, :o3, 1206817200
+ tz.transition 2008, 10, :o2, 1224961200
+ tz.transition 2009, 3, :o3, 1238266800
+ tz.transition 2009, 10, :o2, 1256410800
+ tz.transition 2010, 3, :o3, 1269716400
+ tz.transition 2010, 10, :o2, 1288465200
+ tz.transition 2011, 3, :o3, 1301166000
+ tz.transition 2011, 10, :o2, 1319914800
+ tz.transition 2012, 3, :o3, 1332615600
+ tz.transition 2012, 10, :o2, 1351364400
+ tz.transition 2013, 3, :o3, 1364670000
+ tz.transition 2013, 10, :o2, 1382814000
+ tz.transition 2014, 3, :o3, 1396119600
+ tz.transition 2014, 10, :o2, 1414263600
+ tz.transition 2015, 3, :o3, 1427569200
+ tz.transition 2015, 10, :o2, 1445713200
+ tz.transition 2016, 3, :o3, 1459018800
+ tz.transition 2016, 10, :o2, 1477767600
+ tz.transition 2017, 3, :o3, 1490468400
+ tz.transition 2017, 10, :o2, 1509217200
+ tz.transition 2018, 3, :o3, 1521918000
+ tz.transition 2018, 10, :o2, 1540666800
+ tz.transition 2019, 3, :o3, 1553972400
+ tz.transition 2019, 10, :o2, 1572116400
+ tz.transition 2020, 3, :o3, 1585422000
+ tz.transition 2020, 10, :o2, 1603566000
+ tz.transition 2021, 3, :o3, 1616871600
+ tz.transition 2021, 10, :o2, 1635620400
+ tz.transition 2022, 3, :o3, 1648321200
+ tz.transition 2022, 10, :o2, 1667070000
+ tz.transition 2023, 3, :o3, 1679770800
+ tz.transition 2023, 10, :o2, 1698519600
+ tz.transition 2024, 3, :o3, 1711825200
+ tz.transition 2024, 10, :o2, 1729969200
+ tz.transition 2025, 3, :o3, 1743274800
+ tz.transition 2025, 10, :o2, 1761418800
+ tz.transition 2026, 3, :o3, 1774724400
+ tz.transition 2026, 10, :o2, 1792868400
+ tz.transition 2027, 3, :o3, 1806174000
+ tz.transition 2027, 10, :o2, 1824922800
+ tz.transition 2028, 3, :o3, 1837623600
+ tz.transition 2028, 10, :o2, 1856372400
+ tz.transition 2029, 3, :o3, 1869073200
+ tz.transition 2029, 10, :o2, 1887822000
+ tz.transition 2030, 3, :o3, 1901127600
+ tz.transition 2030, 10, :o2, 1919271600
+ tz.transition 2031, 3, :o3, 1932577200
+ tz.transition 2031, 10, :o2, 1950721200
+ tz.transition 2032, 3, :o3, 1964026800
+ tz.transition 2032, 10, :o2, 1982775600
+ tz.transition 2033, 3, :o3, 1995476400
+ tz.transition 2033, 10, :o2, 2014225200
+ tz.transition 2034, 3, :o3, 2026926000
+ tz.transition 2034, 10, :o2, 2045674800
+ tz.transition 2035, 3, :o3, 2058375600
+ tz.transition 2035, 10, :o2, 2077124400
+ tz.transition 2036, 3, :o3, 2090430000
+ tz.transition 2036, 10, :o2, 2108574000
+ tz.transition 2037, 3, :o3, 2121879600
+ tz.transition 2037, 10, :o2, 2140023600
+ tz.transition 2038, 3, :o3, 59172247, 24
+ tz.transition 2038, 10, :o2, 59177455, 24
+ tz.transition 2039, 3, :o3, 59180983, 24
+ tz.transition 2039, 10, :o2, 59186191, 24
+ tz.transition 2040, 3, :o3, 59189719, 24
+ tz.transition 2040, 10, :o2, 59194927, 24
+ tz.transition 2041, 3, :o3, 59198623, 24
+ tz.transition 2041, 10, :o2, 59203663, 24
+ tz.transition 2042, 3, :o3, 59207359, 24
+ tz.transition 2042, 10, :o2, 59212399, 24
+ tz.transition 2043, 3, :o3, 59216095, 24
+ tz.transition 2043, 10, :o2, 59221135, 24
+ tz.transition 2044, 3, :o3, 59224831, 24
+ tz.transition 2044, 10, :o2, 59230039, 24
+ tz.transition 2045, 3, :o3, 59233567, 24
+ tz.transition 2045, 10, :o2, 59238775, 24
+ tz.transition 2046, 3, :o3, 59242303, 24
+ tz.transition 2046, 10, :o2, 59247511, 24
+ tz.transition 2047, 3, :o3, 59251207, 24
+ tz.transition 2047, 10, :o2, 59256247, 24
+ tz.transition 2048, 3, :o3, 59259943, 24
+ tz.transition 2048, 10, :o2, 59264983, 24
+ tz.transition 2049, 3, :o3, 59268679, 24
+ tz.transition 2049, 10, :o2, 59273887, 24
+ tz.transition 2050, 3, :o3, 59277415, 24
+ tz.transition 2050, 10, :o2, 59282623, 24
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Kuala_Lumpur.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Kuala_Lumpur.rb
new file mode 100644
index 000000000..77a0c206f
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Kuala_Lumpur.rb
@@ -0,0 +1,31 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Asia
+ module Kuala_Lumpur
+ include TimezoneDefinition
+
+ timezone 'Asia/Kuala_Lumpur' do |tz|
+ tz.offset :o0, 24406, 0, :LMT
+ tz.offset :o1, 24925, 0, :SMT
+ tz.offset :o2, 25200, 0, :MALT
+ tz.offset :o3, 25200, 1200, :MALST
+ tz.offset :o4, 26400, 0, :MALT
+ tz.offset :o5, 27000, 0, :MALT
+ tz.offset :o6, 32400, 0, :JST
+ tz.offset :o7, 28800, 0, :MYT
+
+ tz.transition 1900, 12, :o1, 104344641397, 43200
+ tz.transition 1905, 5, :o2, 8353142363, 3456
+ tz.transition 1932, 12, :o3, 58249757, 24
+ tz.transition 1935, 12, :o4, 87414055, 36
+ tz.transition 1941, 8, :o5, 87488575, 36
+ tz.transition 1942, 2, :o6, 38886499, 16
+ tz.transition 1945, 9, :o5, 19453681, 8
+ tz.transition 1981, 12, :o7, 378664200
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Kuwait.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Kuwait.rb
new file mode 100644
index 000000000..5bd528319
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Kuwait.rb
@@ -0,0 +1,18 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Asia
+ module Kuwait
+ include TimezoneDefinition
+
+ timezone 'Asia/Kuwait' do |tz|
+ tz.offset :o0, 11516, 0, :LMT
+ tz.offset :o1, 10800, 0, :AST
+
+ tz.transition 1949, 12, :o1, 52558899121, 21600
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Magadan.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Magadan.rb
new file mode 100644
index 000000000..302093693
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Magadan.rb
@@ -0,0 +1,163 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Asia
+ module Magadan
+ include TimezoneDefinition
+
+ timezone 'Asia/Magadan' do |tz|
+ tz.offset :o0, 36192, 0, :LMT
+ tz.offset :o1, 36000, 0, :MAGT
+ tz.offset :o2, 39600, 0, :MAGT
+ tz.offset :o3, 39600, 3600, :MAGST
+ tz.offset :o4, 36000, 3600, :MAGST
+
+ tz.transition 1924, 5, :o1, 2181516373, 900
+ tz.transition 1930, 6, :o2, 29113777, 12
+ tz.transition 1981, 3, :o3, 354891600
+ tz.transition 1981, 9, :o2, 370699200
+ tz.transition 1982, 3, :o3, 386427600
+ tz.transition 1982, 9, :o2, 402235200
+ tz.transition 1983, 3, :o3, 417963600
+ tz.transition 1983, 9, :o2, 433771200
+ tz.transition 1984, 3, :o3, 449586000
+ tz.transition 1984, 9, :o2, 465318000
+ tz.transition 1985, 3, :o3, 481042800
+ tz.transition 1985, 9, :o2, 496767600
+ tz.transition 1986, 3, :o3, 512492400
+ tz.transition 1986, 9, :o2, 528217200
+ tz.transition 1987, 3, :o3, 543942000
+ tz.transition 1987, 9, :o2, 559666800
+ tz.transition 1988, 3, :o3, 575391600
+ tz.transition 1988, 9, :o2, 591116400
+ tz.transition 1989, 3, :o3, 606841200
+ tz.transition 1989, 9, :o2, 622566000
+ tz.transition 1990, 3, :o3, 638290800
+ tz.transition 1990, 9, :o2, 654620400
+ tz.transition 1991, 3, :o4, 670345200
+ tz.transition 1991, 9, :o1, 686073600
+ tz.transition 1992, 1, :o2, 695750400
+ tz.transition 1992, 3, :o3, 701784000
+ tz.transition 1992, 9, :o2, 717505200
+ tz.transition 1993, 3, :o3, 733244400
+ tz.transition 1993, 9, :o2, 748969200
+ tz.transition 1994, 3, :o3, 764694000
+ tz.transition 1994, 9, :o2, 780418800
+ tz.transition 1995, 3, :o3, 796143600
+ tz.transition 1995, 9, :o2, 811868400
+ tz.transition 1996, 3, :o3, 828198000
+ tz.transition 1996, 10, :o2, 846342000
+ tz.transition 1997, 3, :o3, 859647600
+ tz.transition 1997, 10, :o2, 877791600
+ tz.transition 1998, 3, :o3, 891097200
+ tz.transition 1998, 10, :o2, 909241200
+ tz.transition 1999, 3, :o3, 922546800
+ tz.transition 1999, 10, :o2, 941295600
+ tz.transition 2000, 3, :o3, 953996400
+ tz.transition 2000, 10, :o2, 972745200
+ tz.transition 2001, 3, :o3, 985446000
+ tz.transition 2001, 10, :o2, 1004194800
+ tz.transition 2002, 3, :o3, 1017500400
+ tz.transition 2002, 10, :o2, 1035644400
+ tz.transition 2003, 3, :o3, 1048950000
+ tz.transition 2003, 10, :o2, 1067094000
+ tz.transition 2004, 3, :o3, 1080399600
+ tz.transition 2004, 10, :o2, 1099148400
+ tz.transition 2005, 3, :o3, 1111849200
+ tz.transition 2005, 10, :o2, 1130598000
+ tz.transition 2006, 3, :o3, 1143298800
+ tz.transition 2006, 10, :o2, 1162047600
+ tz.transition 2007, 3, :o3, 1174748400
+ tz.transition 2007, 10, :o2, 1193497200
+ tz.transition 2008, 3, :o3, 1206802800
+ tz.transition 2008, 10, :o2, 1224946800
+ tz.transition 2009, 3, :o3, 1238252400
+ tz.transition 2009, 10, :o2, 1256396400
+ tz.transition 2010, 3, :o3, 1269702000
+ tz.transition 2010, 10, :o2, 1288450800
+ tz.transition 2011, 3, :o3, 1301151600
+ tz.transition 2011, 10, :o2, 1319900400
+ tz.transition 2012, 3, :o3, 1332601200
+ tz.transition 2012, 10, :o2, 1351350000
+ tz.transition 2013, 3, :o3, 1364655600
+ tz.transition 2013, 10, :o2, 1382799600
+ tz.transition 2014, 3, :o3, 1396105200
+ tz.transition 2014, 10, :o2, 1414249200
+ tz.transition 2015, 3, :o3, 1427554800
+ tz.transition 2015, 10, :o2, 1445698800
+ tz.transition 2016, 3, :o3, 1459004400
+ tz.transition 2016, 10, :o2, 1477753200
+ tz.transition 2017, 3, :o3, 1490454000
+ tz.transition 2017, 10, :o2, 1509202800
+ tz.transition 2018, 3, :o3, 1521903600
+ tz.transition 2018, 10, :o2, 1540652400
+ tz.transition 2019, 3, :o3, 1553958000
+ tz.transition 2019, 10, :o2, 1572102000
+ tz.transition 2020, 3, :o3, 1585407600
+ tz.transition 2020, 10, :o2, 1603551600
+ tz.transition 2021, 3, :o3, 1616857200
+ tz.transition 2021, 10, :o2, 1635606000
+ tz.transition 2022, 3, :o3, 1648306800
+ tz.transition 2022, 10, :o2, 1667055600
+ tz.transition 2023, 3, :o3, 1679756400
+ tz.transition 2023, 10, :o2, 1698505200
+ tz.transition 2024, 3, :o3, 1711810800
+ tz.transition 2024, 10, :o2, 1729954800
+ tz.transition 2025, 3, :o3, 1743260400
+ tz.transition 2025, 10, :o2, 1761404400
+ tz.transition 2026, 3, :o3, 1774710000
+ tz.transition 2026, 10, :o2, 1792854000
+ tz.transition 2027, 3, :o3, 1806159600
+ tz.transition 2027, 10, :o2, 1824908400
+ tz.transition 2028, 3, :o3, 1837609200
+ tz.transition 2028, 10, :o2, 1856358000
+ tz.transition 2029, 3, :o3, 1869058800
+ tz.transition 2029, 10, :o2, 1887807600
+ tz.transition 2030, 3, :o3, 1901113200
+ tz.transition 2030, 10, :o2, 1919257200
+ tz.transition 2031, 3, :o3, 1932562800
+ tz.transition 2031, 10, :o2, 1950706800
+ tz.transition 2032, 3, :o3, 1964012400
+ tz.transition 2032, 10, :o2, 1982761200
+ tz.transition 2033, 3, :o3, 1995462000
+ tz.transition 2033, 10, :o2, 2014210800
+ tz.transition 2034, 3, :o3, 2026911600
+ tz.transition 2034, 10, :o2, 2045660400
+ tz.transition 2035, 3, :o3, 2058361200
+ tz.transition 2035, 10, :o2, 2077110000
+ tz.transition 2036, 3, :o3, 2090415600
+ tz.transition 2036, 10, :o2, 2108559600
+ tz.transition 2037, 3, :o3, 2121865200
+ tz.transition 2037, 10, :o2, 2140009200
+ tz.transition 2038, 3, :o3, 19724081, 8
+ tz.transition 2038, 10, :o2, 19725817, 8
+ tz.transition 2039, 3, :o3, 19726993, 8
+ tz.transition 2039, 10, :o2, 19728729, 8
+ tz.transition 2040, 3, :o3, 19729905, 8
+ tz.transition 2040, 10, :o2, 19731641, 8
+ tz.transition 2041, 3, :o3, 19732873, 8
+ tz.transition 2041, 10, :o2, 19734553, 8
+ tz.transition 2042, 3, :o3, 19735785, 8
+ tz.transition 2042, 10, :o2, 19737465, 8
+ tz.transition 2043, 3, :o3, 19738697, 8
+ tz.transition 2043, 10, :o2, 19740377, 8
+ tz.transition 2044, 3, :o3, 19741609, 8
+ tz.transition 2044, 10, :o2, 19743345, 8
+ tz.transition 2045, 3, :o3, 19744521, 8
+ tz.transition 2045, 10, :o2, 19746257, 8
+ tz.transition 2046, 3, :o3, 19747433, 8
+ tz.transition 2046, 10, :o2, 19749169, 8
+ tz.transition 2047, 3, :o3, 19750401, 8
+ tz.transition 2047, 10, :o2, 19752081, 8
+ tz.transition 2048, 3, :o3, 19753313, 8
+ tz.transition 2048, 10, :o2, 19754993, 8
+ tz.transition 2049, 3, :o3, 19756225, 8
+ tz.transition 2049, 10, :o2, 19757961, 8
+ tz.transition 2050, 3, :o3, 19759137, 8
+ tz.transition 2050, 10, :o2, 19760873, 8
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Muscat.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Muscat.rb
new file mode 100644
index 000000000..604f651df
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Muscat.rb
@@ -0,0 +1,18 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Asia
+ module Muscat
+ include TimezoneDefinition
+
+ timezone 'Asia/Muscat' do |tz|
+ tz.offset :o0, 14060, 0, :LMT
+ tz.offset :o1, 14400, 0, :GST
+
+ tz.transition 1919, 12, :o1, 10464441137, 4320
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Novosibirsk.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Novosibirsk.rb
new file mode 100644
index 000000000..a4e7796e7
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Novosibirsk.rb
@@ -0,0 +1,164 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Asia
+ module Novosibirsk
+ include TimezoneDefinition
+
+ timezone 'Asia/Novosibirsk' do |tz|
+ tz.offset :o0, 19900, 0, :LMT
+ tz.offset :o1, 21600, 0, :NOVT
+ tz.offset :o2, 25200, 0, :NOVT
+ tz.offset :o3, 25200, 3600, :NOVST
+ tz.offset :o4, 21600, 3600, :NOVST
+
+ tz.transition 1919, 12, :o1, 2092872833, 864
+ tz.transition 1930, 6, :o2, 9704593, 4
+ tz.transition 1981, 3, :o3, 354906000
+ tz.transition 1981, 9, :o2, 370713600
+ tz.transition 1982, 3, :o3, 386442000
+ tz.transition 1982, 9, :o2, 402249600
+ tz.transition 1983, 3, :o3, 417978000
+ tz.transition 1983, 9, :o2, 433785600
+ tz.transition 1984, 3, :o3, 449600400
+ tz.transition 1984, 9, :o2, 465332400
+ tz.transition 1985, 3, :o3, 481057200
+ tz.transition 1985, 9, :o2, 496782000
+ tz.transition 1986, 3, :o3, 512506800
+ tz.transition 1986, 9, :o2, 528231600
+ tz.transition 1987, 3, :o3, 543956400
+ tz.transition 1987, 9, :o2, 559681200
+ tz.transition 1988, 3, :o3, 575406000
+ tz.transition 1988, 9, :o2, 591130800
+ tz.transition 1989, 3, :o3, 606855600
+ tz.transition 1989, 9, :o2, 622580400
+ tz.transition 1990, 3, :o3, 638305200
+ tz.transition 1990, 9, :o2, 654634800
+ tz.transition 1991, 3, :o4, 670359600
+ tz.transition 1991, 9, :o1, 686088000
+ tz.transition 1992, 1, :o2, 695764800
+ tz.transition 1992, 3, :o3, 701798400
+ tz.transition 1992, 9, :o2, 717519600
+ tz.transition 1993, 3, :o3, 733258800
+ tz.transition 1993, 5, :o4, 738086400
+ tz.transition 1993, 9, :o1, 748987200
+ tz.transition 1994, 3, :o4, 764712000
+ tz.transition 1994, 9, :o1, 780436800
+ tz.transition 1995, 3, :o4, 796161600
+ tz.transition 1995, 9, :o1, 811886400
+ tz.transition 1996, 3, :o4, 828216000
+ tz.transition 1996, 10, :o1, 846360000
+ tz.transition 1997, 3, :o4, 859665600
+ tz.transition 1997, 10, :o1, 877809600
+ tz.transition 1998, 3, :o4, 891115200
+ tz.transition 1998, 10, :o1, 909259200
+ tz.transition 1999, 3, :o4, 922564800
+ tz.transition 1999, 10, :o1, 941313600
+ tz.transition 2000, 3, :o4, 954014400
+ tz.transition 2000, 10, :o1, 972763200
+ tz.transition 2001, 3, :o4, 985464000
+ tz.transition 2001, 10, :o1, 1004212800
+ tz.transition 2002, 3, :o4, 1017518400
+ tz.transition 2002, 10, :o1, 1035662400
+ tz.transition 2003, 3, :o4, 1048968000
+ tz.transition 2003, 10, :o1, 1067112000
+ tz.transition 2004, 3, :o4, 1080417600
+ tz.transition 2004, 10, :o1, 1099166400
+ tz.transition 2005, 3, :o4, 1111867200
+ tz.transition 2005, 10, :o1, 1130616000
+ tz.transition 2006, 3, :o4, 1143316800
+ tz.transition 2006, 10, :o1, 1162065600
+ tz.transition 2007, 3, :o4, 1174766400
+ tz.transition 2007, 10, :o1, 1193515200
+ tz.transition 2008, 3, :o4, 1206820800
+ tz.transition 2008, 10, :o1, 1224964800
+ tz.transition 2009, 3, :o4, 1238270400
+ tz.transition 2009, 10, :o1, 1256414400
+ tz.transition 2010, 3, :o4, 1269720000
+ tz.transition 2010, 10, :o1, 1288468800
+ tz.transition 2011, 3, :o4, 1301169600
+ tz.transition 2011, 10, :o1, 1319918400
+ tz.transition 2012, 3, :o4, 1332619200
+ tz.transition 2012, 10, :o1, 1351368000
+ tz.transition 2013, 3, :o4, 1364673600
+ tz.transition 2013, 10, :o1, 1382817600
+ tz.transition 2014, 3, :o4, 1396123200
+ tz.transition 2014, 10, :o1, 1414267200
+ tz.transition 2015, 3, :o4, 1427572800
+ tz.transition 2015, 10, :o1, 1445716800
+ tz.transition 2016, 3, :o4, 1459022400
+ tz.transition 2016, 10, :o1, 1477771200
+ tz.transition 2017, 3, :o4, 1490472000
+ tz.transition 2017, 10, :o1, 1509220800
+ tz.transition 2018, 3, :o4, 1521921600
+ tz.transition 2018, 10, :o1, 1540670400
+ tz.transition 2019, 3, :o4, 1553976000
+ tz.transition 2019, 10, :o1, 1572120000
+ tz.transition 2020, 3, :o4, 1585425600
+ tz.transition 2020, 10, :o1, 1603569600
+ tz.transition 2021, 3, :o4, 1616875200
+ tz.transition 2021, 10, :o1, 1635624000
+ tz.transition 2022, 3, :o4, 1648324800
+ tz.transition 2022, 10, :o1, 1667073600
+ tz.transition 2023, 3, :o4, 1679774400
+ tz.transition 2023, 10, :o1, 1698523200
+ tz.transition 2024, 3, :o4, 1711828800
+ tz.transition 2024, 10, :o1, 1729972800
+ tz.transition 2025, 3, :o4, 1743278400
+ tz.transition 2025, 10, :o1, 1761422400
+ tz.transition 2026, 3, :o4, 1774728000
+ tz.transition 2026, 10, :o1, 1792872000
+ tz.transition 2027, 3, :o4, 1806177600
+ tz.transition 2027, 10, :o1, 1824926400
+ tz.transition 2028, 3, :o4, 1837627200
+ tz.transition 2028, 10, :o1, 1856376000
+ tz.transition 2029, 3, :o4, 1869076800
+ tz.transition 2029, 10, :o1, 1887825600
+ tz.transition 2030, 3, :o4, 1901131200
+ tz.transition 2030, 10, :o1, 1919275200
+ tz.transition 2031, 3, :o4, 1932580800
+ tz.transition 2031, 10, :o1, 1950724800
+ tz.transition 2032, 3, :o4, 1964030400
+ tz.transition 2032, 10, :o1, 1982779200
+ tz.transition 2033, 3, :o4, 1995480000
+ tz.transition 2033, 10, :o1, 2014228800
+ tz.transition 2034, 3, :o4, 2026929600
+ tz.transition 2034, 10, :o1, 2045678400
+ tz.transition 2035, 3, :o4, 2058379200
+ tz.transition 2035, 10, :o1, 2077128000
+ tz.transition 2036, 3, :o4, 2090433600
+ tz.transition 2036, 10, :o1, 2108577600
+ tz.transition 2037, 3, :o4, 2121883200
+ tz.transition 2037, 10, :o1, 2140027200
+ tz.transition 2038, 3, :o4, 7396531, 3
+ tz.transition 2038, 10, :o1, 7397182, 3
+ tz.transition 2039, 3, :o4, 7397623, 3
+ tz.transition 2039, 10, :o1, 7398274, 3
+ tz.transition 2040, 3, :o4, 7398715, 3
+ tz.transition 2040, 10, :o1, 7399366, 3
+ tz.transition 2041, 3, :o4, 7399828, 3
+ tz.transition 2041, 10, :o1, 7400458, 3
+ tz.transition 2042, 3, :o4, 7400920, 3
+ tz.transition 2042, 10, :o1, 7401550, 3
+ tz.transition 2043, 3, :o4, 7402012, 3
+ tz.transition 2043, 10, :o1, 7402642, 3
+ tz.transition 2044, 3, :o4, 7403104, 3
+ tz.transition 2044, 10, :o1, 7403755, 3
+ tz.transition 2045, 3, :o4, 7404196, 3
+ tz.transition 2045, 10, :o1, 7404847, 3
+ tz.transition 2046, 3, :o4, 7405288, 3
+ tz.transition 2046, 10, :o1, 7405939, 3
+ tz.transition 2047, 3, :o4, 7406401, 3
+ tz.transition 2047, 10, :o1, 7407031, 3
+ tz.transition 2048, 3, :o4, 7407493, 3
+ tz.transition 2048, 10, :o1, 7408123, 3
+ tz.transition 2049, 3, :o4, 7408585, 3
+ tz.transition 2049, 10, :o1, 7409236, 3
+ tz.transition 2050, 3, :o4, 7409677, 3
+ tz.transition 2050, 10, :o1, 7410328, 3
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Rangoon.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Rangoon.rb
new file mode 100644
index 000000000..759b82d77
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Rangoon.rb
@@ -0,0 +1,24 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Asia
+ module Rangoon
+ include TimezoneDefinition
+
+ timezone 'Asia/Rangoon' do |tz|
+ tz.offset :o0, 23080, 0, :LMT
+ tz.offset :o1, 23076, 0, :RMT
+ tz.offset :o2, 23400, 0, :BURT
+ tz.offset :o3, 32400, 0, :JST
+ tz.offset :o4, 23400, 0, :MMT
+
+ tz.transition 1879, 12, :o1, 5200664903, 2160
+ tz.transition 1919, 12, :o2, 5813578159, 2400
+ tz.transition 1942, 4, :o3, 116663051, 48
+ tz.transition 1945, 5, :o4, 19452625, 8
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Riyadh.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Riyadh.rb
new file mode 100644
index 000000000..7add41062
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Riyadh.rb
@@ -0,0 +1,18 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Asia
+ module Riyadh
+ include TimezoneDefinition
+
+ timezone 'Asia/Riyadh' do |tz|
+ tz.offset :o0, 11212, 0, :LMT
+ tz.offset :o1, 10800, 0, :AST
+
+ tz.transition 1949, 12, :o1, 52558899197, 21600
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Seoul.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Seoul.rb
new file mode 100644
index 000000000..795d2a75d
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Seoul.rb
@@ -0,0 +1,34 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Asia
+ module Seoul
+ include TimezoneDefinition
+
+ timezone 'Asia/Seoul' do |tz|
+ tz.offset :o0, 30472, 0, :LMT
+ tz.offset :o1, 30600, 0, :KST
+ tz.offset :o2, 32400, 0, :KST
+ tz.offset :o3, 28800, 0, :KST
+ tz.offset :o4, 28800, 3600, :KDT
+ tz.offset :o5, 32400, 3600, :KDT
+
+ tz.transition 1889, 12, :o1, 26042775991, 10800
+ tz.transition 1904, 11, :o2, 116007127, 48
+ tz.transition 1927, 12, :o1, 19401969, 8
+ tz.transition 1931, 12, :o2, 116481943, 48
+ tz.transition 1954, 3, :o3, 19478577, 8
+ tz.transition 1960, 5, :o4, 14622415, 6
+ tz.transition 1960, 9, :o3, 19497521, 8
+ tz.transition 1961, 8, :o1, 14625127, 6
+ tz.transition 1968, 9, :o2, 117126247, 48
+ tz.transition 1987, 5, :o5, 547570800
+ tz.transition 1987, 10, :o2, 560872800
+ tz.transition 1988, 5, :o5, 579020400
+ tz.transition 1988, 10, :o2, 592322400
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Shanghai.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Shanghai.rb
new file mode 100644
index 000000000..34b13d59a
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Shanghai.rb
@@ -0,0 +1,35 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Asia
+ module Shanghai
+ include TimezoneDefinition
+
+ timezone 'Asia/Shanghai' do |tz|
+ tz.offset :o0, 29152, 0, :LMT
+ tz.offset :o1, 28800, 0, :CST
+ tz.offset :o2, 28800, 3600, :CDT
+
+ tz.transition 1927, 12, :o1, 6548164639, 2700
+ tz.transition 1940, 6, :o2, 14578699, 6
+ tz.transition 1940, 9, :o1, 19439225, 8
+ tz.transition 1941, 3, :o2, 14580415, 6
+ tz.transition 1941, 9, :o1, 19442145, 8
+ tz.transition 1986, 5, :o2, 515520000
+ tz.transition 1986, 9, :o1, 527007600
+ tz.transition 1987, 4, :o2, 545155200
+ tz.transition 1987, 9, :o1, 558457200
+ tz.transition 1988, 4, :o2, 576604800
+ tz.transition 1988, 9, :o1, 589906800
+ tz.transition 1989, 4, :o2, 608659200
+ tz.transition 1989, 9, :o1, 621961200
+ tz.transition 1990, 4, :o2, 640108800
+ tz.transition 1990, 9, :o1, 653410800
+ tz.transition 1991, 4, :o2, 671558400
+ tz.transition 1991, 9, :o1, 684860400
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Singapore.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Singapore.rb
new file mode 100644
index 000000000..b323a78f7
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Singapore.rb
@@ -0,0 +1,33 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Asia
+ module Singapore
+ include TimezoneDefinition
+
+ timezone 'Asia/Singapore' do |tz|
+ tz.offset :o0, 24925, 0, :LMT
+ tz.offset :o1, 24925, 0, :SMT
+ tz.offset :o2, 25200, 0, :MALT
+ tz.offset :o3, 25200, 1200, :MALST
+ tz.offset :o4, 26400, 0, :MALT
+ tz.offset :o5, 27000, 0, :MALT
+ tz.offset :o6, 32400, 0, :JST
+ tz.offset :o7, 27000, 0, :SGT
+ tz.offset :o8, 28800, 0, :SGT
+
+ tz.transition 1900, 12, :o1, 8347571291, 3456
+ tz.transition 1905, 5, :o2, 8353142363, 3456
+ tz.transition 1932, 12, :o3, 58249757, 24
+ tz.transition 1935, 12, :o4, 87414055, 36
+ tz.transition 1941, 8, :o5, 87488575, 36
+ tz.transition 1942, 2, :o6, 38886499, 16
+ tz.transition 1945, 9, :o5, 19453681, 8
+ tz.transition 1965, 8, :o7, 39023699, 16
+ tz.transition 1981, 12, :o8, 378664200
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Taipei.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Taipei.rb
new file mode 100644
index 000000000..3ba12108f
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Taipei.rb
@@ -0,0 +1,59 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Asia
+ module Taipei
+ include TimezoneDefinition
+
+ timezone 'Asia/Taipei' do |tz|
+ tz.offset :o0, 29160, 0, :LMT
+ tz.offset :o1, 28800, 0, :CST
+ tz.offset :o2, 28800, 3600, :CDT
+
+ tz.transition 1895, 12, :o1, 193084733, 80
+ tz.transition 1945, 4, :o2, 14589457, 6
+ tz.transition 1945, 9, :o1, 19453833, 8
+ tz.transition 1946, 4, :o2, 14591647, 6
+ tz.transition 1946, 9, :o1, 19456753, 8
+ tz.transition 1947, 4, :o2, 14593837, 6
+ tz.transition 1947, 9, :o1, 19459673, 8
+ tz.transition 1948, 4, :o2, 14596033, 6
+ tz.transition 1948, 9, :o1, 19462601, 8
+ tz.transition 1949, 4, :o2, 14598223, 6
+ tz.transition 1949, 9, :o1, 19465521, 8
+ tz.transition 1950, 4, :o2, 14600413, 6
+ tz.transition 1950, 9, :o1, 19468441, 8
+ tz.transition 1951, 4, :o2, 14602603, 6
+ tz.transition 1951, 9, :o1, 19471361, 8
+ tz.transition 1952, 2, :o2, 14604433, 6
+ tz.transition 1952, 10, :o1, 19474537, 8
+ tz.transition 1953, 3, :o2, 14606809, 6
+ tz.transition 1953, 10, :o1, 19477457, 8
+ tz.transition 1954, 3, :o2, 14608999, 6
+ tz.transition 1954, 10, :o1, 19480377, 8
+ tz.transition 1955, 3, :o2, 14611189, 6
+ tz.transition 1955, 9, :o1, 19483049, 8
+ tz.transition 1956, 3, :o2, 14613385, 6
+ tz.transition 1956, 9, :o1, 19485977, 8
+ tz.transition 1957, 3, :o2, 14615575, 6
+ tz.transition 1957, 9, :o1, 19488897, 8
+ tz.transition 1958, 3, :o2, 14617765, 6
+ tz.transition 1958, 9, :o1, 19491817, 8
+ tz.transition 1959, 3, :o2, 14619955, 6
+ tz.transition 1959, 9, :o1, 19494737, 8
+ tz.transition 1960, 5, :o2, 14622517, 6
+ tz.transition 1960, 9, :o1, 19497665, 8
+ tz.transition 1961, 5, :o2, 14624707, 6
+ tz.transition 1961, 9, :o1, 19500585, 8
+ tz.transition 1974, 3, :o2, 133977600
+ tz.transition 1974, 9, :o1, 149785200
+ tz.transition 1975, 3, :o2, 165513600
+ tz.transition 1975, 9, :o1, 181321200
+ tz.transition 1980, 6, :o2, 331142400
+ tz.transition 1980, 9, :o1, 339087600
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Tashkent.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Tashkent.rb
new file mode 100644
index 000000000..c205c7934
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Tashkent.rb
@@ -0,0 +1,47 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Asia
+ module Tashkent
+ include TimezoneDefinition
+
+ timezone 'Asia/Tashkent' do |tz|
+ tz.offset :o0, 16632, 0, :LMT
+ tz.offset :o1, 18000, 0, :TAST
+ tz.offset :o2, 21600, 0, :TAST
+ tz.offset :o3, 21600, 3600, :TASST
+ tz.offset :o4, 18000, 3600, :TASST
+ tz.offset :o5, 18000, 3600, :UZST
+ tz.offset :o6, 18000, 0, :UZT
+
+ tz.transition 1924, 5, :o1, 969562923, 400
+ tz.transition 1930, 6, :o2, 58227559, 24
+ tz.transition 1981, 3, :o3, 354909600
+ tz.transition 1981, 9, :o2, 370717200
+ tz.transition 1982, 3, :o3, 386445600
+ tz.transition 1982, 9, :o2, 402253200
+ tz.transition 1983, 3, :o3, 417981600
+ tz.transition 1983, 9, :o2, 433789200
+ tz.transition 1984, 3, :o3, 449604000
+ tz.transition 1984, 9, :o2, 465336000
+ tz.transition 1985, 3, :o3, 481060800
+ tz.transition 1985, 9, :o2, 496785600
+ tz.transition 1986, 3, :o3, 512510400
+ tz.transition 1986, 9, :o2, 528235200
+ tz.transition 1987, 3, :o3, 543960000
+ tz.transition 1987, 9, :o2, 559684800
+ tz.transition 1988, 3, :o3, 575409600
+ tz.transition 1988, 9, :o2, 591134400
+ tz.transition 1989, 3, :o3, 606859200
+ tz.transition 1989, 9, :o2, 622584000
+ tz.transition 1990, 3, :o3, 638308800
+ tz.transition 1990, 9, :o2, 654638400
+ tz.transition 1991, 3, :o4, 670363200
+ tz.transition 1991, 8, :o5, 683661600
+ tz.transition 1991, 9, :o6, 686091600
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Tbilisi.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Tbilisi.rb
new file mode 100644
index 000000000..15792a565
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Tbilisi.rb
@@ -0,0 +1,78 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Asia
+ module Tbilisi
+ include TimezoneDefinition
+
+ timezone 'Asia/Tbilisi' do |tz|
+ tz.offset :o0, 10756, 0, :LMT
+ tz.offset :o1, 10756, 0, :TBMT
+ tz.offset :o2, 10800, 0, :TBIT
+ tz.offset :o3, 14400, 0, :TBIT
+ tz.offset :o4, 14400, 3600, :TBIST
+ tz.offset :o5, 10800, 3600, :TBIST
+ tz.offset :o6, 10800, 3600, :GEST
+ tz.offset :o7, 10800, 0, :GET
+ tz.offset :o8, 14400, 0, :GET
+ tz.offset :o9, 14400, 3600, :GEST
+
+ tz.transition 1879, 12, :o1, 52006652111, 21600
+ tz.transition 1924, 5, :o2, 52356399311, 21600
+ tz.transition 1957, 2, :o3, 19487187, 8
+ tz.transition 1981, 3, :o4, 354916800
+ tz.transition 1981, 9, :o3, 370724400
+ tz.transition 1982, 3, :o4, 386452800
+ tz.transition 1982, 9, :o3, 402260400
+ tz.transition 1983, 3, :o4, 417988800
+ tz.transition 1983, 9, :o3, 433796400
+ tz.transition 1984, 3, :o4, 449611200
+ tz.transition 1984, 9, :o3, 465343200
+ tz.transition 1985, 3, :o4, 481068000
+ tz.transition 1985, 9, :o3, 496792800
+ tz.transition 1986, 3, :o4, 512517600
+ tz.transition 1986, 9, :o3, 528242400
+ tz.transition 1987, 3, :o4, 543967200
+ tz.transition 1987, 9, :o3, 559692000
+ tz.transition 1988, 3, :o4, 575416800
+ tz.transition 1988, 9, :o3, 591141600
+ tz.transition 1989, 3, :o4, 606866400
+ tz.transition 1989, 9, :o3, 622591200
+ tz.transition 1990, 3, :o4, 638316000
+ tz.transition 1990, 9, :o3, 654645600
+ tz.transition 1991, 3, :o5, 670370400
+ tz.transition 1991, 4, :o6, 671140800
+ tz.transition 1991, 9, :o7, 686098800
+ tz.transition 1992, 3, :o6, 701816400
+ tz.transition 1992, 9, :o7, 717537600
+ tz.transition 1993, 3, :o6, 733266000
+ tz.transition 1993, 9, :o7, 748987200
+ tz.transition 1994, 3, :o6, 764715600
+ tz.transition 1994, 9, :o8, 780436800
+ tz.transition 1995, 3, :o9, 796161600
+ tz.transition 1995, 9, :o8, 811882800
+ tz.transition 1996, 3, :o9, 828216000
+ tz.transition 1997, 3, :o9, 859662000
+ tz.transition 1997, 10, :o8, 877806000
+ tz.transition 1998, 3, :o9, 891115200
+ tz.transition 1998, 10, :o8, 909255600
+ tz.transition 1999, 3, :o9, 922564800
+ tz.transition 1999, 10, :o8, 941310000
+ tz.transition 2000, 3, :o9, 954014400
+ tz.transition 2000, 10, :o8, 972759600
+ tz.transition 2001, 3, :o9, 985464000
+ tz.transition 2001, 10, :o8, 1004209200
+ tz.transition 2002, 3, :o9, 1017518400
+ tz.transition 2002, 10, :o8, 1035658800
+ tz.transition 2003, 3, :o9, 1048968000
+ tz.transition 2003, 10, :o8, 1067108400
+ tz.transition 2004, 3, :o9, 1080417600
+ tz.transition 2004, 6, :o6, 1088276400
+ tz.transition 2004, 10, :o7, 1099177200
+ tz.transition 2005, 3, :o8, 1111878000
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Tehran.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Tehran.rb
new file mode 100644
index 000000000..d8df964a4
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Tehran.rb
@@ -0,0 +1,121 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Asia
+ module Tehran
+ include TimezoneDefinition
+
+ timezone 'Asia/Tehran' do |tz|
+ tz.offset :o0, 12344, 0, :LMT
+ tz.offset :o1, 12344, 0, :TMT
+ tz.offset :o2, 12600, 0, :IRST
+ tz.offset :o3, 14400, 0, :IRST
+ tz.offset :o4, 14400, 3600, :IRDT
+ tz.offset :o5, 12600, 3600, :IRDT
+
+ tz.transition 1915, 12, :o1, 26145324257, 10800
+ tz.transition 1945, 12, :o2, 26263670657, 10800
+ tz.transition 1977, 10, :o3, 247177800
+ tz.transition 1978, 3, :o4, 259272000
+ tz.transition 1978, 10, :o3, 277758000
+ tz.transition 1978, 12, :o2, 283982400
+ tz.transition 1979, 3, :o5, 290809800
+ tz.transition 1979, 9, :o2, 306531000
+ tz.transition 1980, 3, :o5, 322432200
+ tz.transition 1980, 9, :o2, 338499000
+ tz.transition 1991, 5, :o5, 673216200
+ tz.transition 1991, 9, :o2, 685481400
+ tz.transition 1992, 3, :o5, 701209800
+ tz.transition 1992, 9, :o2, 717103800
+ tz.transition 1993, 3, :o5, 732745800
+ tz.transition 1993, 9, :o2, 748639800
+ tz.transition 1994, 3, :o5, 764281800
+ tz.transition 1994, 9, :o2, 780175800
+ tz.transition 1995, 3, :o5, 795817800
+ tz.transition 1995, 9, :o2, 811711800
+ tz.transition 1996, 3, :o5, 827353800
+ tz.transition 1996, 9, :o2, 843247800
+ tz.transition 1997, 3, :o5, 858976200
+ tz.transition 1997, 9, :o2, 874870200
+ tz.transition 1998, 3, :o5, 890512200
+ tz.transition 1998, 9, :o2, 906406200
+ tz.transition 1999, 3, :o5, 922048200
+ tz.transition 1999, 9, :o2, 937942200
+ tz.transition 2000, 3, :o5, 953584200
+ tz.transition 2000, 9, :o2, 969478200
+ tz.transition 2001, 3, :o5, 985206600
+ tz.transition 2001, 9, :o2, 1001100600
+ tz.transition 2002, 3, :o5, 1016742600
+ tz.transition 2002, 9, :o2, 1032636600
+ tz.transition 2003, 3, :o5, 1048278600
+ tz.transition 2003, 9, :o2, 1064172600
+ tz.transition 2004, 3, :o5, 1079814600
+ tz.transition 2004, 9, :o2, 1095708600
+ tz.transition 2005, 3, :o5, 1111437000
+ tz.transition 2005, 9, :o2, 1127331000
+ tz.transition 2008, 3, :o5, 1206045000
+ tz.transition 2008, 9, :o2, 1221939000
+ tz.transition 2009, 3, :o5, 1237667400
+ tz.transition 2009, 9, :o2, 1253561400
+ tz.transition 2010, 3, :o5, 1269203400
+ tz.transition 2010, 9, :o2, 1285097400
+ tz.transition 2011, 3, :o5, 1300739400
+ tz.transition 2011, 9, :o2, 1316633400
+ tz.transition 2012, 3, :o5, 1332275400
+ tz.transition 2012, 9, :o2, 1348169400
+ tz.transition 2013, 3, :o5, 1363897800
+ tz.transition 2013, 9, :o2, 1379791800
+ tz.transition 2014, 3, :o5, 1395433800
+ tz.transition 2014, 9, :o2, 1411327800
+ tz.transition 2015, 3, :o5, 1426969800
+ tz.transition 2015, 9, :o2, 1442863800
+ tz.transition 2016, 3, :o5, 1458505800
+ tz.transition 2016, 9, :o2, 1474399800
+ tz.transition 2017, 3, :o5, 1490128200
+ tz.transition 2017, 9, :o2, 1506022200
+ tz.transition 2018, 3, :o5, 1521664200
+ tz.transition 2018, 9, :o2, 1537558200
+ tz.transition 2019, 3, :o5, 1553200200
+ tz.transition 2019, 9, :o2, 1569094200
+ tz.transition 2020, 3, :o5, 1584736200
+ tz.transition 2020, 9, :o2, 1600630200
+ tz.transition 2021, 3, :o5, 1616358600
+ tz.transition 2021, 9, :o2, 1632252600
+ tz.transition 2022, 3, :o5, 1647894600
+ tz.transition 2022, 9, :o2, 1663788600
+ tz.transition 2023, 3, :o5, 1679430600
+ tz.transition 2023, 9, :o2, 1695324600
+ tz.transition 2024, 3, :o5, 1710966600
+ tz.transition 2024, 9, :o2, 1726860600
+ tz.transition 2025, 3, :o5, 1742589000
+ tz.transition 2025, 9, :o2, 1758483000
+ tz.transition 2026, 3, :o5, 1774125000
+ tz.transition 2026, 9, :o2, 1790019000
+ tz.transition 2027, 3, :o5, 1805661000
+ tz.transition 2027, 9, :o2, 1821555000
+ tz.transition 2028, 3, :o5, 1837197000
+ tz.transition 2028, 9, :o2, 1853091000
+ tz.transition 2029, 3, :o5, 1868733000
+ tz.transition 2029, 9, :o2, 1884627000
+ tz.transition 2030, 3, :o5, 1900355400
+ tz.transition 2030, 9, :o2, 1916249400
+ tz.transition 2031, 3, :o5, 1931891400
+ tz.transition 2031, 9, :o2, 1947785400
+ tz.transition 2032, 3, :o5, 1963427400
+ tz.transition 2032, 9, :o2, 1979321400
+ tz.transition 2033, 3, :o5, 1994963400
+ tz.transition 2033, 9, :o2, 2010857400
+ tz.transition 2034, 3, :o5, 2026585800
+ tz.transition 2034, 9, :o2, 2042479800
+ tz.transition 2035, 3, :o5, 2058121800
+ tz.transition 2035, 9, :o2, 2074015800
+ tz.transition 2036, 3, :o5, 2089657800
+ tz.transition 2036, 9, :o2, 2105551800
+ tz.transition 2037, 3, :o5, 2121193800
+ tz.transition 2037, 9, :o2, 2137087800
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Tokyo.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Tokyo.rb
new file mode 100644
index 000000000..51c9e1642
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Tokyo.rb
@@ -0,0 +1,30 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Asia
+ module Tokyo
+ include TimezoneDefinition
+
+ timezone 'Asia/Tokyo' do |tz|
+ tz.offset :o0, 33539, 0, :LMT
+ tz.offset :o1, 32400, 0, :JST
+ tz.offset :o2, 32400, 0, :CJT
+ tz.offset :o3, 32400, 3600, :JDT
+
+ tz.transition 1887, 12, :o1, 19285097, 8
+ tz.transition 1895, 12, :o2, 19308473, 8
+ tz.transition 1937, 12, :o1, 19431193, 8
+ tz.transition 1948, 5, :o3, 58384157, 24
+ tz.transition 1948, 9, :o1, 14596831, 6
+ tz.transition 1949, 4, :o3, 58392221, 24
+ tz.transition 1949, 9, :o1, 14599015, 6
+ tz.transition 1950, 5, :o3, 58401797, 24
+ tz.transition 1950, 9, :o1, 14601199, 6
+ tz.transition 1951, 5, :o3, 58410533, 24
+ tz.transition 1951, 9, :o1, 14603383, 6
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Ulaanbaatar.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Ulaanbaatar.rb
new file mode 100644
index 000000000..2854f5c5f
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Ulaanbaatar.rb
@@ -0,0 +1,65 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Asia
+ module Ulaanbaatar
+ include TimezoneDefinition
+
+ timezone 'Asia/Ulaanbaatar' do |tz|
+ tz.offset :o0, 25652, 0, :LMT
+ tz.offset :o1, 25200, 0, :ULAT
+ tz.offset :o2, 28800, 0, :ULAT
+ tz.offset :o3, 28800, 3600, :ULAST
+
+ tz.transition 1905, 7, :o1, 52208457187, 21600
+ tz.transition 1977, 12, :o2, 252435600
+ tz.transition 1983, 3, :o3, 417974400
+ tz.transition 1983, 9, :o2, 433782000
+ tz.transition 1984, 3, :o3, 449596800
+ tz.transition 1984, 9, :o2, 465318000
+ tz.transition 1985, 3, :o3, 481046400
+ tz.transition 1985, 9, :o2, 496767600
+ tz.transition 1986, 3, :o3, 512496000
+ tz.transition 1986, 9, :o2, 528217200
+ tz.transition 1987, 3, :o3, 543945600
+ tz.transition 1987, 9, :o2, 559666800
+ tz.transition 1988, 3, :o3, 575395200
+ tz.transition 1988, 9, :o2, 591116400
+ tz.transition 1989, 3, :o3, 606844800
+ tz.transition 1989, 9, :o2, 622566000
+ tz.transition 1990, 3, :o3, 638294400
+ tz.transition 1990, 9, :o2, 654620400
+ tz.transition 1991, 3, :o3, 670348800
+ tz.transition 1991, 9, :o2, 686070000
+ tz.transition 1992, 3, :o3, 701798400
+ tz.transition 1992, 9, :o2, 717519600
+ tz.transition 1993, 3, :o3, 733248000
+ tz.transition 1993, 9, :o2, 748969200
+ tz.transition 1994, 3, :o3, 764697600
+ tz.transition 1994, 9, :o2, 780418800
+ tz.transition 1995, 3, :o3, 796147200
+ tz.transition 1995, 9, :o2, 811868400
+ tz.transition 1996, 3, :o3, 828201600
+ tz.transition 1996, 9, :o2, 843922800
+ tz.transition 1997, 3, :o3, 859651200
+ tz.transition 1997, 9, :o2, 875372400
+ tz.transition 1998, 3, :o3, 891100800
+ tz.transition 1998, 9, :o2, 906822000
+ tz.transition 2001, 4, :o3, 988394400
+ tz.transition 2001, 9, :o2, 1001696400
+ tz.transition 2002, 3, :o3, 1017424800
+ tz.transition 2002, 9, :o2, 1033146000
+ tz.transition 2003, 3, :o3, 1048874400
+ tz.transition 2003, 9, :o2, 1064595600
+ tz.transition 2004, 3, :o3, 1080324000
+ tz.transition 2004, 9, :o2, 1096045200
+ tz.transition 2005, 3, :o3, 1111773600
+ tz.transition 2005, 9, :o2, 1127494800
+ tz.transition 2006, 3, :o3, 1143223200
+ tz.transition 2006, 9, :o2, 1159549200
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Urumqi.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Urumqi.rb
new file mode 100644
index 000000000..d793ff134
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Urumqi.rb
@@ -0,0 +1,33 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Asia
+ module Urumqi
+ include TimezoneDefinition
+
+ timezone 'Asia/Urumqi' do |tz|
+ tz.offset :o0, 21020, 0, :LMT
+ tz.offset :o1, 21600, 0, :URUT
+ tz.offset :o2, 28800, 0, :CST
+ tz.offset :o3, 28800, 3600, :CDT
+
+ tz.transition 1927, 12, :o1, 10477063829, 4320
+ tz.transition 1980, 4, :o2, 325965600
+ tz.transition 1986, 5, :o3, 515520000
+ tz.transition 1986, 9, :o2, 527007600
+ tz.transition 1987, 4, :o3, 545155200
+ tz.transition 1987, 9, :o2, 558457200
+ tz.transition 1988, 4, :o3, 576604800
+ tz.transition 1988, 9, :o2, 589906800
+ tz.transition 1989, 4, :o3, 608659200
+ tz.transition 1989, 9, :o2, 621961200
+ tz.transition 1990, 4, :o3, 640108800
+ tz.transition 1990, 9, :o2, 653410800
+ tz.transition 1991, 4, :o3, 671558400
+ tz.transition 1991, 9, :o2, 684860400
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Vladivostok.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Vladivostok.rb
new file mode 100644
index 000000000..bd9e3d60e
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Vladivostok.rb
@@ -0,0 +1,164 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Asia
+ module Vladivostok
+ include TimezoneDefinition
+
+ timezone 'Asia/Vladivostok' do |tz|
+ tz.offset :o0, 31664, 0, :LMT
+ tz.offset :o1, 32400, 0, :VLAT
+ tz.offset :o2, 36000, 0, :VLAT
+ tz.offset :o3, 36000, 3600, :VLAST
+ tz.offset :o4, 32400, 3600, :VLASST
+ tz.offset :o5, 32400, 0, :VLAST
+
+ tz.transition 1922, 11, :o1, 13086214921, 5400
+ tz.transition 1930, 6, :o2, 19409185, 8
+ tz.transition 1981, 3, :o3, 354895200
+ tz.transition 1981, 9, :o2, 370702800
+ tz.transition 1982, 3, :o3, 386431200
+ tz.transition 1982, 9, :o2, 402238800
+ tz.transition 1983, 3, :o3, 417967200
+ tz.transition 1983, 9, :o2, 433774800
+ tz.transition 1984, 3, :o3, 449589600
+ tz.transition 1984, 9, :o2, 465321600
+ tz.transition 1985, 3, :o3, 481046400
+ tz.transition 1985, 9, :o2, 496771200
+ tz.transition 1986, 3, :o3, 512496000
+ tz.transition 1986, 9, :o2, 528220800
+ tz.transition 1987, 3, :o3, 543945600
+ tz.transition 1987, 9, :o2, 559670400
+ tz.transition 1988, 3, :o3, 575395200
+ tz.transition 1988, 9, :o2, 591120000
+ tz.transition 1989, 3, :o3, 606844800
+ tz.transition 1989, 9, :o2, 622569600
+ tz.transition 1990, 3, :o3, 638294400
+ tz.transition 1990, 9, :o2, 654624000
+ tz.transition 1991, 3, :o4, 670348800
+ tz.transition 1991, 9, :o5, 686077200
+ tz.transition 1992, 1, :o2, 695754000
+ tz.transition 1992, 3, :o3, 701787600
+ tz.transition 1992, 9, :o2, 717508800
+ tz.transition 1993, 3, :o3, 733248000
+ tz.transition 1993, 9, :o2, 748972800
+ tz.transition 1994, 3, :o3, 764697600
+ tz.transition 1994, 9, :o2, 780422400
+ tz.transition 1995, 3, :o3, 796147200
+ tz.transition 1995, 9, :o2, 811872000
+ tz.transition 1996, 3, :o3, 828201600
+ tz.transition 1996, 10, :o2, 846345600
+ tz.transition 1997, 3, :o3, 859651200
+ tz.transition 1997, 10, :o2, 877795200
+ tz.transition 1998, 3, :o3, 891100800
+ tz.transition 1998, 10, :o2, 909244800
+ tz.transition 1999, 3, :o3, 922550400
+ tz.transition 1999, 10, :o2, 941299200
+ tz.transition 2000, 3, :o3, 954000000
+ tz.transition 2000, 10, :o2, 972748800
+ tz.transition 2001, 3, :o3, 985449600
+ tz.transition 2001, 10, :o2, 1004198400
+ tz.transition 2002, 3, :o3, 1017504000
+ tz.transition 2002, 10, :o2, 1035648000
+ tz.transition 2003, 3, :o3, 1048953600
+ tz.transition 2003, 10, :o2, 1067097600
+ tz.transition 2004, 3, :o3, 1080403200
+ tz.transition 2004, 10, :o2, 1099152000
+ tz.transition 2005, 3, :o3, 1111852800
+ tz.transition 2005, 10, :o2, 1130601600
+ tz.transition 2006, 3, :o3, 1143302400
+ tz.transition 2006, 10, :o2, 1162051200
+ tz.transition 2007, 3, :o3, 1174752000
+ tz.transition 2007, 10, :o2, 1193500800
+ tz.transition 2008, 3, :o3, 1206806400
+ tz.transition 2008, 10, :o2, 1224950400
+ tz.transition 2009, 3, :o3, 1238256000
+ tz.transition 2009, 10, :o2, 1256400000
+ tz.transition 2010, 3, :o3, 1269705600
+ tz.transition 2010, 10, :o2, 1288454400
+ tz.transition 2011, 3, :o3, 1301155200
+ tz.transition 2011, 10, :o2, 1319904000
+ tz.transition 2012, 3, :o3, 1332604800
+ tz.transition 2012, 10, :o2, 1351353600
+ tz.transition 2013, 3, :o3, 1364659200
+ tz.transition 2013, 10, :o2, 1382803200
+ tz.transition 2014, 3, :o3, 1396108800
+ tz.transition 2014, 10, :o2, 1414252800
+ tz.transition 2015, 3, :o3, 1427558400
+ tz.transition 2015, 10, :o2, 1445702400
+ tz.transition 2016, 3, :o3, 1459008000
+ tz.transition 2016, 10, :o2, 1477756800
+ tz.transition 2017, 3, :o3, 1490457600
+ tz.transition 2017, 10, :o2, 1509206400
+ tz.transition 2018, 3, :o3, 1521907200
+ tz.transition 2018, 10, :o2, 1540656000
+ tz.transition 2019, 3, :o3, 1553961600
+ tz.transition 2019, 10, :o2, 1572105600
+ tz.transition 2020, 3, :o3, 1585411200
+ tz.transition 2020, 10, :o2, 1603555200
+ tz.transition 2021, 3, :o3, 1616860800
+ tz.transition 2021, 10, :o2, 1635609600
+ tz.transition 2022, 3, :o3, 1648310400
+ tz.transition 2022, 10, :o2, 1667059200
+ tz.transition 2023, 3, :o3, 1679760000
+ tz.transition 2023, 10, :o2, 1698508800
+ tz.transition 2024, 3, :o3, 1711814400
+ tz.transition 2024, 10, :o2, 1729958400
+ tz.transition 2025, 3, :o3, 1743264000
+ tz.transition 2025, 10, :o2, 1761408000
+ tz.transition 2026, 3, :o3, 1774713600
+ tz.transition 2026, 10, :o2, 1792857600
+ tz.transition 2027, 3, :o3, 1806163200
+ tz.transition 2027, 10, :o2, 1824912000
+ tz.transition 2028, 3, :o3, 1837612800
+ tz.transition 2028, 10, :o2, 1856361600
+ tz.transition 2029, 3, :o3, 1869062400
+ tz.transition 2029, 10, :o2, 1887811200
+ tz.transition 2030, 3, :o3, 1901116800
+ tz.transition 2030, 10, :o2, 1919260800
+ tz.transition 2031, 3, :o3, 1932566400
+ tz.transition 2031, 10, :o2, 1950710400
+ tz.transition 2032, 3, :o3, 1964016000
+ tz.transition 2032, 10, :o2, 1982764800
+ tz.transition 2033, 3, :o3, 1995465600
+ tz.transition 2033, 10, :o2, 2014214400
+ tz.transition 2034, 3, :o3, 2026915200
+ tz.transition 2034, 10, :o2, 2045664000
+ tz.transition 2035, 3, :o3, 2058364800
+ tz.transition 2035, 10, :o2, 2077113600
+ tz.transition 2036, 3, :o3, 2090419200
+ tz.transition 2036, 10, :o2, 2108563200
+ tz.transition 2037, 3, :o3, 2121868800
+ tz.transition 2037, 10, :o2, 2140012800
+ tz.transition 2038, 3, :o3, 14793061, 6
+ tz.transition 2038, 10, :o2, 14794363, 6
+ tz.transition 2039, 3, :o3, 14795245, 6
+ tz.transition 2039, 10, :o2, 14796547, 6
+ tz.transition 2040, 3, :o3, 14797429, 6
+ tz.transition 2040, 10, :o2, 14798731, 6
+ tz.transition 2041, 3, :o3, 14799655, 6
+ tz.transition 2041, 10, :o2, 14800915, 6
+ tz.transition 2042, 3, :o3, 14801839, 6
+ tz.transition 2042, 10, :o2, 14803099, 6
+ tz.transition 2043, 3, :o3, 14804023, 6
+ tz.transition 2043, 10, :o2, 14805283, 6
+ tz.transition 2044, 3, :o3, 14806207, 6
+ tz.transition 2044, 10, :o2, 14807509, 6
+ tz.transition 2045, 3, :o3, 14808391, 6
+ tz.transition 2045, 10, :o2, 14809693, 6
+ tz.transition 2046, 3, :o3, 14810575, 6
+ tz.transition 2046, 10, :o2, 14811877, 6
+ tz.transition 2047, 3, :o3, 14812801, 6
+ tz.transition 2047, 10, :o2, 14814061, 6
+ tz.transition 2048, 3, :o3, 14814985, 6
+ tz.transition 2048, 10, :o2, 14816245, 6
+ tz.transition 2049, 3, :o3, 14817169, 6
+ tz.transition 2049, 10, :o2, 14818471, 6
+ tz.transition 2050, 3, :o3, 14819353, 6
+ tz.transition 2050, 10, :o2, 14820655, 6
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Yakutsk.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Yakutsk.rb
new file mode 100644
index 000000000..56435a788
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Yakutsk.rb
@@ -0,0 +1,163 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Asia
+ module Yakutsk
+ include TimezoneDefinition
+
+ timezone 'Asia/Yakutsk' do |tz|
+ tz.offset :o0, 31120, 0, :LMT
+ tz.offset :o1, 28800, 0, :YAKT
+ tz.offset :o2, 32400, 0, :YAKT
+ tz.offset :o3, 32400, 3600, :YAKST
+ tz.offset :o4, 28800, 3600, :YAKST
+
+ tz.transition 1919, 12, :o1, 2616091711, 1080
+ tz.transition 1930, 6, :o2, 14556889, 6
+ tz.transition 1981, 3, :o3, 354898800
+ tz.transition 1981, 9, :o2, 370706400
+ tz.transition 1982, 3, :o3, 386434800
+ tz.transition 1982, 9, :o2, 402242400
+ tz.transition 1983, 3, :o3, 417970800
+ tz.transition 1983, 9, :o2, 433778400
+ tz.transition 1984, 3, :o3, 449593200
+ tz.transition 1984, 9, :o2, 465325200
+ tz.transition 1985, 3, :o3, 481050000
+ tz.transition 1985, 9, :o2, 496774800
+ tz.transition 1986, 3, :o3, 512499600
+ tz.transition 1986, 9, :o2, 528224400
+ tz.transition 1987, 3, :o3, 543949200
+ tz.transition 1987, 9, :o2, 559674000
+ tz.transition 1988, 3, :o3, 575398800
+ tz.transition 1988, 9, :o2, 591123600
+ tz.transition 1989, 3, :o3, 606848400
+ tz.transition 1989, 9, :o2, 622573200
+ tz.transition 1990, 3, :o3, 638298000
+ tz.transition 1990, 9, :o2, 654627600
+ tz.transition 1991, 3, :o4, 670352400
+ tz.transition 1991, 9, :o1, 686080800
+ tz.transition 1992, 1, :o2, 695757600
+ tz.transition 1992, 3, :o3, 701791200
+ tz.transition 1992, 9, :o2, 717512400
+ tz.transition 1993, 3, :o3, 733251600
+ tz.transition 1993, 9, :o2, 748976400
+ tz.transition 1994, 3, :o3, 764701200
+ tz.transition 1994, 9, :o2, 780426000
+ tz.transition 1995, 3, :o3, 796150800
+ tz.transition 1995, 9, :o2, 811875600
+ tz.transition 1996, 3, :o3, 828205200
+ tz.transition 1996, 10, :o2, 846349200
+ tz.transition 1997, 3, :o3, 859654800
+ tz.transition 1997, 10, :o2, 877798800
+ tz.transition 1998, 3, :o3, 891104400
+ tz.transition 1998, 10, :o2, 909248400
+ tz.transition 1999, 3, :o3, 922554000
+ tz.transition 1999, 10, :o2, 941302800
+ tz.transition 2000, 3, :o3, 954003600
+ tz.transition 2000, 10, :o2, 972752400
+ tz.transition 2001, 3, :o3, 985453200
+ tz.transition 2001, 10, :o2, 1004202000
+ tz.transition 2002, 3, :o3, 1017507600
+ tz.transition 2002, 10, :o2, 1035651600
+ tz.transition 2003, 3, :o3, 1048957200
+ tz.transition 2003, 10, :o2, 1067101200
+ tz.transition 2004, 3, :o3, 1080406800
+ tz.transition 2004, 10, :o2, 1099155600
+ tz.transition 2005, 3, :o3, 1111856400
+ tz.transition 2005, 10, :o2, 1130605200
+ tz.transition 2006, 3, :o3, 1143306000
+ tz.transition 2006, 10, :o2, 1162054800
+ tz.transition 2007, 3, :o3, 1174755600
+ tz.transition 2007, 10, :o2, 1193504400
+ tz.transition 2008, 3, :o3, 1206810000
+ tz.transition 2008, 10, :o2, 1224954000
+ tz.transition 2009, 3, :o3, 1238259600
+ tz.transition 2009, 10, :o2, 1256403600
+ tz.transition 2010, 3, :o3, 1269709200
+ tz.transition 2010, 10, :o2, 1288458000
+ tz.transition 2011, 3, :o3, 1301158800
+ tz.transition 2011, 10, :o2, 1319907600
+ tz.transition 2012, 3, :o3, 1332608400
+ tz.transition 2012, 10, :o2, 1351357200
+ tz.transition 2013, 3, :o3, 1364662800
+ tz.transition 2013, 10, :o2, 1382806800
+ tz.transition 2014, 3, :o3, 1396112400
+ tz.transition 2014, 10, :o2, 1414256400
+ tz.transition 2015, 3, :o3, 1427562000
+ tz.transition 2015, 10, :o2, 1445706000
+ tz.transition 2016, 3, :o3, 1459011600
+ tz.transition 2016, 10, :o2, 1477760400
+ tz.transition 2017, 3, :o3, 1490461200
+ tz.transition 2017, 10, :o2, 1509210000
+ tz.transition 2018, 3, :o3, 1521910800
+ tz.transition 2018, 10, :o2, 1540659600
+ tz.transition 2019, 3, :o3, 1553965200
+ tz.transition 2019, 10, :o2, 1572109200
+ tz.transition 2020, 3, :o3, 1585414800
+ tz.transition 2020, 10, :o2, 1603558800
+ tz.transition 2021, 3, :o3, 1616864400
+ tz.transition 2021, 10, :o2, 1635613200
+ tz.transition 2022, 3, :o3, 1648314000
+ tz.transition 2022, 10, :o2, 1667062800
+ tz.transition 2023, 3, :o3, 1679763600
+ tz.transition 2023, 10, :o2, 1698512400
+ tz.transition 2024, 3, :o3, 1711818000
+ tz.transition 2024, 10, :o2, 1729962000
+ tz.transition 2025, 3, :o3, 1743267600
+ tz.transition 2025, 10, :o2, 1761411600
+ tz.transition 2026, 3, :o3, 1774717200
+ tz.transition 2026, 10, :o2, 1792861200
+ tz.transition 2027, 3, :o3, 1806166800
+ tz.transition 2027, 10, :o2, 1824915600
+ tz.transition 2028, 3, :o3, 1837616400
+ tz.transition 2028, 10, :o2, 1856365200
+ tz.transition 2029, 3, :o3, 1869066000
+ tz.transition 2029, 10, :o2, 1887814800
+ tz.transition 2030, 3, :o3, 1901120400
+ tz.transition 2030, 10, :o2, 1919264400
+ tz.transition 2031, 3, :o3, 1932570000
+ tz.transition 2031, 10, :o2, 1950714000
+ tz.transition 2032, 3, :o3, 1964019600
+ tz.transition 2032, 10, :o2, 1982768400
+ tz.transition 2033, 3, :o3, 1995469200
+ tz.transition 2033, 10, :o2, 2014218000
+ tz.transition 2034, 3, :o3, 2026918800
+ tz.transition 2034, 10, :o2, 2045667600
+ tz.transition 2035, 3, :o3, 2058368400
+ tz.transition 2035, 10, :o2, 2077117200
+ tz.transition 2036, 3, :o3, 2090422800
+ tz.transition 2036, 10, :o2, 2108566800
+ tz.transition 2037, 3, :o3, 2121872400
+ tz.transition 2037, 10, :o2, 2140016400
+ tz.transition 2038, 3, :o3, 59172245, 24
+ tz.transition 2038, 10, :o2, 59177453, 24
+ tz.transition 2039, 3, :o3, 59180981, 24
+ tz.transition 2039, 10, :o2, 59186189, 24
+ tz.transition 2040, 3, :o3, 59189717, 24
+ tz.transition 2040, 10, :o2, 59194925, 24
+ tz.transition 2041, 3, :o3, 59198621, 24
+ tz.transition 2041, 10, :o2, 59203661, 24
+ tz.transition 2042, 3, :o3, 59207357, 24
+ tz.transition 2042, 10, :o2, 59212397, 24
+ tz.transition 2043, 3, :o3, 59216093, 24
+ tz.transition 2043, 10, :o2, 59221133, 24
+ tz.transition 2044, 3, :o3, 59224829, 24
+ tz.transition 2044, 10, :o2, 59230037, 24
+ tz.transition 2045, 3, :o3, 59233565, 24
+ tz.transition 2045, 10, :o2, 59238773, 24
+ tz.transition 2046, 3, :o3, 59242301, 24
+ tz.transition 2046, 10, :o2, 59247509, 24
+ tz.transition 2047, 3, :o3, 59251205, 24
+ tz.transition 2047, 10, :o2, 59256245, 24
+ tz.transition 2048, 3, :o3, 59259941, 24
+ tz.transition 2048, 10, :o2, 59264981, 24
+ tz.transition 2049, 3, :o3, 59268677, 24
+ tz.transition 2049, 10, :o2, 59273885, 24
+ tz.transition 2050, 3, :o3, 59277413, 24
+ tz.transition 2050, 10, :o2, 59282621, 24
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Yekaterinburg.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Yekaterinburg.rb
new file mode 100644
index 000000000..8ef8df4a4
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Yekaterinburg.rb
@@ -0,0 +1,165 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Asia
+ module Yekaterinburg
+ include TimezoneDefinition
+
+ timezone 'Asia/Yekaterinburg' do |tz|
+ tz.offset :o0, 14544, 0, :LMT
+ tz.offset :o1, 14400, 0, :SVET
+ tz.offset :o2, 18000, 0, :SVET
+ tz.offset :o3, 18000, 3600, :SVEST
+ tz.offset :o4, 14400, 3600, :SVEST
+ tz.offset :o5, 18000, 0, :YEKT
+ tz.offset :o6, 18000, 3600, :YEKST
+
+ tz.transition 1919, 7, :o1, 1453292699, 600
+ tz.transition 1930, 6, :o2, 7278445, 3
+ tz.transition 1981, 3, :o3, 354913200
+ tz.transition 1981, 9, :o2, 370720800
+ tz.transition 1982, 3, :o3, 386449200
+ tz.transition 1982, 9, :o2, 402256800
+ tz.transition 1983, 3, :o3, 417985200
+ tz.transition 1983, 9, :o2, 433792800
+ tz.transition 1984, 3, :o3, 449607600
+ tz.transition 1984, 9, :o2, 465339600
+ tz.transition 1985, 3, :o3, 481064400
+ tz.transition 1985, 9, :o2, 496789200
+ tz.transition 1986, 3, :o3, 512514000
+ tz.transition 1986, 9, :o2, 528238800
+ tz.transition 1987, 3, :o3, 543963600
+ tz.transition 1987, 9, :o2, 559688400
+ tz.transition 1988, 3, :o3, 575413200
+ tz.transition 1988, 9, :o2, 591138000
+ tz.transition 1989, 3, :o3, 606862800
+ tz.transition 1989, 9, :o2, 622587600
+ tz.transition 1990, 3, :o3, 638312400
+ tz.transition 1990, 9, :o2, 654642000
+ tz.transition 1991, 3, :o4, 670366800
+ tz.transition 1991, 9, :o1, 686095200
+ tz.transition 1992, 1, :o5, 695772000
+ tz.transition 1992, 3, :o6, 701805600
+ tz.transition 1992, 9, :o5, 717526800
+ tz.transition 1993, 3, :o6, 733266000
+ tz.transition 1993, 9, :o5, 748990800
+ tz.transition 1994, 3, :o6, 764715600
+ tz.transition 1994, 9, :o5, 780440400
+ tz.transition 1995, 3, :o6, 796165200
+ tz.transition 1995, 9, :o5, 811890000
+ tz.transition 1996, 3, :o6, 828219600
+ tz.transition 1996, 10, :o5, 846363600
+ tz.transition 1997, 3, :o6, 859669200
+ tz.transition 1997, 10, :o5, 877813200
+ tz.transition 1998, 3, :o6, 891118800
+ tz.transition 1998, 10, :o5, 909262800
+ tz.transition 1999, 3, :o6, 922568400
+ tz.transition 1999, 10, :o5, 941317200
+ tz.transition 2000, 3, :o6, 954018000
+ tz.transition 2000, 10, :o5, 972766800
+ tz.transition 2001, 3, :o6, 985467600
+ tz.transition 2001, 10, :o5, 1004216400
+ tz.transition 2002, 3, :o6, 1017522000
+ tz.transition 2002, 10, :o5, 1035666000
+ tz.transition 2003, 3, :o6, 1048971600
+ tz.transition 2003, 10, :o5, 1067115600
+ tz.transition 2004, 3, :o6, 1080421200
+ tz.transition 2004, 10, :o5, 1099170000
+ tz.transition 2005, 3, :o6, 1111870800
+ tz.transition 2005, 10, :o5, 1130619600
+ tz.transition 2006, 3, :o6, 1143320400
+ tz.transition 2006, 10, :o5, 1162069200
+ tz.transition 2007, 3, :o6, 1174770000
+ tz.transition 2007, 10, :o5, 1193518800
+ tz.transition 2008, 3, :o6, 1206824400
+ tz.transition 2008, 10, :o5, 1224968400
+ tz.transition 2009, 3, :o6, 1238274000
+ tz.transition 2009, 10, :o5, 1256418000
+ tz.transition 2010, 3, :o6, 1269723600
+ tz.transition 2010, 10, :o5, 1288472400
+ tz.transition 2011, 3, :o6, 1301173200
+ tz.transition 2011, 10, :o5, 1319922000
+ tz.transition 2012, 3, :o6, 1332622800
+ tz.transition 2012, 10, :o5, 1351371600
+ tz.transition 2013, 3, :o6, 1364677200
+ tz.transition 2013, 10, :o5, 1382821200
+ tz.transition 2014, 3, :o6, 1396126800
+ tz.transition 2014, 10, :o5, 1414270800
+ tz.transition 2015, 3, :o6, 1427576400
+ tz.transition 2015, 10, :o5, 1445720400
+ tz.transition 2016, 3, :o6, 1459026000
+ tz.transition 2016, 10, :o5, 1477774800
+ tz.transition 2017, 3, :o6, 1490475600
+ tz.transition 2017, 10, :o5, 1509224400
+ tz.transition 2018, 3, :o6, 1521925200
+ tz.transition 2018, 10, :o5, 1540674000
+ tz.transition 2019, 3, :o6, 1553979600
+ tz.transition 2019, 10, :o5, 1572123600
+ tz.transition 2020, 3, :o6, 1585429200
+ tz.transition 2020, 10, :o5, 1603573200
+ tz.transition 2021, 3, :o6, 1616878800
+ tz.transition 2021, 10, :o5, 1635627600
+ tz.transition 2022, 3, :o6, 1648328400
+ tz.transition 2022, 10, :o5, 1667077200
+ tz.transition 2023, 3, :o6, 1679778000
+ tz.transition 2023, 10, :o5, 1698526800
+ tz.transition 2024, 3, :o6, 1711832400
+ tz.transition 2024, 10, :o5, 1729976400
+ tz.transition 2025, 3, :o6, 1743282000
+ tz.transition 2025, 10, :o5, 1761426000
+ tz.transition 2026, 3, :o6, 1774731600
+ tz.transition 2026, 10, :o5, 1792875600
+ tz.transition 2027, 3, :o6, 1806181200
+ tz.transition 2027, 10, :o5, 1824930000
+ tz.transition 2028, 3, :o6, 1837630800
+ tz.transition 2028, 10, :o5, 1856379600
+ tz.transition 2029, 3, :o6, 1869080400
+ tz.transition 2029, 10, :o5, 1887829200
+ tz.transition 2030, 3, :o6, 1901134800
+ tz.transition 2030, 10, :o5, 1919278800
+ tz.transition 2031, 3, :o6, 1932584400
+ tz.transition 2031, 10, :o5, 1950728400
+ tz.transition 2032, 3, :o6, 1964034000
+ tz.transition 2032, 10, :o5, 1982782800
+ tz.transition 2033, 3, :o6, 1995483600
+ tz.transition 2033, 10, :o5, 2014232400
+ tz.transition 2034, 3, :o6, 2026933200
+ tz.transition 2034, 10, :o5, 2045682000
+ tz.transition 2035, 3, :o6, 2058382800
+ tz.transition 2035, 10, :o5, 2077131600
+ tz.transition 2036, 3, :o6, 2090437200
+ tz.transition 2036, 10, :o5, 2108581200
+ tz.transition 2037, 3, :o6, 2121886800
+ tz.transition 2037, 10, :o5, 2140030800
+ tz.transition 2038, 3, :o6, 19724083, 8
+ tz.transition 2038, 10, :o5, 19725819, 8
+ tz.transition 2039, 3, :o6, 19726995, 8
+ tz.transition 2039, 10, :o5, 19728731, 8
+ tz.transition 2040, 3, :o6, 19729907, 8
+ tz.transition 2040, 10, :o5, 19731643, 8
+ tz.transition 2041, 3, :o6, 19732875, 8
+ tz.transition 2041, 10, :o5, 19734555, 8
+ tz.transition 2042, 3, :o6, 19735787, 8
+ tz.transition 2042, 10, :o5, 19737467, 8
+ tz.transition 2043, 3, :o6, 19738699, 8
+ tz.transition 2043, 10, :o5, 19740379, 8
+ tz.transition 2044, 3, :o6, 19741611, 8
+ tz.transition 2044, 10, :o5, 19743347, 8
+ tz.transition 2045, 3, :o6, 19744523, 8
+ tz.transition 2045, 10, :o5, 19746259, 8
+ tz.transition 2046, 3, :o6, 19747435, 8
+ tz.transition 2046, 10, :o5, 19749171, 8
+ tz.transition 2047, 3, :o6, 19750403, 8
+ tz.transition 2047, 10, :o5, 19752083, 8
+ tz.transition 2048, 3, :o6, 19753315, 8
+ tz.transition 2048, 10, :o5, 19754995, 8
+ tz.transition 2049, 3, :o6, 19756227, 8
+ tz.transition 2049, 10, :o5, 19757963, 8
+ tz.transition 2050, 3, :o6, 19759139, 8
+ tz.transition 2050, 10, :o5, 19760875, 8
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Yerevan.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Yerevan.rb
new file mode 100644
index 000000000..e7f160861
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Yerevan.rb
@@ -0,0 +1,165 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Asia
+ module Yerevan
+ include TimezoneDefinition
+
+ timezone 'Asia/Yerevan' do |tz|
+ tz.offset :o0, 10680, 0, :LMT
+ tz.offset :o1, 10800, 0, :YERT
+ tz.offset :o2, 14400, 0, :YERT
+ tz.offset :o3, 14400, 3600, :YERST
+ tz.offset :o4, 10800, 3600, :YERST
+ tz.offset :o5, 10800, 3600, :AMST
+ tz.offset :o6, 10800, 0, :AMT
+ tz.offset :o7, 14400, 0, :AMT
+ tz.offset :o8, 14400, 3600, :AMST
+
+ tz.transition 1924, 5, :o1, 1745213311, 720
+ tz.transition 1957, 2, :o2, 19487187, 8
+ tz.transition 1981, 3, :o3, 354916800
+ tz.transition 1981, 9, :o2, 370724400
+ tz.transition 1982, 3, :o3, 386452800
+ tz.transition 1982, 9, :o2, 402260400
+ tz.transition 1983, 3, :o3, 417988800
+ tz.transition 1983, 9, :o2, 433796400
+ tz.transition 1984, 3, :o3, 449611200
+ tz.transition 1984, 9, :o2, 465343200
+ tz.transition 1985, 3, :o3, 481068000
+ tz.transition 1985, 9, :o2, 496792800
+ tz.transition 1986, 3, :o3, 512517600
+ tz.transition 1986, 9, :o2, 528242400
+ tz.transition 1987, 3, :o3, 543967200
+ tz.transition 1987, 9, :o2, 559692000
+ tz.transition 1988, 3, :o3, 575416800
+ tz.transition 1988, 9, :o2, 591141600
+ tz.transition 1989, 3, :o3, 606866400
+ tz.transition 1989, 9, :o2, 622591200
+ tz.transition 1990, 3, :o3, 638316000
+ tz.transition 1990, 9, :o2, 654645600
+ tz.transition 1991, 3, :o4, 670370400
+ tz.transition 1991, 9, :o5, 685569600
+ tz.transition 1991, 9, :o6, 686098800
+ tz.transition 1992, 3, :o5, 701812800
+ tz.transition 1992, 9, :o6, 717534000
+ tz.transition 1993, 3, :o5, 733273200
+ tz.transition 1993, 9, :o6, 748998000
+ tz.transition 1994, 3, :o5, 764722800
+ tz.transition 1994, 9, :o6, 780447600
+ tz.transition 1995, 3, :o5, 796172400
+ tz.transition 1995, 9, :o7, 811897200
+ tz.transition 1997, 3, :o8, 859672800
+ tz.transition 1997, 10, :o7, 877816800
+ tz.transition 1998, 3, :o8, 891122400
+ tz.transition 1998, 10, :o7, 909266400
+ tz.transition 1999, 3, :o8, 922572000
+ tz.transition 1999, 10, :o7, 941320800
+ tz.transition 2000, 3, :o8, 954021600
+ tz.transition 2000, 10, :o7, 972770400
+ tz.transition 2001, 3, :o8, 985471200
+ tz.transition 2001, 10, :o7, 1004220000
+ tz.transition 2002, 3, :o8, 1017525600
+ tz.transition 2002, 10, :o7, 1035669600
+ tz.transition 2003, 3, :o8, 1048975200
+ tz.transition 2003, 10, :o7, 1067119200
+ tz.transition 2004, 3, :o8, 1080424800
+ tz.transition 2004, 10, :o7, 1099173600
+ tz.transition 2005, 3, :o8, 1111874400
+ tz.transition 2005, 10, :o7, 1130623200
+ tz.transition 2006, 3, :o8, 1143324000
+ tz.transition 2006, 10, :o7, 1162072800
+ tz.transition 2007, 3, :o8, 1174773600
+ tz.transition 2007, 10, :o7, 1193522400
+ tz.transition 2008, 3, :o8, 1206828000
+ tz.transition 2008, 10, :o7, 1224972000
+ tz.transition 2009, 3, :o8, 1238277600
+ tz.transition 2009, 10, :o7, 1256421600
+ tz.transition 2010, 3, :o8, 1269727200
+ tz.transition 2010, 10, :o7, 1288476000
+ tz.transition 2011, 3, :o8, 1301176800
+ tz.transition 2011, 10, :o7, 1319925600
+ tz.transition 2012, 3, :o8, 1332626400
+ tz.transition 2012, 10, :o7, 1351375200
+ tz.transition 2013, 3, :o8, 1364680800
+ tz.transition 2013, 10, :o7, 1382824800
+ tz.transition 2014, 3, :o8, 1396130400
+ tz.transition 2014, 10, :o7, 1414274400
+ tz.transition 2015, 3, :o8, 1427580000
+ tz.transition 2015, 10, :o7, 1445724000
+ tz.transition 2016, 3, :o8, 1459029600
+ tz.transition 2016, 10, :o7, 1477778400
+ tz.transition 2017, 3, :o8, 1490479200
+ tz.transition 2017, 10, :o7, 1509228000
+ tz.transition 2018, 3, :o8, 1521928800
+ tz.transition 2018, 10, :o7, 1540677600
+ tz.transition 2019, 3, :o8, 1553983200
+ tz.transition 2019, 10, :o7, 1572127200
+ tz.transition 2020, 3, :o8, 1585432800
+ tz.transition 2020, 10, :o7, 1603576800
+ tz.transition 2021, 3, :o8, 1616882400
+ tz.transition 2021, 10, :o7, 1635631200
+ tz.transition 2022, 3, :o8, 1648332000
+ tz.transition 2022, 10, :o7, 1667080800
+ tz.transition 2023, 3, :o8, 1679781600
+ tz.transition 2023, 10, :o7, 1698530400
+ tz.transition 2024, 3, :o8, 1711836000
+ tz.transition 2024, 10, :o7, 1729980000
+ tz.transition 2025, 3, :o8, 1743285600
+ tz.transition 2025, 10, :o7, 1761429600
+ tz.transition 2026, 3, :o8, 1774735200
+ tz.transition 2026, 10, :o7, 1792879200
+ tz.transition 2027, 3, :o8, 1806184800
+ tz.transition 2027, 10, :o7, 1824933600
+ tz.transition 2028, 3, :o8, 1837634400
+ tz.transition 2028, 10, :o7, 1856383200
+ tz.transition 2029, 3, :o8, 1869084000
+ tz.transition 2029, 10, :o7, 1887832800
+ tz.transition 2030, 3, :o8, 1901138400
+ tz.transition 2030, 10, :o7, 1919282400
+ tz.transition 2031, 3, :o8, 1932588000
+ tz.transition 2031, 10, :o7, 1950732000
+ tz.transition 2032, 3, :o8, 1964037600
+ tz.transition 2032, 10, :o7, 1982786400
+ tz.transition 2033, 3, :o8, 1995487200
+ tz.transition 2033, 10, :o7, 2014236000
+ tz.transition 2034, 3, :o8, 2026936800
+ tz.transition 2034, 10, :o7, 2045685600
+ tz.transition 2035, 3, :o8, 2058386400
+ tz.transition 2035, 10, :o7, 2077135200
+ tz.transition 2036, 3, :o8, 2090440800
+ tz.transition 2036, 10, :o7, 2108584800
+ tz.transition 2037, 3, :o8, 2121890400
+ tz.transition 2037, 10, :o7, 2140034400
+ tz.transition 2038, 3, :o8, 29586125, 12
+ tz.transition 2038, 10, :o7, 29588729, 12
+ tz.transition 2039, 3, :o8, 29590493, 12
+ tz.transition 2039, 10, :o7, 29593097, 12
+ tz.transition 2040, 3, :o8, 29594861, 12
+ tz.transition 2040, 10, :o7, 29597465, 12
+ tz.transition 2041, 3, :o8, 29599313, 12
+ tz.transition 2041, 10, :o7, 29601833, 12
+ tz.transition 2042, 3, :o8, 29603681, 12
+ tz.transition 2042, 10, :o7, 29606201, 12
+ tz.transition 2043, 3, :o8, 29608049, 12
+ tz.transition 2043, 10, :o7, 29610569, 12
+ tz.transition 2044, 3, :o8, 29612417, 12
+ tz.transition 2044, 10, :o7, 29615021, 12
+ tz.transition 2045, 3, :o8, 29616785, 12
+ tz.transition 2045, 10, :o7, 29619389, 12
+ tz.transition 2046, 3, :o8, 29621153, 12
+ tz.transition 2046, 10, :o7, 29623757, 12
+ tz.transition 2047, 3, :o8, 29625605, 12
+ tz.transition 2047, 10, :o7, 29628125, 12
+ tz.transition 2048, 3, :o8, 29629973, 12
+ tz.transition 2048, 10, :o7, 29632493, 12
+ tz.transition 2049, 3, :o8, 29634341, 12
+ tz.transition 2049, 10, :o7, 29636945, 12
+ tz.transition 2050, 3, :o8, 29638709, 12
+ tz.transition 2050, 10, :o7, 29641313, 12
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Atlantic/Azores.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Atlantic/Azores.rb
new file mode 100644
index 000000000..1bd16a75a
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Atlantic/Azores.rb
@@ -0,0 +1,270 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Atlantic
+ module Azores
+ include TimezoneDefinition
+
+ timezone 'Atlantic/Azores' do |tz|
+ tz.offset :o0, -6160, 0, :LMT
+ tz.offset :o1, -6872, 0, :HMT
+ tz.offset :o2, -7200, 0, :AZOT
+ tz.offset :o3, -7200, 3600, :AZOST
+ tz.offset :o4, -7200, 7200, :AZOMT
+ tz.offset :o5, -3600, 0, :AZOT
+ tz.offset :o6, -3600, 3600, :AZOST
+ tz.offset :o7, 0, 0, :WET
+
+ tz.transition 1884, 1, :o1, 2601910697, 1080
+ tz.transition 1911, 5, :o2, 26127150259, 10800
+ tz.transition 1916, 6, :o3, 58104781, 24
+ tz.transition 1916, 11, :o2, 29054023, 12
+ tz.transition 1917, 3, :o3, 58110925, 24
+ tz.transition 1917, 10, :o2, 58116397, 24
+ tz.transition 1918, 3, :o3, 58119709, 24
+ tz.transition 1918, 10, :o2, 58125157, 24
+ tz.transition 1919, 3, :o3, 58128445, 24
+ tz.transition 1919, 10, :o2, 58133917, 24
+ tz.transition 1920, 3, :o3, 58137229, 24
+ tz.transition 1920, 10, :o2, 58142701, 24
+ tz.transition 1921, 3, :o3, 58145989, 24
+ tz.transition 1921, 10, :o2, 58151461, 24
+ tz.transition 1924, 4, :o3, 58173421, 24
+ tz.transition 1924, 10, :o2, 58177765, 24
+ tz.transition 1926, 4, :o3, 58190965, 24
+ tz.transition 1926, 10, :o2, 58194997, 24
+ tz.transition 1927, 4, :o3, 58199533, 24
+ tz.transition 1927, 10, :o2, 58203733, 24
+ tz.transition 1928, 4, :o3, 58208437, 24
+ tz.transition 1928, 10, :o2, 58212637, 24
+ tz.transition 1929, 4, :o3, 58217341, 24
+ tz.transition 1929, 10, :o2, 58221373, 24
+ tz.transition 1931, 4, :o3, 58234813, 24
+ tz.transition 1931, 10, :o2, 58238845, 24
+ tz.transition 1932, 4, :o3, 58243213, 24
+ tz.transition 1932, 10, :o2, 58247581, 24
+ tz.transition 1934, 4, :o3, 58260853, 24
+ tz.transition 1934, 10, :o2, 58265221, 24
+ tz.transition 1935, 3, :o3, 58269421, 24
+ tz.transition 1935, 10, :o2, 58273957, 24
+ tz.transition 1936, 4, :o3, 58278661, 24
+ tz.transition 1936, 10, :o2, 58282693, 24
+ tz.transition 1937, 4, :o3, 58287061, 24
+ tz.transition 1937, 10, :o2, 58291429, 24
+ tz.transition 1938, 3, :o3, 58295629, 24
+ tz.transition 1938, 10, :o2, 58300165, 24
+ tz.transition 1939, 4, :o3, 58304869, 24
+ tz.transition 1939, 11, :o2, 58310077, 24
+ tz.transition 1940, 2, :o3, 58312429, 24
+ tz.transition 1940, 10, :o2, 58317805, 24
+ tz.transition 1941, 4, :o3, 58322173, 24
+ tz.transition 1941, 10, :o2, 58326565, 24
+ tz.transition 1942, 3, :o3, 58330405, 24
+ tz.transition 1942, 4, :o4, 4860951, 2
+ tz.transition 1942, 8, :o3, 4861175, 2
+ tz.transition 1942, 10, :o2, 58335781, 24
+ tz.transition 1943, 3, :o3, 58339141, 24
+ tz.transition 1943, 4, :o4, 4861665, 2
+ tz.transition 1943, 8, :o3, 4861931, 2
+ tz.transition 1943, 10, :o2, 58344685, 24
+ tz.transition 1944, 3, :o3, 58347877, 24
+ tz.transition 1944, 4, :o4, 4862407, 2
+ tz.transition 1944, 8, :o3, 4862659, 2
+ tz.transition 1944, 10, :o2, 58353421, 24
+ tz.transition 1945, 3, :o3, 58356613, 24
+ tz.transition 1945, 4, :o4, 4863135, 2
+ tz.transition 1945, 8, :o3, 4863387, 2
+ tz.transition 1945, 10, :o2, 58362157, 24
+ tz.transition 1946, 4, :o3, 58366021, 24
+ tz.transition 1946, 10, :o2, 58370389, 24
+ tz.transition 1947, 4, :o3, 7296845, 3
+ tz.transition 1947, 10, :o2, 7297391, 3
+ tz.transition 1948, 4, :o3, 7297937, 3
+ tz.transition 1948, 10, :o2, 7298483, 3
+ tz.transition 1949, 4, :o3, 7299029, 3
+ tz.transition 1949, 10, :o2, 7299575, 3
+ tz.transition 1951, 4, :o3, 7301213, 3
+ tz.transition 1951, 10, :o2, 7301780, 3
+ tz.transition 1952, 4, :o3, 7302326, 3
+ tz.transition 1952, 10, :o2, 7302872, 3
+ tz.transition 1953, 4, :o3, 7303418, 3
+ tz.transition 1953, 10, :o2, 7303964, 3
+ tz.transition 1954, 4, :o3, 7304510, 3
+ tz.transition 1954, 10, :o2, 7305056, 3
+ tz.transition 1955, 4, :o3, 7305602, 3
+ tz.transition 1955, 10, :o2, 7306148, 3
+ tz.transition 1956, 4, :o3, 7306694, 3
+ tz.transition 1956, 10, :o2, 7307261, 3
+ tz.transition 1957, 4, :o3, 7307807, 3
+ tz.transition 1957, 10, :o2, 7308353, 3
+ tz.transition 1958, 4, :o3, 7308899, 3
+ tz.transition 1958, 10, :o2, 7309445, 3
+ tz.transition 1959, 4, :o3, 7309991, 3
+ tz.transition 1959, 10, :o2, 7310537, 3
+ tz.transition 1960, 4, :o3, 7311083, 3
+ tz.transition 1960, 10, :o2, 7311629, 3
+ tz.transition 1961, 4, :o3, 7312175, 3
+ tz.transition 1961, 10, :o2, 7312721, 3
+ tz.transition 1962, 4, :o3, 7313267, 3
+ tz.transition 1962, 10, :o2, 7313834, 3
+ tz.transition 1963, 4, :o3, 7314380, 3
+ tz.transition 1963, 10, :o2, 7314926, 3
+ tz.transition 1964, 4, :o3, 7315472, 3
+ tz.transition 1964, 10, :o2, 7316018, 3
+ tz.transition 1965, 4, :o3, 7316564, 3
+ tz.transition 1965, 10, :o2, 7317110, 3
+ tz.transition 1966, 4, :o5, 7317656, 3
+ tz.transition 1977, 3, :o6, 228272400
+ tz.transition 1977, 9, :o5, 243997200
+ tz.transition 1978, 4, :o6, 260326800
+ tz.transition 1978, 10, :o5, 276051600
+ tz.transition 1979, 4, :o6, 291776400
+ tz.transition 1979, 9, :o5, 307504800
+ tz.transition 1980, 3, :o6, 323226000
+ tz.transition 1980, 9, :o5, 338954400
+ tz.transition 1981, 3, :o6, 354679200
+ tz.transition 1981, 9, :o5, 370404000
+ tz.transition 1982, 3, :o6, 386128800
+ tz.transition 1982, 9, :o5, 401853600
+ tz.transition 1983, 3, :o6, 417582000
+ tz.transition 1983, 9, :o5, 433303200
+ tz.transition 1984, 3, :o6, 449028000
+ tz.transition 1984, 9, :o5, 465357600
+ tz.transition 1985, 3, :o6, 481082400
+ tz.transition 1985, 9, :o5, 496807200
+ tz.transition 1986, 3, :o6, 512532000
+ tz.transition 1986, 9, :o5, 528256800
+ tz.transition 1987, 3, :o6, 543981600
+ tz.transition 1987, 9, :o5, 559706400
+ tz.transition 1988, 3, :o6, 575431200
+ tz.transition 1988, 9, :o5, 591156000
+ tz.transition 1989, 3, :o6, 606880800
+ tz.transition 1989, 9, :o5, 622605600
+ tz.transition 1990, 3, :o6, 638330400
+ tz.transition 1990, 9, :o5, 654660000
+ tz.transition 1991, 3, :o6, 670384800
+ tz.transition 1991, 9, :o5, 686109600
+ tz.transition 1992, 3, :o6, 701834400
+ tz.transition 1992, 9, :o7, 717559200
+ tz.transition 1993, 3, :o6, 733280400
+ tz.transition 1993, 9, :o5, 749005200
+ tz.transition 1994, 3, :o6, 764730000
+ tz.transition 1994, 9, :o5, 780454800
+ tz.transition 1995, 3, :o6, 796179600
+ tz.transition 1995, 9, :o5, 811904400
+ tz.transition 1996, 3, :o6, 828234000
+ tz.transition 1996, 10, :o5, 846378000
+ tz.transition 1997, 3, :o6, 859683600
+ tz.transition 1997, 10, :o5, 877827600
+ tz.transition 1998, 3, :o6, 891133200
+ tz.transition 1998, 10, :o5, 909277200
+ tz.transition 1999, 3, :o6, 922582800
+ tz.transition 1999, 10, :o5, 941331600
+ tz.transition 2000, 3, :o6, 954032400
+ tz.transition 2000, 10, :o5, 972781200
+ tz.transition 2001, 3, :o6, 985482000
+ tz.transition 2001, 10, :o5, 1004230800
+ tz.transition 2002, 3, :o6, 1017536400
+ tz.transition 2002, 10, :o5, 1035680400
+ tz.transition 2003, 3, :o6, 1048986000
+ tz.transition 2003, 10, :o5, 1067130000
+ tz.transition 2004, 3, :o6, 1080435600
+ tz.transition 2004, 10, :o5, 1099184400
+ tz.transition 2005, 3, :o6, 1111885200
+ tz.transition 2005, 10, :o5, 1130634000
+ tz.transition 2006, 3, :o6, 1143334800
+ tz.transition 2006, 10, :o5, 1162083600
+ tz.transition 2007, 3, :o6, 1174784400
+ tz.transition 2007, 10, :o5, 1193533200
+ tz.transition 2008, 3, :o6, 1206838800
+ tz.transition 2008, 10, :o5, 1224982800
+ tz.transition 2009, 3, :o6, 1238288400
+ tz.transition 2009, 10, :o5, 1256432400
+ tz.transition 2010, 3, :o6, 1269738000
+ tz.transition 2010, 10, :o5, 1288486800
+ tz.transition 2011, 3, :o6, 1301187600
+ tz.transition 2011, 10, :o5, 1319936400
+ tz.transition 2012, 3, :o6, 1332637200
+ tz.transition 2012, 10, :o5, 1351386000
+ tz.transition 2013, 3, :o6, 1364691600
+ tz.transition 2013, 10, :o5, 1382835600
+ tz.transition 2014, 3, :o6, 1396141200
+ tz.transition 2014, 10, :o5, 1414285200
+ tz.transition 2015, 3, :o6, 1427590800
+ tz.transition 2015, 10, :o5, 1445734800
+ tz.transition 2016, 3, :o6, 1459040400
+ tz.transition 2016, 10, :o5, 1477789200
+ tz.transition 2017, 3, :o6, 1490490000
+ tz.transition 2017, 10, :o5, 1509238800
+ tz.transition 2018, 3, :o6, 1521939600
+ tz.transition 2018, 10, :o5, 1540688400
+ tz.transition 2019, 3, :o6, 1553994000
+ tz.transition 2019, 10, :o5, 1572138000
+ tz.transition 2020, 3, :o6, 1585443600
+ tz.transition 2020, 10, :o5, 1603587600
+ tz.transition 2021, 3, :o6, 1616893200
+ tz.transition 2021, 10, :o5, 1635642000
+ tz.transition 2022, 3, :o6, 1648342800
+ tz.transition 2022, 10, :o5, 1667091600
+ tz.transition 2023, 3, :o6, 1679792400
+ tz.transition 2023, 10, :o5, 1698541200
+ tz.transition 2024, 3, :o6, 1711846800
+ tz.transition 2024, 10, :o5, 1729990800
+ tz.transition 2025, 3, :o6, 1743296400
+ tz.transition 2025, 10, :o5, 1761440400
+ tz.transition 2026, 3, :o6, 1774746000
+ tz.transition 2026, 10, :o5, 1792890000
+ tz.transition 2027, 3, :o6, 1806195600
+ tz.transition 2027, 10, :o5, 1824944400
+ tz.transition 2028, 3, :o6, 1837645200
+ tz.transition 2028, 10, :o5, 1856394000
+ tz.transition 2029, 3, :o6, 1869094800
+ tz.transition 2029, 10, :o5, 1887843600
+ tz.transition 2030, 3, :o6, 1901149200
+ tz.transition 2030, 10, :o5, 1919293200
+ tz.transition 2031, 3, :o6, 1932598800
+ tz.transition 2031, 10, :o5, 1950742800
+ tz.transition 2032, 3, :o6, 1964048400
+ tz.transition 2032, 10, :o5, 1982797200
+ tz.transition 2033, 3, :o6, 1995498000
+ tz.transition 2033, 10, :o5, 2014246800
+ tz.transition 2034, 3, :o6, 2026947600
+ tz.transition 2034, 10, :o5, 2045696400
+ tz.transition 2035, 3, :o6, 2058397200
+ tz.transition 2035, 10, :o5, 2077146000
+ tz.transition 2036, 3, :o6, 2090451600
+ tz.transition 2036, 10, :o5, 2108595600
+ tz.transition 2037, 3, :o6, 2121901200
+ tz.transition 2037, 10, :o5, 2140045200
+ tz.transition 2038, 3, :o6, 59172253, 24
+ tz.transition 2038, 10, :o5, 59177461, 24
+ tz.transition 2039, 3, :o6, 59180989, 24
+ tz.transition 2039, 10, :o5, 59186197, 24
+ tz.transition 2040, 3, :o6, 59189725, 24
+ tz.transition 2040, 10, :o5, 59194933, 24
+ tz.transition 2041, 3, :o6, 59198629, 24
+ tz.transition 2041, 10, :o5, 59203669, 24
+ tz.transition 2042, 3, :o6, 59207365, 24
+ tz.transition 2042, 10, :o5, 59212405, 24
+ tz.transition 2043, 3, :o6, 59216101, 24
+ tz.transition 2043, 10, :o5, 59221141, 24
+ tz.transition 2044, 3, :o6, 59224837, 24
+ tz.transition 2044, 10, :o5, 59230045, 24
+ tz.transition 2045, 3, :o6, 59233573, 24
+ tz.transition 2045, 10, :o5, 59238781, 24
+ tz.transition 2046, 3, :o6, 59242309, 24
+ tz.transition 2046, 10, :o5, 59247517, 24
+ tz.transition 2047, 3, :o6, 59251213, 24
+ tz.transition 2047, 10, :o5, 59256253, 24
+ tz.transition 2048, 3, :o6, 59259949, 24
+ tz.transition 2048, 10, :o5, 59264989, 24
+ tz.transition 2049, 3, :o6, 59268685, 24
+ tz.transition 2049, 10, :o5, 59273893, 24
+ tz.transition 2050, 3, :o6, 59277421, 24
+ tz.transition 2050, 10, :o5, 59282629, 24
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Atlantic/Cape_Verde.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Atlantic/Cape_Verde.rb
new file mode 100644
index 000000000..61c8c1504
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Atlantic/Cape_Verde.rb
@@ -0,0 +1,23 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Atlantic
+ module Cape_Verde
+ include TimezoneDefinition
+
+ timezone 'Atlantic/Cape_Verde' do |tz|
+ tz.offset :o0, -5644, 0, :LMT
+ tz.offset :o1, -7200, 0, :CVT
+ tz.offset :o2, -7200, 3600, :CVST
+ tz.offset :o3, -3600, 0, :CVT
+
+ tz.transition 1907, 1, :o1, 52219653811, 21600
+ tz.transition 1942, 9, :o2, 29167243, 12
+ tz.transition 1945, 10, :o1, 58361845, 24
+ tz.transition 1975, 11, :o3, 186120000
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Atlantic/South_Georgia.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Atlantic/South_Georgia.rb
new file mode 100644
index 000000000..6a4cbafb9
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Atlantic/South_Georgia.rb
@@ -0,0 +1,18 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Atlantic
+ module South_Georgia
+ include TimezoneDefinition
+
+ timezone 'Atlantic/South_Georgia' do |tz|
+ tz.offset :o0, -8768, 0, :LMT
+ tz.offset :o1, -7200, 0, :GST
+
+ tz.transition 1890, 1, :o1, 1627673806, 675
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Australia/Adelaide.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Australia/Adelaide.rb
new file mode 100644
index 000000000..c5d561cc1
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Australia/Adelaide.rb
@@ -0,0 +1,187 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Australia
+ module Adelaide
+ include TimezoneDefinition
+
+ timezone 'Australia/Adelaide' do |tz|
+ tz.offset :o0, 33260, 0, :LMT
+ tz.offset :o1, 32400, 0, :CST
+ tz.offset :o2, 34200, 0, :CST
+ tz.offset :o3, 34200, 3600, :CST
+
+ tz.transition 1895, 1, :o1, 10425132497, 4320
+ tz.transition 1899, 4, :o2, 19318201, 8
+ tz.transition 1916, 12, :o3, 3486569911, 1440
+ tz.transition 1917, 3, :o2, 116222983, 48
+ tz.transition 1941, 12, :o3, 38885763, 16
+ tz.transition 1942, 3, :o2, 116661463, 48
+ tz.transition 1942, 9, :o3, 38890067, 16
+ tz.transition 1943, 3, :o2, 116678935, 48
+ tz.transition 1943, 10, :o3, 38896003, 16
+ tz.transition 1944, 3, :o2, 116696407, 48
+ tz.transition 1971, 10, :o3, 57688200
+ tz.transition 1972, 2, :o2, 67969800
+ tz.transition 1972, 10, :o3, 89137800
+ tz.transition 1973, 3, :o2, 100024200
+ tz.transition 1973, 10, :o3, 120587400
+ tz.transition 1974, 3, :o2, 131473800
+ tz.transition 1974, 10, :o3, 152037000
+ tz.transition 1975, 3, :o2, 162923400
+ tz.transition 1975, 10, :o3, 183486600
+ tz.transition 1976, 3, :o2, 194977800
+ tz.transition 1976, 10, :o3, 215541000
+ tz.transition 1977, 3, :o2, 226427400
+ tz.transition 1977, 10, :o3, 246990600
+ tz.transition 1978, 3, :o2, 257877000
+ tz.transition 1978, 10, :o3, 278440200
+ tz.transition 1979, 3, :o2, 289326600
+ tz.transition 1979, 10, :o3, 309889800
+ tz.transition 1980, 3, :o2, 320776200
+ tz.transition 1980, 10, :o3, 341339400
+ tz.transition 1981, 2, :o2, 352225800
+ tz.transition 1981, 10, :o3, 372789000
+ tz.transition 1982, 3, :o2, 384280200
+ tz.transition 1982, 10, :o3, 404843400
+ tz.transition 1983, 3, :o2, 415729800
+ tz.transition 1983, 10, :o3, 436293000
+ tz.transition 1984, 3, :o2, 447179400
+ tz.transition 1984, 10, :o3, 467742600
+ tz.transition 1985, 3, :o2, 478629000
+ tz.transition 1985, 10, :o3, 499192200
+ tz.transition 1986, 3, :o2, 511288200
+ tz.transition 1986, 10, :o3, 530037000
+ tz.transition 1987, 3, :o2, 542737800
+ tz.transition 1987, 10, :o3, 562091400
+ tz.transition 1988, 3, :o2, 574792200
+ tz.transition 1988, 10, :o3, 594145800
+ tz.transition 1989, 3, :o2, 606241800
+ tz.transition 1989, 10, :o3, 625595400
+ tz.transition 1990, 3, :o2, 637691400
+ tz.transition 1990, 10, :o3, 657045000
+ tz.transition 1991, 3, :o2, 667931400
+ tz.transition 1991, 10, :o3, 688494600
+ tz.transition 1992, 3, :o2, 701195400
+ tz.transition 1992, 10, :o3, 719944200
+ tz.transition 1993, 3, :o2, 731435400
+ tz.transition 1993, 10, :o3, 751998600
+ tz.transition 1994, 3, :o2, 764094600
+ tz.transition 1994, 10, :o3, 783448200
+ tz.transition 1995, 3, :o2, 796149000
+ tz.transition 1995, 10, :o3, 814897800
+ tz.transition 1996, 3, :o2, 828203400
+ tz.transition 1996, 10, :o3, 846347400
+ tz.transition 1997, 3, :o2, 859653000
+ tz.transition 1997, 10, :o3, 877797000
+ tz.transition 1998, 3, :o2, 891102600
+ tz.transition 1998, 10, :o3, 909246600
+ tz.transition 1999, 3, :o2, 922552200
+ tz.transition 1999, 10, :o3, 941301000
+ tz.transition 2000, 3, :o2, 954001800
+ tz.transition 2000, 10, :o3, 972750600
+ tz.transition 2001, 3, :o2, 985451400
+ tz.transition 2001, 10, :o3, 1004200200
+ tz.transition 2002, 3, :o2, 1017505800
+ tz.transition 2002, 10, :o3, 1035649800
+ tz.transition 2003, 3, :o2, 1048955400
+ tz.transition 2003, 10, :o3, 1067099400
+ tz.transition 2004, 3, :o2, 1080405000
+ tz.transition 2004, 10, :o3, 1099153800
+ tz.transition 2005, 3, :o2, 1111854600
+ tz.transition 2005, 10, :o3, 1130603400
+ tz.transition 2006, 4, :o2, 1143909000
+ tz.transition 2006, 10, :o3, 1162053000
+ tz.transition 2007, 3, :o2, 1174753800
+ tz.transition 2007, 10, :o3, 1193502600
+ tz.transition 2008, 4, :o2, 1207413000
+ tz.transition 2008, 10, :o3, 1223137800
+ tz.transition 2009, 4, :o2, 1238862600
+ tz.transition 2009, 10, :o3, 1254587400
+ tz.transition 2010, 4, :o2, 1270312200
+ tz.transition 2010, 10, :o3, 1286037000
+ tz.transition 2011, 4, :o2, 1301761800
+ tz.transition 2011, 10, :o3, 1317486600
+ tz.transition 2012, 3, :o2, 1333211400
+ tz.transition 2012, 10, :o3, 1349541000
+ tz.transition 2013, 4, :o2, 1365265800
+ tz.transition 2013, 10, :o3, 1380990600
+ tz.transition 2014, 4, :o2, 1396715400
+ tz.transition 2014, 10, :o3, 1412440200
+ tz.transition 2015, 4, :o2, 1428165000
+ tz.transition 2015, 10, :o3, 1443889800
+ tz.transition 2016, 4, :o2, 1459614600
+ tz.transition 2016, 10, :o3, 1475339400
+ tz.transition 2017, 4, :o2, 1491064200
+ tz.transition 2017, 9, :o3, 1506789000
+ tz.transition 2018, 3, :o2, 1522513800
+ tz.transition 2018, 10, :o3, 1538843400
+ tz.transition 2019, 4, :o2, 1554568200
+ tz.transition 2019, 10, :o3, 1570293000
+ tz.transition 2020, 4, :o2, 1586017800
+ tz.transition 2020, 10, :o3, 1601742600
+ tz.transition 2021, 4, :o2, 1617467400
+ tz.transition 2021, 10, :o3, 1633192200
+ tz.transition 2022, 4, :o2, 1648917000
+ tz.transition 2022, 10, :o3, 1664641800
+ tz.transition 2023, 4, :o2, 1680366600
+ tz.transition 2023, 9, :o3, 1696091400
+ tz.transition 2024, 4, :o2, 1712421000
+ tz.transition 2024, 10, :o3, 1728145800
+ tz.transition 2025, 4, :o2, 1743870600
+ tz.transition 2025, 10, :o3, 1759595400
+ tz.transition 2026, 4, :o2, 1775320200
+ tz.transition 2026, 10, :o3, 1791045000
+ tz.transition 2027, 4, :o2, 1806769800
+ tz.transition 2027, 10, :o3, 1822494600
+ tz.transition 2028, 4, :o2, 1838219400
+ tz.transition 2028, 9, :o3, 1853944200
+ tz.transition 2029, 3, :o2, 1869669000
+ tz.transition 2029, 10, :o3, 1885998600
+ tz.transition 2030, 4, :o2, 1901723400
+ tz.transition 2030, 10, :o3, 1917448200
+ tz.transition 2031, 4, :o2, 1933173000
+ tz.transition 2031, 10, :o3, 1948897800
+ tz.transition 2032, 4, :o2, 1964622600
+ tz.transition 2032, 10, :o3, 1980347400
+ tz.transition 2033, 4, :o2, 1996072200
+ tz.transition 2033, 10, :o3, 2011797000
+ tz.transition 2034, 4, :o2, 2027521800
+ tz.transition 2034, 9, :o3, 2043246600
+ tz.transition 2035, 3, :o2, 2058971400
+ tz.transition 2035, 10, :o3, 2075301000
+ tz.transition 2036, 4, :o2, 2091025800
+ tz.transition 2036, 10, :o3, 2106750600
+ tz.transition 2037, 4, :o2, 2122475400
+ tz.transition 2037, 10, :o3, 2138200200
+ tz.transition 2038, 4, :o2, 39448275, 16
+ tz.transition 2038, 10, :o3, 39451187, 16
+ tz.transition 2039, 4, :o2, 39454099, 16
+ tz.transition 2039, 10, :o3, 39457011, 16
+ tz.transition 2040, 3, :o2, 39459923, 16
+ tz.transition 2040, 10, :o3, 39462947, 16
+ tz.transition 2041, 4, :o2, 39465859, 16
+ tz.transition 2041, 10, :o3, 39468771, 16
+ tz.transition 2042, 4, :o2, 39471683, 16
+ tz.transition 2042, 10, :o3, 39474595, 16
+ tz.transition 2043, 4, :o2, 39477507, 16
+ tz.transition 2043, 10, :o3, 39480419, 16
+ tz.transition 2044, 4, :o2, 39483331, 16
+ tz.transition 2044, 10, :o3, 39486243, 16
+ tz.transition 2045, 4, :o2, 39489155, 16
+ tz.transition 2045, 9, :o3, 39492067, 16
+ tz.transition 2046, 3, :o2, 39494979, 16
+ tz.transition 2046, 10, :o3, 39498003, 16
+ tz.transition 2047, 4, :o2, 39500915, 16
+ tz.transition 2047, 10, :o3, 39503827, 16
+ tz.transition 2048, 4, :o2, 39506739, 16
+ tz.transition 2048, 10, :o3, 39509651, 16
+ tz.transition 2049, 4, :o2, 39512563, 16
+ tz.transition 2049, 10, :o3, 39515475, 16
+ tz.transition 2050, 4, :o2, 39518387, 16
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Australia/Brisbane.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Australia/Brisbane.rb
new file mode 100644
index 000000000..dd85ddae9
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Australia/Brisbane.rb
@@ -0,0 +1,35 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Australia
+ module Brisbane
+ include TimezoneDefinition
+
+ timezone 'Australia/Brisbane' do |tz|
+ tz.offset :o0, 36728, 0, :LMT
+ tz.offset :o1, 36000, 0, :EST
+ tz.offset :o2, 36000, 3600, :EST
+
+ tz.transition 1894, 12, :o1, 26062496009, 10800
+ tz.transition 1916, 12, :o2, 3486569881, 1440
+ tz.transition 1917, 3, :o1, 19370497, 8
+ tz.transition 1941, 12, :o2, 14582161, 6
+ tz.transition 1942, 3, :o1, 19443577, 8
+ tz.transition 1942, 9, :o2, 14583775, 6
+ tz.transition 1943, 3, :o1, 19446489, 8
+ tz.transition 1943, 10, :o2, 14586001, 6
+ tz.transition 1944, 3, :o1, 19449401, 8
+ tz.transition 1971, 10, :o2, 57686400
+ tz.transition 1972, 2, :o1, 67968000
+ tz.transition 1989, 10, :o2, 625593600
+ tz.transition 1990, 3, :o1, 636480000
+ tz.transition 1990, 10, :o2, 657043200
+ tz.transition 1991, 3, :o1, 667929600
+ tz.transition 1991, 10, :o2, 688492800
+ tz.transition 1992, 2, :o1, 699379200
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Australia/Darwin.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Australia/Darwin.rb
new file mode 100644
index 000000000..17de88124
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Australia/Darwin.rb
@@ -0,0 +1,29 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Australia
+ module Darwin
+ include TimezoneDefinition
+
+ timezone 'Australia/Darwin' do |tz|
+ tz.offset :o0, 31400, 0, :LMT
+ tz.offset :o1, 32400, 0, :CST
+ tz.offset :o2, 34200, 0, :CST
+ tz.offset :o3, 34200, 3600, :CST
+
+ tz.transition 1895, 1, :o1, 1042513259, 432
+ tz.transition 1899, 4, :o2, 19318201, 8
+ tz.transition 1916, 12, :o3, 3486569911, 1440
+ tz.transition 1917, 3, :o2, 116222983, 48
+ tz.transition 1941, 12, :o3, 38885763, 16
+ tz.transition 1942, 3, :o2, 116661463, 48
+ tz.transition 1942, 9, :o3, 38890067, 16
+ tz.transition 1943, 3, :o2, 116678935, 48
+ tz.transition 1943, 10, :o3, 38896003, 16
+ tz.transition 1944, 3, :o2, 116696407, 48
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Australia/Hobart.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Australia/Hobart.rb
new file mode 100644
index 000000000..11384b984
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Australia/Hobart.rb
@@ -0,0 +1,193 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Australia
+ module Hobart
+ include TimezoneDefinition
+
+ timezone 'Australia/Hobart' do |tz|
+ tz.offset :o0, 35356, 0, :LMT
+ tz.offset :o1, 36000, 0, :EST
+ tz.offset :o2, 36000, 3600, :EST
+
+ tz.transition 1895, 8, :o1, 52130241161, 21600
+ tz.transition 1916, 9, :o2, 14526823, 6
+ tz.transition 1917, 3, :o1, 19370497, 8
+ tz.transition 1941, 12, :o2, 14582161, 6
+ tz.transition 1942, 3, :o1, 19443577, 8
+ tz.transition 1942, 9, :o2, 14583775, 6
+ tz.transition 1943, 3, :o1, 19446489, 8
+ tz.transition 1943, 10, :o2, 14586001, 6
+ tz.transition 1944, 3, :o1, 19449401, 8
+ tz.transition 1967, 9, :o2, 14638585, 6
+ tz.transition 1968, 3, :o1, 14639677, 6
+ tz.transition 1968, 10, :o2, 14640937, 6
+ tz.transition 1969, 3, :o1, 14641735, 6
+ tz.transition 1969, 10, :o2, 14643121, 6
+ tz.transition 1970, 3, :o1, 5673600
+ tz.transition 1970, 10, :o2, 25632000
+ tz.transition 1971, 3, :o1, 37728000
+ tz.transition 1971, 10, :o2, 57686400
+ tz.transition 1972, 2, :o1, 67968000
+ tz.transition 1972, 10, :o2, 89136000
+ tz.transition 1973, 3, :o1, 100022400
+ tz.transition 1973, 10, :o2, 120585600
+ tz.transition 1974, 3, :o1, 131472000
+ tz.transition 1974, 10, :o2, 152035200
+ tz.transition 1975, 3, :o1, 162921600
+ tz.transition 1975, 10, :o2, 183484800
+ tz.transition 1976, 3, :o1, 194976000
+ tz.transition 1976, 10, :o2, 215539200
+ tz.transition 1977, 3, :o1, 226425600
+ tz.transition 1977, 10, :o2, 246988800
+ tz.transition 1978, 3, :o1, 257875200
+ tz.transition 1978, 10, :o2, 278438400
+ tz.transition 1979, 3, :o1, 289324800
+ tz.transition 1979, 10, :o2, 309888000
+ tz.transition 1980, 3, :o1, 320774400
+ tz.transition 1980, 10, :o2, 341337600
+ tz.transition 1981, 2, :o1, 352224000
+ tz.transition 1981, 10, :o2, 372787200
+ tz.transition 1982, 3, :o1, 386092800
+ tz.transition 1982, 10, :o2, 404841600
+ tz.transition 1983, 3, :o1, 417542400
+ tz.transition 1983, 10, :o2, 436291200
+ tz.transition 1984, 3, :o1, 447177600
+ tz.transition 1984, 10, :o2, 467740800
+ tz.transition 1985, 3, :o1, 478627200
+ tz.transition 1985, 10, :o2, 499190400
+ tz.transition 1986, 3, :o1, 510076800
+ tz.transition 1986, 10, :o2, 530035200
+ tz.transition 1987, 3, :o1, 542736000
+ tz.transition 1987, 10, :o2, 562089600
+ tz.transition 1988, 3, :o1, 574790400
+ tz.transition 1988, 10, :o2, 594144000
+ tz.transition 1989, 3, :o1, 606240000
+ tz.transition 1989, 10, :o2, 625593600
+ tz.transition 1990, 3, :o1, 637689600
+ tz.transition 1990, 10, :o2, 657043200
+ tz.transition 1991, 3, :o1, 670348800
+ tz.transition 1991, 10, :o2, 686678400
+ tz.transition 1992, 3, :o1, 701798400
+ tz.transition 1992, 10, :o2, 718128000
+ tz.transition 1993, 3, :o1, 733248000
+ tz.transition 1993, 10, :o2, 749577600
+ tz.transition 1994, 3, :o1, 764697600
+ tz.transition 1994, 10, :o2, 781027200
+ tz.transition 1995, 3, :o1, 796147200
+ tz.transition 1995, 9, :o2, 812476800
+ tz.transition 1996, 3, :o1, 828201600
+ tz.transition 1996, 10, :o2, 844531200
+ tz.transition 1997, 3, :o1, 859651200
+ tz.transition 1997, 10, :o2, 875980800
+ tz.transition 1998, 3, :o1, 891100800
+ tz.transition 1998, 10, :o2, 907430400
+ tz.transition 1999, 3, :o1, 922550400
+ tz.transition 1999, 10, :o2, 938880000
+ tz.transition 2000, 3, :o1, 954000000
+ tz.transition 2000, 8, :o2, 967305600
+ tz.transition 2001, 3, :o1, 985449600
+ tz.transition 2001, 10, :o2, 1002384000
+ tz.transition 2002, 3, :o1, 1017504000
+ tz.transition 2002, 10, :o2, 1033833600
+ tz.transition 2003, 3, :o1, 1048953600
+ tz.transition 2003, 10, :o2, 1065283200
+ tz.transition 2004, 3, :o1, 1080403200
+ tz.transition 2004, 10, :o2, 1096732800
+ tz.transition 2005, 3, :o1, 1111852800
+ tz.transition 2005, 10, :o2, 1128182400
+ tz.transition 2006, 4, :o1, 1143907200
+ tz.transition 2006, 9, :o2, 1159632000
+ tz.transition 2007, 3, :o1, 1174752000
+ tz.transition 2007, 10, :o2, 1191686400
+ tz.transition 2008, 4, :o1, 1207411200
+ tz.transition 2008, 10, :o2, 1223136000
+ tz.transition 2009, 4, :o1, 1238860800
+ tz.transition 2009, 10, :o2, 1254585600
+ tz.transition 2010, 4, :o1, 1270310400
+ tz.transition 2010, 10, :o2, 1286035200
+ tz.transition 2011, 4, :o1, 1301760000
+ tz.transition 2011, 10, :o2, 1317484800
+ tz.transition 2012, 3, :o1, 1333209600
+ tz.transition 2012, 10, :o2, 1349539200
+ tz.transition 2013, 4, :o1, 1365264000
+ tz.transition 2013, 10, :o2, 1380988800
+ tz.transition 2014, 4, :o1, 1396713600
+ tz.transition 2014, 10, :o2, 1412438400
+ tz.transition 2015, 4, :o1, 1428163200
+ tz.transition 2015, 10, :o2, 1443888000
+ tz.transition 2016, 4, :o1, 1459612800
+ tz.transition 2016, 10, :o2, 1475337600
+ tz.transition 2017, 4, :o1, 1491062400
+ tz.transition 2017, 9, :o2, 1506787200
+ tz.transition 2018, 3, :o1, 1522512000
+ tz.transition 2018, 10, :o2, 1538841600
+ tz.transition 2019, 4, :o1, 1554566400
+ tz.transition 2019, 10, :o2, 1570291200
+ tz.transition 2020, 4, :o1, 1586016000
+ tz.transition 2020, 10, :o2, 1601740800
+ tz.transition 2021, 4, :o1, 1617465600
+ tz.transition 2021, 10, :o2, 1633190400
+ tz.transition 2022, 4, :o1, 1648915200
+ tz.transition 2022, 10, :o2, 1664640000
+ tz.transition 2023, 4, :o1, 1680364800
+ tz.transition 2023, 9, :o2, 1696089600
+ tz.transition 2024, 4, :o1, 1712419200
+ tz.transition 2024, 10, :o2, 1728144000
+ tz.transition 2025, 4, :o1, 1743868800
+ tz.transition 2025, 10, :o2, 1759593600
+ tz.transition 2026, 4, :o1, 1775318400
+ tz.transition 2026, 10, :o2, 1791043200
+ tz.transition 2027, 4, :o1, 1806768000
+ tz.transition 2027, 10, :o2, 1822492800
+ tz.transition 2028, 4, :o1, 1838217600
+ tz.transition 2028, 9, :o2, 1853942400
+ tz.transition 2029, 3, :o1, 1869667200
+ tz.transition 2029, 10, :o2, 1885996800
+ tz.transition 2030, 4, :o1, 1901721600
+ tz.transition 2030, 10, :o2, 1917446400
+ tz.transition 2031, 4, :o1, 1933171200
+ tz.transition 2031, 10, :o2, 1948896000
+ tz.transition 2032, 4, :o1, 1964620800
+ tz.transition 2032, 10, :o2, 1980345600
+ tz.transition 2033, 4, :o1, 1996070400
+ tz.transition 2033, 10, :o2, 2011795200
+ tz.transition 2034, 4, :o1, 2027520000
+ tz.transition 2034, 9, :o2, 2043244800
+ tz.transition 2035, 3, :o1, 2058969600
+ tz.transition 2035, 10, :o2, 2075299200
+ tz.transition 2036, 4, :o1, 2091024000
+ tz.transition 2036, 10, :o2, 2106748800
+ tz.transition 2037, 4, :o1, 2122473600
+ tz.transition 2037, 10, :o2, 2138198400
+ tz.transition 2038, 4, :o1, 14793103, 6
+ tz.transition 2038, 10, :o2, 14794195, 6
+ tz.transition 2039, 4, :o1, 14795287, 6
+ tz.transition 2039, 10, :o2, 14796379, 6
+ tz.transition 2040, 3, :o1, 14797471, 6
+ tz.transition 2040, 10, :o2, 14798605, 6
+ tz.transition 2041, 4, :o1, 14799697, 6
+ tz.transition 2041, 10, :o2, 14800789, 6
+ tz.transition 2042, 4, :o1, 14801881, 6
+ tz.transition 2042, 10, :o2, 14802973, 6
+ tz.transition 2043, 4, :o1, 14804065, 6
+ tz.transition 2043, 10, :o2, 14805157, 6
+ tz.transition 2044, 4, :o1, 14806249, 6
+ tz.transition 2044, 10, :o2, 14807341, 6
+ tz.transition 2045, 4, :o1, 14808433, 6
+ tz.transition 2045, 9, :o2, 14809525, 6
+ tz.transition 2046, 3, :o1, 14810617, 6
+ tz.transition 2046, 10, :o2, 14811751, 6
+ tz.transition 2047, 4, :o1, 14812843, 6
+ tz.transition 2047, 10, :o2, 14813935, 6
+ tz.transition 2048, 4, :o1, 14815027, 6
+ tz.transition 2048, 10, :o2, 14816119, 6
+ tz.transition 2049, 4, :o1, 14817211, 6
+ tz.transition 2049, 10, :o2, 14818303, 6
+ tz.transition 2050, 4, :o1, 14819395, 6
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Australia/Melbourne.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Australia/Melbourne.rb
new file mode 100644
index 000000000..c1304488e
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Australia/Melbourne.rb
@@ -0,0 +1,185 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Australia
+ module Melbourne
+ include TimezoneDefinition
+
+ timezone 'Australia/Melbourne' do |tz|
+ tz.offset :o0, 34792, 0, :LMT
+ tz.offset :o1, 36000, 0, :EST
+ tz.offset :o2, 36000, 3600, :EST
+
+ tz.transition 1895, 1, :o1, 26062831051, 10800
+ tz.transition 1916, 12, :o2, 3486569881, 1440
+ tz.transition 1917, 3, :o1, 19370497, 8
+ tz.transition 1941, 12, :o2, 14582161, 6
+ tz.transition 1942, 3, :o1, 19443577, 8
+ tz.transition 1942, 9, :o2, 14583775, 6
+ tz.transition 1943, 3, :o1, 19446489, 8
+ tz.transition 1943, 10, :o2, 14586001, 6
+ tz.transition 1944, 3, :o1, 19449401, 8
+ tz.transition 1971, 10, :o2, 57686400
+ tz.transition 1972, 2, :o1, 67968000
+ tz.transition 1972, 10, :o2, 89136000
+ tz.transition 1973, 3, :o1, 100022400
+ tz.transition 1973, 10, :o2, 120585600
+ tz.transition 1974, 3, :o1, 131472000
+ tz.transition 1974, 10, :o2, 152035200
+ tz.transition 1975, 3, :o1, 162921600
+ tz.transition 1975, 10, :o2, 183484800
+ tz.transition 1976, 3, :o1, 194976000
+ tz.transition 1976, 10, :o2, 215539200
+ tz.transition 1977, 3, :o1, 226425600
+ tz.transition 1977, 10, :o2, 246988800
+ tz.transition 1978, 3, :o1, 257875200
+ tz.transition 1978, 10, :o2, 278438400
+ tz.transition 1979, 3, :o1, 289324800
+ tz.transition 1979, 10, :o2, 309888000
+ tz.transition 1980, 3, :o1, 320774400
+ tz.transition 1980, 10, :o2, 341337600
+ tz.transition 1981, 2, :o1, 352224000
+ tz.transition 1981, 10, :o2, 372787200
+ tz.transition 1982, 3, :o1, 384278400
+ tz.transition 1982, 10, :o2, 404841600
+ tz.transition 1983, 3, :o1, 415728000
+ tz.transition 1983, 10, :o2, 436291200
+ tz.transition 1984, 3, :o1, 447177600
+ tz.transition 1984, 10, :o2, 467740800
+ tz.transition 1985, 3, :o1, 478627200
+ tz.transition 1985, 10, :o2, 499190400
+ tz.transition 1986, 3, :o1, 511286400
+ tz.transition 1986, 10, :o2, 530035200
+ tz.transition 1987, 3, :o1, 542736000
+ tz.transition 1987, 10, :o2, 561484800
+ tz.transition 1988, 3, :o1, 574790400
+ tz.transition 1988, 10, :o2, 594144000
+ tz.transition 1989, 3, :o1, 606240000
+ tz.transition 1989, 10, :o2, 625593600
+ tz.transition 1990, 3, :o1, 637689600
+ tz.transition 1990, 10, :o2, 657043200
+ tz.transition 1991, 3, :o1, 667929600
+ tz.transition 1991, 10, :o2, 688492800
+ tz.transition 1992, 2, :o1, 699379200
+ tz.transition 1992, 10, :o2, 719942400
+ tz.transition 1993, 3, :o1, 731433600
+ tz.transition 1993, 10, :o2, 751996800
+ tz.transition 1994, 3, :o1, 762883200
+ tz.transition 1994, 10, :o2, 783446400
+ tz.transition 1995, 3, :o1, 796147200
+ tz.transition 1995, 10, :o2, 814896000
+ tz.transition 1996, 3, :o1, 828201600
+ tz.transition 1996, 10, :o2, 846345600
+ tz.transition 1997, 3, :o1, 859651200
+ tz.transition 1997, 10, :o2, 877795200
+ tz.transition 1998, 3, :o1, 891100800
+ tz.transition 1998, 10, :o2, 909244800
+ tz.transition 1999, 3, :o1, 922550400
+ tz.transition 1999, 10, :o2, 941299200
+ tz.transition 2000, 3, :o1, 954000000
+ tz.transition 2000, 8, :o2, 967305600
+ tz.transition 2001, 3, :o1, 985449600
+ tz.transition 2001, 10, :o2, 1004198400
+ tz.transition 2002, 3, :o1, 1017504000
+ tz.transition 2002, 10, :o2, 1035648000
+ tz.transition 2003, 3, :o1, 1048953600
+ tz.transition 2003, 10, :o2, 1067097600
+ tz.transition 2004, 3, :o1, 1080403200
+ tz.transition 2004, 10, :o2, 1099152000
+ tz.transition 2005, 3, :o1, 1111852800
+ tz.transition 2005, 10, :o2, 1130601600
+ tz.transition 2006, 4, :o1, 1143907200
+ tz.transition 2006, 10, :o2, 1162051200
+ tz.transition 2007, 3, :o1, 1174752000
+ tz.transition 2007, 10, :o2, 1193500800
+ tz.transition 2008, 4, :o1, 1207411200
+ tz.transition 2008, 10, :o2, 1223136000
+ tz.transition 2009, 4, :o1, 1238860800
+ tz.transition 2009, 10, :o2, 1254585600
+ tz.transition 2010, 4, :o1, 1270310400
+ tz.transition 2010, 10, :o2, 1286035200
+ tz.transition 2011, 4, :o1, 1301760000
+ tz.transition 2011, 10, :o2, 1317484800
+ tz.transition 2012, 3, :o1, 1333209600
+ tz.transition 2012, 10, :o2, 1349539200
+ tz.transition 2013, 4, :o1, 1365264000
+ tz.transition 2013, 10, :o2, 1380988800
+ tz.transition 2014, 4, :o1, 1396713600
+ tz.transition 2014, 10, :o2, 1412438400
+ tz.transition 2015, 4, :o1, 1428163200
+ tz.transition 2015, 10, :o2, 1443888000
+ tz.transition 2016, 4, :o1, 1459612800
+ tz.transition 2016, 10, :o2, 1475337600
+ tz.transition 2017, 4, :o1, 1491062400
+ tz.transition 2017, 9, :o2, 1506787200
+ tz.transition 2018, 3, :o1, 1522512000
+ tz.transition 2018, 10, :o2, 1538841600
+ tz.transition 2019, 4, :o1, 1554566400
+ tz.transition 2019, 10, :o2, 1570291200
+ tz.transition 2020, 4, :o1, 1586016000
+ tz.transition 2020, 10, :o2, 1601740800
+ tz.transition 2021, 4, :o1, 1617465600
+ tz.transition 2021, 10, :o2, 1633190400
+ tz.transition 2022, 4, :o1, 1648915200
+ tz.transition 2022, 10, :o2, 1664640000
+ tz.transition 2023, 4, :o1, 1680364800
+ tz.transition 2023, 9, :o2, 1696089600
+ tz.transition 2024, 4, :o1, 1712419200
+ tz.transition 2024, 10, :o2, 1728144000
+ tz.transition 2025, 4, :o1, 1743868800
+ tz.transition 2025, 10, :o2, 1759593600
+ tz.transition 2026, 4, :o1, 1775318400
+ tz.transition 2026, 10, :o2, 1791043200
+ tz.transition 2027, 4, :o1, 1806768000
+ tz.transition 2027, 10, :o2, 1822492800
+ tz.transition 2028, 4, :o1, 1838217600
+ tz.transition 2028, 9, :o2, 1853942400
+ tz.transition 2029, 3, :o1, 1869667200
+ tz.transition 2029, 10, :o2, 1885996800
+ tz.transition 2030, 4, :o1, 1901721600
+ tz.transition 2030, 10, :o2, 1917446400
+ tz.transition 2031, 4, :o1, 1933171200
+ tz.transition 2031, 10, :o2, 1948896000
+ tz.transition 2032, 4, :o1, 1964620800
+ tz.transition 2032, 10, :o2, 1980345600
+ tz.transition 2033, 4, :o1, 1996070400
+ tz.transition 2033, 10, :o2, 2011795200
+ tz.transition 2034, 4, :o1, 2027520000
+ tz.transition 2034, 9, :o2, 2043244800
+ tz.transition 2035, 3, :o1, 2058969600
+ tz.transition 2035, 10, :o2, 2075299200
+ tz.transition 2036, 4, :o1, 2091024000
+ tz.transition 2036, 10, :o2, 2106748800
+ tz.transition 2037, 4, :o1, 2122473600
+ tz.transition 2037, 10, :o2, 2138198400
+ tz.transition 2038, 4, :o1, 14793103, 6
+ tz.transition 2038, 10, :o2, 14794195, 6
+ tz.transition 2039, 4, :o1, 14795287, 6
+ tz.transition 2039, 10, :o2, 14796379, 6
+ tz.transition 2040, 3, :o1, 14797471, 6
+ tz.transition 2040, 10, :o2, 14798605, 6
+ tz.transition 2041, 4, :o1, 14799697, 6
+ tz.transition 2041, 10, :o2, 14800789, 6
+ tz.transition 2042, 4, :o1, 14801881, 6
+ tz.transition 2042, 10, :o2, 14802973, 6
+ tz.transition 2043, 4, :o1, 14804065, 6
+ tz.transition 2043, 10, :o2, 14805157, 6
+ tz.transition 2044, 4, :o1, 14806249, 6
+ tz.transition 2044, 10, :o2, 14807341, 6
+ tz.transition 2045, 4, :o1, 14808433, 6
+ tz.transition 2045, 9, :o2, 14809525, 6
+ tz.transition 2046, 3, :o1, 14810617, 6
+ tz.transition 2046, 10, :o2, 14811751, 6
+ tz.transition 2047, 4, :o1, 14812843, 6
+ tz.transition 2047, 10, :o2, 14813935, 6
+ tz.transition 2048, 4, :o1, 14815027, 6
+ tz.transition 2048, 10, :o2, 14816119, 6
+ tz.transition 2049, 4, :o1, 14817211, 6
+ tz.transition 2049, 10, :o2, 14818303, 6
+ tz.transition 2050, 4, :o1, 14819395, 6
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Australia/Perth.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Australia/Perth.rb
new file mode 100644
index 000000000..d9e66f14a
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Australia/Perth.rb
@@ -0,0 +1,37 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Australia
+ module Perth
+ include TimezoneDefinition
+
+ timezone 'Australia/Perth' do |tz|
+ tz.offset :o0, 27804, 0, :LMT
+ tz.offset :o1, 28800, 0, :WST
+ tz.offset :o2, 28800, 3600, :WST
+
+ tz.transition 1895, 11, :o1, 17377402883, 7200
+ tz.transition 1916, 12, :o2, 3486570001, 1440
+ tz.transition 1917, 3, :o1, 58111493, 24
+ tz.transition 1941, 12, :o2, 9721441, 4
+ tz.transition 1942, 3, :o1, 58330733, 24
+ tz.transition 1942, 9, :o2, 9722517, 4
+ tz.transition 1943, 3, :o1, 58339469, 24
+ tz.transition 1974, 10, :o2, 152042400
+ tz.transition 1975, 3, :o1, 162928800
+ tz.transition 1983, 10, :o2, 436298400
+ tz.transition 1984, 3, :o1, 447184800
+ tz.transition 1991, 11, :o2, 690314400
+ tz.transition 1992, 2, :o1, 699386400
+ tz.transition 2006, 12, :o2, 1165082400
+ tz.transition 2007, 3, :o1, 1174759200
+ tz.transition 2007, 10, :o2, 1193508000
+ tz.transition 2008, 3, :o1, 1206813600
+ tz.transition 2008, 10, :o2, 1224957600
+ tz.transition 2009, 3, :o1, 1238263200
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Australia/Sydney.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Australia/Sydney.rb
new file mode 100644
index 000000000..9062bd7c3
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Australia/Sydney.rb
@@ -0,0 +1,185 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Australia
+ module Sydney
+ include TimezoneDefinition
+
+ timezone 'Australia/Sydney' do |tz|
+ tz.offset :o0, 36292, 0, :LMT
+ tz.offset :o1, 36000, 0, :EST
+ tz.offset :o2, 36000, 3600, :EST
+
+ tz.transition 1895, 1, :o1, 52125661727, 21600
+ tz.transition 1916, 12, :o2, 3486569881, 1440
+ tz.transition 1917, 3, :o1, 19370497, 8
+ tz.transition 1941, 12, :o2, 14582161, 6
+ tz.transition 1942, 3, :o1, 19443577, 8
+ tz.transition 1942, 9, :o2, 14583775, 6
+ tz.transition 1943, 3, :o1, 19446489, 8
+ tz.transition 1943, 10, :o2, 14586001, 6
+ tz.transition 1944, 3, :o1, 19449401, 8
+ tz.transition 1971, 10, :o2, 57686400
+ tz.transition 1972, 2, :o1, 67968000
+ tz.transition 1972, 10, :o2, 89136000
+ tz.transition 1973, 3, :o1, 100022400
+ tz.transition 1973, 10, :o2, 120585600
+ tz.transition 1974, 3, :o1, 131472000
+ tz.transition 1974, 10, :o2, 152035200
+ tz.transition 1975, 3, :o1, 162921600
+ tz.transition 1975, 10, :o2, 183484800
+ tz.transition 1976, 3, :o1, 194976000
+ tz.transition 1976, 10, :o2, 215539200
+ tz.transition 1977, 3, :o1, 226425600
+ tz.transition 1977, 10, :o2, 246988800
+ tz.transition 1978, 3, :o1, 257875200
+ tz.transition 1978, 10, :o2, 278438400
+ tz.transition 1979, 3, :o1, 289324800
+ tz.transition 1979, 10, :o2, 309888000
+ tz.transition 1980, 3, :o1, 320774400
+ tz.transition 1980, 10, :o2, 341337600
+ tz.transition 1981, 2, :o1, 352224000
+ tz.transition 1981, 10, :o2, 372787200
+ tz.transition 1982, 4, :o1, 386697600
+ tz.transition 1982, 10, :o2, 404841600
+ tz.transition 1983, 3, :o1, 415728000
+ tz.transition 1983, 10, :o2, 436291200
+ tz.transition 1984, 3, :o1, 447177600
+ tz.transition 1984, 10, :o2, 467740800
+ tz.transition 1985, 3, :o1, 478627200
+ tz.transition 1985, 10, :o2, 499190400
+ tz.transition 1986, 3, :o1, 511286400
+ tz.transition 1986, 10, :o2, 530035200
+ tz.transition 1987, 3, :o1, 542736000
+ tz.transition 1987, 10, :o2, 562089600
+ tz.transition 1988, 3, :o1, 574790400
+ tz.transition 1988, 10, :o2, 594144000
+ tz.transition 1989, 3, :o1, 606240000
+ tz.transition 1989, 10, :o2, 625593600
+ tz.transition 1990, 3, :o1, 636480000
+ tz.transition 1990, 10, :o2, 657043200
+ tz.transition 1991, 3, :o1, 667929600
+ tz.transition 1991, 10, :o2, 688492800
+ tz.transition 1992, 2, :o1, 699379200
+ tz.transition 1992, 10, :o2, 719942400
+ tz.transition 1993, 3, :o1, 731433600
+ tz.transition 1993, 10, :o2, 751996800
+ tz.transition 1994, 3, :o1, 762883200
+ tz.transition 1994, 10, :o2, 783446400
+ tz.transition 1995, 3, :o1, 794332800
+ tz.transition 1995, 10, :o2, 814896000
+ tz.transition 1996, 3, :o1, 828201600
+ tz.transition 1996, 10, :o2, 846345600
+ tz.transition 1997, 3, :o1, 859651200
+ tz.transition 1997, 10, :o2, 877795200
+ tz.transition 1998, 3, :o1, 891100800
+ tz.transition 1998, 10, :o2, 909244800
+ tz.transition 1999, 3, :o1, 922550400
+ tz.transition 1999, 10, :o2, 941299200
+ tz.transition 2000, 3, :o1, 954000000
+ tz.transition 2000, 8, :o2, 967305600
+ tz.transition 2001, 3, :o1, 985449600
+ tz.transition 2001, 10, :o2, 1004198400
+ tz.transition 2002, 3, :o1, 1017504000
+ tz.transition 2002, 10, :o2, 1035648000
+ tz.transition 2003, 3, :o1, 1048953600
+ tz.transition 2003, 10, :o2, 1067097600
+ tz.transition 2004, 3, :o1, 1080403200
+ tz.transition 2004, 10, :o2, 1099152000
+ tz.transition 2005, 3, :o1, 1111852800
+ tz.transition 2005, 10, :o2, 1130601600
+ tz.transition 2006, 4, :o1, 1143907200
+ tz.transition 2006, 10, :o2, 1162051200
+ tz.transition 2007, 3, :o1, 1174752000
+ tz.transition 2007, 10, :o2, 1193500800
+ tz.transition 2008, 4, :o1, 1207411200
+ tz.transition 2008, 10, :o2, 1223136000
+ tz.transition 2009, 4, :o1, 1238860800
+ tz.transition 2009, 10, :o2, 1254585600
+ tz.transition 2010, 4, :o1, 1270310400
+ tz.transition 2010, 10, :o2, 1286035200
+ tz.transition 2011, 4, :o1, 1301760000
+ tz.transition 2011, 10, :o2, 1317484800
+ tz.transition 2012, 3, :o1, 1333209600
+ tz.transition 2012, 10, :o2, 1349539200
+ tz.transition 2013, 4, :o1, 1365264000
+ tz.transition 2013, 10, :o2, 1380988800
+ tz.transition 2014, 4, :o1, 1396713600
+ tz.transition 2014, 10, :o2, 1412438400
+ tz.transition 2015, 4, :o1, 1428163200
+ tz.transition 2015, 10, :o2, 1443888000
+ tz.transition 2016, 4, :o1, 1459612800
+ tz.transition 2016, 10, :o2, 1475337600
+ tz.transition 2017, 4, :o1, 1491062400
+ tz.transition 2017, 9, :o2, 1506787200
+ tz.transition 2018, 3, :o1, 1522512000
+ tz.transition 2018, 10, :o2, 1538841600
+ tz.transition 2019, 4, :o1, 1554566400
+ tz.transition 2019, 10, :o2, 1570291200
+ tz.transition 2020, 4, :o1, 1586016000
+ tz.transition 2020, 10, :o2, 1601740800
+ tz.transition 2021, 4, :o1, 1617465600
+ tz.transition 2021, 10, :o2, 1633190400
+ tz.transition 2022, 4, :o1, 1648915200
+ tz.transition 2022, 10, :o2, 1664640000
+ tz.transition 2023, 4, :o1, 1680364800
+ tz.transition 2023, 9, :o2, 1696089600
+ tz.transition 2024, 4, :o1, 1712419200
+ tz.transition 2024, 10, :o2, 1728144000
+ tz.transition 2025, 4, :o1, 1743868800
+ tz.transition 2025, 10, :o2, 1759593600
+ tz.transition 2026, 4, :o1, 1775318400
+ tz.transition 2026, 10, :o2, 1791043200
+ tz.transition 2027, 4, :o1, 1806768000
+ tz.transition 2027, 10, :o2, 1822492800
+ tz.transition 2028, 4, :o1, 1838217600
+ tz.transition 2028, 9, :o2, 1853942400
+ tz.transition 2029, 3, :o1, 1869667200
+ tz.transition 2029, 10, :o2, 1885996800
+ tz.transition 2030, 4, :o1, 1901721600
+ tz.transition 2030, 10, :o2, 1917446400
+ tz.transition 2031, 4, :o1, 1933171200
+ tz.transition 2031, 10, :o2, 1948896000
+ tz.transition 2032, 4, :o1, 1964620800
+ tz.transition 2032, 10, :o2, 1980345600
+ tz.transition 2033, 4, :o1, 1996070400
+ tz.transition 2033, 10, :o2, 2011795200
+ tz.transition 2034, 4, :o1, 2027520000
+ tz.transition 2034, 9, :o2, 2043244800
+ tz.transition 2035, 3, :o1, 2058969600
+ tz.transition 2035, 10, :o2, 2075299200
+ tz.transition 2036, 4, :o1, 2091024000
+ tz.transition 2036, 10, :o2, 2106748800
+ tz.transition 2037, 4, :o1, 2122473600
+ tz.transition 2037, 10, :o2, 2138198400
+ tz.transition 2038, 4, :o1, 14793103, 6
+ tz.transition 2038, 10, :o2, 14794195, 6
+ tz.transition 2039, 4, :o1, 14795287, 6
+ tz.transition 2039, 10, :o2, 14796379, 6
+ tz.transition 2040, 3, :o1, 14797471, 6
+ tz.transition 2040, 10, :o2, 14798605, 6
+ tz.transition 2041, 4, :o1, 14799697, 6
+ tz.transition 2041, 10, :o2, 14800789, 6
+ tz.transition 2042, 4, :o1, 14801881, 6
+ tz.transition 2042, 10, :o2, 14802973, 6
+ tz.transition 2043, 4, :o1, 14804065, 6
+ tz.transition 2043, 10, :o2, 14805157, 6
+ tz.transition 2044, 4, :o1, 14806249, 6
+ tz.transition 2044, 10, :o2, 14807341, 6
+ tz.transition 2045, 4, :o1, 14808433, 6
+ tz.transition 2045, 9, :o2, 14809525, 6
+ tz.transition 2046, 3, :o1, 14810617, 6
+ tz.transition 2046, 10, :o2, 14811751, 6
+ tz.transition 2047, 4, :o1, 14812843, 6
+ tz.transition 2047, 10, :o2, 14813935, 6
+ tz.transition 2048, 4, :o1, 14815027, 6
+ tz.transition 2048, 10, :o2, 14816119, 6
+ tz.transition 2049, 4, :o1, 14817211, 6
+ tz.transition 2049, 10, :o2, 14818303, 6
+ tz.transition 2050, 4, :o1, 14819395, 6
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Etc/UTC.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Etc/UTC.rb
new file mode 100644
index 000000000..28b2c6a04
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Etc/UTC.rb
@@ -0,0 +1,16 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Etc
+ module UTC
+ include TimezoneDefinition
+
+ timezone 'Etc/UTC' do |tz|
+ tz.offset :o0, 0, 0, :UTC
+
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Amsterdam.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Amsterdam.rb
new file mode 100644
index 000000000..2d0c95c4b
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Amsterdam.rb
@@ -0,0 +1,228 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Europe
+ module Amsterdam
+ include TimezoneDefinition
+
+ timezone 'Europe/Amsterdam' do |tz|
+ tz.offset :o0, 1172, 0, :LMT
+ tz.offset :o1, 1172, 0, :AMT
+ tz.offset :o2, 1172, 3600, :NST
+ tz.offset :o3, 1200, 3600, :NEST
+ tz.offset :o4, 1200, 0, :NET
+ tz.offset :o5, 3600, 3600, :CEST
+ tz.offset :o6, 3600, 0, :CET
+
+ tz.transition 1834, 12, :o1, 51651636907, 21600
+ tz.transition 1916, 4, :o2, 52293264907, 21600
+ tz.transition 1916, 9, :o1, 52296568807, 21600
+ tz.transition 1917, 4, :o2, 52300826707, 21600
+ tz.transition 1917, 9, :o1, 52304153107, 21600
+ tz.transition 1918, 4, :o2, 52308386707, 21600
+ tz.transition 1918, 9, :o1, 52312317907, 21600
+ tz.transition 1919, 4, :o2, 52316400307, 21600
+ tz.transition 1919, 9, :o1, 52320180307, 21600
+ tz.transition 1920, 4, :o2, 52324262707, 21600
+ tz.transition 1920, 9, :o1, 52328042707, 21600
+ tz.transition 1921, 4, :o2, 52332125107, 21600
+ tz.transition 1921, 9, :o1, 52335905107, 21600
+ tz.transition 1922, 3, :o2, 52339814707, 21600
+ tz.transition 1922, 10, :o1, 52344048307, 21600
+ tz.transition 1923, 6, :o2, 52349145907, 21600
+ tz.transition 1923, 10, :o1, 52351910707, 21600
+ tz.transition 1924, 3, :o2, 52355690707, 21600
+ tz.transition 1924, 10, :o1, 52359773107, 21600
+ tz.transition 1925, 6, :o2, 52365021907, 21600
+ tz.transition 1925, 10, :o1, 52367635507, 21600
+ tz.transition 1926, 5, :o2, 52372452307, 21600
+ tz.transition 1926, 10, :o1, 52375497907, 21600
+ tz.transition 1927, 5, :o2, 52380336307, 21600
+ tz.transition 1927, 10, :o1, 52383360307, 21600
+ tz.transition 1928, 5, :o2, 52388241907, 21600
+ tz.transition 1928, 10, :o1, 52391373907, 21600
+ tz.transition 1929, 5, :o2, 52396125907, 21600
+ tz.transition 1929, 10, :o1, 52399236307, 21600
+ tz.transition 1930, 5, :o2, 52404009907, 21600
+ tz.transition 1930, 10, :o1, 52407098707, 21600
+ tz.transition 1931, 5, :o2, 52411893907, 21600
+ tz.transition 1931, 10, :o1, 52414961107, 21600
+ tz.transition 1932, 5, :o2, 52419950707, 21600
+ tz.transition 1932, 10, :o1, 52422823507, 21600
+ tz.transition 1933, 5, :o2, 52427683507, 21600
+ tz.transition 1933, 10, :o1, 52430837107, 21600
+ tz.transition 1934, 5, :o2, 52435567507, 21600
+ tz.transition 1934, 10, :o1, 52438699507, 21600
+ tz.transition 1935, 5, :o2, 52443451507, 21600
+ tz.transition 1935, 10, :o1, 52446561907, 21600
+ tz.transition 1936, 5, :o2, 52451357107, 21600
+ tz.transition 1936, 10, :o1, 52454424307, 21600
+ tz.transition 1937, 5, :o2, 52459392307, 21600
+ tz.transition 1937, 6, :o3, 52460253607, 21600
+ tz.transition 1937, 10, :o4, 174874289, 72
+ tz.transition 1938, 5, :o3, 174890417, 72
+ tz.transition 1938, 10, :o4, 174900497, 72
+ tz.transition 1939, 5, :o3, 174916697, 72
+ tz.transition 1939, 10, :o4, 174927209, 72
+ tz.transition 1940, 5, :o5, 174943115, 72
+ tz.transition 1942, 11, :o6, 58335973, 24
+ tz.transition 1943, 3, :o5, 58339501, 24
+ tz.transition 1943, 10, :o6, 58344037, 24
+ tz.transition 1944, 4, :o5, 58348405, 24
+ tz.transition 1944, 10, :o6, 58352773, 24
+ tz.transition 1945, 4, :o5, 58357141, 24
+ tz.transition 1945, 9, :o6, 58361149, 24
+ tz.transition 1977, 4, :o5, 228877200
+ tz.transition 1977, 9, :o6, 243997200
+ tz.transition 1978, 4, :o5, 260326800
+ tz.transition 1978, 10, :o6, 276051600
+ tz.transition 1979, 4, :o5, 291776400
+ tz.transition 1979, 9, :o6, 307501200
+ tz.transition 1980, 4, :o5, 323830800
+ tz.transition 1980, 9, :o6, 338950800
+ tz.transition 1981, 3, :o5, 354675600
+ tz.transition 1981, 9, :o6, 370400400
+ tz.transition 1982, 3, :o5, 386125200
+ tz.transition 1982, 9, :o6, 401850000
+ tz.transition 1983, 3, :o5, 417574800
+ tz.transition 1983, 9, :o6, 433299600
+ tz.transition 1984, 3, :o5, 449024400
+ tz.transition 1984, 9, :o6, 465354000
+ tz.transition 1985, 3, :o5, 481078800
+ tz.transition 1985, 9, :o6, 496803600
+ tz.transition 1986, 3, :o5, 512528400
+ tz.transition 1986, 9, :o6, 528253200
+ tz.transition 1987, 3, :o5, 543978000
+ tz.transition 1987, 9, :o6, 559702800
+ tz.transition 1988, 3, :o5, 575427600
+ tz.transition 1988, 9, :o6, 591152400
+ tz.transition 1989, 3, :o5, 606877200
+ tz.transition 1989, 9, :o6, 622602000
+ tz.transition 1990, 3, :o5, 638326800
+ tz.transition 1990, 9, :o6, 654656400
+ tz.transition 1991, 3, :o5, 670381200
+ tz.transition 1991, 9, :o6, 686106000
+ tz.transition 1992, 3, :o5, 701830800
+ tz.transition 1992, 9, :o6, 717555600
+ tz.transition 1993, 3, :o5, 733280400
+ tz.transition 1993, 9, :o6, 749005200
+ tz.transition 1994, 3, :o5, 764730000
+ tz.transition 1994, 9, :o6, 780454800
+ tz.transition 1995, 3, :o5, 796179600
+ tz.transition 1995, 9, :o6, 811904400
+ tz.transition 1996, 3, :o5, 828234000
+ tz.transition 1996, 10, :o6, 846378000
+ tz.transition 1997, 3, :o5, 859683600
+ tz.transition 1997, 10, :o6, 877827600
+ tz.transition 1998, 3, :o5, 891133200
+ tz.transition 1998, 10, :o6, 909277200
+ tz.transition 1999, 3, :o5, 922582800
+ tz.transition 1999, 10, :o6, 941331600
+ tz.transition 2000, 3, :o5, 954032400
+ tz.transition 2000, 10, :o6, 972781200
+ tz.transition 2001, 3, :o5, 985482000
+ tz.transition 2001, 10, :o6, 1004230800
+ tz.transition 2002, 3, :o5, 1017536400
+ tz.transition 2002, 10, :o6, 1035680400
+ tz.transition 2003, 3, :o5, 1048986000
+ tz.transition 2003, 10, :o6, 1067130000
+ tz.transition 2004, 3, :o5, 1080435600
+ tz.transition 2004, 10, :o6, 1099184400
+ tz.transition 2005, 3, :o5, 1111885200
+ tz.transition 2005, 10, :o6, 1130634000
+ tz.transition 2006, 3, :o5, 1143334800
+ tz.transition 2006, 10, :o6, 1162083600
+ tz.transition 2007, 3, :o5, 1174784400
+ tz.transition 2007, 10, :o6, 1193533200
+ tz.transition 2008, 3, :o5, 1206838800
+ tz.transition 2008, 10, :o6, 1224982800
+ tz.transition 2009, 3, :o5, 1238288400
+ tz.transition 2009, 10, :o6, 1256432400
+ tz.transition 2010, 3, :o5, 1269738000
+ tz.transition 2010, 10, :o6, 1288486800
+ tz.transition 2011, 3, :o5, 1301187600
+ tz.transition 2011, 10, :o6, 1319936400
+ tz.transition 2012, 3, :o5, 1332637200
+ tz.transition 2012, 10, :o6, 1351386000
+ tz.transition 2013, 3, :o5, 1364691600
+ tz.transition 2013, 10, :o6, 1382835600
+ tz.transition 2014, 3, :o5, 1396141200
+ tz.transition 2014, 10, :o6, 1414285200
+ tz.transition 2015, 3, :o5, 1427590800
+ tz.transition 2015, 10, :o6, 1445734800
+ tz.transition 2016, 3, :o5, 1459040400
+ tz.transition 2016, 10, :o6, 1477789200
+ tz.transition 2017, 3, :o5, 1490490000
+ tz.transition 2017, 10, :o6, 1509238800
+ tz.transition 2018, 3, :o5, 1521939600
+ tz.transition 2018, 10, :o6, 1540688400
+ tz.transition 2019, 3, :o5, 1553994000
+ tz.transition 2019, 10, :o6, 1572138000
+ tz.transition 2020, 3, :o5, 1585443600
+ tz.transition 2020, 10, :o6, 1603587600
+ tz.transition 2021, 3, :o5, 1616893200
+ tz.transition 2021, 10, :o6, 1635642000
+ tz.transition 2022, 3, :o5, 1648342800
+ tz.transition 2022, 10, :o6, 1667091600
+ tz.transition 2023, 3, :o5, 1679792400
+ tz.transition 2023, 10, :o6, 1698541200
+ tz.transition 2024, 3, :o5, 1711846800
+ tz.transition 2024, 10, :o6, 1729990800
+ tz.transition 2025, 3, :o5, 1743296400
+ tz.transition 2025, 10, :o6, 1761440400
+ tz.transition 2026, 3, :o5, 1774746000
+ tz.transition 2026, 10, :o6, 1792890000
+ tz.transition 2027, 3, :o5, 1806195600
+ tz.transition 2027, 10, :o6, 1824944400
+ tz.transition 2028, 3, :o5, 1837645200
+ tz.transition 2028, 10, :o6, 1856394000
+ tz.transition 2029, 3, :o5, 1869094800
+ tz.transition 2029, 10, :o6, 1887843600
+ tz.transition 2030, 3, :o5, 1901149200
+ tz.transition 2030, 10, :o6, 1919293200
+ tz.transition 2031, 3, :o5, 1932598800
+ tz.transition 2031, 10, :o6, 1950742800
+ tz.transition 2032, 3, :o5, 1964048400
+ tz.transition 2032, 10, :o6, 1982797200
+ tz.transition 2033, 3, :o5, 1995498000
+ tz.transition 2033, 10, :o6, 2014246800
+ tz.transition 2034, 3, :o5, 2026947600
+ tz.transition 2034, 10, :o6, 2045696400
+ tz.transition 2035, 3, :o5, 2058397200
+ tz.transition 2035, 10, :o6, 2077146000
+ tz.transition 2036, 3, :o5, 2090451600
+ tz.transition 2036, 10, :o6, 2108595600
+ tz.transition 2037, 3, :o5, 2121901200
+ tz.transition 2037, 10, :o6, 2140045200
+ tz.transition 2038, 3, :o5, 59172253, 24
+ tz.transition 2038, 10, :o6, 59177461, 24
+ tz.transition 2039, 3, :o5, 59180989, 24
+ tz.transition 2039, 10, :o6, 59186197, 24
+ tz.transition 2040, 3, :o5, 59189725, 24
+ tz.transition 2040, 10, :o6, 59194933, 24
+ tz.transition 2041, 3, :o5, 59198629, 24
+ tz.transition 2041, 10, :o6, 59203669, 24
+ tz.transition 2042, 3, :o5, 59207365, 24
+ tz.transition 2042, 10, :o6, 59212405, 24
+ tz.transition 2043, 3, :o5, 59216101, 24
+ tz.transition 2043, 10, :o6, 59221141, 24
+ tz.transition 2044, 3, :o5, 59224837, 24
+ tz.transition 2044, 10, :o6, 59230045, 24
+ tz.transition 2045, 3, :o5, 59233573, 24
+ tz.transition 2045, 10, :o6, 59238781, 24
+ tz.transition 2046, 3, :o5, 59242309, 24
+ tz.transition 2046, 10, :o6, 59247517, 24
+ tz.transition 2047, 3, :o5, 59251213, 24
+ tz.transition 2047, 10, :o6, 59256253, 24
+ tz.transition 2048, 3, :o5, 59259949, 24
+ tz.transition 2048, 10, :o6, 59264989, 24
+ tz.transition 2049, 3, :o5, 59268685, 24
+ tz.transition 2049, 10, :o6, 59273893, 24
+ tz.transition 2050, 3, :o5, 59277421, 24
+ tz.transition 2050, 10, :o6, 59282629, 24
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Athens.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Athens.rb
new file mode 100644
index 000000000..4e21e535c
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Athens.rb
@@ -0,0 +1,185 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Europe
+ module Athens
+ include TimezoneDefinition
+
+ timezone 'Europe/Athens' do |tz|
+ tz.offset :o0, 5692, 0, :LMT
+ tz.offset :o1, 5692, 0, :AMT
+ tz.offset :o2, 7200, 0, :EET
+ tz.offset :o3, 7200, 3600, :EEST
+ tz.offset :o4, 3600, 3600, :CEST
+ tz.offset :o5, 3600, 0, :CET
+
+ tz.transition 1895, 9, :o1, 52130529377, 21600
+ tz.transition 1916, 7, :o2, 3268447787, 1350
+ tz.transition 1932, 7, :o3, 29122745, 12
+ tz.transition 1932, 8, :o2, 19415611, 8
+ tz.transition 1941, 4, :o3, 29161097, 12
+ tz.transition 1941, 4, :o4, 19440915, 8
+ tz.transition 1942, 11, :o5, 58335973, 24
+ tz.transition 1943, 3, :o4, 58339523, 24
+ tz.transition 1943, 10, :o5, 29172017, 12
+ tz.transition 1944, 4, :o2, 58348427, 24
+ tz.transition 1952, 6, :o3, 29210333, 12
+ tz.transition 1952, 11, :o2, 19474547, 8
+ tz.transition 1975, 4, :o3, 166485600
+ tz.transition 1975, 11, :o2, 186184800
+ tz.transition 1976, 4, :o3, 198028800
+ tz.transition 1976, 10, :o2, 213753600
+ tz.transition 1977, 4, :o3, 228873600
+ tz.transition 1977, 9, :o2, 244080000
+ tz.transition 1978, 4, :o3, 260323200
+ tz.transition 1978, 9, :o2, 275446800
+ tz.transition 1979, 4, :o3, 291798000
+ tz.transition 1979, 9, :o2, 307407600
+ tz.transition 1980, 3, :o3, 323388000
+ tz.transition 1980, 9, :o2, 338936400
+ tz.transition 1981, 3, :o3, 354675600
+ tz.transition 1981, 9, :o2, 370400400
+ tz.transition 1982, 3, :o3, 386125200
+ tz.transition 1982, 9, :o2, 401850000
+ tz.transition 1983, 3, :o3, 417574800
+ tz.transition 1983, 9, :o2, 433299600
+ tz.transition 1984, 3, :o3, 449024400
+ tz.transition 1984, 9, :o2, 465354000
+ tz.transition 1985, 3, :o3, 481078800
+ tz.transition 1985, 9, :o2, 496803600
+ tz.transition 1986, 3, :o3, 512528400
+ tz.transition 1986, 9, :o2, 528253200
+ tz.transition 1987, 3, :o3, 543978000
+ tz.transition 1987, 9, :o2, 559702800
+ tz.transition 1988, 3, :o3, 575427600
+ tz.transition 1988, 9, :o2, 591152400
+ tz.transition 1989, 3, :o3, 606877200
+ tz.transition 1989, 9, :o2, 622602000
+ tz.transition 1990, 3, :o3, 638326800
+ tz.transition 1990, 9, :o2, 654656400
+ tz.transition 1991, 3, :o3, 670381200
+ tz.transition 1991, 9, :o2, 686106000
+ tz.transition 1992, 3, :o3, 701830800
+ tz.transition 1992, 9, :o2, 717555600
+ tz.transition 1993, 3, :o3, 733280400
+ tz.transition 1993, 9, :o2, 749005200
+ tz.transition 1994, 3, :o3, 764730000
+ tz.transition 1994, 9, :o2, 780454800
+ tz.transition 1995, 3, :o3, 796179600
+ tz.transition 1995, 9, :o2, 811904400
+ tz.transition 1996, 3, :o3, 828234000
+ tz.transition 1996, 10, :o2, 846378000
+ tz.transition 1997, 3, :o3, 859683600
+ tz.transition 1997, 10, :o2, 877827600
+ tz.transition 1998, 3, :o3, 891133200
+ tz.transition 1998, 10, :o2, 909277200
+ tz.transition 1999, 3, :o3, 922582800
+ tz.transition 1999, 10, :o2, 941331600
+ tz.transition 2000, 3, :o3, 954032400
+ tz.transition 2000, 10, :o2, 972781200
+ tz.transition 2001, 3, :o3, 985482000
+ tz.transition 2001, 10, :o2, 1004230800
+ tz.transition 2002, 3, :o3, 1017536400
+ tz.transition 2002, 10, :o2, 1035680400
+ tz.transition 2003, 3, :o3, 1048986000
+ tz.transition 2003, 10, :o2, 1067130000
+ tz.transition 2004, 3, :o3, 1080435600
+ tz.transition 2004, 10, :o2, 1099184400
+ tz.transition 2005, 3, :o3, 1111885200
+ tz.transition 2005, 10, :o2, 1130634000
+ tz.transition 2006, 3, :o3, 1143334800
+ tz.transition 2006, 10, :o2, 1162083600
+ tz.transition 2007, 3, :o3, 1174784400
+ tz.transition 2007, 10, :o2, 1193533200
+ tz.transition 2008, 3, :o3, 1206838800
+ tz.transition 2008, 10, :o2, 1224982800
+ tz.transition 2009, 3, :o3, 1238288400
+ tz.transition 2009, 10, :o2, 1256432400
+ tz.transition 2010, 3, :o3, 1269738000
+ tz.transition 2010, 10, :o2, 1288486800
+ tz.transition 2011, 3, :o3, 1301187600
+ tz.transition 2011, 10, :o2, 1319936400
+ tz.transition 2012, 3, :o3, 1332637200
+ tz.transition 2012, 10, :o2, 1351386000
+ tz.transition 2013, 3, :o3, 1364691600
+ tz.transition 2013, 10, :o2, 1382835600
+ tz.transition 2014, 3, :o3, 1396141200
+ tz.transition 2014, 10, :o2, 1414285200
+ tz.transition 2015, 3, :o3, 1427590800
+ tz.transition 2015, 10, :o2, 1445734800
+ tz.transition 2016, 3, :o3, 1459040400
+ tz.transition 2016, 10, :o2, 1477789200
+ tz.transition 2017, 3, :o3, 1490490000
+ tz.transition 2017, 10, :o2, 1509238800
+ tz.transition 2018, 3, :o3, 1521939600
+ tz.transition 2018, 10, :o2, 1540688400
+ tz.transition 2019, 3, :o3, 1553994000
+ tz.transition 2019, 10, :o2, 1572138000
+ tz.transition 2020, 3, :o3, 1585443600
+ tz.transition 2020, 10, :o2, 1603587600
+ tz.transition 2021, 3, :o3, 1616893200
+ tz.transition 2021, 10, :o2, 1635642000
+ tz.transition 2022, 3, :o3, 1648342800
+ tz.transition 2022, 10, :o2, 1667091600
+ tz.transition 2023, 3, :o3, 1679792400
+ tz.transition 2023, 10, :o2, 1698541200
+ tz.transition 2024, 3, :o3, 1711846800
+ tz.transition 2024, 10, :o2, 1729990800
+ tz.transition 2025, 3, :o3, 1743296400
+ tz.transition 2025, 10, :o2, 1761440400
+ tz.transition 2026, 3, :o3, 1774746000
+ tz.transition 2026, 10, :o2, 1792890000
+ tz.transition 2027, 3, :o3, 1806195600
+ tz.transition 2027, 10, :o2, 1824944400
+ tz.transition 2028, 3, :o3, 1837645200
+ tz.transition 2028, 10, :o2, 1856394000
+ tz.transition 2029, 3, :o3, 1869094800
+ tz.transition 2029, 10, :o2, 1887843600
+ tz.transition 2030, 3, :o3, 1901149200
+ tz.transition 2030, 10, :o2, 1919293200
+ tz.transition 2031, 3, :o3, 1932598800
+ tz.transition 2031, 10, :o2, 1950742800
+ tz.transition 2032, 3, :o3, 1964048400
+ tz.transition 2032, 10, :o2, 1982797200
+ tz.transition 2033, 3, :o3, 1995498000
+ tz.transition 2033, 10, :o2, 2014246800
+ tz.transition 2034, 3, :o3, 2026947600
+ tz.transition 2034, 10, :o2, 2045696400
+ tz.transition 2035, 3, :o3, 2058397200
+ tz.transition 2035, 10, :o2, 2077146000
+ tz.transition 2036, 3, :o3, 2090451600
+ tz.transition 2036, 10, :o2, 2108595600
+ tz.transition 2037, 3, :o3, 2121901200
+ tz.transition 2037, 10, :o2, 2140045200
+ tz.transition 2038, 3, :o3, 59172253, 24
+ tz.transition 2038, 10, :o2, 59177461, 24
+ tz.transition 2039, 3, :o3, 59180989, 24
+ tz.transition 2039, 10, :o2, 59186197, 24
+ tz.transition 2040, 3, :o3, 59189725, 24
+ tz.transition 2040, 10, :o2, 59194933, 24
+ tz.transition 2041, 3, :o3, 59198629, 24
+ tz.transition 2041, 10, :o2, 59203669, 24
+ tz.transition 2042, 3, :o3, 59207365, 24
+ tz.transition 2042, 10, :o2, 59212405, 24
+ tz.transition 2043, 3, :o3, 59216101, 24
+ tz.transition 2043, 10, :o2, 59221141, 24
+ tz.transition 2044, 3, :o3, 59224837, 24
+ tz.transition 2044, 10, :o2, 59230045, 24
+ tz.transition 2045, 3, :o3, 59233573, 24
+ tz.transition 2045, 10, :o2, 59238781, 24
+ tz.transition 2046, 3, :o3, 59242309, 24
+ tz.transition 2046, 10, :o2, 59247517, 24
+ tz.transition 2047, 3, :o3, 59251213, 24
+ tz.transition 2047, 10, :o2, 59256253, 24
+ tz.transition 2048, 3, :o3, 59259949, 24
+ tz.transition 2048, 10, :o2, 59264989, 24
+ tz.transition 2049, 3, :o3, 59268685, 24
+ tz.transition 2049, 10, :o2, 59273893, 24
+ tz.transition 2050, 3, :o3, 59277421, 24
+ tz.transition 2050, 10, :o2, 59282629, 24
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Belgrade.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Belgrade.rb
new file mode 100644
index 000000000..4dbd893d7
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Belgrade.rb
@@ -0,0 +1,163 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Europe
+ module Belgrade
+ include TimezoneDefinition
+
+ timezone 'Europe/Belgrade' do |tz|
+ tz.offset :o0, 4920, 0, :LMT
+ tz.offset :o1, 3600, 0, :CET
+ tz.offset :o2, 3600, 3600, :CEST
+
+ tz.transition 1883, 12, :o1, 1734607039, 720
+ tz.transition 1941, 4, :o2, 29161241, 12
+ tz.transition 1942, 11, :o1, 58335973, 24
+ tz.transition 1943, 3, :o2, 58339501, 24
+ tz.transition 1943, 10, :o1, 58344037, 24
+ tz.transition 1944, 4, :o2, 58348405, 24
+ tz.transition 1944, 10, :o1, 58352773, 24
+ tz.transition 1945, 5, :o2, 58358005, 24
+ tz.transition 1945, 9, :o1, 58361149, 24
+ tz.transition 1983, 3, :o2, 417574800
+ tz.transition 1983, 9, :o1, 433299600
+ tz.transition 1984, 3, :o2, 449024400
+ tz.transition 1984, 9, :o1, 465354000
+ tz.transition 1985, 3, :o2, 481078800
+ tz.transition 1985, 9, :o1, 496803600
+ tz.transition 1986, 3, :o2, 512528400
+ tz.transition 1986, 9, :o1, 528253200
+ tz.transition 1987, 3, :o2, 543978000
+ tz.transition 1987, 9, :o1, 559702800
+ tz.transition 1988, 3, :o2, 575427600
+ tz.transition 1988, 9, :o1, 591152400
+ tz.transition 1989, 3, :o2, 606877200
+ tz.transition 1989, 9, :o1, 622602000
+ tz.transition 1990, 3, :o2, 638326800
+ tz.transition 1990, 9, :o1, 654656400
+ tz.transition 1991, 3, :o2, 670381200
+ tz.transition 1991, 9, :o1, 686106000
+ tz.transition 1992, 3, :o2, 701830800
+ tz.transition 1992, 9, :o1, 717555600
+ tz.transition 1993, 3, :o2, 733280400
+ tz.transition 1993, 9, :o1, 749005200
+ tz.transition 1994, 3, :o2, 764730000
+ tz.transition 1994, 9, :o1, 780454800
+ tz.transition 1995, 3, :o2, 796179600
+ tz.transition 1995, 9, :o1, 811904400
+ tz.transition 1996, 3, :o2, 828234000
+ tz.transition 1996, 10, :o1, 846378000
+ tz.transition 1997, 3, :o2, 859683600
+ tz.transition 1997, 10, :o1, 877827600
+ tz.transition 1998, 3, :o2, 891133200
+ tz.transition 1998, 10, :o1, 909277200
+ tz.transition 1999, 3, :o2, 922582800
+ tz.transition 1999, 10, :o1, 941331600
+ tz.transition 2000, 3, :o2, 954032400
+ tz.transition 2000, 10, :o1, 972781200
+ tz.transition 2001, 3, :o2, 985482000
+ tz.transition 2001, 10, :o1, 1004230800
+ tz.transition 2002, 3, :o2, 1017536400
+ tz.transition 2002, 10, :o1, 1035680400
+ tz.transition 2003, 3, :o2, 1048986000
+ tz.transition 2003, 10, :o1, 1067130000
+ tz.transition 2004, 3, :o2, 1080435600
+ tz.transition 2004, 10, :o1, 1099184400
+ tz.transition 2005, 3, :o2, 1111885200
+ tz.transition 2005, 10, :o1, 1130634000
+ tz.transition 2006, 3, :o2, 1143334800
+ tz.transition 2006, 10, :o1, 1162083600
+ tz.transition 2007, 3, :o2, 1174784400
+ tz.transition 2007, 10, :o1, 1193533200
+ tz.transition 2008, 3, :o2, 1206838800
+ tz.transition 2008, 10, :o1, 1224982800
+ tz.transition 2009, 3, :o2, 1238288400
+ tz.transition 2009, 10, :o1, 1256432400
+ tz.transition 2010, 3, :o2, 1269738000
+ tz.transition 2010, 10, :o1, 1288486800
+ tz.transition 2011, 3, :o2, 1301187600
+ tz.transition 2011, 10, :o1, 1319936400
+ tz.transition 2012, 3, :o2, 1332637200
+ tz.transition 2012, 10, :o1, 1351386000
+ tz.transition 2013, 3, :o2, 1364691600
+ tz.transition 2013, 10, :o1, 1382835600
+ tz.transition 2014, 3, :o2, 1396141200
+ tz.transition 2014, 10, :o1, 1414285200
+ tz.transition 2015, 3, :o2, 1427590800
+ tz.transition 2015, 10, :o1, 1445734800
+ tz.transition 2016, 3, :o2, 1459040400
+ tz.transition 2016, 10, :o1, 1477789200
+ tz.transition 2017, 3, :o2, 1490490000
+ tz.transition 2017, 10, :o1, 1509238800
+ tz.transition 2018, 3, :o2, 1521939600
+ tz.transition 2018, 10, :o1, 1540688400
+ tz.transition 2019, 3, :o2, 1553994000
+ tz.transition 2019, 10, :o1, 1572138000
+ tz.transition 2020, 3, :o2, 1585443600
+ tz.transition 2020, 10, :o1, 1603587600
+ tz.transition 2021, 3, :o2, 1616893200
+ tz.transition 2021, 10, :o1, 1635642000
+ tz.transition 2022, 3, :o2, 1648342800
+ tz.transition 2022, 10, :o1, 1667091600
+ tz.transition 2023, 3, :o2, 1679792400
+ tz.transition 2023, 10, :o1, 1698541200
+ tz.transition 2024, 3, :o2, 1711846800
+ tz.transition 2024, 10, :o1, 1729990800
+ tz.transition 2025, 3, :o2, 1743296400
+ tz.transition 2025, 10, :o1, 1761440400
+ tz.transition 2026, 3, :o2, 1774746000
+ tz.transition 2026, 10, :o1, 1792890000
+ tz.transition 2027, 3, :o2, 1806195600
+ tz.transition 2027, 10, :o1, 1824944400
+ tz.transition 2028, 3, :o2, 1837645200
+ tz.transition 2028, 10, :o1, 1856394000
+ tz.transition 2029, 3, :o2, 1869094800
+ tz.transition 2029, 10, :o1, 1887843600
+ tz.transition 2030, 3, :o2, 1901149200
+ tz.transition 2030, 10, :o1, 1919293200
+ tz.transition 2031, 3, :o2, 1932598800
+ tz.transition 2031, 10, :o1, 1950742800
+ tz.transition 2032, 3, :o2, 1964048400
+ tz.transition 2032, 10, :o1, 1982797200
+ tz.transition 2033, 3, :o2, 1995498000
+ tz.transition 2033, 10, :o1, 2014246800
+ tz.transition 2034, 3, :o2, 2026947600
+ tz.transition 2034, 10, :o1, 2045696400
+ tz.transition 2035, 3, :o2, 2058397200
+ tz.transition 2035, 10, :o1, 2077146000
+ tz.transition 2036, 3, :o2, 2090451600
+ tz.transition 2036, 10, :o1, 2108595600
+ tz.transition 2037, 3, :o2, 2121901200
+ tz.transition 2037, 10, :o1, 2140045200
+ tz.transition 2038, 3, :o2, 59172253, 24
+ tz.transition 2038, 10, :o1, 59177461, 24
+ tz.transition 2039, 3, :o2, 59180989, 24
+ tz.transition 2039, 10, :o1, 59186197, 24
+ tz.transition 2040, 3, :o2, 59189725, 24
+ tz.transition 2040, 10, :o1, 59194933, 24
+ tz.transition 2041, 3, :o2, 59198629, 24
+ tz.transition 2041, 10, :o1, 59203669, 24
+ tz.transition 2042, 3, :o2, 59207365, 24
+ tz.transition 2042, 10, :o1, 59212405, 24
+ tz.transition 2043, 3, :o2, 59216101, 24
+ tz.transition 2043, 10, :o1, 59221141, 24
+ tz.transition 2044, 3, :o2, 59224837, 24
+ tz.transition 2044, 10, :o1, 59230045, 24
+ tz.transition 2045, 3, :o2, 59233573, 24
+ tz.transition 2045, 10, :o1, 59238781, 24
+ tz.transition 2046, 3, :o2, 59242309, 24
+ tz.transition 2046, 10, :o1, 59247517, 24
+ tz.transition 2047, 3, :o2, 59251213, 24
+ tz.transition 2047, 10, :o1, 59256253, 24
+ tz.transition 2048, 3, :o2, 59259949, 24
+ tz.transition 2048, 10, :o1, 59264989, 24
+ tz.transition 2049, 3, :o2, 59268685, 24
+ tz.transition 2049, 10, :o1, 59273893, 24
+ tz.transition 2050, 3, :o2, 59277421, 24
+ tz.transition 2050, 10, :o1, 59282629, 24
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Berlin.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Berlin.rb
new file mode 100644
index 000000000..de2e4d951
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Berlin.rb
@@ -0,0 +1,188 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Europe
+ module Berlin
+ include TimezoneDefinition
+
+ timezone 'Europe/Berlin' do |tz|
+ tz.offset :o0, 3208, 0, :LMT
+ tz.offset :o1, 3600, 0, :CET
+ tz.offset :o2, 3600, 3600, :CEST
+ tz.offset :o3, 3600, 7200, :CEMT
+
+ tz.transition 1893, 3, :o1, 26055588199, 10800
+ tz.transition 1916, 4, :o2, 29051813, 12
+ tz.transition 1916, 9, :o1, 58107299, 24
+ tz.transition 1917, 4, :o2, 58112029, 24
+ tz.transition 1917, 9, :o1, 58115725, 24
+ tz.transition 1918, 4, :o2, 58120765, 24
+ tz.transition 1918, 9, :o1, 58124461, 24
+ tz.transition 1940, 4, :o2, 58313293, 24
+ tz.transition 1942, 11, :o1, 58335973, 24
+ tz.transition 1943, 3, :o2, 58339501, 24
+ tz.transition 1943, 10, :o1, 58344037, 24
+ tz.transition 1944, 4, :o2, 58348405, 24
+ tz.transition 1944, 10, :o1, 58352773, 24
+ tz.transition 1945, 4, :o2, 58357141, 24
+ tz.transition 1945, 5, :o3, 4863199, 2
+ tz.transition 1945, 9, :o2, 4863445, 2
+ tz.transition 1945, 11, :o1, 58362661, 24
+ tz.transition 1946, 4, :o2, 58366189, 24
+ tz.transition 1946, 10, :o1, 58370413, 24
+ tz.transition 1947, 4, :o2, 58374757, 24
+ tz.transition 1947, 5, :o3, 58375597, 24
+ tz.transition 1947, 6, :o2, 4864731, 2
+ tz.transition 1947, 10, :o1, 58379125, 24
+ tz.transition 1948, 4, :o2, 58383829, 24
+ tz.transition 1948, 10, :o1, 58387861, 24
+ tz.transition 1949, 4, :o2, 58392397, 24
+ tz.transition 1949, 10, :o1, 58396597, 24
+ tz.transition 1980, 4, :o2, 323830800
+ tz.transition 1980, 9, :o1, 338950800
+ tz.transition 1981, 3, :o2, 354675600
+ tz.transition 1981, 9, :o1, 370400400
+ tz.transition 1982, 3, :o2, 386125200
+ tz.transition 1982, 9, :o1, 401850000
+ tz.transition 1983, 3, :o2, 417574800
+ tz.transition 1983, 9, :o1, 433299600
+ tz.transition 1984, 3, :o2, 449024400
+ tz.transition 1984, 9, :o1, 465354000
+ tz.transition 1985, 3, :o2, 481078800
+ tz.transition 1985, 9, :o1, 496803600
+ tz.transition 1986, 3, :o2, 512528400
+ tz.transition 1986, 9, :o1, 528253200
+ tz.transition 1987, 3, :o2, 543978000
+ tz.transition 1987, 9, :o1, 559702800
+ tz.transition 1988, 3, :o2, 575427600
+ tz.transition 1988, 9, :o1, 591152400
+ tz.transition 1989, 3, :o2, 606877200
+ tz.transition 1989, 9, :o1, 622602000
+ tz.transition 1990, 3, :o2, 638326800
+ tz.transition 1990, 9, :o1, 654656400
+ tz.transition 1991, 3, :o2, 670381200
+ tz.transition 1991, 9, :o1, 686106000
+ tz.transition 1992, 3, :o2, 701830800
+ tz.transition 1992, 9, :o1, 717555600
+ tz.transition 1993, 3, :o2, 733280400
+ tz.transition 1993, 9, :o1, 749005200
+ tz.transition 1994, 3, :o2, 764730000
+ tz.transition 1994, 9, :o1, 780454800
+ tz.transition 1995, 3, :o2, 796179600
+ tz.transition 1995, 9, :o1, 811904400
+ tz.transition 1996, 3, :o2, 828234000
+ tz.transition 1996, 10, :o1, 846378000
+ tz.transition 1997, 3, :o2, 859683600
+ tz.transition 1997, 10, :o1, 877827600
+ tz.transition 1998, 3, :o2, 891133200
+ tz.transition 1998, 10, :o1, 909277200
+ tz.transition 1999, 3, :o2, 922582800
+ tz.transition 1999, 10, :o1, 941331600
+ tz.transition 2000, 3, :o2, 954032400
+ tz.transition 2000, 10, :o1, 972781200
+ tz.transition 2001, 3, :o2, 985482000
+ tz.transition 2001, 10, :o1, 1004230800
+ tz.transition 2002, 3, :o2, 1017536400
+ tz.transition 2002, 10, :o1, 1035680400
+ tz.transition 2003, 3, :o2, 1048986000
+ tz.transition 2003, 10, :o1, 1067130000
+ tz.transition 2004, 3, :o2, 1080435600
+ tz.transition 2004, 10, :o1, 1099184400
+ tz.transition 2005, 3, :o2, 1111885200
+ tz.transition 2005, 10, :o1, 1130634000
+ tz.transition 2006, 3, :o2, 1143334800
+ tz.transition 2006, 10, :o1, 1162083600
+ tz.transition 2007, 3, :o2, 1174784400
+ tz.transition 2007, 10, :o1, 1193533200
+ tz.transition 2008, 3, :o2, 1206838800
+ tz.transition 2008, 10, :o1, 1224982800
+ tz.transition 2009, 3, :o2, 1238288400
+ tz.transition 2009, 10, :o1, 1256432400
+ tz.transition 2010, 3, :o2, 1269738000
+ tz.transition 2010, 10, :o1, 1288486800
+ tz.transition 2011, 3, :o2, 1301187600
+ tz.transition 2011, 10, :o1, 1319936400
+ tz.transition 2012, 3, :o2, 1332637200
+ tz.transition 2012, 10, :o1, 1351386000
+ tz.transition 2013, 3, :o2, 1364691600
+ tz.transition 2013, 10, :o1, 1382835600
+ tz.transition 2014, 3, :o2, 1396141200
+ tz.transition 2014, 10, :o1, 1414285200
+ tz.transition 2015, 3, :o2, 1427590800
+ tz.transition 2015, 10, :o1, 1445734800
+ tz.transition 2016, 3, :o2, 1459040400
+ tz.transition 2016, 10, :o1, 1477789200
+ tz.transition 2017, 3, :o2, 1490490000
+ tz.transition 2017, 10, :o1, 1509238800
+ tz.transition 2018, 3, :o2, 1521939600
+ tz.transition 2018, 10, :o1, 1540688400
+ tz.transition 2019, 3, :o2, 1553994000
+ tz.transition 2019, 10, :o1, 1572138000
+ tz.transition 2020, 3, :o2, 1585443600
+ tz.transition 2020, 10, :o1, 1603587600
+ tz.transition 2021, 3, :o2, 1616893200
+ tz.transition 2021, 10, :o1, 1635642000
+ tz.transition 2022, 3, :o2, 1648342800
+ tz.transition 2022, 10, :o1, 1667091600
+ tz.transition 2023, 3, :o2, 1679792400
+ tz.transition 2023, 10, :o1, 1698541200
+ tz.transition 2024, 3, :o2, 1711846800
+ tz.transition 2024, 10, :o1, 1729990800
+ tz.transition 2025, 3, :o2, 1743296400
+ tz.transition 2025, 10, :o1, 1761440400
+ tz.transition 2026, 3, :o2, 1774746000
+ tz.transition 2026, 10, :o1, 1792890000
+ tz.transition 2027, 3, :o2, 1806195600
+ tz.transition 2027, 10, :o1, 1824944400
+ tz.transition 2028, 3, :o2, 1837645200
+ tz.transition 2028, 10, :o1, 1856394000
+ tz.transition 2029, 3, :o2, 1869094800
+ tz.transition 2029, 10, :o1, 1887843600
+ tz.transition 2030, 3, :o2, 1901149200
+ tz.transition 2030, 10, :o1, 1919293200
+ tz.transition 2031, 3, :o2, 1932598800
+ tz.transition 2031, 10, :o1, 1950742800
+ tz.transition 2032, 3, :o2, 1964048400
+ tz.transition 2032, 10, :o1, 1982797200
+ tz.transition 2033, 3, :o2, 1995498000
+ tz.transition 2033, 10, :o1, 2014246800
+ tz.transition 2034, 3, :o2, 2026947600
+ tz.transition 2034, 10, :o1, 2045696400
+ tz.transition 2035, 3, :o2, 2058397200
+ tz.transition 2035, 10, :o1, 2077146000
+ tz.transition 2036, 3, :o2, 2090451600
+ tz.transition 2036, 10, :o1, 2108595600
+ tz.transition 2037, 3, :o2, 2121901200
+ tz.transition 2037, 10, :o1, 2140045200
+ tz.transition 2038, 3, :o2, 59172253, 24
+ tz.transition 2038, 10, :o1, 59177461, 24
+ tz.transition 2039, 3, :o2, 59180989, 24
+ tz.transition 2039, 10, :o1, 59186197, 24
+ tz.transition 2040, 3, :o2, 59189725, 24
+ tz.transition 2040, 10, :o1, 59194933, 24
+ tz.transition 2041, 3, :o2, 59198629, 24
+ tz.transition 2041, 10, :o1, 59203669, 24
+ tz.transition 2042, 3, :o2, 59207365, 24
+ tz.transition 2042, 10, :o1, 59212405, 24
+ tz.transition 2043, 3, :o2, 59216101, 24
+ tz.transition 2043, 10, :o1, 59221141, 24
+ tz.transition 2044, 3, :o2, 59224837, 24
+ tz.transition 2044, 10, :o1, 59230045, 24
+ tz.transition 2045, 3, :o2, 59233573, 24
+ tz.transition 2045, 10, :o1, 59238781, 24
+ tz.transition 2046, 3, :o2, 59242309, 24
+ tz.transition 2046, 10, :o1, 59247517, 24
+ tz.transition 2047, 3, :o2, 59251213, 24
+ tz.transition 2047, 10, :o1, 59256253, 24
+ tz.transition 2048, 3, :o2, 59259949, 24
+ tz.transition 2048, 10, :o1, 59264989, 24
+ tz.transition 2049, 3, :o2, 59268685, 24
+ tz.transition 2049, 10, :o1, 59273893, 24
+ tz.transition 2050, 3, :o2, 59277421, 24
+ tz.transition 2050, 10, :o1, 59282629, 24
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Bratislava.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Bratislava.rb
new file mode 100644
index 000000000..7a731a0b6
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Bratislava.rb
@@ -0,0 +1,13 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Europe
+ module Bratislava
+ include TimezoneDefinition
+
+ linked_timezone 'Europe/Bratislava', 'Europe/Prague'
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Brussels.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Brussels.rb
new file mode 100644
index 000000000..6b0a24294
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Brussels.rb
@@ -0,0 +1,232 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Europe
+ module Brussels
+ include TimezoneDefinition
+
+ timezone 'Europe/Brussels' do |tz|
+ tz.offset :o0, 1050, 0, :LMT
+ tz.offset :o1, 1050, 0, :BMT
+ tz.offset :o2, 0, 0, :WET
+ tz.offset :o3, 3600, 0, :CET
+ tz.offset :o4, 3600, 3600, :CEST
+ tz.offset :o5, 0, 3600, :WEST
+
+ tz.transition 1879, 12, :o1, 1386844121, 576
+ tz.transition 1892, 5, :o2, 1389438713, 576
+ tz.transition 1914, 11, :o3, 4840889, 2
+ tz.transition 1916, 4, :o4, 58103627, 24
+ tz.transition 1916, 9, :o3, 58107299, 24
+ tz.transition 1917, 4, :o4, 58112029, 24
+ tz.transition 1917, 9, :o3, 58115725, 24
+ tz.transition 1918, 4, :o4, 58120765, 24
+ tz.transition 1918, 9, :o3, 58124461, 24
+ tz.transition 1918, 11, :o2, 58125815, 24
+ tz.transition 1919, 3, :o5, 58128467, 24
+ tz.transition 1919, 10, :o2, 58133675, 24
+ tz.transition 1920, 2, :o5, 58136867, 24
+ tz.transition 1920, 10, :o2, 58142915, 24
+ tz.transition 1921, 3, :o5, 58146323, 24
+ tz.transition 1921, 10, :o2, 58151723, 24
+ tz.transition 1922, 3, :o5, 58155347, 24
+ tz.transition 1922, 10, :o2, 58160051, 24
+ tz.transition 1923, 4, :o5, 58164755, 24
+ tz.transition 1923, 10, :o2, 58168787, 24
+ tz.transition 1924, 3, :o5, 58172987, 24
+ tz.transition 1924, 10, :o2, 58177523, 24
+ tz.transition 1925, 4, :o5, 58181891, 24
+ tz.transition 1925, 10, :o2, 58186259, 24
+ tz.transition 1926, 4, :o5, 58190963, 24
+ tz.transition 1926, 10, :o2, 58194995, 24
+ tz.transition 1927, 4, :o5, 58199531, 24
+ tz.transition 1927, 10, :o2, 58203731, 24
+ tz.transition 1928, 4, :o5, 58208435, 24
+ tz.transition 1928, 10, :o2, 29106319, 12
+ tz.transition 1929, 4, :o5, 29108671, 12
+ tz.transition 1929, 10, :o2, 29110687, 12
+ tz.transition 1930, 4, :o5, 29112955, 12
+ tz.transition 1930, 10, :o2, 29115055, 12
+ tz.transition 1931, 4, :o5, 29117407, 12
+ tz.transition 1931, 10, :o2, 29119423, 12
+ tz.transition 1932, 4, :o5, 29121607, 12
+ tz.transition 1932, 10, :o2, 29123791, 12
+ tz.transition 1933, 3, :o5, 29125891, 12
+ tz.transition 1933, 10, :o2, 29128243, 12
+ tz.transition 1934, 4, :o5, 29130427, 12
+ tz.transition 1934, 10, :o2, 29132611, 12
+ tz.transition 1935, 3, :o5, 29134711, 12
+ tz.transition 1935, 10, :o2, 29136979, 12
+ tz.transition 1936, 4, :o5, 29139331, 12
+ tz.transition 1936, 10, :o2, 29141347, 12
+ tz.transition 1937, 4, :o5, 29143531, 12
+ tz.transition 1937, 10, :o2, 29145715, 12
+ tz.transition 1938, 3, :o5, 29147815, 12
+ tz.transition 1938, 10, :o2, 29150083, 12
+ tz.transition 1939, 4, :o5, 29152435, 12
+ tz.transition 1939, 11, :o2, 29155039, 12
+ tz.transition 1940, 2, :o5, 29156215, 12
+ tz.transition 1940, 5, :o4, 29157235, 12
+ tz.transition 1942, 11, :o3, 58335973, 24
+ tz.transition 1943, 3, :o4, 58339501, 24
+ tz.transition 1943, 10, :o3, 58344037, 24
+ tz.transition 1944, 4, :o4, 58348405, 24
+ tz.transition 1944, 9, :o3, 58352413, 24
+ tz.transition 1945, 4, :o4, 58357141, 24
+ tz.transition 1945, 9, :o3, 58361149, 24
+ tz.transition 1946, 5, :o4, 58367029, 24
+ tz.transition 1946, 10, :o3, 58370413, 24
+ tz.transition 1977, 4, :o4, 228877200
+ tz.transition 1977, 9, :o3, 243997200
+ tz.transition 1978, 4, :o4, 260326800
+ tz.transition 1978, 10, :o3, 276051600
+ tz.transition 1979, 4, :o4, 291776400
+ tz.transition 1979, 9, :o3, 307501200
+ tz.transition 1980, 4, :o4, 323830800
+ tz.transition 1980, 9, :o3, 338950800
+ tz.transition 1981, 3, :o4, 354675600
+ tz.transition 1981, 9, :o3, 370400400
+ tz.transition 1982, 3, :o4, 386125200
+ tz.transition 1982, 9, :o3, 401850000
+ tz.transition 1983, 3, :o4, 417574800
+ tz.transition 1983, 9, :o3, 433299600
+ tz.transition 1984, 3, :o4, 449024400
+ tz.transition 1984, 9, :o3, 465354000
+ tz.transition 1985, 3, :o4, 481078800
+ tz.transition 1985, 9, :o3, 496803600
+ tz.transition 1986, 3, :o4, 512528400
+ tz.transition 1986, 9, :o3, 528253200
+ tz.transition 1987, 3, :o4, 543978000
+ tz.transition 1987, 9, :o3, 559702800
+ tz.transition 1988, 3, :o4, 575427600
+ tz.transition 1988, 9, :o3, 591152400
+ tz.transition 1989, 3, :o4, 606877200
+ tz.transition 1989, 9, :o3, 622602000
+ tz.transition 1990, 3, :o4, 638326800
+ tz.transition 1990, 9, :o3, 654656400
+ tz.transition 1991, 3, :o4, 670381200
+ tz.transition 1991, 9, :o3, 686106000
+ tz.transition 1992, 3, :o4, 701830800
+ tz.transition 1992, 9, :o3, 717555600
+ tz.transition 1993, 3, :o4, 733280400
+ tz.transition 1993, 9, :o3, 749005200
+ tz.transition 1994, 3, :o4, 764730000
+ tz.transition 1994, 9, :o3, 780454800
+ tz.transition 1995, 3, :o4, 796179600
+ tz.transition 1995, 9, :o3, 811904400
+ tz.transition 1996, 3, :o4, 828234000
+ tz.transition 1996, 10, :o3, 846378000
+ tz.transition 1997, 3, :o4, 859683600
+ tz.transition 1997, 10, :o3, 877827600
+ tz.transition 1998, 3, :o4, 891133200
+ tz.transition 1998, 10, :o3, 909277200
+ tz.transition 1999, 3, :o4, 922582800
+ tz.transition 1999, 10, :o3, 941331600
+ tz.transition 2000, 3, :o4, 954032400
+ tz.transition 2000, 10, :o3, 972781200
+ tz.transition 2001, 3, :o4, 985482000
+ tz.transition 2001, 10, :o3, 1004230800
+ tz.transition 2002, 3, :o4, 1017536400
+ tz.transition 2002, 10, :o3, 1035680400
+ tz.transition 2003, 3, :o4, 1048986000
+ tz.transition 2003, 10, :o3, 1067130000
+ tz.transition 2004, 3, :o4, 1080435600
+ tz.transition 2004, 10, :o3, 1099184400
+ tz.transition 2005, 3, :o4, 1111885200
+ tz.transition 2005, 10, :o3, 1130634000
+ tz.transition 2006, 3, :o4, 1143334800
+ tz.transition 2006, 10, :o3, 1162083600
+ tz.transition 2007, 3, :o4, 1174784400
+ tz.transition 2007, 10, :o3, 1193533200
+ tz.transition 2008, 3, :o4, 1206838800
+ tz.transition 2008, 10, :o3, 1224982800
+ tz.transition 2009, 3, :o4, 1238288400
+ tz.transition 2009, 10, :o3, 1256432400
+ tz.transition 2010, 3, :o4, 1269738000
+ tz.transition 2010, 10, :o3, 1288486800
+ tz.transition 2011, 3, :o4, 1301187600
+ tz.transition 2011, 10, :o3, 1319936400
+ tz.transition 2012, 3, :o4, 1332637200
+ tz.transition 2012, 10, :o3, 1351386000
+ tz.transition 2013, 3, :o4, 1364691600
+ tz.transition 2013, 10, :o3, 1382835600
+ tz.transition 2014, 3, :o4, 1396141200
+ tz.transition 2014, 10, :o3, 1414285200
+ tz.transition 2015, 3, :o4, 1427590800
+ tz.transition 2015, 10, :o3, 1445734800
+ tz.transition 2016, 3, :o4, 1459040400
+ tz.transition 2016, 10, :o3, 1477789200
+ tz.transition 2017, 3, :o4, 1490490000
+ tz.transition 2017, 10, :o3, 1509238800
+ tz.transition 2018, 3, :o4, 1521939600
+ tz.transition 2018, 10, :o3, 1540688400
+ tz.transition 2019, 3, :o4, 1553994000
+ tz.transition 2019, 10, :o3, 1572138000
+ tz.transition 2020, 3, :o4, 1585443600
+ tz.transition 2020, 10, :o3, 1603587600
+ tz.transition 2021, 3, :o4, 1616893200
+ tz.transition 2021, 10, :o3, 1635642000
+ tz.transition 2022, 3, :o4, 1648342800
+ tz.transition 2022, 10, :o3, 1667091600
+ tz.transition 2023, 3, :o4, 1679792400
+ tz.transition 2023, 10, :o3, 1698541200
+ tz.transition 2024, 3, :o4, 1711846800
+ tz.transition 2024, 10, :o3, 1729990800
+ tz.transition 2025, 3, :o4, 1743296400
+ tz.transition 2025, 10, :o3, 1761440400
+ tz.transition 2026, 3, :o4, 1774746000
+ tz.transition 2026, 10, :o3, 1792890000
+ tz.transition 2027, 3, :o4, 1806195600
+ tz.transition 2027, 10, :o3, 1824944400
+ tz.transition 2028, 3, :o4, 1837645200
+ tz.transition 2028, 10, :o3, 1856394000
+ tz.transition 2029, 3, :o4, 1869094800
+ tz.transition 2029, 10, :o3, 1887843600
+ tz.transition 2030, 3, :o4, 1901149200
+ tz.transition 2030, 10, :o3, 1919293200
+ tz.transition 2031, 3, :o4, 1932598800
+ tz.transition 2031, 10, :o3, 1950742800
+ tz.transition 2032, 3, :o4, 1964048400
+ tz.transition 2032, 10, :o3, 1982797200
+ tz.transition 2033, 3, :o4, 1995498000
+ tz.transition 2033, 10, :o3, 2014246800
+ tz.transition 2034, 3, :o4, 2026947600
+ tz.transition 2034, 10, :o3, 2045696400
+ tz.transition 2035, 3, :o4, 2058397200
+ tz.transition 2035, 10, :o3, 2077146000
+ tz.transition 2036, 3, :o4, 2090451600
+ tz.transition 2036, 10, :o3, 2108595600
+ tz.transition 2037, 3, :o4, 2121901200
+ tz.transition 2037, 10, :o3, 2140045200
+ tz.transition 2038, 3, :o4, 59172253, 24
+ tz.transition 2038, 10, :o3, 59177461, 24
+ tz.transition 2039, 3, :o4, 59180989, 24
+ tz.transition 2039, 10, :o3, 59186197, 24
+ tz.transition 2040, 3, :o4, 59189725, 24
+ tz.transition 2040, 10, :o3, 59194933, 24
+ tz.transition 2041, 3, :o4, 59198629, 24
+ tz.transition 2041, 10, :o3, 59203669, 24
+ tz.transition 2042, 3, :o4, 59207365, 24
+ tz.transition 2042, 10, :o3, 59212405, 24
+ tz.transition 2043, 3, :o4, 59216101, 24
+ tz.transition 2043, 10, :o3, 59221141, 24
+ tz.transition 2044, 3, :o4, 59224837, 24
+ tz.transition 2044, 10, :o3, 59230045, 24
+ tz.transition 2045, 3, :o4, 59233573, 24
+ tz.transition 2045, 10, :o3, 59238781, 24
+ tz.transition 2046, 3, :o4, 59242309, 24
+ tz.transition 2046, 10, :o3, 59247517, 24
+ tz.transition 2047, 3, :o4, 59251213, 24
+ tz.transition 2047, 10, :o3, 59256253, 24
+ tz.transition 2048, 3, :o4, 59259949, 24
+ tz.transition 2048, 10, :o3, 59264989, 24
+ tz.transition 2049, 3, :o4, 59268685, 24
+ tz.transition 2049, 10, :o3, 59273893, 24
+ tz.transition 2050, 3, :o4, 59277421, 24
+ tz.transition 2050, 10, :o3, 59282629, 24
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Bucharest.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Bucharest.rb
new file mode 100644
index 000000000..521c3c932
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Bucharest.rb
@@ -0,0 +1,181 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Europe
+ module Bucharest
+ include TimezoneDefinition
+
+ timezone 'Europe/Bucharest' do |tz|
+ tz.offset :o0, 6264, 0, :LMT
+ tz.offset :o1, 6264, 0, :BMT
+ tz.offset :o2, 7200, 0, :EET
+ tz.offset :o3, 7200, 3600, :EEST
+
+ tz.transition 1891, 9, :o1, 964802571, 400
+ tz.transition 1931, 7, :o2, 970618571, 400
+ tz.transition 1932, 5, :o3, 29122181, 12
+ tz.transition 1932, 10, :o2, 29123789, 12
+ tz.transition 1933, 4, :o3, 29125973, 12
+ tz.transition 1933, 9, :o2, 29128157, 12
+ tz.transition 1934, 4, :o3, 29130425, 12
+ tz.transition 1934, 10, :o2, 29132609, 12
+ tz.transition 1935, 4, :o3, 29134793, 12
+ tz.transition 1935, 10, :o2, 29136977, 12
+ tz.transition 1936, 4, :o3, 29139161, 12
+ tz.transition 1936, 10, :o2, 29141345, 12
+ tz.transition 1937, 4, :o3, 29143529, 12
+ tz.transition 1937, 10, :o2, 29145713, 12
+ tz.transition 1938, 4, :o3, 29147897, 12
+ tz.transition 1938, 10, :o2, 29150081, 12
+ tz.transition 1939, 4, :o3, 29152265, 12
+ tz.transition 1939, 9, :o2, 29154449, 12
+ tz.transition 1979, 5, :o3, 296604000
+ tz.transition 1979, 9, :o2, 307486800
+ tz.transition 1980, 4, :o3, 323816400
+ tz.transition 1980, 9, :o2, 338940000
+ tz.transition 1981, 3, :o3, 354672000
+ tz.transition 1981, 9, :o2, 370396800
+ tz.transition 1982, 3, :o3, 386121600
+ tz.transition 1982, 9, :o2, 401846400
+ tz.transition 1983, 3, :o3, 417571200
+ tz.transition 1983, 9, :o2, 433296000
+ tz.transition 1984, 3, :o3, 449020800
+ tz.transition 1984, 9, :o2, 465350400
+ tz.transition 1985, 3, :o3, 481075200
+ tz.transition 1985, 9, :o2, 496800000
+ tz.transition 1986, 3, :o3, 512524800
+ tz.transition 1986, 9, :o2, 528249600
+ tz.transition 1987, 3, :o3, 543974400
+ tz.transition 1987, 9, :o2, 559699200
+ tz.transition 1988, 3, :o3, 575424000
+ tz.transition 1988, 9, :o2, 591148800
+ tz.transition 1989, 3, :o3, 606873600
+ tz.transition 1989, 9, :o2, 622598400
+ tz.transition 1990, 3, :o3, 638323200
+ tz.transition 1990, 9, :o2, 654652800
+ tz.transition 1991, 3, :o3, 670370400
+ tz.transition 1991, 9, :o2, 686095200
+ tz.transition 1992, 3, :o3, 701820000
+ tz.transition 1992, 9, :o2, 717544800
+ tz.transition 1993, 3, :o3, 733269600
+ tz.transition 1993, 9, :o2, 748994400
+ tz.transition 1994, 3, :o3, 764719200
+ tz.transition 1994, 9, :o2, 780440400
+ tz.transition 1995, 3, :o3, 796168800
+ tz.transition 1995, 9, :o2, 811890000
+ tz.transition 1996, 3, :o3, 828223200
+ tz.transition 1996, 10, :o2, 846363600
+ tz.transition 1997, 3, :o3, 859683600
+ tz.transition 1997, 10, :o2, 877827600
+ tz.transition 1998, 3, :o3, 891133200
+ tz.transition 1998, 10, :o2, 909277200
+ tz.transition 1999, 3, :o3, 922582800
+ tz.transition 1999, 10, :o2, 941331600
+ tz.transition 2000, 3, :o3, 954032400
+ tz.transition 2000, 10, :o2, 972781200
+ tz.transition 2001, 3, :o3, 985482000
+ tz.transition 2001, 10, :o2, 1004230800
+ tz.transition 2002, 3, :o3, 1017536400
+ tz.transition 2002, 10, :o2, 1035680400
+ tz.transition 2003, 3, :o3, 1048986000
+ tz.transition 2003, 10, :o2, 1067130000
+ tz.transition 2004, 3, :o3, 1080435600
+ tz.transition 2004, 10, :o2, 1099184400
+ tz.transition 2005, 3, :o3, 1111885200
+ tz.transition 2005, 10, :o2, 1130634000
+ tz.transition 2006, 3, :o3, 1143334800
+ tz.transition 2006, 10, :o2, 1162083600
+ tz.transition 2007, 3, :o3, 1174784400
+ tz.transition 2007, 10, :o2, 1193533200
+ tz.transition 2008, 3, :o3, 1206838800
+ tz.transition 2008, 10, :o2, 1224982800
+ tz.transition 2009, 3, :o3, 1238288400
+ tz.transition 2009, 10, :o2, 1256432400
+ tz.transition 2010, 3, :o3, 1269738000
+ tz.transition 2010, 10, :o2, 1288486800
+ tz.transition 2011, 3, :o3, 1301187600
+ tz.transition 2011, 10, :o2, 1319936400
+ tz.transition 2012, 3, :o3, 1332637200
+ tz.transition 2012, 10, :o2, 1351386000
+ tz.transition 2013, 3, :o3, 1364691600
+ tz.transition 2013, 10, :o2, 1382835600
+ tz.transition 2014, 3, :o3, 1396141200
+ tz.transition 2014, 10, :o2, 1414285200
+ tz.transition 2015, 3, :o3, 1427590800
+ tz.transition 2015, 10, :o2, 1445734800
+ tz.transition 2016, 3, :o3, 1459040400
+ tz.transition 2016, 10, :o2, 1477789200
+ tz.transition 2017, 3, :o3, 1490490000
+ tz.transition 2017, 10, :o2, 1509238800
+ tz.transition 2018, 3, :o3, 1521939600
+ tz.transition 2018, 10, :o2, 1540688400
+ tz.transition 2019, 3, :o3, 1553994000
+ tz.transition 2019, 10, :o2, 1572138000
+ tz.transition 2020, 3, :o3, 1585443600
+ tz.transition 2020, 10, :o2, 1603587600
+ tz.transition 2021, 3, :o3, 1616893200
+ tz.transition 2021, 10, :o2, 1635642000
+ tz.transition 2022, 3, :o3, 1648342800
+ tz.transition 2022, 10, :o2, 1667091600
+ tz.transition 2023, 3, :o3, 1679792400
+ tz.transition 2023, 10, :o2, 1698541200
+ tz.transition 2024, 3, :o3, 1711846800
+ tz.transition 2024, 10, :o2, 1729990800
+ tz.transition 2025, 3, :o3, 1743296400
+ tz.transition 2025, 10, :o2, 1761440400
+ tz.transition 2026, 3, :o3, 1774746000
+ tz.transition 2026, 10, :o2, 1792890000
+ tz.transition 2027, 3, :o3, 1806195600
+ tz.transition 2027, 10, :o2, 1824944400
+ tz.transition 2028, 3, :o3, 1837645200
+ tz.transition 2028, 10, :o2, 1856394000
+ tz.transition 2029, 3, :o3, 1869094800
+ tz.transition 2029, 10, :o2, 1887843600
+ tz.transition 2030, 3, :o3, 1901149200
+ tz.transition 2030, 10, :o2, 1919293200
+ tz.transition 2031, 3, :o3, 1932598800
+ tz.transition 2031, 10, :o2, 1950742800
+ tz.transition 2032, 3, :o3, 1964048400
+ tz.transition 2032, 10, :o2, 1982797200
+ tz.transition 2033, 3, :o3, 1995498000
+ tz.transition 2033, 10, :o2, 2014246800
+ tz.transition 2034, 3, :o3, 2026947600
+ tz.transition 2034, 10, :o2, 2045696400
+ tz.transition 2035, 3, :o3, 2058397200
+ tz.transition 2035, 10, :o2, 2077146000
+ tz.transition 2036, 3, :o3, 2090451600
+ tz.transition 2036, 10, :o2, 2108595600
+ tz.transition 2037, 3, :o3, 2121901200
+ tz.transition 2037, 10, :o2, 2140045200
+ tz.transition 2038, 3, :o3, 59172253, 24
+ tz.transition 2038, 10, :o2, 59177461, 24
+ tz.transition 2039, 3, :o3, 59180989, 24
+ tz.transition 2039, 10, :o2, 59186197, 24
+ tz.transition 2040, 3, :o3, 59189725, 24
+ tz.transition 2040, 10, :o2, 59194933, 24
+ tz.transition 2041, 3, :o3, 59198629, 24
+ tz.transition 2041, 10, :o2, 59203669, 24
+ tz.transition 2042, 3, :o3, 59207365, 24
+ tz.transition 2042, 10, :o2, 59212405, 24
+ tz.transition 2043, 3, :o3, 59216101, 24
+ tz.transition 2043, 10, :o2, 59221141, 24
+ tz.transition 2044, 3, :o3, 59224837, 24
+ tz.transition 2044, 10, :o2, 59230045, 24
+ tz.transition 2045, 3, :o3, 59233573, 24
+ tz.transition 2045, 10, :o2, 59238781, 24
+ tz.transition 2046, 3, :o3, 59242309, 24
+ tz.transition 2046, 10, :o2, 59247517, 24
+ tz.transition 2047, 3, :o3, 59251213, 24
+ tz.transition 2047, 10, :o2, 59256253, 24
+ tz.transition 2048, 3, :o3, 59259949, 24
+ tz.transition 2048, 10, :o2, 59264989, 24
+ tz.transition 2049, 3, :o3, 59268685, 24
+ tz.transition 2049, 10, :o2, 59273893, 24
+ tz.transition 2050, 3, :o3, 59277421, 24
+ tz.transition 2050, 10, :o2, 59282629, 24
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Budapest.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Budapest.rb
new file mode 100644
index 000000000..1f3a9738b
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Budapest.rb
@@ -0,0 +1,197 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Europe
+ module Budapest
+ include TimezoneDefinition
+
+ timezone 'Europe/Budapest' do |tz|
+ tz.offset :o0, 4580, 0, :LMT
+ tz.offset :o1, 3600, 0, :CET
+ tz.offset :o2, 3600, 3600, :CEST
+
+ tz.transition 1890, 9, :o1, 10418291051, 4320
+ tz.transition 1916, 4, :o2, 29051813, 12
+ tz.transition 1916, 9, :o1, 58107299, 24
+ tz.transition 1917, 4, :o2, 58112029, 24
+ tz.transition 1917, 9, :o1, 58115725, 24
+ tz.transition 1918, 4, :o2, 29060215, 12
+ tz.transition 1918, 9, :o1, 58124773, 24
+ tz.transition 1919, 4, :o2, 29064763, 12
+ tz.transition 1919, 9, :o1, 58133197, 24
+ tz.transition 1920, 4, :o2, 29069035, 12
+ tz.transition 1920, 9, :o1, 58142341, 24
+ tz.transition 1941, 4, :o2, 58322173, 24
+ tz.transition 1942, 11, :o1, 58335973, 24
+ tz.transition 1943, 3, :o2, 58339501, 24
+ tz.transition 1943, 10, :o1, 58344037, 24
+ tz.transition 1944, 4, :o2, 58348405, 24
+ tz.transition 1944, 10, :o1, 58352773, 24
+ tz.transition 1945, 5, :o2, 29178929, 12
+ tz.transition 1945, 11, :o1, 29181149, 12
+ tz.transition 1946, 3, :o2, 58365853, 24
+ tz.transition 1946, 10, :o1, 58370389, 24
+ tz.transition 1947, 4, :o2, 58374757, 24
+ tz.transition 1947, 10, :o1, 58379125, 24
+ tz.transition 1948, 4, :o2, 58383493, 24
+ tz.transition 1948, 10, :o1, 58387861, 24
+ tz.transition 1949, 4, :o2, 58392397, 24
+ tz.transition 1949, 10, :o1, 58396597, 24
+ tz.transition 1950, 4, :o2, 58401325, 24
+ tz.transition 1950, 10, :o1, 58405861, 24
+ tz.transition 1954, 5, :o2, 58437251, 24
+ tz.transition 1954, 10, :o1, 29220221, 12
+ tz.transition 1955, 5, :o2, 58446011, 24
+ tz.transition 1955, 10, :o1, 29224601, 12
+ tz.transition 1956, 6, :o2, 58455059, 24
+ tz.transition 1956, 9, :o1, 29228957, 12
+ tz.transition 1957, 6, :o2, 4871983, 2
+ tz.transition 1957, 9, :o1, 58466653, 24
+ tz.transition 1980, 4, :o2, 323827200
+ tz.transition 1980, 9, :o1, 338950800
+ tz.transition 1981, 3, :o2, 354675600
+ tz.transition 1981, 9, :o1, 370400400
+ tz.transition 1982, 3, :o2, 386125200
+ tz.transition 1982, 9, :o1, 401850000
+ tz.transition 1983, 3, :o2, 417574800
+ tz.transition 1983, 9, :o1, 433299600
+ tz.transition 1984, 3, :o2, 449024400
+ tz.transition 1984, 9, :o1, 465354000
+ tz.transition 1985, 3, :o2, 481078800
+ tz.transition 1985, 9, :o1, 496803600
+ tz.transition 1986, 3, :o2, 512528400
+ tz.transition 1986, 9, :o1, 528253200
+ tz.transition 1987, 3, :o2, 543978000
+ tz.transition 1987, 9, :o1, 559702800
+ tz.transition 1988, 3, :o2, 575427600
+ tz.transition 1988, 9, :o1, 591152400
+ tz.transition 1989, 3, :o2, 606877200
+ tz.transition 1989, 9, :o1, 622602000
+ tz.transition 1990, 3, :o2, 638326800
+ tz.transition 1990, 9, :o1, 654656400
+ tz.transition 1991, 3, :o2, 670381200
+ tz.transition 1991, 9, :o1, 686106000
+ tz.transition 1992, 3, :o2, 701830800
+ tz.transition 1992, 9, :o1, 717555600
+ tz.transition 1993, 3, :o2, 733280400
+ tz.transition 1993, 9, :o1, 749005200
+ tz.transition 1994, 3, :o2, 764730000
+ tz.transition 1994, 9, :o1, 780454800
+ tz.transition 1995, 3, :o2, 796179600
+ tz.transition 1995, 9, :o1, 811904400
+ tz.transition 1996, 3, :o2, 828234000
+ tz.transition 1996, 10, :o1, 846378000
+ tz.transition 1997, 3, :o2, 859683600
+ tz.transition 1997, 10, :o1, 877827600
+ tz.transition 1998, 3, :o2, 891133200
+ tz.transition 1998, 10, :o1, 909277200
+ tz.transition 1999, 3, :o2, 922582800
+ tz.transition 1999, 10, :o1, 941331600
+ tz.transition 2000, 3, :o2, 954032400
+ tz.transition 2000, 10, :o1, 972781200
+ tz.transition 2001, 3, :o2, 985482000
+ tz.transition 2001, 10, :o1, 1004230800
+ tz.transition 2002, 3, :o2, 1017536400
+ tz.transition 2002, 10, :o1, 1035680400
+ tz.transition 2003, 3, :o2, 1048986000
+ tz.transition 2003, 10, :o1, 1067130000
+ tz.transition 2004, 3, :o2, 1080435600
+ tz.transition 2004, 10, :o1, 1099184400
+ tz.transition 2005, 3, :o2, 1111885200
+ tz.transition 2005, 10, :o1, 1130634000
+ tz.transition 2006, 3, :o2, 1143334800
+ tz.transition 2006, 10, :o1, 1162083600
+ tz.transition 2007, 3, :o2, 1174784400
+ tz.transition 2007, 10, :o1, 1193533200
+ tz.transition 2008, 3, :o2, 1206838800
+ tz.transition 2008, 10, :o1, 1224982800
+ tz.transition 2009, 3, :o2, 1238288400
+ tz.transition 2009, 10, :o1, 1256432400
+ tz.transition 2010, 3, :o2, 1269738000
+ tz.transition 2010, 10, :o1, 1288486800
+ tz.transition 2011, 3, :o2, 1301187600
+ tz.transition 2011, 10, :o1, 1319936400
+ tz.transition 2012, 3, :o2, 1332637200
+ tz.transition 2012, 10, :o1, 1351386000
+ tz.transition 2013, 3, :o2, 1364691600
+ tz.transition 2013, 10, :o1, 1382835600
+ tz.transition 2014, 3, :o2, 1396141200
+ tz.transition 2014, 10, :o1, 1414285200
+ tz.transition 2015, 3, :o2, 1427590800
+ tz.transition 2015, 10, :o1, 1445734800
+ tz.transition 2016, 3, :o2, 1459040400
+ tz.transition 2016, 10, :o1, 1477789200
+ tz.transition 2017, 3, :o2, 1490490000
+ tz.transition 2017, 10, :o1, 1509238800
+ tz.transition 2018, 3, :o2, 1521939600
+ tz.transition 2018, 10, :o1, 1540688400
+ tz.transition 2019, 3, :o2, 1553994000
+ tz.transition 2019, 10, :o1, 1572138000
+ tz.transition 2020, 3, :o2, 1585443600
+ tz.transition 2020, 10, :o1, 1603587600
+ tz.transition 2021, 3, :o2, 1616893200
+ tz.transition 2021, 10, :o1, 1635642000
+ tz.transition 2022, 3, :o2, 1648342800
+ tz.transition 2022, 10, :o1, 1667091600
+ tz.transition 2023, 3, :o2, 1679792400
+ tz.transition 2023, 10, :o1, 1698541200
+ tz.transition 2024, 3, :o2, 1711846800
+ tz.transition 2024, 10, :o1, 1729990800
+ tz.transition 2025, 3, :o2, 1743296400
+ tz.transition 2025, 10, :o1, 1761440400
+ tz.transition 2026, 3, :o2, 1774746000
+ tz.transition 2026, 10, :o1, 1792890000
+ tz.transition 2027, 3, :o2, 1806195600
+ tz.transition 2027, 10, :o1, 1824944400
+ tz.transition 2028, 3, :o2, 1837645200
+ tz.transition 2028, 10, :o1, 1856394000
+ tz.transition 2029, 3, :o2, 1869094800
+ tz.transition 2029, 10, :o1, 1887843600
+ tz.transition 2030, 3, :o2, 1901149200
+ tz.transition 2030, 10, :o1, 1919293200
+ tz.transition 2031, 3, :o2, 1932598800
+ tz.transition 2031, 10, :o1, 1950742800
+ tz.transition 2032, 3, :o2, 1964048400
+ tz.transition 2032, 10, :o1, 1982797200
+ tz.transition 2033, 3, :o2, 1995498000
+ tz.transition 2033, 10, :o1, 2014246800
+ tz.transition 2034, 3, :o2, 2026947600
+ tz.transition 2034, 10, :o1, 2045696400
+ tz.transition 2035, 3, :o2, 2058397200
+ tz.transition 2035, 10, :o1, 2077146000
+ tz.transition 2036, 3, :o2, 2090451600
+ tz.transition 2036, 10, :o1, 2108595600
+ tz.transition 2037, 3, :o2, 2121901200
+ tz.transition 2037, 10, :o1, 2140045200
+ tz.transition 2038, 3, :o2, 59172253, 24
+ tz.transition 2038, 10, :o1, 59177461, 24
+ tz.transition 2039, 3, :o2, 59180989, 24
+ tz.transition 2039, 10, :o1, 59186197, 24
+ tz.transition 2040, 3, :o2, 59189725, 24
+ tz.transition 2040, 10, :o1, 59194933, 24
+ tz.transition 2041, 3, :o2, 59198629, 24
+ tz.transition 2041, 10, :o1, 59203669, 24
+ tz.transition 2042, 3, :o2, 59207365, 24
+ tz.transition 2042, 10, :o1, 59212405, 24
+ tz.transition 2043, 3, :o2, 59216101, 24
+ tz.transition 2043, 10, :o1, 59221141, 24
+ tz.transition 2044, 3, :o2, 59224837, 24
+ tz.transition 2044, 10, :o1, 59230045, 24
+ tz.transition 2045, 3, :o2, 59233573, 24
+ tz.transition 2045, 10, :o1, 59238781, 24
+ tz.transition 2046, 3, :o2, 59242309, 24
+ tz.transition 2046, 10, :o1, 59247517, 24
+ tz.transition 2047, 3, :o2, 59251213, 24
+ tz.transition 2047, 10, :o1, 59256253, 24
+ tz.transition 2048, 3, :o2, 59259949, 24
+ tz.transition 2048, 10, :o1, 59264989, 24
+ tz.transition 2049, 3, :o2, 59268685, 24
+ tz.transition 2049, 10, :o1, 59273893, 24
+ tz.transition 2050, 3, :o2, 59277421, 24
+ tz.transition 2050, 10, :o1, 59282629, 24
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Copenhagen.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Copenhagen.rb
new file mode 100644
index 000000000..47cbaf14a
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Copenhagen.rb
@@ -0,0 +1,179 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Europe
+ module Copenhagen
+ include TimezoneDefinition
+
+ timezone 'Europe/Copenhagen' do |tz|
+ tz.offset :o0, 3020, 0, :LMT
+ tz.offset :o1, 3020, 0, :CMT
+ tz.offset :o2, 3600, 0, :CET
+ tz.offset :o3, 3600, 3600, :CEST
+
+ tz.transition 1889, 12, :o1, 10417111769, 4320
+ tz.transition 1893, 12, :o2, 10423423289, 4320
+ tz.transition 1916, 5, :o3, 29051981, 12
+ tz.transition 1916, 9, :o2, 19369099, 8
+ tz.transition 1940, 5, :o3, 58314347, 24
+ tz.transition 1942, 11, :o2, 58335973, 24
+ tz.transition 1943, 3, :o3, 58339501, 24
+ tz.transition 1943, 10, :o2, 58344037, 24
+ tz.transition 1944, 4, :o3, 58348405, 24
+ tz.transition 1944, 10, :o2, 58352773, 24
+ tz.transition 1945, 4, :o3, 58357141, 24
+ tz.transition 1945, 8, :o2, 58360381, 24
+ tz.transition 1946, 5, :o3, 58366597, 24
+ tz.transition 1946, 9, :o2, 58369549, 24
+ tz.transition 1947, 5, :o3, 58375429, 24
+ tz.transition 1947, 8, :o2, 58377781, 24
+ tz.transition 1948, 5, :o3, 58384333, 24
+ tz.transition 1948, 8, :o2, 58386517, 24
+ tz.transition 1980, 4, :o3, 323830800
+ tz.transition 1980, 9, :o2, 338950800
+ tz.transition 1981, 3, :o3, 354675600
+ tz.transition 1981, 9, :o2, 370400400
+ tz.transition 1982, 3, :o3, 386125200
+ tz.transition 1982, 9, :o2, 401850000
+ tz.transition 1983, 3, :o3, 417574800
+ tz.transition 1983, 9, :o2, 433299600
+ tz.transition 1984, 3, :o3, 449024400
+ tz.transition 1984, 9, :o2, 465354000
+ tz.transition 1985, 3, :o3, 481078800
+ tz.transition 1985, 9, :o2, 496803600
+ tz.transition 1986, 3, :o3, 512528400
+ tz.transition 1986, 9, :o2, 528253200
+ tz.transition 1987, 3, :o3, 543978000
+ tz.transition 1987, 9, :o2, 559702800
+ tz.transition 1988, 3, :o3, 575427600
+ tz.transition 1988, 9, :o2, 591152400
+ tz.transition 1989, 3, :o3, 606877200
+ tz.transition 1989, 9, :o2, 622602000
+ tz.transition 1990, 3, :o3, 638326800
+ tz.transition 1990, 9, :o2, 654656400
+ tz.transition 1991, 3, :o3, 670381200
+ tz.transition 1991, 9, :o2, 686106000
+ tz.transition 1992, 3, :o3, 701830800
+ tz.transition 1992, 9, :o2, 717555600
+ tz.transition 1993, 3, :o3, 733280400
+ tz.transition 1993, 9, :o2, 749005200
+ tz.transition 1994, 3, :o3, 764730000
+ tz.transition 1994, 9, :o2, 780454800
+ tz.transition 1995, 3, :o3, 796179600
+ tz.transition 1995, 9, :o2, 811904400
+ tz.transition 1996, 3, :o3, 828234000
+ tz.transition 1996, 10, :o2, 846378000
+ tz.transition 1997, 3, :o3, 859683600
+ tz.transition 1997, 10, :o2, 877827600
+ tz.transition 1998, 3, :o3, 891133200
+ tz.transition 1998, 10, :o2, 909277200
+ tz.transition 1999, 3, :o3, 922582800
+ tz.transition 1999, 10, :o2, 941331600
+ tz.transition 2000, 3, :o3, 954032400
+ tz.transition 2000, 10, :o2, 972781200
+ tz.transition 2001, 3, :o3, 985482000
+ tz.transition 2001, 10, :o2, 1004230800
+ tz.transition 2002, 3, :o3, 1017536400
+ tz.transition 2002, 10, :o2, 1035680400
+ tz.transition 2003, 3, :o3, 1048986000
+ tz.transition 2003, 10, :o2, 1067130000
+ tz.transition 2004, 3, :o3, 1080435600
+ tz.transition 2004, 10, :o2, 1099184400
+ tz.transition 2005, 3, :o3, 1111885200
+ tz.transition 2005, 10, :o2, 1130634000
+ tz.transition 2006, 3, :o3, 1143334800
+ tz.transition 2006, 10, :o2, 1162083600
+ tz.transition 2007, 3, :o3, 1174784400
+ tz.transition 2007, 10, :o2, 1193533200
+ tz.transition 2008, 3, :o3, 1206838800
+ tz.transition 2008, 10, :o2, 1224982800
+ tz.transition 2009, 3, :o3, 1238288400
+ tz.transition 2009, 10, :o2, 1256432400
+ tz.transition 2010, 3, :o3, 1269738000
+ tz.transition 2010, 10, :o2, 1288486800
+ tz.transition 2011, 3, :o3, 1301187600
+ tz.transition 2011, 10, :o2, 1319936400
+ tz.transition 2012, 3, :o3, 1332637200
+ tz.transition 2012, 10, :o2, 1351386000
+ tz.transition 2013, 3, :o3, 1364691600
+ tz.transition 2013, 10, :o2, 1382835600
+ tz.transition 2014, 3, :o3, 1396141200
+ tz.transition 2014, 10, :o2, 1414285200
+ tz.transition 2015, 3, :o3, 1427590800
+ tz.transition 2015, 10, :o2, 1445734800
+ tz.transition 2016, 3, :o3, 1459040400
+ tz.transition 2016, 10, :o2, 1477789200
+ tz.transition 2017, 3, :o3, 1490490000
+ tz.transition 2017, 10, :o2, 1509238800
+ tz.transition 2018, 3, :o3, 1521939600
+ tz.transition 2018, 10, :o2, 1540688400
+ tz.transition 2019, 3, :o3, 1553994000
+ tz.transition 2019, 10, :o2, 1572138000
+ tz.transition 2020, 3, :o3, 1585443600
+ tz.transition 2020, 10, :o2, 1603587600
+ tz.transition 2021, 3, :o3, 1616893200
+ tz.transition 2021, 10, :o2, 1635642000
+ tz.transition 2022, 3, :o3, 1648342800
+ tz.transition 2022, 10, :o2, 1667091600
+ tz.transition 2023, 3, :o3, 1679792400
+ tz.transition 2023, 10, :o2, 1698541200
+ tz.transition 2024, 3, :o3, 1711846800
+ tz.transition 2024, 10, :o2, 1729990800
+ tz.transition 2025, 3, :o3, 1743296400
+ tz.transition 2025, 10, :o2, 1761440400
+ tz.transition 2026, 3, :o3, 1774746000
+ tz.transition 2026, 10, :o2, 1792890000
+ tz.transition 2027, 3, :o3, 1806195600
+ tz.transition 2027, 10, :o2, 1824944400
+ tz.transition 2028, 3, :o3, 1837645200
+ tz.transition 2028, 10, :o2, 1856394000
+ tz.transition 2029, 3, :o3, 1869094800
+ tz.transition 2029, 10, :o2, 1887843600
+ tz.transition 2030, 3, :o3, 1901149200
+ tz.transition 2030, 10, :o2, 1919293200
+ tz.transition 2031, 3, :o3, 1932598800
+ tz.transition 2031, 10, :o2, 1950742800
+ tz.transition 2032, 3, :o3, 1964048400
+ tz.transition 2032, 10, :o2, 1982797200
+ tz.transition 2033, 3, :o3, 1995498000
+ tz.transition 2033, 10, :o2, 2014246800
+ tz.transition 2034, 3, :o3, 2026947600
+ tz.transition 2034, 10, :o2, 2045696400
+ tz.transition 2035, 3, :o3, 2058397200
+ tz.transition 2035, 10, :o2, 2077146000
+ tz.transition 2036, 3, :o3, 2090451600
+ tz.transition 2036, 10, :o2, 2108595600
+ tz.transition 2037, 3, :o3, 2121901200
+ tz.transition 2037, 10, :o2, 2140045200
+ tz.transition 2038, 3, :o3, 59172253, 24
+ tz.transition 2038, 10, :o2, 59177461, 24
+ tz.transition 2039, 3, :o3, 59180989, 24
+ tz.transition 2039, 10, :o2, 59186197, 24
+ tz.transition 2040, 3, :o3, 59189725, 24
+ tz.transition 2040, 10, :o2, 59194933, 24
+ tz.transition 2041, 3, :o3, 59198629, 24
+ tz.transition 2041, 10, :o2, 59203669, 24
+ tz.transition 2042, 3, :o3, 59207365, 24
+ tz.transition 2042, 10, :o2, 59212405, 24
+ tz.transition 2043, 3, :o3, 59216101, 24
+ tz.transition 2043, 10, :o2, 59221141, 24
+ tz.transition 2044, 3, :o3, 59224837, 24
+ tz.transition 2044, 10, :o2, 59230045, 24
+ tz.transition 2045, 3, :o3, 59233573, 24
+ tz.transition 2045, 10, :o2, 59238781, 24
+ tz.transition 2046, 3, :o3, 59242309, 24
+ tz.transition 2046, 10, :o2, 59247517, 24
+ tz.transition 2047, 3, :o3, 59251213, 24
+ tz.transition 2047, 10, :o2, 59256253, 24
+ tz.transition 2048, 3, :o3, 59259949, 24
+ tz.transition 2048, 10, :o2, 59264989, 24
+ tz.transition 2049, 3, :o3, 59268685, 24
+ tz.transition 2049, 10, :o2, 59273893, 24
+ tz.transition 2050, 3, :o3, 59277421, 24
+ tz.transition 2050, 10, :o2, 59282629, 24
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Dublin.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Dublin.rb
new file mode 100644
index 000000000..0560bb543
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Dublin.rb
@@ -0,0 +1,276 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Europe
+ module Dublin
+ include TimezoneDefinition
+
+ timezone 'Europe/Dublin' do |tz|
+ tz.offset :o0, -1500, 0, :LMT
+ tz.offset :o1, -1521, 0, :DMT
+ tz.offset :o2, -1521, 3600, :IST
+ tz.offset :o3, 0, 0, :GMT
+ tz.offset :o4, 0, 3600, :BST
+ tz.offset :o5, 0, 3600, :IST
+ tz.offset :o6, 3600, 0, :IST
+
+ tz.transition 1880, 8, :o1, 693483701, 288
+ tz.transition 1916, 5, :o2, 7747214723, 3200
+ tz.transition 1916, 10, :o3, 7747640323, 3200
+ tz.transition 1917, 4, :o4, 29055919, 12
+ tz.transition 1917, 9, :o3, 29057863, 12
+ tz.transition 1918, 3, :o4, 29060119, 12
+ tz.transition 1918, 9, :o3, 29062399, 12
+ tz.transition 1919, 3, :o4, 29064571, 12
+ tz.transition 1919, 9, :o3, 29066767, 12
+ tz.transition 1920, 3, :o4, 29068939, 12
+ tz.transition 1920, 10, :o3, 29071471, 12
+ tz.transition 1921, 4, :o4, 29073391, 12
+ tz.transition 1921, 10, :o3, 29075587, 12
+ tz.transition 1922, 3, :o5, 29077675, 12
+ tz.transition 1922, 10, :o3, 29080027, 12
+ tz.transition 1923, 4, :o5, 29082379, 12
+ tz.transition 1923, 9, :o3, 29084143, 12
+ tz.transition 1924, 4, :o5, 29086663, 12
+ tz.transition 1924, 9, :o3, 29088595, 12
+ tz.transition 1925, 4, :o5, 29091115, 12
+ tz.transition 1925, 10, :o3, 29093131, 12
+ tz.transition 1926, 4, :o5, 29095483, 12
+ tz.transition 1926, 10, :o3, 29097499, 12
+ tz.transition 1927, 4, :o5, 29099767, 12
+ tz.transition 1927, 10, :o3, 29101867, 12
+ tz.transition 1928, 4, :o5, 29104303, 12
+ tz.transition 1928, 10, :o3, 29106319, 12
+ tz.transition 1929, 4, :o5, 29108671, 12
+ tz.transition 1929, 10, :o3, 29110687, 12
+ tz.transition 1930, 4, :o5, 29112955, 12
+ tz.transition 1930, 10, :o3, 29115055, 12
+ tz.transition 1931, 4, :o5, 29117407, 12
+ tz.transition 1931, 10, :o3, 29119423, 12
+ tz.transition 1932, 4, :o5, 29121775, 12
+ tz.transition 1932, 10, :o3, 29123791, 12
+ tz.transition 1933, 4, :o5, 29126059, 12
+ tz.transition 1933, 10, :o3, 29128243, 12
+ tz.transition 1934, 4, :o5, 29130595, 12
+ tz.transition 1934, 10, :o3, 29132611, 12
+ tz.transition 1935, 4, :o5, 29134879, 12
+ tz.transition 1935, 10, :o3, 29136979, 12
+ tz.transition 1936, 4, :o5, 29139331, 12
+ tz.transition 1936, 10, :o3, 29141347, 12
+ tz.transition 1937, 4, :o5, 29143699, 12
+ tz.transition 1937, 10, :o3, 29145715, 12
+ tz.transition 1938, 4, :o5, 29147983, 12
+ tz.transition 1938, 10, :o3, 29150083, 12
+ tz.transition 1939, 4, :o5, 29152435, 12
+ tz.transition 1939, 11, :o3, 29155039, 12
+ tz.transition 1940, 2, :o5, 29156215, 12
+ tz.transition 1946, 10, :o3, 58370389, 24
+ tz.transition 1947, 3, :o5, 29187127, 12
+ tz.transition 1947, 11, :o3, 58379797, 24
+ tz.transition 1948, 4, :o5, 29191915, 12
+ tz.transition 1948, 10, :o3, 29194267, 12
+ tz.transition 1949, 4, :o5, 29196115, 12
+ tz.transition 1949, 10, :o3, 29198635, 12
+ tz.transition 1950, 4, :o5, 29200651, 12
+ tz.transition 1950, 10, :o3, 29202919, 12
+ tz.transition 1951, 4, :o5, 29205019, 12
+ tz.transition 1951, 10, :o3, 29207287, 12
+ tz.transition 1952, 4, :o5, 29209471, 12
+ tz.transition 1952, 10, :o3, 29211739, 12
+ tz.transition 1953, 4, :o5, 29213839, 12
+ tz.transition 1953, 10, :o3, 29215855, 12
+ tz.transition 1954, 4, :o5, 29218123, 12
+ tz.transition 1954, 10, :o3, 29220223, 12
+ tz.transition 1955, 4, :o5, 29222575, 12
+ tz.transition 1955, 10, :o3, 29224591, 12
+ tz.transition 1956, 4, :o5, 29227027, 12
+ tz.transition 1956, 10, :o3, 29229043, 12
+ tz.transition 1957, 4, :o5, 29231311, 12
+ tz.transition 1957, 10, :o3, 29233411, 12
+ tz.transition 1958, 4, :o5, 29235763, 12
+ tz.transition 1958, 10, :o3, 29237779, 12
+ tz.transition 1959, 4, :o5, 29240131, 12
+ tz.transition 1959, 10, :o3, 29242147, 12
+ tz.transition 1960, 4, :o5, 29244415, 12
+ tz.transition 1960, 10, :o3, 29246515, 12
+ tz.transition 1961, 3, :o5, 29248615, 12
+ tz.transition 1961, 10, :o3, 29251219, 12
+ tz.transition 1962, 3, :o5, 29252983, 12
+ tz.transition 1962, 10, :o3, 29255587, 12
+ tz.transition 1963, 3, :o5, 29257435, 12
+ tz.transition 1963, 10, :o3, 29259955, 12
+ tz.transition 1964, 3, :o5, 29261719, 12
+ tz.transition 1964, 10, :o3, 29264323, 12
+ tz.transition 1965, 3, :o5, 29266087, 12
+ tz.transition 1965, 10, :o3, 29268691, 12
+ tz.transition 1966, 3, :o5, 29270455, 12
+ tz.transition 1966, 10, :o3, 29273059, 12
+ tz.transition 1967, 3, :o5, 29274823, 12
+ tz.transition 1967, 10, :o3, 29277511, 12
+ tz.transition 1968, 2, :o5, 29278855, 12
+ tz.transition 1968, 10, :o6, 58563755, 24
+ tz.transition 1971, 10, :o3, 57722400
+ tz.transition 1972, 3, :o5, 69818400
+ tz.transition 1972, 10, :o3, 89172000
+ tz.transition 1973, 3, :o5, 101268000
+ tz.transition 1973, 10, :o3, 120621600
+ tz.transition 1974, 3, :o5, 132717600
+ tz.transition 1974, 10, :o3, 152071200
+ tz.transition 1975, 3, :o5, 164167200
+ tz.transition 1975, 10, :o3, 183520800
+ tz.transition 1976, 3, :o5, 196221600
+ tz.transition 1976, 10, :o3, 214970400
+ tz.transition 1977, 3, :o5, 227671200
+ tz.transition 1977, 10, :o3, 246420000
+ tz.transition 1978, 3, :o5, 259120800
+ tz.transition 1978, 10, :o3, 278474400
+ tz.transition 1979, 3, :o5, 290570400
+ tz.transition 1979, 10, :o3, 309924000
+ tz.transition 1980, 3, :o5, 322020000
+ tz.transition 1980, 10, :o3, 341373600
+ tz.transition 1981, 3, :o5, 354675600
+ tz.transition 1981, 10, :o3, 372819600
+ tz.transition 1982, 3, :o5, 386125200
+ tz.transition 1982, 10, :o3, 404269200
+ tz.transition 1983, 3, :o5, 417574800
+ tz.transition 1983, 10, :o3, 435718800
+ tz.transition 1984, 3, :o5, 449024400
+ tz.transition 1984, 10, :o3, 467773200
+ tz.transition 1985, 3, :o5, 481078800
+ tz.transition 1985, 10, :o3, 499222800
+ tz.transition 1986, 3, :o5, 512528400
+ tz.transition 1986, 10, :o3, 530672400
+ tz.transition 1987, 3, :o5, 543978000
+ tz.transition 1987, 10, :o3, 562122000
+ tz.transition 1988, 3, :o5, 575427600
+ tz.transition 1988, 10, :o3, 593571600
+ tz.transition 1989, 3, :o5, 606877200
+ tz.transition 1989, 10, :o3, 625626000
+ tz.transition 1990, 3, :o5, 638326800
+ tz.transition 1990, 10, :o3, 657075600
+ tz.transition 1991, 3, :o5, 670381200
+ tz.transition 1991, 10, :o3, 688525200
+ tz.transition 1992, 3, :o5, 701830800
+ tz.transition 1992, 10, :o3, 719974800
+ tz.transition 1993, 3, :o5, 733280400
+ tz.transition 1993, 10, :o3, 751424400
+ tz.transition 1994, 3, :o5, 764730000
+ tz.transition 1994, 10, :o3, 782874000
+ tz.transition 1995, 3, :o5, 796179600
+ tz.transition 1995, 10, :o3, 814323600
+ tz.transition 1996, 3, :o5, 828234000
+ tz.transition 1996, 10, :o3, 846378000
+ tz.transition 1997, 3, :o5, 859683600
+ tz.transition 1997, 10, :o3, 877827600
+ tz.transition 1998, 3, :o5, 891133200
+ tz.transition 1998, 10, :o3, 909277200
+ tz.transition 1999, 3, :o5, 922582800
+ tz.transition 1999, 10, :o3, 941331600
+ tz.transition 2000, 3, :o5, 954032400
+ tz.transition 2000, 10, :o3, 972781200
+ tz.transition 2001, 3, :o5, 985482000
+ tz.transition 2001, 10, :o3, 1004230800
+ tz.transition 2002, 3, :o5, 1017536400
+ tz.transition 2002, 10, :o3, 1035680400
+ tz.transition 2003, 3, :o5, 1048986000
+ tz.transition 2003, 10, :o3, 1067130000
+ tz.transition 2004, 3, :o5, 1080435600
+ tz.transition 2004, 10, :o3, 1099184400
+ tz.transition 2005, 3, :o5, 1111885200
+ tz.transition 2005, 10, :o3, 1130634000
+ tz.transition 2006, 3, :o5, 1143334800
+ tz.transition 2006, 10, :o3, 1162083600
+ tz.transition 2007, 3, :o5, 1174784400
+ tz.transition 2007, 10, :o3, 1193533200
+ tz.transition 2008, 3, :o5, 1206838800
+ tz.transition 2008, 10, :o3, 1224982800
+ tz.transition 2009, 3, :o5, 1238288400
+ tz.transition 2009, 10, :o3, 1256432400
+ tz.transition 2010, 3, :o5, 1269738000
+ tz.transition 2010, 10, :o3, 1288486800
+ tz.transition 2011, 3, :o5, 1301187600
+ tz.transition 2011, 10, :o3, 1319936400
+ tz.transition 2012, 3, :o5, 1332637200
+ tz.transition 2012, 10, :o3, 1351386000
+ tz.transition 2013, 3, :o5, 1364691600
+ tz.transition 2013, 10, :o3, 1382835600
+ tz.transition 2014, 3, :o5, 1396141200
+ tz.transition 2014, 10, :o3, 1414285200
+ tz.transition 2015, 3, :o5, 1427590800
+ tz.transition 2015, 10, :o3, 1445734800
+ tz.transition 2016, 3, :o5, 1459040400
+ tz.transition 2016, 10, :o3, 1477789200
+ tz.transition 2017, 3, :o5, 1490490000
+ tz.transition 2017, 10, :o3, 1509238800
+ tz.transition 2018, 3, :o5, 1521939600
+ tz.transition 2018, 10, :o3, 1540688400
+ tz.transition 2019, 3, :o5, 1553994000
+ tz.transition 2019, 10, :o3, 1572138000
+ tz.transition 2020, 3, :o5, 1585443600
+ tz.transition 2020, 10, :o3, 1603587600
+ tz.transition 2021, 3, :o5, 1616893200
+ tz.transition 2021, 10, :o3, 1635642000
+ tz.transition 2022, 3, :o5, 1648342800
+ tz.transition 2022, 10, :o3, 1667091600
+ tz.transition 2023, 3, :o5, 1679792400
+ tz.transition 2023, 10, :o3, 1698541200
+ tz.transition 2024, 3, :o5, 1711846800
+ tz.transition 2024, 10, :o3, 1729990800
+ tz.transition 2025, 3, :o5, 1743296400
+ tz.transition 2025, 10, :o3, 1761440400
+ tz.transition 2026, 3, :o5, 1774746000
+ tz.transition 2026, 10, :o3, 1792890000
+ tz.transition 2027, 3, :o5, 1806195600
+ tz.transition 2027, 10, :o3, 1824944400
+ tz.transition 2028, 3, :o5, 1837645200
+ tz.transition 2028, 10, :o3, 1856394000
+ tz.transition 2029, 3, :o5, 1869094800
+ tz.transition 2029, 10, :o3, 1887843600
+ tz.transition 2030, 3, :o5, 1901149200
+ tz.transition 2030, 10, :o3, 1919293200
+ tz.transition 2031, 3, :o5, 1932598800
+ tz.transition 2031, 10, :o3, 1950742800
+ tz.transition 2032, 3, :o5, 1964048400
+ tz.transition 2032, 10, :o3, 1982797200
+ tz.transition 2033, 3, :o5, 1995498000
+ tz.transition 2033, 10, :o3, 2014246800
+ tz.transition 2034, 3, :o5, 2026947600
+ tz.transition 2034, 10, :o3, 2045696400
+ tz.transition 2035, 3, :o5, 2058397200
+ tz.transition 2035, 10, :o3, 2077146000
+ tz.transition 2036, 3, :o5, 2090451600
+ tz.transition 2036, 10, :o3, 2108595600
+ tz.transition 2037, 3, :o5, 2121901200
+ tz.transition 2037, 10, :o3, 2140045200
+ tz.transition 2038, 3, :o5, 59172253, 24
+ tz.transition 2038, 10, :o3, 59177461, 24
+ tz.transition 2039, 3, :o5, 59180989, 24
+ tz.transition 2039, 10, :o3, 59186197, 24
+ tz.transition 2040, 3, :o5, 59189725, 24
+ tz.transition 2040, 10, :o3, 59194933, 24
+ tz.transition 2041, 3, :o5, 59198629, 24
+ tz.transition 2041, 10, :o3, 59203669, 24
+ tz.transition 2042, 3, :o5, 59207365, 24
+ tz.transition 2042, 10, :o3, 59212405, 24
+ tz.transition 2043, 3, :o5, 59216101, 24
+ tz.transition 2043, 10, :o3, 59221141, 24
+ tz.transition 2044, 3, :o5, 59224837, 24
+ tz.transition 2044, 10, :o3, 59230045, 24
+ tz.transition 2045, 3, :o5, 59233573, 24
+ tz.transition 2045, 10, :o3, 59238781, 24
+ tz.transition 2046, 3, :o5, 59242309, 24
+ tz.transition 2046, 10, :o3, 59247517, 24
+ tz.transition 2047, 3, :o5, 59251213, 24
+ tz.transition 2047, 10, :o3, 59256253, 24
+ tz.transition 2048, 3, :o5, 59259949, 24
+ tz.transition 2048, 10, :o3, 59264989, 24
+ tz.transition 2049, 3, :o5, 59268685, 24
+ tz.transition 2049, 10, :o3, 59273893, 24
+ tz.transition 2050, 3, :o5, 59277421, 24
+ tz.transition 2050, 10, :o3, 59282629, 24
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Helsinki.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Helsinki.rb
new file mode 100644
index 000000000..13a806bcc
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Helsinki.rb
@@ -0,0 +1,163 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Europe
+ module Helsinki
+ include TimezoneDefinition
+
+ timezone 'Europe/Helsinki' do |tz|
+ tz.offset :o0, 5992, 0, :LMT
+ tz.offset :o1, 5992, 0, :HMT
+ tz.offset :o2, 7200, 0, :EET
+ tz.offset :o3, 7200, 3600, :EEST
+
+ tz.transition 1878, 5, :o1, 25997062651, 10800
+ tz.transition 1921, 4, :o2, 26166352651, 10800
+ tz.transition 1942, 4, :o3, 29165429, 12
+ tz.transition 1942, 10, :o2, 19445083, 8
+ tz.transition 1981, 3, :o3, 354675600
+ tz.transition 1981, 9, :o2, 370400400
+ tz.transition 1982, 3, :o3, 386125200
+ tz.transition 1982, 9, :o2, 401850000
+ tz.transition 1983, 3, :o3, 417574800
+ tz.transition 1983, 9, :o2, 433299600
+ tz.transition 1984, 3, :o3, 449024400
+ tz.transition 1984, 9, :o2, 465354000
+ tz.transition 1985, 3, :o3, 481078800
+ tz.transition 1985, 9, :o2, 496803600
+ tz.transition 1986, 3, :o3, 512528400
+ tz.transition 1986, 9, :o2, 528253200
+ tz.transition 1987, 3, :o3, 543978000
+ tz.transition 1987, 9, :o2, 559702800
+ tz.transition 1988, 3, :o3, 575427600
+ tz.transition 1988, 9, :o2, 591152400
+ tz.transition 1989, 3, :o3, 606877200
+ tz.transition 1989, 9, :o2, 622602000
+ tz.transition 1990, 3, :o3, 638326800
+ tz.transition 1990, 9, :o2, 654656400
+ tz.transition 1991, 3, :o3, 670381200
+ tz.transition 1991, 9, :o2, 686106000
+ tz.transition 1992, 3, :o3, 701830800
+ tz.transition 1992, 9, :o2, 717555600
+ tz.transition 1993, 3, :o3, 733280400
+ tz.transition 1993, 9, :o2, 749005200
+ tz.transition 1994, 3, :o3, 764730000
+ tz.transition 1994, 9, :o2, 780454800
+ tz.transition 1995, 3, :o3, 796179600
+ tz.transition 1995, 9, :o2, 811904400
+ tz.transition 1996, 3, :o3, 828234000
+ tz.transition 1996, 10, :o2, 846378000
+ tz.transition 1997, 3, :o3, 859683600
+ tz.transition 1997, 10, :o2, 877827600
+ tz.transition 1998, 3, :o3, 891133200
+ tz.transition 1998, 10, :o2, 909277200
+ tz.transition 1999, 3, :o3, 922582800
+ tz.transition 1999, 10, :o2, 941331600
+ tz.transition 2000, 3, :o3, 954032400
+ tz.transition 2000, 10, :o2, 972781200
+ tz.transition 2001, 3, :o3, 985482000
+ tz.transition 2001, 10, :o2, 1004230800
+ tz.transition 2002, 3, :o3, 1017536400
+ tz.transition 2002, 10, :o2, 1035680400
+ tz.transition 2003, 3, :o3, 1048986000
+ tz.transition 2003, 10, :o2, 1067130000
+ tz.transition 2004, 3, :o3, 1080435600
+ tz.transition 2004, 10, :o2, 1099184400
+ tz.transition 2005, 3, :o3, 1111885200
+ tz.transition 2005, 10, :o2, 1130634000
+ tz.transition 2006, 3, :o3, 1143334800
+ tz.transition 2006, 10, :o2, 1162083600
+ tz.transition 2007, 3, :o3, 1174784400
+ tz.transition 2007, 10, :o2, 1193533200
+ tz.transition 2008, 3, :o3, 1206838800
+ tz.transition 2008, 10, :o2, 1224982800
+ tz.transition 2009, 3, :o3, 1238288400
+ tz.transition 2009, 10, :o2, 1256432400
+ tz.transition 2010, 3, :o3, 1269738000
+ tz.transition 2010, 10, :o2, 1288486800
+ tz.transition 2011, 3, :o3, 1301187600
+ tz.transition 2011, 10, :o2, 1319936400
+ tz.transition 2012, 3, :o3, 1332637200
+ tz.transition 2012, 10, :o2, 1351386000
+ tz.transition 2013, 3, :o3, 1364691600
+ tz.transition 2013, 10, :o2, 1382835600
+ tz.transition 2014, 3, :o3, 1396141200
+ tz.transition 2014, 10, :o2, 1414285200
+ tz.transition 2015, 3, :o3, 1427590800
+ tz.transition 2015, 10, :o2, 1445734800
+ tz.transition 2016, 3, :o3, 1459040400
+ tz.transition 2016, 10, :o2, 1477789200
+ tz.transition 2017, 3, :o3, 1490490000
+ tz.transition 2017, 10, :o2, 1509238800
+ tz.transition 2018, 3, :o3, 1521939600
+ tz.transition 2018, 10, :o2, 1540688400
+ tz.transition 2019, 3, :o3, 1553994000
+ tz.transition 2019, 10, :o2, 1572138000
+ tz.transition 2020, 3, :o3, 1585443600
+ tz.transition 2020, 10, :o2, 1603587600
+ tz.transition 2021, 3, :o3, 1616893200
+ tz.transition 2021, 10, :o2, 1635642000
+ tz.transition 2022, 3, :o3, 1648342800
+ tz.transition 2022, 10, :o2, 1667091600
+ tz.transition 2023, 3, :o3, 1679792400
+ tz.transition 2023, 10, :o2, 1698541200
+ tz.transition 2024, 3, :o3, 1711846800
+ tz.transition 2024, 10, :o2, 1729990800
+ tz.transition 2025, 3, :o3, 1743296400
+ tz.transition 2025, 10, :o2, 1761440400
+ tz.transition 2026, 3, :o3, 1774746000
+ tz.transition 2026, 10, :o2, 1792890000
+ tz.transition 2027, 3, :o3, 1806195600
+ tz.transition 2027, 10, :o2, 1824944400
+ tz.transition 2028, 3, :o3, 1837645200
+ tz.transition 2028, 10, :o2, 1856394000
+ tz.transition 2029, 3, :o3, 1869094800
+ tz.transition 2029, 10, :o2, 1887843600
+ tz.transition 2030, 3, :o3, 1901149200
+ tz.transition 2030, 10, :o2, 1919293200
+ tz.transition 2031, 3, :o3, 1932598800
+ tz.transition 2031, 10, :o2, 1950742800
+ tz.transition 2032, 3, :o3, 1964048400
+ tz.transition 2032, 10, :o2, 1982797200
+ tz.transition 2033, 3, :o3, 1995498000
+ tz.transition 2033, 10, :o2, 2014246800
+ tz.transition 2034, 3, :o3, 2026947600
+ tz.transition 2034, 10, :o2, 2045696400
+ tz.transition 2035, 3, :o3, 2058397200
+ tz.transition 2035, 10, :o2, 2077146000
+ tz.transition 2036, 3, :o3, 2090451600
+ tz.transition 2036, 10, :o2, 2108595600
+ tz.transition 2037, 3, :o3, 2121901200
+ tz.transition 2037, 10, :o2, 2140045200
+ tz.transition 2038, 3, :o3, 59172253, 24
+ tz.transition 2038, 10, :o2, 59177461, 24
+ tz.transition 2039, 3, :o3, 59180989, 24
+ tz.transition 2039, 10, :o2, 59186197, 24
+ tz.transition 2040, 3, :o3, 59189725, 24
+ tz.transition 2040, 10, :o2, 59194933, 24
+ tz.transition 2041, 3, :o3, 59198629, 24
+ tz.transition 2041, 10, :o2, 59203669, 24
+ tz.transition 2042, 3, :o3, 59207365, 24
+ tz.transition 2042, 10, :o2, 59212405, 24
+ tz.transition 2043, 3, :o3, 59216101, 24
+ tz.transition 2043, 10, :o2, 59221141, 24
+ tz.transition 2044, 3, :o3, 59224837, 24
+ tz.transition 2044, 10, :o2, 59230045, 24
+ tz.transition 2045, 3, :o3, 59233573, 24
+ tz.transition 2045, 10, :o2, 59238781, 24
+ tz.transition 2046, 3, :o3, 59242309, 24
+ tz.transition 2046, 10, :o2, 59247517, 24
+ tz.transition 2047, 3, :o3, 59251213, 24
+ tz.transition 2047, 10, :o2, 59256253, 24
+ tz.transition 2048, 3, :o3, 59259949, 24
+ tz.transition 2048, 10, :o2, 59264989, 24
+ tz.transition 2049, 3, :o3, 59268685, 24
+ tz.transition 2049, 10, :o2, 59273893, 24
+ tz.transition 2050, 3, :o3, 59277421, 24
+ tz.transition 2050, 10, :o2, 59282629, 24
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Istanbul.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Istanbul.rb
new file mode 100644
index 000000000..8306c4753
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Istanbul.rb
@@ -0,0 +1,218 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Europe
+ module Istanbul
+ include TimezoneDefinition
+
+ timezone 'Europe/Istanbul' do |tz|
+ tz.offset :o0, 6952, 0, :LMT
+ tz.offset :o1, 7016, 0, :IMT
+ tz.offset :o2, 7200, 0, :EET
+ tz.offset :o3, 7200, 3600, :EEST
+ tz.offset :o4, 10800, 3600, :TRST
+ tz.offset :o5, 10800, 0, :TRT
+
+ tz.transition 1879, 12, :o1, 26003326531, 10800
+ tz.transition 1910, 9, :o2, 26124610523, 10800
+ tz.transition 1916, 4, :o3, 29051813, 12
+ tz.transition 1916, 9, :o2, 19369099, 8
+ tz.transition 1920, 3, :o3, 29068937, 12
+ tz.transition 1920, 10, :o2, 19380979, 8
+ tz.transition 1921, 4, :o3, 29073389, 12
+ tz.transition 1921, 10, :o2, 19383723, 8
+ tz.transition 1922, 3, :o3, 29077673, 12
+ tz.transition 1922, 10, :o2, 19386683, 8
+ tz.transition 1924, 5, :o3, 29087021, 12
+ tz.transition 1924, 9, :o2, 19392475, 8
+ tz.transition 1925, 4, :o3, 29091257, 12
+ tz.transition 1925, 9, :o2, 19395395, 8
+ tz.transition 1940, 6, :o3, 29157725, 12
+ tz.transition 1940, 10, :o2, 19439259, 8
+ tz.transition 1940, 11, :o3, 29159573, 12
+ tz.transition 1941, 9, :o2, 19442067, 8
+ tz.transition 1942, 3, :o3, 29165405, 12
+ tz.transition 1942, 10, :o2, 19445315, 8
+ tz.transition 1945, 4, :o3, 29178569, 12
+ tz.transition 1945, 10, :o2, 19453891, 8
+ tz.transition 1946, 5, :o3, 29183669, 12
+ tz.transition 1946, 9, :o2, 19456755, 8
+ tz.transition 1947, 4, :o3, 29187545, 12
+ tz.transition 1947, 10, :o2, 19459707, 8
+ tz.transition 1948, 4, :o3, 29191913, 12
+ tz.transition 1948, 10, :o2, 19462619, 8
+ tz.transition 1949, 4, :o3, 29196197, 12
+ tz.transition 1949, 10, :o2, 19465531, 8
+ tz.transition 1950, 4, :o3, 29200685, 12
+ tz.transition 1950, 10, :o2, 19468499, 8
+ tz.transition 1951, 4, :o3, 29205101, 12
+ tz.transition 1951, 10, :o2, 19471419, 8
+ tz.transition 1962, 7, :o3, 29254325, 12
+ tz.transition 1962, 10, :o2, 19503563, 8
+ tz.transition 1964, 5, :o3, 29262365, 12
+ tz.transition 1964, 9, :o2, 19509355, 8
+ tz.transition 1970, 5, :o3, 10533600
+ tz.transition 1970, 10, :o2, 23835600
+ tz.transition 1971, 5, :o3, 41983200
+ tz.transition 1971, 10, :o2, 55285200
+ tz.transition 1972, 5, :o3, 74037600
+ tz.transition 1972, 10, :o2, 87339600
+ tz.transition 1973, 6, :o3, 107910000
+ tz.transition 1973, 11, :o2, 121219200
+ tz.transition 1974, 3, :o3, 133920000
+ tz.transition 1974, 11, :o2, 152676000
+ tz.transition 1975, 3, :o3, 165362400
+ tz.transition 1975, 10, :o2, 183502800
+ tz.transition 1976, 5, :o3, 202428000
+ tz.transition 1976, 10, :o2, 215557200
+ tz.transition 1977, 4, :o3, 228866400
+ tz.transition 1977, 10, :o2, 245797200
+ tz.transition 1978, 4, :o3, 260316000
+ tz.transition 1978, 10, :o4, 277246800
+ tz.transition 1979, 10, :o5, 308779200
+ tz.transition 1980, 4, :o4, 323827200
+ tz.transition 1980, 10, :o5, 340228800
+ tz.transition 1981, 3, :o4, 354672000
+ tz.transition 1981, 10, :o5, 371678400
+ tz.transition 1982, 3, :o4, 386121600
+ tz.transition 1982, 10, :o5, 403128000
+ tz.transition 1983, 7, :o4, 428446800
+ tz.transition 1983, 10, :o5, 433886400
+ tz.transition 1985, 4, :o3, 482792400
+ tz.transition 1985, 9, :o2, 496702800
+ tz.transition 1986, 3, :o3, 512524800
+ tz.transition 1986, 9, :o2, 528249600
+ tz.transition 1987, 3, :o3, 543974400
+ tz.transition 1987, 9, :o2, 559699200
+ tz.transition 1988, 3, :o3, 575424000
+ tz.transition 1988, 9, :o2, 591148800
+ tz.transition 1989, 3, :o3, 606873600
+ tz.transition 1989, 9, :o2, 622598400
+ tz.transition 1990, 3, :o3, 638323200
+ tz.transition 1990, 9, :o2, 654652800
+ tz.transition 1991, 3, :o3, 670374000
+ tz.transition 1991, 9, :o2, 686098800
+ tz.transition 1992, 3, :o3, 701823600
+ tz.transition 1992, 9, :o2, 717548400
+ tz.transition 1993, 3, :o3, 733273200
+ tz.transition 1993, 9, :o2, 748998000
+ tz.transition 1994, 3, :o3, 764722800
+ tz.transition 1994, 9, :o2, 780447600
+ tz.transition 1995, 3, :o3, 796172400
+ tz.transition 1995, 9, :o2, 811897200
+ tz.transition 1996, 3, :o3, 828226800
+ tz.transition 1996, 10, :o2, 846370800
+ tz.transition 1997, 3, :o3, 859676400
+ tz.transition 1997, 10, :o2, 877820400
+ tz.transition 1998, 3, :o3, 891126000
+ tz.transition 1998, 10, :o2, 909270000
+ tz.transition 1999, 3, :o3, 922575600
+ tz.transition 1999, 10, :o2, 941324400
+ tz.transition 2000, 3, :o3, 954025200
+ tz.transition 2000, 10, :o2, 972774000
+ tz.transition 2001, 3, :o3, 985474800
+ tz.transition 2001, 10, :o2, 1004223600
+ tz.transition 2002, 3, :o3, 1017529200
+ tz.transition 2002, 10, :o2, 1035673200
+ tz.transition 2003, 3, :o3, 1048978800
+ tz.transition 2003, 10, :o2, 1067122800
+ tz.transition 2004, 3, :o3, 1080428400
+ tz.transition 2004, 10, :o2, 1099177200
+ tz.transition 2005, 3, :o3, 1111878000
+ tz.transition 2005, 10, :o2, 1130626800
+ tz.transition 2006, 3, :o3, 1143327600
+ tz.transition 2006, 10, :o2, 1162076400
+ tz.transition 2007, 3, :o3, 1174784400
+ tz.transition 2007, 10, :o2, 1193533200
+ tz.transition 2008, 3, :o3, 1206838800
+ tz.transition 2008, 10, :o2, 1224982800
+ tz.transition 2009, 3, :o3, 1238288400
+ tz.transition 2009, 10, :o2, 1256432400
+ tz.transition 2010, 3, :o3, 1269738000
+ tz.transition 2010, 10, :o2, 1288486800
+ tz.transition 2011, 3, :o3, 1301187600
+ tz.transition 2011, 10, :o2, 1319936400
+ tz.transition 2012, 3, :o3, 1332637200
+ tz.transition 2012, 10, :o2, 1351386000
+ tz.transition 2013, 3, :o3, 1364691600
+ tz.transition 2013, 10, :o2, 1382835600
+ tz.transition 2014, 3, :o3, 1396141200
+ tz.transition 2014, 10, :o2, 1414285200
+ tz.transition 2015, 3, :o3, 1427590800
+ tz.transition 2015, 10, :o2, 1445734800
+ tz.transition 2016, 3, :o3, 1459040400
+ tz.transition 2016, 10, :o2, 1477789200
+ tz.transition 2017, 3, :o3, 1490490000
+ tz.transition 2017, 10, :o2, 1509238800
+ tz.transition 2018, 3, :o3, 1521939600
+ tz.transition 2018, 10, :o2, 1540688400
+ tz.transition 2019, 3, :o3, 1553994000
+ tz.transition 2019, 10, :o2, 1572138000
+ tz.transition 2020, 3, :o3, 1585443600
+ tz.transition 2020, 10, :o2, 1603587600
+ tz.transition 2021, 3, :o3, 1616893200
+ tz.transition 2021, 10, :o2, 1635642000
+ tz.transition 2022, 3, :o3, 1648342800
+ tz.transition 2022, 10, :o2, 1667091600
+ tz.transition 2023, 3, :o3, 1679792400
+ tz.transition 2023, 10, :o2, 1698541200
+ tz.transition 2024, 3, :o3, 1711846800
+ tz.transition 2024, 10, :o2, 1729990800
+ tz.transition 2025, 3, :o3, 1743296400
+ tz.transition 2025, 10, :o2, 1761440400
+ tz.transition 2026, 3, :o3, 1774746000
+ tz.transition 2026, 10, :o2, 1792890000
+ tz.transition 2027, 3, :o3, 1806195600
+ tz.transition 2027, 10, :o2, 1824944400
+ tz.transition 2028, 3, :o3, 1837645200
+ tz.transition 2028, 10, :o2, 1856394000
+ tz.transition 2029, 3, :o3, 1869094800
+ tz.transition 2029, 10, :o2, 1887843600
+ tz.transition 2030, 3, :o3, 1901149200
+ tz.transition 2030, 10, :o2, 1919293200
+ tz.transition 2031, 3, :o3, 1932598800
+ tz.transition 2031, 10, :o2, 1950742800
+ tz.transition 2032, 3, :o3, 1964048400
+ tz.transition 2032, 10, :o2, 1982797200
+ tz.transition 2033, 3, :o3, 1995498000
+ tz.transition 2033, 10, :o2, 2014246800
+ tz.transition 2034, 3, :o3, 2026947600
+ tz.transition 2034, 10, :o2, 2045696400
+ tz.transition 2035, 3, :o3, 2058397200
+ tz.transition 2035, 10, :o2, 2077146000
+ tz.transition 2036, 3, :o3, 2090451600
+ tz.transition 2036, 10, :o2, 2108595600
+ tz.transition 2037, 3, :o3, 2121901200
+ tz.transition 2037, 10, :o2, 2140045200
+ tz.transition 2038, 3, :o3, 59172253, 24
+ tz.transition 2038, 10, :o2, 59177461, 24
+ tz.transition 2039, 3, :o3, 59180989, 24
+ tz.transition 2039, 10, :o2, 59186197, 24
+ tz.transition 2040, 3, :o3, 59189725, 24
+ tz.transition 2040, 10, :o2, 59194933, 24
+ tz.transition 2041, 3, :o3, 59198629, 24
+ tz.transition 2041, 10, :o2, 59203669, 24
+ tz.transition 2042, 3, :o3, 59207365, 24
+ tz.transition 2042, 10, :o2, 59212405, 24
+ tz.transition 2043, 3, :o3, 59216101, 24
+ tz.transition 2043, 10, :o2, 59221141, 24
+ tz.transition 2044, 3, :o3, 59224837, 24
+ tz.transition 2044, 10, :o2, 59230045, 24
+ tz.transition 2045, 3, :o3, 59233573, 24
+ tz.transition 2045, 10, :o2, 59238781, 24
+ tz.transition 2046, 3, :o3, 59242309, 24
+ tz.transition 2046, 10, :o2, 59247517, 24
+ tz.transition 2047, 3, :o3, 59251213, 24
+ tz.transition 2047, 10, :o2, 59256253, 24
+ tz.transition 2048, 3, :o3, 59259949, 24
+ tz.transition 2048, 10, :o2, 59264989, 24
+ tz.transition 2049, 3, :o3, 59268685, 24
+ tz.transition 2049, 10, :o2, 59273893, 24
+ tz.transition 2050, 3, :o3, 59277421, 24
+ tz.transition 2050, 10, :o2, 59282629, 24
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Kiev.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Kiev.rb
new file mode 100644
index 000000000..513d3308b
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Kiev.rb
@@ -0,0 +1,168 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Europe
+ module Kiev
+ include TimezoneDefinition
+
+ timezone 'Europe/Kiev' do |tz|
+ tz.offset :o0, 7324, 0, :LMT
+ tz.offset :o1, 7324, 0, :KMT
+ tz.offset :o2, 7200, 0, :EET
+ tz.offset :o3, 10800, 0, :MSK
+ tz.offset :o4, 3600, 3600, :CEST
+ tz.offset :o5, 3600, 0, :CET
+ tz.offset :o6, 10800, 3600, :MSD
+ tz.offset :o7, 7200, 3600, :EEST
+
+ tz.transition 1879, 12, :o1, 52006652969, 21600
+ tz.transition 1924, 5, :o2, 52356400169, 21600
+ tz.transition 1930, 6, :o3, 29113781, 12
+ tz.transition 1941, 9, :o4, 19442059, 8
+ tz.transition 1942, 11, :o5, 58335973, 24
+ tz.transition 1943, 3, :o4, 58339501, 24
+ tz.transition 1943, 10, :o5, 58344037, 24
+ tz.transition 1943, 11, :o3, 58344827, 24
+ tz.transition 1981, 3, :o6, 354920400
+ tz.transition 1981, 9, :o3, 370728000
+ tz.transition 1982, 3, :o6, 386456400
+ tz.transition 1982, 9, :o3, 402264000
+ tz.transition 1983, 3, :o6, 417992400
+ tz.transition 1983, 9, :o3, 433800000
+ tz.transition 1984, 3, :o6, 449614800
+ tz.transition 1984, 9, :o3, 465346800
+ tz.transition 1985, 3, :o6, 481071600
+ tz.transition 1985, 9, :o3, 496796400
+ tz.transition 1986, 3, :o6, 512521200
+ tz.transition 1986, 9, :o3, 528246000
+ tz.transition 1987, 3, :o6, 543970800
+ tz.transition 1987, 9, :o3, 559695600
+ tz.transition 1988, 3, :o6, 575420400
+ tz.transition 1988, 9, :o3, 591145200
+ tz.transition 1989, 3, :o6, 606870000
+ tz.transition 1989, 9, :o3, 622594800
+ tz.transition 1990, 6, :o2, 646786800
+ tz.transition 1992, 3, :o7, 701820000
+ tz.transition 1992, 9, :o2, 717541200
+ tz.transition 1993, 3, :o7, 733269600
+ tz.transition 1993, 9, :o2, 748990800
+ tz.transition 1994, 3, :o7, 764719200
+ tz.transition 1994, 9, :o2, 780440400
+ tz.transition 1995, 3, :o7, 796179600
+ tz.transition 1995, 9, :o2, 811904400
+ tz.transition 1996, 3, :o7, 828234000
+ tz.transition 1996, 10, :o2, 846378000
+ tz.transition 1997, 3, :o7, 859683600
+ tz.transition 1997, 10, :o2, 877827600
+ tz.transition 1998, 3, :o7, 891133200
+ tz.transition 1998, 10, :o2, 909277200
+ tz.transition 1999, 3, :o7, 922582800
+ tz.transition 1999, 10, :o2, 941331600
+ tz.transition 2000, 3, :o7, 954032400
+ tz.transition 2000, 10, :o2, 972781200
+ tz.transition 2001, 3, :o7, 985482000
+ tz.transition 2001, 10, :o2, 1004230800
+ tz.transition 2002, 3, :o7, 1017536400
+ tz.transition 2002, 10, :o2, 1035680400
+ tz.transition 2003, 3, :o7, 1048986000
+ tz.transition 2003, 10, :o2, 1067130000
+ tz.transition 2004, 3, :o7, 1080435600
+ tz.transition 2004, 10, :o2, 1099184400
+ tz.transition 2005, 3, :o7, 1111885200
+ tz.transition 2005, 10, :o2, 1130634000
+ tz.transition 2006, 3, :o7, 1143334800
+ tz.transition 2006, 10, :o2, 1162083600
+ tz.transition 2007, 3, :o7, 1174784400
+ tz.transition 2007, 10, :o2, 1193533200
+ tz.transition 2008, 3, :o7, 1206838800
+ tz.transition 2008, 10, :o2, 1224982800
+ tz.transition 2009, 3, :o7, 1238288400
+ tz.transition 2009, 10, :o2, 1256432400
+ tz.transition 2010, 3, :o7, 1269738000
+ tz.transition 2010, 10, :o2, 1288486800
+ tz.transition 2011, 3, :o7, 1301187600
+ tz.transition 2011, 10, :o2, 1319936400
+ tz.transition 2012, 3, :o7, 1332637200
+ tz.transition 2012, 10, :o2, 1351386000
+ tz.transition 2013, 3, :o7, 1364691600
+ tz.transition 2013, 10, :o2, 1382835600
+ tz.transition 2014, 3, :o7, 1396141200
+ tz.transition 2014, 10, :o2, 1414285200
+ tz.transition 2015, 3, :o7, 1427590800
+ tz.transition 2015, 10, :o2, 1445734800
+ tz.transition 2016, 3, :o7, 1459040400
+ tz.transition 2016, 10, :o2, 1477789200
+ tz.transition 2017, 3, :o7, 1490490000
+ tz.transition 2017, 10, :o2, 1509238800
+ tz.transition 2018, 3, :o7, 1521939600
+ tz.transition 2018, 10, :o2, 1540688400
+ tz.transition 2019, 3, :o7, 1553994000
+ tz.transition 2019, 10, :o2, 1572138000
+ tz.transition 2020, 3, :o7, 1585443600
+ tz.transition 2020, 10, :o2, 1603587600
+ tz.transition 2021, 3, :o7, 1616893200
+ tz.transition 2021, 10, :o2, 1635642000
+ tz.transition 2022, 3, :o7, 1648342800
+ tz.transition 2022, 10, :o2, 1667091600
+ tz.transition 2023, 3, :o7, 1679792400
+ tz.transition 2023, 10, :o2, 1698541200
+ tz.transition 2024, 3, :o7, 1711846800
+ tz.transition 2024, 10, :o2, 1729990800
+ tz.transition 2025, 3, :o7, 1743296400
+ tz.transition 2025, 10, :o2, 1761440400
+ tz.transition 2026, 3, :o7, 1774746000
+ tz.transition 2026, 10, :o2, 1792890000
+ tz.transition 2027, 3, :o7, 1806195600
+ tz.transition 2027, 10, :o2, 1824944400
+ tz.transition 2028, 3, :o7, 1837645200
+ tz.transition 2028, 10, :o2, 1856394000
+ tz.transition 2029, 3, :o7, 1869094800
+ tz.transition 2029, 10, :o2, 1887843600
+ tz.transition 2030, 3, :o7, 1901149200
+ tz.transition 2030, 10, :o2, 1919293200
+ tz.transition 2031, 3, :o7, 1932598800
+ tz.transition 2031, 10, :o2, 1950742800
+ tz.transition 2032, 3, :o7, 1964048400
+ tz.transition 2032, 10, :o2, 1982797200
+ tz.transition 2033, 3, :o7, 1995498000
+ tz.transition 2033, 10, :o2, 2014246800
+ tz.transition 2034, 3, :o7, 2026947600
+ tz.transition 2034, 10, :o2, 2045696400
+ tz.transition 2035, 3, :o7, 2058397200
+ tz.transition 2035, 10, :o2, 2077146000
+ tz.transition 2036, 3, :o7, 2090451600
+ tz.transition 2036, 10, :o2, 2108595600
+ tz.transition 2037, 3, :o7, 2121901200
+ tz.transition 2037, 10, :o2, 2140045200
+ tz.transition 2038, 3, :o7, 59172253, 24
+ tz.transition 2038, 10, :o2, 59177461, 24
+ tz.transition 2039, 3, :o7, 59180989, 24
+ tz.transition 2039, 10, :o2, 59186197, 24
+ tz.transition 2040, 3, :o7, 59189725, 24
+ tz.transition 2040, 10, :o2, 59194933, 24
+ tz.transition 2041, 3, :o7, 59198629, 24
+ tz.transition 2041, 10, :o2, 59203669, 24
+ tz.transition 2042, 3, :o7, 59207365, 24
+ tz.transition 2042, 10, :o2, 59212405, 24
+ tz.transition 2043, 3, :o7, 59216101, 24
+ tz.transition 2043, 10, :o2, 59221141, 24
+ tz.transition 2044, 3, :o7, 59224837, 24
+ tz.transition 2044, 10, :o2, 59230045, 24
+ tz.transition 2045, 3, :o7, 59233573, 24
+ tz.transition 2045, 10, :o2, 59238781, 24
+ tz.transition 2046, 3, :o7, 59242309, 24
+ tz.transition 2046, 10, :o2, 59247517, 24
+ tz.transition 2047, 3, :o7, 59251213, 24
+ tz.transition 2047, 10, :o2, 59256253, 24
+ tz.transition 2048, 3, :o7, 59259949, 24
+ tz.transition 2048, 10, :o2, 59264989, 24
+ tz.transition 2049, 3, :o7, 59268685, 24
+ tz.transition 2049, 10, :o2, 59273893, 24
+ tz.transition 2050, 3, :o7, 59277421, 24
+ tz.transition 2050, 10, :o2, 59282629, 24
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Lisbon.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Lisbon.rb
new file mode 100644
index 000000000..1c6d2a3d3
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Lisbon.rb
@@ -0,0 +1,268 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Europe
+ module Lisbon
+ include TimezoneDefinition
+
+ timezone 'Europe/Lisbon' do |tz|
+ tz.offset :o0, -2192, 0, :LMT
+ tz.offset :o1, 0, 0, :WET
+ tz.offset :o2, 0, 3600, :WEST
+ tz.offset :o3, 0, 7200, :WEMT
+ tz.offset :o4, 3600, 0, :CET
+ tz.offset :o5, 3600, 3600, :CEST
+
+ tz.transition 1912, 1, :o1, 13064773637, 5400
+ tz.transition 1916, 6, :o2, 58104779, 24
+ tz.transition 1916, 11, :o1, 4842337, 2
+ tz.transition 1917, 2, :o2, 58110923, 24
+ tz.transition 1917, 10, :o1, 58116395, 24
+ tz.transition 1918, 3, :o2, 58119707, 24
+ tz.transition 1918, 10, :o1, 58125155, 24
+ tz.transition 1919, 2, :o2, 58128443, 24
+ tz.transition 1919, 10, :o1, 58133915, 24
+ tz.transition 1920, 2, :o2, 58137227, 24
+ tz.transition 1920, 10, :o1, 58142699, 24
+ tz.transition 1921, 2, :o2, 58145987, 24
+ tz.transition 1921, 10, :o1, 58151459, 24
+ tz.transition 1924, 4, :o2, 58173419, 24
+ tz.transition 1924, 10, :o1, 58177763, 24
+ tz.transition 1926, 4, :o2, 58190963, 24
+ tz.transition 1926, 10, :o1, 58194995, 24
+ tz.transition 1927, 4, :o2, 58199531, 24
+ tz.transition 1927, 10, :o1, 58203731, 24
+ tz.transition 1928, 4, :o2, 58208435, 24
+ tz.transition 1928, 10, :o1, 58212635, 24
+ tz.transition 1929, 4, :o2, 58217339, 24
+ tz.transition 1929, 10, :o1, 58221371, 24
+ tz.transition 1931, 4, :o2, 58234811, 24
+ tz.transition 1931, 10, :o1, 58238843, 24
+ tz.transition 1932, 4, :o2, 58243211, 24
+ tz.transition 1932, 10, :o1, 58247579, 24
+ tz.transition 1934, 4, :o2, 58260851, 24
+ tz.transition 1934, 10, :o1, 58265219, 24
+ tz.transition 1935, 3, :o2, 58269419, 24
+ tz.transition 1935, 10, :o1, 58273955, 24
+ tz.transition 1936, 4, :o2, 58278659, 24
+ tz.transition 1936, 10, :o1, 58282691, 24
+ tz.transition 1937, 4, :o2, 58287059, 24
+ tz.transition 1937, 10, :o1, 58291427, 24
+ tz.transition 1938, 3, :o2, 58295627, 24
+ tz.transition 1938, 10, :o1, 58300163, 24
+ tz.transition 1939, 4, :o2, 58304867, 24
+ tz.transition 1939, 11, :o1, 58310075, 24
+ tz.transition 1940, 2, :o2, 58312427, 24
+ tz.transition 1940, 10, :o1, 58317803, 24
+ tz.transition 1941, 4, :o2, 58322171, 24
+ tz.transition 1941, 10, :o1, 58326563, 24
+ tz.transition 1942, 3, :o2, 58330403, 24
+ tz.transition 1942, 4, :o3, 29165705, 12
+ tz.transition 1942, 8, :o2, 29167049, 12
+ tz.transition 1942, 10, :o1, 58335779, 24
+ tz.transition 1943, 3, :o2, 58339139, 24
+ tz.transition 1943, 4, :o3, 29169989, 12
+ tz.transition 1943, 8, :o2, 29171585, 12
+ tz.transition 1943, 10, :o1, 58344683, 24
+ tz.transition 1944, 3, :o2, 58347875, 24
+ tz.transition 1944, 4, :o3, 29174441, 12
+ tz.transition 1944, 8, :o2, 29175953, 12
+ tz.transition 1944, 10, :o1, 58353419, 24
+ tz.transition 1945, 3, :o2, 58356611, 24
+ tz.transition 1945, 4, :o3, 29178809, 12
+ tz.transition 1945, 8, :o2, 29180321, 12
+ tz.transition 1945, 10, :o1, 58362155, 24
+ tz.transition 1946, 4, :o2, 58366019, 24
+ tz.transition 1946, 10, :o1, 58370387, 24
+ tz.transition 1947, 4, :o2, 29187379, 12
+ tz.transition 1947, 10, :o1, 29189563, 12
+ tz.transition 1948, 4, :o2, 29191747, 12
+ tz.transition 1948, 10, :o1, 29193931, 12
+ tz.transition 1949, 4, :o2, 29196115, 12
+ tz.transition 1949, 10, :o1, 29198299, 12
+ tz.transition 1951, 4, :o2, 29204851, 12
+ tz.transition 1951, 10, :o1, 29207119, 12
+ tz.transition 1952, 4, :o2, 29209303, 12
+ tz.transition 1952, 10, :o1, 29211487, 12
+ tz.transition 1953, 4, :o2, 29213671, 12
+ tz.transition 1953, 10, :o1, 29215855, 12
+ tz.transition 1954, 4, :o2, 29218039, 12
+ tz.transition 1954, 10, :o1, 29220223, 12
+ tz.transition 1955, 4, :o2, 29222407, 12
+ tz.transition 1955, 10, :o1, 29224591, 12
+ tz.transition 1956, 4, :o2, 29226775, 12
+ tz.transition 1956, 10, :o1, 29229043, 12
+ tz.transition 1957, 4, :o2, 29231227, 12
+ tz.transition 1957, 10, :o1, 29233411, 12
+ tz.transition 1958, 4, :o2, 29235595, 12
+ tz.transition 1958, 10, :o1, 29237779, 12
+ tz.transition 1959, 4, :o2, 29239963, 12
+ tz.transition 1959, 10, :o1, 29242147, 12
+ tz.transition 1960, 4, :o2, 29244331, 12
+ tz.transition 1960, 10, :o1, 29246515, 12
+ tz.transition 1961, 4, :o2, 29248699, 12
+ tz.transition 1961, 10, :o1, 29250883, 12
+ tz.transition 1962, 4, :o2, 29253067, 12
+ tz.transition 1962, 10, :o1, 29255335, 12
+ tz.transition 1963, 4, :o2, 29257519, 12
+ tz.transition 1963, 10, :o1, 29259703, 12
+ tz.transition 1964, 4, :o2, 29261887, 12
+ tz.transition 1964, 10, :o1, 29264071, 12
+ tz.transition 1965, 4, :o2, 29266255, 12
+ tz.transition 1965, 10, :o1, 29268439, 12
+ tz.transition 1966, 4, :o4, 29270623, 12
+ tz.transition 1976, 9, :o1, 212544000
+ tz.transition 1977, 3, :o2, 228268800
+ tz.transition 1977, 9, :o1, 243993600
+ tz.transition 1978, 4, :o2, 260323200
+ tz.transition 1978, 10, :o1, 276048000
+ tz.transition 1979, 4, :o2, 291772800
+ tz.transition 1979, 9, :o1, 307501200
+ tz.transition 1980, 3, :o2, 323222400
+ tz.transition 1980, 9, :o1, 338950800
+ tz.transition 1981, 3, :o2, 354675600
+ tz.transition 1981, 9, :o1, 370400400
+ tz.transition 1982, 3, :o2, 386125200
+ tz.transition 1982, 9, :o1, 401850000
+ tz.transition 1983, 3, :o2, 417578400
+ tz.transition 1983, 9, :o1, 433299600
+ tz.transition 1984, 3, :o2, 449024400
+ tz.transition 1984, 9, :o1, 465354000
+ tz.transition 1985, 3, :o2, 481078800
+ tz.transition 1985, 9, :o1, 496803600
+ tz.transition 1986, 3, :o2, 512528400
+ tz.transition 1986, 9, :o1, 528253200
+ tz.transition 1987, 3, :o2, 543978000
+ tz.transition 1987, 9, :o1, 559702800
+ tz.transition 1988, 3, :o2, 575427600
+ tz.transition 1988, 9, :o1, 591152400
+ tz.transition 1989, 3, :o2, 606877200
+ tz.transition 1989, 9, :o1, 622602000
+ tz.transition 1990, 3, :o2, 638326800
+ tz.transition 1990, 9, :o1, 654656400
+ tz.transition 1991, 3, :o2, 670381200
+ tz.transition 1991, 9, :o1, 686106000
+ tz.transition 1992, 3, :o2, 701830800
+ tz.transition 1992, 9, :o4, 717555600
+ tz.transition 1993, 3, :o5, 733280400
+ tz.transition 1993, 9, :o4, 749005200
+ tz.transition 1994, 3, :o5, 764730000
+ tz.transition 1994, 9, :o4, 780454800
+ tz.transition 1995, 3, :o5, 796179600
+ tz.transition 1995, 9, :o4, 811904400
+ tz.transition 1996, 3, :o2, 828234000
+ tz.transition 1996, 10, :o1, 846378000
+ tz.transition 1997, 3, :o2, 859683600
+ tz.transition 1997, 10, :o1, 877827600
+ tz.transition 1998, 3, :o2, 891133200
+ tz.transition 1998, 10, :o1, 909277200
+ tz.transition 1999, 3, :o2, 922582800
+ tz.transition 1999, 10, :o1, 941331600
+ tz.transition 2000, 3, :o2, 954032400
+ tz.transition 2000, 10, :o1, 972781200
+ tz.transition 2001, 3, :o2, 985482000
+ tz.transition 2001, 10, :o1, 1004230800
+ tz.transition 2002, 3, :o2, 1017536400
+ tz.transition 2002, 10, :o1, 1035680400
+ tz.transition 2003, 3, :o2, 1048986000
+ tz.transition 2003, 10, :o1, 1067130000
+ tz.transition 2004, 3, :o2, 1080435600
+ tz.transition 2004, 10, :o1, 1099184400
+ tz.transition 2005, 3, :o2, 1111885200
+ tz.transition 2005, 10, :o1, 1130634000
+ tz.transition 2006, 3, :o2, 1143334800
+ tz.transition 2006, 10, :o1, 1162083600
+ tz.transition 2007, 3, :o2, 1174784400
+ tz.transition 2007, 10, :o1, 1193533200
+ tz.transition 2008, 3, :o2, 1206838800
+ tz.transition 2008, 10, :o1, 1224982800
+ tz.transition 2009, 3, :o2, 1238288400
+ tz.transition 2009, 10, :o1, 1256432400
+ tz.transition 2010, 3, :o2, 1269738000
+ tz.transition 2010, 10, :o1, 1288486800
+ tz.transition 2011, 3, :o2, 1301187600
+ tz.transition 2011, 10, :o1, 1319936400
+ tz.transition 2012, 3, :o2, 1332637200
+ tz.transition 2012, 10, :o1, 1351386000
+ tz.transition 2013, 3, :o2, 1364691600
+ tz.transition 2013, 10, :o1, 1382835600
+ tz.transition 2014, 3, :o2, 1396141200
+ tz.transition 2014, 10, :o1, 1414285200
+ tz.transition 2015, 3, :o2, 1427590800
+ tz.transition 2015, 10, :o1, 1445734800
+ tz.transition 2016, 3, :o2, 1459040400
+ tz.transition 2016, 10, :o1, 1477789200
+ tz.transition 2017, 3, :o2, 1490490000
+ tz.transition 2017, 10, :o1, 1509238800
+ tz.transition 2018, 3, :o2, 1521939600
+ tz.transition 2018, 10, :o1, 1540688400
+ tz.transition 2019, 3, :o2, 1553994000
+ tz.transition 2019, 10, :o1, 1572138000
+ tz.transition 2020, 3, :o2, 1585443600
+ tz.transition 2020, 10, :o1, 1603587600
+ tz.transition 2021, 3, :o2, 1616893200
+ tz.transition 2021, 10, :o1, 1635642000
+ tz.transition 2022, 3, :o2, 1648342800
+ tz.transition 2022, 10, :o1, 1667091600
+ tz.transition 2023, 3, :o2, 1679792400
+ tz.transition 2023, 10, :o1, 1698541200
+ tz.transition 2024, 3, :o2, 1711846800
+ tz.transition 2024, 10, :o1, 1729990800
+ tz.transition 2025, 3, :o2, 1743296400
+ tz.transition 2025, 10, :o1, 1761440400
+ tz.transition 2026, 3, :o2, 1774746000
+ tz.transition 2026, 10, :o1, 1792890000
+ tz.transition 2027, 3, :o2, 1806195600
+ tz.transition 2027, 10, :o1, 1824944400
+ tz.transition 2028, 3, :o2, 1837645200
+ tz.transition 2028, 10, :o1, 1856394000
+ tz.transition 2029, 3, :o2, 1869094800
+ tz.transition 2029, 10, :o1, 1887843600
+ tz.transition 2030, 3, :o2, 1901149200
+ tz.transition 2030, 10, :o1, 1919293200
+ tz.transition 2031, 3, :o2, 1932598800
+ tz.transition 2031, 10, :o1, 1950742800
+ tz.transition 2032, 3, :o2, 1964048400
+ tz.transition 2032, 10, :o1, 1982797200
+ tz.transition 2033, 3, :o2, 1995498000
+ tz.transition 2033, 10, :o1, 2014246800
+ tz.transition 2034, 3, :o2, 2026947600
+ tz.transition 2034, 10, :o1, 2045696400
+ tz.transition 2035, 3, :o2, 2058397200
+ tz.transition 2035, 10, :o1, 2077146000
+ tz.transition 2036, 3, :o2, 2090451600
+ tz.transition 2036, 10, :o1, 2108595600
+ tz.transition 2037, 3, :o2, 2121901200
+ tz.transition 2037, 10, :o1, 2140045200
+ tz.transition 2038, 3, :o2, 59172253, 24
+ tz.transition 2038, 10, :o1, 59177461, 24
+ tz.transition 2039, 3, :o2, 59180989, 24
+ tz.transition 2039, 10, :o1, 59186197, 24
+ tz.transition 2040, 3, :o2, 59189725, 24
+ tz.transition 2040, 10, :o1, 59194933, 24
+ tz.transition 2041, 3, :o2, 59198629, 24
+ tz.transition 2041, 10, :o1, 59203669, 24
+ tz.transition 2042, 3, :o2, 59207365, 24
+ tz.transition 2042, 10, :o1, 59212405, 24
+ tz.transition 2043, 3, :o2, 59216101, 24
+ tz.transition 2043, 10, :o1, 59221141, 24
+ tz.transition 2044, 3, :o2, 59224837, 24
+ tz.transition 2044, 10, :o1, 59230045, 24
+ tz.transition 2045, 3, :o2, 59233573, 24
+ tz.transition 2045, 10, :o1, 59238781, 24
+ tz.transition 2046, 3, :o2, 59242309, 24
+ tz.transition 2046, 10, :o1, 59247517, 24
+ tz.transition 2047, 3, :o2, 59251213, 24
+ tz.transition 2047, 10, :o1, 59256253, 24
+ tz.transition 2048, 3, :o2, 59259949, 24
+ tz.transition 2048, 10, :o1, 59264989, 24
+ tz.transition 2049, 3, :o2, 59268685, 24
+ tz.transition 2049, 10, :o1, 59273893, 24
+ tz.transition 2050, 3, :o2, 59277421, 24
+ tz.transition 2050, 10, :o1, 59282629, 24
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Ljubljana.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Ljubljana.rb
new file mode 100644
index 000000000..a9828e6ef
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Ljubljana.rb
@@ -0,0 +1,13 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Europe
+ module Ljubljana
+ include TimezoneDefinition
+
+ linked_timezone 'Europe/Ljubljana', 'Europe/Belgrade'
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/London.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/London.rb
new file mode 100644
index 000000000..64ce41e90
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/London.rb
@@ -0,0 +1,288 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Europe
+ module London
+ include TimezoneDefinition
+
+ timezone 'Europe/London' do |tz|
+ tz.offset :o0, -75, 0, :LMT
+ tz.offset :o1, 0, 0, :GMT
+ tz.offset :o2, 0, 3600, :BST
+ tz.offset :o3, 0, 7200, :BDST
+ tz.offset :o4, 3600, 0, :BST
+
+ tz.transition 1847, 12, :o1, 2760187969, 1152
+ tz.transition 1916, 5, :o2, 29052055, 12
+ tz.transition 1916, 10, :o1, 29053651, 12
+ tz.transition 1917, 4, :o2, 29055919, 12
+ tz.transition 1917, 9, :o1, 29057863, 12
+ tz.transition 1918, 3, :o2, 29060119, 12
+ tz.transition 1918, 9, :o1, 29062399, 12
+ tz.transition 1919, 3, :o2, 29064571, 12
+ tz.transition 1919, 9, :o1, 29066767, 12
+ tz.transition 1920, 3, :o2, 29068939, 12
+ tz.transition 1920, 10, :o1, 29071471, 12
+ tz.transition 1921, 4, :o2, 29073391, 12
+ tz.transition 1921, 10, :o1, 29075587, 12
+ tz.transition 1922, 3, :o2, 29077675, 12
+ tz.transition 1922, 10, :o1, 29080027, 12
+ tz.transition 1923, 4, :o2, 29082379, 12
+ tz.transition 1923, 9, :o1, 29084143, 12
+ tz.transition 1924, 4, :o2, 29086663, 12
+ tz.transition 1924, 9, :o1, 29088595, 12
+ tz.transition 1925, 4, :o2, 29091115, 12
+ tz.transition 1925, 10, :o1, 29093131, 12
+ tz.transition 1926, 4, :o2, 29095483, 12
+ tz.transition 1926, 10, :o1, 29097499, 12
+ tz.transition 1927, 4, :o2, 29099767, 12
+ tz.transition 1927, 10, :o1, 29101867, 12
+ tz.transition 1928, 4, :o2, 29104303, 12
+ tz.transition 1928, 10, :o1, 29106319, 12
+ tz.transition 1929, 4, :o2, 29108671, 12
+ tz.transition 1929, 10, :o1, 29110687, 12
+ tz.transition 1930, 4, :o2, 29112955, 12
+ tz.transition 1930, 10, :o1, 29115055, 12
+ tz.transition 1931, 4, :o2, 29117407, 12
+ tz.transition 1931, 10, :o1, 29119423, 12
+ tz.transition 1932, 4, :o2, 29121775, 12
+ tz.transition 1932, 10, :o1, 29123791, 12
+ tz.transition 1933, 4, :o2, 29126059, 12
+ tz.transition 1933, 10, :o1, 29128243, 12
+ tz.transition 1934, 4, :o2, 29130595, 12
+ tz.transition 1934, 10, :o1, 29132611, 12
+ tz.transition 1935, 4, :o2, 29134879, 12
+ tz.transition 1935, 10, :o1, 29136979, 12
+ tz.transition 1936, 4, :o2, 29139331, 12
+ tz.transition 1936, 10, :o1, 29141347, 12
+ tz.transition 1937, 4, :o2, 29143699, 12
+ tz.transition 1937, 10, :o1, 29145715, 12
+ tz.transition 1938, 4, :o2, 29147983, 12
+ tz.transition 1938, 10, :o1, 29150083, 12
+ tz.transition 1939, 4, :o2, 29152435, 12
+ tz.transition 1939, 11, :o1, 29155039, 12
+ tz.transition 1940, 2, :o2, 29156215, 12
+ tz.transition 1941, 5, :o3, 58322845, 24
+ tz.transition 1941, 8, :o2, 58325197, 24
+ tz.transition 1942, 4, :o3, 58330909, 24
+ tz.transition 1942, 8, :o2, 58333933, 24
+ tz.transition 1943, 4, :o3, 58339645, 24
+ tz.transition 1943, 8, :o2, 58342837, 24
+ tz.transition 1944, 4, :o3, 58348381, 24
+ tz.transition 1944, 9, :o2, 58352413, 24
+ tz.transition 1945, 4, :o3, 58357141, 24
+ tz.transition 1945, 7, :o2, 58359637, 24
+ tz.transition 1945, 10, :o1, 29180827, 12
+ tz.transition 1946, 4, :o2, 29183095, 12
+ tz.transition 1946, 10, :o1, 29185195, 12
+ tz.transition 1947, 3, :o2, 29187127, 12
+ tz.transition 1947, 4, :o3, 58374925, 24
+ tz.transition 1947, 8, :o2, 58377781, 24
+ tz.transition 1947, 11, :o1, 29189899, 12
+ tz.transition 1948, 3, :o2, 29191495, 12
+ tz.transition 1948, 10, :o1, 29194267, 12
+ tz.transition 1949, 4, :o2, 29196115, 12
+ tz.transition 1949, 10, :o1, 29198635, 12
+ tz.transition 1950, 4, :o2, 29200651, 12
+ tz.transition 1950, 10, :o1, 29202919, 12
+ tz.transition 1951, 4, :o2, 29205019, 12
+ tz.transition 1951, 10, :o1, 29207287, 12
+ tz.transition 1952, 4, :o2, 29209471, 12
+ tz.transition 1952, 10, :o1, 29211739, 12
+ tz.transition 1953, 4, :o2, 29213839, 12
+ tz.transition 1953, 10, :o1, 29215855, 12
+ tz.transition 1954, 4, :o2, 29218123, 12
+ tz.transition 1954, 10, :o1, 29220223, 12
+ tz.transition 1955, 4, :o2, 29222575, 12
+ tz.transition 1955, 10, :o1, 29224591, 12
+ tz.transition 1956, 4, :o2, 29227027, 12
+ tz.transition 1956, 10, :o1, 29229043, 12
+ tz.transition 1957, 4, :o2, 29231311, 12
+ tz.transition 1957, 10, :o1, 29233411, 12
+ tz.transition 1958, 4, :o2, 29235763, 12
+ tz.transition 1958, 10, :o1, 29237779, 12
+ tz.transition 1959, 4, :o2, 29240131, 12
+ tz.transition 1959, 10, :o1, 29242147, 12
+ tz.transition 1960, 4, :o2, 29244415, 12
+ tz.transition 1960, 10, :o1, 29246515, 12
+ tz.transition 1961, 3, :o2, 29248615, 12
+ tz.transition 1961, 10, :o1, 29251219, 12
+ tz.transition 1962, 3, :o2, 29252983, 12
+ tz.transition 1962, 10, :o1, 29255587, 12
+ tz.transition 1963, 3, :o2, 29257435, 12
+ tz.transition 1963, 10, :o1, 29259955, 12
+ tz.transition 1964, 3, :o2, 29261719, 12
+ tz.transition 1964, 10, :o1, 29264323, 12
+ tz.transition 1965, 3, :o2, 29266087, 12
+ tz.transition 1965, 10, :o1, 29268691, 12
+ tz.transition 1966, 3, :o2, 29270455, 12
+ tz.transition 1966, 10, :o1, 29273059, 12
+ tz.transition 1967, 3, :o2, 29274823, 12
+ tz.transition 1967, 10, :o1, 29277511, 12
+ tz.transition 1968, 2, :o2, 29278855, 12
+ tz.transition 1968, 10, :o4, 58563755, 24
+ tz.transition 1971, 10, :o1, 57722400
+ tz.transition 1972, 3, :o2, 69818400
+ tz.transition 1972, 10, :o1, 89172000
+ tz.transition 1973, 3, :o2, 101268000
+ tz.transition 1973, 10, :o1, 120621600
+ tz.transition 1974, 3, :o2, 132717600
+ tz.transition 1974, 10, :o1, 152071200
+ tz.transition 1975, 3, :o2, 164167200
+ tz.transition 1975, 10, :o1, 183520800
+ tz.transition 1976, 3, :o2, 196221600
+ tz.transition 1976, 10, :o1, 214970400
+ tz.transition 1977, 3, :o2, 227671200
+ tz.transition 1977, 10, :o1, 246420000
+ tz.transition 1978, 3, :o2, 259120800
+ tz.transition 1978, 10, :o1, 278474400
+ tz.transition 1979, 3, :o2, 290570400
+ tz.transition 1979, 10, :o1, 309924000
+ tz.transition 1980, 3, :o2, 322020000
+ tz.transition 1980, 10, :o1, 341373600
+ tz.transition 1981, 3, :o2, 354675600
+ tz.transition 1981, 10, :o1, 372819600
+ tz.transition 1982, 3, :o2, 386125200
+ tz.transition 1982, 10, :o1, 404269200
+ tz.transition 1983, 3, :o2, 417574800
+ tz.transition 1983, 10, :o1, 435718800
+ tz.transition 1984, 3, :o2, 449024400
+ tz.transition 1984, 10, :o1, 467773200
+ tz.transition 1985, 3, :o2, 481078800
+ tz.transition 1985, 10, :o1, 499222800
+ tz.transition 1986, 3, :o2, 512528400
+ tz.transition 1986, 10, :o1, 530672400
+ tz.transition 1987, 3, :o2, 543978000
+ tz.transition 1987, 10, :o1, 562122000
+ tz.transition 1988, 3, :o2, 575427600
+ tz.transition 1988, 10, :o1, 593571600
+ tz.transition 1989, 3, :o2, 606877200
+ tz.transition 1989, 10, :o1, 625626000
+ tz.transition 1990, 3, :o2, 638326800
+ tz.transition 1990, 10, :o1, 657075600
+ tz.transition 1991, 3, :o2, 670381200
+ tz.transition 1991, 10, :o1, 688525200
+ tz.transition 1992, 3, :o2, 701830800
+ tz.transition 1992, 10, :o1, 719974800
+ tz.transition 1993, 3, :o2, 733280400
+ tz.transition 1993, 10, :o1, 751424400
+ tz.transition 1994, 3, :o2, 764730000
+ tz.transition 1994, 10, :o1, 782874000
+ tz.transition 1995, 3, :o2, 796179600
+ tz.transition 1995, 10, :o1, 814323600
+ tz.transition 1996, 3, :o2, 828234000
+ tz.transition 1996, 10, :o1, 846378000
+ tz.transition 1997, 3, :o2, 859683600
+ tz.transition 1997, 10, :o1, 877827600
+ tz.transition 1998, 3, :o2, 891133200
+ tz.transition 1998, 10, :o1, 909277200
+ tz.transition 1999, 3, :o2, 922582800
+ tz.transition 1999, 10, :o1, 941331600
+ tz.transition 2000, 3, :o2, 954032400
+ tz.transition 2000, 10, :o1, 972781200
+ tz.transition 2001, 3, :o2, 985482000
+ tz.transition 2001, 10, :o1, 1004230800
+ tz.transition 2002, 3, :o2, 1017536400
+ tz.transition 2002, 10, :o1, 1035680400
+ tz.transition 2003, 3, :o2, 1048986000
+ tz.transition 2003, 10, :o1, 1067130000
+ tz.transition 2004, 3, :o2, 1080435600
+ tz.transition 2004, 10, :o1, 1099184400
+ tz.transition 2005, 3, :o2, 1111885200
+ tz.transition 2005, 10, :o1, 1130634000
+ tz.transition 2006, 3, :o2, 1143334800
+ tz.transition 2006, 10, :o1, 1162083600
+ tz.transition 2007, 3, :o2, 1174784400
+ tz.transition 2007, 10, :o1, 1193533200
+ tz.transition 2008, 3, :o2, 1206838800
+ tz.transition 2008, 10, :o1, 1224982800
+ tz.transition 2009, 3, :o2, 1238288400
+ tz.transition 2009, 10, :o1, 1256432400
+ tz.transition 2010, 3, :o2, 1269738000
+ tz.transition 2010, 10, :o1, 1288486800
+ tz.transition 2011, 3, :o2, 1301187600
+ tz.transition 2011, 10, :o1, 1319936400
+ tz.transition 2012, 3, :o2, 1332637200
+ tz.transition 2012, 10, :o1, 1351386000
+ tz.transition 2013, 3, :o2, 1364691600
+ tz.transition 2013, 10, :o1, 1382835600
+ tz.transition 2014, 3, :o2, 1396141200
+ tz.transition 2014, 10, :o1, 1414285200
+ tz.transition 2015, 3, :o2, 1427590800
+ tz.transition 2015, 10, :o1, 1445734800
+ tz.transition 2016, 3, :o2, 1459040400
+ tz.transition 2016, 10, :o1, 1477789200
+ tz.transition 2017, 3, :o2, 1490490000
+ tz.transition 2017, 10, :o1, 1509238800
+ tz.transition 2018, 3, :o2, 1521939600
+ tz.transition 2018, 10, :o1, 1540688400
+ tz.transition 2019, 3, :o2, 1553994000
+ tz.transition 2019, 10, :o1, 1572138000
+ tz.transition 2020, 3, :o2, 1585443600
+ tz.transition 2020, 10, :o1, 1603587600
+ tz.transition 2021, 3, :o2, 1616893200
+ tz.transition 2021, 10, :o1, 1635642000
+ tz.transition 2022, 3, :o2, 1648342800
+ tz.transition 2022, 10, :o1, 1667091600
+ tz.transition 2023, 3, :o2, 1679792400
+ tz.transition 2023, 10, :o1, 1698541200
+ tz.transition 2024, 3, :o2, 1711846800
+ tz.transition 2024, 10, :o1, 1729990800
+ tz.transition 2025, 3, :o2, 1743296400
+ tz.transition 2025, 10, :o1, 1761440400
+ tz.transition 2026, 3, :o2, 1774746000
+ tz.transition 2026, 10, :o1, 1792890000
+ tz.transition 2027, 3, :o2, 1806195600
+ tz.transition 2027, 10, :o1, 1824944400
+ tz.transition 2028, 3, :o2, 1837645200
+ tz.transition 2028, 10, :o1, 1856394000
+ tz.transition 2029, 3, :o2, 1869094800
+ tz.transition 2029, 10, :o1, 1887843600
+ tz.transition 2030, 3, :o2, 1901149200
+ tz.transition 2030, 10, :o1, 1919293200
+ tz.transition 2031, 3, :o2, 1932598800
+ tz.transition 2031, 10, :o1, 1950742800
+ tz.transition 2032, 3, :o2, 1964048400
+ tz.transition 2032, 10, :o1, 1982797200
+ tz.transition 2033, 3, :o2, 1995498000
+ tz.transition 2033, 10, :o1, 2014246800
+ tz.transition 2034, 3, :o2, 2026947600
+ tz.transition 2034, 10, :o1, 2045696400
+ tz.transition 2035, 3, :o2, 2058397200
+ tz.transition 2035, 10, :o1, 2077146000
+ tz.transition 2036, 3, :o2, 2090451600
+ tz.transition 2036, 10, :o1, 2108595600
+ tz.transition 2037, 3, :o2, 2121901200
+ tz.transition 2037, 10, :o1, 2140045200
+ tz.transition 2038, 3, :o2, 59172253, 24
+ tz.transition 2038, 10, :o1, 59177461, 24
+ tz.transition 2039, 3, :o2, 59180989, 24
+ tz.transition 2039, 10, :o1, 59186197, 24
+ tz.transition 2040, 3, :o2, 59189725, 24
+ tz.transition 2040, 10, :o1, 59194933, 24
+ tz.transition 2041, 3, :o2, 59198629, 24
+ tz.transition 2041, 10, :o1, 59203669, 24
+ tz.transition 2042, 3, :o2, 59207365, 24
+ tz.transition 2042, 10, :o1, 59212405, 24
+ tz.transition 2043, 3, :o2, 59216101, 24
+ tz.transition 2043, 10, :o1, 59221141, 24
+ tz.transition 2044, 3, :o2, 59224837, 24
+ tz.transition 2044, 10, :o1, 59230045, 24
+ tz.transition 2045, 3, :o2, 59233573, 24
+ tz.transition 2045, 10, :o1, 59238781, 24
+ tz.transition 2046, 3, :o2, 59242309, 24
+ tz.transition 2046, 10, :o1, 59247517, 24
+ tz.transition 2047, 3, :o2, 59251213, 24
+ tz.transition 2047, 10, :o1, 59256253, 24
+ tz.transition 2048, 3, :o2, 59259949, 24
+ tz.transition 2048, 10, :o1, 59264989, 24
+ tz.transition 2049, 3, :o2, 59268685, 24
+ tz.transition 2049, 10, :o1, 59273893, 24
+ tz.transition 2050, 3, :o2, 59277421, 24
+ tz.transition 2050, 10, :o1, 59282629, 24
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Madrid.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Madrid.rb
new file mode 100644
index 000000000..1fb568239
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Madrid.rb
@@ -0,0 +1,211 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Europe
+ module Madrid
+ include TimezoneDefinition
+
+ timezone 'Europe/Madrid' do |tz|
+ tz.offset :o0, -884, 0, :LMT
+ tz.offset :o1, 0, 0, :WET
+ tz.offset :o2, 0, 3600, :WEST
+ tz.offset :o3, 0, 7200, :WEMT
+ tz.offset :o4, 3600, 0, :CET
+ tz.offset :o5, 3600, 3600, :CEST
+
+ tz.transition 1901, 1, :o1, 52172327021, 21600
+ tz.transition 1917, 5, :o2, 58112507, 24
+ tz.transition 1917, 10, :o1, 58116203, 24
+ tz.transition 1918, 4, :o2, 58120787, 24
+ tz.transition 1918, 10, :o1, 58124963, 24
+ tz.transition 1919, 4, :o2, 58129307, 24
+ tz.transition 1919, 10, :o1, 58133723, 24
+ tz.transition 1924, 4, :o2, 58173419, 24
+ tz.transition 1924, 10, :o1, 58177523, 24
+ tz.transition 1926, 4, :o2, 58190963, 24
+ tz.transition 1926, 10, :o1, 58194995, 24
+ tz.transition 1927, 4, :o2, 58199531, 24
+ tz.transition 1927, 10, :o1, 58203731, 24
+ tz.transition 1928, 4, :o2, 58208435, 24
+ tz.transition 1928, 10, :o1, 58212635, 24
+ tz.transition 1929, 4, :o2, 58217339, 24
+ tz.transition 1929, 10, :o1, 58221371, 24
+ tz.transition 1937, 5, :o2, 58288235, 24
+ tz.transition 1937, 10, :o1, 58291427, 24
+ tz.transition 1938, 3, :o2, 58295531, 24
+ tz.transition 1938, 10, :o1, 58300163, 24
+ tz.transition 1939, 4, :o2, 58304867, 24
+ tz.transition 1939, 10, :o1, 58309067, 24
+ tz.transition 1940, 3, :o2, 58312931, 24
+ tz.transition 1942, 5, :o3, 29165789, 12
+ tz.transition 1942, 9, :o2, 29167253, 12
+ tz.transition 1943, 4, :o3, 29169989, 12
+ tz.transition 1943, 10, :o2, 29172017, 12
+ tz.transition 1944, 4, :o3, 29174357, 12
+ tz.transition 1944, 10, :o2, 29176493, 12
+ tz.transition 1945, 4, :o3, 29178725, 12
+ tz.transition 1945, 9, :o2, 58361483, 24
+ tz.transition 1946, 4, :o3, 29183093, 12
+ tz.transition 1946, 9, :o4, 29185121, 12
+ tz.transition 1949, 4, :o5, 29196449, 12
+ tz.transition 1949, 9, :o4, 58396547, 24
+ tz.transition 1974, 4, :o5, 135122400
+ tz.transition 1974, 10, :o4, 150246000
+ tz.transition 1975, 4, :o5, 167176800
+ tz.transition 1975, 10, :o4, 181695600
+ tz.transition 1976, 3, :o5, 196812000
+ tz.transition 1976, 9, :o4, 212540400
+ tz.transition 1977, 4, :o5, 228866400
+ tz.transition 1977, 9, :o4, 243990000
+ tz.transition 1978, 4, :o5, 260402400
+ tz.transition 1978, 9, :o4, 276044400
+ tz.transition 1979, 4, :o5, 291776400
+ tz.transition 1979, 9, :o4, 307501200
+ tz.transition 1980, 4, :o5, 323830800
+ tz.transition 1980, 9, :o4, 338950800
+ tz.transition 1981, 3, :o5, 354675600
+ tz.transition 1981, 9, :o4, 370400400
+ tz.transition 1982, 3, :o5, 386125200
+ tz.transition 1982, 9, :o4, 401850000
+ tz.transition 1983, 3, :o5, 417574800
+ tz.transition 1983, 9, :o4, 433299600
+ tz.transition 1984, 3, :o5, 449024400
+ tz.transition 1984, 9, :o4, 465354000
+ tz.transition 1985, 3, :o5, 481078800
+ tz.transition 1985, 9, :o4, 496803600
+ tz.transition 1986, 3, :o5, 512528400
+ tz.transition 1986, 9, :o4, 528253200
+ tz.transition 1987, 3, :o5, 543978000
+ tz.transition 1987, 9, :o4, 559702800
+ tz.transition 1988, 3, :o5, 575427600
+ tz.transition 1988, 9, :o4, 591152400
+ tz.transition 1989, 3, :o5, 606877200
+ tz.transition 1989, 9, :o4, 622602000
+ tz.transition 1990, 3, :o5, 638326800
+ tz.transition 1990, 9, :o4, 654656400
+ tz.transition 1991, 3, :o5, 670381200
+ tz.transition 1991, 9, :o4, 686106000
+ tz.transition 1992, 3, :o5, 701830800
+ tz.transition 1992, 9, :o4, 717555600
+ tz.transition 1993, 3, :o5, 733280400
+ tz.transition 1993, 9, :o4, 749005200
+ tz.transition 1994, 3, :o5, 764730000
+ tz.transition 1994, 9, :o4, 780454800
+ tz.transition 1995, 3, :o5, 796179600
+ tz.transition 1995, 9, :o4, 811904400
+ tz.transition 1996, 3, :o5, 828234000
+ tz.transition 1996, 10, :o4, 846378000
+ tz.transition 1997, 3, :o5, 859683600
+ tz.transition 1997, 10, :o4, 877827600
+ tz.transition 1998, 3, :o5, 891133200
+ tz.transition 1998, 10, :o4, 909277200
+ tz.transition 1999, 3, :o5, 922582800
+ tz.transition 1999, 10, :o4, 941331600
+ tz.transition 2000, 3, :o5, 954032400
+ tz.transition 2000, 10, :o4, 972781200
+ tz.transition 2001, 3, :o5, 985482000
+ tz.transition 2001, 10, :o4, 1004230800
+ tz.transition 2002, 3, :o5, 1017536400
+ tz.transition 2002, 10, :o4, 1035680400
+ tz.transition 2003, 3, :o5, 1048986000
+ tz.transition 2003, 10, :o4, 1067130000
+ tz.transition 2004, 3, :o5, 1080435600
+ tz.transition 2004, 10, :o4, 1099184400
+ tz.transition 2005, 3, :o5, 1111885200
+ tz.transition 2005, 10, :o4, 1130634000
+ tz.transition 2006, 3, :o5, 1143334800
+ tz.transition 2006, 10, :o4, 1162083600
+ tz.transition 2007, 3, :o5, 1174784400
+ tz.transition 2007, 10, :o4, 1193533200
+ tz.transition 2008, 3, :o5, 1206838800
+ tz.transition 2008, 10, :o4, 1224982800
+ tz.transition 2009, 3, :o5, 1238288400
+ tz.transition 2009, 10, :o4, 1256432400
+ tz.transition 2010, 3, :o5, 1269738000
+ tz.transition 2010, 10, :o4, 1288486800
+ tz.transition 2011, 3, :o5, 1301187600
+ tz.transition 2011, 10, :o4, 1319936400
+ tz.transition 2012, 3, :o5, 1332637200
+ tz.transition 2012, 10, :o4, 1351386000
+ tz.transition 2013, 3, :o5, 1364691600
+ tz.transition 2013, 10, :o4, 1382835600
+ tz.transition 2014, 3, :o5, 1396141200
+ tz.transition 2014, 10, :o4, 1414285200
+ tz.transition 2015, 3, :o5, 1427590800
+ tz.transition 2015, 10, :o4, 1445734800
+ tz.transition 2016, 3, :o5, 1459040400
+ tz.transition 2016, 10, :o4, 1477789200
+ tz.transition 2017, 3, :o5, 1490490000
+ tz.transition 2017, 10, :o4, 1509238800
+ tz.transition 2018, 3, :o5, 1521939600
+ tz.transition 2018, 10, :o4, 1540688400
+ tz.transition 2019, 3, :o5, 1553994000
+ tz.transition 2019, 10, :o4, 1572138000
+ tz.transition 2020, 3, :o5, 1585443600
+ tz.transition 2020, 10, :o4, 1603587600
+ tz.transition 2021, 3, :o5, 1616893200
+ tz.transition 2021, 10, :o4, 1635642000
+ tz.transition 2022, 3, :o5, 1648342800
+ tz.transition 2022, 10, :o4, 1667091600
+ tz.transition 2023, 3, :o5, 1679792400
+ tz.transition 2023, 10, :o4, 1698541200
+ tz.transition 2024, 3, :o5, 1711846800
+ tz.transition 2024, 10, :o4, 1729990800
+ tz.transition 2025, 3, :o5, 1743296400
+ tz.transition 2025, 10, :o4, 1761440400
+ tz.transition 2026, 3, :o5, 1774746000
+ tz.transition 2026, 10, :o4, 1792890000
+ tz.transition 2027, 3, :o5, 1806195600
+ tz.transition 2027, 10, :o4, 1824944400
+ tz.transition 2028, 3, :o5, 1837645200
+ tz.transition 2028, 10, :o4, 1856394000
+ tz.transition 2029, 3, :o5, 1869094800
+ tz.transition 2029, 10, :o4, 1887843600
+ tz.transition 2030, 3, :o5, 1901149200
+ tz.transition 2030, 10, :o4, 1919293200
+ tz.transition 2031, 3, :o5, 1932598800
+ tz.transition 2031, 10, :o4, 1950742800
+ tz.transition 2032, 3, :o5, 1964048400
+ tz.transition 2032, 10, :o4, 1982797200
+ tz.transition 2033, 3, :o5, 1995498000
+ tz.transition 2033, 10, :o4, 2014246800
+ tz.transition 2034, 3, :o5, 2026947600
+ tz.transition 2034, 10, :o4, 2045696400
+ tz.transition 2035, 3, :o5, 2058397200
+ tz.transition 2035, 10, :o4, 2077146000
+ tz.transition 2036, 3, :o5, 2090451600
+ tz.transition 2036, 10, :o4, 2108595600
+ tz.transition 2037, 3, :o5, 2121901200
+ tz.transition 2037, 10, :o4, 2140045200
+ tz.transition 2038, 3, :o5, 59172253, 24
+ tz.transition 2038, 10, :o4, 59177461, 24
+ tz.transition 2039, 3, :o5, 59180989, 24
+ tz.transition 2039, 10, :o4, 59186197, 24
+ tz.transition 2040, 3, :o5, 59189725, 24
+ tz.transition 2040, 10, :o4, 59194933, 24
+ tz.transition 2041, 3, :o5, 59198629, 24
+ tz.transition 2041, 10, :o4, 59203669, 24
+ tz.transition 2042, 3, :o5, 59207365, 24
+ tz.transition 2042, 10, :o4, 59212405, 24
+ tz.transition 2043, 3, :o5, 59216101, 24
+ tz.transition 2043, 10, :o4, 59221141, 24
+ tz.transition 2044, 3, :o5, 59224837, 24
+ tz.transition 2044, 10, :o4, 59230045, 24
+ tz.transition 2045, 3, :o5, 59233573, 24
+ tz.transition 2045, 10, :o4, 59238781, 24
+ tz.transition 2046, 3, :o5, 59242309, 24
+ tz.transition 2046, 10, :o4, 59247517, 24
+ tz.transition 2047, 3, :o5, 59251213, 24
+ tz.transition 2047, 10, :o4, 59256253, 24
+ tz.transition 2048, 3, :o5, 59259949, 24
+ tz.transition 2048, 10, :o4, 59264989, 24
+ tz.transition 2049, 3, :o5, 59268685, 24
+ tz.transition 2049, 10, :o4, 59273893, 24
+ tz.transition 2050, 3, :o5, 59277421, 24
+ tz.transition 2050, 10, :o4, 59282629, 24
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Minsk.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Minsk.rb
new file mode 100644
index 000000000..fa15816cc
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Minsk.rb
@@ -0,0 +1,170 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Europe
+ module Minsk
+ include TimezoneDefinition
+
+ timezone 'Europe/Minsk' do |tz|
+ tz.offset :o0, 6616, 0, :LMT
+ tz.offset :o1, 6600, 0, :MMT
+ tz.offset :o2, 7200, 0, :EET
+ tz.offset :o3, 10800, 0, :MSK
+ tz.offset :o4, 3600, 3600, :CEST
+ tz.offset :o5, 3600, 0, :CET
+ tz.offset :o6, 10800, 3600, :MSD
+ tz.offset :o7, 7200, 3600, :EEST
+
+ tz.transition 1879, 12, :o1, 26003326573, 10800
+ tz.transition 1924, 5, :o2, 349042669, 144
+ tz.transition 1930, 6, :o3, 29113781, 12
+ tz.transition 1941, 6, :o4, 19441387, 8
+ tz.transition 1942, 11, :o5, 58335973, 24
+ tz.transition 1943, 3, :o4, 58339501, 24
+ tz.transition 1943, 10, :o5, 58344037, 24
+ tz.transition 1944, 4, :o4, 58348405, 24
+ tz.transition 1944, 7, :o3, 29175293, 12
+ tz.transition 1981, 3, :o6, 354920400
+ tz.transition 1981, 9, :o3, 370728000
+ tz.transition 1982, 3, :o6, 386456400
+ tz.transition 1982, 9, :o3, 402264000
+ tz.transition 1983, 3, :o6, 417992400
+ tz.transition 1983, 9, :o3, 433800000
+ tz.transition 1984, 3, :o6, 449614800
+ tz.transition 1984, 9, :o3, 465346800
+ tz.transition 1985, 3, :o6, 481071600
+ tz.transition 1985, 9, :o3, 496796400
+ tz.transition 1986, 3, :o6, 512521200
+ tz.transition 1986, 9, :o3, 528246000
+ tz.transition 1987, 3, :o6, 543970800
+ tz.transition 1987, 9, :o3, 559695600
+ tz.transition 1988, 3, :o6, 575420400
+ tz.transition 1988, 9, :o3, 591145200
+ tz.transition 1989, 3, :o6, 606870000
+ tz.transition 1989, 9, :o3, 622594800
+ tz.transition 1991, 3, :o7, 670374000
+ tz.transition 1991, 9, :o2, 686102400
+ tz.transition 1992, 3, :o7, 701820000
+ tz.transition 1992, 9, :o2, 717544800
+ tz.transition 1993, 3, :o7, 733276800
+ tz.transition 1993, 9, :o2, 749001600
+ tz.transition 1994, 3, :o7, 764726400
+ tz.transition 1994, 9, :o2, 780451200
+ tz.transition 1995, 3, :o7, 796176000
+ tz.transition 1995, 9, :o2, 811900800
+ tz.transition 1996, 3, :o7, 828230400
+ tz.transition 1996, 10, :o2, 846374400
+ tz.transition 1997, 3, :o7, 859680000
+ tz.transition 1997, 10, :o2, 877824000
+ tz.transition 1998, 3, :o7, 891129600
+ tz.transition 1998, 10, :o2, 909273600
+ tz.transition 1999, 3, :o7, 922579200
+ tz.transition 1999, 10, :o2, 941328000
+ tz.transition 2000, 3, :o7, 954028800
+ tz.transition 2000, 10, :o2, 972777600
+ tz.transition 2001, 3, :o7, 985478400
+ tz.transition 2001, 10, :o2, 1004227200
+ tz.transition 2002, 3, :o7, 1017532800
+ tz.transition 2002, 10, :o2, 1035676800
+ tz.transition 2003, 3, :o7, 1048982400
+ tz.transition 2003, 10, :o2, 1067126400
+ tz.transition 2004, 3, :o7, 1080432000
+ tz.transition 2004, 10, :o2, 1099180800
+ tz.transition 2005, 3, :o7, 1111881600
+ tz.transition 2005, 10, :o2, 1130630400
+ tz.transition 2006, 3, :o7, 1143331200
+ tz.transition 2006, 10, :o2, 1162080000
+ tz.transition 2007, 3, :o7, 1174780800
+ tz.transition 2007, 10, :o2, 1193529600
+ tz.transition 2008, 3, :o7, 1206835200
+ tz.transition 2008, 10, :o2, 1224979200
+ tz.transition 2009, 3, :o7, 1238284800
+ tz.transition 2009, 10, :o2, 1256428800
+ tz.transition 2010, 3, :o7, 1269734400
+ tz.transition 2010, 10, :o2, 1288483200
+ tz.transition 2011, 3, :o7, 1301184000
+ tz.transition 2011, 10, :o2, 1319932800
+ tz.transition 2012, 3, :o7, 1332633600
+ tz.transition 2012, 10, :o2, 1351382400
+ tz.transition 2013, 3, :o7, 1364688000
+ tz.transition 2013, 10, :o2, 1382832000
+ tz.transition 2014, 3, :o7, 1396137600
+ tz.transition 2014, 10, :o2, 1414281600
+ tz.transition 2015, 3, :o7, 1427587200
+ tz.transition 2015, 10, :o2, 1445731200
+ tz.transition 2016, 3, :o7, 1459036800
+ tz.transition 2016, 10, :o2, 1477785600
+ tz.transition 2017, 3, :o7, 1490486400
+ tz.transition 2017, 10, :o2, 1509235200
+ tz.transition 2018, 3, :o7, 1521936000
+ tz.transition 2018, 10, :o2, 1540684800
+ tz.transition 2019, 3, :o7, 1553990400
+ tz.transition 2019, 10, :o2, 1572134400
+ tz.transition 2020, 3, :o7, 1585440000
+ tz.transition 2020, 10, :o2, 1603584000
+ tz.transition 2021, 3, :o7, 1616889600
+ tz.transition 2021, 10, :o2, 1635638400
+ tz.transition 2022, 3, :o7, 1648339200
+ tz.transition 2022, 10, :o2, 1667088000
+ tz.transition 2023, 3, :o7, 1679788800
+ tz.transition 2023, 10, :o2, 1698537600
+ tz.transition 2024, 3, :o7, 1711843200
+ tz.transition 2024, 10, :o2, 1729987200
+ tz.transition 2025, 3, :o7, 1743292800
+ tz.transition 2025, 10, :o2, 1761436800
+ tz.transition 2026, 3, :o7, 1774742400
+ tz.transition 2026, 10, :o2, 1792886400
+ tz.transition 2027, 3, :o7, 1806192000
+ tz.transition 2027, 10, :o2, 1824940800
+ tz.transition 2028, 3, :o7, 1837641600
+ tz.transition 2028, 10, :o2, 1856390400
+ tz.transition 2029, 3, :o7, 1869091200
+ tz.transition 2029, 10, :o2, 1887840000
+ tz.transition 2030, 3, :o7, 1901145600
+ tz.transition 2030, 10, :o2, 1919289600
+ tz.transition 2031, 3, :o7, 1932595200
+ tz.transition 2031, 10, :o2, 1950739200
+ tz.transition 2032, 3, :o7, 1964044800
+ tz.transition 2032, 10, :o2, 1982793600
+ tz.transition 2033, 3, :o7, 1995494400
+ tz.transition 2033, 10, :o2, 2014243200
+ tz.transition 2034, 3, :o7, 2026944000
+ tz.transition 2034, 10, :o2, 2045692800
+ tz.transition 2035, 3, :o7, 2058393600
+ tz.transition 2035, 10, :o2, 2077142400
+ tz.transition 2036, 3, :o7, 2090448000
+ tz.transition 2036, 10, :o2, 2108592000
+ tz.transition 2037, 3, :o7, 2121897600
+ tz.transition 2037, 10, :o2, 2140041600
+ tz.transition 2038, 3, :o7, 4931021, 2
+ tz.transition 2038, 10, :o2, 4931455, 2
+ tz.transition 2039, 3, :o7, 4931749, 2
+ tz.transition 2039, 10, :o2, 4932183, 2
+ tz.transition 2040, 3, :o7, 4932477, 2
+ tz.transition 2040, 10, :o2, 4932911, 2
+ tz.transition 2041, 3, :o7, 4933219, 2
+ tz.transition 2041, 10, :o2, 4933639, 2
+ tz.transition 2042, 3, :o7, 4933947, 2
+ tz.transition 2042, 10, :o2, 4934367, 2
+ tz.transition 2043, 3, :o7, 4934675, 2
+ tz.transition 2043, 10, :o2, 4935095, 2
+ tz.transition 2044, 3, :o7, 4935403, 2
+ tz.transition 2044, 10, :o2, 4935837, 2
+ tz.transition 2045, 3, :o7, 4936131, 2
+ tz.transition 2045, 10, :o2, 4936565, 2
+ tz.transition 2046, 3, :o7, 4936859, 2
+ tz.transition 2046, 10, :o2, 4937293, 2
+ tz.transition 2047, 3, :o7, 4937601, 2
+ tz.transition 2047, 10, :o2, 4938021, 2
+ tz.transition 2048, 3, :o7, 4938329, 2
+ tz.transition 2048, 10, :o2, 4938749, 2
+ tz.transition 2049, 3, :o7, 4939057, 2
+ tz.transition 2049, 10, :o2, 4939491, 2
+ tz.transition 2050, 3, :o7, 4939785, 2
+ tz.transition 2050, 10, :o2, 4940219, 2
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Moscow.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Moscow.rb
new file mode 100644
index 000000000..ef269b675
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Moscow.rb
@@ -0,0 +1,181 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Europe
+ module Moscow
+ include TimezoneDefinition
+
+ timezone 'Europe/Moscow' do |tz|
+ tz.offset :o0, 9020, 0, :LMT
+ tz.offset :o1, 9000, 0, :MMT
+ tz.offset :o2, 9048, 0, :MMT
+ tz.offset :o3, 9048, 3600, :MST
+ tz.offset :o4, 9048, 7200, :MDST
+ tz.offset :o5, 10800, 3600, :MSD
+ tz.offset :o6, 10800, 0, :MSK
+ tz.offset :o7, 10800, 7200, :MSD
+ tz.offset :o8, 7200, 0, :EET
+ tz.offset :o9, 7200, 3600, :EEST
+
+ tz.transition 1879, 12, :o1, 10401330509, 4320
+ tz.transition 1916, 7, :o2, 116210275, 48
+ tz.transition 1917, 7, :o3, 8717080873, 3600
+ tz.transition 1917, 12, :o2, 8717725273, 3600
+ tz.transition 1918, 5, :o4, 8718283123, 3600
+ tz.transition 1918, 9, :o3, 8718668473, 3600
+ tz.transition 1919, 5, :o4, 8719597123, 3600
+ tz.transition 1919, 6, :o5, 8719705423, 3600
+ tz.transition 1919, 8, :o6, 7266559, 3
+ tz.transition 1921, 2, :o5, 7268206, 3
+ tz.transition 1921, 3, :o7, 58146463, 24
+ tz.transition 1921, 8, :o5, 58150399, 24
+ tz.transition 1921, 9, :o6, 7268890, 3
+ tz.transition 1922, 9, :o8, 19386627, 8
+ tz.transition 1930, 6, :o6, 29113781, 12
+ tz.transition 1981, 3, :o5, 354920400
+ tz.transition 1981, 9, :o6, 370728000
+ tz.transition 1982, 3, :o5, 386456400
+ tz.transition 1982, 9, :o6, 402264000
+ tz.transition 1983, 3, :o5, 417992400
+ tz.transition 1983, 9, :o6, 433800000
+ tz.transition 1984, 3, :o5, 449614800
+ tz.transition 1984, 9, :o6, 465346800
+ tz.transition 1985, 3, :o5, 481071600
+ tz.transition 1985, 9, :o6, 496796400
+ tz.transition 1986, 3, :o5, 512521200
+ tz.transition 1986, 9, :o6, 528246000
+ tz.transition 1987, 3, :o5, 543970800
+ tz.transition 1987, 9, :o6, 559695600
+ tz.transition 1988, 3, :o5, 575420400
+ tz.transition 1988, 9, :o6, 591145200
+ tz.transition 1989, 3, :o5, 606870000
+ tz.transition 1989, 9, :o6, 622594800
+ tz.transition 1990, 3, :o5, 638319600
+ tz.transition 1990, 9, :o6, 654649200
+ tz.transition 1991, 3, :o9, 670374000
+ tz.transition 1991, 9, :o8, 686102400
+ tz.transition 1992, 1, :o6, 695779200
+ tz.transition 1992, 3, :o5, 701812800
+ tz.transition 1992, 9, :o6, 717534000
+ tz.transition 1993, 3, :o5, 733273200
+ tz.transition 1993, 9, :o6, 748998000
+ tz.transition 1994, 3, :o5, 764722800
+ tz.transition 1994, 9, :o6, 780447600
+ tz.transition 1995, 3, :o5, 796172400
+ tz.transition 1995, 9, :o6, 811897200
+ tz.transition 1996, 3, :o5, 828226800
+ tz.transition 1996, 10, :o6, 846370800
+ tz.transition 1997, 3, :o5, 859676400
+ tz.transition 1997, 10, :o6, 877820400
+ tz.transition 1998, 3, :o5, 891126000
+ tz.transition 1998, 10, :o6, 909270000
+ tz.transition 1999, 3, :o5, 922575600
+ tz.transition 1999, 10, :o6, 941324400
+ tz.transition 2000, 3, :o5, 954025200
+ tz.transition 2000, 10, :o6, 972774000
+ tz.transition 2001, 3, :o5, 985474800
+ tz.transition 2001, 10, :o6, 1004223600
+ tz.transition 2002, 3, :o5, 1017529200
+ tz.transition 2002, 10, :o6, 1035673200
+ tz.transition 2003, 3, :o5, 1048978800
+ tz.transition 2003, 10, :o6, 1067122800
+ tz.transition 2004, 3, :o5, 1080428400
+ tz.transition 2004, 10, :o6, 1099177200
+ tz.transition 2005, 3, :o5, 1111878000
+ tz.transition 2005, 10, :o6, 1130626800
+ tz.transition 2006, 3, :o5, 1143327600
+ tz.transition 2006, 10, :o6, 1162076400
+ tz.transition 2007, 3, :o5, 1174777200
+ tz.transition 2007, 10, :o6, 1193526000
+ tz.transition 2008, 3, :o5, 1206831600
+ tz.transition 2008, 10, :o6, 1224975600
+ tz.transition 2009, 3, :o5, 1238281200
+ tz.transition 2009, 10, :o6, 1256425200
+ tz.transition 2010, 3, :o5, 1269730800
+ tz.transition 2010, 10, :o6, 1288479600
+ tz.transition 2011, 3, :o5, 1301180400
+ tz.transition 2011, 10, :o6, 1319929200
+ tz.transition 2012, 3, :o5, 1332630000
+ tz.transition 2012, 10, :o6, 1351378800
+ tz.transition 2013, 3, :o5, 1364684400
+ tz.transition 2013, 10, :o6, 1382828400
+ tz.transition 2014, 3, :o5, 1396134000
+ tz.transition 2014, 10, :o6, 1414278000
+ tz.transition 2015, 3, :o5, 1427583600
+ tz.transition 2015, 10, :o6, 1445727600
+ tz.transition 2016, 3, :o5, 1459033200
+ tz.transition 2016, 10, :o6, 1477782000
+ tz.transition 2017, 3, :o5, 1490482800
+ tz.transition 2017, 10, :o6, 1509231600
+ tz.transition 2018, 3, :o5, 1521932400
+ tz.transition 2018, 10, :o6, 1540681200
+ tz.transition 2019, 3, :o5, 1553986800
+ tz.transition 2019, 10, :o6, 1572130800
+ tz.transition 2020, 3, :o5, 1585436400
+ tz.transition 2020, 10, :o6, 1603580400
+ tz.transition 2021, 3, :o5, 1616886000
+ tz.transition 2021, 10, :o6, 1635634800
+ tz.transition 2022, 3, :o5, 1648335600
+ tz.transition 2022, 10, :o6, 1667084400
+ tz.transition 2023, 3, :o5, 1679785200
+ tz.transition 2023, 10, :o6, 1698534000
+ tz.transition 2024, 3, :o5, 1711839600
+ tz.transition 2024, 10, :o6, 1729983600
+ tz.transition 2025, 3, :o5, 1743289200
+ tz.transition 2025, 10, :o6, 1761433200
+ tz.transition 2026, 3, :o5, 1774738800
+ tz.transition 2026, 10, :o6, 1792882800
+ tz.transition 2027, 3, :o5, 1806188400
+ tz.transition 2027, 10, :o6, 1824937200
+ tz.transition 2028, 3, :o5, 1837638000
+ tz.transition 2028, 10, :o6, 1856386800
+ tz.transition 2029, 3, :o5, 1869087600
+ tz.transition 2029, 10, :o6, 1887836400
+ tz.transition 2030, 3, :o5, 1901142000
+ tz.transition 2030, 10, :o6, 1919286000
+ tz.transition 2031, 3, :o5, 1932591600
+ tz.transition 2031, 10, :o6, 1950735600
+ tz.transition 2032, 3, :o5, 1964041200
+ tz.transition 2032, 10, :o6, 1982790000
+ tz.transition 2033, 3, :o5, 1995490800
+ tz.transition 2033, 10, :o6, 2014239600
+ tz.transition 2034, 3, :o5, 2026940400
+ tz.transition 2034, 10, :o6, 2045689200
+ tz.transition 2035, 3, :o5, 2058390000
+ tz.transition 2035, 10, :o6, 2077138800
+ tz.transition 2036, 3, :o5, 2090444400
+ tz.transition 2036, 10, :o6, 2108588400
+ tz.transition 2037, 3, :o5, 2121894000
+ tz.transition 2037, 10, :o6, 2140038000
+ tz.transition 2038, 3, :o5, 59172251, 24
+ tz.transition 2038, 10, :o6, 59177459, 24
+ tz.transition 2039, 3, :o5, 59180987, 24
+ tz.transition 2039, 10, :o6, 59186195, 24
+ tz.transition 2040, 3, :o5, 59189723, 24
+ tz.transition 2040, 10, :o6, 59194931, 24
+ tz.transition 2041, 3, :o5, 59198627, 24
+ tz.transition 2041, 10, :o6, 59203667, 24
+ tz.transition 2042, 3, :o5, 59207363, 24
+ tz.transition 2042, 10, :o6, 59212403, 24
+ tz.transition 2043, 3, :o5, 59216099, 24
+ tz.transition 2043, 10, :o6, 59221139, 24
+ tz.transition 2044, 3, :o5, 59224835, 24
+ tz.transition 2044, 10, :o6, 59230043, 24
+ tz.transition 2045, 3, :o5, 59233571, 24
+ tz.transition 2045, 10, :o6, 59238779, 24
+ tz.transition 2046, 3, :o5, 59242307, 24
+ tz.transition 2046, 10, :o6, 59247515, 24
+ tz.transition 2047, 3, :o5, 59251211, 24
+ tz.transition 2047, 10, :o6, 59256251, 24
+ tz.transition 2048, 3, :o5, 59259947, 24
+ tz.transition 2048, 10, :o6, 59264987, 24
+ tz.transition 2049, 3, :o5, 59268683, 24
+ tz.transition 2049, 10, :o6, 59273891, 24
+ tz.transition 2050, 3, :o5, 59277419, 24
+ tz.transition 2050, 10, :o6, 59282627, 24
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Paris.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Paris.rb
new file mode 100644
index 000000000..e3236c0ba
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Paris.rb
@@ -0,0 +1,232 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Europe
+ module Paris
+ include TimezoneDefinition
+
+ timezone 'Europe/Paris' do |tz|
+ tz.offset :o0, 561, 0, :LMT
+ tz.offset :o1, 561, 0, :PMT
+ tz.offset :o2, 0, 0, :WET
+ tz.offset :o3, 0, 3600, :WEST
+ tz.offset :o4, 3600, 3600, :CEST
+ tz.offset :o5, 3600, 0, :CET
+ tz.offset :o6, 0, 7200, :WEMT
+
+ tz.transition 1891, 3, :o1, 69460027033, 28800
+ tz.transition 1911, 3, :o2, 69670267033, 28800
+ tz.transition 1916, 6, :o3, 58104707, 24
+ tz.transition 1916, 10, :o2, 58107323, 24
+ tz.transition 1917, 3, :o3, 58111499, 24
+ tz.transition 1917, 10, :o2, 58116227, 24
+ tz.transition 1918, 3, :o3, 58119899, 24
+ tz.transition 1918, 10, :o2, 58124963, 24
+ tz.transition 1919, 3, :o3, 58128467, 24
+ tz.transition 1919, 10, :o2, 58133699, 24
+ tz.transition 1920, 2, :o3, 58136867, 24
+ tz.transition 1920, 10, :o2, 58142915, 24
+ tz.transition 1921, 3, :o3, 58146323, 24
+ tz.transition 1921, 10, :o2, 58151723, 24
+ tz.transition 1922, 3, :o3, 58155347, 24
+ tz.transition 1922, 10, :o2, 58160051, 24
+ tz.transition 1923, 5, :o3, 58165595, 24
+ tz.transition 1923, 10, :o2, 58168787, 24
+ tz.transition 1924, 3, :o3, 58172987, 24
+ tz.transition 1924, 10, :o2, 58177523, 24
+ tz.transition 1925, 4, :o3, 58181891, 24
+ tz.transition 1925, 10, :o2, 58186259, 24
+ tz.transition 1926, 4, :o3, 58190963, 24
+ tz.transition 1926, 10, :o2, 58194995, 24
+ tz.transition 1927, 4, :o3, 58199531, 24
+ tz.transition 1927, 10, :o2, 58203731, 24
+ tz.transition 1928, 4, :o3, 58208435, 24
+ tz.transition 1928, 10, :o2, 58212635, 24
+ tz.transition 1929, 4, :o3, 58217339, 24
+ tz.transition 1929, 10, :o2, 58221371, 24
+ tz.transition 1930, 4, :o3, 58225907, 24
+ tz.transition 1930, 10, :o2, 58230107, 24
+ tz.transition 1931, 4, :o3, 58234811, 24
+ tz.transition 1931, 10, :o2, 58238843, 24
+ tz.transition 1932, 4, :o3, 58243211, 24
+ tz.transition 1932, 10, :o2, 58247579, 24
+ tz.transition 1933, 3, :o3, 58251779, 24
+ tz.transition 1933, 10, :o2, 58256483, 24
+ tz.transition 1934, 4, :o3, 58260851, 24
+ tz.transition 1934, 10, :o2, 58265219, 24
+ tz.transition 1935, 3, :o3, 58269419, 24
+ tz.transition 1935, 10, :o2, 58273955, 24
+ tz.transition 1936, 4, :o3, 58278659, 24
+ tz.transition 1936, 10, :o2, 58282691, 24
+ tz.transition 1937, 4, :o3, 58287059, 24
+ tz.transition 1937, 10, :o2, 58291427, 24
+ tz.transition 1938, 3, :o3, 58295627, 24
+ tz.transition 1938, 10, :o2, 58300163, 24
+ tz.transition 1939, 4, :o3, 58304867, 24
+ tz.transition 1939, 11, :o2, 58310075, 24
+ tz.transition 1940, 2, :o3, 29156215, 12
+ tz.transition 1940, 6, :o4, 29157545, 12
+ tz.transition 1942, 11, :o5, 58335973, 24
+ tz.transition 1943, 3, :o4, 58339501, 24
+ tz.transition 1943, 10, :o5, 58344037, 24
+ tz.transition 1944, 4, :o4, 58348405, 24
+ tz.transition 1944, 8, :o6, 29175929, 12
+ tz.transition 1944, 10, :o3, 58352915, 24
+ tz.transition 1945, 4, :o6, 58357141, 24
+ tz.transition 1945, 9, :o5, 58361149, 24
+ tz.transition 1976, 3, :o4, 196819200
+ tz.transition 1976, 9, :o5, 212540400
+ tz.transition 1977, 4, :o4, 228877200
+ tz.transition 1977, 9, :o5, 243997200
+ tz.transition 1978, 4, :o4, 260326800
+ tz.transition 1978, 10, :o5, 276051600
+ tz.transition 1979, 4, :o4, 291776400
+ tz.transition 1979, 9, :o5, 307501200
+ tz.transition 1980, 4, :o4, 323830800
+ tz.transition 1980, 9, :o5, 338950800
+ tz.transition 1981, 3, :o4, 354675600
+ tz.transition 1981, 9, :o5, 370400400
+ tz.transition 1982, 3, :o4, 386125200
+ tz.transition 1982, 9, :o5, 401850000
+ tz.transition 1983, 3, :o4, 417574800
+ tz.transition 1983, 9, :o5, 433299600
+ tz.transition 1984, 3, :o4, 449024400
+ tz.transition 1984, 9, :o5, 465354000
+ tz.transition 1985, 3, :o4, 481078800
+ tz.transition 1985, 9, :o5, 496803600
+ tz.transition 1986, 3, :o4, 512528400
+ tz.transition 1986, 9, :o5, 528253200
+ tz.transition 1987, 3, :o4, 543978000
+ tz.transition 1987, 9, :o5, 559702800
+ tz.transition 1988, 3, :o4, 575427600
+ tz.transition 1988, 9, :o5, 591152400
+ tz.transition 1989, 3, :o4, 606877200
+ tz.transition 1989, 9, :o5, 622602000
+ tz.transition 1990, 3, :o4, 638326800
+ tz.transition 1990, 9, :o5, 654656400
+ tz.transition 1991, 3, :o4, 670381200
+ tz.transition 1991, 9, :o5, 686106000
+ tz.transition 1992, 3, :o4, 701830800
+ tz.transition 1992, 9, :o5, 717555600
+ tz.transition 1993, 3, :o4, 733280400
+ tz.transition 1993, 9, :o5, 749005200
+ tz.transition 1994, 3, :o4, 764730000
+ tz.transition 1994, 9, :o5, 780454800
+ tz.transition 1995, 3, :o4, 796179600
+ tz.transition 1995, 9, :o5, 811904400
+ tz.transition 1996, 3, :o4, 828234000
+ tz.transition 1996, 10, :o5, 846378000
+ tz.transition 1997, 3, :o4, 859683600
+ tz.transition 1997, 10, :o5, 877827600
+ tz.transition 1998, 3, :o4, 891133200
+ tz.transition 1998, 10, :o5, 909277200
+ tz.transition 1999, 3, :o4, 922582800
+ tz.transition 1999, 10, :o5, 941331600
+ tz.transition 2000, 3, :o4, 954032400
+ tz.transition 2000, 10, :o5, 972781200
+ tz.transition 2001, 3, :o4, 985482000
+ tz.transition 2001, 10, :o5, 1004230800
+ tz.transition 2002, 3, :o4, 1017536400
+ tz.transition 2002, 10, :o5, 1035680400
+ tz.transition 2003, 3, :o4, 1048986000
+ tz.transition 2003, 10, :o5, 1067130000
+ tz.transition 2004, 3, :o4, 1080435600
+ tz.transition 2004, 10, :o5, 1099184400
+ tz.transition 2005, 3, :o4, 1111885200
+ tz.transition 2005, 10, :o5, 1130634000
+ tz.transition 2006, 3, :o4, 1143334800
+ tz.transition 2006, 10, :o5, 1162083600
+ tz.transition 2007, 3, :o4, 1174784400
+ tz.transition 2007, 10, :o5, 1193533200
+ tz.transition 2008, 3, :o4, 1206838800
+ tz.transition 2008, 10, :o5, 1224982800
+ tz.transition 2009, 3, :o4, 1238288400
+ tz.transition 2009, 10, :o5, 1256432400
+ tz.transition 2010, 3, :o4, 1269738000
+ tz.transition 2010, 10, :o5, 1288486800
+ tz.transition 2011, 3, :o4, 1301187600
+ tz.transition 2011, 10, :o5, 1319936400
+ tz.transition 2012, 3, :o4, 1332637200
+ tz.transition 2012, 10, :o5, 1351386000
+ tz.transition 2013, 3, :o4, 1364691600
+ tz.transition 2013, 10, :o5, 1382835600
+ tz.transition 2014, 3, :o4, 1396141200
+ tz.transition 2014, 10, :o5, 1414285200
+ tz.transition 2015, 3, :o4, 1427590800
+ tz.transition 2015, 10, :o5, 1445734800
+ tz.transition 2016, 3, :o4, 1459040400
+ tz.transition 2016, 10, :o5, 1477789200
+ tz.transition 2017, 3, :o4, 1490490000
+ tz.transition 2017, 10, :o5, 1509238800
+ tz.transition 2018, 3, :o4, 1521939600
+ tz.transition 2018, 10, :o5, 1540688400
+ tz.transition 2019, 3, :o4, 1553994000
+ tz.transition 2019, 10, :o5, 1572138000
+ tz.transition 2020, 3, :o4, 1585443600
+ tz.transition 2020, 10, :o5, 1603587600
+ tz.transition 2021, 3, :o4, 1616893200
+ tz.transition 2021, 10, :o5, 1635642000
+ tz.transition 2022, 3, :o4, 1648342800
+ tz.transition 2022, 10, :o5, 1667091600
+ tz.transition 2023, 3, :o4, 1679792400
+ tz.transition 2023, 10, :o5, 1698541200
+ tz.transition 2024, 3, :o4, 1711846800
+ tz.transition 2024, 10, :o5, 1729990800
+ tz.transition 2025, 3, :o4, 1743296400
+ tz.transition 2025, 10, :o5, 1761440400
+ tz.transition 2026, 3, :o4, 1774746000
+ tz.transition 2026, 10, :o5, 1792890000
+ tz.transition 2027, 3, :o4, 1806195600
+ tz.transition 2027, 10, :o5, 1824944400
+ tz.transition 2028, 3, :o4, 1837645200
+ tz.transition 2028, 10, :o5, 1856394000
+ tz.transition 2029, 3, :o4, 1869094800
+ tz.transition 2029, 10, :o5, 1887843600
+ tz.transition 2030, 3, :o4, 1901149200
+ tz.transition 2030, 10, :o5, 1919293200
+ tz.transition 2031, 3, :o4, 1932598800
+ tz.transition 2031, 10, :o5, 1950742800
+ tz.transition 2032, 3, :o4, 1964048400
+ tz.transition 2032, 10, :o5, 1982797200
+ tz.transition 2033, 3, :o4, 1995498000
+ tz.transition 2033, 10, :o5, 2014246800
+ tz.transition 2034, 3, :o4, 2026947600
+ tz.transition 2034, 10, :o5, 2045696400
+ tz.transition 2035, 3, :o4, 2058397200
+ tz.transition 2035, 10, :o5, 2077146000
+ tz.transition 2036, 3, :o4, 2090451600
+ tz.transition 2036, 10, :o5, 2108595600
+ tz.transition 2037, 3, :o4, 2121901200
+ tz.transition 2037, 10, :o5, 2140045200
+ tz.transition 2038, 3, :o4, 59172253, 24
+ tz.transition 2038, 10, :o5, 59177461, 24
+ tz.transition 2039, 3, :o4, 59180989, 24
+ tz.transition 2039, 10, :o5, 59186197, 24
+ tz.transition 2040, 3, :o4, 59189725, 24
+ tz.transition 2040, 10, :o5, 59194933, 24
+ tz.transition 2041, 3, :o4, 59198629, 24
+ tz.transition 2041, 10, :o5, 59203669, 24
+ tz.transition 2042, 3, :o4, 59207365, 24
+ tz.transition 2042, 10, :o5, 59212405, 24
+ tz.transition 2043, 3, :o4, 59216101, 24
+ tz.transition 2043, 10, :o5, 59221141, 24
+ tz.transition 2044, 3, :o4, 59224837, 24
+ tz.transition 2044, 10, :o5, 59230045, 24
+ tz.transition 2045, 3, :o4, 59233573, 24
+ tz.transition 2045, 10, :o5, 59238781, 24
+ tz.transition 2046, 3, :o4, 59242309, 24
+ tz.transition 2046, 10, :o5, 59247517, 24
+ tz.transition 2047, 3, :o4, 59251213, 24
+ tz.transition 2047, 10, :o5, 59256253, 24
+ tz.transition 2048, 3, :o4, 59259949, 24
+ tz.transition 2048, 10, :o5, 59264989, 24
+ tz.transition 2049, 3, :o4, 59268685, 24
+ tz.transition 2049, 10, :o5, 59273893, 24
+ tz.transition 2050, 3, :o4, 59277421, 24
+ tz.transition 2050, 10, :o5, 59282629, 24
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Prague.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Prague.rb
new file mode 100644
index 000000000..bcabee96c
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Prague.rb
@@ -0,0 +1,187 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Europe
+ module Prague
+ include TimezoneDefinition
+
+ timezone 'Europe/Prague' do |tz|
+ tz.offset :o0, 3464, 0, :LMT
+ tz.offset :o1, 3464, 0, :PMT
+ tz.offset :o2, 3600, 0, :CET
+ tz.offset :o3, 3600, 3600, :CEST
+
+ tz.transition 1849, 12, :o1, 25884991367, 10800
+ tz.transition 1891, 9, :o2, 26049669767, 10800
+ tz.transition 1916, 4, :o3, 29051813, 12
+ tz.transition 1916, 9, :o2, 58107299, 24
+ tz.transition 1917, 4, :o3, 58112029, 24
+ tz.transition 1917, 9, :o2, 58115725, 24
+ tz.transition 1918, 4, :o3, 58120765, 24
+ tz.transition 1918, 9, :o2, 58124461, 24
+ tz.transition 1940, 4, :o3, 58313293, 24
+ tz.transition 1942, 11, :o2, 58335973, 24
+ tz.transition 1943, 3, :o3, 58339501, 24
+ tz.transition 1943, 10, :o2, 58344037, 24
+ tz.transition 1944, 4, :o3, 58348405, 24
+ tz.transition 1944, 9, :o2, 58352413, 24
+ tz.transition 1945, 4, :o3, 58357285, 24
+ tz.transition 1945, 11, :o2, 58362661, 24
+ tz.transition 1946, 5, :o3, 58366717, 24
+ tz.transition 1946, 10, :o2, 58370389, 24
+ tz.transition 1947, 4, :o3, 58375093, 24
+ tz.transition 1947, 10, :o2, 58379125, 24
+ tz.transition 1948, 4, :o3, 58383829, 24
+ tz.transition 1948, 10, :o2, 58387861, 24
+ tz.transition 1949, 4, :o3, 58392373, 24
+ tz.transition 1949, 10, :o2, 58396597, 24
+ tz.transition 1979, 4, :o3, 291776400
+ tz.transition 1979, 9, :o2, 307501200
+ tz.transition 1980, 4, :o3, 323830800
+ tz.transition 1980, 9, :o2, 338950800
+ tz.transition 1981, 3, :o3, 354675600
+ tz.transition 1981, 9, :o2, 370400400
+ tz.transition 1982, 3, :o3, 386125200
+ tz.transition 1982, 9, :o2, 401850000
+ tz.transition 1983, 3, :o3, 417574800
+ tz.transition 1983, 9, :o2, 433299600
+ tz.transition 1984, 3, :o3, 449024400
+ tz.transition 1984, 9, :o2, 465354000
+ tz.transition 1985, 3, :o3, 481078800
+ tz.transition 1985, 9, :o2, 496803600
+ tz.transition 1986, 3, :o3, 512528400
+ tz.transition 1986, 9, :o2, 528253200
+ tz.transition 1987, 3, :o3, 543978000
+ tz.transition 1987, 9, :o2, 559702800
+ tz.transition 1988, 3, :o3, 575427600
+ tz.transition 1988, 9, :o2, 591152400
+ tz.transition 1989, 3, :o3, 606877200
+ tz.transition 1989, 9, :o2, 622602000
+ tz.transition 1990, 3, :o3, 638326800
+ tz.transition 1990, 9, :o2, 654656400
+ tz.transition 1991, 3, :o3, 670381200
+ tz.transition 1991, 9, :o2, 686106000
+ tz.transition 1992, 3, :o3, 701830800
+ tz.transition 1992, 9, :o2, 717555600
+ tz.transition 1993, 3, :o3, 733280400
+ tz.transition 1993, 9, :o2, 749005200
+ tz.transition 1994, 3, :o3, 764730000
+ tz.transition 1994, 9, :o2, 780454800
+ tz.transition 1995, 3, :o3, 796179600
+ tz.transition 1995, 9, :o2, 811904400
+ tz.transition 1996, 3, :o3, 828234000
+ tz.transition 1996, 10, :o2, 846378000
+ tz.transition 1997, 3, :o3, 859683600
+ tz.transition 1997, 10, :o2, 877827600
+ tz.transition 1998, 3, :o3, 891133200
+ tz.transition 1998, 10, :o2, 909277200
+ tz.transition 1999, 3, :o3, 922582800
+ tz.transition 1999, 10, :o2, 941331600
+ tz.transition 2000, 3, :o3, 954032400
+ tz.transition 2000, 10, :o2, 972781200
+ tz.transition 2001, 3, :o3, 985482000
+ tz.transition 2001, 10, :o2, 1004230800
+ tz.transition 2002, 3, :o3, 1017536400
+ tz.transition 2002, 10, :o2, 1035680400
+ tz.transition 2003, 3, :o3, 1048986000
+ tz.transition 2003, 10, :o2, 1067130000
+ tz.transition 2004, 3, :o3, 1080435600
+ tz.transition 2004, 10, :o2, 1099184400
+ tz.transition 2005, 3, :o3, 1111885200
+ tz.transition 2005, 10, :o2, 1130634000
+ tz.transition 2006, 3, :o3, 1143334800
+ tz.transition 2006, 10, :o2, 1162083600
+ tz.transition 2007, 3, :o3, 1174784400
+ tz.transition 2007, 10, :o2, 1193533200
+ tz.transition 2008, 3, :o3, 1206838800
+ tz.transition 2008, 10, :o2, 1224982800
+ tz.transition 2009, 3, :o3, 1238288400
+ tz.transition 2009, 10, :o2, 1256432400
+ tz.transition 2010, 3, :o3, 1269738000
+ tz.transition 2010, 10, :o2, 1288486800
+ tz.transition 2011, 3, :o3, 1301187600
+ tz.transition 2011, 10, :o2, 1319936400
+ tz.transition 2012, 3, :o3, 1332637200
+ tz.transition 2012, 10, :o2, 1351386000
+ tz.transition 2013, 3, :o3, 1364691600
+ tz.transition 2013, 10, :o2, 1382835600
+ tz.transition 2014, 3, :o3, 1396141200
+ tz.transition 2014, 10, :o2, 1414285200
+ tz.transition 2015, 3, :o3, 1427590800
+ tz.transition 2015, 10, :o2, 1445734800
+ tz.transition 2016, 3, :o3, 1459040400
+ tz.transition 2016, 10, :o2, 1477789200
+ tz.transition 2017, 3, :o3, 1490490000
+ tz.transition 2017, 10, :o2, 1509238800
+ tz.transition 2018, 3, :o3, 1521939600
+ tz.transition 2018, 10, :o2, 1540688400
+ tz.transition 2019, 3, :o3, 1553994000
+ tz.transition 2019, 10, :o2, 1572138000
+ tz.transition 2020, 3, :o3, 1585443600
+ tz.transition 2020, 10, :o2, 1603587600
+ tz.transition 2021, 3, :o3, 1616893200
+ tz.transition 2021, 10, :o2, 1635642000
+ tz.transition 2022, 3, :o3, 1648342800
+ tz.transition 2022, 10, :o2, 1667091600
+ tz.transition 2023, 3, :o3, 1679792400
+ tz.transition 2023, 10, :o2, 1698541200
+ tz.transition 2024, 3, :o3, 1711846800
+ tz.transition 2024, 10, :o2, 1729990800
+ tz.transition 2025, 3, :o3, 1743296400
+ tz.transition 2025, 10, :o2, 1761440400
+ tz.transition 2026, 3, :o3, 1774746000
+ tz.transition 2026, 10, :o2, 1792890000
+ tz.transition 2027, 3, :o3, 1806195600
+ tz.transition 2027, 10, :o2, 1824944400
+ tz.transition 2028, 3, :o3, 1837645200
+ tz.transition 2028, 10, :o2, 1856394000
+ tz.transition 2029, 3, :o3, 1869094800
+ tz.transition 2029, 10, :o2, 1887843600
+ tz.transition 2030, 3, :o3, 1901149200
+ tz.transition 2030, 10, :o2, 1919293200
+ tz.transition 2031, 3, :o3, 1932598800
+ tz.transition 2031, 10, :o2, 1950742800
+ tz.transition 2032, 3, :o3, 1964048400
+ tz.transition 2032, 10, :o2, 1982797200
+ tz.transition 2033, 3, :o3, 1995498000
+ tz.transition 2033, 10, :o2, 2014246800
+ tz.transition 2034, 3, :o3, 2026947600
+ tz.transition 2034, 10, :o2, 2045696400
+ tz.transition 2035, 3, :o3, 2058397200
+ tz.transition 2035, 10, :o2, 2077146000
+ tz.transition 2036, 3, :o3, 2090451600
+ tz.transition 2036, 10, :o2, 2108595600
+ tz.transition 2037, 3, :o3, 2121901200
+ tz.transition 2037, 10, :o2, 2140045200
+ tz.transition 2038, 3, :o3, 59172253, 24
+ tz.transition 2038, 10, :o2, 59177461, 24
+ tz.transition 2039, 3, :o3, 59180989, 24
+ tz.transition 2039, 10, :o2, 59186197, 24
+ tz.transition 2040, 3, :o3, 59189725, 24
+ tz.transition 2040, 10, :o2, 59194933, 24
+ tz.transition 2041, 3, :o3, 59198629, 24
+ tz.transition 2041, 10, :o2, 59203669, 24
+ tz.transition 2042, 3, :o3, 59207365, 24
+ tz.transition 2042, 10, :o2, 59212405, 24
+ tz.transition 2043, 3, :o3, 59216101, 24
+ tz.transition 2043, 10, :o2, 59221141, 24
+ tz.transition 2044, 3, :o3, 59224837, 24
+ tz.transition 2044, 10, :o2, 59230045, 24
+ tz.transition 2045, 3, :o3, 59233573, 24
+ tz.transition 2045, 10, :o2, 59238781, 24
+ tz.transition 2046, 3, :o3, 59242309, 24
+ tz.transition 2046, 10, :o2, 59247517, 24
+ tz.transition 2047, 3, :o3, 59251213, 24
+ tz.transition 2047, 10, :o2, 59256253, 24
+ tz.transition 2048, 3, :o3, 59259949, 24
+ tz.transition 2048, 10, :o2, 59264989, 24
+ tz.transition 2049, 3, :o3, 59268685, 24
+ tz.transition 2049, 10, :o2, 59273893, 24
+ tz.transition 2050, 3, :o3, 59277421, 24
+ tz.transition 2050, 10, :o2, 59282629, 24
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Riga.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Riga.rb
new file mode 100644
index 000000000..784837f75
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Riga.rb
@@ -0,0 +1,176 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Europe
+ module Riga
+ include TimezoneDefinition
+
+ timezone 'Europe/Riga' do |tz|
+ tz.offset :o0, 5784, 0, :LMT
+ tz.offset :o1, 5784, 0, :RMT
+ tz.offset :o2, 5784, 3600, :LST
+ tz.offset :o3, 7200, 0, :EET
+ tz.offset :o4, 10800, 0, :MSK
+ tz.offset :o5, 3600, 3600, :CEST
+ tz.offset :o6, 3600, 0, :CET
+ tz.offset :o7, 10800, 3600, :MSD
+ tz.offset :o8, 7200, 3600, :EEST
+
+ tz.transition 1879, 12, :o1, 8667775559, 3600
+ tz.transition 1918, 4, :o2, 8718114659, 3600
+ tz.transition 1918, 9, :o1, 8718669059, 3600
+ tz.transition 1919, 4, :o2, 8719378259, 3600
+ tz.transition 1919, 5, :o1, 8719561859, 3600
+ tz.transition 1926, 5, :o3, 8728727159, 3600
+ tz.transition 1940, 8, :o4, 29158157, 12
+ tz.transition 1941, 6, :o5, 19441411, 8
+ tz.transition 1942, 11, :o6, 58335973, 24
+ tz.transition 1943, 3, :o5, 58339501, 24
+ tz.transition 1943, 10, :o6, 58344037, 24
+ tz.transition 1944, 4, :o5, 58348405, 24
+ tz.transition 1944, 10, :o6, 58352773, 24
+ tz.transition 1944, 10, :o4, 58353035, 24
+ tz.transition 1981, 3, :o7, 354920400
+ tz.transition 1981, 9, :o4, 370728000
+ tz.transition 1982, 3, :o7, 386456400
+ tz.transition 1982, 9, :o4, 402264000
+ tz.transition 1983, 3, :o7, 417992400
+ tz.transition 1983, 9, :o4, 433800000
+ tz.transition 1984, 3, :o7, 449614800
+ tz.transition 1984, 9, :o4, 465346800
+ tz.transition 1985, 3, :o7, 481071600
+ tz.transition 1985, 9, :o4, 496796400
+ tz.transition 1986, 3, :o7, 512521200
+ tz.transition 1986, 9, :o4, 528246000
+ tz.transition 1987, 3, :o7, 543970800
+ tz.transition 1987, 9, :o4, 559695600
+ tz.transition 1988, 3, :o7, 575420400
+ tz.transition 1988, 9, :o4, 591145200
+ tz.transition 1989, 3, :o8, 606870000
+ tz.transition 1989, 9, :o3, 622598400
+ tz.transition 1990, 3, :o8, 638323200
+ tz.transition 1990, 9, :o3, 654652800
+ tz.transition 1991, 3, :o8, 670377600
+ tz.transition 1991, 9, :o3, 686102400
+ tz.transition 1992, 3, :o8, 701827200
+ tz.transition 1992, 9, :o3, 717552000
+ tz.transition 1993, 3, :o8, 733276800
+ tz.transition 1993, 9, :o3, 749001600
+ tz.transition 1994, 3, :o8, 764726400
+ tz.transition 1994, 9, :o3, 780451200
+ tz.transition 1995, 3, :o8, 796176000
+ tz.transition 1995, 9, :o3, 811900800
+ tz.transition 1996, 3, :o8, 828230400
+ tz.transition 1996, 9, :o3, 843955200
+ tz.transition 1997, 3, :o8, 859683600
+ tz.transition 1997, 10, :o3, 877827600
+ tz.transition 1998, 3, :o8, 891133200
+ tz.transition 1998, 10, :o3, 909277200
+ tz.transition 1999, 3, :o8, 922582800
+ tz.transition 1999, 10, :o3, 941331600
+ tz.transition 2001, 3, :o8, 985482000
+ tz.transition 2001, 10, :o3, 1004230800
+ tz.transition 2002, 3, :o8, 1017536400
+ tz.transition 2002, 10, :o3, 1035680400
+ tz.transition 2003, 3, :o8, 1048986000
+ tz.transition 2003, 10, :o3, 1067130000
+ tz.transition 2004, 3, :o8, 1080435600
+ tz.transition 2004, 10, :o3, 1099184400
+ tz.transition 2005, 3, :o8, 1111885200
+ tz.transition 2005, 10, :o3, 1130634000
+ tz.transition 2006, 3, :o8, 1143334800
+ tz.transition 2006, 10, :o3, 1162083600
+ tz.transition 2007, 3, :o8, 1174784400
+ tz.transition 2007, 10, :o3, 1193533200
+ tz.transition 2008, 3, :o8, 1206838800
+ tz.transition 2008, 10, :o3, 1224982800
+ tz.transition 2009, 3, :o8, 1238288400
+ tz.transition 2009, 10, :o3, 1256432400
+ tz.transition 2010, 3, :o8, 1269738000
+ tz.transition 2010, 10, :o3, 1288486800
+ tz.transition 2011, 3, :o8, 1301187600
+ tz.transition 2011, 10, :o3, 1319936400
+ tz.transition 2012, 3, :o8, 1332637200
+ tz.transition 2012, 10, :o3, 1351386000
+ tz.transition 2013, 3, :o8, 1364691600
+ tz.transition 2013, 10, :o3, 1382835600
+ tz.transition 2014, 3, :o8, 1396141200
+ tz.transition 2014, 10, :o3, 1414285200
+ tz.transition 2015, 3, :o8, 1427590800
+ tz.transition 2015, 10, :o3, 1445734800
+ tz.transition 2016, 3, :o8, 1459040400
+ tz.transition 2016, 10, :o3, 1477789200
+ tz.transition 2017, 3, :o8, 1490490000
+ tz.transition 2017, 10, :o3, 1509238800
+ tz.transition 2018, 3, :o8, 1521939600
+ tz.transition 2018, 10, :o3, 1540688400
+ tz.transition 2019, 3, :o8, 1553994000
+ tz.transition 2019, 10, :o3, 1572138000
+ tz.transition 2020, 3, :o8, 1585443600
+ tz.transition 2020, 10, :o3, 1603587600
+ tz.transition 2021, 3, :o8, 1616893200
+ tz.transition 2021, 10, :o3, 1635642000
+ tz.transition 2022, 3, :o8, 1648342800
+ tz.transition 2022, 10, :o3, 1667091600
+ tz.transition 2023, 3, :o8, 1679792400
+ tz.transition 2023, 10, :o3, 1698541200
+ tz.transition 2024, 3, :o8, 1711846800
+ tz.transition 2024, 10, :o3, 1729990800
+ tz.transition 2025, 3, :o8, 1743296400
+ tz.transition 2025, 10, :o3, 1761440400
+ tz.transition 2026, 3, :o8, 1774746000
+ tz.transition 2026, 10, :o3, 1792890000
+ tz.transition 2027, 3, :o8, 1806195600
+ tz.transition 2027, 10, :o3, 1824944400
+ tz.transition 2028, 3, :o8, 1837645200
+ tz.transition 2028, 10, :o3, 1856394000
+ tz.transition 2029, 3, :o8, 1869094800
+ tz.transition 2029, 10, :o3, 1887843600
+ tz.transition 2030, 3, :o8, 1901149200
+ tz.transition 2030, 10, :o3, 1919293200
+ tz.transition 2031, 3, :o8, 1932598800
+ tz.transition 2031, 10, :o3, 1950742800
+ tz.transition 2032, 3, :o8, 1964048400
+ tz.transition 2032, 10, :o3, 1982797200
+ tz.transition 2033, 3, :o8, 1995498000
+ tz.transition 2033, 10, :o3, 2014246800
+ tz.transition 2034, 3, :o8, 2026947600
+ tz.transition 2034, 10, :o3, 2045696400
+ tz.transition 2035, 3, :o8, 2058397200
+ tz.transition 2035, 10, :o3, 2077146000
+ tz.transition 2036, 3, :o8, 2090451600
+ tz.transition 2036, 10, :o3, 2108595600
+ tz.transition 2037, 3, :o8, 2121901200
+ tz.transition 2037, 10, :o3, 2140045200
+ tz.transition 2038, 3, :o8, 59172253, 24
+ tz.transition 2038, 10, :o3, 59177461, 24
+ tz.transition 2039, 3, :o8, 59180989, 24
+ tz.transition 2039, 10, :o3, 59186197, 24
+ tz.transition 2040, 3, :o8, 59189725, 24
+ tz.transition 2040, 10, :o3, 59194933, 24
+ tz.transition 2041, 3, :o8, 59198629, 24
+ tz.transition 2041, 10, :o3, 59203669, 24
+ tz.transition 2042, 3, :o8, 59207365, 24
+ tz.transition 2042, 10, :o3, 59212405, 24
+ tz.transition 2043, 3, :o8, 59216101, 24
+ tz.transition 2043, 10, :o3, 59221141, 24
+ tz.transition 2044, 3, :o8, 59224837, 24
+ tz.transition 2044, 10, :o3, 59230045, 24
+ tz.transition 2045, 3, :o8, 59233573, 24
+ tz.transition 2045, 10, :o3, 59238781, 24
+ tz.transition 2046, 3, :o8, 59242309, 24
+ tz.transition 2046, 10, :o3, 59247517, 24
+ tz.transition 2047, 3, :o8, 59251213, 24
+ tz.transition 2047, 10, :o3, 59256253, 24
+ tz.transition 2048, 3, :o8, 59259949, 24
+ tz.transition 2048, 10, :o3, 59264989, 24
+ tz.transition 2049, 3, :o8, 59268685, 24
+ tz.transition 2049, 10, :o3, 59273893, 24
+ tz.transition 2050, 3, :o8, 59277421, 24
+ tz.transition 2050, 10, :o3, 59282629, 24
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Rome.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Rome.rb
new file mode 100644
index 000000000..aa7b43d9d
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Rome.rb
@@ -0,0 +1,215 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Europe
+ module Rome
+ include TimezoneDefinition
+
+ timezone 'Europe/Rome' do |tz|
+ tz.offset :o0, 2996, 0, :LMT
+ tz.offset :o1, 2996, 0, :RMT
+ tz.offset :o2, 3600, 0, :CET
+ tz.offset :o3, 3600, 3600, :CEST
+
+ tz.transition 1866, 9, :o1, 51901915651, 21600
+ tz.transition 1893, 10, :o2, 52115798851, 21600
+ tz.transition 1916, 6, :o3, 58104419, 24
+ tz.transition 1916, 9, :o2, 58107299, 24
+ tz.transition 1917, 3, :o3, 58111667, 24
+ tz.transition 1917, 9, :o2, 58116035, 24
+ tz.transition 1918, 3, :o3, 58119899, 24
+ tz.transition 1918, 10, :o2, 58124939, 24
+ tz.transition 1919, 3, :o3, 58128467, 24
+ tz.transition 1919, 10, :o2, 58133675, 24
+ tz.transition 1920, 3, :o3, 58137707, 24
+ tz.transition 1920, 9, :o2, 58142075, 24
+ tz.transition 1940, 6, :o3, 58315091, 24
+ tz.transition 1942, 11, :o2, 58335973, 24
+ tz.transition 1943, 3, :o3, 58339501, 24
+ tz.transition 1943, 10, :o2, 58344037, 24
+ tz.transition 1944, 4, :o3, 58348405, 24
+ tz.transition 1944, 9, :o2, 58352411, 24
+ tz.transition 1945, 4, :o3, 58357141, 24
+ tz.transition 1945, 9, :o2, 58361123, 24
+ tz.transition 1946, 3, :o3, 58365517, 24
+ tz.transition 1946, 10, :o2, 58370389, 24
+ tz.transition 1947, 3, :o3, 58374251, 24
+ tz.transition 1947, 10, :o2, 58379123, 24
+ tz.transition 1948, 2, :o3, 58382653, 24
+ tz.transition 1948, 10, :o2, 58387861, 24
+ tz.transition 1966, 5, :o3, 58542419, 24
+ tz.transition 1966, 9, :o2, 29272721, 12
+ tz.transition 1967, 5, :o3, 58551323, 24
+ tz.transition 1967, 9, :o2, 29277089, 12
+ tz.transition 1968, 5, :o3, 58560059, 24
+ tz.transition 1968, 9, :o2, 29281457, 12
+ tz.transition 1969, 5, :o3, 58568963, 24
+ tz.transition 1969, 9, :o2, 29285909, 12
+ tz.transition 1970, 5, :o3, 12956400
+ tz.transition 1970, 9, :o2, 23234400
+ tz.transition 1971, 5, :o3, 43801200
+ tz.transition 1971, 9, :o2, 54687600
+ tz.transition 1972, 5, :o3, 75855600
+ tz.transition 1972, 9, :o2, 86738400
+ tz.transition 1973, 6, :o3, 107910000
+ tz.transition 1973, 9, :o2, 118188000
+ tz.transition 1974, 5, :o3, 138754800
+ tz.transition 1974, 9, :o2, 149637600
+ tz.transition 1975, 5, :o3, 170809200
+ tz.transition 1975, 9, :o2, 181090800
+ tz.transition 1976, 5, :o3, 202258800
+ tz.transition 1976, 9, :o2, 212540400
+ tz.transition 1977, 5, :o3, 233103600
+ tz.transition 1977, 9, :o2, 243990000
+ tz.transition 1978, 5, :o3, 265158000
+ tz.transition 1978, 9, :o2, 276044400
+ tz.transition 1979, 5, :o3, 296607600
+ tz.transition 1979, 9, :o2, 307494000
+ tz.transition 1980, 4, :o3, 323830800
+ tz.transition 1980, 9, :o2, 338950800
+ tz.transition 1981, 3, :o3, 354675600
+ tz.transition 1981, 9, :o2, 370400400
+ tz.transition 1982, 3, :o3, 386125200
+ tz.transition 1982, 9, :o2, 401850000
+ tz.transition 1983, 3, :o3, 417574800
+ tz.transition 1983, 9, :o2, 433299600
+ tz.transition 1984, 3, :o3, 449024400
+ tz.transition 1984, 9, :o2, 465354000
+ tz.transition 1985, 3, :o3, 481078800
+ tz.transition 1985, 9, :o2, 496803600
+ tz.transition 1986, 3, :o3, 512528400
+ tz.transition 1986, 9, :o2, 528253200
+ tz.transition 1987, 3, :o3, 543978000
+ tz.transition 1987, 9, :o2, 559702800
+ tz.transition 1988, 3, :o3, 575427600
+ tz.transition 1988, 9, :o2, 591152400
+ tz.transition 1989, 3, :o3, 606877200
+ tz.transition 1989, 9, :o2, 622602000
+ tz.transition 1990, 3, :o3, 638326800
+ tz.transition 1990, 9, :o2, 654656400
+ tz.transition 1991, 3, :o3, 670381200
+ tz.transition 1991, 9, :o2, 686106000
+ tz.transition 1992, 3, :o3, 701830800
+ tz.transition 1992, 9, :o2, 717555600
+ tz.transition 1993, 3, :o3, 733280400
+ tz.transition 1993, 9, :o2, 749005200
+ tz.transition 1994, 3, :o3, 764730000
+ tz.transition 1994, 9, :o2, 780454800
+ tz.transition 1995, 3, :o3, 796179600
+ tz.transition 1995, 9, :o2, 811904400
+ tz.transition 1996, 3, :o3, 828234000
+ tz.transition 1996, 10, :o2, 846378000
+ tz.transition 1997, 3, :o3, 859683600
+ tz.transition 1997, 10, :o2, 877827600
+ tz.transition 1998, 3, :o3, 891133200
+ tz.transition 1998, 10, :o2, 909277200
+ tz.transition 1999, 3, :o3, 922582800
+ tz.transition 1999, 10, :o2, 941331600
+ tz.transition 2000, 3, :o3, 954032400
+ tz.transition 2000, 10, :o2, 972781200
+ tz.transition 2001, 3, :o3, 985482000
+ tz.transition 2001, 10, :o2, 1004230800
+ tz.transition 2002, 3, :o3, 1017536400
+ tz.transition 2002, 10, :o2, 1035680400
+ tz.transition 2003, 3, :o3, 1048986000
+ tz.transition 2003, 10, :o2, 1067130000
+ tz.transition 2004, 3, :o3, 1080435600
+ tz.transition 2004, 10, :o2, 1099184400
+ tz.transition 2005, 3, :o3, 1111885200
+ tz.transition 2005, 10, :o2, 1130634000
+ tz.transition 2006, 3, :o3, 1143334800
+ tz.transition 2006, 10, :o2, 1162083600
+ tz.transition 2007, 3, :o3, 1174784400
+ tz.transition 2007, 10, :o2, 1193533200
+ tz.transition 2008, 3, :o3, 1206838800
+ tz.transition 2008, 10, :o2, 1224982800
+ tz.transition 2009, 3, :o3, 1238288400
+ tz.transition 2009, 10, :o2, 1256432400
+ tz.transition 2010, 3, :o3, 1269738000
+ tz.transition 2010, 10, :o2, 1288486800
+ tz.transition 2011, 3, :o3, 1301187600
+ tz.transition 2011, 10, :o2, 1319936400
+ tz.transition 2012, 3, :o3, 1332637200
+ tz.transition 2012, 10, :o2, 1351386000
+ tz.transition 2013, 3, :o3, 1364691600
+ tz.transition 2013, 10, :o2, 1382835600
+ tz.transition 2014, 3, :o3, 1396141200
+ tz.transition 2014, 10, :o2, 1414285200
+ tz.transition 2015, 3, :o3, 1427590800
+ tz.transition 2015, 10, :o2, 1445734800
+ tz.transition 2016, 3, :o3, 1459040400
+ tz.transition 2016, 10, :o2, 1477789200
+ tz.transition 2017, 3, :o3, 1490490000
+ tz.transition 2017, 10, :o2, 1509238800
+ tz.transition 2018, 3, :o3, 1521939600
+ tz.transition 2018, 10, :o2, 1540688400
+ tz.transition 2019, 3, :o3, 1553994000
+ tz.transition 2019, 10, :o2, 1572138000
+ tz.transition 2020, 3, :o3, 1585443600
+ tz.transition 2020, 10, :o2, 1603587600
+ tz.transition 2021, 3, :o3, 1616893200
+ tz.transition 2021, 10, :o2, 1635642000
+ tz.transition 2022, 3, :o3, 1648342800
+ tz.transition 2022, 10, :o2, 1667091600
+ tz.transition 2023, 3, :o3, 1679792400
+ tz.transition 2023, 10, :o2, 1698541200
+ tz.transition 2024, 3, :o3, 1711846800
+ tz.transition 2024, 10, :o2, 1729990800
+ tz.transition 2025, 3, :o3, 1743296400
+ tz.transition 2025, 10, :o2, 1761440400
+ tz.transition 2026, 3, :o3, 1774746000
+ tz.transition 2026, 10, :o2, 1792890000
+ tz.transition 2027, 3, :o3, 1806195600
+ tz.transition 2027, 10, :o2, 1824944400
+ tz.transition 2028, 3, :o3, 1837645200
+ tz.transition 2028, 10, :o2, 1856394000
+ tz.transition 2029, 3, :o3, 1869094800
+ tz.transition 2029, 10, :o2, 1887843600
+ tz.transition 2030, 3, :o3, 1901149200
+ tz.transition 2030, 10, :o2, 1919293200
+ tz.transition 2031, 3, :o3, 1932598800
+ tz.transition 2031, 10, :o2, 1950742800
+ tz.transition 2032, 3, :o3, 1964048400
+ tz.transition 2032, 10, :o2, 1982797200
+ tz.transition 2033, 3, :o3, 1995498000
+ tz.transition 2033, 10, :o2, 2014246800
+ tz.transition 2034, 3, :o3, 2026947600
+ tz.transition 2034, 10, :o2, 2045696400
+ tz.transition 2035, 3, :o3, 2058397200
+ tz.transition 2035, 10, :o2, 2077146000
+ tz.transition 2036, 3, :o3, 2090451600
+ tz.transition 2036, 10, :o2, 2108595600
+ tz.transition 2037, 3, :o3, 2121901200
+ tz.transition 2037, 10, :o2, 2140045200
+ tz.transition 2038, 3, :o3, 59172253, 24
+ tz.transition 2038, 10, :o2, 59177461, 24
+ tz.transition 2039, 3, :o3, 59180989, 24
+ tz.transition 2039, 10, :o2, 59186197, 24
+ tz.transition 2040, 3, :o3, 59189725, 24
+ tz.transition 2040, 10, :o2, 59194933, 24
+ tz.transition 2041, 3, :o3, 59198629, 24
+ tz.transition 2041, 10, :o2, 59203669, 24
+ tz.transition 2042, 3, :o3, 59207365, 24
+ tz.transition 2042, 10, :o2, 59212405, 24
+ tz.transition 2043, 3, :o3, 59216101, 24
+ tz.transition 2043, 10, :o2, 59221141, 24
+ tz.transition 2044, 3, :o3, 59224837, 24
+ tz.transition 2044, 10, :o2, 59230045, 24
+ tz.transition 2045, 3, :o3, 59233573, 24
+ tz.transition 2045, 10, :o2, 59238781, 24
+ tz.transition 2046, 3, :o3, 59242309, 24
+ tz.transition 2046, 10, :o2, 59247517, 24
+ tz.transition 2047, 3, :o3, 59251213, 24
+ tz.transition 2047, 10, :o2, 59256253, 24
+ tz.transition 2048, 3, :o3, 59259949, 24
+ tz.transition 2048, 10, :o2, 59264989, 24
+ tz.transition 2049, 3, :o3, 59268685, 24
+ tz.transition 2049, 10, :o2, 59273893, 24
+ tz.transition 2050, 3, :o3, 59277421, 24
+ tz.transition 2050, 10, :o2, 59282629, 24
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Sarajevo.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Sarajevo.rb
new file mode 100644
index 000000000..068c5fe6a
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Sarajevo.rb
@@ -0,0 +1,13 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Europe
+ module Sarajevo
+ include TimezoneDefinition
+
+ linked_timezone 'Europe/Sarajevo', 'Europe/Belgrade'
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Skopje.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Skopje.rb
new file mode 100644
index 000000000..10b71f285
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Skopje.rb
@@ -0,0 +1,13 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Europe
+ module Skopje
+ include TimezoneDefinition
+
+ linked_timezone 'Europe/Skopje', 'Europe/Belgrade'
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Sofia.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Sofia.rb
new file mode 100644
index 000000000..38a70eceb
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Sofia.rb
@@ -0,0 +1,173 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Europe
+ module Sofia
+ include TimezoneDefinition
+
+ timezone 'Europe/Sofia' do |tz|
+ tz.offset :o0, 5596, 0, :LMT
+ tz.offset :o1, 7016, 0, :IMT
+ tz.offset :o2, 7200, 0, :EET
+ tz.offset :o3, 3600, 0, :CET
+ tz.offset :o4, 3600, 3600, :CEST
+ tz.offset :o5, 7200, 3600, :EEST
+
+ tz.transition 1879, 12, :o1, 52006653401, 21600
+ tz.transition 1894, 11, :o2, 26062154123, 10800
+ tz.transition 1942, 11, :o3, 58335973, 24
+ tz.transition 1943, 3, :o4, 58339501, 24
+ tz.transition 1943, 10, :o3, 58344037, 24
+ tz.transition 1944, 4, :o4, 58348405, 24
+ tz.transition 1944, 10, :o3, 58352773, 24
+ tz.transition 1945, 4, :o2, 29178571, 12
+ tz.transition 1979, 3, :o5, 291762000
+ tz.transition 1979, 9, :o2, 307576800
+ tz.transition 1980, 4, :o5, 323816400
+ tz.transition 1980, 9, :o2, 339026400
+ tz.transition 1981, 4, :o5, 355266000
+ tz.transition 1981, 9, :o2, 370393200
+ tz.transition 1982, 4, :o5, 386715600
+ tz.transition 1982, 9, :o2, 401846400
+ tz.transition 1983, 3, :o5, 417571200
+ tz.transition 1983, 9, :o2, 433296000
+ tz.transition 1984, 3, :o5, 449020800
+ tz.transition 1984, 9, :o2, 465350400
+ tz.transition 1985, 3, :o5, 481075200
+ tz.transition 1985, 9, :o2, 496800000
+ tz.transition 1986, 3, :o5, 512524800
+ tz.transition 1986, 9, :o2, 528249600
+ tz.transition 1987, 3, :o5, 543974400
+ tz.transition 1987, 9, :o2, 559699200
+ tz.transition 1988, 3, :o5, 575424000
+ tz.transition 1988, 9, :o2, 591148800
+ tz.transition 1989, 3, :o5, 606873600
+ tz.transition 1989, 9, :o2, 622598400
+ tz.transition 1990, 3, :o5, 638323200
+ tz.transition 1990, 9, :o2, 654652800
+ tz.transition 1991, 3, :o5, 670370400
+ tz.transition 1991, 9, :o2, 686091600
+ tz.transition 1992, 3, :o5, 701820000
+ tz.transition 1992, 9, :o2, 717541200
+ tz.transition 1993, 3, :o5, 733269600
+ tz.transition 1993, 9, :o2, 748990800
+ tz.transition 1994, 3, :o5, 764719200
+ tz.transition 1994, 9, :o2, 780440400
+ tz.transition 1995, 3, :o5, 796168800
+ tz.transition 1995, 9, :o2, 811890000
+ tz.transition 1996, 3, :o5, 828223200
+ tz.transition 1996, 10, :o2, 846363600
+ tz.transition 1997, 3, :o5, 859683600
+ tz.transition 1997, 10, :o2, 877827600
+ tz.transition 1998, 3, :o5, 891133200
+ tz.transition 1998, 10, :o2, 909277200
+ tz.transition 1999, 3, :o5, 922582800
+ tz.transition 1999, 10, :o2, 941331600
+ tz.transition 2000, 3, :o5, 954032400
+ tz.transition 2000, 10, :o2, 972781200
+ tz.transition 2001, 3, :o5, 985482000
+ tz.transition 2001, 10, :o2, 1004230800
+ tz.transition 2002, 3, :o5, 1017536400
+ tz.transition 2002, 10, :o2, 1035680400
+ tz.transition 2003, 3, :o5, 1048986000
+ tz.transition 2003, 10, :o2, 1067130000
+ tz.transition 2004, 3, :o5, 1080435600
+ tz.transition 2004, 10, :o2, 1099184400
+ tz.transition 2005, 3, :o5, 1111885200
+ tz.transition 2005, 10, :o2, 1130634000
+ tz.transition 2006, 3, :o5, 1143334800
+ tz.transition 2006, 10, :o2, 1162083600
+ tz.transition 2007, 3, :o5, 1174784400
+ tz.transition 2007, 10, :o2, 1193533200
+ tz.transition 2008, 3, :o5, 1206838800
+ tz.transition 2008, 10, :o2, 1224982800
+ tz.transition 2009, 3, :o5, 1238288400
+ tz.transition 2009, 10, :o2, 1256432400
+ tz.transition 2010, 3, :o5, 1269738000
+ tz.transition 2010, 10, :o2, 1288486800
+ tz.transition 2011, 3, :o5, 1301187600
+ tz.transition 2011, 10, :o2, 1319936400
+ tz.transition 2012, 3, :o5, 1332637200
+ tz.transition 2012, 10, :o2, 1351386000
+ tz.transition 2013, 3, :o5, 1364691600
+ tz.transition 2013, 10, :o2, 1382835600
+ tz.transition 2014, 3, :o5, 1396141200
+ tz.transition 2014, 10, :o2, 1414285200
+ tz.transition 2015, 3, :o5, 1427590800
+ tz.transition 2015, 10, :o2, 1445734800
+ tz.transition 2016, 3, :o5, 1459040400
+ tz.transition 2016, 10, :o2, 1477789200
+ tz.transition 2017, 3, :o5, 1490490000
+ tz.transition 2017, 10, :o2, 1509238800
+ tz.transition 2018, 3, :o5, 1521939600
+ tz.transition 2018, 10, :o2, 1540688400
+ tz.transition 2019, 3, :o5, 1553994000
+ tz.transition 2019, 10, :o2, 1572138000
+ tz.transition 2020, 3, :o5, 1585443600
+ tz.transition 2020, 10, :o2, 1603587600
+ tz.transition 2021, 3, :o5, 1616893200
+ tz.transition 2021, 10, :o2, 1635642000
+ tz.transition 2022, 3, :o5, 1648342800
+ tz.transition 2022, 10, :o2, 1667091600
+ tz.transition 2023, 3, :o5, 1679792400
+ tz.transition 2023, 10, :o2, 1698541200
+ tz.transition 2024, 3, :o5, 1711846800
+ tz.transition 2024, 10, :o2, 1729990800
+ tz.transition 2025, 3, :o5, 1743296400
+ tz.transition 2025, 10, :o2, 1761440400
+ tz.transition 2026, 3, :o5, 1774746000
+ tz.transition 2026, 10, :o2, 1792890000
+ tz.transition 2027, 3, :o5, 1806195600
+ tz.transition 2027, 10, :o2, 1824944400
+ tz.transition 2028, 3, :o5, 1837645200
+ tz.transition 2028, 10, :o2, 1856394000
+ tz.transition 2029, 3, :o5, 1869094800
+ tz.transition 2029, 10, :o2, 1887843600
+ tz.transition 2030, 3, :o5, 1901149200
+ tz.transition 2030, 10, :o2, 1919293200
+ tz.transition 2031, 3, :o5, 1932598800
+ tz.transition 2031, 10, :o2, 1950742800
+ tz.transition 2032, 3, :o5, 1964048400
+ tz.transition 2032, 10, :o2, 1982797200
+ tz.transition 2033, 3, :o5, 1995498000
+ tz.transition 2033, 10, :o2, 2014246800
+ tz.transition 2034, 3, :o5, 2026947600
+ tz.transition 2034, 10, :o2, 2045696400
+ tz.transition 2035, 3, :o5, 2058397200
+ tz.transition 2035, 10, :o2, 2077146000
+ tz.transition 2036, 3, :o5, 2090451600
+ tz.transition 2036, 10, :o2, 2108595600
+ tz.transition 2037, 3, :o5, 2121901200
+ tz.transition 2037, 10, :o2, 2140045200
+ tz.transition 2038, 3, :o5, 59172253, 24
+ tz.transition 2038, 10, :o2, 59177461, 24
+ tz.transition 2039, 3, :o5, 59180989, 24
+ tz.transition 2039, 10, :o2, 59186197, 24
+ tz.transition 2040, 3, :o5, 59189725, 24
+ tz.transition 2040, 10, :o2, 59194933, 24
+ tz.transition 2041, 3, :o5, 59198629, 24
+ tz.transition 2041, 10, :o2, 59203669, 24
+ tz.transition 2042, 3, :o5, 59207365, 24
+ tz.transition 2042, 10, :o2, 59212405, 24
+ tz.transition 2043, 3, :o5, 59216101, 24
+ tz.transition 2043, 10, :o2, 59221141, 24
+ tz.transition 2044, 3, :o5, 59224837, 24
+ tz.transition 2044, 10, :o2, 59230045, 24
+ tz.transition 2045, 3, :o5, 59233573, 24
+ tz.transition 2045, 10, :o2, 59238781, 24
+ tz.transition 2046, 3, :o5, 59242309, 24
+ tz.transition 2046, 10, :o2, 59247517, 24
+ tz.transition 2047, 3, :o5, 59251213, 24
+ tz.transition 2047, 10, :o2, 59256253, 24
+ tz.transition 2048, 3, :o5, 59259949, 24
+ tz.transition 2048, 10, :o2, 59264989, 24
+ tz.transition 2049, 3, :o5, 59268685, 24
+ tz.transition 2049, 10, :o2, 59273893, 24
+ tz.transition 2050, 3, :o5, 59277421, 24
+ tz.transition 2050, 10, :o2, 59282629, 24
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Stockholm.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Stockholm.rb
new file mode 100644
index 000000000..43db70fa6
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Stockholm.rb
@@ -0,0 +1,165 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Europe
+ module Stockholm
+ include TimezoneDefinition
+
+ timezone 'Europe/Stockholm' do |tz|
+ tz.offset :o0, 4332, 0, :LMT
+ tz.offset :o1, 3614, 0, :SET
+ tz.offset :o2, 3600, 0, :CET
+ tz.offset :o3, 3600, 3600, :CEST
+
+ tz.transition 1878, 12, :o1, 17332923239, 7200
+ tz.transition 1899, 12, :o2, 104328883793, 43200
+ tz.transition 1916, 5, :o3, 29051981, 12
+ tz.transition 1916, 9, :o2, 58107299, 24
+ tz.transition 1980, 4, :o3, 323830800
+ tz.transition 1980, 9, :o2, 338950800
+ tz.transition 1981, 3, :o3, 354675600
+ tz.transition 1981, 9, :o2, 370400400
+ tz.transition 1982, 3, :o3, 386125200
+ tz.transition 1982, 9, :o2, 401850000
+ tz.transition 1983, 3, :o3, 417574800
+ tz.transition 1983, 9, :o2, 433299600
+ tz.transition 1984, 3, :o3, 449024400
+ tz.transition 1984, 9, :o2, 465354000
+ tz.transition 1985, 3, :o3, 481078800
+ tz.transition 1985, 9, :o2, 496803600
+ tz.transition 1986, 3, :o3, 512528400
+ tz.transition 1986, 9, :o2, 528253200
+ tz.transition 1987, 3, :o3, 543978000
+ tz.transition 1987, 9, :o2, 559702800
+ tz.transition 1988, 3, :o3, 575427600
+ tz.transition 1988, 9, :o2, 591152400
+ tz.transition 1989, 3, :o3, 606877200
+ tz.transition 1989, 9, :o2, 622602000
+ tz.transition 1990, 3, :o3, 638326800
+ tz.transition 1990, 9, :o2, 654656400
+ tz.transition 1991, 3, :o3, 670381200
+ tz.transition 1991, 9, :o2, 686106000
+ tz.transition 1992, 3, :o3, 701830800
+ tz.transition 1992, 9, :o2, 717555600
+ tz.transition 1993, 3, :o3, 733280400
+ tz.transition 1993, 9, :o2, 749005200
+ tz.transition 1994, 3, :o3, 764730000
+ tz.transition 1994, 9, :o2, 780454800
+ tz.transition 1995, 3, :o3, 796179600
+ tz.transition 1995, 9, :o2, 811904400
+ tz.transition 1996, 3, :o3, 828234000
+ tz.transition 1996, 10, :o2, 846378000
+ tz.transition 1997, 3, :o3, 859683600
+ tz.transition 1997, 10, :o2, 877827600
+ tz.transition 1998, 3, :o3, 891133200
+ tz.transition 1998, 10, :o2, 909277200
+ tz.transition 1999, 3, :o3, 922582800
+ tz.transition 1999, 10, :o2, 941331600
+ tz.transition 2000, 3, :o3, 954032400
+ tz.transition 2000, 10, :o2, 972781200
+ tz.transition 2001, 3, :o3, 985482000
+ tz.transition 2001, 10, :o2, 1004230800
+ tz.transition 2002, 3, :o3, 1017536400
+ tz.transition 2002, 10, :o2, 1035680400
+ tz.transition 2003, 3, :o3, 1048986000
+ tz.transition 2003, 10, :o2, 1067130000
+ tz.transition 2004, 3, :o3, 1080435600
+ tz.transition 2004, 10, :o2, 1099184400
+ tz.transition 2005, 3, :o3, 1111885200
+ tz.transition 2005, 10, :o2, 1130634000
+ tz.transition 2006, 3, :o3, 1143334800
+ tz.transition 2006, 10, :o2, 1162083600
+ tz.transition 2007, 3, :o3, 1174784400
+ tz.transition 2007, 10, :o2, 1193533200
+ tz.transition 2008, 3, :o3, 1206838800
+ tz.transition 2008, 10, :o2, 1224982800
+ tz.transition 2009, 3, :o3, 1238288400
+ tz.transition 2009, 10, :o2, 1256432400
+ tz.transition 2010, 3, :o3, 1269738000
+ tz.transition 2010, 10, :o2, 1288486800
+ tz.transition 2011, 3, :o3, 1301187600
+ tz.transition 2011, 10, :o2, 1319936400
+ tz.transition 2012, 3, :o3, 1332637200
+ tz.transition 2012, 10, :o2, 1351386000
+ tz.transition 2013, 3, :o3, 1364691600
+ tz.transition 2013, 10, :o2, 1382835600
+ tz.transition 2014, 3, :o3, 1396141200
+ tz.transition 2014, 10, :o2, 1414285200
+ tz.transition 2015, 3, :o3, 1427590800
+ tz.transition 2015, 10, :o2, 1445734800
+ tz.transition 2016, 3, :o3, 1459040400
+ tz.transition 2016, 10, :o2, 1477789200
+ tz.transition 2017, 3, :o3, 1490490000
+ tz.transition 2017, 10, :o2, 1509238800
+ tz.transition 2018, 3, :o3, 1521939600
+ tz.transition 2018, 10, :o2, 1540688400
+ tz.transition 2019, 3, :o3, 1553994000
+ tz.transition 2019, 10, :o2, 1572138000
+ tz.transition 2020, 3, :o3, 1585443600
+ tz.transition 2020, 10, :o2, 1603587600
+ tz.transition 2021, 3, :o3, 1616893200
+ tz.transition 2021, 10, :o2, 1635642000
+ tz.transition 2022, 3, :o3, 1648342800
+ tz.transition 2022, 10, :o2, 1667091600
+ tz.transition 2023, 3, :o3, 1679792400
+ tz.transition 2023, 10, :o2, 1698541200
+ tz.transition 2024, 3, :o3, 1711846800
+ tz.transition 2024, 10, :o2, 1729990800
+ tz.transition 2025, 3, :o3, 1743296400
+ tz.transition 2025, 10, :o2, 1761440400
+ tz.transition 2026, 3, :o3, 1774746000
+ tz.transition 2026, 10, :o2, 1792890000
+ tz.transition 2027, 3, :o3, 1806195600
+ tz.transition 2027, 10, :o2, 1824944400
+ tz.transition 2028, 3, :o3, 1837645200
+ tz.transition 2028, 10, :o2, 1856394000
+ tz.transition 2029, 3, :o3, 1869094800
+ tz.transition 2029, 10, :o2, 1887843600
+ tz.transition 2030, 3, :o3, 1901149200
+ tz.transition 2030, 10, :o2, 1919293200
+ tz.transition 2031, 3, :o3, 1932598800
+ tz.transition 2031, 10, :o2, 1950742800
+ tz.transition 2032, 3, :o3, 1964048400
+ tz.transition 2032, 10, :o2, 1982797200
+ tz.transition 2033, 3, :o3, 1995498000
+ tz.transition 2033, 10, :o2, 2014246800
+ tz.transition 2034, 3, :o3, 2026947600
+ tz.transition 2034, 10, :o2, 2045696400
+ tz.transition 2035, 3, :o3, 2058397200
+ tz.transition 2035, 10, :o2, 2077146000
+ tz.transition 2036, 3, :o3, 2090451600
+ tz.transition 2036, 10, :o2, 2108595600
+ tz.transition 2037, 3, :o3, 2121901200
+ tz.transition 2037, 10, :o2, 2140045200
+ tz.transition 2038, 3, :o3, 59172253, 24
+ tz.transition 2038, 10, :o2, 59177461, 24
+ tz.transition 2039, 3, :o3, 59180989, 24
+ tz.transition 2039, 10, :o2, 59186197, 24
+ tz.transition 2040, 3, :o3, 59189725, 24
+ tz.transition 2040, 10, :o2, 59194933, 24
+ tz.transition 2041, 3, :o3, 59198629, 24
+ tz.transition 2041, 10, :o2, 59203669, 24
+ tz.transition 2042, 3, :o3, 59207365, 24
+ tz.transition 2042, 10, :o2, 59212405, 24
+ tz.transition 2043, 3, :o3, 59216101, 24
+ tz.transition 2043, 10, :o2, 59221141, 24
+ tz.transition 2044, 3, :o3, 59224837, 24
+ tz.transition 2044, 10, :o2, 59230045, 24
+ tz.transition 2045, 3, :o3, 59233573, 24
+ tz.transition 2045, 10, :o2, 59238781, 24
+ tz.transition 2046, 3, :o3, 59242309, 24
+ tz.transition 2046, 10, :o2, 59247517, 24
+ tz.transition 2047, 3, :o3, 59251213, 24
+ tz.transition 2047, 10, :o2, 59256253, 24
+ tz.transition 2048, 3, :o3, 59259949, 24
+ tz.transition 2048, 10, :o2, 59264989, 24
+ tz.transition 2049, 3, :o3, 59268685, 24
+ tz.transition 2049, 10, :o2, 59273893, 24
+ tz.transition 2050, 3, :o3, 59277421, 24
+ tz.transition 2050, 10, :o2, 59282629, 24
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Tallinn.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Tallinn.rb
new file mode 100644
index 000000000..de5a8569f
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Tallinn.rb
@@ -0,0 +1,172 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Europe
+ module Tallinn
+ include TimezoneDefinition
+
+ timezone 'Europe/Tallinn' do |tz|
+ tz.offset :o0, 5940, 0, :LMT
+ tz.offset :o1, 5940, 0, :TMT
+ tz.offset :o2, 3600, 0, :CET
+ tz.offset :o3, 3600, 3600, :CEST
+ tz.offset :o4, 7200, 0, :EET
+ tz.offset :o5, 10800, 0, :MSK
+ tz.offset :o6, 10800, 3600, :MSD
+ tz.offset :o7, 7200, 3600, :EEST
+
+ tz.transition 1879, 12, :o1, 385234469, 160
+ tz.transition 1918, 1, :o2, 387460069, 160
+ tz.transition 1918, 4, :o3, 58120765, 24
+ tz.transition 1918, 9, :o2, 58124461, 24
+ tz.transition 1919, 6, :o1, 58131371, 24
+ tz.transition 1921, 4, :o4, 387649669, 160
+ tz.transition 1940, 8, :o5, 29158169, 12
+ tz.transition 1941, 9, :o3, 19442019, 8
+ tz.transition 1942, 11, :o2, 58335973, 24
+ tz.transition 1943, 3, :o3, 58339501, 24
+ tz.transition 1943, 10, :o2, 58344037, 24
+ tz.transition 1944, 4, :o3, 58348405, 24
+ tz.transition 1944, 9, :o5, 29176265, 12
+ tz.transition 1981, 3, :o6, 354920400
+ tz.transition 1981, 9, :o5, 370728000
+ tz.transition 1982, 3, :o6, 386456400
+ tz.transition 1982, 9, :o5, 402264000
+ tz.transition 1983, 3, :o6, 417992400
+ tz.transition 1983, 9, :o5, 433800000
+ tz.transition 1984, 3, :o6, 449614800
+ tz.transition 1984, 9, :o5, 465346800
+ tz.transition 1985, 3, :o6, 481071600
+ tz.transition 1985, 9, :o5, 496796400
+ tz.transition 1986, 3, :o6, 512521200
+ tz.transition 1986, 9, :o5, 528246000
+ tz.transition 1987, 3, :o6, 543970800
+ tz.transition 1987, 9, :o5, 559695600
+ tz.transition 1988, 3, :o6, 575420400
+ tz.transition 1988, 9, :o5, 591145200
+ tz.transition 1989, 3, :o7, 606870000
+ tz.transition 1989, 9, :o4, 622598400
+ tz.transition 1990, 3, :o7, 638323200
+ tz.transition 1990, 9, :o4, 654652800
+ tz.transition 1991, 3, :o7, 670377600
+ tz.transition 1991, 9, :o4, 686102400
+ tz.transition 1992, 3, :o7, 701827200
+ tz.transition 1992, 9, :o4, 717552000
+ tz.transition 1993, 3, :o7, 733276800
+ tz.transition 1993, 9, :o4, 749001600
+ tz.transition 1994, 3, :o7, 764726400
+ tz.transition 1994, 9, :o4, 780451200
+ tz.transition 1995, 3, :o7, 796176000
+ tz.transition 1995, 9, :o4, 811900800
+ tz.transition 1996, 3, :o7, 828230400
+ tz.transition 1996, 10, :o4, 846374400
+ tz.transition 1997, 3, :o7, 859680000
+ tz.transition 1997, 10, :o4, 877824000
+ tz.transition 1998, 3, :o7, 891129600
+ tz.transition 1998, 10, :o4, 909277200
+ tz.transition 1999, 3, :o7, 922582800
+ tz.transition 1999, 10, :o4, 941331600
+ tz.transition 2002, 3, :o7, 1017536400
+ tz.transition 2002, 10, :o4, 1035680400
+ tz.transition 2003, 3, :o7, 1048986000
+ tz.transition 2003, 10, :o4, 1067130000
+ tz.transition 2004, 3, :o7, 1080435600
+ tz.transition 2004, 10, :o4, 1099184400
+ tz.transition 2005, 3, :o7, 1111885200
+ tz.transition 2005, 10, :o4, 1130634000
+ tz.transition 2006, 3, :o7, 1143334800
+ tz.transition 2006, 10, :o4, 1162083600
+ tz.transition 2007, 3, :o7, 1174784400
+ tz.transition 2007, 10, :o4, 1193533200
+ tz.transition 2008, 3, :o7, 1206838800
+ tz.transition 2008, 10, :o4, 1224982800
+ tz.transition 2009, 3, :o7, 1238288400
+ tz.transition 2009, 10, :o4, 1256432400
+ tz.transition 2010, 3, :o7, 1269738000
+ tz.transition 2010, 10, :o4, 1288486800
+ tz.transition 2011, 3, :o7, 1301187600
+ tz.transition 2011, 10, :o4, 1319936400
+ tz.transition 2012, 3, :o7, 1332637200
+ tz.transition 2012, 10, :o4, 1351386000
+ tz.transition 2013, 3, :o7, 1364691600
+ tz.transition 2013, 10, :o4, 1382835600
+ tz.transition 2014, 3, :o7, 1396141200
+ tz.transition 2014, 10, :o4, 1414285200
+ tz.transition 2015, 3, :o7, 1427590800
+ tz.transition 2015, 10, :o4, 1445734800
+ tz.transition 2016, 3, :o7, 1459040400
+ tz.transition 2016, 10, :o4, 1477789200
+ tz.transition 2017, 3, :o7, 1490490000
+ tz.transition 2017, 10, :o4, 1509238800
+ tz.transition 2018, 3, :o7, 1521939600
+ tz.transition 2018, 10, :o4, 1540688400
+ tz.transition 2019, 3, :o7, 1553994000
+ tz.transition 2019, 10, :o4, 1572138000
+ tz.transition 2020, 3, :o7, 1585443600
+ tz.transition 2020, 10, :o4, 1603587600
+ tz.transition 2021, 3, :o7, 1616893200
+ tz.transition 2021, 10, :o4, 1635642000
+ tz.transition 2022, 3, :o7, 1648342800
+ tz.transition 2022, 10, :o4, 1667091600
+ tz.transition 2023, 3, :o7, 1679792400
+ tz.transition 2023, 10, :o4, 1698541200
+ tz.transition 2024, 3, :o7, 1711846800
+ tz.transition 2024, 10, :o4, 1729990800
+ tz.transition 2025, 3, :o7, 1743296400
+ tz.transition 2025, 10, :o4, 1761440400
+ tz.transition 2026, 3, :o7, 1774746000
+ tz.transition 2026, 10, :o4, 1792890000
+ tz.transition 2027, 3, :o7, 1806195600
+ tz.transition 2027, 10, :o4, 1824944400
+ tz.transition 2028, 3, :o7, 1837645200
+ tz.transition 2028, 10, :o4, 1856394000
+ tz.transition 2029, 3, :o7, 1869094800
+ tz.transition 2029, 10, :o4, 1887843600
+ tz.transition 2030, 3, :o7, 1901149200
+ tz.transition 2030, 10, :o4, 1919293200
+ tz.transition 2031, 3, :o7, 1932598800
+ tz.transition 2031, 10, :o4, 1950742800
+ tz.transition 2032, 3, :o7, 1964048400
+ tz.transition 2032, 10, :o4, 1982797200
+ tz.transition 2033, 3, :o7, 1995498000
+ tz.transition 2033, 10, :o4, 2014246800
+ tz.transition 2034, 3, :o7, 2026947600
+ tz.transition 2034, 10, :o4, 2045696400
+ tz.transition 2035, 3, :o7, 2058397200
+ tz.transition 2035, 10, :o4, 2077146000
+ tz.transition 2036, 3, :o7, 2090451600
+ tz.transition 2036, 10, :o4, 2108595600
+ tz.transition 2037, 3, :o7, 2121901200
+ tz.transition 2037, 10, :o4, 2140045200
+ tz.transition 2038, 3, :o7, 59172253, 24
+ tz.transition 2038, 10, :o4, 59177461, 24
+ tz.transition 2039, 3, :o7, 59180989, 24
+ tz.transition 2039, 10, :o4, 59186197, 24
+ tz.transition 2040, 3, :o7, 59189725, 24
+ tz.transition 2040, 10, :o4, 59194933, 24
+ tz.transition 2041, 3, :o7, 59198629, 24
+ tz.transition 2041, 10, :o4, 59203669, 24
+ tz.transition 2042, 3, :o7, 59207365, 24
+ tz.transition 2042, 10, :o4, 59212405, 24
+ tz.transition 2043, 3, :o7, 59216101, 24
+ tz.transition 2043, 10, :o4, 59221141, 24
+ tz.transition 2044, 3, :o7, 59224837, 24
+ tz.transition 2044, 10, :o4, 59230045, 24
+ tz.transition 2045, 3, :o7, 59233573, 24
+ tz.transition 2045, 10, :o4, 59238781, 24
+ tz.transition 2046, 3, :o7, 59242309, 24
+ tz.transition 2046, 10, :o4, 59247517, 24
+ tz.transition 2047, 3, :o7, 59251213, 24
+ tz.transition 2047, 10, :o4, 59256253, 24
+ tz.transition 2048, 3, :o7, 59259949, 24
+ tz.transition 2048, 10, :o4, 59264989, 24
+ tz.transition 2049, 3, :o7, 59268685, 24
+ tz.transition 2049, 10, :o4, 59273893, 24
+ tz.transition 2050, 3, :o7, 59277421, 24
+ tz.transition 2050, 10, :o4, 59282629, 24
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Vienna.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Vienna.rb
new file mode 100644
index 000000000..990aabab6
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Vienna.rb
@@ -0,0 +1,183 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Europe
+ module Vienna
+ include TimezoneDefinition
+
+ timezone 'Europe/Vienna' do |tz|
+ tz.offset :o0, 3920, 0, :LMT
+ tz.offset :o1, 3600, 0, :CET
+ tz.offset :o2, 3600, 3600, :CEST
+
+ tz.transition 1893, 3, :o1, 2605558811, 1080
+ tz.transition 1916, 4, :o2, 29051813, 12
+ tz.transition 1916, 9, :o1, 58107299, 24
+ tz.transition 1917, 4, :o2, 58112029, 24
+ tz.transition 1917, 9, :o1, 58115725, 24
+ tz.transition 1918, 4, :o2, 58120765, 24
+ tz.transition 1918, 9, :o1, 58124461, 24
+ tz.transition 1920, 4, :o2, 58138069, 24
+ tz.transition 1920, 9, :o1, 58141933, 24
+ tz.transition 1940, 4, :o2, 58313293, 24
+ tz.transition 1942, 11, :o1, 58335973, 24
+ tz.transition 1943, 3, :o2, 58339501, 24
+ tz.transition 1943, 10, :o1, 58344037, 24
+ tz.transition 1944, 4, :o2, 58348405, 24
+ tz.transition 1944, 10, :o1, 58352773, 24
+ tz.transition 1945, 4, :o2, 58357141, 24
+ tz.transition 1945, 4, :o1, 58357381, 24
+ tz.transition 1946, 4, :o2, 58366189, 24
+ tz.transition 1946, 10, :o1, 58370389, 24
+ tz.transition 1947, 4, :o2, 58374757, 24
+ tz.transition 1947, 10, :o1, 58379125, 24
+ tz.transition 1948, 4, :o2, 58383829, 24
+ tz.transition 1948, 10, :o1, 58387861, 24
+ tz.transition 1980, 4, :o2, 323823600
+ tz.transition 1980, 9, :o1, 338940000
+ tz.transition 1981, 3, :o2, 354675600
+ tz.transition 1981, 9, :o1, 370400400
+ tz.transition 1982, 3, :o2, 386125200
+ tz.transition 1982, 9, :o1, 401850000
+ tz.transition 1983, 3, :o2, 417574800
+ tz.transition 1983, 9, :o1, 433299600
+ tz.transition 1984, 3, :o2, 449024400
+ tz.transition 1984, 9, :o1, 465354000
+ tz.transition 1985, 3, :o2, 481078800
+ tz.transition 1985, 9, :o1, 496803600
+ tz.transition 1986, 3, :o2, 512528400
+ tz.transition 1986, 9, :o1, 528253200
+ tz.transition 1987, 3, :o2, 543978000
+ tz.transition 1987, 9, :o1, 559702800
+ tz.transition 1988, 3, :o2, 575427600
+ tz.transition 1988, 9, :o1, 591152400
+ tz.transition 1989, 3, :o2, 606877200
+ tz.transition 1989, 9, :o1, 622602000
+ tz.transition 1990, 3, :o2, 638326800
+ tz.transition 1990, 9, :o1, 654656400
+ tz.transition 1991, 3, :o2, 670381200
+ tz.transition 1991, 9, :o1, 686106000
+ tz.transition 1992, 3, :o2, 701830800
+ tz.transition 1992, 9, :o1, 717555600
+ tz.transition 1993, 3, :o2, 733280400
+ tz.transition 1993, 9, :o1, 749005200
+ tz.transition 1994, 3, :o2, 764730000
+ tz.transition 1994, 9, :o1, 780454800
+ tz.transition 1995, 3, :o2, 796179600
+ tz.transition 1995, 9, :o1, 811904400
+ tz.transition 1996, 3, :o2, 828234000
+ tz.transition 1996, 10, :o1, 846378000
+ tz.transition 1997, 3, :o2, 859683600
+ tz.transition 1997, 10, :o1, 877827600
+ tz.transition 1998, 3, :o2, 891133200
+ tz.transition 1998, 10, :o1, 909277200
+ tz.transition 1999, 3, :o2, 922582800
+ tz.transition 1999, 10, :o1, 941331600
+ tz.transition 2000, 3, :o2, 954032400
+ tz.transition 2000, 10, :o1, 972781200
+ tz.transition 2001, 3, :o2, 985482000
+ tz.transition 2001, 10, :o1, 1004230800
+ tz.transition 2002, 3, :o2, 1017536400
+ tz.transition 2002, 10, :o1, 1035680400
+ tz.transition 2003, 3, :o2, 1048986000
+ tz.transition 2003, 10, :o1, 1067130000
+ tz.transition 2004, 3, :o2, 1080435600
+ tz.transition 2004, 10, :o1, 1099184400
+ tz.transition 2005, 3, :o2, 1111885200
+ tz.transition 2005, 10, :o1, 1130634000
+ tz.transition 2006, 3, :o2, 1143334800
+ tz.transition 2006, 10, :o1, 1162083600
+ tz.transition 2007, 3, :o2, 1174784400
+ tz.transition 2007, 10, :o1, 1193533200
+ tz.transition 2008, 3, :o2, 1206838800
+ tz.transition 2008, 10, :o1, 1224982800
+ tz.transition 2009, 3, :o2, 1238288400
+ tz.transition 2009, 10, :o1, 1256432400
+ tz.transition 2010, 3, :o2, 1269738000
+ tz.transition 2010, 10, :o1, 1288486800
+ tz.transition 2011, 3, :o2, 1301187600
+ tz.transition 2011, 10, :o1, 1319936400
+ tz.transition 2012, 3, :o2, 1332637200
+ tz.transition 2012, 10, :o1, 1351386000
+ tz.transition 2013, 3, :o2, 1364691600
+ tz.transition 2013, 10, :o1, 1382835600
+ tz.transition 2014, 3, :o2, 1396141200
+ tz.transition 2014, 10, :o1, 1414285200
+ tz.transition 2015, 3, :o2, 1427590800
+ tz.transition 2015, 10, :o1, 1445734800
+ tz.transition 2016, 3, :o2, 1459040400
+ tz.transition 2016, 10, :o1, 1477789200
+ tz.transition 2017, 3, :o2, 1490490000
+ tz.transition 2017, 10, :o1, 1509238800
+ tz.transition 2018, 3, :o2, 1521939600
+ tz.transition 2018, 10, :o1, 1540688400
+ tz.transition 2019, 3, :o2, 1553994000
+ tz.transition 2019, 10, :o1, 1572138000
+ tz.transition 2020, 3, :o2, 1585443600
+ tz.transition 2020, 10, :o1, 1603587600
+ tz.transition 2021, 3, :o2, 1616893200
+ tz.transition 2021, 10, :o1, 1635642000
+ tz.transition 2022, 3, :o2, 1648342800
+ tz.transition 2022, 10, :o1, 1667091600
+ tz.transition 2023, 3, :o2, 1679792400
+ tz.transition 2023, 10, :o1, 1698541200
+ tz.transition 2024, 3, :o2, 1711846800
+ tz.transition 2024, 10, :o1, 1729990800
+ tz.transition 2025, 3, :o2, 1743296400
+ tz.transition 2025, 10, :o1, 1761440400
+ tz.transition 2026, 3, :o2, 1774746000
+ tz.transition 2026, 10, :o1, 1792890000
+ tz.transition 2027, 3, :o2, 1806195600
+ tz.transition 2027, 10, :o1, 1824944400
+ tz.transition 2028, 3, :o2, 1837645200
+ tz.transition 2028, 10, :o1, 1856394000
+ tz.transition 2029, 3, :o2, 1869094800
+ tz.transition 2029, 10, :o1, 1887843600
+ tz.transition 2030, 3, :o2, 1901149200
+ tz.transition 2030, 10, :o1, 1919293200
+ tz.transition 2031, 3, :o2, 1932598800
+ tz.transition 2031, 10, :o1, 1950742800
+ tz.transition 2032, 3, :o2, 1964048400
+ tz.transition 2032, 10, :o1, 1982797200
+ tz.transition 2033, 3, :o2, 1995498000
+ tz.transition 2033, 10, :o1, 2014246800
+ tz.transition 2034, 3, :o2, 2026947600
+ tz.transition 2034, 10, :o1, 2045696400
+ tz.transition 2035, 3, :o2, 2058397200
+ tz.transition 2035, 10, :o1, 2077146000
+ tz.transition 2036, 3, :o2, 2090451600
+ tz.transition 2036, 10, :o1, 2108595600
+ tz.transition 2037, 3, :o2, 2121901200
+ tz.transition 2037, 10, :o1, 2140045200
+ tz.transition 2038, 3, :o2, 59172253, 24
+ tz.transition 2038, 10, :o1, 59177461, 24
+ tz.transition 2039, 3, :o2, 59180989, 24
+ tz.transition 2039, 10, :o1, 59186197, 24
+ tz.transition 2040, 3, :o2, 59189725, 24
+ tz.transition 2040, 10, :o1, 59194933, 24
+ tz.transition 2041, 3, :o2, 59198629, 24
+ tz.transition 2041, 10, :o1, 59203669, 24
+ tz.transition 2042, 3, :o2, 59207365, 24
+ tz.transition 2042, 10, :o1, 59212405, 24
+ tz.transition 2043, 3, :o2, 59216101, 24
+ tz.transition 2043, 10, :o1, 59221141, 24
+ tz.transition 2044, 3, :o2, 59224837, 24
+ tz.transition 2044, 10, :o1, 59230045, 24
+ tz.transition 2045, 3, :o2, 59233573, 24
+ tz.transition 2045, 10, :o1, 59238781, 24
+ tz.transition 2046, 3, :o2, 59242309, 24
+ tz.transition 2046, 10, :o1, 59247517, 24
+ tz.transition 2047, 3, :o2, 59251213, 24
+ tz.transition 2047, 10, :o1, 59256253, 24
+ tz.transition 2048, 3, :o2, 59259949, 24
+ tz.transition 2048, 10, :o1, 59264989, 24
+ tz.transition 2049, 3, :o2, 59268685, 24
+ tz.transition 2049, 10, :o1, 59273893, 24
+ tz.transition 2050, 3, :o2, 59277421, 24
+ tz.transition 2050, 10, :o1, 59282629, 24
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Vilnius.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Vilnius.rb
new file mode 100644
index 000000000..d89d095a7
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Vilnius.rb
@@ -0,0 +1,170 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Europe
+ module Vilnius
+ include TimezoneDefinition
+
+ timezone 'Europe/Vilnius' do |tz|
+ tz.offset :o0, 6076, 0, :LMT
+ tz.offset :o1, 5040, 0, :WMT
+ tz.offset :o2, 5736, 0, :KMT
+ tz.offset :o3, 3600, 0, :CET
+ tz.offset :o4, 7200, 0, :EET
+ tz.offset :o5, 10800, 0, :MSK
+ tz.offset :o6, 3600, 3600, :CEST
+ tz.offset :o7, 10800, 3600, :MSD
+ tz.offset :o8, 7200, 3600, :EEST
+
+ tz.transition 1879, 12, :o1, 52006653281, 21600
+ tz.transition 1916, 12, :o2, 290547533, 120
+ tz.transition 1919, 10, :o3, 8720069161, 3600
+ tz.transition 1920, 7, :o4, 58140419, 24
+ tz.transition 1920, 10, :o3, 29071277, 12
+ tz.transition 1940, 8, :o5, 58316267, 24
+ tz.transition 1941, 6, :o6, 19441355, 8
+ tz.transition 1942, 11, :o3, 58335973, 24
+ tz.transition 1943, 3, :o6, 58339501, 24
+ tz.transition 1943, 10, :o3, 58344037, 24
+ tz.transition 1944, 4, :o6, 58348405, 24
+ tz.transition 1944, 7, :o5, 29175641, 12
+ tz.transition 1981, 3, :o7, 354920400
+ tz.transition 1981, 9, :o5, 370728000
+ tz.transition 1982, 3, :o7, 386456400
+ tz.transition 1982, 9, :o5, 402264000
+ tz.transition 1983, 3, :o7, 417992400
+ tz.transition 1983, 9, :o5, 433800000
+ tz.transition 1984, 3, :o7, 449614800
+ tz.transition 1984, 9, :o5, 465346800
+ tz.transition 1985, 3, :o7, 481071600
+ tz.transition 1985, 9, :o5, 496796400
+ tz.transition 1986, 3, :o7, 512521200
+ tz.transition 1986, 9, :o5, 528246000
+ tz.transition 1987, 3, :o7, 543970800
+ tz.transition 1987, 9, :o5, 559695600
+ tz.transition 1988, 3, :o7, 575420400
+ tz.transition 1988, 9, :o5, 591145200
+ tz.transition 1989, 3, :o7, 606870000
+ tz.transition 1989, 9, :o5, 622594800
+ tz.transition 1990, 3, :o7, 638319600
+ tz.transition 1990, 9, :o5, 654649200
+ tz.transition 1991, 3, :o8, 670374000
+ tz.transition 1991, 9, :o4, 686102400
+ tz.transition 1992, 3, :o8, 701827200
+ tz.transition 1992, 9, :o4, 717552000
+ tz.transition 1993, 3, :o8, 733276800
+ tz.transition 1993, 9, :o4, 749001600
+ tz.transition 1994, 3, :o8, 764726400
+ tz.transition 1994, 9, :o4, 780451200
+ tz.transition 1995, 3, :o8, 796176000
+ tz.transition 1995, 9, :o4, 811900800
+ tz.transition 1996, 3, :o8, 828230400
+ tz.transition 1996, 10, :o4, 846374400
+ tz.transition 1997, 3, :o8, 859680000
+ tz.transition 1997, 10, :o4, 877824000
+ tz.transition 1998, 3, :o6, 891133200
+ tz.transition 1998, 10, :o3, 909277200
+ tz.transition 1999, 3, :o6, 922582800
+ tz.transition 1999, 10, :o4, 941331600
+ tz.transition 2003, 3, :o8, 1048986000
+ tz.transition 2003, 10, :o4, 1067130000
+ tz.transition 2004, 3, :o8, 1080435600
+ tz.transition 2004, 10, :o4, 1099184400
+ tz.transition 2005, 3, :o8, 1111885200
+ tz.transition 2005, 10, :o4, 1130634000
+ tz.transition 2006, 3, :o8, 1143334800
+ tz.transition 2006, 10, :o4, 1162083600
+ tz.transition 2007, 3, :o8, 1174784400
+ tz.transition 2007, 10, :o4, 1193533200
+ tz.transition 2008, 3, :o8, 1206838800
+ tz.transition 2008, 10, :o4, 1224982800
+ tz.transition 2009, 3, :o8, 1238288400
+ tz.transition 2009, 10, :o4, 1256432400
+ tz.transition 2010, 3, :o8, 1269738000
+ tz.transition 2010, 10, :o4, 1288486800
+ tz.transition 2011, 3, :o8, 1301187600
+ tz.transition 2011, 10, :o4, 1319936400
+ tz.transition 2012, 3, :o8, 1332637200
+ tz.transition 2012, 10, :o4, 1351386000
+ tz.transition 2013, 3, :o8, 1364691600
+ tz.transition 2013, 10, :o4, 1382835600
+ tz.transition 2014, 3, :o8, 1396141200
+ tz.transition 2014, 10, :o4, 1414285200
+ tz.transition 2015, 3, :o8, 1427590800
+ tz.transition 2015, 10, :o4, 1445734800
+ tz.transition 2016, 3, :o8, 1459040400
+ tz.transition 2016, 10, :o4, 1477789200
+ tz.transition 2017, 3, :o8, 1490490000
+ tz.transition 2017, 10, :o4, 1509238800
+ tz.transition 2018, 3, :o8, 1521939600
+ tz.transition 2018, 10, :o4, 1540688400
+ tz.transition 2019, 3, :o8, 1553994000
+ tz.transition 2019, 10, :o4, 1572138000
+ tz.transition 2020, 3, :o8, 1585443600
+ tz.transition 2020, 10, :o4, 1603587600
+ tz.transition 2021, 3, :o8, 1616893200
+ tz.transition 2021, 10, :o4, 1635642000
+ tz.transition 2022, 3, :o8, 1648342800
+ tz.transition 2022, 10, :o4, 1667091600
+ tz.transition 2023, 3, :o8, 1679792400
+ tz.transition 2023, 10, :o4, 1698541200
+ tz.transition 2024, 3, :o8, 1711846800
+ tz.transition 2024, 10, :o4, 1729990800
+ tz.transition 2025, 3, :o8, 1743296400
+ tz.transition 2025, 10, :o4, 1761440400
+ tz.transition 2026, 3, :o8, 1774746000
+ tz.transition 2026, 10, :o4, 1792890000
+ tz.transition 2027, 3, :o8, 1806195600
+ tz.transition 2027, 10, :o4, 1824944400
+ tz.transition 2028, 3, :o8, 1837645200
+ tz.transition 2028, 10, :o4, 1856394000
+ tz.transition 2029, 3, :o8, 1869094800
+ tz.transition 2029, 10, :o4, 1887843600
+ tz.transition 2030, 3, :o8, 1901149200
+ tz.transition 2030, 10, :o4, 1919293200
+ tz.transition 2031, 3, :o8, 1932598800
+ tz.transition 2031, 10, :o4, 1950742800
+ tz.transition 2032, 3, :o8, 1964048400
+ tz.transition 2032, 10, :o4, 1982797200
+ tz.transition 2033, 3, :o8, 1995498000
+ tz.transition 2033, 10, :o4, 2014246800
+ tz.transition 2034, 3, :o8, 2026947600
+ tz.transition 2034, 10, :o4, 2045696400
+ tz.transition 2035, 3, :o8, 2058397200
+ tz.transition 2035, 10, :o4, 2077146000
+ tz.transition 2036, 3, :o8, 2090451600
+ tz.transition 2036, 10, :o4, 2108595600
+ tz.transition 2037, 3, :o8, 2121901200
+ tz.transition 2037, 10, :o4, 2140045200
+ tz.transition 2038, 3, :o8, 59172253, 24
+ tz.transition 2038, 10, :o4, 59177461, 24
+ tz.transition 2039, 3, :o8, 59180989, 24
+ tz.transition 2039, 10, :o4, 59186197, 24
+ tz.transition 2040, 3, :o8, 59189725, 24
+ tz.transition 2040, 10, :o4, 59194933, 24
+ tz.transition 2041, 3, :o8, 59198629, 24
+ tz.transition 2041, 10, :o4, 59203669, 24
+ tz.transition 2042, 3, :o8, 59207365, 24
+ tz.transition 2042, 10, :o4, 59212405, 24
+ tz.transition 2043, 3, :o8, 59216101, 24
+ tz.transition 2043, 10, :o4, 59221141, 24
+ tz.transition 2044, 3, :o8, 59224837, 24
+ tz.transition 2044, 10, :o4, 59230045, 24
+ tz.transition 2045, 3, :o8, 59233573, 24
+ tz.transition 2045, 10, :o4, 59238781, 24
+ tz.transition 2046, 3, :o8, 59242309, 24
+ tz.transition 2046, 10, :o4, 59247517, 24
+ tz.transition 2047, 3, :o8, 59251213, 24
+ tz.transition 2047, 10, :o4, 59256253, 24
+ tz.transition 2048, 3, :o8, 59259949, 24
+ tz.transition 2048, 10, :o4, 59264989, 24
+ tz.transition 2049, 3, :o8, 59268685, 24
+ tz.transition 2049, 10, :o4, 59273893, 24
+ tz.transition 2050, 3, :o8, 59277421, 24
+ tz.transition 2050, 10, :o4, 59282629, 24
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Warsaw.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Warsaw.rb
new file mode 100644
index 000000000..7fa51c269
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Warsaw.rb
@@ -0,0 +1,212 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Europe
+ module Warsaw
+ include TimezoneDefinition
+
+ timezone 'Europe/Warsaw' do |tz|
+ tz.offset :o0, 5040, 0, :LMT
+ tz.offset :o1, 5040, 0, :WMT
+ tz.offset :o2, 3600, 0, :CET
+ tz.offset :o3, 3600, 3600, :CEST
+ tz.offset :o4, 7200, 0, :EET
+ tz.offset :o5, 7200, 3600, :EEST
+
+ tz.transition 1879, 12, :o1, 288925853, 120
+ tz.transition 1915, 8, :o2, 290485733, 120
+ tz.transition 1916, 4, :o3, 29051813, 12
+ tz.transition 1916, 9, :o2, 58107299, 24
+ tz.transition 1917, 4, :o3, 58112029, 24
+ tz.transition 1917, 9, :o2, 58115725, 24
+ tz.transition 1918, 4, :o3, 58120765, 24
+ tz.transition 1918, 9, :o4, 58124461, 24
+ tz.transition 1919, 4, :o5, 4844127, 2
+ tz.transition 1919, 9, :o4, 4844435, 2
+ tz.transition 1922, 5, :o2, 29078477, 12
+ tz.transition 1940, 6, :o3, 58315285, 24
+ tz.transition 1942, 11, :o2, 58335973, 24
+ tz.transition 1943, 3, :o3, 58339501, 24
+ tz.transition 1943, 10, :o2, 58344037, 24
+ tz.transition 1944, 4, :o3, 58348405, 24
+ tz.transition 1944, 10, :o2, 4862735, 2
+ tz.transition 1945, 4, :o3, 58357787, 24
+ tz.transition 1945, 10, :o2, 29181125, 12
+ tz.transition 1946, 4, :o3, 58366187, 24
+ tz.transition 1946, 10, :o2, 58370413, 24
+ tz.transition 1947, 5, :o3, 58375429, 24
+ tz.transition 1947, 10, :o2, 58379125, 24
+ tz.transition 1948, 4, :o3, 58383829, 24
+ tz.transition 1948, 10, :o2, 58387861, 24
+ tz.transition 1949, 4, :o3, 58392397, 24
+ tz.transition 1949, 10, :o2, 58396597, 24
+ tz.transition 1957, 6, :o3, 4871983, 2
+ tz.transition 1957, 9, :o2, 4872221, 2
+ tz.transition 1958, 3, :o3, 4872585, 2
+ tz.transition 1958, 9, :o2, 4872949, 2
+ tz.transition 1959, 5, :o3, 4873439, 2
+ tz.transition 1959, 10, :o2, 4873691, 2
+ tz.transition 1960, 4, :o3, 4874055, 2
+ tz.transition 1960, 10, :o2, 4874419, 2
+ tz.transition 1961, 5, :o3, 4874895, 2
+ tz.transition 1961, 10, :o2, 4875147, 2
+ tz.transition 1962, 5, :o3, 4875623, 2
+ tz.transition 1962, 9, :o2, 4875875, 2
+ tz.transition 1963, 5, :o3, 4876351, 2
+ tz.transition 1963, 9, :o2, 4876603, 2
+ tz.transition 1964, 5, :o3, 4877093, 2
+ tz.transition 1964, 9, :o2, 4877331, 2
+ tz.transition 1977, 4, :o3, 228873600
+ tz.transition 1977, 9, :o2, 243993600
+ tz.transition 1978, 4, :o3, 260323200
+ tz.transition 1978, 10, :o2, 276048000
+ tz.transition 1979, 4, :o3, 291772800
+ tz.transition 1979, 9, :o2, 307497600
+ tz.transition 1980, 4, :o3, 323827200
+ tz.transition 1980, 9, :o2, 338947200
+ tz.transition 1981, 3, :o3, 354672000
+ tz.transition 1981, 9, :o2, 370396800
+ tz.transition 1982, 3, :o3, 386121600
+ tz.transition 1982, 9, :o2, 401846400
+ tz.transition 1983, 3, :o3, 417571200
+ tz.transition 1983, 9, :o2, 433296000
+ tz.transition 1984, 3, :o3, 449020800
+ tz.transition 1984, 9, :o2, 465350400
+ tz.transition 1985, 3, :o3, 481075200
+ tz.transition 1985, 9, :o2, 496800000
+ tz.transition 1986, 3, :o3, 512524800
+ tz.transition 1986, 9, :o2, 528249600
+ tz.transition 1987, 3, :o3, 543974400
+ tz.transition 1987, 9, :o2, 559699200
+ tz.transition 1988, 3, :o3, 575427600
+ tz.transition 1988, 9, :o2, 591152400
+ tz.transition 1989, 3, :o3, 606877200
+ tz.transition 1989, 9, :o2, 622602000
+ tz.transition 1990, 3, :o3, 638326800
+ tz.transition 1990, 9, :o2, 654656400
+ tz.transition 1991, 3, :o3, 670381200
+ tz.transition 1991, 9, :o2, 686106000
+ tz.transition 1992, 3, :o3, 701830800
+ tz.transition 1992, 9, :o2, 717555600
+ tz.transition 1993, 3, :o3, 733280400
+ tz.transition 1993, 9, :o2, 749005200
+ tz.transition 1994, 3, :o3, 764730000
+ tz.transition 1994, 9, :o2, 780454800
+ tz.transition 1995, 3, :o3, 796179600
+ tz.transition 1995, 9, :o2, 811904400
+ tz.transition 1996, 3, :o3, 828234000
+ tz.transition 1996, 10, :o2, 846378000
+ tz.transition 1997, 3, :o3, 859683600
+ tz.transition 1997, 10, :o2, 877827600
+ tz.transition 1998, 3, :o3, 891133200
+ tz.transition 1998, 10, :o2, 909277200
+ tz.transition 1999, 3, :o3, 922582800
+ tz.transition 1999, 10, :o2, 941331600
+ tz.transition 2000, 3, :o3, 954032400
+ tz.transition 2000, 10, :o2, 972781200
+ tz.transition 2001, 3, :o3, 985482000
+ tz.transition 2001, 10, :o2, 1004230800
+ tz.transition 2002, 3, :o3, 1017536400
+ tz.transition 2002, 10, :o2, 1035680400
+ tz.transition 2003, 3, :o3, 1048986000
+ tz.transition 2003, 10, :o2, 1067130000
+ tz.transition 2004, 3, :o3, 1080435600
+ tz.transition 2004, 10, :o2, 1099184400
+ tz.transition 2005, 3, :o3, 1111885200
+ tz.transition 2005, 10, :o2, 1130634000
+ tz.transition 2006, 3, :o3, 1143334800
+ tz.transition 2006, 10, :o2, 1162083600
+ tz.transition 2007, 3, :o3, 1174784400
+ tz.transition 2007, 10, :o2, 1193533200
+ tz.transition 2008, 3, :o3, 1206838800
+ tz.transition 2008, 10, :o2, 1224982800
+ tz.transition 2009, 3, :o3, 1238288400
+ tz.transition 2009, 10, :o2, 1256432400
+ tz.transition 2010, 3, :o3, 1269738000
+ tz.transition 2010, 10, :o2, 1288486800
+ tz.transition 2011, 3, :o3, 1301187600
+ tz.transition 2011, 10, :o2, 1319936400
+ tz.transition 2012, 3, :o3, 1332637200
+ tz.transition 2012, 10, :o2, 1351386000
+ tz.transition 2013, 3, :o3, 1364691600
+ tz.transition 2013, 10, :o2, 1382835600
+ tz.transition 2014, 3, :o3, 1396141200
+ tz.transition 2014, 10, :o2, 1414285200
+ tz.transition 2015, 3, :o3, 1427590800
+ tz.transition 2015, 10, :o2, 1445734800
+ tz.transition 2016, 3, :o3, 1459040400
+ tz.transition 2016, 10, :o2, 1477789200
+ tz.transition 2017, 3, :o3, 1490490000
+ tz.transition 2017, 10, :o2, 1509238800
+ tz.transition 2018, 3, :o3, 1521939600
+ tz.transition 2018, 10, :o2, 1540688400
+ tz.transition 2019, 3, :o3, 1553994000
+ tz.transition 2019, 10, :o2, 1572138000
+ tz.transition 2020, 3, :o3, 1585443600
+ tz.transition 2020, 10, :o2, 1603587600
+ tz.transition 2021, 3, :o3, 1616893200
+ tz.transition 2021, 10, :o2, 1635642000
+ tz.transition 2022, 3, :o3, 1648342800
+ tz.transition 2022, 10, :o2, 1667091600
+ tz.transition 2023, 3, :o3, 1679792400
+ tz.transition 2023, 10, :o2, 1698541200
+ tz.transition 2024, 3, :o3, 1711846800
+ tz.transition 2024, 10, :o2, 1729990800
+ tz.transition 2025, 3, :o3, 1743296400
+ tz.transition 2025, 10, :o2, 1761440400
+ tz.transition 2026, 3, :o3, 1774746000
+ tz.transition 2026, 10, :o2, 1792890000
+ tz.transition 2027, 3, :o3, 1806195600
+ tz.transition 2027, 10, :o2, 1824944400
+ tz.transition 2028, 3, :o3, 1837645200
+ tz.transition 2028, 10, :o2, 1856394000
+ tz.transition 2029, 3, :o3, 1869094800
+ tz.transition 2029, 10, :o2, 1887843600
+ tz.transition 2030, 3, :o3, 1901149200
+ tz.transition 2030, 10, :o2, 1919293200
+ tz.transition 2031, 3, :o3, 1932598800
+ tz.transition 2031, 10, :o2, 1950742800
+ tz.transition 2032, 3, :o3, 1964048400
+ tz.transition 2032, 10, :o2, 1982797200
+ tz.transition 2033, 3, :o3, 1995498000
+ tz.transition 2033, 10, :o2, 2014246800
+ tz.transition 2034, 3, :o3, 2026947600
+ tz.transition 2034, 10, :o2, 2045696400
+ tz.transition 2035, 3, :o3, 2058397200
+ tz.transition 2035, 10, :o2, 2077146000
+ tz.transition 2036, 3, :o3, 2090451600
+ tz.transition 2036, 10, :o2, 2108595600
+ tz.transition 2037, 3, :o3, 2121901200
+ tz.transition 2037, 10, :o2, 2140045200
+ tz.transition 2038, 3, :o3, 59172253, 24
+ tz.transition 2038, 10, :o2, 59177461, 24
+ tz.transition 2039, 3, :o3, 59180989, 24
+ tz.transition 2039, 10, :o2, 59186197, 24
+ tz.transition 2040, 3, :o3, 59189725, 24
+ tz.transition 2040, 10, :o2, 59194933, 24
+ tz.transition 2041, 3, :o3, 59198629, 24
+ tz.transition 2041, 10, :o2, 59203669, 24
+ tz.transition 2042, 3, :o3, 59207365, 24
+ tz.transition 2042, 10, :o2, 59212405, 24
+ tz.transition 2043, 3, :o3, 59216101, 24
+ tz.transition 2043, 10, :o2, 59221141, 24
+ tz.transition 2044, 3, :o3, 59224837, 24
+ tz.transition 2044, 10, :o2, 59230045, 24
+ tz.transition 2045, 3, :o3, 59233573, 24
+ tz.transition 2045, 10, :o2, 59238781, 24
+ tz.transition 2046, 3, :o3, 59242309, 24
+ tz.transition 2046, 10, :o2, 59247517, 24
+ tz.transition 2047, 3, :o3, 59251213, 24
+ tz.transition 2047, 10, :o2, 59256253, 24
+ tz.transition 2048, 3, :o3, 59259949, 24
+ tz.transition 2048, 10, :o2, 59264989, 24
+ tz.transition 2049, 3, :o3, 59268685, 24
+ tz.transition 2049, 10, :o2, 59273893, 24
+ tz.transition 2050, 3, :o3, 59277421, 24
+ tz.transition 2050, 10, :o2, 59282629, 24
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Zagreb.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Zagreb.rb
new file mode 100644
index 000000000..ecdd903d2
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Zagreb.rb
@@ -0,0 +1,13 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Europe
+ module Zagreb
+ include TimezoneDefinition
+
+ linked_timezone 'Europe/Zagreb', 'Europe/Belgrade'
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Pacific/Auckland.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Pacific/Auckland.rb
new file mode 100644
index 000000000..a524fd6b6
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Pacific/Auckland.rb
@@ -0,0 +1,202 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Pacific
+ module Auckland
+ include TimezoneDefinition
+
+ timezone 'Pacific/Auckland' do |tz|
+ tz.offset :o0, 41944, 0, :LMT
+ tz.offset :o1, 41400, 0, :NZMT
+ tz.offset :o2, 41400, 3600, :NZST
+ tz.offset :o3, 41400, 1800, :NZST
+ tz.offset :o4, 43200, 0, :NZST
+ tz.offset :o5, 43200, 3600, :NZDT
+
+ tz.transition 1868, 11, :o1, 25959290557, 10800
+ tz.transition 1927, 11, :o2, 116409125, 48
+ tz.transition 1928, 3, :o1, 38804945, 16
+ tz.transition 1928, 10, :o3, 116425589, 48
+ tz.transition 1929, 3, :o1, 29108245, 12
+ tz.transition 1929, 10, :o3, 116443061, 48
+ tz.transition 1930, 3, :o1, 29112613, 12
+ tz.transition 1930, 10, :o3, 116460533, 48
+ tz.transition 1931, 3, :o1, 29116981, 12
+ tz.transition 1931, 10, :o3, 116478005, 48
+ tz.transition 1932, 3, :o1, 29121433, 12
+ tz.transition 1932, 10, :o3, 116495477, 48
+ tz.transition 1933, 3, :o1, 29125801, 12
+ tz.transition 1933, 10, :o3, 116512949, 48
+ tz.transition 1934, 4, :o1, 29130673, 12
+ tz.transition 1934, 9, :o3, 116530085, 48
+ tz.transition 1935, 4, :o1, 29135041, 12
+ tz.transition 1935, 9, :o3, 116547557, 48
+ tz.transition 1936, 4, :o1, 29139409, 12
+ tz.transition 1936, 9, :o3, 116565029, 48
+ tz.transition 1937, 4, :o1, 29143777, 12
+ tz.transition 1937, 9, :o3, 116582501, 48
+ tz.transition 1938, 4, :o1, 29148145, 12
+ tz.transition 1938, 9, :o3, 116599973, 48
+ tz.transition 1939, 4, :o1, 29152597, 12
+ tz.transition 1939, 9, :o3, 116617445, 48
+ tz.transition 1940, 4, :o1, 29156965, 12
+ tz.transition 1940, 9, :o3, 116635253, 48
+ tz.transition 1945, 12, :o4, 2431821, 1
+ tz.transition 1974, 11, :o5, 152632800
+ tz.transition 1975, 2, :o4, 162309600
+ tz.transition 1975, 10, :o5, 183477600
+ tz.transition 1976, 3, :o4, 194968800
+ tz.transition 1976, 10, :o5, 215532000
+ tz.transition 1977, 3, :o4, 226418400
+ tz.transition 1977, 10, :o5, 246981600
+ tz.transition 1978, 3, :o4, 257868000
+ tz.transition 1978, 10, :o5, 278431200
+ tz.transition 1979, 3, :o4, 289317600
+ tz.transition 1979, 10, :o5, 309880800
+ tz.transition 1980, 3, :o4, 320767200
+ tz.transition 1980, 10, :o5, 341330400
+ tz.transition 1981, 2, :o4, 352216800
+ tz.transition 1981, 10, :o5, 372780000
+ tz.transition 1982, 3, :o4, 384271200
+ tz.transition 1982, 10, :o5, 404834400
+ tz.transition 1983, 3, :o4, 415720800
+ tz.transition 1983, 10, :o5, 436284000
+ tz.transition 1984, 3, :o4, 447170400
+ tz.transition 1984, 10, :o5, 467733600
+ tz.transition 1985, 3, :o4, 478620000
+ tz.transition 1985, 10, :o5, 499183200
+ tz.transition 1986, 3, :o4, 510069600
+ tz.transition 1986, 10, :o5, 530632800
+ tz.transition 1987, 2, :o4, 541519200
+ tz.transition 1987, 10, :o5, 562082400
+ tz.transition 1988, 3, :o4, 573573600
+ tz.transition 1988, 10, :o5, 594136800
+ tz.transition 1989, 3, :o4, 605023200
+ tz.transition 1989, 10, :o5, 623772000
+ tz.transition 1990, 3, :o4, 637682400
+ tz.transition 1990, 10, :o5, 655221600
+ tz.transition 1991, 3, :o4, 669132000
+ tz.transition 1991, 10, :o5, 686671200
+ tz.transition 1992, 3, :o4, 700581600
+ tz.transition 1992, 10, :o5, 718120800
+ tz.transition 1993, 3, :o4, 732636000
+ tz.transition 1993, 10, :o5, 749570400
+ tz.transition 1994, 3, :o4, 764085600
+ tz.transition 1994, 10, :o5, 781020000
+ tz.transition 1995, 3, :o4, 795535200
+ tz.transition 1995, 9, :o5, 812469600
+ tz.transition 1996, 3, :o4, 826984800
+ tz.transition 1996, 10, :o5, 844524000
+ tz.transition 1997, 3, :o4, 858434400
+ tz.transition 1997, 10, :o5, 875973600
+ tz.transition 1998, 3, :o4, 889884000
+ tz.transition 1998, 10, :o5, 907423200
+ tz.transition 1999, 3, :o4, 921938400
+ tz.transition 1999, 10, :o5, 938872800
+ tz.transition 2000, 3, :o4, 953388000
+ tz.transition 2000, 9, :o5, 970322400
+ tz.transition 2001, 3, :o4, 984837600
+ tz.transition 2001, 10, :o5, 1002376800
+ tz.transition 2002, 3, :o4, 1016287200
+ tz.transition 2002, 10, :o5, 1033826400
+ tz.transition 2003, 3, :o4, 1047736800
+ tz.transition 2003, 10, :o5, 1065276000
+ tz.transition 2004, 3, :o4, 1079791200
+ tz.transition 2004, 10, :o5, 1096725600
+ tz.transition 2005, 3, :o4, 1111240800
+ tz.transition 2005, 10, :o5, 1128175200
+ tz.transition 2006, 3, :o4, 1142690400
+ tz.transition 2006, 9, :o5, 1159624800
+ tz.transition 2007, 3, :o4, 1174140000
+ tz.transition 2007, 9, :o5, 1191074400
+ tz.transition 2008, 4, :o4, 1207404000
+ tz.transition 2008, 9, :o5, 1222524000
+ tz.transition 2009, 4, :o4, 1238853600
+ tz.transition 2009, 9, :o5, 1253973600
+ tz.transition 2010, 4, :o4, 1270303200
+ tz.transition 2010, 9, :o5, 1285423200
+ tz.transition 2011, 4, :o4, 1301752800
+ tz.transition 2011, 9, :o5, 1316872800
+ tz.transition 2012, 3, :o4, 1333202400
+ tz.transition 2012, 9, :o5, 1348927200
+ tz.transition 2013, 4, :o4, 1365256800
+ tz.transition 2013, 9, :o5, 1380376800
+ tz.transition 2014, 4, :o4, 1396706400
+ tz.transition 2014, 9, :o5, 1411826400
+ tz.transition 2015, 4, :o4, 1428156000
+ tz.transition 2015, 9, :o5, 1443276000
+ tz.transition 2016, 4, :o4, 1459605600
+ tz.transition 2016, 9, :o5, 1474725600
+ tz.transition 2017, 4, :o4, 1491055200
+ tz.transition 2017, 9, :o5, 1506175200
+ tz.transition 2018, 3, :o4, 1522504800
+ tz.transition 2018, 9, :o5, 1538229600
+ tz.transition 2019, 4, :o4, 1554559200
+ tz.transition 2019, 9, :o5, 1569679200
+ tz.transition 2020, 4, :o4, 1586008800
+ tz.transition 2020, 9, :o5, 1601128800
+ tz.transition 2021, 4, :o4, 1617458400
+ tz.transition 2021, 9, :o5, 1632578400
+ tz.transition 2022, 4, :o4, 1648908000
+ tz.transition 2022, 9, :o5, 1664028000
+ tz.transition 2023, 4, :o4, 1680357600
+ tz.transition 2023, 9, :o5, 1695477600
+ tz.transition 2024, 4, :o4, 1712412000
+ tz.transition 2024, 9, :o5, 1727532000
+ tz.transition 2025, 4, :o4, 1743861600
+ tz.transition 2025, 9, :o5, 1758981600
+ tz.transition 2026, 4, :o4, 1775311200
+ tz.transition 2026, 9, :o5, 1790431200
+ tz.transition 2027, 4, :o4, 1806760800
+ tz.transition 2027, 9, :o5, 1821880800
+ tz.transition 2028, 4, :o4, 1838210400
+ tz.transition 2028, 9, :o5, 1853330400
+ tz.transition 2029, 3, :o4, 1869660000
+ tz.transition 2029, 9, :o5, 1885384800
+ tz.transition 2030, 4, :o4, 1901714400
+ tz.transition 2030, 9, :o5, 1916834400
+ tz.transition 2031, 4, :o4, 1933164000
+ tz.transition 2031, 9, :o5, 1948284000
+ tz.transition 2032, 4, :o4, 1964613600
+ tz.transition 2032, 9, :o5, 1979733600
+ tz.transition 2033, 4, :o4, 1996063200
+ tz.transition 2033, 9, :o5, 2011183200
+ tz.transition 2034, 4, :o4, 2027512800
+ tz.transition 2034, 9, :o5, 2042632800
+ tz.transition 2035, 3, :o4, 2058962400
+ tz.transition 2035, 9, :o5, 2074687200
+ tz.transition 2036, 4, :o4, 2091016800
+ tz.transition 2036, 9, :o5, 2106136800
+ tz.transition 2037, 4, :o4, 2122466400
+ tz.transition 2037, 9, :o5, 2137586400
+ tz.transition 2038, 4, :o4, 29586205, 12
+ tz.transition 2038, 9, :o5, 29588305, 12
+ tz.transition 2039, 4, :o4, 29590573, 12
+ tz.transition 2039, 9, :o5, 29592673, 12
+ tz.transition 2040, 3, :o4, 29594941, 12
+ tz.transition 2040, 9, :o5, 29597125, 12
+ tz.transition 2041, 4, :o4, 29599393, 12
+ tz.transition 2041, 9, :o5, 29601493, 12
+ tz.transition 2042, 4, :o4, 29603761, 12
+ tz.transition 2042, 9, :o5, 29605861, 12
+ tz.transition 2043, 4, :o4, 29608129, 12
+ tz.transition 2043, 9, :o5, 29610229, 12
+ tz.transition 2044, 4, :o4, 29612497, 12
+ tz.transition 2044, 9, :o5, 29614597, 12
+ tz.transition 2045, 4, :o4, 29616865, 12
+ tz.transition 2045, 9, :o5, 29618965, 12
+ tz.transition 2046, 3, :o4, 29621233, 12
+ tz.transition 2046, 9, :o5, 29623417, 12
+ tz.transition 2047, 4, :o4, 29625685, 12
+ tz.transition 2047, 9, :o5, 29627785, 12
+ tz.transition 2048, 4, :o4, 29630053, 12
+ tz.transition 2048, 9, :o5, 29632153, 12
+ tz.transition 2049, 4, :o4, 29634421, 12
+ tz.transition 2049, 9, :o5, 29636521, 12
+ tz.transition 2050, 4, :o4, 29638789, 12
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Pacific/Fiji.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Pacific/Fiji.rb
new file mode 100644
index 000000000..5fe9bbd9a
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Pacific/Fiji.rb
@@ -0,0 +1,23 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Pacific
+ module Fiji
+ include TimezoneDefinition
+
+ timezone 'Pacific/Fiji' do |tz|
+ tz.offset :o0, 42820, 0, :LMT
+ tz.offset :o1, 43200, 0, :FJT
+ tz.offset :o2, 43200, 3600, :FJST
+
+ tz.transition 1915, 10, :o1, 10457838739, 4320
+ tz.transition 1998, 10, :o2, 909842400
+ tz.transition 1999, 2, :o1, 920124000
+ tz.transition 1999, 11, :o2, 941896800
+ tz.transition 2000, 2, :o1, 951573600
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Pacific/Guam.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Pacific/Guam.rb
new file mode 100644
index 000000000..d4c1a0a68
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Pacific/Guam.rb
@@ -0,0 +1,22 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Pacific
+ module Guam
+ include TimezoneDefinition
+
+ timezone 'Pacific/Guam' do |tz|
+ tz.offset :o0, -51660, 0, :LMT
+ tz.offset :o1, 34740, 0, :LMT
+ tz.offset :o2, 36000, 0, :GST
+ tz.offset :o3, 36000, 0, :ChST
+
+ tz.transition 1844, 12, :o1, 1149567407, 480
+ tz.transition 1900, 12, :o2, 1159384847, 480
+ tz.transition 2000, 12, :o3, 977493600
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Pacific/Honolulu.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Pacific/Honolulu.rb
new file mode 100644
index 000000000..204b22653
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Pacific/Honolulu.rb
@@ -0,0 +1,28 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Pacific
+ module Honolulu
+ include TimezoneDefinition
+
+ timezone 'Pacific/Honolulu' do |tz|
+ tz.offset :o0, -37886, 0, :LMT
+ tz.offset :o1, -37800, 0, :HST
+ tz.offset :o2, -37800, 3600, :HDT
+ tz.offset :o3, -37800, 3600, :HWT
+ tz.offset :o4, -37800, 3600, :HPT
+ tz.offset :o5, -36000, 0, :HST
+
+ tz.transition 1900, 1, :o1, 104328926143, 43200
+ tz.transition 1933, 4, :o2, 116505265, 48
+ tz.transition 1933, 5, :o1, 116506271, 48
+ tz.transition 1942, 2, :o3, 116659201, 48
+ tz.transition 1945, 8, :o4, 58360379, 24
+ tz.transition 1945, 9, :o1, 116722991, 48
+ tz.transition 1947, 6, :o5, 116752561, 48
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Pacific/Majuro.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Pacific/Majuro.rb
new file mode 100644
index 000000000..32adad92c
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Pacific/Majuro.rb
@@ -0,0 +1,20 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Pacific
+ module Majuro
+ include TimezoneDefinition
+
+ timezone 'Pacific/Majuro' do |tz|
+ tz.offset :o0, 41088, 0, :LMT
+ tz.offset :o1, 39600, 0, :MHT
+ tz.offset :o2, 43200, 0, :MHT
+
+ tz.transition 1900, 12, :o1, 1086923261, 450
+ tz.transition 1969, 9, :o2, 58571881, 24
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Pacific/Midway.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Pacific/Midway.rb
new file mode 100644
index 000000000..97784fcc1
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Pacific/Midway.rb
@@ -0,0 +1,25 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Pacific
+ module Midway
+ include TimezoneDefinition
+
+ timezone 'Pacific/Midway' do |tz|
+ tz.offset :o0, -42568, 0, :LMT
+ tz.offset :o1, -39600, 0, :NST
+ tz.offset :o2, -39600, 3600, :NDT
+ tz.offset :o3, -39600, 0, :BST
+ tz.offset :o4, -39600, 0, :SST
+
+ tz.transition 1901, 1, :o1, 26086168721, 10800
+ tz.transition 1956, 6, :o2, 58455071, 24
+ tz.transition 1956, 9, :o1, 29228627, 12
+ tz.transition 1967, 4, :o3, 58549967, 24
+ tz.transition 1983, 11, :o4, 439038000
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Pacific/Noumea.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Pacific/Noumea.rb
new file mode 100644
index 000000000..70173db8a
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Pacific/Noumea.rb
@@ -0,0 +1,25 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Pacific
+ module Noumea
+ include TimezoneDefinition
+
+ timezone 'Pacific/Noumea' do |tz|
+ tz.offset :o0, 39948, 0, :LMT
+ tz.offset :o1, 39600, 0, :NCT
+ tz.offset :o2, 39600, 3600, :NCST
+
+ tz.transition 1912, 1, :o1, 17419781071, 7200
+ tz.transition 1977, 12, :o2, 250002000
+ tz.transition 1978, 2, :o1, 257342400
+ tz.transition 1978, 12, :o2, 281451600
+ tz.transition 1979, 2, :o1, 288878400
+ tz.transition 1996, 11, :o2, 849366000
+ tz.transition 1997, 3, :o1, 857228400
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Pacific/Pago_Pago.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Pacific/Pago_Pago.rb
new file mode 100644
index 000000000..c8fcd7d52
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Pacific/Pago_Pago.rb
@@ -0,0 +1,26 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Pacific
+ module Pago_Pago
+ include TimezoneDefinition
+
+ timezone 'Pacific/Pago_Pago' do |tz|
+ tz.offset :o0, 45432, 0, :LMT
+ tz.offset :o1, -40968, 0, :LMT
+ tz.offset :o2, -41400, 0, :SAMT
+ tz.offset :o3, -39600, 0, :NST
+ tz.offset :o4, -39600, 0, :BST
+ tz.offset :o5, -39600, 0, :SST
+
+ tz.transition 1879, 7, :o1, 2889041969, 1200
+ tz.transition 1911, 1, :o2, 2902845569, 1200
+ tz.transition 1950, 1, :o3, 116797583, 48
+ tz.transition 1967, 4, :o4, 58549967, 24
+ tz.transition 1983, 11, :o5, 439038000
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Pacific/Port_Moresby.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Pacific/Port_Moresby.rb
new file mode 100644
index 000000000..f06cf6d54
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Pacific/Port_Moresby.rb
@@ -0,0 +1,20 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Pacific
+ module Port_Moresby
+ include TimezoneDefinition
+
+ timezone 'Pacific/Port_Moresby' do |tz|
+ tz.offset :o0, 35320, 0, :LMT
+ tz.offset :o1, 35312, 0, :PMMT
+ tz.offset :o2, 36000, 0, :PGT
+
+ tz.transition 1879, 12, :o1, 5200664597, 2160
+ tz.transition 1894, 12, :o2, 13031248093, 5400
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Pacific/Tongatapu.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Pacific/Tongatapu.rb
new file mode 100644
index 000000000..7578d92f3
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Pacific/Tongatapu.rb
@@ -0,0 +1,27 @@
+require 'tzinfo/timezone_definition'
+
+module TZInfo
+ module Definitions
+ module Pacific
+ module Tongatapu
+ include TimezoneDefinition
+
+ timezone 'Pacific/Tongatapu' do |tz|
+ tz.offset :o0, 44360, 0, :LMT
+ tz.offset :o1, 44400, 0, :TOT
+ tz.offset :o2, 46800, 0, :TOT
+ tz.offset :o3, 46800, 3600, :TOST
+
+ tz.transition 1900, 12, :o1, 5217231571, 2160
+ tz.transition 1940, 12, :o2, 174959639, 72
+ tz.transition 1999, 10, :o3, 939214800
+ tz.transition 2000, 3, :o2, 953384400
+ tz.transition 2000, 11, :o3, 973342800
+ tz.transition 2001, 1, :o2, 980596800
+ tz.transition 2001, 11, :o3, 1004792400
+ tz.transition 2002, 1, :o2, 1012046400
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/info_timezone.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/info_timezone.rb
new file mode 100644
index 000000000..001303c59
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/info_timezone.rb
@@ -0,0 +1,52 @@
+#--
+# Copyright (c) 2006 Philip Ross
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in all
+# copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#++
+
+require 'tzinfo/timezone'
+
+module TZInfo
+
+ # A Timezone based on a TimezoneInfo.
+ class InfoTimezone < Timezone #:nodoc:
+
+ # Constructs a new InfoTimezone with a TimezoneInfo instance.
+ def self.new(info)
+ tz = super()
+ tz.send(:setup, info)
+ tz
+ end
+
+ # The identifier of the timezone, e.g. "Europe/Paris".
+ def identifier
+ @info.identifier
+ end
+
+ protected
+ # The TimezoneInfo for this Timezone.
+ def info
+ @info
+ end
+
+ def setup(info)
+ @info = info
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/linked_timezone.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/linked_timezone.rb
new file mode 100644
index 000000000..f8ec4fca8
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/linked_timezone.rb
@@ -0,0 +1,51 @@
+#--
+# Copyright (c) 2006 Philip Ross
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in all
+# copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#++
+
+require 'tzinfo/info_timezone'
+
+module TZInfo
+
+ class LinkedTimezone < InfoTimezone #:nodoc:
+ # Returns the TimezonePeriod for the given UTC time. utc can either be
+ # a DateTime, Time or integer timestamp (Time.to_i). Any timezone
+ # information in utc is ignored (it is treated as a UTC time).
+ #
+ # If no TimezonePeriod could be found, PeriodNotFound is raised.
+ def period_for_utc(utc)
+ @linked_timezone.period_for_utc(utc)
+ end
+
+ # Returns the set of TimezonePeriod instances that are valid for the given
+ # local time as an array. If you just want a single period, use
+ # period_for_local instead and specify how abiguities should be resolved.
+ # Raises PeriodNotFound if no periods are found for the given time.
+ def periods_for_local(local)
+ @linked_timezone.periods_for_local(local)
+ end
+
+ protected
+ def setup(info)
+ super(info)
+ @linked_timezone = Timezone.get(info.link_to_identifier)
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/linked_timezone_info.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/linked_timezone_info.rb
new file mode 100644
index 000000000..8197ff3e8
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/linked_timezone_info.rb
@@ -0,0 +1,44 @@
+#--
+# Copyright (c) 2006 Philip Ross
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in all
+# copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#++
+
+require 'tzinfo/timezone_info'
+
+module TZInfo
+ # Represents a linked timezone defined in a data module.
+ class LinkedTimezoneInfo < TimezoneInfo #:nodoc:
+
+ # The zone that provides the data (that this zone is an alias for).
+ attr_reader :link_to_identifier
+
+ # Constructs a new TimezoneInfo with an identifier and the identifier
+ # of the zone linked to.
+ def initialize(identifier, link_to_identifier)
+ super(identifier)
+ @link_to_identifier = link_to_identifier
+ end
+
+ # Returns internal object state as a programmer-readable string.
+ def inspect
+ "#<#{self.class}: #@identifier,#@link_to_identifier>"
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/offset_rationals.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/offset_rationals.rb
new file mode 100644
index 000000000..32fa4123f
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/offset_rationals.rb
@@ -0,0 +1,95 @@
+#--
+# Copyright (c) 2006 Philip Ross
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in all
+# copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#++
+
+module TZInfo
+
+ # Provides a method for getting Rationals for a timezone offset in seconds.
+ # Pre-reduced rationals are returned for all the half-hour intervals between
+ # -14 and +14 hours to avoid having to call gcd at runtime.
+ module OffsetRationals #:nodoc:
+ @@rational_cache = {
+ -50400 => Rational(-7,12),
+ -48600 => Rational(-9,16),
+ -46800 => Rational(-13,24),
+ -45000 => Rational(-25,48),
+ -43200 => Rational(-1,2),
+ -41400 => Rational(-23,48),
+ -39600 => Rational(-11,24),
+ -37800 => Rational(-7,16),
+ -36000 => Rational(-5,12),
+ -34200 => Rational(-19,48),
+ -32400 => Rational(-3,8),
+ -30600 => Rational(-17,48),
+ -28800 => Rational(-1,3),
+ -27000 => Rational(-5,16),
+ -25200 => Rational(-7,24),
+ -23400 => Rational(-13,48),
+ -21600 => Rational(-1,4),
+ -19800 => Rational(-11,48),
+ -18000 => Rational(-5,24),
+ -16200 => Rational(-3,16),
+ -14400 => Rational(-1,6),
+ -12600 => Rational(-7,48),
+ -10800 => Rational(-1,8),
+ -9000 => Rational(-5,48),
+ -7200 => Rational(-1,12),
+ -5400 => Rational(-1,16),
+ -3600 => Rational(-1,24),
+ -1800 => Rational(-1,48),
+ 0 => Rational(0,1),
+ 1800 => Rational(1,48),
+ 3600 => Rational(1,24),
+ 5400 => Rational(1,16),
+ 7200 => Rational(1,12),
+ 9000 => Rational(5,48),
+ 10800 => Rational(1,8),
+ 12600 => Rational(7,48),
+ 14400 => Rational(1,6),
+ 16200 => Rational(3,16),
+ 18000 => Rational(5,24),
+ 19800 => Rational(11,48),
+ 21600 => Rational(1,4),
+ 23400 => Rational(13,48),
+ 25200 => Rational(7,24),
+ 27000 => Rational(5,16),
+ 28800 => Rational(1,3),
+ 30600 => Rational(17,48),
+ 32400 => Rational(3,8),
+ 34200 => Rational(19,48),
+ 36000 => Rational(5,12),
+ 37800 => Rational(7,16),
+ 39600 => Rational(11,24),
+ 41400 => Rational(23,48),
+ 43200 => Rational(1,2),
+ 45000 => Rational(25,48),
+ 46800 => Rational(13,24),
+ 48600 => Rational(9,16),
+ 50400 => Rational(7,12)}
+
+ # Returns a Rational expressing the fraction of a day that offset in
+ # seconds represents (i.e. equivalent to Rational(offset, 86400)).
+ def rational_for_offset(offset)
+ @@rational_cache[offset] || Rational(offset, 86400)
+ end
+ module_function :rational_for_offset
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/time_or_datetime.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/time_or_datetime.rb
new file mode 100644
index 000000000..264517f3e
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/time_or_datetime.rb
@@ -0,0 +1,292 @@
+#--
+# Copyright (c) 2006 Philip Ross
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in all
+# copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#++
+
+require 'date'
+require 'time'
+require 'tzinfo/offset_rationals'
+
+module TZInfo
+ # Used by TZInfo internally to represent either a Time, DateTime or integer
+ # timestamp (seconds since 1970-01-01 00:00:00).
+ class TimeOrDateTime #:nodoc:
+ include Comparable
+
+ # Constructs a new TimeOrDateTime. timeOrDateTime can be a Time, DateTime
+ # or an integer. If using a Time or DateTime, any time zone information is
+ # ignored.
+ def initialize(timeOrDateTime)
+ @time = nil
+ @datetime = nil
+ @timestamp = nil
+
+ if timeOrDateTime.is_a?(Time)
+ @time = timeOrDateTime
+ @time = Time.utc(@time.year, @time.mon, @time.mday, @time.hour, @time.min, @time.sec) unless @time.zone == 'UTC'
+ @orig = @time
+ elsif timeOrDateTime.is_a?(DateTime)
+ @datetime = timeOrDateTime
+ @datetime = @datetime.new_offset(0) unless @datetime.offset == 0
+ @orig = @datetime
+ else
+ @timestamp = timeOrDateTime.to_i
+ @orig = @timestamp
+ end
+ end
+
+ # Returns the time as a Time.
+ def to_time
+ unless @time
+ if @timestamp
+ @time = Time.at(@timestamp).utc
+ else
+ @time = Time.utc(year, mon, mday, hour, min, sec)
+ end
+ end
+
+ @time
+ end
+
+ # Returns the time as a DateTime.
+ def to_datetime
+ unless @datetime
+ @datetime = DateTime.new(year, mon, mday, hour, min, sec)
+ end
+
+ @datetime
+ end
+
+ # Returns the time as an integer timestamp.
+ def to_i
+ unless @timestamp
+ @timestamp = to_time.to_i
+ end
+
+ @timestamp
+ end
+
+ # Returns the time as the original time passed to new.
+ def to_orig
+ @orig
+ end
+
+ # Returns a string representation of the TimeOrDateTime.
+ def to_s
+ if @orig.is_a?(Time)
+ "Time: #{@orig.to_s}"
+ elsif @orig.is_a?(DateTime)
+ "DateTime: #{@orig.to_s}"
+ else
+ "Timestamp: #{@orig.to_s}"
+ end
+ end
+
+ # Returns internal object state as a programmer-readable string.
+ def inspect
+ "#<#{self.class}: #{@orig.inspect}>"
+ end
+
+ # Returns the year.
+ def year
+ if @time
+ @time.year
+ elsif @datetime
+ @datetime.year
+ else
+ to_time.year
+ end
+ end
+
+ # Returns the month of the year (1..12).
+ def mon
+ if @time
+ @time.mon
+ elsif @datetime
+ @datetime.mon
+ else
+ to_time.mon
+ end
+ end
+ alias :month :mon
+
+ # Returns the day of the month (1..n).
+ def mday
+ if @time
+ @time.mday
+ elsif @datetime
+ @datetime.mday
+ else
+ to_time.mday
+ end
+ end
+ alias :day :mday
+
+ # Returns the hour of the day (0..23).
+ def hour
+ if @time
+ @time.hour
+ elsif @datetime
+ @datetime.hour
+ else
+ to_time.hour
+ end
+ end
+
+ # Returns the minute of the hour (0..59).
+ def min
+ if @time
+ @time.min
+ elsif @datetime
+ @datetime.min
+ else
+ to_time.min
+ end
+ end
+
+ # Returns the second of the minute (0..60). (60 for a leap second).
+ def sec
+ if @time
+ @time.sec
+ elsif @datetime
+ @datetime.sec
+ else
+ to_time.sec
+ end
+ end
+
+ # Compares this TimeOrDateTime with another Time, DateTime, integer
+ # timestamp or TimeOrDateTime. Returns -1, 0 or +1 depending whether the
+ # receiver is less than, equal to, or greater than timeOrDateTime.
+ #
+ # Milliseconds and smaller units are ignored in the comparison.
+ def <=>(timeOrDateTime)
+ if timeOrDateTime.is_a?(TimeOrDateTime)
+ orig = timeOrDateTime.to_orig
+
+ if @orig.is_a?(DateTime) || orig.is_a?(DateTime)
+ # If either is a DateTime, assume it is there for a reason
+ # (i.e. for range).
+ to_datetime <=> timeOrDateTime.to_datetime
+ elsif orig.is_a?(Time)
+ to_time <=> timeOrDateTime.to_time
+ else
+ to_i <=> timeOrDateTime.to_i
+ end
+ elsif @orig.is_a?(DateTime) || timeOrDateTime.is_a?(DateTime)
+ # If either is a DateTime, assume it is there for a reason
+ # (i.e. for range).
+ to_datetime <=> TimeOrDateTime.wrap(timeOrDateTime).to_datetime
+ elsif timeOrDateTime.is_a?(Time)
+ to_time <=> timeOrDateTime
+ else
+ to_i <=> timeOrDateTime.to_i
+ end
+ end
+
+ # Adds a number of seconds to the TimeOrDateTime. Returns a new
+ # TimeOrDateTime, preserving what the original constructed type was.
+ # If the original type is a Time and the resulting calculation goes out of
+ # range for Times, then an exception will be raised by the Time class.
+ def +(seconds)
+ if seconds == 0
+ self
+ else
+ if @orig.is_a?(DateTime)
+ TimeOrDateTime.new(@orig + OffsetRationals.rational_for_offset(seconds))
+ else
+ # + defined for Time and integer timestamps
+ TimeOrDateTime.new(@orig + seconds)
+ end
+ end
+ end
+
+ # Subtracts a number of seconds from the TimeOrDateTime. Returns a new
+ # TimeOrDateTime, preserving what the original constructed type was.
+ # If the original type is a Time and the resulting calculation goes out of
+ # range for Times, then an exception will be raised by the Time class.
+ def -(seconds)
+ self + (-seconds)
+ end
+
+ # Similar to the + operator, but for cases where adding would cause a
+ # timestamp or time to go out of the allowed range, converts to a DateTime
+ # based TimeOrDateTime.
+ def add_with_convert(seconds)
+ if seconds == 0
+ self
+ else
+ if @orig.is_a?(DateTime)
+ TimeOrDateTime.new(@orig + OffsetRationals.rational_for_offset(seconds))
+ else
+ # A Time or timestamp.
+ result = to_i + seconds
+
+ if result < 0 || result > 2147483647
+ result = TimeOrDateTime.new(to_datetime + OffsetRationals.rational_for_offset(seconds))
+ else
+ result = TimeOrDateTime.new(@orig + seconds)
+ end
+ end
+ end
+ end
+
+ # Returns true if todt represents the same time and was originally
+ # constructed with the same type (DateTime, Time or timestamp) as this
+ # TimeOrDateTime.
+ def eql?(todt)
+ todt.respond_to?(:to_orig) && to_orig.eql?(todt.to_orig)
+ end
+
+ # Returns a hash of this TimeOrDateTime.
+ def hash
+ @orig.hash
+ end
+
+ # If no block is given, returns a TimeOrDateTime wrapping the given
+ # timeOrDateTime. If a block is specified, a TimeOrDateTime is constructed
+ # and passed to the block. The result of the block must be a TimeOrDateTime.
+ # to_orig will be called on the result and the result of to_orig will be
+ # returned.
+ #
+ # timeOrDateTime can be a Time, DateTime, integer timestamp or TimeOrDateTime.
+ # If a TimeOrDateTime is passed in, no new TimeOrDateTime will be constructed,
+ # the passed in value will be used.
+ def self.wrap(timeOrDateTime)
+ t = timeOrDateTime.is_a?(TimeOrDateTime) ? timeOrDateTime : TimeOrDateTime.new(timeOrDateTime)
+
+ if block_given?
+ t = yield t
+
+ if timeOrDateTime.is_a?(TimeOrDateTime)
+ t
+ elsif timeOrDateTime.is_a?(Time)
+ t.to_time
+ elsif timeOrDateTime.is_a?(DateTime)
+ t.to_datetime
+ else
+ t.to_i
+ end
+ else
+ t
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/timezone.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/timezone.rb
new file mode 100644
index 000000000..04f2f2f0a
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/timezone.rb
@@ -0,0 +1,508 @@
+#--
+# Copyright (c) 2005-2006 Philip Ross
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in all
+# copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#++
+
+require 'date'
+# require 'tzinfo/country'
+require 'tzinfo/time_or_datetime'
+require 'tzinfo/timezone_period'
+
+module TZInfo
+ # Indicate a specified time in a local timezone has more than one
+ # possible time in UTC. This happens when switching from daylight savings time
+ # to normal time where the clocks are rolled back. Thrown by period_for_local
+ # and local_to_utc when using an ambiguous time and not specifying any
+ # means to resolve the ambiguity.
+ class AmbiguousTime < StandardError
+ end
+
+ # Thrown to indicate that no TimezonePeriod matching a given time could be found.
+ class PeriodNotFound < StandardError
+ end
+
+ # Thrown by Timezone#get if the identifier given is not valid.
+ class InvalidTimezoneIdentifier < StandardError
+ end
+
+ # Thrown if an attempt is made to use a timezone created with Timezone.new(nil).
+ class UnknownTimezone < StandardError
+ end
+
+ # Timezone is the base class of all timezones. It provides a factory method
+ # get to access timezones by identifier. Once a specific Timezone has been
+ # retrieved, DateTimes, Times and timestamps can be converted between the UTC
+ # and the local time for the zone. For example:
+ #
+ # tz = TZInfo::Timezone.get('America/New_York')
+ # puts tz.utc_to_local(DateTime.new(2005,8,29,15,35,0)).to_s
+ # puts tz.local_to_utc(Time.utc(2005,8,29,11,35,0)).to_s
+ # puts tz.utc_to_local(1125315300).to_s
+ #
+ # Each time conversion method returns an object of the same type it was
+ # passed.
+ #
+ # The timezone information all comes from the tz database
+ # (see http://www.twinsun.com/tz/tz-link.htm)
+ class Timezone
+ include Comparable
+
+ # Cache of loaded zones by identifier to avoid using require if a zone
+ # has already been loaded.
+ @@loaded_zones = {}
+
+ # Whether the timezones index has been loaded yet.
+ @@index_loaded = false
+
+ # Returns a timezone by its identifier (e.g. "Europe/London",
+ # "America/Chicago" or "UTC").
+ #
+ # Raises InvalidTimezoneIdentifier if the timezone couldn't be found.
+ def self.get(identifier)
+ instance = @@loaded_zones[identifier]
+ unless instance
+ raise InvalidTimezoneIdentifier, 'Invalid identifier' if identifier !~ /^[A-z0-9\+\-_]+(\/[A-z0-9\+\-_]+)*$/
+ identifier = identifier.gsub(/-/, '__m__').gsub(/\+/, '__p__')
+ begin
+ # Use a temporary variable to avoid an rdoc warning
+ file = "tzinfo/definitions/#{identifier}"
+ require file
+
+ m = Definitions
+ identifier.split(/\//).each {|part|
+ m = m.const_get(part)
+ }
+
+ info = m.get
+
+ # Could make Timezone subclasses register an interest in an info
+ # type. Since there are currently only two however, there isn't
+ # much point.
+ if info.kind_of?(DataTimezoneInfo)
+ instance = DataTimezone.new(info)
+ elsif info.kind_of?(LinkedTimezoneInfo)
+ instance = LinkedTimezone.new(info)
+ else
+ raise InvalidTimezoneIdentifier, "No handler for info type #{info.class}"
+ end
+
+ @@loaded_zones[instance.identifier] = instance
+ rescue LoadError, NameError => e
+ raise InvalidTimezoneIdentifier, e.message
+ end
+ end
+
+ instance
+ end
+
+ # Returns a proxy for the Timezone with the given identifier. The proxy
+ # will cause the real timezone to be loaded when an attempt is made to
+ # find a period or convert a time. get_proxy will not validate the
+ # identifier. If an invalid identifier is specified, no exception will be
+ # raised until the proxy is used.
+ def self.get_proxy(identifier)
+ TimezoneProxy.new(identifier)
+ end
+
+ # If identifier is nil calls super(), otherwise calls get. An identfier
+ # should always be passed in when called externally.
+ def self.new(identifier = nil)
+ if identifier
+ get(identifier)
+ else
+ super()
+ end
+ end
+
+ # Returns an array containing all the available Timezones.
+ #
+ # Returns TimezoneProxy objects to avoid the overhead of loading Timezone
+ # definitions until a conversion is actually required.
+ def self.all
+ get_proxies(all_identifiers)
+ end
+
+ # Returns an array containing the identifiers of all the available
+ # Timezones.
+ def self.all_identifiers
+ load_index
+ Indexes::Timezones.timezones
+ end
+
+ # Returns an array containing all the available Timezones that are based
+ # on data (are not links to other Timezones).
+ #
+ # Returns TimezoneProxy objects to avoid the overhead of loading Timezone
+ # definitions until a conversion is actually required.
+ def self.all_data_zones
+ get_proxies(all_data_zone_identifiers)
+ end
+
+ # Returns an array containing the identifiers of all the available
+ # Timezones that are based on data (are not links to other Timezones)..
+ def self.all_data_zone_identifiers
+ load_index
+ Indexes::Timezones.data_timezones
+ end
+
+ # Returns an array containing all the available Timezones that are links
+ # to other Timezones.
+ #
+ # Returns TimezoneProxy objects to avoid the overhead of loading Timezone
+ # definitions until a conversion is actually required.
+ def self.all_linked_zones
+ get_proxies(all_linked_zone_identifiers)
+ end
+
+ # Returns an array containing the identifiers of all the available
+ # Timezones that are links to other Timezones.
+ def self.all_linked_zone_identifiers
+ load_index
+ Indexes::Timezones.linked_timezones
+ end
+
+ # Returns all the Timezones defined for all Countries. This is not the
+ # complete set of Timezones as some are not country specific (e.g.
+ # 'Etc/GMT').
+ #
+ # Returns TimezoneProxy objects to avoid the overhead of loading Timezone
+ # definitions until a conversion is actually required.
+ def self.all_country_zones
+ Country.all_codes.inject([]) {|zones,country|
+ zones += Country.get(country).zones
+ }
+ end
+
+ # Returns all the zone identifiers defined for all Countries. This is not the
+ # complete set of zone identifiers as some are not country specific (e.g.
+ # 'Etc/GMT'). You can obtain a Timezone instance for a given identifier
+ # with the get method.
+ def self.all_country_zone_identifiers
+ Country.all_codes.inject([]) {|zones,country|
+ zones += Country.get(country).zone_identifiers
+ }
+ end
+
+ # Returns all US Timezone instances. A shortcut for
+ # TZInfo::Country.get('US').zones.
+ #
+ # Returns TimezoneProxy objects to avoid the overhead of loading Timezone
+ # definitions until a conversion is actually required.
+ def self.us_zones
+ Country.get('US').zones
+ end
+
+ # Returns all US zone identifiers. A shortcut for
+ # TZInfo::Country.get('US').zone_identifiers.
+ def self.us_zone_identifiers
+ Country.get('US').zone_identifiers
+ end
+
+ # The identifier of the timezone, e.g. "Europe/Paris".
+ def identifier
+ raise UnknownTimezone, 'TZInfo::Timezone constructed directly'
+ end
+
+ # An alias for identifier.
+ def name
+ # Don't use alias, as identifier gets overridden.
+ identifier
+ end
+
+ # Returns a friendlier version of the identifier.
+ def to_s
+ friendly_identifier
+ end
+
+ # Returns internal object state as a programmer-readable string.
+ def inspect
+ "#<#{self.class}: #{identifier}>"
+ end
+
+ # Returns a friendlier version of the identifier. Set skip_first_part to
+ # omit the first part of the identifier (typically a region name) where
+ # there is more than one part.
+ #
+ # For example:
+ #
+ # Timezone.get('Europe/Paris').friendly_identifier(false) #=> "Europe - Paris"
+ # Timezone.get('Europe/Paris').friendly_identifier(true) #=> "Paris"
+ # Timezone.get('America/Indiana/Knox').friendly_identifier(false) #=> "America - Knox, Indiana"
+ # Timezone.get('America/Indiana/Knox').friendly_identifier(true) #=> "Knox, Indiana"
+ def friendly_identifier(skip_first_part = false)
+ parts = identifier.split('/')
+ if parts.empty?
+ # shouldn't happen
+ identifier
+ elsif parts.length == 1
+ parts[0]
+ else
+ if skip_first_part
+ result = ''
+ else
+ result = parts[0] + ' - '
+ end
+
+ parts[1, parts.length - 1].reverse_each {|part|
+ part.gsub!(/_/, ' ')
+
+ if part.index(/[a-z]/)
+ # Missing a space if a lower case followed by an upper case and the
+ # name isn't McXxxx.
+ part.gsub!(/([^M][a-z])([A-Z])/, '\1 \2')
+ part.gsub!(/([M][a-bd-z])([A-Z])/, '\1 \2')
+
+ # Missing an apostrophe if two consecutive upper case characters.
+ part.gsub!(/([A-Z])([A-Z])/, '\1\'\2')
+ end
+
+ result << part
+ result << ', '
+ }
+
+ result.slice!(result.length - 2, 2)
+ result
+ end
+ end
+
+ # Returns the TimezonePeriod for the given UTC time. utc can either be
+ # a DateTime, Time or integer timestamp (Time.to_i). Any timezone
+ # information in utc is ignored (it is treated as a UTC time).
+ def period_for_utc(utc)
+ raise UnknownTimezone, 'TZInfo::Timezone constructed directly'
+ end
+
+ # Returns the set of TimezonePeriod instances that are valid for the given
+ # local time as an array. If you just want a single period, use
+ # period_for_local instead and specify how ambiguities should be resolved.
+ # Returns an empty array if no periods are found for the given time.
+ def periods_for_local(local)
+ raise UnknownTimezone, 'TZInfo::Timezone constructed directly'
+ end
+
+ # Returns the TimezonePeriod for the given local time. local can either be
+ # a DateTime, Time or integer timestamp (Time.to_i). Any timezone
+ # information in local is ignored (it is treated as a time in the current
+ # timezone).
+ #
+ # Warning: There are local times that have no equivalent UTC times (e.g.
+ # in the transition from standard time to daylight savings time). There are
+ # also local times that have more than one UTC equivalent (e.g. in the
+ # transition from daylight savings time to standard time).
+ #
+ # In the first case (no equivalent UTC time), a PeriodNotFound exception
+ # will be raised.
+ #
+ # In the second case (more than one equivalent UTC time), an AmbiguousTime
+ # exception will be raised unless the optional dst parameter or block
+ # handles the ambiguity.
+ #
+ # If the ambiguity is due to a transition from daylight savings time to
+ # standard time, the dst parameter can be used to select whether the
+ # daylight savings time or local time is used. For example,
+ #
+ # Timezone.get('America/New_York').period_for_local(DateTime.new(2004,10,31,1,30,0))
+ #
+ # would raise an AmbiguousTime exception.
+ #
+ # Specifying dst=true would the daylight savings period from April to
+ # October 2004. Specifying dst=false would return the standard period
+ # from October 2004 to April 2005.
+ #
+ # If the dst parameter does not resolve the ambiguity, and a block is
+ # specified, it is called. The block must take a single parameter - an
+ # array of the periods that need to be resolved. The block can select and
+ # return a single period or return nil or an empty array
+ # to cause an AmbiguousTime exception to be raised.
+ def period_for_local(local, dst = nil)
+ results = periods_for_local(local)
+
+ if results.empty?
+ raise PeriodNotFound
+ elsif results.size < 2
+ results.first
+ else
+ # ambiguous result try to resolve
+
+ if !dst.nil?
+ matches = results.find_all {|period| period.dst? == dst}
+ results = matches if !matches.empty?
+ end
+
+ if results.size < 2
+ results.first
+ else
+ # still ambiguous, try the block
+
+ if block_given?
+ results = yield results
+ end
+
+ if results.is_a?(TimezonePeriod)
+ results
+ elsif results && results.size == 1
+ results.first
+ else
+ raise AmbiguousTime, "#{local} is an ambiguous local time."
+ end
+ end
+ end
+ end
+
+ # Converts a time in UTC to the local timezone. utc can either be
+ # a DateTime, Time or timestamp (Time.to_i). The returned time has the same
+ # type as utc. Any timezone information in utc is ignored (it is treated as
+ # a UTC time).
+ def utc_to_local(utc)
+ TimeOrDateTime.wrap(utc) {|utc|
+ period_for_utc(utc).to_local(utc)
+ }
+ end
+
+ # Converts a time in the local timezone to UTC. local can either be
+ # a DateTime, Time or timestamp (Time.to_i). The returned time has the same
+ # type as local. Any timezone information in local is ignored (it is treated
+ # as a local time).
+ #
+ # Warning: There are local times that have no equivalent UTC times (e.g.
+ # in the transition from standard time to daylight savings time). There are
+ # also local times that have more than one UTC equivalent (e.g. in the
+ # transition from daylight savings time to standard time).
+ #
+ # In the first case (no equivalent UTC time), a PeriodNotFound exception
+ # will be raised.
+ #
+ # In the second case (more than one equivalent UTC time), an AmbiguousTime
+ # exception will be raised unless the optional dst parameter or block
+ # handles the ambiguity.
+ #
+ # If the ambiguity is due to a transition from daylight savings time to
+ # standard time, the dst parameter can be used to select whether the
+ # daylight savings time or local time is used. For example,
+ #
+ # Timezone.get('America/New_York').local_to_utc(DateTime.new(2004,10,31,1,30,0))
+ #
+ # would raise an AmbiguousTime exception.
+ #
+ # Specifying dst=true would return 2004-10-31 5:30:00. Specifying dst=false
+ # would return 2004-10-31 6:30:00.
+ #
+ # If the dst parameter does not resolve the ambiguity, and a block is
+ # specified, it is called. The block must take a single parameter - an
+ # array of the periods that need to be resolved. The block can return a
+ # single period to use to convert the time or return nil or an empty array
+ # to cause an AmbiguousTime exception to be raised.
+ def local_to_utc(local, dst = nil)
+ TimeOrDateTime.wrap(local) {|local|
+ if block_given?
+ period = period_for_local(local, dst) {|periods| yield periods }
+ else
+ period = period_for_local(local, dst)
+ end
+
+ period.to_utc(local)
+ }
+ end
+
+ # Returns the current time in the timezone as a Time.
+ def now
+ utc_to_local(Time.now.utc)
+ end
+
+ # Returns the TimezonePeriod for the current time.
+ def current_period
+ period_for_utc(Time.now.utc)
+ end
+
+ # Returns the current Time and TimezonePeriod as an array. The first element
+ # is the time, the second element is the period.
+ def current_period_and_time
+ utc = Time.now.utc
+ period = period_for_utc(utc)
+ [period.to_local(utc), period]
+ end
+
+ alias :current_time_and_period :current_period_and_time
+
+ # Converts a time in UTC to local time and returns it as a string
+ # according to the given format. The formatting is identical to
+ # Time.strftime and DateTime.strftime, except %Z is replaced with the
+ # timezone abbreviation for the specified time (for example, EST or EDT).
+ def strftime(format, utc = Time.now.utc)
+ period = period_for_utc(utc)
+ local = period.to_local(utc)
+ local = Time.at(local).utc unless local.kind_of?(Time) || local.kind_of?(DateTime)
+ abbreviation = period.abbreviation.to_s.gsub(/%/, '%%')
+
+ format = format.gsub(/(.?)%Z/) do
+ if $1 == '%'
+ # return %%Z so the real strftime treats it as a literal %Z too
+ '%%Z'
+ else
+ "#$1#{abbreviation}"
+ end
+ end
+
+ local.strftime(format)
+ end
+
+ # Compares two Timezones based on their identifier. Returns -1 if tz is less
+ # than self, 0 if tz is equal to self and +1 if tz is greater than self.
+ def <=>(tz)
+ identifier <=> tz.identifier
+ end
+
+ # Returns true if and only if the identifier of tz is equal to the
+ # identifier of this Timezone.
+ def eql?(tz)
+ self == tz
+ end
+
+ # Returns a hash of this Timezone.
+ def hash
+ identifier.hash
+ end
+
+ # Dumps this Timezone for marshalling.
+ def _dump(limit)
+ identifier
+ end
+
+ # Loads a marshalled Timezone.
+ def self._load(data)
+ Timezone.get(data)
+ end
+
+ private
+ # Loads in the index of timezones if it hasn't already been loaded.
+ def self.load_index
+ unless @@index_loaded
+ require 'tzinfo/indexes/timezones'
+ @@index_loaded = true
+ end
+ end
+
+ # Returns an array of proxies corresponding to the given array of
+ # identifiers.
+ def self.get_proxies(identifiers)
+ identifiers.collect {|identifier| get_proxy(identifier)}
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/timezone_definition.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/timezone_definition.rb
new file mode 100644
index 000000000..39ca8bfa5
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/timezone_definition.rb
@@ -0,0 +1,56 @@
+#--
+# Copyright (c) 2006 Philip Ross
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in all
+# copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#++
+
+require 'tzinfo/data_timezone_info'
+require 'tzinfo/linked_timezone_info'
+
+module TZInfo
+
+ # TimezoneDefinition is included into Timezone definition modules.
+ # TimezoneDefinition provides the methods for defining timezones.
+ module TimezoneDefinition #:nodoc:
+ # Add class methods to the includee.
+ def self.append_features(base)
+ super
+ base.extend(ClassMethods)
+ end
+
+ # Class methods for inclusion.
+ module ClassMethods #:nodoc:
+ # Returns and yields a DataTimezoneInfo object to define a timezone.
+ def timezone(identifier)
+ yield @timezone = DataTimezoneInfo.new(identifier)
+ end
+
+ # Defines a linked timezone.
+ def linked_timezone(identifier, link_to_identifier)
+ @timezone = LinkedTimezoneInfo.new(identifier, link_to_identifier)
+ end
+
+ # Returns the last TimezoneInfo to be defined with timezone or
+ # linked_timezone.
+ def get
+ @timezone
+ end
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/timezone_info.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/timezone_info.rb
new file mode 100644
index 000000000..68e38c35f
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/timezone_info.rb
@@ -0,0 +1,40 @@
+#--
+# Copyright (c) 2006 Philip Ross
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in all
+# copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#++
+
+module TZInfo
+ # Represents a timezone defined in a data module.
+ class TimezoneInfo #:nodoc:
+
+ # The timezone identifier.
+ attr_reader :identifier
+
+ # Constructs a new TimezoneInfo with an identifier.
+ def initialize(identifier)
+ @identifier = identifier
+ end
+
+ # Returns internal object state as a programmer-readable string.
+ def inspect
+ "#<#{self.class}: #@identifier>"
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/timezone_offset_info.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/timezone_offset_info.rb
new file mode 100644
index 000000000..913c4164a
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/timezone_offset_info.rb
@@ -0,0 +1,94 @@
+#--
+# Copyright (c) 2006 Philip Ross
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in all
+# copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#++
+
+module TZInfo
+ # Represents an offset defined in a Timezone data file.
+ class TimezoneOffsetInfo #:nodoc:
+ # The base offset of the timezone from UTC in seconds.
+ attr_reader :utc_offset
+
+ # The offset from standard time for the zone in seconds (i.e. non-zero if
+ # daylight savings is being observed).
+ attr_reader :std_offset
+
+ # The total offset of this observance from UTC in seconds
+ # (utc_offset + std_offset).
+ attr_reader :utc_total_offset
+
+ # The abbreviation that identifies this observance, e.g. "GMT"
+ # (Greenwich Mean Time) or "BST" (British Summer Time) for "Europe/London". The returned identifier is a
+ # symbol.
+ attr_reader :abbreviation
+
+ # Constructs a new TimezoneOffsetInfo. utc_offset and std_offset are
+ # specified in seconds.
+ def initialize(utc_offset, std_offset, abbreviation)
+ @utc_offset = utc_offset
+ @std_offset = std_offset
+ @abbreviation = abbreviation
+
+ @utc_total_offset = @utc_offset + @std_offset
+ end
+
+ # True if std_offset is non-zero.
+ def dst?
+ @std_offset != 0
+ end
+
+ # Converts a UTC DateTime to local time based on the offset of this period.
+ def to_local(utc)
+ TimeOrDateTime.wrap(utc) {|utc|
+ utc + @utc_total_offset
+ }
+ end
+
+ # Converts a local DateTime to UTC based on the offset of this period.
+ def to_utc(local)
+ TimeOrDateTime.wrap(local) {|local|
+ local - @utc_total_offset
+ }
+ end
+
+ # Returns true if and only if toi has the same utc_offset, std_offset
+ # and abbreviation as this TimezoneOffsetInfo.
+ def ==(toi)
+ toi.respond_to?(:utc_offset) && toi.respond_to?(:std_offset) && toi.respond_to?(:abbreviation) &&
+ utc_offset == toi.utc_offset && std_offset == toi.std_offset && abbreviation == toi.abbreviation
+ end
+
+ # Returns true if and only if toi has the same utc_offset, std_offset
+ # and abbreviation as this TimezoneOffsetInfo.
+ def eql?(toi)
+ self == toi
+ end
+
+ # Returns a hash of this TimezoneOffsetInfo.
+ def hash
+ utc_offset.hash ^ std_offset.hash ^ abbreviation.hash
+ end
+
+ # Returns internal object state as a programmer-readable string.
+ def inspect
+ "#<#{self.class}: #@utc_offset,#@std_offset,#@abbreviation>"
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/timezone_period.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/timezone_period.rb
new file mode 100644
index 000000000..00888fcfd
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/timezone_period.rb
@@ -0,0 +1,198 @@
+#--
+# Copyright (c) 2005-2006 Philip Ross
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in all
+# copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#++
+
+require 'tzinfo/offset_rationals'
+require 'tzinfo/time_or_datetime'
+
+module TZInfo
+ # A period of time in a timezone where the same offset from UTC applies.
+ #
+ # All the methods that take times accept instances of Time, DateTime or
+ # integer timestamps.
+ class TimezonePeriod
+ # The TimezoneTransitionInfo that defines the start of this TimezonePeriod
+ # (may be nil if unbounded).
+ attr_reader :start_transition
+
+ # The TimezoneTransitionInfo that defines the end of this TimezonePeriod
+ # (may be nil if unbounded).
+ attr_reader :end_transition
+
+ # The TimezoneOffsetInfo for this period.
+ attr_reader :offset
+
+ # Initializes a new TimezonePeriod.
+ def initialize(start_transition, end_transition, offset = nil)
+ @start_transition = start_transition
+ @end_transition = end_transition
+
+ if offset
+ raise ArgumentError, 'Offset specified with transitions' if @start_transition || @end_transition
+ @offset = offset
+ else
+ if @start_transition
+ @offset = @start_transition.offset
+ elsif @end_transition
+ @offset = @end_transition.previous_offset
+ else
+ raise ArgumentError, 'No offset specified and no transitions to determine it from'
+ end
+ end
+
+ @utc_total_offset_rational = nil
+ end
+
+ # Base offset of the timezone from UTC (seconds).
+ def utc_offset
+ @offset.utc_offset
+ end
+
+ # Offset from the local time where daylight savings is in effect (seconds).
+ # E.g.: utc_offset could be -5 hours. Normally, std_offset would be 0.
+ # During daylight savings, std_offset would typically become +1 hours.
+ def std_offset
+ @offset.std_offset
+ end
+
+ # The identifier of this period, e.g. "GMT" (Greenwich Mean Time) or "BST"
+ # (British Summer Time) for "Europe/London". The returned identifier is a
+ # symbol.
+ def abbreviation
+ @offset.abbreviation
+ end
+ alias :zone_identifier :abbreviation
+
+ # Total offset from UTC (seconds). Equal to utc_offset + std_offset.
+ def utc_total_offset
+ @offset.utc_total_offset
+ end
+
+ # Total offset from UTC (days). Result is a Rational.
+ def utc_total_offset_rational
+ unless @utc_total_offset_rational
+ @utc_total_offset_rational = OffsetRationals.rational_for_offset(utc_total_offset)
+ end
+ @utc_total_offset_rational
+ end
+
+ # The start time of the period in UTC as a DateTime. May be nil if unbounded.
+ def utc_start
+ @start_transition ? @start_transition.at.to_datetime : nil
+ end
+
+ # The end time of the period in UTC as a DateTime. May be nil if unbounded.
+ def utc_end
+ @end_transition ? @end_transition.at.to_datetime : nil
+ end
+
+ # The start time of the period in local time as a DateTime. May be nil if
+ # unbounded.
+ def local_start
+ @start_transition ? @start_transition.local_start.to_datetime : nil
+ end
+
+ # The end time of the period in local time as a DateTime. May be nil if
+ # unbounded.
+ def local_end
+ @end_transition ? @end_transition.local_end.to_datetime : nil
+ end
+
+ # true if daylight savings is in effect for this period; otherwise false.
+ def dst?
+ @offset.dst?
+ end
+
+ # true if this period is valid for the given UTC DateTime; otherwise false.
+ def valid_for_utc?(utc)
+ utc_after_start?(utc) && utc_before_end?(utc)
+ end
+
+ # true if the given UTC DateTime is after the start of the period
+ # (inclusive); otherwise false.
+ def utc_after_start?(utc)
+ !@start_transition || @start_transition.at <= utc
+ end
+
+ # true if the given UTC DateTime is before the end of the period
+ # (exclusive); otherwise false.
+ def utc_before_end?(utc)
+ !@end_transition || @end_transition.at > utc
+ end
+
+ # true if this period is valid for the given local DateTime; otherwise false.
+ def valid_for_local?(local)
+ local_after_start?(local) && local_before_end?(local)
+ end
+
+ # true if the given local DateTime is after the start of the period
+ # (inclusive); otherwise false.
+ def local_after_start?(local)
+ !@start_transition || @start_transition.local_start <= local
+ end
+
+ # true if the given local DateTime is before the end of the period
+ # (exclusive); otherwise false.
+ def local_before_end?(local)
+ !@end_transition || @end_transition.local_end > local
+ end
+
+ # Converts a UTC DateTime to local time based on the offset of this period.
+ def to_local(utc)
+ @offset.to_local(utc)
+ end
+
+ # Converts a local DateTime to UTC based on the offset of this period.
+ def to_utc(local)
+ @offset.to_utc(local)
+ end
+
+ # Returns true if this TimezonePeriod is equal to p. This compares the
+ # start_transition, end_transition and offset using ==.
+ def ==(p)
+ p.respond_to?(:start_transition) && p.respond_to?(:end_transition) &&
+ p.respond_to?(:offset) && start_transition == p.start_transition &&
+ end_transition == p.end_transition && offset == p.offset
+ end
+
+ # Returns true if this TimezonePeriods is equal to p. This compares the
+ # start_transition, end_transition and offset using eql?
+ def eql?(p)
+ p.respond_to?(:start_transition) && p.respond_to?(:end_transition) &&
+ p.respond_to?(:offset) && start_transition.eql?(p.start_transition) &&
+ end_transition.eql?(p.end_transition) && offset.eql?(p.offset)
+ end
+
+ # Returns a hash of this TimezonePeriod.
+ def hash
+ result = @start_transition.hash ^ @end_transition.hash
+ result ^= @offset.hash unless @start_transition || @end_transition
+ result
+ end
+
+ # Returns internal object state as a programmer-readable string.
+ def inspect
+ result = "#<#{self.class}: #{@start_transition.inspect},#{@end_transition.inspect}"
+ result << ",#{@offset.inspect}>" unless @start_transition || @end_transition
+ result + '>'
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/timezone_transition_info.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/timezone_transition_info.rb
new file mode 100644
index 000000000..6ae1b7df9
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/timezone_transition_info.rb
@@ -0,0 +1,138 @@
+#--
+# Copyright (c) 2006 Philip Ross
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in all
+# copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#++
+
+require 'date'
+require 'tzinfo/time_or_datetime'
+
+module TZInfo
+ # Represents an offset defined in a Timezone data file.
+ class TimezoneTransitionInfo #:nodoc:
+ # The offset this transition changes to (a TimezoneOffsetInfo instance).
+ attr_reader :offset
+
+ # The offset this transition changes from (a TimezoneOffsetInfo instance).
+ attr_reader :previous_offset
+
+ # The numerator of the DateTime if the transition time is defined as a
+ # DateTime, otherwise the transition time as a timestamp.
+ attr_reader :numerator_or_time
+ protected :numerator_or_time
+
+ # Either the denominotor of the DateTime if the transition time is defined
+ # as a DateTime, otherwise nil.
+ attr_reader :denominator
+ protected :denominator
+
+ # Creates a new TimezoneTransitionInfo with the given offset,
+ # previous_offset (both TimezoneOffsetInfo instances) and UTC time.
+ # if denominator is nil, numerator_or_time is treated as a number of
+ # seconds since the epoch. If denominator is specified numerator_or_time
+ # and denominator are used to create a DateTime as follows:
+ #
+ # DateTime.new!(Rational.new!(numerator_or_time, denominator), 0, Date::ITALY)
+ #
+ # For performance reasons, the numerator and denominator must be specified
+ # in their lowest form.
+ def initialize(offset, previous_offset, numerator_or_time, denominator = nil)
+ @offset = offset
+ @previous_offset = previous_offset
+ @numerator_or_time = numerator_or_time
+ @denominator = denominator
+
+ @at = nil
+ @local_end = nil
+ @local_start = nil
+ end
+
+ # A TimeOrDateTime instance representing the UTC time when this transition
+ # occurs.
+ def at
+ unless @at
+ unless @denominator
+ @at = TimeOrDateTime.new(@numerator_or_time)
+ else
+ r = Rational.new!(@numerator_or_time, @denominator)
+
+ # Ruby 1.8.6 introduced new! and deprecated new0.
+ # Ruby 1.9.0 removed new0.
+ # We still need to support new0 for older versions of Ruby.
+ if DateTime.respond_to? :new!
+ dt = DateTime.new!(r, 0, Date::ITALY)
+ else
+ dt = DateTime.new0(r, 0, Date::ITALY)
+ end
+
+ @at = TimeOrDateTime.new(dt)
+ end
+ end
+
+ @at
+ end
+
+ # A TimeOrDateTime instance representing the local time when this transition
+ # causes the previous observance to end (calculated from at using
+ # previous_offset).
+ def local_end
+ @local_end = at.add_with_convert(@previous_offset.utc_total_offset) unless @local_end
+ @local_end
+ end
+
+ # A TimeOrDateTime instance representing the local time when this transition
+ # causes the next observance to start (calculated from at using offset).
+ def local_start
+ @local_start = at.add_with_convert(@offset.utc_total_offset) unless @local_start
+ @local_start
+ end
+
+ # Returns true if this TimezoneTransitionInfo is equal to the given
+ # TimezoneTransitionInfo. Two TimezoneTransitionInfo instances are
+ # considered to be equal by == if offset, previous_offset and at are all
+ # equal.
+ def ==(tti)
+ tti.respond_to?(:offset) && tti.respond_to?(:previous_offset) && tti.respond_to?(:at) &&
+ offset == tti.offset && previous_offset == tti.previous_offset && at == tti.at
+ end
+
+ # Returns true if this TimezoneTransitionInfo is equal to the given
+ # TimezoneTransitionInfo. Two TimezoneTransitionInfo instances are
+ # considered to be equal by eql? if offset, previous_offset,
+ # numerator_or_time and denominator are all equal. This is stronger than ==,
+ # which just requires the at times to be equal regardless of how they were
+ # originally specified.
+ def eql?(tti)
+ tti.respond_to?(:offset) && tti.respond_to?(:previous_offset) &&
+ tti.respond_to?(:numerator_or_time) && tti.respond_to?(:denominator) &&
+ offset == tti.offset && previous_offset == tti.previous_offset &&
+ numerator_or_time == tti.numerator_or_time && denominator == tti.denominator
+ end
+
+ # Returns a hash of this TimezoneTransitionInfo instance.
+ def hash
+ @offset.hash ^ @previous_offset.hash ^ @numerator_or_time.hash ^ @denominator.hash
+ end
+
+ # Returns internal object state as a programmer-readable string.
+ def inspect
+ "#<#{self.class}: #{at.inspect},#{@offset.inspect}>"
+ end
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/xml-simple-1.0.11/xmlsimple.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/xml-simple-1.0.11/xmlsimple.rb
new file mode 100644
index 000000000..0de24c0ef
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/vendor/xml-simple-1.0.11/xmlsimple.rb
@@ -0,0 +1,1021 @@
+# = XmlSimple
+#
+# Author:: Maik Schmidt <contact@maik-schmidt.de>
+# Copyright:: Copyright (c) 2003-2006 Maik Schmidt
+# License:: Distributes under the same terms as Ruby.
+#
+require 'rexml/document'
+require 'stringio'
+
+# Easy API to maintain XML (especially configuration files).
+class XmlSimple
+ include REXML
+
+ @@VERSION = '1.0.11'
+
+ # A simple cache for XML documents that were already transformed
+ # by xml_in.
+ class Cache
+ # Creates and initializes a new Cache object.
+ def initialize
+ @mem_share_cache = {}
+ @mem_copy_cache = {}
+ end
+
+ # Saves a data structure into a file.
+ #
+ # data::
+ # Data structure to be saved.
+ # filename::
+ # Name of the file belonging to the data structure.
+ def save_storable(data, filename)
+ cache_file = get_cache_filename(filename)
+ File.open(cache_file, "w+") { |f| Marshal.dump(data, f) }
+ end
+
+ # Restores a data structure from a file. If restoring the data
+ # structure failed for any reason, nil will be returned.
+ #
+ # filename::
+ # Name of the file belonging to the data structure.
+ def restore_storable(filename)
+ cache_file = get_cache_filename(filename)
+ return nil unless File::exist?(cache_file)
+ return nil unless File::mtime(cache_file).to_i > File::mtime(filename).to_i
+ data = nil
+ File.open(cache_file) { |f| data = Marshal.load(f) }
+ data
+ end
+
+ # Saves a data structure in a shared memory cache.
+ #
+ # data::
+ # Data structure to be saved.
+ # filename::
+ # Name of the file belonging to the data structure.
+ def save_mem_share(data, filename)
+ @mem_share_cache[filename] = [Time::now.to_i, data]
+ end
+
+ # Restores a data structure from a shared memory cache. You
+ # should consider these elements as "read only". If restoring
+ # the data structure failed for any reason, nil will be
+ # returned.
+ #
+ # filename::
+ # Name of the file belonging to the data structure.
+ def restore_mem_share(filename)
+ get_from_memory_cache(filename, @mem_share_cache)
+ end
+
+ # Copies a data structure to a memory cache.
+ #
+ # data::
+ # Data structure to be copied.
+ # filename::
+ # Name of the file belonging to the data structure.
+ def save_mem_copy(data, filename)
+ @mem_share_cache[filename] = [Time::now.to_i, Marshal.dump(data)]
+ end
+
+ # Restores a data structure from a memory cache. If restoring
+ # the data structure failed for any reason, nil will be
+ # returned.
+ #
+ # filename::
+ # Name of the file belonging to the data structure.
+ def restore_mem_copy(filename)
+ data = get_from_memory_cache(filename, @mem_share_cache)
+ data = Marshal.load(data) unless data.nil?
+ data
+ end
+
+ private
+
+ # Returns the "cache filename" belonging to a filename, i.e.
+ # the extension '.xml' in the original filename will be replaced
+ # by '.stor'. If filename does not have this extension, '.stor'
+ # will be appended.
+ #
+ # filename::
+ # Filename to get "cache filename" for.
+ def get_cache_filename(filename)
+ filename.sub(/(\.xml)?$/, '.stor')
+ end
+
+ # Returns a cache entry from a memory cache belonging to a
+ # certain filename. If no entry could be found for any reason,
+ # nil will be returned.
+ #
+ # filename::
+ # Name of the file the cache entry belongs to.
+ # cache::
+ # Memory cache to get entry from.
+ def get_from_memory_cache(filename, cache)
+ return nil unless cache[filename]
+ return nil unless cache[filename][0] > File::mtime(filename).to_i
+ return cache[filename][1]
+ end
+ end
+
+ # Create a "global" cache.
+ @@cache = Cache.new
+
+ # Creates and intializes a new XmlSimple object.
+ #
+ # defaults::
+ # Default values for options.
+ def initialize(defaults = nil)
+ unless defaults.nil? || defaults.instance_of?(Hash)
+ raise ArgumentError, "Options have to be a Hash."
+ end
+ @default_options = normalize_option_names(defaults, (KNOWN_OPTIONS['in'] + KNOWN_OPTIONS['out']).uniq)
+ @options = Hash.new
+ @_var_values = nil
+ end
+
+ # Converts an XML document in the same way as the Perl module XML::Simple.
+ #
+ # string::
+ # XML source. Could be one of the following:
+ #
+ # - nil: Tries to load and parse '<scriptname>.xml'.
+ # - filename: Tries to load and parse filename.
+ # - IO object: Reads from object until EOF is detected and parses result.
+ # - XML string: Parses string.
+ #
+ # options::
+ # Options to be used.
+ def xml_in(string = nil, options = nil)
+ handle_options('in', options)
+
+ # If no XML string or filename was supplied look for scriptname.xml.
+ if string.nil?
+ string = File::basename($0)
+ string.sub!(/\.[^.]+$/, '')
+ string += '.xml'
+
+ directory = File::dirname($0)
+ @options['searchpath'].unshift(directory) unless directory.nil?
+ end
+
+ if string.instance_of?(String)
+ if string =~ /<.*?>/m
+ @doc = parse(string)
+ elsif string == '-'
+ @doc = parse($stdin.readlines.to_s)
+ else
+ filename = find_xml_file(string, @options['searchpath'])
+
+ if @options.has_key?('cache')
+ @options['cache'].each { |scheme|
+ case(scheme)
+ when 'storable'
+ content = @@cache.restore_storable(filename)
+ when 'mem_share'
+ content = @@cache.restore_mem_share(filename)
+ when 'mem_copy'
+ content = @@cache.restore_mem_copy(filename)
+ else
+ raise ArgumentError, "Unsupported caching scheme: <#{scheme}>."
+ end
+ return content if content
+ }
+ end
+
+ @doc = load_xml_file(filename)
+ end
+ elsif string.kind_of?(IO) || string.kind_of?(StringIO)
+ @doc = parse(string.readlines.to_s)
+ else
+ raise ArgumentError, "Could not parse object of type: <#{string.type}>."
+ end
+
+ result = collapse(@doc.root)
+ result = @options['keeproot'] ? merge({}, @doc.root.name, result) : result
+ put_into_cache(result, filename)
+ result
+ end
+
+ # This is the functional version of the instance method xml_in.
+ def XmlSimple.xml_in(string = nil, options = nil)
+ xml_simple = XmlSimple.new
+ xml_simple.xml_in(string, options)
+ end
+
+ # Converts a data structure into an XML document.
+ #
+ # ref::
+ # Reference to data structure to be converted into XML.
+ # options::
+ # Options to be used.
+ def xml_out(ref, options = nil)
+ handle_options('out', options)
+ if ref.instance_of?(Array)
+ ref = { @options['anonymoustag'] => ref }
+ end
+
+ if @options['keeproot']
+ keys = ref.keys
+ if keys.size == 1
+ ref = ref[keys[0]]
+ @options['rootname'] = keys[0]
+ end
+ elsif @options['rootname'] == ''
+ if ref.instance_of?(Hash)
+ refsave = ref
+ ref = {}
+ refsave.each { |key, value|
+ if !scalar(value)
+ ref[key] = value
+ else
+ ref[key] = [ value.to_s ]
+ end
+ }
+ end
+ end
+
+ @ancestors = []
+ xml = value_to_xml(ref, @options['rootname'], '')
+ @ancestors = nil
+
+ if @options['xmldeclaration']
+ xml = @options['xmldeclaration'] + "\n" + xml
+ end
+
+ if @options.has_key?('outputfile')
+ if @options['outputfile'].kind_of?(IO)
+ return @options['outputfile'].write(xml)
+ else
+ File.open(@options['outputfile'], "w") { |file| file.write(xml) }
+ end
+ end
+ xml
+ end
+
+ # This is the functional version of the instance method xml_out.
+ def XmlSimple.xml_out(hash, options = nil)
+ xml_simple = XmlSimple.new
+ xml_simple.xml_out(hash, options)
+ end
+
+ private
+
+ # Declare options that are valid for xml_in and xml_out.
+ KNOWN_OPTIONS = {
+ 'in' => %w(
+ keyattr keeproot forcecontent contentkey noattr
+ searchpath forcearray suppressempty anonymoustag
+ cache grouptags normalisespace normalizespace
+ variables varattr keytosymbol
+ ),
+ 'out' => %w(
+ keyattr keeproot contentkey noattr rootname
+ xmldeclaration outputfile noescape suppressempty
+ anonymoustag indent grouptags noindent
+ )
+ }
+
+ # Define some reasonable defaults.
+ DEF_KEY_ATTRIBUTES = []
+ DEF_ROOT_NAME = 'opt'
+ DEF_CONTENT_KEY = 'content'
+ DEF_XML_DECLARATION = "<?xml version='1.0' standalone='yes'?>"
+ DEF_ANONYMOUS_TAG = 'anon'
+ DEF_FORCE_ARRAY = true
+ DEF_INDENTATION = ' '
+ DEF_KEY_TO_SYMBOL = false
+
+ # Normalizes option names in a hash, i.e., turns all
+ # characters to lower case and removes all underscores.
+ # Additionally, this method checks, if an unknown option
+ # was used and raises an according exception.
+ #
+ # options::
+ # Hash to be normalized.
+ # known_options::
+ # List of known options.
+ def normalize_option_names(options, known_options)
+ return nil if options.nil?
+ result = Hash.new
+ options.each { |key, value|
+ lkey = key.downcase
+ lkey.gsub!(/_/, '')
+ if !known_options.member?(lkey)
+ raise ArgumentError, "Unrecognised option: #{lkey}."
+ end
+ result[lkey] = value
+ }
+ result
+ end
+
+ # Merges a set of options with the default options.
+ #
+ # direction::
+ # 'in': If options should be handled for xml_in.
+ # 'out': If options should be handled for xml_out.
+ # options::
+ # Options to be merged with the default options.
+ def handle_options(direction, options)
+ @options = options || Hash.new
+
+ raise ArgumentError, "Options must be a Hash!" unless @options.instance_of?(Hash)
+
+ unless KNOWN_OPTIONS.has_key?(direction)
+ raise ArgumentError, "Unknown direction: <#{direction}>."
+ end
+
+ known_options = KNOWN_OPTIONS[direction]
+ @options = normalize_option_names(@options, known_options)
+
+ unless @default_options.nil?
+ known_options.each { |option|
+ unless @options.has_key?(option)
+ if @default_options.has_key?(option)
+ @options[option] = @default_options[option]
+ end
+ end
+ }
+ end
+
+ unless @options.has_key?('noattr')
+ @options['noattr'] = false
+ end
+
+ if @options.has_key?('rootname')
+ @options['rootname'] = '' if @options['rootname'].nil?
+ else
+ @options['rootname'] = DEF_ROOT_NAME
+ end
+
+ if @options.has_key?('xmldeclaration') && @options['xmldeclaration'] == true
+ @options['xmldeclaration'] = DEF_XML_DECLARATION
+ end
+
+ @options['keytosymbol'] = DEF_KEY_TO_SYMBOL unless @options.has_key?('keytosymbol')
+
+ if @options.has_key?('contentkey')
+ if @options['contentkey'] =~ /^-(.*)$/
+ @options['contentkey'] = $1
+ @options['collapseagain'] = true
+ end
+ else
+ @options['contentkey'] = DEF_CONTENT_KEY
+ end
+
+ unless @options.has_key?('normalisespace')
+ @options['normalisespace'] = @options['normalizespace']
+ end
+ @options['normalisespace'] = 0 if @options['normalisespace'].nil?
+
+ if @options.has_key?('searchpath')
+ unless @options['searchpath'].instance_of?(Array)
+ @options['searchpath'] = [ @options['searchpath'] ]
+ end
+ else
+ @options['searchpath'] = []
+ end
+
+ if @options.has_key?('cache') && scalar(@options['cache'])
+ @options['cache'] = [ @options['cache'] ]
+ end
+
+ @options['anonymoustag'] = DEF_ANONYMOUS_TAG unless @options.has_key?('anonymoustag')
+
+ if !@options.has_key?('indent') || @options['indent'].nil?
+ @options['indent'] = DEF_INDENTATION
+ end
+
+ @options['indent'] = '' if @options.has_key?('noindent')
+
+ # Special cleanup for 'keyattr' which could be an array or
+ # a hash or left to default to array.
+ if @options.has_key?('keyattr')
+ if !scalar(@options['keyattr'])
+ # Convert keyattr => { elem => '+attr' }
+ # to keyattr => { elem => ['attr', '+'] }
+ if @options['keyattr'].instance_of?(Hash)
+ @options['keyattr'].each { |key, value|
+ if value =~ /^([-+])?(.*)$/
+ @options['keyattr'][key] = [$2, $1 ? $1 : '']
+ end
+ }
+ elsif !@options['keyattr'].instance_of?(Array)
+ raise ArgumentError, "'keyattr' must be String, Hash, or Array!"
+ end
+ else
+ @options['keyattr'] = [ @options['keyattr'] ]
+ end
+ else
+ @options['keyattr'] = DEF_KEY_ATTRIBUTES
+ end
+
+ if @options.has_key?('forcearray')
+ if @options['forcearray'].instance_of?(Regexp)
+ @options['forcearray'] = [ @options['forcearray'] ]
+ end
+
+ if @options['forcearray'].instance_of?(Array)
+ force_list = @options['forcearray']
+ unless force_list.empty?
+ @options['forcearray'] = {}
+ force_list.each { |tag|
+ if tag.instance_of?(Regexp)
+ unless @options['forcearray']['_regex'].instance_of?(Array)
+ @options['forcearray']['_regex'] = []
+ end
+ @options['forcearray']['_regex'] << tag
+ else
+ @options['forcearray'][tag] = true
+ end
+ }
+ else
+ @options['forcearray'] = false
+ end
+ else
+ @options['forcearray'] = @options['forcearray'] ? true : false
+ end
+ else
+ @options['forcearray'] = DEF_FORCE_ARRAY
+ end
+
+ if @options.has_key?('grouptags') && !@options['grouptags'].instance_of?(Hash)
+ raise ArgumentError, "Illegal value for 'GroupTags' option - expected a Hash."
+ end
+
+ if @options.has_key?('variables') && !@options['variables'].instance_of?(Hash)
+ raise ArgumentError, "Illegal value for 'Variables' option - expected a Hash."
+ end
+
+ if @options.has_key?('variables')
+ @_var_values = @options['variables']
+ elsif @options.has_key?('varattr')
+ @_var_values = {}
+ end
+ end
+
+ # Actually converts an XML document element into a data structure.
+ #
+ # element::
+ # The document element to be collapsed.
+ def collapse(element)
+ result = @options['noattr'] ? {} : get_attributes(element)
+
+ if @options['normalisespace'] == 2
+ result.each { |k, v| result[k] = normalise_space(v) }
+ end
+
+ if element.has_elements?
+ element.each_element { |child|
+ value = collapse(child)
+ if empty(value) && (element.attributes.empty? || @options['noattr'])
+ next if @options.has_key?('suppressempty') && @options['suppressempty'] == true
+ end
+ result = merge(result, child.name, value)
+ }
+ if has_mixed_content?(element)
+ # normalisespace?
+ content = element.texts.map { |x| x.to_s }
+ content = content[0] if content.size == 1
+ result[@options['contentkey']] = content
+ end
+ elsif element.has_text? # i.e. it has only text.
+ return collapse_text_node(result, element)
+ end
+
+ # Turn Arrays into Hashes if key fields present.
+ count = fold_arrays(result)
+
+ # Disintermediate grouped tags.
+ if @options.has_key?('grouptags')
+ result.each { |key, value|
+ next unless (value.instance_of?(Hash) && (value.size == 1))
+ child_key, child_value = value.to_a[0]
+ if @options['grouptags'][key] == child_key
+ result[key] = child_value
+ end
+ }
+ end
+
+ # Fold Hases containing a single anonymous Array up into just the Array.
+ if count == 1
+ anonymoustag = @options['anonymoustag']
+ if result.has_key?(anonymoustag) && result[anonymoustag].instance_of?(Array)
+ return result[anonymoustag]
+ end
+ end
+
+ if result.empty? && @options.has_key?('suppressempty')
+ return @options['suppressempty'] == '' ? '' : nil
+ end
+
+ result
+ end
+
+ # Collapses a text node and merges it with an existing Hash, if
+ # possible.
+ # Thanks to Curtis Schofield for reporting a subtle bug.
+ #
+ # hash::
+ # Hash to merge text node value with, if possible.
+ # element::
+ # Text node to be collapsed.
+ def collapse_text_node(hash, element)
+ value = node_to_text(element)
+ if empty(value) && !element.has_attributes?
+ return {}
+ end
+
+ if element.has_attributes? && !@options['noattr']
+ return merge(hash, @options['contentkey'], value)
+ else
+ if @options['forcecontent']
+ return merge(hash, @options['contentkey'], value)
+ else
+ return value
+ end
+ end
+ end
+
+ # Folds all arrays in a Hash.
+ #
+ # hash::
+ # Hash to be folded.
+ def fold_arrays(hash)
+ fold_amount = 0
+ keyattr = @options['keyattr']
+ if (keyattr.instance_of?(Array) || keyattr.instance_of?(Hash))
+ hash.each { |key, value|
+ if value.instance_of?(Array)
+ if keyattr.instance_of?(Array)
+ hash[key] = fold_array(value)
+ else
+ hash[key] = fold_array_by_name(key, value)
+ end
+ fold_amount += 1
+ end
+ }
+ end
+ fold_amount
+ end
+
+ # Folds an Array to a Hash, if possible. Folding happens
+ # according to the content of keyattr, which has to be
+ # an array.
+ #
+ # array::
+ # Array to be folded.
+ def fold_array(array)
+ hash = Hash.new
+ array.each { |x|
+ return array unless x.instance_of?(Hash)
+ key_matched = false
+ @options['keyattr'].each { |key|
+ if x.has_key?(key)
+ key_matched = true
+ value = x[key]
+ return array if value.instance_of?(Hash) || value.instance_of?(Array)
+ value = normalise_space(value) if @options['normalisespace'] == 1
+ x.delete(key)
+ hash[value] = x
+ break
+ end
+ }
+ return array unless key_matched
+ }
+ hash = collapse_content(hash) if @options['collapseagain']
+ hash
+ end
+
+ # Folds an Array to a Hash, if possible. Folding happens
+ # according to the content of keyattr, which has to be
+ # a Hash.
+ #
+ # name::
+ # Name of the attribute to be folded upon.
+ # array::
+ # Array to be folded.
+ def fold_array_by_name(name, array)
+ return array unless @options['keyattr'].has_key?(name)
+ key, flag = @options['keyattr'][name]
+
+ hash = Hash.new
+ array.each { |x|
+ if x.instance_of?(Hash) && x.has_key?(key)
+ value = x[key]
+ return array if value.instance_of?(Hash) || value.instance_of?(Array)
+ value = normalise_space(value) if @options['normalisespace'] == 1
+ hash[value] = x
+ hash[value]["-#{key}"] = hash[value][key] if flag == '-'
+ hash[value].delete(key) unless flag == '+'
+ else
+ $stderr.puts("Warning: <#{name}> element has no '#{key}' attribute.")
+ return array
+ end
+ }
+ hash = collapse_content(hash) if @options['collapseagain']
+ hash
+ end
+
+ # Tries to collapse a Hash even more ;-)
+ #
+ # hash::
+ # Hash to be collapsed again.
+ def collapse_content(hash)
+ content_key = @options['contentkey']
+ hash.each_value { |value|
+ return hash unless value.instance_of?(Hash) && value.size == 1 && value.has_key?(content_key)
+ hash.each_key { |key| hash[key] = hash[key][content_key] }
+ }
+ hash
+ end
+
+ # Adds a new key/value pair to an existing Hash. If the key to be added
+ # does already exist and the existing value associated with key is not
+ # an Array, it will be converted into an Array. Then the new value is
+ # appended to that Array.
+ #
+ # hash::
+ # Hash to add key/value pair to.
+ # key::
+ # Key to be added.
+ # value::
+ # Value to be associated with key.
+ def merge(hash, key, value)
+ if value.instance_of?(String)
+ value = normalise_space(value) if @options['normalisespace'] == 2
+
+ # do variable substitutions
+ unless @_var_values.nil? || @_var_values.empty?
+ value.gsub!(/\$\{(\w+)\}/) { |x| get_var($1) }
+ end
+
+ # look for variable definitions
+ if @options.has_key?('varattr')
+ varattr = @options['varattr']
+ if hash.has_key?(varattr)
+ set_var(hash[varattr], value)
+ end
+ end
+ end
+
+ #patch for converting keys to symbols
+ if @options.has_key?('keytosymbol')
+ if @options['keytosymbol'] == true
+ key = key.to_s.downcase.to_sym
+ end
+ end
+
+ if hash.has_key?(key)
+ if hash[key].instance_of?(Array)
+ hash[key] << value
+ else
+ hash[key] = [ hash[key], value ]
+ end
+ elsif value.instance_of?(Array) # Handle anonymous arrays.
+ hash[key] = [ value ]
+ else
+ if force_array?(key)
+ hash[key] = [ value ]
+ else
+ hash[key] = value
+ end
+ end
+ hash
+ end
+
+ # Checks, if the 'forcearray' option has to be used for
+ # a certain key.
+ def force_array?(key)
+ return false if key == @options['contentkey']
+ return true if @options['forcearray'] == true
+ forcearray = @options['forcearray']
+ if forcearray.instance_of?(Hash)
+ return true if forcearray.has_key?(key)
+ return false unless forcearray.has_key?('_regex')
+ forcearray['_regex'].each { |x| return true if key =~ x }
+ end
+ return false
+ end
+
+ # Converts the attributes array of a document node into a Hash.
+ # Returns an empty Hash, if node has no attributes.
+ #
+ # node::
+ # Document node to extract attributes from.
+ def get_attributes(node)
+ attributes = {}
+ node.attributes.each { |n,v| attributes[n] = v }
+ attributes
+ end
+
+ # Determines, if a document element has mixed content.
+ #
+ # element::
+ # Document element to be checked.
+ def has_mixed_content?(element)
+ if element.has_text? && element.has_elements?
+ return true if element.texts.join('') !~ /^\s*$/s
+ end
+ false
+ end
+
+ # Called when a variable definition is encountered in the XML.
+ # A variable definition looks like
+ # <element attrname="name">value</element>
+ # where attrname matches the varattr setting.
+ def set_var(name, value)
+ @_var_values[name] = value
+ end
+
+ # Called during variable substitution to get the value for the
+ # named variable.
+ def get_var(name)
+ if @_var_values.has_key?(name)
+ return @_var_values[name]
+ else
+ return "${#{name}}"
+ end
+ end
+
+ # Recurses through a data structure building up and returning an
+ # XML representation of that structure as a string.
+ #
+ # ref::
+ # Reference to the data structure to be encoded.
+ # name::
+ # The XML tag name to be used for this item.
+ # indent::
+ # A string of spaces for use as the current indent level.
+ def value_to_xml(ref, name, indent)
+ named = !name.nil? && name != ''
+ nl = @options.has_key?('noindent') ? '' : "\n"
+
+ if !scalar(ref)
+ if @ancestors.member?(ref)
+ raise ArgumentError, "Circular data structures not supported!"
+ end
+ @ancestors << ref
+ else
+ if named
+ return [indent, '<', name, '>', @options['noescape'] ? ref.to_s : escape_value(ref.to_s), '</', name, '>', nl].join('')
+ else
+ return ref.to_s + nl
+ end
+ end
+
+ # Unfold hash to array if possible.
+ if ref.instance_of?(Hash) && !ref.empty? && !@options['keyattr'].empty? && indent != ''
+ ref = hash_to_array(name, ref)
+ end
+
+ result = []
+ if ref.instance_of?(Hash)
+ # Reintermediate grouped values if applicable.
+ if @options.has_key?('grouptags')
+ ref.each { |key, value|
+ if @options['grouptags'].has_key?(key)
+ ref[key] = { @options['grouptags'][key] => value }
+ end
+ }
+ end
+
+ nested = []
+ text_content = nil
+ if named
+ result << indent << '<' << name
+ end
+
+ if !ref.empty?
+ ref.each { |key, value|
+ next if !key.nil? && key[0, 1] == '-'
+ if value.nil?
+ unless @options.has_key?('suppressempty') && @options['suppressempty'].nil?
+ raise ArgumentError, "Use of uninitialized value!"
+ end
+ value = {}
+ end
+
+ if !scalar(value) || @options['noattr']
+ nested << value_to_xml(value, key, indent + @options['indent'])
+ else
+ value = value.to_s
+ value = escape_value(value) unless @options['noescape']
+ if key == @options['contentkey']
+ text_content = value
+ else
+ result << ' ' << key << '="' << value << '"'
+ end
+ end
+ }
+ else
+ text_content = ''
+ end
+
+ if !nested.empty? || !text_content.nil?
+ if named
+ result << '>'
+ if !text_content.nil?
+ result << text_content
+ nested[0].sub!(/^\s+/, '') if !nested.empty?
+ else
+ result << nl
+ end
+ if !nested.empty?
+ result << nested << indent
+ end
+ result << '</' << name << '>' << nl
+ else
+ result << nested
+ end
+ else
+ result << ' />' << nl
+ end
+ elsif ref.instance_of?(Array)
+ ref.each { |value|
+ if scalar(value)
+ result << indent << '<' << name << '>'
+ result << (@options['noescape'] ? value.to_s : escape_value(value.to_s))
+ result << '</' << name << '>' << nl
+ elsif value.instance_of?(Hash)
+ result << value_to_xml(value, name, indent)
+ else
+ result << indent << '<' << name << '>' << nl
+ result << value_to_xml(value, @options['anonymoustag'], indent + @options['indent'])
+ result << indent << '</' << name << '>' << nl
+ end
+ }
+ else
+ # Probably, this is obsolete.
+ raise ArgumentError, "Can't encode a value of type: #{ref.type}."
+ end
+ @ancestors.pop if !scalar(ref)
+ result.join('')
+ end
+
+ # Checks, if a certain value is a "scalar" value. Whatever
+ # that will be in Ruby ... ;-)
+ #
+ # value::
+ # Value to be checked.
+ def scalar(value)
+ return false if value.instance_of?(Hash) || value.instance_of?(Array)
+ return true
+ end
+
+ # Attempts to unfold a hash of hashes into an array of hashes. Returns
+ # a reference to th array on success or the original hash, if unfolding
+ # is not possible.
+ #
+ # parent::
+ #
+ # hashref::
+ # Reference to the hash to be unfolded.
+ def hash_to_array(parent, hashref)
+ arrayref = []
+ hashref.each { |key, value|
+ return hashref unless value.instance_of?(Hash)
+
+ if @options['keyattr'].instance_of?(Hash)
+ return hashref unless @options['keyattr'].has_key?(parent)
+ arrayref << { @options['keyattr'][parent][0] => key }.update(value)
+ else
+ arrayref << { @options['keyattr'][0] => key }.update(value)
+ end
+ }
+ arrayref
+ end
+
+ # Replaces XML markup characters by their external entities.
+ #
+ # data::
+ # The string to be escaped.
+ def escape_value(data)
+ Text::normalize(data)
+ end
+
+ # Removes leading and trailing whitespace and sequences of
+ # whitespaces from a string.
+ #
+ # text::
+ # String to be normalised.
+ def normalise_space(text)
+ text.strip.gsub(/\s\s+/, ' ')
+ end
+
+ # Checks, if an object is nil, an empty String or an empty Hash.
+ # Thanks to Norbert Gawor for a bugfix.
+ #
+ # value::
+ # Value to be checked for emptyness.
+ def empty(value)
+ case value
+ when Hash
+ return value.empty?
+ when String
+ return value !~ /\S/m
+ else
+ return value.nil?
+ end
+ end
+
+ # Converts a document node into a String.
+ # If the node could not be converted into a String
+ # for any reason, default will be returned.
+ #
+ # node::
+ # Document node to be converted.
+ # default::
+ # Value to be returned, if node could not be converted.
+ def node_to_text(node, default = nil)
+ if node.instance_of?(REXML::Element)
+ node.texts.map { |t| t.value }.join('')
+ elsif node.instance_of?(REXML::Attribute)
+ node.value.nil? ? default : node.value.strip
+ elsif node.instance_of?(REXML::Text)
+ node.value.strip
+ else
+ default
+ end
+ end
+
+ # Parses an XML string and returns the according document.
+ #
+ # xml_string::
+ # XML string to be parsed.
+ #
+ # The following exception may be raised:
+ #
+ # REXML::ParseException::
+ # If the specified file is not wellformed.
+ def parse(xml_string)
+ Document.new(xml_string)
+ end
+
+ # Searches in a list of paths for a certain file. Returns
+ # the full path to the file, if it could be found. Otherwise,
+ # an exception will be raised.
+ #
+ # filename::
+ # Name of the file to search for.
+ # searchpath::
+ # List of paths to search in.
+ def find_xml_file(file, searchpath)
+ filename = File::basename(file)
+
+ if filename != file
+ return file if File::file?(file)
+ else
+ searchpath.each { |path|
+ full_path = File::join(path, filename)
+ return full_path if File::file?(full_path)
+ }
+ end
+
+ if searchpath.empty?
+ return file if File::file?(file)
+ raise ArgumentError, "File does not exist: #{file}."
+ end
+ raise ArgumentError, "Could not find <#{filename}> in <#{searchpath.join(':')}>"
+ end
+
+ # Loads and parses an XML configuration file.
+ #
+ # filename::
+ # Name of the configuration file to be loaded.
+ #
+ # The following exceptions may be raised:
+ #
+ # Errno::ENOENT::
+ # If the specified file does not exist.
+ # REXML::ParseException::
+ # If the specified file is not wellformed.
+ def load_xml_file(filename)
+ parse(File.readlines(filename).to_s)
+ end
+
+ # Caches the data belonging to a certain file.
+ #
+ # data::
+ # Data to be cached.
+ # filename::
+ # Name of file the data was read from.
+ def put_into_cache(data, filename)
+ if @options.has_key?('cache')
+ @options['cache'].each { |scheme|
+ case(scheme)
+ when 'storable'
+ @@cache.save_storable(data, filename)
+ when 'mem_share'
+ @@cache.save_mem_share(data, filename)
+ when 'mem_copy'
+ @@cache.save_mem_copy(data, filename)
+ else
+ raise ArgumentError, "Unsupported caching scheme: <#{scheme}>."
+ end
+ }
+ end
+ end
+end
+
+# vim:sw=2
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/version.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/version.rb
new file mode 100644
index 000000000..b346459a9
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/version.rb
@@ -0,0 +1,9 @@
+module ActiveSupport
+ module VERSION #:nodoc:
+ MAJOR = 2
+ MINOR = 1
+ TINY = 0
+
+ STRING = [MAJOR, MINOR, TINY].join('.')
+ end
+end
diff --git a/vendor/rails-2.1.0/activesupport/lib/active_support/whiny_nil.rb b/vendor/rails-2.1.0/activesupport/lib/active_support/whiny_nil.rb
new file mode 100644
index 000000000..36fe9510b
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/active_support/whiny_nil.rb
@@ -0,0 +1,58 @@
+# Extensions to +nil+ which allow for more helpful error messages for people who
+# are new to Rails.
+#
+# Ruby raises NoMethodError if you invoke a method on an object that does not
+# respond to it:
+#
+# $ ruby -e nil.destroy
+# -e:1: undefined method `destroy' for nil:NilClass (NoMethodError)
+#
+# With these extensions, if the method belongs to the public interface of the
+# classes in NilClass::WHINERS the error message suggests which could be the
+# actual intended class:
+#
+# $ script/runner nil.destroy
+# ...
+# You might have expected an instance of ActiveRecord::Base.
+# ...
+#
+# NilClass#id exists in Ruby 1.8 (though it is deprecated). Since +id+ is a fundamental
+# method of Active Record models NilClass#id is redefined as well to raise a RuntimeError
+# and warn the user. She probably wanted a model database identifier and the 4
+# returned by the original method could result in obscure bugs.
+#
+# The flag <tt>config.whiny_nils</tt> determines whether this feature is enabled.
+# By default it is on in development and test modes, and it is off in production
+# mode.
+class NilClass
+ WHINERS = [::Array]
+ WHINERS << ::ActiveRecord::Base if defined? ::ActiveRecord
+
+ METHOD_CLASS_MAP = Hash.new
+
+ WHINERS.each do |klass|
+ methods = klass.public_instance_methods - public_instance_methods
+ class_name = klass.name
+ methods.each { |method| METHOD_CLASS_MAP[method.to_sym] = class_name }
+ end
+
+ # Raises a RuntimeError when you attempt to call +id+ on +nil+.
+ def id
+ raise RuntimeError, "Called id for nil, which would mistakenly be 4 -- if you really wanted the id of nil, use object_id", caller
+ end
+
+ private
+ def method_missing(method, *args, &block)
+ raise_nil_warning_for METHOD_CLASS_MAP[method], method, caller
+ end
+
+ # Raises a NoMethodError when you attempt to call a method on +nil+.
+ def raise_nil_warning_for(class_name = nil, selector = nil, with_caller = nil)
+ message = "You have a nil object when you didn't expect it!"
+ message << "\nYou might have expected an instance of #{class_name}." if class_name
+ message << "\nThe error occurred while evaluating nil.#{selector}" if selector
+
+ raise NoMethodError, message, with_caller || caller
+ end
+end
+
diff --git a/vendor/rails-2.1.0/activesupport/lib/activesupport.rb b/vendor/rails-2.1.0/activesupport/lib/activesupport.rb
new file mode 100644
index 000000000..69f36f793
--- /dev/null
+++ b/vendor/rails-2.1.0/activesupport/lib/activesupport.rb
@@ -0,0 +1 @@
+require 'active_support'