newsletter 3.2.6 → 3.2.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (35) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -0
  3. data/app/controllers/newsletter/newsletters_controller.rb +8 -2
  4. data/app/models/newsletter/design.rb +11 -6
  5. data/app/models/newsletter/element.rb +1 -1
  6. data/app/models/newsletter/newsletter.rb +5 -0
  7. data/app/views/newsletter/designs/_form.html.erb +2 -0
  8. data/app/views/newsletter/newsletters/_head.html.erb +1 -1
  9. data/app/views/newsletter/newsletters/_newsletter.html.erb +13 -2
  10. data/app/views/newsletter/newsletters/archive.html.erb +1 -1
  11. data/app/views/newsletter/newsletters/edit.html.erb +1 -1
  12. data/app/views/newsletter/newsletters/show.css.erb +1 -0
  13. data/app/views/newsletter/newsletters/show.html.erb +13 -2
  14. data/app/views/newsletter/newsletters/stylesheet.css +1 -0
  15. data/config/locales/newsletters.en.yml +1 -0
  16. data/config/routes.rb +1 -1
  17. data/db/migrate/002_carrier_wave_for_assets.rb +19 -0
  18. data/db/migrate/003_add_stylesheet_text_to_designs.rb +12 -0
  19. data/designs/exports/example-export.yaml +61 -268
  20. data/lib/newsletter/engine.rb +7 -1
  21. data/lib/newsletter/version.rb +1 -1
  22. data/newsletter.gemspec +11 -0
  23. data/spec/test_app/config/database.postgres.yml +3 -3
  24. data/spec/test_app/db/migrate/20150507154748_carrier_wave_for_assets.rb +19 -0
  25. data/spec/test_app/db/migrate/20150507195612_add_stylesheet_text_to_designs.rb +12 -0
  26. data/spec/test_app/db/schema.rb +5 -4
  27. data/spec/test_app/script/full_suite +3 -3
  28. data/spec/test_app/spec/factories/designs.rb +3 -1
  29. data/spec/test_app/spec/factories/newsletters.rb +1 -1
  30. data/spec/test_app/spec/features/newsletter/design_spec.rb +2 -0
  31. data/spec/test_app/spec/models/newsletter/design_spec.rb +27 -3
  32. data/spec/test_app/spec/models/newsletter/engine_spec.rb +11 -0
  33. data/spec/test_app/spec/models/newsletter/newsletter_spec.rb +21 -0
  34. data/spec/test_app/spec/support/files/newsletter_empty_table_prefix.yml +12 -0
  35. metadata +21 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ca3ac56519c2cce9f9541adf35b13c59661a4fd0
4
- data.tar.gz: 31e107af3b406dac20f079a6743b86ad2cd8ee67
3
+ metadata.gz: 624c68b4546267131697484baeb37761fb6409da
4
+ data.tar.gz: c77304e432fd8af78762564f68aff2f236b0ae49
5
5
  SHA512:
6
- metadata.gz: c31f181214ef20662cf68707c9f0332c3994c5a16aa248455038ed9aff2339c05c92545ae6ff3a427b333cf45b63fa74431b0a46e8cee302f6113c8bc5b37e3d
7
- data.tar.gz: 5361c58eacf4b85987984f2f2da6211fad2103d618ff9af71655d7cf289057620f35270ae4ce71170783166838dcbd87196c12e9b784c86dd2e7e79c81b01f04
6
+ metadata.gz: e957c0dbe1deb75a342ec8de0b547858cb23ddf47878cad79036a76179c3d5e309e98271ee166d09a5b30c36031bcc81d491e3cd231f37addc99a802756f0d6c
7
+ data.tar.gz: 077ba6cad38aadd2617d2837689a43d038035a96cd5c5c6fb0726f6adc1a5f1f00931ca7a5740a160ad204ff56c1e5c25b1ae329d9654faee7b6ed632ac47084
data/README.md CHANGED
@@ -11,6 +11,7 @@ Online Documentation
11
11
  --------------------
12
12
  * [Homepage](http://ireachnews.com)
13
13
  * [Github Wiki](https://github.com/LoneStarInternet/newsletter/wiki)
14
+ * [Changelog](http://www.ireachnews.com/index.html#changelog)
14
15
 
15
16
  Requirements
16
17
  ------------
@@ -1,7 +1,6 @@
1
1
  module Newsletter
2
2
  class NewslettersController < ::Newsletter::ApplicationController
3
3
  helper_method :newsletter
4
-
5
4
  def sort
6
5
  Newsletter.all.each do | newsletter |
7
6
  newsletter.sequence = params["newsletters"].index(newsletter.id.to_s)+1
@@ -14,6 +13,10 @@ module Newsletter
14
13
  @newsletters = Newsletter.published
15
14
  render :layout => ::Newsletter.archive_layout
16
15
  end
16
+
17
+ def stylesheet
18
+
19
+ end
17
20
 
18
21
  def publish
19
22
  if @newsletter.publish
@@ -39,7 +42,10 @@ module Newsletter
39
42
 
40
43
  def show
41
44
  return redirect_to(main_app.newsletter_archive_path) unless @newsletter.present?
42
- render layout: false
45
+ respond_to do |format|
46
+ format.html { render layout: false }
47
+ format.css { render layout: false, content_type: 'text/css' }
48
+ end
43
49
  end
44
50
 
45
51
  def editor
@@ -17,7 +17,8 @@ module ::Newsletter
17
17
 
18
18
  accepts_nested_attributes_for :areas
19
19
 
20
- attr_accessible :name, :description, :html_text, :areas_attributes
20
+ attr_accessible :name, :description, :html_text, :areas_attributes,
21
+ :stylesheet_text
21
22
 
22
23
  scope :active, :conditions => {:deleted_at => nil}
23
24
 
@@ -35,6 +36,7 @@ module ::Newsletter
35
36
  YAML.dump( {
36
37
  :name => name,
37
38
  :html_text => html_text,
39
+ :stylesheet_text => stylesheet_text,
38
40
  :description => description,
39
41
  :areas => areas.collect{|area| area.export_fields},
40
42
  :elements => elements.collect{|element| element.export_fields},
@@ -55,7 +57,8 @@ module ::Newsletter
55
57
  data[:name] = design_name if design_name
56
58
  design = Design.create(:name => data[:name],
57
59
  :html_text => data[:html_text],
58
- :description => data[:description])
60
+ :description => data[:description],
61
+ :stylesheet_text => data[:stylesheet_text])
59
62
  data[:areas].each do |area_data|
60
63
  Area.import(design,area_data)
61
64
  end
@@ -102,9 +105,11 @@ module ::Newsletter
102
105
  end
103
106
 
104
107
  # move a design's images on name change
105
- def move_images
106
- return unless @old_name && @old_name != name
107
- FileUtils.mv(images_path(@old_name),images_path)
108
+ def move_images(old_name=nil, new_name=nil)
109
+ old_name ||= @old_name
110
+ name ||= new_name
111
+ return unless old_name && old_name != name
112
+ FileUtils.mv(images_path(old_name),images_path)
108
113
  end
109
114
 
110
115
  # imports images from array of base64 encoded images
@@ -119,7 +124,7 @@ module ::Newsletter
119
124
  end
120
125
 
121
126
  def html_text
122
- return @html_text if @html_text
127
+ return @html_text if @html_text.present?
123
128
  @html_text = read_design
124
129
  end
125
130
 
@@ -52,7 +52,7 @@ module Newsletter
52
52
 
53
53
  # retrieves the html erb design from the file system
54
54
  def html_text
55
- return @html_text if @html_text
55
+ return @html_text if @html_text.present?
56
56
  @html_text = read_design
57
57
  end
58
58
 
@@ -31,6 +31,11 @@ module Newsletter
31
31
  def headlines
32
32
  pieces.select{|piece| piece.respond_to?(:headline)}
33
33
  end
34
+
35
+ # returns it's stylesheet
36
+ def stylesheet
37
+ design.stylesheet_text.to_s
38
+ end
34
39
 
35
40
  # returns the newsletter's content as plain text
36
41
  def email_text
@@ -8,6 +8,8 @@
8
8
  <label>Design Filename</label>
9
9
  <div style="padding-top: 9px;"><%= @design.view_path.gsub(/^#{::Newsletter.designs_path}/,'') %></div><br />
10
10
  <% end %>
11
+ <%= f.label :stylesheet_text %>
12
+ <%= f.text_area :stylesheet_text %><br />
11
13
  <%= f.label :html_text %>
12
14
  <%= f.text_area :html_text %><br />
13
15
  <div class='newsletter_parts_group'>
@@ -1,8 +1,8 @@
1
1
  <% unless is_email? %>
2
2
  <link rel="stylesheet" href="https://code.jquery.com/ui/1.10.3/themes/le-frog/jquery-ui.css">
3
3
  <%= javascript_include_tag 'newsletter/application' %>
4
+ <%= csrf_meta_tag %>
4
5
  <%= yield :head_content %>
5
-
6
6
  <style>
7
7
  .edit_link {
8
8
  font-family: Verdana, Arial, Helvetica, sans-serif;
@@ -1,11 +1,22 @@
1
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
- <html xmlns="http://www.w3.org/1999/xhtml">
1
+ <% unless is_email? %>
2
+ <!DOCTYPE html>
3
+ <html lang="en">
3
4
  <head>
4
5
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
6
+ <meta name="viewport" content="width=device-width, initial-scale=1"/>
5
7
  <title><%= @newsletter.name %></title>
8
+ <link rel="stylesheet" type="text/css" media="screen" href="<%= "/newsletters/#{@newsletter.id}/stylesheet.css" %>"/>
6
9
  <%= render 'newsletter/newsletters/head' %>
7
10
  </head>
8
11
  <body>
12
+ <% else %>
13
+ <!DOCTYPE html>
14
+ <style>
15
+ <%= @newsletter.design.stylesheet_text %>
16
+ </style>
17
+ <% end %>
9
18
  <%= render :inline => File.readlines(@newsletter.design.view_path).join, :locals => @newsletter.locals %>
19
+ <% unless is_email? %>
10
20
  </body>
11
21
  </html>
22
+ <% end %>
@@ -2,7 +2,7 @@
2
2
 
3
3
  <ul style="margin-bottom: 100px;">
4
4
  <% @newsletters.published.each do |newsletter| %>
5
- <li><%= link_to newsletter.name, public_newsletter_path(newsletter) %></li>
5
+ <li><%= link_to newsletter.name, newsletter.public_url('public') %></li>
6
6
  <% end %>
7
7
  </ul>
8
8
 
@@ -13,7 +13,7 @@
13
13
  <% end %>
14
14
 
15
15
  <p><b>Newsletter Window Size: </b>
16
- <% [[640,480],[800,600],[1024,768],[1280,1024],[1600,1200]].each do |width,height| %>
16
+ <% [[320,568],[640,480],[800,600],[1024,768],[1280,1024],[1600,1200]].each do |width,height| %>
17
17
  <%= link_to_function "#{width}x#{height}","$('#preview').css({height: '#{height}px', width: '#{width}px'})" %>
18
18
  <% end %>
19
19
  </p>
@@ -0,0 +1 @@
1
+ <%= @newsletter.design.stylesheet_text %>
@@ -1,11 +1,22 @@
1
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
- <html xmlns="http://www.w3.org/1999/xhtml">
1
+ <% unless is_email? %>
2
+ <!DOCTYPE html>
3
+ <html lang="en">
3
4
  <head>
4
5
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
6
+ <meta name="viewport" content="width=device-width, initial-scale=1"/>
5
7
  <title><%= @newsletter.name %></title>
8
+ <link rel="stylesheet" type="text/css" media="screen" href="<%= "/newsletters/#{@newsletter.id}/stylesheet.css" %>"/>
6
9
  <%= render 'newsletter/newsletters/head' %>
7
10
  </head>
8
11
  <body>
12
+ <% else %>
13
+ <!DOCTYPE html>
14
+ <style>
15
+ <%= @newsletter.design.stylesheet_text %>
16
+ </style>
17
+ <% end %>
9
18
  <%= render :inline => File.readlines(@newsletter.design.view_path).join, :locals => @newsletter.locals %>
19
+ <% unless is_email? %>
10
20
  </body>
11
21
  </html>
22
+ <% end %>
@@ -0,0 +1 @@
1
+ <%= @newsletter.design.stylesheet_text %>
@@ -13,6 +13,7 @@ en:
13
13
  name: "Name"
14
14
  description: "Description"
15
15
  html_text: "HTML code"
16
+ stylesheet_text: "Style Sheet"
16
17
  newsletter/element:
17
18
  html_text: "HTML code"
18
19
 
@@ -17,7 +17,7 @@ Newsletter::Engine.routes.draw do
17
17
  end
18
18
  resources :elements, :only => [:edit,:create,:update,:destroy]
19
19
 
20
- match "/:newsletter_id/areas/:id/sort" => "newsletter/areas#sort", :method => :get, as: 'sort_area'
20
+ match "/:newsletter_id/areas/:id/sort" => "areas#sort", :method => :get, as: 'sort_area'
21
21
  match '/newsletters/:id/:mode' => 'newsletters#show', :method => :get, :as => :public_newsletter_mode
22
22
  match '/newsletters/:id/public' => 'newsletters#show', :method => :get, :as => :public_newsletter
23
23
  match '/newsletters/:id' => 'newsletters#show', :method => :get, :as => :newsletter
@@ -0,0 +1,19 @@
1
+ class CarrierWaveForAssets < ActiveRecord::Migration
2
+ def up
3
+ table_prefix = 'newsletter_'
4
+ begin
5
+ table_prefix = ::Newsletter.table_prefix
6
+ rescue
7
+ end
8
+ rename_column :"#{table_prefix}assets", :filename, :image
9
+ end
10
+
11
+ def down
12
+ table_prefix = 'newsletter_'
13
+ begin
14
+ table_prefix = ::Newsletter.table_prefix
15
+ rescue
16
+ end
17
+ rename_column :"#{table_prefix}assets", :image, :filename
18
+ end
19
+ end
@@ -0,0 +1,12 @@
1
+ class AddStylesheetTextToDesigns < ActiveRecord::Migration
2
+ def table_prefix
3
+ table_prefix = 'newsletter_'
4
+ begin
5
+ table_prefix = ::Newsletter.table_prefix
6
+ rescue
7
+ end
8
+ end
9
+ def change
10
+ add_column :"#{table_prefix}designs", :stylesheet_text, :text
11
+ end
12
+ end
@@ -1,45 +1,48 @@
1
1
  ---
2
2
  :name: My Design
3
- :html_text: ! "<style type=\"text/css\">\r\nh1{font-family: Arial Black, Arial, Helvetica,
4
- sans-serif; color: #333333; font-size:22px; margin:0; padding: 0 0 10px 0; }\r\nh2{font-family:
5
- Arial Black, Arial, Helvetica, sans-serif; color: #333333; font-size:17px; margin:0;
6
- padding: 7px 0 0 0;}\r\nh3 {font-family: Arial Black, Arial, Helvetica, sans-serif;
7
- color: #0068b3; font-size:9pt; margin:0; padding: 0;}\r\np {font-family: Arial,
8
- Helvetica, sans-serif; color: #333333; font-size:8.5pt; margin-top:4px; margin-bottom:4px;}\r\np.right{font-family:
9
- Arial, Helvetica, sans-serif; color: #333333; font-size:9.5pt; margin:0 0 15px 0;
10
- padding: 0; line-height:1.2em;}\r\na{text-decoration:none; color: #0068b3;}\r\na:hover
11
- {color: #7fc348;}\r\n.footer {font-size:7pt;}\r\np a {font-size: 6pt; font-weight:
12
- bold;}\r\np.right a {font-size: 7pt;}\r\nhr{color: #7fc348; margin:5px 0; height:
13
- 1px; padding: 0;}\r\n.bullet {color: #7fc348; font-weight: bold; height: 5px;}\r\n
14
- .wrappertable
15
- {\r\n\twidth: 587px;\r\n\tmargin: 0 8px;\r\n }\r\n .leftcoltable {\r\n\twidth:
16
- 227px;\r\n } \r\n .rightcoltable {\r\n\twidth: 347px;\r\n }\r\n .left_col_img
17
- {\r\n\twidth: 220px;\r\n }\r\n .right_col_img {\r\n\twidth: 320px;\r\n }\r\n
18
- \ .right_col_art_img {\r\n\twidth: 174px;\r\n }\r\n@media only screen and (max-device-width:
19
- 600px) {\r\n .wrappertable {\r\n\twidth: 95%;\r\n }\r\n .leftcoltable {\r\n\twidth:
20
- 100%;\r\n }\r\n .rightcoltable {\r\n\twidth: 100%;\r\n }\r\n .left_col_img {\r\n\twidth:
21
- 95%;\r\n }\r\n .right_col_img {\r\n\twidth: 95%;\r\n }\r\n .header_img {\r\n\twidth:
22
- 100%;\r\n }\r\n}\r\n</style>\r\n<center>\r\n<table cellspacing=\"0\" cellpadding=\"0\"
23
- class=\"wrappertable\" width=\"587\">\r\n<tr><td colspan=\"2\" align=\"center\"><%= design_image(\"newsletter_header.png\", width: \"587\", class: \"header_img\") %></td></tr>\r\n<tr
24
- bgcolor=\"#0068b3\" cellpadding=\"2\" cellspacing=\"2\"><td style=\"font-family:arial,sans-serif;font-size:11px;color:#FFFFFF;\"cellpadding=\"2\"
25
- cellspacing=\"2\">&nbsp;Your Tagline or Newsletter Description</td><td align=\"right\"
26
- style=\"font-family:arial,sans-serif;font-size:12px;color:#FFFFFF;\" cellpadding=\"2\"
27
- cellspacing=\"2\"><%= @newsletter.name %>&nbsp;</td></tr>\r\n</table>\r\n\r\n<table
28
- cellspacing=\"0\" cellpadding=\"0\" class=\"wrappertable\" width=\"587\">\r\n<tr
29
- valign=\"top\">\r\n<td><table cellspacing=\"0\" cellpadding=\"0\" class=\"leftcoltable\"
30
- align=\"left\"><tr><td>\r\n<h2>In This Issue</h2>\r\n<!-- Left Column -->\r\n<%=
31
- render left_column %>\r\n<hr />\r\n<h3><%= link_to \"Newsletter Archives\", \"#{::Newsletter.site_url}/newsletters/archive\",
3
+ :html_text: "<center>\r\n<table cellspacing=\"0\" cellpadding=\"0\" class=\"wrapper
4
+ table\">\r\n<tr><td colspan=\"2\"><%= design_image(\"newsletter_header.png\", class:
5
+ \"header_img\", style: \"display: block;\") %></td></tr>\r\n<tr bgcolor=\"#0068b3\"><td
6
+ style=\"font-family:arial,sans-serif;font-size:11px;color:#FFFFFF;\">&nbsp;Your
7
+ Tagline or Newsletter Description</td><td align=\"right\" style=\"font-family:arial,sans-serif;font-size:12px;color:#FFFFFF;\"><%=
8
+ @newsletter.name %>&nbsp;</td></tr>\r\n</table>\r\n\r\n<table cellspacing=\"0\"
9
+ cellpadding=\"0\" class=\"wrappertable\">\r\n<tr valign=\"top\">\r\n<td><table cellspacing=\"0\"
10
+ cellpadding=\"0\" class=\"leftcoltable\" align=\"left\"><tr><td>\r\n<h2>In This
11
+ Issue</h2>\r\n<!-- Left Column -->\r\n<%= render left_column %>\r\n</td></tr></table>\r\n<!--Right
12
+ Column-->\r\n<table cellspacing=\"0\" cellpadding=\"0\" class=\"rightcoltable\"><tr><td>\r\n<%=
13
+ render right_column %>\r\n<hr />\r\n<h3><%= link_to \"Newsletter Archives\", \"#{::Newsletter.site_url}/newsletters/archive\",
32
14
  :target => '_blank' %></h3>\r\n<p>If you missed a previous release or simply want
33
15
  to review an article of interest, all our newsletters have been archived. <%= link_to
34
- \"Read More\", \"#{::Newsletter.site_url}/newsletters/archive\" %></p>\r\n</td></tr></table>\r\n<!--Right
35
- Column-->\r\n<table cellspacing=\"0\" cellpadding=\"0\" class=\"rightcoltable\"
36
- align=\"right\"><tr><td>\r\n<%= render right_column %>\r\n</td></tr></table></td>\r\n</tr>\r\n<%
16
+ \"Read More\", \"#{::Newsletter.site_url}/newsletters/archive\" %></p>\r\n</td></tr></table></td>\r\n</tr>\r\n<%
37
17
  if is_email? %>\r\n<tr><td><hr /><p class=\"footer\" align=\"center\"><font color=\"#aaaaaa\">To
38
18
  remove your address from this newsletter list, please click <%= link_to \"Here\",
39
19
  '#UNSUBSCRIBE_URL##' %>.</font></p></td></tr>\r\n<% end %>\r\n<tr><td><hr /><p class=\"footer\"
40
20
  align=\"center\"><font color=\"#555555\"><b>My Company, Inc.</b> <span class=\"bullet\">&#8226;</span>
41
21
  123 Test Road <span class=\"bullet\">&#8226;</span> Austin, TX 78701 <span class=\"bullet\">&#8226;</span>
42
22
  p:512.555.1212</font></p></td></tr>\r\n</table>\r\n</center>"
23
+ :stylesheet_text: "h1 {\r\n font-family: Arial Black, Arial, Helvetica, sans-serif;\r\n
24
+ \ color: #333333;\r\n font-size:22px;\r\n margin:0;\r\n padding: 0 0 10px 0;\r\n}\r\nh2
25
+ {\r\n font-family: Arial Black, Arial, Helvetica, sans-serif;\r\n color: #333333;\r\n
26
+ \ font-size:17px;\r\n margin:0;\r\n padding: 7px 0 0 0;\r\n}\r\nh3 {\r\n font-family:
27
+ Arial Black, Arial, Helvetica, sans-serif;\r\n color: #0068b3;\r\n font-size:9pt;\r\n
28
+ \ margin:0;\r\n padding: 0;\r\n}\r\np {\r\n font-family: Arial, Helvetica, sans-serif;\r\n
29
+ \ color: #333333;\r\n font-size:8.5pt;\r\n margin-top:4px;\r\n margin-bottom:4px;\r\n}\r\np.right
30
+ {\r\n font-family: Arial, Helvetica, sans-serif;\r\n color: #333333;\r\n font-size:9.5pt;\r\n
31
+ \ margin:0 0 15px 0;\r\n padding: 0;\r\n line-height:1.2em;\r\n}\r\na {\r\n text-decoration:none;\r\n
32
+ \ color: #0068b3;\r\n}\r\na:hover {\r\n color: #7fc348;\r\n}\r\n.footer {\r\n font-size:7pt;\r\n}\r\np
33
+ a {\r\n font-size: 6pt;\r\n font-weight: bold;\r\n}\r\np.right a {\r\n font-size:
34
+ 7pt;\r\n}\r\nhr {\r\n background-color: #7fc348;\r\n color: #7fc348;\r\n margin:5px
35
+ 0;\r\n height: 1px;\r\n padding: 0;\r\n border: none;\r\n}\r\n.bullet {\r\n color:
36
+ #7fc348;\r\n font-weight: bold;\r\n height: 5px;\r\n}\r\n.wrappertable {\r\n width:
37
+ 587px;\r\n margin: 0 8px;\r\n}\r\n.leftcoltable {\r\n width: 227px;\r\n} \r\n.rightcoltable
38
+ {\r\n width: 347px;\r\n float: right;\r\n}\r\n.left_col_img {\r\n width: 220px;\r\n}\r\n
39
+ \ .left_col_art_img {\r\n width: 110px;\r\n float: left;\r\n}\r\n.right_col_img
40
+ {\r\n width: 320px;\r\n}\r\n .right_col_art_img {\r\n width: 174px;\r\n float:
41
+ left;\r\n}\r\n@media screen and (max-width: 600px) {\r\n .wrappertable {\r\n\twidth:
42
+ 95%;\r\n }\r\n .leftcoltable {\r\n\twidth: 100%;\r\n }\r\n .rightcoltable {\r\n\twidth:
43
+ 100%;\r\n\tfloat: none;\r\n }\r\n .left_col_img {\r\n\twidth: 95%;\r\n }\r\n
44
+ \ .right_col_img {\r\n\twidth: 95%;\r\n }\r\n .header_img {\r\n\twidth: 100%;\r\n
45
+ \ }\r\n}"
43
46
  :description: This is the simple newsletter template.
44
47
  :areas:
45
48
  - :name: left_column
@@ -48,28 +51,12 @@
48
51
  :description: This will house the elements of the 'right_column'
49
52
  :elements:
50
53
  - :name: Left Column Article
51
- :description: Article with a heading, an excerpt, and a Read More link
52
- :html_text: ! '<hr />
53
-
54
- <h3>
55
-
56
- <% unless link.url.blank? %>
57
-
58
- <%= link_to headline, link.url %>
59
-
60
- <% else %>
61
-
62
- <%=h headline %>
63
-
64
- <% end %>
65
-
66
- </h3>
67
-
68
-
69
- <p><%= filter(article_excerpt) %> <nobr><%= link_to(''Read More'', link.url) unless
70
- link.url.blank? %></nobr></p>
71
-
72
- '
54
+ :description: Article with a heading, an excerpt, an image, and a Read More link
55
+ :html_text: "<hr />\r\n<h3>\r\n<% unless link.url.blank? %>\r\n<%= link_to headline,
56
+ link.url %>\r\n<% else %>\r\n<%=h headline %>\r\n<% end %>\r\n</h3>\r\n<%= image_tag(image.url,
57
+ {:width=>\"110\", :vspace=>\"5\", :hspace=>\"10\", :align=>\"left\", :alt => image.text,
58
+ :class=>\"left_col_art_img\"} ) unless image.url.blank? %>\r\n<p><%= filter(article_excerpt)
59
+ %> <nobr><%= link_to('Read More', link.url) unless link.url.blank? %></nobr></p>"
73
60
  :areas:
74
61
  - :name: left_column
75
62
  :description: This will house the elements of the 'left_column'
@@ -82,19 +69,25 @@
82
69
  :type: Newsletter::Field::Text
83
70
  - :name: article_excerpt
84
71
  :label: Article Excerpt
85
- :sequence: 1
72
+ :sequence: 2
86
73
  :is_required:
87
74
  :description: ''
88
75
  :type: Newsletter::Field::TextArea
76
+ - :name: image
77
+ :label: Image
78
+ :sequence: 3
79
+ :is_required:
80
+ :description: Should be 110 px wide.
81
+ :type: Newsletter::Field::InlineAsset
89
82
  - :name: link
90
83
  :label: Read More Link
91
- :sequence: 1
84
+ :sequence: 5
92
85
  :is_required:
93
86
  :description: ''
94
87
  :type: Newsletter::Field::InlineAsset
95
88
  - :name: Left Column Image
96
89
  :description: Image that is formatted for the left column
97
- :html_text: ! "<hr />\r\n<p><%= image_tag image.url, {:width=>\"220\", :alt=>image.text,
90
+ :html_text: "<hr />\r\n<p><%= image_tag image.url, {:width=>\"220\", :alt=>image.text,
98
91
  :class=>\"left_col_img\" } %></p>\r\n"
99
92
  :areas:
100
93
  - :name: left_column
@@ -108,7 +101,7 @@
108
101
  :type: Newsletter::Field::InlineAsset
109
102
  - :name: Right Column Article
110
103
  :description: Includes a headline, excerpt, image, and read more link
111
- :html_text: ! "<h1><%= headline %></h1>\r\n<p class=\"right\">\r\n<%= image_tag(image.url,
104
+ :html_text: "<h1><%= headline %></h1>\r\n<p class=\"right\">\r\n<%= image_tag(image.url,
112
105
  {:width=>\"174\", :vspace=>\"5\", :hspace=>\"10\", :align=>\"left\", :alt => image.text,
113
106
  :class=>\"right_col_art_img\"} ) unless image.url.blank? %>\r\n<%= filter(article_excerpt)
114
107
  %>\r\n<nobr><%= link_to('Read More', link.url) unless link.url.blank? %></nobr></p>"
@@ -124,25 +117,25 @@
124
117
  :type: Newsletter::Field::Text
125
118
  - :name: article_excerpt
126
119
  :label: Article Excerpt
127
- :sequence: 1
120
+ :sequence: 2
128
121
  :is_required:
129
122
  :description: ''
130
123
  :type: Newsletter::Field::TextArea
131
124
  - :name: image
132
125
  :label: Image
133
- :sequence: 1
126
+ :sequence: 3
134
127
  :is_required:
135
128
  :description: Should be 174 px wide
136
129
  :type: Newsletter::Field::InlineAsset
137
130
  - :name: link
138
131
  :label: Read More Link
139
- :sequence: 2
132
+ :sequence: 4
140
133
  :is_required:
141
134
  :description: ''
142
135
  :type: Newsletter::Field::InlineAsset
143
136
  - :name: Right Column Headline
144
137
  :description: ''
145
- :html_text: <h1><%= headline %></h1>
138
+ :html_text: "<h1><%= headline %></h1>"
146
139
  :areas:
147
140
  - :name: right_column
148
141
  :description: This will house the elements of the 'right_column'
@@ -155,7 +148,7 @@
155
148
  :type: Newsletter::Field::Text
156
149
  - :name: Right Column Image
157
150
  :description: ''
158
- :html_text: ! '<%= image_tag image.url, {:width=>"320", :alt=>image.text, :style=>"margin:0;
151
+ :html_text: '<%= image_tag image.url, {:width=>"320", :alt=>image.text, :style=>"margin:0;
159
152
  padding: 15px 0 0 0;", :class=>"right_col_img"} %>'
160
153
  :areas:
161
154
  - :name: right_column
@@ -169,8 +162,8 @@
169
162
  :type: Newsletter::Field::InlineAsset
170
163
  - :name: Right Column Paragraph
171
164
  :description: Paragraph with read more link.
172
- :html_text: ! "<p class=\"right\">\n\t<%= filter(body) %> <%= link_to 'Read More',
173
- link.url unless link.url.blank? %>\n</p>"
165
+ :html_text: "<p class=\"right\">\r\n\t<%= filter(body) %> <%= link_to 'Read More',
166
+ link.url unless link.url.blank? %>\r\n</p>"
174
167
  :areas:
175
168
  - :name: right_column
176
169
  :description: This will house the elements of the 'right_column'
@@ -183,410 +176,210 @@
183
176
  :type: Newsletter::Field::TextArea
184
177
  - :name: link
185
178
  :label: Read More Link
186
- :sequence: 1
179
+ :sequence: 2
187
180
  :is_required:
188
181
  :description: ''
189
182
  :type: Newsletter::Field::InlineAsset
190
183
  :images:
191
184
  - :name: newsletter_header.png
192
- :data: ! 'iVBORw0KGgoAAAANSUhEUgAAAksAAABeCAIAAAC8W8dUAAAAGXRFWHRTb2Z0
193
-
185
+ :data: |
186
+ iVBORw0KGgoAAAANSUhEUgAAAksAAABeCAIAAAC8W8dUAAAAGXRFWHRTb2Z0
194
187
  d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2hpVFh0WE1MOmNvbS5hZG9i
195
-
196
188
  ZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2Vo
197
-
198
189
  aUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6
199
-
200
190
  bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2
201
-
202
191
  LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpS
203
-
204
192
  REYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJk
205
-
206
193
  Zi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIg
207
-
208
194
  eG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8i
209
-
210
195
  IHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5
211
-
212
196
  cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5j
213
-
214
197
  b20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRp
215
-
216
198
  ZDowMjgwMTE3NDA3MjA2ODExODA4M0NEQ0E2N0Y3QUVBMiIgeG1wTU06RG9j
217
-
218
199
  dW1lbnRJRD0ieG1wLmRpZDo4NjczRDZEREMxM0MxMUU0ODhBOUI4OUM2MUEw
219
-
220
200
  QzNFRCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo4NjczRDZEQ0MxM0Mx
221
-
222
201
  MUU0ODhBOUI4OUM2MUEwQzNFRCIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQ
223
-
224
202
  aG90b3Nob3AgQ1M2IChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9t
225
-
226
203
  IHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MDM4MDExNzQwNzIwNjgxMTgw
227
-
228
204
  ODNDRENBNjdGN0FFQTIiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MDI4
229
-
230
205
  MDExNzQwNzIwNjgxMTgwODNDRENBNjdGN0FFQTIiLz4gPC9yZGY6RGVzY3Jp
231
-
232
206
  cHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9
233
-
234
207
  InIiPz5DleZ0AAAfOElEQVR42uxdC2wUR5p22Nmzje0Yv2bsMR7jYfwifiY2
235
-
236
208
  5mFhyNrLYRzgQLtcUEJE7jabRIm0nHJ3OmmVKKfTLnfill3pBFn2BJITmYsS
237
-
238
209
  SHjEiIUDDOZpFmPwBoMN2GP8msHGNnbw3CJxf9xkdrarurv6MT3dw/8pikxP
239
-
240
210
  T3VVTVd99dX/1/8/8/jx4wgEAoFAIMIOzyDDIRAIBAIZDoFAIBAIZDgEAoFA
241
-
242
211
  IJDhEAgEAoFAhkMgEAgEIqQM1zvWKX5DRny2cXph3DcyNjUsckN8VNKzkYn4
243
-
244
212
  uiAQCMTTznBAbx+1vSl+z8t5/1ZgXWiQXvj42r923G8SuSEvoerVwvefhhei
245
-
246
213
  t7e3p6eHvJ6amupyubR6SnNzM3kxMzMzIyMDx2QYY3h4eHJygncxKSk5JiYG
247
-
248
214
  OwcRDFhC9eBj3bsMwnDAx+L09lQB6K2xsZG8DnPQe++9FxkZqclTqI+ora1F
249
-
250
215
  hgtv9PXdvX//PvXtCo8G+qbx7LPPalWg1+tNSUnBN0cxZoTqwd6p2+2ec0bo
251
-
252
216
  gpPuPfgeSGJycvL06dPYDwiECBvt3r37yy+/1Ios6+vrt23bhh1rSobjZBwK
253
-
254
217
  OBPh+PHj4+Pj2A8IBIlLly4BG7ndbm3mpd7erVu3dnR0YMeamOFAxp1xH0AB
255
-
256
218
  ZyKcOnUKOwGBIMXWvn37NFv6Hzu2Y8eOyclJ7Fv1sIT28U13Py6z10RaolHA
257
-
258
219
  mQJnz54tLi5GaxkC4RdbQG9asZHX6927d69WQhARYg0HmHw0cqn/KAo4E+HE
259
-
260
220
  iRPYCQgER0jaiq2dO3civYUVw3EyzvfoIQo4s6CjowPWrdgPCMTU1JTGK37c
261
-
262
221
  mQw/hguVjGvznMSfXxk+//xz7AQEAoEMZ1AZN+4bOTfwP/jzK4PX621vb8d+
263
-
264
222
  QCAQyHBGlHGn3Hvxt1eDo0eP+nw+7AcEAoEMZywZhwJOExnX0tKC/YBAIJDh
265
-
266
223
  IlKinMaRcSjgtFmUNDWhjEMgEMhwEdVzXjeIjKMKuIVpf4uvglxgHC8EAmFw
267
-
268
224
  6HTiu8C6MKXb6Z26LSnjFjtW6SzggN4SIm0aPuKz69uueA+JK9qfzf9dUJt5
269
-
270
225
  qPN3PCL/2Qv1KTHp2j7l+PHj8+fP1zDOLAKBQJhPwxlExlEF3BLHOm2fYo+Z
271
-
272
226
  K35DsKNOk82MsSSqzG8nFP0d43ghEIinXcMZRMZRBZzmqU3L7DUtgwfFW3qg
273
-
274
227
  61fZifVBClfW0n+Ed6Uiba3KZ1VVVVFT3hg5jtf4+LjH4xkcHAy8OGvWLIfD
275
-
276
228
  gbqTxNjYmM83xTvFbLFYYmJiYX0Df5ioIZOTE48ePQq8GB8/Kz4+Hn9l8dGR
277
-
278
229
  mppqtVp1Hh1er/fGjRvc31FRUTk5ORpWQNe3FmTcno6fS8q4IEWq1EfAAaDy
279
-
280
230
  ki0NHpeDCL4wwA8CW25frrLY8vLypqYmasyFEydObNy40ThD1+fzXbt27dKl
281
-
282
231
  SyIBkFJSUsqnoSzj3di3GOVdhMFptbJud1Nzgcqahal1UJBNFEoZGhqEWYZH
283
-
284
232
  CWSPJScnszcwJMQm2RBoRXr6bDVU197ePjr6pNv9f/B+WTLBb2VlJbU0oYTD
285
-
286
233
  gSBLKyoqUswBQGxXr15taWmBjhK6B5aAUOHs7Gz1+SC5xwn1BtTh8OHDZAqF
287
-
288
234
  vLy8ZcuWabJu1pXhQMblDVWJx8oK3tSvj4BjF6xB4vLOkSvQh4FXSlLq1DcT
289
-
290
235
  3vXly5dTA6hzcbwMIuOA2I4cOSIZ/QiGFkhS4GzQpkKzj+hkOnrnzh3exejo
291
-
292
236
  aHYCoOYChfmXffKF2XxgYIBkWXaGg166dauLmpKU2mOAzs5OmPiMxnOwprlx
293
-
294
237
  o4OlIVwrEhIS5s51KUu7evnyZfGkNtyrxchwQgmHA0HekJmZqYDhoJeA2CQf
295
-
296
238
  B4ClYUNDA7yNL730ksvlUrnsEOoN6KidO3dSh2rHNEpLS1etWqWSZfU+D7fU
297
-
298
239
  8bLkPcGwxukm4Pyoc70jMb8E54AEmXVvgb1Ok5LLysqE0g0bIY4XDOCPPvoI
299
-
300
240
  OJg9uB/cCcOvvr5e7rEHEFvkxYcPH4rLoEBQp2NGsuEwMTHBWDEqPJ6hS5da
301
-
302
241
  ZD0RAA28fv361att7C0NNhQ0BG6Gr8AXI54aAJ1s376dhd4Cv7Jr165Dhw4F
303
-
304
242
  41AQlClEb360traqP3SrN8NlxGfnJVTpP/XrKeA4uBKLJVva2P0boF4NH9o1
305
-
306
243
  0sYTjo64UuhzrcqvqakRGgyhjeMFFdi6dauyuOywWoTBL7JpQyOSeKEVK+PC
307
-
308
244
  Vog/GGcTuPPBgwe8i3FxcYwLXpjcgagU9zYwhEFI7ubNG9AQZTWBL8LXnwZ6
309
-
310
245
  6+rqAjqR9Yb7cfbs2d27d2tOcp9++inLSjQ1NdVkDBcSGae/gGNvqbbHz8/1
311
-
312
246
  7eddWZyuZTMLCgry8vKoHx09GrIsSCLbHbJKkJXBPCEhgSYKJ9i044Qw+Y0q
313
-
314
247
  5shZsxJYvjs8PKyG3jgAvwLJhZzeyH1aWYCvhz3J9fb2ghRTMzpg4agtyQHj
315
-
316
248
  MqYvV7lHGhqG01/G6S/g2FsK1KuVjINyeDbOGEtigXWhto1atmyZEEmQJnEd
317
-
318
249
  AAPvk08+UZ92BEpoaGhgH8azZlH2A6muB7Jum5hgagiV4VhseCB3Ojqua9Lz
319
-
320
250
  QHJud0+oJm6QoSrpzU9yYbxdCaOyvr5efTlAcgcOHNCqVgcPHmS5rbS0VP2z
321
-
322
251
  QuMBDOJGMjcbyLhCW6V6HgqVgOOwOuedjgsSLd1/879eLXw/GEReNftV7Wk7
323
-
324
252
  IwNkHHUJ1tTUpNg7Uc12h/j2C9TW6XwSNO727dsii0cYxqdPn66urmZ5LtXi
325
-
326
253
  xWgNoprQviM/phKot7EwXH9/n8ieXnR0dOw0/PUEPHz4UEQf2O3p+h8kgOWI
327
-
328
254
  uAwNbMjU1BQsKURaAUVxJyLCjN5gubZ3717xxZ9/dEAv9ff3i4yO1tbWrKys
329
-
330
255
  srIyTXiX5TZ4nFkZjhM3kk6VMGXXZf/EpAKOAzwIHice6Bn6oXesU6W1zPfo
331
-
332
256
  IfkUWCIEo1Fr1qzZsmULdd5paWlR4JqoGO3t7SJjsra2lse4UDfOo0zo5MPx
333
-
334
257
  48dzc3NZ/EKF6ASKFZ8rgWBEZlvSukYtgWqEY2Eaoey1aWlpmZlzqKsT0Iu3
335
-
336
258
  bnVRKwY1GRkZ1t+18sYNwR8d+gEakpSURLaip6dbaAkCDSwqKmZ59IoVK/zb
337
-
338
259
  GENDQ6R3scPhWLlyZeCVqKgoodKKiooyMzP9/9yxYwd5z1tvvUWuMlmqCu+5
339
-
340
260
  kGUaXtGqqipyPTo+Pn7x4kUYBdRvHTlyRNvDauKAZ5mV4RhlHEzZILbUsFFo
341
-
342
261
  BZz/cZKpDE6696iUceSmbvCIHF7xRYsWnT17lvyosbFRzWEduRAy/sEAfuON
343
-
344
262
  N6ienzCkgeeAxmB5Sx3/7Mf7EhISyBlzbGxUnOEkvVHgBnE1ptgINzw8TBVw
345
-
346
263
  +fn5IiwFlXn++ReEjF737t3TmeE8niGhdQDwdE5OrlArgMNAwnZ2dlLFNxTL
347
-
348
264
  0hAhd2I/Zs6cyX5y5tlpSO6aKJn6xseFPCeBgzds2EB9Llysrq6G0VFfX08u
349
-
350
265
  AeHKqVOn6urqNPw1Oa7lJg1YfcKvA4MaRB70sybTSMiy57DYqCJUO2KEVsD5
351
-
352
266
  ZdyLGX8vfg8n49Q8pWWQv7VdYa8NIm0vWRLyOF4g4KjbHSL0FjhPbdq0iXoP
353
-
354
267
  d7yPpQLKTHGS3iiSziaKjXDURwMrsMzsTufc6OhoxTtOGqK7u1suvflht6cD
355
-
356
268
  nVM/unv3bkQYQWgYAr3Bmy9OHsCpMIKoAxzWtbIcsiTpDR4EK06uPrD6LCgo
357
-
358
269
  2Lx589q1a4Xctk3DcBFsroZqHDGMIOCebI5lrImxSNDq3hv/oXyu95zjHRKA
359
-
360
270
  1YPmcZZ5az1YeVE/gjGgz6wnJOAk6c0v5l555RXqR+fPn2epANUUJ2JjY6RA
361
-
362
271
  hhIUGuGoj05Pn82022OxzJkzR5kq1RAgQ6l7vKCnJemNA9A5cCF5HXShen8l
363
-
364
272
  gwDEUFtbG5VRQL2xWMphBK1fv5760cWLF7Wqp9BQLSsrA6ozPcMFW8YZQcA9
365
-
366
273
  mUwt0ZJOH2rCMbcO8ef6UltNsBtVXl4uJOMOHz4c7KdzwSnI67W1tSz05h/G
367
-
368
274
  cD+lP1tbWZwqqaQC86/4dyW9USRvUGyEE1pHM94pJPV8vindhtLQ0CCVfXNz
369
-
370
275
  89gLAT1K7a6+vjCRcZ2dnVS2Xr16NfvWn8vlonozXrt2TZNKLlq0iH2ompLh
371
-
372
276
  girjjCPgnqxK7DWSMo4MR8KC3rFOnkUzJcqp+SEBqgZavpwe7pJ9o08xhJao
373
-
374
277
  wLtyeVpojmD5OvVUnIgIY1EJ4ue+1ZyEUw+yvdSty6CubChr5YwMWR68QG9U
375
-
376
278
  4xbjYQ/jg+poCnQiVxgtXbqUfXEpF0uWLNGhK0LMcCDjSlKk7ZYKZJxxBJxf
377
-
378
279
  xq1y/YOkjDvjln3opM1zkj9rp76kE20Lx/H66quvgvrorq4u8mJFRYXcswpw
379
-
380
280
  P3WhKmTsIahlFiMJfffRKAtDiHAk1UqnJpTw8PAw+83Jycnwi2dlZRUUFJaV
381
-
382
281
  lVdVLZ0/v0I3TxOhqtpssiNfUL8C+js8NipbW1vJiwosWynTIK/7UwEohlaO
383
-
384
282
  JEZnOMBy52uayzijCTgO34ZjjnKK3yM3mAu1paAXdWuU0LBxu93Bi+MFEofq
385
-
386
283
  Bpmbm6ugNKrrAaOGEzDFCXr8k9QFHBkXF8fOkVSdoYbhenq62aNe2e3p8+Y9
387
-
388
284
  53BkJiUl6X+AjOopwx6rjLeyoa4tGGPKGBlC2yfZ2UrOIxUWFpIXb9++rbKS
389
-
390
285
  yipjSobjToxpK+OMJuD8kEwDKzeYy7WhZrKlQUo7R6ftUMTx8ng89C0BRX7V
391
-
392
286
  NpuNuhWj2BQnYkgj+Sk2NpY8LyXCkWTh7Ea42Ng48iIXf0tPbxHFoLI7yEpl
393
-
394
287
  pVH1t6Sbj/ExNEQJ0eJwOJSFYqC6F6m3QagPOGkahmNUV+wyzpgCzi/jJJ1r
395
-
396
288
  2GUc3AY3h7yl+sfxoqbUEiJalg0TWTzKA9UURyUM6lnvmJg/xxCR5EhqsexT
397
-
398
289
  fGwsXXUByV250go85/EMGSdpALWe5EXoQGWlUQ9i8xLAmhG8pKYcZs+eraw0
399
-
400
290
  q9VKE9OTKsNUUpeVYctw2so4wwo4DpLONSDjjt75hKUoMhUc0Kf+LeXieNHZ
401
-
402
291
  uqkpGKk3qNNQYqLyhsMKl5FOGKUAdbOLauOJ/xasxjwBIxxrxpzExCSRT4FW
403
-
404
292
  r1+/fuHC+Zs3b8gyzukGKvsqdiKl9htLTBmDY2RkhPEtZZqcBaxljOs/WcQZ
405
-
406
293
  DBglMz1L4A+WECdGFnBP+IAhYhljMBfS93Jh+uqQNErnOF79/f3Uga1YMlKP
407
-
408
294
  WDF61rGfiiP5idN/VIPW5OQEuQWq0ggHZJCWliYesBhYZGAacDOo26SkZChf
409
-
410
295
  /8iT7AsO6FVlxjPqOsnIEpYR1NWJesuZttAteq1RGI4lfiOnz8QjVRpcwHH4
411
-
412
296
  a+ffdfyhSWVLe8c6eae8U6KcrsTi0Px8BojjxeUF1r/t7KY4mhEujiOe6Oho
413
-
414
297
  HsvCzXZ7umSx1D1SEWRmzmEMye+nuojpjVybLZUM9mgEkMnWn3JQXfk1Hx09
415
-
416
298
  PT3KzN46Y4ZxqqLeGmd8AfeEimLSJXdloSHicbzO9x/iXamcvT6UP5+Ocby+
417
-
418
299
  +eYbHVrEfjqKpBnqmTZyB8zPjuQmEqkCqZuccnefYO2swI1tOsPttTNnmkEK
419
-
420
300
  BGPb2VAwhdONqaHYZG5uhlNvjTOFgGPn3ZPuPSJcfsX7FwwXY0kstC4O5c+n
421
-
422
301
  YxwvZbm85YJqz6CCxRQH/ETugPl9TEhnEzI2ikojnB8gDalhq1hUXW+v+/z5
423
-
424
302
  c19//Uf9eU7PyCmIsMEMQ9VGjYwzi4Bjp3ORcMwkl1ekrdXzkAAVoY3jFUII
425
-
426
303
  mOIm/5Lh+JrMYrH4rREsxjwNT8Ll5OSqSb4F6xXgOZ0Th4aBlyPiaWc4NTLO
427
-
428
304
  RAKOQ03WK5JxvKgyzvfo4VXv7/nsYl8e8haFNo5XSBmOQjO8+MgkPwXubcLK
429
-
430
305
  gPTm4JGieiNcIByOzJKSUjUlXL9+PYQ5vhEI8zGcYhlnLgH3hA8YwjGDjCPD
431
-
432
306
  MV/znOEdEihJqTMIl4cwjldoQVLFgwcPArclSbsab2eSjGwSSIrUTU7FLuB+
433
-
434
307
  Yi4qKgaeU7ZpGTHt5WHMcwUIxJOdEqNVSJlTpekE3BM+sNc03f2YR1c8HOve
435
-
436
308
  xQuj3Hz3U949C+x1xmlUTU1NQ0MDeZ2L46VVUgwSixYtUjnjq+EPuJnUWEBL
437
-
438
309
  nLyjZuXm7UySJQT+UysjHJXnAE7nXI9naHBwUO6BsI6O6xUVC3Q4TkA9oB0d
439
-
440
310
  Ha15dAyRlNzmBTWHhhoEpiZHhpM5RWa9ctX7e/F5Hyiw2Lo0Iz7bpALOL+N+
441
-
442
311
  OOenX3T9UuQeLquOn+TIVHApUU6uHwwCLo4X1TX56NGjmjCcw+EgnU2Ki4tD
443
-
444
312
  6L4scGp7lGM4qhskz2ZJLQG+yN2meThK/kRgsdjt6fCfz+cbHr7HTnVA3kCN
445
-
446
313
  5MEG7QdLZBSVjRwOc0y1oUV5ebluR9AMhRkGrBPL9l1EgI3KpALuOxlXLRmO
447
-
448
314
  +UDXr/xxvMhUcJKxLvVHsON4zZw5k0YnoXTyFjDFjQopMDKYJLUE/xe1NcKJ
449
-
450
315
  Ekkk0NXzz7+weHFlfn4+SwavEGbHDoMQJPpAZQgSZDjN533pbGqcq6F5BRw7
451
-
452
316
  RfnDMXsn+3jBUKCXdEgFJxf6x/GKMEByL6opjvtD0gjnpz3eFe6LwTDCsag6
453
-
454
317
  q9U2b95zCxYszMrKEskDJ5n0Vav6UBUkshe5w0FeDPtTjCZjOHYZZ2oBxwEo
455
-
456
318
  yhFXKn4PF475Qn8j7zpLL4UEa9asobP1dBwvlYU7nRTVyxiqI3ggKQfmX25/
457
-
458
319
  kpo0h1ZCApW2qVljkpKSdRqMkZEOR+b8+RUiDik6uPILHUTBA9osOxzUcMzI
459
-
460
320
  cCaQcWYXcBxqnT+VlHFH73xCNrbQVmnMFnFxvKgfNTY2qiyc6gtw8+bN0DZZ
461
-
462
321
  wJA2IZRSgFZCPFUekfIUBI3+6dlycnKFNi31SatG1ZFU+n+aQV3/GS0upW6w
463
-
464
322
  GLZmnIxr7P6NrG+ZTsBxYAzHbK7GLlmypK2tLRhJk6mpN+BBXq+XxW7EA1DI
465
-
466
323
  hx9+GDEdTCgxMRHUVWZmJpCo3KKETHHf+56FUZFQty5B/4mfpWMEJyiBD6am
467
-
468
324
  fBMTD7jDDCUlpbLcVebOdWkbnkYWoH/ItQKoE2V+LjDp9/a6gTXht4YfHf4f
469
-
470
325
  GRlFPZhoLlC3Bzo6OuA9V+BsAj/3tm3boFsyMjLsdjv0EowOeGf0ydAdzgwX
471
-
472
326
  weZMHwYCjsNSx8viDEei2LrUyC3i4nipV2yUBYGAzyQQanV1tdzS/Om8ef6f
473
-
474
327
  H3zwgdwZIS4ujuf7APxEKk4hfuIST/Mm8aGhQXJaV2CEu3q1jfTL8Ht7sq47
475
-
476
328
  aTXUc+4m+RUapWzuvnfPy6lkgN+RJy0tDaSqqRmOaofj3nMFnswwprjlIy92
477
-
478
329
  8y9+8QtT9MYMI1eO0RpndgHnl3ElKTKOtTniSg11SIAKkTheKlFaSrFcXrhw
479
-
480
330
  QYFFnZqLHAScgkmTNKTB/Hvv3j12fiI/omomBSfhqFu7ClJah1DiCLUaFgFy
481
-
482
331
  ixoeHqbyNFVGmwuwsqRuP1Dfc8ntDRhT5HU9QyeHM8NFsFnjwkDAcVjufI39
483
-
484
332
  5sXpZjjwJxzHSyWoYRUVuLG0t7dTKURBAP4IgY1KUjmJpKVmmWGVGeGoJUPb
485
-
486
333
  5bojaptoWxag1VRTXG9vr9yVTV8f/YSDbv47QUVhYSH1t4a3XVY5MJqoVoZ5
487
-
488
334
  8+Yhw+kt40wt4J4svtjCckZMn/I24CEB+hpFOI6X5mM4YtqNhd1QBNOi0MJW
489
-
490
335
  2SqVccdP5DYWcabsJJzQ3N3f3ydL+rALxGAgOZnyLgFJ37rVxV4INJmawC8u
491
-
492
336
  Lk79sWjN46+Oj4/L/UpxMT1P5P79+9mXAvDcpia63SQnJwcZTm8ZZ3YB528F
493
-
494
337
  S2PLU18yUaNqamqCoQ6FfDV37tzJOIyB3qh0CJTscrkU1ArUFXmmjQdQISIb
495
-
496
338
  fSyeDspOwgmVDDMyuzdQT0+3VppSGdLT6U4l8DvevHmDpQRorFDSVE0CgEH5
497
-
498
339
  2h4+U3BYG15gqjUO6rZ7927G6jU0NFBfDFj8mcXNxBwMxyLjwkDA+WUci2YF
499
-
500
340
  1jdRo7g4XpoXK7RQhWG5fft2SSV36NAhalLyiGnzoeJakaY4HiT3ISU5UnE4
501
-
502
341
  yrQ0O1UAXbnSykJyQCHULcpgaHSRlY3QsbyBgQFJkoNmQmOpG7PcCXdNKqnA
503
-
504
342
  4iWCY8eOKaDMykr6OSK32y1JcvDpZ599JpSFUWhliQynSsaJh7YKDwHHqFmB
505
-
506
343
  zkOeCk4uhOJ4qUFGRobQYAN6AyXX3NxMHcnwaX19vRC9gRxRw3CSG5WSCkz8
507
-
508
344
  BjWCSUgAcSTX398nZJMbGxu7erVN6Ey9zZaq57uUmTlH6COo4eXLfxA6Aw4N
509
-
510
345
  FKI37nWS60Qj5NMLr9a2bdtgCdX8HRgLpAovYJqtW7cGlsaybwnLSiGnSq5A
511
-
512
346
  IZscaHqgwNbWVqEaKtveCBXMcfIDJvTqOa/v6fh5eAu4QM0qchCwwl5rukZx
513
-
514
347
  cbyo4ZjVoKamRujIHVxsbGxsamoCqccdcYOJb3R0FAa2eIrw1atXqzHGSDKc
515
-
516
348
  pFOGuERTE46SE0BUooJ5v7Oz886dO1A+qEyoJEz33OG50dH7IuEf4X4NA0Az
517
-
518
349
  tiIrK0topxGqCjQGOjg5OZk74gY/+9TUlLhPTXR0tLbBo73T8P+zqKiIZWeP
519
-
520
350
  Go6Ee5kDF2TwPrP4/a9btw6IVqjAhoYGEN/Z2dmpqak2m21oaAhGR1dXl/jo
521
-
522
351
  WLlypblmHtOcbSywLkzpdvLC6oefgOOw2LGqZfAgtbF5CVUpMelmbNSaNWu2
523
-
524
352
  bNmi+WS3fv36Xbt2iexKCWk1KoCGVWY/4ExxIpTAQIExaiSgpAASmevhOm9q
525
-
526
353
  lsTcuSFY0TscmTAdU71F/DwnKyhzbm6eslMQjOs2WF2xMJzT6WQpjTEEKxDY
527
-
528
354
  2rVr9+3bx0jDknjxxRdDmL5DGWaYqK7UCMVhJuDEG/tte9NXm7RFInG81MDl
529
-
530
355
  cm3YsEGjedMBfKm+HBFTnKSNLULKXUVlTjhYEyg7CEEFFKV/8DAO8+Y9x9KZ
531
-
532
356
  LABFqFiGMvrN9/QwJUNnTLrGHoK1rKxMq0EHo0NBOAVkOJkyjrDGhZ+AE2ks
533
-
534
357
  XHElFpu3UUuWLAnGhAiqC9aqKguBBe+6des0yaElMl1K+qGI3xYdHa2+A61W
535
-
536
358
  W0aGQ30z09LSdEgLJ7IOKCoqVk9y0Ao1GeYKCwtZfhHGyNQiSTkCISuvel1d
537
-
538
359
  nXqSA3rbtGmTGeecGeaqLk/ZhKuA45Aex18eVs5eb+oWcXG8glEyrFVBySme
539
-
540
360
  /WFaefvtt7XyCRRhuNhYphoK3aZVxhyn06lSycHXQx7diiM5NYbJ/Px8la3g
541
-
542
361
  9sklb+vv72cscMWKFZKvsbipjEpyanJ8A0ECvZk0garJGI6nbMJVwEVMJy6/
543
-
544
362
  4j0UeCXGklhoXWz2dgUvjhcouXfffVfusQSoDAz+jRs3ajiARbYZGfcYhW7T
545
-
546
363
  MCccyK+SklKRrG9CgKaVlZWHUL2RJAd0K9eKBrwIrdDkeIDL5Xr99dfF32r2
547
-
548
364
  Y+CwzHrjjTckF1tyj4FXVla+9dZbQt6VIqMDmgYEad784EHxNImPSspLqApS
549
-
550
365
  jetc75zr2//tOjS+RCsBZ4vNFK+wPVbvCJBk3ruilB/qcEggNTU1qEHnYKis
551
-
552
366
  Xr368uXLwZi+QSMCV8Fs0tbWJulgApNI+TSCMXqhG6lzLuOz4DaoHukPotII
553
-
554
367
  R2rN+fMrPJ6hwcFBEa+NwB6z2VKTkpIUP5H6E6uP+AV0C1wFDbl7965kVGho
555
-
556
368
  RXr6bG39P4Hk3nvvvZZpUH03ZDloQA03b97c3t7e3NxMlWtAVApOyEEd3nzz
557
-
558
369
  za6urtZpiN8MjwBShKWDytEB/UzOJ3a7XbeJ9JnHjx9HIAwG36OH/3lxIy+p
559
-
560
370
  wj9XfBbGW7La96HP5/F4enp6RkdHR0b+3JNOpxPmWZvNpuc5ZeMD2HRsbGz6
561
-
562
371
  eMBUoNEoahrArGZJKwO/O3c8INDhkGsFUClMuMFuBffi+f9ptVpVkkSg/tMq
563
-
564
372
  bQ1UEoqFlc3AwEDgmoAbHUBvJopaggxnPpxxH+CdhytJqftR/mbsGQQCgWDH
565
-
566
373
  DOwCA6Lp7se8KwvsddgtCAQCgQxnbrR7zvH2J1OinMZPBYdAIBDIcAgJHOvm
567
-
568
374
  R+gQOv2NQCAQCGQ406B3rJMXrCvGkpidWII9g0AgEMhw5sZJ9x7elYq0tabL
569
-
570
375
  JIBAIBDIcAi+gOu4z0+qW25fjj2DQCAQyHDmRuPt3/KuhHdYMgQCgUCGeypw
571
-
572
376
  xn3A/YAfaCCMw5IhEAhEsGHBLggeesc62zwn708NdNxvcsSVJkal5yctKLAu
573
-
574
377
  JO9s95wjU56igEMgEAg1wJgmwcL/3tlzvPe/yespUc51uf8UeL7tUv+xL7p+
575
-
576
378
  ybstxpL4zgu/RYZDIBAIZDhjgQy7RfJcUvS3wViHH/ZSc3n/jetfyuzV2JMI
577
-
578
379
  BAKBDGcgjPtG/v3Cj9SUkJdQ9Wrh+9iTCAQCoQboaaI9bg5fVvP1GEvij/P/
579
-
580
380
  EbsRgUAgkOEMB9+jb9TQ20+Kf41HvBEIBEI9nol48yD2grZYWdJanH9SwRf/
581
-
582
381
  9KeZX5z8cde9BOxDBAKBQA1nRLg9SjLYIr0hEAgEMpzRca3f5rk3V9ZX4P7t
583
-
584
382
  BzchvSEQCISGwF3KoCAm8v9e+8GXs+L7WKTb+bYfnO50YachEAgEMpxpSG5p
585
-
586
383
  /h/nuS5+//t0x5PJb5K+7io72+Wa9P0VdhcCgUAgw5mP5553uFMS7iXGe7gr
587
-
588
384
  I2PWB5PPtrszBx7EYP8gEAgEMhwCgUAgEPKAniYIBAKBCE/8vwADAM6L1SQ4
589
-
590
385
  rsO3AAAAAElFTkSuQmCC
591
-
592
- '