commonthread-rails 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/.document ADDED
@@ -0,0 +1,5 @@
1
+ README.rdoc
2
+ lib/**/*.rb
3
+ bin/*
4
+ features/**/*.feature
5
+ LICENSE
data/.gitignore ADDED
@@ -0,0 +1,21 @@
1
+ ## MAC OS
2
+ .DS_Store
3
+
4
+ ## TEXTMATE
5
+ *.tmproj
6
+ tmtags
7
+
8
+ ## EMACS
9
+ *~
10
+ \#*
11
+ .\#*
12
+
13
+ ## VIM
14
+ *.swp
15
+
16
+ ## PROJECT::GENERAL
17
+ coverage
18
+ rdoc
19
+ pkg
20
+
21
+ ## PROJECT::SPECIFIC
data/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2009 CommonThread
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.rdoc ADDED
@@ -0,0 +1,17 @@
1
+ = commonthread-rails
2
+
3
+ Description goes here.
4
+
5
+ == Note on Patches/Pull Requests
6
+
7
+ * Fork the project.
8
+ * Make your feature addition or bug fix.
9
+ * Add tests for it. This is important so I don't break it in a
10
+ future version unintentionally.
11
+ * Commit, do not mess with rakefile, version, or history.
12
+ (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
13
+ * Send me a pull request. Bonus points for topic branches.
14
+
15
+ == Copyright
16
+
17
+ Copyright (c) 2010 CommonThread. See LICENSE for details.
data/Rakefile ADDED
@@ -0,0 +1,53 @@
1
+ require 'rubygems'
2
+ require 'rake'
3
+
4
+ begin
5
+ require 'jeweler'
6
+ Jeweler::Tasks.new do |gem|
7
+ gem.name = "commonthread-rails"
8
+ gem.summary = %Q{commonthread-rails is a collection of things that make rails development better for us}
9
+ gem.description = %Q{commonthread-rails is a collection of things that make rails development better for us. It includes date formats, monkey patches to String, Array and NilClass to make things nicer. An Encrypter using blowfish. Also, some rails filters}
10
+ gem.email = "hello@commonthread.com"
11
+ gem.homepage = "http://github.com/commonthread/commonthread-rails"
12
+ gem.authors = ["CommonThread"]
13
+ gem.add_development_dependency "thoughtbot-shoulda", ">= 0"
14
+ # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
15
+ end
16
+ Jeweler::GemcutterTasks.new
17
+ rescue LoadError
18
+ puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
19
+ end
20
+
21
+ require 'rake/testtask'
22
+ Rake::TestTask.new(:test) do |test|
23
+ test.libs << 'lib' << 'test'
24
+ test.pattern = 'test/**/test_*.rb'
25
+ test.verbose = true
26
+ end
27
+
28
+ begin
29
+ require 'rcov/rcovtask'
30
+ Rcov::RcovTask.new do |test|
31
+ test.libs << 'test'
32
+ test.pattern = 'test/**/test_*.rb'
33
+ test.verbose = true
34
+ end
35
+ rescue LoadError
36
+ task :rcov do
37
+ abort "RCov is not available. In order to run rcov, you must: sudo gem install spicycode-rcov"
38
+ end
39
+ end
40
+
41
+ task :test => :check_dependencies
42
+
43
+ task :default => :test
44
+
45
+ require 'rake/rdoctask'
46
+ Rake::RDocTask.new do |rdoc|
47
+ version = File.exist?('VERSION') ? File.read('VERSION') : ""
48
+
49
+ rdoc.rdoc_dir = 'rdoc'
50
+ rdoc.title = "commonthread-rails #{version}"
51
+ rdoc.rdoc_files.include('README*')
52
+ rdoc.rdoc_files.include('lib/**/*.rb')
53
+ end
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.1.0
@@ -0,0 +1,59 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{commonthread-rails}
8
+ s.version = "0.1.0"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["CommonThread"]
12
+ s.date = %q{2010-01-23}
13
+ s.description = %q{commonthread-rails is a collection of things that make rails development better for us. It includes date formats, monkey patches to String, Array and NilClass to make things nicer. An Encrypter using blowfish. Also, some rails filters}
14
+ s.email = %q{hello@commonthread.com}
15
+ s.extra_rdoc_files = [
16
+ "LICENSE",
17
+ "README.rdoc"
18
+ ]
19
+ s.files = [
20
+ ".document",
21
+ ".gitignore",
22
+ "LICENSE",
23
+ "README.rdoc",
24
+ "Rakefile",
25
+ "VERSION",
26
+ "commonthread-rails.gemspec",
27
+ "lib/commonthread-rails.rb",
28
+ "lib/commonthread/date_formats.rb",
29
+ "lib/commonthread/encrypter.rb",
30
+ "lib/commonthread/filters.rb",
31
+ "lib/commonthread/lipsum.rb",
32
+ "lib/commonthread/monkey_patches.rb",
33
+ "test/helper.rb",
34
+ "test/test_commonthread-rails.rb"
35
+ ]
36
+ s.homepage = %q{http://github.com/commonthread/commonthread-rails}
37
+ s.rdoc_options = ["--charset=UTF-8"]
38
+ s.require_paths = ["lib"]
39
+ s.rubygems_version = %q{1.3.5}
40
+ s.summary = %q{commonthread-rails is a collection of things that make rails development better for us}
41
+ s.test_files = [
42
+ "test/helper.rb",
43
+ "test/test_commonthread-rails.rb"
44
+ ]
45
+
46
+ if s.respond_to? :specification_version then
47
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
48
+ s.specification_version = 3
49
+
50
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
51
+ s.add_development_dependency(%q<thoughtbot-shoulda>, [">= 0"])
52
+ else
53
+ s.add_dependency(%q<thoughtbot-shoulda>, [">= 0"])
54
+ end
55
+ else
56
+ s.add_dependency(%q<thoughtbot-shoulda>, [">= 0"])
57
+ end
58
+ end
59
+
@@ -0,0 +1,9 @@
1
+ require 'commonthread/date_formats'
2
+ require 'commonthread/monkey_patches'
3
+ require 'commonthread/encrypter'
4
+
5
+ require 'commonthread/lipsum'
6
+ ActionView::Base.send(:include, CommonThread::Lipsum::Helper)
7
+
8
+ require 'commonthread/filters'
9
+ ActionController::Base.send(:include, CommonThread::Filters)
@@ -0,0 +1,18 @@
1
+ # ================
2
+ # = Date Formats =
3
+ # ================
4
+
5
+ common_formats = {
6
+ :filename => '%m_%d_%Y', # 08_02_1982
7
+ :standard => '%m/%d/%Y', # 12/14/2002
8
+ :full => '%m/%d/%Y %H:%M:%S', # 08/02/1980 09:30:00
9
+ :full_12 => '%m/%d/%Y %I:%M %p', # 08/02/1980 09:30 AM
10
+ :full_24 => '%m/%d/%Y %H:%M:%S', # 08/02/1980 09:30:00
11
+ :medium => '%b %d %Y', # Jan 11 2008
12
+ :day => '%A', # Sunday
13
+ :time_12 => '%I:%M %p', # 04:30 PM
14
+ :time_24 => '%H:%M' # 16:30
15
+ }
16
+
17
+ ActiveSupport::CoreExtensions::Time::Conversions::DATE_FORMATS.merge!(common_formats)
18
+ ActiveSupport::CoreExtensions::Date::Conversions::DATE_FORMATS.merge!(common_formats)
@@ -0,0 +1,25 @@
1
+ class Encrypter
2
+ def self.encrypt(input)
3
+ return nil if input.nil?
4
+ Base64.encode64(self.blowfish.encrypt_string(input))
5
+ end
6
+
7
+ def self.decrypt(input)
8
+ return nil if input.nil?
9
+ self.blowfish.decrypt_string(Base64.decode64(input))
10
+ end
11
+
12
+ def self.salt
13
+ @@salt || 'common-salt'
14
+ end
15
+
16
+ def self.salt=(value)
17
+ @@salt = value
18
+ end
19
+
20
+ private
21
+
22
+ def self.blowfish
23
+ @@blowfish ||= Crypt::Blowfish.new(self.salt)
24
+ end
25
+ end
@@ -0,0 +1,44 @@
1
+ module CommonThread
2
+ module Filters
3
+ protected
4
+
5
+ # Filter method to enforce a SSL requirement.
6
+ #
7
+ # To require SSL for all actions, use this in your controllers:
8
+ #
9
+ # before_filter :ssl_required
10
+ #
11
+ # To require SSL for specific actions, use this in your controllers:
12
+ #
13
+ # before_filter :ssl_required, :only => [ :edit, :update ]
14
+ #
15
+ # To skip this in a subclassed controller:
16
+ #
17
+ # skip_before_filter :ssl_required
18
+ #
19
+ def ssl_required
20
+ if RAILS_ENV == 'production' and !request.ssl?
21
+ redirect_to "https://" + request.host + request.request_uri
22
+ return false
23
+ end
24
+ end
25
+
26
+ # Filter method to enforce that no one is logged in. Requires that you have logged_in? implemented.
27
+ #
28
+ # To require anonomous for all actions, use this in your controllers:
29
+ #
30
+ # before_filter :anonomous_required
31
+ #
32
+ # To require anonomous for specific actions, use this in your controllers:
33
+ #
34
+ # before_filter :anonomous_required, :only => [ :edit, :update ]
35
+ #
36
+ # To skip this in a subclassed controller:
37
+ #
38
+ # skip_before_filter :anonomous_required
39
+ #
40
+ def anonomous_required
41
+ !logged_in? || redirect_back_or_default('/')
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,212 @@
1
+ module CommonThread
2
+ module Lipsum
3
+ module Helper
4
+ def lorem_ipsum(count, type = :words, text = :html)
5
+ CommonThread::Lipsum::Generator.output(count, type, text)
6
+ end
7
+ end
8
+
9
+ module Generator
10
+ PARAGRAPHS = [
11
+ "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Quisque ut nunc sollicitudin est pulvinar semper. Etiam accumsan neque ut libero. Phasellus aliquet fringilla orci. Suspendisse potenti. Curabitur in turpis. Cras eget turpis. Etiam neque. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Cras cursus augue quis risus. Aenean malesuada, metus ac blandit tincidunt, dui est auctor enim, a placerat nisl orci ac mauris. Morbi mattis consequat augue. Maecenas euismod ultrices eros. Curabitur sit amet nibh. Nunc ac mi.",
12
+ "Cras non lorem. Etiam molestie leo eget ligula. Quisque rutrum arcu eget mauris. Nulla et mi condimentum dolor euismod venenatis. Phasellus tellus pede, posuere eu, rutrum sed, suscipit ornare, velit. In vehicula, nisl sit amet hendrerit placerat, erat urna pharetra metus, eu volutpat leo quam at tellus. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Pellentesque ornare, eros eu cursus luctus, velit libero fringilla libero, blandit feugiat nulla dui nec nunc. Donec suscipit diam a lectus. Quisque fringilla aliquam quam. Nam tempor sapien nec tellus. Quisque pretium, justo id malesuada vehicula, leo leo feugiat enim, id bibendum nisi erat ut diam. Vestibulum nonummy. In venenatis tellus non nibh.",
13
+ "Phasellus auctor. Pellentesque nulla. Sed id nisi porta purus dignissim posuere. Vestibulum elit. Fusce rutrum eleifend enim. Duis mattis lobortis quam. Vivamus placerat cursus tortor. Vivamus dolor erat, tincidunt pharetra, commodo ac, pretium et, est. Proin congue nulla et justo. Proin commodo euismod orci. Mauris pellentesque lorem quis libero. Donec ac ante. Donec eu sem. Cras leo nibh, vestibulum sit amet, iaculis vel, viverra vitae, diam. Aliquam scelerisque. Morbi in nunc tincidunt leo pretium pellentesque.",
14
+ "Mauris sodales ligula a quam. Mauris hendrerit ultrices tellus. Pellentesque at urna ut mauris laoreet convallis. Vestibulum dapibus. Vivamus tincidunt ligula non nisl. Morbi eget nulla nec justo gravida imperdiet. Phasellus eu mauris. Quisque viverra sem in lacus. Donec viverra porta enim. Proin mollis pellentesque justo. Curabitur feugiat mi at diam. Aenean blandit tellus et justo. Aliquam erat volutpat. Donec id mauris vehicula enim mollis tincidunt. Nulla vitae nibh. Phasellus id nulla. Sed at magna. Suspendisse potenti. Nunc odio ipsum, elementum vel, scelerisque et, ultrices quis, eros. Suspendisse ultrices lacus eu diam.",
15
+ "Nulla facilisi. Suspendisse potenti. Suspendisse sagittis, tortor et aliquet lacinia, metus purus tempor diam, eget dictum nulla dolor euismod massa. Maecenas mi neque, convallis non, tristique vel, molestie sed, nisl. Nam dapibus sagittis quam. Quisque dolor leo, rutrum quis, placerat convallis, ornare sed, risus. Fusce porta facilisis arcu. Duis facilisis lacus ut arcu commodo porta. Quisque eu tortor. Integer ultrices justo eget erat.",
16
+ "Cras dignissim. Vestibulum congue erat rutrum odio. Duis nec massa. Nullam tincidunt dui ac lorem. Maecenas eu ligula. Integer eu turpis. Sed eu sapien eu leo imperdiet vestibulum. Donec volutpat mauris in lorem convallis mollis. Fusce massa tellus, ultricies nec, tempor ut, laoreet tincidunt, sem. Curabitur tincidunt ligula non nisi. Sed pellentesque pede at ante. Etiam vel ante. Vestibulum posuere velit nec felis. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Etiam arcu augue, vulputate vel, mollis et, placerat in, nisl. Nulla facilisi. Vivamus vitae dui. Sed nisl. Suspendisse ornare tristique augue.",
17
+ "Duis eget enim. Cras eleifend aliquam mi. Fusce bibendum ligula sed est. Nunc porttitor molestie quam. Nunc accumsan. Suspendisse potenti. Proin libero. Duis imperdiet nonummy eros. Etiam tempus ipsum at turpis. Suspendisse non mauris. Fusce vitae lectus non nulla adipiscing convallis. Phasellus ac nulla sed metus ornare nonummy. Vivamus nonummy mauris quis dui.",
18
+ "Vivamus ante tortor, posuere a, vulputate facilisis, pretium eget, leo. Mauris eu odio pulvinar turpis iaculis aliquam. Pellentesque quam. Duis ipsum massa, lacinia non, facilisis ac, tempor in, tellus. Phasellus eros. Nulla facilisi. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Donec eleifend nibh vel dolor. Vivamus vel nibh. Nulla libero sapien, sodales a, venenatis a, placerat eget, quam. Sed ut lorem. Suspendisse suscipit laoreet mauris. Phasellus arcu libero, hendrerit ut, malesuada sit amet, elementum quis, ipsum. Pellentesque mollis congue arcu. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Sed euismod. Nulla facilisi. Nulla lacinia. Sed faucibus nisi venenatis lorem. Duis ac ligula eget tortor semper scelerisque.",
19
+ "Fusce placerat mi dictum erat. Vivamus blandit leo sed ipsum. Donec semper ante at libero. Donec ac odio at risus tempor condimentum. Praesent ac arcu consequat erat congue fringilla. Praesent felis libero, lobortis ornare, pellentesque eget, adipiscing a, ante. Donec eu nunc. In eleifend vehicula felis. Maecenas dapibus magna quis diam. Vivamus vulputate lacinia magna. Curabitur augue est, tincidunt in, tempor sagittis, congue ut, metus. Nullam nonummy porta turpis. Quisque lobortis pellentesque eros. Curabitur dolor. Mauris fringilla tempus neque.",
20
+ "Nullam fermentum aliquam turpis. Duis dictum, dolor id imperdiet ultrices, felis ante fermentum lacus, nec convallis velit enim a magna. Sed eu eros ut ipsum congue fringilla. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Pellentesque eget libero. Aliquam euismod porta nulla. Maecenas convallis, quam et auctor vestibulum, nisi tellus feugiat nibh, a condimentum nulla augue ut justo. Etiam at nisi. Pellentesque vel magna vitae nulla bibendum molestie. Ut bibendum suscipit est. Sed est magna, dapibus eu, vehicula ut, congue ac, magna.",
21
+ "Etiam ante. Nulla facilisi. Morbi mi ligula, ullamcorper tincidunt, porttitor at, mattis ac, dui. Donec condimentum, nisl sed varius nonummy, mi dolor lacinia sapien, quis tincidunt dui dolor nec urna. Ut nec libero. Sed sit amet lacus. Fusce justo tortor, vulputate et, fringilla quis, dictum quis, risus. Pellentesque venenatis, erat at tristique interdum, nibh lacus imperdiet ipsum, eu varius dui neque eget mauris. Praesent semper luctus urna. In hac habitasse platea dictumst. Proin volutpat euismod odio. Pellentesque euismod, ligula vel rhoncus suscipit, purus nisi vehicula justo, ut fermentum nibh neque ut nisl.",
22
+ "Maecenas lacinia. Nunc malesuada diam ac diam. Pellentesque sit amet sapien. Sed gravida, sapien interdum iaculis hendrerit, orci velit vestibulum nulla, ac hendrerit diam eros quis risus. Pellentesque sodales, pede et bibendum fringilla, odio justo aliquam est, eget malesuada lorem quam sit amet sapien. Proin in metus. Duis varius dui quis turpis. Nam viverra. Ut id purus luctus magna aliquam vestibulum. Nulla facilisi. Praesent quis erat. Curabitur velit justo, tincidunt at, tempor eu, volutpat sit amet, eros.",
23
+ "Praesent lacus. Nunc aliquam tristique tortor. Curabitur gravida commodo felis. Suspendisse fringilla metus at neque. Duis neque odio, facilisis a, posuere at, scelerisque quis, urna. Praesent est tortor, rhoncus et, pharetra rhoncus, tincidunt id, nulla. Sed placerat venenatis nunc. Etiam est. Nam nunc. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Aliquam sagittis purus id metus.",
24
+ "Ut porta varius diam. Vivamus at leo sit amet eros consequat rhoncus. Morbi ut enim. Integer eu justo quis augue varius ullamcorper. Nam ac nunc. Nullam leo dolor, convallis a, nonummy at, aliquet vel, est. Quisque dapibus ligula et justo. Nullam aliquam nisi ut orci. Mauris non est non leo pharetra tincidunt. Sed ac dui et ante mollis volutpat. Vivamus tristique urna id risus. In hac habitasse platea dictumst. Donec eu leo at mi egestas luctus.",
25
+ "In nisi libero, imperdiet eu, tincidunt quis, tristique eget, enim. Cras congue libero eget tortor. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Quisque ac erat. Nulla congue lorem a mauris. Aenean lorem. Aenean pulvinar, nunc eget venenatis elementum, lorem purus sagittis sapien, ac tristique erat elit eget sapien. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Integer vitae justo. Cras faucibus lectus eu enim. Duis viverra vehicula ligula. Sed placerat arcu vitae arcu. Fusce fringilla.",
26
+ "Aenean neque sem, semper ac, dignissim sed, semper vitae, odio. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Phasellus massa nulla, dapibus id, lobortis vel, adipiscing eu, purus. Donec vestibulum ante at nulla. Ut nulla felis, pretium suscipit, aliquet non, cursus a, ligula. Morbi augue dui, semper et, euismod ac, vulputate ac, mi. Curabitur iaculis, libero in eleifend ultricies, metus velit tristique nisl, id posuere ligula nunc nec nisl. Cras id dolor at augue pulvinar laoreet. Etiam aliquam. Phasellus scelerisque lorem. Sed massa. In nulla dolor, adipiscing sodales, aliquam vitae, nonummy non, dui.",
27
+ "Phasellus mauris dui, pretium eget, volutpat et, consectetuer et, metus. Maecenas tortor risus, porttitor vitae, malesuada rhoncus, suscipit at, felis. Mauris sit amet sem. Donec porttitor, massa vel laoreet tincidunt, turpis lectus blandit erat, vitae tempor massa arcu at magna. Phasellus condimentum risus in mauris. Aliquam leo urna, porta non, tristique ac, tempor euismod, tortor. Nam volutpat orci sed nisl. Donec scelerisque neque quis sem. Quisque sed tortor sit amet elit facilisis pretium. Ut in nulla. Etiam dapibus, nulla ut blandit lacinia, elit dui euismod augue, non blandit risus urna vel massa. Cras ut tortor ac turpis tempus auctor. Maecenas enim eros, vulputate at, congue varius, suscipit vitae, elit. Aliquam nunc quam, tempus vitae, ultricies eu, dapibus faucibus, quam. Proin ac enim. Aenean imperdiet urna vel nibh. Ut et leo sed ligula aliquet molestie.",
28
+ "Maecenas eu tellus. Nam eros. Praesent egestas iaculis diam. Ut feugiat pellentesque nunc. Nulla tortor neque, tempus at, scelerisque in, mattis quis, nulla. Cras mattis feugiat mi. Nunc augue odio, aliquam sit amet, tempus nec, faucibus non, leo. In a est eu est fermentum suscipit. Praesent erat. Quisque in massa. Aenean elit. Praesent risus ante, viverra a, imperdiet at, varius et, sem. Maecenas sollicitudin varius ante. Integer sapien eros, vulputate eget, ultrices non, rhoncus ut, orci. Praesent pretium dictum nulla. In elementum dapibus dolor. Suspendisse purus. Integer erat libero, nonummy at, elementum et, suscipit at, pede.",
29
+ "Nunc in risus et felis venenatis tempor. Etiam tincidunt, erat eget molestie venenatis, felis mauris lacinia nibh, vitae vehicula tortor ante id lectus. Fusce accumsan nonummy nulla. Curabitur tincidunt, sapien aliquam euismod malesuada, felis est luctus nunc, ac consequat massa augue ut neque. Aenean vel libero. Nullam erat orci, lacinia sit amet, feugiat at, volutpat et, sem. Ut sem ipsum, vehicula sed, dapibus sit amet, accumsan eu, metus. Pellentesque diam. Donec urna est, hendrerit nec, tempus id, interdum vitae, leo. Phasellus facilisis bibendum nunc. Sed gravida sapien ullamcorper arcu. Vivamus volutpat metus id massa mattis molestie. Sed ac magna sed dui rhoncus interdum. In euismod pharetra lectus. Nulla sollicitudin. In tincidunt.",
30
+ "Suspendisse pretium purus id est pellentesque gravida. Etiam purus nunc, posuere at, egestas eget, tempus ut, urna. Nullam aliquet rutrum dolor. Vivamus posuere dui ut eros. Aenean vel massa vitae magna tempor scelerisque. Cras ut risus. Pellentesque consequat dolor sit amet nulla. Cras diam nisi, pulvinar porttitor, feugiat in, blandit ut, purus. Vestibulum cursus sapien sed ante. Nullam suscipit euismod ipsum. Morbi aliquam porta sapien. Quisque imperdiet. Nullam et augue ut eros venenatis blandit. Quisque nonummy, mauris sed tempor pretium, justo lorem pulvinar diam, non faucibus enim pede bibendum tellus. Sed lobortis ipsum in dui.",
31
+ "Morbi mollis. Nullam a diam. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Cras lobortis velit sed justo. Sed vel mi sed felis vulputate eleifend. Quisque mattis, leo quis convallis dignissim, est arcu fringilla nulla, vel tincidunt sapien mauris vitae tortor. Curabitur id nunc ut odio ullamcorper vestibulum. Mauris posuere eros. Suspendisse id urna in orci placerat lacinia. Maecenas vitae felis ac eros porta auctor. Donec consequat faucibus elit. Nam ut urna eget ante auctor dignissim. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Nulla vel sem. Fusce metus. Duis augue. Aenean eget ligula eget tortor eleifend vulputate. Morbi feugiat, turpis scelerisque euismod viverra, mauris sapien luctus urna, et semper orci neque id ligula. Donec nec lacus et diam laoreet rhoncus. Fusce faucibus.",
32
+ "Nullam libero leo, suscipit et, tristique a, elementum at, pede. Curabitur id tellus vel diam scelerisque vehicula. Vestibulum at nunc a ipsum ornare dignissim. Etiam sit amet augue tristique magna iaculis egestas. Donec quam. Cras nec dolor nec mi mollis mollis. Curabitur fermentum nisi et nunc consequat scelerisque. Fusce libero. Ut diam. Donec sagittis dolor eget nisi. Etiam in mi. Mauris justo. Integer neque augue, rutrum ut, dictum sed, rhoncus at, metus. Phasellus eleifend egestas nibh. Morbi eros magna, imperdiet at, imperdiet a, molestie a, dui. Fusce ultrices vehicula nibh. Duis pulvinar.",
33
+ "Morbi convallis. Donec interdum erat ut nibh. Nulla id pede. Ut posuere. Phasellus ipsum. Praesent lectus libero, pretium ac, tempus at, dapibus quis, purus. Cras mi magna, iaculis nec, scelerisque et, aliquam vitae, turpis. Maecenas sollicitudin ipsum. Mauris in velit ut urna rhoncus facilisis. Etiam elementum, lacus ac nonummy pulvinar, magna nulla hendrerit odio, ut elementum arcu arcu vitae tortor. Nam ac sem et lorem tincidunt vulputate. Donec sit amet velit quis tortor auctor vestibulum. Mauris mi metus, auctor semper, euismod et, laoreet et, ante. Nulla aliquet dolor vel dui. Fusce ut neque. Vestibulum leo velit, iaculis in, tristique ac, sodales eu, erat. Praesent libero mi, porta ut, suscipit eget, porta in, ligula. Aliquam sollicitudin vehicula ligula.",
34
+ "Fusce et est. Etiam nec orci. Maecenas nec metus vel ligula imperdiet molestie. Morbi lorem tortor, semper ut, dapibus ac, elementum a, neque. Etiam nulla nunc, pretium sit amet, adipiscing id, consequat et, justo. Proin vestibulum tellus ut eros. Nulla placerat suscipit ante. Curabitur lacus tortor, fringilla quis, ullamcorper nec, viverra vitae, metus. Fusce non ligula. Suspendisse posuere sem ut ante. Proin at massa quis magna faucibus euismod. Duis non orci. Mauris metus elit, vestibulum sit amet, interdum ut, vehicula ut, mi. Nunc blandit tellus vitae augue. Suspendisse tellus felis, tristique quis, aliquet facilisis, sodales et, leo. Donec blandit, tellus nec dignissim imperdiet, nisl ante rutrum risus, eu sagittis mi purus nec sapien.",
35
+ "Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; In odio. Integer ultrices. Praesent vitae ipsum. Cras scelerisque urna vel dui. Integer tellus odio, hendrerit sed, congue in, posuere nec, velit. Sed dolor. Vestibulum nulla. Integer id elit id purus consequat mollis. Nulla ut ligula. Aliquam volutpat tempus diam. Nulla pulvinar. Nullam consequat, justo vel sollicitudin facilisis, dui sem luctus mi, non vulputate felis orci vel dolor. Phasellus elit diam, aliquet nec, ultricies eu, porta et, diam. Ut tincidunt orci in sapien. Aenean orci mauris, convallis eget, accumsan eget, commodo nec, justo. Duis mi. Aenean eleifend odio vel risus. Sed mi nisl, feugiat non, fermentum ut, feugiat ut, nunc.",
36
+ "Etiam laoreet urna et eros. Aliquam facilisis. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. In sodales tortor a mi. Mauris varius malesuada dui. Etiam varius velit et urna. Vestibulum at mi. Aliquam ultricies mi vitae sapien. Donec malesuada, diam nec faucibus adipiscing, ligula tortor tristique urna, vitae suscipit lectus velit et nisi. Sed malesuada, sapien non rutrum tempor, nunc urna pretium tortor, ac venenatis lacus velit sagittis leo.",
37
+ "Duis porttitor, felis eu imperdiet porttitor, lacus turpis fermentum eros, non sagittis pede nunc id dolor. Suspendisse blandit. Sed vulputate dolor porttitor enim consectetuer ornare. Nullam non neque a turpis sollicitudin tristique. Nullam lorem. Praesent ac quam. Mauris mauris augue, porta at, auctor nec, dictum sed, pede. Cras vitae nibh. Aliquam erat volutpat. In in neque. Nulla vitae libero. Nulla bibendum mi eget ipsum. Nullam mattis nisi ut purus. Donec ultricies nisi ac mi. Proin pharetra. Fusce eu dui eu ante dictum placerat. Donec ut sem at ligula fermentum rutrum. Duis eu augue.",
38
+ "Cras commodo sapien nec est. Curabitur molestie. Donec turpis. Vestibulum sodales ante id risus. Maecenas pellentesque aliquam metus. Etiam scelerisque erat ut turpis. Vivamus lorem metus, tincidunt nec, luctus vel, venenatis in, elit. Pellentesque leo ipsum, tincidunt id, convallis vitae, convallis sed, neque. Suspendisse lectus erat, nonummy et, malesuada quis, feugiat in, nulla. Nulla a enim eget leo aliquam semper. Etiam sed pede nec risus vehicula mattis. In massa. Aliquam mi. Quisque orci. Nullam augue enim, blandit sit amet, volutpat vel, cursus a, justo. In et augue. Vivamus neque purus, dictum sit amet, vulputate in, condimentum non, sapien.",
39
+ "Mauris lacinia. Aliquam erat volutpat. Vivamus quis metus. Donec ultricies mauris vel mi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Sed varius. Aliquam nonummy faucibus nunc. Proin vel nisi sed enim lobortis blandit. Sed sed nunc quis erat imperdiet consectetuer. Nulla vel ante. Pellentesque tempor. Suspendisse mollis accumsan velit. Nulla at libero non nisl tempor interdum. Nam commodo. Suspendisse egestas, lacus sed mattis lobortis, tortor dui faucibus enim, in volutpat nisi libero in dui. Aliquam sollicitudin condimentum quam. Suspendisse massa augue, bibendum dictum, placerat at, luctus vitae, enim.",
40
+ "Phasellus id dui. Donec gravida nulla at felis aliquam nonummy. Sed facilisis, massa nec eleifend imperdiet, sem lectus porttitor ante, sed elementum pede nisl lobortis massa. Proin sollicitudin, ante sed laoreet pretium, purus orci lobortis turpis, eu euismod quam ligula quis nulla. Morbi eu tellus non nisl malesuada tempor. Aenean at odio et nibh hendrerit nonummy. Vivamus sit amet magna. Duis non lacus. Nullam condimentum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Integer sit amet tellus id ligula condimentum venenatis.",
41
+ "Suspendisse turpis risus, pretium a, nonummy id, ultricies ac, lectus. In mollis est sed justo. Sed auctor orci vitae justo. Quisque risus. Cras neque libero, vestibulum nec, consectetuer eget, elementum ut, felis. Fusce vehicula, augue et feugiat dignissim, urna metus fringilla sapien, a ornare lacus ipsum vel quam. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Etiam quam. Aliquam imperdiet felis a libero. Fusce risus turpis, posuere ut, sodales nec, scelerisque et, leo. Quisque tristique, lacus non luctus blandit, nisl elit ornare sapien, ultrices volutpat purus arcu a tellus. Nam varius, lectus eu consequat mollis, justo dui dapibus ipsum, at iaculis pede quam eget metus. Praesent vestibulum tortor quis erat. Sed vel arcu. Sed vitae metus sit amet mi sagittis posuere. Nulla ac nisl vitae mauris convallis tincidunt. Quisque placerat molestie est. Curabitur iaculis, quam quis vestibulum iaculis, nunc turpis viverra dolor, ut faucibus justo tortor a odio. Nullam molestie sem ut enim.",
42
+ "Morbi elementum, elit id facilisis viverra, metus lacus tristique nunc, eu malesuada ante risus et velit. Donec faucibus erat nec mi. Etiam augue libero, lobortis sit amet, rhoncus ut, blandit vitae, nulla. Pellentesque metus sapien, tincidunt et, condimentum sed, posuere a, lectus. Suspendisse ac dolor non nunc auctor dictum. Aenean volutpat faucibus nisi. Sed elementum ante a enim. Fusce pulvinar erat in neque hendrerit nonummy. Sed rhoncus vulputate magna. Phasellus luctus, nulla sit amet tristique congue, est arcu porttitor elit, nec tempus justo enim id diam. Nulla varius, quam vel varius euismod, neque justo ultricies quam, a dignissim dolor quam vel turpis. Integer eget odio. Suspendisse condimentum erat quis nisi placerat dictum. Ut nisi pede, fermentum quis, posuere sit amet, mollis vitae, libero. Proin erat. Ut sapien enim, pellentesque vel, hendrerit et, semper quis, diam. In hac habitasse platea dictumst. Sed ligula risus, tempor varius, suscipit et, scelerisque sed, nibh. Aenean tincidunt sem posuere libero. Aenean orci ipsum, suscipit vestibulum, commodo ut, consequat et, erat.",
43
+ "Aenean nisi tortor, mattis nec, pulvinar porttitor, ultricies vitae, risus. Praesent ligula. Maecenas quis nisl. Integer hendrerit. Vestibulum mattis. Cras sed diam ac nisi imperdiet consequat. Pellentesque viverra ligula id enim. Quisque varius nisi vitae quam gravida venenatis. Cras odio nunc, volutpat at, sodales in, sollicitudin ac, nisl. Quisque vitae lorem ac est fringilla nonummy. Donec non pede. Nullam rhoncus. Vivamus blandit dictum libero.",
44
+ "Nam pede nisl, rhoncus ut, bibendum vitae, rhoncus at, dui. Sed sagittis adipiscing ligula. Phasellus luctus ornare augue. Phasellus adipiscing, urna id ultrices ultricies, turpis lectus congue neque, sit amet ullamcorper arcu urna ut neque. Cras quis elit in sem iaculis laoreet. Quisque sem. Nullam non erat. Etiam mattis congue turpis. Vestibulum ipsum justo, hendrerit in, iaculis eget, pharetra in, est. Fusce quam neque, iaculis quis, consequat a, tincidunt sit amet, dui. Sed odio nibh, porttitor sed, malesuada at, condimentum ut, leo. Nunc bibendum aliquet arcu. Praesent neque arcu, viverra ac, iaculis nec, cursus vel, massa. Duis sapien arcu, adipiscing ac, nonummy rhoncus, ultricies in, libero. Fusce vitae augue ac velit auctor hendrerit. Curabitur rhoncus tristique odio. Nam nunc turpis, lacinia sed, sodales ac, fermentum ac, turpis.",
45
+ "Integer scelerisque, risus at tincidunt consectetuer, dui lacus congue leo, ut faucibus purus risus vitae nisl. Sed in magna sed quam tempor tempor. In commodo tellus eu sem. Etiam dictum. In hac habitasse platea dictumst. Sed metus. Nunc tempus adipiscing arcu. Nunc a sapien at lorem rutrum molestie. Vivamus venenatis placerat pede. Etiam interdum, dolor sit amet porta mattis, quam enim commodo nisi, a tristique eros orci quis felis. Vivamus id nisi. Nullam mollis facilisis eros. Etiam auctor ligula non mauris. Pellentesque ligula massa, fermentum vel, pellentesque sit amet, iaculis malesuada, augue. Vivamus dui dui, ornare non, consectetuer eget, convallis sed, risus. Suspendisse tempor. Vestibulum mattis est id eros.",
46
+ "Fusce id lacus sit amet velit varius ornare. Cras consectetuer rhoncus mi. Suspendisse potenti. Donec odio. Curabitur gravida aliquam lacus. Aliquam odio justo, posuere eget, ultricies et, cursus ut, massa. Phasellus sapien. Proin facilisis, mi eu tristique interdum, enim quam tempus urna, vitae commodo augue libero a velit. Phasellus non ipsum et tellus pharetra placerat. Phasellus non est.",
47
+ "In ligula odio, lobortis dictum, eleifend quis, vehicula quis, lacus. Nam ante enim, bibendum et, tristique non, eleifend vitae, nisi. Quisque semper. In hac habitasse platea dictumst. Praesent ac quam ac nunc semper lacinia. Aenean nisl. Cras tincidunt aliquam eros. Aliquam arcu. Praesent elit risus, egestas eu, ultricies ut, molestie at, magna. Aenean nec leo. Vestibulum lacinia. Fusce ut justo eget ligula congue pharetra. Sed neque. Aliquam erat volutpat. Duis lacinia lacus nec arcu rutrum condimentum. Donec sit amet ipsum ac libero convallis mollis. Donec interdum sem et tellus.",
48
+ "Quisque in libero varius purus tincidunt sodales. Sed sit amet nibh eget nunc dictum iaculis. Duis eleifend justo eget turpis. Curabitur urna. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Vivamus ut quam. Aenean leo. Suspendisse vestibulum ante eleifend elit. In tempus mauris a ante. Vestibulum cursus felis at nisi. Curabitur dignissim libero non nisi. Maecenas tempor nulla eu sapien. Curabitur condimentum, augue quis fermentum placerat, felis metus nonummy leo, malesuada vulputate lectus massa ac risus. Vestibulum arcu ipsum, porttitor quis, venenatis ac, mollis at, sapien. Etiam nunc massa, aliquet at, malesuada ut, accumsan eget, neque. Sed a urna. Nam ipsum arcu, pellentesque vel, ornare et, dapibus accumsan, nisl. Nam mauris tellus, dapibus sit amet, tincidunt vitae, tincidunt non, felis. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Suspendisse commodo orci vitae nisl.",
49
+ "Ut bibendum. Curabitur interdum, elit non mattis suscipit, ligula est placerat dolor, interdum egestas erat ligula fermentum felis. Nunc pellentesque tincidunt mauris. Sed elit diam, sodales sed, sollicitudin sit amet, gravida eu, libero. Mauris mi ante, tristique in, porta id, auctor aliquet, ligula. Suspendisse potenti. Fusce id lacus quis nisi facilisis lobortis. Suspendisse tristique diam ut sem. Ut sit amet turpis. Etiam convallis lacus et nisi. Sed eu quam. Nullam eu dolor sit amet felis sagittis volutpat. Nulla est lectus, tristique in, viverra sit amet, congue nec, est.",
50
+ "Donec tincidunt. Aliquam convallis, urna et eleifend ullamcorper, eros pede facilisis nibh, vel bibendum erat nisl dignissim metus. Aenean eu dui. Sed non libero at elit blandit congue. Aliquam eget orci. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean pretium. Duis posuere dignissim lorem. Curabitur quis nulla in justo sagittis pulvinar. Suspendisse ac massa. Vestibulum egestas gravida turpis. Phasellus volutpat. Aliquam leo ligula, mattis ut, egestas ac, sodales non, dolor. In dictum condimentum velit. Donec malesuada vulputate enim.",
51
+ "Vestibulum augue risus, laoreet eu, tincidunt eu, semper in, lorem. Duis nulla metus, placerat vitae, imperdiet sit amet, sodales ut, felis. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Maecenas sit amet quam. Ut euismod bibendum dolor. Suspendisse mi leo, aliquam auctor, ullamcorper id, viverra vitae, tellus. Donec non turpis at erat tempus tincidunt. Proin ornare est vel felis. Vivamus eget tellus. Praesent nec leo id ante mollis scelerisque. Duis sed metus id nibh sollicitudin porttitor. Integer sed nisi non sem tincidunt dignissim. Etiam semper semper pede. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Sed tortor. Nulla facilisi. Integer volutpat imperdiet felis.",
52
+ "In hac habitasse platea dictumst. Nam nec odio. Vivamus purus mauris, tristique sed, interdum sed, pretium id, nibh. Quisque auctor adipiscing pede. Fusce pharetra elit at lorem. Nulla eros urna, tristique et, congue vitae, porta vitae, lorem. Nulla nunc risus, semper non, bibendum sit amet, nonummy tristique, quam. Aenean ultrices. Sed placerat lectus vitae purus. Nulla porttitor, mauris nec euismod dignissim, elit turpis tempor libero, in venenatis dui arcu quis sapien. Duis non sapien. Ut aliquam nisl quis nulla. Sed pulvinar justo sed purus.",
53
+ "In hac habitasse platea dictumst. Fusce dictum. Aenean malesuada dui eget neque. Nulla egestas purus id est. Mauris nibh tellus, tincidunt facilisis, vulputate ac, vestibulum lobortis, nisi. Praesent massa elit, auctor vitae, auctor id, rhoncus at, erat. Etiam erat diam, facilisis quis, condimentum eget, ultrices id, quam. Nullam luctus ornare lorem. Aenean in justo gravida nulla accumsan vestibulum. Praesent a nibh. Donec sit amet dolor. Quisque non lacus. Pellentesque quam lacus, consectetuer sed, imperdiet nec, suscipit vel, quam.",
54
+ "Nunc vitae quam sit amet velit suscipit mattis. Sed vel metus a nibh lacinia tincidunt. Mauris aliquam orci ac libero. Sed malesuada arcu nec tortor. Integer luctus pede id justo. Aenean et velit ac nisi mattis eleifend. Phasellus quam ante, fermentum quis, facilisis eu, cursus vitae, orci. In ornare, diam et luctus dapibus, nisl orci lobortis turpis, at scelerisque lorem urna in elit. Morbi blandit. Phasellus quam lorem, auctor a, consectetuer vel, dignissim condimentum, est.",
55
+ "Fusce tincidunt purus sit amet nibh. Vivamus eget justo. Integer eu arcu. Pellentesque rhoncus magna nec risus. Morbi at erat. Sed pede purus, faucibus non, luctus a, pharetra tempor, quam. Sed vel arcu non neque mollis ullamcorper. Proin a augue. Curabitur purus tortor, porttitor vel, eleifend nec, gravida vel, est. Curabitur porttitor tellus ac ante. Nulla facilisi. Morbi nibh turpis, dapibus sit amet, ultricies eget, venenatis sit amet, quam.",
56
+ "Aliquam rutrum luctus urna. Proin ac diam. Suspendisse tincidunt pharetra nibh. Fusce consequat mauris ut nisl. Vestibulum quis dolor. Proin id tellus. Morbi viverra. Fusce sit amet felis. Aenean scelerisque tincidunt ipsum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Mauris pellentesque, lectus at elementum placerat, purus nisi consequat nisl, ut semper lectus sem nec lorem.",
57
+ "Donec eu risus. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Cras porttitor. Aliquam tristique enim vel augue. Integer pretium felis id elit. Vestibulum libero. Proin vel lectus. Vestibulum mollis congue purus. Phasellus bibendum odio eu sapien gravida pharetra. Maecenas dolor mi, facilisis vitae, euismod sit amet, mollis et, odio. Cras sapien dolor, lobortis ac, cursus quis, euismod id, magna. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Duis lobortis urna a tortor. Suspendisse quis magna quis lorem consectetuer vulputate. Donec vel nisi. Mauris nunc arcu, fringilla et, adipiscing in, porta eu, enim. Phasellus elementum lacus vel odio.",
58
+ "Cras orci. Ut feugiat metus id arcu fermentum ullamcorper. Donec non arcu. Nulla facilisi. Quisque erat dui, tincidunt quis, feugiat sed, consequat nec, odio. Etiam facilisis, sem sed varius accumsan, felis lorem rhoncus libero, nec sodales orci lacus in urna. Donec sit amet elit. Aliquam congue libero quis est. Donec sit amet urna at risus ultrices molestie. Nunc sed enim. Maecenas sem purus, accumsan et, tincidunt ac, dictum a, dui. Integer non libero. Nunc laoreet sodales ipsum. Cras ipsum. In hac habitasse platea dictumst.",
59
+ "Etiam nisl metus, tempus ac, viverra in, porta eu, urna. Donec porttitor aliquam pede. Donec ac mi. Sed euismod tristique nulla. Pellentesque ligula. Praesent et turpis. Pellentesque sollicitudin, urna sed rutrum tincidunt, quam lectus hendrerit felis, nec sodales lectus mauris at dui. Proin eu lectus. Donec nunc turpis, ultrices elementum, vehicula a, ullamcorper sit amet, ante. Curabitur dapibus enim ac tortor.",
60
+ "Nullam eros nunc, imperdiet eget, aliquam a, viverra ac, turpis. Nulla facilisi. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Aenean lacinia mi sed ante. Sed ante. Aliquam erat volutpat. Fusce ac eros in ligula tempor tempor. In a mauris. Sed nunc erat, iaculis nec, dapibus in, rutrum blandit, velit. Duis a enim. Nullam et lacus. Sed ut nisi quis lorem euismod interdum. Aenean enim nisl, venenatis ac, aliquam ut, ultrices sed, nisi. Aenean erat magna, commodo sed, auctor nonummy, convallis quis, ipsum. Cras in nisl ut tellus vulputate pellentesque. Curabitur pulvinar. Nam purus lorem, bibendum ac, elementum at, tempus vitae, nisl.",
61
+ "Praesent adipiscing, lectus non posuere pharetra, felis ante aliquam arcu, in pretium neque diam sit amet urna. Sed accumsan. Proin massa nisl, condimentum ac, accumsan lobortis, lacinia semper, est. Quisque tempus condimentum orci. Nunc ac dolor. Curabitur dignissim tempor enim. Sed leo. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Vivamus odio lacus, hendrerit eu, tempus sit amet, dictum a, justo. Nam sit amet odio id lacus tempus molestie. Praesent bibendum quam a elit. Nulla turpis lacus, egestas ac, fermentum ac, ornare sit amet, sem. Curabitur sodales, eros suscipit sollicitudin varius, arcu pede hendrerit odio, id vestibulum elit velit et dolor. Vestibulum sodales mi quis risus.",
62
+ "Maecenas viverra, felis sit amet imperdiet iaculis, libero tortor vulputate leo, vitae blandit sapien ipsum sit amet elit. Sed egestas rutrum lorem. Praesent scelerisque, turpis et placerat lobortis, dui purus vestibulum purus, et pharetra metus lectus vel augue. Nam nunc lectus, volutpat feugiat, aliquam in, aliquet non, lorem. Mauris tristique, magna sit amet vestibulum vestibulum, nisi lacus dapibus libero, nec venenatis arcu felis ut dui. In in purus. Aenean sed purus sit amet est mollis dapibus. Etiam porttitor. Cras tortor tortor, hendrerit in, sodales sed, vehicula ac, lacus. Donec hendrerit mauris sit amet nisl. Etiam vulputate. Morbi sagittis interdum leo. Aliquam elit ante, mollis non, volutpat scelerisque, euismod nec, velit. Maecenas pharetra nisi ac lacus. Aenean ligula turpis, venenatis sed, lobortis vitae, blandit ut, metus. Pellentesque tempus, nibh sit amet posuere dictum, velit velit fringilla pede, sed ultricies tellus tortor eget libero. Curabitur euismod orci.",
63
+ "Quisque non urna. Mauris eu velit vel urna adipiscing adipiscing. Quisque eget tortor ac nulla aliquet blandit. Duis auctor consectetuer ligula. Nullam lectus leo, gravida vel, luctus vitae, vulputate ac, diam. Aliquam ac ipsum nec eros blandit mollis. Nulla felis arcu, fermentum sed, congue quis, dapibus vitae, nulla. Nullam vitae tellus eu nulla accumsan tincidunt. Morbi sit amet odio hendrerit arcu ornare lacinia. Fusce mattis dapibus dui. Sed ullamcorper congue neque.",
64
+ "Fusce quis tellus. Sed tortor dolor, molestie vel, condimentum ut, placerat ac, eros. Fusce libero. Curabitur pretium, sapien et pulvinar volutpat, quam pede tempus urna, et pellentesque odio mauris id eros. Proin eu massa sagittis turpis pretium euismod. Nulla enim magna, nonummy aliquet, faucibus in, convallis ac, lectus. Nunc ac metus. Suspendisse rhoncus tristique sem. Vestibulum tempor nisl sed eros. Cras vestibulum enim rhoncus urna. Ut elementum accumsan dui. Nam tempus scelerisque dui. Mauris non lectus. Duis mauris ante, rutrum eu, ullamcorper ac, fermentum non, nibh.",
65
+ "Praesent sapien. Suspendisse potenti. Ut nunc leo, congue et, pretium et, pellentesque id, erat. Nunc felis. Duis dapibus fringilla sem. Donec dignissim porttitor diam. Integer nec sapien. Phasellus viverra, ligula ut condimentum tempus, ligula purus ullamcorper erat, eget blandit urna enim quis quam. In hac habitasse platea dictumst. Aliquam quis tortor vitae felis molestie viverra. Proin ut urna. Praesent justo diam, pellentesque eget, varius volutpat, adipiscing at, ipsum. Pellentesque sem. Nunc porttitor ante vestibulum ante. Curabitur et sapien.",
66
+ "Donec vitae tellus ac erat laoreet sodales. Vivamus adipiscing porta nunc. Donec commodo leo et nisi. Nam eu nulla a risus accumsan eleifend. Sed placerat volutpat dolor. Integer porta augue vitae leo sollicitudin auctor. Nulla viverra. Nunc facilisis odio vitae quam. Donec hendrerit arcu in nisi. Fusce ac massa. Nullam sed nunc. Donec ut turpis. Morbi ornare, dolor quis accumsan porttitor, velit sapien mattis ante, eget scelerisque nulla dui nec purus. Vivamus aliquet. Aliquam mi. Nulla risus metus, pellentesque nec, consequat quis, tempor eget, leo. Nam magna. Sed accumsan magna ut ligula. Maecenas hendrerit fringilla neque. Fusce scelerisque.",
67
+ "Nam in nisl et lectus consectetuer elementum. Nam odio erat, posuere sed, ultricies dictum, imperdiet ac, est. Sed et justo non tellus dapibus sagittis. Etiam eget purus at justo varius porttitor. Phasellus scelerisque tellus a nibh. Nam ornare vulputate orci. Vivamus magna sem, blandit tincidunt, faucibus in, dignissim sit amet, lacus. Aenean sed ante. Donec nisi eros, lacinia eu, blandit eget, feugiat ut, nisi. Vivamus accumsan, sapien ac rutrum mattis, erat ligula adipiscing nulla, eu laoreet quam risus quis augue. Nullam eleifend dolor ac lectus. Maecenas ornare adipiscing turpis. Sed tempus varius quam. Vestibulum non sem commodo purus mattis tincidunt. Suspendisse potenti. Praesent at urna.",
68
+ "Fusce leo elit, mattis ac, porttitor quis, vestibulum vel, tortor. Praesent eget lacus. Donec sed elit. Cras eget orci. Pellentesque eleifend, dolor a laoreet imperdiet, lorem arcu venenatis sem, euismod sollicitudin massa purus quis risus. Pellentesque porta erat in diam. Proin iaculis, justo id egestas luctus, augue nulla adipiscing ipsum, vitae blandit libero enim in sem. Nullam urna nulla, fermentum non, consectetuer non, fermentum molestie, risus. Sed id orci id felis dictum ornare. Pellentesque commodo magna et sem. Ut elementum massa vel est. Praesent est.",
69
+ "In hac habitasse platea dictumst. Fusce egestas. Donec ac massa. Integer magna. Quisque nec erat. Aliquam quis mi. In quis est nec dolor consequat condimentum. Pellentesque mollis metus sed libero. Vivamus blandit vehicula arcu. Donec justo. Maecenas pulvinar libero. Vestibulum a sapien id mi vestibulum pellentesque. Sed vestibulum dolor et felis. Maecenas vitae ipsum. Nullam mauris leo, pretium suscipit, ullamcorper at, malesuada tincidunt, mauris. Ut nulla. Quisque lacus. Ut nunc libero, tincidunt at, tincidunt fringilla, hendrerit quis, dolor. Pellentesque fermentum vehicula mauris. Suspendisse a purus varius nisl pharetra varius.",
70
+ "Quisque blandit porttitor ante. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Sed porttitor. Nunc viverra. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; In tellus orci, varius at, molestie eget, varius ac, mi. Nunc adipiscing. Sed pellentesque nisi et nisi. Suspendisse tincidunt sagittis massa. Nullam neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin semper consequat purus. Nullam ullamcorper odio vel odio sagittis tempor. Aenean hendrerit.",
71
+ "Suspendisse turpis. Fusce in lorem. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nulla elementum ultrices nisi. Donec volutpat posuere libero. Integer luctus nisi id felis. Nullam suscipit mauris at risus. Phasellus lacinia erat. Duis suscipit ligula nec tortor. Etiam eu neque. Donec auctor, nisl quis commodo placerat, lectus justo viverra urna, ac tempor ligula sem at ipsum. Praesent ut orci nec arcu molestie iaculis. Vestibulum ultrices lacus sit amet dui. Phasellus ut ipsum at mauris euismod aliquam. Donec dui risus, egestas at, laoreet vel, lacinia ut, lorem. Etiam est. Curabitur consectetuer orci vitae elit.",
72
+ "Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Cras volutpat elit vitae quam. Morbi tellus. Praesent orci ante, dapibus ac, ultrices eget, congue sed, odio. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut massa nulla, consectetuer a, eleifend vitae, nonummy in, risus. Aliquam varius. Nulla imperdiet nisi sed urna. Curabitur eu urna quis est egestas interdum. Suspendisse feugiat ullamcorper odio. Integer consequat, mauris vitae ultrices iaculis, mi arcu tincidunt purus, a posuere diam nisl a erat. Donec a lorem id dolor sodales bibendum. Mauris ut magna. Vestibulum malesuada, nisi ac aliquet fermentum, erat ante sollicitudin turpis, sit amet pellentesque leo ipsum a turpis. Aenean in enim scelerisque enim feugiat pharetra. Duis ut nisl. Morbi euismod auctor turpis.",
73
+ "Maecenas vitae felis a quam facilisis porttitor. Maecenas ac neque sollicitudin turpis tempor faucibus. Sed elementum est a lectus sagittis euismod. Fusce at purus. Phasellus sagittis volutpat erat. Donec metus diam, mattis eget, vestibulum a, rutrum non, mi. Mauris malesuada dolor vitae purus. Maecenas quis eros. Mauris aliquam neque. Nullam varius nibh. Nulla facilisi. Donec leo. Ut dictum nisl in nulla. Aenean augue. Donec libero. Donec lectus est, lobortis nec, scelerisque in, dignissim quis, lectus. Vivamus iaculis magna at dui. Quisque accumsan. Nullam vel diam. Phasellus blandit metus quis metus luctus varius.",
74
+ "Aliquam nulla arcu, sodales non, malesuada eget, sollicitudin ut, dolor. Aenean sed ante eu nulla convallis aliquet. Aenean dictum, purus eget consectetuer sodales, leo justo faucibus augue, eu vulputate turpis elit eu elit. Nullam feugiat vestibulum odio. Vivamus dignissim, pede ut laoreet sodales, justo erat porttitor lorem, vitae fermentum urna sapien a libero. Nunc arcu. Duis quis ligula. Fusce nec lorem ut sem blandit placerat. Ut a turpis. Sed nisi. Vestibulum porta feugiat orci. Quisque hendrerit ante a massa. Nullam et neque.",
75
+ "Nulla turpis. Nulla euismod. Phasellus elit nisl, consectetuer ut, fringilla nec, vestibulum nec, magna. Praesent ornare ultricies lectus. Integer auctor leo aliquam orci. Nam scelerisque nibh ac ipsum. Morbi odio nunc, interdum ut, consequat a, dictum nonummy, dolor. Nam mattis. Duis nunc magna, adipiscing vel, adipiscing eget, ullamcorper sit amet, massa. Duis porta, metus eget aliquam semper, nisi lectus egestas erat, in congue justo nibh ac est. Nam vestibulum magna vitae mi.",
76
+ "Maecenas congue, tortor ut cursus sodales, quam risus mattis lacus, eget ultricies sapien dolor eu libero. Vivamus semper tempus lacus. Curabitur augue nisi, cursus at, volutpat nec, aliquet vitae, sem. Vivamus a dui. Proin nulla. Ut dapibus consequat elit. Mauris tincidunt purus eget nulla. Aenean commodo leo vel leo elementum nonummy. Curabitur luctus. Aliquam erat volutpat. Maecenas ullamcorper tellus sed dui.",
77
+ "Vivamus vitae augue hendrerit diam tristique viverra. Quisque non leo. Nam id nisi ac urna bibendum molestie. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Nunc accumsan consequat nunc. Donec et nulla. Vestibulum ac mi a dui sagittis ullamcorper. Curabitur porta facilisis ligula. Cras id massa eget erat interdum placerat. Nullam egestas justo nec leo. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean lacus. Curabitur iaculis eros in velit. Curabitur vehicula nisi. Cras placerat, purus a semper condimentum, libero augue volutpat odio, in venenatis justo dolor a metus. Curabitur varius tortor ut nunc.",
78
+ "Fusce vitae lacus. Donec eu dui. Nunc nunc libero, nonummy at, auctor eget, ultrices in, enim. Fusce luctus tellus non neque. Vivamus nisi. Duis convallis venenatis tortor. Praesent tempus nisl et risus. Vivamus gravida nisl nec velit. Mauris nisl. Praesent viverra ipsum vitae massa. Vestibulum ut eros. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Etiam volutpat ullamcorper orci. Etiam velit elit, ultrices vitae, laoreet id, euismod ac, ipsum. Maecenas tristique arcu. Quisque dui elit, tempor sed, rhoncus et, sodales at, lacus.",
79
+ "Donec posuere. Integer porta, leo vel faucibus luctus, lorem elit vulputate nunc, et hendrerit nulla lectus eu magna. Sed nunc. Cras et orci. Curabitur consectetuer. Duis sollicitudin. In hac habitasse platea dictumst. Vivamus ultrices, metus porta venenatis imperdiet, arcu sem rhoncus lacus, eu congue augue erat ac magna. Etiam aliquam pellentesque diam. Suspendisse ut turpis eget lectus ultricies nonummy. Maecenas volutpat, turpis eget congue dapibus, urna quam tempus neque, semper posuere erat purus sit amet pede. Curabitur non velit non enim mollis molestie. Aliquam vel elit non nunc lacinia viverra. Sed libero dui, mattis id, fringilla sed, egestas et, ligula. Donec venenatis aliquet nibh. Nam feugiat, neque ultricies posuere pulvinar, augue libero volutpat pede, eu scelerisque justo est vel erat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae;",
80
+ "Integer erat. Maecenas quis velit id ante placerat euismod. Praesent fermentum tempor nulla. Integer sapien nulla, condimentum sit amet, auctor at, interdum ac, leo. Praesent et massa. Suspendisse at ipsum. Integer massa. Vestibulum imperdiet libero at nisl. Nullam justo nibh, aliquet non, nonummy quis, hendrerit imperdiet, erat. Sed nisl nisi, dictum nec, varius ut, nonummy in, dolor.",
81
+ "Morbi cursus eros porttitor mauris. Sed blandit. Curabitur erat felis, lobortis in, sollicitudin ut, facilisis eu, mauris. Nam ultricies ligula nec massa. Proin ut mauris. Aliquam ultricies mi nonummy libero. Nulla ac massa eget felis mollis hendrerit. Praesent ac nisl. Curabitur lectus elit, laoreet vel, tincidunt ac, tempor eget, ligula. Donec tortor. Nullam auctor tempus nibh. Fusce enim libero, congue nec, mattis ac, ullamcorper quis, ipsum. Donec eget metus nec est aliquam semper. Nam mauris dolor, sollicitudin sit amet, mattis sit amet, lacinia nec, metus. Donec vestibulum. Curabitur metus nunc, consectetuer sit amet, varius eget, blandit vel, turpis. Quisque dolor leo, adipiscing in, vulputate sed, consequat eu, pede. Proin tempor blandit dolor. Suspendisse ullamcorper neque et mauris.",
82
+ "Curabitur sed orci in velit tempus convallis. Mauris elit. Mauris aliquet dapibus justo. In ultricies viverra erat. Aenean non tortor non est lobortis vehicula. Phasellus eleifend faucibus dui. Sed dolor leo, posuere quis, lobortis ut, aliquam a, diam. Sed consectetuer ultrices velit. Quisque sed mi non lacus semper rhoncus. Integer gravida, diam vitae blandit blandit, nisl orci congue quam, in luctus libero orci et massa.",
83
+ "Morbi nisi. Nam mi lorem, rutrum ut, aliquet id, tincidunt vel, dolor. Sed lacus metus, eleifend nec, rhoncus ac, gravida sit amet, turpis. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Donec tincidunt semper erat. Nunc ornare mauris eu sem. Nulla eget tellus in urna sollicitudin eleifend. Aliquam imperdiet. Mauris libero diam, interdum id, dignissim id, faucibus at, nunc. Ut pretium venenatis augue. Integer nulla sem, sollicitudin quis, viverra non, euismod id, dui. Nunc et dui ac sapien porta nonummy. Nam euismod elementum arcu. Etiam eget orci in nunc facilisis vestibulum.",
84
+ "Etiam sed nulla. Sed iaculis faucibus enim. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Aenean accumsan vestibulum augue. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Nulla vitae dui vel nunc dapibus iaculis. Nunc laoreet, arcu a fringilla tristique, purus metus molestie est, et sollicitudin orci purus eu orci. Maecenas nonummy. Nam et enim in arcu hendrerit eleifend. Duis sit amet arcu quis orci fringilla adipiscing. Nam elementum orci ut pede. Praesent quis nulla vel lacus porttitor faucibus. Quisque in eros. Nunc mauris elit, posuere interdum, nonummy scelerisque, mattis at, nibh. Pellentesque ac nunc in arcu feugiat facilisis. Mauris auctor. Nullam eu quam.",
85
+ "Aenean nisl. Vestibulum augue nisl, convallis quis, faucibus ac, aliquet id, elit. Fusce eu dolor eget lacus pulvinar vulputate. Suspendisse potenti. Morbi augue massa, faucibus eget, vulputate sed, molestie vel, tortor. In at nisl. Suspendisse orci. In hac habitasse platea dictumst. Nulla et massa. Nam nec massa. Nunc vestibulum, risus congue molestie vestibulum, sapien risus convallis pede, ac placerat magna purus at enim. Vivamus porttitor, libero et molestie gravida, orci sapien rhoncus ante, in tempor lectus libero ut felis. Vestibulum vulputate, elit id tempor commodo, arcu ante congue erat, in lacinia felis dui eget lorem. Duis fermentum ipsum vitae ante. Cras sem lectus, tincidunt vitae, posuere sed, placerat at, urna. Aenean sit amet urna in nibh viverra sagittis.",
86
+ "Proin enim tellus, semper vel, pharetra in, semper eget, purus. Praesent dictum tempus pede. Ut dictum quam nec arcu. Etiam ultrices. Nulla malesuada purus vel risus. Curabitur nec risus elementum justo luctus nonummy. Donec sit amet enim eget nisi tristique gravida. Ut dapibus auctor sem. Vestibulum convallis massa ac massa. Fusce molestie faucibus ligula. Donec vitae tortor nec tellus accumsan eleifend. Vivamus lobortis metus non quam. Vestibulum ligula. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Maecenas mollis libero. Suspendisse potenti. Suspendisse potenti. Mauris rhoncus, nibh consequat elementum hendrerit, nulla massa viverra elit, a lacinia enim arcu at lacus.",
87
+ "Maecenas consectetuer facilisis velit. Nunc pede nisi, pharetra ac, elementum feugiat, sodales ut, nisl. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Quisque venenatis leo at libero. Sed nec risus id mauris vestibulum scelerisque. Vestibulum vitae turpis ac quam rutrum eleifend. Praesent nisi tellus, accumsan at, faucibus in, ultricies et, diam. Maecenas ipsum nunc, fermentum posuere, placerat vitae, tincidunt non, leo. Proin volutpat luctus lorem. In odio purus, pretium a, facilisis gravida, feugiat id, magna. Aenean mollis feugiat mauris. Cras vel odio. Vivamus purus elit, tincidunt ac, commodo eget, porttitor nec, ligula. Morbi congue sem quis ligula. Sed venenatis tempus odio.",
88
+ "Donec congue sagittis libero. Quisque libero. Aliquam eget leo in mauris sodales porta. Phasellus velit. Cras egestas. Maecenas tellus. Fusce viverra turpis vel felis. Suspendisse varius fringilla magna. Nam ut mauris. Nam consequat quam vel metus. Ut eu dolor. Donec mollis, lacus a scelerisque luctus, dui est posuere turpis, et fermentum augue mauris interdum nisl. Sed vitae mauris ut urna interdum faucibus. Suspendisse imperdiet nibh non purus. Cras risus libero, porta non, malesuada et, feugiat vel, nunc. Nullam eu felis id felis convallis blandit. Phasellus dignissim libero ut diam. Ut gravida nisl nec sem. Nulla facilisi.",
89
+ "Aenean ullamcorper massa at arcu. Mauris dui augue, viverra eu, venenatis ut, placerat imperdiet, mi. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Nunc est felis, pretium a, auctor eget, pretium et, enim. In diam purus, aliquam ac, ornare at, ultrices sed, turpis. Aliquam et pede eu est bibendum condimentum. Aliquam imperdiet sapien at nibh. Maecenas volutpat urna et tortor. Aenean ut turpis. Suspendisse nibh nisi, dapibus id, convallis eget, gravida a, risus. Nulla venenatis magna eu nunc. Suspendisse rhoncus accumsan mauris. Maecenas dapibus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Quisque malesuada tincidunt justo. Quisque lacinia nibh sollicitudin lectus. Curabitur ultrices metus vel massa. Donec sit amet nulla eu purus luctus semper.",
90
+ "Cras consectetuer. Aliquam erat volutpat. Fusce porttitor nulla in nibh. Duis ultrices dapibus lorem. Maecenas nulla odio, ultrices at, ultricies eu, egestas vel, enim. Cras orci. Quisque in nibh ut mauris dignissim viverra. Pellentesque dui leo, lobortis vel, dictum quis, vestibulum ac, libero. Praesent id nunc. Duis mollis dui non justo. Donec in urna et dui molestie hendrerit. Curabitur convallis lorem at lorem.",
91
+ "Aliquam at arcu nec urna condimentum fermentum. Cras pulvinar, pede eget pellentesque porta, mi nulla pulvinar ante, sed laoreet purus augue eu lorem. Vivamus vitae orci non neque lacinia vulputate. Nulla facilisi. Donec vestibulum consectetuer tellus. Vestibulum erat. Aliquam eleifend commodo nibh. Praesent posuere, turpis vel lobortis cursus, sapien felis mattis mauris, ac porttitor nulla nunc in turpis. Nulla feugiat, quam ac porttitor lobortis, libero nisi rutrum metus, vel ornare est orci vel erat. Suspendisse pede. Sed cursus, purus vel vehicula facilisis, leo diam rhoncus eros, nec tempor nisl ante ac libero. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aliquam lacus erat, cursus elementum, tempus non, laoreet non, mauris. Suspendisse auctor dolor et lectus. Pellentesque pharetra, eros sed accumsan rutrum, risus urna congue nulla, ut pretium sem erat vitae lacus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Suspendisse potenti. Sed nisl risus, varius quis, lobortis et, suscipit et, lacus. Praesent blandit, felis non tempus tristique, tortor velit congue ligula, vitae venenatis justo leo vel odio. In hac habitasse platea dictumst.",
92
+ "Mauris in tellus non dui tincidunt faucibus. Nulla dictum massa sit amet nunc. Integer mollis. Maecenas a velit ac nulla tempus venenatis. Nulla dictum. Nunc odio. Maecenas semper accumsan ipsum. Pellentesque non ante. Praesent quam magna, ornare iaculis, dictum accumsan, volutpat eget, elit. Etiam ut nisl ut nisl euismod fringilla. In pharetra diam. Sed vitae ante sit amet metus vehicula ultrices. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Aliquam nec est ut tortor dapibus mollis. Phasellus sodales ipsum ac leo. Vestibulum est erat, vulputate consequat, tincidunt et, mollis eget, metus.",
93
+ "Ut elit nisi, interdum et, laoreet et, porttitor eu, dui. Mauris volutpat tellus bibendum eros. In tincidunt nulla a nulla. Curabitur leo. Suspendisse mauris velit, condimentum at, interdum sit amet, imperdiet sit amet, diam. In tellus sem, malesuada viverra, tempor posuere, tempus ut, nulla. Nulla cursus faucibus nulla. Ut erat. Donec elementum laoreet turpis. In eu ante et diam aliquam tincidunt. Morbi est. Vivamus sodales. Nulla nunc.",
94
+ "Nam nunc. Sed magna diam, hendrerit vitae, scelerisque et, consectetuer a, risus. Fusce facilisis lobortis orci. Sed massa arcu, luctus ut, dignissim quis, hendrerit ac, justo. Curabitur sed arcu ac orci mollis porta. Maecenas leo. Proin dolor. Mauris posuere iaculis turpis. Nulla facilisi. Nam nisi. Proin ac diam vel mi sodales bibendum. Sed pharetra mi. Phasellus tempor lorem in nisl adipiscing ornare. Integer tempor pede eget diam. Nunc tempus feugiat quam. Pellentesque vel lorem.",
95
+ "Nullam euismod feugiat metus. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Mauris sagittis dolor at velit. Nullam felis enim, ultrices id, rutrum ac, vehicula eu, lorem. Aliquam erat volutpat. Ut non metus. Nulla posuere tincidunt felis. Donec pharetra turpis non mauris. Donec sed diam in massa pharetra tristique. Proin volutpat, arcu id placerat aliquam, leo urna auctor pede, in pulvinar ante nunc ac nisl. Morbi leo tellus, ullamcorper vel, adipiscing mollis, rhoncus et, nunc. Maecenas elit odio, vehicula a, vestibulum varius, malesuada quis, metus.",
96
+ "Fusce consequat. Pellentesque varius velit eu libero. Nullam gravida ligula eu massa. Quisque urna. Etiam libero. Nunc volutpat. Sed vitae pede vel tellus consequat viverra. Nulla facilisi. Nam porta. Ut adipiscing congue tellus. Quisque ligula risus, posuere et, pulvinar id, consectetuer non, dolor. Sed ac odio.",
97
+ "Donec vestibulum ultricies dui. Curabitur dui dolor, varius sit amet, ultricies in, molestie ut, felis. Duis malesuada urna a lacus. Mauris ut urna eget tellus ullamcorper scelerisque. Curabitur vestibulum pharetra sapien. Sed sed elit. Nulla id ante consectetuer augue tempus dapibus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin id risus nec nulla volutpat aliquet. Duis tincidunt hendrerit tortor. Phasellus hendrerit quam sit amet velit. Proin venenatis sagittis lectus. Proin pharetra purus a libero. Sed ultricies. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.",
98
+ "Praesent luctus mi non libero. Vestibulum purus sapien, vulputate vitae, tincidunt in, tempor eu, urna. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Morbi arcu mi, posuere eget, ultrices ac, vehicula sit amet, pede. Nam vel lectus. Aliquam vehicula nulla non lectus. Aenean sed felis et leo imperdiet fringilla. Donec varius. Nunc id nisl. Donec ultrices nisl vitae purus. Praesent nonummy rutrum dui. Aliquam erat volutpat. Fusce cursus, ante eget elementum pharetra, leo elit accumsan urna, a convallis risus nibh a magna. Nullam lectus. Mauris orci. Sed condimentum urna vel enim. Proin porta.",
99
+ "Curabitur commodo elit in risus. Integer adipiscing turpis molestie mi. Vestibulum eu erat vehicula libero blandit ullamcorper. Aliquam erat volutpat. Ut suscipit orci sed lectus. Etiam urna. Donec semper. Sed accumsan, arcu volutpat lobortis convallis, augue lectus blandit mi, sed tempus turpis dui a turpis. Vivamus sed risus vel leo tempus viverra. Suspendisse sit amet ipsum. Nulla vel dui eu ipsum laoreet iaculis. Fusce id augue.",
100
+ "Nulla felis. Vivamus rutrum. Phasellus tristique dignissim lacus. Proin egestas, libero quis accumsan vestibulum, diam libero bibendum diam, sed ultrices urna arcu nec sem. Proin a dolor. Curabitur ultrices interdum enim. Phasellus tellus risus, dignissim vel, dignissim vitae, porttitor ut, mi. Vivamus rutrum hendrerit nunc. Nam sed orci. Morbi adipiscing ante eget velit. Donec varius, turpis sed lacinia congue, diam nisi iaculis odio, et pretium elit mi eget augue. Maecenas tincidunt metus vel augue. Quisque tempus felis non felis. Integer faucibus. Duis lacus lorem, lacinia a, pellentesque eu, condimentum ut, libero.",
101
+ "Donec faucibus orci non nisi. Maecenas iaculis metus id leo. Donec lobortis elit at ligula. In magna elit, fringilla sollicitudin, imperdiet et, hendrerit non, turpis. Curabitur vehicula laoreet pede. Integer rutrum porttitor metus. Pellentesque odio purus, rutrum vitae, bibendum nec, tincidunt non, magna. Phasellus adipiscing, odio ultrices lobortis adipiscing, pede nibh pretium libero, nec semper purus turpis in est. Phasellus imperdiet diam non risus. Integer sed metus nec elit vulputate malesuada. Nam accumsan nisl a turpis. Quisque nonummy sodales dui.",
102
+ "Curabitur ultricies cursus tellus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Ut accumsan, sem quis tincidunt faucibus, sapien nunc condimentum dolor, nec viverra quam nunc ut magna. Nulla pretium enim quis mi. Aenean lorem. In ornare accumsan sapien. Mauris augue. Vestibulum ultrices pharetra est. Integer lorem. Aenean quis erat a felis venenatis cursus. Proin ligula. Donec commodo sollicitudin ligula. Nunc pellentesque. Nullam massa lectus, sollicitudin eget, ornare at, malesuada vitae, tellus. Vestibulum fringilla commodo neque. Curabitur cursus. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Mauris auctor pede eu turpis.",
103
+ "Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Pellentesque aliquam odio ac augue. Duis sed magna in sapien porta ultricies. Pellentesque sem leo, convallis at, malesuada et, semper accumsan, mauris. Proin gravida quam ut ipsum. Praesent consequat tincidunt nibh. Integer risus ipsum, volutpat vel, feugiat quis, adipiscing eu, ante. Cras vehicula, odio a dapibus dignissim, metus dui pharetra leo, quis iaculis ligula quam eget nisi. Donec quis metus in nisl mattis interdum. Ut feugiat vehicula lorem. Vestibulum eu nunc. Phasellus non turpis id orci euismod scelerisque. Nunc egestas eros sit amet urna.",
104
+ "Nam volutpat pede in tortor. Mauris rutrum pellentesque purus. Quisque vel odio. Aliquam orci. Vestibulum nulla diam, fermentum sed, luctus id, euismod ac, arcu. Curabitur a massa. Sed vestibulum, justo nec lobortis convallis, leo ante ultricies nisl, ut euismod elit libero sed neque. Maecenas ligula orci, porttitor sed, nonummy vitae, ultrices id, est. Duis sit amet quam ac nunc tristique cursus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Duis eleifend aliquam ipsum. Quisque est mi, scelerisque ut, suscipit nec, rutrum vel, nulla. Integer orci tellus, accumsan ac, consequat at, ornare sed, tellus. Aenean tincidunt.",
105
+ "Cras a lacus nec pede consequat elementum. Cras orci mi, euismod quis, convallis a, lobortis ut, nunc. Aliquam in nulla. Nullam sodales. Aliquam erat volutpat. Aliquam et enim condimentum pede scelerisque volutpat. Cras fermentum consequat dui. Aenean at eros nec augue euismod malesuada. Duis ultrices libero nec tortor. Vestibulum lacinia ullamcorper libero. Praesent a erat. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Ut pretium, lorem accumsan rhoncus mattis, libero lectus dignissim leo, at tempor neque libero quis leo. Nam eget purus.",
106
+ "Phasellus quis enim eget quam hendrerit sollicitudin. Nulla ut massa. Nam suscipit. Proin ut lorem. Ut vitae felis at quam sagittis interdum. Quisque vestibulum ornare eros. Aliquam arcu diam, venenatis sed, porttitor ac, convallis at, massa. Proin a lorem. Maecenas risus. Nunc at justo. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Etiam suscipit erat sit amet dui. Nulla euismod luctus quam. Aliquam mollis. In ultricies faucibus nunc.",
107
+ "Nulla sapien. Nulla sit amet elit vel neque ornare interdum. Phasellus sollicitudin nisi ac nunc. Cras eu nisi. Etiam dignissim elit vitae velit. Nulla ultrices lacus at lacus. Suspendisse convallis ipsum eu pede. Phasellus at ante. Suspendisse condimentum aliquam sem. Praesent pellentesque, sem eu congue dictum, metus elit rutrum leo, quis scelerisque pede turpis eu lacus. Aliquam arcu est, blandit a, cursus vel, congue et, mauris.",
108
+ "Proin pulvinar vulputate tortor. Quisque scelerisque. Cras rhoncus condimentum ligula. Sed condimentum quam nec erat. Nulla aliquam. Vestibulum dapibus. Ut molestie congue orci. Etiam eleifend. Mauris pede leo, fringilla sed, eleifend nec, tincidunt id, arcu. Phasellus ac enim. Sed porta, est a porta cursus, purus nulla ultricies massa, in sollicitudin nisl lacus a augue. Donec bibendum diam sed massa. Aliquam erat volutpat. Aenean dignissim convallis leo. Aenean ultricies elementum ante. Suspendisse eu libero.",
109
+ "Cras eu ligula vitae lectus egestas lobortis. Vestibulum bibendum vestibulum ligula. Sed volutpat viverra urna. Mauris vel arcu. Suspendisse odio. Aliquam in magna. Aliquam mollis nibh vitae leo. Sed imperdiet libero vel nibh. Fusce vitae tellus. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Phasellus purus diam, lobortis eu, tincidunt in, iaculis et, mi. Sed mattis, dui eget tincidunt lobortis, massa mi laoreet nisl, a nonummy sapien pede et purus. Mauris at dui ac neque nonummy molestie. Nam non purus ac augue posuere varius. Cras fringilla tortor vel sem. Duis vitae orci ac metus laoreet fermentum.",
110
+ "Quisque id felis. Maecenas dictum. Praesent pretium egestas lacus. Aenean facilisis libero nec arcu ultricies consectetuer. Cras elementum. Cras ut nunc at nunc mollis tincidunt. Sed non lectus quis dolor hendrerit lacinia. Donec molestie. Cras ut lorem. In facilisis est ac risus. Phasellus congue urna sed erat.",
111
+ "Aliquam tortor justo, tincidunt ac, consectetuer sed, bibendum ac, nibh. Pellentesque sed elit eget odio faucibus aliquet. Suspendisse ac ipsum. Curabitur velit. Fusce commodo diam eu dolor. Suspendisse tincidunt ligula condimentum est. Duis enim ante, eleifend ac, malesuada at, egestas a, diam. Ut vitae turpis eget velit bibendum euismod. Praesent semper purus vitae dolor. Etiam tempor. In justo. Aliquam dui diam, bibendum et, volutpat eget, mollis quis, nisi. Cras sit amet risus ut sapien laoreet mattis.",
112
+ "Duis felis enim, faucibus eu, aliquam a, commodo quis, libero. Integer lacinia. Curabitur aliquam eleifend nisl. Mauris tincidunt vulputate libero. Sed euismod convallis lectus. Nam sem mi, pulvinar nec, fermentum at, molestie eget, erat. Aliquam facilisis orci et nunc. Sed sed lorem a lectus bibendum iaculis. Morbi quis arcu. Aliquam lectus. Vestibulum tempor nulla at felis. Mauris dapibus, ipsum a pulvinar malesuada, mauris sem tristique libero, sed tincidunt ligula risus vitae tellus. Sed rhoncus consectetuer nulla. Donec nulla augue, lacinia a, facilisis sit amet, nonummy ac, turpis. Nam eu neque. Sed turpis nisl, elementum in, blandit rhoncus, sollicitudin sed, est.",
113
+ "Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec at est sit amet turpis suscipit rutrum. Praesent ligula. Nulla facilisi. Cras justo lectus, sodales id, dignissim sit amet, elementum eu, orci. Nam hendrerit. Sed facilisis tortor in mauris. Etiam malesuada erat ac lectus. Proin non nisl ac purus imperdiet consectetuer. In hac habitasse platea dictumst. Vivamus cursus. Etiam rutrum ipsum at quam. Aenean urna. Morbi sodales semper massa. Cras in tellus sodales lacus dignissim ultrices. Sed placerat diam mollis tellus. Phasellus pede est, nonummy sed, ullamcorper sed, dapibus a, sapien. Mauris turpis arcu, rutrum id, vestibulum a, consectetuer et, neque. Donec sed leo.",
114
+ "Sed tempor neque vitae mauris. Nam dictum. Sed vitae dui quis lorem viverra mollis. Aenean vitae pede sed nisl ornare accumsan. In ut ante nec purus tincidunt volutpat. Nam tincidunt egestas nunc. Vivamus aliquet placerat ipsum. Aenean mi dui, elementum a, laoreet vitae, aliquet non, sapien. Vivamus ante dolor, molestie sed, consectetuer vitae, laoreet rutrum, sapien. Suspendisse pulvinar lobortis elit. Nam lacinia tortor vitae orci.",
115
+ "Praesent arcu purus, ornare et, scelerisque id, fringilla at, libero. Aenean in enim. Nunc pharetra, massa fringilla tristique consequat, nunc urna luctus quam, a condimentum nisl ipsum id erat. Aliquam nunc. Quisque ac sapien non augue interdum condimentum. Nulla facilisi. In ac massa sed quam pulvinar molestie. Aenean lacus lectus, ullamcorper vitae, rutrum pretium, ornare nec, nunc. Nulla lobortis sapien vel urna porta tincidunt. Ut ante est, cursus nec, suscipit ac, laoreet eu, nunc. In non elit. Nunc vehicula pharetra turpis. Donec a purus. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Morbi feugiat ipsum eget nunc pellentesque dictum.",
116
+ "Nunc mattis dui in felis. Nam quis lectus malesuada lorem facilisis mattis. Fusce interdum sollicitudin diam. Praesent sit amet lectus. Curabitur tincidunt semper turpis. Quisque fringilla augue. Praesent id urna quis nunc commodo dignissim. Proin vitae metus. Praesent semper posuere ipsum. Ut non ligula sed risus faucibus sodales.",
117
+ "Phasellus semper congue elit. Sed mattis mauris in est. Nullam porttitor leo id odio. Phasellus ultrices nisl sed leo. Aenean hendrerit pellentesque justo. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. In est. Donec volutpat, elit a laoreet accumsan, neque augue lobortis augue, vitae pharetra urna nibh a risus. Fusce ultricies. Sed vel dolor vel neque vestibulum placerat. Vestibulum non purus eget elit tincidunt iaculis. Phasellus mauris dui, pretium non, ornare vitae, gravida non, risus. Donec et pede. Nullam lectus velit, aliquet et, mattis nec, cursus nec, mauris. Etiam magna.",
118
+ "Sed diam. Fusce dictum. Sed vel orci id velit cursus sodales. Sed lorem orci, egestas eget, interdum at, scelerisque sit amet, orci. Vestibulum dui metus, iaculis sed, scelerisque in, lacinia non, mauris. Nunc at arcu. Sed metus dui, feugiat at, auctor in, tempor et, nisl. Morbi lobortis, leo vitae imperdiet tempor, lacus risus rutrum dolor, ac ultricies enim urna sit amet orci. Aliquam erat volutpat. Pellentesque nec nunc. Maecenas aliquet, sapien ac luctus placerat, elit risus aliquam erat, eget interdum nisl ante nec lectus. Morbi et augue sed risus mollis feugiat. Donec nec dui et risus blandit pharetra. Nam diam. Vestibulum interdum molestie lorem. Curabitur sed augue eget orci imperdiet eleifend. Etiam vestibulum justo in arcu. Aenean at leo. Fusce porttitor felis sed neque.",
119
+ "Suspendisse eu velit eu augue fringilla tempus. Aliquam nonummy libero vel dolor. Curabitur aliquam consectetuer mi. Quisque sit amet sapien. Suspendisse quam elit, scelerisque sit amet, imperdiet a, consequat sit amet, arcu. Aenean adipiscing sollicitudin ante. Mauris tortor. Donec eu nisi sit amet lectus accumsan egestas. Quisque lacus magna, mollis id, congue ut, malesuada vel, nunc. Ut vehicula ante at est. Nullam leo diam, volutpat at, nonummy nec, egestas non, justo. In libero. Donec sollicitudin porttitor mi. Suspendisse dapibus fringilla ante. Duis adipiscing. Phasellus faucibus, ante ac elementum faucibus, lectus dui tristique elit, nec malesuada tortor quam pretium ante. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos.",
120
+ "Nullam sed tortor vel nisl tristique vehicula. Integer bibendum nibh a eros. In hac habitasse platea dictumst. Pellentesque aliquam, odio sed interdum fringilla, dolor pede blandit purus, ut volutpat erat justo vitae metus. Nam pede pede, porta ornare, sagittis sit amet, suscipit vel, sem. Donec commodo. Cras cursus lacus eget augue. Vestibulum consectetuer, nisi vitae tincidunt ultricies, turpis tortor pellentesque risus, sollicitudin aliquam nibh mauris at sapien. Curabitur porttitor. Praesent sem. Donec eu est eget magna sodales semper. Etiam sagittis suscipit sapien. Mauris euismod, quam non ultricies eleifend, tellus sem sodales ipsum, luctus elementum nunc lectus ut enim. Morbi ut quam in erat semper tincidunt. Duis massa. Vestibulum pulvinar tempus turpis.",
121
+ "Donec ipsum. Pellentesque enim leo, hendrerit vel, imperdiet eu, rutrum at, purus. Cras mattis venenatis magna. Suspendisse potenti. Aenean aliquet. Duis ullamcorper. Duis id ante sit amet ligula lacinia feugiat. Donec egestas cursus velit. Nulla dolor. Pellentesque at neque id risus viverra elementum. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Vestibulum tincidunt ligula. Quisque est. Quisque at massa. Cras commodo auctor ipsum. Nam euismod quam nec leo. Ut ac leo sed odio adipiscing tincidunt. Nunc sapien sem, malesuada eget, malesuada ut, vulputate ut, libero.",
122
+ "Nulla facilisi. Suspendisse ac dui. Nulla et risus in nisi tempus varius. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Morbi pharetra, ipsum eleifend lobortis lacinia, neque libero sodales libero, nec ornare lorem mauris tristique felis. Nullam risus nisi, placerat nec, dapibus in, faucibus quis, ipsum. Suspendisse id lectus vitae lorem pulvinar sodales. Quisque at lorem vitae neque fermentum gravida. Fusce at felis. Aenean in justo nec turpis congue elementum. Fusce malesuada turpis dictum sem. Maecenas quam augue, ullamcorper non, interdum eu, accumsan et, urna. Morbi quis eros. Mauris eget massa eu est imperdiet gravida.",
123
+ "Integer aliquam. Phasellus fringilla velit eget dolor. Praesent vulputate lobortis nibh. Praesent non quam ut dui bibendum malesuada. Suspendisse at nulla nec mauris facilisis porttitor. Vestibulum dui dui, aliquam eu, dapibus vel, aliquam a, orci. Praesent scelerisque. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Suspendisse magna. Nullam tempor.",
124
+ "Proin ultrices convallis est. Etiam elit urna, imperdiet vel, convallis quis, facilisis eget, nisl. Donec auctor. Nulla porttitor lorem eget ante. Suspendisse rutrum lorem sit amet nisi. Nam pretium ultrices sem. Sed in arcu nec massa varius imperdiet. Nullam sit amet justo a ipsum molestie tristique. Pellentesque at tellus. Vivamus mollis velit at ligula.",
125
+ "Aliquam erat volutpat. Morbi ante diam, feugiat sed, auctor eu, viverra eu, velit. Duis libero neque, imperdiet a, fringilla id, faucibus non, metus. Etiam pede mi, dignissim at, bibendum varius, ullamcorper ac, mi. Integer sed nisl quis nunc blandit lobortis. Aenean quis lectus. Pellentesque fermentum eros sed neque. Vivamus laoreet euismod est. Nulla vulputate nulla eu elit cursus tincidunt. Pellentesque tortor. Vestibulum dictum. Nam nibh. Morbi in nunc. In dui odio, rhoncus eget, eleifend hendrerit, euismod id, dolor. Fusce molestie. Fusce rhoncus lacinia odio. Vestibulum non purus. Maecenas lacinia dui id nunc.",
126
+ "Aliquam luctus massa. Pellentesque pharetra orci sed lectus. Proin congue laoreet mauris. Fusce quis ipsum et sem pharetra elementum. Aenean nec turpis ac lacus tincidunt pulvinar. Mauris hendrerit nisi a lacus. Vivamus quis urna vitae dui placerat adipiscing. Curabitur rutrum leo eu metus. Pellentesque lacus. Suspendisse potenti. Curabitur diam. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nulla a justo sodales sem auctor mollis. Aenean nibh diam, pretium non, consequat sed, facilisis elementum, enim. Sed imperdiet ullamcorper justo.",
127
+ "Ut accumsan, elit vitae iaculis dignissim, orci nunc faucibus nisi, vitae facilisis arcu odio non tellus. Phasellus ut pede a quam tincidunt iaculis. Integer ullamcorper tortor at ipsum. Pellentesque sed nunc quis magna fringilla varius. In hac habitasse platea dictumst. Pellentesque vehicula. Etiam accumsan, nunc ut fringilla placerat, mauris ipsum viverra diam, eu elementum ipsum neque non turpis. Curabitur vehicula. Etiam volutpat dignissim metus. Nunc convallis. Proin nec lectus at est imperdiet aliquam. Quisque nonummy commodo tortor. Nulla facilisi. In mattis dui eu purus. Morbi eget pede. In pharetra. Integer porttitor nonummy ante.",
128
+ "Morbi lacus. Nunc euismod tempus lacus. Cras convallis. Quisque suscipit. Praesent pellentesque turpis id massa. Nunc suscipit rhoncus tellus. Aenean ut metus sed dolor aliquet tristique. Aliquam faucibus enim non urna. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Quisque dignissim ipsum eu enim. Nunc lobortis tortor sed elit. Sed fermentum. Integer posuere nisl sed lectus fringilla vestibulum. Aenean mollis orci eget dolor. Donec ac mi id mi fringilla feugiat. Aenean ipsum.",
129
+ "Sed a velit id risus interdum molestie. Pellentesque sollicitudin risus at velit. In cursus dui eu lectus. Maecenas mi ligula, venenatis vitae, hendrerit vitae, blandit nec, nulla. Suspendisse potenti. Sed pharetra tortor ac erat. Morbi malesuada lectus ut eros. Cras tincidunt metus ut quam aliquet dapibus. Sed erat. Nulla ultrices. Donec accumsan dolor sed leo. Sed quis eros et velit sagittis rhoncus. Aliquam est. Maecenas tellus felis, commodo ut, congue vel, rhoncus at, ligula. Sed ac massa. Donec lobortis urna eu enim.",
130
+ "Quisque quis libero. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Pellentesque eros. Aenean varius mauris nec lorem. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Donec facilisis. Morbi ante quam, gravida vel, ullamcorper sed, blandit vitae, dolor. Sed nec leo eget mauris eleifend aliquet. Duis justo. Aenean venenatis. Etiam dui massa, mattis vel, accumsan at, nonummy vel, mauris. Vestibulum sed ipsum. Sed sit amet lectus at eros rhoncus interdum. Aliquam tempus, mauris imperdiet convallis placerat, tortor metus interdum justo, quis feugiat nisl quam ac nulla. Vestibulum lorem.",
131
+ "Sed id mi eget diam vulputate malesuada. Sed quis sem nec est malesuada imperdiet. Proin orci. Vestibulum libero metus, sollicitudin non, vehicula id, molestie at, ligula. Aliquam et urna. Praesent tincidunt, turpis et tristique hendrerit, velit eros ornare mi, nec rhoncus erat purus eu risus. Vestibulum tortor orci, lobortis ut, laoreet vel, interdum auctor, enim. Nam odio libero, lacinia nec, ultricies eget, placerat in, felis. Vestibulum mattis, sapien ac volutpat ultrices, ante pede gravida velit, dictum sagittis ligula nibh et leo. Nunc ut turpis eu purus malesuada cursus. Nunc tempor, ipsum elementum hendrerit molestie, nisl erat ultricies pede, at lacinia sem nulla non arcu. Nullam vulputate velit et felis. Praesent ligula erat, congue a, interdum ut, pellentesque gravida, mauris. Suspendisse scelerisque euismod pede. Nulla fermentum blandit dui. Fusce pretium tellus fringilla mauris. Etiam pellentesque orci vitae tortor. Ut feugiat mi ac urna. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Sed varius blandit neque.",
132
+ "Praesent vitae purus et turpis pellentesque vestibulum. Morbi sed purus. Nunc felis. Nulla consectetuer luctus tellus. Maecenas eget tellus. Maecenas sit amet nisl. Cras in lectus sit amet libero lobortis mattis. Integer sit amet mauris. Proin tincidunt luctus sapien. Proin dictum dui non mauris. Suspendisse fringilla turpis non erat accumsan dictum. Quisque commodo. Suspendisse ullamcorper, tellus a facilisis sollicitudin, massa orci venenatis justo, id laoreet tellus justo nec libero. Aliquam varius dictum urna.",
133
+ "Praesent tempor tortor vel est. Sed vel lectus. Curabitur at magna. Duis tristique sapien at dolor. Aenean dui. Morbi mollis arcu. Integer sollicitudin lacus non metus. Suspendisse potenti. Donec commodo. Quisque interdum semper metus. Proin imperdiet magna non est. Curabitur sollicitudin est et risus.",
134
+ "Proin tortor tortor, lobortis in, pulvinar sit amet, fermentum non, lorem. Nulla arcu sapien, accumsan scelerisque, luctus non, accumsan sed, eros. In id enim. Donec et turpis. Nulla facilisi. Sed eleifend ante quis magna. Nullam ac sapien. Praesent laoreet, eros eget accumsan volutpat, leo tellus vulputate velit, ac dictum nunc nisi ut metus. Duis eu est. Vivamus nonummy dapibus sem. Sed dictum dolor eget tortor. Phasellus sem enim, tristique nec, sollicitudin id, nonummy at, tortor. Donec enim.",
135
+ "Donec elit mauris, tempor vel, tempor at, ultrices in, felis. Sed vitae mauris. Ut vitae risus. Nunc laoreet lectus sit amet leo. Aliquam rutrum, est convallis auctor venenatis, orci tellus fringilla augue, at congue enim leo ut neque. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Donec vel erat in nulla suscipit tristique. Aliquam augue tortor, venenatis non, mollis vitae, adipiscing a, nisi. Sed sit amet mi non urna ultricies lobortis. In in erat vel sem dignissim facilisis. Nulla ac sem in justo consequat sollicitudin. Suspendisse malesuada elit eu est. Etiam at nunc. Ut pharetra orci a ante. Donec sed pede nec felis lobortis volutpat. Maecenas a justo. Suspendisse viverra feugiat lorem. Nam pede ante, accumsan vitae, lacinia eget, tempus quis, nisi. Sed nisi velit, pharetra ac, ornare ac, pretium ac, est.",
136
+ "Integer consectetuer convallis ipsum. Nulla facilisi. Curabitur augue. Suspendisse neque quam, consequat et, consectetuer vitae, porta tincidunt, orci. In tempor sodales turpis. Vestibulum laoreet dictum lacus. Maecenas vitae purus vitae nulla facilisis tincidunt. Ut malesuada porttitor enim. Suspendisse at sapien. Praesent et erat id leo rutrum pellentesque. Integer vel massa. Donec leo est, scelerisque nec, ultrices non, ultrices eget, arcu. Ut varius lorem ac libero.",
137
+ "Pellentesque bibendum. Curabitur vel enim. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Phasellus diam nulla, feugiat ut, ultricies accumsan, blandit ac, magna. Vestibulum ultricies accumsan metus. Mauris vitae nisl. Integer dignissim. Mauris nec magna. Aenean porta. Etiam volutpat, lectus ac scelerisque pulvinar, urna magna tempor ante, in vehicula magna purus eu leo. Suspendisse venenatis, mauris ac vehicula mattis, nisl magna mattis metus, at pulvinar mauris tellus egestas sapien. Donec eget sapien. Quisque eu mi. Cras id diam et arcu blandit rutrum. Curabitur mattis porttitor arcu.",
138
+ "Vestibulum quam arcu, gravida sed, tempor ornare, sodales nec, mauris. Etiam risus. Vivamus at urna id dolor aliquam venenatis. Vivamus venenatis. Nulla consequat pharetra ipsum. Nam felis. In ullamcorper luctus ligula. Curabitur consequat tempor sem. Pellentesque pellentesque eleifend lorem. Cras condimentum, risus id tempus luctus, justo purus convallis pede, sed dapibus orci ipsum mollis nulla. Sed et massa. Nunc malesuada urna et nibh. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nam pretium. Mauris ac nibh nec velit gravida facilisis.",
139
+ "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut volutpat nisi vel metus. Integer in velit. Etiam elementum mi semper nulla. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nulla convallis erat eu massa. Cras fringilla arcu quis dui. Donec lacus metus, accumsan at, sagittis sit amet, ullamcorper et, lorem. Quisque vitae velit ac lacus consectetuer condimentum. Mauris sem nibh, faucibus vel, pulvinar ut, ultricies eget, ante.",
140
+ "Vestibulum erat mauris, sagittis ut, laoreet vel, pulvinar sed, odio. Maecenas convallis, mauris id tempus tempor, tortor sapien convallis dui, nec euismod tortor ligula eget massa. Nunc id odio nec dolor hendrerit porta. Nulla nec lectus ut ligula pellentesque faucibus. Nunc dictum ultricies elit. Pellentesque placerat, dui ut interdum porta, pede nulla imperdiet augue, sit amet interdum dui ipsum vitae lectus. Suspendisse pellentesque elit eget orci. Suspendisse tellus est, facilisis quis, aliquet sed, mollis id, dui. Duis tortor nunc, pulvinar egestas, volutpat a, scelerisque vel, dolor. Donec iaculis sagittis felis. Donec in eros. Nunc sem mi, feugiat et, lacinia ut, mollis vitae, turpis. In auctor. Quisque libero ante, consequat ut, fringilla quis, lobortis ut, massa. Vivamus ut dui id enim tincidunt ultricies. Vivamus vehicula. Nulla porttitor, mi in ultricies feugiat, felis ipsum faucibus arcu, ut sollicitudin sapien ipsum suscipit justo. Integer semper augue vitae sapien.",
141
+ "Cras vitae quam. Ut et diam. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Etiam feugiat mollis nulla. Curabitur ut eros ac dolor placerat feugiat. Sed hendrerit elit non elit. Curabitur sed nisi. Quisque pede nulla, ornare in, pulvinar ut, scelerisque nec, purus. Duis tincidunt velit vel diam. Duis tincidunt est sed pede. Donec interdum odio vel libero. Nulla suscipit, lorem nec sagittis pharetra, est augue consequat enim, vitae elementum dui tortor et arcu. Fusce magna nulla, tempus ut, lobortis eu, cursus vitae, nibh. Nullam viverra elit ac velit. Integer imperdiet. Ut laoreet nisi quis metus. Vivamus ut lectus. Phasellus faucibus est ut neque. Quisque vestibulum metus a arcu. Cras bibendum justo sollicitudin massa.",
142
+ "Quisque sollicitudin molestie metus. Vestibulum sagittis dui ac odio. Curabitur magna. Mauris laoreet. Donec dui leo, faucibus et, cursus et, porttitor congue, massa. Maecenas feugiat pede vel ipsum. Aliquam erat volutpat. Suspendisse pulvinar. Ut odio nulla, placerat a, volutpat vel, molestie id, ligula. Donec ante. Etiam vulputate ante eget massa. Quisque et velit.",
143
+ "Fusce a tortor quis orci malesuada imperdiet. Sed nonummy pharetra arcu. Nunc auctor. Mauris sit amet risus consequat eros placerat elementum. In felis enim, interdum sit amet, varius eget, tempor a, libero. Praesent a augue. Cras volutpat. Cras ut risus sit amet lectus aliquet egestas. Duis in tellus. Etiam interdum, augue non ullamcorper euismod, mi risus accumsan justo, suscipit pellentesque arcu metus ac ligula.",
144
+ "Ut id leo eget ipsum tempor vehicula. Sed arcu erat, bibendum ac, eleifend non, laoreet sit amet, erat. Suspendisse potenti. Donec commodo elementum nibh. Mauris suscipit nonummy ipsum. Nulla bibendum scelerisque libero. Praesent porta. Ut dignissim, velit eu mattis vehicula, sapien velit pulvinar dui, vel pharetra nisl metus id leo. In mauris. Fusce lectus mauris, convallis rhoncus, tristique a, tristique eget, mi. Donec consequat dolor non turpis. Morbi tincidunt justo elementum urna. Pellentesque rhoncus, libero et sodales iaculis, nunc nibh iaculis mauris, vel tempus nisl ipsum at velit. Suspendisse diam mauris, laoreet placerat, condimentum ut, ultrices sit amet, pede. Aliquam erat volutpat. Quisque sit amet nunc ac nisl facilisis venenatis. Ut et diam. Nulla consequat diam at diam.",
145
+ "Curabitur adipiscing ullamcorper felis. Vestibulum sagittis blandit dolor. Praesent ut diam. Donec turpis. Nulla ut nibh. Vestibulum nec leo. Pellentesque venenatis metus. Donec sed orci. Nullam imperdiet massa vel nibh. Sed vel massa eu tellus mattis mollis. Morbi dui. Mauris non ligula. Donec mi odio, pharetra et, auctor in, suscipit et, turpis. Etiam ut risus. Sed ut urna. Aliquam erat volutpat.",
146
+ "In hac habitasse platea dictumst. Nullam nisl. Sed vitae felis id lectus venenatis mattis. Duis nonummy. Pellentesque lacus lectus, laoreet vel, eleifend ut, posuere id, justo. Pellentesque porta. Praesent luctus tempor diam. Integer elit odio, elementum a, fermentum eu, dictum et, purus. Curabitur et felis. Proin luctus luctus risus. Aliquam arcu turpis, dapibus vitae, malesuada sed, placerat at, est.",
147
+ "Morbi mollis dictum massa. Vestibulum tellus felis, tristique vel, posuere in, pellentesque sed, risus. Nam a tortor. Nam commodo sollicitudin risus. Pellentesque vitae dui eu tellus consequat ullamcorper. Curabitur eu dui quis est placerat ultricies. Nunc consequat enim nec nunc feugiat hendrerit. Etiam tincidunt feugiat lectus. Morbi sodales fermentum ante. Nam erat sapien, elementum eget, imperdiet a, auctor sit amet, ligula. Aenean quam enim, accumsan eu, fringilla id, iaculis sed, risus. Aenean non nisl vitae justo scelerisque ullamcorper.",
148
+ "Duis pulvinar. Nam felis ipsum, feugiat eget, pulvinar id, suscipit vel, nunc. Integer aliquet sagittis augue. Vivamus a mauris. In hac habitasse platea dictumst. Nam purus. Sed eu dui et risus auctor aliquet. In tortor massa, malesuada quis, nonummy vitae, tincidunt et, est. Etiam eget quam. Phasellus pede massa, tempor vel, mollis id, semper quis, lacus. Sed felis mi, congue eu, fermentum a, accumsan quis, velit. Mauris ac tellus quis enim vestibulum fringilla. Phasellus dignissim, ligula in ullamcorper porttitor, sapien tortor porttitor neque, vitae sagittis mi pede ac sem. Praesent eget massa a neque varius vulputate. Proin eu neque. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Cras vitae lorem.",
149
+ "Integer lacinia lacus in arcu. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Proin a velit sit amet mi consequat interdum. Nulla facilisi. Nullam ut dolor eu erat sollicitudin auctor. Maecenas a neque vitae massa porttitor iaculis. Nulla rhoncus sem ac dolor. Maecenas adipiscing eleifend pede. Proin egestas tempus tortor. Praesent et mauris. Nam ante mi, rhoncus in, commodo in, dignissim at, nunc. Cras placerat ante vel nunc. Donec pellentesque, arcu at semper scelerisque, lorem ante vestibulum libero, vitae dignissim dui mi sit amet eros. Proin id tellus. Duis tincidunt, leo vitae egestas pulvinar, sapien ipsum vulputate metus, non rutrum ante justo non mauris. Praesent diam ligula, malesuada cursus, dignissim non, aliquam in, erat. Fusce nec lectus sit amet erat convallis eleifend. Donec varius. Etiam vitae nisi.",
150
+ "Suspendisse vel urna. Quisque a lectus. Vivamus congue faucibus pede. Quisque lacus nibh, blandit vitae, iaculis id, commodo vitae, nunc. Nullam fringilla. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; In mollis, erat non volutpat posuere, massa turpis ornare eros, eget egestas neque pede eleifend urna. Integer nibh augue, interdum vitae, egestas a, ultrices vitae, dolor. Phasellus rutrum, magna a laoreet sollicitudin, leo libero scelerisque nulla, et hendrerit est leo quis libero. Aliquam hendrerit facilisis nunc. In imperdiet lectus nec risus. Curabitur at elit. Duis mi dolor, tempus ac, sollicitudin egestas, adipiscing a, velit. Sed pede nisl, imperdiet sit amet, venenatis et, dapibus luctus, lacus. Nulla tempus. Integer quam. Sed metus eros, tristique eget, rutrum feugiat, elementum ac, eros. Praesent eget metus et est commodo porta. Nulla pulvinar, lacus non elementum nonummy, dolor tortor pellentesque risus, id volutpat magna urna a est.",
151
+ "Proin nisi est, malesuada in, cursus vel, ultricies ac, orci. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Integer non justo. Sed ac enim. Pellentesque eget augue eu mi facilisis dignissim. Aenean cursus leo id dolor. Nunc et sapien. Aliquam vitae sem id enim sagittis euismod. Quisque sed nibh non velit tempus tincidunt. Sed ultricies semper lorem. Phasellus condimentum est non mi. Donec consequat interdum neque.",
152
+ "Pellentesque lorem. Aenean scelerisque posuere erat. Cras justo. Maecenas risus nunc, dapibus eget, sagittis ultrices, condimentum id, velit. Nunc metus est, vulputate eu, tincidunt at, tincidunt ut, erat. Vestibulum non massa id nisi facilisis malesuada. Donec consequat adipiscing nisi. Aliquam erat volutpat. Nulla laoreet laoreet arcu. Nunc est velit, interdum eu, placerat commodo, venenatis at, ligula. Aenean fermentum euismod nulla. Nulla facilisi. Mauris odio nunc, pulvinar in, interdum id, luctus at, mi. Duis porttitor semper erat. Ut vel urna. Phasellus commodo pellentesque risus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vestibulum adipiscing consectetuer libero.",
153
+ "Fusce faucibus libero vitae turpis. Pellentesque vel risus. Maecenas placerat euismod libero. Curabitur ut turpis varius enim dapibus commodo. Quisque fringilla arcu rhoncus sapien. Sed consectetuer arcu id pede. Duis lacus. Vestibulum venenatis elit ac leo. Suspendisse potenti. Donec eget tortor et magna pellentesque malesuada. Duis non lacus. Morbi mollis dignissim felis. Nam et elit id diam convallis venenatis. Ut ut tortor. Praesent vel eros a nibh rhoncus pharetra. Morbi magna. Vestibulum vel purus. Morbi eleifend cursus sapien.",
154
+ "Integer ultricies. Duis faucibus. Fusce leo tortor, fermentum vitae, tempor in, lacinia pharetra, sem. Phasellus id odio a mauris consequat viverra. Vestibulum fringilla facilisis urna. Nunc consequat dignissim est. Nam interdum auctor libero. Aliquam placerat odio id orci. Maecenas diam. Aenean ut dolor. Nullam vehicula porta mauris. Proin aliquet lectus. Curabitur sed arcu sit amet enim egestas aliquam. Cras malesuada. Fusce laoreet posuere enim. Fusce fermentum blandit neque. Vestibulum ultricies, neque quis ultrices tincidunt, nulla orci aliquet lorem, ut mollis nunc sapien elementum sapien. Aenean nunc libero, tincidunt sit amet, porttitor sed, laoreet in, eros. Ut tempus, nunc vel iaculis tempus, metus orci commodo erat, vitae auctor enim sapien ac elit.",
155
+ "Nulla vestibulum ultricies quam. Ut augue lorem, lacinia et, pretium ac, sagittis nec, purus. In hac habitasse platea dictumst. Nulla malesuada aliquet metus. Vivamus cursus auctor diam. Nunc placerat scelerisque mauris. Proin scelerisque tincidunt elit. Maecenas mi. Nulla facilisi. Aliquam dapibus. Nulla facilisi.",
156
+ "Vestibulum eu urna. Quisque non ligula ut erat faucibus tristique. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Nunc suscipit lacinia tortor. Etiam et leo. Suspendisse est dui, placerat vel, gravida sed, adipiscing id, arcu. Sed turpis. Morbi vitae orci quis pede ornare faucibus. Maecenas sed orci rutrum pede sodales adipiscing. Aliquam elit. Nam in justo. Mauris vitae magna. Praesent hendrerit orci id pede. Mauris euismod magna a nisl.",
157
+ "Aliquam erat volutpat. Cras pede odio, euismod id, dignissim quis, blandit quis, orci. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Aliquam velit felis, lacinia sit amet, scelerisque at, euismod ac, pede. Curabitur euismod ante a lorem. Proin ac leo a massa commodo vestibulum. Cras et nulla eget felis vulputate venenatis. Integer vel diam sit amet eros venenatis auctor. Praesent scelerisque arcu facilisis justo. Proin venenatis.",
158
+ "Nulla ante mauris, auctor in, tempus a, vulputate sed, metus. Fusce tincidunt ante in nunc. Etiam eget ante id mi aliquet placerat. Morbi accumsan diam ut ipsum. Duis ipsum. Nullam non est. Proin vehicula mauris vel lorem. Morbi arcu dolor, venenatis sed, fringilla et, tincidunt vitae, metus. Nam sed ipsum quis leo bibendum porttitor. Phasellus lorem pede, porta vitae, cursus quis, auctor ac, tortor. Ut porttitor. Etiam nec ante. Curabitur convallis orci. Nunc egestas rhoncus tortor. Vestibulum tempor condimentum mauris. Quisque in purus imperdiet quam tempor gravida. Cras molestie elementum ante. In bibendum ipsum consequat lectus. Proin malesuada fringilla lorem. Integer tincidunt.",
159
+ "Integer ornare purus quis tortor. Vestibulum imperdiet. Integer eros turpis, aliquam a, eleifend et, convallis ac, pede. Morbi vel est. Suspendisse pharetra sollicitudin leo. Nulla lectus ante, fermentum vel, consequat vel, ullamcorper in, libero. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Pellentesque vulputate. Proin condimentum sagittis ipsum. Aenean eros. Maecenas ullamcorper. Donec congue, odio vitae bibendum tempus, lacus massa porttitor enim, sit amet vestibulum enim massa ut risus.",
160
+ "Nunc viverra mollis elit. Integer at felis vitae urna aliquet hendrerit. Vestibulum vehicula cursus neque. Ut ut augue at dolor aliquam nonummy. Vivamus orci mi, viverra eget, mollis hendrerit, egestas id, urna. Sed rutrum mi. Pellentesque erat pede, blandit et, pulvinar sed, pulvinar nec, leo. Ut aliquet dictum mi. Nam ullamcorper nisl sed purus. Curabitur iaculis lobortis justo. Nullam libero nibh, pretium id, scelerisque dignissim, sodales ac, enim. Ut dolor arcu, hendrerit vitae, egestas vel, condimentum id, justo. Suspendisse quam."
161
+ ]
162
+
163
+ TYPES = [:paragraphs, :words, :characters]
164
+
165
+ def self.output(count, type = :words, text = :html)
166
+ case type
167
+ when :paragraphs
168
+ if text == :html
169
+ return PARAGRAPHS[0,count].collect{|p| p.wrap('<p>', '</p>')}.join
170
+ else
171
+ return PARAGRAPHS[0,count].join("\n\n")
172
+ end
173
+ when :words
174
+ lipsum = ''
175
+ lipsum_count = 0
176
+
177
+ if text == :html
178
+ PARAGRAPHS.each do |p|
179
+ if lipsum_count < count
180
+ words = p.split(' ')[0,count-lipsum_count]
181
+ lipsum_count += words.length
182
+ lipsum += words.join(' ').wrap('<p>', '</p>')
183
+ else
184
+ return lipsum
185
+ end
186
+ end
187
+ else
188
+ PARAGRAPHS.each do |p|
189
+ if lipsum_count < count
190
+ words = p.split(' ')[0,count-lipsum_count]
191
+ lipsum_count += words.length
192
+ lipsum += words.join(' ') + "\n\n"
193
+ else
194
+ return lipsum
195
+ end
196
+ end
197
+ end
198
+
199
+ return lipsum
200
+ when :characters
201
+ if text == :html
202
+ return PARAGRAPHS.join(' ')[0,count].wrap('<p>', '</p>')
203
+ else
204
+ return PARAGRAPHS.join(' ')[0,count]
205
+ end
206
+ else
207
+ # TODO: throw error
208
+ end
209
+ end
210
+ end
211
+ end
212
+ end
@@ -0,0 +1,124 @@
1
+ class String
2
+ def convert(pattern, template)
3
+ output = String.new(template)
4
+ self.match(pattern).to_a.each_with_index{|group, index| output.gsub!("$#{index}", group)}
5
+ output
6
+ end
7
+
8
+ def escape
9
+ CGI::escape(self)
10
+ end
11
+
12
+ def unescape
13
+ CGI::unescape(self)
14
+ end
15
+
16
+ def to_sha
17
+ Digest::SHA1.hexdigest(self)
18
+ end
19
+
20
+ def to_md5
21
+ Digest::MD5.hexdigest(self)
22
+ end
23
+
24
+ def to_possesive
25
+ self.last.downcase == 's' ? "#{self}'" : "#{self}'s"
26
+ end
27
+
28
+ def xml_strip
29
+ self.gsub(/<.*?>/, '')
30
+ end
31
+
32
+ def wrap(before, after = nil)
33
+ before + self + (after || before)
34
+ end
35
+
36
+ def to_pretty_url
37
+ self.strip.downcase.gsub(/\s+/, '_').gsub(/[^\w_-]/, '')
38
+ end
39
+
40
+ def to_html
41
+ BlueCloth.new(self).to_html rescue ''
42
+ end
43
+ end
44
+
45
+
46
+ class Array
47
+ def rand
48
+ self[Object.send(:rand, size)]
49
+ end
50
+
51
+ def maximum(&block)
52
+ self.collect{|n| yield(n)}.max
53
+ end
54
+
55
+ def minimum(&block)
56
+ self.collect{|n| yield(n)}.min
57
+ end
58
+
59
+ def average(&block)
60
+ sum = 0
61
+ items = 0
62
+
63
+ self.each do |n|
64
+ current_value = yield(n)
65
+ sum += current_value and items += 1 if current_value
66
+ end
67
+
68
+ if items > 0
69
+ sum.to_f / items.to_f
70
+ else
71
+ nil
72
+ end
73
+ end
74
+ end
75
+
76
+
77
+ class NilClass
78
+ def each
79
+ nil
80
+ end
81
+
82
+ def to_s(format = nil)
83
+ ''
84
+ end
85
+
86
+ def empty?
87
+ true
88
+ end
89
+
90
+ def blank?
91
+ true
92
+ end
93
+ end
94
+
95
+
96
+ class Object
97
+ def self.my_methods
98
+ methods - (superclass ? superclass.methods : [])
99
+ end
100
+
101
+ def my_methods
102
+ methods - (self.class.superclass ? self.class.superclass.new.methods : [])
103
+ end
104
+ end
105
+
106
+
107
+ class ActiveRecord::Base
108
+ def self.[](id)
109
+ self.find(id)
110
+ end
111
+
112
+ def to_param
113
+ if self.respond_to?(:name) and !self.name.blank?
114
+ "#{self.id}-#{self.name.to_pretty_url}"
115
+ else
116
+ self.id.to_s
117
+ end
118
+ end
119
+
120
+ def dom_id(prefix = nil)
121
+ prefix ||= 'new' if self.new_record?
122
+ [ prefix, self.class.name, self.id ].compact.join('_').downcase
123
+ end
124
+ end
data/test/helper.rb ADDED
@@ -0,0 +1,10 @@
1
+ require 'rubygems'
2
+ require 'test/unit'
3
+ require 'shoulda'
4
+
5
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
6
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
7
+ require 'commonthread-rails'
8
+
9
+ class Test::Unit::TestCase
10
+ end
@@ -0,0 +1,7 @@
1
+ require 'helper'
2
+
3
+ class TestCommonthreadRails < Test::Unit::TestCase
4
+ should "probably rename this file and start testing for real" do
5
+ flunk "hey buddy, you should probably rename this file and start testing for real"
6
+ end
7
+ end
metadata ADDED
@@ -0,0 +1,80 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: commonthread-rails
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - CommonThread
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2010-01-23 00:00:00 -06:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: thoughtbot-shoulda
17
+ type: :development
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: "0"
24
+ version:
25
+ description: commonthread-rails is a collection of things that make rails development better for us. It includes date formats, monkey patches to String, Array and NilClass to make things nicer. An Encrypter using blowfish. Also, some rails filters
26
+ email: hello@commonthread.com
27
+ executables: []
28
+
29
+ extensions: []
30
+
31
+ extra_rdoc_files:
32
+ - LICENSE
33
+ - README.rdoc
34
+ files:
35
+ - .document
36
+ - .gitignore
37
+ - LICENSE
38
+ - README.rdoc
39
+ - Rakefile
40
+ - VERSION
41
+ - commonthread-rails.gemspec
42
+ - lib/commonthread-rails.rb
43
+ - lib/commonthread/date_formats.rb
44
+ - lib/commonthread/encrypter.rb
45
+ - lib/commonthread/filters.rb
46
+ - lib/commonthread/lipsum.rb
47
+ - lib/commonthread/monkey_patches.rb
48
+ - test/helper.rb
49
+ - test/test_commonthread-rails.rb
50
+ has_rdoc: true
51
+ homepage: http://github.com/commonthread/commonthread-rails
52
+ licenses: []
53
+
54
+ post_install_message:
55
+ rdoc_options:
56
+ - --charset=UTF-8
57
+ require_paths:
58
+ - lib
59
+ required_ruby_version: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - ">="
62
+ - !ruby/object:Gem::Version
63
+ version: "0"
64
+ version:
65
+ required_rubygems_version: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: "0"
70
+ version:
71
+ requirements: []
72
+
73
+ rubyforge_project:
74
+ rubygems_version: 1.3.5
75
+ signing_key:
76
+ specification_version: 3
77
+ summary: commonthread-rails is a collection of things that make rails development better for us
78
+ test_files:
79
+ - test/helper.rb
80
+ - test/test_commonthread-rails.rb