SlideShare a Scribd company logo
Big Websites
Diana Montalion Dupuis : @dianadupuis
 previously: @mooncougar
Robert Ristroph : @robgr

Drupal powers many small-to-medium websites, from personal
blogs to company intranets. Drupal also powers big sites like
The Economist and The White House. How are the big sites
different from the small ones?



Four Kitchens : @fourkitchens
With a lot of caching




Dallas Drupal Days 2011
Before big websites
Before big websites
• Clients would come to me and ask me to build
them a website.
Before big websites
• Clients would come to me and ask me to build
them a website.
• I would build them a website.
I would . . .
I would . . .
• meet with a client, define their business goals and
technical needs, create a site plan.
I would . . .
• meet with a client, define their business goals and
technical needs, create a site plan.
• download and install a CMS (usually Drupal).
I would . . .
• meet with a client, define their business goals and
technical needs, create a site plan.
• download and install a CMS (usually Drupal).
• download, install and configure modules or plug-
ins.
I would . . .
• meet with a client, define their business goals and
technical needs, create a site plan.
• download and install a CMS (usually Drupal).
• download, install and configure modules or plug-
ins.
• sometimes install and configure compatible apps
like CiviCRM or a shopping cart.
I would . . .
• meet with a client, define their business goals and
technical needs, create a site plan.
• download and install a CMS (usually Drupal).
• download, install and configure modules or plug-
ins.
• sometimes install and configure compatible apps
like CiviCRM or a shopping cart.
• merge some data, maybe.
I would . . .
• meet with a client, define their business goals and
technical needs, create a site plan.
• download and install a CMS (usually Drupal).
• download, install and configure modules or plug-
ins.
• sometimes install and configure compatible apps
like CiviCRM or a shopping cart.
• merge some data, maybe.
• build a theme, install it, and cross-browser test.
I would . . .
• meet with a client, define their business goals and
technical needs, create a site plan.
• download and install a CMS (usually Drupal).
• download, install and configure modules or plug-
ins.
• sometimes install and configure compatible apps
like CiviCRM or a shopping cart.
• merge some data, maybe.
• build a theme, install it, and cross-browser test.
• rebuild the theme for IE6.
I would . . .
I would . . .
• sprinkle on (just enough) javascript.
I would . . .
• sprinkle on (just enough) javascript.
• log in as user 1 and click configuration buttons.
I would . . .
• sprinkle on (just enough) javascript.
• log in as user 1 and click configuration buttons.
• teach the user how to use their site.
Afterwards,
Afterwards,
• clients called me when they had a problem.
Afterwards,
• clients called me when they had a problem.
• I would fix it.
Simpler times
Simpler times
• Caching was a browser issue. "Did you clear your
cache?"
Simpler times
• Caching was a browser issue. "Did you clear your
cache?"
• Version control was ensuring there was a backup
or rollback ability.
Simpler times
• Caching was a browser issue. "Did you clear your
cache?"
• Version control was ensuring there was a backup
or rollback ability.
• Performance was not serving an automatically-
playing video on the homepage.
Simpler times
• Caching was a browser issue. "Did you clear your
cache?"
• Version control was ensuring there was a backup
or rollback ability.
• Performance was not serving an automatically-
playing video on the homepage.
• Scalability was a functionality issue. "Can I add a
picture gallery later?"
Simpler times
• Caching was a browser issue. "Did you clear your
cache?"
• Version control was ensuring there was a backup
or rollback ability.
• Performance was not serving an automatically-
playing video on the homepage.
• Scalability was a functionality issue. "Can I add a
picture gallery later?"
• I longed to write more code.
Little Bobby Tables
Then, things changed.
Then, things changed.
• I joined Four Kitchens, birthplace of Pressflow,
and was surrounded by major league Big Website
foo.
Then, things changed.
• I joined Four Kitchens, birthplace of Pressflow,
and was surrounded by major league Big Website
foo.
• In time, I became the team lead for the Austin
(aka Janus) team working on The Economist online.
Rob is currently the team lead.
Then, things changed.
• I joined Four Kitchens, birthplace of Pressflow,
and was surrounded by major league Big Website
foo.
• In time, I became the team lead for the Austin
(aka Janus) team working on The Economist online.
Rob is currently the team lead.
• I went from a one-woman expertise factory to a
developer who *needs* her teammates to survive
the workday.
How The Economist
changed my (work) life
How The Economist
changed my (work) life
• Most of the functionality I add is custom built or at
least customized.
How The Economist
changed my (work) life
• Most of the functionality I add is custom built or at
least customized.
• I often have to study more (custom) code than I
write when implementing new functionality.
How The Economist
changed my (work) life
• Most of the functionality I add is custom built or at
least customized.
• I often have to study more (custom) code than I
write when implementing new functionality.
• I build a branch for every task and merge code into
the codebase when it's done.
How The Economist
changed my (work) life
• Most of the functionality I add is custom built or at
least customized.
• I often have to study more (custom) code than I
write when implementing new functionality.
• I build a branch for every task and merge code into
the codebase when it's done.
• I am rarely the only person working on that
branch.
How The Economist
changed my (work) life
• Most of the functionality I add is custom built or at
least customized.
• I often have to study more (custom) code than I
write when implementing new functionality.
• I build a branch for every task and merge code into
the codebase when it's done.
• I am rarely the only person working on that
branch.
• If I do use a contributed module, it has it’s own
vendor branch.
Big Websites
• Every bit of code I write (even in the theme) is
reviewed (more than once) before it is merged.
• Every bit of code I write (even in the theme) is
reviewed (more than once) before it is merged.
• I test everything in four different environments
(versions of the website) before it is "Done".
• Every bit of code I write (even in the theme) is
reviewed (more than once) before it is merged.
• I test everything in four different environments
(versions of the website) before it is "Done".
• I write a test (Selenium, currently) for any new
functionality I create.
• Every bit of code I write (even in the theme) is
reviewed (more than once) before it is merged.
• I test everything in four different environments
(versions of the website) before it is "Done".
• I write a test (Selenium, currently) for any new
functionality I create.
• I work in the command line every day, not just
during install.
• Every bit of code I write (even in the theme) is
reviewed (more than once) before it is merged.
• I test everything in four different environments
(versions of the website) before it is "Done".
• I write a test (Selenium, currently) for any new
functionality I create.
• I work in the command line every day, not just
during install.
• Local work is done using VMWare running a Centos
enviroment (no MAMP) configured to match the
production environment.
• Every bit of code I write (even in the theme) is
reviewed (more than once) before it is merged.
• I test everything in four different environments
(versions of the website) before it is "Done".
• I write a test (Selenium, currently) for any new
functionality I create.
• I work in the command line every day, not just
during install.
• Local work is done using VMWare running a Centos
enviroment (no MAMP) configured to match the
production environment.
• It takes hours to download a new database for my
local environment.
Big Websites
• The havoc I could wreak if I’m not careful keeps
me up nights.
• The havoc I could wreak if I’m not careful keeps
me up nights.
• I *always* have to think about caching, in layers.
• The havoc I could wreak if I’m not careful keeps
me up nights.
• I *always* have to think about caching, in layers.
• Performance and scalability is a science involving.
multiple servers, load balancers, CDN, Varnish, etc
that I need to understand.
• The havoc I could wreak if I’m not careful keeps
me up nights.
• I *always* have to think about caching, in layers.
• Performance and scalability is a science involving.
multiple servers, load balancers, CDN, Varnish, etc
that I need to understand.
• Complicated tasks running "in the
background" (cron, drush/Hudson) are Chuck-
Norris-level customizations.
• The havoc I could wreak if I’m not careful keeps
me up nights.
• I *always* have to think about caching, in layers.
• Performance and scalability is a science involving.
multiple servers, load balancers, CDN, Varnish, etc
that I need to understand.
• Complicated tasks running "in the
background" (cron, drush/Hudson) are Chuck-
Norris-level customizations.
• I will never know enough Javascript.
• The havoc I could wreak if I’m not careful keeps
me up nights.
• I *always* have to think about caching, in layers.
• Performance and scalability is a science involving.
multiple servers, load balancers, CDN, Varnish, etc
that I need to understand.
• Complicated tasks running "in the
background" (cron, drush/Hudson) are Chuck-
Norris-level customizations.
• I will never know enough Javascript.
• Everything must be in code, even admin
configurations. I never click a button.
• The havoc I could wreak if I’m not careful keeps
me up nights.
• I *always* have to think about caching, in layers.
• Performance and scalability is a science involving.
multiple servers, load balancers, CDN, Varnish, etc
that I need to understand.
• Complicated tasks running "in the
background" (cron, drush/Hudson) are Chuck-
Norris-level customizations.
• I will never know enough Javascript.
• Everything must be in code, even admin
configurations. I never click a button.
• I apply relational skills as often as software
development skills to problems or inventing
Big Websites
• I attend a lot more meetings.
• I attend a lot more meetings.
• I read and answer a river of emails - every day.
• I attend a lot more meetings.
• I read and answer a river of emails - every day.
• I always know what time it is in London and New
York and Seattle and Los Angeles.
• I attend a lot more meetings.
• I read and answer a river of emails - every day.
• I always know what time it is in London and New
York and Seattle and Los Angeles.
• Besides writing code together, the other devs and I
have bowled, snowshoed, played with dry ice, seen
Weird Al in person, pub crawled in London, drank
awesomesauce in Copenhagen, watched Tron 3D at
the IMAX, and smoked hookah together.
Code-Review Velocci
Categories of differences
Categories of differences
• Version control
Categories of differences
• Version control
• Workflow and development environments
Categories of differences
• Version control
• Workflow and development environments
• Quality control
Categories of differences
• Version control
• Workflow and development environments
• Quality control
• Back-end processes
Categories of differences
• Version control
• Workflow and development environments
• Quality control
• Back-end processes
• Performance and scalability
Categories of differences
• Version control
• Workflow and development environments
• Quality control
• Back-end processes
• Performance and scalability
• Project management (Scrum!)
Categories of differences
• Version control
• Workflow and development environments
• Quality control
• Back-end processes
• Performance and scalability
• Project management (Scrum!)
• Group think and relationship management.
Version control
Version control
• I <3 Bazaar (launchpad)
Version control
• I <3 Bazaar (launchpad)
• Drupal uses Git (github)
Version control
• I <3 Bazaar (launchpad)
• Drupal uses Git (github)
• I !<3 SVN or CVS but they are better than nothing.
Version control
• I <3 Bazaar (launchpad)
• Drupal uses Git (github)
• I !<3 SVN or CVS but they are better than nothing.
• Branching
Version control
• I <3 Bazaar (launchpad)
• Drupal uses Git (github)
• I !<3 SVN or CVS but they are better than nothing.
• Branching
• Questions?
Workflow and dev
environments
Workflow and dev
environments
• Sameness in local environments is good.
Workflow and dev
environments
• Sameness in local environments is good.
• Plan development well or die.
Workflow and dev
environments
• Sameness in local environments is good.
• Plan development well or die.
• Establish version control flow.
Workflow and dev
environments
• Sameness in local environments is good.
• Plan development well or die.
• Establish version control flow.
• Questions?
Quality control
Quality control
• Code reviews
Quality control
• Code reviews
• Testing
Quality control
• Code reviews
• Testing
• Definition of Done
Quality control
• Code reviews
• Testing
• Definition of Done
• Questions?
Back-end processes
Back-end processes
• Cron tasks
Back-end processes
• Cron tasks
• Custom drush commands
Back-end processes
• Cron tasks
• Custom drush commands
• Custom scripting
Back-end processes
• Cron tasks
• Custom drush commands
• Custom scripting
• Questions?
Performance and
scalability
Performance and
scalability
• Caching: Varnish and memcache
Performance and
scalability
• Caching: Varnish and memcache
• Multiple servers, load balancing, CDN
Performance and
scalability
• Caching: Varnish and memcache
• Multiple servers, load balancing, CDN
• Questions?
Project management
Project management
• Absolutely, positively, essential to do this well.
Project management
• Absolutely, positively, essential to do this well.
• Scrum
Project management
• Absolutely, positively, essential to do this well.
• Scrum
• Questions?
Relationship management
Relationship management
• Relationship skills are as important (more
important?) as geek skills.
Relationship management
• Relationship skills are as important (more
important?) as geek skills.
• Questions?
Big Websites
Thank You!

More Related Content

Big Websites

  • 1. Big Websites Diana Montalion Dupuis : @dianadupuis previously: @mooncougar Robert Ristroph : @robgr Drupal powers many small-to-medium websites, from personal blogs to company intranets. Drupal also powers big sites like The Economist and The White House. How are the big sites different from the small ones? Four Kitchens : @fourkitchens
  • 2. With a lot of caching Dallas Drupal Days 2011
  • 4. Before big websites • Clients would come to me and ask me to build them a website.
  • 5. Before big websites • Clients would come to me and ask me to build them a website. • I would build them a website.
  • 6. I would . . .
  • 7. I would . . . • meet with a client, define their business goals and technical needs, create a site plan.
  • 8. I would . . . • meet with a client, define their business goals and technical needs, create a site plan. • download and install a CMS (usually Drupal).
  • 9. I would . . . • meet with a client, define their business goals and technical needs, create a site plan. • download and install a CMS (usually Drupal). • download, install and configure modules or plug- ins.
  • 10. I would . . . • meet with a client, define their business goals and technical needs, create a site plan. • download and install a CMS (usually Drupal). • download, install and configure modules or plug- ins. • sometimes install and configure compatible apps like CiviCRM or a shopping cart.
  • 11. I would . . . • meet with a client, define their business goals and technical needs, create a site plan. • download and install a CMS (usually Drupal). • download, install and configure modules or plug- ins. • sometimes install and configure compatible apps like CiviCRM or a shopping cart. • merge some data, maybe.
  • 12. I would . . . • meet with a client, define their business goals and technical needs, create a site plan. • download and install a CMS (usually Drupal). • download, install and configure modules or plug- ins. • sometimes install and configure compatible apps like CiviCRM or a shopping cart. • merge some data, maybe. • build a theme, install it, and cross-browser test.
  • 13. I would . . . • meet with a client, define their business goals and technical needs, create a site plan. • download and install a CMS (usually Drupal). • download, install and configure modules or plug- ins. • sometimes install and configure compatible apps like CiviCRM or a shopping cart. • merge some data, maybe. • build a theme, install it, and cross-browser test. • rebuild the theme for IE6.
  • 14. I would . . .
  • 15. I would . . . • sprinkle on (just enough) javascript.
  • 16. I would . . . • sprinkle on (just enough) javascript. • log in as user 1 and click configuration buttons.
  • 17. I would . . . • sprinkle on (just enough) javascript. • log in as user 1 and click configuration buttons. • teach the user how to use their site.
  • 19. Afterwards, • clients called me when they had a problem.
  • 20. Afterwards, • clients called me when they had a problem. • I would fix it.
  • 22. Simpler times • Caching was a browser issue. "Did you clear your cache?"
  • 23. Simpler times • Caching was a browser issue. "Did you clear your cache?" • Version control was ensuring there was a backup or rollback ability.
  • 24. Simpler times • Caching was a browser issue. "Did you clear your cache?" • Version control was ensuring there was a backup or rollback ability. • Performance was not serving an automatically- playing video on the homepage.
  • 25. Simpler times • Caching was a browser issue. "Did you clear your cache?" • Version control was ensuring there was a backup or rollback ability. • Performance was not serving an automatically- playing video on the homepage. • Scalability was a functionality issue. "Can I add a picture gallery later?"
  • 26. Simpler times • Caching was a browser issue. "Did you clear your cache?" • Version control was ensuring there was a backup or rollback ability. • Performance was not serving an automatically- playing video on the homepage. • Scalability was a functionality issue. "Can I add a picture gallery later?" • I longed to write more code.
  • 29. Then, things changed. • I joined Four Kitchens, birthplace of Pressflow, and was surrounded by major league Big Website foo.
  • 30. Then, things changed. • I joined Four Kitchens, birthplace of Pressflow, and was surrounded by major league Big Website foo. • In time, I became the team lead for the Austin (aka Janus) team working on The Economist online. Rob is currently the team lead.
  • 31. Then, things changed. • I joined Four Kitchens, birthplace of Pressflow, and was surrounded by major league Big Website foo. • In time, I became the team lead for the Austin (aka Janus) team working on The Economist online. Rob is currently the team lead. • I went from a one-woman expertise factory to a developer who *needs* her teammates to survive the workday.
  • 32. How The Economist changed my (work) life
  • 33. How The Economist changed my (work) life • Most of the functionality I add is custom built or at least customized.
  • 34. How The Economist changed my (work) life • Most of the functionality I add is custom built or at least customized. • I often have to study more (custom) code than I write when implementing new functionality.
  • 35. How The Economist changed my (work) life • Most of the functionality I add is custom built or at least customized. • I often have to study more (custom) code than I write when implementing new functionality. • I build a branch for every task and merge code into the codebase when it's done.
  • 36. How The Economist changed my (work) life • Most of the functionality I add is custom built or at least customized. • I often have to study more (custom) code than I write when implementing new functionality. • I build a branch for every task and merge code into the codebase when it's done. • I am rarely the only person working on that branch.
  • 37. How The Economist changed my (work) life • Most of the functionality I add is custom built or at least customized. • I often have to study more (custom) code than I write when implementing new functionality. • I build a branch for every task and merge code into the codebase when it's done. • I am rarely the only person working on that branch. • If I do use a contributed module, it has it’s own vendor branch.
  • 39. • Every bit of code I write (even in the theme) is reviewed (more than once) before it is merged.
  • 40. • Every bit of code I write (even in the theme) is reviewed (more than once) before it is merged. • I test everything in four different environments (versions of the website) before it is "Done".
  • 41. • Every bit of code I write (even in the theme) is reviewed (more than once) before it is merged. • I test everything in four different environments (versions of the website) before it is "Done". • I write a test (Selenium, currently) for any new functionality I create.
  • 42. • Every bit of code I write (even in the theme) is reviewed (more than once) before it is merged. • I test everything in four different environments (versions of the website) before it is "Done". • I write a test (Selenium, currently) for any new functionality I create. • I work in the command line every day, not just during install.
  • 43. • Every bit of code I write (even in the theme) is reviewed (more than once) before it is merged. • I test everything in four different environments (versions of the website) before it is "Done". • I write a test (Selenium, currently) for any new functionality I create. • I work in the command line every day, not just during install. • Local work is done using VMWare running a Centos enviroment (no MAMP) configured to match the production environment.
  • 44. • Every bit of code I write (even in the theme) is reviewed (more than once) before it is merged. • I test everything in four different environments (versions of the website) before it is "Done". • I write a test (Selenium, currently) for any new functionality I create. • I work in the command line every day, not just during install. • Local work is done using VMWare running a Centos enviroment (no MAMP) configured to match the production environment. • It takes hours to download a new database for my local environment.
  • 46. • The havoc I could wreak if I’m not careful keeps me up nights.
  • 47. • The havoc I could wreak if I’m not careful keeps me up nights. • I *always* have to think about caching, in layers.
  • 48. • The havoc I could wreak if I’m not careful keeps me up nights. • I *always* have to think about caching, in layers. • Performance and scalability is a science involving. multiple servers, load balancers, CDN, Varnish, etc that I need to understand.
  • 49. • The havoc I could wreak if I’m not careful keeps me up nights. • I *always* have to think about caching, in layers. • Performance and scalability is a science involving. multiple servers, load balancers, CDN, Varnish, etc that I need to understand. • Complicated tasks running "in the background" (cron, drush/Hudson) are Chuck- Norris-level customizations.
  • 50. • The havoc I could wreak if I’m not careful keeps me up nights. • I *always* have to think about caching, in layers. • Performance and scalability is a science involving. multiple servers, load balancers, CDN, Varnish, etc that I need to understand. • Complicated tasks running "in the background" (cron, drush/Hudson) are Chuck- Norris-level customizations. • I will never know enough Javascript.
  • 51. • The havoc I could wreak if I’m not careful keeps me up nights. • I *always* have to think about caching, in layers. • Performance and scalability is a science involving. multiple servers, load balancers, CDN, Varnish, etc that I need to understand. • Complicated tasks running "in the background" (cron, drush/Hudson) are Chuck- Norris-level customizations. • I will never know enough Javascript. • Everything must be in code, even admin configurations. I never click a button.
  • 52. • The havoc I could wreak if I’m not careful keeps me up nights. • I *always* have to think about caching, in layers. • Performance and scalability is a science involving. multiple servers, load balancers, CDN, Varnish, etc that I need to understand. • Complicated tasks running "in the background" (cron, drush/Hudson) are Chuck- Norris-level customizations. • I will never know enough Javascript. • Everything must be in code, even admin configurations. I never click a button. • I apply relational skills as often as software development skills to problems or inventing
  • 54. • I attend a lot more meetings.
  • 55. • I attend a lot more meetings. • I read and answer a river of emails - every day.
  • 56. • I attend a lot more meetings. • I read and answer a river of emails - every day. • I always know what time it is in London and New York and Seattle and Los Angeles.
  • 57. • I attend a lot more meetings. • I read and answer a river of emails - every day. • I always know what time it is in London and New York and Seattle and Los Angeles. • Besides writing code together, the other devs and I have bowled, snowshoed, played with dry ice, seen Weird Al in person, pub crawled in London, drank awesomesauce in Copenhagen, watched Tron 3D at the IMAX, and smoked hookah together.
  • 60. Categories of differences • Version control
  • 61. Categories of differences • Version control • Workflow and development environments
  • 62. Categories of differences • Version control • Workflow and development environments • Quality control
  • 63. Categories of differences • Version control • Workflow and development environments • Quality control • Back-end processes
  • 64. Categories of differences • Version control • Workflow and development environments • Quality control • Back-end processes • Performance and scalability
  • 65. Categories of differences • Version control • Workflow and development environments • Quality control • Back-end processes • Performance and scalability • Project management (Scrum!)
  • 66. Categories of differences • Version control • Workflow and development environments • Quality control • Back-end processes • Performance and scalability • Project management (Scrum!) • Group think and relationship management.
  • 68. Version control • I <3 Bazaar (launchpad)
  • 69. Version control • I <3 Bazaar (launchpad) • Drupal uses Git (github)
  • 70. Version control • I <3 Bazaar (launchpad) • Drupal uses Git (github) • I !<3 SVN or CVS but they are better than nothing.
  • 71. Version control • I <3 Bazaar (launchpad) • Drupal uses Git (github) • I !<3 SVN or CVS but they are better than nothing. • Branching
  • 72. Version control • I <3 Bazaar (launchpad) • Drupal uses Git (github) • I !<3 SVN or CVS but they are better than nothing. • Branching • Questions?
  • 74. Workflow and dev environments • Sameness in local environments is good.
  • 75. Workflow and dev environments • Sameness in local environments is good. • Plan development well or die.
  • 76. Workflow and dev environments • Sameness in local environments is good. • Plan development well or die. • Establish version control flow.
  • 77. Workflow and dev environments • Sameness in local environments is good. • Plan development well or die. • Establish version control flow. • Questions?
  • 80. Quality control • Code reviews • Testing
  • 81. Quality control • Code reviews • Testing • Definition of Done
  • 82. Quality control • Code reviews • Testing • Definition of Done • Questions?
  • 85. Back-end processes • Cron tasks • Custom drush commands
  • 86. Back-end processes • Cron tasks • Custom drush commands • Custom scripting
  • 87. Back-end processes • Cron tasks • Custom drush commands • Custom scripting • Questions?
  • 90. Performance and scalability • Caching: Varnish and memcache • Multiple servers, load balancing, CDN
  • 91. Performance and scalability • Caching: Varnish and memcache • Multiple servers, load balancing, CDN • Questions?
  • 93. Project management • Absolutely, positively, essential to do this well.
  • 94. Project management • Absolutely, positively, essential to do this well. • Scrum
  • 95. Project management • Absolutely, positively, essential to do this well. • Scrum • Questions?
  • 97. Relationship management • Relationship skills are as important (more important?) as geek skills.
  • 98. Relationship management • Relationship skills are as important (more important?) as geek skills. • Questions?

Editor's Notes

  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
  56. \n
  57. \n
  58. \n
  59. \n
  60. \n
  61. \n
  62. \n
  63. \n
  64. \n
  65. \n
  66. \n
  67. \n
  68. \n
  69. \n
  70. \n
  71. \n
  72. \n
  73. \n
  74. \n
  75. \n
  76. \n
  77. \n
  78. \n
  79. \n
  80. \n
  81. \n
  82. \n