SlideShare uma empresa Scribd logo
1 de 55
Designing and
  building for the
EDITOR EXPERIENCE


         Andreas Sahle - @pixelmord
Who is an editor?

★Roles in real life
• Content Author
• Editor
• Translator
• Asset Manager
                   Andreas Sahle - @pixelmord
Design for roles




        Andreas Sahle - @pixelmord
Roles
• Set up roles like editor and
  translator ...

• Start testing early with user stories
  and personas

• the permission system is no
  replacement for an interface
  strategy

                    Andreas Sahle - @pixelmord
What does an editor
      want?
• create pages
• add/edit content
• find and select content / link
  content

• add menu item
• translate text
                   Andreas Sahle - @pixelmord
How do editors
      think?

★editors think in pages
• how shall a “page” look like?


                   Andreas Sahle - @pixelmord
Automatic vs.
    manual pages
• most websites are a mixture of
  automatic and manual page creation

• the hard part is defining the
  separation of editable and
  „automatic“



                   Andreas Sahle - @pixelmord
How do editors
      think?
★everything is content
• „I want to add a picture here”
• „I want to translate this text”
• „I want to add another item to the
  list“
                   Andreas Sahle - @pixelmord
everything is content




http://drupal.org/node/1175694


                                 Andreas Sahle - @pixelmord
Is there an editing
      mode?
• One theme for everything vs.
  separation in „admin“ and
  „frontend“ theme

• Crossing the line between
  „backend” and „frontend”

• Seven is not enough
                  Andreas Sahle - @pixelmord
Where Drupal
    makes our life
• chronological order is often reverse
• no distinct system for structuring
  content

• to much interface – total control
• the configuration and editing
  options are all over the place

                    Andreas Sahle - @pixelmord
Where Drupal
    makes our life
★more additional functionality leads
  to loss of consistency
 • Taxonomy for categorizing, for menu
   structure, for switching options

 • standard menu, menu block, taxonomy
   menu

 • drupal blocks, views blocks, views
   content panes, node blocks , minipanels

                     Andreas Sahle - @pixelmord
Where Drupal
    makes our life
★we are building with a
  framework
• great architecture
• hook_world_alter
• there’s a module for that
• a big community
                   Andreas Sahle - @pixelmord
Interface should be
simple and intuitive


          Andreas Sahle - @pixelmord
simple and intuitive

• fast & efficient
• avoid confusion
• remove „clutter“

                     Andreas Sahle - @pixelmord
Do editors need
      HELP?
★Sometimes less help is more
• don’t think help text, think „wizard”
• don’t think help text, think „action
  button”

• rubik style help tips
                    Andreas Sahle - @pixelmord
No help here....




                   Andreas Sahle - @pixelmord
Heeeeeeeelp!




•   help - http://www.flickr.com/photos/loop_oh/4541019515/



                                                     Andreas Sahle - @pixelmord
Most important action




                        Andreas Sahle - @pixelmord
ready for action




                   Andreas Sahle - @pixelmord
ready for action




                   Andreas Sahle - @pixelmord
buttons FTW




              Andreas Sahle - @pixelmord
help when needed




                   Andreas Sahle - @pixelmord
Visual guidance




                  Andreas Sahle - @pixelmord
Step by step




               Andreas Sahle - @pixelmord
finally.....




      Andreas Sahle - @pixelmord
Node forms

• long forms
• „advanced“ options
• content vs. attributes
• content vs. meta data

                   Andreas Sahle - @pixelmord
separate content from attributes




                       Andreas Sahle - @pixelmord
what is important?




                     Andreas Sahle - @pixelmord
Content editing form for D8




                      Andreas Sahle - @pixelmord
WYSI(N)WYG

• naming of input formats is
  important:
  “text editor” vs. FilteredHTML

• do we really need more than one
  text format?

• just 10 buttons, show all of them
                   Andreas Sahle - @pixelmord
Form widgets

• text - placeholder
• selectbox from hell
• client side validation
• autocomplete - yes or no?

                  Andreas Sahle - @pixelmord
add placeholder support




                      Andreas Sahle - @pixelmord
Finding the right
     widget
  or „the select box from hell“




                 Andreas Sahle - @pixelmord
multiselect




                               • http://drupal.org/project/multiselect
chosen




• http://drupal.org/project/chosen
                                         Andreas Sahle - @pixelmord
multiple selects




select or other




 • http://drupal.org/project/select_or_other      • http://drupal.org/project/multiple_selects

                                               Andreas Sahle - @pixelmord
pick a date




http://drupal.org/project/date_popup_authored



 prevent validation failure




• http://drupal.org/project/maxlength
                                                Andreas Sahle - @pixelmord
Finding and
 selecting content

• I wish we had an autocomplete....
• autocomplete is not always the best
  solution




                   Andreas Sahle - @pixelmord
not complete




               Andreas Sahle - @pixelmord
autocomplete with meta data




 • http://drupal.org/project/linkit
                                      Andreas Sahle - @pixelmord
putting things in the „right“ order +
enhancing the autocomplete




•   http://drupal.org/project/nodeconnect


•   http://drupal.org/project/references_dialog




                                  Andreas Sahle - @pixelmord
one step further: select using a view




  •   http://drupal.org/sandbox/floretan/1478684

                               Andreas Sahle - @pixelmord
create content in the process
of placing it into a panel




  •   http://drupal.org/sandbox/floretan/1478684




                               Andreas Sahle - @pixelmord
create menu item and a new content in one




                      Andreas Sahle - @pixelmord
Validation and
        errors

• see errors fast
• connect error messages with the
  field in which they occurred




                   Andreas Sahle - @pixelmord
client side validation




• why wait for a page reload to find
    out that you forgot filling in a field?

•   http://drupal.org/project/clientside_validation



• HTML5 elements
•   http://drupal.org/project/html5_tools




                                  Andreas Sahle - @pixelmord
See the messages right where the error occurred




•   http://drupal.org/project/inline_messages




                                  Andreas Sahle - @pixelmord
simple and intuitive

• fast & efficient
• avoid confusion
★remove „clutter“

                     Andreas Sahle - @pixelmord
Streamlining the interface




•   clutter keyboard - http://www.flickr.com/photos/abhi_ryan/2444817523/


                                                               Andreas Sahle - @pixelmord
Admin menu is made for admins




                    Andreas Sahle - @pixelmord
avoid „dead“ links




                     Andreas Sahle - @pixelmord
Only what an editor needs




★Give the editor role a seperate
   menu

• what are the (most recent) edits?
• where can I change the menu?
• what translation tasks are
   unfinished?

                      Andreas Sahle - @pixelmord
dashboard overview




• http://drupal.org/project/workbench

                                        Andreas Sahle - @pixelmord
Build custom admin
       pages
•http://drupal.org/project/
 context_admin




                 Andreas Sahle - @pixelmord
Thank You !

See you in Munich
   @Drupalcon

        Andreas Sahle - @pixelmord

Mais conteúdo relacionado

Destaque (7)

Webpage Creation
Webpage CreationWebpage Creation
Webpage Creation
 
La violencia de género
La violencia de géneroLa violencia de género
La violencia de género
 
WYSIWYG Is a Lie
WYSIWYG Is a LieWYSIWYG Is a Lie
WYSIWYG Is a Lie
 
Building better content creation with wysiwyg fields and custom formatters
Building better content creation with wysiwyg fields and custom formattersBuilding better content creation with wysiwyg fields and custom formatters
Building better content creation with wysiwyg fields and custom formatters
 
Web designp pt
Web designp ptWeb designp pt
Web designp pt
 
Pulloverntsipic
PulloverntsipicPulloverntsipic
Pulloverntsipic
 
Xml ppt
Xml pptXml ppt
Xml ppt
 

Semelhante a Designing and building for the editor experience

Freelancer Weapons of mass productivity
Freelancer Weapons of mass productivityFreelancer Weapons of mass productivity
Freelancer Weapons of mass productivity
Gregg Coppen
 
The Coding Designer's Survival Kit - Capital Camp
The Coding Designer's Survival Kit - Capital CampThe Coding Designer's Survival Kit - Capital Camp
The Coding Designer's Survival Kit - Capital Camp
canarymason
 
Atlanta Drupal User Group (ADUG)
Atlanta Drupal User Group (ADUG) Atlanta Drupal User Group (ADUG)
Atlanta Drupal User Group (ADUG)
Mediacurrent
 
Managing Responsive Design Projects
Managing Responsive Design ProjectsManaging Responsive Design Projects
Managing Responsive Design Projects
Andrew Smyk
 
Branding Essentials for Developers presentation at TEC2012
Branding Essentials for Developers presentation at TEC2012Branding Essentials for Developers presentation at TEC2012
Branding Essentials for Developers presentation at TEC2012
Sentri
 

Semelhante a Designing and building for the editor experience (20)

Crawling, indexing, ranking: Make the search engine crawlers and algorithms y...
Crawling, indexing, ranking: Make the search engine crawlers and algorithms y...Crawling, indexing, ranking: Make the search engine crawlers and algorithms y...
Crawling, indexing, ranking: Make the search engine crawlers and algorithms y...
 
Freelancer Weapons of mass productivity
Freelancer Weapons of mass productivityFreelancer Weapons of mass productivity
Freelancer Weapons of mass productivity
 
Must-have! PM Tools (Nov 2010)
Must-have! PM Tools (Nov 2010)Must-have! PM Tools (Nov 2010)
Must-have! PM Tools (Nov 2010)
 
Big(D)esign 2011: Portfolios for the Creative Professional
Big(D)esign 2011: Portfolios for the Creative ProfessionalBig(D)esign 2011: Portfolios for the Creative Professional
Big(D)esign 2011: Portfolios for the Creative Professional
 
Managing Responsive Design Projects
Managing Responsive Design ProjectsManaging Responsive Design Projects
Managing Responsive Design Projects
 
Managing Responsive Design Projects
Managing Responsive Design ProjectsManaging Responsive Design Projects
Managing Responsive Design Projects
 
The Coding Designer's Survival Kit - Capital Camp
The Coding Designer's Survival Kit - Capital CampThe Coding Designer's Survival Kit - Capital Camp
The Coding Designer's Survival Kit - Capital Camp
 
Introduction to Business for Software Developers
Introduction to Business for Software DevelopersIntroduction to Business for Software Developers
Introduction to Business for Software Developers
 
Atlanta Drupal User Group (ADUG)
Atlanta Drupal User Group (ADUG) Atlanta Drupal User Group (ADUG)
Atlanta Drupal User Group (ADUG)
 
Managing Responsive Design Projects
Managing Responsive Design ProjectsManaging Responsive Design Projects
Managing Responsive Design Projects
 
FITC - Exploring Art-Directed Responsive Images
FITC - Exploring Art-Directed Responsive ImagesFITC - Exploring Art-Directed Responsive Images
FITC - Exploring Art-Directed Responsive Images
 
Performance - When, What and How
Performance - When, What and HowPerformance - When, What and How
Performance - When, What and How
 
From marketplace to WordPress - WordCamp Belfast
From marketplace to WordPress - WordCamp BelfastFrom marketplace to WordPress - WordCamp Belfast
From marketplace to WordPress - WordCamp Belfast
 
Dev-Centered UX (UX Week 2014)
Dev-Centered UX (UX Week 2014)Dev-Centered UX (UX Week 2014)
Dev-Centered UX (UX Week 2014)
 
Branding Essentials for Developers presentation at TEC2012
Branding Essentials for Developers presentation at TEC2012Branding Essentials for Developers presentation at TEC2012
Branding Essentials for Developers presentation at TEC2012
 
How to be a contributor to Drupal by Drupalista.me
How to be a contributor to Drupal by Drupalista.meHow to be a contributor to Drupal by Drupalista.me
How to be a contributor to Drupal by Drupalista.me
 
Geekend 2012 - Jumping Into Tumblr Theme Development
Geekend 2012 - Jumping Into Tumblr Theme DevelopmentGeekend 2012 - Jumping Into Tumblr Theme Development
Geekend 2012 - Jumping Into Tumblr Theme Development
 
SharePoint Usability and Design Tips for Non Designers
SharePoint Usability and Design Tips for Non DesignersSharePoint Usability and Design Tips for Non Designers
SharePoint Usability and Design Tips for Non Designers
 
Blogging with drupal
Blogging with drupalBlogging with drupal
Blogging with drupal
 
Jumpstart Your Web App
Jumpstart Your Web AppJumpstart Your Web App
Jumpstart Your Web App
 

Último

Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
giselly40
 

Último (20)

08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 

Designing and building for the editor experience

  • 1. Designing and building for the EDITOR EXPERIENCE Andreas Sahle - @pixelmord
  • 2. Who is an editor? ★Roles in real life • Content Author • Editor • Translator • Asset Manager Andreas Sahle - @pixelmord
  • 3. Design for roles Andreas Sahle - @pixelmord
  • 4. Roles • Set up roles like editor and translator ... • Start testing early with user stories and personas • the permission system is no replacement for an interface strategy Andreas Sahle - @pixelmord
  • 5. What does an editor want? • create pages • add/edit content • find and select content / link content • add menu item • translate text Andreas Sahle - @pixelmord
  • 6. How do editors think? ★editors think in pages • how shall a “page” look like? Andreas Sahle - @pixelmord
  • 7. Automatic vs. manual pages • most websites are a mixture of automatic and manual page creation • the hard part is defining the separation of editable and „automatic“ Andreas Sahle - @pixelmord
  • 8. How do editors think? ★everything is content • „I want to add a picture here” • „I want to translate this text” • „I want to add another item to the list“ Andreas Sahle - @pixelmord
  • 10. Is there an editing mode? • One theme for everything vs. separation in „admin“ and „frontend“ theme • Crossing the line between „backend” and „frontend” • Seven is not enough Andreas Sahle - @pixelmord
  • 11. Where Drupal makes our life • chronological order is often reverse • no distinct system for structuring content • to much interface – total control • the configuration and editing options are all over the place Andreas Sahle - @pixelmord
  • 12. Where Drupal makes our life ★more additional functionality leads to loss of consistency • Taxonomy for categorizing, for menu structure, for switching options • standard menu, menu block, taxonomy menu • drupal blocks, views blocks, views content panes, node blocks , minipanels Andreas Sahle - @pixelmord
  • 13. Where Drupal makes our life ★we are building with a framework • great architecture • hook_world_alter • there’s a module for that • a big community Andreas Sahle - @pixelmord
  • 14. Interface should be simple and intuitive Andreas Sahle - @pixelmord
  • 15. simple and intuitive • fast & efficient • avoid confusion • remove „clutter“ Andreas Sahle - @pixelmord
  • 16. Do editors need HELP? ★Sometimes less help is more • don’t think help text, think „wizard” • don’t think help text, think „action button” • rubik style help tips Andreas Sahle - @pixelmord
  • 17. No help here.... Andreas Sahle - @pixelmord
  • 18. Heeeeeeeelp! • help - http://www.flickr.com/photos/loop_oh/4541019515/ Andreas Sahle - @pixelmord
  • 19. Most important action Andreas Sahle - @pixelmord
  • 20. ready for action Andreas Sahle - @pixelmord
  • 21. ready for action Andreas Sahle - @pixelmord
  • 22. buttons FTW Andreas Sahle - @pixelmord
  • 23. help when needed Andreas Sahle - @pixelmord
  • 24. Visual guidance Andreas Sahle - @pixelmord
  • 25. Step by step Andreas Sahle - @pixelmord
  • 26. finally..... Andreas Sahle - @pixelmord
  • 27. Node forms • long forms • „advanced“ options • content vs. attributes • content vs. meta data Andreas Sahle - @pixelmord
  • 28. separate content from attributes Andreas Sahle - @pixelmord
  • 29. what is important? Andreas Sahle - @pixelmord
  • 30. Content editing form for D8 Andreas Sahle - @pixelmord
  • 31. WYSI(N)WYG • naming of input formats is important: “text editor” vs. FilteredHTML • do we really need more than one text format? • just 10 buttons, show all of them Andreas Sahle - @pixelmord
  • 32. Form widgets • text - placeholder • selectbox from hell • client side validation • autocomplete - yes or no? Andreas Sahle - @pixelmord
  • 33. add placeholder support Andreas Sahle - @pixelmord
  • 34. Finding the right widget or „the select box from hell“ Andreas Sahle - @pixelmord
  • 35. multiselect • http://drupal.org/project/multiselect chosen • http://drupal.org/project/chosen Andreas Sahle - @pixelmord
  • 36. multiple selects select or other • http://drupal.org/project/select_or_other • http://drupal.org/project/multiple_selects Andreas Sahle - @pixelmord
  • 37. pick a date http://drupal.org/project/date_popup_authored prevent validation failure • http://drupal.org/project/maxlength Andreas Sahle - @pixelmord
  • 38. Finding and selecting content • I wish we had an autocomplete.... • autocomplete is not always the best solution Andreas Sahle - @pixelmord
  • 39. not complete Andreas Sahle - @pixelmord
  • 40. autocomplete with meta data • http://drupal.org/project/linkit Andreas Sahle - @pixelmord
  • 41. putting things in the „right“ order + enhancing the autocomplete • http://drupal.org/project/nodeconnect • http://drupal.org/project/references_dialog Andreas Sahle - @pixelmord
  • 42. one step further: select using a view • http://drupal.org/sandbox/floretan/1478684 Andreas Sahle - @pixelmord
  • 43. create content in the process of placing it into a panel • http://drupal.org/sandbox/floretan/1478684 Andreas Sahle - @pixelmord
  • 44. create menu item and a new content in one Andreas Sahle - @pixelmord
  • 45. Validation and errors • see errors fast • connect error messages with the field in which they occurred Andreas Sahle - @pixelmord
  • 46. client side validation • why wait for a page reload to find out that you forgot filling in a field? • http://drupal.org/project/clientside_validation • HTML5 elements • http://drupal.org/project/html5_tools Andreas Sahle - @pixelmord
  • 47. See the messages right where the error occurred • http://drupal.org/project/inline_messages Andreas Sahle - @pixelmord
  • 48. simple and intuitive • fast & efficient • avoid confusion ★remove „clutter“ Andreas Sahle - @pixelmord
  • 49. Streamlining the interface • clutter keyboard - http://www.flickr.com/photos/abhi_ryan/2444817523/ Andreas Sahle - @pixelmord
  • 50. Admin menu is made for admins Andreas Sahle - @pixelmord
  • 51. avoid „dead“ links Andreas Sahle - @pixelmord
  • 52. Only what an editor needs ★Give the editor role a seperate menu • what are the (most recent) edits? • where can I change the menu? • what translation tasks are unfinished? Andreas Sahle - @pixelmord
  • 54. Build custom admin pages •http://drupal.org/project/ context_admin Andreas Sahle - @pixelmord
  • 55. Thank You ! See you in Munich @Drupalcon Andreas Sahle - @pixelmord

Notas do Editor

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n
  45. \n
  46. \n
  47. \n
  48. \n
  49. \n
  50. \n
  51. \n
  52. \n
  53. \n
  54. \n
  55. \n