From bfa4ec9e3d88d5000754509dea7f4256dd300cfc Mon Sep 17 00:00:00 2001 From: Ben Ford Date: Sat, 30 Nov 2019 13:12:57 -0800 Subject: [PATCH 01/46] Add a dev mode feature flag and some starter classes Invoke showoff with `--dev` and it will load the dev codebase. It should not otherwise change behaviour. The only implemented command right now is `static`. ``` $ showoff --dev static ``` See #913 for plan. --- bin/showoff | 13 ++++++++++--- lib/showoff/compiler.rb | 5 +++++ lib/showoff/compiler/forms.rb | 3 +++ lib/showoff/compiler/i18n.rb | 3 +++ lib/showoff/config.rb | 3 +++ lib/showoff/presentation.rb | 3 +++ lib/showoff/slide.rb | 3 +++ lib/showoff_ng.rb | 11 +++++++++++ 8 files changed, 41 insertions(+), 3 deletions(-) create mode 100644 lib/showoff/compiler.rb create mode 100644 lib/showoff/compiler/forms.rb create mode 100644 lib/showoff/compiler/i18n.rb create mode 100644 lib/showoff/config.rb create mode 100644 lib/showoff/presentation.rb create mode 100644 lib/showoff/slide.rb create mode 100644 lib/showoff_ng.rb diff --git a/bin/showoff b/bin/showoff index 2056044c2..3d8b4ee76 100755 --- a/bin/showoff +++ b/bin/showoff @@ -1,7 +1,7 @@ #! /usr/bin/env ruby $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', 'lib') -require 'showoff' +#require 'showoff' require 'showoff/version' require 'rubygems' require 'fidget' @@ -28,7 +28,7 @@ module Wrapper The simplest use case is to run `showoff serve` from the directory containing the showoff.json file. desc - + switch :dev, :desc => "Use the next-gen development version of Showoff" desc 'Create new showoff presentation' long_desc 'This command helps start a new showoff presentation by setting up the proper directory structure for you. It takes the directory name you would like showoff to create for you.' @@ -338,8 +338,15 @@ module Wrapper pre do |global,command,options,args| # Pre logic here - # Return true to proceed; false to abourt and not call the + # Return true to proceed; false to abort and not call the # chosen command + + if global[:dev] + require 'showoff_ng' + else + require 'showoff' + end + true end diff --git a/lib/showoff/compiler.rb b/lib/showoff/compiler.rb new file mode 100644 index 000000000..b170b96ed --- /dev/null +++ b/lib/showoff/compiler.rb @@ -0,0 +1,5 @@ +class Showoff::Compiler + require 'showoff/compiler/forms' + require 'showoff/compiler/i18n' + +end diff --git a/lib/showoff/compiler/forms.rb b/lib/showoff/compiler/forms.rb new file mode 100644 index 000000000..19ee15f24 --- /dev/null +++ b/lib/showoff/compiler/forms.rb @@ -0,0 +1,3 @@ +class Showoff::Compiler::Forms + +end diff --git a/lib/showoff/compiler/i18n.rb b/lib/showoff/compiler/i18n.rb new file mode 100644 index 000000000..8ae5de730 --- /dev/null +++ b/lib/showoff/compiler/i18n.rb @@ -0,0 +1,3 @@ +class Showoff::Compiler::I18n + +end diff --git a/lib/showoff/config.rb b/lib/showoff/config.rb new file mode 100644 index 000000000..ac83de34d --- /dev/null +++ b/lib/showoff/config.rb @@ -0,0 +1,3 @@ +class Showoff::Config + +end diff --git a/lib/showoff/presentation.rb b/lib/showoff/presentation.rb new file mode 100644 index 000000000..a61469cc4 --- /dev/null +++ b/lib/showoff/presentation.rb @@ -0,0 +1,3 @@ +class Showoff::Presentation + +end diff --git a/lib/showoff/slide.rb b/lib/showoff/slide.rb new file mode 100644 index 000000000..5c9cf135e --- /dev/null +++ b/lib/showoff/slide.rb @@ -0,0 +1,3 @@ +class Showoff::Slide + +end diff --git a/lib/showoff_ng.rb b/lib/showoff_ng.rb new file mode 100644 index 000000000..420df5827 --- /dev/null +++ b/lib/showoff_ng.rb @@ -0,0 +1,11 @@ +class Showoff + require 'showoff/config' + require 'showoff/compiler' + require 'showoff/presentation' + require 'showoff/slide' + + def self.do_static(args, options) + puts 'Hello world!' + end + +end From d84669049743b6d77d9028425a908d66d58abb0c Mon Sep 17 00:00:00 2001 From: Ben Ford Date: Mon, 2 Dec 2019 23:39:12 -0800 Subject: [PATCH 02/46] Barebones presentation render This will take a `showoff.json` and render each slide into the html content of a presentation. This is just content, not the slide transitions or the document generation, or any of the special Showoff markdown extensions. In short, it's not useful yet, it's just a proof of concept. Run `showoff --dev static` to see it in underwhelming action. It just dumps the rendered HTML and then a quick tree of the sections & slides. --- bin/showoff | 5 + lib/showoff/config.rb | 154 ++++++++++++++++++++++++++++ lib/showoff/presentation.rb | 14 +++ lib/showoff/presentation/section.rb | 43 ++++++++ lib/showoff/presentation/slide.rb | 21 ++++ lib/showoff/slide.rb | 3 - lib/showoff_ng.rb | 12 ++- 7 files changed, 248 insertions(+), 4 deletions(-) create mode 100644 lib/showoff/presentation/section.rb create mode 100644 lib/showoff/presentation/slide.rb delete mode 100644 lib/showoff/slide.rb diff --git a/bin/showoff b/bin/showoff index 3d8b4ee76..4fcd36a8d 100755 --- a/bin/showoff +++ b/bin/showoff @@ -343,6 +343,11 @@ module Wrapper if global[:dev] require 'showoff_ng' + + if options[:file] + root = args.first || '.' + Showoff::Config.load(root, options[:file]) + end else require 'showoff' end diff --git a/lib/showoff/config.rb b/lib/showoff/config.rb index ac83de34d..03cc3305e 100644 --- a/lib/showoff/config.rb +++ b/lib/showoff/config.rb @@ -1,3 +1,157 @@ +require 'json' + class Showoff::Config + def self.keys + @@config.keys + end + + def self.get(setting) + @@config[setting] + end + + def self.sections + @@sections + end + + def self.root + @@root + end + + def self.load(root, path) + @@root = File.expand_path(root) + @@config = JSON.parse(File.read(File.join(@@root, path))) + @@sections = self.expand_sections + end + + # Expand and normalize all the different variations that the sections structure + # can exist in. When finished, this should return an ordered hash of one or more + # section titles pointing to an array of filenames, for example: + # + # { + # "Section name": [ "array.md, "of.md, "files.md"], + # "Another Section": [ "two/array.md, "two/of.md, "two/files.md"], + # } + # + # See valid input forms at + # https://puppetlabs.github.io/showoff/documentation/PRESENTATION_rdoc.html#label-Defining+slides+using+the+sections+setting. + # Source: + # https://github.com/puppetlabs/showoff/blob/3f43754c84f97be4284bb34f9bc7c42175d45226/lib/showoff_utils.rb#L427-L475 + def self.expand_sections + begin + if @@config.is_a?(Hash) + # dup so we don't overwrite the original data structure and make it impossible to re-localize + sections = @@config['sections'].dup + else + sections = @@config.dup + end + + if sections.is_a? Array + sections = self.legacy_sections(sections) + elsif sections.is_a? Hash + raise "Named sections are unsupported on Ruby versions less than 1.9." if RUBY_VERSION.start_with? '1.8' + sections.each do |key, value| + next if value.is_a? Array + path = File.dirname(value) + data = JSON.parse(File.read(File.join(@@root, value))) + raise "The section file #{value} must contain an array of filenames." unless data.is_a? Array + + # get relative paths to each slide in the array + sections[key] = data.map do |filename| + self.path(filename) + end + end + else + raise "The `sections` key must be an Array or Hash, not a #{sections.class}." + end + + rescue => e + logger.error "There was a problem with the presentation file #{index}" + logger.error e.message + logger.debug e.backtrace + sections = {} + end + + sections + end + + # Source: + # https://github.com/puppetlabs/showoff/blob/3f43754c84f97be4284bb34f9bc7c42175d45226/lib/showoff_utils.rb#L477-L545 + def self.legacy_sections(data) + # each entry in sections can be: + # - "filename.md" + # - { "section": "filename.md" } + # - { "section": "directory" } + # - { "section": [ "array.md, "of.md, "files.md"] } + # - { "include": "sections.json" } + sections = {} + counters = {} + lastpath = nil + + data.map do |entry| + next entry if entry.is_a? String + next nil unless entry.is_a? Hash + next entry['section'] if entry.include? 'section' + + section = nil + if entry.include? 'include' + file = entry['include'] + path = File.dirname(file) + data = JSON.parse(File.read(file)) + if data.is_a? Array + if path == '.' + section = data + else + section = data.map do |source| + "#{path}/#{source}" + end + end + end + end + section + end.flatten.compact.each do |entry| + # We do this in two passes simply because most of it was already done + # and I don't want to waste time on legacy functionality. + + # Normalize to a proper path from presentation root + filename = self.path(entry) + # and then strip out the locale directory, if there is one + filename.sub!(/^(locales\/[\w-]+\/)/, '') + locale = $1 + + if File.directory? filename + path = entry + sections[path] ||= [] + Dir.glob("#{filename}/**/*.md").sort.each do |slidefile| + fullpath = locale.nil? ? slidefile : "#{locale}/#{slidefile}" + sections[path] << fullpath + end + else + path = File.dirname(entry) + + # this lastpath business allows us to reference files in a directory that aren't + # necessarily contiguous. + if path != lastpath + counters[path] ||= 0 + counters[path] += 1 + end + + # now record the last path we've seen + lastpath = path + + # and if there are more than one disparate occurences of path, add a counter to this string + path = "#{path} (#{counters[path]})" unless counters[path] == 1 + + sections[path] ||= [] + sections[path] << filename + end + end + + sections + end + + def self.path(path) + File.expand_path(File.join(@@root, path)).sub(/^#{@@root}\//, '') + end + end diff --git a/lib/showoff/presentation.rb b/lib/showoff/presentation.rb index a61469cc4..d5b711767 100644 --- a/lib/showoff/presentation.rb +++ b/lib/showoff/presentation.rb @@ -1,3 +1,17 @@ class Showoff::Presentation + require 'showoff/presentation/section' + require 'showoff/presentation/slide' + + attr_reader :sections + + def initialize(options) + @sections = Showoff::Config.sections.map do |name, files| + Showoff::Presentation::Section.new(name, files) + end + end + + def render + @sections.map(&:render).join("\n") + end end diff --git a/lib/showoff/presentation/section.rb b/lib/showoff/presentation/section.rb new file mode 100644 index 000000000..fc429660d --- /dev/null +++ b/lib/showoff/presentation/section.rb @@ -0,0 +1,43 @@ +class Showoff::Presentation::Section + attr_reader :slides, :name + + def initialize(name, files) + @name = name + @slides = files.map do |filename| + # Files might define multiple slides + getSlides(filename).map do |content| + Showoff::Presentation::Slide.new(name, content) + end + end + @slides.flatten! + end + + def render + @slides.map(&:render).join("\n") + end + + # Gets the raw file content from disk and partitions it by slide markers into + # raw content for each slide. + # + # Returns an array of strings + # + # Source: + # https://github.com/puppetlabs/showoff/blob/3f43754c84f97be4284bb34f9bc7c42175d45226/lib/showoff.rb#L396-L414 + def getSlides(filename) + content = File.read(File.join(Showoff::Config.root, filename)) + + # if there are no !SLIDE markers, then make every H1 define a new slide + unless content =~ /^\\n# ") + end + + output = [] + until content.empty? + content, marker, slide = content.rpartition(/^?/) + output.unshift marker+slide + end + + output + end + +end diff --git a/lib/showoff/presentation/slide.rb b/lib/showoff/presentation/slide.rb new file mode 100644 index 000000000..c37dc3684 --- /dev/null +++ b/lib/showoff/presentation/slide.rb @@ -0,0 +1,21 @@ +require 'tilt' + +class Showoff::Presentation::Slide + attr_reader :section, :markdown + + def initialize(section, content) + @section = section + @markdown = content + end + + # This is where the magic starts! + def render + # add the real slide rendering logic here + Tilt[:markdown].new(nil, nil, @engine_options) { @markdown }.render + end + + # this is a terrible implementation! + def name + @markdown.split("\n").find {|line| line.match(/^#/) } + end +end diff --git a/lib/showoff/slide.rb b/lib/showoff/slide.rb deleted file mode 100644 index 5c9cf135e..000000000 --- a/lib/showoff/slide.rb +++ /dev/null @@ -1,3 +0,0 @@ -class Showoff::Slide - -end diff --git a/lib/showoff_ng.rb b/lib/showoff_ng.rb index 420df5827..59d836c35 100644 --- a/lib/showoff_ng.rb +++ b/lib/showoff_ng.rb @@ -2,10 +2,20 @@ class Showoff require 'showoff/config' require 'showoff/compiler' require 'showoff/presentation' - require 'showoff/slide' def self.do_static(args, options) puts 'Hello world!' + + presentation = Showoff::Presentation.new(options) + + puts presentation.render + puts '------------------' + presentation.sections.each do |section| + puts section.name + section.slides.each do |slide| + puts " - #{slide.name}" + end + end end end From ed8c1409cb0f571045e7f21a45a6e44b26990c02 Mon Sep 17 00:00:00 2001 From: Ben Ford Date: Wed, 4 Dec 2019 00:10:12 -0800 Subject: [PATCH 03/46] Added slide context/option parsing --- lib/showoff/presentation/section.rb | 17 ++++++----------- lib/showoff/presentation/slide.rb | 25 ++++++++++++++++++++++--- 2 files changed, 28 insertions(+), 14 deletions(-) diff --git a/lib/showoff/presentation/section.rb b/lib/showoff/presentation/section.rb index fc429660d..4534ccbc4 100644 --- a/lib/showoff/presentation/section.rb +++ b/lib/showoff/presentation/section.rb @@ -2,14 +2,8 @@ class Showoff::Presentation::Section attr_reader :slides, :name def initialize(name, files) - @name = name - @slides = files.map do |filename| - # Files might define multiple slides - getSlides(filename).map do |content| - Showoff::Presentation::Slide.new(name, content) - end - end - @slides.flatten! + @name = name + @slides = files.map { |filename| loadSlides(filename) }.flatten end def render @@ -23,7 +17,7 @@ def render # # Source: # https://github.com/puppetlabs/showoff/blob/3f43754c84f97be4284bb34f9bc7c42175d45226/lib/showoff.rb#L396-L414 - def getSlides(filename) + def loadSlides(filename) content = File.read(File.join(Showoff::Config.root, filename)) # if there are no !SLIDE markers, then make every H1 define a new slide @@ -33,8 +27,9 @@ def getSlides(filename) output = [] until content.empty? - content, marker, slide = content.rpartition(/^?/) - output.unshift marker+slide + # $1 is the slide marker context + content, marker, slide = content.rpartition(/^]*)>?/) + output.unshift Showoff::Presentation::Slide.new($1, slide) end output diff --git a/lib/showoff/presentation/slide.rb b/lib/showoff/presentation/slide.rb index c37dc3684..c3fb6c71d 100644 --- a/lib/showoff/presentation/slide.rb +++ b/lib/showoff/presentation/slide.rb @@ -1,11 +1,14 @@ require 'tilt' class Showoff::Presentation::Slide - attr_reader :section, :markdown + attr_reader :options, :markdown, :classes - def initialize(section, content) - @section = section + def initialize(context, content) @markdown = content + @template = "default" + @classes = [] + @options = {} + parseContext!(context) end # This is where the magic starts! @@ -14,6 +17,22 @@ def render Tilt[:markdown].new(nil, nil, @engine_options) { @markdown }.render end + def parseContext!(context) + return unless context + return unless matches = context.match(/(\[(.*?)\])?(.*)/) + + if matches[2] + matches[2].split(",").each do |element| + key, val = element.split("=") + @options[key] = val + end + end + + if matches[3] + @classes = matches[3].split + end + end + # this is a terrible implementation! def name @markdown.split("\n").find {|line| line.match(/^#/) } From 5dfa11fcd3ee7085aa3ca83283a7d497c16be07e Mon Sep 17 00:00:00 2001 From: Ben Ford Date: Thu, 5 Dec 2019 00:18:38 -0800 Subject: [PATCH 04/46] start compiler implementation --- lib/showoff/compiler.rb | 65 +++++++++++++++++++++++++++++++ lib/showoff/config.rb | 39 +++++++++++++++++++ lib/showoff/presentation/slide.rb | 10 ++--- 3 files changed, 107 insertions(+), 7 deletions(-) diff --git a/lib/showoff/compiler.rb b/lib/showoff/compiler.rb index b170b96ed..c0532327a 100644 --- a/lib/showoff/compiler.rb +++ b/lib/showoff/compiler.rb @@ -1,5 +1,70 @@ +require 'tilt' +require 'tilt/erb' + class Showoff::Compiler require 'showoff/compiler/forms' require 'showoff/compiler/i18n' + def initialize(options) + @options = options + end + + # Configures Tilt with the selected engine and options. + # + # Returns render options profile hash + # + # Source: + # https://github.com/puppetlabs/showoff/blob/3f43754c84f97be4284bb34f9bc7c42175d45226/lib/showoff_utils.rb#L671-L720 + # TODO: per slide profiles of render options + def profile + renderer = Showoff::Config.get('markdown') + profile = Showoff::Config.get(renderer) + + begin + # Load markdown configuration + case renderer + when 'rdiscount' + Tilt.prefer Tilt::RDiscountTemplate, "markdown" + + when 'maruku' + Tilt.prefer Tilt::MarukuTemplate, "markdown" + # Now check if we can go for latex mode + require 'maruku' + require 'maruku/ext/math' + + if profile[:use_tex] + MaRuKu::Globals[:html_math_output_mathml] = false + MaRuKu::Globals[:html_math_output_png] = true + MaRuKu::Globals[:html_math_engine] = 'none' + MaRuKu::Globals[:html_png_engine] = 'blahtex' + MaRuKu::Globals[:html_png_dir] = profile[:png_dir] + MaRuKu::Globals[:html_png_url] = profile[:html_png_url] + end + + when 'bluecloth' + Tilt.prefer Tilt::BlueClothTemplate, "markdown" + + when 'kramdown' + Tilt.prefer Tilt::KramdownTemplate, "markdown" + + when 'commonmarker', 'commonmark' + Tilt.prefer Tilt::CommonMarkerTemplate, "markdown" + + else + Tilt.prefer Tilt::RedcarpetTemplate, "markdown" + + end + rescue LoadError + puts "ERROR: The #{renderer} markdown rendering engine does not appear to be installed correctly." + exit! 1 + end + + profile + end + + def render(content) + # add the real slide rendering logic here + Tilt[:markdown].new(nil, nil, profile) { content }.render + end + end diff --git a/lib/showoff/config.rb b/lib/showoff/config.rb index 03cc3305e..60dcd0f9e 100644 --- a/lib/showoff/config.rb +++ b/lib/showoff/config.rb @@ -22,6 +22,8 @@ def self.load(root, path) @@root = File.expand_path(root) @@config = JSON.parse(File.read(File.join(@@root, path))) @@sections = self.expand_sections + + self.load_defaults! end # Expand and normalize all the different variations that the sections structure @@ -154,4 +156,41 @@ def self.path(path) File.expand_path(File.join(@@root, path)).sub(/^#{@@root}\//, '') end + def self.load_defaults! + # use a symbol which cannot clash with a string key loaded from json + renderer = @@config['markdown'] || :autodetected + defaults = case renderer + when 'rdiscount' + { + :autolink => true, + } + when 'maruku' + { + :use_tex => false, + :png_dir => 'images', + :html_png_url => '/file/images/', + } + when 'bluecloth' + { + :auto_links => true, + :definition_lists => true, + :superscript => true, + :tables => true, + } + when 'kramdown' + {} + else + { + :autolink => true, + :no_intra_emphasis => true, + :superscript => true, + :tables => true, + :underline => true, + } + end + + @@config[renderer] ||= {} + @@config[renderer] = defaults.merge!(@@config[renderer]) + end + end diff --git a/lib/showoff/presentation/slide.rb b/lib/showoff/presentation/slide.rb index c3fb6c71d..9595ca6ea 100644 --- a/lib/showoff/presentation/slide.rb +++ b/lib/showoff/presentation/slide.rb @@ -1,5 +1,3 @@ -require 'tilt' - class Showoff::Presentation::Slide attr_reader :options, :markdown, :classes @@ -8,16 +6,14 @@ def initialize(context, content) @template = "default" @classes = [] @options = {} - parseContext!(context) + setContext!(context) end - # This is where the magic starts! def render - # add the real slide rendering logic here - Tilt[:markdown].new(nil, nil, @engine_options) { @markdown }.render + Showoff::Compiler.new(@options).render(@markdown) end - def parseContext!(context) + def setContext!(context) return unless context return unless matches = context.match(/(\[(.*?)\])?(.*)/) From 9ad0f9c6731989e6378cf0d0feb9be23c94cc320 Mon Sep 17 00:00:00 2001 From: Ben Ford Date: Sat, 14 Dec 2019 18:11:16 -0800 Subject: [PATCH 05/46] Templatize slide generation Except for section titles, the DOM construction of a slide is complete. This adds classes/section/id/ref/transition/etc. Next to do is figure out the best way to keep track of section titles, and then move on to Showoff markdown extensions. --- lib/showoff/presentation/section.rb | 20 +++++---- lib/showoff/presentation/slide.rb | 63 ++++++++++++++++++++++------- views/slide.erb | 27 +++++++++++++ 3 files changed, 88 insertions(+), 22 deletions(-) create mode 100644 views/slide.erb diff --git a/lib/showoff/presentation/section.rb b/lib/showoff/presentation/section.rb index 4534ccbc4..444c91061 100644 --- a/lib/showoff/presentation/section.rb +++ b/lib/showoff/presentation/section.rb @@ -3,7 +3,8 @@ class Showoff::Presentation::Section def initialize(name, files) @name = name - @slides = files.map { |filename| loadSlides(filename) }.flatten + @slides = [] + files.each { |filename| loadSlides(filename) } end def render @@ -18,6 +19,8 @@ def render # Source: # https://github.com/puppetlabs/showoff/blob/3f43754c84f97be4284bb34f9bc7c42175d45226/lib/showoff.rb#L396-L414 def loadSlides(filename) + return unless filename.end_with? '.md' + content = File.read(File.join(Showoff::Config.root, filename)) # if there are no !SLIDE markers, then make every H1 define a new slide @@ -25,14 +28,17 @@ def loadSlides(filename) content = content.gsub(/^# /m, "\n# ") end - output = [] - until content.empty? - # $1 is the slide marker context - content, marker, slide = content.rpartition(/^]*)>?/) - output.unshift Showoff::Presentation::Slide.new($1, slide) + slides = content.split(/^]*)>?/) + slides.shift # has an extra empty string because the regex matches the entire source string. + + seq = slides.size > 2 ? 1 : nil + + slides.each_slice(2) do |slide| + @slides << Showoff::Presentation::Slide.new(slide[0], slide[1], :section => @name, :name => filename, :seq => seq) + seq +=1 if seq + # TODO: section title bull poopy end - output end end diff --git a/lib/showoff/presentation/slide.rb b/lib/showoff/presentation/slide.rb index 9595ca6ea..b3d9c7510 100644 --- a/lib/showoff/presentation/slide.rb +++ b/lib/showoff/presentation/slide.rb @@ -1,26 +1,38 @@ +require 'erb' + class Showoff::Presentation::Slide - attr_reader :options, :markdown, :classes + attr_reader :section, :section_title, :name, :seq, :id, :ref, :background, :transition, :markdown, :classes - def initialize(context, content) - @markdown = content - @template = "default" - @classes = [] - @options = {} + def initialize(options, content, context={}) + @markdown = content + @template = 'default' + @transition = 'none' + @classes = [] + parseOptionString!(options) setContext!(context) end def render - Showoff::Compiler.new(@options).render(@markdown) + content = Showoff::Compiler.new(@options).render(@markdown) + + ERB.new(File.read(File.join('views','slide.erb')), nil, '-').result(binding) end - def setContext!(context) - return unless context - return unless matches = context.match(/(\[(.*?)\])?(.*)/) + def parseOptionString!(options) + return unless options + return unless matches = options.match(/(\[(.*?)\])?(.*)/) if matches[2] matches[2].split(",").each do |element| - key, val = element.split("=") - @options[key] = val + key, val = element.split("=") + case key + when 'tpl', 'template' + @template = val + when 'bg', 'background' + @background = val + else + $logger.warning "Unknown slide option: #{key}=#{val}" + end end end @@ -29,8 +41,29 @@ def setContext!(context) end end - # this is a terrible implementation! - def name - @markdown.split("\n").find {|line| line.match(/^#/) } + def setContext!(context) + @section = context[:section] || 'main' + @name = context[:name].chomp('.md') + @seq = context[:seq] + + #TODO: this should be in options + # extract id from classes if set, or default to the HTML sanitized name + @classes.delete_if { |x| x =~ /^#([\w-]+)/ && @id = $1 } + @id ||= @name.dup.gsub(/[^-A-Za-z0-9_]/, '_') + @id << seq.to_s if @seq + + # provide an href for the slide. If we've got multiple slides in this file, we'll have a sequence number + # include that sequence number to index directly into that content + @ref = @seq ? "#{@name}:#{@seq.to_s}" : @name + + #TODO: this should be in options + # extract transition from classes, or default to 'none' + @classes.delete_if { |x| x =~ /^transition=(.+)/ && @transition = $1 } end + + # this is a terrible implementation! +# def name +# @markdown.split("\n").find {|line| line.match(/^#/) } +# end + end diff --git a/views/slide.erb b/views/slide.erb new file mode 100644 index 000000000..2aa1d9e4d --- /dev/null +++ b/views/slide.erb @@ -0,0 +1,27 @@ +<% + if background + bgstyle="background-image: url('#{background}');" + else + bgstyle='' + end +%> +
+
+ <% if section_title %> + +

#{section_title}

+ <% end %> + + <%= content %> + +
+ + <% if classes.include? 'activity' %> + ' + " /> + + + <% end %> + +
From 004f019625167b976eea5728c88281a650c9e291 Mon Sep 17 00:00:00 2001 From: Ben Ford Date: Sun, 15 Dec 2019 19:19:35 -0800 Subject: [PATCH 06/46] Handles section titles now This differs from legacy by always including the zero size title header (for wkhtmltopdf printing). I don't know if that actually matters. --- lib/showoff/presentation/section.rb | 20 +++++++++++++------- lib/showoff/presentation/slide.rb | 26 ++++++++++++++++++++++++-- views/slide.erb | 4 ++-- 3 files changed, 39 insertions(+), 11 deletions(-) diff --git a/lib/showoff/presentation/section.rb b/lib/showoff/presentation/section.rb index 444c91061..99c67fe66 100644 --- a/lib/showoff/presentation/section.rb +++ b/lib/showoff/presentation/section.rb @@ -2,8 +2,9 @@ class Showoff::Presentation::Section attr_reader :slides, :name def initialize(name, files) - @name = name - @slides = [] + @name = name + @section_title = name + @slides = [] files.each { |filename| loadSlides(filename) } end @@ -12,9 +13,9 @@ def render end # Gets the raw file content from disk and partitions it by slide markers into - # raw content for each slide. + # content for each slide. # - # Returns an array of strings + # Returns an array of Slide objects # # Source: # https://github.com/puppetlabs/showoff/blob/3f43754c84f97be4284bb34f9bc7c42175d45226/lib/showoff.rb#L396-L414 @@ -33,10 +34,15 @@ def loadSlides(filename) seq = slides.size > 2 ? 1 : nil - slides.each_slice(2) do |slide| - @slides << Showoff::Presentation::Slide.new(slide[0], slide[1], :section => @name, :name => filename, :seq => seq) + slides.each_slice(2) do |data| + slide = Showoff::Presentation::Slide.new(data[0], data[1], :section => @name, :name => filename, :seq => seq) + + # parsed from subsection slides and carried forward across slides until a new subsection title comes up + # This should be replaced with section titles/names in showoff.json hashes + @section_title = slide.updateSectionTitle(@section_title) + + @slides << slide seq +=1 if seq - # TODO: section title bull poopy end end diff --git a/lib/showoff/presentation/slide.rb b/lib/showoff/presentation/slide.rb index b3d9c7510..42ffadaf9 100644 --- a/lib/showoff/presentation/slide.rb +++ b/lib/showoff/presentation/slide.rb @@ -8,7 +8,7 @@ def initialize(options, content, context={}) @template = 'default' @transition = 'none' @classes = [] - parseOptionString!(options) + setOptions!(options) setContext!(context) end @@ -18,7 +18,8 @@ def render ERB.new(File.read(File.join('views','slide.erb')), nil, '-').result(binding) end - def parseOptionString!(options) + # options are key=value elements within the [] brackets + def setOptions!(options) return unless options return unless matches = options.match(/(\[(.*?)\])?(.*)/) @@ -30,6 +31,10 @@ def parseOptionString!(options) @template = val when 'bg', 'background' @background = val + when 'transition' # specified in classes takes priority + @transition = val + when 'id' # specified in classes takes priority + @id = val else $logger.warning "Unknown slide option: #{key}=#{val}" end @@ -41,6 +46,7 @@ def parseOptionString!(options) end end + # currently a mishmash of passed in context and calculated valued extracted from classes def setContext!(context) @section = context[:section] || 'main' @name = context[:name].chomp('.md') @@ -61,6 +67,22 @@ def setContext!(context) @classes.delete_if { |x| x =~ /^transition=(.+)/ && @transition = $1 } end + # This method will extract a section title from subsection slides and then + # return it to the `section` handler so that it can be carried forward to + # subsequent slides, until a new section title is discovered. + # + # Source: + # https://github.com/puppetlabs/showoff/blob/3f43754c84f97be4284bb34f9bc7c42175d45226/lib/showoff.rb#L499-L508 + def updateSectionTitle(section_title) + if @classes.include? 'subsection' + matches = @markdown.match(/#+ *(.*?)#*$/) + @section_title = matches[1] || @section + else + @section_title = section_title + end + @section_title + end + # this is a terrible implementation! # def name # @markdown.split("\n").find {|line| line.match(/^#/) } diff --git a/views/slide.erb b/views/slide.erb index 2aa1d9e4d..9dd8a7943 100644 --- a/views/slide.erb +++ b/views/slide.erb @@ -9,8 +9,8 @@ data-section="<%= section %>" data-title="<%= name %>" data-transition="<%= transition %>" >
<% if section_title %> - -

#{section_title}

+ +

<%= section_title %>

<% end %> <%= content %> From 3f63bfe749bdecfce5274011081a824d89ef5563 Mon Sep 17 00:00:00 2001 From: Ben Ford Date: Sun, 15 Dec 2019 21:01:51 -0800 Subject: [PATCH 07/46] Add slide template support (deprecate?) --- lib/showoff/config.rb | 6 ++++-- lib/showoff/presentation/slide.rb | 8 +++++++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/lib/showoff/config.rb b/lib/showoff/config.rb index 60dcd0f9e..bd563d42b 100644 --- a/lib/showoff/config.rb +++ b/lib/showoff/config.rb @@ -6,8 +6,10 @@ def self.keys @@config.keys end - def self.get(setting) - @@config[setting] + def self.get(*settings) + settings.reduce(@@config) do |lookup, element| + lookup[element] rescue nil + end end def self.sections diff --git a/lib/showoff/presentation/slide.rb b/lib/showoff/presentation/slide.rb index 42ffadaf9..93b8f76c2 100644 --- a/lib/showoff/presentation/slide.rb +++ b/lib/showoff/presentation/slide.rb @@ -5,7 +5,6 @@ class Showoff::Presentation::Slide def initialize(options, content, context={}) @markdown = content - @template = 'default' @transition = 'none' @classes = [] setOptions!(options) @@ -15,6 +14,13 @@ def initialize(options, content, context={}) def render content = Showoff::Compiler.new(@options).render(@markdown) + # if a template file has been specified for this slide, load from disk and render it + # TODO: how many people are actually using templates?! + if tpl_file = Showoff::Config.get('template', @template) + template = File.read(tpl_file) + content = template.gsub(/~~~CONTENT~~~/, content) + end + ERB.new(File.read(File.join('views','slide.erb')), nil, '-').result(binding) end From 2f451a6bcf13de21726297fa8548e1354cd95947 Mon Sep 17 00:00:00 2001 From: Ben Ford Date: Thu, 19 Dec 2019 16:33:40 -0800 Subject: [PATCH 08/46] Forms, variables, some markup --- lib/showoff/compiler.rb | 14 +- lib/showoff/compiler/fixups.rb | 39 +++++ lib/showoff/compiler/forms.rb | 240 +++++++++++++++++++++++++++- lib/showoff/compiler/glossary.rb | 4 + lib/showoff/compiler/i18n.rb | 3 +- lib/showoff/compiler/notes.rb | 4 + lib/showoff/compiler/toc.rb | 4 + lib/showoff/compiler/variables.rb | 65 ++++++++ lib/showoff/config.rb | 12 +- lib/showoff/presentation/section.rb | 16 +- lib/showoff/presentation/slide.rb | 43 ++--- lib/showoff/state.rb | 43 +++++ lib/showoff_ng.rb | 1 + 13 files changed, 450 insertions(+), 38 deletions(-) create mode 100644 lib/showoff/compiler/fixups.rb create mode 100644 lib/showoff/compiler/glossary.rb create mode 100644 lib/showoff/compiler/notes.rb create mode 100644 lib/showoff/compiler/toc.rb create mode 100644 lib/showoff/compiler/variables.rb create mode 100644 lib/showoff/state.rb diff --git a/lib/showoff/compiler.rb b/lib/showoff/compiler.rb index c0532327a..e05cf0cea 100644 --- a/lib/showoff/compiler.rb +++ b/lib/showoff/compiler.rb @@ -1,9 +1,12 @@ require 'tilt' require 'tilt/erb' +require 'nokogiri' class Showoff::Compiler require 'showoff/compiler/forms' require 'showoff/compiler/i18n' + require 'showoff/compiler/variables' + require 'showoff/compiler/fixups' def initialize(options) @options = options @@ -63,8 +66,15 @@ def profile end def render(content) - # add the real slide rendering logic here - Tilt[:markdown].new(nil, nil, profile) { content }.render + content = interpolateVariables(content) +# content = selectLanguage(content) + + html = Tilt[:markdown].new(nil, nil, profile) { content }.render + doc = Nokogiri::HTML::DocumentFragment.parse(html) + + doc = renderForms(doc) + doc = Fixups.updateClasses(doc) + end end diff --git a/lib/showoff/compiler/fixups.rb b/lib/showoff/compiler/fixups.rb new file mode 100644 index 000000000..3f268d548 --- /dev/null +++ b/lib/showoff/compiler/fixups.rb @@ -0,0 +1,39 @@ +# adds misc fixup methods to the compiler +class Showoff::Compiler::Fixups + + # Find any

or tags with classes defined via the prefixed dot syntax. + # Remove .break and .comment paragraphs and apply classes/alt to the rest. + # + # @param doc [Nokogiri::HTML::DocumentFragment] + # The slide document + # @return [Nokogiri::HTML::DocumentFragment] + # The document with classes applied. + def self.updateClasses(doc) + doc.search('p').select {|p| p.text.start_with? '.'}.each do |p| + # The first string of plain text in the paragraph + node = p.children.first + classes, sep, text = node.content.partition(' ') + classes = classes.split('.') + classes.shift + + if ['break', 'comment'].include? classes.first + p.remove + else + p.add_class(classes.join(' ')) + node.content = text + end + end + + doc.search('img').select {|img| img.attr('alt').start_with? '.'}.each do |img| + classes, sep, text = img.attr('alt').partition(' ') + classes = classes.split('.') + classes.shift + + img.add_class(classes.join(' ')) + img.set_attribute('alt', text) + end + + doc + end + +end diff --git a/lib/showoff/compiler/forms.rb b/lib/showoff/compiler/forms.rb index 19ee15f24..1f4fc96fa 100644 --- a/lib/showoff/compiler/forms.rb +++ b/lib/showoff/compiler/forms.rb @@ -1,3 +1,241 @@ -class Showoff::Compiler::Forms +# Adds form processing to the compiler +class Showoff::Compiler + def renderForms(doc) + # only process slides marked as forms + return doc unless @options[:form] + + Showoff::Compiler::Form.new(doc, @options[:form]).render! + end +end + +# Represents an individual form object. +# In a separate class so as to not pollute the compiler class. +# @see https://github.com/puppetlabs/showoff/blob/3f43754c84f97be4284bb34f9bc7c42175d45226/lib/showoff.rb#L848-L1022 +class Showoff::Compiler::Form + def initialize(doc, title) + @doc = doc + @title = title + end + + # Add the form markup to the slide and then render all elements + # + # @todo UI elements to translate once i18n is baked in. + # @todo Someday this should be rearchitected into the markdown renderer. + # + # @return [Nokogiri::HTML::DocumentFragment] + # The slide DOM with all form elements rendered. + # + # @see + # https://github.com/puppetlabs/showoff/blob/3f43754c84f97be4284bb34f9bc7c42175d45226/lib/showoff.rb#L849-L878 + def render! + begin + tools = Nokogiri::XML::Node.new('div', @doc).add_class('tools') + @doc.add_child(tools) + + button = Nokogiri::XML::Node.new('input', @doc).add_class('display') + button.set_attribute('type', 'button') + button.set_attribute('value', 'forms.display') + tools.add_child(button) + + submit = Nokogiri::XML::Node.new('input', @doc).add_class('save') + submit.set_attribute('type', 'submit') + submit.set_attribute('value', 'forms.save') + submit.set_attribute('disabled', 'disabled') + tools.add_child(submit) + + form = Nokogiri::XML::Node.new('form', @doc).add_class('tools') + form.set_attribute('id', @title) + form.set_attribute('action', "form/#{@title}") + form.set_attribute('method', 'POST') + @doc.add_child(form) + + @doc.children.each do |elem| + next if elem == form + elem.parent = form + end + + @doc.css('p').each do |p| + if p.text =~ /^(\w*) ?(?:->)? ?(.*)? (\*?)= ?(.*)?$/ + code = $1 + id = "#{@title}_#{code}" + name = $2.empty? ? code : $2 + required = ! $3.empty? + rhs = $4 + + p.replace form_element(id, code, name, required, rhs, p.text) + end + end + + rescue Exception => e + @logger.warn "Form parsing failed: #{e.message}" + @logger.debug "Backtrace:\n\t#{e.backtrace.join("\n\t")}" + end + + @doc + end + + # Generates markup for any supported form element type + # + # @param id [String] + # The HTML ID for the generated markup + # @param code [String] + # The question code; used for indexing + # @param name [String] + # The full text of the question + # @param required [Boolean] + # Whether the rendered element should be marked as required + # @param rhs [String] + # The right hand side of the question specification, if on one line. + # @param text [String] + # The full content of the content, used for recursive multiline calls + # + # @return [String] + # The HTML markup for all the HTML nodes that the full element renders to. + # + # @see + # https://github.com/puppetlabs/showoff/blob/3f43754c84f97be4284bb34f9bc7c42175d45226/lib/showoff.rb#L880-L903 + def form_element(id, code, name, required, rhs, text) + required = required ? 'required' : '' + str = "

" + str << "" + case rhs + when /^\[\s+(\d*)\]$$/ # value = [ 5] (textarea) + str << form_element_textarea(id, code, $1) + when /^___+(?:\[(\d+)\])?$/ # value = ___[50] (text) + str << form_element_text(id, code, $1) + when /^\(.?\)/ # value = (x) option one (=) opt2 () opt3 -> option 3 (radio) + str << form_element_radio(id, code, rhs.scan(/\((.?)\)\s*([^()]+)\s*/)) + when /^\[.?\]/ # value = [x] option one [=] opt2 [] opt3 -> option 3 (checkboxes) + str << form_element_checkboxes(id, code, rhs.scan(/\[(.?)\] ?([^\[\]]+)/)) + when /^\{(.*)\}$/ # value = {BOS, [SFO], (NYC)} (select shorthand) + str << form_element_select(id, code, rhs.scan(/[(\[]?\w+[)\]]?/)) + when /^\{$/ # value = { (select) + str << form_element_select_multiline(id, code, text) + when '' # value = (radio/checkbox list) + str << form_element_multiline(id, code, text) + else + @logger.warn "Unmatched form element: #{rhs}" + end + str << '
' + end + + def form_element_text(id, code, length) + "" + end + + def form_element_textarea(id, code, rows) + rows = 3 if rows.empty? + "" + end + + def form_element_radio(id, code, items) + form_element_check_or_radio_set('radio', id, code, items) + end + + def form_element_checkboxes(id, code, items) + form_element_check_or_radio_set('checkbox', id, code, items) + end + + def form_element_select(id, code, items) + str = "' + end + + def form_element_select_multiline(id, code, text) + str = "' + end + + def form_element_multiline(id, code, text) + str = '
    ' + + text.split("\n")[1..-1].each do |item| + case item + when /\((.?)\)\s*(\w+)\s*(?:->\s*(.*)?)?/ + modifier = $1 + type = 'radio' + value = $2 + label = $3 || $2 + when /\[(.?)\]\s*(\w+)\s*(?:->\s*(.*)?)?/ + modifier = $1 + type = 'checkbox' + value = $2 + label = $3 || $2 + end + + str << '
  • ' + str << form_element_check_or_radio(type, id, code, value, label, modifier) + str << '
  • ' + end + str << '
' + end + + def form_element_check_or_radio_set(type, id, code, items) + str = '' + items.each do |item| + modifier = item[0] + + if item[1] =~ /^(\w*) -> (.*)$/ + value = $1 + label = $2 + else + value = label = item[1] + end + + str << form_element_check_or_radio(type, id, code, value, label, modifier) + end + str + end + + def form_element_check_or_radio(type, id, code, value, label, modifier) + # yes, value and id are conflated, because this is the id of the parent widget + checked = form_checked?(modifier) + classes = form_classes(modifier) + + name = (type == 'checkbox') ? "#{code}[]" : code + str = "" + str << "" + end + + def form_classes(modifier) + modifier.downcase! + classes = ['response'] + classes << 'correct' if modifier.include?('=') + + classes.join(' ') + end + + def form_checked?(modifier) + modifier.downcase.include?('x') ? "checked='checked'" : '' + end end diff --git a/lib/showoff/compiler/glossary.rb b/lib/showoff/compiler/glossary.rb new file mode 100644 index 000000000..34dce8571 --- /dev/null +++ b/lib/showoff/compiler/glossary.rb @@ -0,0 +1,4 @@ +# adds glossary processing to the compiler +class Showoff::Compiler + +end diff --git a/lib/showoff/compiler/i18n.rb b/lib/showoff/compiler/i18n.rb index 8ae5de730..1cb9a36bf 100644 --- a/lib/showoff/compiler/i18n.rb +++ b/lib/showoff/compiler/i18n.rb @@ -1,3 +1,4 @@ -class Showoff::Compiler::I18n +# adds translation and internationalization to the compiler +class Showoff::Compiler end diff --git a/lib/showoff/compiler/notes.rb b/lib/showoff/compiler/notes.rb new file mode 100644 index 000000000..c1172f055 --- /dev/null +++ b/lib/showoff/compiler/notes.rb @@ -0,0 +1,4 @@ +# adds presenter notes processing to the compiler +class Showoff::Compiler + +end diff --git a/lib/showoff/compiler/toc.rb b/lib/showoff/compiler/toc.rb new file mode 100644 index 000000000..48f71df98 --- /dev/null +++ b/lib/showoff/compiler/toc.rb @@ -0,0 +1,4 @@ +# adds table of content generation to the compiler +class Showoff::Compiler + +end diff --git a/lib/showoff/compiler/variables.rb b/lib/showoff/compiler/variables.rb new file mode 100644 index 000000000..0cf5ee712 --- /dev/null +++ b/lib/showoff/compiler/variables.rb @@ -0,0 +1,65 @@ +# Adds variable interpolation to the compiler +class Showoff::Compiler + # + # + # @param content [String] + # A string of Markdown content which may contain Showoff variables. + # @return [String] + # The content with variables interpolated. + # @note + # Had side effects of altering state datastore. + # @see + # https://github.com/puppetlabs/showoff/blob/3f43754c84f97be4284bb34f9bc7c42175d45226/lib/showoff.rb#L557-L614 + def interpolateVariables(content) + # update counters, incrementing section:minor if needed + result = content.gsub("~~~CURRENT_SLIDE~~~", Showoff::State.get(:slide_count).to_s) + result.gsub!("~~~SECTION:MAJOR~~~", Showoff::State.get(:section_major).to_s) + if result.include? "~~~SECTION:MINOR~~~" + Showoff::State.increment(:section_minor) + result.gsub!("~~~SECTION:MINOR~~~", Showoff::State.get(:section_minor).to_s) + end + + # scan for pagebreak tags. Should really only be used for handout notes or supplemental materials + result.gsub!("~~~PAGEBREAK~~~", '
continued...
') + + # replace with form rendering placeholder + result.gsub!(/~~~FORM:([^~]*)~~~/, '
') + + # Now check for any kind of options + content.scan(/(~~~CONFIG:(.*?)~~~)/).each do |match| + parts = match[1].split('.') # Use dots ('.') to separate Hash keys + value = Showoff::Config.get(*parts) + + unless value.is_a?(String) + msg = "#{match[0]} refers to a non-String data type (#{value.class})" + msg = "#{match[0]}: not found in settings data" if value.nil? + @logger.warn(msg) + next + end + + result.gsub!(match[0], value) + end + + # Load and replace any file tags + content.scan(/(~~~FILE:([^:~]*):?(.*)?~~~)/).each do |match| + # make a list of code highlighting classes to include + css = match[2].split.collect {|i| "language-#{i.downcase}" }.join(' ') + + # get the file content and parse out html entities + name = match[1] + file = File.read(File.join(Showoff::Config.root, '_files', name)) rescue "Nonexistent file: #{name}" + file = "Empty file: #{name}" if file.empty? + file = HTMLEntities.new.encode(file) rescue "HTML encoding of #{name} failed" + + result.gsub!(match[0], "
#{file}
") + end + + result.gsub!(/\[(fa\w?)-(\S*)\]/, '') + + # For fenced code blocks, translate the space separated classes into one + # colon separated string so Commonmarker doesn't ignore the rest + result.gsub!(/^`{3} *(.+)$/) {|s| "``` #{$1.split.join(':')}"} + + result + end +end diff --git a/lib/showoff/config.rb b/lib/showoff/config.rb index bd563d42b..78919feb4 100644 --- a/lib/showoff/config.rb +++ b/lib/showoff/config.rb @@ -6,10 +6,13 @@ def self.keys @@config.keys end - def self.get(*settings) - settings.reduce(@@config) do |lookup, element| - lookup[element] rescue nil - end + # Retrieve settings from the config hash. + # If multiple arguments are given then it will dig down through data + # structures argument by argument. + # + # Returns the data type & value requested, nil on error. + def self.get(*setting) + @@config.dig(*setting) rescue nil end def self.sections @@ -188,6 +191,7 @@ def self.load_defaults! :superscript => true, :tables => true, :underline => true, + :escape_html => false, } end diff --git a/lib/showoff/presentation/section.rb b/lib/showoff/presentation/section.rb index 99c67fe66..3d7c04388 100644 --- a/lib/showoff/presentation/section.rb +++ b/lib/showoff/presentation/section.rb @@ -2,9 +2,8 @@ class Showoff::Presentation::Section attr_reader :slides, :name def initialize(name, files) - @name = name - @section_title = name - @slides = [] + @name = name + @slides = [] files.each { |filename| loadSlides(filename) } end @@ -32,16 +31,13 @@ def loadSlides(filename) slides = content.split(/^]*)>?/) slides.shift # has an extra empty string because the regex matches the entire source string. + # this is a counter keeping track of how many slides came from the file. + # It kicks in at 2 because at this point, slides are a tuple of (options, content) seq = slides.size > 2 ? 1 : nil + # iterate each slide tuple and add slide objects to the array slides.each_slice(2) do |data| - slide = Showoff::Presentation::Slide.new(data[0], data[1], :section => @name, :name => filename, :seq => seq) - - # parsed from subsection slides and carried forward across slides until a new subsection title comes up - # This should be replaced with section titles/names in showoff.json hashes - @section_title = slide.updateSectionTitle(@section_title) - - @slides << slide + @slides << Showoff::Presentation::Slide.new(data[0], data[1], :section => @name, :name => filename, :seq => seq) seq +=1 if seq end diff --git a/lib/showoff/presentation/slide.rb b/lib/showoff/presentation/slide.rb index 93b8f76c2..132ca9594 100644 --- a/lib/showoff/presentation/slide.rb +++ b/lib/showoff/presentation/slide.rb @@ -1,7 +1,7 @@ require 'erb' class Showoff::Presentation::Slide - attr_reader :section, :section_title, :name, :seq, :id, :ref, :background, :transition, :markdown, :classes + attr_reader :section, :section_title, :name, :seq, :id, :ref, :background, :transition, :form, :markdown, :classes def initialize(options, content, context={}) @markdown = content @@ -9,10 +9,13 @@ def initialize(options, content, context={}) @classes = [] setOptions!(options) setContext!(context) + + Showoff::State.increment(:slide_count) end def render - content = Showoff::Compiler.new(@options).render(@markdown) + options = {:form => @form} + content = Showoff::Compiler.new(options).render(@markdown) # if a template file has been specified for this slide, load from disk and render it # TODO: how many people are actually using templates?! @@ -37,10 +40,15 @@ def setOptions!(options) @template = val when 'bg', 'background' @background = val - when 'transition' # specified in classes takes priority - @transition = val - when 'id' # specified in classes takes priority + # For legacy reasons, the options below may also be specified in classes. + # Currently that takes priority. + # @todo: better define the difference between options and classes. + when 'form' + @form = val + when 'id' @id = val + when 'transition' + @transition = val else $logger.warning "Unknown slide option: #{key}=#{val}" end @@ -71,27 +79,22 @@ def setContext!(context) #TODO: this should be in options # extract transition from classes, or default to 'none' @classes.delete_if { |x| x =~ /^transition=(.+)/ && @transition = $1 } - end - # This method will extract a section title from subsection slides and then - # return it to the `section` handler so that it can be carried forward to - # subsequent slides, until a new section title is discovered. - # - # Source: - # https://github.com/puppetlabs/showoff/blob/3f43754c84f97be4284bb34f9bc7c42175d45226/lib/showoff.rb#L499-L508 - def updateSectionTitle(section_title) + #TODO: this should be in options + # extract form id from classes, or default to nil + @classes.delete_if { |x| x =~ /^form=(.+)/ && @form = $1 } + + # Extract a section title from subsection slides and add it to state so that it + # can be carried forward to subsequent slides until a new section title is discovered. + # @see + # https://github.com/puppetlabs/showoff/blob/3f43754c84f97be4284bb34f9bc7c42175d45226/lib/showoff.rb#L499-L508 if @classes.include? 'subsection' matches = @markdown.match(/#+ *(.*?)#*$/) @section_title = matches[1] || @section + Showoff::State.set(:section_title, @section_title) else - @section_title = section_title + @section_title = Showoff::State.get(:section_title) || @section end - @section_title end - # this is a terrible implementation! -# def name -# @markdown.split("\n").find {|line| line.match(/^#/) } -# end - end diff --git a/lib/showoff/state.rb b/lib/showoff/state.rb new file mode 100644 index 000000000..dc1391f1e --- /dev/null +++ b/lib/showoff/state.rb @@ -0,0 +1,43 @@ +# Just a very simple global key-value data store. +class Showoff::State + @@state = {} + + # @returns [Array] Array of keys in the datastore + def self.keys + @@state.keys + end + + # @returns [Hash] Hash dump of all data in the datastore + def self.dump + @@state + end + + # @param [String] The key to look for. + # @returns[Boolean] Whether that key exists. + def include?(key) + @@state.include?(key) + end + + # @param [String] The key to look for. + # @returns[Boolean] The value of that key. + def self.get(key) + @@state[key] + end + + # @param [String] The key to set. + # @param [Any] The value to set for that key. + def self.set(key, value) + @@state[key] = value + end + + # @param [String] The key to increment. + # @note The value stored must be an Integer. This will initialize at zero if needed. + # @return [Integer] The new value of the counter. + def self.increment(key) + # ensure that the key is initialized with an integer before incrementing. + # Don't bother catching errors, we want those to be crashers + @@state[key] ||= 0 + @@state[key] += 1 + end + +end diff --git a/lib/showoff_ng.rb b/lib/showoff_ng.rb index 59d836c35..b42fd8ed8 100644 --- a/lib/showoff_ng.rb +++ b/lib/showoff_ng.rb @@ -2,6 +2,7 @@ class Showoff require 'showoff/config' require 'showoff/compiler' require 'showoff/presentation' + require 'showoff/state' def self.do_static(args, options) puts 'Hello world!' From 11308cf8a73e79cfd94f48f4896dd0725aac09d4 Mon Sep 17 00:00:00 2001 From: Ben Ford Date: Fri, 20 Dec 2019 15:11:44 -0800 Subject: [PATCH 09/46] Add some showoff extensions, glossary/notes/variables/etc --- lib/showoff/compiler.rb | 8 +++- lib/showoff/compiler/fixups.rb | 11 +++++ lib/showoff/compiler/glossary.rb | 67 ++++++++++++++++++++++++++++++- lib/showoff/compiler/notes.rb | 65 +++++++++++++++++++++++++++++- lib/showoff/compiler/variables.rb | 6 +++ lib/showoff/config.rb | 18 +++++++-- lib/showoff/presentation/slide.rb | 5 ++- 7 files changed, 172 insertions(+), 8 deletions(-) diff --git a/lib/showoff/compiler.rb b/lib/showoff/compiler.rb index e05cf0cea..1750dd647 100644 --- a/lib/showoff/compiler.rb +++ b/lib/showoff/compiler.rb @@ -7,9 +7,12 @@ class Showoff::Compiler require 'showoff/compiler/i18n' require 'showoff/compiler/variables' require 'showoff/compiler/fixups' + require 'showoff/compiler/notes' + require 'showoff/compiler/glossary' def initialize(options) @options = options + @profile = profile end # Configures Tilt with the selected engine and options. @@ -69,11 +72,14 @@ def render(content) content = interpolateVariables(content) # content = selectLanguage(content) - html = Tilt[:markdown].new(nil, nil, profile) { content }.render + html = Tilt[:markdown].new(nil, nil, @profile) { content }.render doc = Nokogiri::HTML::DocumentFragment.parse(html) doc = renderForms(doc) doc = Fixups.updateClasses(doc) + doc = Fixups.updateLinks(doc) + doc = Notes.render(doc, @profile, @options) # must pass in extra context because this will render markdown itself + doc = Glossary.render(doc) end diff --git a/lib/showoff/compiler/fixups.rb b/lib/showoff/compiler/fixups.rb index 3f268d548..9f14e8070 100644 --- a/lib/showoff/compiler/fixups.rb +++ b/lib/showoff/compiler/fixups.rb @@ -36,4 +36,15 @@ def self.updateClasses(doc) doc end + # Ensure that all links open in a new window. Perhaps move some of this to glossary.rb + def self.updateLinks(doc) + doc.search('a').each do |link| + next unless link['href'] + next if link['href'].start_with? '#' + # Add a target so we open all external links from notes in a new window + link.set_attribute('target', '_blank') + end + + doc + end end diff --git a/lib/showoff/compiler/glossary.rb b/lib/showoff/compiler/glossary.rb index 34dce8571..dbfcbc594 100644 --- a/lib/showoff/compiler/glossary.rb +++ b/lib/showoff/compiler/glossary.rb @@ -1,4 +1,69 @@ # adds glossary processing to the compiler -class Showoff::Compiler +class Showoff::Compiler::Glossary + + # Scan for glossary links and add definitions. This does not yet create the + # glossary page at the end. + # + # @param doc [Nokogiri::HTML::DocumentFragment] + # The slide document + # + # @return [Nokogiri::HTML::DocumentFragment] + # The slide DOM with all glossary entries rendered. + # + # @see + # https://github.com/puppetlabs/showoff/blob/3f43754c84f97be4284bb34f9bc7c42175d45226/lib/showoff.rb#L650-L706 + def self.render(doc) + + # Find all callout style definitions on the slide and add links to the glossary page + doc.search('.callout.glossary').each do |item| + next unless item.content =~ /^([^|]+)\|([^:]+):(.*)$/ + item['data-term'] = $1 + item['data-target'] = $2 + item['data-text'] = $3.strip + item.content = $3.strip + + glossary = (item.attr('class').split - ['callout', 'glossary']).first + address = glossary ? "#{glossary}/#{$2}" : $2 + frag = "#{$1}" + + item.prepend_child(frag) + end + + # Find glossary links and add definitions to the notes + doc.search('a').each do |link| + next unless link['href'] + next unless link['href'].start_with? 'glossary://' + next if link.classes.include? 'processed' + + link.add_class('term') + + term = link.content + text = link['title'] + href = link['href'] + + target, name = href.slice('glossary://').split('/') + + label = link.clone + label.add_class('label processed') + + definition = Nokogiri::XML::Node.new('p', doc).add_class("callout glossary #{name}") + definition.set_attribute('data-term', term) + definition.set_attribute('data-text', text) + definition.set_attribute('data-target', target) + definition.content = text + definition.prepend_child(label) + + # @todo this duplication is annoying but it makes it less order dependent + doc.add_child '
' if doc.search('div.notes-section.notes').empty? + doc.add_child '
' if doc.search('div.notes-section.handouts').empty? + + [doc.css('div.notes-section.notes'), doc.css('div.notes-section.handouts')].each do |section| + section.first.add_child(definition.clone) + end + + end + + doc + end end diff --git a/lib/showoff/compiler/notes.rb b/lib/showoff/compiler/notes.rb index c1172f055..3d6e14ea9 100644 --- a/lib/showoff/compiler/notes.rb +++ b/lib/showoff/compiler/notes.rb @@ -1,4 +1,67 @@ # adds presenter notes processing to the compiler -class Showoff::Compiler +class Showoff::Compiler::Notes + + # Generate the presenter notes sections, including personal notes + # + # @param doc [Nokogiri::HTML::DocumentFragment] + # The slide document + # + # @param profile [String] + # The markdown engine profile to use when rendering + # + # @param options [Hash] Options used for rendering any embedded markdown + # @option options [String] :name The markdown slide name + # @option options [String] :seq The sequence number for multiple slides in one file + # + # @return [Nokogiri::HTML::DocumentFragment] + # The slide DOM with all notes sections rendered. + # + # @see + # https://github.com/puppetlabs/showoff/blob/3f43754c84f97be4284bb34f9bc7c42175d45226/lib/showoff.rb#L616-L716 + # @note + # A ton of the functionality in the original method got refactored to its logical location + def self.render(doc, profile, options = {}) + # Turn tags into classed divs. + doc.search('p').select {|p| p.text.start_with?('~~~SECTION:') }.each do |p| + klass = p.text.match(/~~~SECTION:([^~]*)~~~/)[1] + + # Don't bother creating this if we don't want to use it + next unless Showoff::Config.includeSection?(klass) + + notes = Nokogiri::XML::Node.new('div', doc).add_class("notes-section #{klass}") + nodes = [] + iter = p.next_sibling + until iter.text == '~~~ENDSECTION~~~' do + nodes << iter + iter = iter.next_sibling + + # if the author forgot the closing tag, let's not crash, eh? + break unless iter + end + iter.remove if iter # remove the extraneous closing ~~~ENDSECTION~~~ tag + + # We need to collect the list before moving or the iteration crashes since the iterator no longer has a sibling + nodes.each {|n| n.parent = notes } + + p.replace(notes) + end + + filename = [ + File.join(Showoff::Config.root, '_notes', "#{options[:name]}.#{options[:seq]}.md"), + File.join(Showoff::Config.root, '_notes', "#{options[:name]}.md"), + ].find {|path| File.file?(path) } + + if filename and Showoff::Config.includeSection?('notes') + # Make sure we've got a notes div to hang personal notes from + doc.add_child '
' if doc.search('div.notes-section.notes').empty? + doc.search('div.notes-section.notes').each do |section| + text = Tilt[:markdown].new(nil, nil, options[:profile]) { File.read(filename) }.render + frag = "

presenter.notes.personal}

#{text}
" # @todo add back i18n #{I18n.t('presenter.notes.personal')} + section.prepend_child(frag) + end + end + + doc + end end diff --git a/lib/showoff/compiler/variables.rb b/lib/showoff/compiler/variables.rb index 0cf5ee712..e4f19862a 100644 --- a/lib/showoff/compiler/variables.rb +++ b/lib/showoff/compiler/variables.rb @@ -54,12 +54,18 @@ def interpolateVariables(content) result.gsub!(match[0], "
#{file}
") end + # insert font awesome icons result.gsub!(/\[(fa\w?)-(\S*)\]/, '') # For fenced code blocks, translate the space separated classes into one # colon separated string so Commonmarker doesn't ignore the rest result.gsub!(/^`{3} *(.+)$/) {|s| "``` #{$1.split.join(':')}"} + # escape any tags left and ensure they're in distinctly separate p tags so + # that renderers that accept a string of tildes for fenced code blocks don't blow up. + # @todo This is terrible and we need to design a better tag syntax. + result.gsub!(/^~~~(.*?)~~~/, "\n\\~~~\\1~~~\n") + result end end diff --git a/lib/showoff/config.rb b/lib/showoff/config.rb index 78919feb4..d18904057 100644 --- a/lib/showoff/config.rb +++ b/lib/showoff/config.rb @@ -19,10 +19,24 @@ def self.sections @@sections end + # Absolute root of presentation def self.root @@root end + # Relative path to an item in the presentation directory structure + def self.path(path) + File.expand_path(File.join(@@root, path)).sub(/^#{@@root}\//, '') + end + + # Identifies whether we're including a given notes section + # + # @param section [String] The name of the notes section of interest. + # @return [Boolean] Whether to include this section in the output + def self.includeSection?(section) + return true # todo make this work + end + def self.load(root, path) @@root = File.expand_path(root) @@config = JSON.parse(File.read(File.join(@@root, path))) @@ -157,10 +171,6 @@ def self.legacy_sections(data) sections end - def self.path(path) - File.expand_path(File.join(@@root, path)).sub(/^#{@@root}\//, '') - end - def self.load_defaults! # use a symbol which cannot clash with a string key loaded from json renderer = @@config['markdown'] || :autodetected diff --git a/lib/showoff/presentation/slide.rb b/lib/showoff/presentation/slide.rb index 132ca9594..ab543d1d8 100644 --- a/lib/showoff/presentation/slide.rb +++ b/lib/showoff/presentation/slide.rb @@ -14,7 +14,10 @@ def initialize(options, content, context={}) end def render - options = {:form => @form} + options = { :form => @form, + :name => @name, + :seq => @seq, + } content = Showoff::Compiler.new(options).render(@markdown) # if a template file has been specified for this slide, load from disk and render it From 3ded36a0a3938a41450d730410f5e6f00450d35a Mon Sep 17 00:00:00 2001 From: Ben Ford Date: Tue, 24 Dec 2019 15:31:35 -0800 Subject: [PATCH 10/46] Per-slide compilation done except for i18n What's left to do for the compiler: * post slide compilation processing: * TOC generation * glossary page compilation * the whole i18n subsystem After those are done we refactor and refactor until the architecture is solid. Then we build a comprehensive test suite. And refactor again to fix any of the issues we discover while building the tests. --- bin/showoff | 5 ++ lib/showoff/compiler.rb | 14 ++++- lib/showoff/compiler/downloads.rb | 85 +++++++++++++++++++++++++++++++ lib/showoff/compiler/fixups.rb | 72 ++++++++++++++++++++++++++ lib/showoff/compiler/notes.rb | 7 ++- lib/showoff/presentation.rb | 1 + lib/showoff/presentation/slide.rb | 18 +++++-- lib/showoff/state.rb | 50 ++++++++++++++++-- views/slide.erb | 16 +++--- 9 files changed, 250 insertions(+), 18 deletions(-) create mode 100644 lib/showoff/compiler/downloads.rb diff --git a/bin/showoff b/bin/showoff index 4fcd36a8d..6de1f649d 100755 --- a/bin/showoff +++ b/bin/showoff @@ -29,6 +29,7 @@ module Wrapper the showoff.json file. desc switch :dev, :desc => "Use the next-gen development version of Showoff" + switch :debug, :desc => "Show application backtraces on crash" desc 'Create new showoff presentation' long_desc 'This command helps start a new showoff presentation by setting up the proper directory structure for you. It takes the directory name you would like showoff to create for you.' @@ -341,6 +342,10 @@ module Wrapper # Return true to proceed; false to abort and not call the # chosen command + if global[:debug] + ENV['GLI_DEBUG'] = 'true' + end + if global[:dev] require 'showoff_ng' diff --git a/lib/showoff/compiler.rb b/lib/showoff/compiler.rb index 1750dd647..107c8e57f 100644 --- a/lib/showoff/compiler.rb +++ b/lib/showoff/compiler.rb @@ -9,6 +9,7 @@ class Showoff::Compiler require 'showoff/compiler/fixups' require 'showoff/compiler/notes' require 'showoff/compiler/glossary' + require 'showoff/compiler/downloads' def initialize(options) @options = options @@ -68,6 +69,7 @@ def profile profile end + # @todo I think the update_image_paths() malarky is redundant. Verify that. def render(content) content = interpolateVariables(content) # content = selectLanguage(content) @@ -78,9 +80,17 @@ def render(content) doc = renderForms(doc) doc = Fixups.updateClasses(doc) doc = Fixups.updateLinks(doc) - doc = Notes.render(doc, @profile, @options) # must pass in extra context because this will render markdown itself + doc = Fixups.updateSyntaxHighlighting(doc) + doc = Fixups.updateCommandlineBlocks(doc) doc = Glossary.render(doc) - + doc = Downloads.scanForFiles(doc, @options) + + # This call must be last in the chain because it separates notes from the + # content and returns them separately. If it's not last, then the notes + # won't have all the compilation steps applied to them. + # + # must pass in extra context because this will render markdown itself + Notes.render(doc, @profile, @options) end end diff --git a/lib/showoff/compiler/downloads.rb b/lib/showoff/compiler/downloads.rb new file mode 100644 index 000000000..4d649d1b9 --- /dev/null +++ b/lib/showoff/compiler/downloads.rb @@ -0,0 +1,85 @@ +# adds file download link processing +class Showoff::Compiler::Downloads + + # Scan for file download links and move them to the state storage. + # + # @param doc [Nokogiri::HTML::DocumentFragment] + # The slide document + # + # @return [Nokogiri::HTML::DocumentFragment] + # The slide DOM with download links removed. + # + # @todo Should .download change meaning to 'make available on this slide'? + # + # @see + # https://github.com/puppetlabs/showoff/blob/3f43754c84f97be4284bb34f9bc7c42175d45226/lib/showoff.rb#L1056-L1073 + def self.scanForFiles(doc, options) + current = Showoff::State.get(:slide_count) + doc.search('p.download').each do |container| + links = container.text.gsub(/^\.download ?/, '') + links.split("\n").each do |line| + file, modifier = line.split + modifier ||= 'next' # @todo Is this still the proper default? + + case modifier + when 'a', 'all', 'always', 'now' + self.pushFile(0, current, options[:name], file) + when 'p', 'prev', 'previous' + self.pushFile(current-1, current, options[:name], file) + when 'c', 'curr', 'current' + self.pushFile(current, current, options[:name], file) + when 'n', 'next' + self.pushFile(current+1, current, options[:name], file) + end + end + + container.remove + end + + doc + end + + +# Convention that index 0 represents files that are always available and every +# other index represents files whose visibility will be triggered on that slide. +# +# [ +# { +# :enabled => false, +# :slides => [ +# {:slidenum => num, :source => name, :file => file}, +# {:slidenum => num, :source => name, :file => file}, +# ], +# }, +# { +# :enabled => false, +# :slides => [ +# {:slidenum => num, :source => name, :file => file}, +# {:slidenum => num, :source => name, :file => file}, +# ], +# }, +# ] + + + def self.pushFile(index, current, source, file) + record = Showoff::State.getAtIndex(:downloads, index) || {} + record[:enabled] ||= false + record[:slides] ||= [] + record[:slides] << {:slidenum => current, :source => source, :file => file} + + Showoff::State.setAtIndex(:downloads, index, record) + end + + def self.enableFiles(index) + record = Showoff::State.getAtIndex(:downloads, index) + + record[:enabled] = true + Showoff::State.setAtIndex(:downloads, index, record) + end + + def self.getFiles(index) + record = Showoff::State.getAtIndex(:downloads, index) + record[:slides] if record[:enabled] + end + +end diff --git a/lib/showoff/compiler/fixups.rb b/lib/showoff/compiler/fixups.rb index 9f14e8070..fb8e3cced 100644 --- a/lib/showoff/compiler/fixups.rb +++ b/lib/showoff/compiler/fixups.rb @@ -1,3 +1,5 @@ +require 'commandline_parser' + # adds misc fixup methods to the compiler class Showoff::Compiler::Fixups @@ -47,4 +49,74 @@ def self.updateLinks(doc) doc end + + # This munges code blocks to ensure the proper syntax highlighting + # @see + # https://github.com/puppetlabs/showoff/blob/3f43754c84f97be4284bb34f9bc7c42175d45226/lib/showoff.rb#L1105-L1133 + def self.updateSyntaxHighlighting(doc) + doc.search('pre').each do |pre| + pre.search('code').each do |code| + out = code.text + lang = code.get_attribute('class') + + # Skip this if we've got an empty code block + next if out.empty? + + # catch fenced code blocks from commonmarker + if (lang and lang.start_with? 'language-' ) + pre.set_attribute('class', 'highlight') + # turn the colon separated name back into classes + code.set_attribute('class', lang.gsub(':', ' ')) + + # or we've started a code block with a Showoff language tag + elsif out.strip[0, 3] == '@@@' + lines = out.split("\n") + lang = lines.shift.gsub('@@@', '').strip + pre.set_attribute('class', 'highlight') + code.set_attribute('class', 'language-' + lang.downcase) if !lang.empty? + code.content = lines.join("\n") + end + + end + end + + doc + end + + # This munges commandline code blocks for the proper classing + # @see + # https://github.com/puppetlabs/showoff/blob/3f43754c84f97be4284bb34f9bc7c42175d45226/lib/showoff.rb#L1107 + # https://github.com/puppetlabs/showoff/blob/3f43754c84f97be4284bb34f9bc7c42175d45226/lib/showoff.rb#L1135-L1163 + def self.updateCommandlineBlocks(doc) + parser = CommandlineParser.new + doc.search('.commandline > pre > code').each do |code| + out = code.text + code.content = '' + tree = parser.parse(out) + transform = Parslet::Transform.new do + rule(:prompt => simple(:prompt), :input => simple(:input), :output => simple(:output)) do + command = Nokogiri::XML::Node.new('code', doc) + command.set_attribute('class', 'command') + command.content = "#{prompt} #{input}" + code << command + + # Add newline after the input so that users can + # advance faster than the typewriter effect + # and still keep inputs on separate lines. + code << "\n" + + unless output.to_s.empty? + + result = Nokogiri::XML::Node.new('code', doc) + result.set_attribute('class', 'result') + result.content = output + code << result + end + end + end + transform.apply(tree) + end + + doc + end end diff --git a/lib/showoff/compiler/notes.rb b/lib/showoff/compiler/notes.rb index 3d6e14ea9..edd825ae7 100644 --- a/lib/showoff/compiler/notes.rb +++ b/lib/showoff/compiler/notes.rb @@ -61,7 +61,12 @@ def self.render(doc, profile, options = {}) end end - doc + # return notes separately from content so that it can be rendered outside the slide + # @see https://github.com/puppetlabs/showoff/blob/3f43754c84f97be4284bb34f9bc7c42175d45226/lib/showoff.rb#L726-L732 + notes = doc.search('div.notes-section') + doc.search('div.notes-section').each {|n| n.remove } + + [doc, notes] end end diff --git a/lib/showoff/presentation.rb b/lib/showoff/presentation.rb index d5b711767..9effc93dc 100644 --- a/lib/showoff/presentation.rb +++ b/lib/showoff/presentation.rb @@ -11,6 +11,7 @@ def initialize(options) end def render + Showoff::State.reset([:slide_count, :section_major, :section_minor]) @sections.map(&:render).join("\n") end diff --git a/lib/showoff/presentation/slide.rb b/lib/showoff/presentation/slide.rb index ab543d1d8..67c3c3413 100644 --- a/lib/showoff/presentation/slide.rb +++ b/lib/showoff/presentation/slide.rb @@ -9,19 +9,19 @@ def initialize(options, content, context={}) @classes = [] setOptions!(options) setContext!(context) - - Showoff::State.increment(:slide_count) end def render + Showoff::State.increment(:slide_count) options = { :form => @form, :name => @name, :seq => @seq, } - content = Showoff::Compiler.new(options).render(@markdown) + + content, notes = Showoff::Compiler.new(options).render(@markdown) # if a template file has been specified for this slide, load from disk and render it - # TODO: how many people are actually using templates?! + # @todo How many people are actually using these limited templates?! if tpl_file = Showoff::Config.get('template', @template) template = File.read(tpl_file) content = template.gsub(/~~~CONTENT~~~/, content) @@ -30,6 +30,16 @@ def render ERB.new(File.read(File.join('views','slide.erb')), nil, '-').result(binding) end + # This is a list of classes that we want applied *only* to content, and not to the slide, + # typically so that overly aggressive selectors don't match more than they should. + # + # @see + # https://github.com/puppetlabs/showoff/blob/3f43754c84f97be4284bb34f9bc7c42175d45226/lib/showoff.rb#L734-L737 + def slideClasses + blacklist = ['bigtext'] + @classes.reject { |klass| blacklist.include? klass } + end + # options are key=value elements within the [] brackets def setOptions!(options) return unless options diff --git a/lib/showoff/state.rb b/lib/showoff/state.rb index dc1391f1e..ec0943fb0 100644 --- a/lib/showoff/state.rb +++ b/lib/showoff/state.rb @@ -12,25 +12,25 @@ def self.dump @@state end - # @param [String] The key to look for. + # @param key [String] The key to look for. # @returns[Boolean] Whether that key exists. def include?(key) @@state.include?(key) end - # @param [String] The key to look for. + # @param key [String] The key to look for. # @returns[Boolean] The value of that key. def self.get(key) @@state[key] end - # @param [String] The key to set. + # @param key [String] The key to set. # @param [Any] The value to set for that key. def self.set(key, value) @@state[key] = value end - # @param [String] The key to increment. + # @param key [String] The key to increment. # @note The value stored must be an Integer. This will initialize at zero if needed. # @return [Integer] The new value of the counter. def self.increment(key) @@ -40,4 +40,46 @@ def self.increment(key) @@state[key] += 1 end + # @param key [String] The key of the array to manage. + # @param value [Any] The value to append to the array at that key. + def self.append(key, value) + @@state[key] ||= [] + @@state[key] << value + end + + # Return an indexed value from an array saved at a certain key. + # + # @param key [String] The key of the array to manage. + # @param pos [Integer] The position to retrieve. + # @param [Any] The value to set for that key. + def self.getAtIndex(key, pos) + @@state[key] ||= [] + @@state[key][pos] + end + + # Set an indexed value from an array saved at a certain key. + # + # @param key [String] The key of the array to manage. + # @param pos [Integer] The position to set at. + # @param [Any] The value to set for that key. + def self.setAtIndex(key, pos, value) + @@state[key] ||= [] + @@state[key][pos] = value + end + + # Append to an array saved at a certain position of an array at a certain key. + # + # @param key [String] The key of the top level array to manage. + # @param pos [Integer] The index where the array to append to exists. + # @param [Any] The value to append to the array at that key. + def self.appendAtIndex(key, pos, value) + @@state[key] ||= [] + @@state[key][pos] ||= [] + @@state[key][pos] << value + end + + + def self.reset(keys) + Array(keys).each { |key| @@state.delete(key) } + end end diff --git a/views/slide.erb b/views/slide.erb index 9dd8a7943..8a8ed71db 100644 --- a/views/slide.erb +++ b/views/slide.erb @@ -4,24 +4,26 @@ else bgstyle='' end -%> -
+
- <% if section_title %> + <% if section_title -%>

<%= section_title %>

- <% end %> + <% end -%> <%= content %>
- - <% if classes.include? 'activity' %> + <% notes.each do |section| -%> + <%= section %> + <% end -%> + <% if classes.include? 'activity' -%> ' " /> - <% end %> + <% end -%>
From c3102cc4a1dcfe74ec9a31fd1acab9ebce551e17 Mon Sep 17 00:00:00 2001 From: Ben Ford Date: Sun, 29 Dec 2019 13:16:22 -0800 Subject: [PATCH 11/46] Glossary and TOC complete now * Methods refactored a little bit to make it clear that they mutate state as they process the DOM. * Not completely happy that the per-slide parts of compilation and the full-document parts are commingled, but I'm not going to spend the extra time to architect that away just yet. * This now makes a fully complete slides content HTML fragment, ready for wrapping in the presentation document template. --- lib/showoff/compiler.rb | 26 +++--- lib/showoff/compiler/downloads.rb | 2 +- lib/showoff/compiler/fixups.rb | 9 +- lib/showoff/compiler/forms.rb | 97 ++++++++++----------- lib/showoff/compiler/glossary.rb | 100 ++++++++++++++++++++-- lib/showoff/compiler/notes.rb | 2 +- lib/showoff/compiler/table_of_contents.rb | 49 +++++++++++ lib/showoff/compiler/toc.rb | 4 - lib/showoff/compiler/variables.rb | 26 +++--- lib/showoff/presentation.rb | 15 +++- public/css/showoff.css | 2 +- 11 files changed, 238 insertions(+), 94 deletions(-) create mode 100644 lib/showoff/compiler/table_of_contents.rb delete mode 100644 lib/showoff/compiler/toc.rb diff --git a/lib/showoff/compiler.rb b/lib/showoff/compiler.rb index 107c8e57f..9253d2774 100644 --- a/lib/showoff/compiler.rb +++ b/lib/showoff/compiler.rb @@ -10,6 +10,7 @@ class Showoff::Compiler require 'showoff/compiler/notes' require 'showoff/compiler/glossary' require 'showoff/compiler/downloads' + require 'showoff/compiler/table_of_contents' def initialize(options) @options = options @@ -69,28 +70,33 @@ def profile profile end + # Compiles markdown and all Showoff extensions into the final HTML output and notes. + # + # @param content [String] markdown content. + # @return [[String, Array]] A tuple of (html content, array of notes contents) + # # @todo I think the update_image_paths() malarky is redundant. Verify that. def render(content) - content = interpolateVariables(content) -# content = selectLanguage(content) + interpolateVariables!(content) +# selectLanguage!(content) html = Tilt[:markdown].new(nil, nil, @profile) { content }.render doc = Nokogiri::HTML::DocumentFragment.parse(html) - doc = renderForms(doc) - doc = Fixups.updateClasses(doc) - doc = Fixups.updateLinks(doc) - doc = Fixups.updateSyntaxHighlighting(doc) - doc = Fixups.updateCommandlineBlocks(doc) - doc = Glossary.render(doc) - doc = Downloads.scanForFiles(doc, @options) + Form.render!(doc, @options) + Fixups.updateClasses!(doc) + Fixups.updateLinks!(doc) + Fixups.updateSyntaxHighlighting!(doc) + Fixups.updateCommandlineBlocks!(doc) + Glossary.render!(doc) + Downloads.scanForFiles!(doc, @options) # This call must be last in the chain because it separates notes from the # content and returns them separately. If it's not last, then the notes # won't have all the compilation steps applied to them. # # must pass in extra context because this will render markdown itself - Notes.render(doc, @profile, @options) + Notes.render!(doc, @profile, @options) end end diff --git a/lib/showoff/compiler/downloads.rb b/lib/showoff/compiler/downloads.rb index 4d649d1b9..f9d616011 100644 --- a/lib/showoff/compiler/downloads.rb +++ b/lib/showoff/compiler/downloads.rb @@ -13,7 +13,7 @@ class Showoff::Compiler::Downloads # # @see # https://github.com/puppetlabs/showoff/blob/3f43754c84f97be4284bb34f9bc7c42175d45226/lib/showoff.rb#L1056-L1073 - def self.scanForFiles(doc, options) + def self.scanForFiles!(doc, options) current = Showoff::State.get(:slide_count) doc.search('p.download').each do |container| links = container.text.gsub(/^\.download ?/, '') diff --git a/lib/showoff/compiler/fixups.rb b/lib/showoff/compiler/fixups.rb index fb8e3cced..904fd517c 100644 --- a/lib/showoff/compiler/fixups.rb +++ b/lib/showoff/compiler/fixups.rb @@ -10,7 +10,7 @@ class Showoff::Compiler::Fixups # The slide document # @return [Nokogiri::HTML::DocumentFragment] # The document with classes applied. - def self.updateClasses(doc) + def self.updateClasses!(doc) doc.search('p').select {|p| p.text.start_with? '.'}.each do |p| # The first string of plain text in the paragraph node = p.children.first @@ -39,10 +39,11 @@ def self.updateClasses(doc) end # Ensure that all links open in a new window. Perhaps move some of this to glossary.rb - def self.updateLinks(doc) + def self.updateLinks!(doc) doc.search('a').each do |link| next unless link['href'] next if link['href'].start_with? '#' + next if link['href'].start_with? 'glossary://' # Add a target so we open all external links from notes in a new window link.set_attribute('target', '_blank') end @@ -53,7 +54,7 @@ def self.updateLinks(doc) # This munges code blocks to ensure the proper syntax highlighting # @see # https://github.com/puppetlabs/showoff/blob/3f43754c84f97be4284bb34f9bc7c42175d45226/lib/showoff.rb#L1105-L1133 - def self.updateSyntaxHighlighting(doc) + def self.updateSyntaxHighlighting!(doc) doc.search('pre').each do |pre| pre.search('code').each do |code| out = code.text @@ -87,7 +88,7 @@ def self.updateSyntaxHighlighting(doc) # @see # https://github.com/puppetlabs/showoff/blob/3f43754c84f97be4284bb34f9bc7c42175d45226/lib/showoff.rb#L1107 # https://github.com/puppetlabs/showoff/blob/3f43754c84f97be4284bb34f9bc7c42175d45226/lib/showoff.rb#L1135-L1163 - def self.updateCommandlineBlocks(doc) + def self.updateCommandlineBlocks!(doc) parser = CommandlineParser.new doc.search('.commandline > pre > code').each do |code| out = code.text diff --git a/lib/showoff/compiler/forms.rb b/lib/showoff/compiler/forms.rb index 1f4fc96fa..dc497cf49 100644 --- a/lib/showoff/compiler/forms.rb +++ b/lib/showoff/compiler/forms.rb @@ -1,21 +1,7 @@ # Adds form processing to the compiler -class Showoff::Compiler - def renderForms(doc) - # only process slides marked as forms - return doc unless @options[:form] - - Showoff::Compiler::Form.new(doc, @options[:form]).render! - end -end - -# Represents an individual form object. -# In a separate class so as to not pollute the compiler class. +# # @see https://github.com/puppetlabs/showoff/blob/3f43754c84f97be4284bb34f9bc7c42175d45226/lib/showoff.rb#L848-L1022 class Showoff::Compiler::Form - def initialize(doc, title) - @doc = doc - @title = title - end # Add the form markup to the slide and then render all elements # @@ -27,42 +13,45 @@ def initialize(doc, title) # # @see # https://github.com/puppetlabs/showoff/blob/3f43754c84f97be4284bb34f9bc7c42175d45226/lib/showoff.rb#L849-L878 - def render! + def self.render!(doc, options={}) + title = options[:form] + return unless title + begin - tools = Nokogiri::XML::Node.new('div', @doc).add_class('tools') - @doc.add_child(tools) + tools = Nokogiri::XML::Node.new('div', doc).add_class('tools') + doc.add_child(tools) - button = Nokogiri::XML::Node.new('input', @doc).add_class('display') + button = Nokogiri::XML::Node.new('input', doc).add_class('display') button.set_attribute('type', 'button') button.set_attribute('value', 'forms.display') tools.add_child(button) - submit = Nokogiri::XML::Node.new('input', @doc).add_class('save') + submit = Nokogiri::XML::Node.new('input', doc).add_class('save') submit.set_attribute('type', 'submit') submit.set_attribute('value', 'forms.save') submit.set_attribute('disabled', 'disabled') tools.add_child(submit) - form = Nokogiri::XML::Node.new('form', @doc).add_class('tools') - form.set_attribute('id', @title) - form.set_attribute('action', "form/#{@title}") + form = Nokogiri::XML::Node.new('form', doc).add_class('tools') + form.set_attribute('id', title) + form.set_attribute('action', "form/#{title}") form.set_attribute('method', 'POST') - @doc.add_child(form) + doc.add_child(form) - @doc.children.each do |elem| + doc.children.each do |elem| next if elem == form elem.parent = form end - @doc.css('p').each do |p| + doc.css('p').each do |p| if p.text =~ /^(\w*) ?(?:->)? ?(.*)? (\*?)= ?(.*)?$/ code = $1 - id = "#{@title}_#{code}" + id = "#{title}_#{code}" name = $2.empty? ? code : $2 required = ! $3.empty? rhs = $4 - p.replace form_element(id, code, name, required, rhs, p.text) + p.replace self.form_element(id, code, name, required, rhs, p.text) end end @@ -71,7 +60,7 @@ def render! @logger.debug "Backtrace:\n\t#{e.backtrace.join("\n\t")}" end - @doc + doc end # Generates markup for any supported form element type @@ -94,49 +83,49 @@ def render! # # @see # https://github.com/puppetlabs/showoff/blob/3f43754c84f97be4284bb34f9bc7c42175d45226/lib/showoff.rb#L880-L903 - def form_element(id, code, name, required, rhs, text) + def self.form_element(id, code, name, required, rhs, text) required = required ? 'required' : '' str = "
" str << "" case rhs when /^\[\s+(\d*)\]$$/ # value = [ 5] (textarea) - str << form_element_textarea(id, code, $1) + str << self.form_element_textarea(id, code, $1) when /^___+(?:\[(\d+)\])?$/ # value = ___[50] (text) - str << form_element_text(id, code, $1) + str << self.form_element_text(id, code, $1) when /^\(.?\)/ # value = (x) option one (=) opt2 () opt3 -> option 3 (radio) - str << form_element_radio(id, code, rhs.scan(/\((.?)\)\s*([^()]+)\s*/)) + str << self.form_element_radio(id, code, rhs.scan(/\((.?)\)\s*([^()]+)\s*/)) when /^\[.?\]/ # value = [x] option one [=] opt2 [] opt3 -> option 3 (checkboxes) - str << form_element_checkboxes(id, code, rhs.scan(/\[(.?)\] ?([^\[\]]+)/)) + str << self.form_element_checkboxes(id, code, rhs.scan(/\[(.?)\] ?([^\[\]]+)/)) when /^\{(.*)\}$/ # value = {BOS, [SFO], (NYC)} (select shorthand) - str << form_element_select(id, code, rhs.scan(/[(\[]?\w+[)\]]?/)) + str << self.form_element_select(id, code, rhs.scan(/[(\[]?\w+[)\]]?/)) when /^\{$/ # value = { (select) - str << form_element_select_multiline(id, code, text) + str << self.form_element_select_multiline(id, code, text) when '' # value = (radio/checkbox list) - str << form_element_multiline(id, code, text) + str << self.form_element_multiline(id, code, text) else @logger.warn "Unmatched form element: #{rhs}" end str << '
' end - def form_element_text(id, code, length) + def self.form_element_text(id, code, length) "" end - def form_element_textarea(id, code, rows) + def self.form_element_textarea(id, code, rows) rows = 3 if rows.empty? "" end - def form_element_radio(id, code, items) - form_element_check_or_radio_set('radio', id, code, items) + def self.form_element_radio(id, code, items) + self.form_element_check_or_radio_set('radio', id, code, items) end - def form_element_checkboxes(id, code, items) - form_element_check_or_radio_set('checkbox', id, code, items) + def self.form_element_checkboxes(id, code, items) + self.form_element_check_or_radio_set('checkbox', id, code, items) end - def form_element_select(id, code, items) + def self.form_element_select(id, code, items) str = "' end - def form_element_select_multiline(id, code, text) + def self.form_element_select_multiline(id, code, text) str = "' end - def form_element_multiline(id, code, text) + def self.form_element_multiline(id, code, text) str = '
    ' text.split("\n")[1..-1].each do |item| @@ -193,13 +182,13 @@ def form_element_multiline(id, code, text) end str << '
  • ' - str << form_element_check_or_radio(type, id, code, value, label, modifier) + str << self.form_element_check_or_radio(type, id, code, value, label, modifier) str << '
  • ' end str << '
' end - def form_element_check_or_radio_set(type, id, code, items) + def self.form_element_check_or_radio_set(type, id, code, items) str = '' items.each do |item| modifier = item[0] @@ -211,22 +200,22 @@ def form_element_check_or_radio_set(type, id, code, items) value = label = item[1] end - str << form_element_check_or_radio(type, id, code, value, label, modifier) + str << self.form_element_check_or_radio(type, id, code, value, label, modifier) end str end - def form_element_check_or_radio(type, id, code, value, label, modifier) + def self.form_element_check_or_radio(type, id, code, value, label, modifier) # yes, value and id are conflated, because this is the id of the parent widget - checked = form_checked?(modifier) - classes = form_classes(modifier) + checked = self.form_checked?(modifier) + classes = self.form_classes(modifier) name = (type == 'checkbox') ? "#{code}[]" : code str = "" str << "" end - def form_classes(modifier) + def self.form_classes(modifier) modifier.downcase! classes = ['response'] classes << 'correct' if modifier.include?('=') @@ -234,7 +223,7 @@ def form_classes(modifier) classes.join(' ') end - def form_checked?(modifier) + def self.form_checked?(modifier) modifier.downcase.include?('x') ? "checked='checked'" : '' end diff --git a/lib/showoff/compiler/glossary.rb b/lib/showoff/compiler/glossary.rb index dbfcbc594..e314aaf64 100644 --- a/lib/showoff/compiler/glossary.rb +++ b/lib/showoff/compiler/glossary.rb @@ -1,7 +1,7 @@ # adds glossary processing to the compiler class Showoff::Compiler::Glossary - # Scan for glossary links and add definitions. This does not yet create the + # Scan for glossary links and add definitions. This does not create the # glossary page at the end. # # @param doc [Nokogiri::HTML::DocumentFragment] @@ -12,7 +12,7 @@ class Showoff::Compiler::Glossary # # @see # https://github.com/puppetlabs/showoff/blob/3f43754c84f97be4284bb34f9bc7c42175d45226/lib/showoff.rb#L650-L706 - def self.render(doc) + def self.render!(doc) # Find all callout style definitions on the slide and add links to the glossary page doc.search('.callout.glossary').each do |item| @@ -24,9 +24,12 @@ def self.render(doc) glossary = (item.attr('class').split - ['callout', 'glossary']).first address = glossary ? "#{glossary}/#{$2}" : $2 - frag = "#{$1}" - item.prepend_child(frag) + link = Nokogiri::XML::Node.new('a', doc).add_class('processed label') + link.set_attribute('href', "glossary://#{address}") + link.content = $1 + + item.prepend_child(link) end # Find glossary links and add definitions to the notes @@ -41,7 +44,9 @@ def self.render(doc) text = link['title'] href = link['href'] - target, name = href.slice('glossary://').split('/') + parts = href.split('/') + target = parts.pop + name = parts.pop # either the glossary name or nil label = link.clone label.add_class('label processed') @@ -66,4 +71,89 @@ def self.render(doc) doc end + # Generate and add the glossary page + # + # @param doc [Nokogiri::HTML::DocumentFragment] + # The presentation document + # + # @return [Nokogiri::HTML::DocumentFragment] + # The presentation DOM with the glossary page rendered. + # + # @see + # https://github.com/puppetlabs/showoff/blob/3f43754c84f97be4284bb34f9bc7c42175d45226/lib/showoff.rb#L770-L810 + def self.generatePage!(doc) + doc.search('.slide.glossary .content').each do |glossary| + name = (glossary.attr('class').split - ['content', 'glossary']).first + list = Nokogiri::XML::Node.new('ul', doc).add_class('glossary terms') + seen = [] + + doc.search('.callout.glossary').each do |item| + target = (item.attr('class').split - ['callout', 'glossary']).first + + # if the name matches or if we didn't name it to begin with. + next unless target == name + + # the definition can exist in multiple places, so de-dup it here + term = item.attr('data-term') + next if seen.include? term + seen << term + + # excrutiatingly find the parent slide content and grab the ref + # in a library less shitty, this would be something like + # $(this).parent().siblings('.content').attr('ref') + href = nil + item.ancestors('.slide').first.traverse do |element| + next if element['class'].nil? + next unless element['class'].split.include? 'content' + + href = element.attr('ref').gsub('/', '_') + end + + text = item.attr('data-text') + link = item.attr('data-target') + page = glossary.attr('ref') + anchor = "#{page}+#{link}" + next if href.nil? or text.nil? or link.nil? + + entry = Nokogiri::XML::Node.new('li', doc) + + label = Nokogiri::XML::Node.new('a', doc).add_class('label') + label.set_attribute('id', anchor) + label.content = term + + link = Nokogiri::XML::Node.new('a', doc).add_class('return') + link.set_attribute('href', "##{href}") + link.content = '↩' + + entry.add_child(label) + entry.add_child(Nokogiri::XML::Text.new(text, doc)) + entry.add_child(link) + + list.add_child(entry) + end + + glossary.add_child(list) + end + + # now fix all the links to point to the glossary page + doc.search('a').each do |link| + next if link['href'].nil? + next unless link['href'].start_with? 'glossary://' + + href = link['href'] + href.slice!('glossary://') + + parts = href.split('/') + target = parts.pop + name = parts.pop # either the glossary name or nil + + classes = name.nil? ? ".slide.glossary" : ".slide.glossary.#{name}" + href = doc.at("#{classes} .content").attr('ref') rescue nil + + link['href'] = "##{href}+#{target}" + end + + doc + end + end diff --git a/lib/showoff/compiler/notes.rb b/lib/showoff/compiler/notes.rb index edd825ae7..beacd060d 100644 --- a/lib/showoff/compiler/notes.rb +++ b/lib/showoff/compiler/notes.rb @@ -20,7 +20,7 @@ class Showoff::Compiler::Notes # https://github.com/puppetlabs/showoff/blob/3f43754c84f97be4284bb34f9bc7c42175d45226/lib/showoff.rb#L616-L716 # @note # A ton of the functionality in the original method got refactored to its logical location - def self.render(doc, profile, options = {}) + def self.render!(doc, profile, options = {}) # Turn tags into classed divs. doc.search('p').select {|p| p.text.start_with?('~~~SECTION:') }.each do |p| klass = p.text.match(/~~~SECTION:([^~]*)~~~/)[1] diff --git a/lib/showoff/compiler/table_of_contents.rb b/lib/showoff/compiler/table_of_contents.rb new file mode 100644 index 000000000..7daddd84d --- /dev/null +++ b/lib/showoff/compiler/table_of_contents.rb @@ -0,0 +1,49 @@ +# adds table of content generation to the compiler +class Showoff::Compiler::TableOfContents + + # Render a table of contents + # + # @param doc [Nokogiri::HTML::DocumentFragment] + # The presentation document + # + # @return [Nokogiri::HTML::DocumentFragment] + # The presentation DOM with the table of contents rendered. + # + # @see + # https://github.com/puppetlabs/showoff/blob/3f43754c84f97be4284bb34f9bc7c42175d45226/lib/showoff.rb#L747-L768 + def self.generate!(doc) + container = doc.search('p').find {|p| p.text == '~~~TOC~~~' } + return doc unless container + + section = nil + toc = Nokogiri::XML::Node.new('ol', doc) + toc.set_attribute('id', 'toc') + + doc.search('div.slide:not(.toc)').each do |slide| + next if slide.search('.content').first.classes.include? 'cover' + + heads = slide.search('div.content h1:not(.section_title)') + title = heads.empty? ? slide['data-title'] : heads.first.text + href = "##{slide['id']}" + + entry = Nokogiri::XML::Node.new('li', doc).add_class('tocentry') + link = Nokogiri::XML::Node.new('a', doc) + link.set_attribute('href', href) + link.content = title + entry.add_child(link) + + if (section and slide['data-section'] == section['data-section']) + section.add_child(entry) + else + section = Nokogiri::XML::Node.new('ol', doc).add_class('major') + section.set_attribute('data-section', slide['data-section']) + entry.add_child(section) + toc.add_child(entry) + end + + end + container.replace(toc) + + doc + end +end diff --git a/lib/showoff/compiler/toc.rb b/lib/showoff/compiler/toc.rb deleted file mode 100644 index 48f71df98..000000000 --- a/lib/showoff/compiler/toc.rb +++ /dev/null @@ -1,4 +0,0 @@ -# adds table of content generation to the compiler -class Showoff::Compiler - -end diff --git a/lib/showoff/compiler/variables.rb b/lib/showoff/compiler/variables.rb index e4f19862a..1c358f34a 100644 --- a/lib/showoff/compiler/variables.rb +++ b/lib/showoff/compiler/variables.rb @@ -10,20 +10,20 @@ class Showoff::Compiler # Had side effects of altering state datastore. # @see # https://github.com/puppetlabs/showoff/blob/3f43754c84f97be4284bb34f9bc7c42175d45226/lib/showoff.rb#L557-L614 - def interpolateVariables(content) + def interpolateVariables!(content) # update counters, incrementing section:minor if needed - result = content.gsub("~~~CURRENT_SLIDE~~~", Showoff::State.get(:slide_count).to_s) - result.gsub!("~~~SECTION:MAJOR~~~", Showoff::State.get(:section_major).to_s) - if result.include? "~~~SECTION:MINOR~~~" + content.gsub!("~~~CURRENT_SLIDE~~~", Showoff::State.get(:slide_count).to_s) + content.gsub!("~~~SECTION:MAJOR~~~", Showoff::State.get(:section_major).to_s) + if content.include? "~~~SECTION:MINOR~~~" Showoff::State.increment(:section_minor) - result.gsub!("~~~SECTION:MINOR~~~", Showoff::State.get(:section_minor).to_s) + content.gsub!("~~~SECTION:MINOR~~~", Showoff::State.get(:section_minor).to_s) end # scan for pagebreak tags. Should really only be used for handout notes or supplemental materials - result.gsub!("~~~PAGEBREAK~~~", '
continued...
') + content.gsub!("~~~PAGEBREAK~~~", '
continued...
') # replace with form rendering placeholder - result.gsub!(/~~~FORM:([^~]*)~~~/, '
') + content.gsub!(/~~~FORM:([^~]*)~~~/, '
') # Now check for any kind of options content.scan(/(~~~CONFIG:(.*?)~~~)/).each do |match| @@ -37,7 +37,7 @@ def interpolateVariables(content) next end - result.gsub!(match[0], value) + content.gsub!(match[0], value) end # Load and replace any file tags @@ -51,21 +51,21 @@ def interpolateVariables(content) file = "Empty file: #{name}" if file.empty? file = HTMLEntities.new.encode(file) rescue "HTML encoding of #{name} failed" - result.gsub!(match[0], "
#{file}
") + content.gsub!(match[0], "
#{file}
") end # insert font awesome icons - result.gsub!(/\[(fa\w?)-(\S*)\]/, '') + content.gsub!(/\[(fa\w?)-(\S*)\]/, '') # For fenced code blocks, translate the space separated classes into one # colon separated string so Commonmarker doesn't ignore the rest - result.gsub!(/^`{3} *(.+)$/) {|s| "``` #{$1.split.join(':')}"} + content.gsub!(/^`{3} *(.+)$/) {|s| "``` #{$1.split.join(':')}"} # escape any tags left and ensure they're in distinctly separate p tags so # that renderers that accept a string of tildes for fenced code blocks don't blow up. # @todo This is terrible and we need to design a better tag syntax. - result.gsub!(/^~~~(.*?)~~~/, "\n\\~~~\\1~~~\n") + content.gsub!(/^~~~(.*?)~~~/, "\n\\~~~\\1~~~\n") - result + content end end diff --git a/lib/showoff/presentation.rb b/lib/showoff/presentation.rb index 9effc93dc..8875485e6 100644 --- a/lib/showoff/presentation.rb +++ b/lib/showoff/presentation.rb @@ -1,6 +1,7 @@ class Showoff::Presentation require 'showoff/presentation/section' require 'showoff/presentation/slide' + require 'showoff/compiler' attr_reader :sections @@ -12,7 +13,19 @@ def initialize(options) def render Showoff::State.reset([:slide_count, :section_major, :section_minor]) - @sections.map(&:render).join("\n") + + # @todo For now, we reparse the html so that we can generate content via + # templates. This adds a bit of extra time, but not too much. Perhaps + # we'll change that at some point. + html = @sections.map(&:render).join("\n") + doc = Nokogiri::HTML::DocumentFragment.parse(html) + + Showoff::Compiler::TableOfContents.generate!(doc) + Showoff::Compiler::Glossary.generatePage!(doc) + + puts doc.to_html end + + end diff --git a/public/css/showoff.css b/public/css/showoff.css index a2ebdf5e3..bc267fcc7 100644 --- a/public/css/showoff.css +++ b/public/css/showoff.css @@ -708,7 +708,7 @@ pre.highlight tr:not(:last-child) { text-decoration: none; } #toc a::after { - content: leader(".") target-counter(attr(href), page); + content: leader(".") target-counter(attr(href url), page); } /********************************** From 7dee28a14f8cb74b8afba9da59a43a4eb7d69ac6 Mon Sep 17 00:00:00 2001 From: Ben Ford Date: Sun, 29 Dec 2019 18:47:29 -0800 Subject: [PATCH 12/46] added the first spec tests --- .rspec | 1 + .travis.yml | 18 +++- Gemfile | 1 + Rakefile | 34 +++--- lib/showoff/compiler.rb | 7 +- lib/showoff/compiler/variables.rb | 6 +- lib/showoff/config.rb | 3 +- spec/fixtures/base.json | 19 ++++ spec/fixtures/namedhash.json | 29 +++++ spec/fixtures/renderer.json | 20 ++++ spec/spec_helper.rb | 108 +++++++++++++++++++ spec/unit/showoff/compiler/variables_spec.rb | 64 +++++++++++ spec/unit/showoff/compiler_spec.rb | 43 ++++++++ spec/unit/showoff/config_spec.rb | 77 +++++++++++++ spec/unit/showoff_ng_spec.rb | 15 +++ 15 files changed, 425 insertions(+), 20 deletions(-) create mode 100644 .rspec create mode 100644 spec/fixtures/base.json create mode 100644 spec/fixtures/namedhash.json create mode 100644 spec/fixtures/renderer.json create mode 100644 spec/spec_helper.rb create mode 100644 spec/unit/showoff/compiler/variables_spec.rb create mode 100644 spec/unit/showoff/compiler_spec.rb create mode 100644 spec/unit/showoff/config_spec.rb create mode 100644 spec/unit/showoff_ng_spec.rb diff --git a/.rspec b/.rspec new file mode 100644 index 000000000..c99d2e739 --- /dev/null +++ b/.rspec @@ -0,0 +1 @@ +--require spec_helper diff --git a/.travis.yml b/.travis.yml index 9458486a7..676f08f35 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,6 +1,22 @@ language: ruby - +sudo: false +bundler_args: --jobs 4 --retry 2 --without packaging documentation before_install: - git config --global user.name "TravisCI" - git config --global user.email "noreply@example.com" - sudo apt-get install wkhtmltopdf +script: + - "bundle exec rake $CHECK" +notifications: + email: false + +matrix: + include: + - rvm: 2.3 + env: "CHECK=spec" + + - rvm: 2.5 + env: "CHECK=spec" + + - rvm: 2.6 + env: "CHECK=spec" diff --git a/Gemfile b/Gemfile index 61ed0d2fb..663b5e10d 100644 --- a/Gemfile +++ b/Gemfile @@ -16,6 +16,7 @@ end group :test do gem 'rake' + gem 'rspec' end gem 'rack-contrib' diff --git a/Rakefile b/Rakefile index 87f901404..9ca7c1f09 100644 --- a/Rakefile +++ b/Rakefile @@ -67,21 +67,29 @@ task 'doc:website' => [:doc] do end end -desc "Run tests" -task :test do - require 'rake/testtask' - - Rake::TestTask.new do |t| - t.libs << 'lib' - t.pattern = 'test/**/*_test.rb' - t.verbose = false - end - - suffix = "-n #{ENV['TEST']}" if ENV['TEST'] - sh "turn test/*_test.rb #{suffix}" +# These tests are currently unmaintained. +# @todo: port and delete +# +# desc "Run tests" +# task :test do +# require 'rake/testtask' +# +# Rake::TestTask.new do |t| +# t.libs << 'lib' +# t.pattern = 'test/**/*_test.rb' +# t.verbose = false +# end +# +# suffix = "-n #{ENV['TEST']}" if ENV['TEST'] +# sh "turn test/*_test.rb #{suffix}" +# end + +desc "Run RSpec unit tests" +task :spec do + ENV["LOG_SPEC_ORDER"] = "true" + sh %{rspec #{ENV['TEST'] || ENV['TESTS'] || 'spec'}} end - desc 'Validate translation files' task 'lang:check' do require 'yaml' diff --git a/lib/showoff/compiler.rb b/lib/showoff/compiler.rb index 9253d2774..d6d52ccc6 100644 --- a/lib/showoff/compiler.rb +++ b/lib/showoff/compiler.rb @@ -58,9 +58,12 @@ def profile when 'commonmarker', 'commonmark' Tilt.prefer Tilt::CommonMarkerTemplate, "markdown" - else + when 'redcarpet', :default Tilt.prefer Tilt::RedcarpetTemplate, "markdown" + else + raise 'Unsupported markdown renderer' + end rescue LoadError puts "ERROR: The #{renderer} markdown rendering engine does not appear to be installed correctly." @@ -77,7 +80,7 @@ def profile # # @todo I think the update_image_paths() malarky is redundant. Verify that. def render(content) - interpolateVariables!(content) + Variables::interpolate!(content) # selectLanguage!(content) html = Tilt[:markdown].new(nil, nil, @profile) { content }.render diff --git a/lib/showoff/compiler/variables.rb b/lib/showoff/compiler/variables.rb index 1c358f34a..9b8c270fc 100644 --- a/lib/showoff/compiler/variables.rb +++ b/lib/showoff/compiler/variables.rb @@ -1,5 +1,5 @@ # Adds variable interpolation to the compiler -class Showoff::Compiler +class Showoff::Compiler::Variables # # # @param content [String] @@ -10,7 +10,7 @@ class Showoff::Compiler # Had side effects of altering state datastore. # @see # https://github.com/puppetlabs/showoff/blob/3f43754c84f97be4284bb34f9bc7c42175d45226/lib/showoff.rb#L557-L614 - def interpolateVariables!(content) + def self.interpolate!(content) # update counters, incrementing section:minor if needed content.gsub!("~~~CURRENT_SLIDE~~~", Showoff::State.get(:slide_count).to_s) content.gsub!("~~~SECTION:MAJOR~~~", Showoff::State.get(:section_major).to_s) @@ -55,7 +55,7 @@ def interpolateVariables!(content) end # insert font awesome icons - content.gsub!(/\[(fa\w?)-(\S*)\]/, '') + content.gsub!(/\[(fa\w?)-(\S*) ?(.*)\]/, '') # For fenced code blocks, translate the space separated classes into one # colon separated string so Commonmarker doesn't ignore the rest diff --git a/lib/showoff/config.rb b/lib/showoff/config.rb index d18904057..717ae12d6 100644 --- a/lib/showoff/config.rb +++ b/lib/showoff/config.rb @@ -173,7 +173,8 @@ def self.legacy_sections(data) def self.load_defaults! # use a symbol which cannot clash with a string key loaded from json - renderer = @@config['markdown'] || :autodetected + @@config['markdown'] ||= :default + renderer = @@config['markdown'] defaults = case renderer when 'rdiscount' { diff --git a/spec/fixtures/base.json b/spec/fixtures/base.json new file mode 100644 index 000000000..fa55d15d0 --- /dev/null +++ b/spec/fixtures/base.json @@ -0,0 +1,19 @@ +{ + "name": "Basic Showoff config file", + "description": "This is a description.", + "protected": [ + "presenter", + "onepage", + "print" + ], + "version": "0.20.0", + "feedback": true, + "parsers" : { + "shell": "cat" + }, + "sections": [ + "Overview.md", + "Content.md", + "Conclusion.md" + ] +} diff --git a/spec/fixtures/namedhash.json b/spec/fixtures/namedhash.json new file mode 100644 index 000000000..77fd6aedb --- /dev/null +++ b/spec/fixtures/namedhash.json @@ -0,0 +1,29 @@ +{ + "name": "Basic Showoff config file", + "description": "This is a description.", + "protected": [ + "presenter", + "onepage", + "print" + ], + "version": "0.20.0", + "feedback": true, + "parsers" : { + "shell": "cat" + }, + "sections": { + "Overview": [ + "title.md", + "intro.md", + "about.md" + ], + "Content": [ + "one.md", + "two.md" + ], + "Conclusion": [ + "summary.md", + "end.md" + ] + } +} diff --git a/spec/fixtures/renderer.json b/spec/fixtures/renderer.json new file mode 100644 index 000000000..7d33ab8fe --- /dev/null +++ b/spec/fixtures/renderer.json @@ -0,0 +1,20 @@ +{ + "name": "Basic Showoff config file", + "description": "This is a description.", + "protected": [ + "presenter", + "onepage", + "print" + ], + "version": "0.20.0", + "feedback": true, + "parsers" : { + "shell": "cat" + }, + "sections": [ + "Overview.md", + "Content.md", + "Conclusion.md" + ], + "markdown": "maruku" +} diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb new file mode 100644 index 000000000..46ce0fc0d --- /dev/null +++ b/spec/spec_helper.rb @@ -0,0 +1,108 @@ +# This file was generated by the `rspec --init` command. Conventionally, all +# specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`. +# The generated `.rspec` file contains `--require spec_helper` which will cause +# this file to always be loaded, without a need to explicitly require it in any +# files. +# +# Given that it is always loaded, you are encouraged to keep this file as +# light-weight as possible. Requiring heavyweight dependencies from this file +# will add to the boot time of your test suite on EVERY test run, even for an +# individual file that may not need all of that loaded. Instead, consider making +# a separate helper file that requires the additional dependencies and performs +# the additional setup, and require it from the spec files that actually need +# it. +# +# See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration + +require 'showoff_ng' + +# helper method to return the base path of the fixtures directory +def fixtures + File.expand_path(File.join(File.dirname(__FILE__), 'fixtures')) +end + +RSpec.configure do |config| + # rspec-expectations config goes here. You can use an alternate + # assertion/expectation library such as wrong or the stdlib/minitest + # assertions if you prefer. + config.expect_with :rspec do |expectations| + # This option will default to `true` in RSpec 4. It makes the `description` + # and `failure_message` of custom matchers include text for helper methods + # defined using `chain`, e.g.: + # be_bigger_than(2).and_smaller_than(4).description + # # => "be bigger than 2 and smaller than 4" + # ...rather than: + # # => "be bigger than 2" + expectations.include_chain_clauses_in_custom_matcher_descriptions = true + end + + # rspec-mocks config goes here. You can use an alternate test double + # library (such as bogus or mocha) by changing the `mock_with` option here. + config.mock_with :rspec do |mocks| + # Prevents you from mocking or stubbing a method that does not exist on + # a real object. This is generally recommended, and will default to + # `true` in RSpec 4. + mocks.verify_partial_doubles = true + end + + # This option will default to `:apply_to_host_groups` in RSpec 4 (and will + # have no way to turn it off -- the option exists only for backwards + # compatibility in RSpec 3). It causes shared context metadata to be + # inherited by the metadata hash of host groups and examples, rather than + # triggering implicit auto-inclusion in groups with matching metadata. + config.shared_context_metadata_behavior = :apply_to_host_groups + +# The settings below are suggested to provide a good initial experience +# with RSpec, but feel free to customize to your heart's content. +=begin + # This allows you to limit a spec run to individual examples or groups + # you care about by tagging them with `:focus` metadata. When nothing + # is tagged with `:focus`, all examples get run. RSpec also provides + # aliases for `it`, `describe`, and `context` that include `:focus` + # metadata: `fit`, `fdescribe` and `fcontext`, respectively. + config.filter_run_when_matching :focus + + # Allows RSpec to persist some state between runs in order to support + # the `--only-failures` and `--next-failure` CLI options. We recommend + # you configure your source control system to ignore this file. + config.example_status_persistence_file_path = "spec/examples.txt" + + # Limits the available syntax to the non-monkey patched syntax that is + # recommended. For more details, see: + # - http://rspec.info/blog/2012/06/rspecs-new-expectation-syntax/ + # - http://www.teaisaweso.me/blog/2013/05/27/rspecs-new-message-expectation-syntax/ + # - http://rspec.info/blog/2014/05/notable-changes-in-rspec-3/#zero-monkey-patching-mode + config.disable_monkey_patching! + + # This setting enables warnings. It's recommended, but in some cases may + # be too noisy due to issues in dependencies. + config.warnings = true + + # Many RSpec users commonly either run the entire suite or an individual + # file, and it's useful to allow more verbose output when running an + # individual spec file. + if config.files_to_run.one? + # Use the documentation formatter for detailed output, + # unless a formatter has already been configured + # (e.g. via a command-line flag). + config.default_formatter = "doc" + end + + # Print the 10 slowest examples and example groups at the + # end of the spec run, to help surface which specs are running + # particularly slow. + config.profile_examples = 10 + + # Run specs in random order to surface order dependencies. If you find an + # order dependency and want to debug it, you can fix the order by providing + # the seed, which is printed after each run. + # --seed 1234 + config.order = :random + + # Seed global randomization in this process using the `--seed` CLI option. + # Setting this allows you to use `--seed` to deterministically reproduce + # test failures related to randomization by passing the same `--seed` value + # as the one that triggered the failure. + Kernel.srand config.seed +=end +end diff --git a/spec/unit/showoff/compiler/variables_spec.rb b/spec/unit/showoff/compiler/variables_spec.rb new file mode 100644 index 000000000..1bdebe63b --- /dev/null +++ b/spec/unit/showoff/compiler/variables_spec.rb @@ -0,0 +1,64 @@ +RSpec.describe Showoff::Compiler::Variables do + + it "interpolates simple tokens" do + content = <<-EOF +# This is a simple markdown slide + +~~~PAGEBREAK~~~ + +~~~FORM:boogerwoog~~~ + +[fa-podcast] +[fa-smile-o some classes] + +``` Ruby and some other classes +puts "hello" +``` + +~~~TEST~~~ +~~~TEST2~~~ +EOF + + # This call mutates the passed in object + Showoff::Compiler::Variables.interpolate!(content) + + expect(content).to be_a(String) + expect(content).to match(/
continued...<\/div>/) + expect(content).to match(/
<\/div>/) + expect(content).to match(/<\/i>/) + expect(content).to match(/<\/i>/) + expect(content).to match(/``` Ruby:and:some:other:classes/) + expect(content).to match(/\\~~~TEST~~~/) + expect(content).to match(/\n\n\\~~~TEST~~~\n\n/) + end + + it "interpolates slide counters" do + content = <<-EOF +# This is a simple markdown slide + +current:~~~CURRENT_SLIDE~~~ + +major:~~~SECTION:MAJOR~~~ + +minor:~~~SECTION:MINOR~~~ + +EOF + content2 = content.dup + + Showoff::State.set(:slide_count, 23) + Showoff::State.set(:section_major, 1) + + # This call mutates the passed in object + Showoff::Compiler::Variables.interpolate!(content) + expect(content).to be_a(String) + expect(content).to match(/current:23/) + expect(content).to match(/major:1/) + expect(content).to match(/minor:1/) + + # now interpolate the "second slide" and ensure that the minor counter incremented + Showoff::Compiler::Variables.interpolate!(content2) + expect(content2).to match(/major:1/) + expect(content2).to match(/minor:2/) + end + +end diff --git a/spec/unit/showoff/compiler_spec.rb b/spec/unit/showoff/compiler_spec.rb new file mode 100644 index 000000000..554e65db9 --- /dev/null +++ b/spec/unit/showoff/compiler_spec.rb @@ -0,0 +1,43 @@ +RSpec.describe Showoff::Compiler do + + it "resolves the default renderer properly" do + expect(Showoff::Config).to receive(:get).with('markdown').and_return(:default) + expect(Showoff::Config).to receive(:get).with(:default).and_return({}) + expect(Tilt).to receive(:prefer).with(Tilt::RedcarpetTemplate, 'markdown') + expect(Tilt.template_for('markdown')).to eq(Tilt::RedcarpetTemplate) + + Showoff::Compiler.new({:name => 'foo'}) + end + + it "resolves a configured renderer" do + expect(Showoff::Config).to receive(:get).with('markdown').and_return('commonmarker') + expect(Showoff::Config).to receive(:get).with('commonmarker').and_return({}) + expect(Tilt).to receive(:prefer).with(Tilt::CommonMarkerTemplate, 'markdown') + #expect(Tilt.template_for('markdown')).to eq(Tilt::CommonMarkerTemplate) # polluted state doesn't allow this to succeed + + Showoff::Compiler.new({:name => 'foo'}) + end + + it "errors when configured with an unknown renderer" do + expect(Showoff::Config).to receive(:get).with('markdown').and_return('wrong') + expect(Showoff::Config).to receive(:get).with('wrong').and_return({}) + + expect { Showoff::Compiler.new({:name => 'foo'}) }.to raise_error(StandardError, 'Unsupported markdown renderer') + end + + # note that this test is basically a simple integration test of all the compiler components. + it "renders content as expected" do + Showoff::Config.load(fixtures, 'base.json') + + content, notes = Showoff::Compiler.new({:name => 'foo'}).render("#Hi there!\n\n.callout The Internet is serious business.") + + expect(content).to be_a(Nokogiri::HTML::DocumentFragment) + expect(notes).to be_a(Nokogiri::XML::NodeSet) + expect(notes.empty?).to be_truthy + + expect(content.search('h1').first.text).to eq('Hi there!') + expect(content.search('p').first.text).to eq('The Internet is serious business.') + expect(content.search('p').first.classes).to eq(['callout']) + end + +end diff --git a/spec/unit/showoff/config_spec.rb b/spec/unit/showoff/config_spec.rb new file mode 100644 index 000000000..d8e37ca0b --- /dev/null +++ b/spec/unit/showoff/config_spec.rb @@ -0,0 +1,77 @@ +RSpec.describe Showoff::Config do + context 'base configuration' do + before(:each) do + Showoff::Config.load(fixtures, 'base.json') + end + + it "loads configuration from disk" do + expect(Showoff::Config.root).to eq(fixtures) + expect(Showoff::Config.keys).to eq(['name', 'description', 'protected', 'version', 'feedback', 'parsers', 'sections', 'markdown', :default]) + end + + it "calculates relative paths" do + expect(Showoff::Config.path('foo/bar')).to eq('foo/bar') + expect(Showoff::Config.path('../fixtures')).to eq(fixtures) + end + + it "loads proper markdown profile" do + expect(Showoff::Config.get('markdown')).to eq(:default) + expect(Showoff::Config.get(:default)).to be_a(Hash) + expect(Showoff::Config.get(:default)).to eq({ + :autolink => true, + :no_intra_emphasis => true, + :superscript => true, + :tables => true, + :underline => true, + :escape_html => false, + }) + end + + it "expands sections" do + expect(Showoff::Config.sections).to be_a(Hash) + expect(Showoff::Config.sections['.']).to be_an(Array) + expect(Showoff::Config.sections['.']).to all be_a(String) + expect(Showoff::Config.sections['.']).to eq(['Overview.md', 'Content.md', 'Conclusion.md']) + end + end + + context 'with named hash sections' do + before(:each) do + Showoff::Config.load(fixtures, 'namedhash.json') + end + + it "loads configuration from disk" do + expect(Showoff::Config.root).to eq(fixtures) + expect(Showoff::Config.keys).to eq(['name', 'description', 'protected', 'version', 'feedback', 'parsers', 'sections', 'markdown', :default]) + end + + it "expands sections" do + expect(Showoff::Config.sections).to be_a(Hash) + expect(Showoff::Config.sections.keys).to eq(['Overview', 'Content', 'Conclusion']) + expect(Showoff::Config.sections['Overview']).to all be_a(String) + expect(Showoff::Config.sections['Overview']).to eq(['title.md', 'intro.md', 'about.md']) + end + end + + context 'with configured markdown renderer' do + before(:each) do + Showoff::Config.load(fixtures, 'renderer.json') + end + + it "loads configuration from disk" do + expect(Showoff::Config.root).to eq(fixtures) + expect(Showoff::Config.keys).to eq(['name', 'description', 'protected', 'version', 'feedback', 'parsers', 'sections', 'markdown', 'maruku']) + end + + it "loads proper markdown profile" do + expect(Showoff::Config.get('markdown')).to eq('maruku') + expect(Showoff::Config.get('maruku')).to be_a(Hash) + expect(Showoff::Config.get('maruku')).to eq({ + :use_tex => false, + :png_dir => 'images', + :html_png_url => '/file/images/', + }) + end + end + +end diff --git a/spec/unit/showoff_ng_spec.rb b/spec/unit/showoff_ng_spec.rb new file mode 100644 index 000000000..de048de25 --- /dev/null +++ b/spec/unit/showoff_ng_spec.rb @@ -0,0 +1,15 @@ +# RSpec.describe Order do +# it "sums the prices of its line items" do +# order = Order.new +# +# order.add_entry(LineItem.new(:item => Item.new( +# :price => Money.new(1.11, :USD) +# ))) +# order.add_entry(LineItem.new(:item => Item.new( +# :price => Money.new(2.22, :USD), +# :quantity => 2 +# ))) +# +# expect(order.total).to eq(Money.new(5.55, :USD)) +# end +# end From 6952f8f836b1f629b4687d509bea80a7fa4b4fc4 Mon Sep 17 00:00:00 2001 From: Ben Ford Date: Mon, 30 Dec 2019 17:19:11 -0800 Subject: [PATCH 13/46] Adding a few more tests --- lib/showoff/compiler/downloads.rb | 8 +- lib/showoff/state.rb | 8 +- spec/fixtures/glossary_toc/content.html | 75 +++++++++ spec/fixtures/glossary_toc/content.md | 32 ++++ spec/fixtures/glossary_toc/showoff.json | 7 + spec/unit/showoff/compiler/downloads_spec.rb | 84 ++++++++++ spec/unit/showoff/compiler/fixups_spec.rb | 157 +++++++++++++++++++ spec/unit/showoff/compiler/glossary_spec.rb | 80 ++++++++++ 8 files changed, 448 insertions(+), 3 deletions(-) create mode 100644 spec/fixtures/glossary_toc/content.html create mode 100644 spec/fixtures/glossary_toc/content.md create mode 100644 spec/fixtures/glossary_toc/showoff.json create mode 100644 spec/unit/showoff/compiler/downloads_spec.rb create mode 100644 spec/unit/showoff/compiler/fixups_spec.rb create mode 100644 spec/unit/showoff/compiler/glossary_spec.rb diff --git a/lib/showoff/compiler/downloads.rb b/lib/showoff/compiler/downloads.rb index f9d616011..0983e148b 100644 --- a/lib/showoff/compiler/downloads.rb +++ b/lib/showoff/compiler/downloads.rb @@ -72,6 +72,7 @@ def self.pushFile(index, current, source, file) def self.enableFiles(index) record = Showoff::State.getAtIndex(:downloads, index) + return unless record record[:enabled] = true Showoff::State.setAtIndex(:downloads, index, record) @@ -79,7 +80,12 @@ def self.enableFiles(index) def self.getFiles(index) record = Showoff::State.getAtIndex(:downloads, index) - record[:slides] if record[:enabled] + + if (record and record[:enabled]) + record[:slides] + else + [] + end end end diff --git a/lib/showoff/state.rb b/lib/showoff/state.rb index ec0943fb0..7dd2ccfa9 100644 --- a/lib/showoff/state.rb +++ b/lib/showoff/state.rb @@ -79,7 +79,11 @@ def self.appendAtIndex(key, pos, value) end - def self.reset(keys) - Array(keys).each { |key| @@state.delete(key) } + def self.reset(keys=nil) + if keys + Array(keys).each { |key| @@state.delete(key) } + else + @@state = {} + end end end diff --git a/spec/fixtures/glossary_toc/content.html b/spec/fixtures/glossary_toc/content.html new file mode 100644 index 000000000..5117f4b81 --- /dev/null +++ b/spec/fixtures/glossary_toc/content.html @@ -0,0 +1,75 @@ + +
+
+ +

.

+ +

Table of Contents

+ +

~~~TOC~~~

+ + +
+ +
+ +
+
+ +

.

+ +

Glossary and TOC Demo

+ +

This phrase will +appear directly in a paragraph.

+ +

By hand, yo!I made this one by hand and it stands alone.

+ +

This phrase +will appear directly in a paragraph and link to a named glossary.

+ +

By hand, yo!I made this one by hand and it also

+ + +
+
+

phraseThe definition of the term.

+

phraseThe definition of the term.

+
+
+

phraseThe definition of the term.

+

phraseThe definition of the term.

+
+ +
+ +
+
+ +

.

+ +

General Glossary

+ +

You can add any markdown you want up here. A list of glossary items will be added to the end.

+ + +
+ +
+ +
+
+ +

.

+ +

This is a named glossary

+ +

You can add any markdown you want up here. A list of glossary items will be added to the end.

+ + +
+ +
diff --git a/spec/fixtures/glossary_toc/content.md b/spec/fixtures/glossary_toc/content.md new file mode 100644 index 000000000..309bc1092 --- /dev/null +++ b/spec/fixtures/glossary_toc/content.md @@ -0,0 +1,32 @@ + +# Table of Contents + +~~~TOC~~~ + + + +# Glossary and TOC Demo + +This [phrase](glossary://term-with-no-spaces "The definition of the term.") will +appear directly in a paragraph. + +.callout.glossary By hand, yo!|by-hand: I made this one by hand and it stands alone. + +This [phrase](glossary://name/term-with-no-spaces "The definition of the term.") +will appear directly in a paragraph and link to a named glossary. + + +.callout.glossary.name By hand, yo!|by-hand: I made this one by hand and it also +goes to the named glossary. + + + +# General Glossary + +You can add any markdown you want up here. A list of glossary items will be added to the end. + + + +# This is a named glossary + +You can add any markdown you want up here. A list of glossary items will be added to the end. diff --git a/spec/fixtures/glossary_toc/showoff.json b/spec/fixtures/glossary_toc/showoff.json new file mode 100644 index 000000000..e1c1b66b9 --- /dev/null +++ b/spec/fixtures/glossary_toc/showoff.json @@ -0,0 +1,7 @@ +{ + "name": "Glossary and TOC test", + "description": "This is a simple presentation that generates a TOC and glossary.", + "sections": [ + "content.md" + ] +} diff --git a/spec/unit/showoff/compiler/downloads_spec.rb b/spec/unit/showoff/compiler/downloads_spec.rb new file mode 100644 index 000000000..63ce9c3b7 --- /dev/null +++ b/spec/unit/showoff/compiler/downloads_spec.rb @@ -0,0 +1,84 @@ +RSpec.describe Showoff::Compiler::Downloads do + content = <<-EOF +

This is a simple HTML slide with download tags

+

Here are a few tags that should be transformed to attachments

+

link/to/one.txt +.download link/to/two.txt all +.download link/to/three.txt prev +.download link/to/four.txt current +.download link/to/five.txt next

+EOF + + tests = { + :all => {:slide => 0, :files => ['link/to/two.txt']}, + :pre => {:slide => 21, :files => []}, + :prev => {:slide => 22, :files => ['link/to/three.txt']}, + :curr => {:slide => 23, :files => ['link/to/four.txt']}, + :next => {:slide => 24, :files => ['link/to/one.txt', 'link/to/five.txt']}, + :post => {:slide => 25, :files => []}, + } + + tests.each do |period, data| + it "transforms download tags to #{period} slide attachments" do + doc = Nokogiri::HTML::DocumentFragment.parse(content) + + Showoff::State.reset() + Showoff::State.set(:slide_count, 23) + + # This call mutates the passed in object + Showoff::Compiler::Downloads.scanForFiles!(doc, :name => 'foo') + elements = doc.search('p') + slide = data[:slide] + files = data[:files] + + expect(doc).to be_a(Nokogiri::HTML::DocumentFragment) + expect(elements.length).to eq(1) + expect(Showoff::Compiler::Downloads.getFiles(slide)).to eq([]) + + Showoff::Compiler::Downloads.enableFiles(slide) + expect(Showoff::Compiler::Downloads.getFiles(slide).size).to eq(files.length) + expect(Showoff::Compiler::Downloads.getFiles(slide).map{|a| a[:source] }).to all eq('foo') + expect(Showoff::Compiler::Downloads.getFiles(slide).map{|a| a[:slidenum] }).to all eq(23) + expect(Showoff::Compiler::Downloads.getFiles(slide).map{|a| a[:file] }).to eq(files) + end + end + + it "removes a paragraph of download tags from document" do + doc = Nokogiri::HTML::DocumentFragment.parse(content) + Showoff::State.set(:slide_count, 23) + + # This call mutates the passed in object + Showoff::Compiler::Downloads.scanForFiles!(doc, :name => 'foo') + elements = doc.search('p') + + expect(doc).to be_a(Nokogiri::HTML::DocumentFragment) + expect(elements.length).to eq(1) + end + + it "returns an empty array for a blank stack" do + Showoff::State.reset() + + expect(Showoff::Compiler::Downloads.getFiles(12)).to eq([]) + end + + it "pushes a file onto the attachment stack" do + Showoff::State.reset() + + expect(Showoff::Compiler::Downloads.pushFile(12, 12, 'foo', 'path/to/file.txt')[:enabled]).to be_falsey + expect(Showoff::Compiler::Downloads.getFiles(12)).to eq([]) + Showoff::State.get(:downloads)[12] = {:enabled=>false, :slides=>[{:slidenum=>12, :source=>"foo", :file=>"path/to/file.txt"}]} + end + + it "enables a download properly" do + Showoff::State.reset() + + expect(Showoff::Compiler::Downloads.pushFile(12, 12, 'foo', 'path/to/file.txt')[:enabled]).to be_falsey + expect(Showoff::Compiler::Downloads.getFiles(12)).to eq([]) + + Showoff::Compiler::Downloads.enableFiles(12) + expect(Showoff::Compiler::Downloads.getFiles(12)).to eq([{:slidenum=>12, :source=>"foo", :file=>"path/to/file.txt"}]) + end + +end + + diff --git a/spec/unit/showoff/compiler/fixups_spec.rb b/spec/unit/showoff/compiler/fixups_spec.rb new file mode 100644 index 000000000..db04ab60d --- /dev/null +++ b/spec/unit/showoff/compiler/fixups_spec.rb @@ -0,0 +1,157 @@ +RSpec.describe Showoff::Compiler::Fixups do + + it "replaces paragraph classes" do + content = <<-EOF +

This is a simple HTML slide

+

.this.is.a.test This paragraph should have several classes applied.

+

.singular This should only have one.

+

And this has none.

+EOF + doc = Nokogiri::HTML::DocumentFragment.parse(content) + + # This call mutates the passed in object + Showoff::Compiler::Fixups.updateClasses!(doc) + elements = doc.search('p') + + expect(doc).to be_a(Nokogiri::HTML::DocumentFragment) + expect(elements.length).to eq(3) + expect(elements[0].classes).to eq(['this', 'is', 'a', 'test']) + expect(elements[1].classes).to eq(['singular']) + expect(elements[2].classes).to eq([]) + end + + it "removes comments and breaks" do + content = <<-EOF +

This is a simple HTML slide

+

.this.is.a.test This paragraph should have several classes applied.

+

.comment This should be removed.

+

.break so should this.

+

And this has none.

+EOF + doc = Nokogiri::HTML::DocumentFragment.parse(content) + + # This call mutates the passed in object + Showoff::Compiler::Fixups.updateClasses!(doc) + elements = doc.search('p') + + expect(doc).to be_a(Nokogiri::HTML::DocumentFragment) + expect(elements.length).to eq(2) + expect(elements[0].classes).to eq(['this', 'is', 'a', 'test']) + expect(elements[1].classes).to eq([]) + end + + it "replaces image classes" do + content = <<-EOF +

This is a simple HTML slide

+

.this.is.a.test

+EOF + doc = Nokogiri::HTML::DocumentFragment.parse(content) + + # This call mutates the passed in object + Showoff::Compiler::Fixups.updateClasses!(doc) + paragraphs = doc.search('p') + images = doc.search('img') + + expect(doc).to be_a(Nokogiri::HTML::DocumentFragment) + expect(paragraphs.length).to eq(1) + expect(paragraphs.text).to eq('') + expect(images.length).to eq(1) + expect(images[0].classes).to eq(['this', 'is', 'a', 'test']) + end + + it "updates link targets" do + content = <<-EOF +

This is a simple HTML slide

+ +EOF + doc = Nokogiri::HTML::DocumentFragment.parse(content) + + # This call mutates the passed in object + Showoff::Compiler::Fixups.updateLinks!(doc) + paragraphs = doc.search('p') + anchors = doc.search('a') + + expect(doc).to be_a(Nokogiri::HTML::DocumentFragment) + expect(paragraphs.length).to eq(0) + expect(anchors.length).to eq(4) + expect(anchors[0].attribute('target').value).to eq('_blank') + expect(anchors[1].attribute('target')).to be_nil + expect(anchors[2].attribute('target')).to be_nil + expect(anchors[3].attribute('target')).to be_nil + end + + it "correctly munges backtick fenced code blocks" do + content = <<-EOF +

This is a simple HTML slide with code

+
echo 'hello'
+
+
puts 'hello'
+
+
puts 'goodbye'
+
+EOF + doc = Nokogiri::HTML::DocumentFragment.parse(content) + + # This call mutates the passed in object + Showoff::Compiler::Fixups.updateSyntaxHighlighting!(doc) + paragraphs = doc.search('p') + pre = doc.search('pre') + code = doc.search('code') + + expect(doc).to be_a(Nokogiri::HTML::DocumentFragment) + expect(paragraphs.length).to eq(0) + expect(pre.length).to eq(3) + expect(code.length).to eq(3) + expect(pre[0].classes).to eq([]) + expect(pre[1].classes).to eq(['highlight']) + expect(pre[2].classes).to eq(['highlight']) + expect(code[0].classes).to eq([]) + expect(code[1].classes).to eq(['language-ruby']) + expect(code[2].classes).to eq(['language-ruby', 'goodbye']) + end + + it "correctly munges showoff syntax tags" do + content = <<-EOF +

This is a simple HTML slide with showoff syntax tags

+

+echo 'hello'
+
+
@@@ ruby
+puts 'hello'
+
+
@@@ ruby goodbye
+puts 'goodbye'
+
+EOF + doc = Nokogiri::HTML::DocumentFragment.parse(content) + + # This call mutates the passed in object + Showoff::Compiler::Fixups.updateSyntaxHighlighting!(doc) + paragraphs = doc.search('p') + pre = doc.search('pre') + code = doc.search('code') + + expect(doc).to be_a(Nokogiri::HTML::DocumentFragment) + expect(paragraphs.length).to eq(0) + expect(pre.length).to eq(3) + expect(code.length).to eq(3) + expect(pre[0].classes).to eq([]) + expect(pre[1].classes).to eq(['highlight']) + expect(pre[2].classes).to eq(['highlight']) + expect(code[0].classes).to eq([]) + expect(code[1].classes).to eq(['language-ruby']) + expect(code[2].classes).to eq(['language-ruby', 'goodbye']) + end + + # I don't actually know precisely what this routine does yet..... + it "correctly munges commandline blocks" + +end + + + diff --git a/spec/unit/showoff/compiler/glossary_spec.rb b/spec/unit/showoff/compiler/glossary_spec.rb new file mode 100644 index 000000000..60ccf1876 --- /dev/null +++ b/spec/unit/showoff/compiler/glossary_spec.rb @@ -0,0 +1,80 @@ +RSpec.describe Showoff::Compiler::Glossary do + content = <<-EOF +

This is a simple HTML slide with glossary entries

+

This will have a phrase in the paragraph.

+

By hand, yo!|by-hand: I made this one by hand.

+

This entry is attached to a named glossary.

+

By hand, yo!|by-hand: I made this one by hand.

+EOF + + it "generates glossary entries on a slide" do + doc = Nokogiri::HTML::DocumentFragment.parse(content) + + # This call mutates the passed in object + Showoff::Compiler::Glossary.render!(doc) + + callouts = doc.search('.callout.glossary').select {|n| n.ancestors.size == 1} + links = doc.search('a').select {|n| n.ancestors.size == 2} + + expect(doc).to be_a(Nokogiri::HTML::DocumentFragment) + expect(doc.search('.callout.glossary').length).to eq(6) + expect(callouts.length).to eq(2) + expect(callouts.first.classes).to eq(["callout", "glossary"]) + expect(callouts.first.element_children.size).to eq(1) + expect(callouts.first.element_children.first[:href]).to eq('glossary://by-hand') + + expect(callouts.last.classes).to eq(["callout", "glossary", "name"]) + expect(callouts.last.element_children.size).to eq(1) + expect(callouts.last.element_children.first[:href]).to eq('glossary://name/by-hand') + + expect(links.length).to eq(4) + expect(links.select {|link| link[:href].start_with? 'glossary://'}.size).to eq(4) + expect(links.select {|link| link.classes.include? 'term'}.size).to eq(2) + expect(links.select {|link| link.classes.include? 'label'}.size).to eq(2) + end + + it "generates glossary entries in the presenter notes section of a slide" do + doc = Nokogiri::HTML::DocumentFragment.parse(content) + + # This call mutates the passed in object + Showoff::Compiler::Glossary.render!(doc) + + expect(doc).to be_a(Nokogiri::HTML::DocumentFragment) + expect(doc.search('.notes-section.notes').length).to eq(1) + expect(doc.search('.notes-section.notes > .callout.glossary').length).to eq(2) + expect(doc.search('.notes-section.handouts > .callout.glossary').length).to eq(2) + end + + it "generates glossary entries in the handout notes section of a slide" do + doc = Nokogiri::HTML::DocumentFragment.parse(content) + + # This call mutates the passed in object + Showoff::Compiler::Glossary.render!(doc) + + expect(doc).to be_a(Nokogiri::HTML::DocumentFragment) + expect(doc.search('.notes-section.handouts').length).to eq(1) + expect(doc.search('.notes-section.handouts > .callout.glossary').length).to eq(2) + end + + it "generates a glossary page" do + html = File.read(File.join(fixtures, 'glossary_toc', 'content.html')) + doc = Nokogiri::HTML::DocumentFragment.parse(html) + + Showoff::Compiler::Glossary.generatePage!(doc) + + expect(doc.search('.slide.glossary:not(.name)').size).to eq(1) + expect(doc.search('.slide.glossary:not(.name) li a').size).to eq(4) + expect(doc.search('.slide.glossary:not(.name) li a')[0][:id]).to eq('content:3+by-hand') + expect(doc.search('.slide.glossary:not(.name) li a')[1][:href]).to eq('#content:2') + expect(doc.search('.slide.glossary:not(.name) li a')[2][:id]).to eq('content:3+term-with-no-spaces') + expect(doc.search('.slide.glossary:not(.name) li a')[3][:href]).to eq('#content:2') + + expect(doc.search('.slide.glossary.name').size).to eq(1) + expect(doc.search('.slide.glossary.name li a').size).to eq(4) + expect(doc.search('.slide.glossary.name li a')[0][:id]).to eq('content:4+by-hand') + expect(doc.search('.slide.glossary.name li a')[1][:href]).to eq('#content:2') + expect(doc.search('.slide.glossary.name li a')[2][:id]).to eq('content:4+term-with-no-spaces') + expect(doc.search('.slide.glossary.name li a')[3][:href]).to eq('#content:2') + end + +end From f1befdc6259645c9f395b1d78c7c742534538344 Mon Sep 17 00:00:00 2001 From: Ben Ford Date: Mon, 30 Dec 2019 17:33:45 -0800 Subject: [PATCH 14/46] add a TOC spec --- .../compiler/table_of_contents_spec.rb | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 spec/unit/showoff/compiler/table_of_contents_spec.rb diff --git a/spec/unit/showoff/compiler/table_of_contents_spec.rb b/spec/unit/showoff/compiler/table_of_contents_spec.rb new file mode 100644 index 000000000..c43b7d28f --- /dev/null +++ b/spec/unit/showoff/compiler/table_of_contents_spec.rb @@ -0,0 +1,20 @@ +RSpec.describe Showoff::Compiler::TableOfContents do + + it "generates a table of contents" do + html = File.read(File.join(fixtures, 'glossary_toc', 'content.html')) + doc = Nokogiri::HTML::DocumentFragment.parse(html) + + Showoff::Compiler::TableOfContents.generate!(doc) + + expect(doc.search('.slide.toc').size).to eq(1) + expect(doc.search('ol#toc').size).to eq(1) + expect(doc.search('ol#toc li').size).to eq(3) + expect(doc.search('ol#toc li a')[0][:href]).to eq('#content2') + expect(doc.search('ol#toc li a')[1][:href]).to eq('#content3') + expect(doc.search('ol#toc li a')[2][:href]).to eq('#content4') + expect(doc.search('ol#toc li a')[0].text).to eq('Glossary and TOC Demo') + expect(doc.search('ol#toc li a')[1].text).to eq('General Glossary') + expect(doc.search('ol#toc li a')[2].text).to eq('This is a named glossary') + end + +end From 83caf0ccc3f30628c645a229df8bed709d3e121d Mon Sep 17 00:00:00 2001 From: Ben Ford Date: Tue, 31 Dec 2019 11:57:18 -0800 Subject: [PATCH 15/46] add notes and state specs --- lib/showoff/compiler/notes.rb | 2 +- lib/showoff/state.rb | 8 +- spec/fixtures/notes/_notes/content.3.md | 1 + spec/fixtures/notes/_notes/content.4.md | 1 + spec/fixtures/notes/_notes/content.md | 1 + spec/fixtures/notes/_notes/separate.md | 1 + spec/fixtures/notes/content.md | 54 ++++++ spec/fixtures/notes/separate.md | 4 + spec/fixtures/notes/showoff.json | 9 + spec/fixtures/notes/standalone.md | 4 + spec/unit/showoff/compiler/notes_spec.rb | 199 +++++++++++++++++++++++ spec/unit/showoff/compiler_spec.rb | 4 +- spec/unit/showoff/state_spec.rb | 80 +++++++++ 13 files changed, 361 insertions(+), 7 deletions(-) create mode 100644 spec/fixtures/notes/_notes/content.3.md create mode 100644 spec/fixtures/notes/_notes/content.4.md create mode 100644 spec/fixtures/notes/_notes/content.md create mode 100644 spec/fixtures/notes/_notes/separate.md create mode 100644 spec/fixtures/notes/content.md create mode 100644 spec/fixtures/notes/separate.md create mode 100644 spec/fixtures/notes/showoff.json create mode 100644 spec/fixtures/notes/standalone.md create mode 100644 spec/unit/showoff/compiler/notes_spec.rb create mode 100644 spec/unit/showoff/state_spec.rb diff --git a/lib/showoff/compiler/notes.rb b/lib/showoff/compiler/notes.rb index beacd060d..9ad683450 100644 --- a/lib/showoff/compiler/notes.rb +++ b/lib/showoff/compiler/notes.rb @@ -56,7 +56,7 @@ def self.render!(doc, profile, options = {}) doc.add_child '
' if doc.search('div.notes-section.notes').empty? doc.search('div.notes-section.notes').each do |section| text = Tilt[:markdown].new(nil, nil, options[:profile]) { File.read(filename) }.render - frag = "

presenter.notes.personal}

#{text}
" # @todo add back i18n #{I18n.t('presenter.notes.personal')} + frag = "

presenter.notes.personal

#{text}
" # @todo add back i18n #{I18n.t('presenter.notes.personal')} section.prepend_child(frag) end end diff --git a/lib/showoff/state.rb b/lib/showoff/state.rb index 7dd2ccfa9..06bf67220 100644 --- a/lib/showoff/state.rb +++ b/lib/showoff/state.rb @@ -79,11 +79,11 @@ def self.appendAtIndex(key, pos, value) end - def self.reset(keys=nil) - if keys - Array(keys).each { |key| @@state.delete(key) } - else + def self.reset(*keys) + if keys.empty? @@state = {} + else + keys.each { |key| @@state.delete(key) } end end end diff --git a/spec/fixtures/notes/_notes/content.3.md b/spec/fixtures/notes/_notes/content.3.md new file mode 100644 index 000000000..dc7690605 --- /dev/null +++ b/spec/fixtures/notes/_notes/content.3.md @@ -0,0 +1 @@ +(3) These are ***personal notes*** diff --git a/spec/fixtures/notes/_notes/content.4.md b/spec/fixtures/notes/_notes/content.4.md new file mode 100644 index 000000000..486492efe --- /dev/null +++ b/spec/fixtures/notes/_notes/content.4.md @@ -0,0 +1 @@ +(4) These are ***personal notes*** diff --git a/spec/fixtures/notes/_notes/content.md b/spec/fixtures/notes/_notes/content.md new file mode 100644 index 000000000..10b0c47c4 --- /dev/null +++ b/spec/fixtures/notes/_notes/content.md @@ -0,0 +1 @@ +(nonum) These are fallback notes for multi-slides with no numbered personal notes. diff --git a/spec/fixtures/notes/_notes/separate.md b/spec/fixtures/notes/_notes/separate.md new file mode 100644 index 000000000..fd8c7223b --- /dev/null +++ b/spec/fixtures/notes/_notes/separate.md @@ -0,0 +1 @@ +(separate) These are personal notes that should be attached to the separate slide. diff --git a/spec/fixtures/notes/content.md b/spec/fixtures/notes/content.md new file mode 100644 index 000000000..1bff40c3f --- /dev/null +++ b/spec/fixtures/notes/content.md @@ -0,0 +1,54 @@ + +# Notes and handouts both + +blah blah blah + +~~~SECTION:notes~~~ +These are some notes, yo +~~~ENDSECTION~~~ +~~~SECTION:handouts~~~ +And some handouts, yeah +~~~ENDSECTION~~~ + + + +# Arbitrary + +This slide validates that arbitrarily named sections work. + +~~~SECTION:notes~~~ +These are some notes, yo +~~~ENDSECTION~~~ +~~~SECTION:arbitrary~~~ +And some arbitrarily named section +~~~ENDSECTION~~~ + + + +# Notes and personal + +This has personal notes and presenter notes. +This is a multi slide file. + +~~~SECTION:notes~~~ +notes and stuff +~~~ENDSECTION~~~ + + + +# Notes and personal + +This has personal notes only. +This is a multi slide file. + + +# Non numbered personal + +This has personal notes only. +This is a multi slide file, but the personal notes file is not numbered. + + +# Second non numbered personal + +This a second non-numbered personal notes slide. The non-numbered content +should be attached to both. diff --git a/spec/fixtures/notes/separate.md b/spec/fixtures/notes/separate.md new file mode 100644 index 000000000..5d553c94a --- /dev/null +++ b/spec/fixtures/notes/separate.md @@ -0,0 +1,4 @@ + +# Notes and personal + +This has personal notes attached to a separate file. diff --git a/spec/fixtures/notes/showoff.json b/spec/fixtures/notes/showoff.json new file mode 100644 index 000000000..33cb99401 --- /dev/null +++ b/spec/fixtures/notes/showoff.json @@ -0,0 +1,9 @@ +{ + "name": "Notes test", + "description": "This is a simple presentation with a variety of notes.", + "sections": [ + "standalone.md", + "content.md", + "separate.md" + ] +} diff --git a/spec/fixtures/notes/standalone.md b/spec/fixtures/notes/standalone.md new file mode 100644 index 000000000..f703d03d1 --- /dev/null +++ b/spec/fixtures/notes/standalone.md @@ -0,0 +1,4 @@ + +# This slide has no notes + +Just some boring content. diff --git a/spec/unit/showoff/compiler/notes_spec.rb b/spec/unit/showoff/compiler/notes_spec.rb new file mode 100644 index 000000000..16ce0e03f --- /dev/null +++ b/spec/unit/showoff/compiler/notes_spec.rb @@ -0,0 +1,199 @@ +RSpec.describe Showoff::Compiler::Notes do + before(:each) do + Showoff::Config.load(File.join(fixtures, 'notes'), 'showoff.json') + end + + it 'handles slides with no notes sections' do + options = {:form=>nil, :name=>"standalone", :seq=>nil} + content = <<-EOF +

This slide has no notes

+ +

Just some boring content.

+EOF + + doc = Nokogiri::HTML::DocumentFragment.parse(content) + doc, notes = Showoff::Compiler::Notes.render!(doc, {}, options) + + expect(doc.element_children.size).to eq(2) + expect(doc.element_children[0].name).to eq('h1') + expect(doc.element_children[1].name).to eq('p') + expect(notes.empty?).to be_truthy + end + + it 'creates notes and handout sections' do + options = {:form=>nil, :name=>"content", :seq=>1} + content = <<-EOF +

Notes and handouts both

+ +

blah blah blah

+ +

~~~SECTION:notes~~~

+ +

These are some notes, yo

+ +

~~~ENDSECTION~~~

+ +

~~~SECTION:handouts~~~

+ +

And some handouts, yeah

+ +

~~~ENDSECTION~~~

+EOF + + doc = Nokogiri::HTML::DocumentFragment.parse(content) + doc, notes = Showoff::Compiler::Notes.render!(doc, {}, options) + + expect(doc.element_children.size).to eq(2) + expect(doc.element_children[0].name).to eq('h1') + expect(doc.element_children[1].name).to eq('p') + expect(notes.size).to eq(2) + expect(notes.search('.notes-section.notes').size).to eq(1) + expect(notes.search('.notes-section.notes .personal p').text).to start_with('(nonum)') + + expect(notes.search('.notes-section.handouts').size).to eq(1) + expect(notes.search('.notes-section.handouts .personal').empty?).to be_truthy + end + + it 'creates arbitrarily named sections' do + options = {:form=>nil, :name=>"content", :seq=>2} + content = <<-EOF +

Arbitrary

+ +

This slide validates that arbitrarily named sections work.

+ +

~~~SECTION:notes~~~

+ +

These are some notes, yo

+ +

~~~ENDSECTION~~~

+ +

~~~SECTION:arbitrary~~~

+ +

And some arbitrarily named section

+ +

~~~ENDSECTION~~~

+EOF + + doc = Nokogiri::HTML::DocumentFragment.parse(content) + doc, notes = Showoff::Compiler::Notes.render!(doc, {}, options) + + expect(doc.element_children.size).to eq(2) + expect(doc.element_children[0].name).to eq('h1') + expect(doc.element_children[1].name).to eq('p') + expect(notes.size).to eq(2) + expect(notes.search('.notes-section.notes').size).to eq(1) + expect(notes.search('.notes-section.notes .personal p').text).to start_with('(nonum)') + + expect(notes.search('.notes-section.arbitrary').size).to eq(1) + expect(notes.search('.notes-section.arbitrary .personal').empty?).to be_truthy + end + + it 'generates personal notes with presenter notes' do + options = {:form=>nil, :name=>"content", :seq=>3} + content = <<-EOF +

Notes and personal

+ +

This has personal notes and presenter notes. +This is a multi slide file.

+ +

~~~SECTION:notes~~~

+ +

notes and stuff

+ +

~~~ENDSECTION~~~

+EOF + + doc = Nokogiri::HTML::DocumentFragment.parse(content) + doc, notes = Showoff::Compiler::Notes.render!(doc, {}, options) + + expect(doc.element_children.size).to eq(2) + expect(doc.element_children[0].name).to eq('h1') + expect(doc.element_children[1].name).to eq('p') + expect(notes.size).to eq(1) + expect(notes.search('.notes-section.notes').size).to eq(1) + expect(notes.search('.notes-section.notes .personal p').text).to start_with('(3)') + end + + it 'generates personal notes without specificed presenter notes' do + options = {:form=>nil, :name=>"content", :seq=>4} + content = <<-EOF +

Notes and personal

+ +

This has personal notes only. +This is a multi slide file.

+EOF + + doc = Nokogiri::HTML::DocumentFragment.parse(content) + doc, notes = Showoff::Compiler::Notes.render!(doc, {}, options) + + expect(doc.element_children.size).to eq(2) + expect(doc.element_children[0].name).to eq('h1') + expect(doc.element_children[1].name).to eq('p') + expect(notes.size).to eq(1) + expect(notes.search('.notes-section.notes').size).to eq(1) + expect(notes.search('.notes-section.notes .personal p').text).to start_with('(4)') + end + + it 'generates personal notes for multi-slides when the notes are not numbered' do + options = {:form=>nil, :name=>"content", :seq=>5} + content = <<-EOF +

Non numbered personal

+ +

This has personal notes only. +This is a multi slide file, but the personal notes file is not numbered.

+EOF + + doc = Nokogiri::HTML::DocumentFragment.parse(content) + doc, notes = Showoff::Compiler::Notes.render!(doc, {}, options) + + expect(doc.element_children.size).to eq(2) + expect(doc.element_children[0].name).to eq('h1') + expect(doc.element_children[1].name).to eq('p') + expect(notes.size).to eq(1) + expect(notes.search('.notes-section.notes').size).to eq(1) + expect(notes.search('.notes-section.notes .personal p').text).to start_with('(nonum)') + end + + it 'attaches non-numbered personal notes to all slides in a multi-slide file' do + options = {:form=>nil, :name=>"content", :seq=>6} + content = <<-EOF +

Second non numbered personal

+ +

This a second non-numbered personal notes slide. The non-numbered content +should be attached to both.

+EOF + + doc = Nokogiri::HTML::DocumentFragment.parse(content) + doc, notes = Showoff::Compiler::Notes.render!(doc, {}, options) + + expect(doc.element_children.size).to eq(2) + expect(doc.element_children[0].name).to eq('h1') + expect(doc.element_children[1].name).to eq('p') + expect(notes.size).to eq(1) + expect(notes.search('.notes-section.notes').size).to eq(1) + expect(notes.search('.notes-section.notes .personal p').text).to start_with('(nonum)') + end + + it 'generates personal notes for numbered slides in a single slide file' do + options = {:form=>nil, :name=>"separate", :seq=>nil} + content = <<-EOF +

Notes and personal

+ +

This has personal notes attached to a separate file.

+EOF + + doc = Nokogiri::HTML::DocumentFragment.parse(content) + doc, notes = Showoff::Compiler::Notes.render!(doc, {}, options) + + expect(doc.element_children.size).to eq(2) + expect(doc.element_children[0].name).to eq('h1') + expect(doc.element_children[1].name).to eq('p') + expect(notes.size).to eq(1) + expect(notes.search('.notes-section.notes').size).to eq(1) + expect(notes.search('.notes-section.notes .personal p').text).to start_with('(separate)') + end + +end + + + diff --git a/spec/unit/showoff/compiler_spec.rb b/spec/unit/showoff/compiler_spec.rb index 554e65db9..ad7d7b02d 100644 --- a/spec/unit/showoff/compiler_spec.rb +++ b/spec/unit/showoff/compiler_spec.rb @@ -4,7 +4,7 @@ expect(Showoff::Config).to receive(:get).with('markdown').and_return(:default) expect(Showoff::Config).to receive(:get).with(:default).and_return({}) expect(Tilt).to receive(:prefer).with(Tilt::RedcarpetTemplate, 'markdown') - expect(Tilt.template_for('markdown')).to eq(Tilt::RedcarpetTemplate) + #expect(Tilt.template_for('markdown')).to eq(Tilt::RedcarpetTemplate) # polluted state doesn't allow this to succeed deterministically Showoff::Compiler.new({:name => 'foo'}) end @@ -13,7 +13,7 @@ expect(Showoff::Config).to receive(:get).with('markdown').and_return('commonmarker') expect(Showoff::Config).to receive(:get).with('commonmarker').and_return({}) expect(Tilt).to receive(:prefer).with(Tilt::CommonMarkerTemplate, 'markdown') - #expect(Tilt.template_for('markdown')).to eq(Tilt::CommonMarkerTemplate) # polluted state doesn't allow this to succeed + #expect(Tilt.template_for('markdown')).to eq(Tilt::CommonMarkerTemplate) # polluted state doesn't allow this to succeed deterministically Showoff::Compiler.new({:name => 'foo'}) end diff --git a/spec/unit/showoff/state_spec.rb b/spec/unit/showoff/state_spec.rb new file mode 100644 index 000000000..2e7b3d0fa --- /dev/null +++ b/spec/unit/showoff/state_spec.rb @@ -0,0 +1,80 @@ +RSpec.describe Showoff::State do + before(:each) do + Showoff::State.reset + end + + it "manages a simple value" do + expect(Showoff::State.keys).to eq([]) + Showoff::State.set(:test, :value) + expect(Showoff::State.keys).to eq([:test]) + expect(Showoff::State.get(:test)).to eq(:value) + end + + it "increments a value" do + expect(Showoff::State.keys).to eq([]) + Showoff::State.increment(:test) + expect(Showoff::State.keys).to eq([:test]) + expect(Showoff::State.get(:test)).to eq(1) + Showoff::State.increment(:test) + expect(Showoff::State.get(:test)).to eq(2) + end + + it "appends to an array" do + expect(Showoff::State.keys).to eq([]) + Showoff::State.append(:test, :value) + expect(Showoff::State.keys).to eq([:test]) + expect(Showoff::State.get(:test)).to eq([:value]) + Showoff::State.append(:test, :value) + expect(Showoff::State.get(:test)).to eq([:value, :value]) + Showoff::State.append(:test, 42) + expect(Showoff::State.get(:test)).to eq([:value, :value, 42]) + end + + it "gets an indexed value from an array" do + Showoff::State.append(:test, :value) + Showoff::State.append(:test, :value) + Showoff::State.append(:test, 42) + expect(Showoff::State.getAtIndex(:test, 2)).to eq(42) + end + + it "sets an indexed value in an array" do + Showoff::State.setAtIndex(:test, 13, 42) + expect(Showoff::State.getAtIndex(:test, 13)).to eq(42) + end + + it "appends a value to an array at a specified index" do + Showoff::State.appendAtIndex(:test, 13, 42) + Showoff::State.appendAtIndex(:test, 13, :bananas) + Showoff::State.appendAtIndex(:test, 13, :waffles) + expect(Showoff::State.getAtIndex(:test, 13)).to eq([42, :bananas, :waffles]) + end + + it "resets all values" do + expect(Showoff::State.keys).to eq([]) + Showoff::State.set(:test, :value) + Showoff::State.appendAtIndex(:array, 13, 42) + Showoff::State.appendAtIndex(:array, 13, :bananas) + Showoff::State.appendAtIndex(:array, 13, :waffles) + expect(Showoff::State.get(:test)).to eq(:value) + expect(Showoff::State.getAtIndex(:array, 13)).to eq([42, :bananas, :waffles]) + + Showoff::State.reset + expect(Showoff::State.keys).to eq([]) + end + + it "resets specified values" do + expect(Showoff::State.keys).to eq([]) + Showoff::State.set(:test, :value) + Showoff::State.set(:tacos, :value) + Showoff::State.appendAtIndex(:array, 13, 42) + Showoff::State.appendAtIndex(:array, 13, :bananas) + Showoff::State.appendAtIndex(:array, 13, :waffles) + expect(Showoff::State.get(:test)).to eq(:value) + expect(Showoff::State.getAtIndex(:array, 13)).to eq([42, :bananas, :waffles]) + + Showoff::State.reset(:test, :tacos) + expect(Showoff::State.keys).to eq([:array]) + expect(Showoff::State.getAtIndex(:array, 13)).to eq([42, :bananas, :waffles]) + end + +end From ba4cbc0486aacce7e215c0c566d3ca9fc808afc1 Mon Sep 17 00:00:00 2001 From: Ben Ford Date: Tue, 31 Dec 2019 13:21:51 -0800 Subject: [PATCH 16/46] add section & slide specs --- spec/fixtures/slides/content.md | 16 +++ spec/fixtures/slides/first.md | 4 + spec/fixtures/slides/last.md | 4 + spec/fixtures/slides/showoff.json | 9 ++ .../unit/showoff/presentation/section_spec.rb | 13 ++ spec/unit/showoff/presentation/slide_spec.rb | 133 ++++++++++++++++++ 6 files changed, 179 insertions(+) create mode 100644 spec/fixtures/slides/content.md create mode 100644 spec/fixtures/slides/first.md create mode 100644 spec/fixtures/slides/last.md create mode 100644 spec/fixtures/slides/showoff.json create mode 100644 spec/unit/showoff/presentation/section_spec.rb create mode 100644 spec/unit/showoff/presentation/slide_spec.rb diff --git a/spec/fixtures/slides/content.md b/spec/fixtures/slides/content.md new file mode 100644 index 000000000..4a2e20d55 --- /dev/null +++ b/spec/fixtures/slides/content.md @@ -0,0 +1,16 @@ + +# One + +This little piggy stayed home. + + + +# Two + +This little piggy had roast beef. + + + +# Three + +This little piggy had none. diff --git a/spec/fixtures/slides/first.md b/spec/fixtures/slides/first.md new file mode 100644 index 000000000..409777137 --- /dev/null +++ b/spec/fixtures/slides/first.md @@ -0,0 +1,4 @@ + +# First slide + +This little piggy went to market. diff --git a/spec/fixtures/slides/last.md b/spec/fixtures/slides/last.md new file mode 100644 index 000000000..d1e79e4b1 --- /dev/null +++ b/spec/fixtures/slides/last.md @@ -0,0 +1,4 @@ + +# Last + +This little piggy cried wee wee wee all the way home. diff --git a/spec/fixtures/slides/showoff.json b/spec/fixtures/slides/showoff.json new file mode 100644 index 000000000..ed58a587c --- /dev/null +++ b/spec/fixtures/slides/showoff.json @@ -0,0 +1,9 @@ +{ + "name": "Slides and sections", + "description": "This just has some slides.", + "sections": [ + "first.md", + "content.md", + "last.md" + ] +} diff --git a/spec/unit/showoff/presentation/section_spec.rb b/spec/unit/showoff/presentation/section_spec.rb new file mode 100644 index 000000000..99e5df65a --- /dev/null +++ b/spec/unit/showoff/presentation/section_spec.rb @@ -0,0 +1,13 @@ +RSpec.describe Showoff::Presentation::Section do + + it 'loads files from disk and splits them into slides' do + Showoff::Config.load(File.join(fixtures, 'slides'), 'showoff.json') + name, files = Showoff::Config.sections.first + section = Showoff::Presentation::Section.new(name, files) + + expect(section.name).to eq('.') + expect(section.slides.size).to eq(5) + expect(section.slides.map {|slide| slide.id }).to eq(["first", "content1", "content2", "content3", "last"]) + end + +end diff --git a/spec/unit/showoff/presentation/slide_spec.rb b/spec/unit/showoff/presentation/slide_spec.rb new file mode 100644 index 000000000..602dd9e6e --- /dev/null +++ b/spec/unit/showoff/presentation/slide_spec.rb @@ -0,0 +1,133 @@ +RSpec.describe Showoff::Presentation::Slide do + + it 'parses class and form metadata settings' do + context = {:section=>".", :name=>"first.md", :seq=>nil} + options = "first title form=noodles" + content = <<-EOF +# First slide + +This little piggy went to market. +EOF + + subject = Showoff::Presentation::Slide.new(options, content, context) + + expect(subject.classes).to eq(["first", "title"]) + expect(subject.form).to eq('noodles') + expect(subject.id).to eq('first') + expect(subject.name).to eq('first') + expect(subject.ref).to eq('first') + expect(subject.section).to eq('.') + expect(subject.section_title).to eq('.') + expect(subject.seq).to be_nil + expect(subject.transition).to eq('none') + end + + it 'parses a background metadata setting' do + context = {:section=>".", :name=>"content.md", :seq=>1} + options = "[bg=bg.png] one" + content = <<-EOF +# One + +This little piggy stayed home. +EOF + + subject = Showoff::Presentation::Slide.new(options, content, context) + + expect(subject.classes).to eq(["one"]) + expect(subject.id).to eq('content1') + expect(subject.name).to eq('content') + expect(subject.ref).to eq('content:1') + expect(subject.seq).to eq(1) + expect(subject.background).to eq('bg.png') + end + + it 'parses a slide class and sets section title' do + context = {:section=>".", :name=>"content.md", :seq=>2} + options = "two piggy subsection" + content = <<-EOF +# Two + +This little piggy had roast beef. +EOF + + subject = Showoff::Presentation::Slide.new(options, content, context) + + expect(subject.classes).to eq(["two", "piggy", "subsection"]) + expect(subject.id).to eq('content2') + expect(subject.name).to eq('content') + expect(subject.ref).to eq('content:2') + expect(subject.section).to eq('.') + expect(subject.section_title).to eq('Two') + expect(subject.seq).to eq(2) + end + + it 'parses a transition as an option and maintains section title' do + context = {:section=>".", :name=>"content.md", :seq=>3} + options = "[transition=fade] three" + content = <<-EOF +# Three + +This little piggy had none. +EOF + + subject = Showoff::Presentation::Slide.new(options, content, context) + + expect(subject.classes).to eq(["three"]) + expect(subject.id).to eq('content3') + expect(subject.name).to eq('content') + expect(subject.ref).to eq('content:3') + expect(subject.section).to eq('.') + expect(subject.section_title).to eq('Two') + expect(subject.seq).to eq(3) + expect(subject.transition).to eq('fade') + end + + it 'parses a transition as a weirdo class' do + context = {:section=>".", :name=>"last.md", :seq=>nil} + options = "last bigtext transition=fade" + content = <<-EOF +# Last + +This little piggy cried wee wee wee all the way home. +EOF + + subject = Showoff::Presentation::Slide.new(options, content, context) + + expect(subject.classes).to eq(["last", "bigtext"]) + expect(subject.id).to eq('last') + expect(subject.name).to eq('last') + expect(subject.ref).to eq('last') + expect(subject.seq).to be_nil + expect(subject.transition).to eq('fade') + end + + it 'blacklists known bad classes' do + context = {:section=>".", :name=>"last.md", :seq=>nil} + options = "last bigtext transition=fade" + content = <<-EOF +# Last + +This little piggy cried wee wee wee all the way home. +EOF + + subject = Showoff::Presentation::Slide.new(options, content, context) + + expect(subject.classes).to eq(["last", "bigtext"]) + expect(subject.slideClasses).to eq(["last"]) + end + + it 'maintains proper slide counts' do + content = <<-EOF +# First slide +EOF + + Showoff::State.reset + Showoff::Presentation::Slide.new('', content, {:section=>".", :name=>"state.md", :seq=>1}).render + Showoff::Presentation::Slide.new('', content, {:section=>".", :name=>"state.md", :seq=>2}).render + Showoff::Presentation::Slide.new('', content, {:section=>".", :name=>"state.md", :seq=>3}).render + Showoff::Presentation::Slide.new('', content, {:section=>".", :name=>"state.md", :seq=>4}).render + + expect(Showoff::State.get(:slide_count)).to eq(4) + end + +end From 6f65fbef3d9661728042b904f948492a18ccba75 Mon Sep 17 00:00:00 2001 From: Ben Ford Date: Wed, 1 Jan 2020 17:24:36 -0800 Subject: [PATCH 17/46] started the specs for forms. --- lib/showoff/compiler.rb | 2 +- lib/showoff/compiler/{forms.rb => form.rb} | 0 spec/fixtures/forms/elements.md | 57 ++++++++++ spec/fixtures/forms/radios.md | 12 +++ spec/unit/showoff/compiler/forms_spec.rb | 117 +++++++++++++++++++++ spec/unit/showoff_ng_spec.rb | 20 +--- 6 files changed, 192 insertions(+), 16 deletions(-) rename lib/showoff/compiler/{forms.rb => form.rb} (100%) create mode 100644 spec/fixtures/forms/elements.md create mode 100644 spec/fixtures/forms/radios.md create mode 100644 spec/unit/showoff/compiler/forms_spec.rb diff --git a/lib/showoff/compiler.rb b/lib/showoff/compiler.rb index d6d52ccc6..372939059 100644 --- a/lib/showoff/compiler.rb +++ b/lib/showoff/compiler.rb @@ -3,7 +3,7 @@ require 'nokogiri' class Showoff::Compiler - require 'showoff/compiler/forms' + require 'showoff/compiler/form' require 'showoff/compiler/i18n' require 'showoff/compiler/variables' require 'showoff/compiler/fixups' diff --git a/lib/showoff/compiler/forms.rb b/lib/showoff/compiler/form.rb similarity index 100% rename from lib/showoff/compiler/forms.rb rename to lib/showoff/compiler/form.rb diff --git a/spec/fixtures/forms/elements.md b/spec/fixtures/forms/elements.md new file mode 100644 index 000000000..32c3ba5d9 --- /dev/null +++ b/spec/fixtures/forms/elements.md @@ -0,0 +1,57 @@ +# This is a slide with some questions + +correct -> This question has a correct answer. = + (=) True + () False + +none -> This question has no correct answer. = + () True + () False + +named -> This question has named answers. = + () one -> the first answer + (=) two -> the second answer + () three -> the third answer + +correctcheck -> This question has a correct answer. = + [=] True + [] False + +nonecheck -> This question has no correct answer. = + [] True + [] False + +namedcheck -> This question has named answers. = + [] one -> the first answer + [=] two -> the second answer + [] three -> the third answer + +name = ___ + +namelength = ___[50] + +nametoken -> What is your name? = ___[50] + +comments = [ ] + +commentsrows = [ 5] + +smartphone = () iPhone () Android () other -> Any other phone not listed + +awake -> Are you paying attention? = (x) No () Yes + +smartphonecheck = [] iPhone [] Android [x] other -> Any other phone not listed + +phoneos -> Which phone OS is developed by Google? = {iPhone, [Android], Other } + +smartphonecombo = {iPhone, Android, (Other) } + +smartphonetoken = {iPhone, Android, (other -> Any other phone not listed) } + +cuisine -> What is your favorite cuisine? = { American, Italian, French } + +cuisinetoken -> What is your favorite cuisine? = { + US -> American + IT -> Italian + FR -> French + } diff --git a/spec/fixtures/forms/radios.md b/spec/fixtures/forms/radios.md new file mode 100644 index 000000000..a37efa30b --- /dev/null +++ b/spec/fixtures/forms/radios.md @@ -0,0 +1,12 @@ +# Testing radio buttons + +smartphone = () iPhone () Android () other -> Any other phone not listed + +awake -> Are you paying attention? = (x) No () Yes + +continent -> Which continent is largest? = + () Africa + () Americas + (=) Asia + () Australia + () Europe diff --git a/spec/unit/showoff/compiler/forms_spec.rb b/spec/unit/showoff/compiler/forms_spec.rb new file mode 100644 index 000000000..a00d1edb9 --- /dev/null +++ b/spec/unit/showoff/compiler/forms_spec.rb @@ -0,0 +1,117 @@ +RSpec.describe Showoff::Compiler::Form do + + # This is a pretty boring quick "integration" test of the full form. + # The individual widgets should each be tested individually. + it "renders examples of all elements" do +# markdown = File.read(File.join(fixtures, 'forms', 'elements.md')) +# content = Tilt[:markdown].new(nil, nil, {}) { markdown }.render + content = <<-EOF +

This is a slide with some questions

+

correct -> This question has a correct answer. = +(=) True +() False

+

none -> This question has no correct answer. = +() True +() False

+

named -> This question has named answers. = +() one -> the first answer +(=) two -> the second answer +() three -> the third answer

+

correctcheck -> This question has a correct answer. = +[=] True +[] False

+

nonecheck -> This question has no correct answer. = +[] True +[] False

+

namedcheck -> This question has named answers. = +[] one -> the first answer +[=] two -> the second answer +[] three -> the third answer

+

name = ___

+

namelength = ___[50]

+

nametoken -> What is your name? = ___[50]

+

comments = [ ]

+

commentsrows = [ 5]

+

smartphone = () iPhone () Android () other -> Any other phone not listed

+

awake -> Are you paying attention? = (x) No () Yes

+

smartphonecheck = [] iPhone [] Android [x] other -> Any other phone not listed

+

phoneos -> Which phone OS is developed by Google? = {iPhone, [Android], Other }

+

smartphonecombo = {iPhone, Android, (Other) }

+

smartphonetoken = {iPhone, Android, (other -> Any other phone not listed) }

+

cuisine -> What is your favorite cuisine? = { American, Italian, French }

+

cuisinetoken -> What is your favorite cuisine? = { +US -> American +IT -> Italian +FR -> French +}

+EOF + + doc = Nokogiri::HTML::DocumentFragment.parse(content) + + # This call mutates the passed in object + Showoff::Compiler::Form.render!(doc, :form => 'foo') + + expect(doc).to be_a(Nokogiri::HTML::DocumentFragment) + expect(doc.search('ul').size).to eq(6) # each long form radio/check question + expect(doc.search('li').size).to eq(14) # all long form radio/check answers + expect(doc.search('label').size).to eq(41) # labels for every question/response widget + expect(doc.search('input').size).to eq(27) # answers, plus the tool buttons + expect(doc.search('input[type=radio]').size).to eq(12) # includes the single line widget + expect(doc.search('input[type=checkbox]').size).to eq(10) # includes the single line widget + expect(doc.search('input[type=text]').size).to eq(3) + expect(doc.search('textarea').size).to eq(2) + expect(doc.search('select').size).to eq(5) + end + + it "renders parses checkbox elements from the input string" do +# markdown = File.read(File.join(fixtures, 'forms', 'radios.md')) +# content = Tilt[:markdown].new(nil, nil, {}) { markdown }.render + content = <<-EOF +

Testing radio buttons

+

smartphone = () iPhone () Android () other -> Any other phone not listed

+

awake -> Are you paying attention? = (x) No () Yes

+

continent -> Which continent is largest? = +() Africa +() Americas +(=) Asia +() Australia +() Europe

+EOF + + doc = Nokogiri::HTML::DocumentFragment.parse(content) + + expect(doc).to be_a(Nokogiri::HTML::DocumentFragment) + expect(Showoff::Compiler::Form).to receive(:form_element).with( + 'foo_smartphone', + 'smartphone', + 'smartphone', + false, + '() iPhone () Android () other -> Any other phone not listed', + 'smartphone = () iPhone () Android () other -> Any other phone not listed', + ).and_return('') + expect(Showoff::Compiler::Form).to receive(:form_element).with( + 'foo_awake', + 'awake', + 'Are you paying attention?', + false, + '(x) No () Yes', + 'awake -> Are you paying attention? = (x) No () Yes', + ).and_return('') + expect(Showoff::Compiler::Form).to receive(:form_element).with( + 'foo_continent', + 'continent', + 'Which continent is largest?', + false, + '', # this may be incorrect + "continent -> Which continent is largest? =\n() Africa\n() Americas\n(=) Asia\n() Australia\n() Europe", + ).and_return('') + + # This call mutates the passed in object and invokes the form rendering + Showoff::Compiler::Form.render!(doc, :form => 'foo') + end + + # @todo this test suite needs a lotta lotta work. This only scratches the surface +end + + + diff --git a/spec/unit/showoff_ng_spec.rb b/spec/unit/showoff_ng_spec.rb index de048de25..3854a3bb9 100644 --- a/spec/unit/showoff_ng_spec.rb +++ b/spec/unit/showoff_ng_spec.rb @@ -1,15 +1,5 @@ -# RSpec.describe Order do -# it "sums the prices of its line items" do -# order = Order.new -# -# order.add_entry(LineItem.new(:item => Item.new( -# :price => Money.new(1.11, :USD) -# ))) -# order.add_entry(LineItem.new(:item => Item.new( -# :price => Money.new(2.22, :USD), -# :quantity => 2 -# ))) -# -# expect(order.total).to eq(Money.new(5.55, :USD)) -# end -# end +RSpec.describe Showoff do + + it 'generates a static presentation' + +end From 426bd95424451ddd225f5c228cd3a98d37d313f5 Mon Sep 17 00:00:00 2001 From: Ben Ford Date: Wed, 1 Jan 2020 23:37:44 -0800 Subject: [PATCH 18/46] added some more radio button testing --- spec/unit/showoff/compiler/form/radio_spec.rb | 140 ++++++++++++++++++ .../compiler/{forms_spec.rb => form_spec.rb} | 47 ------ 2 files changed, 140 insertions(+), 47 deletions(-) create mode 100644 spec/unit/showoff/compiler/form/radio_spec.rb rename spec/unit/showoff/compiler/{forms_spec.rb => form_spec.rb} (63%) diff --git a/spec/unit/showoff/compiler/form/radio_spec.rb b/spec/unit/showoff/compiler/form/radio_spec.rb new file mode 100644 index 000000000..007c148d0 --- /dev/null +++ b/spec/unit/showoff/compiler/form/radio_spec.rb @@ -0,0 +1,140 @@ +RSpec.describe Showoff::Compiler::Form do + + it "parses single line radio button markup" do +# markdown = File.read(File.join(fixtures, 'forms', 'radios.md')) +# content = Tilt[:markdown].new(nil, nil, {}) { markdown }.render + content = <<-EOF +

Testing radio buttons

+

smartphone = () iPhone () Android () other -> Any other phone not listed

+EOF + + doc = Nokogiri::HTML::DocumentFragment.parse(content) + + expect(doc).to be_a(Nokogiri::HTML::DocumentFragment) + expect(Showoff::Compiler::Form).to receive(:form_element).with( + 'foo_smartphone', + 'smartphone', + 'smartphone', + false, + '() iPhone () Android () other -> Any other phone not listed', + 'smartphone = () iPhone () Android () other -> Any other phone not listed', + ).and_return('') + + # This call mutates the passed in object and invokes the form rendering + Showoff::Compiler::Form.render!(doc, :form => 'foo') + end + + it "renders radio buttons from single line markup" do + expect(Showoff::Compiler::Form).to receive(:form_element_radio).with( + 'foo_smartphone', + 'smartphone', + [["", "iPhone "], ["", "Android "], ["", "other -> Any other phone not listed"]], + ).and_return('') + + Showoff::Compiler::Form.form_element( + 'foo_smartphone', + 'smartphone', + 'smartphone', + false, + '() iPhone () Android () other -> Any other phone not listed', + 'smartphone = () iPhone () Android () other -> Any other phone not listed', + ) + end + +################################################################################ + + it "parses single line tokenized name radio button markup" do +# markdown = File.read(File.join(fixtures, 'forms', 'radios.md')) +# content = Tilt[:markdown].new(nil, nil, {}) { markdown }.render + content = <<-EOF +

Testing radio buttons

+

awake -> Are you paying attention? = (x) No () Yes

+EOF + + doc = Nokogiri::HTML::DocumentFragment.parse(content) + + expect(doc).to be_a(Nokogiri::HTML::DocumentFragment) + expect(Showoff::Compiler::Form).to receive(:form_element).with( + 'foo_awake', + 'awake', + 'Are you paying attention?', + false, + '(x) No () Yes', + 'awake -> Are you paying attention? = (x) No () Yes', + ).and_return('') + + # This call mutates the passed in object and invokes the form rendering + Showoff::Compiler::Form.render!(doc, :form => 'foo') + end + + it "renders radio buttons from single line markup with a tokenized name" do + expect(Showoff::Compiler::Form).to receive(:form_element_radio).with( + 'foo_awake', + 'awake', + [["x", "No "], ["", "Yes"]], + ).and_return('') + + Showoff::Compiler::Form.form_element( + 'foo_awake', + 'awake', + 'Are you paying attention?', + false, + '(x) No () Yes', + 'awake -> Are you paying attention? = (x) No () Yes', + ) + end + +################################################################################ + + it "parses multi line radio button markup" do + content = <<-EOF +

Testing radio buttons

+

continent -> Which continent is largest? = +() Africa +() Americas +(=) Asia +() Australia +() Europe

+EOF + + doc = Nokogiri::HTML::DocumentFragment.parse(content) + + expect(doc).to be_a(Nokogiri::HTML::DocumentFragment) + expect(Showoff::Compiler::Form).to receive(:form_element).with( + 'foo_continent', + 'continent', + 'Which continent is largest?', + false, + '', + "continent -> Which continent is largest? =\n() Africa\n() Americas\n(=) Asia\n() Australia\n() Europe", + ).and_return('') + + # This call mutates the passed in object and invokes the form rendering + Showoff::Compiler::Form.render!(doc, :form => 'foo') + end + + it "renders radio buttons from multi line markup" do + expect(Showoff::Compiler::Form).to receive(:form_element_multiline).with( + 'foo_continent', + 'continent', + "continent -> Which continent is largest? =\n() Africa\n() Americas\n(=) Asia\n() Australia\n() Europe", + ).and_return('') + + Showoff::Compiler::Form.form_element( + 'foo_continent', + 'continent', + 'Which continent is largest?', + false, + '', + "continent -> Which continent is largest? =\n() Africa\n() Americas\n(=) Asia\n() Australia\n() Europe", + ) + end + + it 'marks the proper answer as correct' + it 'selects the proper default option' + # @todo this test suite needs a lotta lotta work. This only scratches the surface +end + + + + diff --git a/spec/unit/showoff/compiler/forms_spec.rb b/spec/unit/showoff/compiler/form_spec.rb similarity index 63% rename from spec/unit/showoff/compiler/forms_spec.rb rename to spec/unit/showoff/compiler/form_spec.rb index a00d1edb9..0398bdb9f 100644 --- a/spec/unit/showoff/compiler/forms_spec.rb +++ b/spec/unit/showoff/compiler/form_spec.rb @@ -63,53 +63,6 @@ expect(doc.search('select').size).to eq(5) end - it "renders parses checkbox elements from the input string" do -# markdown = File.read(File.join(fixtures, 'forms', 'radios.md')) -# content = Tilt[:markdown].new(nil, nil, {}) { markdown }.render - content = <<-EOF -

Testing radio buttons

-

smartphone = () iPhone () Android () other -> Any other phone not listed

-

awake -> Are you paying attention? = (x) No () Yes

-

continent -> Which continent is largest? = -() Africa -() Americas -(=) Asia -() Australia -() Europe

-EOF - - doc = Nokogiri::HTML::DocumentFragment.parse(content) - - expect(doc).to be_a(Nokogiri::HTML::DocumentFragment) - expect(Showoff::Compiler::Form).to receive(:form_element).with( - 'foo_smartphone', - 'smartphone', - 'smartphone', - false, - '() iPhone () Android () other -> Any other phone not listed', - 'smartphone = () iPhone () Android () other -> Any other phone not listed', - ).and_return('') - expect(Showoff::Compiler::Form).to receive(:form_element).with( - 'foo_awake', - 'awake', - 'Are you paying attention?', - false, - '(x) No () Yes', - 'awake -> Are you paying attention? = (x) No () Yes', - ).and_return('') - expect(Showoff::Compiler::Form).to receive(:form_element).with( - 'foo_continent', - 'continent', - 'Which continent is largest?', - false, - '', # this may be incorrect - "continent -> Which continent is largest? =\n() Africa\n() Americas\n(=) Asia\n() Australia\n() Europe", - ).and_return('') - - # This call mutates the passed in object and invokes the form rendering - Showoff::Compiler::Form.render!(doc, :form => 'foo') - end - # @todo this test suite needs a lotta lotta work. This only scratches the surface end From 76d8d5f0d7055ccf4bb20a11675ff157d9d17624 Mon Sep 17 00:00:00 2001 From: Ben Ford Date: Thu, 2 Jan 2020 22:11:14 -0800 Subject: [PATCH 19/46] finished form radio spec --- lib/showoff/compiler/form.rb | 2 +- spec/unit/showoff/compiler/form/radio_spec.rb | 135 +++++++++++++++++- 2 files changed, 134 insertions(+), 3 deletions(-) diff --git a/lib/showoff/compiler/form.rb b/lib/showoff/compiler/form.rb index dc497cf49..1a65dd9da 100644 --- a/lib/showoff/compiler/form.rb +++ b/lib/showoff/compiler/form.rb @@ -197,7 +197,7 @@ def self.form_element_check_or_radio_set(type, id, code, items) value = $1 label = $2 else - value = label = item[1] + value = label = item[1].strip end str << self.form_element_check_or_radio(type, id, code, value, label, modifier) diff --git a/spec/unit/showoff/compiler/form/radio_spec.rb b/spec/unit/showoff/compiler/form/radio_spec.rb index 007c148d0..0c22fe085 100644 --- a/spec/unit/showoff/compiler/form/radio_spec.rb +++ b/spec/unit/showoff/compiler/form/radio_spec.rb @@ -41,6 +41,25 @@ ) end + it 'generates the proper HTML markup for a radio button set' do + html = Showoff::Compiler::Form.form_element_check_or_radio_set( + 'radio', + 'foo_smartphone', + 'smartphone', + [["", "iPhone "], ["", "Android "], ["", "other -> Any other phone not listed"]], + ) + doc = Nokogiri::HTML::DocumentFragment.parse(html) + + expect(doc.children.size).to eq(6) + expect(doc.search('label.response').size).to eq(3) + expect(doc.search('input[type=radio].response').size).to eq(3) + expect(doc.search('#foo_smartphone_iPhone').size).to eq(1) + expect(doc.search('#foo_smartphone_Android').size).to eq(1) + expect(doc.search('#foo_smartphone_other').size).to eq(1) + expect(doc.search('input[type=radio].response.correct').empty?).to be_truthy + expect(doc.search('input[type=radio]').select {|i| i.attribute('checked') }.empty?).to be_truthy + end + ################################################################################ it "parses single line tokenized name radio button markup" do @@ -84,6 +103,24 @@ ) end + it 'generates the proper HTML markup for a tokenized name radio button set' do + html = Showoff::Compiler::Form.form_element_check_or_radio_set( + 'radio', + 'foo_awake', + 'awake', + [["x", "No "], ["", "Yes"]], + ) + doc = Nokogiri::HTML::DocumentFragment.parse(html) + + expect(doc.children.size).to eq(4) + expect(doc.search('label.response').size).to eq(2) + expect(doc.search('input[type=radio].response').size).to eq(2) + expect(doc.search('#foo_awake_No').size).to eq(1) + expect(doc.search('#foo_awake_Yes').size).to eq(1) + expect(doc.search('input[type=radio].response.correct').empty?).to be_truthy + expect(doc.search('input[type=radio]').select {|i| i.attribute('checked') }.size).to eq(1) + end + ################################################################################ it "parses multi line radio button markup" do @@ -130,8 +167,102 @@ ) end - it 'marks the proper answer as correct' - it 'selects the proper default option' + it 'renders items for a multiline radio button set' do + expect(Showoff::Compiler::Form).to receive(:form_element_check_or_radio).with( + 'radio', + 'foo_continent', + 'continent', + 'Africa', + 'Africa', + '', + ).and_return('x') + expect(Showoff::Compiler::Form).to receive(:form_element_check_or_radio).with( + 'radio', + 'foo_continent', + 'continent', + 'Americas', + 'Americas', + '', + ).and_return('x') + expect(Showoff::Compiler::Form).to receive(:form_element_check_or_radio).with( + 'radio', + 'foo_continent', + 'continent', + 'Asia', + 'Asia', + '=', + ).and_return('x') + expect(Showoff::Compiler::Form).to receive(:form_element_check_or_radio).with( + 'radio', + 'foo_continent', + 'continent', + 'Australia', + 'Australia', + '', + ).and_return('x') + expect(Showoff::Compiler::Form).to receive(:form_element_check_or_radio).with( + 'radio', + 'foo_continent', + 'continent', + 'Europe', + 'Europe', + '', + ).and_return('x') + + html = Showoff::Compiler::Form.form_element_multiline( + 'foo_continent', + 'continent', + "continent -> Which continent is largest? =\n() Africa\n() Americas\n(=) Asia\n() Australia\n() Europe", + ) + doc = Nokogiri::HTML::DocumentFragment.parse(html) + + expect(doc.search('li').size).to eq(5) + end + + it 'generates the proper HTML markup for a multiline radio button element' do + html = Showoff::Compiler::Form.form_element_check_or_radio( + 'radio', + 'foo_continent', + 'continent', + 'Africa', + 'Africa', + '', + ) + doc = Nokogiri::HTML::DocumentFragment.parse(html) + + expect(doc.children.size).to eq(2) + expect(doc.search('label.response').size).to eq(1) + expect(doc.search('label.response').first.text).to eq('Africa') + expect(doc.search('input[type=radio].response').size).to eq(1) + expect(doc.search('input[type=radio].response').first[:value]).to eq('Africa') + + expect(doc.search('#foo_continent_Africa').size).to eq(1) + expect(doc.search('input[type=radio].response.correct').empty?).to be_truthy + expect(doc.search('input[type=radio]').select {|i| i.attribute('checked') }.size).to eq(0) + end + + it 'generates the proper HTML markup for a multiline correct radio button element' do + html = Showoff::Compiler::Form.form_element_check_or_radio( + 'radio', + 'foo_continent', + 'continent', + 'Asia', + 'Asia', + '=', + ) + doc = Nokogiri::HTML::DocumentFragment.parse(html) + + expect(doc.children.size).to eq(2) + expect(doc.search('label.response').size).to eq(1) + expect(doc.search('label.response').first.text).to eq('Asia') + expect(doc.search('input[type=radio].response').size).to eq(1) + expect(doc.search('input[type=radio].response').first[:value]).to eq('Asia') + + expect(doc.search('#foo_continent_Asia').size).to eq(1) + expect(doc.search('input[type=radio].response').size).to eq(1) + expect(doc.search('input[type=radio]').select {|i| i.attribute('checked') }.size).to eq(0) + end + # @todo this test suite needs a lotta lotta work. This only scratches the surface end From 551d0559e72577db15c652ad37f4e60ce1233546 Mon Sep 17 00:00:00 2001 From: Ben Ford Date: Thu, 2 Jan 2020 22:25:46 -0800 Subject: [PATCH 20/46] add checkbox spec --- .../showoff/compiler/form/checkbox_spec.rb | 271 ++++++++++++++++++ 1 file changed, 271 insertions(+) create mode 100644 spec/unit/showoff/compiler/form/checkbox_spec.rb diff --git a/spec/unit/showoff/compiler/form/checkbox_spec.rb b/spec/unit/showoff/compiler/form/checkbox_spec.rb new file mode 100644 index 000000000..aaa7d8e76 --- /dev/null +++ b/spec/unit/showoff/compiler/form/checkbox_spec.rb @@ -0,0 +1,271 @@ +RSpec.describe Showoff::Compiler::Form do + + it "parses single line checkbox button markup" do +# markdown = File.read(File.join(fixtures, 'forms', 'radios.md')) +# content = Tilt[:markdown].new(nil, nil, {}) { markdown }.render + content = <<-EOF +

Testing checkbox buttons

+

smartphone = [] iPhone [] Android [] other -> Any other phone not listed

+EOF + + doc = Nokogiri::HTML::DocumentFragment.parse(content) + + expect(doc).to be_a(Nokogiri::HTML::DocumentFragment) + expect(Showoff::Compiler::Form).to receive(:form_element).with( + 'foo_smartphone', + 'smartphone', + 'smartphone', + false, + '[] iPhone [] Android [] other -> Any other phone not listed', + 'smartphone = [] iPhone [] Android [] other -> Any other phone not listed', + ).and_return('') + + # This call mutates the passed in object and invokes the form rendering + Showoff::Compiler::Form.render!(doc, :form => 'foo') + end + + it "renders checkbox buttons from single line markup" do + expect(Showoff::Compiler::Form).to receive(:form_element_checkboxes).with( + 'foo_smartphone', + 'smartphone', + [["", "iPhone "], ["", "Android "], ["", "other -> Any other phone not listed"]], + ).and_return('') + + Showoff::Compiler::Form.form_element( + 'foo_smartphone', + 'smartphone', + 'smartphone', + false, + '[] iPhone [] Android [] other -> Any other phone not listed', + 'smartphone = [] iPhone [] Android [] other -> Any other phone not listed', + ) + end + + it 'generates the proper HTML markup for a checkbox button set' do + html = Showoff::Compiler::Form.form_element_check_or_radio_set( + 'checkbox', + 'foo_smartphone', + 'smartphone', + [["", "iPhone "], ["", "Android "], ["", "other -> Any other phone not listed"]], + ) + doc = Nokogiri::HTML::DocumentFragment.parse(html) + + expect(doc.children.size).to eq(6) + expect(doc.search('label.response').size).to eq(3) + expect(doc.search('input[type=checkbox].response').size).to eq(3) + expect(doc.search('#foo_smartphone_iPhone').size).to eq(1) + expect(doc.search('#foo_smartphone_Android').size).to eq(1) + expect(doc.search('#foo_smartphone_other').size).to eq(1) + expect(doc.search('input[type=checkbox].response.correct').empty?).to be_truthy + expect(doc.search('input[type=checkbox]').select {|i| i.attribute('checked') }.empty?).to be_truthy + end + +################################################################################ + + it "parses single line tokenized name checkbox button markup" do +# markdown = File.read(File.join(fixtures, 'forms', 'radios.md')) +# content = Tilt[:markdown].new(nil, nil, {}) { markdown }.render + content = <<-EOF +

Testing radio buttons

+

awake -> Are you paying attention? = [x] No [] Yes

+EOF + + doc = Nokogiri::HTML::DocumentFragment.parse(content) + + expect(doc).to be_a(Nokogiri::HTML::DocumentFragment) + expect(Showoff::Compiler::Form).to receive(:form_element).with( + 'foo_awake', + 'awake', + 'Are you paying attention?', + false, + '[x] No [] Yes', + 'awake -> Are you paying attention? = [x] No [] Yes', + ).and_return('') + + # This call mutates the passed in object and invokes the form rendering + Showoff::Compiler::Form.render!(doc, :form => 'foo') + end + + it "renders checkbox buttons from single line markup with a tokenized name" do + expect(Showoff::Compiler::Form).to receive(:form_element_checkboxes).with( + 'foo_awake', + 'awake', + [["x", "No "], ["", "Yes"]], + ).and_return('') + + Showoff::Compiler::Form.form_element( + 'foo_awake', + 'awake', + 'Are you paying attention?', + false, + '[x] No [] Yes', + 'awake -> Are you paying attention? = [x] No [] Yes', + ) + end + + it 'generates the proper HTML markup for a tokenized name checkbox set' do + html = Showoff::Compiler::Form.form_element_check_or_radio_set( + 'checkbox', + 'foo_awake', + 'awake', + [["x", "No "], ["", "Yes"]], + ) + doc = Nokogiri::HTML::DocumentFragment.parse(html) + + expect(doc.children.size).to eq(4) + expect(doc.search('label.response').size).to eq(2) + expect(doc.search('input[type=checkbox].response').size).to eq(2) + expect(doc.search('#foo_awake_No').size).to eq(1) + expect(doc.search('#foo_awake_Yes').size).to eq(1) + expect(doc.search('input[type=checkbox].response.correct').empty?).to be_truthy + expect(doc.search('input[type=checkbox]').select {|i| i.attribute('checked') }.size).to eq(1) + end + +################################################################################ + + it "parses multi line checkbox markup" do + content = <<-EOF +

Testing radio buttons

+

continent -> Which continent is largest? = +[] Africa +[] Americas +[=] Asia +[] Australia +[] Europe

+EOF + + doc = Nokogiri::HTML::DocumentFragment.parse(content) + + expect(doc).to be_a(Nokogiri::HTML::DocumentFragment) + expect(Showoff::Compiler::Form).to receive(:form_element).with( + 'foo_continent', + 'continent', + 'Which continent is largest?', + false, + '', + "continent -> Which continent is largest? =\n[] Africa\n[] Americas\n[=] Asia\n[] Australia\n[] Europe", + ).and_return('') + + # This call mutates the passed in object and invokes the form rendering + Showoff::Compiler::Form.render!(doc, :form => 'foo') + end + + it "renders checkboxes from multi line markup" do + expect(Showoff::Compiler::Form).to receive(:form_element_multiline).with( + 'foo_continent', + 'continent', + "continent -> Which continent is largest? =\n[] Africa\n[] Americas\n[=] Asia\n[] Australia\n[] Europe", + ).and_return('') + + Showoff::Compiler::Form.form_element( + 'foo_continent', + 'continent', + 'Which continent is largest?', + false, + '', + "continent -> Which continent is largest? =\n[] Africa\n[] Americas\n[=] Asia\n[] Australia\n[] Europe", + ) + end + + it 'renders items for a multiline radio button set' do + expect(Showoff::Compiler::Form).to receive(:form_element_check_or_radio).with( + 'checkbox', + 'foo_continent', + 'continent', + 'Africa', + 'Africa', + '', + ).and_return('x') + expect(Showoff::Compiler::Form).to receive(:form_element_check_or_radio).with( + 'checkbox', + 'foo_continent', + 'continent', + 'Americas', + 'Americas', + '', + ).and_return('x') + expect(Showoff::Compiler::Form).to receive(:form_element_check_or_radio).with( + 'checkbox', + 'foo_continent', + 'continent', + 'Asia', + 'Asia', + '=', + ).and_return('x') + expect(Showoff::Compiler::Form).to receive(:form_element_check_or_radio).with( + 'checkbox', + 'foo_continent', + 'continent', + 'Australia', + 'Australia', + '', + ).and_return('x') + expect(Showoff::Compiler::Form).to receive(:form_element_check_or_radio).with( + 'checkbox', + 'foo_continent', + 'continent', + 'Europe', + 'Europe', + '', + ).and_return('x') + + html = Showoff::Compiler::Form.form_element_multiline( + 'foo_continent', + 'continent', + "continent -> Which continent is largest? =\n[] Africa\n[] Americas\n[=] Asia\n[] Australia\n[] Europe", + ) + doc = Nokogiri::HTML::DocumentFragment.parse(html) + + expect(doc.search('li').size).to eq(5) + end + + it 'generates the proper HTML markup for a multiline checkbox element' do + html = Showoff::Compiler::Form.form_element_check_or_radio( + 'checkbox', + 'foo_continent', + 'continent', + 'Africa', + 'Africa', + '', + ) + doc = Nokogiri::HTML::DocumentFragment.parse(html) + + expect(doc.children.size).to eq(2) + expect(doc.search('label.response').size).to eq(1) + expect(doc.search('label.response').first.text).to eq('Africa') + expect(doc.search('input[type=checkbox].response').size).to eq(1) + expect(doc.search('input[type=checkbox].response').first[:value]).to eq('Africa') + + expect(doc.search('#foo_continent_Africa').size).to eq(1) + expect(doc.search('input[type=checkbox].response.correct').empty?).to be_truthy + expect(doc.search('input[type=checkbox]').select {|i| i.attribute('checked') }.size).to eq(0) + end + + it 'generates the proper HTML markup for a multiline correct radio button element' do + html = Showoff::Compiler::Form.form_element_check_or_radio( + 'checkbox', + 'foo_continent', + 'continent', + 'Asia', + 'Asia', + '=', + ) + doc = Nokogiri::HTML::DocumentFragment.parse(html) + + expect(doc.children.size).to eq(2) + expect(doc.search('label.response').size).to eq(1) + expect(doc.search('label.response').first.text).to eq('Asia') + expect(doc.search('input[type=checkbox].response').size).to eq(1) + expect(doc.search('input[type=checkbox].response').first[:value]).to eq('Asia') + + expect(doc.search('#foo_continent_Asia').size).to eq(1) + expect(doc.search('input[type=checkbox].response').size).to eq(1) + expect(doc.search('input[type=checkbox]').select {|i| i.attribute('checked') }.size).to eq(0) + end + + # @todo this test suite needs a lotta lotta work. This only scratches the surface +end + + + + From ac9f2b92ce4b47953a31082043331521a80021c7 Mon Sep 17 00:00:00 2001 From: Ben Ford Date: Fri, 3 Jan 2020 00:11:00 -0800 Subject: [PATCH 21/46] fix form parsing bug --- lib/showoff/compiler/form.rb | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/lib/showoff/compiler/form.rb b/lib/showoff/compiler/form.rb index 1a65dd9da..fad849c19 100644 --- a/lib/showoff/compiler/form.rb +++ b/lib/showoff/compiler/form.rb @@ -130,13 +130,16 @@ def self.form_element_select(id, code, items) str << '' items.each do |item| - if item =~ /\((\w+)\)/ + selected = classes = '' + case item + when /\((\w+)\)/ item = $1 selected = 'selected' - else - selected = '' + when /\[(\w+)\]/ + item = $1 + classes = 'correct' end - str << "" + str << "" end str << '' end From 9e872fbc7ed2ce63b523d32f618d631303b203a3 Mon Sep 17 00:00:00 2001 From: Ben Ford Date: Fri, 3 Jan 2020 00:11:18 -0800 Subject: [PATCH 22/46] add specs for selects/text/textarea --- .../unit/showoff/compiler/form/select_spec.rb | 302 ++++++++++++++++++ spec/unit/showoff/compiler/form/text_spec.rb | 121 +++++++ .../showoff/compiler/form/textarea_spec.rb | 119 +++++++ 3 files changed, 542 insertions(+) create mode 100644 spec/unit/showoff/compiler/form/select_spec.rb create mode 100644 spec/unit/showoff/compiler/form/text_spec.rb create mode 100644 spec/unit/showoff/compiler/form/textarea_spec.rb diff --git a/spec/unit/showoff/compiler/form/select_spec.rb b/spec/unit/showoff/compiler/form/select_spec.rb new file mode 100644 index 000000000..86e530692 --- /dev/null +++ b/spec/unit/showoff/compiler/form/select_spec.rb @@ -0,0 +1,302 @@ +RSpec.describe Showoff::Compiler::Form do + + it "parses single line combo select markup" do + content = <<-EOF +

Testing combo selects

+

smartphone = {iPhone, Pixel, Galaxy, Moto, (Other) }

+EOF + + doc = Nokogiri::HTML::DocumentFragment.parse(content) + + expect(doc).to be_a(Nokogiri::HTML::DocumentFragment) + expect(Showoff::Compiler::Form).to receive(:form_element).with( + 'foo_smartphone', + 'smartphone', + 'smartphone', + false, + '{iPhone, Pixel, Galaxy, Moto, (Other) }', + 'smartphone = {iPhone, Pixel, Galaxy, Moto, (Other) }', + ).and_return('') + + # This call mutates the passed in object and invokes the form rendering + Showoff::Compiler::Form.render!(doc, :form => 'foo') + end + + it "renders select widgets from single line markup" do + expect(Showoff::Compiler::Form).to receive(:form_element_select).with( + 'foo_smartphone', + 'smartphone', + ["iPhone", "Pixel", "Galaxy", "Moto", "(Other)"], + ).and_return('') + + Showoff::Compiler::Form.form_element( + 'foo_smartphone', + 'smartphone', + 'smartphone', + false, + '{iPhone, Pixel, Galaxy, Moto, (Other) }', + 'smartphone = {iPhone, Pixel, Galaxy, Moto, (Other) }', + ) + end + + it 'generates the proper HTML markup for a select widget' do + html = Showoff::Compiler::Form.form_element_select( + 'foo_smartphone', + 'smartphone', + ["iPhone", "Pixel", "Galaxy", "Moto", "(Other)"], + ) + doc = Nokogiri::HTML::DocumentFragment.parse(html) + + expect(doc.children.size).to eq(1) + expect(doc.search('option').size).to eq(6) + expect(doc.search('option').first.text).to eq('----') + expect(doc.search('option').reject {|o| o[:selected] }.size).to eq(5) + expect(doc.search('option').find {|o| o[:selected] }.text).to eq('Other') + expect(doc.search('option').map{|o| o.text }).to eq(["----", "iPhone", "Pixel", "Galaxy", "Moto", "Other"]) + end + +################################################################################ + + it "parses single line combo select markup with tokenized name" do + content = <<-EOF +

Testing combo selects

+

phoneos -> Which phone OS is developed by Google? = {iOS, [Android], Other }

+EOF + + doc = Nokogiri::HTML::DocumentFragment.parse(content) + + expect(doc).to be_a(Nokogiri::HTML::DocumentFragment) + expect(Showoff::Compiler::Form).to receive(:form_element).with( + 'foo_phoneos', + 'phoneos', + 'Which phone OS is developed by Google?', + false, + '{iOS, [Android], Other }', + 'phoneos -> Which phone OS is developed by Google? = {iOS, [Android], Other }', + ).and_return('') + + # This call mutates the passed in object and invokes the form rendering + Showoff::Compiler::Form.render!(doc, :form => 'foo') + end + + it "renders select widgets from single line markup with a tokenized name" do + expect(Showoff::Compiler::Form).to receive(:form_element_select).with( + 'foo_phoneos', + 'phoneos', + ['iOS', '[Android]', 'Other'], + ).and_return('') + + Showoff::Compiler::Form.form_element( + 'foo_phoneos', + 'phoneos', + 'Which phone OS is developed by Google?', + false, + '{iOS, [Android], Other }', + 'phoneos -> Which phone OS is developed by Google? = {iOS, [Android], Other }', + ) + end + + it 'generates the proper HTML markup for a tokenized name select widget' do + html = Showoff::Compiler::Form.form_element_select( + 'foo_phoneos', + 'phoneos', + ['iOS', '[Android]', 'Other'], + ) + doc = Nokogiri::HTML::DocumentFragment.parse(html) + + expect(doc.children.size).to eq(1) + expect(doc.search('option').size).to eq(4) + expect(doc.search('option').first.text).to eq('----') + expect(doc.search('option').find {|o| o[:selected] }).to be_nil + expect(doc.search('option.correct').size).to eq(1) + expect(doc.search('option.correct').first.text).to eq('Android') + expect(doc.search('option').map{|o| o.text }).to eq(["----", "iOS", "Android", "Other"]) + end + +################################################################################ + + it "parses multi line select markup" do + content = <<-EOF +

Testing selects

+

phoneos -> Which phone OS is developed by Google? = { + iOS + [Android] + Other +}

+EOF + + doc = Nokogiri::HTML::DocumentFragment.parse(content) + + expect(doc).to be_a(Nokogiri::HTML::DocumentFragment) + expect(Showoff::Compiler::Form).to receive(:form_element).with( + 'foo_phoneos', + 'phoneos', + 'Which phone OS is developed by Google?', + false, + '{', + "phoneos -> Which phone OS is developed by Google? = {\n iOS\n [Android]\n Other\n}", + ).and_return('') + + # This call mutates the passed in object and invokes the form rendering + Showoff::Compiler::Form.render!(doc, :form => 'foo') + end + + it "renders selects widgets from multi line markup" do + expect(Showoff::Compiler::Form).to receive(:form_element_select_multiline).with( + 'foo_phoneos', + 'phoneos', + "phoneos -> Which phone OS is developed by Google? = {\n iOS\n [Android]\n Other\n}", + ).and_return('') + + Showoff::Compiler::Form.form_element( + 'foo_phoneos', + 'phoneos', + 'Which phone OS is developed by Google?', + false, + '{', + "phoneos -> Which phone OS is developed by Google? = {\n iOS\n [Android]\n Other\n}", + ) + end + + + it 'generates the proper HTML markup for a multiline select widget' do + html = Showoff::Compiler::Form.form_element_select_multiline( + 'foo_phoneos', + 'phoneos', + "phoneos -> Which phone OS is developed by Google? = {\n iOS\n [Android]\n Other\n}", + ) + doc = Nokogiri::HTML::DocumentFragment.parse(html) + + expect(doc.children.size).to eq(1) + expect(doc.search('option').size).to eq(4) + expect(doc.search('option').first.text).to eq('----') + expect(doc.search('option').find {|o| o[:selected] }).to be_nil + expect(doc.search('option.correct').size).to eq(1) + expect(doc.search('option.correct').first.text).to eq('Android') + expect(doc.search('option').map{|o| o.text }).to eq(["----", "iOS", "Android", "Other"]) + end + + it 'generates the proper HTML markup for a multiline select widget with one selected' do + html = Showoff::Compiler::Form.form_element_select_multiline( + 'foo_phoneos', + 'phoneos', + "phoneos -> Which phone OS is developed by Google? = {\n iOS\n [Android]\n (Other)\n}", + ) + doc = Nokogiri::HTML::DocumentFragment.parse(html) + + expect(doc.children.size).to eq(1) + expect(doc.search('option').size).to eq(4) + expect(doc.search('option').first.text).to eq('----') + expect(doc.search('option').select {|o| o[:selected] }.size).to eq(1) + expect(doc.search('option').find {|o| o[:selected] }.text).to eq('Other') + expect(doc.search('option.correct').size).to eq(1) + expect(doc.search('option.correct').first.text).to eq('Android') + expect(doc.search('option').map{|o| o.text }).to eq(["----", "iOS", "Android", "Other"]) + end + +################################################################################ + + it "parses multi line select tokenized markup" do + content = <<-EOF +

Testing selects

+

cuisine -> What is your favorite cuisine? = { + US -> American + IT -> Italian + FR -> French +}

+EOF + + doc = Nokogiri::HTML::DocumentFragment.parse(content) + + expect(doc).to be_a(Nokogiri::HTML::DocumentFragment) + expect(Showoff::Compiler::Form).to receive(:form_element).with( + 'foo_cuisine', + 'cuisine', + 'What is your favorite cuisine?', + false, + '{', + "cuisine -> What is your favorite cuisine? = {\n US -> American\n IT -> Italian\n FR -> French\n}", + ).and_return('') + + # This call mutates the passed in object and invokes the form rendering + Showoff::Compiler::Form.render!(doc, :form => 'foo') + end + + it "renders selects widgets from multi line tokenized markup" do + expect(Showoff::Compiler::Form).to receive(:form_element_select_multiline).with( + 'foo_cuisine', + 'cuisine', + "cuisine -> What is your favorite cuisine? = {\n US -> American\n IT -> Italian\n FR -> French\n}", + ).and_return('') + + Showoff::Compiler::Form.form_element( + 'foo_cuisine', + 'cuisine', + 'What is your favorite cuisine?', + false, + '{', + "cuisine -> What is your favorite cuisine? = {\n US -> American\n IT -> Italian\n FR -> French\n}", + ) + end + + + it 'generates the proper HTML markup for a tokenized multiline select widget' do + html = Showoff::Compiler::Form.form_element_select_multiline( + 'foo_cuisine', + 'cuisine', + "cuisine -> What is your favorite cuisine? = {\n US -> American\n IT -> Italian\n FR -> French\n}", + ) + doc = Nokogiri::HTML::DocumentFragment.parse(html) + + expect(doc.children.size).to eq(1) + expect(doc.search('option').size).to eq(4) + expect(doc.search('option').first.text).to eq('----') + expect(doc.search('option').find {|o| o[:selected] }).to be_nil + expect(doc.search('option.correct').empty?).to be_truthy + expect(doc.search('option').map{|o| o[:value] }).to eq(["", "US", "IT", "FR"]) + expect(doc.search('option').map{|o| o.text }).to eq(["----", "American", "Italian", "French"]) + end + + it 'generates the proper HTML markup for a multiline select widget with one selected' do + html = Showoff::Compiler::Form.form_element_select_multiline( + 'foo_cuisine', + 'cuisine', + "cuisine -> What is your favorite cuisine? = {\n US -> American\n IT -> Italian\n FR -> French\n\n (XX -> Other)\n}", + ) + doc = Nokogiri::HTML::DocumentFragment.parse(html) + + expect(doc.children.size).to eq(1) + expect(doc.search('option').size).to eq(5) + expect(doc.search('option').first.text).to eq('----') + expect(doc.search('option.correct').empty?).to be_truthy + expect(doc.search('option').select {|o| o[:selected] }.size).to eq(1) + expect(doc.search('option').find {|o| o[:selected] }[:value]).to eq('XX') + expect(doc.search('option').find {|o| o[:selected] }.text).to eq('Other') + expect(doc.search('option').map{|o| o[:value] }).to eq(["", "US", "IT", "FR", "XX"]) + expect(doc.search('option').map{|o| o.text }).to eq(["----", "American", "Italian", "French", "Other"]) + end + + it 'generates the proper HTML markup for a multiline select widget with a correct answer' do + html = Showoff::Compiler::Form.form_element_select_multiline( + 'foo_cuisine', + 'cuisine', + "cuisine -> What type of cuisine is a baguette? = {\n US -> American\n IT -> Italian\n [FR -> French]\n\n XX -> Other\n}", + ) + doc = Nokogiri::HTML::DocumentFragment.parse(html) + + expect(doc.children.size).to eq(1) + expect(doc.search('option').size).to eq(5) + expect(doc.search('option').first.text).to eq('----') + expect(doc.search('option').select {|o| o[:selected] }.size).to eq(0) + expect(doc.search('option.correct').size).to eq(1) + expect(doc.search('option.correct').first.text).to eq('French') + expect(doc.search('option.correct').first[:value]).to eq('FR') + expect(doc.search('option').map{|o| o[:value] }).to eq(["", "US", "IT", "FR", "XX"]) + expect(doc.search('option').map{|o| o.text }).to eq(["----", "American", "Italian", "French", "Other"]) + end + +end + + + + diff --git a/spec/unit/showoff/compiler/form/text_spec.rb b/spec/unit/showoff/compiler/form/text_spec.rb new file mode 100644 index 000000000..ff68cb1f5 --- /dev/null +++ b/spec/unit/showoff/compiler/form/text_spec.rb @@ -0,0 +1,121 @@ +RSpec.describe Showoff::Compiler::Form do + + it "parses single line text field markup" do + content = <<-EOF +

What's your name?

+

name = ___

+EOF + + doc = Nokogiri::HTML::DocumentFragment.parse(content) + + expect(doc).to be_a(Nokogiri::HTML::DocumentFragment) + expect(Showoff::Compiler::Form).to receive(:form_element).with( + 'foo_name', + 'name', + 'name', + false, + '___', + 'name = ___', + ).and_return('') + + # This call mutates the passed in object and invokes the form rendering + Showoff::Compiler::Form.render!(doc, :form => 'foo') + end + + it "renders text fields from markup" do + expect(Showoff::Compiler::Form).to receive(:form_element_text).with( + 'foo_name', + 'name', + nil, + ).and_return('') + + Showoff::Compiler::Form.form_element( + 'foo_name', + 'name', + 'name', + false, + '___', + 'name = ___', + ) + end + + it 'generates the proper HTML markup for a text field' do + html = Showoff::Compiler::Form.form_element_text( + 'foo_name', + 'name', + nil, + ) + doc = Nokogiri::HTML::DocumentFragment.parse(html) + text = doc.children.first + + expect(doc.children.size).to eq(1) + expect(text.node_name).to eq('input') + expect(text[:type]).to eq('text') + expect(text[:id]).to eq('foo_name_response') + expect(text[:name]).to eq('name') + expect(text[:size]).to eq('') + end + +################################################################################ + + it "parses single line text field markup with length" do + content = <<-EOF +

What's your name?

+

name = ___[50]

+EOF + + doc = Nokogiri::HTML::DocumentFragment.parse(content) + + expect(doc).to be_a(Nokogiri::HTML::DocumentFragment) + expect(Showoff::Compiler::Form).to receive(:form_element).with( + 'foo_name', + 'name', + 'name', + false, + '___[50]', + 'name = ___[50]', + ).and_return('') + + # This call mutates the passed in object and invokes the form rendering + Showoff::Compiler::Form.render!(doc, :form => 'foo') + end + + it "renders text fields from markup with length" do + expect(Showoff::Compiler::Form).to receive(:form_element_text).with( + 'foo_name', + 'name', + '50', + ).and_return('') + + Showoff::Compiler::Form.form_element( + 'foo_name', + 'name', + 'name', + false, + '___[50]', + 'name = ___[50]', + ) + end + + it 'generates the proper HTML markup for a text field' do + html = Showoff::Compiler::Form.form_element_text( + 'foo_name', + 'name', + '50', + ) + doc = Nokogiri::HTML::DocumentFragment.parse(html) + text = doc.children.first + + expect(doc.children.size).to eq(1) + expect(text.node_name).to eq('input') + expect(text[:type]).to eq('text') + expect(text[:id]).to eq('foo_name_response') + expect(text[:name]).to eq('name') + expect(text[:size]).to eq('50') + end + +end + + + + diff --git a/spec/unit/showoff/compiler/form/textarea_spec.rb b/spec/unit/showoff/compiler/form/textarea_spec.rb new file mode 100644 index 000000000..06a1bf4e5 --- /dev/null +++ b/spec/unit/showoff/compiler/form/textarea_spec.rb @@ -0,0 +1,119 @@ +RSpec.describe Showoff::Compiler::Form do + + it "parses textarea markup" do + content = <<-EOF +

Got any comments?

+

comments = [ ]

+EOF + + doc = Nokogiri::HTML::DocumentFragment.parse(content) + + expect(doc).to be_a(Nokogiri::HTML::DocumentFragment) + expect(Showoff::Compiler::Form).to receive(:form_element).with( + 'foo_comments', + 'comments', + 'comments', + false, + '[ ]', + 'comments = [ ]', + ).and_return('') + + # This call mutates the passed in object and invokes the form rendering + Showoff::Compiler::Form.render!(doc, :form => 'foo') + end + + it "renders textareas from markup" do + expect(Showoff::Compiler::Form).to receive(:form_element_textarea).with( + 'foo_comments', + 'comments', + '', + ).and_return('') + + Showoff::Compiler::Form.form_element( + 'foo_comments', + 'comments', + 'comments', + false, + '[ ]', + 'comments = [ ]', + ) + end + + it 'generates the proper HTML markup for a textarea' do + html = Showoff::Compiler::Form.form_element_textarea( + 'foo_comments', + 'comments', + '', + ) + doc = Nokogiri::HTML::DocumentFragment.parse(html) + text = doc.children.first + + expect(doc.children.size).to eq(1) + expect(text.node_name).to eq('textarea') + expect(text[:id]).to eq('foo_comments_response') + expect(text[:name]).to eq('comments') + expect(text[:rows]).to eq('3') + end + +################################################################################ + + it "parses textarea markup with rows" do + content = <<-EOF +

Got any comments?

+

comments = [ 5]

+EOF + + doc = Nokogiri::HTML::DocumentFragment.parse(content) + + expect(doc).to be_a(Nokogiri::HTML::DocumentFragment) + expect(Showoff::Compiler::Form).to receive(:form_element).with( + 'foo_comments', + 'comments', + 'comments', + false, + '[ 5]', + 'comments = [ 5]', + ).and_return('') + + # This call mutates the passed in object and invokes the form rendering + Showoff::Compiler::Form.render!(doc, :form => 'foo') + end + + it "renders textareas from markup with rows" do + expect(Showoff::Compiler::Form).to receive(:form_element_textarea).with( + 'foo_comments', + 'comments', + '5', + ).and_return('') + + Showoff::Compiler::Form.form_element( + 'foo_comments', + 'comments', + 'comments', + false, + '[ 5]', + 'comments = [ 5]', + ) + end + + it 'generates the proper HTML markup for a textarea with rows' do + html = Showoff::Compiler::Form.form_element_textarea( + 'foo_comments', + 'comments', + '5', + ) + doc = Nokogiri::HTML::DocumentFragment.parse(html) + text = doc.children.first + + expect(doc.children.size).to eq(1) + expect(text.node_name).to eq('textarea') + expect(text[:id]).to eq('foo_comments_response') + expect(text[:name]).to eq('comments') + expect(text[:rows]).to eq('5') + end + +end + + + + From 0bc29376156d65d7c5f3526335043b655df7a04b Mon Sep 17 00:00:00 2001 From: Ben Ford Date: Mon, 6 Jan 2020 21:03:24 -0800 Subject: [PATCH 23/46] make a list of directories work again --- lib/showoff/config.rb | 21 ++++++--------------- 1 file changed, 6 insertions(+), 15 deletions(-) diff --git a/lib/showoff/config.rb b/lib/showoff/config.rb index 717ae12d6..ff5742a20 100644 --- a/lib/showoff/config.rb +++ b/lib/showoff/config.rb @@ -37,7 +37,7 @@ def self.includeSection?(section) return true # todo make this work end - def self.load(root, path) + def self.load(root, path = 'showoff.json') @@root = File.expand_path(root) @@config = JSON.parse(File.read(File.join(@@root, path))) @@sections = self.expand_sections @@ -101,6 +101,7 @@ def self.expand_sections def self.legacy_sections(data) # each entry in sections can be: # - "filename.md" + # - "directory" # - { "section": "filename.md" } # - { "section": "directory" } # - { "section": [ "array.md, "of.md, "files.md"] } @@ -118,7 +119,7 @@ def self.legacy_sections(data) if entry.include? 'include' file = entry['include'] path = File.dirname(file) - data = JSON.parse(File.read(file)) + data = JSON.parse(File.read(File.join(@@root, file))) if data.is_a? Array if path == '.' section = data @@ -135,18 +136,8 @@ def self.legacy_sections(data) # and I don't want to waste time on legacy functionality. # Normalize to a proper path from presentation root - filename = self.path(entry) - # and then strip out the locale directory, if there is one - filename.sub!(/^(locales\/[\w-]+\/)/, '') - locale = $1 - - if File.directory? filename - path = entry - sections[path] ||= [] - Dir.glob("#{filename}/**/*.md").sort.each do |slidefile| - fullpath = locale.nil? ? slidefile : "#{locale}/#{slidefile}" - sections[path] << fullpath - end + if File.directory? File.join(@@root, entry) + sections[entry] = Dir.glob("#{entry}/**/*.md", :base => @@root) else path = File.dirname(entry) @@ -164,7 +155,7 @@ def self.legacy_sections(data) path = "#{path} (#{counters[path]})" unless counters[path] == 1 sections[path] ||= [] - sections[path] << filename + sections[path] << entry end end From 7797303b1772469b6ed6167e8d2e584703797967 Mon Sep 17 00:00:00 2001 From: Ben Ford Date: Mon, 6 Jan 2020 22:56:10 -0800 Subject: [PATCH 24/46] add i18n --- lib/showoff/compiler.rb | 4 +- lib/showoff/compiler/form.rb | 4 +- lib/showoff/compiler/i18n.rb | 24 ++++- lib/showoff/compiler/notes.rb | 2 +- lib/showoff/locale.rb | 132 +++++++++++++++++++++++ lib/showoff/presentation/section.rb | 5 +- lib/showoff_ng.rb | 2 + spec/fixtures/i18n/content.md | 16 +++ spec/fixtures/i18n/locales/de/content.md | 16 +++ spec/fixtures/i18n/locales/fr/content.md | 16 +++ spec/fixtures/i18n/locales/strings.json | 17 +++ spec/fixtures/i18n/showoff.json | 7 ++ spec/unit/showoff/compiler/i18n_spec.rb | 79 ++++++++++++++ spec/unit/showoff/locale_spec.rb | 53 +++++++++ 14 files changed, 368 insertions(+), 9 deletions(-) create mode 100644 lib/showoff/locale.rb create mode 100644 spec/fixtures/i18n/content.md create mode 100644 spec/fixtures/i18n/locales/de/content.md create mode 100644 spec/fixtures/i18n/locales/fr/content.md create mode 100644 spec/fixtures/i18n/locales/strings.json create mode 100644 spec/fixtures/i18n/showoff.json create mode 100644 spec/unit/showoff/compiler/i18n_spec.rb create mode 100644 spec/unit/showoff/locale_spec.rb diff --git a/lib/showoff/compiler.rb b/lib/showoff/compiler.rb index 372939059..ac049b299 100644 --- a/lib/showoff/compiler.rb +++ b/lib/showoff/compiler.rb @@ -4,9 +4,9 @@ class Showoff::Compiler require 'showoff/compiler/form' - require 'showoff/compiler/i18n' require 'showoff/compiler/variables' require 'showoff/compiler/fixups' + require 'showoff/compiler/i18n' require 'showoff/compiler/notes' require 'showoff/compiler/glossary' require 'showoff/compiler/downloads' @@ -81,7 +81,7 @@ def profile # @todo I think the update_image_paths() malarky is redundant. Verify that. def render(content) Variables::interpolate!(content) -# selectLanguage!(content) + I18n.selectLanguage!(content) html = Tilt[:markdown].new(nil, nil, @profile) { content }.render doc = Nokogiri::HTML::DocumentFragment.parse(html) diff --git a/lib/showoff/compiler/form.rb b/lib/showoff/compiler/form.rb index fad849c19..d95ae1754 100644 --- a/lib/showoff/compiler/form.rb +++ b/lib/showoff/compiler/form.rb @@ -23,12 +23,12 @@ def self.render!(doc, options={}) button = Nokogiri::XML::Node.new('input', doc).add_class('display') button.set_attribute('type', 'button') - button.set_attribute('value', 'forms.display') + button.set_attribute('value', I18n.t('forms.display')) tools.add_child(button) submit = Nokogiri::XML::Node.new('input', doc).add_class('save') submit.set_attribute('type', 'submit') - submit.set_attribute('value', 'forms.save') + submit.set_attribute('value', I18n.t('forms.save')) submit.set_attribute('disabled', 'disabled') tools.add_child(submit) diff --git a/lib/showoff/compiler/i18n.rb b/lib/showoff/compiler/i18n.rb index 1cb9a36bf..198399567 100644 --- a/lib/showoff/compiler/i18n.rb +++ b/lib/showoff/compiler/i18n.rb @@ -1,4 +1,24 @@ -# adds translation and internationalization to the compiler -class Showoff::Compiler +# Adds slide language selection to the compiler +class Showoff::Compiler::I18n + + def self.selectLanguage!(content) + translations = {} + content.scan(/^((~~~LANG:([\w-]+)~~~\n)(.+?)(\n~~~ENDLANG~~~))/m).each do |match| + markup, opentag, code, text, closetag = match + translations[code] = {:markup => markup, :content => text} + end + + lang = Showoff::Locale.resolve(translations.keys).to_s + + translations.each do |code, translation| + if code == lang + content.sub!(translation[:markup], translation[:content]) + else + content.sub!(translation[:markup], "\n") + end + end + + content + end end diff --git a/lib/showoff/compiler/notes.rb b/lib/showoff/compiler/notes.rb index 9ad683450..0917af4a9 100644 --- a/lib/showoff/compiler/notes.rb +++ b/lib/showoff/compiler/notes.rb @@ -56,7 +56,7 @@ def self.render!(doc, profile, options = {}) doc.add_child '
' if doc.search('div.notes-section.notes').empty? doc.search('div.notes-section.notes').each do |section| text = Tilt[:markdown].new(nil, nil, options[:profile]) { File.read(filename) }.render - frag = "

presenter.notes.personal

#{text}
" # @todo add back i18n #{I18n.t('presenter.notes.personal')} + frag = "

#{I18n.t('presenter.notes.personal')}

#{text}
" section.prepend_child(frag) end end diff --git a/lib/showoff/locale.rb b/lib/showoff/locale.rb new file mode 100644 index 000000000..1bf050e87 --- /dev/null +++ b/lib/showoff/locale.rb @@ -0,0 +1,132 @@ +require 'i18n' +require 'i18n/backend/fallbacks' +require 'iso-639' + +I18n::Backend::Simple.send(:include, I18n::Backend::Fallbacks) +I18n.load_path += Dir[File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'locales', '*.yml'))] +I18n.backend.load_translations +I18n.enforce_available_locales = false + +class Showoff::Locale + @@contentLocale = nil + + # Set the minimized canonical version of the specified content locale, selecting + # the nearest match to whatever exists in the presentation's locales directory. + # If the locale doesn't exist on disk, it will just default to no translation + # + # @todo: I don't think this is right at all -- it doesn't autoselect content + # languages, just built in Showoff languages. It only worked by accident before + # + # @param user_locale [String, Symbol] The locale to select. + # + # @returns [Symbol] The selected and saved locale. + def self.setContentLocale(user_locale = nil) + if [nil, '', 'auto'].include? user_locale + languages = I18n.available_locales + @@contentLocale = I18n.fallbacks[I18n.locale].select { |f| languages.include? f }.first + else + locales = Dir.glob('*', :base => "#{Showoff::Config.root}/locales") + locales.delete 'strings.json' + + @@contentLocale = with_locale(user_locale) do |str| + str.to_sym if locales.include? str + end + end + end + + def self.contentLocale + @@contentLocale + end + + # Find the closest match to current locale in an array of possibilities + # + # @param items [Array] An array of possibilities to check + # @return [Symbol] The closest match to the current locale. + def self.resolve(items) + with_locale(contentLocale) do |str| + str.to_sym if items.include? str + end + end + + # Turns a locale code into a string name + # + # @param locale [String, Symbol] The code of the locale to translate + # @returns [String] The name of the locale. + def self.languageName(locale = contentLocale) + with_locale(locale) do |str| + result = ISO_639.find(str) + result[3] unless result.nil? + end + end + + # This function returns the directory containing translated *content*, defaulting + # to the presentation root. This works similarly to I18n fallback, but we cannot + # reuse that as it's a different translation mechanism. + + # @returns [String] Path to the translated content. + def self.contentPath + root = Showoff::Config.root + + with_locale(contentLocale) do |str| + path = "#{root}/locales/#{str}" + return path if File.directory?(path) + end || root + end + + # Generates a hash of all language codes available and the long name description of each + # + # @returns [Hash] The language code/name hash. + def self.contentLanguages + root = Showoff::Config.root + + strings = JSON.parse(File.read("#{root}/locales/strings.json")) rescue {} + locales = Dir.glob("#{root}/locales/*") + .select {|f| File.directory?(f) } + .map {|f| File.basename(f) } + + (strings.keys + locales).inject({}) do |memo, locale| + memo.update(locale => languageName(locale)) + end + end + + + # Generates a hash of all translations for the current language. This is used + # for the javascript half of the UI translations + # + # @returns [Hash] The locale code/strings hash. + def self.translations + languages = I18n.backend.send(:translations) + fallback = I18n.fallbacks[I18n.locale].select { |f| languages.keys.include? f }.first + languages[fallback] + end + + # Finds the language key from strings.json and returns the strings hash. This is + # used for user translations in the presentation content, e.g. SVG translations. + # + # @returns [Hash] The user translation code/strings hash. + def self.userTranslations + path = "#{Showoff::Config.root}/locales/strings.json" + return {} unless File.file? path + strings = JSON.parse(File.read(path)) rescue {} + + with_locale(contentLocale) do |key| + return strings[key] if strings.include? key + end + {} + end + + # This is just a unified lookup method that takes a full locale name + # and then resolves it to an available version of the name + def self.with_locale(locale) + locale = locale.to_s + until (locale.empty?) do + result = yield(locale) + return result unless result.nil? + + # if not found, chop off a section and try again + locale = locale.rpartition(/[-_]/).first + end + end + private_class_method :with_locale + +end diff --git a/lib/showoff/presentation/section.rb b/lib/showoff/presentation/section.rb index 3d7c04388..3d9a230df 100644 --- a/lib/showoff/presentation/section.rb +++ b/lib/showoff/presentation/section.rb @@ -21,7 +21,7 @@ def render def loadSlides(filename) return unless filename.end_with? '.md' - content = File.read(File.join(Showoff::Config.root, filename)) + content = File.read(File.join(Showoff::Locale.contentPath, filename)) # if there are no !SLIDE markers, then make every H1 define a new slide unless content =~ /^\ @name, :name => filename, :seq => seq) + options, content = data + @slides << Showoff::Presentation::Slide.new(options, content, :section => @name, :name => filename, :seq => seq) seq +=1 if seq end diff --git a/lib/showoff_ng.rb b/lib/showoff_ng.rb index b42fd8ed8..602c1a4ec 100644 --- a/lib/showoff_ng.rb +++ b/lib/showoff_ng.rb @@ -3,10 +3,12 @@ class Showoff require 'showoff/compiler' require 'showoff/presentation' require 'showoff/state' + require 'showoff/locale' def self.do_static(args, options) puts 'Hello world!' + Showoff::Locale.setContentLocale(options[:language]) presentation = Showoff::Presentation.new(options) puts presentation.render diff --git a/spec/fixtures/i18n/content.md b/spec/fixtures/i18n/content.md new file mode 100644 index 000000000..4a2e20d55 --- /dev/null +++ b/spec/fixtures/i18n/content.md @@ -0,0 +1,16 @@ + +# One + +This little piggy stayed home. + + + +# Two + +This little piggy had roast beef. + + + +# Three + +This little piggy had none. diff --git a/spec/fixtures/i18n/locales/de/content.md b/spec/fixtures/i18n/locales/de/content.md new file mode 100644 index 000000000..f75a15a7b --- /dev/null +++ b/spec/fixtures/i18n/locales/de/content.md @@ -0,0 +1,16 @@ + +# Eins + +Dieses kleine Schweinchen blieb zu Hause. + + + +# Zwei + +Dieses kleine Schweinchen hatte Roastbeef. + + + +# Drei + +Dieses kleine Schweinchen hatte keine. diff --git a/spec/fixtures/i18n/locales/fr/content.md b/spec/fixtures/i18n/locales/fr/content.md new file mode 100644 index 000000000..f525515fd --- /dev/null +++ b/spec/fixtures/i18n/locales/fr/content.md @@ -0,0 +1,16 @@ + +# Un + +Ce petit cochon est resté à la maison. + + + +# Deux + +Ce petit cochon avait du rosbif. + + + +# Trois + +Ce petit cochon n'en avait pas. diff --git a/spec/fixtures/i18n/locales/strings.json b/spec/fixtures/i18n/locales/strings.json new file mode 100644 index 000000000..77a26a4ac --- /dev/null +++ b/spec/fixtures/i18n/locales/strings.json @@ -0,0 +1,17 @@ +{ + "en": { + "greeting": "Hello!" + }, + "es": { + "greeting": "Hola!" + }, + "fr": { + "greeting": "Bonjour!" + }, + "de": { + "greeting": "Hallo!" + }, + "ja": { + "greeting": "こんにちは!" + } +} diff --git a/spec/fixtures/i18n/showoff.json b/spec/fixtures/i18n/showoff.json new file mode 100644 index 000000000..fad0286e3 --- /dev/null +++ b/spec/fixtures/i18n/showoff.json @@ -0,0 +1,7 @@ +{ + "name": "Languages", + "description": "This has a few simple translations.", + "sections": [ + "content.md" + ] +} diff --git a/spec/unit/showoff/compiler/i18n_spec.rb b/spec/unit/showoff/compiler/i18n_spec.rb new file mode 100644 index 000000000..21f22a04d --- /dev/null +++ b/spec/unit/showoff/compiler/i18n_spec.rb @@ -0,0 +1,79 @@ +RSpec.describe Showoff::Compiler::I18n do + before(:each) do + Showoff::Config.load(File.join(fixtures, 'i18n'), 'showoff.json') + end + + it "selects the correct language" do + content = <<-EOF +# This is a simple markdown slide + +~~~LANG:en~~~ +Hello, world! +~~~ENDLANG~~~ + +~~~LANG:fr~~~ +Bonjour tout le monde! +~~~ENDLANG~~~ +EOF + + Showoff::Locale.setContentLocale(:fr) + + # This call mutates the passed in object + Showoff::Compiler::I18n.selectLanguage!(content) + + expect(content).to be_a(String) + expect(content).to match(/Bonjour tout le monde!/) + expect(content).not_to match(/Hello, world!/) + expect(content).not_to match(/~~~LANG:[\w-]+~~~/) + expect(content).not_to match(/~~~ENDLANG~~~/) + end + + it "includes no languages if they don't match" do + content = <<-EOF +# This is a simple markdown slide + +~~~LANG:en~~~ +Hello, world! +~~~ENDLANG~~~ + +~~~LANG:fr~~~ +Bonjour tout le monde! +~~~ENDLANG~~~ +EOF + + Showoff::Locale.setContentLocale(:js) + + # This call mutates the passed in object + Showoff::Compiler::I18n.selectLanguage!(content) + + expect(content).to be_a(String) + expect(content).not_to match(/Bonjour tout le monde!/) + expect(content).not_to match(/Hello, world!/) + expect(content).not_to match(/~~~LANG:[\w-]+~~~/) + expect(content).not_to match(/~~~ENDLANG~~~/) + end + + it "includes no languages if local is unset" do + content = <<-EOF +# This is a simple markdown slide + +~~~LANG:en~~~ +Hello, world! +~~~ENDLANG~~~ + +~~~LANG:fr~~~ +Bonjour tout le monde! +~~~ENDLANG~~~ +EOF + + # This call mutates the passed in object + Showoff::Compiler::I18n.selectLanguage!(content) + + expect(content).to be_a(String) + expect(content).not_to match(/Bonjour tout le monde!/) + expect(content).not_to match(/Hello, world!/) + expect(content).not_to match(/~~~LANG:[\w-]+~~~/) + expect(content).not_to match(/~~~ENDLANG~~~/) + end + +end diff --git a/spec/unit/showoff/locale_spec.rb b/spec/unit/showoff/locale_spec.rb new file mode 100644 index 000000000..9f38f386d --- /dev/null +++ b/spec/unit/showoff/locale_spec.rb @@ -0,0 +1,53 @@ +RSpec.describe Showoff::Locale do + before(:each) do + Showoff::Config.load(File.join(fixtures, 'i18n'), 'showoff.json') + end + + it "selects a default content language" do + expect(I18n.available_locales.include?(Showoff::Locale.setContentLocale)).to be_truthy + end + + it "allows user to set content language" do + Showoff::Locale.setContentLocale(:de) + expect(Showoff::Locale.contentLocale).to eq(:de) + end + + it "allows user to set content language with extended codes" do + Showoff::Locale.setContentLocale('de-li') + expect(Showoff::Locale.contentLocale).to eq(:de) + end + + it "returns the name of a language code" do + Showoff::Locale.setContentLocale(:de) + expect(Showoff::Locale.languageName).to eq('German') + end + + it "interpolates the proper content path when it exists" do + Showoff::Locale.setContentLocale(:de) + expect(Showoff::Locale.contentPath).to eq(File.join(fixtures, 'i18n', 'locales', 'de')) + end + + it "interpolates the proper content path when it does not exist" do + Showoff::Locale.setContentLocale(:ja) + expect(Showoff::Locale.contentPath).to eq(File.join(fixtures, 'i18n')) + end + + it "returns the appropriate content language hash" do + expect(Showoff::Locale.contentLanguages).to eq({"de"=>"German", "en"=>"English", "es"=>"Spanish; Castilian", "fr"=>"French", "ja"=>"Japanese"}) + end + + it "returns UI string translations" do + expect(Showoff::Locale.translations[:menu][:title]).to be_a(String) + end + + it "retrieves the proper translations from strings.json" do + Showoff::Locale.setContentLocale(:de) + expect(Showoff::Locale.userTranslations).to eq({'greeting' => 'Hallo!'}) + end + + it "retrieves an empty hash from strings.json when the key doesn't exist" do + Showoff::Locale.setContentLocale(:nl) + expect(Showoff::Locale.userTranslations).to eq({}) + end + +end From 6e0460e22268081a8c2790f3fac824aca702486d Mon Sep 17 00:00:00 2001 From: Ben Ford Date: Thu, 16 Jan 2020 22:25:00 -0800 Subject: [PATCH 25/46] @languages has not done anything since 2015 --- views/onepage.erb | 6 ------ 1 file changed, 6 deletions(-) diff --git a/views/onepage.erb b/views/onepage.erb index e64d5e053..34247ae5d 100644 --- a/views/onepage.erb +++ b/views/onepage.erb @@ -18,7 +18,6 @@ <%= inline_js(['jquery-2.1.4.min.js', 'showoff.js', 'highlight.pack-9.15.10.js', 'highlightjs-line-numbers.min.js'], 'public/js') %> <%= inline_js(['bigtext-0.1.8.js', 'simpleStrings-0.0.1.js', 'mermaid-6.0.0-min.js'], 'public/js') %> - <%= inline_js(@languages, 'public/js') if @languages %> <%= inline_js(js_files) %> <% else %> @@ -38,11 +37,6 @@ <% js_files.each do |js_file| %> <% end %> - <% if @languages %> - <% @languages.each do |l| %> - - <% end %> - <% end %> <% end %> From 6787e5fc01d50c44e241d7bb542ce99494d95d97 Mon Sep 17 00:00:00 2001 From: Ben Ford Date: Fri, 24 Jan 2020 00:30:28 -0800 Subject: [PATCH 26/46] fix styling bug --- lib/showoff/compiler/form.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/showoff/compiler/form.rb b/lib/showoff/compiler/form.rb index d95ae1754..2866b3442 100644 --- a/lib/showoff/compiler/form.rb +++ b/lib/showoff/compiler/form.rb @@ -32,7 +32,7 @@ def self.render!(doc, options={}) submit.set_attribute('disabled', 'disabled') tools.add_child(submit) - form = Nokogiri::XML::Node.new('form', doc).add_class('tools') + form = Nokogiri::XML::Node.new('form', doc) form.set_attribute('id', title) form.set_attribute('action', "form/#{title}") form.set_attribute('method', 'POST') From 41c74f7876801b560545c61b30759df3a1c7eab6 Mon Sep 17 00:00:00 2001 From: Ben Ford Date: Fri, 24 Jan 2020 00:30:55 -0800 Subject: [PATCH 27/46] `showoff static` now generates a complete presentation This needs a few more tests, and should properly disable dynamic interactions. But it generates a complete and usable presentation now. And it's 30-60% faster with fewer weird edge cases. --- lib/showoff.rb | 2 + lib/showoff/compiler.rb | 1 + lib/showoff/compiler/fixups.rb | 12 +++ lib/showoff/presentation.rb | 143 ++++++++++++++++++++++++++++++++- lib/showoff_ng.rb | 43 ++++++++-- 5 files changed, 190 insertions(+), 11 deletions(-) diff --git a/lib/showoff.rb b/lib/showoff.rb index fe5b3dd03..ac5417dd5 100644 --- a/lib/showoff.rb +++ b/lib/showoff.rb @@ -1518,6 +1518,8 @@ def self.do_static(args, opts = {}) ["js", "css"].each { |dir| FileUtils.copy_entry("#{my_path}/#{dir}", "#{out}/#{dir}", false, false, true) } + + # @todo: uh. I don't know how this ever worked. my_path is showoff and name is presentation. # And copy the directory Dir.glob("#{my_path}/#{name}/*").each { |subpath| base = File.basename(subpath) diff --git a/lib/showoff/compiler.rb b/lib/showoff/compiler.rb index ac049b299..e0abe9dd9 100644 --- a/lib/showoff/compiler.rb +++ b/lib/showoff/compiler.rb @@ -91,6 +91,7 @@ def render(content) Fixups.updateLinks!(doc) Fixups.updateSyntaxHighlighting!(doc) Fixups.updateCommandlineBlocks!(doc) + Fixups.updateImagePaths!(doc, @options) Glossary.render!(doc) Downloads.scanForFiles!(doc, @options) diff --git a/lib/showoff/compiler/fixups.rb b/lib/showoff/compiler/fixups.rb index 904fd517c..bcb19f252 100644 --- a/lib/showoff/compiler/fixups.rb +++ b/lib/showoff/compiler/fixups.rb @@ -120,4 +120,16 @@ def self.updateCommandlineBlocks!(doc) doc end + + def self.updateImagePaths!(doc, options={}) + doc.search('img').each do |img| + slide_dir = File.dirname(options[:name]) + + # does the image path start from the preso root? + unless img[:src].start_with? '/' + # clean up the path and remove some of the relative nonsense + img[:src] = Pathname.new(File.join(slide_dir, img[:src])).cleanpath.to_path + end + end + end end diff --git a/lib/showoff/presentation.rb b/lib/showoff/presentation.rb index 8875485e6..4fec8706a 100644 --- a/lib/showoff/presentation.rb +++ b/lib/showoff/presentation.rb @@ -2,19 +2,48 @@ class Showoff::Presentation require 'showoff/presentation/section' require 'showoff/presentation/slide' require 'showoff/compiler' + require 'keymap' attr_reader :sections def initialize(options) + @options = options @sections = Showoff::Config.sections.map do |name, files| Showoff::Presentation::Section.new(name, files) end + + # weird magic variables the presentation expects + @baseurl = nil + @title = Showoff::Config.get('name') || I18n.t('name') + @favicon = Showoff::Config.get('favicon') || 'favicon.ico' + @feedback = Showoff::Config.get('feedback') # note: the params check is obsolete + @pause_msg = Showoff::Config.get('pause_msg') + @language = Showoff::Locale.translations + @edit = Showoff::Config.get('edit') if options[:review] + + # invert the logic to maintain backwards compatibility of interactivity on by default + @interactive = ! options[:standalone] + + # Load up the default keymap, then merge in any customizations + keymapfile = File.expand_path(File.join('~', '.showoff', 'keymap.json')) + @keymap = Keymap.default + @keymap.merge! JSON.parse(File.read(keymapfile)) rescue {} + + # map keys to the labels we're using + @keycode_dictionary = Keymap.keycodeDictionary + @keycode_shifted_keys = Keymap.shiftedKeyDictionary + + @highlightStyle = Showoff::Config.get('highlight') || 'default' + + if options[:section] + @wrapper_classes = ['supplemental'] + end end - def render + def compile Showoff::State.reset([:slide_count, :section_major, :section_minor]) - # @todo For now, we reparse the html so that we can generate content via + # @todo For now, we reparse the html so that we can generate content via slide # templates. This adds a bit of extra time, but not too much. Perhaps # we'll change that at some point. html = @sections.map(&:render).join("\n") @@ -23,9 +52,117 @@ def render Showoff::Compiler::TableOfContents.generate!(doc) Showoff::Compiler::Glossary.generatePage!(doc) - puts doc.to_html + doc + end + + # The index page does not contain content; just a placeholder div that's + # dynamically loaded after the page is displayed. This increases perceived + # responsiveness. + def index + ERB.new(File.read(File.join('views','index.erb')), nil, '-').result(binding) + end + + def slides + compile.to_html + end + + def static + # This singleton guard removes ordering coupling between assets() & static() + @doc ||= compile + @slides = @doc.to_html + ERB.new(File.read(File.join('views','index.erb')), nil, '-').result(binding) + end + + # Generates a list of all image/font/etc files used by the presentation. This + # will only identify the sources of tags and files referenced by the + # CSS url() function. + # + # @returns [Array] + # List of assets, such as images or fonts, used by the presentation. + def assets + # This singleton guard removes ordering coupling between assets() & static() + @doc ||= compile + + # matches url() and returns the path as a capture group + urlsrc = /url\([\"\']?(.*?)(?:[#\?].*)?[\"\']?\)/ + + # get all image and url() sources + files = @doc.search('img').map {|img| img[:src] } + @doc.search('*').each do |node| + next unless node[:style] + next unless matches = node[:style].match(urlsrc) + files << matches[1] + end + + # add in images from css files too + css_files.each do |css_path| + data = File.read(File.join(Showoff::Config.root, css_path)) + + # @todo: This isn't perfect. It will match commented out styles. But its + # worst case behavior is displaying a warning message, so that's ok for now. + data.scan(urlsrc).flatten.each do |path| + # resolve relative paths in the stylesheet + path = File.join(File.dirname(css_path), path) unless path.start_with? '/' + files << path + end + end + + # also all user-defined styles and javascript files + files.concat css_files + files.concat js_files + files.uniq end + def erb(template) + ERB.new(File.read(File.join('views', "#{template}.erb")), nil, '-').result(binding) + end + + def css_files + base = Dir.glob("#{Showoff::Config.root}/*.css").map { |path| File.basename(path) } + extra = Array(Showoff::Config.get('styles')) + base + extra + end + + def js_files + base = Dir.glob("#{Showoff::Config.root}/*.js").map { |path| File.basename(path) } + extra = Array(Showoff::Config.get('scripts')) + base + extra + end + + # return a list of keys associated with a given action in the keymap + def mapped_keys(action, klass='key') + list = @keymap.select { |key,value| value == action }.keys + + if klass + list.map { |val| "#{val}" }.join + else + list.join ', ' + end + end + + + + + # @todo: backwards compatibility shim + def user_translations + Showoff::Locale.userTranslations + end + + # @todo: backwards compatibility shim + def language_names + Showoff::Locale.contentLanguages + end + + + # @todo: this should be part of the server. Move there with the least disruption. + def master_presenter? + false + end + + # @todo: this should be part of the server. Move there with the least disruption. + def valid_presenter_cookie? + false + end end diff --git a/lib/showoff_ng.rb b/lib/showoff_ng.rb index 602c1a4ec..c4b89898d 100644 --- a/lib/showoff_ng.rb +++ b/lib/showoff_ng.rb @@ -5,20 +5,47 @@ class Showoff require 'showoff/state' require 'showoff/locale' - def self.do_static(args, options) - puts 'Hello world!' + GEMROOT = File.expand_path(File.join(File.dirname(__FILE__), '..')) + def self.do_static(args, options) Showoff::Locale.setContentLocale(options[:language]) presentation = Showoff::Presentation.new(options) - puts presentation.render - puts '------------------' - presentation.sections.each do |section| - puts section.name - section.slides.each do |slide| - puts " - #{slide.name}" + makeSnapshot(presentation) + +# puts '------------------' +# presentation.sections.each do |section| +# puts section.name +# section.slides.each do |slide| +# puts " - #{slide.name}" +# end +# end + end + + def self.makeSnapshot(presentation) + FileUtils.mkdir_p 'static' + File.write(File.join('static', 'index.html'), presentation.static) + + ['js', 'css'].each { |dir| + src = File.join(GEMROOT, 'public', dir) + dest = File.join('static', dir) + + FileUtils.copy_entry(src, dest, false, false, true) + } + + # now copy all the files we care about + presentation.assets.each do |path| + src = File.join(Showoff::Config.root, path) + dest = File.join('static', path) + + FileUtils.mkdir_p(File.dirname(dest)) + begin + FileUtils.copy(src, dest) + rescue Errno::ENOENT => e + puts "Missing source file: #{path}" end end + end end From 6f77c55668306e52e568be8217aacc80d65bf952 Mon Sep 17 00:00:00 2001 From: Ben Ford Date: Sat, 25 Jan 2020 23:21:56 -0800 Subject: [PATCH 28/46] print/static/supplemental all work now --- bin/showoff | 3 +-- lib/showoff/compiler/notes.rb | 2 +- lib/showoff/config.rb | 10 ++++++---- lib/showoff/presentation.rb | 16 +++++++++++++--- lib/showoff/presentation/section.rb | 23 +++++++++++++++++++++++ lib/showoff_ng.rb | 3 +++ 6 files changed, 47 insertions(+), 10 deletions(-) diff --git a/bin/showoff b/bin/showoff index 6de1f649d..39b0899c6 100755 --- a/bin/showoff +++ b/bin/showoff @@ -350,8 +350,7 @@ module Wrapper require 'showoff_ng' if options[:file] - root = args.first || '.' - Showoff::Config.load(root, options[:file]) + Showoff::Config.load(options[:file]) end else require 'showoff' diff --git a/lib/showoff/compiler/notes.rb b/lib/showoff/compiler/notes.rb index 0917af4a9..7c5c5b95f 100644 --- a/lib/showoff/compiler/notes.rb +++ b/lib/showoff/compiler/notes.rb @@ -26,7 +26,7 @@ def self.render!(doc, profile, options = {}) klass = p.text.match(/~~~SECTION:([^~]*)~~~/)[1] # Don't bother creating this if we don't want to use it - next unless Showoff::Config.includeSection?(klass) + next unless Showoff::Config.includeNotes?(klass) notes = Nokogiri::XML::Node.new('div', doc).add_class("notes-section #{klass}") nodes = [] diff --git a/lib/showoff/config.rb b/lib/showoff/config.rb index ff5742a20..57a39d700 100644 --- a/lib/showoff/config.rb +++ b/lib/showoff/config.rb @@ -33,13 +33,15 @@ def self.path(path) # # @param section [String] The name of the notes section of interest. # @return [Boolean] Whether to include this section in the output - def self.includeSection?(section) + def self.includeNotes?(section) return true # todo make this work end - def self.load(root, path = 'showoff.json') - @@root = File.expand_path(root) - @@config = JSON.parse(File.read(File.join(@@root, path))) + def self.load(path = 'showoff.json') + raise 'Presentation file does not exist at the specified path' unless File.exist? path + + @@root = File.dirname(path) + @@config = JSON.parse(File.read(path)) @@sections = self.expand_sections self.load_defaults! diff --git a/lib/showoff/presentation.rb b/lib/showoff/presentation.rb index 4fec8706a..654ffd4f7 100644 --- a/lib/showoff/presentation.rb +++ b/lib/showoff/presentation.rb @@ -13,7 +13,7 @@ def initialize(options) end # weird magic variables the presentation expects - @baseurl = nil + @baseurl = nil # this doesn't appear to have ever been used @title = Showoff::Config.get('name') || I18n.t('name') @favicon = Showoff::Config.get('favicon') || 'favicon.ico' @feedback = Showoff::Config.get('feedback') # note: the params check is obsolete @@ -35,7 +35,7 @@ def initialize(options) @highlightStyle = Showoff::Config.get('highlight') || 'default' - if options[:section] + if Showoff::State.get(:supplemental) @wrapper_classes = ['supplemental'] end end @@ -70,13 +70,23 @@ def static # This singleton guard removes ordering coupling between assets() & static() @doc ||= compile @slides = @doc.to_html - ERB.new(File.read(File.join('views','index.erb')), nil, '-').result(binding) + + case Showoff::State.get(:format) + when 'web' + template = 'index.erb' + when 'print', 'supplemental' + template = 'onepage.erb' + end + + ERB.new(File.read(File.join('views', template)), nil, '-').result(binding) end # Generates a list of all image/font/etc files used by the presentation. This # will only identify the sources of tags and files referenced by the # CSS url() function. # + # @see + # https://github.com/puppetlabs/showoff/blob/220d6eef4c5942eda625dd6edc5370c7490eced7/lib/showoff.rb#L1509-L1573 # @returns [Array] # List of assets, such as images or fonts, used by the presentation. def assets diff --git a/lib/showoff/presentation/section.rb b/lib/showoff/presentation/section.rb index 3d9a230df..0a6673f4b 100644 --- a/lib/showoff/presentation/section.rb +++ b/lib/showoff/presentation/section.rb @@ -5,6 +5,29 @@ def initialize(name, files) @name = name @slides = [] files.each { |filename| loadSlides(filename) } + + # merged output means that we just want to generate *everything*. This is used by internal, + # methods such as content validation, where we want all content represented. + # https://github.com/puppetlabs/showoff/blob/220d6eef4c5942eda625dd6edc5370c7490eced7/lib/showoff.rb#L429-L453 + unless Showoff::State.get(:merged) + if Showoff::State.get(:supplemental) + # if we're looking for supplemental material, only include the content we want + @slides.select! {|slide| slide.classes.include? 'supplemental' } + @slides.select! {|slide| slide.classes.include? Showoff::State.get(:supplemental) } + else + # otherwise just skip all supplemental material completely + @slides.reject! {|slide| slide.classes.include? 'supplemental' } + end + + case Showoff::State.get(:format) + when 'web' + @slides.reject! {|slide| slide.classes.include? 'toc' } + @slides.reject! {|slide| slide.classes.include? 'printonly' } + when 'print', 'supplemental' + @slides.reject! {|slide| slide.classes.include? 'noprint' } + end + end + end def render diff --git a/lib/showoff_ng.rb b/lib/showoff_ng.rb index c4b89898d..0bc015406 100644 --- a/lib/showoff_ng.rb +++ b/lib/showoff_ng.rb @@ -8,6 +8,9 @@ class Showoff GEMROOT = File.expand_path(File.join(File.dirname(__FILE__), '..')) def self.do_static(args, options) + Showoff::State.set(:format, args[0] || 'web') + Showoff::State.set(:supplemental, args[1]) if args[0] == 'supplemental' + Showoff::Locale.setContentLocale(options[:language]) presentation = Showoff::Presentation.new(options) From b58fca210b72919285fb90bd279c3841529cd922 Mon Sep 17 00:00:00 2001 From: Ben Ford Date: Sun, 26 Jan 2020 01:15:44 -0800 Subject: [PATCH 29/46] Add specs for new functionality --- lib/showoff/compiler/fixups.rb | 4 + lib/showoff/compiler/notes.rb | 2 +- spec/fixtures/assets/assets/another.css | 13 +++ spec/fixtures/assets/assets/another.js | 3 + spec/fixtures/assets/assets/grumpycat.jpg | Bin 0 -> 65352 bytes spec/fixtures/assets/assets/tile.jpg | Bin 0 -> 244695 bytes .../assets/assets/yellow-brick-road.jpg | Bin 0 -> 10200091 bytes spec/fixtures/assets/content.md | 26 +++++ spec/fixtures/assets/extra.json | 11 ++ spec/fixtures/assets/first.md | 4 + spec/fixtures/assets/grumpy_lawyer.jpg | Bin 0 -> 46690 bytes spec/fixtures/assets/last.md | 4 + spec/fixtures/assets/scripts.js | 3 + spec/fixtures/assets/showoff.json | 9 ++ spec/fixtures/assets/styles.css | 9 ++ spec/unit/showoff/compiler/fixups_spec.rb | 56 ++++++++++ spec/unit/showoff/compiler/i18n_spec.rb | 2 +- spec/unit/showoff/compiler/notes_spec.rb | 2 +- spec/unit/showoff/compiler_spec.rb | 2 +- spec/unit/showoff/config_spec.rb | 6 +- spec/unit/showoff/locale_spec.rb | 2 +- .../unit/showoff/presentation/section_spec.rb | 2 +- spec/unit/showoff/presentation_spec.rb | 98 ++++++++++++++++++ 23 files changed, 249 insertions(+), 9 deletions(-) create mode 100644 spec/fixtures/assets/assets/another.css create mode 100644 spec/fixtures/assets/assets/another.js create mode 100644 spec/fixtures/assets/assets/grumpycat.jpg create mode 100644 spec/fixtures/assets/assets/tile.jpg create mode 100644 spec/fixtures/assets/assets/yellow-brick-road.jpg create mode 100644 spec/fixtures/assets/content.md create mode 100644 spec/fixtures/assets/extra.json create mode 100644 spec/fixtures/assets/first.md create mode 100644 spec/fixtures/assets/grumpy_lawyer.jpg create mode 100644 spec/fixtures/assets/last.md create mode 100644 spec/fixtures/assets/scripts.js create mode 100644 spec/fixtures/assets/showoff.json create mode 100644 spec/fixtures/assets/styles.css create mode 100644 spec/unit/showoff/presentation_spec.rb diff --git a/lib/showoff/compiler/fixups.rb b/lib/showoff/compiler/fixups.rb index bcb19f252..c94f2ea88 100644 --- a/lib/showoff/compiler/fixups.rb +++ b/lib/showoff/compiler/fixups.rb @@ -121,6 +121,10 @@ def self.updateCommandlineBlocks!(doc) doc end + # Because source slide files can be nested in arbitrarily deep directories we + # need to simplify paths to images when we flatten it out to a single HTML file. + # @see + # https://github.com/puppetlabs/showoff/blob/220d6eef4c5942eda625dd6edc5370c7490eced7/lib/showoff.rb#L1076-L1103 def self.updateImagePaths!(doc, options={}) doc.search('img').each do |img| slide_dir = File.dirname(options[:name]) diff --git a/lib/showoff/compiler/notes.rb b/lib/showoff/compiler/notes.rb index 7c5c5b95f..3da27595c 100644 --- a/lib/showoff/compiler/notes.rb +++ b/lib/showoff/compiler/notes.rb @@ -51,7 +51,7 @@ def self.render!(doc, profile, options = {}) File.join(Showoff::Config.root, '_notes', "#{options[:name]}.md"), ].find {|path| File.file?(path) } - if filename and Showoff::Config.includeSection?('notes') + if filename and Showoff::Config.includeNotes?('notes') # Make sure we've got a notes div to hang personal notes from doc.add_child '
' if doc.search('div.notes-section.notes').empty? doc.search('div.notes-section.notes').each do |section| diff --git a/spec/fixtures/assets/assets/another.css b/spec/fixtures/assets/assets/another.css new file mode 100644 index 000000000..05ecbcad1 --- /dev/null +++ b/spec/fixtures/assets/assets/another.css @@ -0,0 +1,13 @@ +#preso, .slide { + width: 1400px; + height: 1024px; +} + +.content { + font-family: 'Calibre',Helvetica,Tahoma,Arial,sans-serif; + font-size: 1.5em; +} + +.slide { + background-image: url(tile.jpg) +} diff --git a/spec/fixtures/assets/assets/another.js b/spec/fixtures/assets/assets/another.js new file mode 100644 index 000000000..1e6bb0b2b --- /dev/null +++ b/spec/fixtures/assets/assets/another.js @@ -0,0 +1,3 @@ +$(document).ready(function(){ + alert('hello world'); +}); diff --git a/spec/fixtures/assets/assets/grumpycat.jpg b/spec/fixtures/assets/assets/grumpycat.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a83852675a227bfc4343bcd79293143875560e71 GIT binary patch literal 65352 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 literal 0 HcmV?d00001 diff --git a/spec/fixtures/assets/assets/tile.jpg b/spec/fixtures/assets/assets/tile.jpg new file mode 100644 index 0000000000000000000000000000000000000000..bbe9f6462f43118fe71e4f5a49d8b67babc955c3 GIT binary patch literal 244695 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 z z+oPTx@|wPZti0#<6)S?HLu1DGbiK{Pabzlx-{17|ou&!wRqW!IiV?RD&3WBB4vECD zddj?gEkVUgJeqOhZpRlfZkL5^ITaqGZmARcXnm%V14@ z_Zl5Im&{c|pfH-JXp{37!bskmEvkY0kz}b;(M+X1 z!&pGdmrn^`{i6DxXJAJLFe-p-@4SER+CDG@satCIK;x2r#xqF-a>68|;niob6uUni z0%UE+jCVQ&R8Jt-!zKyYm_KrI40mz3bWB+qP;3(9_3r{c_v7DS*xqYGEDzhbQy9=2K`xD(<6nXvr7vJ8tyX)-4&J|hD`oC1C z)?fRH>3PK6#pRD;aL~x_`^ehJ;kN068m}i?m>|a~%*B#D73AauWHrHv&8GXcG-}&# z@Kcf0JkZ+fImxybhY$oi#tBIKfVQn6c^{X-3ZRuV4a(e-(C--9brMe2zFONC;1ZBC z1eSSZxfq8hO=KrU#SwWNAk!=*>siPtW{#yRj(hio*0#mTFZK80yRo!u_)vyG=h^RY z;z<`08#Z+23-qG8e+D6otk`k}MY<#_bj$GV@qe+cKO5~r!_4d+KS+Gv-1hu5C6HXy zjv5#;&&uDWId}`6hEWSIy&R3{*pO($v^VUshTS@^HUrJHWEsnz`f>-2-EEq)*VPkr ztG>0Og)e@%q53&l;-SC%n}$Xsp+XT>*?_S$5W^@BynARV3e^STdOqLCKu(k>|Iv=~ zL0y=qbS6N!t^oNvNDwdzA?Fqxp%%?wc?dNr5Ng1 zdFoA(_#LbIEO5_Nuyj#TpTvmP&v1rhuVBec&18;Fw=g~5@D$0Lq-BS4`8OdrXlVaR zXZT#cTRm8O++=?9b#W`miEYURVb^i*5nxR5Vh#AKJOr9T{Om))=F8YWpi>$c;v9eR zm+BL`3-94KWLsB^5rz%c=z9O8;|A;QFv1CoH0=I1+=nMFLMR0c^v{s<5DlI?k+_G5Cxr z&ByP2H?Q=&g!@T0em%rua|1W?fYSsLYgzJOT^F^{ON3^{BgbIx@XmEU`XAm%swT3D7CJtw2^FEu08@yx7C`?Sw`FuQh*ttsmoK$oaYWXT>TOdlEOer>Amy z^pv{1ADC+PMH$Y_$l$huo&QW|%@~6|?NCn)>i`M} zIx2!xQ{d8!v-ZUem0!bvO6zT2UUygVS6~sH(2bRx&E97%@#{Af;Zli9Es_;&Fyo!d z_2t=~ha=NgX!xyNK-e~@wb@UC>{%2T3))75(3{7RA;5v-`+>6|uk0w%@i$Ab8_Aw@ zW=r69CEKJ=zbqHJi$L_;hA9RM4ep9yrGnFcB=H>&?!l-Yut;Enp9qHg@8+`06eiyj zPt0fp8@4W+-s*PRtC$V%9%+gV^J!kZ@L~KDnnn!!a4hK3w)a=Bo~#J~H6arkEgUT| zvoyg-OFs(MxHYguWfK+qEBC>~ML77vxBWO+*4RHRn~Y@58RQ+Ng}N=U2q;t&_8{x9 z11ONQZfpy_0+Lb18X1_?=j8NoC^E0K4BH1DjC(hIe%`Z{kPNl z2izSln_6!g&pdK^kYa1R6n4Q)L(5&^40k@|cg|Xo1+*FJA_9NroDuf9VY!T9{ZjEY z)itl~O5^WD+u;q#PrD_%;`!>3v4UpV;jk*J$-pM&P08-?K4SJZcLxyC3$28y6)wd34%G)8|(K{Sp>9|v6| zL%sK@-^(!LZKm@P<<5b^lFZk!VNJGIpDy-~ZaxB40Zcl)-6i2G)G;h~QBaKV#`M#X zp}3v+3!GL+2)TMEU53QlSs*>o={c~izLi~QI`{<-KW=w?_(qPEm`{XRbAli5knU6 z6j_&G-*l+a+!xi*RR)m%J(%BYZmW`4rT%-yRwXA`D&zd63%|Zk4cZm;Gt*Z$aN8W@ zD#?qL5e8HC9AEwU+eKh~)+0i5V^z;bA>N*SKf{+R@S;~!`x^Z724so~vJCB~O}1_5 zbZTMI4QuTBW40Jlj|GBz$6e?^8>)-+5B}Pgkp`ZBn!QLvVAZ(dB1Z=3jx6?{ZLk`D zriQ)1+3zI7L|=@=kMLTN+-0Cr$?2Y9;m9`2i*VZa9n=%-W=3UQdx28*_)CrjxAZ)Gvio?bDVy!w?5y; z_n+VQpE##mH;3~Y&)0Kk(vq_liMC$5dR_p+qFr}<4{8-DuDhq#lojnH$P$dJ|FCa3 z90~gm)TlDFaCpi30(8@q|K92s3Y=3p`l&HSH(Dhnqgh2PX~)2CVn}p@CGy8a%OXDO zlcDg~k7`qOC1rMVz{mDh7E`3+B50X^KC~d1@Bj6iy~B&%{W5Lc%r4|^HL{T;`|SVh zH>ya}F)OXtlYIs^uMy-}qa^V(Ny?%RRe)K1AyCZkp|*Os_jh+YXJLogAw&BfiLdh+ zbF3QVM;BP9@TbX-eU2nv9c#|e`sJvdDbXt#Y%o>mW-wnpb7gExy>~T0B@`0j2qY4# zb^QhHFLEcYr#x)AUWabiHh{-=UbOYD&HQXT~*xX)E zUq_N{H`De+4HM4CMM+GHb*llBgZY$jTrT`ghU5lM4LL>-nvr=?V$L=1^c$}}yF8Yz=*uM>2za?WB-N*Iis1;UPUls;#kK{FQFRG+ zoL%wa?F3v4uPchlf<~9MRa|lcg1`uVIebto|5{{%y#Fz zY?`9nHi9301$<>a7im9$ykDe!rTEzYP3AQoC3|EaQp1j?%m*G9(kJ!AtG$x7PIS|` zlT6hm&g(jnW7Vzj<-v%)NUy`G9`v|*W>Yj|wAmwU=J~2~dO0cs^30GYln6DhgFG(hKzs%x4+i;#=vWxn> zsE&>HW@om2g9L*n)se26t66%fuH})YQ`{A{e|CyJ>mZ##?RCBZ?emgU<4`Gu#=gwj z(k@TSca~OECcH)|jx#OmoXb5t;3GRT*#jO71W8z-?K1Ft;@eQ}Ve#5&!s{P5Iey zHe)}yeh0yF18qjct|i{rC~)IL(*PVX!IkxOlkVOpSm-?ouNS59iW6*bnV^=q2W==8 zNy0H>ur>0Tb84egL=8T)ly!JhX%G;YdNDqbcl6jJ{nsXI{DYL3V!27{Vy2yrQMATq zQEY&xird!Ltoft;qovG*^VNqNOY2~|*FOE?F!$PZUb!i&@17NM?Io}E@@Qf5B$ga^X39uJo zbs3O&TIF|%q65@+lWSEb!cVN$beLvP9M@e>Y+uim=tkpaJ!_8kZn`E4uE{D9FrUVj zxvbZdH@hHkTagXX>llISk<)$%`-Hl3^FLGPpo6i#?4=u@>J=W1cw0V9ys7l;`9-O# zO~OGrpVm7wm_yZr>s`5^!6H0kOXKr!%G`s%&~AH&l#va%q^K+Gk+oVSdHw-j!1Y2v zu;2|~B&z@lw#R$e0JKb`p?yuS=UL&dc$(pizoLdZ8mRb z5o7C6XL&93x3y)sPl$9SbY)DIH?W}3ln*@hiit42Ui+(>)6kPqhGK_bTJpR}aKuf2 z{{uORmOp!?a|z?=NVKV!W_(!1P5JK?j=O+j?P+T#%H$62c>&%Fz=h0)DnX zvylA++C`F#0;HTE{<=_2tU^_+Aum~mE~5XUYbKCTlZ6`%t-6He;bWCml2wu#b_OSG z$($bbGK3lZl;)l3+OxIrgK@aAS+B@?zt-9D-pL$+g`J+2HSsscuvtC&1r)Oyd<}kC z;=ujY+{E$IbXUb=vtQU<{f_yHsUqq$juUo%Dx2b17VL;eCSr>31-77tAFWAkM~zD2 z`zPDvqDoa`Va`zYb^v344x-&=OkDG7?BnM4pMQEVqrgmN{!1k*&Jx0XXiR)c?Jw1o z0?T1R;t#@Sx82Bs_j?`}u)`ckSpmCou$=C#DX6^qY1o>P>J@u!sSm3whp05G#&&<( zOq@*Q^AXks-D0+z$z9937#|)&bn|sZHJ?S2(B6p!_n^BHnub8yF7ElY(Vsgeg-)%1 zI4Z?<8J}(mlOyX5#m9NqjEJ@&1tDZ|dU$lUQMSo~fW>4m&xfdWzl~9!O5S9mkbHnr zM`5cnyYgEj{_L?w6D-7ws%6tPQ3V(97h}iG0)Fs9j(26sASSrAS@(jia+UJ^-sy8g zfkih#wv<~JDzpQ+gh+;`80_zVsTQ*2k;}`zy`#(jVIJ#4w1=Wq82u$zYw7I&3z>n) z0alpGupMkC!VN|IzoHo|5!HkAJJ{NJrLzy|A^~Jl7U3?z&&r1hVDbiB-i7Lm(ITpE zF+(AfUgxnI#ga9|#A#zC`{0fBBL|#rbWXVO_GULRIdxt{duYNOIq7*fmcp@U5+3MG+)F5~aq6vtNp( z{SMpARvmBNm773En54fDv}TPV9q}Q{wTvkFMFlSl(^~j0)PFv( z;f7$>!$O*n*06p8@*IFJze{)u&%Xi-nb+?I=4`+Tw+n1qAb~HTpv=^clM$N0gYGNd z3HcY_#moY6{+>45+O>rZ20?Rm)Zeb1)L%6kC_jkAMdF_GoIu+ij@;TJ9f3!v!E6WfcblUPn~H>|l;;wDuGO`1J+gujZUMv+7hH`uvE8EcWc%c6FO42I_s%Q& zi{Hm30<$+w396xStGX%fan18kZnQ)B;RJyU>iLi*1t)A6$f3Fd7&}3Co<{*yWd%2E zu!(@$ymth8XOqU?Ak=1+WImAbyXN3R4V}1x-6t2fT4gD<#Q3aQ+4vFJ*>_^$J8{QX z*8*queJ5U>J{PHV+NA7 zESFrD&7t|=543OkME8;W=DpUOCti_{Gc7QFqnKkP4Tx{#-4pSgdARujtt| z;cLz?>jWF^k>z!R=$W2P$mQHVww?jzR0Y!Dk>u|V5jLR0go&Ga0Vi;FCTd&exe0fx zYNX?>x3--D@Y0W^n&bf`LM!Dd_?ypX!>?c?9z+LjV(PLPXFiu^K{ZAQ{z>q6oXh2v z4$@SFK@7Ul09#ba$Fx{f)f@HHZ;NcYdbQo2PigypBqf-r!J=~Ft7}G0bxOzq2C^lK z6&|~5Q1D@1lEvfds&jq(gP&l(RMwlKP0cqe@{MNqW#pHvb#BT3`dep)lp~(E(PWzw z-*p8HNSFz()ElaA^E#U<+Cy0u8#_X#uaWH%50V-`o4Q-}^4jRY9rv5s{+=uOV7 z+Jdg0d6z*J#ZpAB2>Ee6CYS9|rKhe|2LBY-AZc_euW52*`i-#bvni6zJ%}5n*|FR` zgwa~5EX#i&NW^gA8--jjwcd6biBaR#Ni*?GXHv^D%0Lv7TDp~S$7FwCKLfWW4E7Un zwNQJd2+ZCd5va$4%*wj)H?4ZU_XJs~Petfi<_6i|KY3gpe^jZFB;|CiASBGCaiw&D$dbH( z7JQd9s~VjqMH2EUXz{ogEyZw=s}TE#v!;2eGNw?kEF`nEw&zHCgOzdFdEtXYLD=lD z8$@u_#$zpyPui^4AxiF}F>6|o_mFkp^uf0#jm}`2j*gVE%hI$=DF{7QWs-UfSr7re-zAVMb3p zb0QG(x$*Z*ACMm&G)qTn@>MnwHy!Yp1rziE;X|PX;1~&GJ7{^q2=c$KA4Kab?T41we3fC4W z;>rLdgIUfV>;~$f>dYl(gTULm*bMpmPJ$J)S@Sk z+4=bpsgvmNp{VbmGY^x?1eVe6zp2j+c8bWU3|0Cen%$` z*R1TJ;bo9i-aK15;+q;hRkX$&7ttFwyp9HA)XvejqesPWub6zdPJJpeS`~iM8FTIM z_@BmAF*mm>WA4tv6!%pfMsp8z(9VdF1mm|ua4J@+ag{)S_FX7FQ67v|8t5{_Wo?Mv zimK+=qyu2Z9gBcgCp8rzKReqPzM?x_d4Z4ou0nev4;b=ej!4-jSL(7_XFnq6d0ULYHN5h!M7hD!`$FORfOyyQ;WF4$~+N@iMx0kTxPW7Mx+C0|9 zh2CO|jup4UieuSWbs6%{Va3oa%av$RF#H}N-wWCg)&CYm?{h08c@_~!N^RDYE`kA) zbi|qonufnr41+GJGKtz+)q|WrYadGy1V=xRljp)b_u>Ai(2v_BdW*92=fncCvOcKh z)^507%_Qi$+qZ=OZvR3pOTc6f^A@$Ds(j!c!H$ecXQdqpytQc-^ECVYj?i)4S(U_(ZfG; zp0PbjzPFf3g_~Nm6=R6eiQ+x4t;M6{s!%-I78g`f<`SpF@Q$fX6OMW-&Q3l+ z>VPs_lTo{lPH@72!?JS@6-ZL$Umpp}*ary^U05K=_eEX$XJGhGNi~t9E*%NZW<~PH zVOV(&?-9gRqgBEx^bj1h6u-jW+AIAU-kB-z7`|=$QwmmGbCT&)udYUrJfvJCdf-b; zs!0=7)M>s(f%$yy0lDCoFUb=fJsE6k?Y}daV1uakLZL2mA$2(!>ar-D1NEUYPk$=- zeCs zOk+pw_?XrC+t59}H`mnDL6WZC;$@Hu(yf}>nQGTpKANwOHi2e8x~K$&>j~EhC^tDb zH{{G_p2;riR=INLh04$``WL?w z{iEI}6T`;?o?oL^`|xV9trRn>MJZbm5L~F_jWR}Iy-~G1s87UA$qOIK^C)ZNcIDW= zRJ~}2=Yi%M=}1L}f&M?RR?mlQAq0GhpS=m}!ugI;@;y6T+#-<}=tOy1BS7O_E@j0go#W9}#1_#o~NS+}(~ z^kj6oGU4iHij5CI%CigyGQ8$$K++)|qMH;LI7+{@yJ_4k_Qj7}3R%RCe4@D3&Nif`VGdzLZxFvqc(zX6nHqIC;UhW~#Eph*3C8hR3-Zeaky6S_&_ zUO(>O8?s6_l<&4B6D4o$PHhe;Io+EU-M27nDt>A}TxTNAb6obwn~X|+YOMz0lsorH zimAnfka|JRjCEHPC7tVG87QYjFI+bnoY>aIYQ5+?D-Vq=7|`GS5}?w}uS5Io^z!hB z4RZ;l3*qRm1I2d1`0L?~)4~Rd1;aJpIP;Z~^w>ADMVJ$qv8l2m{x=i!2r85Q1SS8I zbb!+^3WKr4ttxgiItT-@NzzD|yu#8DB{7~($1P*dTe@338N|1I=wgT`>icOMsVM#@w-KYF7#n?@P zNwMgq`%5!Fk9SMwwnii?3cPSq%94Cbv>@@knzE7<4tFKBraZ1;RWQAX8AjLj-&|OK zwfb}E(ntaT()%$=y zwidP$&+A-jeNnFRS;RkL&^fBB#yyAPe5-KO|F@ANHCuK5V-d`1H$|B6A(&ZJUqTg} zoP;TIGut6P_Rdl0cO^jj8>-QCykik?vkFaZ=X&lvkP*4XSP7`EYCGCU{HL1B$T(s_y$;HNrE+7EHE0Sv-4S{O;;$&&sL0kM;$ z86YgEP+mFG4Aw-5WkV{hMZMMgSmYaQ^B&$&ps&I6uGS5DNZBu?V^%xSokJ|kVO<7s zHS3?foMUT=12wA67qS7s!WEQFHyk>b>xQVF0fB&6vx3ZPSCn5YYrKGuZT9_GfG+;C zyyLj+CmdiPsN$V#XFEyzooT7DzvEQOCKYzP-q`ZVES}a-J5XzoQbQw@q;lrTyrz@V zi={*#6wNb9W}^0}(tp_{+*>6&cc0*|UP$~nd*q2^5xFSAeB(v7X`b-S;7)^RJ44(L za@Ms5RaV`esDPx!;KIb(O7?c<$K7im57YZoD}Glpj`x>vACn8HDYQ8i>abl_q+k1p zuP~w`=hVn)TAv?*J`j2zE72#r(K!-z&aISq~95Z&ciUzq%+3ykA6S zG7Cfj2((-@R=jGtZ7%TU;7d%lt7dGC8jIRU!p^b1bGP4l` zI`it@SPf;nz`Z+90U6~o>;IQ5gH&rxq<&M@Ii7|h3sP^2o?L*-u15%i;U?X)@HK!J z`+>h{`Qo<`a5jZD6Ie6;-1udvgMMLgjnH3WGTX9eQ=JmMnx$Ab1cy=WJsUQpbR*^> z@csbnM88KcS}bc)mAE$?+xA^hifT+&#N8W z)&h&g7xv@$e3#_LVuIdNU%Fqj_=u<#$CH9D1OHMvFW>SwRr90zGOP$S60uRAeO;30W@#c-V@kbq13Jk!f^fM^M19G^|DlgvLj+OG>Qj!M*x zE~AVnOSoR{o$b%JVI{OkRbkk>S8`9tqP^=eXR&tG_+`1a zY4O{U<|Qtb;`$XiptM0%�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

s6#fq;40F~=>w>v>ilBS$7g^hraI|9D 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%0DFs{x z*?-C=-sE_&f@%eakoJfO?Wj>Ss3$-+0nw$+dy!)?TzaP+-(l7N(}W`yFJSrBU~V8V z8{WSb(V_u+(;*BrzAAi>1)~No-slR1@W&|j1Q4=(RFg*o1$VAIn3&7#_Wpw}{ZY|& z3!_(bL3-r;=)W_$kCUf=d=PiiHOD03c7tYS(oC8!U1U`dWAAEGdUb9_T&ZKXUWW8o zr>p3`>j9C%o6$X;dk>zGh!TpR3}kB%QuFnO%XYn(0CFu7QRTj45MS%@fExVQ6ju1m z6Stj$5`fwueHn_Q!Y8rZlcIb8!in?Uex3@E#=Girjc11al+M0m`w$z8vV<@Ps=+4( znW}LiZ_e&9x!^OPhtX78cr;7496w1jZKW|&b;TUp(KbW0rzIRpLT8ZTAlP_R+W~Wf zt`P&zPWmW$3f&EFJGlYeMp&OmiwIH&ts)7}+SF(3q{cVwPkvw9@aUA&rIc+cjeczu z8&798U3T-?hpH#*(LAK6D^%fbN?D}rwS{?8N&~8XM3081f3-KbLF2=jGco3r%L%zo zZz$WsxlWlvZKwv9I7yfs1bF@Fn?Y(UviD$NK0s70eQJPQ@Em*sf(y1veUKk^aC5-^ z1MHBb8~n$!kqs#uR*C-^DH*En$kmSgP*l}fzassTRC}MTD)SeqqPBi9R}Jqf<-RVm z)oHU2Ff&$5c1n=DND>Pg>98*K7jKxklDl(CHeeTmjb5M#&=SIPMf@pskasoXg{X;K z(KnD7v5Tiwp?T|dHY+MRM6z9d@rk~^->bXVUf-N&TN`)&gF{C&%O9$j#s@lu zdWivz#{Dg`*1X+yQUP1_N^?b1s6cNG#bo~z2Ks42#b#K{oAI}%f$k^=YZsS z9KDG#-w+9W+wAfi+M+-%cJdnWw^AD@6hnPw9lmqVYe9YhBym?( z78w(Ukg@{DXqXl0n~Mks4-wntaa|?OOe5C*1jXb+mbz&F^@aPTH;HzX1@g7Mj1EsS zb<1xx%w|%s?Jhx17n^!%F7fEVLCKtV-~Ea!@k)p-1M)xs3r7My=&g7NO#-H5Um)OFd2aNHLHgO_4&*?p;;6N&^!JzVmy`}sxO$Xic0ONvc3HaT_$?hZeTT2+ zpD~2N=h&f*AM88DLgP_fhktU4pIXtFJK&vG>&I7zQJL;ktZNj@k15E%rb5`V>1oR+ zIsL@#n}z<dpG7Gd?r{yH-WoOWe=2QR!xL4CSVt03YClD|dL-p;v3I_(*lknUvHaCd z6t&T*?I<1?SU+_nGu`iq;+19LRUxBu#tN$s)YgKXU)XtC8ou=<-8p5&Wdu=#8#c*l z>&7!F!2d&W8z)k=`Bxk?^d&^##a!AA5f=Os@*hQ-T0vmSqg-el=k@?vqJZMBP;E6W z;)Ro42T1S%R|2L<;2vRgBhF_wk&Sv)8!pGH%4w%kHb-B}U-(9%^h-Fq8P&j)d@;FCAxQV~M8ekKF^l_&X zEvH?~hQr_A*srhAEPPNyMGgi@8@pCenX)EfJPCTF&)(!YamrpF;>z}Y#r#R! z^C9X9$j(c4W|~YI0XlVE3lgx6P8n<5`|PW~lZA#I-Iv+Fv(4rMhA!N~=MM%~)^1(9n70@xXd+CT605DrH z2Zo=$o8zSG9TkU`FOU9Wpy)cr@_si^-L@z2+Nn?3M--TK5&~lTQ{U;{DO!}L6uYJs zD$d%znjvg$ZcyrVzxdWhpG)+*d9hm1ctC&nTI++PF)o>^P6@TM<$|ZxOOzv+^!EMv z@CSoDqYGuXO2CKcv|;%__9LSELli$mqB;1sau}?1sm|x=bD9SNJY&pcYmJr5^@kKA=sm-PU=k1+Dj>ydXo+G)+i=_ zSC?hg^ILbxZlJrxk{aBi$!MyuQ*o{l-+P|FA2I$NP29aI6s`{th6mQ~o_y2x(zGtvTpjxn-TLn@JJsLLfX^)eDM99p&OKv**#rTT zhqWf5inqK|-21A+OZ6zw-)krt{bE?4F%b@3OwZ?Xj$8HdP9N~~w=5qW#ME*nnFYoZ zWfm3KT#s?iwRdBN$$6+_#Nk6HqDh##$p+Rb)5C@>Rn|f2&w&Xt#?eMRevCx(KKxTP z;;Fn))E^cYoPOr@Crm2hrDLs-&#@gFvjy-FPfKSVX-C$WaQhcS z5&q@3QV}J2q98ebrGtbcxXuTdgi*|Ld<(jk*uB3baRu{_tN&scu^zQfC;lY7kr(Sy zn|@h$H1No-aPu%mZML1?|H}j%A`r7~0b)LhI0Px-w+gSW+hrSt!av$D@;_8dC>G*I z%2^I0nG3uC^yOJ#v4$DO+ExuauaLMe5T0e#SMxmEA1qpmu3X4y08bx%+AtUhb)gWA0 zx$M&jRC+)@!^WK)p6SGE^8v^Hy?HEw!qlX2C2HI)u%xdA+bLmjRgt^Vq}IQT_>K8k z;-3-OTGM23hV-=P@e($|&prdc=`=E?%GL{x&J3F; zN&V=@v!pX+t=5m!W+3Cr91CW;M9t0~DZRhr%-vr=^odIx2y2=lXv6hX-OoSpc30p1AESMA_@KodawTR3vu81%miQLFl_@ z3EeNS^#J+`9eYMwIQc7@%jEBLx#d{9^YBnz_jIc6e@GDu(&c)-rWCL=xhm_lEFQic zloYoxyvtR47k#uq!Yo=$X=BG=wzg5GtEzZZx2|HhpEM2^`$afUflmd&p6k)gx3T=TOh5yS*fAh6=Ur3R>-|EnFK6Na^C@8vkPduqII75I0rxthJLJKk>x zwfcAFwc?$e(e1}4Eu2fELN@)>a2Y-;_&wv2mdo29=={%L!@{~Y)m^%n?(Z%Xxpo7c z*0{XPl{rOg1gs<`zMpf{PtDH+uLk4KIwdqShqBJ@8heF@8ir=}p_iB8%Nz z4+uQnklPp7yI6!N$Wr~j7gm+4>xR;Z$^7Ux2w2j8j~ci7r^)jipa&AQ?=Mh3MntAi zQYRu=+wb3ArVIz%P^2C)&r_7g;@X<9>G;T4comI#8AElUke~Yc%aX_677+Y#z$!1* zkrwe^W!oP0c(B>66I~X(JJHlCr(UO`ss%A<_SK>nCXMfhLdAb zj^)nF7)K+d3@*w-Nb4Sge!(S%>@UbU0zLytq!8!~kfzQ8WobAcA&W{{S=?PYf!Ajj zltY*VTdy8kT1+e=aS!K)d3daTS8C_l&Vm$B`wQ#-^^Dz~Hpe8RItdb5eFi}eYk_YX zX@7Mz+Kyp`MI;3V__$icWl6^ph7Vl`twi~@`kvxzEz&dCs$dyNZ}i+TX|?&*C9vm* z@yu){Tizd0psJES|Myg#tyf~z6V89DY1c?S`CKXq*EHHmXF4w7y=$L|8mc$D?Dcd# zs=1(9tA&-Dtb7-fkSP6uYh1CwfwkSU)#?l}-vGD&dO=MP+d}a1ovytjZC1Xb<->c& zkEo8WFpiO;l@i8H+6K1s7A6CkQDNEFi5F6EQw!@WyQK8EvaAklCbs#L&{t0=VHl~y zn)PG;9v@%a=J6B!{q|h$uCmJkGNg8)-5zz{HIzx5Kq+r?zwU=VWK0^stNMxRsio!>3`b z7>YN`b8MfdAAjQ$*|LaxfhN(uDI-g=a|iB6Q0-}5yP_u{cWCwWI>|D&NB6-f?a$c< zr8+juv9px`#S?%tY?E?H2uDy^`t?}F+K!Nh0RAi(okDO}hGVd|nm3EqavM!{+tv21 zo^{ffFD~=;xgIzd8I$8nm9VKCyIm;7s%PWCi?*BUlS=yOY|FF7o%DTxCIhuxWGM{v zazzAJn!Hm^mx)#}I}yreYJXx@#hFdEw&c_93KGyizT2M82N%%bWRbn&gghS zO97B8H&UR+z4$jZh(KZpHRu9bv_0}5Kmn<%^voR3g8=ka)SPsVC)e39#yB=#PeYaXA}oT+S7(y@_>-5%Gp zI-ObD;Wq>#dKIOVyP?Z^uY2RV+dk8w+ip{3m|eBD2faFswxTw|c55G{1C4-a(fJ#; z7>G1KuYSN>+lW`||J`B?)FIXC_fm5{-V-S_2u`L|Py^okqOq%6 zT;!onGDty{W9EvFyjk?r6yL4R-mW6?VElwvER?1oRzG6`nK8BOaIQrFu(EDxb7ftA zVL1fXwd`?E0@>*sm@k~#J?<&6?U=#CjC{X`lnjJTT5GnJAwn1XerI-hwWsV&PaXM+ z@YjYRqhw8PS>=qsZDlc>U z*l*(Xoy=n#i(k!aE#hGju#ZmTXFT=N$ne68p=pweH1Ng#^+ylu9?_LM>N(Ctn_nOO zDf}apsorrhxIJ#iBC5%}*xjICZP(68JaxyU?d4!;r~Cc2ml+(8)i4C@M-8VZ7(=*f zCMhxr_Ij23BBE+q7X%graII#3%#p_VT-PsDO{njayzv*J=B>XB|31V0r^Y#AP{yfg zPd+lfM@PHF68l&^Z6{{(6U_@(Sj`_=+PWNYvvun#kzs9*$l#D?JhbzR!Ep7(L-)yz z#qc(BO^s{Ijl)V4>&51MF5bO$70bRmLzSU&aE&fk?QSckejHKiq*xqh?qu~~XdBS} z=iVl5b(<^OSL$uqn+9z4s_eI#%7f(jwdG16|L-W&c^A8K`T>Lj z9Y#5)*_v#3kt?W-Ark`)pF+Gq1lW}?-q1#rtpeKC&K5FmQ}t6{djrUXow3)ELAC+g*&CLs}DZZ)i_kOaFc znAkWoSY!0qG2~fF%UiBbfv(L`J23gb=v@CDn=?l*x0%(C z&Nde50v1o1;^_s(WCS_TAckn~LX=vXl0|z&<+7AMK#S^P$3$4RLcPOs2oo&ds64nCyXHN%q4M@7 z3x~Z(%@&fsddX~1eIASN?S$7poblrSEEnZ@x|aK|2t^y`^@oLy7T3Z*yY^f6sQy&f z-VYNqVcSlHXz^?7cf?j#_BOeg)`{ldLZ>d`DbC)sb%J-zk2O(O?YbW;);%QVM-DUl zpMN6g-dnM;)hrZNxqfVxcJ14G+8v#UL`E*1kFJ^XwYg=wH5ctuDobX-Q<#`X5C&y_ z5swOpv5cVS%qY&Kmi>H!HK<4t0;hhyS_kL~JW_#X7>96$Kr_hpfXn*k<^Eo7AL zT9^%uK$!5YJD2-)@2B;g^(*-2VO=>}Xa8t1Xlc2(@4=bUq|z*qMvK-ZJs@$tzT3;F zD^;}Qg4K_v1#1x(>-9)%M{e|6sCamsyy9{4zy#D%=Dogoe$Q(V{83c(Uktu@HHgX( z?0P1fcg0NfcyD6XEF7{3#*ogW0m5f}kSx_p8iBB39C6q*2Y$(R-;Os* zwo5usV9G*Y^j@cVP-3Q(#3tk^S7gH8_}a#IcqgSbsxQ`!TZX)o5?*cM zO=aNvP0l$Ls4I)}nJYtJ8}=>SJ!-+&4`T_E#*xLR)qFh;5@NE#-Qb=w@O84v!RxCx z7FRxB73bq@u{%LB*;>{KBc+>#Lcos*cjI0XrcX|ZYrfxyGiLoGDo!#*lW3usg{(NB zNcD$R2AN4n=yAkn`ta$7g-D!V$bz2q>dFjq06KBQ5?AI4q5APsM^j*HGQO^oW#T6+ zjTGPhek%zWoJ##=3s-KQ=ZXK)T$fQF8`R`lC!()coD~wMr1s*=b|u%XWq#gvTJ>H0 zQ?Ds|wt%l=E6F(!qgpXCD<7)Qdg8g7CgtPZ?I&mrCCUmeIZ#}Of;(xxiXkYxD zFB@|?lA7z%o{JV6IYHg}PYg}2a(5pri5l5F+4qqECG&2ZU)-W9^h9IJeq6i7yYg2g z@12e>VV*T-n3P^eh@?k-HIBRIpZ;u2H_FSxt)lmurOFR$Rg`bzO3XMZI=Eu0_r1W1 ze#e%Q30u6XNjitxU~XHLgICsD%`l?!p4nm=*h>&k z55vbm6j2)ULi(l_P%@xKx&`3~^cBZ!3M92mlPNe*AeVwm3fw}X7vm5);iYG%wS$6Z z9FryRmW(|Oy-x%;W()(XF~iKkX5$Gq4j*MJC_}O28LoBN@a3|R#>~MI$|+=>3E0r% zr^8~F>8||9Xzb zQv&wTjReg&O+l-w42?U3i_v*kpm+yG771=Q2A%eO)Y3B-*$dHh=#1cWJ3Q+uYeOL_dc`-;;2H<=xpJ!>!^vMgNz6UItEh zr!={wHD;Ficccf4J#mpMEL~kr1j&ySr=O`Sht%!ms^1D6^vukCZQDl++r*W9v=bap zNQ_&esjc-gtt#1mB*;zIXYbq0OH9|)T5N<8@ncFF*iQ8wCJ;d1Dh4^QhGV-voc*&> z73Y7)^jN`tIIbP&4HdX619AO(>OiNx_T}BR%Nr{;nNwafAG+4NmhEK&n%&?jn`cL$ zFghSsETKJz%%FfCIBy7duKPyrJAlXlbv%@KIB#=APeihIzlCi*oC_koR% zI6I!3Azb>t`|6HNNaZHn*oy1X9kUwU70d0h_Y<`oJ)VC}y~v&{z7d4_Ix}YyT6a0e zSMo|p$Nd1q(k{1*6W9Lq;mq3Ros9G2jR!BM1k*i`NSD=RS5wbD{?PG3FPig-JL?kl zL6BCdj^&mj{g21JAaH~Fxr-hal}C?AHiAFh6W^PHlu$SAChtQ(Ma%P*NlpD|1gOll zNp%hWl!)?ZL~+(E*{%Zx1l>-;mHs18sz0+@B44Z#%+dvA1l7Fsi ziwqhq^#MVuT3MsUSPIRjkjNQ6%`{C8=p^cewoHA^oN|l zDC-_5Zl4kp0^5TV4)lOaG&&~N@$#IqgHzi%}wWwxfKdpH-(q&<;;p$stSR=}r zSV^pWe8@J3-*MsbdkS{uO~?}^QL{<=5e^50enEMl6wkpLPz2!LH1#Nx%CmoNu$*OJ z>Z|1{>_pfX`FnKsr9u6$WAeL?-JbFHqDE;240cj5Siof)ap2qo?4SJpK456S>A3Jf z>3XW%_k&iC*T(Y}KD4CQnYaf}M2hYhC^byFbuX$kC${wDrN&A+)&C`Zq2luKeh$Tp z91yA&`X!kv-&4sw>9&&scNNc=AyyBg!1|C1$jY3X}{^{hNPnB)WuFCI2A4 z$dfY&U=r;t*kizl0j)oa$ZW}pL{4_F(!ep685Wun9pL{pq#zXqPPAE(nlq?z?5h+< z$?YsX%EG4DfiP*;_JNbs6FZnFCOKIL1DgL^n+KBAW9$J9b!#?tm1ri!pc3?((4Si- zZJ0^JbaDSY3PNPqX4*Wze=uZr{ClrnoW?9e;h>f=z$LQ+iy>rj#?Z(YfZ^@ zSW&~1IHQ1J77vt7TQ|u?1H0NClYtn#3LtR;)FiMGBd|_C4?pmK#s$361~4Ql0F6bW zsES@_r$r#K9?1HFC{5im>?i%4B8iNZ3srwf8;dBTjx`p$Zc+-u-hRBIIMRrw>>&+4 zev7)%dSNxLJga)Nu!2%(yRzHTZSpoTw_h>&R|o04M$p2pbj#8~D5~y+vXlo&Ovaaf zhmq*R?1rhWX`&+VY$BFfeaPLx_PN>{rb3IznjxdRn`@`1G|LS$`5aSfT+6iA#m`X0 zZy!mj;ZBN)+cIktC#Ppp(;Lzgh^z|jn%xVtV7^PHv@~-vAE%NMiajl*GO;Y-hllzC)oWP_5oFp23lK{;2X zzW_?S@X6uM!ERIkpwXUBiGVd>uqP>K9j^X_t1@`rwp%m^Fw>NRc8)$ejFH?USkaKIefVpPVX720JH=qexxR;sd#9dH%6W(PUqhxs6gaki zr@^E-Ap}1{zQBcZl0Gox@KV3i!qbsGrx|1|)U&C4~W|7Z*xc$T9(hpqjrPZeI3&8yJ^*T&U zv#3QMG5IVo)&IalW#P@%{)Y;GWKk44SaiE??WP`8{PyzVcc5$SDF6QS!L>=e8|Wi7 zbYeHHSl&>AFl+l{o|fpIicE|gi`cnUD^6G@y*jLT*K{{BR+3=;UKwv#T;A z=DRil*;(i_#Sj6}09=F7g3vxNSrBjyh6eo$w-AD-wiTceI_ma&v>*@PD)p3t82iH1 zO9)hRG%?}(z~)#lnF=C2)L?bUrD%*olGE6;6cNltuwwboWm+?w70XCr5e z9oB9^zQQJhe(448e>u&xA-~*kZlUA8Rw=DQfu*@dW@~?h6bGNput>-_B(pU*(0nPv z^A`w;73aTEJw%$Q9{aCjM|y&>sv7WIjD z#r(hMPNGOelGC4`sHNrPE5R3GGNToDy7c>vPsVH*c`QSinq&x~A0rF7E(N}s8xA!kPlSR++i8P$s`HE**{A)lu>2BTo+=S`` z-L=@Sg5=C;h1i&B@e}VB2C65MEvdr=I^HV>8b-g7D9{gWn=sX;tztCWXamh5CA_Ic zXt`{=c>ubUgh3ad4>rQzfS2Ne1D#BPKoHO;LQnvmTsZ~D>971cFPy5ki@LQ3C1>FM zi#zuH$w7ICP5F{zPUL&-9O<<>Bvzr`Wo52*$LdL<-LuTcF_gNvm=PjH%ul(D?d+>) zvv6K=3e{GH&mMh8RpOCebeqa-Dp4&hWU3G(b13pRY?i6298d1Os+NxA%MtjzkZD6EfSEp5gtk*8rvt0YkWt^T zax)=^95ydJf6>gWJ1kRbO2YBoLVJ)z;s19hp@%U5D3)}sqk@ZhA<N$NK>pzGt5P-0qiww?q17sahl5GFIkeJy0{xhMsIUBO&o#8z_3Ufq4SnXcw z%U#+z1F2<5PN)VSjGy4yHAIW7iDUs}Dnb@O0v-LD0g48g7+rvgkw@roSb>_ob8^=( z5j1F}$VfrlnqLg$M?-!w9P-wUU=NpAF6(#`R3$UzDLH%`eTw$D@n&FJi)41vCo9J- z8|-4EWO{`E?aZ1bw%T`^5^C^U?;RR3~v7{bF zv@ho@XX>oH%hVn4V)Ko?B$K%Yt{+>;E#)+I4eFK+h&jXVD^_|hq2f-WgEC2J!l)v& zdL{ZgG9F~05*ZCq{wL4*xk^LxS5{%F6jI!I4T(jvtG^Ztl}LQ{{qR=Q5w;VBG-R2f z?;^-eEn#1%)^N_;)c-5iKh=dmbFUP!N=t|D0Mf@ zDK^ln^DfD!FtS&=6N=h`U~~Bq62xqzKW~W1-=>I%cjf@i5FV_%sqmsA=#TBkYK{_9Yon<9$6UP}W2b32p$EDF)^3XqGFJ=;!2(J0XKI=jM()0c^XhXo|BWa&lQ<85`ic@j0D2bz+%H9d z7upEPFlaZ9%}~)0z^ZrfM6NAOkCx=18$gwA{PVWO0&E6{DE*YS2_r377{CyRgE+xX zy-&!rXw-M3-Htjk7}X{Dy6^-~Jba|7KcJpYCEV1&<{Qx6f??XR^dzWE4=( zg5Kdu-hNUxBPU1dUH|$lrV#je8Wh6cQIRVawvQSFpnt_YFS(MwjNCYfEF-QCrv$i> z(`G?)pe6j)8lV)OdWS8k34c7U$lTK8qdKr9E}?dQ z;Zrk$fPDi5%-O38y{fxkaqL@d_=QHJZ-T=?$)bELBjUL!{Y15powg6XBTO%9(OG>Z zA1z=147fl$1@;y<{)_2?X3k=xljt+|Z1y-R2pgnlfRb$6g)cWQj(m~ArS@Zz4>MAK zDF)vSf?bHSwabtY#G}m1>4$jm7M9<#pYL)!Lb`zS5K0o`9`1rl34FWPip@>X^0F1n zZy;6>2w8x=#Pm|q#jFdN?IMLIc%qmcZ{20slP?gZ@2+CC=<_k&owovY4eeml-y{CS z|9G!=-wBFco=TYU2l8KP7(U%?{8}t+_U9RzM3da$H!W_;-XnJ@ zp7S=QP2wYM5T{^OA3z;mS%EN;vv!+%5v~YODu>h&c&-tzCtz04Kmu{2txSB7lRQND zCtK>XQFI6xbd`u29C?Va;5CHKoW+y0kt|gC$RQ_fo&r&XtDoZaM+_{*^lbx?9s{e= zi%3_z!3nYO1pHSuK$-L(a=gE7hL_4vvloQ10fHo-tI4yY`)LP9C~E17T6!C9b+XUC zWrmAAoi8CVno#!X>SEd@eQz4%f~(~b5e)5h6nvEIAmgX!zLui7;jVX{BaKGH;eHQd zWm0zkthsl6G{*hxtL&P;A`T=S%A{0cd5; ztL5Oww>_TE4M7NV#)yqx)La>qE^a;HC*iG8mT+2bRB@xXJEwn{1f_)Px`jJ-JD{&% zrQB|}aUJEk+Q{htvQEu`mAX{5%MycLQc1v*hee>n2LogsuCc1D*mBUA~}9Eq$F z52qju5E&fww*uMp$&nC`%o2WAI<11tn&S0|ddEq(SVExGj%z`nPESLdQ)&RKy3B)b z)#@fc{Hqrm!{6gLB)&O2Y*x>^jI?3FusEC!5n4aKo+oRjv{EFXMWgirI)6(yL_sje zm*?7J%})0w<_=GdsmVLbGqqec@9){f-dgj%S7GJyeTmxYW3BencgQ`kxwh#RpC77P ztgTck85=dlgXnO*8ZLLDswl#F=I4jSlct+cgElXNeOo51-pK=3XTLSLqUeS@LDaUA z$GP^C6d6<6wu!iMlpU)%*wu4y9YB0X>976`$DDo-{-eK<5+XBX0ZFg0x18`0*jUbv zCqsAkmSN`NT=Usjv-C%)bTF$QdzFLRDf1Q#3~-AcQ`X*GMCOJhvUU{0M;hAgrTpY-oEHH!^oKtYIQlfJqFYI?Rx=n-hvNe$*)g9xKA&E}%5RHdzT&i&-v9dv@1@yCyq zIJKdV8j_v&ZJ14cL(le9M;OcsWi4%@ow)+POH{E7LhB!N%8^iiK? z?oQo6Pu^o;3G&1J;6Uv|rp0%d764gwa+NYJ0zb|y#ad@Ip6Y0`&s>Wf>GT)cMKd>n zYxA@22&ySqkD?qb(K2+WR7h9+y%se`3qoC$x)x{xTPC{Un~nAVz9&23Q6a%fHq*h8 z%j(>w6GqX{zw`8WPSw8*6HJtd75*s!pKUkN5_e%lCpf4PZMthjzcRRI!4Op-a}M|q zB|86s7u{Fi!*>E(bP6)Lf>&=r%rutbv4(8p!%4aMvj+^d_jMZIu4@Kf>bUE z!uHWkQqrhj*uCDe62a%p549{XG(gB(5Uvm2VYn}Yu>wgip$`x^?n`|(SDgp{2&g0b zm9s^gFZYDQJx*-k^3!xdJ^N=LjMdnVC>|)fHDrEo$om3U0m^%EUHJk}lHP3k4wERzy8Xu3^@z&KXcv`cX~(^~ zqk>JEs%I)Z_Jjt{?_kh;Q=<(ni-Cflh7w!GGjaVkWG|``t)<6PXP{BOgj54+wfebK zm<{R3lL${y!4%|ggNVxvq|X-7{#_tw1BZ>j4?Tm<3Fb4BYAU~BWQSBz(ZeWDgc}QE zHuGo|Of2ud7u?&9b%F2S5b^H-6?`vZphqlM^i9G*G8goWw_^v9;b00#4onH}&m)rY zK(QZkDy1;*?3IZa7`0v#(cSm#(_mkv(Q=F9odvG>kx#gtisaOh)#1^kIDk@>z+fwf z1Ev1i@D`{+&EHsphq?0{Xfev)LV8dNaO~h{nstTmF-DT~tIf^kJNc)~__69HvZKsH z9*xf=w|Qvxy_+n5=xv!<&Z8AZf5LfClH~eH0aeyIZ%p$CQ7E4VIvHR04%ab=veukD zLX3CJhdUneC|&RM1@T$YiFZpwI>GT9e{uxnu{fXOB&29fZ5E~?z2Tplyz6E<9IAP&0dOWhNU2H}x*2$X2jBU;t0J?e%S!WMVc8Ia#pZ{iD2M z1Zd%8j>h4J+kdjey$XRfFHhw%8N=PxB)!~uhmR-)OO5hDujaHE}x%P;$r$A5N*iq+I@#D1%&)&KWZLz4M zHvdMwq+nZ%9+C|kCe)3!G|onhw0NCtI~^(FcCk3@?}+swORJR2cFw{X2L*ENESUJx zi$7->CHj{?JE_n(&a^_&m7WO+QQJWEG&+o(Uw3HVj;EfW1dP{Fb5EQ{i^_^OCew1+ z?)mkmkooanGWQIk9X$GTHYQr0MrRjfRi+>8%KmeCOvAYDx!0C&3{GcJX;vxAWQyY6 zd}+t^=whC^X)@0Hegw_W&&S4jmp?#OfdeP%V}Z%plJ-dvd*zxtx7A^0I?(j?gZrOL z(dWBujUYG^H{n8X8F%?w??+EXS*jmYDmnjANWxg%zUr)tJ`98^PPokZekP;UQ%gbcc5*!LrSmcuYW=p3h^c3Kp2QnbiRmZJ}fweU!|7mQlpvuNhOqk6yB zOt#&Fb?f4GR<|8Cz<*P=joes1+$QGhC`W+0 zJLeI_W8!SK!*GooIH$ca>Fht!ODHCQWyPhZQU|9nHi)ER!Nm|;~-{5sB`} zscKx6;(5fR;nrDAVCA|V`~_9!yw<+SDZQpr94P0?? z3SpK(#^U=!gUQ2y(f(qP+2Pr2U>#d2*0GZi-gb4M;3-MgE7xa6^xJz=D2XjgFl8NK zEkG7B$AZ1cuz=}s-3+$fA|N)91~lIL05??wFy(#nMK2q&uc^AGf%kJn0(8DB#vZIM zAXP30$?AMv-QFFzO-qn6dH4P6h3(i|uu=4;#4f5P|DGE3wE-4S^~DfLc_8@+ys$vL zQtY|DPeb7d()BWNeGqeva)O$Ehy#7xw_#9Bg0DFKJh}eUH^qP_OQSym#XQojcLI5c zNwbakWz;L#!KO>Q>))d3rjjVG8F9+~>P-u&KzX%|kYxxirr%kfKQ&u3q+1jh;bvMM z-2_0*|6kn;W5D>S8{qsJ|DFF6!01^H3BsWEex7WuaSv=K@G%(qEa;J2NQ|&c2lt)3 zBx*})0Upl~LJ2`@LG_w#yzRuW%yuPy@y>xyK{jD;3r0_R0%K#2B$o$)pl4*Z6Z?CR}d3hZe^=E6xWBudO$Lx=+yzq*P@$NaOn zkGK%?m?o-ap#$XAum%-Vim(1+c$-ZA9wdJ(ceLqSnY>>R2rU(pc6ZV0yNe6*neiR9 z+Xbjl6aaUMv0G|kfv8+xUA4;2O{_yjX_cjrIB)u5OD$(sdd03Z&j}MIBSPWwC@~ji zfH0E87U3)^|C5d2K3zWREAWv(9^jttFrr__n zRA)w-LL>PCF5~OGvyhGC(vDAk_38=%0hN-|>le6OAf{dWK#C^zl;{5VA_*uIhG~uD z67ah`F@Z#-#{!n`23?MGT7}KE>&^Y-@h`TD#U~ahPJij2TLk)H^V=YgQ@c^rAYg^? z=`O-Xq-eq{pzj8UTVXd~@ozAI*+6xPNp(fxLgZ!GSt&^Hn$Ks8quA=2d!0(>1Ic2jan_>d5Gg~B7^%fKZbDT`(NB#Uwu)-1=ha<0@aF%gLUu2r9G-*#e! zMQbqm4IHb>2|sbi`fi(_ePQksZ;Pawocnm5sHh>p8{Z0Qna}Tr9C3~N65eW&;i@24* zcYHVf_UxJW#p&)<8!(C3rMC3nb=*VNQu?GHS9fc7G)s!I80|3mIp_m5ZTJgPz~itR z)>9;^9^Zla)w3<=xQ(02ikbZkVIBn2VT1}mz@`5~)qBTdz5oB?I-PPFQc5&%GDE1W z$~q-vpX@DrQ)G|pw8+lRys{D(u8eH1ip-F`m7Tr0tgG+idFg%o{XYK?I;V54uGjPN zeB38o#=))thZd0aw&?UHe}%N|RtOC##ogMMb=Ede~@iw5B`Q&}8ruDlKU-t+-G=N%`X8-~r^5!Mt7-7wk1^7;t7MGnu% zvJsvOOj8c9pHp?*ld7=j46TqEQk{|V>h?^Kxsu+XtP?)a)J#h3+t`%|YZA<97UQgQ z{odeCl82DFe%%2p7oiQ8hcY%+4(CymU1#ta@~wcDScpvD5#^rPs`k|LSJkF*Y$+^2 zYX>sOK~*N#{xYU+YMp{$M%16l37rV-!uL@?gVOIWI~610Mch7*(}PzN1wv}==UcEg=A{))2+@S>mS1wU@AO<^`Z^Y60?A+0@Cz3R!RZ& z66@aGq&s~hi4vBB(-33%}Q*W&)yy10@kZhyyWru6L^H3Y^_T~m5kMJP7e0DsB>HtZ;x)t zm`R?fD4R~6&nDs{B&gN_$S?wq6EG&xC>M5EB=nzyKDX}_+*pw`Y9i}i{43EYJSQ6@ z@Z2c{sHvTK0zjrL2&QL)2od%Pluv(m5YmBC?m}EZmlX}9Jpku|vV?KuRU-@j32pYt z4-*}C80!vsKAIeal#pRZj1DR5Q~P$+*(j!oAkD$Bz1e7^=+g%!sdrxm?0}An&3@dY z0kl~tW`!<>HX_UlG*HN}$VmQZAlFRRL$&AIb^+0if zxGu$y@Fp)ys9llo`{}Y6h#PcNHslpuciQ4p?S-76X3h!77n>t!PHe4-+laPa9$(8@ zR`--y_c6pu&e>5*zF(>hvwLe5-C$*6UvAMs>t)KP9%X2iDEB)jOF2J z1XEXA1&OL^mtK*}_b`d-6Eki?@!=l2upwU+|lWp;$=9$@_`^X2W2kK)_M!?RZmL;w-S) z^+^g{S`GE!BD@5%q`g+@uEH-0Qkkg`lw`$SbG&2)!E|Vj2)gh?yEbqduw$r21?m26 zC2>Ag7_0^Gd?>*}Cvr{*B%j%)FkduHgqhFAFl=pP9+T1aHp{om8mXz|TG^p+z5Ujvmu_#MQs&Te0;-G+LQxeS+`QPAaI z;N6>bt7)ijMnYnwp)wx?x~2I3HQSaFKph}rl2=+h)w%3y>5S8sW}8{$hbZN+y#piC ze=O3zZg6=D3=MG7MX?TSo*NR$Kp2{y6d+vP?pkM?YlTLXn-*(=yX7X^>ic{I)RsVa zf08wvWDu{cBMpnh{<(%&6<{w=FDSWh5IRYE=s}{R1y^7=@-$FBJEX0{1r}9#qb9tm(bn9)*9xK<87wXq>?`^r)DE1N26hd zds{BBDVka<{)eaX^;vnUD`GkWxQv~u)B${VRl%WH&i+JiCLgSL-OAKC;(b-B=GUgD zkg;(klqeC4aUIp?HS%I23gWzMmx*oJuDVv==HvhEJUU@#B+>jk=4QLXz)GIy6IVgE zE*tC!F)lv0!zTotZZ$%JFw~`xeDqs89FDkY$}Um++6qveXtOPBy1ZMGVj#Pq9lFea zF2W;sZSIhQvZr{Nj_k%rqBD4(T1O+9}`J%xZH2pPbnn9Q3-Yy@7=1t=iUcUcz$ z0tK(4!q8n4Dt}ad=-Jj;1;BzU05=G&+_Ktdj}wLJnMy$na=C5#vR_8u_t`VLW$Sfve$p?_|3&evk4Lw6 z8+iKGj{{7;MYwl{uNQY^xs0X`a@td?1xnzY#j68$s|A~KId{VSuE{p#ssS}*gD|qS=f%|hUF_bnaSkDYa!(DkOglC zt0I|}fHg!d0x4{Pw}uEeRBFPuj?zThA;g9|$`tJ+f#gUBq+qv%QmiyME6L{EFu+SU zb5z*!gNJ&e{tVvh;#k8=9+Vjv%~T=504nr2XTUIajp%i2$0=ZEJmg&3CVsk4?6CyF z7NRCK6cIt4JplZ~`0lJw)BV5QCC>XctH6P5!$D5j2J_)b(GrLe*AH0agGLL~t8T;I ztODyud{~Oio87;O65h)qDyx%x7Hpp%9!TrKCA&#b4Xo_8 zMz=ckYm13%?Q|J5700j4m0^vi&x?inJubHsRxHvL;Wq6%b1mcyMg`^vM~;uS&Ibi4 z84X;y#g8tW`WJO*k)Mn#wk>ScJ_&I!htlq@99Rc41B_+JS}$)mdgR-{-?S5^7F(HfM%$ zK8^{c&j1jrK@Lsgf8e742r+Bo57-|M##dp#mW36BB^=cd4|zJCen!pWZCI+Q0-3w+ z$b%6w`mP}#gaa@Vfa`$7FdjApLMg3lT(^ha#wQYjodAB?Qb>5osH{_ou&B%T8p>Z) z#BQr=HKSQ`9Rl++OgLa&&4P_ZGzyX}VSJ?-kAr>vUPC>(`0GpklZn}0^?}leFkpI) z`W$d;s&$flcQMl5=MS$>NC@^Ulb3fyRY9dFi%1=5`*PO;+oZWuKJ>&pxOl9L=$Ttd-%Mk#On;mu$2-#=H)$pISg}vvt|}w- zc5dIy!9B(aR*9jO3oD{MQ(8fIx@ROop&0L;;n0xUiF3Y&x$J@RRkMqllIEaq8M(Jq z3hLSI^FuHT_K_y@KEzG}^Pm`uNXh@-wD?lrT2fx;0hh~oetTZXu~-IH0*-(nATVB+ zg7L)LJ!cH<8v3GO`@!_iEl$@?Qriz(!j7=t z(zo!zo$&$uptTKOr8zj?8c01Rwle z0H9R$oDnjDoFm92PA+}Aiw?aOASfW&3N_Yd?JpRRL5Bv&exb)H=(0tY=>5|VW!PG@ zg82kaJxEd3ci%T&i(vlnV(6+cHLj=_O1I*vkCWOPPu+VVM(7vyFt6(27)j8uu>K&{ zs6V{8%ZlD!v%sT?ht8i*0tIF&`iIXkvV*zgUY;>xl`Ev8lJ}$H6 zGcLsjRPW=(b(@cD*j2CN8(9M5hFHG(-pY0@xaJ^A$tNx~Bm5@puRUp-w>Rqd-X(tf zO4sl2=lNq^=VH_g4yLun+q)s$DL3L&W;{;Tev4lC&Vq#uuI$yRzSfiLmMs#ueg=*3 zy+{ha6*;xkz<=H*>0YaN)Q6BR7{9dS<;`hP6PSAhL#c&T7+W+u!)I9HILhjva_iJ@ zuHvpS1ongg(1#qbuvMV;6odZRy~|F$-OidN9$NQ&mTAzvqNH6s;7k)E?NSwfY{-Ry zL%K*{_s%GLpWt|KUTS=d(M{ZAl&up09GBAtn+IME`8M^MV5Q_tE z5H5VV5!ktTS!(B%veXps%Ib9f>O$gdeclq?B`dD*QxJfJAS`bAzo48?BkJYf?pA5s zuSAjHi4tbQ1S>+Wj!u9nBZrw6-mitvQCI=mEb248oxIW z_=IdwU0G-|8AcU~s?i=@%=TupbRt*Sr^2so#ckVPOr3Yq5mzLX3VBZ*7$JSAd3|p! z5TRPe-=|D~{RX&e9^3%zHtdMzMmi^`S0YagV75W3PUbKuqakLc6b#VW@j^&Z8({`c zLK|Tgwa|M+;U(+UQ8Qvi`RbKjk%OZ)PpXxwvmfnj7ccGEOcf|})BojIrxOZAJbYib zuKc2qNRL$Ac)T~$YBtbJ3dARGoQ-|k_tV3!3Y#$?V`XOl^v0W)MrzcnJ(>8XEVV?d zvM7cDi6c2Wxy)%ejTnJ+oNZ!K0UI;B7X%v`fb}1gzZ?({9SFSpDw-T@+9|LjWupAT zs&y3d0HJT{r<;7PPYOsgp!&t|^tiUb0AIm${QK>wNs}ku zE=jrGkxX7Hkz)r}7OpIxzBEE#V#2lBJ*{-sX=^QDHNrp^tL7!V7r)E7wAol*`qJ&0 zwt{f~q6wp(-RwoZC+oJ@bVs@D^l=Q`BZq*}UleDYjHcyhh^`xd5A~CF*Bsg$>l%{Y zb~uFHzRCJT3mf|F&8%85{oY&Dw-6lukM_%-vJyFNcnwT`rxlmLn4E|d+a@<$IYgb; z(;i3vz09_rapYmkGa_I=v(4^WLAXN!-RXipvob^`;oy<4_^ahPQk<@#fXGpI(U~k~ zz5i0fM!lJOlPL@zkFVyj@ylGnOcLsMp(AEw?nCq+mAh{V8xz|ppJ!cqFf$n%5CtJbJ`>#eTq%Qst|cz17@v%xRX;W8ei9OGDuKyA=YAy6x1 zy^TIrh%6m03IZAgNx@)R@k-kP6$+#WOrjXNMEBg6HDBt#mR6wEIkkY+P8#bBgQWzhb`&6cvJgY2Aa#*K?S+J{_X zCYf}sj)I}RZ4H1%{N&xx8GyUsTAhNZaeEO6-*5v)7xh7*aAg=G+!s(?Is6xe^z_z6&AMfC{k_bHo>W?QDJPlkTO_X8N%yT6)ONm+ z8nfzfiTTeXqG2E%!_4C>&cI9=Lkl7_E4B~2oDA%j zIw7H;dG}Gi;TdJ6BqPCPDgL-lp9?dOo{j72>Yb>5B)J_h8*)8e0Xx5|aAY@N$NhYty5b<*hDOuFBhfF%P+?+b+e0(U}QOs!RVfy`VHk ztlQ~X7z$hgQZ$dWyK8x{qZ$} zBIS9EANE9{gRck8bicyg@{wHLaf+sgWM4?+LlMn!;-Iswx1kmI9RfRcx3M+5GBqU& z>|ZK0gmn0Pxkm!#2pa2{C+&q%pS_~$^{3OWQ-Ji<(Ao>;kR`g^m%R$3o;h>_Pd;pw>d60p#5$4t=X#F$6rk(0~GT z&768P7y;m$;jKyQDR)2~2|v>N(qsR~7Kg3q+VoW+wy#UqcpVh3jc3#u!(GLvnr!46d_i_W?s9 zS~N_@ty4T)KVhE67}7W#PJMTTM^yOW$OIGj(AC+C79Bgy18=4>TFgtcA6^^x{lExI z&mNtjSG6eNZQN{>rAoT1VGPK-=h3JFcTYm_) zD$GlPJ@PI5XNOzUz($TL=TxqW>KpA9kL=9;bAA4t=%!e_M& z+Ej^|x>jYrUldtYjdjDXAod-Fu>B4H*IsWR=kt}O`{jcYDkTH<)#Z=~ggaWAmC^gf zqFEr+4C358;}8)u-P@4Q9-dnxYL{n2D_AX-H{pO8EA@q0qrj}8!$MCj{l0r zl?#wF6|XZ)*kOR;=u6Q~hqfWy1V4Oy8y110Aj1NI7Ms>I;b2Ky;;ZJP*_Eph+CCf4 z_L;M$Sb60(-43X{zM1Z*L`DjW)A^S)v5njk?-9&R)}_md9}EUmO@#7Q(Ru7czEamMy$%Jp;2jmW?-mle%(ylo-5mmK57grd@bk~ z#mUV0LS1pfi-%af*7x)dlR1i*@t+zIN4aYxdU(@lCxdJlJaiP7E|1$__SWRP-zBfmZ0wImya!hJ2-A6zG-O~I83D^x>$ zQ)vZx_hMuIP)IV(#gs`TdT7bHX8P344xgR)MWNTq78t&1`H8UOVKB3M^Ys=R{xPW- zE>&v>48UBX$zAyUDk$}fF99CcJ_|uF_{qr7S$g2;TlfKSTMlmI*Fzdqv{3;}1Vafn zDBuNBkd6vAtO^7YkwdA-Tr_#A0aW;Ve?kmG3JP5N2#)N>wUn42%1_I%0iw7et%h_f zJKv+y9Ir9?84ICK#Dj+J5le45n5=t4hdPh~H)YSTfq!awtLq}qblYYIk#BWPrpnTQ zp~H(iBPTk>iXrV_I9;^U-lRzrlapcIkM}oht77u2C8K=!nyWIZHSwCX5>`5znC_v# zx%C0gQ^p(~&H3TrO8)j^yYuGRu-RL@*@F7a-Ls-)MsT8D6rSPUI{4CYajv4h>Kvc5 zNZs!BE=){4@wgIGuSS%3>(WnU$n$KV0jYzndb~9Bb!EWngJNm*fk=UtvasHSIw2_W!tr>#zT$;8 ziA;X%1#%H^i(~g(UCsC^Y zbmPA=?0X`3-d!wa{oC?t%e7BS-3;B4?lTSI_v~DUs>1X=Dq~{$4bCiuMEy`aLB%9f zc-94?ZK*X~78ZuILmi<3QPRIg<4c#bjY#pHwmVb(xmu^-)@$LlV^ht-n`~`TkL6Rg z$}1IxBZf=o+@ABX3HSrct7!zsNe1Vie2}LCAu7h1m&jiW|IauA+TT6{SqxX2KiP=5 z&*4CAaD;i`y{8bD0GJ#q4Zgeo5vheW{7*S%7ia`9!^4a6RoSrZ0+Ivt7>|t^;nd?L}Z9T=z zkDM$_O0>>af%yk%R*N1Mo3~)7dsV3)a)6t_SCr+qdNESgIGF!an<)nEfpX7 z8l7S3H3fR>!9OdbiBBio+26{>WHyHfVm)w-A*ZzEq-|uU6&AotLTe6#Bobr-2zRr6 z@tsy$@l|;TpmBU`_t6vqaoE9zfLztH5F5~S5-m_b#~f?`1R>Crk4OC_yg|CiGYZi( z2OHE)*qbGe5hZn(ThavfjwxbQN=2c8g^OC#k(5>9S?kxZc#u5YH})oR5;HoMMkk)_r(dM2HzD2qbnv0UEe)(at% zpO=OtOsFc;!kw9jCfPN|KyA?Ex^Z^o59cZe!OSspJ~kx%aDU||3-xgBts z08V2%y0ACPS^Lc|3Qg_<(+Q!CrCCOn-NaFX>Qn*m`9}W7q*A{i?Bg81-6Pt2=h<&-OSCT>2IL+K9QF4{)l( z!fO(jn%$UQUXPs8JU(@3BY6=I(@9D`e)u{yTZ8e68D-ZO93H`l`uHWkHeqUR zpmjMbHsD)>(<8j*B?cf?ALsI{>2TS4LnomSxMW-bjI4C4lbjit5Jh0nNgY z)nY}nVezYDFm93%uOgAVPf(;tFN0PV&5_?Q6Hq z971z(J>85*xa-;TABoD!=hVu=Vv%)O{tBD(UMB~@e7`9AMYoL!W(`DLsu-PImdz-M z74@HG1mTr?L_Hq|T{<__O(P;fbDQN`?CNmUP(ig^&6V{CGuFE(9s{1uPGOY(1L`4v z2EXb`U2a$7=5JeVQ!5UTL~D5JI>}7tY5-}RaD()2Yp&lnFT0XydOOiJLUYv5pB_a= zXMr99=|IxRf%eyiVS^KUSJDKEi25GMtasp|`frQH)tPiMUobvJ%9){5r<6 zE<*Jri3bngZOZdFf%*)1+Ndz-{4vtnQu z+ta-4RBOzb-v>j%K%PXcsxeAGMgN#;clPDdaCxk&&h7EfTL5}OpKQoo(;gGX5!NR~ z^)IMPvhw+@avJe$0!THC3KNIrK=B1PUukA|87(zYwKXvIR%}4ixU)Btx&7X0MCIhm zLoA9F&@oUPk`37ii0RL2XM;^fBl9GB#@f&*>CK^m+L0?;uy!j#D;8jsccJ?V1Lzxy zz=L@L-6Q0B;ZI#0-yNkrD7e>sF8CFEbixS4?@37RuzdF7%NzM_3%v1!ETOE;FoJ(r zXWP8B9~P6Ub%;ly9oB=WNq-=A0C5BRiC!=bT;9QJ0^E%gY&h0ovzUXV!_8w`W8ELp z+(d6)@X8Fwdwg8U^5np|{uBv=(P8`Ercb3ibyv)5hp&QY&oX*rBFxQ}zw-C!5b}0% zI4&gAraN%=mG0-KH%5b9vM&Fip!|n>)n86E0;Rv5h)gFB5RKvaXJXuE;Or%;Lh>b} z4m5@6k3$CO!KMI^$-+wt#=L^20P`$1clMN8G&Ml~FJ;AnTmbO;1=DcJiXlfVSOJi} zbMpIH+u~}Acb6xQJZa6F!03^j7t9K})xKxWKVUN-Srz>>j`v!xH;|*ivv$s*1v2Y1 ziWz`_fr@yq=ASpxJl5!V1k_z|g0?TPFbaT|_bA|CW{+r(jWDHV=Y$2uK&~A8BrE?S zd6=?X8#nsGq*CNu5%6|e2ylCgD19BrSonr&K7!}CvW>@;(|&IIz5GC*El|$6eymT4 zW_bAe0_MQL_jH3mr-rXiqKvA((fmw00-1I0vS|dyDtXN|CTTChy->E-U%ba`3jXjO zN!Px?>zx+)P~0E8`NFBOcm>;V(QxdmN%M;l4_8l5?Hn;9s_)tJq_f^^Z-}0^f`x@{jp*#gR8()9PZV#FEdGciFuuU?Yydl*OKzF`I1^# zX~Gj_G2<14ok!N%xCV)~JJ9H%12#mlnQRp)&RnhlxrrmW-apZ>0Buz;4V;oetG8uQ zOc+cMY3DCM>c+8>3H`)i8sKiWSJf<|KJZU;8k~-FBuJ`qJ;c_8Vw-Q+TyE*m_C3$< zJ#U5iA=kPrD9Vsb3>-c2zRcY3ZB@F{Cl|x8ONNUefpwPY!Q1v6@=&vsNm3~u^n@31o|{Gb%}rdByqOm?qaAr z5%QAKiMn>$nX7Rwzg3?q993(e2qxp?dX$D;U|SflBCiE72*{I!xzDp|efxl!%Q5f% zQFKzM=NHA}B~0BCKB@JpJbx3;$m2r>F&eileIt%>I4HR%BTGz4d-=QIF3w~u6>3k; zw7i7Sth!18Koe2!yfp;n!^{8$0J*~+y*&5HFApjXhP)GUWY(C%|56*F#-|4mpPut( zhoj|V!|Cs*M@#?p^4XQIN)!i6*>n22=7!#>JWG@@jT-P|EwEsaG zTIo|6Ro(Z%N(OidpN!3^KSsnet8bila6QEFi^4&euk+nXPfFirCa@8{5bmHq(QFJ} z6NFu%FQAnbc$#Rmc5FyI!T!OzT=QzSe^;5>FLILpggX8u>Hao$^ruMNR#17GIPmdc zJ3%xuAs&qc8n5;UyP-Tr1<&?87hp!<$Uu2w5VRlu6w)VnEWwD4+J*qUii-v8iao=` z6g+q#>ly+Oxr5R}5d^40HWY&|5T#P=&9wi{a8tQjp=`B>PchJ0w+I3@)6G%hzP^_G z4p&}Sm(+^ly``8K1~>7j^$qd=@T^s94cwqx=6DT+R0gLISA&qm(d4aj*X2th20N3w z8(<_q zy#?wV_tA#z4Bbw`b7b$K3a`gx=c+8hGV()o?p6OOgePq7e$yol7mq%M52|V zOUnxG(Y5YbgN3;u9L5XGS%;zGJhL<~mMz}a;Lj)nCqfpCiSGuMJS^8yIt%>WH@j$2QCm*~Id-vl(O(@W{gOAO5Y^1ZfLdsv*|w>gE-97FeY!i!ywRJRM#q4M7fiH~uz7qoLL1OfR=D6}`@>N~Ykkau0ev&{p~HCezDtP3hC8uLvxB zP=4(EBhTqm=VVCc0wFh})`z)mvEmwTa5^rM%Ff+>K%ZLKnED~q6;$;njA?K^bXC~d zb~e#D3cvUgZaw%7XxO#Wjs=RV)bDWY%F>u$T^YdPU_{a|mbGk1ZM~0s0W3zI8{otK ztrGaHJM)GZkJle7N3cg`NP?9@{rY)fYN6L%w~Pb#CP~k*)*FtyINI3G4L3`}@}HH4 zYr8>@Ze-D4cIx&C#EETw#2$H!J@mZn6_vck#l0-`Efa~gW{lr#&$MCT_%8p8#(9kl z=$q-oyzs#rN{(FX%ds{4QQ7OVII~TXv2Qih>l@dC?K>XUj&_u_M9m`!*E$G!g5w6E z(7^r*Ku+B7dOZ2DouyAxP`ywaJBF(Z{0JIazpQSsORUcv57jBP#WS+$^f;FB8L z^;|ub&)q}b@Y4_zTR`$0u2D>QrwQs`@p1S5&qx8YJ9(5~Jy7g#GL-iGj?mHvUEXZa z@!3EE`pG}!SZuPDy%=dkXhbe4Y~uSCM;<})ltCVK%h)Y18tSqPlJ2P)jNd@gXqE7- zufm_(F{7A_E$owJ;5WI#qm`e=lo4L`XznHj&bxX%wy2E82TL5WH4(IxJuMp&Nz->h zqVg~qhfu87o&hj|n&VHGx02@S3sH7X;gsQ|%#IbDVhXR*X1`){krwq$%EzG4&J7|xeAe9}D2x7Z{}Qx?Orn1eU{mD6UBTMxvN>lQQrKI3W`?FWU+2rm?S&js zeg2?~wQ6jS|KmvX>0|OIik_P=m9lN4^0Ro06r>c>CBsuFZgD)CtSfHPzImS2)9@qy zKl~Wwvl>R07pdQ#4B1(4QF&l0yqO_ir2J8{SCLJ;x6Ya+0fU=|M7b3Su~8*9tusq* z!XA}|Fi$qV$7HTMa^0qpIiLOL@1yVjqj&>(3U6qas7ghOe0aL%n|?Ugui-MQ;bLaN9m+t!kHHD$=I;ev7xst5nO>A z(pUBq@U5mSRT#WSn3Ecq>D@lxqJG9jBC({pHapO7>wT%kj>aV`h_(L$IU?TPmoP%1 zSrrGCVyc;r+dci+?-BU9+>}tVH&KJtoD+-rqtr~8r*+il@>tML5Z9`C)S{vY*nO?) z+QkeLa(7#@Wb^J3O#{LQJxKy6t^*%P|1bDLAC%2k?Z=9bP2UEDmy{hqXT{H zCY|>~t3>EtL?i;b;0?bJHz{%0_-~KOok++JonxYSSVU^C86bH>m5O}K7SJ!7xh&i3 z++fStOsVyUhDT6IA+%|I@@YFcq(mU_9$E9te;3I0Ru3u~i09f~)j1Cvgn^0ZH_Nb$ zAJ_wKexv62J?tATv5rhe=jz>8|A?9TJezJ1dy>r!#j|70_XpN*KGJHWr}vawDW2Rr zwZ8e;u&=oKJC#?W^p1JuDDBpZ!G@i87f7#bJ(xB^bf*nD1HM`ti}g-3exLMldTrsn zT%1Ae$WR6-3y+wxZn#0I;5d^wq+x;mPz55JL;w+zI^9g-^%5#12B(?H>DmZ2`ZPV3 zp(I3;vM`eMi&%Nefavr3qnn1Avk&sFe{R~rJ8xqdX3q-i@FqVp@jlo;G*Bwb{K_!{ zrC(Sak$$8SSZ2{%Yi%XRI~^O|taH%JJZADDygq(;zq+R;OE>XTHKFtMK+=<$5b}uL zmn0+L1#(LG_~n^XxJB|lX9b0OQ!LnMeJM7zPYEv_1r8DBskNFp$_24>#uj!2Yo*@+P8UJ27+c7+)L zElVhbPt)CdmK~no3Zw=C$x?GY>Rj>YJ^|`$SqlIx;Q3Tu1XveE$INQMXAY?!3?_}` zCHdxCW`@@!h8Zx*6NaxJy`}E|mJt}xeWJB(epBM>D*w@oZNX9Da*N+0u<2 zV(7-9z))e)WB#{Z`W4?9?q!&*X?8mFETchjXJwZTvmzlp=EI?V0z#X$F@O-c)6yxpw3g#4#0ryL47jhp@%H6u-r z5I*+YHBB0ul0H-|s&v0I^+Z_E>7kM%kd%Ufv5Q$QUr{Gb9?ICkngYr% z)W1L;4wfls*8l|~ghW7*jXI4zIH)+WD_?4vDF!MT#Vrak?h!%zxm_ELh5BI~D=MU~ zM)Ke|D#YsFt7!wk31vS)nk{>WEd5_<~pXjt;lcatzbcDpWEb`LrOJfLgMt(J6%lX*5Ulaqa?z=hfIEsG2}1>OVnVEFg=P$xr7%So2x9by&?2>XzeLSax}Zk)_t z{}tpN%}QmB_;z4$M|HsIZcgR`aOwaGQz_THWl*hUx4WQl<8jBU`LYB|5oRJByEEIX z=@-z7Fh(0|W;}ZxXGnSco%Ia;y=Y_8yH=nO%xb^weitfj9 z%^A;d&xmlFi5ay-ZKviTEVe60^OUekc4^vnerJSn%4dj`S$7e*mw}jD*mHrvff*`v zpF9LDK~g+{rLQ{oX>6AIL;s)8^otdwF8xqQC25zEWb!ufx`zVY+#Q=nFn+N!BivSCi*rAff|IXBuHj6N0k4ZWxQE-ZTg$>kP=&YJoDvW6pT~7P6i9w5u>X* z39sFL7DEs!q0QRKIIr;PwMtF=-C|6S)Ax!~OV#(5Ze_P+^siqRx9N+tXH2HN%cSHz zyHSzq_b^sY)nHF~(p%zlnU9afCle&l)2!W=@-+l=(X*`lE`O6N!hu6gzxO#;~8Ale{Y9$ z?XLV7<2Yv@nh-2v*{G^F1}N6M4%krPFp$yX1VuW;bwcrbJj%jB35oz_&a}fm0b>Lv z@cavY<&Qp81Y+>0jW=`M<&4c3I{L;>Cnfl?J|A6KJ$rchX^%6|X<#6#gYTrp4IhS& z^5+aS3r%+0e^%ZqZgcP5ai~sW%3Debv`U-Ka~E=H$fL^?&sKI+k`;eT;Kl2>1%%|t zxU`N|R5QK&x~zWfb*7V&{X8i!Ul**}RP5XbzuNl8z4HYxn`$22-&XvZ#=2lRKvXEZ zNcVFvrdh$XVbp=<9jKRVzm8n+;9Y<$Z`pH*3CycHA))>v?g$y2l(Fb|ISmgM)-CQHckJSV4hEEdkX{C`lRHMiQ! zQWdnU0O_#@+Za-5^~Cj|iYb(XTB?K^+vUw<+3UbIyx&s#E*vt7_G_r*AL+b%1s3En zmUA;U{f#4DYKAt1k9(@02l={*#mC;hn!=I}(m8xdiElD|IF9j2yUhwzR|BZZ8sJh< z5#hNEZy^6g!T}!&2AjEIwq>bOeG&gFYtzzHb!p+$3m$yS&Z5p+q8&mTn#q1>#&oo< ztV;-t8gOhAgpM8H!&u2aUNP|guB=~`Y;pAJVT!Q;qRH~;k^NGQ57Pc{llMe6nzv;1 zDjWXL@SSfcoWh!%6x~GzuZGuAP!Qy{p{lj;RvK`YkATTKXL*r6N0SeS7O=WC^Fx3y;uMtX6dstPkj8g2LC2fo zTPnJ=pc|_^ei(i+7eqCGbnLu>1z4;t3J_$$IVXXP2+jo z{el3dpUJiiLnW{}td^hvm>Pc9cQ+ZRXw;2Mo*$s7^2Z{zGNQF(P}mF-NQs7y(N(+c z8rk9MIN! zkO`@pCWe{}&N4P0OuxRZ-UQR5;nOsXhx8$__93NL)fbutfyAa<#0y?^q_V5iq@Por0ekWsKc>|_*ftFr))!+& zy~WN}S#H_dd!%}}DeoTJjhSgRFZ@sp1V_;aUlC6?-%hBV$`bnz-!-k0;rBN4en5~$ zgRNIkI@s9b%e`d^x*A@*j0IcUJ!o&WMbslWqT%8N*{y&rgOY|^ORrTL2M=b_dq?zk z6N8xoujTSE`jQjgeXx7L{ly-%aIy7}I0lcS5$ArYVy?SF|22{CM{FeQzl}-THrRWm zt}#f!RuXDKG&Bl{jPBSZv@Y+qvYe8M#@XbiH=q|u^cB+adLv9K7{X8p9%Qro0Dx0% zEJbI&HX+wLE4bb@+K=T}+%I~c_hJFhYkErZxVL`jZIXv`#!cx2y~(-gu^NrkC&{8p z?0WB?+7-9)%_=QQ&SRfrsCazNx#{y9(EcD2B=6}+`Q6LAjnuft2a3z!TYz23o`b9u$ma=)=W38hCbx&K zTnSMB&rIz0xxMISJQHS^oc zf2*$as2Y}UZB5>CIQ>YXVDjS+w%qpc=?NzB#kWnW(|+Mqmm%YxG8(1?NOe;n;YGa> zU1@TzSi*x0%%}#a1Ze)hmNZc8lHa8JWXB9V(J0XkMXG8;Z5WyphGeQQ86Iy_M>QYu)L1tCg0NpUnD^WH}Da_V1GUzL-mwkE6Msram9 zg&fuN@-3^OYI-IwRzr4qIIBi4w^hT1hXyux_1F`4`Pi+XI~*8t7bMWl0%8Q355EB2 zk=8Ub zrs9ui^!Nprp{?S!MdV&ZSg1 zBp2=&;c8c2v{STh8zNiQPUEkmou^s4pP)(=iN;G8Sdl?&x*u!=*I`O9A}7r}LpsvZ z7IzR`Uggh)xdJsu5aC!c6^DbnaqJ`aAaW7ixftO@cN}zp^G4#1UwBq-eRsRx<#$ySoY2?%~Gw~pKcl%zWAMZCY`U-7BUrIgtn_Gpva33w5WjI z7A-0W>4Nq2NwjX}nD1Z1R_PDI>dr@7n0%wS$ILom*~TG zt^SL*ESH5iUST>km>y#C#T`^WtP-=kWYD@o(r*p^dc*h3qC6#zWRK+~m3v_CPwOc9 z`4#pG%wKQ0aDo1CZ_fNT=D)Y8r#gF@TO4s5oFWB3U}r&2s`2f7EB0FVckkP|9`7dF z9l)XRz-{vj!EYAt&@E8%v9lvK*>KD4AZ&cLJ_Mc3t6F&TuAB2)n2)#I4S7O;wTwSY+aQ)y;U9S(T=7hF}Oki_{^{K+ME1rC-KJrTvWqEGf^t6lR zP5IwR2Ns8q5nWS>%oqEmEvn3FVmc^H9n45SH<&_fHU={;eVRBm`L;C6IpX_7pNCi9 z((A9Es|0rz+U6h_=jr3G>uZV$oTvCZ<)nI1ylWcNx2l1dcOMTY9~I<*l7OC7(DOX| zy@zm+IgXv~>+m%aP<>W`$G7=^GbLASHV(c4Su`+XklYOGF&Wt$DR&w&Xi6s_*S%}W zpkTvJeZH?s{>4Y8`4ckJaa)XkC(pm1$r`3!@+A3c#p!)h(LeDS@^*HYSwhZyMgAjT zkYRq1G1x-1l<@NI&1AdYiH&t~|1|YSA=*o32z|vP2bQW5k}h{Y7|1q|AqD^WEM805 zQAFfK)w6@8_$Ms|Ob&cF6`z^!AQTLji1d;gU61Q=*Enog@^){sYA}X0z?eAn-DEI! zb>5KIhsBX2;tZlWE(xHiu{)D3Y0Ae@X=&c4Kap;%i(oADOW2BiZql-0b9AKbrP-6y`-jHo zR}z4g@$xY)OIEqhdn2|wr|qltd8y_iZOWu)WzM^}GFlTpmMr=*r?#I)isDBopNeSe z-S6-OSQ~~0Lb4dwtK2}3Q>4b&j(^dZ4Veq#>hm|#JFIL zh^L?LK#d5I@TL^RD-$)d{RB0ac0I>OOA%M^+9 zv`F&H1&#F(SGlE#=nn8Hy0g9cA9MwRDO5=V{5T}ll38+jz^xEo1+O@{gU9N88Up!n zC@i{!+?U`8NwDZ``FkjUwKg4m%qnmY_Cu7T%)=OxHrtk z7C25fKOgb%X%X?%PMh2vp;GfoD8+_bw0W4v7`?Gt)|&2qrPcTO+QqZW&!x5xXchJC zMg`T57F@ZTr`4aIsiNDcShT0h7H%C8g`hxlG;ULB5y*EL9%1=MJ#o3JmS9(Ct-Sx+ zQ3ukgJDxBX$b<-7wZV1_C!psyaQue8kY6^~X=>-G!2M}gFynet*R4_-6HMsS!|FNbDoFE2 z(;7G!3@J-ocs;U09LDve=n_`eEqXD>d=9%gjOcNTWy{>}4j5I`n3joMU}0b}G-_B- z^or(Y&^$BG!!oeDgN++o)sud(Wx8dwi*vwYn(EgmBWR}>Riv!oVp6!j&SsH?Va;lA zrU7~acaQy2JmDaP>4jyKxDup*b~B`ndJ^LVdkNA;HI-IE)R+oHr?AiL;K7l2|4EoL z2IMc$4s~t8VQW^W_EsX-d8S|O8}Ez)+RymXw_i@ZpmL*=>)jf~V|?-ROVURZ1x<_O z!54XW5a~`1dpMeDy+}&V4`=>eUTS?IPZn5BT1eCbE-%M)TxWkFK&!ddO%x&)mq*?Q zBq~if$qx;ggn&hWJ5GfhUeb+FB{?Yj>Jfdr|A4?gu)lZN#Ho_Qt~}vKkTE9Jnbbad zb4)_i_M-Rg-1CisMqG}4xC@?wY~~&^8{vANF4jASUpCu5zx!Ej=;jT1=j2c4HC)Ut zz)pbJX|nxBN5+;j7QI`5ur^ZIaOlJT*jkQ$SH;owV<<&io)moMSzu=5dfj8mp01KP zn@Okax|yZzN{+?K-Iy&fzslDnUDZ~njCf$SGZXmTW=?8tB{F7+!PRn`_`$~m!wS{2 zZ^L+Am3Q^}!p#mIPpCl(JlUrYCOxWGqE&0aFhfux*svfGakwxq-VAEr!s5+PGHyeD zAxNIk#Xqb4x+4(GI^-KaFxBw@>107}1xnA(lIE4VY4Jr5H28oB!6h|5ObHrgAlm|+ zONBuf0~`lY(uJAz+3w9ZTknox+#Y^UeEiwb_v^zNwe+Qe*PQ~|CQZ5}QJAtpVdDA4 z7jBho$v;)UGOxYMb}Cj{DwRoAX{ZMVidm{Je^b4wv{weRv6@F~X(JlcU`kGuB903k#Rm74jJmTdRX3 zd~*(Cj?QpG`;F)(g;-42CXF2Rvg=U~XVD+juf7)O4*N1}6WV<63lhwL8f_%>Ui`DL zUq#<5bz*3}&(ix8Ybgh|rAm=yr88iW?J(d)5E_k+b*RsCjZO@P8aF{y4);{LfaG+x`apzlzr-Q>kNA1k`H!vxauN!AT;Ois*Z)f7iJ!9e5^Crg%j$l)YHWbt8WG^C`Mkq+Hqy@ zoN_@!n@?cG0vE&GB8gYTrn+6R6Sf@3R5!v0`kMu5r~a~>nC0eMD451lxhYF8*}snS z@z1yo*;L|s$Aas+LN&z4BeZS`m+smmSh!R>PDxh1kn6MqkE6wJ zOeqmgDKb}hzl$EO{z>Z^aP{Yct3PlTW8@t`P!=kuO$Ud;=~8F`kZUqo0%4Y9*vmq$v@i%=l&_(d2@6taj11|JBm&2)Z3~?`2`K~!lCv!O*Pn} z(>}Sd@To2?Gv4&ye_jj?w5d5NvUjQvd@PMI!WeMciWKApV zl|bh}kwowCHNfANlK>F^eet(MYyvvE$TB5d{6a<7I}izkIeVicJqwO>Jp6VwC?~2b zC(Jfmr-0L0usgX`r~mTIzYz4;vEkye<9?5n2Dzi=eX=JjO5WL)gP3t2%GnneWe)-Z zrlDQ=TUBIHX-sAYd_F|R!W9R;e}ud$PwgMts>+Lc?eJeNZH1@;l+x0w^Z#19)}SQQ zFxt-Uwwqfz<7G5uGuND1vuKrWYuM&)-cn(Wkrr<|lcp)&&~gPyYD!H_7*H@FaTLwe zpb<4w5+gUftYm6l(v%f1m}_Xnrl#3GAMKy-$2-FhK3>jy-sd^bIgcTF>HEOsOJv?B z?1llIA`rTjdnmMgZINmkz8wb>CM|hZ0R}B2{8?D~T)dnuNj%8Q%2g+h`>a>9Kai*2 z+R~d^M#eUJwf>VWG|l2$6}86haY=D%8WnU~x-3lPs@L+uw5Gk_>;RFFbk6)k#k=H3 zZa;tB6|v5wl+oWwws+d0c9_KuA<+Qc_6|yvkEvD9Y<|;%-vh;kluN%ColcO5Lu*!) z+}osi_i#yR^&{RevHyB`w(I4*ty}K()Z(g0?oHr(ag}nk^}$%flQV*%x$y+u_(UPL zo~I5|SGtFzy%E6aXqKC^TEn z3dKO-5tss;Kh00c7_PBFcs5kOt-k}CY!h zROAHxSQDPM{xR`6oc3zjtkM7Gbn_8g0(vyT|XC`;$4+48%=;Ldc zPDQiW_N}k2DupBZh;VfTKgqC%^RJ3tzeWQS6c8(MLi)i?OYe{LoCg8}`jK=s1Jv__ z0gCD%Sb~!jQU|Of3f{g^@$jkK!x9@qnf;AK9duss0pn>2#3KcKoEz^Vnw(517$SWx zI7ML{_BIh>Y)gVgkGMlJ;_)y$Q5W+d`GRcde3^v{vteAIyDF`=ntwxyXL6S!&^?%Ab4xr{V|N zPLwPs?)hKRya=_$S3SBa+vMUH1`WS)n6(1hC9`F9$Hy(E1}Kl84~ZwrE}P>rW2=r! zw1tNGV5;GzsAxjLq6C5rLp>)0rWT8RZ`RK-Ul(j3s0D0PzMY0qknF{;{?m zX-->5#qedoM!E2Bu7%#T+uY(H;QijYWw1eBysF(UXtOYSswSo*DS>^=go`PGMbYWjwf8IBi9+MsoD z{QA1%RGFfE$A(MOc-6R|AgItH?vLFEb;tfTc)<_DK#g>1C|nA9kd`)|8O!Q@v-4Ve z`s-cnP=+Ei{x`VQ5?4G2y^AysUNyZNZQRgQ)J1YoJn7$wONvRHnfoc(2^L Ye_{>n!9k@-7N5|H6KsIqV?Mt458sUi1ONa4 literal 0 HcmV?d00001 diff --git a/spec/fixtures/assets/assets/yellow-brick-road.jpg b/spec/fixtures/assets/assets/yellow-brick-road.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4f4882a69b1381c893e82586e1ca03006afcb4dd GIT binary patch literal 10200091 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

n{iIx`nCoquPc^617e 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 z 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

;6eELK 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%0ABgxy}TpS#1g5y=|d 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%0Dt`=6&`_-k&M=B;3`a zjFUdFe{saDg3bX&liVCK;Zpr+RX!l08L3rUJ%(wC3|^jw5Pq(XddZuU!k-9pCA%xV z*l4+^wZr~{RkN)|_2?MKcRQy3d6?P)iG1mDL1G8?4p+IWO6Q*}_3Hv(cRcRYCA(Pi zP1YAGZQYLz>?@%MLsqxDBdEFNw#vI7gEX;hlUOy9wL*f|pa~&8Rn#jPRr41ry|j(a z^F%0@sSX*T@pXg)?%i)md>L#HOy{QS+zLaO&=Z8hjvIH{@VI5@)0=|Jmc0r45@1Rm zETZN^r!_|yXFTR=-f}AF#lu@BSwwaZ84587l(kxZSUi@Zt1UfIP7N)jH9$eYN7=3v zYFUVW#~Ru166R-$OV#KqD-M#jh3nCXkDIx(bA-WyNl0H7RSdB1aXd?$2Ak)aK{KW9 zHJn-pd0Nm2;-$i2`{bmlUiByv2Y?_{Mmu6%gI4~AZ=D2EcxtRr;p4b1S?;**kK@*= zH03-FKaK8oOqbTUHy_K>m`vvjihn4IYWk_}kCmv}(8PmG`_yt|kl;P*i zwl;%z#<3gxA%MsTN^7TQGgD+o8*aox@uXME?ptkf9lHK@6e_@S{;qZD$GEC|UOEv( zXW<^!*J%mI8XVScCJl3hKbyWx=B~$))zF}6 z)x0`n%Is17Sc)HMg6c8~Ys4PnKW_d|^NZ5~OK*^?5MrvBAg4H@m^whEex8{4SkNgY ziLShpqewB z@Vh{3Vb}trhXxmROyO6J=YDz;2Xw!5ex*lJMs8yUA_-@hFW{#a$5;R}+>UAp%x7kV zDV!*UH)iH^3IZZ%jUo3yNRs6Zdg!8iUUT}7)fWGSPtpVs4E|;G8U(yq^Y4Mu@4ro4 zO@M1`Cmonq1{BBun=8P3-ADvafX@Gd@C9@(uP%qypa;-g5s^K}-KQ1+BXL~^ znB(@+Vu3-S?SC!5I=}yc5d>HxPlDDjSk}LWGhQGxg60wc<~Lmcp8-g&fFHQ^VrA&o z?e2D&2sE`$`|!7ukY%0yY4zFvJ+4gW!2D{$vn>z;0amgXVsLZa$~lw>z?6~zQ5eB< zPV-qh`7@v`pF;(Jz)LvI8N`|j1Z#^T*XjSj?6_wG&F#R8b&i1^$EvBvy7RMobUE(` zATC=0Mhg5bp)>X2Kc8;g-0$;V4FS|zaO@3WXtSa*2e72qHP6PkF88|JFOk{bF$CKJ0HlRz=ne?t zoFD(aZ4;p4zEt@O|5cU$3lRQSDElw0N-S^&=HIiP0(Jac<5d4DmEBtaHXL&YIVAz& z-mBbyA$8h^a!LK}^*_4iV&pIzSnHL%efUB@>%I#VZ0U$KMzuth}+#0@|_<4bUxeTHHY5#7X zG_(iqL;wAa`F}YMjb7+B|FMAo3y84L{G`_Gr)|LHgXzn=PEL*!qg%zxaC%Yef2zxJP*L{P!RHzr5<@ z;`yIrw?d|QX=;6O$pavn|NWQ$KbCnwm`el$*Yeo^9P&#G?2I}Sr?^)#61{bPJ||@L z!&Eue)#X*pSCvw}hwa>~&w}ji$HGre@2Jz22SB5M(p1m^c@ma5W(Uq2X@2#OR8l`E z-$+7LlCmEn~atR=C`2-iqQgaDko9Myl3_2MQzhaiLLR z30vFXKW!T)16f(*!p$|5%DHnE1AUi{usu%nHm2r{bt_DSY7f%1q7@Bv(x)|V={|3p z@D@VqZ#-5W#igplfwAqBgmvf7AtgMp111qkUGaZHUY*kyET9-xC;P)4#PFMq*VI>) zi=fzp5})Ffiw}(iHfA$u(2wuxnV5#@t)fZsKQM)Vmlix3mjya)Zx^=y#w40}?2|~i z;7SQZpTMCLOH74?mG76>qnq*POni7N?7Aji$?%v{uV@r|Epq%aIK=K%;D+v(fGZnR z6^r{F|AsjN419kFfvXza_amBRN2qa&p$8tu2>G*gO-Yu_)XJ*I)6g?%dJ>ZDp7k3+ z80?RFxC~Z&YK*dH@dCUf#W4+Gh_a-H?VqB+f`dBu24vZv{WqT8tKljbx(6bs_fQCP z0%Qz%M9&L$m=A>Lqn)mj0H+jBZ61~$fmJq*9C}Rb+Cxd+hkq43GLG1v|1-;He@3{j zdpE|66kAf}_zukablo9QYDU9OO`Lf|y@%p_LANENyK#N@+1xoT{a_k;MMvkk%jf$s zP6n2iKv@UdoTAq?)s4wY^=i;9YaclA(Y+X;jhln;_or-mK5-Xp)Z5n=`^FJ~J{YtB ztlCbwXp~eg)ip z@Xg!!JA&M+8_1prX`xy@&XKllm5KVRslgRs)VxqJa65xGUAY^w=pBbUE~NLs&ieVB zjUj|*{Hm#j`C0T)m+MU=gGuaU#6D@#v9eLdL2j6`4i!6m>Cnb5h~g2@J{Ewib{z~7 zY50C-j}Yz6SJKhOh^=y5#z< zLax*6i|xse#|r#}6Lb97(;sVYPBDIcmH}>PK!eK@nxtMzf2D^W3W@i);n@?a1yQ%u7yeu)hSrr(xQ({-a}x}gJm)Y(!Jb;>kNvbi zOfoSqV|JK%Wa7rIEDm9*InSQj@p`Eu;O~>!Yq}4q5a#MI;)_!%bx!t1-iO3A8`ihX zEsA~3dV?bOJ%K(*HU?f0oPdx$|5 zm3da_FY}a4YEXu=8|4_1fGBC%eBhk(Cws?+becC7P#D5aY&vZzw`C?+ z5{EeJ9^NtcfI16z>P_(KKKL}y{$YbSMQEE0x^!dJy=IP=rs$ziw?-gVz(qM=vf!BX zjsHDKJ-2ii^CaX`KWn}&!ur&;`=b#C&OW^dL%=z0OW35{9<+CMEC8Q6O(pI&H*1{K}cY5NqL`;RN!RB7sOz5gj=p>OF@P-T zTw%5iGiy?tIpl=#sZlIO_Bu-WE!D+zns=WlqhBd`l5}!7+)!D*5Xarnv_>B4S1W~$ z$4>AW7`PhO>=)2mkn1PyoOgDvLvs7)K@rkJXSSkmoy5*o#xIq~W8&j41m!u0r2X6X z`C?i(dAC&4W|*FIu3j1uo~;Mn@4TN4k%P%u`NzHPWS)&^fqN<|)+~aizkJJ(*`&i3 zC23dvrw|-THjf^<2yc*TYa2$IF15(^B&FaW`=0|}mA-9+(>vcwt+f$#Nhp(T61T@M zHySk~MGsbCBx8|?ey{86iwD<~`FK>f2?+Y}w@F0DpQH*^&4ioBuw|pn!j1B}xagDS zY4~MH-Vb#L=#xSlSu$I{-XjlL?v_M6+O!6XTY+(S`hInTM+M>?L9<4*#>4l=nstR) z_q6N0sqeOzod!7SGaT$H{I{jPgCIFv&3L3259yP+3k#N&f;*Illa@@|^R8)gb6I0$ zB)UVR#=FlTYzX}RRIXDqJOO&&tUF1k2w=9@yqH7S6KZP}W?VgSXVgAu%!8I|{4}8G z@11jxeLCs-kY7V1>fo_pHcdUXq;h~%Tpa!04uQwYCiF76q@s6$uHQnZ9-es4en(^g z0kh#;r0dzx9j#!lrbYSk_|e~|^wgBVfy9yqU3_+-!f~(*gZyMsG2n4%S3u6+P?yje zWamR7<* zOz5CQrQYLI_h7Y1R1n20F$NMb23T~R*8wmQLmEe?ZdL+OSLKabmrD(abi4R}zT#{5 z!{EXpt7(wJGJJ>%fDtwM>`rY+%yHFbcp!#zq!fgxgAF629inL^O(R_U4&K1K-#TIl z^S$=m%)4xPGE$6EQ6=nJP?T z5+<0|6{>Pt0#47rPRfn(?S@=^!kj)?JI$ju&(qLz6pEUTM&9k8u>V~9Q%enf`R(@c zAc4h?F!Qy*JYsyctN!}L4L zIo)H=@1IiU^diZD;cFDP82*@?{KRpuD)3agHv@FLYzqM}~8v!lLx)MwFE@*TrTvj%6VEalnNGNN}H&d50Tvj=A zo7p8>I`VDfV$tav)kzM6icY^wGTg^yapRc8~NkY2lr0+W6;)m~Poy?XIg& z@)OIYgF1Opu!2hO>6LBd=ofBQLnl^WcazN_rlj?_+y&-;aae%I7HKXjkcA)t7nO#$(9fzw1WG z^A0k7b$s)VC*x4bQdv8gHV&~SgI5d!|Go`>(pv>CbB5|$=C^pw;fdAp3)VDA{&p6z z_zTcX)ju%WB@SK)9n5e@nry#C*gz$rT*J2T~Tx%iG2L>s(+ZbRGlN*m~%!g4RSpsL#jJLbPm&sVQe@ zZt{`w3=ovBVcfZMuiPo%UtR*i&=~&JRJkR@Sk8Q2_wLqEG)yKVw$3(%dS7{=x`9oqPWn1>5W$E0I5k!fPtbM-_^J4?&^{2uQm- z9+4NM1Dqltm)J(oepA?0DwL<}I)iE37_opoE8cvDr1_N^nWU(+i$P-i9@7w3&qt@O zR@I?cGoA$en-%9Lp{`r!OV;zt<5p&gve}v2Ama=O`QtVDVtcX^B^Dy}wj7D|h~$){ zPCtk8MwLcB{?r0Hzy-}vz_?8H*L^62LX6Xj`123wZpZs2(atY^d{2a=ZEph~O`P$g z^X0`%T#O%Bqzhn8vJ%>etdu(eD)o%Hv>|5<^>4XeZ{l-76^t~MF(Ld^{toH`Xw0aP zF$4(299{`X_Z^W6J{DLTb^x9x!673k#o)?Pk zv|b@_?M2Y=0My(lc|?&b;NyVkj{9P=E6;P#cbgsWq+gCuX58-+0GP); z|AZ-(0`pvq2d}65eid4LW)WVHpmEn5KMBne}+_1m1-ZK8nmd z8*;Y;Nf&fOQiK@1c@|6gF!iE;&GWNA);)vI9{sCsZ>RczDMByw(NC@Hxw(}>;ONt- z8}Q~c(4Dvm%&vzL0fh?E^hfq5_HARJFw&Iswi`J&4_7%Vcc16?d*Ao-@lPVT z@7(LUuJ1YLdk!-ZP1Ymb&|Fdi0xBTx10BFU}6^%xp`uPRU0Z%9p3RPM8KO6QIU<5xxENvf+ zRgO&}udYF3|9dFsr%<&Z8hrX;3YSe~3Ox z8$&YX!a$dJ_*mBk^wRfVo)qB>0#Grau5*dO`TW&~0_cq&27#Lc&cqOKF(+vbzW-~U z`hq{rSq2cm+F~zJdsw_|?&BWKeI|hT1i-^U052;<#cVMP7;jB(ZQ}u7=g3RavmGIZ zVV~=~@*HMRc2JogikTP8%zJehV*`R5Tp*S3+B26B4I!?!ZXY zx^V(5PD{~y9s250pzyg(O7}|6}}SDg*v>tf@}bBUOgDuU&t~=VCS}br>QdR z=<};;p!c#cW^m2VI0KmfNE;40+8v2DQE(6kz0EYbtV8+ zk?(W8qQUE*;CU|tSB5UWonN)Fl2UBimbrj_E-!)euwbkrvw&HPaCqV5Hgkz-yD5D2 zpzc^!C1A|R2?#Sg2S)5s84G6Plaosn4X`o1PcEeO-?Lexz16q;w^-nBxAMha0ufBO z+H{mqocr`PU|U?xu(fq=+cg2oK54^Yq0ZGbetzIdniE8YP&SxZwhXWXK88-8gS+AZ zjBnxZO`UFwM9S!&_EcvBf@Fa$nC9WN?Bm;NikGJqlQ;}!BH10ioeieJDl+}d%}BN0 zjtN{jK*YEL-fQ`rkhYT+k?kYwR;f5Phz7VFpx1t;wzx6CqPwzCL&iM@xb-W9;$VN> zcE`Ga=ghR0Q-p~tKOI6M2?ku_)B+{?WMuc@7XkdB(`{unKop&~0fkkL9U^eGumV$| zAK1TsZU3g%vRz3+V8?NwrE{Or1m@%mG!w8R{Xd9R0W>r6zil@|g4#X65@VChr4j(d zIT~ap4fx6RJ%{~=z-|fdU{5anP#e5pB=UM33;Dc178BufOmTJDGd#908}Qc_IYGfS*(F=SK1p}pKy07;(JAnJA;qr(9N2|~$o6Nv zU_fZl%DE?CMhBQPo+30jnTl*DB~CBhV}d|is6b$F*I%~1Y#DtGQ(F^{u};6Lon+V~ zAC=YWk=;**r{S1Hkt=ur#809*ThPw^PEeOhyDCgBwEcJ^or*C&t8CKoTgL0$MK{fo zw`mnZ=N^3$&~VM3{xQ73m8mqzPfy_a@5h_i4c#J|hp+%3x&yGHv7^Cv(|Ix)coV5g z8ICKBXS#lQqG{*z${NCzf#a zQ%=gxEcs=E|HXAnN>^t^D>0)26m@i!XNJKW;DNNg6X@|y0IDbSb!#FS;Y|-K?HHOE z*9gQN(v@@-j^v=A#O-9%^p%M$Ta1DaXlUcw42lPa?MBSxOLvO4m#Oe80sQGz8#Q#n zx$SA>^O`TN`jOc;DOfaFA4k(!_T8t|AUoOf7@9Cmhh7dSUiej`c!Le9Ze)?d76Tjb zE7xO65tgbOb^gH8ZM;;qK~Ta#p~3PvRv>lR{l|AkhkJ<_I5)jeFdd=-t?tR5Aai!Ox($rKX4iU!2 zu}5s!Pf&qiy{u-}6h_+@oXfjpQEKVu7Alq7YPQcI`gAA;yYR3$<|2lgt`&04e2M{+$@MRQN+*=h$wpbjjzt+o+rlF`|xiUmBC9V3CNs<*2tTn3f$*5wZY zNfFhNJYfDWIi1>J0}o+xl2u$&JvuT>4hX+&V2i+4Lf`j40)gL~N0gSnI#2u5;>cPEUNcCA+4*$=Z#> z)ZKSE79dwJQo^32#hgZ>l=xrG{~XFVFiOwfM;*b~$VH?ye~ug<@n^ekb??5V=riJ5 z7Oi(eicS{@$qPPF4;grdMqBB_-uio@dgPzVQ}ocru-@0u$`whu$9>V$gpP738q+_7 z(^L@$J2hlC8=?2S&n<1lFd-~`J6NwBIe9mgECc{mQb`II1ckl8%$+~%4 z`SxMPhnBM>W`eQgh*Ur|ggN)T0XsNFKj&+?Ii=L;=gO$scV+Ysfy~yhy{uxtX0tsz z24xzHY@Q{mSZ|G$7bPhsl71G@LG`2I{K$^7|IULs8gloVR~4S=dqbs#-?g#}$0bfn zV&RXONemwOGRG5M1hdOT%S}aZ-jxMmS9r~$&=Qi)A+*S|BQ{BB8-_#n-q^5GfZ{&{ z6clFmZK0c(h_y`DE^6|}l}77I=sczkH1;afI#j}f_lwvpHceoC)j zKY5oS+rEGbN440C{d%uQndI>JTp&5f5D^lYujRlSGxW{?2v^%*elJ9Zx5$C>1;Pu* zv?}ehxL9^0=Wbc+Cg!P2h{PHUnj1d!?;U62W|`|5$64twFOQl?3|Ok&enZR}2cy-= z^l1qtF42Ygt3Hfkd6#;tx>#$2!|x1MF;CClNOAZ(J(USOUG(~R(32g=14y+ zg3+q}oUuhzw}A3J(n$eMQ~SaH*1{f+fQr}F#Z=^3*_%ce8c{1HtGF>{l$Mg_Ur=&aD_e6NMcG47U|(aYW125oSlI5y+01(eIK7 zop)(X?|>A4#4A>em#fZxZEqA{j#RpeK4XO2U~dmu*BDw{2VI8x!qQ;qr_g!ZbAee~ zmk;Td6rP^ybZ0gvWo}q%USUCHeF5$=LMzz{(gOLt-?Jw>r#%}PmN%oBo=_>?VMi2v z22F3dKvq!rTo8~W#h*oyez#8HbBw$?yws8v8zhO@FN=hL7J3FeC2yxjur#pW6o|0A zsUMFhwBvy48FR*1CG6Qsj17??h8SgpFTZCbWH4N*UIE$k-MMf4nJ=<@=ZUZvXNO04 zU^sX@b{cdz^E>ly1}Zq-_lA{(TGg;rLeIVIblT*fzaR#Fp5X1Bp1iAkl=A&p+pCoY zU?G+a{I!_>Xd~$b#DIIYz|;xQ9j7-8h34+M_S!guF2UdS+fEyT40R$XEvuk6(5`92MK>9WQ zF`})<|Fkdzs3gF|s{6Q~KtL?*RohcWNLpOOGNjR98xV4W0nz2;2KrhiXrE^CvJHa4 zc~<`Yh96`W5MZu)!a4pS5Jxl8{#&E|Uqc%G9w3sGwofML3cPWS!s{RAfPl4nnqjBn zF^Cy^8iN9A5$F=IF!r9#1~M4~@c2qKA45ntu((bGHkb)i-aRrx&_ZSqY$;}o2@Wz# z3q!2{i449_3^Oo;te>LuKye_@WS_L+SzN8Z^HQcyr+ zeO*i%;H#C*?N^GJMmSK51GOJ8(U*YStB_g_sq`XNCLV9gEwJimVTNr|EXfB{i?-u- zm+`Kl5t>T!l`{~{70&0gIMt$?3VjUsss;d@t6y;)a?k-JsW4s3{-~}raiwLmPzV59 z0{Rb2Km;&?R&P2| zUKB~*-jWHpOg7%5xba+Q2@myxx@_)RN55E1Sct(~B0N^7zW+{`609}((b)3!j?K;> zzbXU!N2h}w4htFPyH?fdgAE_k4fc4uD<^+k{>%%GjOL$yK^~MjB&tNz{_=qpD}B@T zXVahBA1F4z9p@-=>X)jIxOE-tqcY_k1D1*x^>49F zpT+uGFBl~|64UE3WaCWZM-^?-z_Xa%%WT;fxi+}zsQwYgqf|o&AHBwewvt)3@{ioo z6#{I1Pn$|QJjuT?qMHc!SoWpsadq06Jj%~|&Gh2DUL|)msps%%=V^@KlKB%=;zXyl z^?9sE2HT{y0Mo}+CgZJz5lseIPbK<%QRnA9!)ec4f%TjxS??XZH`QV9qt2ynW$6Yx zfz2v*ge-q{G|-HY5795E9c%D*^xBRFPA-__#14qmwzlYqMW1OYTXy(F$q)il84R7Hmwr-yLq$ z?Cfta$vu|KI-1OAUN_bC@dMI-Y4K~+RMP{%V^pam|%)ub0HHAOQuH58PV6&3t; z(naD;_b2qa(H_pcxY6)1u}plRz?z}5>1V$7rR}l=gO_QvyGdSZxhhAzNv21R=FG^T zy2-OtDw2NfGMy%LY$MwUx0EPaVmk6RbsDp8K|DPlL;_gw$6(t>4gp{~$<`NTEV(cY*TBkPwR1K=CrRQcu}}ujclexehgGJgKCLYRar>UzvMCsUruMr*3JGoaS2-#uc zON-=Xvbf*<0+h*@u`6b3_#d1v((|0PYlTxS<42$W$v<<5lh`h&%!$>mAyT(@bQj7u zc~bhtI8xG-g4*WknTxZxrsHC>e}jXzWJc6knm422H9h#T;ZTaPcXhYhCq3>OJjYxu zl};c}aa$x@@6fSLP(1@nHWU6(R+*j zP~q&b;VhFJmHM-vW}-_K(BfBaY}F~JDe@H=>w@`5->kxlO_I8%Pc>^xy_xj3o6eco zzG%1cdd=C0+*1KUt{UUIr|;2g=ho_U4_vx`Co^2rqTHo$Xqve7A^Ile$$qoz36Hl8 zgMdN(LVMnFzFhF!{Pj6&^c|BzvyqNwmbUnTNvVgmge7ZE4IfN?NRJKB&83YugTlt4 zbj}N2-bgQvI}1K&ub-$(ji9!T)@Kh560|?22yYiQIn9UG)#@0(>L${kk)$KOCALJu zKH=}cQecbIYtJ>{+; z+j*F(Q`fnoEr>{-b%~l^BB$Le_WT`j=Q^+M*Ouw36ywZMURNE_Hn3tg)=Yr!N&$Y%~ zYlSRgWXuX0l@q_Nmg@AznO3 z@BMs2T~R8wu~sx!J(Av-xHQTmcJV3kp-Q`OhvnSD#qhlSI-mDg+>V*YHbzQoa z{*yY5M#_Xr`OGCrJ_5nVK&LRz9SfVnTM~sSaJz6qH~15sY5N7ejE$y!ov`F_?ICMl z-TAA@ece5w%6%gebiY44HFdJIsSfrEB!dJFo7^%2R5&ykA4K*8kUSlX#JQTCuV!UCBy zVCgWweyeYlHZdO6&% zZCbLSy2RG%OZfM0+vNtve+W!|6wgK*kQmR3gH2JVXLLV7F6LFVM(m>`7+5SWl}G(1 zb!qbEPpGAfx2(L-sQ}u0hgL0gMmh|@hu+%F*6fUT_3Dkx_2)`7-(h+FmXkBijP$|o z-EWN4r6d}Bw1zo(KK>BiiOMfGQzpR0DQUXu3p7v-^wb}Tgnor8DbEB8F^#g_QOQP? znSegu4h5q|L9AFa(%Ry!?U_kqqEl>xuEyrX)y(LwAL(6v6MIiT*-rU-cGEqP8b|rY zi<@)u6xD{{KLQ!>ljCijR+^u~mp^G|I46j7#oz^Y`8vIVF{yz%N2$)=H$?0`5N{=e z+QQ~%%+s=*MYuAD&o08fy!>z^-8{M{vuG@(*+-ezRQ3#Si>1FRH{ExUsZ{@%_#`Dk zl_;p|$bUmmX)On0`qevlZ?Cspi5Knv2H7oH5nq7vqFigdd^@`%nstw@Z)$)}j69f+ z7X4tnx@(}xE(;-WnRm)8u`FTyMWMBXs;z2RtlhDE;j>otC@NOfG1l$GAvn&-;a>k{ zT~;EUXZ-`3(O;M=4f;E7VMfV)BpXp(mAdG*w$a9iYas?L9S@U4?NuD{Zbql4W^bk) zi(s{9eeWq{5@xT@OtM!|V)Kc!RMark}9z%F0-P)I;V2rAii^{9{5n+rpc)%DjET z*;PW_C4qvW?is2;VMc>^4{v3rMPgt19M1T%0}|(z^HX}NJj-CHMpsN)Q82@?#G{vP z;@j!Q9r-{KxKLG+|2c+}Pg zy9o2xiuO4(lj_PDdNT-WF_Lm6XENloVZ?`~d_kXE+8^MS8(lghIXYeJs2AlV^0K83 z9Cb%Gkx!NAc0pKJz)aTb&sxq-CyPh857 zD}Q=mvje3fDOC3^+_A9f*=)#A%aNU~*eCsy&f&EKb*cN2BILrT)TV&jWRwV!!72#_ zl!4il9=Uqey&sI~T}hNgx@u{A`z-q*g~wA?8Hebt{VeBzRT8H~S5<^Gs9)N=k>9P8soe*C0}z_L6xUWPV<0ZJ7~2 z=4~U@glKX7c*$;xEW1aaBm^iyPY_h-Vupd*uFdJJn;~1epWbbmZeNB6@3p1gy1(sC zoimFq2}_4Ne?v{mZ?%6Ub2<>N+00~qHRBNbxlGL3PEh3iQZ{VF5hKlsFrMxUvaK`a z>yCIH#o*tI=G5Ml>;38^JSo;`Y7m85bg(I{O8m%9u5g1~lVP`LFlYKoOA1`ANV>w< zIkz-+(zowUu0dR5AnzdM`bt#B+Cc8YXE(O~ethMWa#rxm)Tb@A6={p`xBd?8IGbY} zq@9QvEh8HJA#BE}FNr2OhalWo`|!2aDqZ=Uy2FQ}>7laF{Fk-G7f7A;5r;QyI{r`d z9EOsr<_hZ!ek^a-I2t)`JU4Oe-akvU$jSQXrz}JoMIv%PseHFG)Z#{k)C+fOe=rxo ziT6T(UYrkGy1310|birDnXeAdo1=kUO$Fyzg@6_D;2>6zt^9 zTJu}F!zI}m-eE1h8gI(H*ikuh;S;pex6GB(}gRzf02y_j9k>2T4F9}3$<^d-%c zY{FPInwy?i`1ceKsK*OJTOZvvw=i*)Iw47O^d{k|KcZ2CyS>L`YuFDUPoLHrG+SAYr9BEZvkod*uMJkMy4iZ&1G>=a{NKcJPb>*X{jP6(XoD0@JuwU0 zQQHaWyLm5(8>#D+UJT!0$edhHEpXjJTyQ4vPce%*-1X$piWyRf&l^ z?V_3L=jSVrf zqIeVj$ROriklDX@6VSG@?V);bb$EFJu#KRxzrEKpej*pB<7;W~UqH&~ui)T+Nz=cr z(f>9kzX9Ec=;MD<{|&lLOuvpE1DdV>1GfH6SADB}HH5gjG?Dm+fCO>~J~;&Zs;=|$ zf5HA$Km6@_Hdw%eupTY{?MQ$O_-Er4a`gglCt$+$Z=0AMy?|x<$AP4|v ztNta>eT+b_`T&Q?_a8?1Um|p0HlQ2;zVp9_V+_3fYjouwQ47lr1eEgu0?b#F|DKc? z4af%p{0jpNYU}(8Ko4_4ny@dIqrKOcWB<*5o)th#G-RyI+~*2X;R-aW9JBy&asb!N z90w7Y?1Pg6LWDFG4cl`V+2j-VuvK<7MSdYx)Hmz?0qe*?LBt#p?Qk9xE$cNR=^~Go?*Y*9#lL;(r@m*-{cKSA;iMb#c=s+$6L5%9}qS(LsLFe;@&2a{Hvvag=%vS#BBKG5eE&A=hn;XiDS37sHTUP~G>?gi&+WXl zb%j!G6Z^ztuDQ4ovW!-tX!8g6QXv%BD{$W=h_Q`04eQ5Z(?qGSTS|X#kM97&>=dP> z=p=>*YO2+RB6~iYDwdSjPQnehZuhGWN%>35c*X{IDnaFXdv9gabqNW&OGo*Ha!U7+ zF$pmY^ob)j5lRU`kAyIVFc&hQ>*wMedD)U>i8f!G&bpg!6&P<=_r54V;n5Ai2+kk9 z)wlBWY2q=XdWMr<#YjNf^C=!ZbG7vNXMa>Wx9>z$WV=o?dkBVp;rNzYe3~v1UZ@#? zYyV^_<|=~1J1M$A@btj78U@6JZ@Z>jp9b9H%d>g}NE0HY`+Ce4TpmdUfzse-ce|#% zW~h;^b=syS-9$zXdT)|T<#ISR*gib~z|rk^)qBj5_x3CV2VG9PXm&0OVw%m9r*Sc+ z9j~yCibpf|usCAi5;8sTV{0@n%RD_?c_A>k_zgRd6{N+AvPe(3xu8sbHlqSA4s+m9 zsiBrU^0@uVnz&s%OO)Y{iSglZ0oQ9M!N^F?j5p$#PJM6I)1KLFY(1|dJ^7jtn8W)~ z&R2NyE_1^?&<(tDb*`Msz;SstQ0&Vz`~b6lpLvH#ApQPDB32c04nWTCe1(+T4Y;nX zC-~2}<-K0~Q)SOrx+R9_%bwY2`0Yl^xJPb>qLk+D_`a4^0Cw5dI zYD+tm>fRx(s%KCp{pT#t{IaRAFZrQSL(0Nen;Y5^iKS3aV-S@9?KYN!K?`{+l+agi zq>6hs$b5u_P60>(>}O8D3jc^qkCKU)c{A_X=Si7C%Cva92Dyk@$lt!~bT7Tz=IWLm z-TO7^>mjTu{f%X0y6Tqg?tZDv>MS+6Ph#ZsEkIYyi&K%eZ0bfOYTdjxVJW`L8G;FN~oo*vhYLmcg| zdP#oe*YZdA=(&^BH1> z@da;}Z*{06nIG-Z2os^|_xY}v5D`u4TleXT?f7$qkpltbw1IEr$UB8?6tlTzBsvb5 z#kbBwpt4@v7in#dvMbA?Fjr&=rz-Kw8XweTq>tV99bjx52g?#7 zP*pqc*vwd2`F{pUlWj{f1>tk#-BMYU*YD)_*1T@ z`?G;PU)B6UHqI%WpGXmJb+xj7<`&Y%_A>KJ@zWadi*JTK)_ta)#BEmpW?MC+Ju-xP z=&SO$RiMYW;^+adWss;M5^~1vKB7~A)Ot8%tMB%?%R86Op`4h&F?7~|UOuSRg4`iR z@^r7Jn!&UrOS{zIcGOjNRmk`958Q(7QGJ#g63c3Vecyz~7P~9l_bxWi>DGkm54gzc zhThJ|47qeDD9CSI_>j?@UAKHQJUw&PZL6o zwMi|lTch(vYi6nIM9X!aN*04+Gewhq$gA77!cQ$0>Rak#%_VLb9LNOn&(rljkDqKB zaer%2`Tn%@JJQ2yi;&fboRff^Dxw5zuTHN2C_H4SD37Vn3Q06&;xY)9dpWsgfL#7HW;;V!nWU>)9f%>rU^5S}~noQ0)p_wT!T?6UgWcR#dDdxF~SWxR(y+^@lfI03C>kqH})XUQ_*~d{Y;Z< z;L@=bokn}`M)LZDAA)L@MGvWXT|y<}Efx0-?%&cme2= z6%cLdXi`xc%iZoNXAU8NB}1XJp8#09vF{0J|ElFwIR*2;fp)~7cr}sMJ1t$UrTMW; zoUWOWrNPc{8mnYpT%^J*_EfQNH|Z@vrZPL(fXHE6>+Ntr{s>3S%vh()JbRc_rSOP4 zL6{u7t6hYE1_lI~g0I>sIzF)yvL?H;)K0uxdzZYLn?5uFgnYWkWhm|=zS#ChBm)Yh z@$E!1ii88sYrsBp6}>EU-v*!w`7>{;{H9?PA*#R=J7e=q(B+KFjaKL`^9B~1J7@>V& zT>*t$vzL=TeWJ(mjXS1YB0XQ+Jg?I=(o#sUn%63LPj$kz51av>5lZDeJ^=g)xd1tr zjANsnrS`>GUx2?R{OtJJYy;T*z)q_JRJ16c7+%3<*){5AE!KW((nEYsa<)qRSqyod zl8OR{5N~Fn_6b76uW-%7#GmV3mEm^f7hv9_!6&Q?69S}UTopSY#zo}GXEu(k>OHhn zS(|QY{7qK$DFO3a^#F#z@Avqvk_s&wdaFdD7n?VHdp*qH&V)r zz%@@2-uXq@lRY+5iMgMC7>x3rE`Lx5^|o=+cuMVZ$IH?&Hqkv^>{W~IY6YxeCpUMH zgu*hm^W!}>9Zfc3glJC%-`bwXZ@lJKu1Gryt-|4{L3I>365veqa5??t%-C9?P~5eW z;q8LkL&{*m-T%4Qfvlg(m`iU z+R+q}Y!IrX?pYebzcdTS01H$%}$?^XKT&NehxfrxG`2z z{>Dk-{aEsE3Bz96;%XUFBk9LeVmXR_s_L`bXZ$Z)5^?W&hID%=^PJv>>PW0SAT2TN zl+@9AHyn*)rNNlj23w2&3WnC}j<~fHa8Z4K9n|&-Y7jzF_tt+mV;7z%_j6FXF1tG@Q>e z^S@o1X^(zUTkiCQ1+lL)dpSiKB)`L}yLVd7|BFRH(}c5L_e^1L@8tmpgqEB;w&0cf zZ+K~k3w!Y!95t%UtQ&k3!^PiQN|jcydGjaZZ!n_3z(3jEls(WxDDvSy1mK=$`#19^ z>QbhXPs^zJ;+A*{vjRr?SS%7YY=i$~x^?t3sPNj5g`WZ5l)3Dww9lTZ(LYgAG_hen z#KU^vg+~HA3#i6dOO}P4@(o-1RYGND$u|i=tjr&=w0OjYQ)8EH|0&a{vhSVDbVEG> zWl$*jUd^G%e zT)=j=rwxeZ%E);yJ2zKF$-}JJiw7c;0kd4u3ka(~vZr=o{ocY!yj+qM^7$HXa%Z_4 zLqU1MxlBf>ls)c2%Y(#F<>%>1h2}kxQ3Gnu89gE)!x|LgJQJKbnV6Q6G;p`?JIWjYQ;`&2fa^5uPQz!h+B<}GrfGw zMj@*?bW?IcuViAuje@Qu>%Q2ej;t8=j_R%I`#Q#qubuQmD%kA!_OjV~%uDzQRT(qX zn!}N#bY$YskTrIXD|*QE1Q}ls-r`idY7kjtp_Gq^9@~`)y0*j3?5u`A*#YHObgkQ^ zlh&p^Oo65gu_x$;JemZhb_q4=8H(=A80~tVJSv&CFwB?4O5HE9#xd3kgUgEIesU1w zLf4d&Gm@1f1Mo#YQI33iyyRA7PJo>4j4=>Ulfvb>TBJISxl;gw$D9A# z0VfZSbg{lPUplgKH_24okaL*hQBwJul^d~Z`kE_4-K*LoU3m$-L`BZ;?-CYnF~8cI`w;!Mb4|pG~lf-pl>Yi-XSC*OE#x@`4O=a(M>iC zW;Q$8#vQN1HnnAO)UO6wX~}|Ka{}%ejli74pb8)a(-4pu-5;}sa=;q|S%IuP`m3&n z72BeFjGNLH*)VPPnGY@@fN+KMzxUEyKp4Nv zKs+3zX@)@d{bxm?3glV&Vj#)z!mBoiiA4z96z6*-gbg%G0I(-a3brLL}rH&=iCH_Og z$f4N^0KUr>mrD8VWS-XjD0QhHQnkJl(d8*vRcrAsMleXb&a2C}ouh1of$sId_Z}{8 zYN0))^yImWR9Q9sy0rbRx7Y-SB515kX#I7YCgPB(Y#J>&G?(fbx?KA9r(x|&irG5c zM`nBR&>t-39E4y53RNO`ki}<>c{BO`OCGN0d&6U08o2#tYN<&{WhY6k&cc^Q)sOWC z;pVRd9^`cVSu*{B}C*T=9HSUTEc3pBr}@8ViJ6$O3L;k|pszdC*TnB8==yubz1ply69q zXLWBc)+i-r+2$63V|nMJ{kxL4I7pmN&U5H(zq{*I+?lr7EvVwTD;lI+;h?q=z)`{W zYrlslYOdSrkyZNjz&oOCt6&;^H1Xm6&yCUj@1axa&)Q?D?8NM!JN}y0ydrng!~p8E zxu-R0N}A~r=^0VhF|uaVp1wr9>e*7fkK_-Bqthoq-Ql}+%D4Togzj4Vcbe>jt~HqD zrO7{JD-#7>`xuls&$}dlw0^un)3mYnPUqv>KKQu3fH2NSBXGP+#zc_vt`Tt%=d~;D zCA2Ytc`)D~0yjLkVg;J}wa>!p*ZWQ+O5!u+A6fIEv)eEp<%O$EOR3~H;j&BaFm~6` ztTJc17ti$Hy$WJ!l&vm2GTcY%-7lB-o^_lC$6|+67tkADJX`5TzO7C!2^MJI;=#PF za#qu5Fi6>IbTcq6pk`gD=M@)OdsrLyu?jjhW2ok)@Bh5NsT^6W&$c06#V_b7Qk2fD zL$`F$J_fT^>l3(M53_Oo&}fqxZAzaqCHKM=iH&$&V*Q%FWai^+Z0gI~IjE1M+&=bc zp`vcPttOcZPbzDCq2Dt}FkfC1sryK;{CrSpIq&H_^roi9lKp|aw9rf&gVnDddFCI5 z(=|Wv7eh?X(jOX4xBB*smkBF7{&roQE;Sk_(5X%s47U*Z^f^Ib*~}+SJ!7}45**TX zM8#8QLg{Oq@3^99SYK@Si2!^p5^H5x|MkWi(JFNzk7)DU^p4kMYOkWvNal5l>_T5Z zNV$%$a_`B7JNewn!qDJpAKzz#+Ud+1%_V>R!3KBJMb?DzVOuRsYx>|hhQu^u9+UNT z9y!cP;Z`#1N?FO}dq7fb{&X+287QWEibs!MdT>8^&nc z>uV=m+MLQ>Cl2q4pYD=NGwig6+=B+H>KjY%CoX^O~ zpF;(PE(^RL8V6F&W5W4TYjWz{Pf(t+&eWkq5887XHQnt(k&le-(%m4zIvnMn4cr~F zTFrbm2sSxnnm1~HVYAU`G>63eS`4lUI&_`9Z1ig%UUuE{e$W_CvG?#(6?HFfg>^gK zp=IxbVpMAlCM!3srJ5y6=g=m_k7_3K*o>Qm)&9bTzf^aR^3VAASxPJBVI`e`+Lr;y!CcL@Qqs|4Y*eQsoaAAaPlxB_2yDLS2 z1j4{j-}Go#h<|bqs*(HK&~#eNyS1Gj|EX*6+J=QN>ork4#jWHf;>;xg2g^!8pV!2lzT-6$Lo3Dyg6KaHC-}m@rgc6tHSZ9b(18X&pVZ_;hW>SZY0kQ2$v<(rhxvg zYoz>B{Md?;U^Ll&my7G58jb6XxWSEG$@13S3`aZ9yQf*F^;+Z^_R7x~yGu-^nj9F* z!o2`lim{VXGmF$S<7#vLd4jTEGmHuB?jdVm7Fq}O#a{6=|^~yiwX8i+?Kfg;8hf{2xw(>pTGIMR&PeDtPRM+k; z0G{sU>p4S@P%lmcL#mxBM)RM+tV=$;_wWxXPThb;^EhRO@|e4;JLPKsN%*1dv-t~} z-F@hj`JCP)y(CmGq)QE*|9$QB1#ipGqvSzl5u1@XL5eaVN$4X_FAlw7tAi#5)JNBGp5aS53-!0WDWp<~u zg6S#o!l|MGM_85wOA(&gFhBp1=RA*hk3&CUwujBKTZ{c9CWg{yk65y2qwr-Xl~IaO zXg=cOgkr6I{KGGkV!=0j7pb_A99WBE+n(u5sxhasT_ezoJ>!L8W7sCsKLn8%F7H&G zTUDytKR>^e&1!W{P5mmbS<1-NsO3g5IY7bu@!f8OP&A|W4rC(tKzjKFV;bP$5VW$p z_=cIFEY;@Mq-u@{r{zYA$4p-J$EcA)1vQ1= zSoR8nBl7$l@ASIdekRJAwx^@qK$jPvqVxo{hS|3}7Ak=JU>4NP{#NBsW_HtaS<}ZQ z!pSqL`B`_lTq-oRd?|jK#2HkK$oQPwER!Kzi}8EU_F` zHju6R?A0LU;7#7>Y_GI!5^b-qG5YjzqCe2R)I8;A2_rfC%W6k$qeC6%X)Vd;rz3q0 z-B8-uN7L%pEq*X2M&rJTGM$Fo>WR-^--}?8C)B?E(%?wyx;<0f;bHh)JG*R(l~>ii z+)^Syx9|&=-@Y0zHD7H?Jb5|%*$O#T+FlLQc|x|V=V92JA(dEqk3}?YIDl&x?Cz|jgnbRQ;;pwqID`m;R+lPcSdNRat17J-cq|aOg__ikK(nHa@l0# zn}em%R$W(z76m;q^*ez@4XeWZ5@`lvpJ{4B=2VPsg?%Tk`0(5}Q%YIMudAfUci+pf zZ3y#dzG>$-PwHsd^s2m7TZ+z|YW@i1{=N3M-wC@m*h;-ygZi{aNjI1zhv@(cHgU_wBa51?9)H)W~!Pjg3G)vi!a)mxnsGX_t4phN3(aXjlKV2 z3Pelps!l*mxPKG`(4^+!AR0eRxl962VQCqFJb%Fqiioi~OjB2D_Rzq5OJL*)wS%$O z-3{Jn>XFY1ZRN388%R*?{Mf3%_IUst280vV04$WjvhA4w z=+ZNHSw<$%{n{0MEiEy_u{Am=EA1Kg-;eswEZ}cwkZnB_s5_qrIL*8`U&#l!Ai%fp z9JPNX{WqgMyv!ruTI6VKhz%`j|@Nd=IzEFtPz-@Z8K#?Q?>%D;j!YuesM;huxVHQpr#8 zTa(hI{XU%5lg)WEVCcptyqt%fU)T*R!SgQ5trqD%tMz&fUtRDy%ZBwjDd#jt7(el|+^<}-eSbm1m)O)w{ zuiU7Ryogw74RtGv6XNv%kFi3)Ndu-yJ4@K6v;*2W=8z)AY;s*H;*Fdd6`pN`u$0DX znYfW|yZ^i`g2lii9!77nF*huWBERP3#g>v*E`G^#T&iC+9XF-Sn&)Yr87-iqG*CcB zm(;zvx%kkXL=?qxU1J>{#B&*E;yhhL>8MvVSX?JMpTyB5abuD1O9u^(DdsRgmQZ;x zaziDDg8`|n|YQ^Vcy6u(c&3RKQ?VNL*pJe(u}cxtz*Y3zKrvAUn`Fo ze%n|f3UPm@s+@47jwwCEMR@f-7WUK|X+gcanCT~E-+QttEKXF(O2WF#5kSVYJE|?_ zXB@u0Z9$Wwvi7vNubbV;Rf)8(8dFF*$ifnM6{@NGU`4C7mhOH_S@OGYA4Vhl@}H@T z6uo(}F4w{Jr8!}n2%9`Md_8q%TCp+cc+Pod`s|x2BB`zQ19fX;{Tkc%OPHuVeUw;A z^2{l{7)SHPiksAw*x{q7q2RK5t6nNv?O&DTJ7Eue1{Xv=H{xd2>@IV`JU*qOG->+E zGY8bU25d*F94dpV{Eyt!h&<-%_Ged>>eh zCW?i;AM$)jaFJ>3ZnlfJ7SC+;3A1JUm=b3{?`X&$Uj6(Fv>_Lj_DpmT`=YPSDYcAC z?f+2q-hov8{~x#tC6ZBAxMs*ELfk7dGPC!*_9{g7t(1{*GcpRd60-LmSH`_oZuTaw z5!dKmo9n)RNALId_xt?x7u|c#>%7K!y`GQfzy4h&N;m6mT1PdkA@w?ti9$d=f6&|V#6Abkipl_z9yj&n0 zmeHdD&|Ox2Bd4N|Vm~Q|URHYMVB;^$m-EZi7wY!Rra=&BXznwx#%j5DoMM@-TB6>r zVR)SKgmj(R=S%Hb2p6BJzC}>OjWU>A{t)pY$=8n%nkd)`A z+&g7cTlVGe>Y8*kFXCpYlUB9vs~0>I@s-Ef zRNg>n_2hS^xf?zq^d;?vx9fU330P9ufB50vbOo&OgRsly3UQ2d$GZ9Ke~@E*ZY`Uw z=QaQP4&Q%Zq1WkR#5$`M+3TXy z(KGk-mCuOr{k@PkLc0!<4z-tKWnD)?$|;=~zA-f_eX&SH-OBK)gxX}`nP_JMbo&%q zS(<)GNPg&(H_WPS(vg3iuj(8yV^uDJ3k$k7*6+1hcj8SE4&$@%3h?A3JinTA93H5^ z@0^$7A?E2d$!K?*N1Zpe!1HC-FnkP~wj{wyvlVZ1^_qT3pM}D^bk@lCi|lykI66-y z!51TrLA)QN?uA6o* z$>I_M+RU-GHna6N0AkOZt^E(9lnr9%(x;i8Eun%h}`-)KV?=5sADP z^D6(HJ^S8e(;d>73H$XYtY51*zaT{~aaE=UxZGXIA1m1$^j*<@CNc zjmBE)e!R`f!Ex*5)VIsM)b3tSXWR*nb1`j%o-d770|GQp!P)xI20PQCOFqD;hye!Ywj z9)IW`zcSG82$8a{Fnn3!-XmnMA;|%yn40UK3w}RdhHMZpzi7R?D-{~gFJ>lrH<9`F z;|k9Q!m<@yH(VqXIL}rHW#d@;qBXFPPe)W*9Xf2vvo71mxDY3+QRf(KLD`-%Y4bEb zc3M(Gr~6(BrCSVlM)ac7eShSIpr*iPeQ^WXjLAat^{FU@b`{F+-QN7A?mq8kO~~xH zSmiI}#5v>7@EP4$T(s-5#oHc>fRLMudQe(|1KDA60Pk(O561kT$TuA*U2ccFo3`bq z%fsVaI=D-HZc!$6-~Bko%x>q{KI!S|8dUH(urqApo0$}#%lTzd2LqFJE9>Csb(1mh=42yJHVCFog*P z&yxRUuS&`%P|vTKqVLg{6n>C7{g}2an@}nmsLQrO;bc9^w+Dzkt?z0hB?=?6A9@tK zgQEE)Qf9s$O}$>>In-`FePTb7ZnziV0QS5?QD~d|uq>cAw)5CLbN|``^l4Ub%r&w! zE53P=Py%2fGIHY|vI{B~#*)z6nRR527<0Y5@1}z@o;au{$BZb;nBB5;dvQ}37jj_3 z`}%qpI2u%V17SnZ(W6I1AOJ%yHhH-NPY^b`5%R4ZG+US_z3|O zAL?!~J>)Z~oBV2<{=Tf_0@ckCE$%IC*4zG<^d4;Rp)8I9M{d%AFGs&?c@fORWwy+z zXCKJJq3y<@8NQ$JDJ1s8+hQ#p;Sgp^(FrSehx~eYowvgkAD@|^3=k##_ZQH z*8wRZlIH{`a-xe9s3E-@V7CnDGJsC@*LVT>CzSMI1Sb+O!`wS2;;}xOzz2Y{ZeB~o zOlUwnt^D3zA{aQi>l0A^I3n^o>oOiNyNsx8(bxh*_Hlz6aO)5(3sCEf(Ake*0f^G@ zc!K_ME(uV-7CJjS*`Ef?cH+Z;&`n>*bqyN?=xK}ncZZU|N)qOnh{R2FL;(h$>`2^S zmZgH^VF+{w2n0Bh&&x4{Kg+UVr>8owh`LBpD4@Cxx6{iCIXgx{3NR;7)SuoA(wQg; zu<|ZB*gb**JOS5}AeHZUf_Oyzxz<-RY!eI40r>aFAwUameFw5p;7Wjm4`gK)(JPDJ z#laCUVnkXu1XHe5u8(9rMFPS}>?c9fS0UlV=4gnE| z@HIN8`ddopx>MRbdn9qv^J74v2(xk=G;jlb{`Zn+P&{VkBxvT`i05xpf{6ZyfN)s+ zcOX-A&igEv2OVQafFm+)4QR-M#ks)zMAtOLVIY=r_WJ%F1DgCmXu5+}-c zfm-2>)^J4^-hrcaA3z~I36`D@=`Y}v0;N7X*SlX&KeZbHorbv@0_yFUbDLBJ$Zb|3ilU z%c}*X?(Osu<)^@8JRhs-DGZQevJM*10Tem#9FBS}N^8?0HURM#v5$^FMgTD2&dESM zdPgaEv!7UfNCNF2o{^+WU^(ZqXy-v2fH2Qs$_YdzfbVL@3dEtdX+RBAlLjdp`X5P_ z1aNQvm09~A>TS!pz0xyRJbLXU2=kYj8<2xIfb0gL&w01!mI41u?lm+b#$kv}nE&Ab zj|2HcILRjXclzQn7Vx75YTMHmfIIi+{SR9gdOkt^=M%Ndh+PffI(o291kwCV@tg$= z=-7i{=?6F^79#%{^yKKAwES;_65~n#O5LB6l5YVzRR2o^J}*OY{jae8E+AJo+)FYT z{?Fs7Ui%5amtFb4!vANDkdeG0c!%9Mq&)urBN5w%@E=740UY7;M#yH6%FmFy|3CKe z>0kD7^?%=dvjnMmR`>Uz|F>%Hqsce+R|pUlz0U`SJ)z{Fi;ra?Yjxek1*C z4qA`+g9Y>x&N~h86G(7S#|v@DO1?Varx8K<^TjEu+r%cbz#q32Y8UgOOGxGec`PXK zy%^R5@m0IyeQs~#hob%2vayp&iM%JDv;d~_&LDDz@H=3zaq0W|Lz@TEGR`-!0>;VM z7l||}wcMxX%ftH!J5z3X;@So63AP(SqR}T2b~yYY@XWt!!|grB2x>iCzwv*R`t1c{ zx#b~G(7IvmM0Gu-T|WgBc^qw`v}VFfSExLL0S$-IDcF+D>9?(~tZIC^{Q7GFVsQLP zbA|NhhPLs?4)N9 zc>HKUOzQhtg_(tc*+4ay(xm0#MGp=moV0nof-f#p`wPgdd<<8EqoC(6N02l~Bcp09 zbL4MCg3bL5dq5Ol6RQ|Yf>?HUwthVaC{Yl{1{(M{OU#;VioY}y?}kdr;|%$%T=7S= z7Bs%%`fbvuq;k8fit*^oUF^5s8c(6v$=AxAhBK2onwrojYXqQ*Dc_CU<+2aCfSYuH z0He6m&lCp5eB0`-pfrK_6jr!SQ-}blph(G9miv$uakf^l$$CjPiBsL}r`&9Wf_l?S zdJXt4%zgJ)zG47hn`$g;Pzv9N@CG)uG)YCxci$;u8R=2{VzZwSq%w#ZP&efa!w~1x znOzi{(FcuP+5!VeMgl-vC}*_(F6M$P`7BS%XC?jGUhd>Xvp59J!d|(rgcct$+Ne**+ZkTA)*N;gOTKq%YMTjdLy zFQ3+Qvh?XZdj6f=RWdb%g@%70j*FDY;z#J5Y^p+PU~4<0%@o4QNfP;;nhr^A^V3w{ zkPO7v1$apOcPe;8dlCxV2sngf1;E6up^)e01;;_-8g?t#&tHAlx|nsWbxJhlURTpE z`E^n+1+h$CxGcEFz^5V9m6WcNJ0b{E)UrV9$3G)*QYR+^Iy{FLiC=YKHNg{x@P0Q@ zSo;36%O5tTe{6hspkDddYG^iAvg|{D|B`T$x(L;k#USk#r`>(x8qaq~ndEPH!bgU7 z2A*srDD@w*vQBzn-XQ=6_nEENeA!srOpmIU{J>|IMk(hgm{a$=Z-^xIPZ)F;ZT8z+ApO#l?p- zyuhz2m|Sb}0kczVqChm4vYiP6@AERn$z7eta_RfC*;k=`S@_Hn&_JQhYtD-;OD`L(t`k6uE zD`&RA+Xet4x6YbYwpFaG8XN0MT5^kIYQ=efKXS98s0|YCFY^kGF&PvKpsq6-v~Hm` zY5UqymFdghES(Bv4Pn)E>d4(3X>qq0eJHwmFaaoW2UTk zro4B!8@g%OvZD&Sne3xgrBiY(6`Ig=XWv2oO@TJ(qJ4bW@uk_^vaeS{6m~^A{4jd1 zL-DFxzE@De$J(4#NxUKe0kU&tr^(R+0uvcGjmk9PWrnAZ;x3A`9bqO=Ly~Kl6%H^n2*eQ}eCBAz*KdB+1!7^eE#YR2nvj3rt~%{;_BHg0Omb4biUb0l{diYSG& zScUpEmoJ5WWdHnX|3iaTm@)*1(8J&JYlZL2zG{Pfb5zx@ zTVMYiW_7M7Dk(`L%-7^dJBQ&g(2a6l z>;N+wh$POC1l*fj_e6=nf&%EeGyjmKoSm%NhP0T5>QmqgspL{ZS35K&J1e(~H%;W*I%UIWF?=2svGRhRd5ygg{m*U1udmk8_agvmQwPDdOw3+4InvoO0qY;R2Ehm$cZdcMXvAXpib#j#_Av}_aO;<_t z<>q zSo@b&`)d(4k1bSGwxtTX3@Vq3ro+Zy`IB5Z<6S34I^$jy<@Xj7)+@aY5Af+4DVw#gH~r zrk^)-u+dkmK3?z(uSDHhZiFAWbzD5*Uo1QxZ1%Vx6GMO*Fn8IvK``bd1aR)Yrx6~g zA)ICI$WZo>o#)HygC>E&7ZoXE>K6!N=GM&p?f}X0(j&AmV_?yWu&Km-tfy%csj*B` z_-+2%w%OvTIwy7dPN^p6kPpL(-%qAaS&MFy*H8X9YIMVwpm0=W=u2}K*=oOjbK_(G z5fjhY=a-lGveAzv<)M?-^8Lc3m#xz`ChBAYhg^QN#$-Eui`1mn(k7CB%)av2OE(t&eosM0!3Sc6j%TA6bsm*#)+Tiz^9@s@9$l79J>#;_=H$5&%%O(B zQ^CX`tKy)MF$>!Smvu@i(I}M&9qdEzqtMqk>fK^4a$skmSJuBuY@ifhRK-s+v}ODM zh=xveayu8^zc=?gDT<=X>)M->pIF!!&$nnx3b_hqTr^WKk3cwdE*%ZX9IAEO&%owFQ` zNbM>I)iePrHsP!ojr?%V*w{<4qT0l2AQ&3~l%qhq5#8lEUxpqte_OS$${X+L9r#V@z!U~?8EUu4}~5nR60j{1!*$)(wUrXt0c zyV0)fy>rN73xs5H9a@k2f9| zGnKLQxoZe?QC+NYT)G&`=BShLG)YPFWpA#wI`UEdmg-uf0@Y25sLHx(cmlo2d1;#WfCM{*5fny6 z`yRgIGvsk5Fr50IYGj9L9N-0x-7L|unHvg7n}-+uc_lx*k4$>D?evqEB4Zi()x~;W z-C#qH1(VNz)@zd$`025&mQN=*{cx}YP4G4E#C*PM&U*u#9SJPK*q~p}z(X zG!;yUeG5M}Drr9!bp86V_0xx3Y?7nxL=5G;Sa^>f3=cqVTW^Cd;cOgc7Kze28V!a+HW)# z(Z7c;2R30qvwb=&Xm{(szx`?ZSLqzEYi1$(A4lX!x4_(Sw(05+c9LB|!U=%iL<4a( z8j`-g*rvaS<8ZA9dIN%C0pcjsc`2{YBRDWsgw_M`2t@fBdxR|$5bRFC=*x2|r!hzV zXa2xJ5fzTaKz4CHcKh(Z@pnlCAZ}2cneVfhU7p%2q0>Y zK0ur|)w>^9fB@X_ZwJhu2lD^*6SMg)STPuYG|CC-z?@Ex`iE>2khTZVyno1w&-JMP z_IPY2Nn;Jb5&<9saG_f}IhPc)qur|q(4xd3k0aO|NSsZ9&lqkVwz z{9nwi`V#4_WxRfw#qfeaVW4{1qVY`D+vq*yh{ipA`TF!FKnLSHT&30IC)Z*tz|xtK3#Q z@5OJYr_4F62aAAeHl|=MOPc|c4>lT5TUPy3{t?0*TlEa z&RGeZ4I6`y$hD&*bnLlSIZz57_?d9rzjhdIKnxRSJS#X?C8?Z3pV}S6fa-UEWb?N@ z%RxkEVl|M~pEw2pMFda_zZitrQWBIRg^MJzbX8}%aw1>_`4P5Bm_LAPeYV`6S_D`z zbU%9y&_`hpIe~&3F&Nxw8!-e6Myy}~O%%Wkyu=q*2vWW+Yfi)w&u8sTBXtMyS?C~f4Ygw+WC_u)( znRT6Hw}{VVg);(+i?ndE_h}7Xa~goHPj;0@g)8yH^(`E2_Qfud0LX0B8`HT^;*569kkqV7B0Bl+~0Muf2{bH^V;zVp8!Xk~lT?AF{gE zbIZz|N;uvXK&x{EPW81k3y$}iZIKwjRv;W;z-VG8CLm#W!rq@&6s%@H;cM<8;Fsvh zi4-ddaGj9H6ktG|2#?q&M1{7UtBQYhHjj4KW`N~R z0>U$Epmq*W9zDo8UvRra07M^x=+LV#&7*~l&^&&Suy2@ z;nMMYYdb)fL;jrxUVwi^m+wF|4$-_l7_J2TlZFE!Jqffz1pjSM3ljgVIfw`m{J;Cv z0n=N%`ubWHv5k0wUCSc<{oL?uOVI8(FO4gRSOCDf2%WQ|y)?i!J!l|S1My@guLTWw zhysip>k}9A(=)IErhE~uZ^tt3s5lV%?0l_Dh$FsMBdmexJP1h*S7`OeA&QGZVu-&_ ze*TPZvsCZcuYM$ZR(wmCE~6_-3MCmuEnYp~JpAaoJjz!bxjhgb<|9e>J&m@X^*HEU zSM~+qF|CS!bqEKYnI9zM$5m-FpJ_eJ(d7Qv8l%F48M&gxdKauNVC)KHMu0^zg^s_W z50^ZHfIt9xT{xVk4+qO2&TxSGd`kz*NnTEthLZe7s&Bk2!ycxf94it6MO89FYJ%74 zF|oVgIaQ3Di|Ey$i`6&KV$0d__{q#Xu5_vEda6Qn{3r)Rz71z)Dt-(^>(0w#z@WNA zL>3!mRnr_gr6*~%vN$QDg(#TkwUS+S~ z^ZFs+^`dDRH2T%~b{@@(q=C;@u)|7{``N$PZ{>8NzA?s}c%-q5a6s@L>+c8L z1@)8jFKeohBfn~C;Aa*N4@jSnh_EHRRLyH`5vwA%59M4k=3luprs5c!T!dK^^J2ol zlGpV@eD_i&HZW%StPno!{V>>>!epIg>}}~@3gpU}1lv1cMx_k_ z`^OUWwAD{T;Az0twMX<1?nUVo_+5CtBH|GHE1TuEKfMMcXSe{%*>KlNe2_gE)WSXm zY`Gx~EFi00N|KRSxIZCq|R0Z~G4jlw@VZ z(pRdPUY@N9e#836i)F6Mu?6&WH9gwE>o(g&RLUq}Aqg*g41Wx^%aR-kj_sGk-vI`FRgyJ@d zE833ir=FZ=tmlT4_2%)f>Sd}*Y%dvlSeiT+V@fxxapYb`=|r!5hWTC~w%N*vb1sO6 zgxuJV;h8ab|ucKURI)X|tHo=vqj=Uhee?x%4vLD?M{`sn9!fNd6A@a+$GTir$R7 z2?6uk=zd_Xc9Lx3K0ir*VO{9-$sS!9A+Q9NUd}~#1#oDAZ7BVvo0%##uFZcaVyX}6 z`*v&?J-n1FMBu57W&2Z<0B2%(7!KJ&V*wv=S?Bt;^MER9B$ITe-BcD9Hth*pH3w z544L;(rE5t^=l|?1s)+@rXiz7c#nb!(nIm_I?}u{J(~Z?R z3|2{3Gntv&GvDjm2c}O`+|&j-Z}xmyOhZMT__`d(jk+wk&s=e7lV;-vFP*QbbHTH0 zdgvtilLN229bpinh*dTG1c^+1BQbg+`R#K>@l_QN{22C82|Lgm7EPju@G8JU+C4ExcnryNtRIN|CJnCyW_vPxvUV9WDsF^cc&OM+PUNpkOo%y&5 zlHsNT5hvP9*arNu4RJ@ID*YUKk6vEx3Xe7bLcXD2b$DQ@#SwBiuwwQJPj35-7c@>p zn$5~hL^b&Ido)xaeNq5&){K(JsZ)60^423EYiH^un@bneOcneBsGwuKq96`Np_#7( zm%UfqswbekQz9Skh%sIEO%pa(dEm3e!X^7H+0k2a!Q})NBhggjdwWj7Eg$ROs&Qms zzEbv4N;z3K=2Vwq58Wp33lP&&O!!pmwGU9h%q?z~pBZr;x1KmEC zT7~Yh_$;ps-V2g&-g=5xTpfmYzsPCk+<7i&+5E1>)UI|QD5tl)yJ*b1=BPdb;t0QZ z_4XtE#TsG=D6lqv=BYUswF!Ee>W|7*{dOmP46A1u@}g+mAA&8V*C?y|3!)yEoo}|g zfa0P6ZZxmFLMLa=L+c^WBh)>X4Vv9F0r_&lXPWQsDYsm8d`UL489L4w#(k) z@J<3zT@j9q<%s(xdb3O}FwUY&%15+giWs6`v`m8z-bI@5<4#&=n>I)^ z<|O*NdR`^7WsuN~VhjH2c^G#F$6MZ&Z*VLf4C9?^@jI4=+^|$e*Md3a?w^4nu8uEb z_TQHmzq(Merp$3f@y1+d&2pVdYO}Lmx%tzGhN;!>m!A2Zn0>exSV`^g6C5$oj| zb9nB!KVk%=bMjl5A9EXd6TJ^#ktQK#zI)yGCN@F+t~c-~=%BYDY4ecuom1FHB65s# zPJ*%DuG~l=-`L8`!3gyuLoVy7$qIY7e53u;gy)8iZtLtH~lQg++G=IjKG>T7TMW&xs%isj6 zNLQUBAOfSw6)R_>1K4Pw^m8k~WCP$Bd_)i8a2UQL&iG5)op7Gq4?&=xguC$0LyA{M zzg_|gZwGe8GEho>zq<;uplf0P)jL*Nxis2i!>$YELVs)!ZZSb2As`x&OMGqROI&tLt3Tbc6Qcbq=-!PDN!8Mk3M@oVUMi%GyVuKLQ7IVz;B#8t`Q7|of}*4BtQ4no7%uxAQZ%!fD*$$gX(|9aLM z3&s@E47VmW!Ehs}Fd!sI7e7JUHUq=P1S^3Z2BFVQp+Yu0@d)7D|2s_V?`it`P4i%3 z9V%Z()hMm+QS|%ol3sjHW*p%#w*&-tACK_b2DWyf8rN375* zJzdCrBJshruz1^Y{L(c{m#HiM_>R1OC13N`Ygf(PV-~8uJf#n7ri(TU(RFvl-Rcsg zEgL@nJXGi-dWPDz&?>}@mIDMxHLtZopRc76wG~ZIt6sjbou**;$)&}_UiALSb6MU- zx4P0kA3w|KHJ<75a8o$-6$co-wG&J7}O(Qh06!#09eo&>VB| z(pB1qF(+KPzD$$w4;j^>p3Y*99D)V<%CdfimIE8E5eVnQlV(a_)9m#ts<8U1mRSzU z9)Z%;(^CeGp0{ae28uguuCTd8e~vxpf~ ziqo$ZhOwp0dvf?0w2P<6yFOZ?n)SssU(P(!H(o8x4XazIolDOSvP(9cqaN5(_`P0R z`Uk=|854fja%0@Y<(eN;)#s3aMw_NUa)hP=#KR@DL}-l}sCx1goeG+!`s`81D6BDD zOp8+-cgws}DfVYsSNBrY^lrFfR&f>OPFCU~+OXEMeq-`&P}WMEsZF$ZO7T;hcY7fc z_>E{o9jk|OHaC=$BUQs?U%b13d$p%@W~(q;>z$IijtksoszHis**di}dWA-2`Sw}Q z+|DXB`Y6!R6foStIWTWPox|E9P8M5St{y>j+FP! zPi-rVc5=scc+e;c;GVzxQGCa(=Y?^r+TYSbI?NFMvT z{%m+PH}M*Bs5e4wxUT=2&(w{h6P*35Z0;l>s+<6wzV$JxBKkh&yszV$!aw5r){YJ5Eh5$EML8(z#7!o zpL7RMt92-?%@+5?ZPYzDxb(IZOCV#J;!&Z1!gtxOws&qiyZ%l z%%yRE4r>`rdz`y$Nj(?&{;j#&yY6}+-$Tw3wUBBL_0%yBr0es+#((0gmnd%nn|*N-G@Vnzr|!n)q;IEibR1bF zJ^i*0A?Z}F79+MD9ByPw@LxSt|6*SouutPT5yE+>UpzL2@Vo}D4Sixyf3?>tW^AdM zyE4T?`796lUB_K6V4aFVGd;Qc}-w(iCo?S|=0*Fwti zr6=1G-o*F)dO$s}mC6rZ&-g41afTY4D|KegXm_wO{extot0(9o&EE$txhf;VFo zQO@(((t9Tao%EYKuYdgsZIa;VTgXq`wmy6cLuNNe4^Xf_dG;&F$a4PTk(ED`*Rr|z zDe9htyXzc%tL;{^(5p)G;c&|c#G$MZ(r5~9BxchHkCN#6bn`pobuN`khM~;fC9rD<4_d zDRdI$1|bIV-MGZI5#O?Y$%eP0GDSJc+U)r^=KN~)ql|9NYN4Ma!yK8D13|T?fs)5w zbCop#?|r!+1Td?O%^1gmB3k3FwOUz~YI**=th)JCIXat|_%bfU>uL=*+ z;?WV74cA{KJ&syj5N6ly36WdMOfAm(@_g4+dR1Di`$a7T|=u$(Oq}&vda!QXEFY#cfWHfPBo>D!9)UY+$;|HipUcNx>?I7U$ZnU-S?dv+gqq=MsJ)vJxhVsmaJk1O+>HWl(Z1Y@6cwBD|+_b z6x&Igm9A9R$mMd4cgk?*`8Dv+&h~OwU?S5_=yNrqw}v^ptx9vrSl`e6N4_i76H&{* z<-TGWow~S#eg))~3O0nPO*E}-Htq)Z3eNg5?UP=~gxWqTY=x!#bI+!3LUYbG`QgpPRf#~y zHv{g=PxnQ}10v|Up)iB|=15<~*g(^*&bpN=?Bl0Z@54bOfp!wsQrR*dw(8GnYO_7w zU$c9N{H1h&^q;sFLs`{m6LCPuQSiQhlAxfS(4(9FXEYaYk)gDWx@vcSwUXoW>~`Q| zQjr2m3*R)ixB8poo`IOEz^mDNJ70F^>e{a?MGlkiCI8_7w=7v(yiFX)p-tX2)eX=P zja5Lmxbt>e#dro={*a=4zwxl{9sB<9P2!K9W*ez-1x$Lvgb!smbFM>h(UyX2?oI0w zuQ55!M{QF^4JsEqTC#JMT}cBC+KS=dB9{_aXp}r@O-LK1340NDDJSZE*hDVaAMH`q zeR{>1&^2&HPfux2dOdo{W5hl0tUdL_0#w)T&-H1E4{qF^;Vh z8|OErp@`EfT9n~LxxL!e(K^7>D-ogZTO*uB3EGg z<>-Up-94m#la^Phzt@%dJ1ewyU324Q;~Z~Ar)B=x90di1l6uOwM1fZu9Se&>6@K)e zlclcYrf5psl8S%8fNhjB+Zk<|A-n}=`GCY$U0u*C(gi~8TQy9mhxggx2!*sthW!mQ zRu3cNqLav#72m3E_=ceA%0-Cy4)3nu+5Q2&kIt%sw_y|3`16!%6+sPE?bY_a+!Hfi z_S5D^tW1mC)K`?6X_M?E$f``&SI?7?)zw)p*X&l~;-lN>zVFb@;){WoebZ%Bp zu^y9qcVZ(FupBK4kEpoAv@Rpq6|Rfxy>0LiWtW#Z5U3}?Bg4YZar8mL%)=pNgMAad z!PMxwXf3M~g?uMBpz~FK@uEpPpQDbxZs7EaB1fQkrK==!HjVfNbH$f5Fqa$gM+`>~ z8I%Q3KP`iB3!o%hx?EM|9JASa4Gyi1IZ*-I_x|@e>L$B#y_+p8tQVv_zpzd7rIbqz zv2~da^wUt%|MnLd!C3jImnfc5+2beScZPgedsFVQFG`j*E_t>yOaS73yN*A{YJ? z{m%W}-tlYlvi}H&pItd!qBMI@skzxDU0>-l>_CvHHl6_K9|%J(&J>M(dM%gE2Te9JF+U0!X7hu2T1!h^7PV(~g*sleM69_zoBV@b~$AN|s%I7(53Z2VN(! zL<8u`Yb0z(`sdAqxgJZrr&@*kPZ{I+9FYSKl}_2BUbmQGa~f0gqQ;Hp?NDVc8c z*nuEFA-@fNH7(^B?^doL-v-!3g??_du+@5G)?2V)%yv&`o#}MH+3DTy02?!CeX-@2 zvBg?GRqZJ8y{V$uU9ve)O&T&YHXN zbr;I?rfGEiq+F;GJye@GXum_*u#&M%{i@Z0`r#B6-GzHsI6R=v9gk?A^YO0m^ISsO zu{Pcx0EiZEeoz##$K|_zt5 zKVrs>OUkFadc}1E5hG=tJJu1FaTUzFtcgEL1_G#8eG2p%^RLx1)JD2y@QzX>NvDf7 z-g}`VhmJD=aOn@VK67OoOnE<7URA2rSd^Dn7Ek+jm*&2lskORFxH-K& z+86Ti?I${UDSy5K=Ph_aurrik6St6xvpsQ5@z$6n>uLXe(t9uA>+n9|5)Zth=dK7}+&j)ulnY zs<;kr*N{;}Ra8+~M-)6Cr>>R=A`Hn)&Gc)z3EepMbo@E?!_Dxq*hRLbPj9Y1SL(_u z^_BS4jrjs#9q&_%=QtMT53|~4e@JNyJ0$QlrqtV_WsKgH>hV6k_dxgkP1TZ`{3_2^ zj;3b!xQ{Joh?NH3s-4Ph@MIo2dnQEXPL*^Yq;|%%QG^(Zc;MWu>MQ+y#zw zuaOf1+dRC_j3gEef1j!KEdB=Q@O~#70qxhmW#j8St?uz%*IID}+#QGYMY}WEBd%jp zu5C?`rZ>T3TSUO(#;>(|QkaX0T!4o@QR`9htsC1vKdx8n)c~cf*JOXIKBSUz{xO~) z?YC0enJ7cLSH3Lg3$83SvuMn-`j&>w-P%u3AM0n@6l!FBa;j2m|K{^|eje@vL&>}t z)YB+Fl;`znbD!m&=fbD3v+X`-mQO7y_wN9ofV@+xg!d6-rWzP6M; z$1xQf$WpB_xj&~Y%tstAa2hd>8FLmR@S5A0j}@gGKsx9NBG(>sm`7M2C6D}|AXQdw zTh*ObZ>bbTwUzDm-}03ez!ftdJdF$3o+_&OU`$BP>sq6F9tWuvs+>TOwS9iB1^zJJ z>nPD+9mvb<*xvAaX+!N{<&TA5zb|=_7q2odMO*+~xgN9Ux=s?P@2_o!Aw%C}>Miv+ zbg0DI2L2&u^I7J9=21eibkPR^_1biH{GKTVQ)#o3djP&wQcC_}C*X2Y zU&U4;W#AAFZR`$qW$gqh1X?LM-B;jOeHq8Yf{j75fWGq5W}Ik`(Cvf1;YWnRT9u#^ z>x)&HyK6wj&xWMj*SOvYBOpHjuw-^d+D2jB2taRQ{_eR{A+zN+knj%tk1(?fI16tel7}e=~j$NKD`Ve{nRM^F)8nAY>X~YMcNXe!y>ue=Em2 za8dwB_8j=$pL7zCDBt?igaYtK3>374*+aiM&%fJ-{(A>%fQhj%(KZU{6vx3QI{u}F zM4u=0%}F_uYb)p2-Z^~(N?O>5#{=vVjO|l#>ob75qIiM@vx*{%OU_gFfs04|C(wO7 z9N>2REwtIE!-Ct|8i1Vf859NiTU6B=2t9(WVn_?rrGYcY$M}h|g=3Q4F1|b&z*mVU zR)7red8ypL)&z^Kz|&+GU=ZLlv5B$>bCTV{p!Audql@c&2nrCAAcX^D8lWQ)XY-Q7 zD?sN0W~X|sfvvFU9iVC0PAMY@($a5$ga^g|TDBdxk z22r{uXf!uZ1i=RMJYoH%{homQl?Pnv26`;twbN*6r<6t|Y2!6!)x%ji74oRiD`N0` z+k2T*a0WZ^vo&*|-6XqJQaRB^PQ<{S;UNv=39LilM4Pm;3wtsfhJNfdmDE?&6sv0a z&BZy#Z~59CkK-$qtV#x5(2RbT^b%(w?8e@Hd~T+en93*C&v5SaS20u!uYd|Npd>JR z!*GmjQJd21E=ifYkm`5_jlt{+j>Ce1|Nb<7huWvwSfCc>n2??7Pr8|3*^-y!i+30i~yWkC{ z9yJYCO1T%@B6>zNF7ADRul2X&8$7PiOoVvOtD)$< zuPT51)I|0$LYZtTp(S_*HiJgc6Z?NY8!E3b+ZV}uVOr+!2IJDAU->vYGD1VjO}OM;?3DnWB<9iCDOPPh4Z~d`k`dl-2wDID{CU{^dc+sb_sje;%O6XAt99(q zZ%Z|do}riRL>0Hd^Wg>BD(03Z`eLaVt=8Jj!4toRes?A*5hF&qk^!c`*b$mlLjtxGBM3@ao`j!jWe(?D#kgmTo|~ktZ8=Tkd%xckB{g!dCuDptLxb zWqM0|@KF}bn6QVdY2h1Sb(MO_4UdmeSL9FbGn8eP*rnUomRwJijCrOm*TuUSS)mHP z+ZG6cy_^BA#OAj`~EkJP3-9u zpSJ9>@YIBIvt!5G!kxjH40a+K1qH`YNqh<~!?8r2+%e2-|Jh#BxJ$QvS_d4)spslG zK_Euh4%M%W-UulAc&Pc~Lv1?Q2WsUyDyn6xxOEvud-*MS&RGRb#m)j2#3$!heFl3d zjyMs`D}s4^d`7=&1@V&QKnLruk)HSzaN)WaXxjmWRT6r3qp+w!&llIDvB7<(ba5fPC zs{kFt6RzQxH;JS5_IBlzpbfA!ykzS5rSdhUx)7U$H2YN*ZiVLHQ@dJ{A?B;YRMB3A z1HOy@SF}Tt5W^YVf^QPy4jUu)F2}>XW?=M?cxX zmdo!)O_YR{656?+*e*e2Z_4tX7%cyX4=;JNlAN=vsP;|AgZlZU7Jn(I9F+{7EI@T_TTX8+TO_)^7t}h z#BZSg1SW$mjfo64gj5=|k05k9EawM4UvEagmrjZQfB1UquqOZbeUy?ABo&5~G$kd_!QVxRNi_xn57Ie(n<&#r6R6YqH9 z{kmVT`@Zd%rL6vz^-Nod1?^>3IjR55brC=*bUuhLo*TaR>3O>qjK3<8xc!qHGSL|H?jd|!XPgW%$OGoQiq`mH_j-mj>T%CN3u2U@Bh zP8p15oF-cK?qfX0-6A^|b&5pK;vUi1T%UcyLVs5bBZrR!p@OPq55=FCbly`E;x_wX zg?>siR@HYMHA3Td<4M+vFi_K{_4srzQKeCUh%~<_shhvHUxXtf?t>jgZ$h*>GlUwm zbqUz0-%VHDMK)a~rDPQ#fHFzs`oVbe?1G)ahlRe8v{X3zhfAu+`LRV=7$(@V710r{ za6#-*oM;?ay7KlidpDe;U(Pl)4W7@H30XKv^5>Ka1Oy^3d}k8hf|7lKS1VBL*aIzS zf@T!1Kh~>)e0b3~zk*dgI%69K1YFTbSa5El7N5{9+c%gYzkX8n=XAEmm+HeH<#*OCc7Uh6h|A)7v`f_g76Ewg$6$mZQxfa2}hrlT~i{EbPXe--L^pxmx z8+f_D|9AKg-(K{U-$rv})`ilC1mhX<5b96LzDzrKLMJZS3Hk@mgpHq}$_w|6` zV-nB>Q7^VzsM{!IVrN>?YYf~ctZMw&N*jMl)rkGLVW49e(4)q1S5p`py@-g|Y4n3} zSS~=9g|UEFp32xXhmncH(}`|zQMEgH_dM7%2^|`5^;rw6OFmcgfZ5OhhLa#@z-0di z_rlIn_4sQGsM{s_0rn>{hh5xh%5$MFDyTnmYtd8lkGh?4#OKb4StV zuD5=G{oQ)gD8?-`R0UP^VEJ~Icp_5C@@XStJF-D9dVhosmWqe4Xx=dDp!wkTMd@D* z0);^jPd?AF-Phf?w!CpfVszCKmi5?rBd z@mWK~s@c$CrliQIXIVwd$}jhxxt6+Y591#qc91aPN}>3lG+c=mt`*3SUmVtPzSb*i;RwnQPQKjX0>|QRNdxtuSa3?( zwn;oPhTSYfm3=Cg{pW0Em8SI3DaE%&wUQ_fsF|GJb6W1+9UN@! z<&9)iBWZyZN5M7uh2};5O`V+M&y5VTzpPJ9KRzMVeGxVug#iaRHfUNi~tGtm0wJYUE$3uU!i`iLG{s9-S-|1mPcA&hU8a}`hK>$Dx)JRkQN<>tOF%%Swa7E?`{yosY>_GhOu>K1{$B zpeM+_?Z?AstYk}6HA86r?l``;Kn3!Wfr-p|Nyt!Iy_f1X&QB*df*L=vyJ;Xqjp=;A zOIFS_waL1LHQ6>Zci4k<57PAHu{zaQQSX}{F`RLO0bRI0`uy+yi&1*nUsbi0xO}9) zT73TGf1S|$ImnJL6RzxDLK6r29U(tv^U);pB02Ps!(sZ(j2qFKae$y>59qmV0>L|$ zAD)_M?mLp~g`&z=3KfWs6QEF6d^hi&-Ry2%RP@>p+baCZqI&z^9AuS~g!irGga4L7 z79lU^Q*thX+A*g)UPC3N;tmcbbi$f$ujtlJs<{l4W_xmCA5LyZilq+IrbUwl$vwvW zrQS;TIZRxAKV*?*dHGYy(NC}(4$RMf9_>5Z!5Y$W&)l)I&YyJXsc`(p$-MOm!-!1au8+z3fRqF7Si z7PJ3(6bZHTUNJ!U*i{B!LWi$@>pL5XX{^NEEs9R5uC;DN+9aGiEqhHljGV))S(@3E zNlY+y;p=;9Q|Vvc@ujocMI&hF&A$8{G5AD?{B|v$9nr6cME2Wu%Tfr`fBeU0b;D&8 z(mNX(&YMG9@bP(Q|;-;qlNXf+i(XqgmK;0Q(o?pHNi z@N+=W1JJU(JOP9=N`1gc04_-R+=rcLzj>m+G$ey#~v4C>ekGwMNYDG%v z`A0=8jAa5!9{qL#mGvV0C##Hyd>=hoA$BP^c9FB|R<%nUP`hKXbQs{}XH;jFV8Wqq z1GeVWHwXw+Ay#S%!s(y0^#-l^=Ra*xmB<9|KdBSmF893c>tui;%(MG~C|S^c8d)t! z7hv6Rz@c?VR@8{%(}98(B_t`mG*pU$yia%X&*BU9+V53I@%IAXKR5%W#S;k2lj|K% z*ARb&XtXzdLd=$&1!*Mce6Rv#en3f4ag~v3n156E8(-6PEeyzLo3WS?ut1gUs#gA@ zERT2bC@Xt!hI+Li7;-d+5x8I1%+$biL_yr%IU_Xj3p`=}qObq%$;hzSOm5fOB zgul}C`TZn#%QBzDf2QryCUKOJ^0Z9V7-Uhp8RVq1a4wNE9Q^B9y8bHx!GjEE+RSXO z(mXy{-pgU0fs%59BRPtpoyfhCbJMTK;-cpZ7A9wN0{5coY80E~odiK1 z!YPyI%K`q|oo!EE|Ox85#LV^?w)BPN#EFBL*3r{3t+(rr(iqi~m{Q zVqPx65+L*HJ<)eXmlC5UQ+ zeEqym<6aBZ$b~YQn20cwE^eu>Zf45<;#%4{3`gdy&HelVLNPG_W z!YyEGt0{l`&%Sx-7boqqV*hRLQp1|xcRSY?j=7v4{8B{M2fY}z5_<3EJ#IkIF5GbW z6Yl0vWmancMC5cSIK;$E z#@GG%NeFxY<;!Lr>i#L!seqHkrwQHCJH_AdSa5RRx{SePm7f!Tg-54= zPMs6SfxdQc%R95Wrbkt#w~eaSgyo5*xSVD`{O+}t(Hdq+^59>nt&DoIB^iC7@AQ3+ zxij51n2>#F^=$+>4N3m`K)^j1hx3?U#?e8MxTRC;4wY)kxqog?dBso9!XwVJSC;{S zc}06Z&vbTRuh%uQ{_yD`iKD((8-L>an?lhy?fz$P`<{H}wc42fmswNO)#}|lW1Z#* z|My(($vdCeOm?b-e(2N_FbfeEW+qsF{DtI>dR@L)Z~P^dIp6et`k34Aj->K9z3J!I zc7~6gE%9g<7cq(4FXEDm+H*CQ)&usA-yAg!YE1reY^nP6!_rAwelWi;E6#pS+;L(z zs-W^!X>pb18}1m2;zdC<8)-!5!H8q0-1li2bx@}6l+KL3N>-+U+}We7r1?X@0Wfx= zz_^r$<{K@}+dl*+qS!~_v#MH71G-`hh8)b~`_50_e_#4)kb1J*CUEdv`o6;-3AZPL z`}Ea~L$7qC=;GO=O!L6pelO7h+5sL*Pc$q=o@QI{T04|4mB%|aeoB$J)@SO>q;Dou zll~(vm-S_fK({Bu|FGGM#hq-|GQ3$x!-wqQ$IU6!!W&sv65?#-YD z2h2<}@f%~0k}{c{HcjBRXwAmWC#C+A$^94Zm)VJ`a}^TX`=s7YoOur13KpX4Y(;rS zv&)X!X2aN*1%Jw&7j3V8zI%ATzr=X`>5xN)PwT+$g*c;_X{^>lU67Ohcx$^KRK%8% zqrHCm+Q=k*!>sa5t>@1$_1!Cfr$#Z%-zDwfw6mS+dY2%hi>f)x{ZY+Rl1%s7QnQwT z#(=OVe3d@WYw|djZH7PRo8DeS6!#N0Xf|Hfv9!JX_<3)EWkj&Y&ORR7;ea1AP~@Pa zMtiq%&&;8mlwzoCvODy?m3H45RlJ|+`*D7pltY(yvdO$@XFV9nN<4K^-iu)#ekC4l+sb>bfHHgZsfmHp-S01BWvJrD z3se_&2ThV~DN_2v!?mP&FK?w>ajn@!$3T{@S5E~Q5Ke#l(tD-^^ZWhVyMd)u0s`0;%TydUffwaiv(43rpHdA4!pM2j=>&9$ZRP2z@kyc4oX7gL2yoBMA zf%H??SNYE>jbUCMDMeN%J}GN8se#kmGCBtv1*(8Sgjs-hIk?%}{Z{?2{U+o{^5$RP z#!s0&ZTb~YB^|<0z8WQ(-<*ssSGEQ5!D1pa2@};&0~yOL3tg7Ti`S{F8%UdU(u(x^ znMU%9d7~WGAqaWjW2tby(U|}k4@H!a@X9v=A9I5B-1jaCeP=%O?vhUzPTXV49HzPW zq#QM4G0poR&h(9O@7og31zOU63FH;mQ_*)6cx8I#M``CwJ3ldZ)0{kC@ESCAmxwRh zUPJN6`A06-SVkBKNB(+wE1!XDgFvB%nVm;Lv@hEC_|^i>X3UiTYt;h%(M-8W!NsRi zV~kMt8+n^VDfSv^_xL9;ZCErQu(UmFv9LVb{JZ5%YKGGj$ZqYf!98xu7r8Gje~A}_ zsw__sEv zkIirMIMS9M;abN8Lt>%nEa>D?g^a%}gE8;kHOFd>e!g$7Vrzh&8+}TOU8#BbZ7SYn zxo0S{6*}cSw0nzrZ+w45F#LWgY7oJffDP;_AFHux$@M{3=es5db1nyMq~#kX)SITa zIlcY$)Rg6X*m#ldjKzglX(lTmNaI?>D#rC zNchX%omG+5lI%THDu5?3CM~P^jMV9w5X}jU&`$rUZg!@-!P@XWck?Vljc*G*&PtAA zmJsXw=|>Nf+v{s2;yuz2+RQP95tgj_TnNBs+tSGN{`x zF)N=lqWfKpy|ryJ8Pz~&Fc_S2atYOPI*_>wfa?*s>?YfL_nCX6TDczhcX~3m^ml_B z-@y(JMHB8Q4i&7^$-3rg^Al6+PwZAF$OLbdYF`KaoMy6JtR=tPv(tVQuUD1elKx)W z?cI=??WwD1?fl1>0}=w0GM#4zF8pWI-Hs1IgbK|3WxljP`L5FRsJXida?TbS9mlTo zse4q0&c&RLv%#ahJWpq~e1MRnP9WsbFPYgbqbB!1`@X~=H#z=#il)CpWm+t0EUULbbx#z=F3Ur=?OCyx| zV7Ujm1>a%3Een2(@}?c$oT%U6!DQ1XJH}r^-kKY_m6Zj+X1vI2EmFQ0qrwJ1*x@HM>^FW*yVvhS?#B>zV7V60Vn=f#tiOj5MBvdG1^&U|Mz z9B_wQ6oY%{3r@FdFpySR!z@GMMW3sw5FJjjMs7%9A~yNoe@_MSMI&|qVH_OGxrKJQ zQiaJ&D-A@@e4@hzLy!mZas^1({59au9xpq7EY@mh*F866{;Q(#$i7uap(RmLPr3k9 z=5DHK?LRfW6|bgUV>6|9*L{*~rRQ$ebBdKm4R22?-`{avuAg6wNgZ;1XpP@G-*Nlt zEkIrZ?;ef&WCDzzz@AF{t*_?*Pn*m`b&?S3_Sfk{E9^40gCA0~6iOn9 zw9+qdcwZ)GvEk2jU8icL+f`7E3lefg)SD(Hz6^$(MfV^ETGnfhEl1y9OsG6&a$R|M zx17wHslC(sG5+U~Y$+@d+?=GNnT$myz&r%O6jJ!sk(ti9iTCk|1}*Q;Sz92`3)>As z(jPC}3+=1noK1tR_}?qBHXlliL*mb$8NN~Pg2h%)E_&iDgXN*Z0R0n;e}R7^hB4y? zP_cxu=koy3#3AL{0SL^mE)Z@9mmR|J;cYB{EcajPVtH?VZtfN9#mPfAf9|4ZfIrLt zvJb;G6w$p1uEjLS{)d+=J#Mr?Gv+=miw2EB*wACrIg$1>n0~uV)y*wH?9@R%^{^5d z4|5By=C0j2ANl9Qmj>*&R2zIerM3HkvD~0Q{HqV+>H6b*)?eSJQS>#E*J<1sFSI1$ zuNQzB1Z&t@0nOD#0CieVaZ4$BpD84*N_s%>0UMtq?(;ZkDs;30z7B@z9!mK{N)f#K z)Ad+n?He)}5G^F2^yPto#zgwvr!&3KY_gE<$m@LGd>$J$h)XNZ;z7Gu!|CCMt;1DE zhml#Q7ooLHXAf^dzBQjFE!KY^=w(X55zZJ$L+VD8JqzdxfCg80*=QJaJrLg82VdgC zu9s8VxZiH@iICAw`;x6K8!EhtXyW{P#B}RPs9G3nRloab_edTa$cZ-yFX$=&02tw5 z5FnQkI@SSDviyW1+!=pjZqsu6u4a80PzdeK*+2g&frVDAv&|Q%G11e>CG4K1hg zkv~XM?DjaxCW#+ZV2)o$nCpGr7;{!I@J6G{gHAE$F9dS=} zIBmi*+k-p6y2)bEP;k!y7RXavOGl1^cK{uPWKL#($mTSB{{pb^faAg}I>P_M6GPj~ zU--`?B7xM07Tg$1d8#`b!y26NIBd5!(tyPw!ve#bv-LC`DjTXE_$ zyF>9e17-2@!~%#Ch{+vlD7#klDZ9W1H8MBQ<$FC@cUEsOS8$+$y6#6h;n}B$So$h? z+$EXUo}*B0ZR0Zukz4lcyGI)6r(~r;&#*Y=FC-VM47CbfPDk`3$8JoVLFVPoG8=W; zm5e4pam;7q`Sj{8H525oS5!N?p`a^yf-hUaLX~8RI^EC?d80D;A z>Z)FQuhAp-y+@LQzK~^5>WO_}8B4#2ow1Wo34KJ$#N%AL_pN86pdf-Ivw!7H zo>RhdTKc#Sv0YjSxyC!@DSKjL^xf@!4V#f+#aKhj(+w-;(C*Dyg}Ngb@h=UW_*o@B z`!;30v8t5Y3_B>M`G&m+L4CYCUhzsAS(T(t1ZbZxFP>yjo9zu+*t=rLV-@E38y5jV z6!e_3_{a+no|2(-rn#E9*^&nV2QU%*8eFW?*4|9TpsjOzSC8%S+miVYR;CtI)g>Eg z;f0HTm{|k(pAz%~i>7lkRl;^e?i`0Gua^`TJ@Z3NJX#-Otu>*nj*}Iv66CN!*r4Ao zU3nvG$Y*Dc-_&$%#_T-E@)xdfGAZvNwvrJYi#1egnv){5fdtNfT{_LW)X)39Q}VA&36|s?>kOPt+p$Wd)2T5qRND){9!&_<^KKdbA~J16@uwoeZ|+Q;P1(x^%3E5~_E$z6mt1M4 zc2k=bUDocKlLckXu{3sblig#rdf<}xeb_3N)FN)=y?^;4d9^C{f}f*L^{=S+gj~(3 z#${UNhPU^MVtkagIj*%=uIALUIfVaaPq0be3ma=X_4viQ-dn;Dz!X!UQ$VTGuTeJS zQ*N6SZUn0H;!~uo5Jb|*guy)U0-}LwN-*`Z&2&y zKN&T3Rg;{R%Fu1Etd4&(UO!_pY8%_`@KY1^4y2;f8~msdoPV6umORwZkS90#>%7E= z>67y?ww0$|q-;jr%{2DhxhbJ9ZW8O~PNH$Arg9DWB!7 z@xZK={O1*aK6*>YTR7EZXmG5>&z%>l_&ehVMNTBPrsgtan%LId+Jy;eYh0Iran7-? zB$9Rcv-%0Y=AF?xw@z4>QPwTuB`)TMtus%foc97!MAiL<4_2BIhO#;)f5)2fudXYm zClW8zQhIw8b^pPL70!sod<)lGQO!N^<6hm4-VdKT%qfUxEHW538852h)lKJ&)sGRR z)UOV7ouXP4QWaVfi<#Zv$W*nJNt~JxTFTe4xa-Q2K#RJ+Qu%tcb(}-~`(>F&RQMxF zjTg6HLsL({;!Aanrt`1ER^PR^%v25|3Tw;}#^nrMPD0R!&mx+GvwoywKJ%BY^}A%% zZ4++IC^b}g&cECiV4ar!l@QzY)Mdtow3HK7DQvUhulRtWfF%|BHt9Q~ip8U(k)b{D zDYep4BbryWc+-vW)>O9Cci}J|>9LDAN99^?tzJ%U#v$?|FS1|cKlq>eRuhv+awag4 z9g(aL&~5tt{T>MynU-I_1>pOGvTl{GZ??|WxtBZ&eZ2Z@wlf26X^0n%vuHjG4Xtc^ zZJt4wnnt>Ulq1VGG6c$s*YI9TNr%i0^2A?!Mm|>4)gQz9 zEEfl%`sd~~(Jgx=9xPH!h3~acdnTpyX_n4q23-X^I0VRI+`XClelWhkQBRao--o|6 zeQ5{#r`H_qa&mofI>JmNsp7`<)i~L%{1WYplrgb6!gg6M-J`EO^rr+a}G zoZJBSuT%3f8=_!v5Tq=S)@49yIiE9rw@RZoI_1ax_fWr?bV6e-ZTI?_>P1rMCo?abbmvrgsJ z)0s3uqwM;>O})OgpL*)l0D6(upUY9;)NgD|_zfXlMu%5>!kzNyRaxuT3>0%EydGGn z8W?p-T`KWuh30(E7IurdmT>8?>7e2`y7viDzBpSXSHXqaYKx>@F{e!=onCYNIa9u= z#dEjo=@-UYH4V?$$CeTc_2*YM?z_DZ1L`4;wc;q3=+4}V8qXu0D)!^whQ-%iL{~Xp%1uT9qUB&OS_@|XRZ(x~ z^u*@|ceNIqo=t{k>ZW{ znto5!`1-cbY*z8u@Z+x!FWf6r43zClM`I0b6)0On4!P0L@6%V|s`iLzH7y27>%f3sD_W&4b6ImA<) zwhd@15VFsKFWT(#9@yQFfPx8S0(3(_$JdsO*B73%;b@?Ida^r;Z4rVq7jM1E$y$jZ zmUiG0wNI%8xXXP zNdAZCo1Mb-AD;Wa8qp$P3*>nRdkn->Do4?$pTsYCzxpBqiogNw0s zF!H8!x@I1M#v*#+mRxHF3F+yDc0RzUHGMT!GZuD*255ZwcA^=g8mZqN>7-Upz2Iq*sF z{$V?A9uo_s?R2r2SY!d94GBNS0+)L>bO-nks8gR$2E-R^z_EC1SP|^355B>{eS_3IZzs;tI)9k8w zKvN%XdG7Cz%a%B@@Hzaq#p*LGa4}rXAa6wLwgV-(8?Fyg3zIlNI$I7nTLVzW2fmc$ zAvDtbtn|BP#&El`S^_nz*_+W{3P81E)-8I!s<&OUnn})rI@+ys<@g zz~vw{u+uj15*y;=>gu1W2Eq}%ip0Qh2b9r3Dg6KF?y&*7fCzvc5OZOg0+;tkI;|l1E_?qE@!*C( zPyrkTjuU|H{?Ad64&cpe_Z4q|I$-pF6g^9CHVcY|Mu8_;8E(`-Zd%@PglqrzMQ8*J zG_c@?r?CJ3(}<*M2yjILJ|Ks~|2p&;C5ya(Zm|gc-;9VG4Npi7{212=G=%|RG35Ls zHryx&0v!Z8kC_WUueyd_2;a~kf~)4jmvy&*+xUN25dV*j&9dd%ataYnQ*MveOEbQS za$Q*cn!yiJ<{J`>;EH8tQ#C9cj_v^*grWm*-SYmyZQ=R1^*OmraLZhf(kojY$g+hu zmZW13{S9@rIxFzdTJ|=N)<<pF2KPPAYt2T6XNEMUAaW zG&@J?F?!^Rs11nP;Xv7b3gQSCWTb!Z_oJvVnKuxgZ=~$*1KYO_&St@@ut>t=R<~6S z=}$3PvCJTgvg@T!_AFwg(&daYe%BykaCof7V?YGy zt;c^>p?%dEPej}dgGIw|d?-%0NN;IJR8rN~Qe58Fa<%~BgJtW1NV<9s*L)iy!7F;t zWkm16R9MGnC&95FSi5G!9&+iOd={Tonow>o0Vj&lPx>4ppTk{kkOgk_>Qq}>n8RxJ zxNbMzhpm*M@)w;7T_o`|Y{S@;j*r;AgDJC2>EHKeMTl&j?&j6?StYdq$A=+C5Gky*j|CWmg>(P43 z19#B+rrve<)zb8h-ewlLQn|sU+s8G-Ra!Pe@N5Itk8NoHAb`Qpyuk|cUJK$y_~qBm!9N`1NM1UsauAAhcPa4iEp0T?(D(3G=d)J~mA zk9u;FEEhY^VrEmq#gPaaD#S8aV(GWP#iqe9pvBgPyKUyg>%$d2iSatpW} zuucFE6X2Q5FuXqLRKcpEm8<+giH&LuvTDtGu@4sB7HsDL^Rs4)hH5>lBDi};c%d^U zHhS}McJMe)bWUdcTQ7uYzgYA&D4ClT&d8Vwr#qtEmUhwTixQ7A7!8DV;Pim8rh^3q zb_HK-zeMRv=x)>X;Jtep8qKUr7X|?*QC3L@PXt~7^-D)76JRYwH&7Z3oOiLag`V8!P_`!ZakbPN>5!nFmczFg@e z3Q9fU_jP$;Zr2^>*OEgO8b5o+zfXvL%T(`g4;qmjBuQlnAAxSJ`I9>mIK|Uh(7jGB zDx89n+U78J*L{-U6LBH1kxH_aPb9C2Kogyb#5;h{G>2(d4B(D<_A6+b8Weo4`t}fw z!~}R-X(hD09$^7u47r0>*epE#bSO0k*L8eO_a9gqAybFMo1(7~E90;>zWf*BO(_^pMcIBE!P`^>3A=G5dZcnB?F z|KTyMPnqF|?Y{hYFH|kETruokwvF;mPAciM-qAnSy_36W(eR1Pf)jtme2XUw^=E9c zeZaK-=_mnYueRNIZ#k&7Yfjy!QUtLlC;wCyVO6L-J8T&4>P>Q~Jkeg^*d^ zz4H*H%9ymyKl}q6ov*dId4|!js7{HwN($H+&zDS977&aAUX5Ttj1QQTf?lX=-Rx^# z`wUX~#`%}uPe)3qKN1_E<*TqdQd>!Opbb%+fIUsJe5q=`)fe73r@(5u4A>ii+pjNj zKUpjhPvi5@Ak~t+F+e+z2OqP|pUuzt6H~G2)TOnQJ7>t5+6jPcB@B?eNkFB;od=&o zg-nEKNM|Vg*)5-}EM!K!sgga98xEZ+Zz{d@c2-pZUnGPdJfiA(Cj7g1a@-0pgd}Ho z-@3j^MW4Z7mBgAr!|?SEt*F!kM+GUZA{_{tGxrZ1$!*>=jx)wUA?crG?_X^De3UsbLS&u1a0~Zl9MhHjDRFF~PEVHxF<{j+4}}_a9GDV2?L0tcePTI@ zeU0NMm1-3Cs}DHiI_%u4=)bqqXwvDw2ywFo)O4l6_HP;&V6f2V(!TKGo$ z%dH+!dylMlhh)S?Nk35PpjC5`EqhC({8KXikO&+c@WP@lu<4zt%%zE3DpIs=sE?ReAm2|O-SR^c=8X0&35$2Kb?)k=e}=12RYNjGC7fQlE?-+UW3*!U zn2O>##b{!DRwwE_S({EvbmgNJJhLCH97-AQW}hOa+O}1U}=OLg+yiOBMUoLntGEIz56T*$;bP>fAXoAKH3&Z_e>SF8GsPw3eM=$P% zM4JQ?*!cemGd1*W>eGm7aVXZ)&Mz-Zj{jO(+d#wB{51*5Eo_=7Fl*KWVeZ2NaYXV; zT~q&fEI*{-Wi`tm!nW|u1}`+47ty)goAiQEVmQN)_!L9i++SX9bN<0lU4bbn z4J08l>{fm2BYUS3kG-f8hsZI%dCU8mCv7H6)*eHRw^9G$*@8G$XRV_Qb$3gOCaLW* zhgLFp?%{=Js+gnPqc6OMESM{dPc6uvpFtiB1cN~z2*gBZ-cDGFy6{~+r|3v|`In_F z8M*NW{Yc*_%V}`%jX%LF=JLvJz{Tv=BSI&t^}hss$Cvk{Dx5DLY3%r97T%g#3%Bvm zI}{|W;g;UyT+1t~tx7B!Ei&x--kDlwFA^rVw$bd7Fur3rqmOE8Tyo+Zt7ly0v7R z3AAS_{&>7=@@A?|+eZRHrtUa}iouN6i-BA|d_s|j3Z|b%?6%VpxR7&K!@B|Ih zAo8szsIv7Q*7|wm8W+StZp4bcPIx=VhB_Hc)oXZHg5wv z*yqkl&+p55TG2l=bq7RlT=3dBZLTFgU)VviAM)|hbf}pj(W7cgX?D2VnU2MM4yXIn zU>X{^)+>9Z2SY^Qvqrx8Q;w|XK7V#s4_@i*tdog@;u6%GI&3AZUFCh^tjEGRNa?Q% z_5nJ@R&wtc!d!>TY0)IUwTfNIx?E_cisx4<(_5Q%AKTlm8k(u+c455SGsF6DA0y@* z#=Fb<9J;!NMpzC4p5VE7-$bgEthO^8x-{}xphaH}qw5ZvP171({=DXoECYp)_($)$ zT4h1c_^p^)6j)?4wUSYW*|ClfFF)727o!#$-&RM4!Cl)mtdvbb22v^NRIKrok4eEz zltmZk%-L@s_njkoDB?R|J=T05C#@I0LD}M+unZm9Attr0ALJr*e`uKDeZY^u_v!tS z*fD&#|EB|wgM6Pn2}1we;*J#?NQ0%Dq5fXAXd_6&{a~})k4mYEHO+x5i5;XlNpsPT zt>UE-6_uk}Pom?AiTugAaMj5WaeC!5>vLsg^+n5J{qj;)r;d9wtz5vWa?CJoGg3Pe z!nnORny4zq6=cVZ-kdy&<-C&5me>~Cn+gM+VhO;K-RK41t}+&6vUIKH5(bND*T z^VZqHFuf5|3u+zJN@=g>}0#IzEh0@!G{@ZmxOTA(XzRZ%09xe^ z>=<(mL9?BC-RvT?1YkdGEm-IbV6vfi(*mT^<`!UQD0c%`Aa2wZZk%`lb=4a@2rz~9 z500~)!v_j50>Er|P{)iB^_aZ~%kQgL>@*xn8oZUI*0mjC-(=~X)v`uhmz zZ3=qD>l@JW*ct$yg&yO4ah3u%$GX(jtP#FAxdDOz|KGehAHd z$bXG4`yXgjT8!CYMzUXQ3j+}y1MD0M@{M5S;4ffcehRu$L9jV#r#C>b3_wr!P!Ng> zKw8%fGQ*fG!VJt*B!m@sxKRC`M$?LjZI*Ea_UfMPNcBT91JQtS@a81UvSkwW@}iX= zAGatycbf+cyoBaYcc!d&Cbu#jSmQBUy+LAInf_PDXR0{Xb`gA<%S%ioTpkCYPJmBv zL2mGY%Ku*~3tGhY*`(;YeyHbCzLrnLz;WMlrr zb6VelXRNbVw`j|EDm|8nygI-hXOrRG%C;gTw|7K$o>$hdkxZN+339M7xkG2sNliLw;7%$5%V zziNlyR)Fqrd9`ulEK!yf|IPxKJ7J+(H_&7)+uqMDE6@HQ;Dl_l*H|Eb5p0Y>0v}j^ zUw!JAfDO0*7UBr8nF%~5qi@>ZJED3Z2Pu%mUO?8PgN|-4?v@!a=J+s+zA))mA0GAgvfbZ z)&O>+gO4nsm!k7}GdJiH&fM9880x`}O9Q@O8UDk&^E1P}%bG@om!UP?HCZf-BmOaK z)fqcHGcUo;*B`>x>t^iLFMpTEo*da*cf=_Z2;BY`z}?-7iGYb5V1vf z{B8GZVY!HprZrz&4o&1>6i4-3^D@R@PDtY^dRAYQzhc^#lrXW;LH6ST0KYEqt(`xO20s}Va|=XSR$C^B&% z!1&;~=yrH+&LYAvQmAwel_p?G6Zj#tfrgJAr4lEn`SjOWi0y6tLC5X&OD*j%`Bs=zv?2(? z1ACRjMnMp!cCK-2u zocX4-Q3)y*qZu-f6d$0Z^=@|>Td|Od^F)k}@S-%|5_7TgMhw0?Es+0yUD}+b+;yw_ zdFoY!rp;`Wi}$qu`G-#cv_#`KvxG*`Pm>^`fa{}INg0>EgN1?za?T>pF)vYn#P6Om zI-j1Lc?=u$O-rau6RzfnP{-?J$?5S7{OBCyVU~@I(42o?^XIK@NmpWPe^`#$Pm^#y zs(u~Wb8MQDPA(Y#Bd#s@<%HFM#teci37BLqn!Uze?7~18uS>hgjYuBS(luXVOE1N8 zVqW8|32pHzeZ;(@(n~>qt!anC9%;Ue@wP1u_Yo4tv^N=I;kvn-tKzR)UDohhaMz)Ir#&D0EPojY4XVrX-pWc*&ub4$2r?c3dJ8)P1@?CfAqOufKVE{vjRwnDzq!`&6){5WK*7`C(Ds)}+;U3b)N> z*ybM1s{F6Oo>k6P>b+V9L-2hU=ky=-^Y2moPs){kTaMO^wU?Fd)m^BBe)w$tur21x z-~Nf{7@C;a54X~4Bs)teANT$h6IOP&E9zfxRi$~(McZRYm(GN|TgBnfQ<;()GeRUW zwbm{N_@66BYcr8}#Jn3<`|z<8>-e}cWbT2_5$l??Zz?>e@Cy zD8=1fiWV=$-Q9}2yE_z@;uhSsSb^Z~?%LumL5dc4^2~X^nfbwDEjZaLft>7pUn)B) z_tRWpYlJ(u3=s&E%>4=JTDO0i168wLw*0Z#*>bc$#ji3Z4-NcKmv)JuCpMo8m-SBf zhtV2q=ovDyc8NB`VQdF6@!l(AdsF|>XqmJzA^*1!OF}=5V2AOMt-{F3x5-lckL>u~ zXAT(bXQ)N#_p2ZjX-U{&4X`g|P=zzhKq15-B^ygBmswHI;flIl*W3F}*=Ix$502f- zJPs)rE4~3Km$uOF``<`&k>(F88FKL%l{g6g&+{Y#87antzmwmBT@oAqE#PmUFi+mn z)CXV=IQ>dqR*W~o8CVuqlJ)MlEFPKmFw3?rCil_Wa4Cg(xm;?i zA7;x`0acPSlny2)4=c(lqjrfOr6NFg-~;wsh?Ui&s709iwB+}dtCY=fi!l?XW;7=e zSKr_qr)N^>c7z`ubY9kM?| zmC4{^4kTc>S@8eS4Laaif%GS<7$pplioJ zr(4wq?Sc+%9>hWWZswPQ^jE|CGxsyfG$$DV(2BosH!Ty(#6~|%QfFVNV9-mhSG#3$kQ8^aBIaCYs+`68sPyfun9-8o@Tp_jadeR_Hf{VUXdsak28iSp*ed1>uVO@a6toiuy~ zz$`$ghOi<$6YUvOH6u6YDpiiQBuxfmzC1j~k)CH(;Og#-KHos8t&$tPD#f+6oZr5C zyp>t4N4`CL#HS0~XVtqmi+w6=k~9?{IBd5wT-76f{9J4T3+PJSrxqEi@0SX&c@0{> z*EZR}1f547K2n{MTw%l{F{Re@PlbO}rhHd`!#P%hOy$886?<|`t8-;<*nZZnb6pF=%iFdzHc8Yl)e1e~6c zMn{fKY{O3HYk#H;pC{p$6Qgvm5>3%dBU6l5(9_(%la%mZj=>0l;y&DdBw5g^ecdu0c3J{EGlHdF)9ii&uvAlZOWGYIM2@R?q7~YvY_lr zHln~8JNaZR-i{*R`RT6n{-iLooCErOG{_AwQwRsJiQb=hot20tii$3b7SO!@Z~S;B zXY0P3y99=spf`x9&)mZ0+zn86xiES~BRV$?tPy>@Ks+nVd3HMnMDJB31W3(=KAr&e zjM+9Tlsa=1h1wQ3FCGQmHVfq@hY&lW=t5z(9-FtO_!k>tK-wXys%jW~Ys@hQG-?^K zNSFk9!~<1?Cyy3~w|8?px7XQ7g`)v?o!1+)R=~t|Og!D=k#$@l>Z2l3SOKNr*cI*m zzr3SN#hU!S0?r$t%x~%#R1gI883GNkg&@%ViD##<=-m6e-rF^Z=)`kzIOLsLeh?>f zl5f^3{`ikYBxlx(4M!r9IE4STWQC$m)$se~2UHihWf`7AEL=di0gQ{+!M>o^xT=!O z(;Dvr>P^jx=>gl(_Jt57k>lPI4KgEP1u)I$FV*oQ?rdGmNA$2c#KkcRRoIh|rAiYmx?u*gVN*cLI zWprLprUeDHCG?r8x-C3FRTqS&-Brn)$<*Q!89Hws?OHc3xdiDB>BxN5t3CdB=Ub7+ zvc_sLr|w!9W;9Q%M^u*Qdt_LL_vl27SQJK2m<#&wZv^&j>gJWQGZpMHfuTFB^Jz;WfEDWNx&pk~&| z&AyWMlBppb${|;F3O8mTW%u#xH=fbpHg{izo$SI>L}q(&fnSp}vcZj7^P84>WWpaT9wB{F*v>0-!>R~Fx^ zFH>0=hXD0Bws+(>4X^@isFw-Q7r#EVH9V*U^5d? z?3tS(Xc`u1?PTM+WK?5ZP;cwyof~YSR5dH-ZB5tT|HAb8r$xb=<=9^oZ+cY4;c632 z7(Oe)X>|BmIp>^Em+`t&q8L>)`p0Gtg2DKwlW}WyD{S+Hm=IKH+? z8U@wTFG?r02Gd@{q?quI-A;0sJu`_L=Uz7&4wJ7(psK6wg`u2xh(E4*z77e4ZVf&I z!A;qR=FU3Hqw4ZiV$)@%SOcF!mc`H2SL!-4?^f?pWwry)9Eh$6h6W?Da?PzS;69IOchc zZJY35Ttt1#_m5%Z4G$u~~-x2uiD=O0!4Q1pExsg4YS@K&qt=x?1mh2MqAYpcISu+Xq^ zN=BcMcwFOX^{95h+tNkMb>*4as??-;dXJ%p#9dn0?uN3x1nKY(N(eeKS=?A%_pP04 zFhNdkJWWsa;4xE~G0kFeKVO;0*sqoVuQ+wyPXi6EWe?sJ4=e80dQm;A&9x?@@6uG` z7R+q7;A(ukFT~7T@AL}mBy4_m28ZB{DXk=hYS)l;Ws9@Fycu(RWERcK6%I%AhROYj zu84RIhk?RpaZks-2bUa+J^|+f>TL#>zFle~*?+cq2)H~wbo37;rV!ePC_7uSMS5}X zQBMe6Eo#1In&D&IRPPW|UAia-y$gA3Z+%sUXsHhx3jE;uoA5Bwkq>P+i|Zp+~<^= z$EkqqW}3sHv=dhYonQA`)w&VcTx@a&WSy5w27T_4V|C66GCRukEB9A1%~1NP@@7+N z=)@nZU1!-XQ5C_nrYpXOcd?5uZif{(D}w;z#)vOiwO*g;m)N0T=rCQiKk#Rq zmnV5{s=Ap8rs9;YOsikAB$8naIl#4cM19MV_Nv*BX5Nz13+{ie{t#|ZubZ4~Idw~z zhJkXcHmJA6>$k^kp)6}|!Y*R^Jrf95vR}TN@j|Fh*&;dgOq1YEvqE_YX{%`T9Vf*# zmWwrc%(7_;s`TmmQ*acdgKlxL?(@zaHXdG;-o;|tIU+fl)GR*q1y_Av6HQNQKs78q z->2u*19zJ`&pXgX6*)ASaY&Lbv3q8E2y3T%-Kx4gfJLGwi4)aSqZ0Etaz_GE`5bzj z$aIT-gd=1yda(Rw)1sGV)LS4Ub&CBohufb_>|t+|Tb;_z@WG7~E=vMR7F7AS-1h74 zaiQOzxktqRVBjtXFZ(J)RfD$^_wE@~=PBg9|Cvi{Edwr&gN@2|+VPO0nU6V_O6|yY z9A|SzzoSV+)dkOB?_GK+V`{a2Sz+uird52g{Z;hy>=VgCCPexx(>^8STuoqT$Yrpz zfj@Bed+UA>;by>syYa-7U_n!Loc%rg0pWrOg@;Lxj~uwU~de$jjDB- zs!YAq;(Btiz3a*uTs}%zK_g+1MrT(O=G_pSPRrFZgP%~X8dG#r_QY@3(BBuaJ|urD z6Gpg*-H)Wy?F6Ndihe{k-*eI!v}bNi%=%1$j~Z8X{9f+KSX91-InoXAbmbgM(=SWX zIZ_fGsN>ctB~C3MS}`QM?HJ2GA5Uc>|IOGo^M0>tq_C2*+(pC2%d-F`IZBY4&JuA1cm54lZhB9Tx=E{+Y3lb$gBS& zD?UQma;6X7^Y+w~9&ewDR>&o#STZrMNjgS||B1?pOVC+=DJt~p!nXZl5PnW7-?S6B zo|`S}>*N>&W5GuH!x2_Sl6f5LB@Jv(HFKd*57RQHctL`8=8kGgY|>T;b;i_GsA zL3$81rL=NIDSyWm_4l2PYNs^w#!*`7(lbYgz{*Y;T}oJw9hGaNRy!Ye242IO6)5d8 zU)NZ|1O*sV7vG7GT>0cnBdE`KBxmMOEjc`t-vBwPPrcVPH89N`!C#1qjC)vhs}`Nt zETin9JH-7BW%OzuqXa)=#ZB|uyq;|UU0XAhBE8`EScXMU!eotj&cj63F+AKdrecZ(A{rQ7;X-Zl-|3$vwRc z$cP+S-Y%N_=}L5o5mxgdhmb>(>%fYvS;mEcKerDVMupP92L|xFNsAm_7P{!UOLIow6&*x9l zoVG7En66vZtPG6n}f74KyF3(Ex+`rywFp64AJO6N7cHe~x-AJXgE-w}wasyRQv zTdkyOi2O^`!?7Js`i@ayaj7wFz5>!)_15#rsV=vJ3vDw037-GPUmIS|vdkXRjJKRj zMyu=!&l~7NeKQK_I)Bt@*&s*6qpt145b0cx{)eyX-(a^9X2h*ic81foI#w|W&bdMm zoG&xqNOBxRK^er#7dhfYjvd`!(!cpiTpeMtOy76?Lyj7U5kb$kyxLjO9Do=;ID@MW z>R3HcH<)W;l-ZT4ZeM;9nVBOd&J8V;)tmmIqe8Z}{-}0?i>n8F?M|%S9x=OOIk

b%_o8pc>Wmc{xiJFe?CXd7|;tjTMPne{K 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

' end diff --git a/lib/showoff/compiler/variables.rb b/lib/showoff/compiler/variables.rb index 9b8c270fc..629d36634 100644 --- a/lib/showoff/compiler/variables.rb +++ b/lib/showoff/compiler/variables.rb @@ -33,7 +33,7 @@ def self.interpolate!(content) unless value.is_a?(String) msg = "#{match[0]} refers to a non-String data type (#{value.class})" msg = "#{match[0]}: not found in settings data" if value.nil? - @logger.warn(msg) + Showoff::Logger.warn(msg) next end diff --git a/lib/showoff/config.rb b/lib/showoff/config.rb index bda1eaeea..9f2aa34ee 100644 --- a/lib/showoff/config.rb +++ b/lib/showoff/config.rb @@ -89,9 +89,9 @@ def self.expand_sections end rescue => e - logger.error "There was a problem with the presentation file #{index}" - logger.error e.message - logger.debug e.backtrace + Showoff::Logger.error "There was a problem with the presentation file #{index}" + Showoff::Logger.error e.message + Showoff::Logger.debug e.backtrace sections = {} end diff --git a/lib/showoff/logger.rb b/lib/showoff/logger.rb new file mode 100644 index 000000000..34f39feea --- /dev/null +++ b/lib/showoff/logger.rb @@ -0,0 +1,15 @@ +require 'logger' +class Showoff::Logger + @@logger = Logger.new(STDERR) + @@logger.progname = 'Showoff' + @@logger.formatter = proc { |severity,datetime,progname,msg| "(#{progname}) #{severity}: #{msg}\n" } + @@logger.level = Showoff::State.get(:verbose) ? Logger::DEBUG : Logger::WARN + @@logger.level = Logger::WARN + + [:debug, :info, :warn, :error, :fatal].each do |meth| + define_singleton_method(meth) do |msg| + @@logger.send(meth, msg) + end + end + +end diff --git a/lib/showoff/presentation/slide.rb b/lib/showoff/presentation/slide.rb index a775c6bf4..9db512c1e 100644 --- a/lib/showoff/presentation/slide.rb +++ b/lib/showoff/presentation/slide.rb @@ -63,7 +63,7 @@ def setOptions!(options) when 'transition' @transition = val else - $logger.warning "Unknown slide option: #{key}=#{val}" + Showoff::Logger.warn "Unknown slide option: #{key}=#{val}" end end end diff --git a/lib/showoff_ng.rb b/lib/showoff_ng.rb index dc84d4f1f..65edc9110 100644 --- a/lib/showoff_ng.rb +++ b/lib/showoff_ng.rb @@ -4,6 +4,7 @@ class Showoff require 'showoff/presentation' require 'showoff/state' require 'showoff/locale' + require 'showoff/logger' GEMROOT = File.expand_path(File.join(File.dirname(__FILE__), '..')) @@ -53,7 +54,7 @@ def self.makeSnapshot(presentation) begin FileUtils.copy(src, dest) rescue Errno::ENOENT => e - puts "Missing source file: #{path}" + Showoff::Logger.warn "Missing source file: #{path}" end end end @@ -79,15 +80,15 @@ def self.generatePDF rescue RuntimeError => e if File.exist? output - puts "Your PDF was generated, but PDFkit reported an error. Inspect the file #{output} for suitability." - puts "You might try loading `static/index.html` in a web browser and checking the developer console for 404 errors." + Showoff::Logger.warn "Your PDF was generated, but PDFkit reported an error. Inspect the file #{output} for suitability." + Showoff::Logger.warn "You might try loading `static/index.html` in a web browser and checking the developer console for 404 errors." else - puts "Generating your PDF with wkhtmltopdf was not successful." - puts "Try running the following command manually to see what it's failing on." - puts e.message.sub('--quiet', '') + Showoff::Logger.error "Generating your PDF with wkhtmltopdf was not successful." + Showoff::Logger.error "Try running the following command manually to see what it's failing on." + Showoff::Logger.error e.message.sub('--quiet', '') end rescue LoadError - puts 'Generating a PDF version of your presentation requires the `pdfkit` gem.' + Showoff::Logger.error 'Generating a PDF version of your presentation requires the `pdfkit` gem.' end end From 6fb72bf23e7c6c8cc2896704b6fd41682ae09232 Mon Sep 17 00:00:00 2001 From: Ben Ford Date: Fri, 31 Jan 2020 12:43:14 +0100 Subject: [PATCH 46/46] Extends support back to Ruby 2.0 This monkeypatches some core libraries.... I don't know that I'm ok with it, but at the same time, I don't want to build in big icky hacks to make it work on old Ruby. With this approach, when we decide to drop 2.0, we can just yank the monkeypatches.rb file and be done with it. --- .travis.yml | 1 + Gemfile.ruby-2.0.x | 25 ++++++++++++++++++++ lib/showoff/compiler/form.rb | 9 +++++--- lib/showoff/compiler/glossary.rb | 15 ++++++++---- lib/showoff/compiler/notes.rb | 3 ++- lib/showoff/compiler/table_of_contents.rb | 6 +++-- lib/showoff/monkeypatches.rb | 28 +++++++++++++++++++++++ lib/showoff_ng.rb | 2 ++ 8 files changed, 78 insertions(+), 11 deletions(-) create mode 100644 Gemfile.ruby-2.0.x create mode 100644 lib/showoff/monkeypatches.rb diff --git a/.travis.yml b/.travis.yml index 63fa515e7..390fda041 100644 --- a/.travis.yml +++ b/.travis.yml @@ -14,6 +14,7 @@ matrix: include: - rvm: 2.0 env: "CHECK=spec" + gemfile: Gemfile.ruby-2.0.x - rvm: 2.3 env: "CHECK=spec" diff --git a/Gemfile.ruby-2.0.x b/Gemfile.ruby-2.0.x new file mode 100644 index 000000000..19b2d3e6b --- /dev/null +++ b/Gemfile.ruby-2.0.x @@ -0,0 +1,25 @@ +source 'https://rubygems.org' + +gemspec + +gem 'public_suffix', '2.0.5' +gem 'i18n', '1.2.0' +gem 'nokogiri', '1.6.8.1' + +group :development do + gem "turn" + gem "rack-test" + gem "pdf-inspector" +end + +group :optional do + gem "pdfkit" +end + +group :test do + gem 'rake' + gem 'rspec' + gem 'pry' +end + +gem 'rack-contrib' diff --git a/lib/showoff/compiler/form.rb b/lib/showoff/compiler/form.rb index 66a4457ec..cf283608d 100644 --- a/lib/showoff/compiler/form.rb +++ b/lib/showoff/compiler/form.rb @@ -18,15 +18,18 @@ def self.render!(doc, options={}) return unless title begin - tools = Nokogiri::XML::Node.new('div', doc).add_class('tools') + tools = Nokogiri::XML::Node.new('div', doc) + tools.add_class('tools') doc.add_child(tools) - button = Nokogiri::XML::Node.new('input', doc).add_class('display') + button = Nokogiri::XML::Node.new('input', doc) + button.add_class('display') button.set_attribute('type', 'button') button.set_attribute('value', I18n.t('forms.display')) tools.add_child(button) - submit = Nokogiri::XML::Node.new('input', doc).add_class('save') + submit = Nokogiri::XML::Node.new('input', doc) + submit.add_class('save') submit.set_attribute('type', 'submit') submit.set_attribute('value', I18n.t('forms.save')) submit.set_attribute('disabled', 'disabled') diff --git a/lib/showoff/compiler/glossary.rb b/lib/showoff/compiler/glossary.rb index e314aaf64..90aab0852 100644 --- a/lib/showoff/compiler/glossary.rb +++ b/lib/showoff/compiler/glossary.rb @@ -25,7 +25,8 @@ def self.render!(doc) glossary = (item.attr('class').split - ['callout', 'glossary']).first address = glossary ? "#{glossary}/#{$2}" : $2 - link = Nokogiri::XML::Node.new('a', doc).add_class('processed label') + link = Nokogiri::XML::Node.new('a', doc) + link.add_class('processed label') link.set_attribute('href', "glossary://#{address}") link.content = $1 @@ -51,7 +52,8 @@ def self.render!(doc) label = link.clone label.add_class('label processed') - definition = Nokogiri::XML::Node.new('p', doc).add_class("callout glossary #{name}") + definition = Nokogiri::XML::Node.new('p', doc) + definition.add_class("callout glossary #{name}") definition.set_attribute('data-term', term) definition.set_attribute('data-text', text) definition.set_attribute('data-target', target) @@ -84,7 +86,8 @@ def self.render!(doc) def self.generatePage!(doc) doc.search('.slide.glossary .content').each do |glossary| name = (glossary.attr('class').split - ['content', 'glossary']).first - list = Nokogiri::XML::Node.new('ul', doc).add_class('glossary terms') + list = Nokogiri::XML::Node.new('ul', doc) + list.add_class('glossary terms') seen = [] doc.search('.callout.glossary').each do |item| @@ -117,11 +120,13 @@ def self.generatePage!(doc) entry = Nokogiri::XML::Node.new('li', doc) - label = Nokogiri::XML::Node.new('a', doc).add_class('label') + label = Nokogiri::XML::Node.new('a', doc) + label.add_class('label') label.set_attribute('id', anchor) label.content = term - link = Nokogiri::XML::Node.new('a', doc).add_class('return') + link = Nokogiri::XML::Node.new('a', doc) + label.add_class('return') link.set_attribute('href', "##{href}") link.content = '↩' diff --git a/lib/showoff/compiler/notes.rb b/lib/showoff/compiler/notes.rb index 3da27595c..25e32cc84 100644 --- a/lib/showoff/compiler/notes.rb +++ b/lib/showoff/compiler/notes.rb @@ -28,7 +28,8 @@ def self.render!(doc, profile, options = {}) # Don't bother creating this if we don't want to use it next unless Showoff::Config.includeNotes?(klass) - notes = Nokogiri::XML::Node.new('div', doc).add_class("notes-section #{klass}") + notes = Nokogiri::XML::Node.new('div', doc) + notes.add_class("notes-section #{klass}") nodes = [] iter = p.next_sibling until iter.text == '~~~ENDSECTION~~~' do diff --git a/lib/showoff/compiler/table_of_contents.rb b/lib/showoff/compiler/table_of_contents.rb index 7daddd84d..52b9639f3 100644 --- a/lib/showoff/compiler/table_of_contents.rb +++ b/lib/showoff/compiler/table_of_contents.rb @@ -26,7 +26,8 @@ def self.generate!(doc) title = heads.empty? ? slide['data-title'] : heads.first.text href = "##{slide['id']}" - entry = Nokogiri::XML::Node.new('li', doc).add_class('tocentry') + entry = Nokogiri::XML::Node.new('li', doc) + entry.add_class('tocentry') link = Nokogiri::XML::Node.new('a', doc) link.set_attribute('href', href) link.content = title @@ -35,7 +36,8 @@ def self.generate!(doc) if (section and slide['data-section'] == section['data-section']) section.add_child(entry) else - section = Nokogiri::XML::Node.new('ol', doc).add_class('major') + section = Nokogiri::XML::Node.new('ol', doc) + section.add_class('major') section.set_attribute('data-section', slide['data-section']) entry.add_child(section) toc.add_child(entry) diff --git a/lib/showoff/monkeypatches.rb b/lib/showoff/monkeypatches.rb new file mode 100644 index 000000000..6fc586abf --- /dev/null +++ b/lib/showoff/monkeypatches.rb @@ -0,0 +1,28 @@ +# Yay for Ruby 2.0! +class Hash + unless Hash.method_defined? :dig + def dig(*args) + args.reduce(self) do |iter, arg| + break nil unless iter.is_a? Enumerable + break nil unless iter.include? arg + iter[arg] + end + end + end + +end + +class Nokogiri::XML::Element + unless Nokogiri::XML::Element.method_defined? :add_class + def add_class(classlist) + self[:class] = [self[:class], classlist].join(' ') + end + end + + unless Nokogiri::XML::Element.method_defined? :classes + def classes + self[:class] ? self[:class].split(' ') : [] + end + end + +end diff --git a/lib/showoff_ng.rb b/lib/showoff_ng.rb index 65edc9110..5174da85a 100644 --- a/lib/showoff_ng.rb +++ b/lib/showoff_ng.rb @@ -6,6 +6,8 @@ class Showoff require 'showoff/locale' require 'showoff/logger' + require 'showoff/monkeypatches' + GEMROOT = File.expand_path(File.join(File.dirname(__FILE__), '..')) def self.do_static(args, options)