From bd3fab00d18355bcf11d137d97e097cc71d3b218 Mon Sep 17 00:00:00 2001 From: zhenchaozhu Date: Tue, 15 Nov 2016 16:27:49 +0800 Subject: [PATCH] add forum code --- .gitignore | 55 + LICENSE | 21 + README.md | 80 + forum.sql | 603 + forum/__init__.py | 0 forum/admin.py | 1 + forum/backends.py | 21 + forum/context_processors.py | 11 + forum/forms/__init__.py | 0 forum/forms/topic.py | 21 + forum/forms/user.py | 172 + forum/models.py | 274 + forum/sitemap.py | 19 + forum/static/avatar/b_default.png | Bin 0 -> 4623 bytes forum/static/avatar/m_default.png | Bin 0 -> 3984 bytes forum/static/avatar/s_default.png | Bin 0 -> 3950 bytes forum/static/css/base/atom.css | 379 + forum/static/css/base/atom.scss | 143 + forum/static/css/base/octicons.css | 551 + forum/static/css/base/octicons.scss | 1 + forum/static/css/base/reset.css | 124 + forum/static/css/bootstrap/bootstrap.css | 5117 +++++++ forum/static/css/bootstrap/bootstrap.min.css | 862 ++ forum/static/css/codehilite.css | 270 + forum/static/css/codehilite.scss | 66 + forum/static/css/compass/_css3.scss | 20 + forum/static/css/compass/_layout.scss | 3 + forum/static/css/compass/_reset-legacy.scss | 3 + forum/static/css/compass/_reset.scss | 3 + forum/static/css/compass/_support.scss | 40 + forum/static/css/compass/_typography.scss | 4 + forum/static/css/compass/_utilities.scss | 9 + forum/static/css/compass/css3/_appearance.scss | 17 + .../static/css/compass/css3/_background-clip.scss | 43 + .../css/compass/css3/_background-origin.scss | 42 + .../static/css/compass/css3/_background-size.scss | 26 + forum/static/css/compass/css3/_border-radius.scss | 130 + forum/static/css/compass/css3/_box-shadow.scss | 76 + forum/static/css/compass/css3/_box-sizing.scss | 13 + forum/static/css/compass/css3/_box.scss | 111 + forum/static/css/compass/css3/_columns.scss | 148 + forum/static/css/compass/css3/_filter.scss | 23 + forum/static/css/compass/css3/_font-face.scss | 48 + forum/static/css/compass/css3/_hyphenation.scss | 77 + forum/static/css/compass/css3/_images.scss | 132 + forum/static/css/compass/css3/_inline-block.scss | 22 + forum/static/css/compass/css3/_opacity.scss | 19 + forum/static/css/compass/css3/_pie.scss | 73 + forum/static/css/compass/css3/_regions.scss | 22 + forum/static/css/compass/css3/_shared.scss | 38 + forum/static/css/compass/css3/_text-shadow.scss | 87 + .../static/css/compass/css3/_transform-legacy.scss | 87 + forum/static/css/compass/css3/_transform.scss | 598 + forum/static/css/compass/css3/_transition.scss | 221 + forum/static/css/compass/css3/_user-interface.scss | 17 + .../css/compass/layout/_grid-background.scss | 178 + .../static/css/compass/layout/_sticky-footer.scss | 23 + forum/static/css/compass/layout/_stretching.scss | 24 + .../css/compass/reset/_utilities-legacy.scss | 135 + forum/static/css/compass/reset/_utilities.scss | 142 + forum/static/css/compass/typography/_links.scss | 3 + forum/static/css/compass/typography/_lists.scss | 4 + forum/static/css/compass/typography/_text.scss | 4 + .../css/compass/typography/_vertical_rhythm.scss | 221 + .../css/compass/typography/links/_hover-link.scss | 5 + .../css/compass/typography/links/_link-colors.scss | 28 + .../compass/typography/links/_unstyled-link.scss | 7 + .../css/compass/typography/lists/_bullets.scss | 34 + .../compass/typography/lists/_horizontal-list.scss | 61 + .../typography/lists/_inline-block-list.scss | 50 + .../css/compass/typography/lists/_inline-list.scss | 44 + .../css/compass/typography/text/_ellipsis.scss | 25 + .../css/compass/typography/text/_force-wrap.scss | 12 + .../css/compass/typography/text/_nowrap.scss | 2 + .../css/compass/typography/text/_replacement.scss | 68 + forum/static/css/compass/utilities/_color.scss | 1 + forum/static/css/compass/utilities/_general.scss | 6 + forum/static/css/compass/utilities/_links.scss | 5 + forum/static/css/compass/utilities/_lists.scss | 6 + forum/static/css/compass/utilities/_print.scss | 17 + forum/static/css/compass/utilities/_sprites.scss | 2 + forum/static/css/compass/utilities/_tables.scss | 3 + forum/static/css/compass/utilities/_text.scss | 5 + .../css/compass/utilities/color/_contrast.scss | 28 + .../css/compass/utilities/general/_clearfix.scss | 44 + .../css/compass/utilities/general/_float.scss | 30 + .../css/compass/utilities/general/_hacks.scss | 46 + .../static/css/compass/utilities/general/_min.scss | 16 + .../css/compass/utilities/general/_reset.scss | 2 + .../css/compass/utilities/general/_tabs.scss | 1 + .../css/compass/utilities/general/_tag-cloud.scss | 18 + .../css/compass/utilities/links/_hover-link.scss | 3 + .../css/compass/utilities/links/_link-colors.scss | 3 + .../compass/utilities/links/_unstyled-link.scss | 3 + .../css/compass/utilities/lists/_bullets.scss | 3 + .../compass/utilities/lists/_horizontal-list.scss | 3 + .../utilities/lists/_inline-block-list.scss | 3 + .../css/compass/utilities/lists/_inline-list.scss | 3 + .../css/compass/utilities/sprites/_base.scss | 66 + .../css/compass/utilities/sprites/_sprite-img.scss | 79 + .../tables/_alternating-rows-and-columns.scss | 22 + .../css/compass/utilities/tables/_borders.scss | 33 + .../css/compass/utilities/tables/_scaffolding.scss | 9 + .../css/compass/utilities/text/_ellipsis.scss | 3 + .../static/css/compass/utilities/text/_nowrap.scss | 3 + .../css/compass/utilities/text/_replacement.scss | 3 + .../static/css/img/glyphicons-halflings-white.png | Bin 0 -> 8777 bytes forum/static/css/img/glyphicons-halflings.png | Bin 0 -> 12799 bytes forum/static/css/main.css | 1942 +++ forum/static/css/main.scss | 1431 ++ forum/static/favicon.ico | Bin 0 -> 1150 bytes forum/static/images/ajax-loader.gif | Bin 0 -> 9473 bytes forum/static/images/f2e.im.icon.png | Bin 0 -> 3795 bytes forum/static/images/f2e.im.logo.png | Bin 0 -> 4902 bytes forum/static/images/grey_header_web.png | Bin 0 -> 95752 bytes forum/static/images/icon-new.png | Bin 0 -> 1010 bytes forum/static/images/idev.png | Bin 0 -> 365106 bytes forum/static/images/linode_logo.png | Bin 0 -> 2780 bytes forum/static/images/loading.gif | Bin 0 -> 1728 bytes forum/static/images/logo-dance.png | Bin 0 -> 949 bytes forum/static/images/member-icons.png | Bin 0 -> 4173 bytes forum/static/images/python_china_logo.jpg | Bin 0 -> 24122 bytes .../images/qrcode_for_gh_81ac76ebf8e3_258.jpg | Bin 0 -> 23639 bytes forum/static/images/reply.png | Bin 0 -> 1153 bytes forum/static/images/ruby_china_logo.png | Bin 0 -> 8168 bytes forum/static/images/totop.gif | Bin 0 -> 644 bytes forum/static/images/trans4fun.png | Bin 0 -> 6717 bytes forum/static/images/ubuntusoft.png | Bin 0 -> 2226 bytes forum/static/js/base/bootstrap.js | 2036 +++ forum/static/js/base/bootstrap.min.js | 7 + forum/static/js/base/in-min.js | 1 + forum/static/js/base/in.js | 391 + forum/static/js/base/jquery-1.6.4.min.js | 4 + forum/static/js/base/jquery-1.8.3.min.js | 2 + forum/static/js/base/jquery.ba-hashchange.min.js | 9 + forum/static/js/base/jquery.cookie.js | 72 + forum/static/js/base/juicer-min.js | 1 + forum/static/js/base/juicer.js | 489 + forum/static/js/widget/emmet.js | 13575 +++++++++++++++++++ forum/static/js/widget/emmet.min.js | 302 + .../images/ui-bg_flat_75_ffffff_40x100.png | Bin 0 -> 178 bytes .../images/ui-bg_glass_55_fbf9ee_1x400.png | Bin 0 -> 120 bytes .../images/ui-bg_glass_75_dadada_1x400.png | Bin 0 -> 111 bytes .../images/ui-bg_glass_75_e6e6e6_1x400.png | Bin 0 -> 110 bytes .../ui-bg_highlight-soft_75_cccccc_1x100.png | Bin 0 -> 101 bytes .../images/ui-icons_222222_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_454545_256x240.png | Bin 0 -> 4369 bytes .../jquery-ui-datepicker-zh-CN.js | 23 + .../js/widget/jquery-ui-datepicker/jquery-ui.css | 570 + .../widget/jquery-ui-datepicker/jquery-ui.min.js | 404 + .../js/widget/jquery-ui-datepicker/jquery.min.js | 167 + forum/static/js/widget/jquery.colorbox-min.js | 4 + forum/static/js/widget/jquery.scrolltotop-min.js | 1 + forum/static/js/widget/jquery.scrolltotop.js | 127 + forum/static/js/widget/jquery.textarea.js | 268 + forum/static/js/widget/jquery.textarea.min.js | 1 + ...ns-8b97c2cd5068ec4620cbde3140db257b1924a192.ttf | Bin 0 -> 51056 bytes ...s-a60d585f754059c3c2ef731f853c38c157040b9c.woff | Bin 0 -> 29344 bytes ...ns-a8248bbb3baccca60948d81d69e3406b71956a69.svg | 188 + ...ns-d3d0b82bf791ac147d72bbf0287cdde8ee5c97b8.eot | Bin 0 -> 51340 bytes forum/static/pages/nav/index.html | 0 forum/static/pages/nav/style.css | 183 + forum/static/pages/timeline/css/history.css | 65 + forum/static/pages/timeline/images/arrow.png | Bin 0 -> 780 bytes forum/static/pages/timeline/images/icon06.gif | Bin 0 -> 1692 bytes forum/static/pages/timeline/images/icon07.gif | Bin 0 -> 366 bytes forum/static/pages/timeline/images/icon08.gif | Bin 0 -> 49 bytes forum/static/pages/timeline/images/icon09.gif | Bin 0 -> 190 bytes forum/static/pages/timeline/images/line04.gif | Bin 0 -> 43 bytes forum/static/pages/timeline/index.html | 0 forum/static/pages/timeline/js/jquery.js | 154 + forum/static/pages/timeline/js/main.js | 217 + forum/templates/404.html | 12 + forum/templates/notification/notifications.html | 93 + forum/templates/page/about.html | 7 + forum/templates/snippet/footer.html | 18 + forum/templates/snippet/layout.html | 115 + forum/templates/topic/create.html | 69 + forum/templates/topic/edit.html | 70 + forum/templates/topic/members.html | 80 + forum/templates/topic/node_topics.html | 100 + forum/templates/topic/profile.html | 273 + forum/templates/topic/reply_edit.html | 66 + forum/templates/topic/topics.html | 187 + forum/templates/topic/user_favorites.html | 89 + forum/templates/topic/user_replies.html | 72 + forum/templates/topic/user_topics.html | 89 + forum/templates/topic/view.html | 258 + forum/templates/user/forgot_password.html | 57 + forum/templates/user/forgot_password_mail.html | 18 + forum/templates/user/login.html | 53 + forum/templates/user/register.html | 71 + forum/templates/user/register_mail.html | 15 + forum/templates/user/setting.html | 149 + forum/templates/user/setting_avatar.html | 54 + forum/templates/user/setting_password.html | 66 + forum/templatetags/__init__.py | 0 forum/templatetags/forum_extras.py | 167 + forum/tests.py | 16 + forum/urls.py | 45 + forum/views/__init__.py | 0 forum/views/common.py | 26 + forum/views/notification.py | 26 + forum/views/topic.py | 609 + forum/views/user.py | 165 + manage.py | 12 + requirements.txt | 3 + xp/__init__.py | 0 xp/settings.py | 204 + xp/urls.py | 26 + xp/wsgi.py | 32 + 211 files changed, 38528 insertions(+) create mode 100644 .gitignore create mode 100644 LICENSE create mode 100644 README.md create mode 100644 forum.sql create mode 100644 forum/__init__.py create mode 100644 forum/admin.py create mode 100644 forum/backends.py create mode 100644 forum/context_processors.py create mode 100644 forum/forms/__init__.py create mode 100644 forum/forms/topic.py create mode 100644 forum/forms/user.py create mode 100644 forum/models.py create mode 100644 forum/sitemap.py create mode 100755 forum/static/avatar/b_default.png create mode 100755 forum/static/avatar/m_default.png create mode 100755 forum/static/avatar/s_default.png create mode 100755 forum/static/css/base/atom.css create mode 100755 forum/static/css/base/atom.scss create mode 100755 forum/static/css/base/octicons.css create mode 100755 forum/static/css/base/octicons.scss create mode 100755 forum/static/css/base/reset.css create mode 100755 forum/static/css/bootstrap/bootstrap.css create mode 100755 forum/static/css/bootstrap/bootstrap.min.css create mode 100755 forum/static/css/codehilite.css create mode 100755 forum/static/css/codehilite.scss create mode 100755 forum/static/css/compass/_css3.scss create mode 100755 forum/static/css/compass/_layout.scss create mode 100755 forum/static/css/compass/_reset-legacy.scss create mode 100755 forum/static/css/compass/_reset.scss create mode 100755 forum/static/css/compass/_support.scss create mode 100755 forum/static/css/compass/_typography.scss create mode 100755 forum/static/css/compass/_utilities.scss create mode 100755 forum/static/css/compass/css3/_appearance.scss create mode 100755 forum/static/css/compass/css3/_background-clip.scss create mode 100755 forum/static/css/compass/css3/_background-origin.scss create mode 100755 forum/static/css/compass/css3/_background-size.scss create mode 100755 forum/static/css/compass/css3/_border-radius.scss create mode 100755 forum/static/css/compass/css3/_box-shadow.scss create mode 100755 forum/static/css/compass/css3/_box-sizing.scss create mode 100755 forum/static/css/compass/css3/_box.scss create mode 100755 forum/static/css/compass/css3/_columns.scss create mode 100755 forum/static/css/compass/css3/_filter.scss create mode 100755 forum/static/css/compass/css3/_font-face.scss create mode 100755 forum/static/css/compass/css3/_hyphenation.scss create mode 100755 forum/static/css/compass/css3/_images.scss create mode 100755 forum/static/css/compass/css3/_inline-block.scss create mode 100755 forum/static/css/compass/css3/_opacity.scss create mode 100755 forum/static/css/compass/css3/_pie.scss create mode 100755 forum/static/css/compass/css3/_regions.scss create mode 100755 forum/static/css/compass/css3/_shared.scss create mode 100755 forum/static/css/compass/css3/_text-shadow.scss create mode 100755 forum/static/css/compass/css3/_transform-legacy.scss create mode 100755 forum/static/css/compass/css3/_transform.scss create mode 100755 forum/static/css/compass/css3/_transition.scss create mode 100755 forum/static/css/compass/css3/_user-interface.scss create mode 100755 forum/static/css/compass/layout/_grid-background.scss create mode 100755 forum/static/css/compass/layout/_sticky-footer.scss create mode 100755 forum/static/css/compass/layout/_stretching.scss create mode 100755 forum/static/css/compass/reset/_utilities-legacy.scss create mode 100755 forum/static/css/compass/reset/_utilities.scss create mode 100755 forum/static/css/compass/typography/_links.scss create mode 100755 forum/static/css/compass/typography/_lists.scss create mode 100755 forum/static/css/compass/typography/_text.scss create mode 100755 forum/static/css/compass/typography/_vertical_rhythm.scss create mode 100755 forum/static/css/compass/typography/links/_hover-link.scss create mode 100755 forum/static/css/compass/typography/links/_link-colors.scss create mode 100755 forum/static/css/compass/typography/links/_unstyled-link.scss create mode 100755 forum/static/css/compass/typography/lists/_bullets.scss create mode 100755 forum/static/css/compass/typography/lists/_horizontal-list.scss create mode 100755 forum/static/css/compass/typography/lists/_inline-block-list.scss create mode 100755 forum/static/css/compass/typography/lists/_inline-list.scss create mode 100755 forum/static/css/compass/typography/text/_ellipsis.scss create mode 100755 forum/static/css/compass/typography/text/_force-wrap.scss create mode 100755 forum/static/css/compass/typography/text/_nowrap.scss create mode 100755 forum/static/css/compass/typography/text/_replacement.scss create mode 100755 forum/static/css/compass/utilities/_color.scss create mode 100755 forum/static/css/compass/utilities/_general.scss create mode 100755 forum/static/css/compass/utilities/_links.scss create mode 100755 forum/static/css/compass/utilities/_lists.scss create mode 100755 forum/static/css/compass/utilities/_print.scss create mode 100755 forum/static/css/compass/utilities/_sprites.scss create mode 100755 forum/static/css/compass/utilities/_tables.scss create mode 100755 forum/static/css/compass/utilities/_text.scss create mode 100755 forum/static/css/compass/utilities/color/_contrast.scss create mode 100755 forum/static/css/compass/utilities/general/_clearfix.scss create mode 100755 forum/static/css/compass/utilities/general/_float.scss create mode 100755 forum/static/css/compass/utilities/general/_hacks.scss create mode 100755 forum/static/css/compass/utilities/general/_min.scss create mode 100755 forum/static/css/compass/utilities/general/_reset.scss create mode 100755 forum/static/css/compass/utilities/general/_tabs.scss create mode 100755 forum/static/css/compass/utilities/general/_tag-cloud.scss create mode 100755 forum/static/css/compass/utilities/links/_hover-link.scss create mode 100755 forum/static/css/compass/utilities/links/_link-colors.scss create mode 100755 forum/static/css/compass/utilities/links/_unstyled-link.scss create mode 100755 forum/static/css/compass/utilities/lists/_bullets.scss create mode 100755 forum/static/css/compass/utilities/lists/_horizontal-list.scss create mode 100755 forum/static/css/compass/utilities/lists/_inline-block-list.scss create mode 100755 forum/static/css/compass/utilities/lists/_inline-list.scss create mode 100755 forum/static/css/compass/utilities/sprites/_base.scss create mode 100755 forum/static/css/compass/utilities/sprites/_sprite-img.scss create mode 100755 forum/static/css/compass/utilities/tables/_alternating-rows-and-columns.scss create mode 100755 forum/static/css/compass/utilities/tables/_borders.scss create mode 100755 forum/static/css/compass/utilities/tables/_scaffolding.scss create mode 100755 forum/static/css/compass/utilities/text/_ellipsis.scss create mode 100755 forum/static/css/compass/utilities/text/_nowrap.scss create mode 100755 forum/static/css/compass/utilities/text/_replacement.scss create mode 100755 forum/static/css/img/glyphicons-halflings-white.png create mode 100755 forum/static/css/img/glyphicons-halflings.png create mode 100755 forum/static/css/main.css create mode 100755 forum/static/css/main.scss create mode 100755 forum/static/favicon.ico create mode 100755 forum/static/images/ajax-loader.gif create mode 100755 forum/static/images/f2e.im.icon.png create mode 100755 forum/static/images/f2e.im.logo.png create mode 100755 forum/static/images/grey_header_web.png create mode 100644 forum/static/images/icon-new.png create mode 100755 forum/static/images/idev.png create mode 100755 forum/static/images/linode_logo.png create mode 100755 forum/static/images/loading.gif create mode 100644 forum/static/images/logo-dance.png create mode 100644 forum/static/images/member-icons.png create mode 100755 forum/static/images/python_china_logo.jpg create mode 100755 forum/static/images/qrcode_for_gh_81ac76ebf8e3_258.jpg create mode 100755 forum/static/images/reply.png create mode 100755 forum/static/images/ruby_china_logo.png create mode 100755 forum/static/images/totop.gif create mode 100755 forum/static/images/trans4fun.png create mode 100755 forum/static/images/ubuntusoft.png create mode 100755 forum/static/js/base/bootstrap.js create mode 100755 forum/static/js/base/bootstrap.min.js create mode 100755 forum/static/js/base/in-min.js create mode 100755 forum/static/js/base/in.js create mode 100755 forum/static/js/base/jquery-1.6.4.min.js create mode 100755 forum/static/js/base/jquery-1.8.3.min.js create mode 100755 forum/static/js/base/jquery.ba-hashchange.min.js create mode 100755 forum/static/js/base/jquery.cookie.js create mode 100755 forum/static/js/base/juicer-min.js create mode 100755 forum/static/js/base/juicer.js create mode 100755 forum/static/js/widget/emmet.js create mode 100755 forum/static/js/widget/emmet.min.js create mode 100755 forum/static/js/widget/jquery-ui-datepicker/images/ui-bg_flat_75_ffffff_40x100.png create mode 100755 forum/static/js/widget/jquery-ui-datepicker/images/ui-bg_glass_55_fbf9ee_1x400.png create mode 100755 forum/static/js/widget/jquery-ui-datepicker/images/ui-bg_glass_75_dadada_1x400.png create mode 100755 forum/static/js/widget/jquery-ui-datepicker/images/ui-bg_glass_75_e6e6e6_1x400.png create mode 100755 forum/static/js/widget/jquery-ui-datepicker/images/ui-bg_highlight-soft_75_cccccc_1x100.png create mode 100755 forum/static/js/widget/jquery-ui-datepicker/images/ui-icons_222222_256x240.png create mode 100755 forum/static/js/widget/jquery-ui-datepicker/images/ui-icons_454545_256x240.png create mode 100755 forum/static/js/widget/jquery-ui-datepicker/jquery-ui-datepicker-zh-CN.js create mode 100755 forum/static/js/widget/jquery-ui-datepicker/jquery-ui.css create mode 100755 forum/static/js/widget/jquery-ui-datepicker/jquery-ui.min.js create mode 100755 forum/static/js/widget/jquery-ui-datepicker/jquery.min.js create mode 100755 forum/static/js/widget/jquery.colorbox-min.js create mode 100755 forum/static/js/widget/jquery.scrolltotop-min.js create mode 100755 forum/static/js/widget/jquery.scrolltotop.js create mode 100755 forum/static/js/widget/jquery.textarea.js create mode 100755 forum/static/js/widget/jquery.textarea.min.js create mode 100755 forum/static/octicons/octicons-8b97c2cd5068ec4620cbde3140db257b1924a192.ttf create mode 100755 forum/static/octicons/octicons-a60d585f754059c3c2ef731f853c38c157040b9c.woff create mode 100755 forum/static/octicons/octicons-a8248bbb3baccca60948d81d69e3406b71956a69.svg create mode 100755 forum/static/octicons/octicons-d3d0b82bf791ac147d72bbf0287cdde8ee5c97b8.eot create mode 100644 forum/static/pages/nav/index.html create mode 100644 forum/static/pages/nav/style.css create mode 100644 forum/static/pages/timeline/css/history.css create mode 100644 forum/static/pages/timeline/images/arrow.png create mode 100644 forum/static/pages/timeline/images/icon06.gif create mode 100644 forum/static/pages/timeline/images/icon07.gif create mode 100644 forum/static/pages/timeline/images/icon08.gif create mode 100644 forum/static/pages/timeline/images/icon09.gif create mode 100644 forum/static/pages/timeline/images/line04.gif create mode 100644 forum/static/pages/timeline/index.html create mode 100644 forum/static/pages/timeline/js/jquery.js create mode 100644 forum/static/pages/timeline/js/main.js create mode 100755 forum/templates/404.html create mode 100755 forum/templates/notification/notifications.html create mode 100755 forum/templates/page/about.html create mode 100755 forum/templates/snippet/footer.html create mode 100755 forum/templates/snippet/layout.html create mode 100755 forum/templates/topic/create.html create mode 100755 forum/templates/topic/edit.html create mode 100755 forum/templates/topic/members.html create mode 100755 forum/templates/topic/node_topics.html create mode 100755 forum/templates/topic/profile.html create mode 100755 forum/templates/topic/reply_edit.html create mode 100755 forum/templates/topic/topics.html create mode 100755 forum/templates/topic/user_favorites.html create mode 100755 forum/templates/topic/user_replies.html create mode 100755 forum/templates/topic/user_topics.html create mode 100755 forum/templates/topic/view.html create mode 100755 forum/templates/user/forgot_password.html create mode 100755 forum/templates/user/forgot_password_mail.html create mode 100755 forum/templates/user/login.html create mode 100755 forum/templates/user/register.html create mode 100755 forum/templates/user/register_mail.html create mode 100755 forum/templates/user/setting.html create mode 100755 forum/templates/user/setting_avatar.html create mode 100755 forum/templates/user/setting_password.html create mode 100644 forum/templatetags/__init__.py create mode 100644 forum/templatetags/forum_extras.py create mode 100644 forum/tests.py create mode 100644 forum/urls.py create mode 100644 forum/views/__init__.py create mode 100644 forum/views/common.py create mode 100644 forum/views/notification.py create mode 100644 forum/views/topic.py create mode 100644 forum/views/user.py create mode 100755 manage.py create mode 100644 requirements.txt create mode 100644 xp/__init__.py create mode 100644 xp/settings.py create mode 100644 xp/urls.py create mode 100644 xp/wsgi.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b9ce031 --- /dev/null +++ b/.gitignore @@ -0,0 +1,55 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] + +# C extensions +*.so + +# Distribution / packaging +.Python +env/ +bin/ +build/ +develop-eggs/ +dist/ +eggs/ +parts/ +sdist/ +var/ +*.egg-info/ +.installed.cfg +*.egg + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.coverage +.cache +nosetests.xml +coverage.xml + +# Translations +*.mo + +# Mr Developer +.mr.developer.cfg +.project +.pydevproject + +# Rope +.ropeproject + +# Django stuff: +*.log +*.pot + +# Sphinx documentation + +.idea/ +docs/_build/ + +.DS_Store diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..17c9416 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2014 Timmy + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..11e56df --- /dev/null +++ b/README.md @@ -0,0 +1,80 @@ +### Django forum + +*** + +demo: + +Django forum是使用Django实现的轻型现代论坛程序,是fork自[F2E.im](https://github.com/PaulGuo/F2E.im)的Django版本. +相对于原版的主要区别在于使用Django admin实现了一个简单的后台管理. + +Django forum有3个分支,master分支用于主机上部署,SAE分支是适配Sina App Engine的版本,api分支是一个试验性质的分支,详情见更新 + +#### 安装部署 + +主机版: + +依赖MySQL数据库,以及memcached + +1. 获取代码 +2. 安装依赖 +3. 导入数据库文件 +4. 修改配置文件 +5. 运行服务 + +```shell +shell> git clone git@github.com:zhu327/forum.git + +shell> cd forum +shell> pip install -r requirements.txt + +shell> mysql -u YOURUSERNAME -p + +mysql> create database forum; +mysql> exit + +shell> mysql -u YOURUSERNAME -p --database=forum < forum.sql +``` + +修改`xp/settings.py` + +```python +# 修改数据库配置 +DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'. + 'NAME': 'forum', # Or path to database file if using sqlite3. + # The following settings are not used with sqlite3: + 'USER': 'root', + 'PASSWORD': '', + 'HOST': '127.0.0.1', # Empty for localhost through domain sockets or '127.0.0.1' for localhost through TCP. + 'PORT': '3306', # Set to empty string for default. + } +} + +# 修改memcached配置,如果没有memcahed请删除这些与cache相关的内容 +CACHES = { # memcached缓存设置 + 'default': { + 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache', + 'LOCATION': '127.0.0.1:11211', + } +} + +SESSION_ENGINE = 'django.contrib.sessions.backends.cache' # 使用memcached存储session + +# 配置邮件发送 +EMAIL_HOST = 'smtp.qq.com' +EMAIL_PORT = 25 +EMAIL_HOST_USER= '*********' +EMAIL_HOST_PASSWORD= '******' +DEFAULT_FROM_EMAIL = '*********@qq.com' +``` + +运行服务 + +```shell +python manage.py runserver +``` + +默认超级用户`admin@admin.com`,密码`123456`,后台`/manage/admin/` + +生产环境下推荐使用gunicorn. \ No newline at end of file diff --git a/forum.sql b/forum.sql new file mode 100644 index 0000000..4f8ca5d --- /dev/null +++ b/forum.sql @@ -0,0 +1,603 @@ +-- MySQL dump 10.13 Distrib 5.6.21, for osx10.10 (x86_64) +-- +-- Host: localhost Database: forum +-- ------------------------------------------------------ +-- Server version 5.6.21 + +/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; +/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; +/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; +/*!40101 SET NAMES utf8 */; +/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; +/*!40103 SET TIME_ZONE='+00:00' */; +/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; +/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; +/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; +/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; + +-- +-- Table structure for table `auth_group` +-- + +DROP TABLE IF EXISTS `auth_group`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `auth_group` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `name` varchar(80) NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `name` (`name`) +) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `auth_group` +-- + +LOCK TABLES `auth_group` WRITE; +/*!40000 ALTER TABLE `auth_group` DISABLE KEYS */; +INSERT INTO `auth_group` VALUES (2,'版主'),(1,'管理员'); +/*!40000 ALTER TABLE `auth_group` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `auth_group_permissions` +-- + +DROP TABLE IF EXISTS `auth_group_permissions`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `auth_group_permissions` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `group_id` int(11) NOT NULL, + `permission_id` int(11) NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `group_id` (`group_id`,`permission_id`), + KEY `auth_group_permissions_5f412f9a` (`group_id`), + KEY `auth_group_permissions_83d7f98b` (`permission_id`), + CONSTRAINT `group_id_refs_id_f4b32aac` FOREIGN KEY (`group_id`) REFERENCES `auth_group` (`id`), + CONSTRAINT `permission_id_refs_id_6ba0f519` FOREIGN KEY (`permission_id`) REFERENCES `auth_permission` (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `auth_group_permissions` +-- + +LOCK TABLES `auth_group_permissions` WRITE; +/*!40000 ALTER TABLE `auth_group_permissions` DISABLE KEYS */; +INSERT INTO `auth_group_permissions` VALUES (3,1,20),(4,1,22),(5,1,23),(6,1,24),(7,1,25),(8,1,26),(9,1,27),(10,1,29),(11,1,30),(1,1,32),(2,1,33),(14,2,29),(15,2,30),(12,2,32),(13,2,33); +/*!40000 ALTER TABLE `auth_group_permissions` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `auth_permission` +-- + +DROP TABLE IF EXISTS `auth_permission`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `auth_permission` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `name` varchar(50) NOT NULL, + `content_type_id` int(11) NOT NULL, + `codename` varchar(100) NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `content_type_id` (`content_type_id`,`codename`), + KEY `auth_permission_37ef4eb4` (`content_type_id`), + CONSTRAINT `content_type_id_refs_id_d043b34a` FOREIGN KEY (`content_type_id`) REFERENCES `django_content_type` (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=46 DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `auth_permission` +-- + +LOCK TABLES `auth_permission` WRITE; +/*!40000 ALTER TABLE `auth_permission` DISABLE KEYS */; +INSERT INTO `auth_permission` VALUES (1,'Can add permission',1,'add_permission'),(2,'Can change permission',1,'change_permission'),(3,'Can delete permission',1,'delete_permission'),(4,'Can add group',2,'add_group'),(5,'Can change group',2,'change_group'),(6,'Can delete group',2,'delete_group'),(7,'Can add content type',3,'add_contenttype'),(8,'Can change content type',3,'change_contenttype'),(9,'Can delete content type',3,'delete_contenttype'),(10,'Can add session',4,'add_session'),(11,'Can change session',4,'change_session'),(12,'Can delete session',4,'delete_session'),(13,'Can add site',5,'add_site'),(14,'Can change site',5,'change_site'),(15,'Can delete site',5,'delete_site'),(16,'Can add log entry',6,'add_logentry'),(17,'Can change log entry',6,'change_logentry'),(18,'Can delete log entry',6,'delete_logentry'),(19,'Can add user',7,'add_forumuser'),(20,'Can change user',7,'change_forumuser'),(21,'Can delete user',7,'delete_forumuser'),(22,'Can add plane',8,'add_plane'),(23,'Can change plane',8,'change_plane'),(24,'Can delete plane',8,'delete_plane'),(25,'Can add node',9,'add_node'),(26,'Can change node',9,'change_node'),(27,'Can delete node',9,'delete_node'),(28,'Can add topic',10,'add_topic'),(29,'Can change topic',10,'change_topic'),(30,'Can delete topic',10,'delete_topic'),(31,'Can add reply',11,'add_reply'),(32,'Can change reply',11,'change_reply'),(33,'Can delete reply',11,'delete_reply'),(34,'Can add favorite',12,'add_favorite'),(35,'Can change favorite',12,'change_favorite'),(36,'Can delete favorite',12,'delete_favorite'),(37,'Can add notification',13,'add_notification'),(38,'Can change notification',13,'change_notification'),(39,'Can delete notification',13,'delete_notification'),(40,'Can add transaction',14,'add_transaction'),(41,'Can change transaction',14,'change_transaction'),(42,'Can delete transaction',14,'delete_transaction'),(43,'Can add vote',15,'add_vote'),(44,'Can change vote',15,'change_vote'),(45,'Can delete vote',15,'delete_vote'); +/*!40000 ALTER TABLE `auth_permission` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `django_admin_log` +-- + +DROP TABLE IF EXISTS `django_admin_log`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `django_admin_log` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `action_time` datetime NOT NULL, + `user_id` int(11) NOT NULL, + `content_type_id` int(11) DEFAULT NULL, + `object_id` longtext, + `object_repr` varchar(200) NOT NULL, + `action_flag` smallint(5) unsigned NOT NULL, + `change_message` longtext NOT NULL, + PRIMARY KEY (`id`), + KEY `django_admin_log_6340c63c` (`user_id`), + KEY `django_admin_log_37ef4eb4` (`content_type_id`), + CONSTRAINT `content_type_id_refs_id_93d2d1f8` FOREIGN KEY (`content_type_id`) REFERENCES `django_content_type` (`id`), + CONSTRAINT `user_id_refs_id_6c68e238` FOREIGN KEY (`user_id`) REFERENCES `forum_forumuser` (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `django_admin_log` +-- + +LOCK TABLES `django_admin_log` WRITE; +/*!40000 ALTER TABLE `django_admin_log` DISABLE KEYS */; +/*!40000 ALTER TABLE `django_admin_log` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `django_content_type` +-- + +DROP TABLE IF EXISTS `django_content_type`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `django_content_type` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `name` varchar(100) NOT NULL, + `app_label` varchar(100) NOT NULL, + `model` varchar(100) NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `app_label` (`app_label`,`model`) +) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `django_content_type` +-- + +LOCK TABLES `django_content_type` WRITE; +/*!40000 ALTER TABLE `django_content_type` DISABLE KEYS */; +INSERT INTO `django_content_type` VALUES (1,'permission','auth','permission'),(2,'group','auth','group'),(3,'content type','contenttypes','contenttype'),(4,'session','sessions','session'),(5,'site','sites','site'),(6,'log entry','admin','logentry'),(7,'user','forum','forumuser'),(8,'plane','forum','plane'),(9,'node','forum','node'),(10,'topic','forum','topic'),(11,'reply','forum','reply'),(12,'favorite','forum','favorite'),(13,'notification','forum','notification'),(14,'transaction','forum','transaction'),(15,'vote','forum','vote'); +/*!40000 ALTER TABLE `django_content_type` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `django_session` +-- + +DROP TABLE IF EXISTS `django_session`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `django_session` ( + `session_key` varchar(40) NOT NULL, + `session_data` longtext NOT NULL, + `expire_date` datetime NOT NULL, + PRIMARY KEY (`session_key`), + KEY `django_session_b7b81f0c` (`expire_date`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `django_session` +-- + +LOCK TABLES `django_session` WRITE; +/*!40000 ALTER TABLE `django_session` DISABLE KEYS */; +/*!40000 ALTER TABLE `django_session` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `django_site` +-- + +DROP TABLE IF EXISTS `django_site`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `django_site` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `domain` varchar(100) NOT NULL, + `name` varchar(50) NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `django_site` +-- + +LOCK TABLES `django_site` WRITE; +/*!40000 ALTER TABLE `django_site` DISABLE KEYS */; +INSERT INTO `django_site` VALUES (1,'127.0.0.1:8000','127.0.0.1:8000'); +/*!40000 ALTER TABLE `django_site` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `forum_favorite` +-- + +DROP TABLE IF EXISTS `forum_favorite`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `forum_favorite` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `owner_user_id` int(11) DEFAULT NULL, + `involved_type` int(11) DEFAULT NULL, + `involved_topic_id` int(11) DEFAULT NULL, + `involved_reply_id` int(11) DEFAULT NULL, + `created` datetime DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `forum_favorite_7cdabad6` (`owner_user_id`), + KEY `forum_favorite_a12f20f1` (`involved_topic_id`), + KEY `forum_favorite_99093a1e` (`involved_reply_id`), + CONSTRAINT `involved_reply_id_refs_id_db861f67` FOREIGN KEY (`involved_reply_id`) REFERENCES `forum_reply` (`id`), + CONSTRAINT `involved_topic_id_refs_id_80406b01` FOREIGN KEY (`involved_topic_id`) REFERENCES `forum_topic` (`id`), + CONSTRAINT `owner_user_id_refs_id_78db67eb` FOREIGN KEY (`owner_user_id`) REFERENCES `forum_forumuser` (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `forum_favorite` +-- + +LOCK TABLES `forum_favorite` WRITE; +/*!40000 ALTER TABLE `forum_favorite` DISABLE KEYS */; +/*!40000 ALTER TABLE `forum_favorite` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `forum_forumuser` +-- + +DROP TABLE IF EXISTS `forum_forumuser`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `forum_forumuser` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `password` varchar(128) NOT NULL, + `last_login` datetime NOT NULL, + `is_superuser` tinyint(1) NOT NULL, + `username` varchar(30) NOT NULL, + `first_name` varchar(30) NOT NULL, + `last_name` varchar(30) NOT NULL, + `email` varchar(75) NOT NULL, + `is_staff` tinyint(1) NOT NULL, + `is_active` tinyint(1) NOT NULL, + `date_joined` datetime NOT NULL, + `nickname` varchar(200) DEFAULT NULL, + `avatar` varchar(200) DEFAULT NULL, + `signature` varchar(500) DEFAULT NULL, + `location` varchar(200) DEFAULT NULL, + `website` varchar(200) DEFAULT NULL, + `company` varchar(200) DEFAULT NULL, + `role` int(11) DEFAULT NULL, + `balance` int(11) DEFAULT NULL, + `reputation` int(11) DEFAULT NULL, + `self_intro` varchar(500) DEFAULT NULL, + `updated` datetime DEFAULT NULL, + `twitter` varchar(200) DEFAULT NULL, + `github` varchar(200) DEFAULT NULL, + `douban` varchar(200) DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `username` (`username`) +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `forum_forumuser` +-- + +LOCK TABLES `forum_forumuser` WRITE; +UNLOCK TABLES; + +-- +-- Table structure for table `forum_forumuser_groups` +-- + +DROP TABLE IF EXISTS `forum_forumuser_groups`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `forum_forumuser_groups` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `forumuser_id` int(11) NOT NULL, + `group_id` int(11) NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `forumuser_id` (`forumuser_id`,`group_id`), + KEY `forum_forumuser_groups_4728ad57` (`forumuser_id`), + KEY `forum_forumuser_groups_5f412f9a` (`group_id`), + CONSTRAINT `forumuser_id_refs_id_822c2557` FOREIGN KEY (`forumuser_id`) REFERENCES `forum_forumuser` (`id`), + CONSTRAINT `group_id_refs_id_4e7ca183` FOREIGN KEY (`group_id`) REFERENCES `auth_group` (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `forum_forumuser_groups` +-- + +LOCK TABLES `forum_forumuser_groups` WRITE; +/*!40000 ALTER TABLE `forum_forumuser_groups` DISABLE KEYS */; +/*!40000 ALTER TABLE `forum_forumuser_groups` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `forum_forumuser_user_permissions` +-- + +DROP TABLE IF EXISTS `forum_forumuser_user_permissions`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `forum_forumuser_user_permissions` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `forumuser_id` int(11) NOT NULL, + `permission_id` int(11) NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `forumuser_id` (`forumuser_id`,`permission_id`), + KEY `forum_forumuser_user_permissions_4728ad57` (`forumuser_id`), + KEY `forum_forumuser_user_permissions_83d7f98b` (`permission_id`), + CONSTRAINT `forumuser_id_refs_id_69df7695` FOREIGN KEY (`forumuser_id`) REFERENCES `forum_forumuser` (`id`), + CONSTRAINT `permission_id_refs_id_70e54fc3` FOREIGN KEY (`permission_id`) REFERENCES `auth_permission` (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `forum_forumuser_user_permissions` +-- + +LOCK TABLES `forum_forumuser_user_permissions` WRITE; +/*!40000 ALTER TABLE `forum_forumuser_user_permissions` DISABLE KEYS */; +/*!40000 ALTER TABLE `forum_forumuser_user_permissions` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `forum_node` +-- + +DROP TABLE IF EXISTS `forum_node`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `forum_node` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `name` varchar(200) DEFAULT NULL, + `slug` varchar(200) DEFAULT NULL, + `thumb` varchar(200) DEFAULT NULL, + `introduction` varchar(500) DEFAULT NULL, + `created` datetime DEFAULT NULL, + `updated` datetime DEFAULT NULL, + `plane_id` int(11) DEFAULT NULL, + `topic_count` int(11) DEFAULT NULL, + `custom_style` text, + `limit_reputation` int(11) DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `forum_node_05110e07` (`plane_id`), + CONSTRAINT `plane_id_refs_id_550721f0` FOREIGN KEY (`plane_id`) REFERENCES `forum_plane` (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `forum_node` +-- + +LOCK TABLES `forum_node` WRITE; +/*!40000 ALTER TABLE `forum_node` DISABLE KEYS */; +/*!40000 ALTER TABLE `forum_node` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `forum_notification` +-- + +DROP TABLE IF EXISTS `forum_notification`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `forum_notification` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `content` text, + `status` int(11) DEFAULT NULL, + `involved_type` int(11) DEFAULT NULL, + `involved_user_id` int(11) DEFAULT NULL, + `involved_topic_id` int(11) DEFAULT NULL, + `involved_reply_id` int(11) DEFAULT NULL, + `trigger_user_id` int(11) DEFAULT NULL, + `occurrence_time` datetime DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `forum_notification_95fdbe29` (`involved_user_id`), + KEY `forum_notification_a12f20f1` (`involved_topic_id`), + KEY `forum_notification_99093a1e` (`involved_reply_id`), + KEY `forum_notification_431bdeb9` (`trigger_user_id`), + CONSTRAINT `involved_reply_id_refs_id_9bd6430b` FOREIGN KEY (`involved_reply_id`) REFERENCES `forum_reply` (`id`), + CONSTRAINT `involved_topic_id_refs_id_702d1de8` FOREIGN KEY (`involved_topic_id`) REFERENCES `forum_topic` (`id`), + CONSTRAINT `involved_user_id_refs_id_e2f3fda9` FOREIGN KEY (`involved_user_id`) REFERENCES `forum_forumuser` (`id`), + CONSTRAINT `trigger_user_id_refs_id_e2f3fda9` FOREIGN KEY (`trigger_user_id`) REFERENCES `forum_forumuser` (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `forum_notification` +-- + +LOCK TABLES `forum_notification` WRITE; +/*!40000 ALTER TABLE `forum_notification` DISABLE KEYS */; +/*!40000 ALTER TABLE `forum_notification` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `forum_plane` +-- + +DROP TABLE IF EXISTS `forum_plane`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `forum_plane` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `name` varchar(200) DEFAULT NULL, + `created` datetime DEFAULT NULL, + `updated` datetime DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `forum_plane` +-- + +LOCK TABLES `forum_plane` WRITE; +/*!40000 ALTER TABLE `forum_plane` DISABLE KEYS */; +/*!40000 ALTER TABLE `forum_plane` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `forum_reply` +-- + +DROP TABLE IF EXISTS `forum_reply`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `forum_reply` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `topic_id` int(11) DEFAULT NULL, + `author_id` int(11) DEFAULT NULL, + `content` text, + `created` datetime DEFAULT NULL, + `updated` datetime DEFAULT NULL, + `up_vote` int(11) DEFAULT NULL, + `down_vote` int(11) DEFAULT NULL, + `last_touched` datetime DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `forum_reply_76f18ad3` (`topic_id`), + KEY `forum_reply_e969df21` (`author_id`), + CONSTRAINT `author_id_refs_id_4945e1fe` FOREIGN KEY (`author_id`) REFERENCES `forum_forumuser` (`id`), + CONSTRAINT `topic_id_refs_id_92c2aa5d` FOREIGN KEY (`topic_id`) REFERENCES `forum_topic` (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `forum_reply` +-- + +LOCK TABLES `forum_reply` WRITE; +/*!40000 ALTER TABLE `forum_reply` DISABLE KEYS */; +/*!40000 ALTER TABLE `forum_reply` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `forum_topic` +-- + +DROP TABLE IF EXISTS `forum_topic`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `forum_topic` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `title` varchar(200) DEFAULT NULL, + `content` text, + `status` int(11) DEFAULT NULL, + `hits` int(11) DEFAULT NULL, + `created` datetime DEFAULT NULL, + `updated` datetime DEFAULT NULL, + `node_id` int(11) DEFAULT NULL, + `author_id` int(11) DEFAULT NULL, + `reply_count` int(11) DEFAULT NULL, + `last_replied_by_id` int(11) DEFAULT NULL, + `last_replied_time` datetime DEFAULT NULL, + `up_vote` int(11) DEFAULT NULL, + `down_vote` int(11) DEFAULT NULL, + `last_touched` datetime DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `forum_topic_e453c5c5` (`node_id`), + KEY `forum_topic_e969df21` (`author_id`), + KEY `forum_topic_67b51778` (`last_replied_by_id`), + CONSTRAINT `author_id_refs_id_524c87d9` FOREIGN KEY (`author_id`) REFERENCES `forum_forumuser` (`id`), + CONSTRAINT `last_replied_by_id_refs_id_524c87d9` FOREIGN KEY (`last_replied_by_id`) REFERENCES `forum_forumuser` (`id`), + CONSTRAINT `node_id_refs_id_5d0660c1` FOREIGN KEY (`node_id`) REFERENCES `forum_node` (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `forum_topic` +-- + +LOCK TABLES `forum_topic` WRITE; +/*!40000 ALTER TABLE `forum_topic` DISABLE KEYS */; +/*!40000 ALTER TABLE `forum_topic` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `forum_transaction` +-- + +DROP TABLE IF EXISTS `forum_transaction`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `forum_transaction` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `type` int(11) DEFAULT NULL, + `reward` int(11) DEFAULT NULL, + `user_id` int(11) DEFAULT NULL, + `current_balance` int(11) DEFAULT NULL, + `involved_user_id` int(11) DEFAULT NULL, + `involved_topic_id` int(11) DEFAULT NULL, + `involved_reply_id` int(11) DEFAULT NULL, + `occurrence_time` datetime DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `forum_transaction_6340c63c` (`user_id`), + KEY `forum_transaction_95fdbe29` (`involved_user_id`), + KEY `forum_transaction_a12f20f1` (`involved_topic_id`), + KEY `forum_transaction_99093a1e` (`involved_reply_id`), + CONSTRAINT `involved_reply_id_refs_id_4b659a2b` FOREIGN KEY (`involved_reply_id`) REFERENCES `forum_reply` (`id`), + CONSTRAINT `involved_topic_id_refs_id_49e3102d` FOREIGN KEY (`involved_topic_id`) REFERENCES `forum_topic` (`id`), + CONSTRAINT `involved_user_id_refs_id_b0c88a45` FOREIGN KEY (`involved_user_id`) REFERENCES `forum_forumuser` (`id`), + CONSTRAINT `user_id_refs_id_b0c88a45` FOREIGN KEY (`user_id`) REFERENCES `forum_forumuser` (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `forum_transaction` +-- + +LOCK TABLES `forum_transaction` WRITE; +/*!40000 ALTER TABLE `forum_transaction` DISABLE KEYS */; +/*!40000 ALTER TABLE `forum_transaction` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `forum_vote` +-- + +DROP TABLE IF EXISTS `forum_vote`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `forum_vote` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `status` int(11) DEFAULT NULL, + `involved_type` int(11) DEFAULT NULL, + `involved_user_id` int(11) DEFAULT NULL, + `involved_topic_id` int(11) DEFAULT NULL, + `involved_reply_id` int(11) DEFAULT NULL, + `trigger_user_id` int(11) DEFAULT NULL, + `occurrence_time` datetime DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `forum_vote_95fdbe29` (`involved_user_id`), + KEY `forum_vote_a12f20f1` (`involved_topic_id`), + KEY `forum_vote_99093a1e` (`involved_reply_id`), + KEY `forum_vote_431bdeb9` (`trigger_user_id`), + CONSTRAINT `involved_reply_id_refs_id_83742c71` FOREIGN KEY (`involved_reply_id`) REFERENCES `forum_reply` (`id`), + CONSTRAINT `involved_topic_id_refs_id_db1cceb1` FOREIGN KEY (`involved_topic_id`) REFERENCES `forum_topic` (`id`), + CONSTRAINT `involved_user_id_refs_id_7a43045b` FOREIGN KEY (`involved_user_id`) REFERENCES `forum_forumuser` (`id`), + CONSTRAINT `trigger_user_id_refs_id_7a43045b` FOREIGN KEY (`trigger_user_id`) REFERENCES `forum_forumuser` (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `forum_vote` +-- + +LOCK TABLES `forum_vote` WRITE; +/*!40000 ALTER TABLE `forum_vote` DISABLE KEYS */; +/*!40000 ALTER TABLE `forum_vote` ENABLE KEYS */; +UNLOCK TABLES; +/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; + +/*!40101 SET SQL_MODE=@OLD_SQL_MODE */; +/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; +/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; +/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; +/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; +/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; +/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; diff --git a/forum/__init__.py b/forum/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/forum/admin.py b/forum/admin.py new file mode 100644 index 0000000..95578da --- /dev/null +++ b/forum/admin.py @@ -0,0 +1 @@ +# coding: utf-8 from django.contrib import admin from forum.models import ForumUser, Plane, Node, Topic, Reply, Favorite, Notification, Transaction, Vote class ForumUserAdmin(admin.ModelAdmin): list_display = ('username', 'email', 'is_active', 'is_staff', 'date_joined') search_fields = ('username', 'email', 'nickname') list_filter = ('is_active', 'is_staff', 'date_joined') class PlaneAdmin(admin.ModelAdmin): list_display = ('name', 'created') search_fields = ('name',) list_filter = ('created',) class NodeAdmin(admin.ModelAdmin): list_display = ('name', 'slug', 'created', 'plane') search_fields = ('name',) list_filter = ('created',) class TopicAdmin(admin.ModelAdmin): list_display = ('title', 'created') search_fields = ('title', 'content') list_filter = ('created',) class ReplyAdmin(admin.ModelAdmin): list_display = ('content', 'created') search_fields = ('content',) list_filter = ('created',) admin.site.register(ForumUser, ForumUserAdmin) admin.site.register(Plane, PlaneAdmin) admin.site.register(Node, NodeAdmin) admin.site.register(Topic, TopicAdmin) admin.site.register(Reply, ReplyAdmin) admin.site.register(Favorite) admin.site.register(Notification) admin.site.register(Transaction) admin.site.register(Vote) \ No newline at end of file diff --git a/forum/backends.py b/forum/backends.py new file mode 100644 index 0000000..b5a81d5 --- /dev/null +++ b/forum/backends.py @@ -0,0 +1,21 @@ +# coding: utf-8 + +from django.contrib.auth.backends import ModelBackend # 继承这个为了使用admin的权限控制 +from forum.models import ForumUser + +class EmailAuthBackend(ModelBackend): + + def authenticate(self, email=None, password=None): + try: + user = ForumUser.objects.get(email=email) + if user.check_password(password): + return user + return None + except ForumUser.DoesNotExist: + return None + + def get_user(self, user_id): + try: + return ForumUser.objects.get(pk=user_id) + except ForumUser.DoesNotExist: + return None diff --git a/forum/context_processors.py b/forum/context_processors.py new file mode 100644 index 0000000..5cd34b3 --- /dev/null +++ b/forum/context_processors.py @@ -0,0 +1,11 @@ +# coding: utf-8 + +def custom_proc(request): + return dict( + navigation_bar = [ + ('/', 'topic', '社区'), + ('/members/', 'members', '成员'), + ('/', 'course', '教程'), + ('/', 'template', '模板'), + ], + ) diff --git a/forum/forms/__init__.py b/forum/forms/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/forum/forms/topic.py b/forum/forms/topic.py new file mode 100644 index 0000000..beb1e06 --- /dev/null +++ b/forum/forms/topic.py @@ -0,0 +1,21 @@ +# coding: utf-8 + +from django import forms + +class ReplyForm(forms.Form): + content = forms.CharField(error_messages={ + 'required': u'请填写回复内容',}) + + +class CreateForm(forms.Form): + title = forms.CharField(min_length=3, max_length=56, + error_messages={ + 'required': u'请填写帖子标题', + 'min_length': u'帖子标题长度过短(3-56个字符)', + 'max_length': u'帖子标题长度过长(3-56个字符)', + }) + content = forms.CharField(min_length=15, + error_messages={ + 'required': u'请填写帖子内容', + 'min_length': u'帖子内容长度过短(少于15个字符)', + }) diff --git a/forum/forms/user.py b/forum/forms/user.py new file mode 100644 index 0000000..e9e8900 --- /dev/null +++ b/forum/forms/user.py @@ -0,0 +1,172 @@ +# coding: utf-8 + +from django import forms +from django.contrib.auth import authenticate +from django.conf import settings +from forum.models import ForumUser + + +error_messages = { + 'username': { + 'required': u'必须填写用户名', + 'min_length': u'用户名长度过短(3-12个字符)', + 'max_length': u'用户名长度过长(3-12个字符)', + 'invalid': u'用户名格式错误(英文字母开头,数字,下划线构成)' + }, + 'email': { + 'required': u'必须填写E-mail', + 'min_length': u'Email长度有误', + 'max_length': u'Email长度有误', + 'invalid': u'Email地址无效' + }, + 'password': { + 'required': u'必须填写密码', + 'min_length': u'密码长度过短(6-64个字符)', + 'max_length': u'密码长度过长(6-64个字符)' + }, +} + + +class SettingPasswordForm(forms.Form): + password_old = forms.CharField(min_length=6, max_length=64, + error_messages=error_messages.get('password')) + password = forms.CharField(min_length=6, max_length=64, + error_messages=error_messages.get('password')) + password_confirm = forms.CharField(required=False) + + def __init__(self, request): + self.user = request.user + super(SettingPasswordForm, self).__init__(request.POST) + + def clean(self): + password_old = self.cleaned_data.get('password_old') + password = self.cleaned_data.get('password') + password_confirm = self.cleaned_data.get('password_confirm') + + if not (password_old and self.user.check_password(password_old)): + raise forms.ValidationError(u'当前输入旧密码有误') + + if password and password_confirm and password != password_confirm: + raise forms.ValidationError(u'两次输入新密码不一致') + return self.cleaned_data + + +class ForgotPasswordForm(forms.Form): + username = forms.RegexField(min_length=3, max_length=12, + regex=r'^[a-zA-Z][a-zA-Z0-9_]*$', + error_messages=error_messages.get('username')) + email = forms.EmailField(min_length=4, max_length=64, + error_messages=error_messages.get('email')) + + def __init__(self, *args, **kwargs): + self.user_cache = None + super(ForgotPasswordForm, self).__init__(*args, **kwargs) + + def clean(self): + username = self.cleaned_data.get('username') + email = self.cleaned_data.get('email') + + if username and email: + try: + self.user_cache = ForumUser.objects.get(username=username, email=email) + except ForumUser.DoesNotExist: + raise forms.ValidationError(u'所填用户名和邮箱有误') + return self.cleaned_data + + def get_user(self): + return self.user_cache + + +class LoginForm(forms.Form): + username = forms.CharField(min_length=3, max_length=12, + error_messages=error_messages.get('username')) + password = forms.CharField(min_length=6, max_length=64, + error_messages=error_messages.get('password')) + + def __init__(self, *args, **kwargs): + self.user_cache = None + super(LoginForm, self).__init__(*args, **kwargs) + + def clean(self): + import pdb; pdb.set_trace() + username = self.cleaned_data.get('username') + password = self.cleaned_data.get('password') + + if username and password: + self.user_cache = authenticate(username=username, password=password) + if self.user_cache is None: + raise forms.ValidationError(u'用户名或者密码不正确') + elif not self.user_cache.is_active: + raise forms.ValidationError(u'用户已被锁定,请联系管理员解锁') + return self.cleaned_data + + def get_user(self): + return self.user_cache + + +class RegisterForm(forms.ModelForm): + username = forms.RegexField(min_length=3, max_length=12, + regex=r'^[a-zA-Z][a-zA-Z0-9_]*$', + error_messages=error_messages.get('username')) + email = forms.EmailField(min_length=4, max_length=64, + error_messages=error_messages.get('email')) + password = forms.CharField(min_length=6, max_length=64, + error_messages=error_messages.get('password')) + password_confirm = forms.CharField(required=False) + + class Meta: + model = ForumUser + fields = ('username', 'email') + + def clean_username(self): + username = self.cleaned_data['username'] + try: + ForumUser.objects.get(username=username) + raise forms.ValidationError(u'所填用户名已经被注册过') + except ForumUser.DoesNotExist: + if username in settings.RESERVED: + raise forms.ValidationError(u'用户名被保留不可用') + return username + + def clean_email(self): + email = self.cleaned_data['email'] + try: + ForumUser.objects.get(email=email) + raise forms.ValidationError(u'所填邮箱已经被注册过') + except ForumUser.DoesNotExist: + return email + + def clean_password_confirm(self): + password1 = self.cleaned_data.get('password') + password2 = self.cleaned_data.get('password_confirm') + if password1 and password2 and password1 != password2: + raise forms.ValidationError(u'两次输入密码不一致') + return password2 + + def save(self, commit=True): + user = super(RegisterForm, self).save(commit=False) + user.set_password(self.cleaned_data['password']) + if commit: + user.save() + return user + + +class SettingForm(forms.Form): + username = forms.CharField() # readonly + email = forms.EmailField() # readonly + nickname = forms.CharField(min_length=3, max_length=12, required=False, + error_messages={ + 'min_length': u'昵称长度过短(3-12个字符)', + 'max_length': u'昵称长度过长(3-12个字符)', + }) + signature = forms.CharField(required=False) + location = forms.CharField(required=False) + website = forms.URLField(required=False, + error_messages={ + 'invalid': u'请填写合法的URL地址(如:http://f2e.im)', + }) + company = forms.CharField(required=False) + github = forms.CharField(required=False) + twitter = forms.CharField(required=False) + douban = forms.CharField(required=False) + self_intro = forms.CharField(required=False) diff --git a/forum/models.py b/forum/models.py new file mode 100644 index 0000000..b23c304 --- /dev/null +++ b/forum/models.py @@ -0,0 +1,274 @@ +#coding: utf-8 + +from django.db import models +from django.contrib.auth.models import AbstractUser + + +# 工具 +class Pages(object): + ''' + 分页查询类 + ''' + def __init__(self, count, current_page=1, list_rows=40): + self.total = count + self._current = current_page + self.size = list_rows + self.pages = self.total // self.size + (1 if self.total % self.size else 0) + + if (self.pages == 0) or (self._current < 1) or (self._current > self.pages): + self.start = 0 + self.end = 0 + self.index = 1 + else: + self.start = (self._current - 1) * self.size + self.end = self.size + self.start + self.index = self._current + self.prev = self.index - 1 if self.index > 1 else self.index + self.next = self.index + 1 if self.index < self.pages else self.index + + +# 数据库字段类型定义 +class NormalTextField(models.TextField): + ''' + models.TextField 默认在MySQL上的数据类型是longtext,用不到那 + 么大,所以派生NormalTextField,只修改生成SQL时的数据类型text + ''' + def db_type(self, connection): + return 'text' + + +# Model objects +class NodeManager(models.Manager): + ''' + Node objects + ''' + def get_all_hot_nodes(self): + query = self.get_queryset().filter(topic__reply_count__gt=0).order_by('-topic__reply_count') + query.query.group_by = ['id'] # Django使用GROUP BY方法 + return query + + +class TopicManager(models.Manager): + ''' + Topic objects + ''' + def get_all_topic(self, num=36, current_page=1): # 可以考虑在这里过滤掉没有头像的用户发帖,不显示在主页 + count = self.get_queryset().count() + page = Pages(count, current_page, num) + query = self.get_queryset().select_related('node', 'author', 'last_replied_by').\ + all().order_by('-last_touched', '-created', '-last_replied_time', '-id')[page.start:page.end] + return query, page + + def get_all_topics_by_node_slug(self, num = 36, current_page = 1, node_slug = None): + count = self.get_queryset().filter(node__slug=node_slug).count() + page = Pages(count, current_page, num) + query = self.get_queryset().select_related('node', 'author', 'last_replied_by').\ + filter(node__slug=node_slug).order_by('-last_touched', '-created', '-last_replied_time', '-id')[page.start:page.end] + return query, page + + def get_user_all_topics(self, uid, num = 36, current_page = 1): + count = self.get_queryset().filter(author__id=uid).count() + page = Pages(count, current_page, num) + query = self.get_queryset().select_related('node', 'author', 'last_replied_by').\ + filter(author__id=uid).order_by('-id')[page.start:page.end] + return query, page + + def get_user_all_replied_topics(self, uid, num = 36, current_page = 1): + pass # F2E好像写的不对,留着以后有用再说 + + def get_topic_by_topic_id(self, topic_id): + query = self.get_queryset().select_related('node', 'author', 'last_replied_by').get(pk=topic_id) + return query + + def get_user_last_created_topic(self, uid): + query = self.get_queryset().filter(author__id=uid).order_by('-created')[0] + return query + + +class ReplyManager(models.Manager): + ''' + Reply objects + ''' + def get_all_replies_by_topic_id(self, topic_id, num = 16, current_page = 1): + count = self.get_queryset().filter(topic__id=topic_id).count() + page = Pages(count, current_page, num) + query = self.get_queryset().select_related('author').\ + filter(topic__id=topic_id).order_by('id')[page.start:page.end] + return query, page + + def get_user_all_replies(self, uid, num = 16, current_page = 1): + count = self.get_queryset().filter(author__id=uid).count() + page = Pages(count, current_page, num) + query = self.get_queryset().select_related('topic', 'topic__author').\ + filter(author__id=uid).order_by('-id')[page.start:page.end] + return query, page + + +class FavoriteManager(models.Manager): + ''' + favorite objects + ''' + def get_user_all_favorites(self, uid, num = 16, current_page = 1): + count = self.get_queryset().filter(owner_user__id=uid).count() + page = Pages(count, current_page, num) + query = self.get_queryset().select_related('involved_topic', 'involved_topic__node', \ + 'involved_topic__author', 'involved_topic__last_replied_by').\ + filter(owner_user__id=uid).order_by('-id')[page.start:page.end] + return query, page + + +class NotificationManager(models.Manager): + ''' + Notification objects + ''' + def get_user_all_notifications(self, uid, num = 16, current_page = 1): + count = self.get_queryset().filter(involved_user__id=uid).count() + page = Pages(count, current_page, num) + query = self.get_queryset().select_related('trigger_user', 'involved_topic').\ + filter(involved_user__id=uid).order_by('-id')[page.start:page.end] + return query, page + + +# 数据库表结构 +class ForumUser(AbstractUser): + ''' + django.contrib.auth.models.User 默认User类字段太少,用AbstractUser + 自定义一个User类,增加字段 + ''' + nickname = models.CharField(max_length=200, null=True, blank=True) + avatar = models.CharField(max_length=200, null=True, blank=True) # 头像 + signature = models.CharField(max_length=500, null=True, blank=True) # 签名 + location = models.CharField(max_length=200, null=True, blank=True) + website = models.URLField(null=True, blank=True) + company = models.CharField(max_length=200, null=True, blank=True) + role = models.IntegerField(null=True, blank=True) # 角色 + balance = models.IntegerField(null=True, blank=True) # 余额 + reputation = models.IntegerField(null=True, blank=True) # 声誉 + self_intro = models.CharField(max_length=500, null=True, blank=True)# 自我介绍 + updated = models.DateTimeField(null=True, blank=True) + twitter = models.CharField(max_length=200, null=True, blank=True) + github = models.CharField(max_length=200, null=True, blank=True) + douban = models.CharField(max_length=200, null=True, blank=True) + + +class Plane(models.Model): + ''' + 论坛节点分类 + ''' + name = models.CharField(max_length=200, null=True, blank=True) + created = models.DateTimeField(null=True, blank=True) + updated = models.DateTimeField(null=True, blank=True) + + def __unicode__(self): + return self.name + +class Node(models.Model): + ''' + 论坛板块单位,节点 + ''' + name = models.CharField(max_length=200, null=True, blank=True) + slug = models.CharField(max_length=200, null=True, blank=True) # 块,作为node的识别url + thumb = models.CharField(max_length=200, null=True, blank=True) # 拇指? + introduction = models.CharField(max_length=500, null=True, blank=True) # 介绍 + created = models.DateTimeField(null=True, blank=True) + updated = models.DateTimeField(null=True, blank=True) + plane = models.ForeignKey(Plane, null=True, blank=True) + topic_count = models.IntegerField(null=True, blank=True) + custom_style = NormalTextField(null=True, blank=True) + limit_reputation = models.IntegerField(null=True, blank=True) # 最小声誉,估计是权限控制 + + objects = NodeManager() + + +class Topic(models.Model): + ''' + 话题表,定义了论坛帖子的基本单位 + ''' + title = models.CharField(max_length=200, null=True, blank=True) + content = NormalTextField(null=True, blank=True) + status = models.IntegerField(null=True, blank=True) + hits = models.IntegerField(null=True, blank=True) + created = models.DateTimeField(null=True, blank=True) + updated = models.DateTimeField(null=True, blank=True) + node = models.ForeignKey(Node, null=True, blank=True) + author = models.ForeignKey(ForumUser, related_name='topic_author', null=True, blank=True) # 设置了related_name后,可不用_set + reply_count = models.IntegerField(null=True, blank=True) + last_replied_by = models.ForeignKey(ForumUser, related_name='topic_last', null=True, blank=True) + last_replied_time = models.DateTimeField(null=True, blank=True) + up_vote = models.IntegerField(null=True, blank=True) + down_vote = models.IntegerField(null=True, blank=True) + last_touched = models.DateTimeField(null=True, blank=True) + + objects = TopicManager() + + +class Reply(models.Model): + ''' + 话题的回复 + ''' + topic = models.ForeignKey(Topic, null=True, blank=True) + author = models.ForeignKey(ForumUser, related_name='reply_author', null=True, blank=True) + content = NormalTextField(null=True, blank=True) + created = models.DateTimeField(null=True, blank=True) + updated = models.DateTimeField(null=True, blank=True) + up_vote = models.IntegerField(null=True, blank=True) + down_vote = models.IntegerField(null=True, blank=True) + last_touched = models.DateTimeField(null=True, blank=True) + + objects = ReplyManager() + + +class Favorite(models.Model): + ''' + 用户收藏的话题或回复 + ''' + owner_user = models.ForeignKey(ForumUser, related_name='fav_user', null=True, blank=True) + involved_type = models.IntegerField(null=True, blank=True) + involved_topic = models.ForeignKey(Topic, related_name='fav_topic', null=True, blank=True) + involved_reply = models.ForeignKey(Reply, related_name='fav_reply', null=True, blank=True) + created = models.DateTimeField(null=True, blank=True) + + objects = FavoriteManager() + + +class Notification(models.Model): + ''' + 通知消息 + ''' + content = NormalTextField(null=True, blank=True) + status = models.IntegerField(null=True, blank=True) + involved_type = models.IntegerField(null=True, blank=True) + involved_user = models.ForeignKey(ForumUser, related_name='notify_user', null=True, blank=True) + involved_topic = models.ForeignKey(Topic, related_name='notify_topic', null=True, blank=True) + involved_reply = models.ForeignKey(Reply, related_name='notify_reply', null=True, blank=True) + trigger_user = models.ForeignKey(ForumUser, related_name='notify_trigger', null=True, blank=True) + occurrence_time = models.DateTimeField(null=True, blank=True) + + objects = NotificationManager() + + +class Transaction(models.Model): + ''' + 交易 + ''' + type = models.IntegerField(null=True, blank=True) + reward = models.IntegerField(null=True, blank=True) + user = models.ForeignKey(ForumUser, related_name='trans_user', null=True, blank=True) + current_balance = models.IntegerField(null=True, blank=True) + involved_user = models.ForeignKey(ForumUser, related_name='trans_involved', null=True, blank=True) + involved_topic = models.ForeignKey(Topic, related_name='trans_topic', null=True, blank=True) + involved_reply = models.ForeignKey(Reply, related_name='trans_reply', null=True, blank=True) + occurrence_time = models.DateTimeField(null=True, blank=True) + + +class Vote(models.Model): + ''' + 投票 + ''' + status = models.IntegerField(null=True, blank=True) + involved_type = models.IntegerField(null=True, blank=True) + involved_user = models.ForeignKey(ForumUser, related_name='vote_user', null=True, blank=True) + involved_topic = models.ForeignKey(Topic, related_name='vote_topic', null=True, blank=True) + involved_reply = models.ForeignKey(Reply, related_name='vote_reply', null=True, blank=True) + trigger_user = models.ForeignKey(ForumUser, related_name='vote_trigger', null=True, blank=True) + occurrence_time = models.DateTimeField(null=True, blank=True) diff --git a/forum/sitemap.py b/forum/sitemap.py new file mode 100644 index 0000000..404d92c --- /dev/null +++ b/forum/sitemap.py @@ -0,0 +1,19 @@ +# coding: utf-8 + + +from django.contrib.sitemaps import Sitemap +from forum.models import Topic + + +class TopicSitemap(Sitemap): + changefreq = "never" + priority = 0.5 + + def items(self): + return Topic.objects.all().order_by('-created', '-id') + + def lastmod(self, obj): + return obj.created + + def location(self, obj): + return '/t/%s/' % obj.id diff --git a/forum/static/avatar/b_default.png b/forum/static/avatar/b_default.png new file mode 100755 index 0000000000000000000000000000000000000000..9cc56b78e75da422a402973f72db4e0b6dd48c5c GIT binary patch literal 4623 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 VMlbwUB>2+Q{+3Q?)NcI_> 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 literal 0 HcmV?d00001 diff --git a/forum/static/css/base/atom.css b/forum/static/css/base/atom.css new file mode 100755 index 0000000..4f593d0 --- /dev/null +++ b/forum/static/css/base/atom.css @@ -0,0 +1,379 @@ +/*文字排版*/ +.f12 { + font-size: 12px; } + +.f13 { + font-size: 13px; } + +.f14 { + font-size: 14px; } + +.f16 { + font-size: 16px; } + +.f20 { + font-size: 20px; } + +.fb { + font-weight: bold; } + +.fn { + font-weight: normal; } + +.t2 { + text-indent: 2em; } + +.lh150 { + line-height: 150%; } + +.lh180 { + line-height: 180%; } + +.lh200 { + line-height: 200%; } + +.unl { + text-decoration: underline; } + +.no_unl { + text-decoration: none; } + +/*定位*/ +.tl { + text-align: left; } + +.tc { + text-align: center; } + +.tr { + text-align: right; } + +.bc { + margin-left: auto; + margin-right: auto; } + +.fl { + float: left; + display: inline; } + +.fr { + float: right; + display: inline; } + +.cb { + clear: both; } + +.cl { + clear: left; } + +.cr { + clear: right; } + +.clearfix:after { + content: "."; + display: block; + height: 0; + clear: both; + visibility: hidden; } + +.clearfix { + display: inline-block; } + +* html .clearfix { + height: 1%; } + +.clearfix { + display: block; } + +.vm { + vertical-align: middle; } + +.pr { + position: relative; } + +.pa { + position: absolute; } + +.abs-right { + position: absolute; + right: 0; } + +.zoom { + zoom: 1; } + +.hidden { + visibility: hidden; } + +.none { + display: none; } + +/*长度高度*/ +.w10 { + width: 10px; } + +.w20 { + width: 20px; } + +.w30 { + width: 30px; } + +.w40 { + width: 40px; } + +.w50 { + width: 50px; } + +.w60 { + width: 60px; } + +.w70 { + width: 70px; } + +.w80 { + width: 80px; } + +.w90 { + width: 90px; } + +.w100 { + width: 100px; } + +.w200 { + width: 200px; } + +.w250 { + width: 250px; } + +.w300 { + width: 300px; } + +.w400 { + width: 400px; } + +.w500 { + width: 500px; } + +.w600 { + width: 600px; } + +.w700 { + width: 700px; } + +.w800 { + width: 800px; } + +.w { + width: 100%; } + +.h50 { + height: 50px; } + +.h80 { + height: 80px; } + +.h100 { + height: 100px; } + +.h200 { + height: 200px; } + +.h { + height: 100%; } + +/*边距*/ +.m10 { + margin: 10px; } + +.m15 { + margin: 15px; } + +.m30 { + margin: 30px; } + +.mt5 { + margin-top: 5px; } + +.mt10 { + margin-top: 10px; } + +.mt15 { + margin-top: 15px; } + +.mt20 { + margin-top: 20px; } + +.mt30 { + margin-top: 30px; } + +.mt50 { + margin-top: 50px; } + +.mt100 { + margin-top: 100px; } + +.mb10 { + margin-bottom: 10px; } + +.mb15 { + margin-bottom: 15px; } + +.mb20 { + margin-bottom: 20px; } + +.mb30 { + margin-bottom: 30px; } + +.mb50 { + margin-bottom: 50px; } + +.mb100 { + margin-bottom: 100px; } + +.ml5 { + margin-left: 5px; } + +.ml10 { + margin-left: 10px; } + +.ml15 { + margin-left: 15px; } + +.ml20 { + margin-left: 20px; } + +.ml30 { + margin-left: 30px; } + +.ml50 { + margin-left: 50px; } + +.ml100 { + margin-left: 100px; } + +.mr5 { + margin-right: 5px; } + +.mr10 { + margin-right: 10px; } + +.mr15 { + margin-right: 15px; } + +.mr20 { + margin-right: 20px; } + +.mr30 { + margin-right: 30px; } + +.mr50 { + margin-right: 50px; } + +.mr100 { + margin-right: 100px; } + +.p10 { + padding: 10px; } + +.p15 { + padding: 15px; } + +.p20 { + padding: 20px; } + +.p30 { + padding: 30px; } + +.pt5 { + padding-top: 5px; } + +.pt10 { + padding-top: 10px; } + +.pt15 { + padding-top: 15px; } + +.pt20 { + padding-top: 20px; } + +.pt30 { + padding-top: 30px; } + +.pt50 { + padding-top: 50px; } + +.pb5 { + padding-bottom: 5px; } + +.pb10 { + padding-bottom: 10px; } + +.pb15 { + padding-bottom: 15px; } + +.pb20 { + padding-bottom: 20px; } + +.pb30 { + padding-bottom: 30px; } + +.pb50 { + padding-bottom: 50px; } + +.pb100 { + padding-bottom: 100px; } + +.pl5 { + padding-left: 5px; } + +.pl10 { + padding-left: 10px; } + +.pl15 { + padding-left: 15px; } + +.pl20 { + padding-left: 20px; } + +.pl30 { + padding-left: 30px; } + +.pl50 { + padding-left: 50px; } + +.pl100 { + padding-left: 100px; } + +.pr5 { + padding-right: 5px; } + +.pr10 { + padding-right: 10px; } + +.pr15 { + padding-right: 15px; } + +.pr20 { + padding-right: 20px; } + +.pr30 { + padding-right: 30px; } + +.pr50 { + padding-right: 50px; } + +.pr100 { + padding-right: 100px; } + +.clearfix { + zoom: 1; + /* IE < 8 */ } + .clearfix:before, .clearfix:after { + content: "."; + display: block; + height: 0; + visibility: hidden; } + .clearfix:after { + clear: both; } + +.clear { + clear: both; } diff --git a/forum/static/css/base/atom.scss b/forum/static/css/base/atom.scss new file mode 100755 index 0000000..5ec63d9 --- /dev/null +++ b/forum/static/css/base/atom.scss @@ -0,0 +1,143 @@ +/*文字排版*/ +.f12 {font-size:12px;} +.f13 {font-size:13px;} +.f14 {font-size:14px;} +.f16 {font-size:16px;} +.f20 {font-size:20px;} +.fb {font-weight:bold;} +.fn {font-weight:normal;} +.t2 {text-indent:2em;} +.lh150 {line-height:150%;} +.lh180 {line-height:180%;} +.lh200 {line-height:200%;} +.unl {text-decoration:underline;} +.no_unl {text-decoration:none;} + +/*定位*/ +.tl {text-align:left;} +.tc {text-align:center;} +.tr {text-align:right;} +.bc {margin-left:auto;margin-right:auto;} +.fl {float:left;display:inline;} +.fr {float:right;display:inline;} +.cb {clear:both;} +.cl {clear:left;} +.cr {clear:right;} +.clearfix:after {content:".";display:block;height:0;clear:both;visibility:hidden;} +.clearfix {display:inline-block;}* html .clearfix{height:1%}.clearfix{display:block} +.vm {vertical-align:middle;} +.pr {position:relative;} +.pa {position:absolute;} +.abs-right {position:absolute;right:0;} +.zoom {zoom:1;} +.hidden {visibility:hidden;} +.none {display:none;} + +/*长度高度*/ +.w10 {width:10px;} +.w20 {width:20px;} +.w30 {width:30px;} +.w40 {width:40px;} +.w50 {width:50px;} +.w60 {width:60px;} +.w70 {width:70px;} +.w80 {width:80px;} +.w90 {width:90px;} +.w100 {width:100px;} +.w200 {width:200px;} +.w250 {width:250px;} +.w300 {width:300px;} +.w400 {width:400px;} +.w500 {width:500px;} +.w600 {width:600px;} +.w700 {width:700px;} +.w800 {width:800px;} +.w {width:100%;} +.h50 {height:50px;} +.h80 {height:80px;} +.h100 {height:100px;} +.h200 {height:200px;} +.h {height:100%;} + +/*边距*/ +.m10 {margin:10px;} +.m15 {margin:15px;} +.m30 {margin:30px;} +.mt5 {margin-top:5px;} +.mt10 {margin-top:10px;} +.mt15 {margin-top:15px;} +.mt20 {margin-top:20px;} +.mt30 {margin-top:30px;} +.mt50 {margin-top:50px;} +.mt100 {margin-top:100px;} +.mb10 {margin-bottom:10px;} +.mb15 {margin-bottom:15px;} +.mb20 {margin-bottom:20px;} +.mb30 {margin-bottom:30px;} +.mb50 {margin-bottom:50px;} +.mb100 {margin-bottom:100px;} +.ml5 {margin-left:5px;} +.ml10 {margin-left:10px;} +.ml15 {margin-left:15px;} +.ml20 {margin-left:20px;} +.ml30 {margin-left:30px;} +.ml50 {margin-left:50px;} +.ml100 {margin-left:100px;} +.mr5 {margin-right:5px;} +.mr10 {margin-right:10px;} +.mr15 {margin-right:15px;} +.mr20 {margin-right:20px;} +.mr30 {margin-right:30px;} +.mr50 {margin-right:50px;} +.mr100 {margin-right:100px;} +.p10 {padding:10px;} +.p15 {padding:15px;} +.p20 {padding:20px;} +.p30 {padding:30px;} +.pt5 {padding-top:5px;} +.pt10 {padding-top:10px;} +.pt15 {padding-top:15px;} +.pt20 {padding-top:20px;} +.pt30 {padding-top:30px;} +.pt50 {padding-top:50px;} +.pb5 {padding-bottom:5px;} +.pb10 {padding-bottom:10px;} +.pb15 {padding-bottom:15px;} +.pb20 {padding-bottom:20px;} +.pb30 {padding-bottom:30px;} +.pb50 {padding-bottom:50px;} +.pb100 {padding-bottom:100px;} +.pl5 {padding-left:5px;} +.pl10 {padding-left:10px;} +.pl15 {padding-left:15px;} +.pl20 {padding-left:20px;} +.pl30 {padding-left:30px;} +.pl50 {padding-left:50px;} +.pl100 {padding-left:100px;} +.pr5 {padding-right:5px;} +.pr10 {padding-right:10px;} +.pr15 {padding-right:15px;} +.pr20 {padding-right:20px;} +.pr30 {padding-right:30px;} +.pr50 {padding-right:50px;} +.pr100 {padding-right:100px;} + +.clearfix { + zoom: 1; /* IE < 8 */ + + &:before, + &:after { + content: "."; + display: block; + height: 0; + visibility: hidden; + } + + &:after { + clear: both; + } +} + +.clear { + clear: both; +} diff --git a/forum/static/css/base/octicons.css b/forum/static/css/base/octicons.css new file mode 100755 index 0000000..fc98909 --- /dev/null +++ b/forum/static/css/base/octicons.css @@ -0,0 +1,551 @@ +@font-face { + font-family: 'octicons'; + src: url("/static/octicons/octicons-d3d0b82bf791ac147d72bbf0287cdde8ee5c97b8.eot"); + src: url("/static/octicons/octicons-d3d0b82bf791ac147d72bbf0287cdde8ee5c97b8.eot#iefix") format("embedded-opentype"), url("/static/octicons/octicons-a60d585f754059c3c2ef731f853c38c157040b9c.woff") format("woff"), url("/static/octicons/octicons-8b97c2cd5068ec4620cbde3140db257b1924a192.ttf") format("truetype"), url("/static/octicons/octicons-a8248bbb3baccca60948d81d69e3406b71956a69.svg#octicons") format("svg"); + font-weight: normal; + font-style: normal; } + +.octicon { + font: normal normal 16px octicons; + line-height: 1; + display: inline-block; + text-decoration: none; + -webkit-font-smoothing: antialiased; } + +.mega-octicon { + font: normal normal 32px octicons; + line-height: 1; + display: inline-block; + text-decoration: none; + -webkit-font-smoothing: antialiased; } + +.octicon-alert:before { + content: '\f02d'; } + +.octicon-alignment-align:before { + content: '\f08a'; } + +.octicon-alignment-aligned-to:before { + content: '\f08e'; } + +.octicon-alignment-unalign:before { + content: '\f08b'; } + +.octicon-arrow-down:before { + content: '\f03f'; } + +.octicon-arrow-left:before { + content: '\f040'; } + +.octicon-arrow-right:before { + content: '\f03e'; } + +.octicon-arrow-small-down:before { + content: '\f0a0'; } + +.octicon-arrow-small-left:before { + content: '\f0a1'; } + +.octicon-arrow-small-right:before { + content: '\f071'; } + +.octicon-arrow-small-up:before { + content: '\f09f'; } + +.octicon-arrow-up:before { + content: '\f03d'; } + +.octicon-beer:before { + content: '\f069'; } + +.octicon-book:before { + content: '\f007'; } + +.octicon-bookmark:before { + content: '\f07b'; } + +.octicon-broadcast:before { + content: '\f048'; } + +.octicon-bug:before { + content: '\f091'; } + +.octicon-calendar:before { + content: '\f068'; } + +.octicon-check:before { + content: '\f03a'; } + +.octicon-checklist:before { + content: '\f076'; } + +.octicon-chevron-down:before { + content: '\f0a3'; } + +.octicon-chevron-left:before { + content: '\f0a4'; } + +.octicon-chevron-right:before { + content: '\f078'; } + +.octicon-chevron-up:before { + content: '\f0a2'; } + +.octicon-circle-slash:before { + content: '\f084'; } + +.octicon-clippy:before { + content: '\f035'; } + +.octicon-clock:before { + content: '\f046'; } + +.octicon-cloud-download:before { + content: '\f00b'; } + +.octicon-cloud-upload:before { + content: '\f00c'; } + +.octicon-code:before { + content: '\f05f'; } + +.octicon-color-mode:before { + content: '\f065'; } + +.octicon-comment:before { + content: '\f02b'; } + +.octicon-comment-add:before { + content: '\f06f'; } + +.octicon-comment-discussion:before { + content: '\f04f'; } + +.octicon-credit-card:before { + content: '\f045'; } + +.octicon-dashboard:before { + content: '\f07d'; } + +.octicon-database:before { + content: '\f096'; } + +.octicon-device-camera:before { + content: '\f056'; } + +.octicon-device-camera-video:before { + content: '\f057'; } + +.octicon-device-desktop:before { + content: '\f27c'; } + +.octicon-device-mobile:before { + content: '\f038'; } + +.octicon-diff:before { + content: '\f04d'; } + +.octicon-diff-added:before { + content: '\f06b'; } + +.octicon-diff-ignored:before { + content: '\f099'; } + +.octicon-diff-modified:before { + content: '\f06d'; } + +.octicon-diff-removed:before { + content: '\f06c'; } + +.octicon-diff-renamed:before { + content: '\f06e'; } + +.octicon-ellipsis:before { + content: '\f09a'; } + +.octicon-eye:before { + content: '\f04e'; } + +.octicon-eye-unwatch:before { + content: '\f01e'; } + +.octicon-eye-watch:before { + content: '\f01d'; } + +.octicon-file-add:before { + content: '\f086'; } + +.octicon-file-binary:before { + content: '\f094'; } + +.octicon-file-code:before { + content: '\f010'; } + +.octicon-file-directory:before { + content: '\f016'; } + +.octicon-file-directory-create:before { + content: '\f095'; } + +.octicon-file-media:before { + content: '\f012'; } + +.octicon-file-pdf:before { + content: '\f014'; } + +.octicon-file-submodule:before { + content: '\f017'; } + +.octicon-file-symlink-directory:before { + content: '\f0b1'; } + +.octicon-file-symlink-file:before { + content: '\f0b0'; } + +.octicon-file-text:before { + content: '\f011'; } + +.octicon-file-zip:before { + content: '\f013'; } + +.octicon-gear:before { + content: '\f02f'; } + +.octicon-gift:before { + content: '\f042'; } + +.octicon-gist:before { + content: '\f00e'; } + +.octicon-gist-fork:before { + content: '\f079'; } + +.octicon-gist-new:before { + content: '\f07a'; } + +.octicon-gist-private:before { + content: '\f00f'; } + +.octicon-gist-secret:before { + content: '\f08c'; } + +.octicon-git-branch:before { + content: '\f020'; } + +.octicon-git-branch-create:before { + content: '\f098'; } + +.octicon-git-branch-delete:before { + content: '\f09b'; } + +.octicon-git-commit:before { + content: '\f01f'; } + +.octicon-git-compare:before { + content: '\f0ac'; } + +.octicon-git-fork-private:before { + content: '\f021'; } + +.octicon-git-merge:before { + content: '\f023'; } + +.octicon-git-pull-request:before { + content: '\f009'; } + +.octicon-git-pull-request-abandoned:before { + content: '\f090'; } + +.octicon-globe:before { + content: '\f0b6'; } + +.octicon-graph:before { + content: '\f043'; } + +.octicon-history:before { + content: '\f07e'; } + +.octicon-home:before { + content: '\f08d'; } + +.octicon-horizontal-rule:before { + content: '\f070'; } + +.octicon-hourglass:before { + content: '\f09e'; } + +.octicon-hubot:before { + content: '\f09d'; } + +.octicon-info:before { + content: '\f059'; } + +.octicon-issue-closed:before { + content: '\f028'; } + +.octicon-issue-opened:before { + content: '\f026'; } + +.octicon-issue-reopened:before { + content: '\f027'; } + +.octicon-jersey:before { + content: '\f019'; } + +.octicon-jump-down:before { + content: '\f072'; } + +.octicon-jump-left:before { + content: '\f0a5'; } + +.octicon-jump-right:before { + content: '\f0a6'; } + +.octicon-jump-up:before { + content: '\f073'; } + +.octicon-key:before { + content: '\f049'; } + +.octicon-keyboard:before { + content: '\f00d'; } + +.octicon-light-bulb:before { + content: '\f000'; } + +.octicon-link:before { + content: '\f05c'; } + +.octicon-link-external:before { + content: '\f07f'; } + +.octicon-list-ordered:before { + content: '\f062'; } + +.octicon-list-unordered:before { + content: '\f061'; } + +.octicon-location:before { + content: '\f060'; } + +.octicon-lock:before { + content: '\f06a'; } + +.octicon-log-in:before { + content: '\f036'; } + +.octicon-log-out:before { + content: '\f032'; } + +.octicon-logo-github:before { + content: '\f092'; } + +.octicon-mail:before { + content: '\f03b'; } + +.octicon-mail-read:before { + content: '\f03c'; } + +.octicon-mail-reply:before { + content: '\f051'; } + +.octicon-mark-github:before { + content: '\f00a'; } + +.octicon-mark-twitter:before { + content: '\f0ae'; } + +.octicon-megaphone:before { + content: '\f077'; } + +.octicon-microscope:before { + content: '\f089'; } + +.octicon-milestone:before { + content: '\f075'; } + +.octicon-mirror-private:before { + content: '\f025'; } + +.octicon-mirror-public:before { + content: '\f024'; } + +.octicon-move-down:before { + content: '\f0a8'; } + +.octicon-move-left:before { + content: '\f074'; } + +.octicon-move-right:before { + content: '\f0a9'; } + +.octicon-move-up:before { + content: '\f0a7'; } + +.octicon-mute:before { + content: '\f080'; } + +.octicon-no-newline:before { + content: '\f09c'; } + +.octicon-octoface:before { + content: '\f008'; } + +.octicon-organization:before { + content: '\f037'; } + +.octicon-pencil:before { + content: '\f058'; } + +.octicon-person:before { + content: '\f018'; } + +.octicon-person-add:before { + content: '\f01a'; } + +.octicon-person-follow:before { + content: '\f01c'; } + +.octicon-person-remove:before { + content: '\f01b'; } + +.octicon-pin:before { + content: '\f041'; } + +.octicon-plus:before { + content: '\f05d'; } + +.octicon-podium:before { + content: '\f0af'; } + +.octicon-primitive-dot:before { + content: '\f052'; } + +.octicon-primitive-square:before { + content: '\f053'; } + +.octicon-pulse:before { + content: '\f085'; } + +.octicon-question:before { + content: '\f02c'; } + +.octicon-quote:before { + content: '\f063'; } + +.octicon-radio-tower:before { + content: '\f030'; } + +.octicon-remove-close:before { + content: '\f050'; } + +.octicon-repo:before { + content: '\f001'; } + +.octicon-repo-clone:before { + content: '\f04c'; } + +.octicon-repo-create:before { + content: '\f003'; } + +.octicon-repo-delete:before { + content: '\f004'; } + +.octicon-repo-force-push:before { + content: '\f04a'; } + +.octicon-repo-forked:before { + content: '\f002'; } + +.octicon-repo-pull:before { + content: '\f006'; } + +.octicon-repo-push:before { + content: '\f005'; } + +.octicon-repo-sync:before { + content: '\f04b'; } + +.octicon-rocket:before { + content: '\f033'; } + +.octicon-rss:before { + content: '\f034'; } + +.octicon-ruby:before { + content: '\f047'; } + +.octicon-screen-full:before { + content: '\f066'; } + +.octicon-screen-normal:before { + content: '\f067'; } + +.octicon-search:before { + content: '\f02e'; } + +.octicon-server:before { + content: '\f097'; } + +.octicon-settings:before { + content: '\f07c'; } + +.octicon-squirrel:before { + content: '\f0b2'; } + +.octicon-star:before { + content: '\f02a'; } + +.octicon-star-add:before { + content: '\f082'; } + +.octicon-star-delete:before { + content: '\f083'; } + +.octicon-stop:before { + content: '\f08f'; } + +.octicon-sync:before { + content: '\f087'; } + +.octicon-tag:before { + content: '\f015'; } + +.octicon-tag-add:before { + content: '\f054'; } + +.octicon-tag-remove:before { + content: '\f055'; } + +.octicon-telescope:before { + content: '\f088'; } + +.octicon-three-bars:before { + content: '\f05e'; } + +.octicon-tools:before { + content: '\f031'; } + +.octicon-triangle-down:before { + content: '\f05b'; } + +.octicon-triangle-left:before { + content: '\f044'; } + +.octicon-triangle-right:before { + content: '\f05a'; } + +.octicon-triangle-up:before { + content: '\f0aa'; } + +.octicon-unfold:before { + content: '\f039'; } + +.octicon-versions:before { + content: '\f064'; } + +.octicon-x:before { + content: '\f081'; } + +.octicon-zap:before { + content: '\26A1'; } diff --git a/forum/static/css/base/octicons.scss b/forum/static/css/base/octicons.scss new file mode 100755 index 0000000..c2a8a9a --- /dev/null +++ b/forum/static/css/base/octicons.scss @@ -0,0 +1 @@ +@font-face{font-family:'octicons';src:url("/static/octicons/octicons-d3d0b82bf791ac147d72bbf0287cdde8ee5c97b8.eot");src:url("/static/octicons/octicons-d3d0b82bf791ac147d72bbf0287cdde8ee5c97b8.eot#iefix") format("embedded-opentype"),url("/static/octicons/octicons-a60d585f754059c3c2ef731f853c38c157040b9c.woff") format("woff"),url("/static/octicons/octicons-8b97c2cd5068ec4620cbde3140db257b1924a192.ttf") format("truetype"),url("/static/octicons/octicons-a8248bbb3baccca60948d81d69e3406b71956a69.svg#octicons") format("svg");font-weight:normal;font-style:normal}.octicon{font:normal normal 16px octicons;line-height:1;display:inline-block;text-decoration:none;-webkit-font-smoothing:antialiased}.mega-octicon{font:normal normal 32px octicons;line-height:1;display:inline-block;text-decoration:none;-webkit-font-smoothing:antialiased}.octicon-alert:before{content:'\f02d'}.octicon-alignment-align:before{content:'\f08a'}.octicon-alignment-aligned-to:before{content:'\f08e'}.octicon-alignment-unalign:before{content:'\f08b'}.octicon-arrow-down:before{content:'\f03f'}.octicon-arrow-left:before{content:'\f040'}.octicon-arrow-right:before{content:'\f03e'}.octicon-arrow-small-down:before{content:'\f0a0'}.octicon-arrow-small-left:before{content:'\f0a1'}.octicon-arrow-small-right:before{content:'\f071'}.octicon-arrow-small-up:before{content:'\f09f'}.octicon-arrow-up:before{content:'\f03d'}.octicon-beer:before{content:'\f069'}.octicon-book:before{content:'\f007'}.octicon-bookmark:before{content:'\f07b'}.octicon-broadcast:before{content:'\f048'}.octicon-bug:before{content:'\f091'}.octicon-calendar:before{content:'\f068'}.octicon-check:before{content:'\f03a'}.octicon-checklist:before{content:'\f076'}.octicon-chevron-down:before{content:'\f0a3'}.octicon-chevron-left:before{content:'\f0a4'}.octicon-chevron-right:before{content:'\f078'}.octicon-chevron-up:before{content:'\f0a2'}.octicon-circle-slash:before{content:'\f084'}.octicon-clippy:before{content:'\f035'}.octicon-clock:before{content:'\f046'}.octicon-cloud-download:before{content:'\f00b'}.octicon-cloud-upload:before{content:'\f00c'}.octicon-code:before{content:'\f05f'}.octicon-color-mode:before{content:'\f065'}.octicon-comment:before{content:'\f02b'}.octicon-comment-add:before{content:'\f06f'}.octicon-comment-discussion:before{content:'\f04f'}.octicon-credit-card:before{content:'\f045'}.octicon-dashboard:before{content:'\f07d'}.octicon-database:before{content:'\f096'}.octicon-device-camera:before{content:'\f056'}.octicon-device-camera-video:before{content:'\f057'}.octicon-device-desktop:before{content:'\f27c'}.octicon-device-mobile:before{content:'\f038'}.octicon-diff:before{content:'\f04d'}.octicon-diff-added:before{content:'\f06b'}.octicon-diff-ignored:before{content:'\f099'}.octicon-diff-modified:before{content:'\f06d'}.octicon-diff-removed:before{content:'\f06c'}.octicon-diff-renamed:before{content:'\f06e'}.octicon-ellipsis:before{content:'\f09a'}.octicon-eye:before{content:'\f04e'}.octicon-eye-unwatch:before{content:'\f01e'}.octicon-eye-watch:before{content:'\f01d'}.octicon-file-add:before{content:'\f086'}.octicon-file-binary:before{content:'\f094'}.octicon-file-code:before{content:'\f010'}.octicon-file-directory:before{content:'\f016'}.octicon-file-directory-create:before{content:'\f095'}.octicon-file-media:before{content:'\f012'}.octicon-file-pdf:before{content:'\f014'}.octicon-file-submodule:before{content:'\f017'}.octicon-file-symlink-directory:before{content:'\f0b1'}.octicon-file-symlink-file:before{content:'\f0b0'}.octicon-file-text:before{content:'\f011'}.octicon-file-zip:before{content:'\f013'}.octicon-gear:before{content:'\f02f'}.octicon-gift:before{content:'\f042'}.octicon-gist:before{content:'\f00e'}.octicon-gist-fork:before{content:'\f079'}.octicon-gist-new:before{content:'\f07a'}.octicon-gist-private:before{content:'\f00f'}.octicon-gist-secret:before{content:'\f08c'}.octicon-git-branch:before{content:'\f020'}.octicon-git-branch-create:before{content:'\f098'}.octicon-git-branch-delete:before{content:'\f09b'}.octicon-git-commit:before{content:'\f01f'}.octicon-git-compare:before{content:'\f0ac'}.octicon-git-fork-private:before{content:'\f021'}.octicon-git-merge:before{content:'\f023'}.octicon-git-pull-request:before{content:'\f009'}.octicon-git-pull-request-abandoned:before{content:'\f090'}.octicon-globe:before{content:'\f0b6'}.octicon-graph:before{content:'\f043'}.octicon-history:before{content:'\f07e'}.octicon-home:before{content:'\f08d'}.octicon-horizontal-rule:before{content:'\f070'}.octicon-hourglass:before{content:'\f09e'}.octicon-hubot:before{content:'\f09d'}.octicon-info:before{content:'\f059'}.octicon-issue-closed:before{content:'\f028'}.octicon-issue-opened:before{content:'\f026'}.octicon-issue-reopened:before{content:'\f027'}.octicon-jersey:before{content:'\f019'}.octicon-jump-down:before{content:'\f072'}.octicon-jump-left:before{content:'\f0a5'}.octicon-jump-right:before{content:'\f0a6'}.octicon-jump-up:before{content:'\f073'}.octicon-key:before{content:'\f049'}.octicon-keyboard:before{content:'\f00d'}.octicon-light-bulb:before{content:'\f000'}.octicon-link:before{content:'\f05c'}.octicon-link-external:before{content:'\f07f'}.octicon-list-ordered:before{content:'\f062'}.octicon-list-unordered:before{content:'\f061'}.octicon-location:before{content:'\f060'}.octicon-lock:before{content:'\f06a'}.octicon-log-in:before{content:'\f036'}.octicon-log-out:before{content:'\f032'}.octicon-logo-github:before{content:'\f092'}.octicon-mail:before{content:'\f03b'}.octicon-mail-read:before{content:'\f03c'}.octicon-mail-reply:before{content:'\f051'}.octicon-mark-github:before{content:'\f00a'}.octicon-mark-twitter:before{content:'\f0ae'}.octicon-megaphone:before{content:'\f077'}.octicon-microscope:before{content:'\f089'}.octicon-milestone:before{content:'\f075'}.octicon-mirror-private:before{content:'\f025'}.octicon-mirror-public:before{content:'\f024'}.octicon-move-down:before{content:'\f0a8'}.octicon-move-left:before{content:'\f074'}.octicon-move-right:before{content:'\f0a9'}.octicon-move-up:before{content:'\f0a7'}.octicon-mute:before{content:'\f080'}.octicon-no-newline:before{content:'\f09c'}.octicon-octoface:before{content:'\f008'}.octicon-organization:before{content:'\f037'}.octicon-pencil:before{content:'\f058'}.octicon-person:before{content:'\f018'}.octicon-person-add:before{content:'\f01a'}.octicon-person-follow:before{content:'\f01c'}.octicon-person-remove:before{content:'\f01b'}.octicon-pin:before{content:'\f041'}.octicon-plus:before{content:'\f05d'}.octicon-podium:before{content:'\f0af'}.octicon-primitive-dot:before{content:'\f052'}.octicon-primitive-square:before{content:'\f053'}.octicon-pulse:before{content:'\f085'}.octicon-question:before{content:'\f02c'}.octicon-quote:before{content:'\f063'}.octicon-radio-tower:before{content:'\f030'}.octicon-remove-close:before{content:'\f050'}.octicon-repo:before{content:'\f001'}.octicon-repo-clone:before{content:'\f04c'}.octicon-repo-create:before{content:'\f003'}.octicon-repo-delete:before{content:'\f004'}.octicon-repo-force-push:before{content:'\f04a'}.octicon-repo-forked:before{content:'\f002'}.octicon-repo-pull:before{content:'\f006'}.octicon-repo-push:before{content:'\f005'}.octicon-repo-sync:before{content:'\f04b'}.octicon-rocket:before{content:'\f033'}.octicon-rss:before{content:'\f034'}.octicon-ruby:before{content:'\f047'}.octicon-screen-full:before{content:'\f066'}.octicon-screen-normal:before{content:'\f067'}.octicon-search:before{content:'\f02e'}.octicon-server:before{content:'\f097'}.octicon-settings:before{content:'\f07c'}.octicon-squirrel:before{content:'\f0b2'}.octicon-star:before{content:'\f02a'}.octicon-star-add:before{content:'\f082'}.octicon-star-delete:before{content:'\f083'}.octicon-stop:before{content:'\f08f'}.octicon-sync:before{content:'\f087'}.octicon-tag:before{content:'\f015'}.octicon-tag-add:before{content:'\f054'}.octicon-tag-remove:before{content:'\f055'}.octicon-telescope:before{content:'\f088'}.octicon-three-bars:before{content:'\f05e'}.octicon-tools:before{content:'\f031'}.octicon-triangle-down:before{content:'\f05b'}.octicon-triangle-left:before{content:'\f044'}.octicon-triangle-right:before{content:'\f05a'}.octicon-triangle-up:before{content:'\f0aa'}.octicon-unfold:before{content:'\f039'}.octicon-versions:before{content:'\f064'}.octicon-x:before{content:'\f081'}.octicon-zap:before{content:'\26A1'} diff --git a/forum/static/css/base/reset.css b/forum/static/css/base/reset.css new file mode 100755 index 0000000..75c94ff --- /dev/null +++ b/forum/static/css/base/reset.css @@ -0,0 +1,124 @@ +/* +YUI 3.4.1 (build 4118) +Copyright 2011 Yahoo! Inc. All rights reserved. +Licensed under the BSD License. +http://yuilibrary.com/license/ +*/ +/* + TODO will need to remove settings on HTML since we can't namespace it. + TODO with the prefix, should I group by selector or property for weight savings? +*/ +html{ + color:#000; + background:#FFF; +} +/* + TODO remove settings on BODY since we can't namespace it. +*/ +/* + TODO test putting a class on HEAD. + - Fails on FF. +*/ +body, +div, +dl, +dt, +dd, +ul, +ol, +li, +h1, +h2, +h3, +h4, +h5, +h6, +pre, +code, +form, +fieldset, +legend, +input, +textarea, +p, +blockquote, +th, +td { + margin:0; + padding:0; +} +table { + border-collapse:collapse; + border-spacing:0; +} +fieldset, +img { + border:0; +} +/* + TODO think about hanlding inheritence differently, maybe letting IE6 fail a bit... +*/ +address, +caption, +cite, +code, +dfn, +em, +strong, +th, +var { + font-style:normal; + font-weight:normal; +} + +ol, +ul { + list-style:none; +} + +caption, +th { + text-align:left; +} +h1, +h2, +h3, +h4, +h5, +h6 { + font-size:100%; + font-weight:normal; +} +q:before, +q:after { + content:''; +} +abbr, +acronym { + border:0; + font-variant:normal; +} +/* to preserve line-height and selector appearance */ +sup { + vertical-align:text-top; +} +sub { + vertical-align:text-bottom; +} +input, +textarea, +select { + font-family:inherit; + font-size:inherit; + font-weight:inherit; +} +/*to enable resizing for IE*/ +input, +textarea, +select { + *font-size:100%; +} +/*because legend doesn't inherit in IE */ +legend { + color:#000; +} diff --git a/forum/static/css/bootstrap/bootstrap.css b/forum/static/css/bootstrap/bootstrap.css new file mode 100755 index 0000000..df972fc --- /dev/null +++ b/forum/static/css/bootstrap/bootstrap.css @@ -0,0 +1,5117 @@ +/*! + * Bootstrap v2.2.2 + * + * Copyright 2012 Twitter, Inc + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world @twitter by @mdo and @fat. + */ +.clearfix { + *zoom: 1; +} +.clearfix:before, +.clearfix:after { + display: table; + content: ""; + line-height: 0; +} +.clearfix:after { + clear: both; +} +.hide-text { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} +.input-block-level { + display: block; + width: 100%; + min-height: 30px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +nav, +section { + display: block; +} +audio, +canvas, +video { + display: inline-block; + *display: inline; + *zoom: 1; +} +audio:not([controls]) { + display: none; +} +html { + font-size: 100%; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; +} +a:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +a:hover, +a:active { + outline: 0; +} +sub, +sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline; +} +sup { + top: -0.5em; +} +sub { + bottom: -0.25em; +} +img { + /* Responsive images (ensure images don't scale beyond their parents) */ + + max-width: 100%; + /* Part 1: Set a maxium relative to the parent */ + + width: auto\9; + /* IE7-8 need help adjusting responsive images */ + + height: auto; + /* Part 2: Scale the height according to the width, otherwise you get stretching */ + + vertical-align: middle; + border: 0; + -ms-interpolation-mode: bicubic; +} +#map_canvas img, +.google-maps img { + max-width: none; +} +button, +input, +select, +textarea { + margin: 0; + font-size: 100%; + vertical-align: middle; +} +button, +input { + *overflow: visible; + line-height: normal; +} +button::-moz-focus-inner, +input::-moz-focus-inner { + padding: 0; + border: 0; +} +button, +html input[type="button"], +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; + cursor: pointer; +} +label, +select, +button, +input[type="button"], +input[type="reset"], +input[type="submit"], +input[type="radio"], +input[type="checkbox"] { + cursor: pointer; +} +input[type="search"] { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + -webkit-appearance: textfield; +} +input[type="search"]::-webkit-search-decoration, +input[type="search"]::-webkit-search-cancel-button { + -webkit-appearance: none; +} +textarea { + overflow: auto; + vertical-align: top; +} +@media print { + * { + text-shadow: none !important; + color: #000 !important; + background: transparent !important; + box-shadow: none !important; + } + a, + a:visited { + text-decoration: underline; + } + a[href]:after { + content: " (" attr(href) ")"; + } + abbr[title]:after { + content: " (" attr(title) ")"; + } + .ir a:after, + a[href^="javascript:"]:after, + a[href^="#"]:after { + content: ""; + } + pre, + blockquote { + border: 1px solid #999; + page-break-inside: avoid; + } + thead { + display: table-header-group; + } + tr, + img { + page-break-inside: avoid; + } + img { + max-width: 100% !important; + } + @page { + margin: 0.5cm; + } + p, + h2, + h3 { + orphans: 3; + widows: 3; + } + h2, + h3 { + page-break-after: avoid; + } +} +body { + margin: 0; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 12px; + line-height: 20px; + color: #333333; + background-color: #ffffff; +} +a { + color: #0088cc; + text-decoration: none; +} +a:hover { + color: #005580; + text-decoration: underline; +} +.img-rounded { + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} +.img-polaroid { + padding: 4px; + background-color: #fff; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); +} +.img-circle { + -webkit-border-radius: 500px; + -moz-border-radius: 500px; + border-radius: 500px; +} +.row { + margin-left: -20px; + *zoom: 1; +} +.row:before, +.row:after { + display: table; + content: ""; + line-height: 0; +} +.row:after { + clear: both; +} +[class*="span"] { + float: left; + min-height: 1px; + margin-left: 20px; +} +.container, +.navbar-static-top .container, +.navbar-fixed-top .container, +.navbar-fixed-bottom .container { + width: 940px; +} +.span12 { + width: 940px; +} +.span11 { + width: 860px; +} +.span10 { + width: 780px; +} +.span9 { + width: 700px; +} +.span8 { + width: 620px; +} +.span7 { + width: 540px; +} +.span6 { + width: 460px; +} +.span5 { + width: 380px; +} +.span4 { + width: 300px; +} +.span3 { + width: 220px; +} +.span2 { + width: 140px; +} +.span1 { + width: 60px; +} +.offset12 { + margin-left: 980px; +} +.offset11 { + margin-left: 900px; +} +.offset10 { + margin-left: 820px; +} +.offset9 { + margin-left: 740px; +} +.offset8 { + margin-left: 660px; +} +.offset7 { + margin-left: 580px; +} +.offset6 { + margin-left: 500px; +} +.offset5 { + margin-left: 420px; +} +.offset4 { + margin-left: 340px; +} +.offset3 { + margin-left: 260px; +} +.offset2 { + margin-left: 180px; +} +.offset1 { + margin-left: 100px; +} +.row-fluid { + width: 100%; + *zoom: 1; +} +.row-fluid:before, +.row-fluid:after { + display: table; + content: ""; + line-height: 0; +} +.row-fluid:after { + clear: both; +} +.row-fluid [class*="span"] { + display: block; + width: 100%; + min-height: 30px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + float: left; + margin-left: 2.127659574468085%; + *margin-left: 2.074468085106383%; +} +.row-fluid [class*="span"]:first-child { + margin-left: 0; +} +.row-fluid .controls-row [class*="span"] + [class*="span"] { + margin-left: 2.127659574468085%; +} +.row-fluid .span12 { + width: 100%; + *width: 99.94680851063829%; +} +.row-fluid .span11 { + width: 91.48936170212765%; + *width: 91.43617021276594%; +} +.row-fluid .span10 { + width: 82.97872340425532%; + *width: 82.92553191489361%; +} +.row-fluid .span9 { + width: 74.46808510638297%; + *width: 74.41489361702126%; +} +.row-fluid .span8 { + width: 65.95744680851064%; + *width: 65.90425531914893%; +} +.row-fluid .span7 { + width: 57.44680851063829%; + *width: 57.39361702127659%; +} +.row-fluid .span6 { + width: 48.93617021276595%; + *width: 48.88297872340425%; +} +.row-fluid .span5 { + width: 40.42553191489362%; + *width: 40.37234042553192%; +} +.row-fluid .span4 { + width: 31.914893617021278%; + *width: 31.861702127659576%; +} +.row-fluid .span3 { + width: 23.404255319148934%; + *width: 23.351063829787233%; +} +.row-fluid .span2 { + width: 14.893617021276595%; + *width: 14.840425531914894%; +} +.row-fluid .span1 { + width: 6.382978723404255%; + *width: 6.329787234042553%; +} +.row-fluid .offset12 { + margin-left: 104.25531914893617%; + *margin-left: 104.14893617021275%; +} +.row-fluid .offset12:first-child { + margin-left: 102.12765957446808%; + *margin-left: 102.02127659574467%; +} +.row-fluid .offset11 { + margin-left: 95.74468085106382%; + *margin-left: 95.6382978723404%; +} +.row-fluid .offset11:first-child { + margin-left: 93.61702127659574%; + *margin-left: 93.51063829787232%; +} +.row-fluid .offset10 { + margin-left: 87.23404255319149%; + *margin-left: 87.12765957446807%; +} +.row-fluid .offset10:first-child { + margin-left: 85.1063829787234%; + *margin-left: 84.99999999999999%; +} +.row-fluid .offset9 { + margin-left: 78.72340425531914%; + *margin-left: 78.61702127659572%; +} +.row-fluid .offset9:first-child { + margin-left: 76.59574468085106%; + *margin-left: 76.48936170212764%; +} +.row-fluid .offset8 { + margin-left: 70.2127659574468%; + *margin-left: 70.10638297872339%; +} +.row-fluid .offset8:first-child { + margin-left: 68.08510638297872%; + *margin-left: 67.9787234042553%; +} +.row-fluid .offset7 { + margin-left: 61.70212765957446%; + *margin-left: 61.59574468085106%; +} +.row-fluid .offset7:first-child { + margin-left: 59.574468085106375%; + *margin-left: 59.46808510638297%; +} +.row-fluid .offset6 { + margin-left: 53.191489361702125%; + *margin-left: 53.085106382978715%; +} +.row-fluid .offset6:first-child { + margin-left: 51.063829787234035%; + *margin-left: 50.95744680851063%; +} +.row-fluid .offset5 { + margin-left: 44.68085106382979%; + *margin-left: 44.57446808510638%; +} +.row-fluid .offset5:first-child { + margin-left: 42.5531914893617%; + *margin-left: 42.4468085106383%; +} +.row-fluid .offset4 { + margin-left: 36.170212765957444%; + *margin-left: 36.06382978723405%; +} +.row-fluid .offset4:first-child { + margin-left: 34.04255319148936%; + *margin-left: 33.93617021276596%; +} +.row-fluid .offset3 { + margin-left: 27.659574468085104%; + *margin-left: 27.5531914893617%; +} +.row-fluid .offset3:first-child { + margin-left: 25.53191489361702%; + *margin-left: 25.425531914893618%; +} +.row-fluid .offset2 { + margin-left: 19.148936170212764%; + *margin-left: 19.04255319148936%; +} +.row-fluid .offset2:first-child { + margin-left: 17.02127659574468%; + *margin-left: 16.914893617021278%; +} +.row-fluid .offset1 { + margin-left: 10.638297872340425%; + *margin-left: 10.53191489361702%; +} +.row-fluid .offset1:first-child { + margin-left: 8.51063829787234%; + *margin-left: 8.404255319148938%; +} +[class*="span"].hide, +.row-fluid [class*="span"].hide { + display: none; +} +[class*="span"].pull-right, +.row-fluid [class*="span"].pull-right { + float: right; +} +.container { + margin-right: auto; + margin-left: auto; + *zoom: 1; +} +.container:before, +.container:after { + display: table; + content: ""; + line-height: 0; +} +.container:after { + clear: both; +} +.container-fluid { + padding-right: 20px; + padding-left: 20px; + *zoom: 1; +} +.container-fluid:before, +.container-fluid:after { + display: table; + content: ""; + line-height: 0; +} +.container-fluid:after { + clear: both; +} +p { + margin: 0 0 10px; +} +.lead { + margin-bottom: 20px; + font-size: 18px; + font-weight: 200; + line-height: 30px; +} +small { + font-size: 85%; +} +strong { + font-weight: bold; +} +em { + font-style: italic; +} +cite { + font-style: normal; +} +.muted { + color: #999999; +} +a.muted:hover { + color: #808080; +} +.text-warning { + color: #c09853; +} +a.text-warning:hover { + color: #a47e3c; +} +.text-error { + color: #b94a48; +} +a.text-error:hover { + color: #953b39; +} +.text-info { + color: #3a87ad; +} +a.text-info:hover { + color: #2d6987; +} +.text-success { + color: #468847; +} +a.text-success:hover { + color: #356635; +} +h1, +h2, +h3, +h4, +h5, +h6 { + margin: 10px 0; + font-family: inherit; + font-weight: bold; + line-height: 20px; + color: inherit; + text-rendering: optimizelegibility; +} +h1 small, +h2 small, +h3 small, +h4 small, +h5 small, +h6 small { + font-weight: normal; + line-height: 1; + color: #999999; +} +h1, +h2, +h3 { + line-height: 40px; +} +h1 { + font-size: 33px; +} +h2 { + font-size: 27px; +} +h3 { + font-size: 21px; +} +h4 { + font-size: 15px; +} +h5 { + font-size: 12px; +} +h6 { + font-size: 10.2px; +} +h1 small { + font-size: 21px; +} +h2 small { + font-size: 15px; +} +h3 small { + font-size: 12px; +} +h4 small { + font-size: 12px; +} +.page-header { + padding-bottom: 9px; + margin: 20px 0 30px; + border-bottom: 1px solid #eeeeee; +} +ul, +ol { + padding: 0; + margin: 0 0 10px 25px; +} +ul ul, +ul ol, +ol ol, +ol ul { + margin-bottom: 0; +} +li { + line-height: 20px; +} +ul.unstyled, +ol.unstyled { + margin-left: 0; + list-style: none; +} +ul.inline, +ol.inline { + margin-left: 0; + list-style: none; +} +ul.inline > li, +ol.inline > li { + display: inline-block; + padding-left: 5px; + padding-right: 5px; +} +dl { + margin-bottom: 20px; +} +dt, +dd { + line-height: 20px; +} +dt { + font-weight: bold; +} +dd { + margin-left: 10px; +} +.dl-horizontal { + *zoom: 1; +} +.dl-horizontal:before, +.dl-horizontal:after { + display: table; + content: ""; + line-height: 0; +} +.dl-horizontal:after { + clear: both; +} +.dl-horizontal dt { + float: left; + width: 160px; + clear: left; + text-align: right; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} +.dl-horizontal dd { + margin-left: 180px; +} +hr { + margin: 20px 0; + border: 0; + border-top: 1px solid #eeeeee; + border-bottom: 1px solid #ffffff; +} +abbr[title], +abbr[data-original-title] { + cursor: help; + border-bottom: 1px dotted #999999; +} +abbr.initialism { + font-size: 90%; + text-transform: uppercase; +} +blockquote { + padding: 0 0 0 15px; + margin: 0 0 20px; + border-left: 5px solid #eeeeee; +} +blockquote p { + margin-bottom: 0; + font-size: 16px; + font-weight: 300; + line-height: 25px; +} +blockquote small { + display: block; + line-height: 20px; + color: #999999; +} +blockquote small:before { + content: '\2014 \00A0'; +} +blockquote.pull-right { + float: right; + padding-right: 15px; + padding-left: 0; + border-right: 5px solid #eeeeee; + border-left: 0; +} +blockquote.pull-right p, +blockquote.pull-right small { + text-align: right; +} +blockquote.pull-right small:before { + content: ''; +} +blockquote.pull-right small:after { + content: '\00A0 \2014'; +} +q:before, +q:after, +blockquote:before, +blockquote:after { + content: ""; +} +address { + display: block; + margin-bottom: 20px; + font-style: normal; + line-height: 20px; +} +code, +pre { + padding: 0 3px 2px; + font-family: Monaco, Menlo, Consolas, "Courier New", monospace; + font-size: 10px; + color: #333333; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} +code { + padding: 2px 4px; + color: #d14; + background-color: #f7f7f9; + border: 1px solid #e1e1e8; + white-space: nowrap; +} +pre { + display: block; + padding: 9.5px; + margin: 0 0 10px; + font-size: 11px; + line-height: 20px; + word-break: break-all; + word-wrap: break-word; + white-space: pre; + white-space: pre-wrap; + background-color: #f5f5f5; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.15); + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +pre.prettyprint { + margin-bottom: 20px; +} +pre code { + padding: 0; + color: inherit; + white-space: pre; + white-space: pre-wrap; + background-color: transparent; + border: 0; +} +.pre-scrollable { + max-height: 340px; + overflow-y: scroll; +} +.label, +.badge { + display: inline-block; + padding: 2px 4px; + font-size: 10.152px; + font-weight: bold; + line-height: 14px; + color: #ffffff; + vertical-align: baseline; + white-space: nowrap; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #999999; +} +.label { + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} +.badge { + padding-left: 9px; + padding-right: 9px; + -webkit-border-radius: 9px; + -moz-border-radius: 9px; + border-radius: 9px; +} +.label:empty, +.badge:empty { + display: none; +} +a.label:hover, +a.badge:hover { + color: #ffffff; + text-decoration: none; + cursor: pointer; +} +.label-important, +.badge-important { + background-color: #b94a48; +} +.label-important[href], +.badge-important[href] { + background-color: #953b39; +} +.label-warning, +.badge-warning { + background-color: #f89406; +} +.label-warning[href], +.badge-warning[href] { + background-color: #c67605; +} +.label-success, +.badge-success { + background-color: #468847; +} +.label-success[href], +.badge-success[href] { + background-color: #356635; +} +.label-info, +.badge-info { + background-color: #3a87ad; +} +.label-info[href], +.badge-info[href] { + background-color: #2d6987; +} +.label-inverse, +.badge-inverse { + background-color: #333333; +} +.label-inverse[href], +.badge-inverse[href] { + background-color: #1a1a1a; +} +.btn .label, +.btn .badge { + position: relative; + top: -1px; +} +.btn-mini .label, +.btn-mini .badge { + top: 0; +} +table { + max-width: 100%; + background-color: transparent; + border-collapse: collapse; + border-spacing: 0; +} +.table { + width: 100%; + margin-bottom: 20px; +} +.table th, +.table td { + padding: 8px; + line-height: 20px; + text-align: left; + vertical-align: top; + border-top: 1px solid #dddddd; +} +.table th { + font-weight: bold; +} +.table thead th { + vertical-align: bottom; +} +.table caption + thead tr:first-child th, +.table caption + thead tr:first-child td, +.table colgroup + thead tr:first-child th, +.table colgroup + thead tr:first-child td, +.table thead:first-child tr:first-child th, +.table thead:first-child tr:first-child td { + border-top: 0; +} +.table tbody + tbody { + border-top: 2px solid #dddddd; +} +.table .table { + background-color: #ffffff; +} +.table-condensed th, +.table-condensed td { + padding: 4px 5px; +} +.table-bordered { + border: 1px solid #dddddd; + border-collapse: separate; + *border-collapse: collapse; + border-left: 0; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.table-bordered th, +.table-bordered td { + border-left: 1px solid #dddddd; +} +.table-bordered caption + thead tr:first-child th, +.table-bordered caption + tbody tr:first-child th, +.table-bordered caption + tbody tr:first-child td, +.table-bordered colgroup + thead tr:first-child th, +.table-bordered colgroup + tbody tr:first-child th, +.table-bordered colgroup + tbody tr:first-child td, +.table-bordered thead:first-child tr:first-child th, +.table-bordered tbody:first-child tr:first-child th, +.table-bordered tbody:first-child tr:first-child td { + border-top: 0; +} +.table-bordered thead:first-child tr:first-child > th:first-child, +.table-bordered tbody:first-child tr:first-child > td:first-child { + -webkit-border-top-left-radius: 4px; + -moz-border-radius-topleft: 4px; + border-top-left-radius: 4px; +} +.table-bordered thead:first-child tr:first-child > th:last-child, +.table-bordered tbody:first-child tr:first-child > td:last-child { + -webkit-border-top-right-radius: 4px; + -moz-border-radius-topright: 4px; + border-top-right-radius: 4px; +} +.table-bordered thead:last-child tr:last-child > th:first-child, +.table-bordered tbody:last-child tr:last-child > td:first-child, +.table-bordered tfoot:last-child tr:last-child > td:first-child { + -webkit-border-bottom-left-radius: 4px; + -moz-border-radius-bottomleft: 4px; + border-bottom-left-radius: 4px; +} +.table-bordered thead:last-child tr:last-child > th:last-child, +.table-bordered tbody:last-child tr:last-child > td:last-child, +.table-bordered tfoot:last-child tr:last-child > td:last-child { + -webkit-border-bottom-right-radius: 4px; + -moz-border-radius-bottomright: 4px; + border-bottom-right-radius: 4px; +} +.table-bordered tfoot + tbody:last-child tr:last-child td:first-child { + -webkit-border-bottom-left-radius: 0; + -moz-border-radius-bottomleft: 0; + border-bottom-left-radius: 0; +} +.table-bordered tfoot + tbody:last-child tr:last-child td:last-child { + -webkit-border-bottom-right-radius: 0; + -moz-border-radius-bottomright: 0; + border-bottom-right-radius: 0; +} +.table-bordered caption + thead tr:first-child th:first-child, +.table-bordered caption + tbody tr:first-child td:first-child, +.table-bordered colgroup + thead tr:first-child th:first-child, +.table-bordered colgroup + tbody tr:first-child td:first-child { + -webkit-border-top-left-radius: 4px; + -moz-border-radius-topleft: 4px; + border-top-left-radius: 4px; +} +.table-bordered caption + thead tr:first-child th:last-child, +.table-bordered caption + tbody tr:first-child td:last-child, +.table-bordered colgroup + thead tr:first-child th:last-child, +.table-bordered colgroup + tbody tr:first-child td:last-child { + -webkit-border-top-right-radius: 4px; + -moz-border-radius-topright: 4px; + border-top-right-radius: 4px; +} +.table-striped tbody > tr:nth-child(odd) > td, +.table-striped tbody > tr:nth-child(odd) > th { + background-color: #f9f9f9; +} +.table-hover tbody tr:hover td, +.table-hover tbody tr:hover th { + background-color: #f5f5f5; +} +table td[class*="span"], +table th[class*="span"], +.row-fluid table td[class*="span"], +.row-fluid table th[class*="span"] { + display: table-cell; + float: none; + margin-left: 0; +} +.table td.span1, +.table th.span1 { + float: none; + width: 44px; + margin-left: 0; +} +.table td.span2, +.table th.span2 { + float: none; + width: 124px; + margin-left: 0; +} +.table td.span3, +.table th.span3 { + float: none; + width: 204px; + margin-left: 0; +} +.table td.span4, +.table th.span4 { + float: none; + width: 284px; + margin-left: 0; +} +.table td.span5, +.table th.span5 { + float: none; + width: 364px; + margin-left: 0; +} +.table td.span6, +.table th.span6 { + float: none; + width: 444px; + margin-left: 0; +} +.table td.span7, +.table th.span7 { + float: none; + width: 524px; + margin-left: 0; +} +.table td.span8, +.table th.span8 { + float: none; + width: 604px; + margin-left: 0; +} +.table td.span9, +.table th.span9 { + float: none; + width: 684px; + margin-left: 0; +} +.table td.span10, +.table th.span10 { + float: none; + width: 764px; + margin-left: 0; +} +.table td.span11, +.table th.span11 { + float: none; + width: 844px; + margin-left: 0; +} +.table td.span12, +.table th.span12 { + float: none; + width: 924px; + margin-left: 0; +} +.table tbody tr.success td { + background-color: #dff0d8; +} +.table tbody tr.error td { + background-color: #f2dede; +} +.table tbody tr.warning td { + background-color: #fcf8e3; +} +.table tbody tr.info td { + background-color: #d9edf7; +} +.table-hover tbody tr.success:hover td { + background-color: #d0e9c6; +} +.table-hover tbody tr.error:hover td { + background-color: #ebcccc; +} +.table-hover tbody tr.warning:hover td { + background-color: #faf2cc; +} +.table-hover tbody tr.info:hover td { + background-color: #c4e3f3; +} +form { + margin: 0 0 20px; +} +fieldset { + padding: 0; + margin: 0; + border: 0; +} +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: 20px; + font-size: 18px; + line-height: 40px; + color: #333333; + border: 0; + border-bottom: 1px solid #e5e5e5; +} +legend small { + font-size: 15px; + color: #999999; +} +label, +input, +button, +select, +textarea { + font-size: 12px; + font-weight: normal; + line-height: 20px; +} +input, +button, +select, +textarea { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; +} +label { + display: block; + margin-bottom: 5px; +} +select, +textarea, +input[type="text"], +input[type="password"], +input[type="datetime"], +input[type="datetime-local"], +input[type="date"], +input[type="month"], +input[type="time"], +input[type="week"], +input[type="number"], +input[type="email"], +input[type="url"], +input[type="search"], +input[type="tel"], +input[type="color"], +.uneditable-input { + display: inline-block; + height: 20px; + padding: 4px 6px; + margin-bottom: 10px; + font-size: 12px; + line-height: 20px; + color: #555555; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + vertical-align: middle; +} +input, +textarea, +.uneditable-input { + width: 206px; +} +textarea { + height: auto; +} +textarea, +input[type="text"], +input[type="password"], +input[type="datetime"], +input[type="datetime-local"], +input[type="date"], +input[type="month"], +input[type="time"], +input[type="week"], +input[type="number"], +input[type="email"], +input[type="url"], +input[type="search"], +input[type="tel"], +input[type="color"], +.uneditable-input { + background-color: #ffffff; + border: 1px solid #cccccc; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -webkit-transition: border linear .2s, box-shadow linear .2s; + -moz-transition: border linear .2s, box-shadow linear .2s; + -o-transition: border linear .2s, box-shadow linear .2s; + transition: border linear .2s, box-shadow linear .2s; +} +textarea:focus, +input[type="text"]:focus, +input[type="password"]:focus, +input[type="datetime"]:focus, +input[type="datetime-local"]:focus, +input[type="date"]:focus, +input[type="month"]:focus, +input[type="time"]:focus, +input[type="week"]:focus, +input[type="number"]:focus, +input[type="email"]:focus, +input[type="url"]:focus, +input[type="search"]:focus, +input[type="tel"]:focus, +input[type="color"]:focus, +.uneditable-input:focus { + border-color: rgba(82, 168, 236, 0.8); + outline: 0; + outline: thin dotted \9; + /* IE6-9 */ + + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6); + -moz-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6); + box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6); +} +input[type="radio"], +input[type="checkbox"] { + margin: 4px 0 0; + *margin-top: 0; + /* IE7 */ + + margin-top: 1px \9; + /* IE8-9 */ + + line-height: normal; +} +input[type="file"], +input[type="image"], +input[type="submit"], +input[type="reset"], +input[type="button"], +input[type="radio"], +input[type="checkbox"] { + width: auto; +} +select, +input[type="file"] { + height: 30px; + /* In IE7, the height of the select element cannot be changed by height, only font-size */ + + *margin-top: 4px; + /* For IE7, add top margin to align select with labels */ + + line-height: 30px; +} +select { + width: 220px; + border: 1px solid #cccccc; + background-color: #ffffff; +} +select[multiple], +select[size] { + height: auto; +} +select:focus, +input[type="file"]:focus, +input[type="radio"]:focus, +input[type="checkbox"]:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +.uneditable-input, +.uneditable-textarea { + color: #999999; + background-color: #fcfcfc; + border-color: #cccccc; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); + cursor: not-allowed; +} +.uneditable-input { + overflow: hidden; + white-space: nowrap; +} +.uneditable-textarea { + width: auto; + height: auto; +} +input:-moz-placeholder, +textarea:-moz-placeholder { + color: #999999; +} +input:-ms-input-placeholder, +textarea:-ms-input-placeholder { + color: #999999; +} +input::-webkit-input-placeholder, +textarea::-webkit-input-placeholder { + color: #999999; +} +.radio, +.checkbox { + min-height: 20px; + padding-left: 20px; +} +.radio input[type="radio"], +.checkbox input[type="checkbox"] { + float: left; + margin-left: -20px; +} +.controls > .radio:first-child, +.controls > .checkbox:first-child { + padding-top: 5px; +} +.radio.inline, +.checkbox.inline { + display: inline-block; + padding-top: 5px; + margin-bottom: 0; + vertical-align: middle; +} +.radio.inline + .radio.inline, +.checkbox.inline + .checkbox.inline { + margin-left: 10px; +} +.input-mini { + width: 60px; +} +.input-small { + width: 90px; +} +.input-medium { + width: 150px; +} +.input-large { + width: 210px; +} +.input-xlarge { + width: 270px; +} +.input-xxlarge { + width: 530px; +} +input[class*="span"], +select[class*="span"], +textarea[class*="span"], +.uneditable-input[class*="span"], +.row-fluid input[class*="span"], +.row-fluid select[class*="span"], +.row-fluid textarea[class*="span"], +.row-fluid .uneditable-input[class*="span"] { + float: none; + margin-left: 0; +} +.input-append input[class*="span"], +.input-append .uneditable-input[class*="span"], +.input-prepend input[class*="span"], +.input-prepend .uneditable-input[class*="span"], +.row-fluid input[class*="span"], +.row-fluid select[class*="span"], +.row-fluid textarea[class*="span"], +.row-fluid .uneditable-input[class*="span"], +.row-fluid .input-prepend [class*="span"], +.row-fluid .input-append [class*="span"] { + display: inline-block; +} +input, +textarea, +.uneditable-input { + margin-left: 0; +} +.controls-row [class*="span"] + [class*="span"] { + margin-left: 20px; +} +input.span12, textarea.span12, .uneditable-input.span12 { + width: 926px; +} +input.span11, textarea.span11, .uneditable-input.span11 { + width: 846px; +} +input.span10, textarea.span10, .uneditable-input.span10 { + width: 766px; +} +input.span9, textarea.span9, .uneditable-input.span9 { + width: 686px; +} +input.span8, textarea.span8, .uneditable-input.span8 { + width: 606px; +} +input.span7, textarea.span7, .uneditable-input.span7 { + width: 526px; +} +input.span6, textarea.span6, .uneditable-input.span6 { + width: 446px; +} +input.span5, textarea.span5, .uneditable-input.span5 { + width: 366px; +} +input.span4, textarea.span4, .uneditable-input.span4 { + width: 286px; +} +input.span3, textarea.span3, .uneditable-input.span3 { + width: 206px; +} +input.span2, textarea.span2, .uneditable-input.span2 { + width: 126px; +} +input.span1, textarea.span1, .uneditable-input.span1 { + width: 46px; +} +.controls-row { + *zoom: 1; +} +.controls-row:before, +.controls-row:after { + display: table; + content: ""; + line-height: 0; +} +.controls-row:after { + clear: both; +} +.controls-row [class*="span"], +.row-fluid .controls-row [class*="span"] { + float: left; +} +.controls-row .checkbox[class*="span"], +.controls-row .radio[class*="span"] { + padding-top: 5px; +} +input[disabled], +select[disabled], +textarea[disabled], +input[readonly], +select[readonly], +textarea[readonly] { + cursor: not-allowed; + background-color: #eeeeee; +} +input[type="radio"][disabled], +input[type="checkbox"][disabled], +input[type="radio"][readonly], +input[type="checkbox"][readonly] { + background-color: transparent; +} +.control-group.warning .control-label, +.control-group.warning .help-block, +.control-group.warning .help-inline { + color: #c09853; +} +.control-group.warning .checkbox, +.control-group.warning .radio, +.control-group.warning input, +.control-group.warning select, +.control-group.warning textarea { + color: #c09853; +} +.control-group.warning input, +.control-group.warning select, +.control-group.warning textarea { + border-color: #c09853; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} +.control-group.warning input:focus, +.control-group.warning select:focus, +.control-group.warning textarea:focus { + border-color: #a47e3c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; +} +.control-group.warning .input-prepend .add-on, +.control-group.warning .input-append .add-on { + color: #c09853; + background-color: #fcf8e3; + border-color: #c09853; +} +.control-group.error .control-label, +.control-group.error .help-block, +.control-group.error .help-inline { + color: #b94a48; +} +.control-group.error .checkbox, +.control-group.error .radio, +.control-group.error input, +.control-group.error select, +.control-group.error textarea { + color: #b94a48; +} +.control-group.error input, +.control-group.error select, +.control-group.error textarea { + border-color: #b94a48; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} +.control-group.error input:focus, +.control-group.error select:focus, +.control-group.error textarea:focus { + border-color: #953b39; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; +} +.control-group.error .input-prepend .add-on, +.control-group.error .input-append .add-on { + color: #b94a48; + background-color: #f2dede; + border-color: #b94a48; +} +.control-group.success .control-label, +.control-group.success .help-block, +.control-group.success .help-inline { + color: #468847; +} +.control-group.success .checkbox, +.control-group.success .radio, +.control-group.success input, +.control-group.success select, +.control-group.success textarea { + color: #468847; +} +.control-group.success input, +.control-group.success select, +.control-group.success textarea { + border-color: #468847; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} +.control-group.success input:focus, +.control-group.success select:focus, +.control-group.success textarea:focus { + border-color: #356635; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; +} +.control-group.success .input-prepend .add-on, +.control-group.success .input-append .add-on { + color: #468847; + background-color: #dff0d8; + border-color: #468847; +} +.control-group.info .control-label, +.control-group.info .help-block, +.control-group.info .help-inline { + color: #3a87ad; +} +.control-group.info .checkbox, +.control-group.info .radio, +.control-group.info input, +.control-group.info select, +.control-group.info textarea { + color: #3a87ad; +} +.control-group.info input, +.control-group.info select, +.control-group.info textarea { + border-color: #3a87ad; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} +.control-group.info input:focus, +.control-group.info select:focus, +.control-group.info textarea:focus { + border-color: #2d6987; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; +} +.control-group.info .input-prepend .add-on, +.control-group.info .input-append .add-on { + color: #3a87ad; + background-color: #d9edf7; + border-color: #3a87ad; +} +input:focus:invalid, +textarea:focus:invalid, +select:focus:invalid { + color: #b94a48; + border-color: #ee5f5b; +} +input:focus:invalid:focus, +textarea:focus:invalid:focus, +select:focus:invalid:focus { + border-color: #e9322d; + -webkit-box-shadow: 0 0 6px #f8b9b7; + -moz-box-shadow: 0 0 6px #f8b9b7; + box-shadow: 0 0 6px #f8b9b7; +} +.form-actions { + padding: 19px 20px 20px; + margin-top: 20px; + margin-bottom: 20px; + background-color: #f5f5f5; + border-top: 1px solid #e5e5e5; + *zoom: 1; +} +.form-actions:before, +.form-actions:after { + display: table; + content: ""; + line-height: 0; +} +.form-actions:after { + clear: both; +} +.help-block, +.help-inline { + color: #595959; +} +.help-block { + display: block; + margin-bottom: 10px; +} +.help-inline { + display: inline-block; + *display: inline; + /* IE7 inline-block hack */ + + *zoom: 1; + vertical-align: middle; + padding-left: 5px; +} +.input-append, +.input-prepend { + margin-bottom: 5px; + font-size: 0; + white-space: nowrap; +} +.input-append input, +.input-prepend input, +.input-append select, +.input-prepend select, +.input-append .uneditable-input, +.input-prepend .uneditable-input, +.input-append .dropdown-menu, +.input-prepend .dropdown-menu { + font-size: 12px; +} +.input-append input, +.input-prepend input, +.input-append select, +.input-prepend select, +.input-append .uneditable-input, +.input-prepend .uneditable-input { + position: relative; + margin-bottom: 0; + *margin-left: 0; + vertical-align: top; + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} +.input-append input:focus, +.input-prepend input:focus, +.input-append select:focus, +.input-prepend select:focus, +.input-append .uneditable-input:focus, +.input-prepend .uneditable-input:focus { + z-index: 2; +} +.input-append .add-on, +.input-prepend .add-on { + display: inline-block; + width: auto; + height: 20px; + min-width: 16px; + padding: 4px 5px; + font-size: 12px; + font-weight: normal; + line-height: 20px; + text-align: center; + text-shadow: 0 1px 0 #ffffff; + background-color: #eeeeee; + border: 1px solid #ccc; +} +.input-append .add-on, +.input-prepend .add-on, +.input-append .btn, +.input-prepend .btn, +.input-append .btn-group > .dropdown-toggle, +.input-prepend .btn-group > .dropdown-toggle { + vertical-align: top; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} +.input-append .active, +.input-prepend .active { + background-color: #a9dba9; + border-color: #46a546; +} +.input-prepend .add-on, +.input-prepend .btn { + margin-right: -1px; +} +.input-prepend .add-on:first-child, +.input-prepend .btn:first-child { + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} +.input-append input, +.input-append select, +.input-append .uneditable-input { + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} +.input-append input + .btn-group .btn:last-child, +.input-append select + .btn-group .btn:last-child, +.input-append .uneditable-input + .btn-group .btn:last-child { + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} +.input-append .add-on, +.input-append .btn, +.input-append .btn-group { + margin-left: -1px; +} +.input-append .add-on:last-child, +.input-append .btn:last-child, +.input-append .btn-group:last-child > .dropdown-toggle { + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} +.input-prepend.input-append input, +.input-prepend.input-append select, +.input-prepend.input-append .uneditable-input { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} +.input-prepend.input-append input + .btn-group .btn, +.input-prepend.input-append select + .btn-group .btn, +.input-prepend.input-append .uneditable-input + .btn-group .btn { + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} +.input-prepend.input-append .add-on:first-child, +.input-prepend.input-append .btn:first-child { + margin-right: -1px; + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} +.input-prepend.input-append .add-on:last-child, +.input-prepend.input-append .btn:last-child { + margin-left: -1px; + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} +.input-prepend.input-append .btn-group:first-child { + margin-left: 0; +} +input.search-query { + padding-right: 14px; + padding-right: 4px \9; + padding-left: 14px; + padding-left: 4px \9; + /* IE7-8 doesn't have border-radius, so don't indent the padding */ + + margin-bottom: 0; + -webkit-border-radius: 15px; + -moz-border-radius: 15px; + border-radius: 15px; +} +/* Allow for input prepend/append in search forms */ +.form-search .input-append .search-query, +.form-search .input-prepend .search-query { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} +.form-search .input-append .search-query { + -webkit-border-radius: 14px 0 0 14px; + -moz-border-radius: 14px 0 0 14px; + border-radius: 14px 0 0 14px; +} +.form-search .input-append .btn { + -webkit-border-radius: 0 14px 14px 0; + -moz-border-radius: 0 14px 14px 0; + border-radius: 0 14px 14px 0; +} +.form-search .input-prepend .search-query { + -webkit-border-radius: 0 14px 14px 0; + -moz-border-radius: 0 14px 14px 0; + border-radius: 0 14px 14px 0; +} +.form-search .input-prepend .btn { + -webkit-border-radius: 14px 0 0 14px; + -moz-border-radius: 14px 0 0 14px; + border-radius: 14px 0 0 14px; +} +.form-search input, +.form-inline input, +.form-horizontal input, +.form-search textarea, +.form-inline textarea, +.form-horizontal textarea, +.form-search select, +.form-inline select, +.form-horizontal select, +.form-search .help-inline, +.form-inline .help-inline, +.form-horizontal .help-inline, +.form-search .uneditable-input, +.form-inline .uneditable-input, +.form-horizontal .uneditable-input, +.form-search .input-prepend, +.form-inline .input-prepend, +.form-horizontal .input-prepend, +.form-search .input-append, +.form-inline .input-append, +.form-horizontal .input-append { + display: inline-block; + *display: inline; + /* IE7 inline-block hack */ + + *zoom: 1; + margin-bottom: 0; + vertical-align: middle; +} +.form-search .hide, +.form-inline .hide, +.form-horizontal .hide { + display: none; +} +.form-search label, +.form-inline label, +.form-search .btn-group, +.form-inline .btn-group { + display: inline-block; +} +.form-search .input-append, +.form-inline .input-append, +.form-search .input-prepend, +.form-inline .input-prepend { + margin-bottom: 0; +} +.form-search .radio, +.form-search .checkbox, +.form-inline .radio, +.form-inline .checkbox { + padding-left: 0; + margin-bottom: 0; + vertical-align: middle; +} +.form-search .radio input[type="radio"], +.form-search .checkbox input[type="checkbox"], +.form-inline .radio input[type="radio"], +.form-inline .checkbox input[type="checkbox"] { + float: left; + margin-right: 3px; + margin-left: 0; +} +.control-group { + margin-bottom: 10px; +} +legend + .control-group { + margin-top: 20px; + -webkit-margin-top-collapse: separate; +} +.form-horizontal .control-group { + margin-bottom: 20px; + *zoom: 1; +} +.form-horizontal .control-group:before, +.form-horizontal .control-group:after { + display: table; + content: ""; + line-height: 0; +} +.form-horizontal .control-group:after { + clear: both; +} +.form-horizontal .control-label { + float: left; + width: 160px; + padding-top: 5px; + text-align: right; +} +.form-horizontal .controls { + *display: inline-block; + *padding-left: 20px; + margin-left: 180px; + *margin-left: 0; +} +.form-horizontal .controls:first-child { + *padding-left: 180px; +} +.form-horizontal .help-block { + margin-bottom: 0; +} +.form-horizontal input + .help-block, +.form-horizontal select + .help-block, +.form-horizontal textarea + .help-block, +.form-horizontal .uneditable-input + .help-block, +.form-horizontal .input-prepend + .help-block, +.form-horizontal .input-append + .help-block { + margin-top: 10px; +} +.form-horizontal .form-actions { + padding-left: 180px; +} +.btn { + display: inline-block; + *display: inline; + /* IE7 inline-block hack */ + + *zoom: 1; + padding: 4px 12px; + margin-bottom: 0; + font-size: 12px; + line-height: 20px; + text-align: center; + vertical-align: middle; + cursor: pointer; + color: #333333; + text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); + background-color: #f5f5f5; + background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6)); + background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6); + background-image: -o-linear-gradient(top, #ffffff, #e6e6e6); + background-image: linear-gradient(to bottom, #ffffff, #e6e6e6); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0); + border-color: #e6e6e6 #e6e6e6 #bfbfbf; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + *background-color: #e6e6e6; + /* Darken IE7 buttons by default so they stand out more given they won't have borders */ + + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + border: 1px solid #bbbbbb; + *border: 0; + border-bottom-color: #a2a2a2; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + *margin-left: .3em; + -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); + -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); + box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); +} +.btn:hover, +.btn:active, +.btn.active, +.btn.disabled, +.btn[disabled] { + color: #333333; + background-color: #e6e6e6; + *background-color: #d9d9d9; +} +.btn:active, +.btn.active { + background-color: #cccccc \9; +} +.btn:first-child { + *margin-left: 0; +} +.btn:hover { + color: #333333; + text-decoration: none; + background-position: 0 -15px; + -webkit-transition: background-position 0.1s linear; + -moz-transition: background-position 0.1s linear; + -o-transition: background-position 0.1s linear; + transition: background-position 0.1s linear; +} +.btn:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +.btn.active, +.btn:active { + background-image: none; + outline: 0; + -webkit-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05); + -moz-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05); + box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05); +} +.btn.disabled, +.btn[disabled] { + cursor: default; + background-image: none; + opacity: 0.65; + filter: alpha(opacity=65); + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} +.btn-large { + padding: 11px 19px; + font-size: 15px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} +.btn-large [class^="icon-"], +.btn-large [class*=" icon-"] { + margin-top: 4px; +} +.btn-small { + padding: 2px 10px; + font-size: 10.2px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} +.btn-small [class^="icon-"], +.btn-small [class*=" icon-"] { + margin-top: 0; +} +.btn-mini [class^="icon-"], +.btn-mini [class*=" icon-"] { + margin-top: -1px; +} +.btn-mini { + padding: 0 6px; + font-size: 9px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} +.btn-block { + display: block; + width: 100%; + padding-left: 0; + padding-right: 0; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +.btn-block + .btn-block { + margin-top: 5px; +} +input[type="submit"].btn-block, +input[type="reset"].btn-block, +input[type="button"].btn-block { + width: 100%; +} +.btn-primary.active, +.btn-warning.active, +.btn-danger.active, +.btn-success.active, +.btn-info.active, +.btn-inverse.active { + color: rgba(255, 255, 255, 0.75); +} +.btn { + border-color: #c5c5c5; + border-color: rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.25); +} +.btn-primary { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #006dcc; + background-image: -moz-linear-gradient(top, #0088cc, #0044cc); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc)); + background-image: -webkit-linear-gradient(top, #0088cc, #0044cc); + background-image: -o-linear-gradient(top, #0088cc, #0044cc); + background-image: linear-gradient(to bottom, #0088cc, #0044cc); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0); + border-color: #0044cc #0044cc #002a80; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + *background-color: #0044cc; + /* Darken IE7 buttons by default so they stand out more given they won't have borders */ + + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); +} +.btn-primary:hover, +.btn-primary:active, +.btn-primary.active, +.btn-primary.disabled, +.btn-primary[disabled] { + color: #ffffff; + background-color: #0044cc; + *background-color: #003bb3; +} +.btn-primary:active, +.btn-primary.active { + background-color: #003399 \9; +} +.btn-warning { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #faa732; + background-image: -moz-linear-gradient(top, #fbb450, #f89406); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); + background-image: -webkit-linear-gradient(top, #fbb450, #f89406); + background-image: -o-linear-gradient(top, #fbb450, #f89406); + background-image: linear-gradient(to bottom, #fbb450, #f89406); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0); + border-color: #f89406 #f89406 #ad6704; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + *background-color: #f89406; + /* Darken IE7 buttons by default so they stand out more given they won't have borders */ + + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); +} +.btn-warning:hover, +.btn-warning:active, +.btn-warning.active, +.btn-warning.disabled, +.btn-warning[disabled] { + color: #ffffff; + background-color: #f89406; + *background-color: #df8505; +} +.btn-warning:active, +.btn-warning.active { + background-color: #c67605 \9; +} +.btn-danger { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #da4f49; + background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f)); + background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f); + background-image: -o-linear-gradient(top, #ee5f5b, #bd362f); + background-image: linear-gradient(to bottom, #ee5f5b, #bd362f); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffbd362f', GradientType=0); + border-color: #bd362f #bd362f #802420; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + *background-color: #bd362f; + /* Darken IE7 buttons by default so they stand out more given they won't have borders */ + + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); +} +.btn-danger:hover, +.btn-danger:active, +.btn-danger.active, +.btn-danger.disabled, +.btn-danger[disabled] { + color: #ffffff; + background-color: #bd362f; + *background-color: #a9302a; +} +.btn-danger:active, +.btn-danger.active { + background-color: #942a25 \9; +} +.btn-success { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #5bb75b; + background-image: -moz-linear-gradient(top, #62c462, #51a351); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351)); + background-image: -webkit-linear-gradient(top, #62c462, #51a351); + background-image: -o-linear-gradient(top, #62c462, #51a351); + background-image: linear-gradient(to bottom, #62c462, #51a351); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff51a351', GradientType=0); + border-color: #51a351 #51a351 #387038; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + *background-color: #51a351; + /* Darken IE7 buttons by default so they stand out more given they won't have borders */ + + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); +} +.btn-success:hover, +.btn-success:active, +.btn-success.active, +.btn-success.disabled, +.btn-success[disabled] { + color: #ffffff; + background-color: #51a351; + *background-color: #499249; +} +.btn-success:active, +.btn-success.active { + background-color: #408140 \9; +} +.btn-info { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #49afcd; + background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4)); + background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4); + background-image: -o-linear-gradient(top, #5bc0de, #2f96b4); + background-image: linear-gradient(to bottom, #5bc0de, #2f96b4); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2f96b4', GradientType=0); + border-color: #2f96b4 #2f96b4 #1f6377; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + *background-color: #2f96b4; + /* Darken IE7 buttons by default so they stand out more given they won't have borders */ + + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); +} +.btn-info:hover, +.btn-info:active, +.btn-info.active, +.btn-info.disabled, +.btn-info[disabled] { + color: #ffffff; + background-color: #2f96b4; + *background-color: #2a85a0; +} +.btn-info:active, +.btn-info.active { + background-color: #24748c \9; +} +.btn-inverse { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #363636; + background-image: -moz-linear-gradient(top, #444444, #222222); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#444444), to(#222222)); + background-image: -webkit-linear-gradient(top, #444444, #222222); + background-image: -o-linear-gradient(top, #444444, #222222); + background-image: linear-gradient(to bottom, #444444, #222222); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff444444', endColorstr='#ff222222', GradientType=0); + border-color: #222222 #222222 #000000; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + *background-color: #222222; + /* Darken IE7 buttons by default so they stand out more given they won't have borders */ + + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); +} +.btn-inverse:hover, +.btn-inverse:active, +.btn-inverse.active, +.btn-inverse.disabled, +.btn-inverse[disabled] { + color: #ffffff; + background-color: #222222; + *background-color: #151515; +} +.btn-inverse:active, +.btn-inverse.active { + background-color: #080808 \9; +} +button.btn, +input[type="submit"].btn { + *padding-top: 3px; + *padding-bottom: 3px; +} +button.btn::-moz-focus-inner, +input[type="submit"].btn::-moz-focus-inner { + padding: 0; + border: 0; +} +button.btn.btn-large, +input[type="submit"].btn.btn-large { + *padding-top: 7px; + *padding-bottom: 7px; +} +button.btn.btn-small, +input[type="submit"].btn.btn-small { + *padding-top: 3px; + *padding-bottom: 3px; +} +button.btn.btn-mini, +input[type="submit"].btn.btn-mini { + *padding-top: 1px; + *padding-bottom: 1px; +} +.btn-link, +.btn-link:active, +.btn-link[disabled] { + background-color: transparent; + background-image: none; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} +.btn-link { + border-color: transparent; + cursor: pointer; + color: #0088cc; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} +.btn-link:hover { + color: #005580; + text-decoration: underline; + background-color: transparent; +} +.btn-link[disabled]:hover { + color: #333333; + text-decoration: none; +} +[class^="icon-"], +[class*=" icon-"] { + display: inline-block; + width: 14px; + height: 14px; + *margin-right: .3em; + line-height: 14px; + vertical-align: text-top; + background-image: url("../img/glyphicons-halflings.png"); + background-position: 14px 14px; + background-repeat: no-repeat; + margin-top: 1px; +} +/* White icons with optional class, or on hover/active states of certain elements */ +.icon-white, +.nav-pills > .active > a > [class^="icon-"], +.nav-pills > .active > a > [class*=" icon-"], +.nav-list > .active > a > [class^="icon-"], +.nav-list > .active > a > [class*=" icon-"], +.navbar-inverse .nav > .active > a > [class^="icon-"], +.navbar-inverse .nav > .active > a > [class*=" icon-"], +.dropdown-menu > li > a:hover > [class^="icon-"], +.dropdown-menu > li > a:hover > [class*=" icon-"], +.dropdown-menu > .active > a > [class^="icon-"], +.dropdown-menu > .active > a > [class*=" icon-"], +.dropdown-submenu:hover > a > [class^="icon-"], +.dropdown-submenu:hover > a > [class*=" icon-"] { + background-image: url("../img/glyphicons-halflings-white.png"); +} +.icon-glass { + background-position: 0 0; +} +.icon-music { + background-position: -24px 0; +} +.icon-search { + background-position: -48px 0; +} +.icon-envelope { + background-position: -72px 0; +} +.icon-heart { + background-position: -96px 0; +} +.icon-star { + background-position: -120px 0; +} +.icon-star-empty { + background-position: -144px 0; +} +.icon-user { + background-position: -168px 0; +} +.icon-film { + background-position: -192px 0; +} +.icon-th-large { + background-position: -216px 0; +} +.icon-th { + background-position: -240px 0; +} +.icon-th-list { + background-position: -264px 0; +} +.icon-ok { + background-position: -288px 0; +} +.icon-remove { + background-position: -312px 0; +} +.icon-zoom-in { + background-position: -336px 0; +} +.icon-zoom-out { + background-position: -360px 0; +} +.icon-off { + background-position: -384px 0; +} +.icon-signal { + background-position: -408px 0; +} +.icon-cog { + background-position: -432px 0; +} +.icon-trash { + background-position: -456px 0; +} +.icon-home { + background-position: 0 -24px; +} +.icon-file { + background-position: -24px -24px; +} +.icon-time { + background-position: -48px -24px; +} +.icon-road { + background-position: -72px -24px; +} +.icon-download-alt { + background-position: -96px -24px; +} +.icon-download { + background-position: -120px -24px; +} +.icon-upload { + background-position: -144px -24px; +} +.icon-inbox { + background-position: -168px -24px; +} +.icon-play-circle { + background-position: -192px -24px; +} +.icon-repeat { + background-position: -216px -24px; +} +.icon-refresh { + background-position: -240px -24px; +} +.icon-list-alt { + background-position: -264px -24px; +} +.icon-lock { + background-position: -287px -24px; +} +.icon-flag { + background-position: -312px -24px; +} +.icon-headphones { + background-position: -336px -24px; +} +.icon-volume-off { + background-position: -360px -24px; +} +.icon-volume-down { + background-position: -384px -24px; +} +.icon-volume-up { + background-position: -408px -24px; +} +.icon-qrcode { + background-position: -432px -24px; +} +.icon-barcode { + background-position: -456px -24px; +} +.icon-tag { + background-position: 0 -48px; +} +.icon-tags { + background-position: -25px -48px; +} +.icon-book { + background-position: -48px -48px; +} +.icon-bookmark { + background-position: -72px -48px; +} +.icon-print { + background-position: -96px -48px; +} +.icon-camera { + background-position: -120px -48px; +} +.icon-font { + background-position: -144px -48px; +} +.icon-bold { + background-position: -167px -48px; +} +.icon-italic { + background-position: -192px -48px; +} +.icon-text-height { + background-position: -216px -48px; +} +.icon-text-width { + background-position: -240px -48px; +} +.icon-align-left { + background-position: -264px -48px; +} +.icon-align-center { + background-position: -288px -48px; +} +.icon-align-right { + background-position: -312px -48px; +} +.icon-align-justify { + background-position: -336px -48px; +} +.icon-list { + background-position: -360px -48px; +} +.icon-indent-left { + background-position: -384px -48px; +} +.icon-indent-right { + background-position: -408px -48px; +} +.icon-facetime-video { + background-position: -432px -48px; +} +.icon-picture { + background-position: -456px -48px; +} +.icon-pencil { + background-position: 0 -72px; +} +.icon-map-marker { + background-position: -24px -72px; +} +.icon-adjust { + background-position: -48px -72px; +} +.icon-tint { + background-position: -72px -72px; +} +.icon-edit { + background-position: -96px -72px; +} +.icon-share { + background-position: -120px -72px; +} +.icon-check { + background-position: -144px -72px; +} +.icon-move { + background-position: -168px -72px; +} +.icon-step-backward { + background-position: -192px -72px; +} +.icon-fast-backward { + background-position: -216px -72px; +} +.icon-backward { + background-position: -240px -72px; +} +.icon-play { + background-position: -264px -72px; +} +.icon-pause { + background-position: -288px -72px; +} +.icon-stop { + background-position: -312px -72px; +} +.icon-forward { + background-position: -336px -72px; +} +.icon-fast-forward { + background-position: -360px -72px; +} +.icon-step-forward { + background-position: -384px -72px; +} +.icon-eject { + background-position: -408px -72px; +} +.icon-chevron-left { + background-position: -432px -72px; +} +.icon-chevron-right { + background-position: -456px -72px; +} +.icon-plus-sign { + background-position: 0 -96px; +} +.icon-minus-sign { + background-position: -24px -96px; +} +.icon-remove-sign { + background-position: -48px -96px; +} +.icon-ok-sign { + background-position: -72px -96px; +} +.icon-question-sign { + background-position: -96px -96px; +} +.icon-info-sign { + background-position: -120px -96px; +} +.icon-screenshot { + background-position: -144px -96px; +} +.icon-remove-circle { + background-position: -168px -96px; +} +.icon-ok-circle { + background-position: -192px -96px; +} +.icon-ban-circle { + background-position: -216px -96px; +} +.icon-arrow-left { + background-position: -240px -96px; +} +.icon-arrow-right { + background-position: -264px -96px; +} +.icon-arrow-up { + background-position: -289px -96px; +} +.icon-arrow-down { + background-position: -312px -96px; +} +.icon-share-alt { + background-position: -336px -96px; +} +.icon-resize-full { + background-position: -360px -96px; +} +.icon-resize-small { + background-position: -384px -96px; +} +.icon-plus { + background-position: -408px -96px; +} +.icon-minus { + background-position: -433px -96px; +} +.icon-asterisk { + background-position: -456px -96px; +} +.icon-exclamation-sign { + background-position: 0 -120px; +} +.icon-gift { + background-position: -24px -120px; +} +.icon-leaf { + background-position: -48px -120px; +} +.icon-fire { + background-position: -72px -120px; +} +.icon-eye-open { + background-position: -96px -120px; +} +.icon-eye-close { + background-position: -120px -120px; +} +.icon-warning-sign { + background-position: -144px -120px; +} +.icon-plane { + background-position: -168px -120px; +} +.icon-calendar { + background-position: -192px -120px; +} +.icon-random { + background-position: -216px -120px; + width: 16px; +} +.icon-comment { + background-position: -240px -120px; +} +.icon-magnet { + background-position: -264px -120px; +} +.icon-chevron-up { + background-position: -288px -120px; +} +.icon-chevron-down { + background-position: -313px -119px; +} +.icon-retweet { + background-position: -336px -120px; +} +.icon-shopping-cart { + background-position: -360px -120px; +} +.icon-folder-close { + background-position: -384px -120px; +} +.icon-folder-open { + background-position: -408px -120px; + width: 16px; +} +.icon-resize-vertical { + background-position: -432px -119px; +} +.icon-resize-horizontal { + background-position: -456px -118px; +} +.icon-hdd { + background-position: 0 -144px; +} +.icon-bullhorn { + background-position: -24px -144px; +} +.icon-bell { + background-position: -48px -144px; +} +.icon-certificate { + background-position: -72px -144px; +} +.icon-thumbs-up { + background-position: -96px -144px; +} +.icon-thumbs-down { + background-position: -120px -144px; +} +.icon-hand-right { + background-position: -144px -144px; +} +.icon-hand-left { + background-position: -168px -144px; +} +.icon-hand-up { + background-position: -192px -144px; +} +.icon-hand-down { + background-position: -216px -144px; +} +.icon-circle-arrow-right { + background-position: -240px -144px; +} +.icon-circle-arrow-left { + background-position: -264px -144px; +} +.icon-circle-arrow-up { + background-position: -288px -144px; +} +.icon-circle-arrow-down { + background-position: -312px -144px; +} +.icon-globe { + background-position: -336px -144px; +} +.icon-wrench { + background-position: -360px -144px; +} +.icon-tasks { + background-position: -384px -144px; +} +.icon-filter { + background-position: -408px -144px; +} +.icon-briefcase { + background-position: -432px -144px; +} +.icon-fullscreen { + background-position: -456px -144px; +} +.btn-group { + position: relative; + display: inline-block; + *display: inline; + /* IE7 inline-block hack */ + + *zoom: 1; + font-size: 0; + vertical-align: middle; + white-space: nowrap; + *margin-left: .3em; +} +.btn-group:first-child { + *margin-left: 0; +} +.btn-group + .btn-group { + margin-left: 5px; +} +.btn-toolbar { + font-size: 0; + margin-top: 10px; + margin-bottom: 10px; +} +.btn-toolbar > .btn + .btn, +.btn-toolbar > .btn-group + .btn, +.btn-toolbar > .btn + .btn-group { + margin-left: 5px; +} +.btn-group > .btn { + position: relative; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} +.btn-group > .btn + .btn { + margin-left: -1px; +} +.btn-group > .btn, +.btn-group > .dropdown-menu, +.btn-group > .popover { + font-size: 12px; +} +.btn-group > .btn-mini { + font-size: 9px; +} +.btn-group > .btn-small { + font-size: 10.2px; +} +.btn-group > .btn-large { + font-size: 15px; +} +.btn-group > .btn:first-child { + margin-left: 0; + -webkit-border-top-left-radius: 4px; + -moz-border-radius-topleft: 4px; + border-top-left-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -moz-border-radius-bottomleft: 4px; + border-bottom-left-radius: 4px; +} +.btn-group > .btn:last-child, +.btn-group > .dropdown-toggle { + -webkit-border-top-right-radius: 4px; + -moz-border-radius-topright: 4px; + border-top-right-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -moz-border-radius-bottomright: 4px; + border-bottom-right-radius: 4px; +} +.btn-group > .btn.large:first-child { + margin-left: 0; + -webkit-border-top-left-radius: 6px; + -moz-border-radius-topleft: 6px; + border-top-left-radius: 6px; + -webkit-border-bottom-left-radius: 6px; + -moz-border-radius-bottomleft: 6px; + border-bottom-left-radius: 6px; +} +.btn-group > .btn.large:last-child, +.btn-group > .large.dropdown-toggle { + -webkit-border-top-right-radius: 6px; + -moz-border-radius-topright: 6px; + border-top-right-radius: 6px; + -webkit-border-bottom-right-radius: 6px; + -moz-border-radius-bottomright: 6px; + border-bottom-right-radius: 6px; +} +.btn-group > .btn:hover, +.btn-group > .btn:focus, +.btn-group > .btn:active, +.btn-group > .btn.active { + z-index: 2; +} +.btn-group .dropdown-toggle:active, +.btn-group.open .dropdown-toggle { + outline: 0; +} +.btn-group > .btn + .dropdown-toggle { + padding-left: 8px; + padding-right: 8px; + -webkit-box-shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); + -moz-box-shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); + box-shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); + *padding-top: 5px; + *padding-bottom: 5px; +} +.btn-group > .btn-mini + .dropdown-toggle { + padding-left: 5px; + padding-right: 5px; + *padding-top: 2px; + *padding-bottom: 2px; +} +.btn-group > .btn-small + .dropdown-toggle { + *padding-top: 5px; + *padding-bottom: 4px; +} +.btn-group > .btn-large + .dropdown-toggle { + padding-left: 12px; + padding-right: 12px; + *padding-top: 7px; + *padding-bottom: 7px; +} +.btn-group.open .dropdown-toggle { + background-image: none; + -webkit-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05); + -moz-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05); + box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05); +} +.btn-group.open .btn.dropdown-toggle { + background-color: #e6e6e6; +} +.btn-group.open .btn-primary.dropdown-toggle { + background-color: #0044cc; +} +.btn-group.open .btn-warning.dropdown-toggle { + background-color: #f89406; +} +.btn-group.open .btn-danger.dropdown-toggle { + background-color: #bd362f; +} +.btn-group.open .btn-success.dropdown-toggle { + background-color: #51a351; +} +.btn-group.open .btn-info.dropdown-toggle { + background-color: #2f96b4; +} +.btn-group.open .btn-inverse.dropdown-toggle { + background-color: #222222; +} +.btn .caret { + margin-top: 8px; + margin-left: 0; +} +.btn-mini .caret, +.btn-small .caret, +.btn-large .caret { + margin-top: 6px; +} +.btn-large .caret { + border-left-width: 5px; + border-right-width: 5px; + border-top-width: 5px; +} +.dropup .btn-large .caret { + border-bottom-width: 5px; +} +.btn-primary .caret, +.btn-warning .caret, +.btn-danger .caret, +.btn-info .caret, +.btn-success .caret, +.btn-inverse .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} +.btn-group-vertical { + display: inline-block; + *display: inline; + /* IE7 inline-block hack */ + + *zoom: 1; +} +.btn-group-vertical > .btn { + display: block; + float: none; + max-width: 100%; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} +.btn-group-vertical > .btn + .btn { + margin-left: 0; + margin-top: -1px; +} +.btn-group-vertical > .btn:first-child { + -webkit-border-radius: 4px 4px 0 0; + -moz-border-radius: 4px 4px 0 0; + border-radius: 4px 4px 0 0; +} +.btn-group-vertical > .btn:last-child { + -webkit-border-radius: 0 0 4px 4px; + -moz-border-radius: 0 0 4px 4px; + border-radius: 0 0 4px 4px; +} +.btn-group-vertical > .btn-large:first-child { + -webkit-border-radius: 6px 6px 0 0; + -moz-border-radius: 6px 6px 0 0; + border-radius: 6px 6px 0 0; +} +.btn-group-vertical > .btn-large:last-child { + -webkit-border-radius: 0 0 6px 6px; + -moz-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; +} +.nav { + margin-left: 0; + margin-bottom: 20px; + list-style: none; +} +.nav > li > a { + display: block; +} +.nav > li > a:hover { + text-decoration: none; + background-color: #eeeeee; +} +.nav > li > a > img { + max-width: none; +} +.nav > .pull-right { + float: right; +} +.nav-header { + display: block; + padding: 3px 15px; + font-size: 11px; + font-weight: bold; + line-height: 20px; + color: #999999; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + text-transform: uppercase; +} +.nav li + .nav-header { + margin-top: 9px; +} +.nav-list { + padding-left: 15px; + padding-right: 15px; + margin-bottom: 0; +} +.nav-list > li > a, +.nav-list .nav-header { + margin-left: -15px; + margin-right: -15px; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); +} +.nav-list > li > a { + padding: 3px 15px; +} +.nav-list > .active > a, +.nav-list > .active > a:hover { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2); + background-color: #0088cc; +} +.nav-list [class^="icon-"], +.nav-list [class*=" icon-"] { + margin-right: 2px; +} +.nav-list .divider { + *width: 100%; + height: 1px; + margin: 9px 1px; + *margin: -5px 0 5px; + overflow: hidden; + background-color: #e5e5e5; + border-bottom: 1px solid #ffffff; +} +.nav-tabs, +.nav-pills { + *zoom: 1; +} +.nav-tabs:before, +.nav-pills:before, +.nav-tabs:after, +.nav-pills:after { + display: table; + content: ""; + line-height: 0; +} +.nav-tabs:after, +.nav-pills:after { + clear: both; +} +.nav-tabs > li, +.nav-pills > li { + float: left; +} +.nav-tabs > li > a, +.nav-pills > li > a { + padding-right: 12px; + padding-left: 12px; + margin-right: 2px; + line-height: 14px; +} +.nav-tabs { + border-bottom: 1px solid #ddd; +} +.nav-tabs > li { + margin-bottom: -1px; +} +.nav-tabs > li > a { + padding-top: 8px; + padding-bottom: 8px; + line-height: 20px; + border: 1px solid transparent; + -webkit-border-radius: 4px 4px 0 0; + -moz-border-radius: 4px 4px 0 0; + border-radius: 4px 4px 0 0; +} +.nav-tabs > li > a:hover { + border-color: #eeeeee #eeeeee #dddddd; +} +.nav-tabs > .active > a, +.nav-tabs > .active > a:hover { + color: #555555; + background-color: #ffffff; + border: 1px solid #ddd; + border-bottom-color: transparent; + cursor: default; +} +.nav-pills > li > a { + padding-top: 8px; + padding-bottom: 8px; + margin-top: 2px; + margin-bottom: 2px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; +} +.nav-pills > .active > a, +.nav-pills > .active > a:hover { + color: #ffffff; + background-color: #0088cc; +} +.nav-stacked > li { + float: none; +} +.nav-stacked > li > a { + margin-right: 0; +} +.nav-tabs.nav-stacked { + border-bottom: 0; +} +.nav-tabs.nav-stacked > li > a { + border: 1px solid #ddd; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} +.nav-tabs.nav-stacked > li:first-child > a { + -webkit-border-top-right-radius: 4px; + -moz-border-radius-topright: 4px; + border-top-right-radius: 4px; + -webkit-border-top-left-radius: 4px; + -moz-border-radius-topleft: 4px; + border-top-left-radius: 4px; +} +.nav-tabs.nav-stacked > li:last-child > a { + -webkit-border-bottom-right-radius: 4px; + -moz-border-radius-bottomright: 4px; + border-bottom-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -moz-border-radius-bottomleft: 4px; + border-bottom-left-radius: 4px; +} +.nav-tabs.nav-stacked > li > a:hover { + border-color: #ddd; + z-index: 2; +} +.nav-pills.nav-stacked > li > a { + margin-bottom: 3px; +} +.nav-pills.nav-stacked > li:last-child > a { + margin-bottom: 1px; +} +.nav-tabs .dropdown-menu { + -webkit-border-radius: 0 0 6px 6px; + -moz-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; +} +.nav-pills .dropdown-menu { + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} +.nav .dropdown-toggle .caret { + border-top-color: #0088cc; + border-bottom-color: #0088cc; + margin-top: 6px; +} +.nav .dropdown-toggle:hover .caret { + border-top-color: #005580; + border-bottom-color: #005580; +} +/* move down carets for tabs */ +.nav-tabs .dropdown-toggle .caret { + margin-top: 8px; +} +.nav .active .dropdown-toggle .caret { + border-top-color: #fff; + border-bottom-color: #fff; +} +.nav-tabs .active .dropdown-toggle .caret { + border-top-color: #555555; + border-bottom-color: #555555; +} +.nav > .dropdown.active > a:hover { + cursor: pointer; +} +.nav-tabs .open .dropdown-toggle, +.nav-pills .open .dropdown-toggle, +.nav > li.dropdown.open.active > a:hover { + color: #ffffff; + background-color: #999999; + border-color: #999999; +} +.nav li.dropdown.open .caret, +.nav li.dropdown.open.active .caret, +.nav li.dropdown.open a:hover .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; + opacity: 1; + filter: alpha(opacity=100); +} +.tabs-stacked .open > a:hover { + border-color: #999999; +} +.tabbable { + *zoom: 1; +} +.tabbable:before, +.tabbable:after { + display: table; + content: ""; + line-height: 0; +} +.tabbable:after { + clear: both; +} +.tab-content { + overflow: auto; +} +.tabs-below > .nav-tabs, +.tabs-right > .nav-tabs, +.tabs-left > .nav-tabs { + border-bottom: 0; +} +.tab-content > .tab-pane, +.pill-content > .pill-pane { + display: none; +} +.tab-content > .active, +.pill-content > .active { + display: block; +} +.tabs-below > .nav-tabs { + border-top: 1px solid #ddd; +} +.tabs-below > .nav-tabs > li { + margin-top: -1px; + margin-bottom: 0; +} +.tabs-below > .nav-tabs > li > a { + -webkit-border-radius: 0 0 4px 4px; + -moz-border-radius: 0 0 4px 4px; + border-radius: 0 0 4px 4px; +} +.tabs-below > .nav-tabs > li > a:hover { + border-bottom-color: transparent; + border-top-color: #ddd; +} +.tabs-below > .nav-tabs > .active > a, +.tabs-below > .nav-tabs > .active > a:hover { + border-color: transparent #ddd #ddd #ddd; +} +.tabs-left > .nav-tabs > li, +.tabs-right > .nav-tabs > li { + float: none; +} +.tabs-left > .nav-tabs > li > a, +.tabs-right > .nav-tabs > li > a { + min-width: 74px; + margin-right: 0; + margin-bottom: 3px; +} +.tabs-left > .nav-tabs { + float: left; + margin-right: 19px; + border-right: 1px solid #ddd; +} +.tabs-left > .nav-tabs > li > a { + margin-right: -1px; + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} +.tabs-left > .nav-tabs > li > a:hover { + border-color: #eeeeee #dddddd #eeeeee #eeeeee; +} +.tabs-left > .nav-tabs .active > a, +.tabs-left > .nav-tabs .active > a:hover { + border-color: #ddd transparent #ddd #ddd; + *border-right-color: #ffffff; +} +.tabs-right > .nav-tabs { + float: right; + margin-left: 19px; + border-left: 1px solid #ddd; +} +.tabs-right > .nav-tabs > li > a { + margin-left: -1px; + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} +.tabs-right > .nav-tabs > li > a:hover { + border-color: #eeeeee #eeeeee #eeeeee #dddddd; +} +.tabs-right > .nav-tabs .active > a, +.tabs-right > .nav-tabs .active > a:hover { + border-color: #ddd #ddd #ddd transparent; + *border-left-color: #ffffff; +} +.nav > .disabled > a { + color: #999999; +} +.nav > .disabled > a:hover { + text-decoration: none; + background-color: transparent; + cursor: default; +} +.navbar { + overflow: visible; + margin-bottom: 20px; + *position: relative; + *z-index: 2; +} +.navbar-inner { + min-height: 40px; + padding-left: 20px; + padding-right: 20px; + background-color: #fafafa; + background-image: -moz-linear-gradient(top, #ffffff, #f2f2f2); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f2f2f2)); + background-image: -webkit-linear-gradient(top, #ffffff, #f2f2f2); + background-image: -o-linear-gradient(top, #ffffff, #f2f2f2); + background-image: linear-gradient(to bottom, #ffffff, #f2f2f2); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff2f2f2', GradientType=0); + border: 1px solid #d4d4d4; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); + -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); + *zoom: 1; +} +.navbar-inner:before, +.navbar-inner:after { + display: table; + content: ""; + line-height: 0; +} +.navbar-inner:after { + clear: both; +} +.navbar .container { + width: auto; +} +.nav-collapse.collapse { + height: auto; + overflow: visible; +} +.navbar .brand { + float: left; + display: block; + padding: 10px 20px 10px; + margin-left: -20px; + font-size: 20px; + font-weight: 200; + color: #777777; + text-shadow: 0 1px 0 #ffffff; +} +.navbar .brand:hover { + text-decoration: none; +} +.navbar-text { + margin-bottom: 0; + line-height: 40px; + color: #777777; +} +.navbar-link { + color: #777777; +} +.navbar-link:hover { + color: #333333; +} +.navbar .divider-vertical { + height: 40px; + margin: 0 9px; + border-left: 1px solid #f2f2f2; + border-right: 1px solid #ffffff; +} +.navbar .btn, +.navbar .btn-group { + margin-top: 5px; +} +.navbar .btn-group .btn, +.navbar .input-prepend .btn, +.navbar .input-append .btn { + margin-top: 0; +} +.navbar-form { + margin-bottom: 0; + *zoom: 1; +} +.navbar-form:before, +.navbar-form:after { + display: table; + content: ""; + line-height: 0; +} +.navbar-form:after { + clear: both; +} +.navbar-form input, +.navbar-form select, +.navbar-form .radio, +.navbar-form .checkbox { + margin-top: 5px; +} +.navbar-form input, +.navbar-form select, +.navbar-form .btn { + display: inline-block; + margin-bottom: 0; +} +.navbar-form input[type="image"], +.navbar-form input[type="checkbox"], +.navbar-form input[type="radio"] { + margin-top: 3px; +} +.navbar-form .input-append, +.navbar-form .input-prepend { + margin-top: 5px; + white-space: nowrap; +} +.navbar-form .input-append input, +.navbar-form .input-prepend input { + margin-top: 0; +} +.navbar-search { + position: relative; + float: left; + margin-top: 5px; + margin-bottom: 0; +} +.navbar-search .search-query { + margin-bottom: 0; + padding: 4px 14px; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 13px; + font-weight: normal; + line-height: 1; + -webkit-border-radius: 15px; + -moz-border-radius: 15px; + border-radius: 15px; +} +.navbar-static-top { + position: static; + margin-bottom: 0; +} +.navbar-static-top .navbar-inner { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} +.navbar-fixed-top, +.navbar-fixed-bottom { + position: fixed; + right: 0; + left: 0; + z-index: 1030; + margin-bottom: 0; +} +.navbar-fixed-top .navbar-inner, +.navbar-static-top .navbar-inner { + border-width: 0 0 1px; +} +.navbar-fixed-bottom .navbar-inner { + border-width: 1px 0 0; +} +.navbar-fixed-top .navbar-inner, +.navbar-fixed-bottom .navbar-inner { + padding-left: 0; + padding-right: 0; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} +.navbar-static-top .container, +.navbar-fixed-top .container, +.navbar-fixed-bottom .container { + width: 940px; +} +.navbar-fixed-top { + top: 0; +} +.navbar-fixed-top .navbar-inner, +.navbar-static-top .navbar-inner { + -webkit-box-shadow: 0 1px 10px rgba(0,0,0,.1); + -moz-box-shadow: 0 1px 10px rgba(0,0,0,.1); + box-shadow: 0 1px 10px rgba(0,0,0,.1); +} +.navbar-fixed-bottom { + bottom: 0; +} +.navbar-fixed-bottom .navbar-inner { + -webkit-box-shadow: 0 -1px 10px rgba(0,0,0,.1); + -moz-box-shadow: 0 -1px 10px rgba(0,0,0,.1); + box-shadow: 0 -1px 10px rgba(0,0,0,.1); +} +.navbar .nav { + position: relative; + left: 0; + display: block; + float: left; + margin: 0 10px 0 0; +} +.navbar .nav.pull-right { + float: right; + margin-right: 0; +} +.navbar .nav > li { + float: left; +} +.navbar .nav > li > a { + float: none; + padding: 10px 15px 10px; + color: #777777; + text-decoration: none; + text-shadow: 0 1px 0 #ffffff; +} +.navbar .nav .dropdown-toggle .caret { + margin-top: 8px; +} +.navbar .nav > li > a:focus, +.navbar .nav > li > a:hover { + background-color: transparent; + color: #333333; + text-decoration: none; +} +.navbar .nav > .active > a, +.navbar .nav > .active > a:hover, +.navbar .nav > .active > a:focus { + color: #555555; + text-decoration: none; + background-color: #e5e5e5; + -webkit-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); + -moz-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); + box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); +} +.navbar .btn-navbar { + display: none; + float: right; + padding: 7px 10px; + margin-left: 5px; + margin-right: 5px; + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #ededed; + background-image: -moz-linear-gradient(top, #f2f2f2, #e5e5e5); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f2f2f2), to(#e5e5e5)); + background-image: -webkit-linear-gradient(top, #f2f2f2, #e5e5e5); + background-image: -o-linear-gradient(top, #f2f2f2, #e5e5e5); + background-image: linear-gradient(to bottom, #f2f2f2, #e5e5e5); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2f2f2', endColorstr='#ffe5e5e5', GradientType=0); + border-color: #e5e5e5 #e5e5e5 #bfbfbf; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + *background-color: #e5e5e5; + /* Darken IE7 buttons by default so they stand out more given they won't have borders */ + + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075); + -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075); + box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075); +} +.navbar .btn-navbar:hover, +.navbar .btn-navbar:active, +.navbar .btn-navbar.active, +.navbar .btn-navbar.disabled, +.navbar .btn-navbar[disabled] { + color: #ffffff; + background-color: #e5e5e5; + *background-color: #d9d9d9; +} +.navbar .btn-navbar:active, +.navbar .btn-navbar.active { + background-color: #cccccc \9; +} +.navbar .btn-navbar .icon-bar { + display: block; + width: 18px; + height: 2px; + background-color: #f5f5f5; + -webkit-border-radius: 1px; + -moz-border-radius: 1px; + border-radius: 1px; + -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); + -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); + box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); +} +.btn-navbar .icon-bar + .icon-bar { + margin-top: 3px; +} +.navbar .nav > li > .dropdown-menu:before { + content: ''; + display: inline-block; + border-left: 7px solid transparent; + border-right: 7px solid transparent; + border-bottom: 7px solid #ccc; + border-bottom-color: rgba(0, 0, 0, 0.2); + position: absolute; + top: -7px; + left: 9px; +} +.navbar .nav > li > .dropdown-menu:after { + content: ''; + display: inline-block; + border-left: 6px solid transparent; + border-right: 6px solid transparent; + border-bottom: 6px solid #ffffff; + position: absolute; + top: -6px; + left: 10px; +} +.navbar-fixed-bottom .nav > li > .dropdown-menu:before { + border-top: 7px solid #ccc; + border-top-color: rgba(0, 0, 0, 0.2); + border-bottom: 0; + bottom: -7px; + top: auto; +} +.navbar-fixed-bottom .nav > li > .dropdown-menu:after { + border-top: 6px solid #ffffff; + border-bottom: 0; + bottom: -6px; + top: auto; +} +.navbar .nav li.dropdown > a:hover .caret { + border-top-color: #555555; + border-bottom-color: #555555; +} +.navbar .nav li.dropdown.open > .dropdown-toggle, +.navbar .nav li.dropdown.active > .dropdown-toggle, +.navbar .nav li.dropdown.open.active > .dropdown-toggle { + background-color: #e5e5e5; + color: #555555; +} +.navbar .nav li.dropdown > .dropdown-toggle .caret { + border-top-color: #777777; + border-bottom-color: #777777; +} +.navbar .nav li.dropdown.open > .dropdown-toggle .caret, +.navbar .nav li.dropdown.active > .dropdown-toggle .caret, +.navbar .nav li.dropdown.open.active > .dropdown-toggle .caret { + border-top-color: #555555; + border-bottom-color: #555555; +} +.navbar .pull-right > li > .dropdown-menu, +.navbar .nav > li > .dropdown-menu.pull-right { + left: auto; + right: 0; +} +.navbar .pull-right > li > .dropdown-menu:before, +.navbar .nav > li > .dropdown-menu.pull-right:before { + left: auto; + right: 12px; +} +.navbar .pull-right > li > .dropdown-menu:after, +.navbar .nav > li > .dropdown-menu.pull-right:after { + left: auto; + right: 13px; +} +.navbar .pull-right > li > .dropdown-menu .dropdown-menu, +.navbar .nav > li > .dropdown-menu.pull-right .dropdown-menu { + left: auto; + right: 100%; + margin-left: 0; + margin-right: -1px; + -webkit-border-radius: 6px 0 6px 6px; + -moz-border-radius: 6px 0 6px 6px; + border-radius: 6px 0 6px 6px; +} +.navbar-inverse .navbar-inner { + background-color: #1b1b1b; + background-image: -moz-linear-gradient(top, #222222, #111111); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#222222), to(#111111)); + background-image: -webkit-linear-gradient(top, #222222, #111111); + background-image: -o-linear-gradient(top, #222222, #111111); + background-image: linear-gradient(to bottom, #222222, #111111); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff111111', GradientType=0); + border-color: #252525; +} +.navbar-inverse .brand, +.navbar-inverse .nav > li > a { + color: #999999; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} +.navbar-inverse .brand:hover, +.navbar-inverse .nav > li > a:hover { + color: #ffffff; +} +.navbar-inverse .brand { + color: #999999; +} +.navbar-inverse .navbar-text { + color: #999999; +} +.navbar-inverse .nav > li > a:focus, +.navbar-inverse .nav > li > a:hover { + background-color: transparent; + color: #ffffff; +} +.navbar-inverse .nav .active > a, +.navbar-inverse .nav .active > a:hover, +.navbar-inverse .nav .active > a:focus { + color: #ffffff; + background-color: #111111; +} +.navbar-inverse .navbar-link { + color: #999999; +} +.navbar-inverse .navbar-link:hover { + color: #ffffff; +} +.navbar-inverse .divider-vertical { + border-left-color: #111111; + border-right-color: #222222; +} +.navbar-inverse .nav li.dropdown.open > .dropdown-toggle, +.navbar-inverse .nav li.dropdown.active > .dropdown-toggle, +.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle { + background-color: #111111; + color: #ffffff; +} +.navbar-inverse .nav li.dropdown > a:hover .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} +.navbar-inverse .nav li.dropdown > .dropdown-toggle .caret { + border-top-color: #999999; + border-bottom-color: #999999; +} +.navbar-inverse .nav li.dropdown.open > .dropdown-toggle .caret, +.navbar-inverse .nav li.dropdown.active > .dropdown-toggle .caret, +.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} +.navbar-inverse .navbar-search .search-query { + color: #ffffff; + background-color: #515151; + border-color: #111111; + -webkit-box-shadow: inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15); + -moz-box-shadow: inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15); + box-shadow: inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15); + -webkit-transition: none; + -moz-transition: none; + -o-transition: none; + transition: none; +} +.navbar-inverse .navbar-search .search-query:-moz-placeholder { + color: #cccccc; +} +.navbar-inverse .navbar-search .search-query:-ms-input-placeholder { + color: #cccccc; +} +.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder { + color: #cccccc; +} +.navbar-inverse .navbar-search .search-query:focus, +.navbar-inverse .navbar-search .search-query.focused { + padding: 5px 15px; + color: #333333; + text-shadow: 0 1px 0 #ffffff; + background-color: #ffffff; + border: 0; + -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); + -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); + box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); + outline: 0; +} +.navbar-inverse .btn-navbar { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #0e0e0e; + background-image: -moz-linear-gradient(top, #151515, #040404); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#151515), to(#040404)); + background-image: -webkit-linear-gradient(top, #151515, #040404); + background-image: -o-linear-gradient(top, #151515, #040404); + background-image: linear-gradient(to bottom, #151515, #040404); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff151515', endColorstr='#ff040404', GradientType=0); + border-color: #040404 #040404 #000000; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + *background-color: #040404; + /* Darken IE7 buttons by default so they stand out more given they won't have borders */ + + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); +} +.navbar-inverse .btn-navbar:hover, +.navbar-inverse .btn-navbar:active, +.navbar-inverse .btn-navbar.active, +.navbar-inverse .btn-navbar.disabled, +.navbar-inverse .btn-navbar[disabled] { + color: #ffffff; + background-color: #040404; + *background-color: #000000; +} +.navbar-inverse .btn-navbar:active, +.navbar-inverse .btn-navbar.active { + background-color: #000000 \9; +} +.breadcrumb { + padding: 8px 15px; + margin: 0 0 20px; + list-style: none; + background-color: #f5f5f5; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.breadcrumb > li { + display: inline-block; + *display: inline; + /* IE7 inline-block hack */ + + *zoom: 1; + text-shadow: 0 1px 0 #ffffff; +} +.breadcrumb > li > .divider { + padding: 0 5px; + color: #ccc; +} +.breadcrumb > .active { + color: #999999; +} +.pagination { + margin: 20px 0; +} +.pagination ul { + display: inline-block; + *display: inline; + /* IE7 inline-block hack */ + + *zoom: 1; + margin-left: 0; + margin-bottom: 0; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); +} +.pagination ul > li { + display: inline; +} +.pagination ul > li > a, +.pagination ul > li > span { + float: left; + padding: 4px 12px; + line-height: 20px; + text-decoration: none; + background-color: #ffffff; + border: 1px solid #dddddd; + border-left-width: 0; +} +.pagination ul > li > a:hover, +.pagination ul > .active > a, +.pagination ul > .active > span { + background-color: #f5f5f5; +} +.pagination ul > .active > a, +.pagination ul > .active > span { + color: #999999; + cursor: default; +} +.pagination ul > .disabled > span, +.pagination ul > .disabled > a, +.pagination ul > .disabled > a:hover { + color: #999999; + background-color: transparent; + cursor: default; +} +.pagination ul > li:first-child > a, +.pagination ul > li:first-child > span { + border-left-width: 1px; + -webkit-border-top-left-radius: 4px; + -moz-border-radius-topleft: 4px; + border-top-left-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -moz-border-radius-bottomleft: 4px; + border-bottom-left-radius: 4px; +} +.pagination ul > li:last-child > a, +.pagination ul > li:last-child > span { + -webkit-border-top-right-radius: 4px; + -moz-border-radius-topright: 4px; + border-top-right-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -moz-border-radius-bottomright: 4px; + border-bottom-right-radius: 4px; +} +.pagination-centered { + text-align: center; +} +.pagination-right { + text-align: right; +} +.pagination-large ul > li > a, +.pagination-large ul > li > span { + padding: 11px 19px; + font-size: 15px; +} +.pagination-large ul > li:first-child > a, +.pagination-large ul > li:first-child > span { + -webkit-border-top-left-radius: 6px; + -moz-border-radius-topleft: 6px; + border-top-left-radius: 6px; + -webkit-border-bottom-left-radius: 6px; + -moz-border-radius-bottomleft: 6px; + border-bottom-left-radius: 6px; +} +.pagination-large ul > li:last-child > a, +.pagination-large ul > li:last-child > span { + -webkit-border-top-right-radius: 6px; + -moz-border-radius-topright: 6px; + border-top-right-radius: 6px; + -webkit-border-bottom-right-radius: 6px; + -moz-border-radius-bottomright: 6px; + border-bottom-right-radius: 6px; +} +.pagination-mini ul > li:first-child > a, +.pagination-small ul > li:first-child > a, +.pagination-mini ul > li:first-child > span, +.pagination-small ul > li:first-child > span { + -webkit-border-top-left-radius: 3px; + -moz-border-radius-topleft: 3px; + border-top-left-radius: 3px; + -webkit-border-bottom-left-radius: 3px; + -moz-border-radius-bottomleft: 3px; + border-bottom-left-radius: 3px; +} +.pagination-mini ul > li:last-child > a, +.pagination-small ul > li:last-child > a, +.pagination-mini ul > li:last-child > span, +.pagination-small ul > li:last-child > span { + -webkit-border-top-right-radius: 3px; + -moz-border-radius-topright: 3px; + border-top-right-radius: 3px; + -webkit-border-bottom-right-radius: 3px; + -moz-border-radius-bottomright: 3px; + border-bottom-right-radius: 3px; +} +.pagination-small ul > li > a, +.pagination-small ul > li > span { + padding: 2px 10px; + font-size: 10.2px; +} +.pagination-mini ul > li > a, +.pagination-mini ul > li > span { + padding: 0 6px; + font-size: 9px; +} +.pager { + margin: 20px 0; + list-style: none; + text-align: center; + *zoom: 1; +} +.pager:before, +.pager:after { + display: table; + content: ""; + line-height: 0; +} +.pager:after { + clear: both; +} +.pager li { + display: inline; +} +.pager li > a, +.pager li > span { + display: inline-block; + padding: 5px 14px; + background-color: #fff; + border: 1px solid #ddd; + -webkit-border-radius: 15px; + -moz-border-radius: 15px; + border-radius: 15px; +} +.pager li > a:hover { + text-decoration: none; + background-color: #f5f5f5; +} +.pager .next > a, +.pager .next > span { + float: right; +} +.pager .previous > a, +.pager .previous > span { + float: left; +} +.pager .disabled > a, +.pager .disabled > a:hover, +.pager .disabled > span { + color: #999999; + background-color: #fff; + cursor: default; +} +.thumbnails { + margin-left: -20px; + list-style: none; + *zoom: 1; +} +.thumbnails:before, +.thumbnails:after { + display: table; + content: ""; + line-height: 0; +} +.thumbnails:after { + clear: both; +} +.row-fluid .thumbnails { + margin-left: 0; +} +.thumbnails > li { + float: left; + margin-bottom: 20px; + margin-left: 20px; +} +.thumbnail { + display: block; + padding: 4px; + line-height: 20px; + border: 1px solid #ddd; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); + -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} +a.thumbnail:hover { + border-color: #0088cc; + -webkit-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); + -moz-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); + box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); +} +.thumbnail > img { + display: block; + max-width: 100%; + margin-left: auto; + margin-right: auto; +} +.thumbnail .caption { + padding: 9px; + color: #555555; +} +.alert { + padding: 8px 35px 8px 14px; + margin-bottom: 20px; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + background-color: #fcf8e3; + border: 1px solid #fbeed5; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.alert, +.alert h4 { + color: #c09853; +} +.alert h4 { + margin: 0; +} +.alert .close { + position: relative; + top: -2px; + right: -21px; + line-height: 20px; +} +.alert-success { + background-color: #dff0d8; + border-color: #d6e9c6; + color: #468847; +} +.alert-success h4 { + color: #468847; +} +.alert-danger, +.alert-error { + background-color: #f2dede; + border-color: #eed3d7; + color: #b94a48; +} +.alert-danger h4, +.alert-error h4 { + color: #b94a48; +} +.alert-info { + background-color: #d9edf7; + border-color: #bce8f1; + color: #3a87ad; +} +.alert-info h4 { + color: #3a87ad; +} +.alert-block { + padding-top: 14px; + padding-bottom: 14px; +} +.alert-block > p, +.alert-block > ul { + margin-bottom: 0; +} +.alert-block p + p { + margin-top: 5px; +} +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@-moz-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@-ms-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@-o-keyframes progress-bar-stripes { + from { + background-position: 0 0; + } + to { + background-position: 40px 0; + } +} +@keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +.progress { + overflow: hidden; + height: 20px; + margin-bottom: 20px; + background-color: #f7f7f7; + background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9)); + background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: linear-gradient(to bottom, #f5f5f5, #f9f9f9); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0); + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.progress .bar { + width: 0%; + height: 100%; + color: #ffffff; + float: left; + font-size: 12px; + text-align: center; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #0e90d2; + background-image: -moz-linear-gradient(top, #149bdf, #0480be); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be)); + background-image: -webkit-linear-gradient(top, #149bdf, #0480be); + background-image: -o-linear-gradient(top, #149bdf, #0480be); + background-image: linear-gradient(to bottom, #149bdf, #0480be); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0); + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-transition: width 0.6s ease; + -moz-transition: width 0.6s ease; + -o-transition: width 0.6s ease; + transition: width 0.6s ease; +} +.progress .bar + .bar { + -webkit-box-shadow: inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15); + -moz-box-shadow: inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15); + box-shadow: inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15); +} +.progress-striped .bar { + background-color: #149bdf; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + -webkit-background-size: 40px 40px; + -moz-background-size: 40px 40px; + -o-background-size: 40px 40px; + background-size: 40px 40px; +} +.progress.active .bar { + -webkit-animation: progress-bar-stripes 2s linear infinite; + -moz-animation: progress-bar-stripes 2s linear infinite; + -ms-animation: progress-bar-stripes 2s linear infinite; + -o-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; +} +.progress-danger .bar, +.progress .bar-danger { + background-color: #dd514c; + background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35)); + background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -o-linear-gradient(top, #ee5f5b, #c43c35); + background-image: linear-gradient(to bottom, #ee5f5b, #c43c35); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0); +} +.progress-danger.progress-striped .bar, +.progress-striped .bar-danger { + background-color: #ee5f5b; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-success .bar, +.progress .bar-success { + background-color: #5eb95e; + background-image: -moz-linear-gradient(top, #62c462, #57a957); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957)); + background-image: -webkit-linear-gradient(top, #62c462, #57a957); + background-image: -o-linear-gradient(top, #62c462, #57a957); + background-image: linear-gradient(to bottom, #62c462, #57a957); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0); +} +.progress-success.progress-striped .bar, +.progress-striped .bar-success { + background-color: #62c462; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-info .bar, +.progress .bar-info { + background-color: #4bb1cf; + background-image: -moz-linear-gradient(top, #5bc0de, #339bb9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9)); + background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9); + background-image: -o-linear-gradient(top, #5bc0de, #339bb9); + background-image: linear-gradient(to bottom, #5bc0de, #339bb9); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0); +} +.progress-info.progress-striped .bar, +.progress-striped .bar-info { + background-color: #5bc0de; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-warning .bar, +.progress .bar-warning { + background-color: #faa732; + background-image: -moz-linear-gradient(top, #fbb450, #f89406); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); + background-image: -webkit-linear-gradient(top, #fbb450, #f89406); + background-image: -o-linear-gradient(top, #fbb450, #f89406); + background-image: linear-gradient(to bottom, #fbb450, #f89406); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0); +} +.progress-warning.progress-striped .bar, +.progress-striped .bar-warning { + background-color: #fbb450; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.hero-unit { + padding: 60px; + margin-bottom: 30px; + font-size: 18px; + font-weight: 200; + line-height: 30px; + color: inherit; + background-color: #eeeeee; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} +.hero-unit h1 { + margin-bottom: 0; + font-size: 60px; + line-height: 1; + color: inherit; + letter-spacing: -1px; +} +.hero-unit li { + line-height: 30px; +} +.media, +.media-body { + overflow: hidden; + *overflow: visible; + zoom: 1; +} +.media, +.media .media { + margin-top: 15px; +} +.media:first-child { + margin-top: 0; +} +.media-object { + display: block; +} +.media-heading { + margin: 0 0 5px; +} +.media .pull-left { + margin-right: 10px; +} +.media .pull-right { + margin-left: 10px; +} +.media-list { + margin-left: 0; + list-style: none; +} +.tooltip { + position: absolute; + z-index: 1030; + display: block; + visibility: visible; + padding: 5px; + font-size: 11px; + opacity: 0; + filter: alpha(opacity=0); +} +.tooltip.in { + opacity: 0.8; + filter: alpha(opacity=80); +} +.tooltip.top { + margin-top: -3px; +} +.tooltip.right { + margin-left: 3px; +} +.tooltip.bottom { + margin-top: 3px; +} +.tooltip.left { + margin-left: -3px; +} +.tooltip-inner { + max-width: 200px; + padding: 3px 8px; + color: #ffffff; + text-align: center; + text-decoration: none; + background-color: #000000; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} +.tooltip.top .tooltip-arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-width: 5px 5px 0; + border-top-color: #000000; +} +.tooltip.right .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-width: 5px 5px 5px 0; + border-right-color: #000000; +} +.tooltip.left .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-width: 5px 0 5px 5px; + border-left-color: #000000; +} +.tooltip.bottom .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000000; +} +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1010; + display: none; + width: 236px; + padding: 1px; + text-align: left; + background-color: #ffffff; + -webkit-background-clip: padding-box; + -moz-background-clip: padding; + background-clip: padding-box; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + white-space: normal; +} +.popover.top { + margin-top: -10px; +} +.popover.right { + margin-left: 10px; +} +.popover.bottom { + margin-top: 10px; +} +.popover.left { + margin-left: -10px; +} +.popover-title { + margin: 0; + padding: 8px 14px; + font-size: 14px; + font-weight: normal; + line-height: 18px; + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; + -webkit-border-radius: 5px 5px 0 0; + -moz-border-radius: 5px 5px 0 0; + border-radius: 5px 5px 0 0; +} +.popover-content { + padding: 9px 14px; +} +.popover .arrow, +.popover .arrow:after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} +.popover .arrow { + border-width: 11px; +} +.popover .arrow:after { + border-width: 10px; + content: ""; +} +.popover.top .arrow { + left: 50%; + margin-left: -11px; + border-bottom-width: 0; + border-top-color: #999; + border-top-color: rgba(0, 0, 0, 0.25); + bottom: -11px; +} +.popover.top .arrow:after { + bottom: 1px; + margin-left: -10px; + border-bottom-width: 0; + border-top-color: #ffffff; +} +.popover.right .arrow { + top: 50%; + left: -11px; + margin-top: -11px; + border-left-width: 0; + border-right-color: #999; + border-right-color: rgba(0, 0, 0, 0.25); +} +.popover.right .arrow:after { + left: 1px; + bottom: -10px; + border-left-width: 0; + border-right-color: #ffffff; +} +.popover.bottom .arrow { + left: 50%; + margin-left: -11px; + border-top-width: 0; + border-bottom-color: #999; + border-bottom-color: rgba(0, 0, 0, 0.25); + top: -11px; +} +.popover.bottom .arrow:after { + top: 1px; + margin-left: -10px; + border-top-width: 0; + border-bottom-color: #ffffff; +} +.popover.left .arrow { + top: 50%; + right: -11px; + margin-top: -11px; + border-right-width: 0; + border-left-color: #999; + border-left-color: rgba(0, 0, 0, 0.25); +} +.popover.left .arrow:after { + right: 1px; + border-right-width: 0; + border-left-color: #ffffff; + bottom: -10px; +} +.modal-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; + background-color: #000000; +} +.modal-backdrop.fade { + opacity: 0; +} +.modal-backdrop, +.modal-backdrop.fade.in { + opacity: 0.8; + filter: alpha(opacity=80); +} +.modal { + position: fixed; + top: 10%; + left: 50%; + z-index: 1050; + width: 560px; + margin-left: -280px; + background-color: #ffffff; + border: 1px solid #999; + border: 1px solid rgba(0, 0, 0, 0.3); + *border: 1px solid #999; + /* IE6-7 */ + + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + -webkit-background-clip: padding-box; + -moz-background-clip: padding-box; + background-clip: padding-box; + outline: none; +} +.modal.fade { + -webkit-transition: opacity .3s linear, top .3s ease-out; + -moz-transition: opacity .3s linear, top .3s ease-out; + -o-transition: opacity .3s linear, top .3s ease-out; + transition: opacity .3s linear, top .3s ease-out; + top: -25%; +} +.modal.fade.in { + top: 10%; +} +.modal-header { + padding: 9px 15px; + border-bottom: 1px solid #eee; +} +.modal-header .close { + margin-top: 2px; +} +.modal-header h3 { + margin: 0; + line-height: 30px; +} +.modal-body { + position: relative; + overflow-y: auto; + max-height: 400px; + padding: 15px; +} +.modal-form { + margin-bottom: 0; +} +.modal-footer { + padding: 14px 15px 15px; + margin-bottom: 0; + text-align: right; + background-color: #f5f5f5; + border-top: 1px solid #ddd; + -webkit-border-radius: 0 0 6px 6px; + -moz-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; + -webkit-box-shadow: inset 0 1px 0 #ffffff; + -moz-box-shadow: inset 0 1px 0 #ffffff; + box-shadow: inset 0 1px 0 #ffffff; + *zoom: 1; +} +.modal-footer:before, +.modal-footer:after { + display: table; + content: ""; + line-height: 0; +} +.modal-footer:after { + clear: both; +} +.modal-footer .btn + .btn { + margin-left: 5px; + margin-bottom: 0; +} +.modal-footer .btn-group .btn + .btn { + margin-left: -1px; +} +.modal-footer .btn-block + .btn-block { + margin-left: 0; +} +.dropup, +.dropdown { + position: relative; +} +.dropdown-toggle { + *margin-bottom: -3px; +} +.dropdown-toggle:active, +.open .dropdown-toggle { + outline: 0; +} +.caret { + display: inline-block; + width: 0; + height: 0; + vertical-align: top; + border-top: 4px solid #000000; + border-right: 4px solid transparent; + border-left: 4px solid transparent; + content: ""; +} +.dropdown .caret { + margin-top: 8px; + margin-left: 2px; +} +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + display: none; + float: left; + min-width: 160px; + padding: 5px 0; + margin: 2px 0 0; + list-style: none; + background-color: #ffffff; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + *border-right-width: 2px; + *border-bottom-width: 2px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -webkit-background-clip: padding-box; + -moz-background-clip: padding; + background-clip: padding-box; +} +.dropdown-menu.pull-right { + right: 0; + left: auto; +} +.dropdown-menu .divider { + *width: 100%; + height: 1px; + margin: 9px 1px; + *margin: -5px 0 5px; + overflow: hidden; + background-color: #e5e5e5; + border-bottom: 1px solid #ffffff; +} +.dropdown-menu li > a { + display: block; + padding: 3px 20px; + clear: both; + font-weight: normal; + line-height: 20px; + color: #333333; + white-space: nowrap; +} +.dropdown-menu li > a:hover, +.dropdown-menu li > a:focus, +.dropdown-submenu:hover > a { + text-decoration: none; + color: #ffffff; + background-color: #0081c2; + background-image: -moz-linear-gradient(top, #0088cc, #0077b3); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3)); + background-image: -webkit-linear-gradient(top, #0088cc, #0077b3); + background-image: -o-linear-gradient(top, #0088cc, #0077b3); + background-image: linear-gradient(to bottom, #0088cc, #0077b3); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0); +} +.dropdown-menu .active > a, +.dropdown-menu .active > a:hover { + color: #ffffff; + text-decoration: none; + outline: 0; + background-color: #0081c2; + background-image: -moz-linear-gradient(top, #0088cc, #0077b3); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3)); + background-image: -webkit-linear-gradient(top, #0088cc, #0077b3); + background-image: -o-linear-gradient(top, #0088cc, #0077b3); + background-image: linear-gradient(to bottom, #0088cc, #0077b3); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0); +} +.dropdown-menu .disabled > a, +.dropdown-menu .disabled > a:hover { + color: #999999; +} +.dropdown-menu .disabled > a:hover { + text-decoration: none; + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + cursor: default; +} +.open { + *z-index: 1000; +} +.open > .dropdown-menu { + display: block; +} +.pull-right > .dropdown-menu { + right: 0; + left: auto; +} +.dropup .caret, +.navbar-fixed-bottom .dropdown .caret { + border-top: 0; + border-bottom: 4px solid #000000; + content: ""; +} +.dropup .dropdown-menu, +.navbar-fixed-bottom .dropdown .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 1px; +} +.dropdown-submenu { + position: relative; +} +.dropdown-submenu > .dropdown-menu { + top: 0; + left: 100%; + margin-top: -6px; + margin-left: -1px; + -webkit-border-radius: 0 6px 6px 6px; + -moz-border-radius: 0 6px 6px 6px; + border-radius: 0 6px 6px 6px; +} +.dropdown-submenu:hover > .dropdown-menu { + display: block; +} +.dropup .dropdown-submenu > .dropdown-menu { + top: auto; + bottom: 0; + margin-top: 0; + margin-bottom: -2px; + -webkit-border-radius: 5px 5px 5px 0; + -moz-border-radius: 5px 5px 5px 0; + border-radius: 5px 5px 5px 0; +} +.dropdown-submenu > a:after { + display: block; + content: " "; + float: right; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; + border-width: 5px 0 5px 5px; + border-left-color: #cccccc; + margin-top: 5px; + margin-right: -10px; +} +.dropdown-submenu:hover > a:after { + border-left-color: #ffffff; +} +.dropdown-submenu.pull-left { + float: none; +} +.dropdown-submenu.pull-left > .dropdown-menu { + left: -100%; + margin-left: 10px; + -webkit-border-radius: 6px 0 6px 6px; + -moz-border-radius: 6px 0 6px 6px; + border-radius: 6px 0 6px 6px; +} +.dropdown .dropdown-menu .nav-header { + padding-left: 20px; + padding-right: 20px; +} +.typeahead { + z-index: 1051; + margin-top: 2px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.accordion { + margin-bottom: 20px; +} +.accordion-group { + margin-bottom: 2px; + border: 1px solid #e5e5e5; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.accordion-heading { + border-bottom: 0; +} +.accordion-heading .accordion-toggle { + display: block; + padding: 8px 15px; +} +.accordion-toggle { + cursor: pointer; +} +.accordion-inner { + padding: 9px 15px; + border-top: 1px solid #e5e5e5; +} +.carousel { + position: relative; + margin-bottom: 20px; + line-height: 1; +} +.carousel-inner { + overflow: hidden; + width: 100%; + position: relative; +} +.carousel-inner > .item { + display: none; + position: relative; + -webkit-transition: 0.6s ease-in-out left; + -moz-transition: 0.6s ease-in-out left; + -o-transition: 0.6s ease-in-out left; + transition: 0.6s ease-in-out left; +} +.carousel-inner > .item > img { + display: block; + line-height: 1; +} +.carousel-inner > .active, +.carousel-inner > .next, +.carousel-inner > .prev { + display: block; +} +.carousel-inner > .active { + left: 0; +} +.carousel-inner > .next, +.carousel-inner > .prev { + position: absolute; + top: 0; + width: 100%; +} +.carousel-inner > .next { + left: 100%; +} +.carousel-inner > .prev { + left: -100%; +} +.carousel-inner > .next.left, +.carousel-inner > .prev.right { + left: 0; +} +.carousel-inner > .active.left { + left: -100%; +} +.carousel-inner > .active.right { + left: 100%; +} +.carousel-control { + position: absolute; + top: 40%; + left: 15px; + width: 40px; + height: 40px; + margin-top: -20px; + font-size: 60px; + font-weight: 100; + line-height: 30px; + color: #ffffff; + text-align: center; + background: #222222; + border: 3px solid #ffffff; + -webkit-border-radius: 23px; + -moz-border-radius: 23px; + border-radius: 23px; + opacity: 0.5; + filter: alpha(opacity=50); +} +.carousel-control.right { + left: auto; + right: 15px; +} +.carousel-control:hover { + color: #ffffff; + text-decoration: none; + opacity: 0.9; + filter: alpha(opacity=90); +} +.carousel-caption { + position: absolute; + left: 0; + right: 0; + bottom: 0; + padding: 15px; + background: #333333; + background: rgba(0, 0, 0, 0.75); +} +.carousel-caption h4, +.carousel-caption p { + color: #ffffff; + line-height: 20px; +} +.carousel-caption h4 { + margin: 0 0 5px; +} +.carousel-caption p { + margin-bottom: 0; +} +.well { + min-height: 20px; + padding: 19px; + margin-bottom: 20px; + background-color: #f5f5f5; + border: 1px solid #e3e3e3; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); +} +.well blockquote { + border-color: #ddd; + border-color: rgba(0, 0, 0, 0.15); +} +.well-large { + padding: 24px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} +.well-small { + padding: 9px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} +.close { + float: right; + font-size: 20px; + font-weight: bold; + line-height: 20px; + color: #000000; + text-shadow: 0 1px 0 #ffffff; + opacity: 0.2; + filter: alpha(opacity=20); +} +.close:hover { + color: #000000; + text-decoration: none; + cursor: pointer; + opacity: 0.4; + filter: alpha(opacity=40); +} +button.close { + padding: 0; + cursor: pointer; + background: transparent; + border: 0; + -webkit-appearance: none; +} +.pull-right { + float: right; +} +.pull-left { + float: left; +} +.hide { + display: none; +} +.show { + display: block; +} +.invisible { + visibility: hidden; +} +.affix { + position: fixed; +} +.fade { + opacity: 0; + -webkit-transition: opacity 0.15s linear; + -moz-transition: opacity 0.15s linear; + -o-transition: opacity 0.15s linear; + transition: opacity 0.15s linear; +} +.fade.in { + opacity: 1; +} +.collapse { + position: relative; + height: 0; + overflow: hidden; + -webkit-transition: height 0.35s ease; + -moz-transition: height 0.35s ease; + -o-transition: height 0.35s ease; + transition: height 0.35s ease; +} +.collapse.in { + height: auto; +} diff --git a/forum/static/css/bootstrap/bootstrap.min.css b/forum/static/css/bootstrap/bootstrap.min.css new file mode 100755 index 0000000..451842b --- /dev/null +++ b/forum/static/css/bootstrap/bootstrap.min.css @@ -0,0 +1,862 @@ +/*! + * Bootstrap v2.2.2 + * + * Copyright 2012 Twitter, Inc + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world @twitter by @mdo and @fat. + */ +.clearfix{*zoom:1;}.clearfix:before,.clearfix:after{display:table;content:"";line-height:0;} +.clearfix:after{clear:both;} +.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0;} +.input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;} +article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block;} +audio,canvas,video{display:inline-block;*display:inline;*zoom:1;} +audio:not([controls]){display:none;} +html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;} +a:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;} +a:hover,a:active{outline:0;} +sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline;} +sup{top:-0.5em;} +sub{bottom:-0.25em;} +img{max-width:100%;width:auto\9;height:auto;vertical-align:middle;border:0;-ms-interpolation-mode:bicubic;} +#map_canvas img,.google-maps img{max-width:none;} +button,input,select,textarea{margin:0;font-size:100%;vertical-align:middle;} +button,input{*overflow:visible;line-height:normal;} +button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0;} +button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer;} +label,select,button,input[type="button"],input[type="reset"],input[type="submit"],input[type="radio"],input[type="checkbox"]{cursor:pointer;} +input[type="search"]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield;} +input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none;} +textarea{overflow:auto;vertical-align:top;} +@media print{*{text-shadow:none !important;color:#000 !important;background:transparent !important;box-shadow:none !important;} a,a:visited{text-decoration:underline;} a[href]:after{content:" (" attr(href) ")";} abbr[title]:after{content:" (" attr(title) ")";} .ir a:after,a[href^="javascript:"]:after,a[href^="#"]:after{content:"";} pre,blockquote{border:1px solid #999;page-break-inside:avoid;} thead{display:table-header-group;} tr,img{page-break-inside:avoid;} img{max-width:100% !important;} @page {margin:0.5cm;}p,h2,h3{orphans:3;widows:3;} h2,h3{page-break-after:avoid;}}body{margin:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;line-height:20px;color:#333333;background-color:#ffffff;} +a{color:#0088cc;text-decoration:none;} +a:hover{color:#005580;text-decoration:underline;} +.img-rounded{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;} +.img-polaroid{padding:4px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0, 0, 0, 0.2);-webkit-box-shadow:0 1px 3px rgba(0, 0, 0, 0.1);-moz-box-shadow:0 1px 3px rgba(0, 0, 0, 0.1);box-shadow:0 1px 3px rgba(0, 0, 0, 0.1);} +.img-circle{-webkit-border-radius:500px;-moz-border-radius:500px;border-radius:500px;} +.row{margin-left:-20px;*zoom:1;}.row:before,.row:after{display:table;content:"";line-height:0;} +.row:after{clear:both;} +[class*="span"]{float:left;min-height:1px;margin-left:20px;} +.container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px;} +.span12{width:940px;} +.span11{width:860px;} +.span10{width:780px;} +.span9{width:700px;} +.span8{width:620px;} +.span7{width:540px;} +.span6{width:460px;} +.span5{width:380px;} +.span4{width:300px;} +.span3{width:220px;} +.span2{width:140px;} +.span1{width:60px;} +.offset12{margin-left:980px;} +.offset11{margin-left:900px;} +.offset10{margin-left:820px;} +.offset9{margin-left:740px;} +.offset8{margin-left:660px;} +.offset7{margin-left:580px;} +.offset6{margin-left:500px;} +.offset5{margin-left:420px;} +.offset4{margin-left:340px;} +.offset3{margin-left:260px;} +.offset2{margin-left:180px;} +.offset1{margin-left:100px;} +.row-fluid{width:100%;*zoom:1;}.row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;} +.row-fluid:after{clear:both;} +.row-fluid [class*="span"]{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;float:left;margin-left:2.127659574468085%;*margin-left:2.074468085106383%;} +.row-fluid [class*="span"]:first-child{margin-left:0;} +.row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.127659574468085%;} +.row-fluid .span12{width:100%;*width:99.94680851063829%;} +.row-fluid .span11{width:91.48936170212765%;*width:91.43617021276594%;} +.row-fluid .span10{width:82.97872340425532%;*width:82.92553191489361%;} +.row-fluid .span9{width:74.46808510638297%;*width:74.41489361702126%;} +.row-fluid .span8{width:65.95744680851064%;*width:65.90425531914893%;} +.row-fluid .span7{width:57.44680851063829%;*width:57.39361702127659%;} +.row-fluid .span6{width:48.93617021276595%;*width:48.88297872340425%;} +.row-fluid .span5{width:40.42553191489362%;*width:40.37234042553192%;} +.row-fluid .span4{width:31.914893617021278%;*width:31.861702127659576%;} +.row-fluid .span3{width:23.404255319148934%;*width:23.351063829787233%;} +.row-fluid .span2{width:14.893617021276595%;*width:14.840425531914894%;} +.row-fluid .span1{width:6.382978723404255%;*width:6.329787234042553%;} +.row-fluid .offset12{margin-left:104.25531914893617%;*margin-left:104.14893617021275%;} +.row-fluid .offset12:first-child{margin-left:102.12765957446808%;*margin-left:102.02127659574467%;} +.row-fluid .offset11{margin-left:95.74468085106382%;*margin-left:95.6382978723404%;} +.row-fluid .offset11:first-child{margin-left:93.61702127659574%;*margin-left:93.51063829787232%;} +.row-fluid .offset10{margin-left:87.23404255319149%;*margin-left:87.12765957446807%;} +.row-fluid .offset10:first-child{margin-left:85.1063829787234%;*margin-left:84.99999999999999%;} +.row-fluid .offset9{margin-left:78.72340425531914%;*margin-left:78.61702127659572%;} +.row-fluid .offset9:first-child{margin-left:76.59574468085106%;*margin-left:76.48936170212764%;} +.row-fluid .offset8{margin-left:70.2127659574468%;*margin-left:70.10638297872339%;} +.row-fluid .offset8:first-child{margin-left:68.08510638297872%;*margin-left:67.9787234042553%;} +.row-fluid .offset7{margin-left:61.70212765957446%;*margin-left:61.59574468085106%;} +.row-fluid .offset7:first-child{margin-left:59.574468085106375%;*margin-left:59.46808510638297%;} +.row-fluid .offset6{margin-left:53.191489361702125%;*margin-left:53.085106382978715%;} +.row-fluid .offset6:first-child{margin-left:51.063829787234035%;*margin-left:50.95744680851063%;} +.row-fluid .offset5{margin-left:44.68085106382979%;*margin-left:44.57446808510638%;} +.row-fluid .offset5:first-child{margin-left:42.5531914893617%;*margin-left:42.4468085106383%;} +.row-fluid .offset4{margin-left:36.170212765957444%;*margin-left:36.06382978723405%;} +.row-fluid .offset4:first-child{margin-left:34.04255319148936%;*margin-left:33.93617021276596%;} +.row-fluid .offset3{margin-left:27.659574468085104%;*margin-left:27.5531914893617%;} +.row-fluid .offset3:first-child{margin-left:25.53191489361702%;*margin-left:25.425531914893618%;} +.row-fluid .offset2{margin-left:19.148936170212764%;*margin-left:19.04255319148936%;} +.row-fluid .offset2:first-child{margin-left:17.02127659574468%;*margin-left:16.914893617021278%;} +.row-fluid .offset1{margin-left:10.638297872340425%;*margin-left:10.53191489361702%;} +.row-fluid .offset1:first-child{margin-left:8.51063829787234%;*margin-left:8.404255319148938%;} +[class*="span"].hide,.row-fluid [class*="span"].hide{display:none;} +[class*="span"].pull-right,.row-fluid [class*="span"].pull-right{float:right;} +.container{margin-right:auto;margin-left:auto;*zoom:1;}.container:before,.container:after{display:table;content:"";line-height:0;} +.container:after{clear:both;} +.container-fluid{padding-right:20px;padding-left:20px;*zoom:1;}.container-fluid:before,.container-fluid:after{display:table;content:"";line-height:0;} +.container-fluid:after{clear:both;} +p{margin:0 0 10px;} +.lead{margin-bottom:20px;font-size:18px;font-weight:200;line-height:30px;} +small{font-size:85%;} +strong{font-weight:bold;} +em{font-style:italic;} +cite{font-style:normal;} +.muted{color:#999999;} +a.muted:hover{color:#808080;} +.text-warning{color:#c09853;} +a.text-warning:hover{color:#a47e3c;} +.text-error{color:#b94a48;} +a.text-error:hover{color:#953b39;} +.text-info{color:#3a87ad;} +a.text-info:hover{color:#2d6987;} +.text-success{color:#468847;} +a.text-success:hover{color:#356635;} +h1,h2,h3,h4,h5,h6{margin:10px 0;font-family:inherit;font-weight:bold;line-height:20px;color:inherit;text-rendering:optimizelegibility;}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-weight:normal;line-height:1;color:#999999;} +h1,h2,h3{line-height:40px;} +h1{font-size:33px;} +h2{font-size:27px;} +h3{font-size:21px;} +h4{font-size:15px;} +h5{font-size:12px;} +h6{font-size:10.2px;} +h1 small{font-size:21px;} +h2 small{font-size:15px;} +h3 small{font-size:12px;} +h4 small{font-size:12px;} +.page-header{padding-bottom:9px;margin:20px 0 30px;border-bottom:1px solid #eeeeee;} +ul,ol{padding:0;margin:0 0 10px 25px;} +ul ul,ul ol,ol ol,ol ul{margin-bottom:0;} +li{line-height:20px;} +ul.unstyled,ol.unstyled{margin-left:0;list-style:none;} +ul.inline,ol.inline{margin-left:0;list-style:none;}ul.inline >li,ol.inline >li{display:inline-block;padding-left:5px;padding-right:5px;} +dl{margin-bottom:20px;} +dt,dd{line-height:20px;} +dt{font-weight:bold;} +dd{margin-left:10px;} +.dl-horizontal{*zoom:1;}.dl-horizontal:before,.dl-horizontal:after{display:table;content:"";line-height:0;} +.dl-horizontal:after{clear:both;} +.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;} +.dl-horizontal dd{margin-left:180px;} +hr{margin:20px 0;border:0;border-top:1px solid #eeeeee;border-bottom:1px solid #ffffff;} +abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999999;} +abbr.initialism{font-size:90%;text-transform:uppercase;} +blockquote{padding:0 0 0 15px;margin:0 0 20px;border-left:5px solid #eeeeee;}blockquote p{margin-bottom:0;font-size:16px;font-weight:300;line-height:25px;} +blockquote small{display:block;line-height:20px;color:#999999;}blockquote small:before{content:'\2014 \00A0';} +blockquote.pull-right{float:right;padding-right:15px;padding-left:0;border-right:5px solid #eeeeee;border-left:0;}blockquote.pull-right p,blockquote.pull-right small{text-align:right;} +blockquote.pull-right small:before{content:'';} +blockquote.pull-right small:after{content:'\00A0 \2014';} +q:before,q:after,blockquote:before,blockquote:after{content:"";} +address{display:block;margin-bottom:20px;font-style:normal;line-height:20px;} +code,pre{padding:0 3px 2px;font-family:Monaco,Menlo,Consolas,"Courier New",monospace;font-size:10px;color:#333333;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;} +code{padding:2px 4px;color:#d14;background-color:#f7f7f9;border:1px solid #e1e1e8;white-space:nowrap;} +pre{display:block;padding:9.5px;margin:0 0 10px;font-size:11px;line-height:20px;word-break:break-all;word-wrap:break-word;white-space:pre;white-space:pre-wrap;background-color:#f5f5f5;border:1px solid #ccc;border:1px solid rgba(0, 0, 0, 0.15);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}pre.prettyprint{margin-bottom:20px;} +pre code{padding:0;color:inherit;white-space:pre;white-space:pre-wrap;background-color:transparent;border:0;} +.pre-scrollable{max-height:340px;overflow-y:scroll;} +.label,.badge{display:inline-block;padding:2px 4px;font-size:10.152px;font-weight:bold;line-height:14px;color:#ffffff;vertical-align:baseline;white-space:nowrap;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#999999;} +.label{-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;} +.badge{padding-left:9px;padding-right:9px;-webkit-border-radius:9px;-moz-border-radius:9px;border-radius:9px;} +.label:empty,.badge:empty{display:none;} +a.label:hover,a.badge:hover{color:#ffffff;text-decoration:none;cursor:pointer;} +.label-important,.badge-important{background-color:#b94a48;} +.label-important[href],.badge-important[href]{background-color:#953b39;} +.label-warning,.badge-warning{background-color:#f89406;} +.label-warning[href],.badge-warning[href]{background-color:#c67605;} +.label-success,.badge-success{background-color:#468847;} +.label-success[href],.badge-success[href]{background-color:#356635;} +.label-info,.badge-info{background-color:#3a87ad;} +.label-info[href],.badge-info[href]{background-color:#2d6987;} +.label-inverse,.badge-inverse{background-color:#333333;} +.label-inverse[href],.badge-inverse[href]{background-color:#1a1a1a;} +.btn .label,.btn .badge{position:relative;top:-1px;} +.btn-mini .label,.btn-mini .badge{top:0;} +table{max-width:100%;background-color:transparent;border-collapse:collapse;border-spacing:0;} +.table{width:100%;margin-bottom:20px;}.table th,.table td{padding:8px;line-height:20px;text-align:left;vertical-align:top;border-top:1px solid #dddddd;} +.table th{font-weight:bold;} +.table thead th{vertical-align:bottom;} +.table caption+thead tr:first-child th,.table caption+thead tr:first-child td,.table colgroup+thead tr:first-child th,.table colgroup+thead tr:first-child td,.table thead:first-child tr:first-child th,.table thead:first-child tr:first-child td{border-top:0;} +.table tbody+tbody{border-top:2px solid #dddddd;} +.table .table{background-color:#ffffff;} +.table-condensed th,.table-condensed td{padding:4px 5px;} +.table-bordered{border:1px solid #dddddd;border-collapse:separate;*border-collapse:collapse;border-left:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}.table-bordered th,.table-bordered td{border-left:1px solid #dddddd;} +.table-bordered caption+thead tr:first-child th,.table-bordered caption+tbody tr:first-child th,.table-bordered caption+tbody tr:first-child td,.table-bordered colgroup+thead tr:first-child th,.table-bordered colgroup+tbody tr:first-child th,.table-bordered colgroup+tbody tr:first-child td,.table-bordered thead:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child td{border-top:0;} +.table-bordered thead:first-child tr:first-child>th:first-child,.table-bordered tbody:first-child tr:first-child>td:first-child{-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px;border-top-left-radius:4px;} +.table-bordered thead:first-child tr:first-child>th:last-child,.table-bordered tbody:first-child tr:first-child>td:last-child{-webkit-border-top-right-radius:4px;-moz-border-radius-topright:4px;border-top-right-radius:4px;} +.table-bordered thead:last-child tr:last-child>th:first-child,.table-bordered tbody:last-child tr:last-child>td:first-child,.table-bordered tfoot:last-child tr:last-child>td:first-child{-webkit-border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px;border-bottom-left-radius:4px;} +.table-bordered thead:last-child tr:last-child>th:last-child,.table-bordered tbody:last-child tr:last-child>td:last-child,.table-bordered tfoot:last-child tr:last-child>td:last-child{-webkit-border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px;border-bottom-right-radius:4px;} +.table-bordered tfoot+tbody:last-child tr:last-child td:first-child{-webkit-border-bottom-left-radius:0;-moz-border-radius-bottomleft:0;border-bottom-left-radius:0;} +.table-bordered tfoot+tbody:last-child tr:last-child td:last-child{-webkit-border-bottom-right-radius:0;-moz-border-radius-bottomright:0;border-bottom-right-radius:0;} +.table-bordered caption+thead tr:first-child th:first-child,.table-bordered caption+tbody tr:first-child td:first-child,.table-bordered colgroup+thead tr:first-child th:first-child,.table-bordered colgroup+tbody tr:first-child td:first-child{-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px;border-top-left-radius:4px;} +.table-bordered caption+thead tr:first-child th:last-child,.table-bordered caption+tbody tr:first-child td:last-child,.table-bordered colgroup+thead tr:first-child th:last-child,.table-bordered colgroup+tbody tr:first-child td:last-child{-webkit-border-top-right-radius:4px;-moz-border-radius-topright:4px;border-top-right-radius:4px;} +.table-striped tbody>tr:nth-child(odd)>td,.table-striped tbody>tr:nth-child(odd)>th{background-color:#f9f9f9;} +.table-hover tbody tr:hover td,.table-hover tbody tr:hover th{background-color:#f5f5f5;} +table td[class*="span"],table th[class*="span"],.row-fluid table td[class*="span"],.row-fluid table th[class*="span"]{display:table-cell;float:none;margin-left:0;} +.table td.span1,.table th.span1{float:none;width:44px;margin-left:0;} +.table td.span2,.table th.span2{float:none;width:124px;margin-left:0;} +.table td.span3,.table th.span3{float:none;width:204px;margin-left:0;} +.table td.span4,.table th.span4{float:none;width:284px;margin-left:0;} +.table td.span5,.table th.span5{float:none;width:364px;margin-left:0;} +.table td.span6,.table th.span6{float:none;width:444px;margin-left:0;} +.table td.span7,.table th.span7{float:none;width:524px;margin-left:0;} +.table td.span8,.table th.span8{float:none;width:604px;margin-left:0;} +.table td.span9,.table th.span9{float:none;width:684px;margin-left:0;} +.table td.span10,.table th.span10{float:none;width:764px;margin-left:0;} +.table td.span11,.table th.span11{float:none;width:844px;margin-left:0;} +.table td.span12,.table th.span12{float:none;width:924px;margin-left:0;} +.table tbody tr.success td{background-color:#dff0d8;} +.table tbody tr.error td{background-color:#f2dede;} +.table tbody tr.warning td{background-color:#fcf8e3;} +.table tbody tr.info td{background-color:#d9edf7;} +.table-hover tbody tr.success:hover td{background-color:#d0e9c6;} +.table-hover tbody tr.error:hover td{background-color:#ebcccc;} +.table-hover tbody tr.warning:hover td{background-color:#faf2cc;} +.table-hover tbody tr.info:hover td{background-color:#c4e3f3;} +form{margin:0 0 20px;} +fieldset{padding:0;margin:0;border:0;} +legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:18px;line-height:40px;color:#333333;border:0;border-bottom:1px solid #e5e5e5;}legend small{font-size:15px;color:#999999;} +label,input,button,select,textarea{font-size:12px;font-weight:normal;line-height:20px;} +input,button,select,textarea{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;} +label{display:block;margin-bottom:5px;} +select,textarea,input[type="text"],input[type="password"],input[type="datetime"],input[type="datetime-local"],input[type="date"],input[type="month"],input[type="time"],input[type="week"],input[type="number"],input[type="email"],input[type="url"],input[type="search"],input[type="tel"],input[type="color"],.uneditable-input{display:inline-block;height:20px;padding:4px 6px;margin-bottom:10px;font-size:12px;line-height:20px;color:#555555;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;vertical-align:middle;} +input,textarea,.uneditable-input{width:206px;} +textarea{height:auto;} +textarea,input[type="text"],input[type="password"],input[type="datetime"],input[type="datetime-local"],input[type="date"],input[type="month"],input[type="time"],input[type="week"],input[type="number"],input[type="email"],input[type="url"],input[type="search"],input[type="tel"],input[type="color"],.uneditable-input{background-color:#ffffff;border:1px solid #cccccc;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-webkit-transition:border linear .2s, box-shadow linear .2s;-moz-transition:border linear .2s, box-shadow linear .2s;-o-transition:border linear .2s, box-shadow linear .2s;transition:border linear .2s, box-shadow linear .2s;}textarea:focus,input[type="text"]:focus,input[type="password"]:focus,input[type="datetime"]:focus,input[type="datetime-local"]:focus,input[type="date"]:focus,input[type="month"]:focus,input[type="time"]:focus,input[type="week"]:focus,input[type="number"]:focus,input[type="email"]:focus,input[type="url"]:focus,input[type="search"]:focus,input[type="tel"]:focus,input[type="color"]:focus,.uneditable-input:focus{border-color:rgba(82, 168, 236, 0.8);outline:0;outline:thin dotted \9;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);} +input[type="radio"],input[type="checkbox"]{margin:4px 0 0;*margin-top:0;margin-top:1px \9;line-height:normal;} +input[type="file"],input[type="image"],input[type="submit"],input[type="reset"],input[type="button"],input[type="radio"],input[type="checkbox"]{width:auto;} +select,input[type="file"]{height:30px;*margin-top:4px;line-height:30px;} +select{width:220px;border:1px solid #cccccc;background-color:#ffffff;} +select[multiple],select[size]{height:auto;} +select:focus,input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;} +.uneditable-input,.uneditable-textarea{color:#999999;background-color:#fcfcfc;border-color:#cccccc;-webkit-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);-moz-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);cursor:not-allowed;} +.uneditable-input{overflow:hidden;white-space:nowrap;} +.uneditable-textarea{width:auto;height:auto;} +input:-moz-placeholder,textarea:-moz-placeholder{color:#999999;} +input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#999999;} +input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#999999;} +.radio,.checkbox{min-height:20px;padding-left:20px;} +.radio input[type="radio"],.checkbox input[type="checkbox"]{float:left;margin-left:-20px;} +.controls>.radio:first-child,.controls>.checkbox:first-child{padding-top:5px;} +.radio.inline,.checkbox.inline{display:inline-block;padding-top:5px;margin-bottom:0;vertical-align:middle;} +.radio.inline+.radio.inline,.checkbox.inline+.checkbox.inline{margin-left:10px;} +.input-mini{width:60px;} +.input-small{width:90px;} +.input-medium{width:150px;} +.input-large{width:210px;} +.input-xlarge{width:270px;} +.input-xxlarge{width:530px;} +input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input[class*="span"],.row-fluid input[class*="span"],.row-fluid select[class*="span"],.row-fluid textarea[class*="span"],.row-fluid .uneditable-input[class*="span"]{float:none;margin-left:0;} +.input-append input[class*="span"],.input-append .uneditable-input[class*="span"],.input-prepend input[class*="span"],.input-prepend .uneditable-input[class*="span"],.row-fluid input[class*="span"],.row-fluid select[class*="span"],.row-fluid textarea[class*="span"],.row-fluid .uneditable-input[class*="span"],.row-fluid .input-prepend [class*="span"],.row-fluid .input-append [class*="span"]{display:inline-block;} +input,textarea,.uneditable-input{margin-left:0;} +.controls-row [class*="span"]+[class*="span"]{margin-left:20px;} +input.span12, textarea.span12, .uneditable-input.span12{width:926px;} +input.span11, textarea.span11, .uneditable-input.span11{width:846px;} +input.span10, textarea.span10, .uneditable-input.span10{width:766px;} +input.span9, textarea.span9, .uneditable-input.span9{width:686px;} +input.span8, textarea.span8, .uneditable-input.span8{width:606px;} +input.span7, textarea.span7, .uneditable-input.span7{width:526px;} +input.span6, textarea.span6, .uneditable-input.span6{width:446px;} +input.span5, textarea.span5, .uneditable-input.span5{width:366px;} +input.span4, textarea.span4, .uneditable-input.span4{width:286px;} +input.span3, textarea.span3, .uneditable-input.span3{width:206px;} +input.span2, textarea.span2, .uneditable-input.span2{width:126px;} +input.span1, textarea.span1, .uneditable-input.span1{width:46px;} +.controls-row{*zoom:1;}.controls-row:before,.controls-row:after{display:table;content:"";line-height:0;} +.controls-row:after{clear:both;} +.controls-row [class*="span"],.row-fluid .controls-row [class*="span"]{float:left;} +.controls-row .checkbox[class*="span"],.controls-row .radio[class*="span"]{padding-top:5px;} +input[disabled],select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{cursor:not-allowed;background-color:#eeeeee;} +input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"][readonly],input[type="checkbox"][readonly]{background-color:transparent;} +.control-group.warning .control-label,.control-group.warning .help-block,.control-group.warning .help-inline{color:#c09853;} +.control-group.warning .checkbox,.control-group.warning .radio,.control-group.warning input,.control-group.warning select,.control-group.warning textarea{color:#c09853;} +.control-group.warning input,.control-group.warning select,.control-group.warning textarea{border-color:#c09853;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);}.control-group.warning input:focus,.control-group.warning select:focus,.control-group.warning textarea:focus{border-color:#a47e3c;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #dbc59e;-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #dbc59e;box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #dbc59e;} +.control-group.warning .input-prepend .add-on,.control-group.warning .input-append .add-on{color:#c09853;background-color:#fcf8e3;border-color:#c09853;} +.control-group.error .control-label,.control-group.error .help-block,.control-group.error .help-inline{color:#b94a48;} +.control-group.error .checkbox,.control-group.error .radio,.control-group.error input,.control-group.error select,.control-group.error textarea{color:#b94a48;} +.control-group.error input,.control-group.error select,.control-group.error textarea{border-color:#b94a48;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);}.control-group.error input:focus,.control-group.error select:focus,.control-group.error textarea:focus{border-color:#953b39;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #d59392;-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #d59392;box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #d59392;} +.control-group.error .input-prepend .add-on,.control-group.error .input-append .add-on{color:#b94a48;background-color:#f2dede;border-color:#b94a48;} +.control-group.success .control-label,.control-group.success .help-block,.control-group.success .help-inline{color:#468847;} +.control-group.success .checkbox,.control-group.success .radio,.control-group.success input,.control-group.success select,.control-group.success textarea{color:#468847;} +.control-group.success input,.control-group.success select,.control-group.success textarea{border-color:#468847;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);}.control-group.success input:focus,.control-group.success select:focus,.control-group.success textarea:focus{border-color:#356635;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #7aba7b;-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #7aba7b;box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #7aba7b;} +.control-group.success .input-prepend .add-on,.control-group.success .input-append .add-on{color:#468847;background-color:#dff0d8;border-color:#468847;} +.control-group.info .control-label,.control-group.info .help-block,.control-group.info .help-inline{color:#3a87ad;} +.control-group.info .checkbox,.control-group.info .radio,.control-group.info input,.control-group.info select,.control-group.info textarea{color:#3a87ad;} +.control-group.info input,.control-group.info select,.control-group.info textarea{border-color:#3a87ad;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);}.control-group.info input:focus,.control-group.info select:focus,.control-group.info textarea:focus{border-color:#2d6987;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #7ab5d3;-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #7ab5d3;box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #7ab5d3;} +.control-group.info .input-prepend .add-on,.control-group.info .input-append .add-on{color:#3a87ad;background-color:#d9edf7;border-color:#3a87ad;} +input:focus:invalid,textarea:focus:invalid,select:focus:invalid{color:#b94a48;border-color:#ee5f5b;}input:focus:invalid:focus,textarea:focus:invalid:focus,select:focus:invalid:focus{border-color:#e9322d;-webkit-box-shadow:0 0 6px #f8b9b7;-moz-box-shadow:0 0 6px #f8b9b7;box-shadow:0 0 6px #f8b9b7;} +.form-actions{padding:19px 20px 20px;margin-top:20px;margin-bottom:20px;background-color:#f5f5f5;border-top:1px solid #e5e5e5;*zoom:1;}.form-actions:before,.form-actions:after{display:table;content:"";line-height:0;} +.form-actions:after{clear:both;} +.help-block,.help-inline{color:#595959;} +.help-block{display:block;margin-bottom:10px;} +.help-inline{display:inline-block;*display:inline;*zoom:1;vertical-align:middle;padding-left:5px;} +.input-append,.input-prepend{margin-bottom:5px;font-size:0;white-space:nowrap;}.input-append input,.input-prepend input,.input-append select,.input-prepend select,.input-append .uneditable-input,.input-prepend .uneditable-input,.input-append .dropdown-menu,.input-prepend .dropdown-menu{font-size:12px;} +.input-append input,.input-prepend input,.input-append select,.input-prepend select,.input-append .uneditable-input,.input-prepend .uneditable-input{position:relative;margin-bottom:0;*margin-left:0;vertical-align:top;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0;}.input-append input:focus,.input-prepend input:focus,.input-append select:focus,.input-prepend select:focus,.input-append .uneditable-input:focus,.input-prepend .uneditable-input:focus{z-index:2;} +.input-append .add-on,.input-prepend .add-on{display:inline-block;width:auto;height:20px;min-width:16px;padding:4px 5px;font-size:12px;font-weight:normal;line-height:20px;text-align:center;text-shadow:0 1px 0 #ffffff;background-color:#eeeeee;border:1px solid #ccc;} +.input-append .add-on,.input-prepend .add-on,.input-append .btn,.input-prepend .btn,.input-append .btn-group>.dropdown-toggle,.input-prepend .btn-group>.dropdown-toggle{vertical-align:top;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;} +.input-append .active,.input-prepend .active{background-color:#a9dba9;border-color:#46a546;} +.input-prepend .add-on,.input-prepend .btn{margin-right:-1px;} +.input-prepend .add-on:first-child,.input-prepend .btn:first-child{-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px;} +.input-append input,.input-append select,.input-append .uneditable-input{-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px;}.input-append input+.btn-group .btn:last-child,.input-append select+.btn-group .btn:last-child,.input-append .uneditable-input+.btn-group .btn:last-child{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0;} +.input-append .add-on,.input-append .btn,.input-append .btn-group{margin-left:-1px;} +.input-append .add-on:last-child,.input-append .btn:last-child,.input-append .btn-group:last-child>.dropdown-toggle{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0;} +.input-prepend.input-append input,.input-prepend.input-append select,.input-prepend.input-append .uneditable-input{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}.input-prepend.input-append input+.btn-group .btn,.input-prepend.input-append select+.btn-group .btn,.input-prepend.input-append .uneditable-input+.btn-group .btn{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0;} +.input-prepend.input-append .add-on:first-child,.input-prepend.input-append .btn:first-child{margin-right:-1px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px;} +.input-prepend.input-append .add-on:last-child,.input-prepend.input-append .btn:last-child{margin-left:-1px;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0;} +.input-prepend.input-append .btn-group:first-child{margin-left:0;} +input.search-query{padding-right:14px;padding-right:4px \9;padding-left:14px;padding-left:4px \9;margin-bottom:0;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px;} +.form-search .input-append .search-query,.form-search .input-prepend .search-query{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;} +.form-search .input-append .search-query{-webkit-border-radius:14px 0 0 14px;-moz-border-radius:14px 0 0 14px;border-radius:14px 0 0 14px;} +.form-search .input-append .btn{-webkit-border-radius:0 14px 14px 0;-moz-border-radius:0 14px 14px 0;border-radius:0 14px 14px 0;} +.form-search .input-prepend .search-query{-webkit-border-radius:0 14px 14px 0;-moz-border-radius:0 14px 14px 0;border-radius:0 14px 14px 0;} +.form-search .input-prepend .btn{-webkit-border-radius:14px 0 0 14px;-moz-border-radius:14px 0 0 14px;border-radius:14px 0 0 14px;} +.form-search input,.form-inline input,.form-horizontal input,.form-search textarea,.form-inline textarea,.form-horizontal textarea,.form-search select,.form-inline select,.form-horizontal select,.form-search .help-inline,.form-inline .help-inline,.form-horizontal .help-inline,.form-search .uneditable-input,.form-inline .uneditable-input,.form-horizontal .uneditable-input,.form-search .input-prepend,.form-inline .input-prepend,.form-horizontal .input-prepend,.form-search .input-append,.form-inline .input-append,.form-horizontal .input-append{display:inline-block;*display:inline;*zoom:1;margin-bottom:0;vertical-align:middle;} +.form-search .hide,.form-inline .hide,.form-horizontal .hide{display:none;} +.form-search label,.form-inline label,.form-search .btn-group,.form-inline .btn-group{display:inline-block;} +.form-search .input-append,.form-inline .input-append,.form-search .input-prepend,.form-inline .input-prepend{margin-bottom:0;} +.form-search .radio,.form-search .checkbox,.form-inline .radio,.form-inline .checkbox{padding-left:0;margin-bottom:0;vertical-align:middle;} +.form-search .radio input[type="radio"],.form-search .checkbox input[type="checkbox"],.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{float:left;margin-right:3px;margin-left:0;} +.control-group{margin-bottom:10px;} +legend+.control-group{margin-top:20px;-webkit-margin-top-collapse:separate;} +.form-horizontal .control-group{margin-bottom:20px;*zoom:1;}.form-horizontal .control-group:before,.form-horizontal .control-group:after{display:table;content:"";line-height:0;} +.form-horizontal .control-group:after{clear:both;} +.form-horizontal .control-label{float:left;width:160px;padding-top:5px;text-align:right;} +.form-horizontal .controls{*display:inline-block;*padding-left:20px;margin-left:180px;*margin-left:0;}.form-horizontal .controls:first-child{*padding-left:180px;} +.form-horizontal .help-block{margin-bottom:0;} +.form-horizontal input+.help-block,.form-horizontal select+.help-block,.form-horizontal textarea+.help-block,.form-horizontal .uneditable-input+.help-block,.form-horizontal .input-prepend+.help-block,.form-horizontal .input-append+.help-block{margin-top:10px;} +.form-horizontal .form-actions{padding-left:180px;} +.btn{display:inline-block;*display:inline;*zoom:1;padding:4px 12px;margin-bottom:0;font-size:12px;line-height:20px;text-align:center;vertical-align:middle;cursor:pointer;color:#333333;text-shadow:0 1px 1px rgba(255, 255, 255, 0.75);background-color:#f5f5f5;background-image:-moz-linear-gradient(top, #ffffff, #e6e6e6);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6));background-image:-webkit-linear-gradient(top, #ffffff, #e6e6e6);background-image:-o-linear-gradient(top, #ffffff, #e6e6e6);background-image:linear-gradient(to bottom, #ffffff, #e6e6e6);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0);border-color:#e6e6e6 #e6e6e6 #bfbfbf;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#e6e6e6;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);border:1px solid #bbbbbb;*border:0;border-bottom-color:#a2a2a2;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;*margin-left:.3em;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);}.btn:hover,.btn:active,.btn.active,.btn.disabled,.btn[disabled]{color:#333333;background-color:#e6e6e6;*background-color:#d9d9d9;} +.btn:active,.btn.active{background-color:#cccccc \9;} +.btn:first-child{*margin-left:0;} +.btn:hover{color:#333333;text-decoration:none;background-position:0 -15px;-webkit-transition:background-position 0.1s linear;-moz-transition:background-position 0.1s linear;-o-transition:background-position 0.1s linear;transition:background-position 0.1s linear;} +.btn:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;} +.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);} +.btn.disabled,.btn[disabled]{cursor:default;background-image:none;opacity:0.65;filter:alpha(opacity=65);-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;} +.btn-large{padding:11px 19px;font-size:15px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;} +.btn-large [class^="icon-"],.btn-large [class*=" icon-"]{margin-top:4px;} +.btn-small{padding:2px 10px;font-size:10.2px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;} +.btn-small [class^="icon-"],.btn-small [class*=" icon-"]{margin-top:0;} +.btn-mini [class^="icon-"],.btn-mini [class*=" icon-"]{margin-top:-1px;} +.btn-mini{padding:0 6px;font-size:9px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;} +.btn-block{display:block;width:100%;padding-left:0;padding-right:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;} +.btn-block+.btn-block{margin-top:5px;} +input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%;} +.btn-primary.active,.btn-warning.active,.btn-danger.active,.btn-success.active,.btn-info.active,.btn-inverse.active{color:rgba(255, 255, 255, 0.75);} +.btn{border-color:#c5c5c5;border-color:rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.25);} +.btn-primary{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#006dcc;background-image:-moz-linear-gradient(top, #0088cc, #0044cc);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));background-image:-webkit-linear-gradient(top, #0088cc, #0044cc);background-image:-o-linear-gradient(top, #0088cc, #0044cc);background-image:linear-gradient(to bottom, #0088cc, #0044cc);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0);border-color:#0044cc #0044cc #002a80;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#0044cc;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-primary:hover,.btn-primary:active,.btn-primary.active,.btn-primary.disabled,.btn-primary[disabled]{color:#ffffff;background-color:#0044cc;*background-color:#003bb3;} +.btn-primary:active,.btn-primary.active{background-color:#003399 \9;} +.btn-warning{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#faa732;background-image:-moz-linear-gradient(top, #fbb450, #f89406);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));background-image:-webkit-linear-gradient(top, #fbb450, #f89406);background-image:-o-linear-gradient(top, #fbb450, #f89406);background-image:linear-gradient(to bottom, #fbb450, #f89406);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0);border-color:#f89406 #f89406 #ad6704;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#f89406;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-warning:hover,.btn-warning:active,.btn-warning.active,.btn-warning.disabled,.btn-warning[disabled]{color:#ffffff;background-color:#f89406;*background-color:#df8505;} +.btn-warning:active,.btn-warning.active{background-color:#c67605 \9;} +.btn-danger{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#da4f49;background-image:-moz-linear-gradient(top, #ee5f5b, #bd362f);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f));background-image:-webkit-linear-gradient(top, #ee5f5b, #bd362f);background-image:-o-linear-gradient(top, #ee5f5b, #bd362f);background-image:linear-gradient(to bottom, #ee5f5b, #bd362f);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffbd362f', GradientType=0);border-color:#bd362f #bd362f #802420;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#bd362f;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-danger:hover,.btn-danger:active,.btn-danger.active,.btn-danger.disabled,.btn-danger[disabled]{color:#ffffff;background-color:#bd362f;*background-color:#a9302a;} +.btn-danger:active,.btn-danger.active{background-color:#942a25 \9;} +.btn-success{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#5bb75b;background-image:-moz-linear-gradient(top, #62c462, #51a351);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351));background-image:-webkit-linear-gradient(top, #62c462, #51a351);background-image:-o-linear-gradient(top, #62c462, #51a351);background-image:linear-gradient(to bottom, #62c462, #51a351);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff51a351', GradientType=0);border-color:#51a351 #51a351 #387038;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#51a351;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-success:hover,.btn-success:active,.btn-success.active,.btn-success.disabled,.btn-success[disabled]{color:#ffffff;background-color:#51a351;*background-color:#499249;} +.btn-success:active,.btn-success.active{background-color:#408140 \9;} +.btn-info{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#49afcd;background-image:-moz-linear-gradient(top, #5bc0de, #2f96b4);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4));background-image:-webkit-linear-gradient(top, #5bc0de, #2f96b4);background-image:-o-linear-gradient(top, #5bc0de, #2f96b4);background-image:linear-gradient(to bottom, #5bc0de, #2f96b4);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2f96b4', GradientType=0);border-color:#2f96b4 #2f96b4 #1f6377;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#2f96b4;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-info:hover,.btn-info:active,.btn-info.active,.btn-info.disabled,.btn-info[disabled]{color:#ffffff;background-color:#2f96b4;*background-color:#2a85a0;} +.btn-info:active,.btn-info.active{background-color:#24748c \9;} +.btn-inverse{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#363636;background-image:-moz-linear-gradient(top, #444444, #222222);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#444444), to(#222222));background-image:-webkit-linear-gradient(top, #444444, #222222);background-image:-o-linear-gradient(top, #444444, #222222);background-image:linear-gradient(to bottom, #444444, #222222);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff444444', endColorstr='#ff222222', GradientType=0);border-color:#222222 #222222 #000000;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#222222;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-inverse:hover,.btn-inverse:active,.btn-inverse.active,.btn-inverse.disabled,.btn-inverse[disabled]{color:#ffffff;background-color:#222222;*background-color:#151515;} +.btn-inverse:active,.btn-inverse.active{background-color:#080808 \9;} +button.btn,input[type="submit"].btn{*padding-top:3px;*padding-bottom:3px;}button.btn::-moz-focus-inner,input[type="submit"].btn::-moz-focus-inner{padding:0;border:0;} +button.btn.btn-large,input[type="submit"].btn.btn-large{*padding-top:7px;*padding-bottom:7px;} +button.btn.btn-small,input[type="submit"].btn.btn-small{*padding-top:3px;*padding-bottom:3px;} +button.btn.btn-mini,input[type="submit"].btn.btn-mini{*padding-top:1px;*padding-bottom:1px;} +.btn-link,.btn-link:active,.btn-link[disabled]{background-color:transparent;background-image:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;} +.btn-link{border-color:transparent;cursor:pointer;color:#0088cc;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;} +.btn-link:hover{color:#005580;text-decoration:underline;background-color:transparent;} +.btn-link[disabled]:hover{color:#333333;text-decoration:none;} +[class^="icon-"],[class*=" icon-"]{display:inline-block;width:14px;height:14px;*margin-right:.3em;line-height:14px;vertical-align:text-top;background-image:url("../img/glyphicons-halflings.png");background-position:14px 14px;background-repeat:no-repeat;margin-top:1px;} +.icon-white,.nav-pills>.active>a>[class^="icon-"],.nav-pills>.active>a>[class*=" icon-"],.nav-list>.active>a>[class^="icon-"],.nav-list>.active>a>[class*=" icon-"],.navbar-inverse .nav>.active>a>[class^="icon-"],.navbar-inverse .nav>.active>a>[class*=" icon-"],.dropdown-menu>li>a:hover>[class^="icon-"],.dropdown-menu>li>a:hover>[class*=" icon-"],.dropdown-menu>.active>a>[class^="icon-"],.dropdown-menu>.active>a>[class*=" icon-"],.dropdown-submenu:hover>a>[class^="icon-"],.dropdown-submenu:hover>a>[class*=" icon-"]{background-image:url("../img/glyphicons-halflings-white.png");} +.icon-glass{background-position:0 0;} +.icon-music{background-position:-24px 0;} +.icon-search{background-position:-48px 0;} +.icon-envelope{background-position:-72px 0;} +.icon-heart{background-position:-96px 0;} +.icon-star{background-position:-120px 0;} +.icon-star-empty{background-position:-144px 0;} +.icon-user{background-position:-168px 0;} +.icon-film{background-position:-192px 0;} +.icon-th-large{background-position:-216px 0;} +.icon-th{background-position:-240px 0;} +.icon-th-list{background-position:-264px 0;} +.icon-ok{background-position:-288px 0;} +.icon-remove{background-position:-312px 0;} +.icon-zoom-in{background-position:-336px 0;} +.icon-zoom-out{background-position:-360px 0;} +.icon-off{background-position:-384px 0;} +.icon-signal{background-position:-408px 0;} +.icon-cog{background-position:-432px 0;} +.icon-trash{background-position:-456px 0;} +.icon-home{background-position:0 -24px;} +.icon-file{background-position:-24px -24px;} +.icon-time{background-position:-48px -24px;} +.icon-road{background-position:-72px -24px;} +.icon-download-alt{background-position:-96px -24px;} +.icon-download{background-position:-120px -24px;} +.icon-upload{background-position:-144px -24px;} +.icon-inbox{background-position:-168px -24px;} +.icon-play-circle{background-position:-192px -24px;} +.icon-repeat{background-position:-216px -24px;} +.icon-refresh{background-position:-240px -24px;} +.icon-list-alt{background-position:-264px -24px;} +.icon-lock{background-position:-287px -24px;} +.icon-flag{background-position:-312px -24px;} +.icon-headphones{background-position:-336px -24px;} +.icon-volume-off{background-position:-360px -24px;} +.icon-volume-down{background-position:-384px -24px;} +.icon-volume-up{background-position:-408px -24px;} +.icon-qrcode{background-position:-432px -24px;} +.icon-barcode{background-position:-456px -24px;} +.icon-tag{background-position:0 -48px;} +.icon-tags{background-position:-25px -48px;} +.icon-book{background-position:-48px -48px;} +.icon-bookmark{background-position:-72px -48px;} +.icon-print{background-position:-96px -48px;} +.icon-camera{background-position:-120px -48px;} +.icon-font{background-position:-144px -48px;} +.icon-bold{background-position:-167px -48px;} +.icon-italic{background-position:-192px -48px;} +.icon-text-height{background-position:-216px -48px;} +.icon-text-width{background-position:-240px -48px;} +.icon-align-left{background-position:-264px -48px;} +.icon-align-center{background-position:-288px -48px;} +.icon-align-right{background-position:-312px -48px;} +.icon-align-justify{background-position:-336px -48px;} +.icon-list{background-position:-360px -48px;} +.icon-indent-left{background-position:-384px -48px;} +.icon-indent-right{background-position:-408px -48px;} +.icon-facetime-video{background-position:-432px -48px;} +.icon-picture{background-position:-456px -48px;} +.icon-pencil{background-position:0 -72px;} +.icon-map-marker{background-position:-24px -72px;} +.icon-adjust{background-position:-48px -72px;} +.icon-tint{background-position:-72px -72px;} +.icon-edit{background-position:-96px -72px;} +.icon-share{background-position:-120px -72px;} +.icon-check{background-position:-144px -72px;} +.icon-move{background-position:-168px -72px;} +.icon-step-backward{background-position:-192px -72px;} +.icon-fast-backward{background-position:-216px -72px;} +.icon-backward{background-position:-240px -72px;} +.icon-play{background-position:-264px -72px;} +.icon-pause{background-position:-288px -72px;} +.icon-stop{background-position:-312px -72px;} +.icon-forward{background-position:-336px -72px;} +.icon-fast-forward{background-position:-360px -72px;} +.icon-step-forward{background-position:-384px -72px;} +.icon-eject{background-position:-408px -72px;} +.icon-chevron-left{background-position:-432px -72px;} +.icon-chevron-right{background-position:-456px -72px;} +.icon-plus-sign{background-position:0 -96px;} +.icon-minus-sign{background-position:-24px -96px;} +.icon-remove-sign{background-position:-48px -96px;} +.icon-ok-sign{background-position:-72px -96px;} +.icon-question-sign{background-position:-96px -96px;} +.icon-info-sign{background-position:-120px -96px;} +.icon-screenshot{background-position:-144px -96px;} +.icon-remove-circle{background-position:-168px -96px;} +.icon-ok-circle{background-position:-192px -96px;} +.icon-ban-circle{background-position:-216px -96px;} +.icon-arrow-left{background-position:-240px -96px;} +.icon-arrow-right{background-position:-264px -96px;} +.icon-arrow-up{background-position:-289px -96px;} +.icon-arrow-down{background-position:-312px -96px;} +.icon-share-alt{background-position:-336px -96px;} +.icon-resize-full{background-position:-360px -96px;} +.icon-resize-small{background-position:-384px -96px;} +.icon-plus{background-position:-408px -96px;} +.icon-minus{background-position:-433px -96px;} +.icon-asterisk{background-position:-456px -96px;} +.icon-exclamation-sign{background-position:0 -120px;} +.icon-gift{background-position:-24px -120px;} +.icon-leaf{background-position:-48px -120px;} +.icon-fire{background-position:-72px -120px;} +.icon-eye-open{background-position:-96px -120px;} +.icon-eye-close{background-position:-120px -120px;} +.icon-warning-sign{background-position:-144px -120px;} +.icon-plane{background-position:-168px -120px;} +.icon-calendar{background-position:-192px -120px;} +.icon-random{background-position:-216px -120px;width:16px;} +.icon-comment{background-position:-240px -120px;} +.icon-magnet{background-position:-264px -120px;} +.icon-chevron-up{background-position:-288px -120px;} +.icon-chevron-down{background-position:-313px -119px;} +.icon-retweet{background-position:-336px -120px;} +.icon-shopping-cart{background-position:-360px -120px;} +.icon-folder-close{background-position:-384px -120px;} +.icon-folder-open{background-position:-408px -120px;width:16px;} +.icon-resize-vertical{background-position:-432px -119px;} +.icon-resize-horizontal{background-position:-456px -118px;} +.icon-hdd{background-position:0 -144px;} +.icon-bullhorn{background-position:-24px -144px;} +.icon-bell{background-position:-48px -144px;} +.icon-certificate{background-position:-72px -144px;} +.icon-thumbs-up{background-position:-96px -144px;} +.icon-thumbs-down{background-position:-120px -144px;} +.icon-hand-right{background-position:-144px -144px;} +.icon-hand-left{background-position:-168px -144px;} +.icon-hand-up{background-position:-192px -144px;} +.icon-hand-down{background-position:-216px -144px;} +.icon-circle-arrow-right{background-position:-240px -144px;} +.icon-circle-arrow-left{background-position:-264px -144px;} +.icon-circle-arrow-up{background-position:-288px -144px;} +.icon-circle-arrow-down{background-position:-312px -144px;} +.icon-globe{background-position:-336px -144px;} +.icon-wrench{background-position:-360px -144px;} +.icon-tasks{background-position:-384px -144px;} +.icon-filter{background-position:-408px -144px;} +.icon-briefcase{background-position:-432px -144px;} +.icon-fullscreen{background-position:-456px -144px;} +.btn-group{position:relative;display:inline-block;*display:inline;*zoom:1;font-size:0;vertical-align:middle;white-space:nowrap;*margin-left:.3em;}.btn-group:first-child{*margin-left:0;} +.btn-group+.btn-group{margin-left:5px;} +.btn-toolbar{font-size:0;margin-top:10px;margin-bottom:10px;}.btn-toolbar>.btn+.btn,.btn-toolbar>.btn-group+.btn,.btn-toolbar>.btn+.btn-group{margin-left:5px;} +.btn-group>.btn{position:relative;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;} +.btn-group>.btn+.btn{margin-left:-1px;} +.btn-group>.btn,.btn-group>.dropdown-menu,.btn-group>.popover{font-size:12px;} +.btn-group>.btn-mini{font-size:9px;} +.btn-group>.btn-small{font-size:10.2px;} +.btn-group>.btn-large{font-size:15px;} +.btn-group>.btn:first-child{margin-left:0;-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px;border-top-left-radius:4px;-webkit-border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px;border-bottom-left-radius:4px;} +.btn-group>.btn:last-child,.btn-group>.dropdown-toggle{-webkit-border-top-right-radius:4px;-moz-border-radius-topright:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px;border-bottom-right-radius:4px;} +.btn-group>.btn.large:first-child{margin-left:0;-webkit-border-top-left-radius:6px;-moz-border-radius-topleft:6px;border-top-left-radius:6px;-webkit-border-bottom-left-radius:6px;-moz-border-radius-bottomleft:6px;border-bottom-left-radius:6px;} +.btn-group>.btn.large:last-child,.btn-group>.large.dropdown-toggle{-webkit-border-top-right-radius:6px;-moz-border-radius-topright:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;-moz-border-radius-bottomright:6px;border-bottom-right-radius:6px;} +.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active{z-index:2;} +.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0;} +.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px;-webkit-box-shadow:inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);box-shadow:inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);*padding-top:5px;*padding-bottom:5px;} +.btn-group>.btn-mini+.dropdown-toggle{padding-left:5px;padding-right:5px;*padding-top:2px;*padding-bottom:2px;} +.btn-group>.btn-small+.dropdown-toggle{*padding-top:5px;*padding-bottom:4px;} +.btn-group>.btn-large+.dropdown-toggle{padding-left:12px;padding-right:12px;*padding-top:7px;*padding-bottom:7px;} +.btn-group.open .dropdown-toggle{background-image:none;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);} +.btn-group.open .btn.dropdown-toggle{background-color:#e6e6e6;} +.btn-group.open .btn-primary.dropdown-toggle{background-color:#0044cc;} +.btn-group.open .btn-warning.dropdown-toggle{background-color:#f89406;} +.btn-group.open .btn-danger.dropdown-toggle{background-color:#bd362f;} +.btn-group.open .btn-success.dropdown-toggle{background-color:#51a351;} +.btn-group.open .btn-info.dropdown-toggle{background-color:#2f96b4;} +.btn-group.open .btn-inverse.dropdown-toggle{background-color:#222222;} +.btn .caret{margin-top:8px;margin-left:0;} +.btn-mini .caret,.btn-small .caret,.btn-large .caret{margin-top:6px;} +.btn-large .caret{border-left-width:5px;border-right-width:5px;border-top-width:5px;} +.dropup .btn-large .caret{border-bottom-width:5px;} +.btn-primary .caret,.btn-warning .caret,.btn-danger .caret,.btn-info .caret,.btn-success .caret,.btn-inverse .caret{border-top-color:#ffffff;border-bottom-color:#ffffff;} +.btn-group-vertical{display:inline-block;*display:inline;*zoom:1;} +.btn-group-vertical>.btn{display:block;float:none;max-width:100%;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;} +.btn-group-vertical>.btn+.btn{margin-left:0;margin-top:-1px;} +.btn-group-vertical>.btn:first-child{-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0;} +.btn-group-vertical>.btn:last-child{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px;} +.btn-group-vertical>.btn-large:first-child{-webkit-border-radius:6px 6px 0 0;-moz-border-radius:6px 6px 0 0;border-radius:6px 6px 0 0;} +.btn-group-vertical>.btn-large:last-child{-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;} +.nav{margin-left:0;margin-bottom:20px;list-style:none;} +.nav>li>a{display:block;} +.nav>li>a:hover{text-decoration:none;background-color:#eeeeee;} +.nav>li>a>img{max-width:none;} +.nav>.pull-right{float:right;} +.nav-header{display:block;padding:3px 15px;font-size:11px;font-weight:bold;line-height:20px;color:#999999;text-shadow:0 1px 0 rgba(255, 255, 255, 0.5);text-transform:uppercase;} +.nav li+.nav-header{margin-top:9px;} +.nav-list{padding-left:15px;padding-right:15px;margin-bottom:0;} +.nav-list>li>a,.nav-list .nav-header{margin-left:-15px;margin-right:-15px;text-shadow:0 1px 0 rgba(255, 255, 255, 0.5);} +.nav-list>li>a{padding:3px 15px;} +.nav-list>.active>a,.nav-list>.active>a:hover{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.2);background-color:#0088cc;} +.nav-list [class^="icon-"],.nav-list [class*=" icon-"]{margin-right:2px;} +.nav-list .divider{*width:100%;height:1px;margin:9px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #ffffff;} +.nav-tabs,.nav-pills{*zoom:1;}.nav-tabs:before,.nav-pills:before,.nav-tabs:after,.nav-pills:after{display:table;content:"";line-height:0;} +.nav-tabs:after,.nav-pills:after{clear:both;} +.nav-tabs>li,.nav-pills>li{float:left;} +.nav-tabs>li>a,.nav-pills>li>a{padding-right:12px;padding-left:12px;margin-right:2px;line-height:14px;} +.nav-tabs{border-bottom:1px solid #ddd;} +.nav-tabs>li{margin-bottom:-1px;} +.nav-tabs>li>a{padding-top:8px;padding-bottom:8px;line-height:20px;border:1px solid transparent;-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0;}.nav-tabs>li>a:hover{border-color:#eeeeee #eeeeee #dddddd;} +.nav-tabs>.active>a,.nav-tabs>.active>a:hover{color:#555555;background-color:#ffffff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default;} +.nav-pills>li>a{padding-top:8px;padding-bottom:8px;margin-top:2px;margin-bottom:2px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;} +.nav-pills>.active>a,.nav-pills>.active>a:hover{color:#ffffff;background-color:#0088cc;} +.nav-stacked>li{float:none;} +.nav-stacked>li>a{margin-right:0;} +.nav-tabs.nav-stacked{border-bottom:0;} +.nav-tabs.nav-stacked>li>a{border:1px solid #ddd;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;} +.nav-tabs.nav-stacked>li:first-child>a{-webkit-border-top-right-radius:4px;-moz-border-radius-topright:4px;border-top-right-radius:4px;-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px;border-top-left-radius:4px;} +.nav-tabs.nav-stacked>li:last-child>a{-webkit-border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px;border-bottom-right-radius:4px;-webkit-border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px;border-bottom-left-radius:4px;} +.nav-tabs.nav-stacked>li>a:hover{border-color:#ddd;z-index:2;} +.nav-pills.nav-stacked>li>a{margin-bottom:3px;} +.nav-pills.nav-stacked>li:last-child>a{margin-bottom:1px;} +.nav-tabs .dropdown-menu{-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;} +.nav-pills .dropdown-menu{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;} +.nav .dropdown-toggle .caret{border-top-color:#0088cc;border-bottom-color:#0088cc;margin-top:6px;} +.nav .dropdown-toggle:hover .caret{border-top-color:#005580;border-bottom-color:#005580;} +.nav-tabs .dropdown-toggle .caret{margin-top:8px;} +.nav .active .dropdown-toggle .caret{border-top-color:#fff;border-bottom-color:#fff;} +.nav-tabs .active .dropdown-toggle .caret{border-top-color:#555555;border-bottom-color:#555555;} +.nav>.dropdown.active>a:hover{cursor:pointer;} +.nav-tabs .open .dropdown-toggle,.nav-pills .open .dropdown-toggle,.nav>li.dropdown.open.active>a:hover{color:#ffffff;background-color:#999999;border-color:#999999;} +.nav li.dropdown.open .caret,.nav li.dropdown.open.active .caret,.nav li.dropdown.open a:hover .caret{border-top-color:#ffffff;border-bottom-color:#ffffff;opacity:1;filter:alpha(opacity=100);} +.tabs-stacked .open>a:hover{border-color:#999999;} +.tabbable{*zoom:1;}.tabbable:before,.tabbable:after{display:table;content:"";line-height:0;} +.tabbable:after{clear:both;} +.tab-content{overflow:auto;} +.tabs-below>.nav-tabs,.tabs-right>.nav-tabs,.tabs-left>.nav-tabs{border-bottom:0;} +.tab-content>.tab-pane,.pill-content>.pill-pane{display:none;} +.tab-content>.active,.pill-content>.active{display:block;} +.tabs-below>.nav-tabs{border-top:1px solid #ddd;} +.tabs-below>.nav-tabs>li{margin-top:-1px;margin-bottom:0;} +.tabs-below>.nav-tabs>li>a{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px;}.tabs-below>.nav-tabs>li>a:hover{border-bottom-color:transparent;border-top-color:#ddd;} +.tabs-below>.nav-tabs>.active>a,.tabs-below>.nav-tabs>.active>a:hover{border-color:transparent #ddd #ddd #ddd;} +.tabs-left>.nav-tabs>li,.tabs-right>.nav-tabs>li{float:none;} +.tabs-left>.nav-tabs>li>a,.tabs-right>.nav-tabs>li>a{min-width:74px;margin-right:0;margin-bottom:3px;} +.tabs-left>.nav-tabs{float:left;margin-right:19px;border-right:1px solid #ddd;} +.tabs-left>.nav-tabs>li>a{margin-right:-1px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px;} +.tabs-left>.nav-tabs>li>a:hover{border-color:#eeeeee #dddddd #eeeeee #eeeeee;} +.tabs-left>.nav-tabs .active>a,.tabs-left>.nav-tabs .active>a:hover{border-color:#ddd transparent #ddd #ddd;*border-right-color:#ffffff;} +.tabs-right>.nav-tabs{float:right;margin-left:19px;border-left:1px solid #ddd;} +.tabs-right>.nav-tabs>li>a{margin-left:-1px;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0;} +.tabs-right>.nav-tabs>li>a:hover{border-color:#eeeeee #eeeeee #eeeeee #dddddd;} +.tabs-right>.nav-tabs .active>a,.tabs-right>.nav-tabs .active>a:hover{border-color:#ddd #ddd #ddd transparent;*border-left-color:#ffffff;} +.nav>.disabled>a{color:#999999;} +.nav>.disabled>a:hover{text-decoration:none;background-color:transparent;cursor:default;} +.navbar{overflow:visible;margin-bottom:20px;*position:relative;*z-index:2;} +.navbar-inner{min-height:40px;padding-left:20px;padding-right:20px;background-color:#fafafa;background-image:-moz-linear-gradient(top, #ffffff, #f2f2f2);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f2f2f2));background-image:-webkit-linear-gradient(top, #ffffff, #f2f2f2);background-image:-o-linear-gradient(top, #ffffff, #f2f2f2);background-image:linear-gradient(to bottom, #ffffff, #f2f2f2);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff2f2f2', GradientType=0);border:1px solid #d4d4d4;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 4px rgba(0, 0, 0, 0.065);-moz-box-shadow:0 1px 4px rgba(0, 0, 0, 0.065);box-shadow:0 1px 4px rgba(0, 0, 0, 0.065);*zoom:1;}.navbar-inner:before,.navbar-inner:after{display:table;content:"";line-height:0;} +.navbar-inner:after{clear:both;} +.navbar .container{width:auto;} +.nav-collapse.collapse{height:auto;overflow:visible;} +.navbar .brand{float:left;display:block;padding:10px 20px 10px;margin-left:-20px;font-size:20px;font-weight:200;color:#777777;text-shadow:0 1px 0 #ffffff;}.navbar .brand:hover{text-decoration:none;} +.navbar-text{margin-bottom:0;line-height:40px;color:#777777;} +.navbar-link{color:#777777;}.navbar-link:hover{color:#333333;} +.navbar .divider-vertical{height:40px;margin:0 9px;border-left:1px solid #f2f2f2;border-right:1px solid #ffffff;} +.navbar .btn,.navbar .btn-group{margin-top:5px;} +.navbar .btn-group .btn,.navbar .input-prepend .btn,.navbar .input-append .btn{margin-top:0;} +.navbar-form{margin-bottom:0;*zoom:1;}.navbar-form:before,.navbar-form:after{display:table;content:"";line-height:0;} +.navbar-form:after{clear:both;} +.navbar-form input,.navbar-form select,.navbar-form .radio,.navbar-form .checkbox{margin-top:5px;} +.navbar-form input,.navbar-form select,.navbar-form .btn{display:inline-block;margin-bottom:0;} +.navbar-form input[type="image"],.navbar-form input[type="checkbox"],.navbar-form input[type="radio"]{margin-top:3px;} +.navbar-form .input-append,.navbar-form .input-prepend{margin-top:5px;white-space:nowrap;}.navbar-form .input-append input,.navbar-form .input-prepend input{margin-top:0;} +.navbar-search{position:relative;float:left;margin-top:5px;margin-bottom:0;}.navbar-search .search-query{margin-bottom:0;padding:4px 14px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;font-weight:normal;line-height:1;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px;} +.navbar-static-top{position:static;margin-bottom:0;}.navbar-static-top .navbar-inner{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;} +.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030;margin-bottom:0;} +.navbar-fixed-top .navbar-inner,.navbar-static-top .navbar-inner{border-width:0 0 1px;} +.navbar-fixed-bottom .navbar-inner{border-width:1px 0 0;} +.navbar-fixed-top .navbar-inner,.navbar-fixed-bottom .navbar-inner{padding-left:0;padding-right:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;} +.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px;} +.navbar-fixed-top{top:0;} +.navbar-fixed-top .navbar-inner,.navbar-static-top .navbar-inner{-webkit-box-shadow:0 1px 10px rgba(0,0,0,.1);-moz-box-shadow:0 1px 10px rgba(0,0,0,.1);box-shadow:0 1px 10px rgba(0,0,0,.1);} +.navbar-fixed-bottom{bottom:0;}.navbar-fixed-bottom .navbar-inner{-webkit-box-shadow:0 -1px 10px rgba(0,0,0,.1);-moz-box-shadow:0 -1px 10px rgba(0,0,0,.1);box-shadow:0 -1px 10px rgba(0,0,0,.1);} +.navbar .nav{position:relative;left:0;display:block;float:left;margin:0 10px 0 0;} +.navbar .nav.pull-right{float:right;margin-right:0;} +.navbar .nav>li{float:left;} +.navbar .nav>li>a{float:none;padding:10px 15px 10px;color:#777777;text-decoration:none;text-shadow:0 1px 0 #ffffff;} +.navbar .nav .dropdown-toggle .caret{margin-top:8px;} +.navbar .nav>li>a:focus,.navbar .nav>li>a:hover{background-color:transparent;color:#333333;text-decoration:none;} +.navbar .nav>.active>a,.navbar .nav>.active>a:hover,.navbar .nav>.active>a:focus{color:#555555;text-decoration:none;background-color:#e5e5e5;-webkit-box-shadow:inset 0 3px 8px rgba(0, 0, 0, 0.125);-moz-box-shadow:inset 0 3px 8px rgba(0, 0, 0, 0.125);box-shadow:inset 0 3px 8px rgba(0, 0, 0, 0.125);} +.navbar .btn-navbar{display:none;float:right;padding:7px 10px;margin-left:5px;margin-right:5px;color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#ededed;background-image:-moz-linear-gradient(top, #f2f2f2, #e5e5e5);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#f2f2f2), to(#e5e5e5));background-image:-webkit-linear-gradient(top, #f2f2f2, #e5e5e5);background-image:-o-linear-gradient(top, #f2f2f2, #e5e5e5);background-image:linear-gradient(to bottom, #f2f2f2, #e5e5e5);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2f2f2', endColorstr='#ffe5e5e5', GradientType=0);border-color:#e5e5e5 #e5e5e5 #bfbfbf;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#e5e5e5;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075);}.navbar .btn-navbar:hover,.navbar .btn-navbar:active,.navbar .btn-navbar.active,.navbar .btn-navbar.disabled,.navbar .btn-navbar[disabled]{color:#ffffff;background-color:#e5e5e5;*background-color:#d9d9d9;} +.navbar .btn-navbar:active,.navbar .btn-navbar.active{background-color:#cccccc \9;} +.navbar .btn-navbar .icon-bar{display:block;width:18px;height:2px;background-color:#f5f5f5;-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px;-webkit-box-shadow:0 1px 0 rgba(0, 0, 0, 0.25);-moz-box-shadow:0 1px 0 rgba(0, 0, 0, 0.25);box-shadow:0 1px 0 rgba(0, 0, 0, 0.25);} +.btn-navbar .icon-bar+.icon-bar{margin-top:3px;} +.navbar .nav>li>.dropdown-menu:before{content:'';display:inline-block;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-bottom-color:rgba(0, 0, 0, 0.2);position:absolute;top:-7px;left:9px;} +.navbar .nav>li>.dropdown-menu:after{content:'';display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #ffffff;position:absolute;top:-6px;left:10px;} +.navbar-fixed-bottom .nav>li>.dropdown-menu:before{border-top:7px solid #ccc;border-top-color:rgba(0, 0, 0, 0.2);border-bottom:0;bottom:-7px;top:auto;} +.navbar-fixed-bottom .nav>li>.dropdown-menu:after{border-top:6px solid #ffffff;border-bottom:0;bottom:-6px;top:auto;} +.navbar .nav li.dropdown>a:hover .caret{border-top-color:#555555;border-bottom-color:#555555;} +.navbar .nav li.dropdown.open>.dropdown-toggle,.navbar .nav li.dropdown.active>.dropdown-toggle,.navbar .nav li.dropdown.open.active>.dropdown-toggle{background-color:#e5e5e5;color:#555555;} +.navbar .nav li.dropdown>.dropdown-toggle .caret{border-top-color:#777777;border-bottom-color:#777777;} +.navbar .nav li.dropdown.open>.dropdown-toggle .caret,.navbar .nav li.dropdown.active>.dropdown-toggle .caret,.navbar .nav li.dropdown.open.active>.dropdown-toggle .caret{border-top-color:#555555;border-bottom-color:#555555;} +.navbar .pull-right>li>.dropdown-menu,.navbar .nav>li>.dropdown-menu.pull-right{left:auto;right:0;}.navbar .pull-right>li>.dropdown-menu:before,.navbar .nav>li>.dropdown-menu.pull-right:before{left:auto;right:12px;} +.navbar .pull-right>li>.dropdown-menu:after,.navbar .nav>li>.dropdown-menu.pull-right:after{left:auto;right:13px;} +.navbar .pull-right>li>.dropdown-menu .dropdown-menu,.navbar .nav>li>.dropdown-menu.pull-right .dropdown-menu{left:auto;right:100%;margin-left:0;margin-right:-1px;-webkit-border-radius:6px 0 6px 6px;-moz-border-radius:6px 0 6px 6px;border-radius:6px 0 6px 6px;} +.navbar-inverse .navbar-inner{background-color:#1b1b1b;background-image:-moz-linear-gradient(top, #222222, #111111);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#222222), to(#111111));background-image:-webkit-linear-gradient(top, #222222, #111111);background-image:-o-linear-gradient(top, #222222, #111111);background-image:linear-gradient(to bottom, #222222, #111111);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff111111', GradientType=0);border-color:#252525;} +.navbar-inverse .brand,.navbar-inverse .nav>li>a{color:#999999;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);}.navbar-inverse .brand:hover,.navbar-inverse .nav>li>a:hover{color:#ffffff;} +.navbar-inverse .brand{color:#999999;} +.navbar-inverse .navbar-text{color:#999999;} +.navbar-inverse .nav>li>a:focus,.navbar-inverse .nav>li>a:hover{background-color:transparent;color:#ffffff;} +.navbar-inverse .nav .active>a,.navbar-inverse .nav .active>a:hover,.navbar-inverse .nav .active>a:focus{color:#ffffff;background-color:#111111;} +.navbar-inverse .navbar-link{color:#999999;}.navbar-inverse .navbar-link:hover{color:#ffffff;} +.navbar-inverse .divider-vertical{border-left-color:#111111;border-right-color:#222222;} +.navbar-inverse .nav li.dropdown.open>.dropdown-toggle,.navbar-inverse .nav li.dropdown.active>.dropdown-toggle,.navbar-inverse .nav li.dropdown.open.active>.dropdown-toggle{background-color:#111111;color:#ffffff;} +.navbar-inverse .nav li.dropdown>a:hover .caret{border-top-color:#ffffff;border-bottom-color:#ffffff;} +.navbar-inverse .nav li.dropdown>.dropdown-toggle .caret{border-top-color:#999999;border-bottom-color:#999999;} +.navbar-inverse .nav li.dropdown.open>.dropdown-toggle .caret,.navbar-inverse .nav li.dropdown.active>.dropdown-toggle .caret,.navbar-inverse .nav li.dropdown.open.active>.dropdown-toggle .caret{border-top-color:#ffffff;border-bottom-color:#ffffff;} +.navbar-inverse .navbar-search .search-query{color:#ffffff;background-color:#515151;border-color:#111111;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15);box-shadow:inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15);-webkit-transition:none;-moz-transition:none;-o-transition:none;transition:none;}.navbar-inverse .navbar-search .search-query:-moz-placeholder{color:#cccccc;} +.navbar-inverse .navbar-search .search-query:-ms-input-placeholder{color:#cccccc;} +.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder{color:#cccccc;} +.navbar-inverse .navbar-search .search-query:focus,.navbar-inverse .navbar-search .search-query.focused{padding:5px 15px;color:#333333;text-shadow:0 1px 0 #ffffff;background-color:#ffffff;border:0;-webkit-box-shadow:0 0 3px rgba(0, 0, 0, 0.15);-moz-box-shadow:0 0 3px rgba(0, 0, 0, 0.15);box-shadow:0 0 3px rgba(0, 0, 0, 0.15);outline:0;} +.navbar-inverse .btn-navbar{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#0e0e0e;background-image:-moz-linear-gradient(top, #151515, #040404);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#151515), to(#040404));background-image:-webkit-linear-gradient(top, #151515, #040404);background-image:-o-linear-gradient(top, #151515, #040404);background-image:linear-gradient(to bottom, #151515, #040404);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff151515', endColorstr='#ff040404', GradientType=0);border-color:#040404 #040404 #000000;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#040404;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.navbar-inverse .btn-navbar:hover,.navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active,.navbar-inverse .btn-navbar.disabled,.navbar-inverse .btn-navbar[disabled]{color:#ffffff;background-color:#040404;*background-color:#000000;} +.navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active{background-color:#000000 \9;} +.breadcrumb{padding:8px 15px;margin:0 0 20px;list-style:none;background-color:#f5f5f5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}.breadcrumb>li{display:inline-block;*display:inline;*zoom:1;text-shadow:0 1px 0 #ffffff;}.breadcrumb>li>.divider{padding:0 5px;color:#ccc;} +.breadcrumb>.active{color:#999999;} +.pagination{margin:20px 0;} +.pagination ul{display:inline-block;*display:inline;*zoom:1;margin-left:0;margin-bottom:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:0 1px 2px rgba(0, 0, 0, 0.05);} +.pagination ul>li{display:inline;} +.pagination ul>li>a,.pagination ul>li>span{float:left;padding:4px 12px;line-height:20px;text-decoration:none;background-color:#ffffff;border:1px solid #dddddd;border-left-width:0;} +.pagination ul>li>a:hover,.pagination ul>.active>a,.pagination ul>.active>span{background-color:#f5f5f5;} +.pagination ul>.active>a,.pagination ul>.active>span{color:#999999;cursor:default;} +.pagination ul>.disabled>span,.pagination ul>.disabled>a,.pagination ul>.disabled>a:hover{color:#999999;background-color:transparent;cursor:default;} +.pagination ul>li:first-child>a,.pagination ul>li:first-child>span{border-left-width:1px;-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px;border-top-left-radius:4px;-webkit-border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px;border-bottom-left-radius:4px;} +.pagination ul>li:last-child>a,.pagination ul>li:last-child>span{-webkit-border-top-right-radius:4px;-moz-border-radius-topright:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px;border-bottom-right-radius:4px;} +.pagination-centered{text-align:center;} +.pagination-right{text-align:right;} +.pagination-large ul>li>a,.pagination-large ul>li>span{padding:11px 19px;font-size:15px;} +.pagination-large ul>li:first-child>a,.pagination-large ul>li:first-child>span{-webkit-border-top-left-radius:6px;-moz-border-radius-topleft:6px;border-top-left-radius:6px;-webkit-border-bottom-left-radius:6px;-moz-border-radius-bottomleft:6px;border-bottom-left-radius:6px;} +.pagination-large ul>li:last-child>a,.pagination-large ul>li:last-child>span{-webkit-border-top-right-radius:6px;-moz-border-radius-topright:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;-moz-border-radius-bottomright:6px;border-bottom-right-radius:6px;} +.pagination-mini ul>li:first-child>a,.pagination-small ul>li:first-child>a,.pagination-mini ul>li:first-child>span,.pagination-small ul>li:first-child>span{-webkit-border-top-left-radius:3px;-moz-border-radius-topleft:3px;border-top-left-radius:3px;-webkit-border-bottom-left-radius:3px;-moz-border-radius-bottomleft:3px;border-bottom-left-radius:3px;} +.pagination-mini ul>li:last-child>a,.pagination-small ul>li:last-child>a,.pagination-mini ul>li:last-child>span,.pagination-small ul>li:last-child>span{-webkit-border-top-right-radius:3px;-moz-border-radius-topright:3px;border-top-right-radius:3px;-webkit-border-bottom-right-radius:3px;-moz-border-radius-bottomright:3px;border-bottom-right-radius:3px;} +.pagination-small ul>li>a,.pagination-small ul>li>span{padding:2px 10px;font-size:10.2px;} +.pagination-mini ul>li>a,.pagination-mini ul>li>span{padding:0 6px;font-size:9px;} +.pager{margin:20px 0;list-style:none;text-align:center;*zoom:1;}.pager:before,.pager:after{display:table;content:"";line-height:0;} +.pager:after{clear:both;} +.pager li{display:inline;} +.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px;} +.pager li>a:hover{text-decoration:none;background-color:#f5f5f5;} +.pager .next>a,.pager .next>span{float:right;} +.pager .previous>a,.pager .previous>span{float:left;} +.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>span{color:#999999;background-color:#fff;cursor:default;} +.thumbnails{margin-left:-20px;list-style:none;*zoom:1;}.thumbnails:before,.thumbnails:after{display:table;content:"";line-height:0;} +.thumbnails:after{clear:both;} +.row-fluid .thumbnails{margin-left:0;} +.thumbnails>li{float:left;margin-bottom:20px;margin-left:20px;} +.thumbnail{display:block;padding:4px;line-height:20px;border:1px solid #ddd;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 3px rgba(0, 0, 0, 0.055);-moz-box-shadow:0 1px 3px rgba(0, 0, 0, 0.055);box-shadow:0 1px 3px rgba(0, 0, 0, 0.055);-webkit-transition:all 0.2s ease-in-out;-moz-transition:all 0.2s ease-in-out;-o-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out;} +a.thumbnail:hover{border-color:#0088cc;-webkit-box-shadow:0 1px 4px rgba(0, 105, 214, 0.25);-moz-box-shadow:0 1px 4px rgba(0, 105, 214, 0.25);box-shadow:0 1px 4px rgba(0, 105, 214, 0.25);} +.thumbnail>img{display:block;max-width:100%;margin-left:auto;margin-right:auto;} +.thumbnail .caption{padding:9px;color:#555555;} +.alert{padding:8px 35px 8px 14px;margin-bottom:20px;text-shadow:0 1px 0 rgba(255, 255, 255, 0.5);background-color:#fcf8e3;border:1px solid #fbeed5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;} +.alert,.alert h4{color:#c09853;} +.alert h4{margin:0;} +.alert .close{position:relative;top:-2px;right:-21px;line-height:20px;} +.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#468847;} +.alert-success h4{color:#468847;} +.alert-danger,.alert-error{background-color:#f2dede;border-color:#eed3d7;color:#b94a48;} +.alert-danger h4,.alert-error h4{color:#b94a48;} +.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#3a87ad;} +.alert-info h4{color:#3a87ad;} +.alert-block{padding-top:14px;padding-bottom:14px;} +.alert-block>p,.alert-block>ul{margin-bottom:0;} +.alert-block p+p{margin-top:5px;} +@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0;} to{background-position:0 0;}}@-moz-keyframes progress-bar-stripes{from{background-position:40px 0;} to{background-position:0 0;}}@-ms-keyframes progress-bar-stripes{from{background-position:40px 0;} to{background-position:0 0;}}@-o-keyframes progress-bar-stripes{from{background-position:0 0;} to{background-position:40px 0;}}@keyframes progress-bar-stripes{from{background-position:40px 0;} to{background-position:0 0;}}.progress{overflow:hidden;height:20px;margin-bottom:20px;background-color:#f7f7f7;background-image:-moz-linear-gradient(top, #f5f5f5, #f9f9f9);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9));background-image:-webkit-linear-gradient(top, #f5f5f5, #f9f9f9);background-image:-o-linear-gradient(top, #f5f5f5, #f9f9f9);background-image:linear-gradient(to bottom, #f5f5f5, #f9f9f9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0);-webkit-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1);-moz-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1);box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;} +.progress .bar{width:0%;height:100%;color:#ffffff;float:left;font-size:12px;text-align:center;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#0e90d2;background-image:-moz-linear-gradient(top, #149bdf, #0480be);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be));background-image:-webkit-linear-gradient(top, #149bdf, #0480be);background-image:-o-linear-gradient(top, #149bdf, #0480be);background-image:linear-gradient(to bottom, #149bdf, #0480be);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0);-webkit-box-shadow:inset 0 -1px 0 rgba(0, 0, 0, 0.15);-moz-box-shadow:inset 0 -1px 0 rgba(0, 0, 0, 0.15);box-shadow:inset 0 -1px 0 rgba(0, 0, 0, 0.15);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:width 0.6s ease;-moz-transition:width 0.6s ease;-o-transition:width 0.6s ease;transition:width 0.6s ease;} +.progress .bar+.bar{-webkit-box-shadow:inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15);-moz-box-shadow:inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15);} +.progress-striped .bar{background-color:#149bdf;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);-webkit-background-size:40px 40px;-moz-background-size:40px 40px;-o-background-size:40px 40px;background-size:40px 40px;} +.progress.active .bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-moz-animation:progress-bar-stripes 2s linear infinite;-ms-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite;} +.progress-danger .bar,.progress .bar-danger{background-color:#dd514c;background-image:-moz-linear-gradient(top, #ee5f5b, #c43c35);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35));background-image:-webkit-linear-gradient(top, #ee5f5b, #c43c35);background-image:-o-linear-gradient(top, #ee5f5b, #c43c35);background-image:linear-gradient(to bottom, #ee5f5b, #c43c35);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0);} +.progress-danger.progress-striped .bar,.progress-striped .bar-danger{background-color:#ee5f5b;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);} +.progress-success .bar,.progress .bar-success{background-color:#5eb95e;background-image:-moz-linear-gradient(top, #62c462, #57a957);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957));background-image:-webkit-linear-gradient(top, #62c462, #57a957);background-image:-o-linear-gradient(top, #62c462, #57a957);background-image:linear-gradient(to bottom, #62c462, #57a957);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0);} +.progress-success.progress-striped .bar,.progress-striped .bar-success{background-color:#62c462;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);} +.progress-info .bar,.progress .bar-info{background-color:#4bb1cf;background-image:-moz-linear-gradient(top, #5bc0de, #339bb9);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9));background-image:-webkit-linear-gradient(top, #5bc0de, #339bb9);background-image:-o-linear-gradient(top, #5bc0de, #339bb9);background-image:linear-gradient(to bottom, #5bc0de, #339bb9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0);} +.progress-info.progress-striped .bar,.progress-striped .bar-info{background-color:#5bc0de;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);} +.progress-warning .bar,.progress .bar-warning{background-color:#faa732;background-image:-moz-linear-gradient(top, #fbb450, #f89406);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));background-image:-webkit-linear-gradient(top, #fbb450, #f89406);background-image:-o-linear-gradient(top, #fbb450, #f89406);background-image:linear-gradient(to bottom, #fbb450, #f89406);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0);} +.progress-warning.progress-striped .bar,.progress-striped .bar-warning{background-color:#fbb450;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);} +.hero-unit{padding:60px;margin-bottom:30px;font-size:18px;font-weight:200;line-height:30px;color:inherit;background-color:#eeeeee;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;}.hero-unit h1{margin-bottom:0;font-size:60px;line-height:1;color:inherit;letter-spacing:-1px;} +.hero-unit li{line-height:30px;} +.media,.media-body{overflow:hidden;*overflow:visible;zoom:1;} +.media,.media .media{margin-top:15px;} +.media:first-child{margin-top:0;} +.media-object{display:block;} +.media-heading{margin:0 0 5px;} +.media .pull-left{margin-right:10px;} +.media .pull-right{margin-left:10px;} +.media-list{margin-left:0;list-style:none;} +.tooltip{position:absolute;z-index:1030;display:block;visibility:visible;padding:5px;font-size:11px;opacity:0;filter:alpha(opacity=0);}.tooltip.in{opacity:0.8;filter:alpha(opacity=80);} +.tooltip.top{margin-top:-3px;} +.tooltip.right{margin-left:3px;} +.tooltip.bottom{margin-top:3px;} +.tooltip.left{margin-left:-3px;} +.tooltip-inner{max-width:200px;padding:3px 8px;color:#ffffff;text-align:center;text-decoration:none;background-color:#000000;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;} +.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid;} +.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000000;} +.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000000;} +.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000000;} +.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000000;} +.popover{position:absolute;top:0;left:0;z-index:1010;display:none;width:236px;padding:1px;text-align:left;background-color:#ffffff;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0, 0, 0, 0.2);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);-moz-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);white-space:normal;}.popover.top{margin-top:-10px;} +.popover.right{margin-left:10px;} +.popover.bottom{margin-top:10px;} +.popover.left{margin-left:-10px;} +.popover-title{margin:0;padding:8px 14px;font-size:14px;font-weight:normal;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0;} +.popover-content{padding:9px 14px;} +.popover .arrow,.popover .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid;} +.popover .arrow{border-width:11px;} +.popover .arrow:after{border-width:10px;content:"";} +.popover.top .arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999;border-top-color:rgba(0, 0, 0, 0.25);bottom:-11px;}.popover.top .arrow:after{bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#ffffff;} +.popover.right .arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999;border-right-color:rgba(0, 0, 0, 0.25);}.popover.right .arrow:after{left:1px;bottom:-10px;border-left-width:0;border-right-color:#ffffff;} +.popover.bottom .arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0, 0, 0, 0.25);top:-11px;}.popover.bottom .arrow:after{top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#ffffff;} +.popover.left .arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0, 0, 0, 0.25);}.popover.left .arrow:after{right:1px;border-right-width:0;border-left-color:#ffffff;bottom:-10px;} +.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000000;}.modal-backdrop.fade{opacity:0;} +.modal-backdrop,.modal-backdrop.fade.in{opacity:0.8;filter:alpha(opacity=80);} +.modal{position:fixed;top:10%;left:50%;z-index:1050;width:560px;margin-left:-280px;background-color:#ffffff;border:1px solid #999;border:1px solid rgba(0, 0, 0, 0.3);*border:1px solid #999;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);-moz-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box;outline:none;}.modal.fade{-webkit-transition:opacity .3s linear, top .3s ease-out;-moz-transition:opacity .3s linear, top .3s ease-out;-o-transition:opacity .3s linear, top .3s ease-out;transition:opacity .3s linear, top .3s ease-out;top:-25%;} +.modal.fade.in{top:10%;} +.modal-header{padding:9px 15px;border-bottom:1px solid #eee;}.modal-header .close{margin-top:2px;} +.modal-header h3{margin:0;line-height:30px;} +.modal-body{position:relative;overflow-y:auto;max-height:400px;padding:15px;} +.modal-form{margin-bottom:0;} +.modal-footer{padding:14px 15px 15px;margin-bottom:0;text-align:right;background-color:#f5f5f5;border-top:1px solid #ddd;-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;-webkit-box-shadow:inset 0 1px 0 #ffffff;-moz-box-shadow:inset 0 1px 0 #ffffff;box-shadow:inset 0 1px 0 #ffffff;*zoom:1;}.modal-footer:before,.modal-footer:after{display:table;content:"";line-height:0;} +.modal-footer:after{clear:both;} +.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0;} +.modal-footer .btn-group .btn+.btn{margin-left:-1px;} +.modal-footer .btn-block+.btn-block{margin-left:0;} +.dropup,.dropdown{position:relative;} +.dropdown-toggle{*margin-bottom:-3px;} +.dropdown-toggle:active,.open .dropdown-toggle{outline:0;} +.caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #000000;border-right:4px solid transparent;border-left:4px solid transparent;content:"";} +.dropdown .caret{margin-top:8px;margin-left:2px;} +.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;background-color:#ffffff;border:1px solid #ccc;border:1px solid rgba(0, 0, 0, 0.2);*border-right-width:2px;*border-bottom-width:2px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);-moz-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;}.dropdown-menu.pull-right{right:0;left:auto;} +.dropdown-menu .divider{*width:100%;height:1px;margin:9px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #ffffff;} +.dropdown-menu li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:20px;color:#333333;white-space:nowrap;} +.dropdown-menu li>a:hover,.dropdown-menu li>a:focus,.dropdown-submenu:hover>a{text-decoration:none;color:#ffffff;background-color:#0081c2;background-image:-moz-linear-gradient(top, #0088cc, #0077b3);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3));background-image:-webkit-linear-gradient(top, #0088cc, #0077b3);background-image:-o-linear-gradient(top, #0088cc, #0077b3);background-image:linear-gradient(to bottom, #0088cc, #0077b3);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0);} +.dropdown-menu .active>a,.dropdown-menu .active>a:hover{color:#ffffff;text-decoration:none;outline:0;background-color:#0081c2;background-image:-moz-linear-gradient(top, #0088cc, #0077b3);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3));background-image:-webkit-linear-gradient(top, #0088cc, #0077b3);background-image:-o-linear-gradient(top, #0088cc, #0077b3);background-image:linear-gradient(to bottom, #0088cc, #0077b3);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0);} +.dropdown-menu .disabled>a,.dropdown-menu .disabled>a:hover{color:#999999;} +.dropdown-menu .disabled>a:hover{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);cursor:default;} +.open{*z-index:1000;}.open >.dropdown-menu{display:block;} +.pull-right>.dropdown-menu{right:0;left:auto;} +.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid #000000;content:"";} +.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px;} +.dropdown-submenu{position:relative;} +.dropdown-submenu>.dropdown-menu{top:0;left:100%;margin-top:-6px;margin-left:-1px;-webkit-border-radius:0 6px 6px 6px;-moz-border-radius:0 6px 6px 6px;border-radius:0 6px 6px 6px;} +.dropdown-submenu:hover>.dropdown-menu{display:block;} +.dropup .dropdown-submenu>.dropdown-menu{top:auto;bottom:0;margin-top:0;margin-bottom:-2px;-webkit-border-radius:5px 5px 5px 0;-moz-border-radius:5px 5px 5px 0;border-radius:5px 5px 5px 0;} +.dropdown-submenu>a:after{display:block;content:" ";float:right;width:0;height:0;border-color:transparent;border-style:solid;border-width:5px 0 5px 5px;border-left-color:#cccccc;margin-top:5px;margin-right:-10px;} +.dropdown-submenu:hover>a:after{border-left-color:#ffffff;} +.dropdown-submenu.pull-left{float:none;}.dropdown-submenu.pull-left>.dropdown-menu{left:-100%;margin-left:10px;-webkit-border-radius:6px 0 6px 6px;-moz-border-radius:6px 0 6px 6px;border-radius:6px 0 6px 6px;} +.dropdown .dropdown-menu .nav-header{padding-left:20px;padding-right:20px;} +.typeahead{z-index:1051;margin-top:2px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;} +.accordion{margin-bottom:20px;} +.accordion-group{margin-bottom:2px;border:1px solid #e5e5e5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;} +.accordion-heading{border-bottom:0;} +.accordion-heading .accordion-toggle{display:block;padding:8px 15px;} +.accordion-toggle{cursor:pointer;} +.accordion-inner{padding:9px 15px;border-top:1px solid #e5e5e5;} +.carousel{position:relative;margin-bottom:20px;line-height:1;} +.carousel-inner{overflow:hidden;width:100%;position:relative;} +.carousel-inner>.item{display:none;position:relative;-webkit-transition:0.6s ease-in-out left;-moz-transition:0.6s ease-in-out left;-o-transition:0.6s ease-in-out left;transition:0.6s ease-in-out left;} +.carousel-inner>.item>img{display:block;line-height:1;} +.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block;} +.carousel-inner>.active{left:0;} +.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%;} +.carousel-inner>.next{left:100%;} +.carousel-inner>.prev{left:-100%;} +.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0;} +.carousel-inner>.active.left{left:-100%;} +.carousel-inner>.active.right{left:100%;} +.carousel-control{position:absolute;top:40%;left:15px;width:40px;height:40px;margin-top:-20px;font-size:60px;font-weight:100;line-height:30px;color:#ffffff;text-align:center;background:#222222;border:3px solid #ffffff;-webkit-border-radius:23px;-moz-border-radius:23px;border-radius:23px;opacity:0.5;filter:alpha(opacity=50);}.carousel-control.right{left:auto;right:15px;} +.carousel-control:hover{color:#ffffff;text-decoration:none;opacity:0.9;filter:alpha(opacity=90);} +.carousel-caption{position:absolute;left:0;right:0;bottom:0;padding:15px;background:#333333;background:rgba(0, 0, 0, 0.75);} +.carousel-caption h4,.carousel-caption p{color:#ffffff;line-height:20px;} +.carousel-caption h4{margin:0 0 5px;} +.carousel-caption p{margin-bottom:0;} +.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);}.well blockquote{border-color:#ddd;border-color:rgba(0, 0, 0, 0.15);} +.well-large{padding:24px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;} +.well-small{padding:9px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;} +.close{float:right;font-size:20px;font-weight:bold;line-height:20px;color:#000000;text-shadow:0 1px 0 #ffffff;opacity:0.2;filter:alpha(opacity=20);}.close:hover{color:#000000;text-decoration:none;cursor:pointer;opacity:0.4;filter:alpha(opacity=40);} +button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none;} +.pull-right{float:right;} +.pull-left{float:left;} +.hide{display:none;} +.show{display:block;} +.invisible{visibility:hidden;} +.affix{position:fixed;} +.fade{opacity:0;-webkit-transition:opacity 0.15s linear;-moz-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear;}.fade.in{opacity:1;} +.collapse{position:relative;height:0;overflow:hidden;-webkit-transition:height 0.35s ease;-moz-transition:height 0.35s ease;-o-transition:height 0.35s ease;transition:height 0.35s ease;}.collapse.in{height:auto;} diff --git a/forum/static/css/codehilite.css b/forum/static/css/codehilite.css new file mode 100755 index 0000000..0e443e5 --- /dev/null +++ b/forum/static/css/codehilite.css @@ -0,0 +1,270 @@ +/* + * from http://pygments.org/ style=default + */ +.codehilite .hll { + background-color: #ffffcc; } + +.codehilite { + background: #f8f8f8; } + +.codehilite .c { + color: #408080; + font-style: italic; } + +/* Comment */ +.codehilite .err { + border: 1px solid #FF0000; } + +/* Error */ +.codehilite .k { + color: #008000; + font-weight: bold; } + +/* Keyword */ +.codehilite .o { + color: #666666; } + +/* Operator */ +.codehilite .cm { + color: #408080; + font-style: italic; } + +/* Comment.Multiline */ +.codehilite .cp { + color: #BC7A00; } + +/* Comment.Preproc */ +.codehilite .c1 { + color: #408080; + font-style: italic; } + +/* Comment.Single */ +.codehilite .cs { + color: #408080; + font-style: italic; } + +/* Comment.Special */ +.codehilite .gd { + color: #A00000; } + +/* Generic.Deleted */ +.codehilite .ge { + font-style: italic; } + +/* Generic.Emph */ +.codehilite .gr { + color: #FF0000; } + +/* Generic.Error */ +.codehilite .gh { + color: #000080; + font-weight: bold; } + +/* Generic.Heading */ +.codehilite .gi { + color: #00A000; } + +/* Generic.Inserted */ +.codehilite .go { + color: #808080; } + +/* Generic.Output */ +.codehilite .gp { + color: #000080; + font-weight: bold; } + +/* Generic.Prompt */ +.codehilite .gs { + font-weight: bold; } + +/* Generic.Strong */ +.codehilite .gu { + color: #800080; + font-weight: bold; } + +/* Generic.Subheading */ +.codehilite .gt { + color: #0040D0; } + +/* Generic.Traceback */ +.codehilite .kc { + color: #008000; + font-weight: bold; } + +/* Keyword.Constant */ +.codehilite .kd { + color: #008000; + font-weight: bold; } + +/* Keyword.Declaration */ +.codehilite .kn { + color: #008000; + font-weight: bold; } + +/* Keyword.Namespace */ +.codehilite .kp { + color: #008000; } + +/* Keyword.Pseudo */ +.codehilite .kr { + color: #008000; + font-weight: bold; } + +/* Keyword.Reserved */ +.codehilite .kt { + color: #B00040; } + +/* Keyword.Type */ +.codehilite .m { + color: #666666; } + +/* Literal.Number */ +.codehilite .s { + color: #BA2121; } + +/* Literal.String */ +.codehilite .na { + color: #7D9029; } + +/* Name.Attribute */ +.codehilite .nb { + color: #008000; } + +/* Name.Builtin */ +.codehilite .nc { + color: #0000FF; + font-weight: bold; } + +/* Name.Class */ +.codehilite .no { + color: #880000; } + +/* Name.Constant */ +.codehilite .nd { + color: #AA22FF; } + +/* Name.Decorator */ +.codehilite .ni { + color: #999999; + font-weight: bold; } + +/* Name.Entity */ +.codehilite .ne { + color: #D2413A; + font-weight: bold; } + +/* Name.Exception */ +.codehilite .nf { + color: #0000FF; } + +/* Name.Function */ +.codehilite .nl { + color: #A0A000; } + +/* Name.Label */ +.codehilite .nn { + color: #0000FF; + font-weight: bold; } + +/* Name.Namespace */ +.codehilite .nt { + color: #008000; + font-weight: bold; } + +/* Name.Tag */ +.codehilite .nv { + color: #19177C; } + +/* Name.Variable */ +.codehilite .ow { + color: #AA22FF; + font-weight: bold; } + +/* Operator.Word */ +.codehilite .w { + color: #bbbbbb; } + +/* Text.Whitespace */ +.codehilite .mf { + color: #666666; } + +/* Literal.Number.Float */ +.codehilite .mh { + color: #666666; } + +/* Literal.Number.Hex */ +.codehilite .mi { + color: #666666; } + +/* Literal.Number.Integer */ +.codehilite .mo { + color: #666666; } + +/* Literal.Number.Oct */ +.codehilite .sb { + color: #BA2121; } + +/* Literal.String.Backtick */ +.codehilite .sc { + color: #BA2121; } + +/* Literal.String.Char */ +.codehilite .sd { + color: #BA2121; + font-style: italic; } + +/* Literal.String.Doc */ +.codehilite .s2 { + color: #BA2121; } + +/* Literal.String.Double */ +.codehilite .se { + color: #BB6622; + font-weight: bold; } + +/* Literal.String.Escape */ +.codehilite .sh { + color: #BA2121; } + +/* Literal.String.Heredoc */ +.codehilite .si { + color: #BB6688; + font-weight: bold; } + +/* Literal.String.Interpol */ +.codehilite .sx { + color: #008000; } + +/* Literal.String.Other */ +.codehilite .sr { + color: #BB6688; } + +/* Literal.String.Regex */ +.codehilite .s1 { + color: #BA2121; } + +/* Literal.String.Single */ +.codehilite .ss { + color: #19177C; } + +/* Literal.String.Symbol */ +.codehilite .bp { + color: #008000; } + +/* Name.Builtin.Pseudo */ +.codehilite .vc { + color: #19177C; } + +/* Name.Variable.Class */ +.codehilite .vg { + color: #19177C; } + +/* Name.Variable.Global */ +.codehilite .vi { + color: #19177C; } + +/* Name.Variable.Instance */ +.codehilite .il { + color: #666666; } + +/* Literal.Number.Integer.Long */ diff --git a/forum/static/css/codehilite.scss b/forum/static/css/codehilite.scss new file mode 100755 index 0000000..f421e47 --- /dev/null +++ b/forum/static/css/codehilite.scss @@ -0,0 +1,66 @@ +/* + * from http://pygments.org/ style=default + */ + +.codehilite .hll { background-color: #ffffcc } +.codehilite { background: #f8f8f8; } +.codehilite .c { color: #408080; font-style: italic } /* Comment */ +.codehilite .err { border: 1px solid #FF0000 } /* Error */ +.codehilite .k { color: #008000; font-weight: bold } /* Keyword */ +.codehilite .o { color: #666666 } /* Operator */ +.codehilite .cm { color: #408080; font-style: italic } /* Comment.Multiline */ +.codehilite .cp { color: #BC7A00 } /* Comment.Preproc */ +.codehilite .c1 { color: #408080; font-style: italic } /* Comment.Single */ +.codehilite .cs { color: #408080; font-style: italic } /* Comment.Special */ +.codehilite .gd { color: #A00000 } /* Generic.Deleted */ +.codehilite .ge { font-style: italic } /* Generic.Emph */ +.codehilite .gr { color: #FF0000 } /* Generic.Error */ +.codehilite .gh { color: #000080; font-weight: bold } /* Generic.Heading */ +.codehilite .gi { color: #00A000 } /* Generic.Inserted */ +.codehilite .go { color: #808080 } /* Generic.Output */ +.codehilite .gp { color: #000080; font-weight: bold } /* Generic.Prompt */ +.codehilite .gs { font-weight: bold } /* Generic.Strong */ +.codehilite .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ +.codehilite .gt { color: #0040D0 } /* Generic.Traceback */ +.codehilite .kc { color: #008000; font-weight: bold } /* Keyword.Constant */ +.codehilite .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */ +.codehilite .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */ +.codehilite .kp { color: #008000 } /* Keyword.Pseudo */ +.codehilite .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */ +.codehilite .kt { color: #B00040 } /* Keyword.Type */ +.codehilite .m { color: #666666 } /* Literal.Number */ +.codehilite .s { color: #BA2121 } /* Literal.String */ +.codehilite .na { color: #7D9029 } /* Name.Attribute */ +.codehilite .nb { color: #008000 } /* Name.Builtin */ +.codehilite .nc { color: #0000FF; font-weight: bold } /* Name.Class */ +.codehilite .no { color: #880000 } /* Name.Constant */ +.codehilite .nd { color: #AA22FF } /* Name.Decorator */ +.codehilite .ni { color: #999999; font-weight: bold } /* Name.Entity */ +.codehilite .ne { color: #D2413A; font-weight: bold } /* Name.Exception */ +.codehilite .nf { color: #0000FF } /* Name.Function */ +.codehilite .nl { color: #A0A000 } /* Name.Label */ +.codehilite .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */ +.codehilite .nt { color: #008000; font-weight: bold } /* Name.Tag */ +.codehilite .nv { color: #19177C } /* Name.Variable */ +.codehilite .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */ +.codehilite .w { color: #bbbbbb } /* Text.Whitespace */ +.codehilite .mf { color: #666666 } /* Literal.Number.Float */ +.codehilite .mh { color: #666666 } /* Literal.Number.Hex */ +.codehilite .mi { color: #666666 } /* Literal.Number.Integer */ +.codehilite .mo { color: #666666 } /* Literal.Number.Oct */ +.codehilite .sb { color: #BA2121 } /* Literal.String.Backtick */ +.codehilite .sc { color: #BA2121 } /* Literal.String.Char */ +.codehilite .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */ +.codehilite .s2 { color: #BA2121 } /* Literal.String.Double */ +.codehilite .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */ +.codehilite .sh { color: #BA2121 } /* Literal.String.Heredoc */ +.codehilite .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */ +.codehilite .sx { color: #008000 } /* Literal.String.Other */ +.codehilite .sr { color: #BB6688 } /* Literal.String.Regex */ +.codehilite .s1 { color: #BA2121 } /* Literal.String.Single */ +.codehilite .ss { color: #19177C } /* Literal.String.Symbol */ +.codehilite .bp { color: #008000 } /* Name.Builtin.Pseudo */ +.codehilite .vc { color: #19177C } /* Name.Variable.Class */ +.codehilite .vg { color: #19177C } /* Name.Variable.Global */ +.codehilite .vi { color: #19177C } /* Name.Variable.Instance */ +.codehilite .il { color: #666666 } /* Literal.Number.Integer.Long */ diff --git a/forum/static/css/compass/_css3.scss b/forum/static/css/compass/_css3.scss new file mode 100755 index 0000000..a4aaf73 --- /dev/null +++ b/forum/static/css/compass/_css3.scss @@ -0,0 +1,20 @@ +@import "css3/border-radius"; +@import "css3/inline-block"; +@import "css3/opacity"; +@import "css3/box-shadow"; +@import "css3/text-shadow"; +@import "css3/columns"; +@import "css3/box-sizing"; +@import "css3/box"; +@import "css3/images"; +@import "css3/background-clip"; +@import "css3/background-origin"; +@import "css3/background-size"; +@import "css3/font-face"; +@import "css3/transform"; +@import "css3/transition"; +@import "css3/appearance"; +@import "css3/regions"; +@import "css3/hyphenation"; +@import "css3/filter"; +@import "css3/user-interface"; diff --git a/forum/static/css/compass/_layout.scss b/forum/static/css/compass/_layout.scss new file mode 100755 index 0000000..55bf9ee --- /dev/null +++ b/forum/static/css/compass/_layout.scss @@ -0,0 +1,3 @@ +@import "layout/grid-background"; +@import "layout/sticky-footer"; +@import "layout/stretching"; diff --git a/forum/static/css/compass/_reset-legacy.scss b/forum/static/css/compass/_reset-legacy.scss new file mode 100755 index 0000000..f11f07a --- /dev/null +++ b/forum/static/css/compass/_reset-legacy.scss @@ -0,0 +1,3 @@ +@import "reset/utilities-legacy"; + +@include global-reset; diff --git a/forum/static/css/compass/_reset.scss b/forum/static/css/compass/_reset.scss new file mode 100755 index 0000000..e181dd7 --- /dev/null +++ b/forum/static/css/compass/_reset.scss @@ -0,0 +1,3 @@ +@import "reset/utilities"; + +@include global-reset; diff --git a/forum/static/css/compass/_support.scss b/forum/static/css/compass/_support.scss new file mode 100755 index 0000000..37b6e17 --- /dev/null +++ b/forum/static/css/compass/_support.scss @@ -0,0 +1,40 @@ +// Usually compass hacks apply to both ie6 & 7 -- set this to false to disable support for both. +$legacy-support-for-ie: true !default; + +// Setting this to false will result in smaller output, but no support for ie6 hacks +$legacy-support-for-ie6: $legacy-support-for-ie !default; + +// Setting this to false will result in smaller output, but no support for ie7 hacks +$legacy-support-for-ie7: $legacy-support-for-ie !default; + +// Setting this to false will result in smaller output, but no support for legacy ie8 hacks +$legacy-support-for-ie8: $legacy-support-for-ie !default; + +// @private +// The user can simply set $legacy-support-for-ie and 6, 7, and 8 will be set accordingly, +// But in case the user set each of those explicitly, we need to sync the value of +// this combined variable. +$legacy-support-for-ie: $legacy-support-for-ie6 or $legacy-support-for-ie7 or $legacy-support-for-ie8; + +// Whether to output legacy support for mozilla. +// Usually this means hacks to support Firefox 3.6 or earlier. +$legacy-support-for-mozilla: true; + +// Support for mozilla in experimental css3 properties (-moz). +$experimental-support-for-mozilla : true !default; +// Support for webkit in experimental css3 properties (-webkit). +$experimental-support-for-webkit : true !default; +// Support for webkit's original (non-standard) gradient syntax. +$support-for-original-webkit-gradients : true !default; +// Support for opera in experimental css3 properties (-o). +$experimental-support-for-opera : true !default; +// Support for microsoft in experimental css3 properties (-ms). +$experimental-support-for-microsoft : true !default; +// Support for khtml in experimental css3 properties (-khtml). +$experimental-support-for-khtml : false !default; +// Support for svg in experimental css3 properties. +// Setting this to true might add significant size to your +// generated stylesheets. +$experimental-support-for-svg : false !default; +// Support for CSS PIE in experimental css3 properties (-pie). +$experimental-support-for-pie : false !default; diff --git a/forum/static/css/compass/_typography.scss b/forum/static/css/compass/_typography.scss new file mode 100755 index 0000000..4d9cb5d --- /dev/null +++ b/forum/static/css/compass/_typography.scss @@ -0,0 +1,4 @@ +@import "typography/links"; +@import "typography/lists"; +@import "typography/text"; +@import "typography/vertical_rhythm"; diff --git a/forum/static/css/compass/_utilities.scss b/forum/static/css/compass/_utilities.scss new file mode 100755 index 0000000..53a0244 --- /dev/null +++ b/forum/static/css/compass/_utilities.scss @@ -0,0 +1,9 @@ +@import "utilities/color"; +@import "utilities/general"; +@import "utilities/sprites"; +@import "utilities/tables"; + +// deprecated +@import "typography/links"; +@import "typography/lists"; +@import "typography/text"; diff --git a/forum/static/css/compass/css3/_appearance.scss b/forum/static/css/compass/css3/_appearance.scss new file mode 100755 index 0000000..c6e6533 --- /dev/null +++ b/forum/static/css/compass/css3/_appearance.scss @@ -0,0 +1,17 @@ +@import "shared"; + +// Change the appearance for Mozilla, Webkit and possibly the future. +// The appearance property is currently not present in any newer CSS specification. +// +// There is no official list of accepted values, but you might check these source: +// +// * [Mozilla](https://developer.mozilla.org/en/CSS/-moz-appearance) +// * [Webkit](http://code.google.com/p/webkit-mirror/source/browse/Source/WebCore/css/CSSValueKeywords.in?spec=svnf1aea559dcd025a8946aa7da6e4e8306f5c1b604&r=63c7d1af44430b314233fea342c3ddb2a052e365) +// (search for 'appearance' within the page) + +@mixin appearance($ap) { + $ap: unquote($ap); + @include experimental(appearance, $ap, + -moz, -webkit, not -o, not -ms, not -khtml, official + ); +} diff --git a/forum/static/css/compass/css3/_background-clip.scss b/forum/static/css/compass/css3/_background-clip.scss new file mode 100755 index 0000000..6ce473f --- /dev/null +++ b/forum/static/css/compass/css3/_background-clip.scss @@ -0,0 +1,43 @@ +@import "shared"; + +// The default value is `padding-box` -- the box model used by modern browsers. +// +// If you wish to do so, you can override the default constant with `border-box` +// +// To override to the default border-box model, use this code: +// $default-background-clip: border-box + +$default-background-clip: padding-box !default; + +// Clip the background (image and color) at the edge of the padding or border. +// +// Legal Values: +// +// * padding-box +// * border-box +// * text + +@mixin background-clip($clip: $default-background-clip) { + // webkit and mozilla use the deprecated short [border | padding] + $clip: unquote($clip); + $deprecated: $clip; + @if $clip == padding-box { $deprecated: padding; } + @if $clip == border-box { $deprecated: border; } + // Support for webkit and mozilla's use of the deprecated short form + @include experimental(background-clip, $deprecated, + -moz, + -webkit, + not -o, + not -ms, + not -khtml, + not official + ); + @include experimental(background-clip, $clip, + not -moz, + not -webkit, + not -o, + not -ms, + -khtml, + official + ); +} diff --git a/forum/static/css/compass/css3/_background-origin.scss b/forum/static/css/compass/css3/_background-origin.scss new file mode 100755 index 0000000..bc8eaa8 --- /dev/null +++ b/forum/static/css/compass/css3/_background-origin.scss @@ -0,0 +1,42 @@ +// Override `$default-background-origin` to change the default. + +@import "shared"; + +$default-background-origin: content-box !default; + +// Position the background off the edge of the padding, border or content +// +// * Possible values: +// * `padding-box` +// * `border-box` +// * `content-box` +// * browser defaults to `padding-box` +// * mixin defaults to `content-box` + + +@mixin background-origin($origin: $default-background-origin) { + $origin: unquote($origin); + // webkit and mozilla use the deprecated short [border | padding | content] + $deprecated: $origin; + @if $origin == padding-box { $deprecated: padding; } + @if $origin == border-box { $deprecated: border; } + @if $origin == content-box { $deprecated: content; } + + // Support for webkit and mozilla's use of the deprecated short form + @include experimental(background-origin, $deprecated, + -moz, + -webkit, + not -o, + not -ms, + not -khtml, + not official + ); + @include experimental(background-origin, $origin, + not -moz, + not -webkit, + -o, + -ms, + -khtml, + official + ); +} diff --git a/forum/static/css/compass/css3/_background-size.scss b/forum/static/css/compass/css3/_background-size.scss new file mode 100755 index 0000000..9d36447 --- /dev/null +++ b/forum/static/css/compass/css3/_background-size.scss @@ -0,0 +1,26 @@ +@import "shared"; + +// override to change the default +$default-background-size: 100% auto !default; + +// Set the size of background images using px, width and height, or percentages. +// Currently supported in: Opera, Gecko, Webkit. +// +// * percentages are relative to the background-origin (default = padding-box) +// * mixin defaults to: `$default-background-size` +@mixin background-size( + $size-1: $default-background-size, + $size-2: false, + $size-3: false, + $size-4: false, + $size-5: false, + $size-6: false, + $size-7: false, + $size-8: false, + $size-9: false, + $size-10: false +) { + $size-1: if(type-of($size-1) == string, unquote($size-1), $size-1); + $sizes: compact($size-1, $size-2, $size-3, $size-4, $size-5, $size-6, $size-7, $size-8, $size-9, $size-10); + @include experimental(background-size, $sizes, -moz, -webkit, -o, not -ms, not -khtml); +} diff --git a/forum/static/css/compass/css3/_border-radius.scss b/forum/static/css/compass/css3/_border-radius.scss new file mode 100755 index 0000000..2da9022 --- /dev/null +++ b/forum/static/css/compass/css3/_border-radius.scss @@ -0,0 +1,130 @@ +@import "shared"; + +$default-border-radius: 5px !default; + +// Round all corners by a specific amount, defaults to value of `$default-border-radius`. +// +// When two values are passed, the first is the horizontal radius +// and the second is the vertical radius. +// +// Note: webkit does not support shorthand syntax for several corners at once. +// So in the case where you pass several values only the first will be passed to webkit. +// +// Examples: +// +// .simple { @include border-radius(4px, 4px); } +// .compound { @include border-radius(2px 5px, 3px 6px); } +// .crazy { @include border-radius(1px 3px 5px 7px, 2px 4px 6px 8px)} +// +// Which generates: +// +// .simple { +// -webkit-border-radius: 4px 4px; +// -moz-border-radius: 4px / 4px; +// -khtml-border-radius: 4px / 4px; +// border-radius: 4px / 4px; } +// +// .compound { +// -webkit-border-radius: 2px 3px; +// -moz-border-radius: 2px 5px / 3px 6px; +// -khtml-border-radius: 2px 5px / 3px 6px; +// border-radius: 2px 5px / 3px 6px; } +// +// .crazy { +// -webkit-border-radius: 1px 2px; +// -moz-border-radius: 1px 3px 5px 7px / 2px 4px 6px 8px; +// -khtml-border-radius: 1px 3px 5px 7px / 2px 4px 6px 8px; +// border-radius: 1px 3px 5px 7px / 2px 4px 6px 8px; } + +@mixin border-radius($radius: $default-border-radius, $vertical-radius: false) { + + @if $vertical-radius { + // Webkit doesn't understand the official shorthand syntax for specifying + // a vertical radius unless so in case there's several we only take the first. + @include experimental(border-radius, first-value-of($radius) first-value-of($vertical-radius), + not -moz, + -webkit, + not -o, + not -ms, + not -khtml, + not official + ); + @include experimental("border-radius", $radius unquote("/") $vertical-radius, + -moz, + not -webkit, + not -o, + not -ms, + -khtml, + official + ); + } + @else { + @include experimental(border-radius, $radius); + } +} + +// Round radius at position by amount. +// +// * legal values for `$vert`: `top`, `bottom` +// * legal values for `$horz`: `left`, `right` + +@mixin border-corner-radius($vert, $horz, $radius: $default-border-radius) { + // Support for mozilla's syntax for specifying a corner + @include experimental("border-radius-#{$vert}#{$horz}", $radius, + -moz, + not -webkit, + not -o, + not -ms, + not -khtml, + not official + ); + @include experimental("border-#{$vert}-#{$horz}-radius", $radius, + not -moz, + -webkit, + not -o, + not -ms, + -khtml, + official + ); + +} + +// Round top-left corner only + +@mixin border-top-left-radius($radius: $default-border-radius) { + @include border-corner-radius(top, left, $radius); } + +// Round top-right corner only + +@mixin border-top-right-radius($radius: $default-border-radius) { + @include border-corner-radius(top, right, $radius); } + +// Round bottom-left corner only + +@mixin border-bottom-left-radius($radius: $default-border-radius) { + @include border-corner-radius(bottom, left, $radius); } + +// Round bottom-right corner only + +@mixin border-bottom-right-radius($radius: $default-border-radius) { + @include border-corner-radius(bottom, right, $radius); } + +// Round both top corners by amount +@mixin border-top-radius($radius: $default-border-radius) { + @include border-top-left-radius($radius); + @include border-top-right-radius($radius); } + +// Round both right corners by amount +@mixin border-right-radius($radius: $default-border-radius) { + @include border-top-right-radius($radius); + @include border-bottom-right-radius($radius); } + +// Round both bottom corners by amount +@mixin border-bottom-radius($radius: $default-border-radius) { + @include border-bottom-left-radius($radius); + @include border-bottom-right-radius($radius); } + +// Round both left corners by amount +@mixin border-left-radius($radius: $default-border-radius) { + @include border-top-left-radius($radius); + @include border-bottom-left-radius($radius); } diff --git a/forum/static/css/compass/css3/_box-shadow.scss b/forum/static/css/compass/css3/_box-shadow.scss new file mode 100755 index 0000000..ea47dc9 --- /dev/null +++ b/forum/static/css/compass/css3/_box-shadow.scss @@ -0,0 +1,76 @@ +// @doc off +// These defaults make the arguments optional for this mixin +// If you like, set different defaults before importing. +// @doc on + +@import "shared"; + + +// The default color for box shadows +$default-box-shadow-color: #333333 !default; + +// The default horizontal offset. Positive is to the right. +$default-box-shadow-h-offset: 0px !default; + +// The default vertical offset. Positive is down. +$default-box-shadow-v-offset: 0px !default; + +// The default blur length. +$default-box-shadow-blur: 5px !default; + +// The default spread length. +$default-box-shadow-spread : false !default; + +// The default shadow inset: inset or false (for standard shadow). +$default-box-shadow-inset : false !default; + +// Provides cross-browser for Webkit, Gecko, and CSS3 box shadows when one or more box +// shadows are needed. +// Each shadow argument should adhere to the standard css3 syntax for the +// box-shadow property. +@mixin box-shadow( + $shadow-1 : default, + $shadow-2 : false, + $shadow-3 : false, + $shadow-4 : false, + $shadow-5 : false, + $shadow-6 : false, + $shadow-7 : false, + $shadow-8 : false, + $shadow-9 : false, + $shadow-10: false +) { + @if $shadow-1 == default { + $shadow-1 : -compass-space-list(compact(if($default-box-shadow-inset, inset, false), $default-box-shadow-h-offset, $default-box-shadow-v-offset, $default-box-shadow-blur, $default-box-shadow-spread, $default-box-shadow-color)); + } + $shadow : compact($shadow-1, $shadow-2, $shadow-3, $shadow-4, $shadow-5, $shadow-6, $shadow-7, $shadow-8, $shadow-9, $shadow-10); + @include experimental(box-shadow, $shadow, + -moz, -webkit, not -o, not -ms, not -khtml, official + ); +} + +// Provides a single cross-browser CSS box shadow for Webkit, Gecko, and CSS3. +// Includes default arguments for color, horizontal offset, vertical offset, blur length, spread length, and inset. +@mixin single-box-shadow( + $color : $default-box-shadow-color, + $hoff : $default-box-shadow-h-offset, + $voff : $default-box-shadow-v-offset, + $blur : $default-box-shadow-blur, + $spread : $default-box-shadow-spread, + $inset : $default-box-shadow-inset +) { + @if not ($inset == true or $inset == false or $inset == inset) { + @warn "$inset expected to be true or the inset keyword. Got #{$inset} instead. Using: inset"; + } + + @if $color == none { + @include box-shadow(none); + } @else { + $full : $hoff $voff; + @if $blur { $full: $full $blur; } + @if $spread { $full: $full $spread; } + @if $color { $full: $full $color; } + @if $inset { $full: inset $full; } + @include box-shadow($full); + } +} diff --git a/forum/static/css/compass/css3/_box-sizing.scss b/forum/static/css/compass/css3/_box-sizing.scss new file mode 100755 index 0000000..93ff8ac --- /dev/null +++ b/forum/static/css/compass/css3/_box-sizing.scss @@ -0,0 +1,13 @@ +@import "shared"; + +// Change the box model for Mozilla, Webkit, IE8 and the future +// +// @param $bs +// [ content-box | border-box ] + +@mixin box-sizing($bs) { + $bs: unquote($bs); + @include experimental(box-sizing, $bs, + -moz, -webkit, not -o, not -ms, not -khtml, official + ); +} diff --git a/forum/static/css/compass/css3/_box.scss b/forum/static/css/compass/css3/_box.scss new file mode 100755 index 0000000..959ccff --- /dev/null +++ b/forum/static/css/compass/css3/_box.scss @@ -0,0 +1,111 @@ +@import "shared"; + +// display:box; must be used for any of the other flexbox mixins to work properly +@mixin display-box { + @include experimental-value(display, box, + -moz, -webkit, not -o, -ms, not -khtml, official + ); +} + +// Default box orientation, assuming that the user wants something less block-like +$default-box-orient: horizontal !default; + +// Box orientation [ horizontal | vertical | inline-axis | block-axis | inherit ] +@mixin box-orient( + $orientation: $default-box-orient +) { + $orientation : unquote($orientation); + @include experimental(box-orient, $orientation, + -moz, -webkit, not -o, -ms, not -khtml, official + ); +} + +// Default box-align +$default-box-align: stretch !default; + +// Box align [ start | end | center | baseline | stretch ] +@mixin box-align( + $alignment: $default-box-align +) { + $alignment : unquote($alignment); + @include experimental(box-align, $alignment, + -moz, -webkit, not -o, -ms, not -khtml, official + ); +} + +// Default box flex +$default-box-flex: 0 !default; + +// mixin which takes an int argument for box flex. Apply this to the children inside the box. +// +// For example: "div.display-box > div.child-box" would get the box flex mixin. +@mixin box-flex( + $flex: $default-box-flex +) { + @include experimental(box-flex, $flex, + -moz, -webkit, not -o, -ms, not -khtml, official + ); +} + +// Default flex group +$default-box-flex-group: 1 !default; + +// mixin which takes an int argument for flexible grouping +@mixin box-flex-group( + $group: $default-box-flex-group +) { + @include experimental(box-flex-group, $group, + -moz, -webkit, not -o, -ms, not -khtml, official + ); +} + +// default for ordinal group +$default-box-ordinal-group: 1 !default; + +// mixin which takes an int argument for ordinal grouping and rearranging the order +@mixin box-ordinal-group( + $group: $default-ordinal-flex-group +) { + @include experimental(box-ordinal-group, $group, + -moz, -webkit, not -o, -ms, not -khtml, official + ); +} + +// Box direction default value +$default-box-direction: normal !default; + +// mixin for box-direction [ normal | reverse | inherit ] +@mixin box-direction( + $direction: $default-box-direction +) { + $direction: unquote($direction); + @include experimental(box-direction, $direction, + -moz, -webkit, not -o, -ms, not -khtml, official + ); +} + +// default for box lines +$default-box-lines: single !default; + +// mixin for box lines [ single | multiple ] +@mixin box-lines( + $lines: $default-box-lines +) { + $lines: unquote($lines); + @include experimental(box-lines, $lines, + -moz, -webkit, not -o, -ms, not -khtml, official + ); +} + +// default for box pack +$default-box-pack: start !default; + +// mixin for box pack [ start | end | center | justify ] +@mixin box-pack( + $pack: $default-box-pack +) { + $pack: unquote($pack); + @include experimental(box-pack, $pack, + -moz, -webkit, not -o, -ms, not -khtml, official + ); +} \ No newline at end of file diff --git a/forum/static/css/compass/css3/_columns.scss b/forum/static/css/compass/css3/_columns.scss new file mode 100755 index 0000000..9af9982 --- /dev/null +++ b/forum/static/css/compass/css3/_columns.scss @@ -0,0 +1,148 @@ +@import "shared"; + +// Specify the shorthand `columns` property. +// +// Example: +// +// @include columns(20em 2) +@mixin columns($width-and-count) { + @include experimental(columns, $width-and-count, + -moz, -webkit, -o, -ms, not -khtml, official + ); +} + +// Specify the number of columns +@mixin column-count($count) { + @include experimental(column-count, $count, + -moz, -webkit, -o, -ms, not -khtml, official + ); +} + +// Specify the gap between columns e.g. `20px` +@mixin column-gap($width) { + @include experimental(column-gap, $width, + -moz, -webkit, -o, -ms, not -khtml, official + ); +} + +// Specify the width of columns e.g. `100px` +@mixin column-width($width) { + @include experimental(column-width, $width, + -moz, -webkit, -o, -ms, not -khtml, official + ); +} + +// Specify the width of the rule between columns e.g. `1px` +@mixin column-rule-width($width) { + @include experimental(column-rule-width, $width, + -moz, -webkit, -o, -ms, not -khtml, official + ); +} + +// Specify the style of the rule between columns e.g. `dotted`. +// This works like border-style. +@mixin column-rule-style($style) { + @include experimental(column-rule-style, unquote($style), + -moz, -webkit, -o, -ms, not -khtml, official + ); +} + +// Specify the color of the rule between columns e.g. `blue`. +// This works like border-color. +@mixin column-rule-color($color) { + @include experimental(column-rule-color, $color, + -moz, -webkit, -o, -ms, not -khtml, official + ); +} + +// Mixin encompassing all column rule properties +// For example: +// +// @include column-rule(1px, solid, #c00) +// +// Or the values can be space separated: +// +// @include column-rule(1px solid #c00) +@mixin column-rule($width, $style: false, $color: false) { + $full : -compass-space-list(compact($width, $style, $color)); + @include experimental(column-rule, $full, + -moz, -webkit, -o, -ms, not -khtml, official + ); +} + +// Mixin for setting column-break-before +// +// * legal values are auto, always, avoid, left, right, page, column, avoid-page, avoid-column +// +// Example: +// h2.before {@include column-break-before(always);} +// +// Which generates: +// +// h2.before { +// -webkit-column-break-before: always; +// column-break-before: always;} +@mixin column-break-before($value: auto){ + @include experimental(column-break-before, $value, not -moz, -webkit, not -o, not -ms, not -khtml, official ); +} + +// Mixin for setting column-break-after +// +// * legal values are auto, always, avoid, left, right, page, column, avoid-page, avoid-column +// +// Example: +// h2.after {@include column-break-after(always); } +// +// Which generates: +// +// h2.after { +// -webkit-column-break-after: always; +// column-break-after: always; } +@mixin column-break-after($value: auto){ + @include experimental(column-break-after, $value, not -moz, -webkit, not -o, not -ms, not -khtml, official ); +} + +// Mixin for setting column-break-inside +// +// * legal values are auto, avoid, avoid-page, avoid-column +// +// Example: +// h2.inside {@include column-break-inside();} +// Which generates: +// +// h2.inside { +// -webkit-column-break-inside: auto; +// column-break-inside: auto;} +@mixin column-break-inside($value: auto){ + @include experimental(column-break-inside, $value, not -moz, -webkit, not -o, not -ms, not -khtml, official ); +} + +// All-purpose mixin for setting column breaks. +// +// * legal values for $type : before, after, inside +// * legal values for '$value' are dependent on $type +// * when $type = before, legal values are auto, always, avoid, left, right, page, column, avoid-page, avoid-column +// * when $type = after, legal values are auto, always, avoid, left, right, page, column, avoid-page, avoid-column +// * when $type = inside, legal values are auto, avoid, avoid-page, avoid-column +// +// Examples: +// h2.before {@include column-break(before, always);} +// h2.after {@include column-break(after, always); } +// h2.inside {@include column-break(inside); } +// +// Which generates: +// h2.before { +// -webkit-column-break-before: always; +// column-break-before: always;} +// +// h2.after { +// -webkit-column-break-after: always; +// column-break-after: always; } +// +// h2.inside { +// -webkit-column-break-inside: auto; +// column-break-inside: auto;} + +@mixin column-break($type: before, $value: auto){ + @include experimental("column-break-#{$type}", $value, not -moz, -webkit, not -o, not -ms, not -khtml, official ); +} \ No newline at end of file diff --git a/forum/static/css/compass/css3/_filter.scss b/forum/static/css/compass/css3/_filter.scss new file mode 100755 index 0000000..cd6eb19 --- /dev/null +++ b/forum/static/css/compass/css3/_filter.scss @@ -0,0 +1,23 @@ +@import "shared"; + +// Provides cross-browser support for the upcoming (?) css3 filter property. +// +// Each filter argument should adhere to the standard css3 syntax for the +// filter property. +@mixin filter ( + $filter-1, + $filter-2 : false, + $filter-3 : false, + $filter-4 : false, + $filter-5 : false, + $filter-6 : false, + $filter-7 : false, + $filter-8 : false, + $filter-9 : false, + $filter-10: false +) { + $filter : compact($filter-1, $filter-2, $filter-3, $filter-4, $filter-5, $filter-6, $filter-7, $filter-8, $filter-9, $filter-10); + @include experimental(filter, $filter, + -moz, -webkit, not -o, not -ms, not -khtml, official + ); +} diff --git a/forum/static/css/compass/css3/_font-face.scss b/forum/static/css/compass/css3/_font-face.scss new file mode 100755 index 0000000..bd3db34 --- /dev/null +++ b/forum/static/css/compass/css3/_font-face.scss @@ -0,0 +1,48 @@ +@import "shared"; + +// Cross-browser support for @font-face. Supports IE, Gecko, Webkit, Opera. +// +// * $name is required, arbitrary, and what you will use in font stacks. +// * $font-files is required using font-files('relative/location', 'format'). +// for best results use this order: woff, opentype/truetype, svg +// * $eot is required by IE, and is a relative location of the eot file. +// * $weight shows if the font is bold, defaults to normal +// * $style defaults to normal, might be also italic +// * For android 2.2 Compatiblity, please ensure that your web page has +// a meta viewport tag. +// * To support iOS < 4.2, an SVG file must be provided +// +// If you need to generate other formats check out the Font Squirrel +// [font generator](http://www.fontsquirrel.com/fontface/generator) +// + +// In order to refer to a specific style of the font in your stylesheets as +// e.g. "font-style: italic;", you may add a couple of @font-face includes +// containing the respective font files for each style and specying +// respective the $style parameter. + +// Order of the includes matters, and it is: normal, bold, italic, bold+italic. + +@mixin font-face( + $name, + $font-files, + $eot: false, + $weight: false, + $style: false +) { + $iefont: unquote("#{$eot}?#iefix"); + @font-face { + font-family: quote($name); + @if $eot { + src: font-url($eot); + $font-files: font-url($iefont) unquote("format('eot')"), $font-files; + } + src: $font-files; + @if $weight { + font-weight: $weight; + } + @if $style { + font-style: $style; + } + } +} diff --git a/forum/static/css/compass/css3/_hyphenation.scss b/forum/static/css/compass/css3/_hyphenation.scss new file mode 100755 index 0000000..a4f5808 --- /dev/null +++ b/forum/static/css/compass/css3/_hyphenation.scss @@ -0,0 +1,77 @@ +@import "shared"; + +// Mixins to support specific CSS Text Level 3 elements +// +// +// +// Mixin for word-break properties +// http://www.w3.org/css3-text/#word-break +// * legal values for $type : normal, keep-all, break-all +// +// Example: +// p.wordBreak {@include word-break(break-all);} +// +// Which generates: +// p.wordBreak { +// -ms-word-break: break-all; +// word-break: break-all; +// word-break: break-word;} +// +@mixin word-break($value: normal){ + @if $value == break-all { + //Most browsers handle the break-all case the same... + @include experimental(word-break, $value, + not -moz, not -webkit, not -o, -ms, not -khtml, official + ); + //Webkit handles break-all differently... as break-word + @include experimental(word-break, break-word, + not -moz, not -webkit, not -o, not -ms, not -khtml, official + ); + } + @else { + @include experimental(word-break, $value, + not -moz, not -webkit, not -o, -ms, not -khtml, official + ); + } +} + +// Mixin for the hyphens property +// +// W3C specification: http://www.w3.org/TR/css3-text/#hyphens +// * legal values for $type : auto, manual, none +// +// Example: +// p { +// @include hyphens(auto);} +// Which generates: +// p { +// -moz-hyphens: auto; +// -webkit-hyphens: auto; +// hyphens: auto;} +// +@mixin hyphens($value: auto){ + @include experimental(hyphens, $value, + -moz, -webkit, not -o, not -ms, not -khtml, official + ); +} + +// Mixin for x-browser hyphenation based on @auchenberg's post: +// Removes the need for the HTML tag +// http://blog.kenneth.io/blog/2012/03/04/word-wrapping-hypernation-using-css/ +// +// Example: +// div {@include hyphenation;} +// +// Which generates: +// div { +// -ms-word-break: break-all; +// word-break: break-all; +// word-break: break-word; +// -moz-hyphens: auto; +// -webkit-hyphens: auto; +// hyphens: auto;} +// +@mixin hyphenation{ + @include word-break(break-all); + @include hyphens; +} diff --git a/forum/static/css/compass/css3/_images.scss b/forum/static/css/compass/css3/_images.scss new file mode 100755 index 0000000..e241776 --- /dev/null +++ b/forum/static/css/compass/css3/_images.scss @@ -0,0 +1,132 @@ +@import "shared"; +@import "compass/utilities/general/hacks"; + +// Background property support for vendor prefixing within values. +@mixin background( + $background-1, + $background-2: false, + $background-3: false, + $background-4: false, + $background-5: false, + $background-6: false, + $background-7: false, + $background-8: false, + $background-9: false, + $background-10: false +) { + $backgrounds: compact($background-1, $background-2, $background-3, $background-4, $background-5, + $background-6, $background-7, $background-8, $background-9, $background-10); + $mult-bgs: -compass-list-size($backgrounds) > 1; + $add-pie-bg: prefixed(-pie, $backgrounds) or $mult-bgs; + @if $experimental-support-for-svg and prefixed(-svg, $backgrounds) { background: -svg($backgrounds); } + @if $support-for-original-webkit-gradients and prefixed(-owg, $backgrounds) { background: -owg($backgrounds); } + @if $experimental-support-for-webkit and prefixed(-webkit, $backgrounds) { background: -webkit($backgrounds); } + @if $experimental-support-for-mozilla and prefixed(-moz, $backgrounds) { background: -moz($backgrounds); } + @if $experimental-support-for-opera and prefixed(-o, $backgrounds) { background: -o($backgrounds); } + @if $experimental-support-for-pie and $add-pie-bg { -pie-background: -pie($backgrounds); } + background: $backgrounds ; +} + +@mixin background-with-css2-fallback( + $background-1, + $background-2: false, + $background-3: false, + $background-4: false, + $background-5: false, + $background-6: false, + $background-7: false, + $background-8: false, + $background-9: false, + $background-10: false +) { + $backgrounds: compact($background-1, $background-2, $background-3, $background-4, $background-5, + $background-6, $background-7, $background-8, $background-9, $background-10); + $mult-bgs: -compass-list-size($backgrounds) > 1; + $simple-background: if($mult-bgs or prefixed(-css2, $backgrounds), -css2(-compass-nth($backgrounds, last)), false); + @if not blank($simple-background) { background: $simple-background; } + @include background($background-1, $background-2, $background-3, $background-4, $background-5, + $background-6, $background-7, $background-8, $background-9, $background-10); +} + + +// Background image property support for vendor prefixing within values. +@mixin background-image( + $image-1, + $image-2: false, + $image-3: false, + $image-4: false, + $image-5: false, + $image-6: false, + $image-7: false, + $image-8: false, + $image-9: false, + $image-10: false +) { + $images: compact($image-1, $image-2, $image-3, $image-4, $image-5, $image-6, $image-7, $image-8, $image-9, $image-10); + $add-pie-bg: prefixed(-pie, $images) or -compass-list-size($images) > 1; + + @if $experimental-support-for-svg and prefixed(-svg, $images) { background-image: -svg($images); background-size: 100%; } + @if $support-for-original-webkit-gradients and prefixed(-owg, $images) { background-image: -owg($images); } + @if $experimental-support-for-webkit and prefixed(-webkit, $images) { background-image: -webkit($images); } + @if $experimental-support-for-mozilla and prefixed(-moz, $images) { background-image: -moz($images); } + @if $experimental-support-for-opera and prefixed(-o, $images) { background-image: -o($images); } + @if $experimental-support-for-pie and $add-pie-bg { @warn "PIE does not support background-image. Use @include background(#{$images}) instead." } + background-image: $images ; +} + +// Emit a IE-Specific filters that renders a simple linear gradient. +// For use in IE 6 - 8. Best practice would have you apply this via a +// conditional IE stylesheet, but if you must, you should place this before +// any background-image properties that you have specified. +// +// For the `$orientation` parameter, you can pass `vertical` or `horizontal`. +@mixin filter-gradient($start-color, $end-color, $orientation: vertical) { + @include has-layout; + $gradient-type: if($orientation == vertical, 0, 1); + @if $legacy-support-for-ie6 or $legacy-support-for-ie7 or $legacy-support-for-ie8 { + filter: progid:DXImageTransform.Microsoft.gradient(gradientType=#{$gradient-type}, startColorstr='#{ie-hex-str($start-color)}', endColorstr='#{ie-hex-str($end-color)}'); + } +} + + +// Border image property support for vendor prefixing properties and values. +@mixin border-image($value) { + @if $experimental-support-for-mozilla { -moz-border-image: -moz(reject(-compass-list($value), fill)); } + @if $support-for-original-webkit-gradients { -webkit-border-image: -owg(reject(-compass-list($value), fill)); } + @if $experimental-support-for-webkit { -webkit-border-image: -webkit(reject(-compass-list($value), fill)); } + @if $experimental-support-for-opera { -o-border-image: -o(reject(-compass-list($value), fill)); } + @if $experimental-support-for-svg { border-image: -svg(reject(-compass-list($value), fill)); } + border-image: $value; +} + +// List style image property support for vendor prefixing within values. +@mixin list-style-image($image) { + @if $experimental-support-for-mozilla and prefixed(-moz, $image) { list-style-image: -moz($image); } + @if $support-for-original-webkit-gradients and prefixed(-owg, $image) { list-style-image: -owg($image); } + @if $experimental-support-for-webkit and prefixed(-webkit, $image) { list-style-image: -webkit($image); } + @if $experimental-support-for-opera and prefixed(-o, $image) { list-style-image: -o($image); } + @if $experimental-support-for-svg and prefixed(-svg, $image) { list-style-image: -svg($image); } + list-style-image: $image ; +} + +// List style property support for vendor prefixing within values. +@mixin list-style($value) { + $value: -compass-list($value); + @if $experimental-support-for-mozilla and prefixed(-moz, $value) { list-style-image: -moz($value); } + @if $support-for-original-webkit-gradients and prefixed(-owg, $value) { list-style-image: -owg($value); } + @if $experimental-support-for-webkit and prefixed(-webkit, $value) { list-style-image: -webkit($value); } + @if $experimental-support-for-opera and prefixed(-o, $value) { list-style-image: -o($value); } + @if $experimental-support-for-svg and prefixed(-svg, $value) { list-style-image: -svg($value); } + list-style-image: $value ; +} + +// content property support for vendor prefixing within values. +@mixin content($value) { + $value: -compass-list($value); + @if $experimental-support-for-mozilla and prefixed(-moz, $value) { content: -moz($value); } + @if $support-for-original-webkit-gradients and prefixed(-owg, $value) { content: -owg($value); } + @if $experimental-support-for-webkit and prefixed(-webkit, $value) { content: -webkit($value); } + @if $experimental-support-for-opera and prefixed(-o, $value) { content: -o($value); } + @if $experimental-support-for-svg and prefixed(-svg, $value) { content: -svg($value); } + content: $value ; +} diff --git a/forum/static/css/compass/css3/_inline-block.scss b/forum/static/css/compass/css3/_inline-block.scss new file mode 100755 index 0000000..75519b1 --- /dev/null +++ b/forum/static/css/compass/css3/_inline-block.scss @@ -0,0 +1,22 @@ +@import "shared"; + +// Set `$inline-block-alignment` to `none` or `false` to disable the output +// of a vertical-align property in the inline-block mixin. +// Or set it to a legal value for `vertical-align` to change the default. +$inline-block-alignment: middle !default; + +// Provides a cross-browser method to implement `display: inline-block;` +@mixin inline-block($alignment: $inline-block-alignment) { + @if $legacy-support-for-mozilla { + display: -moz-inline-stack; + } + display: inline-block; + @if $alignment and $alignment != none { + vertical-align: $alignment; + } + @if $legacy-support-for-ie { + *vertical-align: auto; + zoom: 1; + *display: inline; + } +} diff --git a/forum/static/css/compass/css3/_opacity.scss b/forum/static/css/compass/css3/_opacity.scss new file mode 100755 index 0000000..fc497ff --- /dev/null +++ b/forum/static/css/compass/css3/_opacity.scss @@ -0,0 +1,19 @@ +@import "shared"; + +// Provides cross-browser CSS opacity. Takes a number between 0 and 1 as the argument, e.g. 0.5 for 50% opacity. +// +// @param $opacity +// A number between 0 and 1, where 0 is transparent and 1 is opaque. + +@mixin opacity($opacity) { + @if $legacy-support-for-ie6 or $legacy-support-for-ie7 or $legacy-support-for-ie8 { + filter: unquote("progid:DXImageTransform.Microsoft.Alpha(Opacity=#{round($opacity * 100)})"); + } + opacity: $opacity; +} + +// Make an element completely transparent. +@mixin transparent { @include opacity(0); } + +// Make an element completely opaque. +@mixin opaque { @include opacity(1); } diff --git a/forum/static/css/compass/css3/_pie.scss b/forum/static/css/compass/css3/_pie.scss new file mode 100755 index 0000000..81e2e51 --- /dev/null +++ b/forum/static/css/compass/css3/_pie.scss @@ -0,0 +1,73 @@ +$experimental-support-for-pie: true; + +// It is recommended that you use Sass's @extend directive to apply the behavior +// to your PIE elements. To assist you, Compass provides this variable. +// When set, it will cause the `@include pie` mixin to extend this class. +// The class name you provide should **not** include the `.`. +$pie-base-class: false !default; + +// The default approach to using PIE. +// Can be one of: +// +// * relative (default) +// * z-index +// * none +$pie-default-approach: relative !default; + +// The location of your PIE behavior file +// This should be root-relative to your web server +// relative assets don't work. It is recommended that +// you set this yourself. +$pie-behavior: stylesheet-url("PIE.htc") !default; + +// When using the z-index approach, the +// first ancestor of the PIE element at +// or before the container's opaque background +// should have a z-index set as well to ensure +// propert z-index stacking. +// +// The `$position` argument must be some non-static +// value (absolute, relative, etc.) +@mixin pie-container($z-index: 0, $position: relative) { + z-index: $z-index; + position: $position; +} + +// PIE elements must have this behavior attached to them. +// IE is broken -- it doesn't think of behavior urls as +// relative to the stylesheet. It considers them relative +// to the webpage. As a result, you cannot reliably use +// compass's relative_assets with PIE. +// +// * `$approach` - one of: relative, z-index, or none +// * `$z-index` - when using the z-index approach, this +// is the z-index that is applied. +@mixin pie-element( + $approach: $pie-default-approach, + $z-index: 0 +) { + behavior: $pie-behavior; + @if $approach == relative { + position: relative; + } + @else if $approach == z-index { + z-index: $z-index; + } +} + +// a smart mixin that knows to extend or include pie-element according +// to your stylesheet's configuration variables. +@mixin pie($base-class: $pie-base-class) { + @if $base-class { + @extend .#{$base-class}; + } + @else { + @include pie-element; + } +} + +// Watch `$n` levels of ancestors for changes to their class attribute +// So that cascading styles will work correctly on the PIE element. +@mixin pie-watch-ancestors($n) { + -pie-watch-ancestors: $n; +} \ No newline at end of file diff --git a/forum/static/css/compass/css3/_regions.scss b/forum/static/css/compass/css3/_regions.scss new file mode 100755 index 0000000..9b2f27c --- /dev/null +++ b/forum/static/css/compass/css3/_regions.scss @@ -0,0 +1,22 @@ +@import "shared"; + +// Webkit, IE10 and future support for [CSS Regions](http://dev.w3.org/csswg/css3-regions/) +// +// $target is a value you use to link two regions of your css. Give the source of your content the flow-into property, and give your target container the flow-from property. +// +// For a visual explanation, see the diagrams at Chris Coyier's +// [CSS-Tricks](http://css-tricks.com/content-folding/) + +@mixin flow-into($target) { + $target: unquote($target); + @include experimental(flow-into, $target, + not -moz, -webkit, not -o, -ms, not -khtml, not official + ); +} + +@mixin flow-from($target) { + $target: unquote($target); + @include experimental(flow-from, $target, + not -moz, -webkit, not -o, -ms, not -khtml, not official + ); +} \ No newline at end of file diff --git a/forum/static/css/compass/css3/_shared.scss b/forum/static/css/compass/css3/_shared.scss new file mode 100755 index 0000000..1f55cb5 --- /dev/null +++ b/forum/static/css/compass/css3/_shared.scss @@ -0,0 +1,38 @@ +@import "compass/support"; + +// This mixin provides basic support for CSS3 properties and +// their corresponding experimental CSS2 properties when +// the implementations are identical except for the property +// prefix. +@mixin experimental($property, $value, + $moz : $experimental-support-for-mozilla, + $webkit : $experimental-support-for-webkit, + $o : $experimental-support-for-opera, + $ms : $experimental-support-for-microsoft, + $khtml : $experimental-support-for-khtml, + $official : true +) { + @if $webkit and $experimental-support-for-webkit { -webkit-#{$property} : $value; } + @if $khtml and $experimental-support-for-khtml { -khtml-#{$property} : $value; } + @if $moz and $experimental-support-for-mozilla { -moz-#{$property} : $value; } + @if $ms and $experimental-support-for-microsoft { -ms-#{$property} : $value; } + @if $o and $experimental-support-for-opera { -o-#{$property} : $value; } + @if $official { #{$property} : $value; } +} + +// Same as experimental(), but for cases when the property is the same and the value is vendorized +@mixin experimental-value($property, $value, + $moz : $experimental-support-for-mozilla, + $webkit : $experimental-support-for-webkit, + $o : $experimental-support-for-opera, + $ms : $experimental-support-for-microsoft, + $khtml : $experimental-support-for-khtml, + $official : true +) { + @if $webkit and $experimental-support-for-webkit { #{$property} : -webkit-#{$value}; } + @if $khtml and $experimental-support-for-khtml { #{$property} : -khtml-#{$value}; } + @if $moz and $experimental-support-for-mozilla { #{$property} : -moz-#{$value}; } + @if $ms and $experimental-support-for-microsoft { #{$property} : -ms-#{$value}; } + @if $o and $experimental-support-for-opera { #{$property} : -o-#{$value}; } + @if $official { #{$property} : #{$value}; } +} diff --git a/forum/static/css/compass/css3/_text-shadow.scss b/forum/static/css/compass/css3/_text-shadow.scss new file mode 100755 index 0000000..eab7636 --- /dev/null +++ b/forum/static/css/compass/css3/_text-shadow.scss @@ -0,0 +1,87 @@ +@import "shared"; + +// These defaults make the arguments optional for this mixin +// If you like, set different defaults in your project + +$default-text-shadow-color: #aaa !default; +$default-text-shadow-h-offset: 0px !default; +$default-text-shadow-v-offset: 0px !default; +$default-text-shadow-blur: 1px !default; +$default-text-shadow-spread: false !default; + +// Provides cross-browser text shadows when one or more shadows are needed. +// Each shadow argument should adhere to the standard css3 syntax for the +// text-shadow property. +// +// Note: if any shadow has a spread parameter, this will cause the mixin +// to emit the shadow declaration twice, first without the spread, +// then with the spread included. This allows you to progressively +// enhance the browsers that do support the spread parameter. +@mixin text-shadow( + $shadow-1 : default, + $shadow-2 : false, + $shadow-3 : false, + $shadow-4 : false, + $shadow-5 : false, + $shadow-6 : false, + $shadow-7 : false, + $shadow-8 : false, + $shadow-9 : false, + $shadow-10: false +) { + @if $shadow-1 == default { + $shadow-1: compact($default-text-shadow-h-offset $default-text-shadow-v-offset $default-text-shadow-blur $default-text-shadow-spread $default-text-shadow-color); + } + $shadows-without-spread: join((),(),comma); + $shadows: join((),(),comma); + $has-spread: false; + @each $shadow in compact($shadow-1, $shadow-2, $shadow-3, $shadow-4, $shadow-5, + $shadow-6, $shadow-7, $shadow-8, $shadow-9, $shadow-10) { + @if length($shadow) > 4 { + $has-spread: true; + $shadows-without-spread: append($shadows-without-spread, nth($shadow,1) nth($shadow,2) nth($shadow,3) nth($shadow,5)); + $shadows: append($shadows, $shadow); + } else { + $shadows-without-spread: append($shadows-without-spread, $shadow); + $shadows: append($shadows, $shadow); + } + } + @if $has-spread { + text-shadow: $shadows-without-spread; + } + text-shadow: $shadows; +} + +// Provides a single cross-browser CSS text shadow. +// +// Provides sensible defaults for the color, horizontal offset, vertical offset, blur, and spread +// according to the configuration defaults above. +@mixin single-text-shadow( + $hoff: false, + $voff: false, + $blur: false, + $spread: false, + $color: false +) { + // A lot of people think the color comes first. It doesn't. + @if type-of($hoff) == color { + $temp-color: $hoff; + $hoff: $voff; + $voff: $blur; + $blur: $spread; + $spread: $color; + $color: $temp-color; + } + // Can't rely on default assignment with multiple supported argument orders. + $hoff: if($hoff, $hoff, $default-text-shadow-h-offset); + $voff: if($voff, $voff, $default-text-shadow-v-offset); + $blur: if($blur, $blur, $default-text-shadow-blur ); + $spread: if($spread, $spread, $default-text-shadow-spread ); + $color: if($color, $color, $default-text-shadow-color ); + // We don't need experimental support for this property. + @if $color == none or $hoff == none { + @include text-shadow(none); + } @else { + @include text-shadow(compact($hoff $voff $blur $spread $color)); + } +} diff --git a/forum/static/css/compass/css3/_transform-legacy.scss b/forum/static/css/compass/css3/_transform-legacy.scss new file mode 100755 index 0000000..ac661da --- /dev/null +++ b/forum/static/css/compass/css3/_transform-legacy.scss @@ -0,0 +1,87 @@ +@import "shared"; + +@warn "This version of the transform module has been deprecated and will be removed."; + +// CSS Transform and Transform-Origin + +// Apply a transform sent as a complete string. + +@mixin apply-transform($transform) { + @include experimental(transform, $transform, + -moz, -webkit, -o, not -ms, not -khtml, official + ); +} + +// Apply a transform-origin sent as a complete string. + +@mixin apply-origin($origin) { + @include experimental(transform-origin, $origin, + -moz, -webkit, -o, not -ms, not -khtml, official + ); +} + +// transform-origin requires x and y coordinates +// +// * only applies the coordinates if they are there so that it can be called by scale, rotate and skew safely + +@mixin transform-origin($originx: 50%, $originy: 50%) { + @if $originx or $originy { + @if $originy { + @include apply-origin($originx or 50% $originy); + } @else { + @include apply-origin($originx); + } + } +} + +// A full transform mixin with everything you could want +// +// * including origin adjustments if you want them +// * scale, rotate and skew require units of degrees(deg) +// * scale takes a multiplier, rotate and skew take degrees + +@mixin transform( + $scale: 1, + $rotate: 0deg, + $transx: 0, + $transy: 0, + $skewx: 0deg, + $skewy: 0deg, + $originx: false, + $originy: false +) { + $transform : scale($scale) rotate($rotate) translate($transx, $transy) skew($skewx, $skewy); + @include apply-transform($transform); + @include transform-origin($originx, $originy); +} + +// Transform Partials +// +// These work well on their own, but they don't add to each other, they override. +// Use them with extra origin args, or along side +transform-origin + +// Adjust only the scale, with optional origin coordinates + +@mixin scale($scale: 1.25, $originx: false, $originy: false) { + @include apply-transform(scale($scale)); + @include transform-origin($originx, $originy); +} + +// Adjust only the rotation, with optional origin coordinates + +@mixin rotate($rotate: 45deg, $originx: false, $originy: false) { + @include apply-transform(rotate($rotate)); + @include transform-origin($originx, $originy); +} + +// Adjust only the translation + +@mixin translate($transx: 0, $transy: 0) { + @include apply-transform(translate($transx, $transy)); +} + +// Adjust only the skew, with optional origin coordinates +@mixin skew($skewx: 0deg, $skewy: 0deg, $originx: false, $originy: false) { + @include apply-transform(skew($skewx, $skewy)); + @include transform-origin($originx, $originy); +} diff --git a/forum/static/css/compass/css3/_transform.scss b/forum/static/css/compass/css3/_transform.scss new file mode 100755 index 0000000..ecd50b7 --- /dev/null +++ b/forum/static/css/compass/css3/_transform.scss @@ -0,0 +1,598 @@ +@import "shared"; + +// @doc off +// Note ---------------------------------------------------------------------- +// Safari, Chrome, and Firefox all support 3D transforms. However, +// only in the most recent builds. You should also provide fallback 2d support for +// Opera and IE. IE10 is slated to have 3d enabled, but is currently unreleased. +// To make that easy, all 2D transforms include an browser-targeting toggle ($only3d) +// to switch between the two support lists. The toggle defaults to 'false' (2D), +// and also accepts 'true' (3D). Currently the lists are as follows: +// 2D: Mozilla, Webkit, Opera, Official +// 3D: Webkit, Firefox. + +// Available Transforms ------------------------------------------------------ +// - Scale (2d and 3d) +// - Rotate (2d and 3d) +// - Translate (2d and 3d) +// - Skew (2d only) + +// Transform Parameters ------------------------------------------------------ +// - Transform Origin (2d and 3d) +// - Perspective (3d) +// - Perspective Origin (3d) +// - Transform Style (3d) +// - Backface Visibility (3d) + +// Mixins -------------------------------------------------------------------- +// transform-origin +// - shortcuts: transform-origin2d, transform-origin3d +// - helpers: apply-origin +// transform +// - shortcuts: transform2d, transform3d +// - helpers: simple-transform, create-transform +// perspective +// - helpers: perspective-origin +// transform-style +// backface-visibility +// scale +// - shortcuts: scaleX, scaleY, scaleZ, scale3d +// rotate +// - shortcuts: rotateX, rotateY, rotate3d +// translate +// - shortcuts: translateX, translateY, translateZ, translate3d +// skew +// - shortcuts: skewX, skewY + +// Defaults ------------------------------------------------------------------ +// @doc on + +// The default x-origin for transforms +$default-origin-x : 50% !default; +// The default y-origin for transforms +$default-origin-y : 50% !default; +// The default z-origin for transforms +$default-origin-z : 50% !default; + + +// The default x-multiplier for scaling +$default-scale-x : 1.25 !default; +// The default y-multiplier for scaling +$default-scale-y : $default-scale-x !default; +// The default z-multiplier for scaling +$default-scale-z : $default-scale-x !default; + + +// The default angle for rotations +$default-rotate : 45deg !default; + + +// The default x-vector for the axis of 3d rotations +$default-vector-x : 1 !default; +// The default y-vector for the axis of 3d rotations +$default-vector-y : 1 !default; +// The default z-vector for the axis of 3d rotations +$default-vector-z : 1 !default; + + +// The default x-length for translations +$default-translate-x : 1em !default; +// The default y-length for translations +$default-translate-y : $default-translate-x !default; +// The default z-length for translations +$default-translate-z : $default-translate-x !default; + + +// The default x-angle for skewing +$default-skew-x : 5deg !default; +// The default y-angle for skewing +$default-skew-y : 5deg !default; + + +// **Transform-origin** +// Transform-origin sent as a complete string +// +// @include apply-origin( origin [, 3D-only ] ) +// +// where 'origin' is a space separated list containing 1-3 (x/y/z) coordinates +// in percentages, absolute (px, cm, in, em etc..) or relative +// (left, top, right, bottom, center) units +// +// @param only3d Set this to true to only apply this +// mixin where browsers have 3D support. +@mixin apply-origin($origin, $only3d) { + $only3d: $only3d or -compass-list-size(-compass-list($origin)) > 2; + @if $only3d { + @include experimental(transform-origin, $origin, + -moz, -webkit, -o, -ms, not -khtml, official + ); + } @else { + @include experimental(transform-origin, $origin, + -moz, -webkit, -o, -ms, not -khtml, official + ); + } +} + +// Transform-origin sent as individual arguments: +// +// @include transform-origin( [ origin-x, origin-y, origin-z, 3D-only ] ) +// +// where the 3 'origin-' arguments represent x/y/z coordinates. +// +// **NOTE:** setting z coordinates triggers 3D support list, leave false for 2D support +@mixin transform-origin( + $origin-x: $default-origin-x, + $origin-y: $default-origin-y, + $origin-z: false, + $only3d: if($origin-z, true, false) +) { + $origin: unquote(''); + @if $origin-x or $origin-y or $origin-z { + @if $origin-x { $origin: $origin-x; } @else { $origin: 50%; } + @if $origin-y { $origin: $origin $origin-y; } @else { @if $origin-z { $origin: $origin 50%; }} + @if $origin-z { $origin: $origin $origin-z; } + @include apply-origin($origin, $only3d); + } +} + + +// Transform sent as a complete string: +// +// @include transform( transforms [, 3D-only ] ) +// +// where 'transforms' is a space separated list of all the transforms to be applied. +@mixin transform( + $transform, + $only3d: false +) { + @if $only3d { + @include experimental(transform, $transform, + -moz, -webkit, -o, -ms, not -khtml, official + ); + } @else { + @include experimental(transform, $transform, + -moz, -webkit, -o, -ms, not -khtml, official + ); + } +} + +// Shortcut to target all browsers with 2D transform support +@mixin transform2d($trans) { + @include transform($trans, false); +} + +// Shortcut to target only browsers with 3D transform support +@mixin transform3d($trans) { + @include transform($trans, true); +} + +// @doc off +// 3D Parameters ------------------------------------------------------------- +// @doc on + +// Set the perspective of 3D transforms on the children of an element: +// +// @include perspective( perspective ) +// +// where 'perspective' is a unitless number representing the depth of the +// z-axis. The higher the perspective, the more exaggerated the foreshortening. +// values from 500 to 1000 are more-or-less "normal" - a good starting-point. +@mixin perspective($p) { + @include experimental(perspective, $p, + -moz, -webkit, -o, -ms, not -khtml, official + ); +} + +// Set the origin position for the perspective +// +// @include perspective-origin(origin-x [origin-y]) +// +// where the two arguments represent x/y coordinates +@mixin perspective-origin($origin: 50%) { + @include experimental(perspective-origin, $origin, + -moz, -webkit, -o, -ms, not -khtml, official + ); +} + +// Determine whether a 3D objects children also live in the given 3D space +// +// @include transform-style( [ style ] ) +// +// where `style` can be either `flat` or `preserve-3d`. +// Browsers default to `flat`, mixin defaults to `preserve-3d`. +@mixin transform-style($style: preserve-3d) { + @include experimental(transform-style, $style, + -moz, -webkit, -o, -ms, not -khtml, official + ); +} + +// Determine the visibility of an element when it's back is turned +// +// @include backface-visibility( [ visibility ] ) +// +// where `visibility` can be either `visible` or `hidden`. +// Browsers default to visible, mixin defaults to hidden +@mixin backface-visibility($visibility: hidden) { + @include experimental(backface-visibility, $visibility, + -moz, -webkit, -o, -ms, not -khtml, official + ); +} + +// @doc off +// Transform Partials -------------------------------------------------------- +// These work well on their own, but they don't add to each other, they override. +// Use along with transform parameter mixins to adjust origin, perspective and style +// --------------------------------------------------------------------------- + + +// Scale --------------------------------------------------------------------- +// @doc on + +// Scale an object along the x and y axis: +// +// @include scale( [ scale-x, scale-y, perspective, 3D-only ] ) +// +// where the 'scale-' arguments are unitless multipliers of the x and y dimensions +// and perspective, which works the same as the stand-alone perspective property/mixin +// but applies to the individual element (multiplied with any parent perspective) +// +// **Note** This mixin cannot be combined with other transform mixins. +@mixin scale( + $scale-x: $default-scale-x, + $scale-y: $scale-x, + $perspective: false, + $only3d: false +) { + $trans: scale($scale-x, $scale-y); + @if $perspective { $trans: perspective($perspective) $trans; } + @include transform($trans, $only3d); +} + +// Scale an object along the x axis +// @include scaleX( [ scale-x, perspective, 3D-only ] ) +// +// **Note** This mixin cannot be combined with other transform mixins. +@mixin scaleX( + $scale: $default-scale-x, + $perspective: false, + $only3d: false +) { + $trans: scaleX($scale); + @if $perspective { $trans: perspective($perspective) $trans; } + @include transform($trans, $only3d); +} + +// Scale an object along the y axis +// @include scaleY( [ scale-y, perspective, 3D-only ] ) +// +// **Note** This mixin cannot be combined with other transform mixins. +@mixin scaleY( + $scale: $default-scale-y, + $perspective: false, + $only3d: false +) { + $trans: scaleY($scale); + @if $perspective { $trans: perspective($perspective) $trans; } + @include transform($trans, $only3d); +} + +// Scale an object along the z axis +// @include scaleZ( [ scale-z, perspective ] ) +// +// **Note** This mixin cannot be combined with other transform mixins. +@mixin scaleZ( + $scale: $default-scale-z, + $perspective: false +) { + $trans: scaleZ($scale); + @if $perspective { $trans: perspective($perspective) $trans; } + @include transform3d($trans); +} + +// Scale and object along all three axis +// @include scale3d( [ scale-x, scale-y, scale-z, perspective ] ) +// +// **Note** This mixin cannot be combined with other transform mixins. +@mixin scale3d( + $scale-x: $default-scale-x, + $scale-y: $default-scale-y, + $scale-z: $default-scale-z, + $perspective: false +) { + $trans: scale3d($scale-x, $scale-y, $scale-z); + @if $perspective { $trans: perspective($perspective) $trans; } + @include transform3d($trans); +} + +// @doc off +// Rotate -------------------------------------------------------------------- +// @doc on + +// Rotate an object around the z axis (2D) +// @include rotate( [ rotation, perspective, 3D-only ] ) +// where 'rotation' is an angle set in degrees (deg) or radian (rad) units +// +// **Note** This mixin cannot be combined with other transform mixins. +@mixin rotate( + $rotate: $default-rotate, + $perspective: false, + $only3d: false +) { + $trans: rotate($rotate); + @if $perspective { $trans: perspective($perspective) $trans; } + @include transform($trans, $only3d); +} + +// A longcut for 'rotate' in case you forget that 'z' is implied +// +// **Note** This mixin cannot be combined with other transform mixins. +@mixin rotateZ( + $rotate: $default-rotate, + $perspective: false, + $only3d: false +) { + @include rotate($rotate, $perspective, $only3d); +} + +// Rotate an object around the x axis (3D) +// @include rotateX( [ rotation, perspective ] ) +// +// **Note** This mixin cannot be combined with other transform mixins. +@mixin rotateX( + $rotate: $default-rotate, + $perspective: false +) { + $trans: rotateX($rotate); + @if $perspective { $trans: perspective($perspective) $trans; } + @include transform3d($trans); +} + +// Rotate an object around the y axis (3D) +// @include rotate( [ rotation, perspective ] ) +// +// **Note** This mixin cannot be combined with other transform mixins. +@mixin rotateY( + $rotate: $default-rotate, + $perspective: false +) { + $trans: rotateY($rotate); + @if $perspective { $trans: perspective($perspective) $trans; } + @include transform3d($trans); +} + +// Rotate an object around an arbitrary axis (3D) +// @include rotate( [ vector-x, vector-y, vector-z, rotation, perspective ] ) +// where the 'vector-' arguments accept unitless numbers. +// These numbers are not important on their own, but in relation to one another +// creating an axis from your transform-origin, along the axis of Xx = Yy = Zz. +// +// **Note** This mixin cannot be combined with other transform mixins. +@mixin rotate3d( + $vector-x: $default-vector-x, + $vector-y: $default-vector-y, + $vector-z: $default-vector-z, + $rotate: $default-rotate, + $perspective: false +) { + $trans: rotate3d($vector-x, $vector-y, $vector-z, $rotate); + @if $perspective { $trans: perspective($perspective) $trans; } + @include transform3d($trans); +} + +// @doc off +// Translate ----------------------------------------------------------------- +// @doc on + +// Move an object along the x or y axis (2D) +// @include translate( [ translate-x, translate-y, perspective, 3D-only ] ) +// where the 'translate-' arguments accept any distance in percentages or absolute (px, cm, in, em etc..) units. +// +// **Note** This mixin cannot be combined with other transform mixins. +@mixin translate( + $translate-x: $default-translate-x, + $translate-y: $default-translate-y, + $perspective: false, + $only3d: false +) { + $trans: translate($translate-x, $translate-y); + @if $perspective { $trans: perspective($perspective) $trans; } + @include transform($trans, $only3d); +} + +// Move an object along the x axis (2D) +// @include translate( [ translate-x, perspective, 3D-only ] ) +// +// **Note** This mixin cannot be combined with other transform mixins. +@mixin translateX( + $trans-x: $default-translate-x, + $perspective: false, + $only3d: false +) { + $trans: translateX($trans-x); + @if $perspective { $trans: perspective($perspective) $trans; } + @include transform($trans, $only3d); +} + +// Move an object along the y axis (2D) +// @include translate( [ translate-y, perspective, 3D-only ] ) +// +// **Note** This mixin cannot be combined with other transform mixins. +@mixin translateY( + $trans-y: $default-translate-y, + $perspective: false, + $only3d: false +) { + $trans: translateY($trans-y); + @if $perspective { $trans: perspective($perspective) $trans; } + @include transform($trans, $only3d); +} + +// Move an object along the z axis (3D) +// @include translate( [ translate-z, perspective ] ) +// +// **Note** This mixin cannot be combined with other transform mixins. +@mixin translateZ( + $trans-z: $default-translate-z, + $perspective: false +) { + $trans: translateZ($trans-z); + @if $perspective { $trans: perspective($perspective) $trans; } + @include transform3d($trans); +} + +// Move an object along the x, y and z axis (3D) +// @include translate( [ translate-x, translate-y, translate-z, perspective ] ) +// +// **Note** This mixin cannot be combined with other transform mixins. +@mixin translate3d( + $translate-x: $default-translate-x, + $translate-y: $default-translate-y, + $translate-z: $default-translate-z, + $perspective: false +) { + $trans: translate3d($translate-x, $translate-y, $translate-z); + @if $perspective { $trans: perspective($perspective) $trans; } + @include transform3d($trans); +} + +// @doc off +// Skew ---------------------------------------------------------------------- +// @doc on + +// Skew an element: +// +// @include skew( [ skew-x, skew-y, 3D-only ] ) +// +// where the 'skew-' arguments accept css angles in degrees (deg) or radian (rad) units. +// +// **Note** This mixin cannot be combined with other transform mixins. +@mixin skew( + $skew-x: $default-skew-x, + $skew-y: $default-skew-y, + $only3d: false +) { + $trans: skew($skew-x, $skew-y); + @include transform($trans, $only3d); +} + +// Skew an element along the x axiz +// +// @include skew( [ skew-x, 3D-only ] ) +// +// **Note** This mixin cannot be combined with other transform mixins. +@mixin skewX( + $skew-x: $default-skew-x, + $only3d: false +) { + $trans: skewX($skew-x); + @include transform($trans, $only3d); +} + +// Skew an element along the y axis +// +// @include skew( [ skew-y, 3D-only ] ) +// +// **Note** This mixin cannot be combined with other transform mixins. +@mixin skewY( + $skew-y: $default-skew-y, + $only3d: false +) { + $trans: skewY($skew-y); + @include transform($trans, $only3d); +} + + +// Full transform mixins +// For settings any combination of transforms as arguments +// These are complex and not highly recommended for daily use. They are mainly +// here for backward-compatibility purposes. +// +// * they include origin adjustments +// * scale takes a multiplier (unitless), rotate and skew take degrees (deg) +// +// **Note** This mixin cannot be combined with other transform mixins. +@mixin create-transform( + $perspective: false, + $scale-x: false, + $scale-y: false, + $scale-z: false, + $rotate-x: false, + $rotate-y: false, + $rotate-z: false, + $rotate3d: false, + $trans-x: false, + $trans-y: false, + $trans-z: false, + $skew-x: false, + $skew-y: false, + $origin-x: false, + $origin-y: false, + $origin-z: false, + $only3d: false +) { + $trans: unquote(""); + + // perspective + @if $perspective { $trans: perspective($perspective) ; } + + // scale + @if $scale-x and $scale-y { + @if $scale-z { $trans: $trans scale3d($scale-x, $scale-y, $scale-z); } + @else { $trans: $trans scale($scale-x, $scale-y); } + } @else { + @if $scale-x { $trans: $trans scaleX($scale-x); } + @if $scale-y { $trans: $trans scaleY($scale-y); } + @if $scale-z { $trans: $trans scaleZ($scale-z); } + } + + // rotate + @if $rotate-x { $trans: $trans rotateX($rotate-x); } + @if $rotate-y { $trans: $trans rotateY($rotate-y); } + @if $rotate-z { $trans: $trans rotateZ($rotate-z); } + @if $rotate3d { $trans: $trans rotate3d($rotate3d); } + + // translate + @if $trans-x and $trans-y { + @if $trans-z { $trans: $trans translate3d($trans-x, $trans-y, $trans-z); } + @else { $trans: $trans translate($trans-x, $trans-y); } + } @else { + @if $trans-x { $trans: $trans translateX($trans-x); } + @if $trans-y { $trans: $trans translateY($trans-y); } + @if $trans-z { $trans: $trans translateZ($trans-z); } + } + + // skew + @if $skew-x and $skew-y { $trans: $trans skew($skew-x, $skew-y); } + @else { + @if $skew-x { $trans: $trans skewX($skew-x); } + @if $skew-y { $trans: $trans skewY($skew-y); } + } + + // apply it! + @include transform($trans, $only3d); + @include transform-origin($origin-x, $origin-y, $origin-z, $only3d); +} + + +// A simplified set of options +// backwards-compatible with the previous version of the 'transform' mixin +@mixin simple-transform( + $scale: false, + $rotate: false, + $trans-x: false, + $trans-y: false, + $skew-x: false, + $skew-y: false, + $origin-x: false, + $origin-y: false +) { + @include create-transform( + false, + $scale, $scale, false, + false, false, $rotate, false, + $trans-x, $trans-y, false, + $skew-x, $skew-y, + $origin-x, $origin-y, false, + false + ); +} diff --git a/forum/static/css/compass/css3/_transition.scss b/forum/static/css/compass/css3/_transition.scss new file mode 100755 index 0000000..4c4cb8c --- /dev/null +++ b/forum/static/css/compass/css3/_transition.scss @@ -0,0 +1,221 @@ +@import "shared"; + +// CSS Transitions +// Currently only works in Webkit. +// +// * expected in CSS3, FireFox 3.6/7 and Opera Presto 2.3 +// * We'll be prepared. +// +// Including this submodule sets following defaults for the mixins: +// +// $default-transition-property : all +// $default-transition-duration : 1s +// $default-transition-function : false +// $default-transition-delay : false +// +// Override them if you like. Timing-function and delay are set to false for browser defaults (ease, 0s). + +$default-transition-property: all !default; + +$default-transition-duration: 1s !default; + +$default-transition-function: false !default; + +$default-transition-delay: false !default; + +$transitionable-prefixed-values: transform, transform-origin !default; + +// One or more properties to transition +// +// * for multiple, use a comma-delimited list +// * also accepts "all" or "none" + +@mixin transition-property($property-1: $default-transition-property, + $property-2 : false, + $property-3 : false, + $property-4 : false, + $property-5 : false, + $property-6 : false, + $property-7 : false, + $property-8 : false, + $property-9 : false, + $property-10: false +) { + @if type-of($property-1) == string { $property-1: unquote($property-1); } + $properties: compact($property-1, $property-2, $property-3, $property-4, $property-5, $property-6, $property-7, $property-8, $property-9, $property-10); + @if $experimental-support-for-webkit { -webkit-transition-property : prefixed-for-transition(-webkit, $properties); } + @if $experimental-support-for-mozilla { -moz-transition-property : prefixed-for-transition(-moz, $properties); } + @if $experimental-support-for-opera { -o-transition-property : prefixed-for-transition(-o, $properties); } + transition-property : $properties; +} + +// One or more durations in seconds +// +// * for multiple, use a comma-delimited list +// * these durations will affect the properties in the same list position + +@mixin transition-duration($duration-1: $default-transition-duration, + $duration-2 : false, + $duration-3 : false, + $duration-4 : false, + $duration-5 : false, + $duration-6 : false, + $duration-7 : false, + $duration-8 : false, + $duration-9 : false, + $duration-10: false +) { + @if type-of($duration-1) == string { $duration-1: unquote($duration-1); } + $durations: compact($duration-1, $duration-2, $duration-3, $duration-4, $duration-5, $duration-6, $duration-7, $duration-8, $duration-9, $duration-10); + @include experimental(transition-duration, $durations, + -moz, -webkit, -o, not -ms, not -khtml, official + ); +} + +// One or more timing functions +// +// * [ ease | linear | ease-in | ease-out | ease-in-out | cubic-bezier(x1, y1, x2, y2)] +// * For multiple, use a comma-delimited list +// * These functions will effect the properties in the same list position + +@mixin transition-timing-function($function-1: $default-transition-function, + $function-2 : false, + $function-3 : false, + $function-4 : false, + $function-5 : false, + $function-6 : false, + $function-7 : false, + $function-8 : false, + $function-9 : false, + $function-10: false +) { + $function-1: unquote($function-1); + $functions: compact($function-1, $function-2, $function-3, $function-4, $function-5, $function-6, $function-7, $function-8, $function-9, $function-10); + @include experimental(transition-timing-function, $functions, + -moz, -webkit, -o, not -ms, not -khtml, official + ); +} + +// One or more transition-delays in seconds +// +// * for multiple, use a comma-delimited list +// * these delays will effect the properties in the same list position + +@mixin transition-delay($delay-1: $default-transition-delay, + $delay-2 : false, + $delay-3 : false, + $delay-4 : false, + $delay-5 : false, + $delay-6 : false, + $delay-7 : false, + $delay-8 : false, + $delay-9 : false, + $delay-10: false +) { + @if type-of($delay-1) == string { $delay-1: unquote($delay-1); } + $delays: compact($delay-1, $delay-2, $delay-3, $delay-4, $delay-5, $delay-6, $delay-7, $delay-8, $delay-9, $delay-10); + @include experimental(transition-delay, $delays, + -moz, -webkit, -o, not -ms, not -khtml, official + ); +} + +// Transition all-in-one shorthand + +@mixin single-transition( + $property: $default-transition-property, + $duration: $default-transition-duration, + $function: $default-transition-function, + $delay: $default-transition-delay +) { + @include transition(compact($property $duration $function $delay)); +} + +@mixin transition( + $transition-1 : default, + $transition-2 : false, + $transition-3 : false, + $transition-4 : false, + $transition-5 : false, + $transition-6 : false, + $transition-7 : false, + $transition-8 : false, + $transition-9 : false, + $transition-10: false +) { + @if $transition-1 == default { + $transition-1 : compact($default-transition-property $default-transition-duration $default-transition-function $default-transition-delay); + } + $transitions: false; + @if type-of($transition-1) == list and type-of(nth($transition-1,1)) == list { + $transitions: join($transition-1, compact($transition-2, $transition-3, $transition-4, $transition-5, $transition-6, $transition-7, $transition-8, $transition-9, $transition-10), comma); + } @else { + $transitions : compact($transition-1, $transition-2, $transition-3, $transition-4, $transition-5, $transition-6, $transition-7, $transition-8, $transition-9, $transition-10); + } + $delays: comma-list(); + $has-delays: false; + $webkit-value: comma-list(); + $moz-value: comma-list(); + $o-value: comma-list(); + + // This block can be made considerably simpler at the point in time that + // we no longer need to deal with the differences in how delays are treated. + @each $transition in $transitions { + // Extract the values from the list + // (this would be cleaner if nth took a 3rd argument to provide a default value). + $property: nth($transition, 1); + $duration: false; + $timing-function: false; + $delay: false; + @if length($transition) > 1 { $duration: nth($transition, 2); } + @if length($transition) > 2 { $timing-function: nth($transition, 3); } + @if length($transition) > 3 { $delay: nth($transition, 4); $has-delays: true; } + + // If a delay is provided without a timing function + @if is-time($timing-function) and not $delay { $delay: $timing-function; $timing-function: false; $has-delays: true; } + + // Keep a list of delays in case one is specified + $delays: append($delays, if($delay, $delay, 0s)); + + $webkit-value: append($webkit-value, compact(prefixed-for-transition(-webkit, $property) $duration $timing-function)); + $moz-value: append( $moz-value, compact(prefixed-for-transition( -moz, $property) $duration $timing-function $delay)); + $o-value: append( $o-value, compact(prefixed-for-transition( -o, $property) $duration $timing-function $delay)); + } + + @if $experimental-support-for-webkit { -webkit-transition : $webkit-value; + // old webkit doesn't support the delay parameter in the shorthand so we progressively enhance it. + @if $has-delays { -webkit-transition-delay : $delays; } } + @if $experimental-support-for-mozilla { -moz-transition : $moz-value; } + @if $experimental-support-for-opera { -o-transition : $o-value; } + transition : $transitions; +} + +// coerce a list to be comma delimited or make a new, empty comma delimited list. +@function comma-list($list: ()) { + @return join((), $list, comma); +} + +// Returns `$property` with the given prefix if it is found in `$transitionable-prefixed-values`. +@function prefixed-for-transition($prefix, $property) { + @if type-of($property) == list { + $new-list: comma-list(); + @each $v in $property { + $new-list: append($new-list, prefixed-for-transition($prefix, $v)); + } + @return $new-list; + } @else { + @if index($transitionable-prefixed-values, $property) { + @return #{$prefix}-#{$property}; + } @else { + @return $property; + } + } +} + +// Checks if the value given is a unit of time. +@function is-time($value) { + @if type-of($value) == number { + @return not not index(s ms, unit($value)); + } @else { + @return false; + } +} diff --git a/forum/static/css/compass/css3/_user-interface.scss b/forum/static/css/compass/css3/_user-interface.scss new file mode 100755 index 0000000..e78b2fe --- /dev/null +++ b/forum/static/css/compass/css3/_user-interface.scss @@ -0,0 +1,17 @@ +// User Interface ------------------------------------------------------------ +// This file can be expanded to handle all the user interface properties as +// they become available in browsers: +// http://www.w3.org/TR/2000/WD-css3-userint-20000216 +@import "shared"; + + +// This property controls the selection model and granularity of an element. +// +// @param $select +// [ none | text | toggle | element | elements | all | inherit ] +@mixin user-select($select) { + $select: unquote($select); + @include experimental(user-select, $select, + -moz, -webkit, not -o, not -ms, -khtml, official + ); +} diff --git a/forum/static/css/compass/layout/_grid-background.scss b/forum/static/css/compass/layout/_grid-background.scss new file mode 100755 index 0000000..e7e7306 --- /dev/null +++ b/forum/static/css/compass/layout/_grid-background.scss @@ -0,0 +1,178 @@ +@import "compass/css3/images"; +@import "compass/css3/background-size"; + +// Set the color of your columns +$grid-background-column-color : rgba(100, 100, 225, 0.25) !default; +// Set the color of your gutters +$grid-background-gutter-color : rgba(0, 0, 0, 0) !default; + +// Set the total number of columns in your grid +$grid-background-total-columns : 24 !default; +// Set the width of your columns +$grid-background-column-width : 30px !default; +// Set the width of your gutters +$grid-background-gutter-width : 10px !default; +// Set the offset, if your columns are padded in from the container edge +$grid-background-offset : 0px !default; + +// Set the color of your baseline +$grid-background-baseline-color : rgba(0, 0, 0, 0.5) !default; +// Set the height of your baseline grid +$grid-background-baseline-height : 1.5em !default; + +// toggle your columns grids on and off +$show-column-grid-backgrounds : true !default; +// toggle your vertical grids on and off +$show-baseline-grid-backgrounds : true !default; +// toggle all your grids on and off +$show-grid-backgrounds : true !default; + +// optionally force your grid-image to remain fluid +// no matter what units you used to declared your grid. +$grid-background-force-fluid : false !default; + + +// Create the gradient needed for baseline grids +@function get-baseline-gradient( + $color : $grid-background-baseline-color +) { + $gradient: linear-gradient(bottom, $color 5%, rgba($color,0) 5%); + @return $gradient; +} + +// Create the color-stops needed for horizontal grids +@function build-grid-background( + $total : $grid-background-total-columns, + $column : $grid-background-column-width, + $gutter : $grid-background-gutter-width, + $offset : $grid-background-offset, + $column-color : $grid-background-column-color, + $gutter-color : $grid-background-gutter-color +) { + $grid: compact(); + $grid: append($grid, $gutter-color $offset, comma); + @for $i from 0 to $total { + + // $a represents the start of this column, initially equal to the offset + $a: $offset; + @if $i > 0 { $a: $a + (($column + $gutter) * $i); } + + // $g represents the start of this gutter, equal to $a plus one column-width + $g: $a + $column; + + // $z represents the end of a gutter, equal to $g plus one gutter-width + $z: $g + $gutter; + + @if (unit($a) == "%") and ($i == ($total - 1)) { + $z: 100%; + } + + // and we add this column/gutter pair to our grid + $grid: join($grid, ($column-color $a, $column-color $g, $gutter-color $g, $gutter-color $z)); + } + + @return $grid; +} + +// Return the gradient needed for horizontal grids +@function get-column-gradient( + $total : $grid-background-total-columns, + $column : $grid-background-column-width, + $gutter : $grid-background-gutter-width, + $offset : $grid-background-offset, + $column-color : $grid-background-column-color, + $gutter-color : $grid-background-gutter-color, + $force-fluid : $grid-background-force-fluid +) { + $grid: unquote(""); + + // don't force fluid grids when they are already fluid. + @if unit($column) == "%" { $force-fluid: false; } + + @if $force-fluid { + $grid: get-column-fluid-grid($total,$column,$gutter,$offset,$column-color,$gutter-color); + } @else { + $grid: build-grid-background($total,$column,$gutter,$offset,$column-color,$gutter-color); + } + + // return the horizontal grid as a gradient + $gradient: linear-gradient(left, $grid); + @return $gradient; +} + +// Convert a grid from fixed units into percentages. +@function get-column-fluid-grid( + $total : $grid-background-total-columns, + $column : $grid-background-column-width, + $gutter : $grid-background-gutter-width, + $offset : $grid-background-offset, + $column-color : $grid-background-column-color, + $gutter-color : $grid-background-gutter-color +) { + $context: ($column * $total) + ($gutter * ($total - 1) + ($offset * 2)); + $offset: $offset / $context * 100%; + $column: $column / $context * 100%; + $gutter: $gutter / $context * 100%; + + // return the horizontal grid as a set of color-stops + $grid: build-grid-background($total,$column,$gutter,$offset,$column-color,$gutter-color); + @return $grid; +} + + +// Add just the baseline grid to an element's background +@mixin baseline-grid-background( + $baseline : $grid-background-baseline-height, + $color : $grid-background-baseline-color +) { + @if $show-grid-backgrounds and $show-baseline-grid-backgrounds { + @include background-image(get-baseline-gradient($color)); + @include background-size(100% $baseline); + background-position: left top; + } +} + +// Add just the horizontal grid to an element's background +@mixin column-grid-background( + $total : $grid-background-total-columns, + $column : $grid-background-column-width, + $gutter : $grid-background-gutter-width, + $offset : $grid-background-offset, + $column-color : $grid-background-column-color, + $gutter-color : $grid-background-gutter-color, + $force-fluid : $grid-background-force-fluid +) { + @if $show-grid-backgrounds and $show-column-grid-backgrounds { + @include background-image( + get-column-gradient($total,$column,$gutter,$offset,$column-color,$gutter-color, $force-fluid) + ); + background-position: left top; + } +} + +// Add both horizontal and baseline grids to an element's background +@mixin grid-background( + $total : $grid-background-total-columns, + $column : $grid-background-column-width, + $gutter : $grid-background-gutter-width, + $baseline : $grid-background-baseline-height, + $offset : $grid-background-offset, + $column-color : $grid-background-column-color, + $gutter-color : $grid-background-gutter-color, + $baseline-color : $grid-background-baseline-color, + $force-fluid : $grid-background-force-fluid +) { + @if $show-grid-backgrounds { + @if $show-baseline-grid-backgrounds and $show-column-grid-backgrounds { + @include background-image( + get-baseline-gradient($baseline-color), + get-column-gradient($total,$column,$gutter,$offset,$column-color,$gutter-color, $force-fluid) + ); + @include background-size(100% $baseline, auto); + background-position: left top; + } @else { + @include baseline-grid-background($baseline, $baseline-color); + @include column-grid-background($total,$column,$gutter,$offset,$column-color,$gutter-color, $force-fluid); + } + } +} diff --git a/forum/static/css/compass/layout/_sticky-footer.scss b/forum/static/css/compass/layout/_sticky-footer.scss new file mode 100755 index 0000000..055f641 --- /dev/null +++ b/forum/static/css/compass/layout/_sticky-footer.scss @@ -0,0 +1,23 @@ +// Based on a [blog post by Ryan Fait](http://ryanfait.com/resources/footer-stick-to-bottom-of-page/). +// +// Must be mixed into the top level of your stylesheet. +// +// Footer element must be outside of root wrapper element. +// +// Footer must be a fixed height. + +@mixin sticky-footer($footer-height, $root-selector: unquote("#root"), $root-footer-selector: unquote("#root_footer"), $footer-selector: unquote("#footer")) { + html, body { + height: 100%; } + #{$root-selector} { + clear: both; + min-height: 100%; + height: auto !important; + height: 100%; + margin-bottom: -$footer-height; + #{$root-footer-selector} { + height: $footer-height; } } + #{$footer-selector} { + clear: both; + position: relative; + height: $footer-height; } } diff --git a/forum/static/css/compass/layout/_stretching.scss b/forum/static/css/compass/layout/_stretching.scss new file mode 100755 index 0000000..c123e3d --- /dev/null +++ b/forum/static/css/compass/layout/_stretching.scss @@ -0,0 +1,24 @@ + +// stretch element height to specified top and bottom position + +@mixin stretch-y($offset-top:0, $offset-bottom:0) { + @include stretch($offset-top, false, $offset-bottom, false); +} + + +// stretch element width to specified left and right position + +@mixin stretch-x($offset-left:0, $offset-right:0) { + @include stretch(false, $offset-right, false, $offset-left); +} + + +// shorthand to stretch element height and width + +@mixin stretch($offset-top:0, $offset-right:0, $offset-bottom:0, $offset-left:0) { + position: absolute; + @if $offset-top { top: $offset-top; } + @if $offset-bottom { bottom: $offset-bottom; } + @if $offset-left { left: $offset-left; } + @if $offset-right { right: $offset-right; } +} \ No newline at end of file diff --git a/forum/static/css/compass/reset/_utilities-legacy.scss b/forum/static/css/compass/reset/_utilities-legacy.scss new file mode 100755 index 0000000..8273ca3 --- /dev/null +++ b/forum/static/css/compass/reset/_utilities-legacy.scss @@ -0,0 +1,135 @@ +// Based on [Eric Meyer's reset](http://meyerweb.com/eric/thoughts/2007/05/01/reset-reloaded/) +// Global reset rules. +// For more specific resets, use the reset mixins provided below +// +// *Please Note*: tables still need `cellspacing="0"` in the markup. +@mixin global-reset { + html, body, div, span, applet, object, iframe, + h1, h2, h3, h4, h5, h6, p, blockquote, pre, + a, abbr, acronym, address, big, cite, code, + del, dfn, em, font, img, ins, kbd, q, s, samp, + small, strike, strong, sub, sup, tt, var, + dl, dt, dd, ol, ul, li, + fieldset, form, label, legend, + table, caption, tbody, tfoot, thead, tr, th, td { + @include reset-box-model; + @include reset-font; } + body { + @include reset-body; } + ol, ul { + @include reset-list-style; } + table { + @include reset-table; } + caption, th, td { + @include reset-table-cell; } + q, blockquote { + @include reset-quotation; } + a img { + @include reset-image-anchor-border; } } + +// Reset all elements within some selector scope. To reset the selector itself, +// mixin the appropriate reset mixin for that element type as well. This could be +// useful if you want to style a part of your page in a dramatically different way. +// +// *Please Note*: tables still need `cellspacing="0"` in the markup. +@mixin nested-reset { + div, span, object, iframe, h1, h2, h3, h4, h5, h6, p, + pre, a, abbr, acronym, address, code, del, dfn, em, img, + dl, dt, dd, ol, ul, li, fieldset, form, label, legend, caption, tbody, tfoot, thead, tr { + @include reset-box-model; + @include reset-font; } + table { + @include reset-table; } + caption, th, td { + @include reset-table-cell; } + q, blockquote { + @include reset-quotation; } + a img { + @include reset-image-anchor-border; } } + +// Reset the box model measurements. +@mixin reset-box-model { + margin: 0; + padding: 0; + border: 0; + outline: 0; } + +// Reset the font and vertical alignment. +@mixin reset-font { + font: { + weight: inherit; + style: inherit; + size: 100%; + family: inherit; }; + vertical-align: baseline; } + +// Resets the outline when focus. +// For accessibility you need to apply some styling in its place. +@mixin reset-focus { + outline: 0; } + +// Reset a body element. +@mixin reset-body { + line-height: 1; + color: black; + background: white; } + +// Reset the list style of an element. +@mixin reset-list-style { + list-style: none; } + +// Reset a table +@mixin reset-table { + border-collapse: separate; + border-spacing: 0; + vertical-align: middle; } + +// Reset a table cell (`th`, `td`) +@mixin reset-table-cell { + text-align: left; + font-weight: normal; + vertical-align: middle; } + +// Reset a quotation (`q`, `blockquote`) +@mixin reset-quotation { + quotes: "" ""; + &:before, &:after { + content: ""; } } + +// Resets the border. +@mixin reset-image-anchor-border { + border: none; } + +// Unrecognized elements are displayed inline. +// This reset provides a basic reset for html5 elements +// so they are rendered correctly in browsers that don't recognize them +// and reset in browsers that have default styles for them. +@mixin reset-html5 { + #{elements-of-type(html5-block)} { + @include reset-box-model; + display: block; } } + +// Resets the display of inline and block elements to their default display +// according to their tag type. Elements that have a default display that varies across +// versions of html or browser are not handled here, but this covers the 90% use case. +// Usage Example: +// +// // Turn off the display for both of these classes +// .unregistered-only, .registered-only +// display: none +// // Now turn only one of them back on depending on some other context. +// body.registered +// +reset-display(".registered-only") +// body.unregistered +// +reset-display(".unregistered-only") +@mixin reset-display($selector: "", $important: false) { + #{append-selector(elements-of-type("inline"), $selector)} { + @if $important { + display: inline !important; } + @else { + display: inline; } } + #{append-selector(elements-of-type("block"), $selector)} { + @if $important { + display: block !important; } + @else { + display: block; } } } diff --git a/forum/static/css/compass/reset/_utilities.scss b/forum/static/css/compass/reset/_utilities.scss new file mode 100755 index 0000000..d173f3e --- /dev/null +++ b/forum/static/css/compass/reset/_utilities.scss @@ -0,0 +1,142 @@ +// Based on [Eric Meyer's reset 2.0](http://meyerweb.com/eric/tools/css/reset/index.html) +// Global reset rules. +// For more specific resets, use the reset mixins provided below +@mixin global-reset { + html, body, div, span, applet, object, iframe, + h1, h2, h3, h4, h5, h6, p, blockquote, pre, + a, abbr, acronym, address, big, cite, code, + del, dfn, em, img, ins, kbd, q, s, samp, + small, strike, strong, sub, sup, tt, var, + b, u, i, center, + dl, dt, dd, ol, ul, li, + fieldset, form, label, legend, + table, caption, tbody, tfoot, thead, tr, th, td, + article, aside, canvas, details, embed, + figure, figcaption, footer, header, hgroup, + menu, nav, output, ruby, section, summary, + time, mark, audio, video { + @include reset-box-model; + @include reset-font; } + // Unlike Eric's original reset, we reset the html element to be compatible + // with the vertical rhythm mixins. + html { + @include reset-body; } + ol, ul { + @include reset-list-style; } + table { + @include reset-table; } + caption, th, td { + @include reset-table-cell; } + q, blockquote { + @include reset-quotation; } + a img { + @include reset-image-anchor-border; } + @include reset-html5; } + +// Reset all elements within some selector scope. To reset the selector itself, +// mixin the appropriate reset mixin for that element type as well. This could be +// useful if you want to style a part of your page in a dramatically different way. +@mixin nested-reset { + div, span, applet, object, iframe, + h1, h2, h3, h4, h5, h6, p, blockquote, pre, + a, abbr, acronym, address, big, cite, code, + del, dfn, em, img, ins, kbd, q, s, samp, + small, strike, strong, sub, sup, tt, var, + b, u, i, center, + dl, dt, dd, ol, ul, li, + fieldset, form, label, legend, + table, caption, tbody, tfoot, thead, tr, th, td, + article, aside, canvas, details, embed, + figure, figcaption, footer, header, hgroup, + menu, nav, output, ruby, section, summary, + time, mark, audio, video { + @include reset-box-model; + @include reset-font; } + table { + @include reset-table; } + caption, th, td { + @include reset-table-cell; } + q, blockquote { + @include reset-quotation; } + a img { + @include reset-image-anchor-border; } } + +// Reset the box model measurements. +@mixin reset-box-model { + margin: 0; + padding: 0; + border: 0; } + +// Reset the font and vertical alignment. +@mixin reset-font { + font: inherit; + font-size: 100%; + vertical-align: baseline; } + +// Resets the outline when focus. +// For accessibility you need to apply some styling in its place. +@mixin reset-focus { + outline: 0; } + +// Reset a body element. +@mixin reset-body { + line-height: 1; } + +// Reset the list style of an element. +@mixin reset-list-style { + list-style: none; } + +// Reset a table +@mixin reset-table { + border-collapse: collapse; + border-spacing: 0; } + +// Reset a table cell (`th`, `td`) +@mixin reset-table-cell { + text-align: left; + font-weight: normal; + vertical-align: middle; } + +// Reset a quotation (`q`, `blockquote`) +@mixin reset-quotation { + quotes: none; + &:before, &:after { + content: ""; + content: none; } } + +// Resets the border. +@mixin reset-image-anchor-border { + border: none; } + +// Unrecognized elements are displayed inline. +// This reset provides a basic reset for block html5 elements +// so they are rendered correctly in browsers that don't recognize them +// and reset in browsers that have default styles for them. +@mixin reset-html5 { + #{elements-of-type(html5-block)} { + display: block; } } + +// Resets the display of inline and block elements to their default display +// according to their tag type. Elements that have a default display that varies across +// versions of html or browser are not handled here, but this covers the 90% use case. +// Usage Example: +// +// // Turn off the display for both of these classes +// .unregistered-only, .registered-only +// display: none +// // Now turn only one of them back on depending on some other context. +// body.registered +// +reset-display(".registered-only") +// body.unregistered +// +reset-display(".unregistered-only") +@mixin reset-display($selector: "", $important: false) { + #{append-selector(elements-of-type("inline"), $selector)} { + @if $important { + display: inline !important; } + @else { + display: inline; } } + #{append-selector(elements-of-type("block"), $selector)} { + @if $important { + display: block !important; } + @else { + display: block; } } } diff --git a/forum/static/css/compass/typography/_links.scss b/forum/static/css/compass/typography/_links.scss new file mode 100755 index 0000000..735000e --- /dev/null +++ b/forum/static/css/compass/typography/_links.scss @@ -0,0 +1,3 @@ +@import "links/hover-link"; +@import "links/link-colors"; +@import "links/unstyled-link"; diff --git a/forum/static/css/compass/typography/_lists.scss b/forum/static/css/compass/typography/_lists.scss new file mode 100755 index 0000000..3365f30 --- /dev/null +++ b/forum/static/css/compass/typography/_lists.scss @@ -0,0 +1,4 @@ +@import "lists/horizontal-list"; +@import "lists/inline-list"; +@import "lists/inline-block-list"; +@import "lists/bullets"; diff --git a/forum/static/css/compass/typography/_text.scss b/forum/static/css/compass/typography/_text.scss new file mode 100755 index 0000000..885f729 --- /dev/null +++ b/forum/static/css/compass/typography/_text.scss @@ -0,0 +1,4 @@ +@import "text/ellipsis"; +@import "text/nowrap"; +@import "text/replacement"; +@import "text/force-wrap"; diff --git a/forum/static/css/compass/typography/_vertical_rhythm.scss b/forum/static/css/compass/typography/_vertical_rhythm.scss new file mode 100755 index 0000000..999d1fb --- /dev/null +++ b/forum/static/css/compass/typography/_vertical_rhythm.scss @@ -0,0 +1,221 @@ +@import "compass/layout/grid-background"; + +// The base font size. +$base-font-size: 16px !default; + +// The base line height determines the basic unit of vertical rhythm. +$base-line-height: 24px !default; + +// Set the default border style for rhythm borders. +$default-rhythm-border-style: solid !default; + +// The default font size in all browsers. +$browser-default-font-size: 16px; + +// Set to false if you want to use absolute pixels in sizing your typography. +$relative-font-sizing: true !default; + +// Allows the `adjust-font-size-to` mixin and the `lines-for-font-size` function +// to round the line height to the nearest half line height instead of the +// nearest integral line height to avoid large spacing between lines. +$round-to-nearest-half-line: false !default; + +// Ensure there is at least this many pixels +// of vertical padding above and below the text. +$min-line-padding: 2px !default; + +// $base-font-size but in your output unit of choice. +// Defaults to 1em when `$relative-font-sizing` is true. +$font-unit: if($relative-font-sizing, 1em, $base-font-size) !default; + +// The basic unit of font rhythm. +$base-rhythm-unit: $base-line-height / $base-font-size * $font-unit; + +// The leader is the amount of whitespace in a line. +// It might be useful in your calculations. +$base-leader: ($base-line-height - $base-font-size) * $font-unit / $base-font-size; + +// The half-leader is the amount of whitespace above and below a line. +// It might be useful in your calculations. +$base-half-leader: $base-leader / 2; + +// True if a number has a relative unit. +@function relative-unit($number) { + @return unit($number) == "%" or unit($number) == "em" or unit($number) == "rem" +} + +// True if a number has an absolute unit. +@function absolute-unit($number) { + @return not (relative-unit($number) or unitless($number)); +} + +@if $relative-font-sizing and not relative-unit($font-unit) { + @warn "$relative-font-sizing is true but $font-unit is set to #{$font-unit} which is not a relative unit."; +} + +// Establishes a font baseline for the given font-size. +@mixin establish-baseline($font-size: $base-font-size) { + // IE 6 refuses to resize fonts set in pixels and it weirdly resizes fonts + // whose root is set in ems. So we set the root font size in percentages of + // the default font size. + * html { + font-size: 100% * ($font-size / $browser-default-font-size); + } + html { + font-size: $font-size; + @include adjust-leading-to(1, if($relative-font-sizing, $font-size, $base-font-size)); + } +} + +// Resets the line-height to 1 vertical rhythm unit. +// Does not work on elements whose font-size is different from $base-font-size. +// +// @deprecated This mixin will be removed in the next release. +// Please use the `adjust-leading-to` mixin instead. +@mixin reset-baseline { + @include adjust-leading-to(1, if($relative-font-sizing, $base-font-size, $base-font-size)); +} + +// Show a background image that can be used to debug your alignments. +// Include the $img argument if you would rather use your own image than the +// Compass default gradient image. +@mixin debug-vertical-alignment($img: false) { + @if $img { + background: image-url($img); + } @else { + @include baseline-grid-background($base-rhythm-unit); + } +} + +// Adjust a block to have a different font size and line height to maintain the +// rhythm. $lines specifies how many multiples of the baseline rhythm each line +// of this font should use up. It does not have to be an integer, but it +// defaults to the smallest integer that is large enough to fit the font. +// Use $from-size to adjust from a font-size other than the base font-size. +@mixin adjust-font-size-to($to-size, $lines: lines-for-font-size($to-size), $from-size: $base-font-size) { + @if not $relative-font-sizing and $from-size != $base-font-size { + @warn "$relative-font-sizing is false but a relative font size was passed to adjust-font-size-to"; + } + font-size: $font-unit * $to-size / $from-size; + @include adjust-leading-to($lines, if($relative-font-sizing, $to-size, $base-font-size)); +} + +// Adjust a block to have different line height to maintain the rhythm. +// $lines specifies how many multiples of the baseline rhythm each line of this +// font should use up. It does not have to be an integer, but it defaults to the +// smallest integer that is large enough to fit the font. +@mixin adjust-leading-to($lines, $font-size: $base-font-size) { + line-height: rhythm($lines, $font-size); +} + +// Calculate rhythm units. +@function rhythm( + $lines: 1, + $font-size: $base-font-size, + $offset: 0 +) { + @if not $relative-font-sizing and $font-size != $base-font-size { + @warn "$relative-font-sizing is false but a relative font size was passed to the rhythm function"; + } + $rhythm: $font-unit * ($lines * $base-line-height - $offset) / $font-size; + // Round the pixels down to nearest integer. + @if unit($rhythm) == px { + $rhythm: floor($rhythm); + } + @return $rhythm; +} + +// Calculate the minimum multiple of rhythm units needed to contain the font-size. +@function lines-for-font-size($font-size) { + $lines: if($round-to-nearest-half-line, + ceil(2 * $font-size / $base-line-height) / 2, + ceil($font-size / $base-line-height)); + @if $lines * $base-line-height - $font-size < $min-line-padding * 2 { + $lines: $lines + if($round-to-nearest-half-line, 0.5, 1); + } + @return $lines; +} + +// Apply leading whitespace. The $property can be margin or padding. +@mixin leader($lines: 1, $font-size: $base-font-size, $property: margin) { + #{$property}-top: rhythm($lines, $font-size); +} + +// Apply leading whitespace as padding. +@mixin padding-leader($lines: 1, $font-size: $base-font-size) { + padding-top: rhythm($lines, $font-size); +} + +// Apply leading whitespace as margin. +@mixin margin-leader($lines: 1, $font-size: $base-font-size) { + margin-top: rhythm($lines, $font-size); +} + +// Apply trailing whitespace. The $property can be margin or padding. +@mixin trailer($lines: 1, $font-size: $base-font-size, $property: margin) { + #{$property}-bottom: rhythm($lines, $font-size); +} + +// Apply trailing whitespace as padding. +@mixin padding-trailer($lines: 1, $font-size: $base-font-size) { + padding-bottom: rhythm($lines, $font-size); +} + +// Apply trailing whitespace as margin. +@mixin margin-trailer($lines: 1, $font-size: $base-font-size) { + margin-bottom: rhythm($lines, $font-size); +} + +// Shorthand mixin to apply whitespace for top and bottom margins and padding. +@mixin rhythm($leader: 0, $padding-leader: 0, $padding-trailer: 0, $trailer: 0, $font-size: $base-font-size) { + @include leader($leader, $font-size); + @include padding-leader($padding-leader, $font-size); + @include padding-trailer($padding-trailer, $font-size); + @include trailer($trailer, $font-size); +} + +// Apply a border and whitespace to any side without destroying the vertical +// rhythm. The whitespace must be greater than the width of the border. +@mixin apply-side-rhythm-border($side, $width: 1px, $lines: 1, $font-size: $base-font-size, $border-style: $default-rhythm-border-style) { + @if not $relative-font-sizing and $font-size != $base-font-size { + @warn "$relative-font-sizing is false but a relative font size was passed to apply-side-rhythm-border"; + } + border-#{$side}: { + style: $border-style; + width: $font-unit * $width / $font-size; + }; + padding-#{$side}: rhythm($lines, $font-size, $offset: $width); +} + +// Apply borders and whitespace equally to all sides. +@mixin rhythm-borders($width: 1px, $lines: 1, $font-size: $base-font-size, $border-style: $default-rhythm-border-style) { + @if not $relative-font-sizing and $font-size != $base-font-size { + @warn "$relative-font-sizing is false but a relative font size was passed to rhythm-borders"; + } + border: { + style: $border-style; + width: $font-unit * $width / $font-size; + }; + padding: rhythm($lines, $font-size, $offset: $width); +} + +// Apply a leading border. +@mixin leading-border($width: 1px, $lines: 1, $font-size: $base-font-size, $border-style: $default-rhythm-border-style) { + @include apply-side-rhythm-border(top, $width, $lines, $font-size, $border-style); +} + +// Apply a trailing border. +@mixin trailing-border($width: 1px, $lines: 1, $font-size: $base-font-size, $border-style: $default-rhythm-border-style) { + @include apply-side-rhythm-border(bottom, $width, $lines, $font-size, $border-style); +} + +// Apply both leading and trailing borders. +@mixin horizontal-borders($width: 1px, $lines: 1, $font-size: $base-font-size, $border-style: $default-rhythm-border-style) { + @include leading-border($width, $lines, $font-size, $border-style); + @include trailing-border($width, $lines, $font-size, $border-style); +} + +// Alias for `horizontal-borders` mixin. +@mixin h-borders($width: 1px, $lines: 1, $font-size: $base-font-size, $border-style: $default-rhythm-border-style) { + @include horizontal-borders($width, $lines, $font-size, $border-style); +} diff --git a/forum/static/css/compass/typography/links/_hover-link.scss b/forum/static/css/compass/typography/links/_hover-link.scss new file mode 100755 index 0000000..8c72bc1 --- /dev/null +++ b/forum/static/css/compass/typography/links/_hover-link.scss @@ -0,0 +1,5 @@ +// a link that only has an underline when you hover over it +@mixin hover-link { + text-decoration: none; + &:hover { + text-decoration: underline; } } diff --git a/forum/static/css/compass/typography/links/_link-colors.scss b/forum/static/css/compass/typography/links/_link-colors.scss new file mode 100755 index 0000000..5d641f7 --- /dev/null +++ b/forum/static/css/compass/typography/links/_link-colors.scss @@ -0,0 +1,28 @@ +// Set all the colors for a link with one mixin call. +// Order of arguments is: +// +// 1. normal +// 2. hover +// 3. active +// 4. visited +// 5. focus +// +// Those states not specified will inherit. +// Mixin to an anchor link like so: +// a +// +link-colors(#00c, #0cc, #c0c, #ccc, #cc0) + +@mixin link-colors($normal, $hover: false, $active: false, $visited: false, $focus: false) { + color: $normal; + @if $visited { + &:visited { + color: $visited; } } + @if $focus { + &:focus { + color: $focus; } } + @if $hover { + &:hover { + color: $hover; } } + @if $active { + &:active { + color: $active; } } } diff --git a/forum/static/css/compass/typography/links/_unstyled-link.scss b/forum/static/css/compass/typography/links/_unstyled-link.scss new file mode 100755 index 0000000..e39c2d6 --- /dev/null +++ b/forum/static/css/compass/typography/links/_unstyled-link.scss @@ -0,0 +1,7 @@ +// A link that looks and acts like the text it is contained within +@mixin unstyled-link { + color: inherit; + text-decoration: inherit; + cursor: inherit; + &:active, &:focus { + outline: none; } } diff --git a/forum/static/css/compass/typography/lists/_bullets.scss b/forum/static/css/compass/typography/lists/_bullets.scss new file mode 100755 index 0000000..958eefc --- /dev/null +++ b/forum/static/css/compass/typography/lists/_bullets.scss @@ -0,0 +1,34 @@ +// Turn off the bullet for an element of a list +@mixin no-bullet { + list-style-image : none; + list-style-type : none; + margin-left : 0; +} + +// turns off the bullets for an entire list +@mixin no-bullets { + list-style: none; + li { @include no-bullet; } +} + +// Make a list(ul/ol) have an image bullet. +// +// The mixin should be used like this for an icon that is 5x7: +// +// ul.pretty +// +pretty-bullets("my-icon.png", 5px, 7px) +// +// Additionally, if the image dimensions are not provided, +// The image dimensions will be extracted from the image itself. +// +// ul.pretty +// +pretty-bullets("my-icon.png") +// +@mixin pretty-bullets($bullet-icon, $width: image-width($bullet-icon), $height: image-height($bullet-icon), $line-height: 18px, $padding: 14px) { + margin-left: 0; + li { + padding-left: $padding; + background: image-url($bullet-icon) no-repeat ($padding - $width) / 2 ($line-height - $height) / 2; + list-style-type: none; + } +} diff --git a/forum/static/css/compass/typography/lists/_horizontal-list.scss b/forum/static/css/compass/typography/lists/_horizontal-list.scss new file mode 100755 index 0000000..159b659 --- /dev/null +++ b/forum/static/css/compass/typography/lists/_horizontal-list.scss @@ -0,0 +1,61 @@ +// Horizontal list layout module. +// +// Easy mode using simple descendant li selectors: +// +// ul.nav +// +horizontal-list +// +// Advanced mode: +// If you need to target the list items using a different selector then use +// +horizontal-list-container on your ul/ol and +horizontal-list-item on your li. +// This may help when working on layouts involving nested lists. For example: +// +// ul.nav +// +horizontal-list-container +// > li +// +horizontal-list-item + +@import "bullets"; +@import "compass/utilities/general/clearfix"; +@import "compass/utilities/general/reset"; +@import "compass/utilities/general/float"; + +// Can be mixed into any selector that target a ul or ol that is meant +// to have a horizontal layout. Used to implement +horizontal-list. +@mixin horizontal-list-container { + @include reset-box-model; + @include clearfix; } + +// Can be mixed into any li selector that is meant to participate in a horizontal layout. +// Used to implement +horizontal-list. +// +// :last-child is not fully supported +// see http://www.quirksmode.org/css/contents.html#t29 for the support matrix +// +// IE8 ignores rules that are included on the same line as :last-child +// see http://www.richardscarrott.co.uk/posts/view/ie8-last-child-bug for details +// +// Setting `$padding` to `false` disables the padding between list elements +@mixin horizontal-list-item($padding: 4px, $direction: left) { + @include no-bullet; + white-space: nowrap; + @include float($direction); + @if $padding { + padding: { + left: $padding; + right: $padding; + } + &:first-child, &.first { padding-#{$direction}: 0; } + &:last-child { padding-#{opposite-position($direction)}: 0; } + &.last { padding-#{opposite-position($direction)}: 0; } + } +} + +// A list(ol,ul) that is layed out such that the elements are floated left and won't wrap. +// This is not an inline list. +// +// Setting `$padding` to `false` disables the padding between list elements +@mixin horizontal-list($padding: 4px, $direction: left) { + @include horizontal-list-container; + li { + @include horizontal-list-item($padding, $direction); } } diff --git a/forum/static/css/compass/typography/lists/_inline-block-list.scss b/forum/static/css/compass/typography/lists/_inline-block-list.scss new file mode 100755 index 0000000..7c698c9 --- /dev/null +++ b/forum/static/css/compass/typography/lists/_inline-block-list.scss @@ -0,0 +1,50 @@ +// Inline-Block list layout module. +// +// Easy mode using simple descendant li selectors: +// +// ul.nav { +// @import inline-block-list; +// } +// +// Advanced mode: +// If you need to target the list items using a different selector then use +// `@include inline-block-list-container` on your ul/ol and +// `@include inline-block-list-item` on your li. This may help when working +// on layouts involving nested lists. For example: +// +// ul.nav { +// @include inline-block-list-container; +// > li { +// @include inline-block-list-item; +// } +// } + +@import "bullets"; +@import "horizontal-list"; +@import "compass/utilities/general/float"; +@import "compass/css3/inline-block"; + +// Can be mixed into any selector that target a ul or ol that is meant +// to have an inline-block layout. Used to implement `inline-block-list`. +@mixin inline-block-list-container { + @include horizontal-list-container; } + +// Can be mixed into any li selector that is meant to participate in a horizontal layout. +// Used to implement `inline-block-list`. +@mixin inline-block-list-item($padding: false) { + @include no-bullet; + @include inline-block; + white-space: nowrap; + @if $padding { + padding: { + left: $padding; + right: $padding; + }; + } +} + +// A list(ol,ul) that is layed out such that the elements are inline-block and won't wrap. +@mixin inline-block-list($padding: false) { + @include inline-block-list-container; + li { + @include inline-block-list-item($padding); } } diff --git a/forum/static/css/compass/typography/lists/_inline-list.scss b/forum/static/css/compass/typography/lists/_inline-list.scss new file mode 100755 index 0000000..caff6fd --- /dev/null +++ b/forum/static/css/compass/typography/lists/_inline-list.scss @@ -0,0 +1,44 @@ +// makes a list inline. + +@mixin inline-list { + list-style-type: none; + &, & li { + margin: 0px; + padding: 0px; + display: inline; + } +} + +// makes an inline list delimited with the passed string. +// Defaults to making a comma-separated list. +// +// Please make note of the browser support issues before using this mixin: +// +// use of `content` and `:after` is not fully supported in all browsers. +// See quirksmode for the [support matrix](http://www.quirksmode.org/css/contents.html#t15) +// +// `:last-child` is not fully supported. +// see quirksmode for the [support matrix](http://www.quirksmode.org/css/contents.html#t29). +// +// IE8 ignores rules that are included on the same line as :last-child +// see http://www.richardscarrott.co.uk/posts/view/ie8-last-child-bug for details + +@mixin delimited-list($separator: ", ") { + @include inline-list; + li { + &:after { content: $separator; } + &:last-child { + &:after { content: ""; } + } + &.last { + &:after { content: ""; } + } + } +} + +// See [delimited-list](#mixin-delimited-list) +// @deprecated +@mixin comma-delimited-list { + @warn "comma-delimited-list is deprecated. Please use delimited-list instead."; + @include delimited-list; +} diff --git a/forum/static/css/compass/typography/text/_ellipsis.scss b/forum/static/css/compass/typography/text/_ellipsis.scss new file mode 100755 index 0000000..3b3db25 --- /dev/null +++ b/forum/static/css/compass/typography/text/_ellipsis.scss @@ -0,0 +1,25 @@ +@import "compass/css3/shared"; + +// To get full firefox support, you must install the ellipsis pattern: +// +// compass install compass/ellipsis +$use-mozilla-ellipsis-binding: false !default; + +// This technique, by [Justin Maxwell](http://code404.com/), was originally +// published [here](http://mattsnider.com/css/css-string-truncation-with-ellipsis/). +// Firefox implementation by [Rikkert Koppes](http://www.rikkertkoppes.com/thoughts/2008/6/). +@mixin ellipsis($no-wrap: true) { + @if $no-wrap { white-space: nowrap; } + overflow: hidden; + @include experimental(text-overflow, ellipsis, + not -moz, + not -webkit, + -o, + -ms, + not -khtml, + official + ); + @if $experimental-support-for-mozilla and $use-mozilla-ellipsis-binding { + -moz-binding: stylesheet-url(unquote("xml/ellipsis.xml#ellipsis")); + } +} diff --git a/forum/static/css/compass/typography/text/_force-wrap.scss b/forum/static/css/compass/typography/text/_force-wrap.scss new file mode 100755 index 0000000..8a14e8f --- /dev/null +++ b/forum/static/css/compass/typography/text/_force-wrap.scss @@ -0,0 +1,12 @@ +// Prevent long urls and text from breaking layouts +// [originally from perishablepress.com](http://perishablepress.com/press/2010/06/01/wrapping-content/) +@mixin force-wrap { + white-space: pre; // CSS 2.0 + white-space: pre-wrap; // CSS 2.1 + white-space: pre-line; // CSS 3.0 + white-space: -pre-wrap; // Opera 4-6 + white-space: -o-pre-wrap; // Opera 7 + white-space: -moz-pre-wrap; // Mozilla + white-space: -hp-pre-wrap; // HP Printers + word-wrap: break-word; // IE 5+ +} diff --git a/forum/static/css/compass/typography/text/_nowrap.scss b/forum/static/css/compass/typography/text/_nowrap.scss new file mode 100755 index 0000000..1613dd6 --- /dev/null +++ b/forum/static/css/compass/typography/text/_nowrap.scss @@ -0,0 +1,2 @@ +// When remembering whether or not there's a hyphen in white-space is too hard +@mixin nowrap { white-space: nowrap; } diff --git a/forum/static/css/compass/typography/text/_replacement.scss b/forum/static/css/compass/typography/text/_replacement.scss new file mode 100755 index 0000000..703571b --- /dev/null +++ b/forum/static/css/compass/typography/text/_replacement.scss @@ -0,0 +1,68 @@ +// Indicates the direction you prefer to move your text +// when hiding it. +// +// `left` is more robust, especially in older browsers. +// `right` seems have better runtime performance. +$hide-text-direction: left !default; + +// Hides html text and replaces it with an image. +// If you use this on an inline element, you will need to change the display to block or inline-block. +// Also, if the size of the image differs significantly from the font size, you'll need to set the width and/or height. +// +// Parameters: +// +// * `img` -- the relative path from the project image directory to the image, or a url literal. +// * `x` -- the x position of the background image. +// * `y` -- the y position of the background image. +@mixin replace-text($img, $x: 50%, $y: 50%) { + @include hide-text; + background: { + @if is-url($img) { + image: $img; + } @else { + image: image-url($img); + } + repeat: no-repeat; + position: $x $y; + }; +} + +// Like the `replace-text` mixin, but also sets the width +// and height of the element according the dimensions of the image. +// +// If you set `$inline` to true, then an inline image (data uri) will be used. +@mixin replace-text-with-dimensions($img, $x: 50%, $y: 50%, $inline: false) { + @include replace-text(if($inline, inline-image($img), $img), $x, $y); + width: image-width($img); + height: image-height($img); +} + +// Hides text in an element so you can see the background. +// +// The direction indicates how the text should be moved out of view. +// +// See `$hide-text-direction` for more information and to set this globally +// for your application. +@mixin hide-text($direction: $hide-text-direction) { + @if $direction == left { + $approximate-em-value: 12px / 1em; + $wider-than-any-screen: -9999em; + text-indent: $wider-than-any-screen * $approximate-em-value; + overflow: hidden; + text-align: left; + } @else { + // slightly wider than the box prevents issues with inline-block elements + text-indent: 110%; + white-space: nowrap; + overflow: hidden; + } +} + +// Hides text in an element by squishing the text into oblivion. +// Use this if you need to hide text contained in an inline element +// but still have it read by a screen reader. +@mixin squish-text { + font: 0/0 serif; + text-shadow: none; + color: transparent; +} diff --git a/forum/static/css/compass/utilities/_color.scss b/forum/static/css/compass/utilities/_color.scss new file mode 100755 index 0000000..0cc7fd1 --- /dev/null +++ b/forum/static/css/compass/utilities/_color.scss @@ -0,0 +1 @@ +@import "color/contrast"; \ No newline at end of file diff --git a/forum/static/css/compass/utilities/_general.scss b/forum/static/css/compass/utilities/_general.scss new file mode 100755 index 0000000..047e636 --- /dev/null +++ b/forum/static/css/compass/utilities/_general.scss @@ -0,0 +1,6 @@ +@import "general/reset"; +@import "general/clearfix"; +@import "general/float"; +@import "general/tag-cloud"; +@import "general/hacks"; +@import "general/min"; diff --git a/forum/static/css/compass/utilities/_links.scss b/forum/static/css/compass/utilities/_links.scss new file mode 100755 index 0000000..e0e3251 --- /dev/null +++ b/forum/static/css/compass/utilities/_links.scss @@ -0,0 +1,5 @@ +@warn "This import is deprecated. Use 'compass/typography/links' instead."; + +@import "../typography/links/hover-link"; +@import "../typography/links/link-colors"; +@import "../typography/links/unstyled-link"; diff --git a/forum/static/css/compass/utilities/_lists.scss b/forum/static/css/compass/utilities/_lists.scss new file mode 100755 index 0000000..4833ee1 --- /dev/null +++ b/forum/static/css/compass/utilities/_lists.scss @@ -0,0 +1,6 @@ +@warn "This import is deprecated. Use 'compass/typography/lists' instead."; + +@import "../typography/lists/horizontal-list"; +@import "../typography/lists/inline-list"; +@import "../typography/lists/inline-block-list"; +@import "../typography/lists/bullets"; diff --git a/forum/static/css/compass/utilities/_print.scss b/forum/static/css/compass/utilities/_print.scss new file mode 100755 index 0000000..4771e08 --- /dev/null +++ b/forum/static/css/compass/utilities/_print.scss @@ -0,0 +1,17 @@ +// Classes that are useful for controlling what gets printed. +// You must mix `+print-utilities` into your print stylesheet +// and `+print-utilities(screen)` into your screen stylesheet. +// Note: these aren't semantic. +@mixin print-utilities($media: print) { + @if $media == print { + .noprint, .no-print { display: none; } + #{elements-of-type(block)} { + &.print-only { display: block; } + } + #{elements-of-type(inline)} { + &.print-only { display: inline; } + } + } @else { + .print-only { display: none; } + } +} diff --git a/forum/static/css/compass/utilities/_sprites.scss b/forum/static/css/compass/utilities/_sprites.scss new file mode 100755 index 0000000..0066804 --- /dev/null +++ b/forum/static/css/compass/utilities/_sprites.scss @@ -0,0 +1,2 @@ +@import "sprites/base"; +@import "sprites/sprite-img"; diff --git a/forum/static/css/compass/utilities/_tables.scss b/forum/static/css/compass/utilities/_tables.scss new file mode 100755 index 0000000..4af1d51 --- /dev/null +++ b/forum/static/css/compass/utilities/_tables.scss @@ -0,0 +1,3 @@ +@import "tables/alternating-rows-and-columns"; +@import "tables/borders"; +@import "tables/scaffolding"; diff --git a/forum/static/css/compass/utilities/_text.scss b/forum/static/css/compass/utilities/_text.scss new file mode 100755 index 0000000..bb73c25 --- /dev/null +++ b/forum/static/css/compass/utilities/_text.scss @@ -0,0 +1,5 @@ +@warn "This import is deprecated. Use 'compass/typography/text' instead."; + +@import "../typography/text/ellipsis"; +@import "../typography/text/nowrap"; +@import "../typography/text/replacement"; diff --git a/forum/static/css/compass/utilities/color/_contrast.scss b/forum/static/css/compass/utilities/color/_contrast.scss new file mode 100755 index 0000000..fc73905 --- /dev/null +++ b/forum/static/css/compass/utilities/color/_contrast.scss @@ -0,0 +1,28 @@ +$contrasted-dark-default: #000 !default; +$contrasted-light-default: #fff !default; +$contrasted-lightness-threshold: 30% !default; + +// Returns the `$light` color when the `$color` is dark +// and the `$dark` color when the `$color` is light. +// The `$threshold` is a percent between `0%` and `100%` and it determines +// when the lightness of `$color` changes from "dark" to "light". +@function contrast-color( + $color, + $dark: $contrasted-dark-default, + $light: $contrasted-light-default, + $threshold: $contrasted-lightness-threshold +) { + @return if(lightness($color) < $threshold, $light, $dark) +} + +// Sets the specified background color and calculates a dark or light contrasted text color. +// The arguments are passed through to the [contrast-color function](#function-contrast-color). +@mixin contrasted( + $background-color, + $dark: $contrasted-dark-default, + $light: $contrasted-light-default, + $threshold: $contrasted-lightness-threshold +) { + background-color: $background-color; + color: contrast-color($background-color, $dark, $light, $threshold); +} \ No newline at end of file diff --git a/forum/static/css/compass/utilities/general/_clearfix.scss b/forum/static/css/compass/utilities/general/_clearfix.scss new file mode 100755 index 0000000..73f9254 --- /dev/null +++ b/forum/static/css/compass/utilities/general/_clearfix.scss @@ -0,0 +1,44 @@ +// @doc off +// Extends the bottom of the element to enclose any floats it contains. +// @doc on + +@import "hacks"; + +// This basic method is preferred for the usual case, when positioned +// content will not show outside the bounds of the container. +// +// Recommendations include using this in conjunction with a width. +// Credit: [quirksmode.org](http://www.quirksmode.org/blog/archives/2005/03/clearing_floats.html) +@mixin clearfix { + overflow: hidden; + @include has-layout; +} + +// This older method from Position Is Everything called +// [Easy Clearing](http://www.positioniseverything.net/easyclearing.html) +// has the advantage of allowing positioned elements to hang +// outside the bounds of the container at the expense of more tricky CSS. +@mixin legacy-pie-clearfix { + &:after { + content : "\0020"; + display : block; + height : 0; + clear : both; + overflow : hidden; + visibility : hidden; + } + @include has-layout; +} + +// This is an updated version of the PIE clearfix method that reduces the amount of CSS output. +// If you need to support Firefox before 3.5 you need to use `legacy-pie-clearfix` instead. +// +// Adapted from: [A new micro clearfix hack](http://nicolasgallagher.com/micro-clearfix-hack/) +@mixin pie-clearfix { + &:after { + content: ""; + display: table; + clear: both; + } + @include has-layout; +} diff --git a/forum/static/css/compass/utilities/general/_float.scss b/forum/static/css/compass/utilities/general/_float.scss new file mode 100755 index 0000000..914f184 --- /dev/null +++ b/forum/static/css/compass/utilities/general/_float.scss @@ -0,0 +1,30 @@ +// Implementation of float:left with fix for the +// [double-margin bug in IE5/6](http://www.positioniseverything.net/explorer/doubled-margin.html) +@mixin float-left { + @include float(left); } + +// Implementation of float:right with fix for the +// [double-margin bug in IE5/6](http://www.positioniseverything.net/explorer/doubled-margin.html) +@mixin float-right { + @include float(right); } + +// Direction independent float mixin that fixes the +// [double-margin bug in IE5/6](http://www.positioniseverything.net/explorer/doubled-margin.html) +@mixin float($side: left) { + display: inline; + float: unquote($side); } + +// Resets floated elements back to their default of `float: none` and defaults +// to `display: block` unless you pass `inline` as an argument +// +// Usage Example: +// +// body.homepage +// #footer li +// +float-left +// body.signup +// #footer li +// +reset-float +@mixin reset-float($display: block) { + float: none; + display: $display; } \ No newline at end of file diff --git a/forum/static/css/compass/utilities/general/_hacks.scss b/forum/static/css/compass/utilities/general/_hacks.scss new file mode 100755 index 0000000..d5a6bae --- /dev/null +++ b/forum/static/css/compass/utilities/general/_hacks.scss @@ -0,0 +1,46 @@ +@import "compass/support"; + +// The `zoom` approach generates less CSS but does not validate. +// Set this to `block` to use the display-property to hack the +// element to gain layout. +$default-has-layout-approach: zoom !default; + +// This mixin causes an element matching the selector +// to gain the "hasLayout" property in internet explorer. +// More information on [hasLayout](http://reference.sitepoint.com/css/haslayout). +@mixin has-layout($approach: $default-has-layout-approach) { + @if $legacy-support-for-ie { + @if $approach == zoom { + @include has-layout-zoom; + } @else if $approach == block { + @include has-layout-block; + } @else { + @warn "Unknown has-layout approach: #{$approach}"; + @include has-layout-zoom; + } + } +} + +@mixin has-layout-zoom { + @if $legacy-support-for-ie6 or $legacy-support-for-ie7 { + *zoom: 1; + } +} + +@mixin has-layout-block { + @if $legacy-support-for-ie { + // This makes ie6 get layout + display: inline-block; + // and this puts it back to block + & { display: block; } + } +} + +// A hack to supply IE6 (and below) with a different property value. +// [Read more](http://www.cssportal.com/css-hacks/#in_css-important). +@mixin bang-hack($property, $value, $ie6-value) { + @if $legacy-support-for-ie6 { + #{$property}: #{$value} !important; + #{$property}: #{$ie6-value}; + } +} diff --git a/forum/static/css/compass/utilities/general/_min.scss b/forum/static/css/compass/utilities/general/_min.scss new file mode 100755 index 0000000..99a676b --- /dev/null +++ b/forum/static/css/compass/utilities/general/_min.scss @@ -0,0 +1,16 @@ +@import "hacks"; + +//** +// Cross browser min-height mixin. +@mixin min-height($value) { + @include hacked-minimum(height, $value); } + +//** +// Cross browser min-width mixin. +@mixin min-width($value) { + @include hacked-minimum(width, $value); } + +// @private This mixin is not meant to be used directly. +@mixin hacked-minimum($property, $value) { + min-#{$property}: $value; + @include bang-hack($property, auto, $value); } diff --git a/forum/static/css/compass/utilities/general/_reset.scss b/forum/static/css/compass/utilities/general/_reset.scss new file mode 100755 index 0000000..f5f6487 --- /dev/null +++ b/forum/static/css/compass/utilities/general/_reset.scss @@ -0,0 +1,2 @@ +// This module has moved. +@import "compass/reset/utilities"; \ No newline at end of file diff --git a/forum/static/css/compass/utilities/general/_tabs.scss b/forum/static/css/compass/utilities/general/_tabs.scss new file mode 100755 index 0000000..8b13789 --- /dev/null +++ b/forum/static/css/compass/utilities/general/_tabs.scss @@ -0,0 +1 @@ + diff --git a/forum/static/css/compass/utilities/general/_tag-cloud.scss b/forum/static/css/compass/utilities/general/_tag-cloud.scss new file mode 100755 index 0000000..7ccae05 --- /dev/null +++ b/forum/static/css/compass/utilities/general/_tag-cloud.scss @@ -0,0 +1,18 @@ +// Emits styles for a tag cloud +@mixin tag-cloud($base-size: 1em) { + font-size: $base-size; + line-height: 1.2 * $base-size; + .xxs, .xs, .s, .l, .xl, .xxl { + line-height: 1.2 * $base-size; } + .xxs { + font-size: $base-size / 2; } + .xs { + font-size: 2 * $base-size / 3; } + .s { + font-size: 3 * $base-size / 4; } + .l { + font-size: 4 * $base-size / 3; } + .xl { + font-size: 3 * $base-size / 2; } + .xxl { + font-size: 2 * $base-size; } } diff --git a/forum/static/css/compass/utilities/links/_hover-link.scss b/forum/static/css/compass/utilities/links/_hover-link.scss new file mode 100755 index 0000000..843459f --- /dev/null +++ b/forum/static/css/compass/utilities/links/_hover-link.scss @@ -0,0 +1,3 @@ +@warn "This import is deprecated. Use 'compass/typography/links/hover-link' instead."; + +@import "../../typography/links/hover-link"; diff --git a/forum/static/css/compass/utilities/links/_link-colors.scss b/forum/static/css/compass/utilities/links/_link-colors.scss new file mode 100755 index 0000000..fac9438 --- /dev/null +++ b/forum/static/css/compass/utilities/links/_link-colors.scss @@ -0,0 +1,3 @@ +@warn "This import is deprecated. Use 'compass/typography/links/link-colors' instead."; + +@import "../../typography/links/link-colors"; diff --git a/forum/static/css/compass/utilities/links/_unstyled-link.scss b/forum/static/css/compass/utilities/links/_unstyled-link.scss new file mode 100755 index 0000000..1c48f46 --- /dev/null +++ b/forum/static/css/compass/utilities/links/_unstyled-link.scss @@ -0,0 +1,3 @@ +@warn "This import is deprecated. Use 'compass/typography/links/unstyled-link' instead."; + +@import "../../typography/links/unstyled-link"; diff --git a/forum/static/css/compass/utilities/lists/_bullets.scss b/forum/static/css/compass/utilities/lists/_bullets.scss new file mode 100755 index 0000000..796e1cd --- /dev/null +++ b/forum/static/css/compass/utilities/lists/_bullets.scss @@ -0,0 +1,3 @@ +@warn "This import is deprecated. Use 'compass/typography/lists/bullets' instead."; + +@import "../../typography/lists/bullets"; diff --git a/forum/static/css/compass/utilities/lists/_horizontal-list.scss b/forum/static/css/compass/utilities/lists/_horizontal-list.scss new file mode 100755 index 0000000..38ae85c --- /dev/null +++ b/forum/static/css/compass/utilities/lists/_horizontal-list.scss @@ -0,0 +1,3 @@ +@warn "This import is deprecated. Use 'compass/typography/lists/horizontal-list' instead."; + +@import "../../typography/lists/horizontal-list"; diff --git a/forum/static/css/compass/utilities/lists/_inline-block-list.scss b/forum/static/css/compass/utilities/lists/_inline-block-list.scss new file mode 100755 index 0000000..5d4a129 --- /dev/null +++ b/forum/static/css/compass/utilities/lists/_inline-block-list.scss @@ -0,0 +1,3 @@ +@warn "This import is deprecated. Use 'compass/typography/lists/inline-block-list' instead."; + +@import "../../typography/lists/inline-block-list"; diff --git a/forum/static/css/compass/utilities/lists/_inline-list.scss b/forum/static/css/compass/utilities/lists/_inline-list.scss new file mode 100755 index 0000000..fb1dfeb --- /dev/null +++ b/forum/static/css/compass/utilities/lists/_inline-list.scss @@ -0,0 +1,3 @@ +@warn "This import is deprecated. Use 'compass/typography/lists/inline-list' instead."; + +@import "../../typography/lists/inline-list"; diff --git a/forum/static/css/compass/utilities/sprites/_base.scss b/forum/static/css/compass/utilities/sprites/_base.scss new file mode 100755 index 0000000..1b268a8 --- /dev/null +++ b/forum/static/css/compass/utilities/sprites/_base.scss @@ -0,0 +1,66 @@ +// Determines those states for which you want to enable magic sprite selectors +$sprite-selectors: hover, target, active !default; + +// Set the width and height of an element to the original +// dimensions of an image before it was included in the sprite. +@mixin sprite-dimensions($map, $sprite) { + height: image-height(sprite-file($map, $sprite)); + width: image-width(sprite-file($map, $sprite)); +} + +// Set the background position of the given sprite `$map` to display the +// sprite of the given `$sprite` name. You can move the image relative to its +// natural position by passing `$offset-x` and `$offset-y`. +@mixin sprite-background-position($map, $sprite, $offset-x: 0, $offset-y: 0) { + background-position: sprite-position($map, $sprite, $offset-x, $offset-y); +} + + +// Determines if you want to include magic selectors in your sprites +$disable-magic-sprite-selectors:false !default; + +// Include the position and (optionally) dimensions of this `$sprite` +// in the given sprite `$map`. The sprite url should come from either a base +// class or you can specify the `sprite-url` explicitly like this: +// +// background: $map no-repeat; +@mixin sprite($map, $sprite, $dimensions: false, $offset-x: 0, $offset-y: 0) { + @include sprite-background-position($map, $sprite, $offset-x, $offset-y); + @if $dimensions { + @include sprite-dimensions($map, $sprite); + } + @if not $disable-magic-sprite-selectors { + @include sprite-selectors($map, $sprite, $sprite, $offset-x, $offset-y); + } +} + +// Include the selectors for the `$sprite` given the `$map` and the +// `$full-sprite-name` +// @private +@mixin sprite-selectors($map, $sprite-name, $full-sprite-name, $offset-x: 0, $offset-y: 0) { + @each $selector in $sprite-selectors { + @if sprite_has_selector($map, $sprite-name, $selector) { + &:#{$selector}, &.#{$full-sprite-name}_#{$selector}, &.#{$full-sprite-name}-#{$selector} { + @include sprite-background-position($map, "#{$sprite-name}_#{$selector}", $offset-x, $offset-y); + } + } + } +} + +// Generates a class for each space separated name in `$sprite-names`. +// The class will be of the form .-. +// +// If a base class is provided, then each class will extend it. +// +// If `$dimensions` is `true`, the sprite dimensions will specified. +@mixin sprites($map, $sprite-names, $base-class: false, $dimensions: false, $prefix: sprite-map-name($map), $offset-x: 0, $offset-y: 0) { + @each $sprite-name in $sprite-names { + @if sprite_does_not_have_parent($map, $sprite-name) { + $full-sprite-name: "#{$prefix}-#{$sprite-name}"; + .#{$full-sprite-name} { + @if $base-class { @extend #{$base-class}; } + @include sprite($map, $sprite-name, $dimensions, $offset-x, $offset-y); + } + } + } +} \ No newline at end of file diff --git a/forum/static/css/compass/utilities/sprites/_sprite-img.scss b/forum/static/css/compass/utilities/sprites/_sprite-img.scss new file mode 100755 index 0000000..ff90c00 --- /dev/null +++ b/forum/static/css/compass/utilities/sprites/_sprite-img.scss @@ -0,0 +1,79 @@ +// @doc off +// Example 1: +// +// a.twitter +// +sprite-img("icons-32.png", 1) +// a.facebook +// +sprite-img("icons-32png", 2) +// +// Example 2: +// +// a +// +sprite-background("icons-32.png") +// a.twitter +// +sprite-column(1) +// a.facebook +// +sprite-row(2) +// @doc on + +$sprite-default-size: 32px !default; + +$sprite-default-margin: 0px !default; + +$sprite-image-default-width: $sprite-default-size !default; + +$sprite-image-default-height: $sprite-default-size !default; + +// Sets all the rules for a sprite from a given sprite image to show just one of the sprites. +// To reduce duplication use a sprite-bg mixin for common properties and a sprite-select mixin for positioning. +@mixin sprite-img($img, $col, $row: 1, $width: $sprite-image-default-width, $height: $sprite-image-default-height, $margin: $sprite-default-margin) { + @include sprite-background($img, $width, $height); + @include sprite-position($col, $row, $width, $height, $margin); +} + +// Sets rules common for all sprites, assumes you want a square, but allows a rectangular region. +@mixin sprite-background($img, $width: $sprite-default-size, $height: $width) { + @include sprite-background-rectangle($img, $width, $height); +} + +// Sets rules common for all sprites, assumes a rectangular region. +@mixin sprite-background-rectangle($img, $width: $sprite-image-default-width, $height: $sprite-image-default-height) { + background: image-url($img) no-repeat; + width: $width; + height: $height; + overflow: hidden; +} + +// Allows horizontal sprite positioning optimized for a single row of sprites. +@mixin sprite-column($col, $width: $sprite-image-default-width, $margin: $sprite-default-margin) { + @include sprite-position($col, 1, $width, 0px, $margin); +} + +// Allows vertical sprite positioning optimized for a single column of sprites. +@mixin sprite-row($row, $height: $sprite-image-default-height, $margin: $sprite-default-margin) { + @include sprite-position(1, $row, 0px, $height, $margin); +} + +// Allows vertical and horizontal sprite positioning from a grid of equal dimensioned sprites. +@mixin sprite-position($col, $row: 1, $width: $sprite-image-default-width, $height: $sprite-image-default-height, $margin: $sprite-default-margin) { + $x: ($col - 1) * -$width - ($col - 1) * $margin; + $y: ($row - 1) * -$height - ($row - 1) * $margin; + background-position: $x $y; +} + + + +// Similar to 'sprite-replace-text-with-dimensions' but does not autmaticly set the demensions +@mixin sprite-replace-text ($map, $sprite, $dimensions: false, $offset-x: 0, $offset-y: 0) { + @include hide-text; + @include sprite($map, $sprite, $dimensions, $offset-x, $offset-y); + background-image: $map; + background-repeat: no-repeat; +} + +// Similar to 'replace-text-with-dimensions' but with sprites +// To use, create your sprite and then pass it in the `$map` param +// The name of the image in the sprite folder should be `$img-name` +@mixin sprite-replace-text-with-dimensions ($map, $sprite, $offset-x: 0, $offset-y: 0){ + @include sprite-replace-text ($map, $sprite, true, $offset-x, $offset-y); +} \ No newline at end of file diff --git a/forum/static/css/compass/utilities/tables/_alternating-rows-and-columns.scss b/forum/static/css/compass/utilities/tables/_alternating-rows-and-columns.scss new file mode 100755 index 0000000..4da78e2 --- /dev/null +++ b/forum/static/css/compass/utilities/tables/_alternating-rows-and-columns.scss @@ -0,0 +1,22 @@ +@mixin alternating-rows-and-columns($even-row-color, $odd-row-color, $dark-intersection, $header-color: white, $footer-color: white) { + th { + background-color: $header-color; + &.even, &:nth-child(2n) { + background-color: $header-color - $dark-intersection; } } + tr { + &.odd, &:nth-child(2n+1) { + td { + background-color: $odd-row-color; + &.even, &:nth-child(2n) { + background-color: $odd-row-color - $dark-intersection; } } } + } + tr.even { + td { + background-color: $even-row-color; + &.even, &:nth-child(2n) { + background-color: $even-row-color - $dark-intersection; } } } + tfoot { + th, td { + background-color: $footer-color; + &.even, &:nth-child(2n) { + background-color: $footer-color - $dark-intersection; } } } } diff --git a/forum/static/css/compass/utilities/tables/_borders.scss b/forum/static/css/compass/utilities/tables/_borders.scss new file mode 100755 index 0000000..120896d --- /dev/null +++ b/forum/static/css/compass/utilities/tables/_borders.scss @@ -0,0 +1,33 @@ +@mixin outer-table-borders($width: 2px, $color: black) { + border: $width solid $color; + thead { + th { + border-bottom: $width solid $color; } } + tfoot { + th, td { + border-top: $width solid $color; } } + th { + &:first-child { + border-right: $width solid $color; } } } + +@mixin inner-table-borders($width: 2px, $color: black) { + th, td { + border: { + right: $width solid $color; + bottom: $width solid $color; + left-width: 0px; + top-width: 0px; }; + &:last-child, + &.last { + border-right-width: 0px; } } + +// IE8 ignores rules that are included on the same line as :last-child +// see http://www.richardscarrott.co.uk/posts/view/ie8-last-child-bug for details + + tbody, tfoot { + tr:last-child { + th, td { + border-bottom-width: 0px; } } + tr.last { + th, td { + border-bottom-width: 0px; } } } } diff --git a/forum/static/css/compass/utilities/tables/_scaffolding.scss b/forum/static/css/compass/utilities/tables/_scaffolding.scss new file mode 100755 index 0000000..cc19d04 --- /dev/null +++ b/forum/static/css/compass/utilities/tables/_scaffolding.scss @@ -0,0 +1,9 @@ +@mixin table-scaffolding { + th { + text-align: center; + font-weight: bold; } + td, + th { + padding: 2px; + &.numeric { + text-align: right; } } } diff --git a/forum/static/css/compass/utilities/text/_ellipsis.scss b/forum/static/css/compass/utilities/text/_ellipsis.scss new file mode 100755 index 0000000..b172754 --- /dev/null +++ b/forum/static/css/compass/utilities/text/_ellipsis.scss @@ -0,0 +1,3 @@ +@warn "This import is deprecated. Use 'compass/typography/text/ellipsis' instead."; + +@import "../../typography/text/ellipsis"; diff --git a/forum/static/css/compass/utilities/text/_nowrap.scss b/forum/static/css/compass/utilities/text/_nowrap.scss new file mode 100755 index 0000000..ca4a22f --- /dev/null +++ b/forum/static/css/compass/utilities/text/_nowrap.scss @@ -0,0 +1,3 @@ +@warn "This import is deprecated. Use 'compass/typography/text/nowrap' instead."; + +@import "../../typography/text/nowrap"; diff --git a/forum/static/css/compass/utilities/text/_replacement.scss b/forum/static/css/compass/utilities/text/_replacement.scss new file mode 100755 index 0000000..809c6a8 --- /dev/null +++ b/forum/static/css/compass/utilities/text/_replacement.scss @@ -0,0 +1,3 @@ +@warn "This import is deprecated. Use 'compass/typography/text/replacement' instead."; + +@import "../../typography/text/replacement"; diff --git a/forum/static/css/img/glyphicons-halflings-white.png b/forum/static/css/img/glyphicons-halflings-white.png new file mode 100755 index 0000000000000000000000000000000000000000..3bf6484a29d8da269f9bc874b25493a45fae3bae GIT binary patch literal 8777 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 B7G?kd literal 0 HcmV?d00001 diff --git a/forum/static/css/img/glyphicons-halflings.png b/forum/static/css/img/glyphicons-halflings.png new file mode 100755 index 0000000000000000000000000000000000000000..a9969993201f9cee63cf9f49217646347297b643 GIT binary patch literal 12799 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 literal 0 HcmV?d00001 diff --git a/forum/static/css/main.css b/forum/static/css/main.css new file mode 100755 index 0000000..30dc884 --- /dev/null +++ b/forum/static/css/main.css @@ -0,0 +1,1942 @@ +@charset "UTF-8"; +/*文字排版*/ +.f12 { + font-size: 12px; } + +.f13 { + font-size: 13px; } + +.f14 { + font-size: 14px; } + +.f16 { + font-size: 16px; } + +.f20 { + font-size: 20px; } + +.fb { + font-weight: bold; } + +.fn { + font-weight: normal; } + +.t2 { + text-indent: 2em; } + +.lh150 { + line-height: 150%; } + +.lh180 { + line-height: 180%; } + +.lh200 { + line-height: 200%; } + +.unl { + text-decoration: underline; } + +.no_unl { + text-decoration: none; } + +/*定位*/ +.tl { + text-align: left; } + +.tc { + text-align: center; } + +.tr { + text-align: right; } + +.bc { + margin-left: auto; + margin-right: auto; } + +.fl { + float: left; + display: inline; } + +.fr { + float: right; + display: inline; } + +.cb { + clear: both; } + +.cl { + clear: left; } + +.cr { + clear: right; } + +.clearfix:after, .container-box:after, .topics .topic-item:after, .usercard .ui-header:after, .user-page .profile .ui-header:after, .usercard .ui-content:after, .user-page .profile .ui-content:after, .community-status dl:after, .user-page .profile dl:after, .topic-detail .ui-header:after, .topic-detail .ui-footer:after, .topic-reply .ui-content .reply-item:after, .notification-item:after { + content: "."; + display: block; + height: 0; + clear: both; + visibility: hidden; } + +.clearfix, .container-box, .topics .topic-item, .usercard .ui-header, .user-page .profile .ui-header, .usercard .ui-content, .user-page .profile .ui-content, .community-status dl, .user-page .profile dl, .topic-detail .ui-header, .topic-detail .ui-footer, .topic-reply .ui-content .reply-item, .notification-item { + display: inline-block; } + +* html .clearfix, * html .container-box, * html .topics .topic-item, .topics * html .topic-item, * html .usercard .ui-header, .usercard * html .ui-header, * html .user-page .profile .ui-header, .user-page .profile * html .ui-header, * html .usercard .ui-content, .usercard * html .ui-content, * html .user-page .profile .ui-content, .user-page .profile * html .ui-content, * html .community-status dl, .community-status * html dl, * html .user-page .profile dl, .user-page .profile * html dl, * html .topic-detail .ui-header, .topic-detail * html .ui-header, * html .topic-detail .ui-footer, .topic-detail * html .ui-footer, * html .topic-reply .ui-content .reply-item, .topic-reply .ui-content * html .reply-item, * html .notification-item { + height: 1%; } + +.clearfix, .container-box, .topics .topic-item, .usercard .ui-header, .user-page .profile .ui-header, .usercard .ui-content, .user-page .profile .ui-content, .community-status dl, .user-page .profile dl, .topic-detail .ui-header, .topic-detail .ui-footer, .topic-reply .ui-content .reply-item, .notification-item { + display: block; } + +.vm { + vertical-align: middle; } + +.pr { + position: relative; } + +.pa { + position: absolute; } + +.abs-right { + position: absolute; + right: 0; } + +.zoom { + zoom: 1; } + +.hidden { + visibility: hidden; } + +.none { + display: none; } + +/*长度高度*/ +.w10 { + width: 10px; } + +.w20 { + width: 20px; } + +.w30 { + width: 30px; } + +.w40 { + width: 40px; } + +.w50 { + width: 50px; } + +.w60 { + width: 60px; } + +.w70 { + width: 70px; } + +.w80 { + width: 80px; } + +.w90 { + width: 90px; } + +.w100 { + width: 100px; } + +.w200 { + width: 200px; } + +.w250 { + width: 250px; } + +.w300 { + width: 300px; } + +.w400 { + width: 400px; } + +.w500 { + width: 500px; } + +.w600 { + width: 600px; } + +.w700 { + width: 700px; } + +.w800 { + width: 800px; } + +.w { + width: 100%; } + +.h50 { + height: 50px; } + +.h80 { + height: 80px; } + +.h100 { + height: 100px; } + +.h200 { + height: 200px; } + +.h { + height: 100%; } + +/*边距*/ +.m10 { + margin: 10px; } + +.m15 { + margin: 15px; } + +.m30 { + margin: 30px; } + +.mt5 { + margin-top: 5px; } + +.mt10 { + margin-top: 10px; } + +.mt15 { + margin-top: 15px; } + +.mt20 { + margin-top: 20px; } + +.mt30 { + margin-top: 30px; } + +.mt50 { + margin-top: 50px; } + +.mt100 { + margin-top: 100px; } + +.mb10 { + margin-bottom: 10px; } + +.mb15 { + margin-bottom: 15px; } + +.mb20 { + margin-bottom: 20px; } + +.mb30 { + margin-bottom: 30px; } + +.mb50 { + margin-bottom: 50px; } + +.mb100 { + margin-bottom: 100px; } + +.ml5 { + margin-left: 5px; } + +.ml10 { + margin-left: 10px; } + +.ml15 { + margin-left: 15px; } + +.ml20 { + margin-left: 20px; } + +.ml30 { + margin-left: 30px; } + +.ml50 { + margin-left: 50px; } + +.ml100 { + margin-left: 100px; } + +.mr5 { + margin-right: 5px; } + +.mr10 { + margin-right: 10px; } + +.mr15 { + margin-right: 15px; } + +.mr20 { + margin-right: 20px; } + +.mr30 { + margin-right: 30px; } + +.mr50 { + margin-right: 50px; } + +.mr100 { + margin-right: 100px; } + +.p10 { + padding: 10px; } + +.p15 { + padding: 15px; } + +.p20 { + padding: 20px; } + +.p30 { + padding: 30px; } + +.pt5 { + padding-top: 5px; } + +.pt10 { + padding-top: 10px; } + +.pt15 { + padding-top: 15px; } + +.pt20 { + padding-top: 20px; } + +.pt30 { + padding-top: 30px; } + +.pt50 { + padding-top: 50px; } + +.pb5 { + padding-bottom: 5px; } + +.pb10 { + padding-bottom: 10px; } + +.pb15 { + padding-bottom: 15px; } + +.pb20 { + padding-bottom: 20px; } + +.pb30 { + padding-bottom: 30px; } + +.pb50 { + padding-bottom: 50px; } + +.pb100 { + padding-bottom: 100px; } + +.pl5 { + padding-left: 5px; } + +.pl10 { + padding-left: 10px; } + +.pl15 { + padding-left: 15px; } + +.pl20 { + padding-left: 20px; } + +.pl30 { + padding-left: 30px; } + +.pl50 { + padding-left: 50px; } + +.pl100 { + padding-left: 100px; } + +.pr5 { + padding-right: 5px; } + +.pr10 { + padding-right: 10px; } + +.pr15 { + padding-right: 15px; } + +.pr20 { + padding-right: 20px; } + +.pr30 { + padding-right: 30px; } + +.pr50 { + padding-right: 50px; } + +.pr100 { + padding-right: 100px; } + +.clearfix, .container-box, .topics .topic-item, .usercard .ui-header, .user-page .profile .ui-header, .usercard .ui-content, .user-page .profile .ui-content, .community-status dl, .user-page .profile dl, .topic-detail .ui-header, .topic-detail .ui-footer, .topic-reply .ui-content .reply-item, .notification-item { + zoom: 1; + /* IE < 8 */ } + .clearfix:before, .container-box:before, .topics .topic-item:before, .usercard .ui-header:before, .user-page .profile .ui-header:before, .usercard .ui-content:before, .user-page .profile .ui-content:before, .community-status dl:before, .user-page .profile dl:before, .topic-detail .ui-header:before, .topic-detail .ui-footer:before, .topic-reply .ui-content .reply-item:before, .notification-item:before, .clearfix:after, .container-box:after, .topics .topic-item:after, .usercard .ui-header:after, .user-page .profile .ui-header:after, .usercard .ui-content:after, .user-page .profile .ui-content:after, .community-status dl:after, .user-page .profile dl:after, .topic-detail .ui-header:after, .topic-detail .ui-footer:after, .topic-reply .ui-content .reply-item:after, .notification-item:after { + content: "."; + display: block; + height: 0; + visibility: hidden; } + .clearfix:after, .container-box:after, .topics .topic-item:after, .usercard .ui-header:after, .user-page .profile .ui-header:after, .usercard .ui-content:after, .user-page .profile .ui-content:after, .community-status dl:after, .user-page .profile dl:after, .topic-detail .ui-header:after, .topic-detail .ui-footer:after, .topic-reply .ui-content .reply-item:after, .notification-item:after { + clear: both; } + +.clear { + clear: both; } + +@font-face { + font-family: 'octicons'; + src: url("/static/octicons/octicons-d3d0b82bf791ac147d72bbf0287cdde8ee5c97b8.eot"); + src: url("/static/octicons/octicons-d3d0b82bf791ac147d72bbf0287cdde8ee5c97b8.eot#iefix") format("embedded-opentype"), url("/static/octicons/octicons-a60d585f754059c3c2ef731f853c38c157040b9c.woff") format("woff"), url("/static/octicons/octicons-8b97c2cd5068ec4620cbde3140db257b1924a192.ttf") format("truetype"), url("/static/octicons/octicons-a8248bbb3baccca60948d81d69e3406b71956a69.svg#octicons") format("svg"); + font-weight: normal; + font-style: normal; } +.octicon { + font: normal normal 16px octicons; + line-height: 1; + display: inline-block; + text-decoration: none; + -webkit-font-smoothing: antialiased; } + +.mega-octicon { + font: normal normal 32px octicons; + line-height: 1; + display: inline-block; + text-decoration: none; + -webkit-font-smoothing: antialiased; } + +.octicon-alert:before { + content: '\f02d'; } + +.octicon-alignment-align:before { + content: '\f08a'; } + +.octicon-alignment-aligned-to:before { + content: '\f08e'; } + +.octicon-alignment-unalign:before { + content: '\f08b'; } + +.octicon-arrow-down:before { + content: '\f03f'; } + +.octicon-arrow-left:before { + content: '\f040'; } + +.octicon-arrow-right:before { + content: '\f03e'; } + +.octicon-arrow-small-down:before { + content: '\f0a0'; } + +.octicon-arrow-small-left:before { + content: '\f0a1'; } + +.octicon-arrow-small-right:before { + content: '\f071'; } + +.octicon-arrow-small-up:before { + content: '\f09f'; } + +.octicon-arrow-up:before { + content: '\f03d'; } + +.octicon-beer:before { + content: '\f069'; } + +.octicon-book:before { + content: '\f007'; } + +.octicon-bookmark:before { + content: '\f07b'; } + +.octicon-broadcast:before { + content: '\f048'; } + +.octicon-bug:before { + content: '\f091'; } + +.octicon-calendar:before { + content: '\f068'; } + +.octicon-check:before { + content: '\f03a'; } + +.octicon-checklist:before { + content: '\f076'; } + +.octicon-chevron-down:before { + content: '\f0a3'; } + +.octicon-chevron-left:before { + content: '\f0a4'; } + +.octicon-chevron-right:before { + content: '\f078'; } + +.octicon-chevron-up:before { + content: '\f0a2'; } + +.octicon-circle-slash:before { + content: '\f084'; } + +.octicon-clippy:before { + content: '\f035'; } + +.octicon-clock:before { + content: '\f046'; } + +.octicon-cloud-download:before { + content: '\f00b'; } + +.octicon-cloud-upload:before { + content: '\f00c'; } + +.octicon-code:before { + content: '\f05f'; } + +.octicon-color-mode:before { + content: '\f065'; } + +.octicon-comment:before { + content: '\f02b'; } + +.octicon-comment-add:before { + content: '\f06f'; } + +.octicon-comment-discussion:before { + content: '\f04f'; } + +.octicon-credit-card:before { + content: '\f045'; } + +.octicon-dashboard:before { + content: '\f07d'; } + +.octicon-database:before { + content: '\f096'; } + +.octicon-device-camera:before { + content: '\f056'; } + +.octicon-device-camera-video:before { + content: '\f057'; } + +.octicon-device-desktop:before { + content: '\f27c'; } + +.octicon-device-mobile:before { + content: '\f038'; } + +.octicon-diff:before { + content: '\f04d'; } + +.octicon-diff-added:before { + content: '\f06b'; } + +.octicon-diff-ignored:before { + content: '\f099'; } + +.octicon-diff-modified:before { + content: '\f06d'; } + +.octicon-diff-removed:before { + content: '\f06c'; } + +.octicon-diff-renamed:before { + content: '\f06e'; } + +.octicon-ellipsis:before { + content: '\f09a'; } + +.octicon-eye:before { + content: '\f04e'; } + +.octicon-eye-unwatch:before { + content: '\f01e'; } + +.octicon-eye-watch:before { + content: '\f01d'; } + +.octicon-file-add:before { + content: '\f086'; } + +.octicon-file-binary:before { + content: '\f094'; } + +.octicon-file-code:before { + content: '\f010'; } + +.octicon-file-directory:before { + content: '\f016'; } + +.octicon-file-directory-create:before { + content: '\f095'; } + +.octicon-file-media:before { + content: '\f012'; } + +.octicon-file-pdf:before { + content: '\f014'; } + +.octicon-file-submodule:before { + content: '\f017'; } + +.octicon-file-symlink-directory:before { + content: '\f0b1'; } + +.octicon-file-symlink-file:before { + content: '\f0b0'; } + +.octicon-file-text:before { + content: '\f011'; } + +.octicon-file-zip:before { + content: '\f013'; } + +.octicon-gear:before { + content: '\f02f'; } + +.octicon-gift:before { + content: '\f042'; } + +.octicon-gist:before { + content: '\f00e'; } + +.octicon-gist-fork:before { + content: '\f079'; } + +.octicon-gist-new:before { + content: '\f07a'; } + +.octicon-gist-private:before { + content: '\f00f'; } + +.octicon-gist-secret:before { + content: '\f08c'; } + +.octicon-git-branch:before { + content: '\f020'; } + +.octicon-git-branch-create:before { + content: '\f098'; } + +.octicon-git-branch-delete:before { + content: '\f09b'; } + +.octicon-git-commit:before { + content: '\f01f'; } + +.octicon-git-compare:before { + content: '\f0ac'; } + +.octicon-git-fork-private:before { + content: '\f021'; } + +.octicon-git-merge:before { + content: '\f023'; } + +.octicon-git-pull-request:before { + content: '\f009'; } + +.octicon-git-pull-request-abandoned:before { + content: '\f090'; } + +.octicon-globe:before { + content: '\f0b6'; } + +.octicon-graph:before { + content: '\f043'; } + +.octicon-history:before { + content: '\f07e'; } + +.octicon-home:before { + content: '\f08d'; } + +.octicon-horizontal-rule:before { + content: '\f070'; } + +.octicon-hourglass:before { + content: '\f09e'; } + +.octicon-hubot:before { + content: '\f09d'; } + +.octicon-info:before { + content: '\f059'; } + +.octicon-issue-closed:before { + content: '\f028'; } + +.octicon-issue-opened:before { + content: '\f026'; } + +.octicon-issue-reopened:before { + content: '\f027'; } + +.octicon-jersey:before { + content: '\f019'; } + +.octicon-jump-down:before { + content: '\f072'; } + +.octicon-jump-left:before { + content: '\f0a5'; } + +.octicon-jump-right:before { + content: '\f0a6'; } + +.octicon-jump-up:before { + content: '\f073'; } + +.octicon-key:before { + content: '\f049'; } + +.octicon-keyboard:before { + content: '\f00d'; } + +.octicon-light-bulb:before { + content: '\f000'; } + +.octicon-link:before { + content: '\f05c'; } + +.octicon-link-external:before { + content: '\f07f'; } + +.octicon-list-ordered:before { + content: '\f062'; } + +.octicon-list-unordered:before { + content: '\f061'; } + +.octicon-location:before { + content: '\f060'; } + +.octicon-lock:before { + content: '\f06a'; } + +.octicon-log-in:before { + content: '\f036'; } + +.octicon-log-out:before { + content: '\f032'; } + +.octicon-logo-github:before { + content: '\f092'; } + +.octicon-mail:before { + content: '\f03b'; } + +.octicon-mail-read:before { + content: '\f03c'; } + +.octicon-mail-reply:before { + content: '\f051'; } + +.octicon-mark-github:before { + content: '\f00a'; } + +.octicon-mark-twitter:before { + content: '\f0ae'; } + +.octicon-megaphone:before { + content: '\f077'; } + +.octicon-microscope:before { + content: '\f089'; } + +.octicon-milestone:before { + content: '\f075'; } + +.octicon-mirror-private:before { + content: '\f025'; } + +.octicon-mirror-public:before { + content: '\f024'; } + +.octicon-move-down:before { + content: '\f0a8'; } + +.octicon-move-left:before { + content: '\f074'; } + +.octicon-move-right:before { + content: '\f0a9'; } + +.octicon-move-up:before { + content: '\f0a7'; } + +.octicon-mute:before { + content: '\f080'; } + +.octicon-no-newline:before { + content: '\f09c'; } + +.octicon-octoface:before { + content: '\f008'; } + +.octicon-organization:before { + content: '\f037'; } + +.octicon-pencil:before { + content: '\f058'; } + +.octicon-person:before { + content: '\f018'; } + +.octicon-person-add:before { + content: '\f01a'; } + +.octicon-person-follow:before { + content: '\f01c'; } + +.octicon-person-remove:before { + content: '\f01b'; } + +.octicon-pin:before { + content: '\f041'; } + +.octicon-plus:before { + content: '\f05d'; } + +.octicon-podium:before { + content: '\f0af'; } + +.octicon-primitive-dot:before { + content: '\f052'; } + +.octicon-primitive-square:before { + content: '\f053'; } + +.octicon-pulse:before { + content: '\f085'; } + +.octicon-question:before { + content: '\f02c'; } + +.octicon-quote:before { + content: '\f063'; } + +.octicon-radio-tower:before { + content: '\f030'; } + +.octicon-remove-close:before { + content: '\f050'; } + +.octicon-repo:before { + content: '\f001'; } + +.octicon-repo-clone:before { + content: '\f04c'; } + +.octicon-repo-create:before { + content: '\f003'; } + +.octicon-repo-delete:before { + content: '\f004'; } + +.octicon-repo-force-push:before { + content: '\f04a'; } + +.octicon-repo-forked:before { + content: '\f002'; } + +.octicon-repo-pull:before { + content: '\f006'; } + +.octicon-repo-push:before { + content: '\f005'; } + +.octicon-repo-sync:before { + content: '\f04b'; } + +.octicon-rocket:before { + content: '\f033'; } + +.octicon-rss:before { + content: '\f034'; } + +.octicon-ruby:before { + content: '\f047'; } + +.octicon-screen-full:before { + content: '\f066'; } + +.octicon-screen-normal:before { + content: '\f067'; } + +.octicon-search:before { + content: '\f02e'; } + +.octicon-server:before { + content: '\f097'; } + +.octicon-settings:before { + content: '\f07c'; } + +.octicon-squirrel:before { + content: '\f0b2'; } + +.octicon-star:before { + content: '\f02a'; } + +.octicon-star-add:before { + content: '\f082'; } + +.octicon-star-delete:before { + content: '\f083'; } + +.octicon-stop:before { + content: '\f08f'; } + +.octicon-sync:before { + content: '\f087'; } + +.octicon-tag:before { + content: '\f015'; } + +.octicon-tag-add:before { + content: '\f054'; } + +.octicon-tag-remove:before { + content: '\f055'; } + +.octicon-telescope:before { + content: '\f088'; } + +.octicon-three-bars:before { + content: '\f05e'; } + +.octicon-tools:before { + content: '\f031'; } + +.octicon-triangle-down:before { + content: '\f05b'; } + +.octicon-triangle-left:before { + content: '\f044'; } + +.octicon-triangle-right:before { + content: '\f05a'; } + +.octicon-triangle-up:before { + content: '\f0aa'; } + +.octicon-unfold:before { + content: '\f039'; } + +.octicon-versions:before { + content: '\f064'; } + +.octicon-x:before { + content: '\f081'; } + +.octicon-zap:before { + content: '\26A1'; } + +html { + background: #e3e3e3; + background: transparent url("http://ww2.sinaimg.cn/large/62755f82gw1ejqgbgc1hwj219s0wdti5.jpg") repeat scroll 0 0; } + +body { + background: #e3e3e3; + background: transparent url("http://ww2.sinaimg.cn/large/62755f82gw1ejqgbgc1hwj219s0wdti5.jpg") repeat scroll 0 0; + font-family: "Hiragino Kaku Gothic ProN", "Helvetica Neue", "Luxi Sans", "DejaVu Sans", Tahoma, "Hiragino Sans GB", STHeiti; + font-size: 13px; } + +a.btn-small { + font-size: 12px; } + +a.btn { + color: #666666 !important; } + +.navbar-static-top .container, +.navbar-fixed-top .container, +.navbar-fixed-bottom .container, +.container, +.navbar-static-top .container, +.navbar-fixed-top .container, +.navbar-fixed-bottom .container { + width: 960px; } + +.top-navbar { + font-size: 14px; + position: relative; } + .top-navbar .navbar-inner { + background-color: #f3f3f3; + background-image: -moz-linear-gradient(#f9f9f9, #f3f3f3); + background-image: -webkit-linear-gradient(#f9f9f9, #f3f3f3); + background-image: linear-gradient(#f9f9f9, #f3f3f3); + background-repeat: repeat-x; + text-shadow: 0 1px 0 #fff; + border-bottom: 1px solid #e5e5e5; + box-shadow: 0px 1px 0px rgba(0, 0, 0, 0.2); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff2f2f2', GradientType=0); + border-left: #d4d4d4 1px solid; + padding: 3px 0; } + .top-navbar .navbar-inner .brand { + color: #333333; + transition: all 0.1s ease-in; + -webkit-transition: all 0.1s ease-in 0; + white-space: nowrap; + font-weight: bold; + text-shadow: 0 1px 0 #fff; + margin: 3px -15px 0 -10px; + padding: 7px 20px; } + .top-navbar .navbar-inner .nav { + margin: 6px 0 0; } + .top-navbar .navbar-inner .nav li { + margin: 0 10px 0 0; } + .top-navbar .navbar-inner .nav li.active a { + background: transparent; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; } + .top-navbar .navbar-inner .nav li.active a:hover { + color: #db4937; } + .top-navbar .navbar-inner .nav li a { + display: block; + padding: 5px; + font-size: 14px; + font-weight: bold; + color: #333333; + transition: all 0.1s ease-in; + -webkit-transition: all 0.1s ease-in 0; + text-shadow: 0 1px 0 #fff; } + .top-navbar .navbar-inner .nav li a:hover { + color: #db4937; } + .top-navbar .navbar-inner .nav li a.item-book:after { + display: block; + content: ''; + width: 17px; + height: 7px; + background: transparent url("/static/images/icon-new.png") no-repeat scroll 0 0; + position: relative; + top: -29px; + left: 30px; } + .top-navbar .navbar-inner .nav li .avatar img { + -webkit-border-radius: first-value-of(2px) first-value-of(2px); + -moz-border-radius: 2px / 2px; + border-radius: 2px / 2px; } + .top-navbar .navbar-inner .divider-vertical { + float: left; + width: 1px; + height: 40px; + margin: 0 15px; + background-color: #e5e5e5; + border-right: 1px solid #fff; + border-left: 0; } + .top-navbar .navbar-inner .account-menu .btn-small { + margin: 2px 0 0 10px; + padding: 2px 8px; } + .top-navbar .navbar-inner .account-menu li { + margin: 0 1px 0 0; } + .top-navbar .navbar-inner .account-menu li .avatar { + margin: -1px 0 0; } + .top-navbar .navbar-search { + margin-left: 30px; } + .top-navbar .navbar-search input.search-query { + height: 17px; + position: relative; + -moz-box-sizing: border-box; + box-sizing: border-box; + width: 100%; + *width: 120px; + min-height: 28px; + min-height: 20px\9; + padding: 4px 8px 4px 8px; + padding: 1px 8px 1px 8px\9; + font-size: 12px; + transition: all 0.2s ease-in-out; + -webkit-transition: all 0.2s ease-in-out 0; + outline: none; + color: #333; + background-color: #fcfcfc; + background-repeat: no-repeat; + background-position: right center; + border: 1px solid #ddd; + border-radius: 3px; + box-shadow: 1px 1px 0 #fff; + -moz-box-sizing: border-box; + box-sizing: border-box; + transition: all 0.15s ease-in; + -webkit-transition: all 0.15s ease-in 0; + vertical-align: middle; + margin: 2px 0 0; + line-height: 1.4; } + .top-navbar .navbar-search input.search-query:focus { + padding: 1px 15px 1px 15px\9; } + +.container-box { + -webkit-border-radius: first-value-of(5px) first-value-of(5px); + -moz-border-radius: 5px / 5px; + border-radius: 5px / 5px; + background: #fff; + list-style-position: inside; + padding: 10px; + -webkit-box-shadow: 0px 1px 0px rgba(150, 150, 150, 0.15); + -moz-box-shadow: 0px 1px 0px rgba(150, 150, 150, 0.15); + box-shadow: 0px 1px 0px rgba(150, 150, 150, 0.15); + border: 1px solid rgba(150, 150, 150, 0.6); } + .container-box .ui-header .title { + display: block; + border-bottom: 1px solid #eee; + padding: 0 0 8px; + margin: 0 0 -1px 0; } + .container-box a { + color: #999; } + +.row-fluid .left { + width: 70.468%; + min-height: 750px; } +.row-fluid .right { + width: 27.404%; } + +.news { + margin: 0; } + .news li { + float: left; + margin: 0 25px 0 0; + width: 190px; + height: 20px; + overflow: hidden; } + .news li a { + color: #666; + text-overflow: ellipsis; } + +.topics { + padding: 0; } + .topics .topic-item { + padding: 10px 40px 10px 10px; + margin: 0 0 -1px 0; + border-bottom: 1px solid #e5e5e5; + border-top: 1px solid #e5e5e5; + line-height: 12px; + position: relative; } + .topics .topic-item:first-child { + -webkit-border-radius: first-value-of(3px) first-value-of(3px 3px 0 0); + -moz-border-radius: 3px / 3px 3px 0 0; + border-radius: 3px / 3px 3px 0 0; + border-top: 0; } + .topics .topic-item:last-child { + -webkit-border-radius: first-value-of(3px) first-value-of(0 0 3px 3px); + -moz-border-radius: 3px / 0 0 3px 3px; + border-radius: 3px / 0 0 3px 3px; + border-bottom: 1px solid #bbb; } + .topics .topic-item:hover { + background: #f5f9fc; } + .topics .topic-item .avatar { + -webkit-border-radius: first-value-of(3px) first-value-of(3px); + -moz-border-radius: 3px / 3px; + border-radius: 3px / 3px; + float: left; + margin: 0 10px 0 0; + width: 42px; + height: 42px; } + .topics .topic-item .title { + font-size: 15px; + font-weight: normal; + line-height: 21px; + color: #777; + margin: 0 0 3px 0; + letter-spacing: 0; + text-shadow: 0 1px 0 #fff; } + .topics .topic-item .title a { + color: #555; } + .topics .topic-item .meta { + font-size: 12px; + color: #a5a5a5; } + .topics .topic-item .meta .node { + -webkit-border-radius: first-value-of(3px) first-value-of(3px); + -moz-border-radius: 3px / 3px; + border-radius: 3px / 3px; + display: inline-block; + padding: 3px 4px; + background: #eee; } + .topics .topic-item .meta .node a { + color: #a5a5a5; } + .topics .topic-item .meta .username { + font-weight: bold; + color: #888; } + .topics .topic-item .meta .username a { + color: #888; } + .topics .topic-item .meta .username em.badge-icon-1 { + display: inline-block; + width: 14px; + height: 14px; + background: transparent url("../images/member-icons.png") no-repeat scroll -124px 0; + vertical-align: middle; + margin: 0 0 0 3px; } + .topics .topic-item .meta .last-reply-username strong { + margin: 0 0 0 3px; + color: #888; } + .topics .topic-item .meta span { + margin: 0 5px 0 2px; } + .topics .topic-item .count { + -webkit-border-radius: first-value-of(8px) first-value-of(8px); + -moz-border-radius: 8px / 8px; + border-radius: 8px / 8px; + position: absolute; + right: 10px; + top: 40%; + background: #bbb; + font-size: 13px; } + .topics .topic-item .count a { + color: #fff; + padding: 3px 8px; + display: block; + background: #b5bbcf; + -webkit-border-radius: first-value-of(8px) first-value-of(8px); + -moz-border-radius: 8px / 8px; + border-radius: 8px / 8px; } + .topics .topic-item .count a:visited { + background: #d5d5d5; } + .topics .topic-item .main { + padding: 0 0 0 45px; } + .topics .pagination { + margin: 13px 15px; + float: right; } + .topics .pagination a { + color: #999; + padding: 2px 9px; } + .topics .ui-header { + padding: 10px; } + .topics .ui-header .bread-nav { + font-size: 14px; + line-height: 27px; } + .topics .ui-header .node-link { + font-size: 13px; + color: #666; + padding: 0 4px; } + .topics .ui-header .dropdown-menu { + left: auto; + right: 0; + min-width: 130px; } + +.usercard, .user-page .profile { + padding: 0; } + .usercard .ui-header, .user-page .profile .ui-header { + -webkit-border-radius: first-value-of(5px) first-value-of(5px 5px 0 0); + -moz-border-radius: 5px / 5px 5px 0 0; + border-radius: 5px / 5px 5px 0 0; + padding: 10px; + background: transparent url("../images/grey_header_web.png") repeat scroll 0 0; + color: #fff; + line-height: 25px; } + .usercard .ui-header .avatar, .user-page .profile .ui-header .avatar { + -webkit-border-radius: first-value-of(3px) first-value-of(3px); + -moz-border-radius: 3px / 3px; + border-radius: 3px / 3px; + float: left; + margin-right: 10px; + width: 48px; + height: 48px; } + .usercard .ui-header .username, .user-page .profile .ui-header .username { + font-size: 18px; + font-weight: bold; } + .usercard .ui-header .username em.badge-icon-1, .user-page .profile .ui-header .username em.badge-icon-1 { + display: inline-block; + width: 14px; + height: 14px; + background: transparent url("../images/member-icons.png") no-repeat scroll -124px 0; + vertical-align: middle; + margin: 0 0 0 3px; } + .usercard .ui-header .website a, .user-page .profile .ui-header .website a { + color: #fff; } + .usercard .ui-content .status, .user-page .profile .ui-content .status { + width: 23.5%; + float: left; + padding: 5px 0; + margin: 10px 0; + text-align: center; + border-right: 1px solid #eee; + line-height: 18px; } + .usercard .ui-content .status strong, .user-page .profile .ui-content .status strong { + display: block; + font-size: 17px; } + .usercard .ui-content .status a, .user-page .profile .ui-content .status a { + color: #333; } + .usercard .ui-content .status-reputation, .user-page .profile .ui-content .status-reputation { + border: 0; } + .usercard .ui-content a, .user-page .profile .ui-content a { + color: #333; } + +.nodes-cloud { + padding: 0; } + .nodes-cloud .title { + font-size: 13px; + line-height: 12px; + color: #333; + margin: 0; + padding: 10px; + border-bottom: 1px solid #eee; + font-weight: bold; + padding-left: 30px; + text-shadow: 0 1px 0 #fff; } + .nodes-cloud ul { + margin: 0; + text-shadow: 0 1px 0 #fff; } + .nodes-cloud ul li { + list-style: none; + border-bottom: 1px solid #eee; + padding: 7px 10px 7px 0; + line-height: 24px; } + .nodes-cloud ul li:last-child { + border: 0; } + .nodes-cloud ul li label { + font-weight: bold; + float: left; + text-align: right; + width: 60px; + line-height: 24px; + font-size: 13px; } + .nodes-cloud ul li .nodes { + display: block; + padding: 0 0 0 80px; } + .nodes-cloud ul li .nodes a { + color: #666; + font-size: 13px; + margin: 0 5px; } + +.footer { + background: #fff; + border-top: 1px solid #ccc; + line-height: 20px; + padding: 8px 0 12px; } + .footer .footer-bg { + padding: 15px 0 10px 10px; + background: transparent url("/static/images/linode_logo.png") no-repeat scroll 850px center; + position: relative; } + .footer .footer-bg a { + color: #999; } + .footer .footer-bg .fade-color { + color: #ccc; } + .footer .footer-bg .donate img { + position: absolute; + top: 50%; + right: 280px; + margin-top: -13px; + width: 100px; } + +.hot-nodes a { + -webkit-border-radius: first-value-of(5px) first-value-of(5px); + -moz-border-radius: 5px / 5px; + border-radius: 5px / 5px; + display: inline-block; + padding: 1px 7px; + margin: 3px 0; + background: #f3f3f3; + color: #777; + border: 1px solid #eee; + font-size: 12px; + background: -moz-linear-gradient(center top, white 0%, #f3f3f3 50%, #ededed 51%, white 100%) repeat scroll 0 0 transparent; + background: -webkit-linear-gradient(top, white 0%, #f3f3f3 50%, #ededed 51%, white 100%) repeat scroll 0 0 transparent; + border: 1px solid #e5e5e5; + text-shadow: 0 1px 0 #fff; + line-height: 21px; } +.hot-nodes a:hover { + background: -moz-linear-gradient(center top, white 0%, #e6e6e6 50%, #dfdfdf 51%, white 100%) repeat scroll 0 0 transparent; + background: -webkit-linear-gradient(top, white 0%, #e6e6e6 50%, #dfdfdf 51%, white 100%) repeat scroll 0 0 transparent; + border: 1px solid #dfdfdf; + text-decoration: none; + color: #333; } + +.community-status dl { + margin: 5px 0 5px 0; } + .community-status dl dt { + float: left; + width: 56px; + text-align: right; } + .community-status dl dd { + padding: 0 0 0 60px; } + +.login-box .title { + padding: 0 0 5px; } +.login-box .ui-header .explanation { + font-weight: bold; } +.login-box .ui-header .description { + color: #cecece; } +.login-box .ui-content { + padding: 7px 0 0; + line-height: 30px; } + +.user-page .profile .ui-header { + position: relative; } + .user-page .profile .ui-header .username em.badge-icon-1 { + display: inline-block; + width: 14px; + height: 14px; + background: transparent url("../images/member-icons.png") no-repeat scroll -124px 0; + vertical-align: middle; + margin: 0 0 0 3px; } +.user-page .profile .ui-content { + padding: 15px; } +.user-page .profile .user-number { + padding: 0 0 0 70px; + line-height: 20px; + position: absolute; + right: 20px; + top: 15px; + color: #999; + text-shadow: 0 1px 0 #000; } +.user-page .profile dl { + margin: 5px 0 5px 0; } + .user-page .profile dl dt { + float: left; + width: 50px; + text-align: right; + font-weight: normal; } + .user-page .profile dl dd { + padding: 0 0 0 60px; } +.user-page .topic-lists { + padding: 0; } + .user-page .topic-lists .ui-header { + padding: 10px 10px 0; } + .user-page .topic-lists .topic-item .avatar { + display: none; } + .user-page .topic-lists .topic-item .main { + padding: 0; } + .user-page .topic-lists .topic-item:first-child { + border-radius: 0; } + .user-page .topic-lists .ui-footer { + padding: 10px 10px 10px; } +.user-page .project-lists ul { + margin: 0; + padding: 10px 1px 0 1px; } + .user-page .project-lists ul li { + list-style: none; } + .user-page .project-lists ul li .title a { + color: #333; + font-weight: bold; } + .user-page .project-lists ul li .desc { + color: #888; } +.user-page .self-introduction .ui-content { + padding: 10px 0 5px 0; + line-height: 25px; } +.user-page .book-lists table a img { + max-width: 73px; } + +.topic-detail { + padding: 0; } + .topic-detail .ui-header { + -webkit-border-radius: first-value-of(5px) first-value-of(5px 5px 0 0); + -moz-border-radius: 5px / 5px 5px 0 0; + border-radius: 5px / 5px 5px 0 0; + border-bottom: 1px solid #eee; + padding: 10px; + background: #f5f5f5; + background-image: -webkit-gradient(linear, left top, left bottom, from(white), to(whitesmoke)); + background-image: -webkit-linear-gradient(top, white, whitesmoke); + background-image: -moz-linear-gradient(top, white, whitesmoke); + background-image: -o-linear-gradient(top, white, whitesmoke); + background-image: linear-gradient(to bottom, white, whitesmoke); } + .topic-detail .ui-header .avatar { + float: right; + -webkit-border-radius: first-value-of(3px) first-value-of(3px); + -moz-border-radius: 3px / 3px; + border-radius: 3px / 3px; } + .topic-detail .ui-header .title { + border: 0; + padding: 0; + font-weight: normal; } + .topic-detail .ui-header .meta .username em.badge-icon-1 { + display: inline-block; + width: 14px; + height: 14px; + background: transparent url("../images/member-icons.png") no-repeat scroll -124px 0; + vertical-align: middle; + margin: 0 0 0 3px; } + .topic-detail .ui-content { + padding: 15px 10px 10px 10px; + font-size: 14px; + line-height: 25px; } + .topic-detail .ui-content .gist .gist-file { + -webkit-border-radius: first-value-of(3px) first-value-of(3px); + -moz-border-radius: 3px / 3px; + border-radius: 3px / 3px; } + .topic-detail .ui-content h1, .topic-detail .ui-content h2, .topic-detail .ui-content h3, .topic-detail .ui-content h4, .topic-detail .ui-content h5, + .topic-detail .ui-content blockquote p { + font-size: 13px; + line-height: 20px; } + .topic-detail .ui-content p { + margin: 0 0 10px 0 !important; } + .topic-detail .ui-content ul > li, + .topic-detail .ui-content ol > li { + line-height: 22px; } + .topic-detail .ui-content ul > li p, + .topic-detail .ui-content ol > li p { + margin: 0 !important; } + .topic-detail .ui-content code { + border: 0; } + .topic-detail .ui-footer { + -webkit-border-radius: first-value-of(5px) first-value-of(0 0 5px 5px); + -moz-border-radius: 5px / 0 0 5px 5px; + border-radius: 5px / 0 0 5px 5px; + background: #f5f5f5; + padding: 5px 10px; + border-top: 1px solid #eee; + color: #666; + font-size: 12px; + text-shadow: 0px 1px 0px #fff; + background: #eeeeee; + background: -moz-linear-gradient(top, #eeeeee 0%, #cccccc 100%); + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #eeeeee), color-stop(100%, #cccccc)); + background: -webkit-linear-gradient(top, #eeeeee 0%, #cccccc 100%); + background: -o-linear-gradient(top, #eeeeee 0%, #cccccc 100%); + background: -ms-linear-gradient(top, #eeeeee 0%, #cccccc 100%); + background: linear-gradient(to bottom, #eeeeee 0%, #cccccc 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#eeeeee', endColorstr = '#cccccc', GradientType = 0); } + .topic-detail .ui-footer a { + margin: 0 15px 0 0; + color: #333; + font-size: 12px; + text-shadow: 0px 1px 0px #fff; } + +.topic-reply { + padding: 0; } + .topic-reply .ui-header { + -webkit-border-radius: first-value-of(5px) first-value-of(5px 5px 0 0); + -moz-border-radius: 5px / 5px 5px 0 0; + border-radius: 5px / 5px 5px 0 0; + padding: 5px 10px; + background: #f5f5f5; + border-bottom: 1px solid #eee; + background-image: -webkit-gradient(linear, left top, left bottom, from(white), to(whitesmoke)); + background-image: -webkit-linear-gradient(top, white, whitesmoke); + background-image: -moz-linear-gradient(top, white, whitesmoke); + background-image: -o-linear-gradient(top, white, whitesmoke); + background-image: linear-gradient(to bottom, white, whitesmoke); } + .topic-reply .ui-content { + padding: 0 10px; } + .topic-reply .ui-content .reply-item { + border-bottom: 1px solid #eee; + padding: 10px 0; } + .topic-reply .ui-content .reply-item:last-child { + border-bottom: 0; } + .topic-reply .ui-content .reply-item .avatar { + -webkit-border-radius: first-value-of(3px) first-value-of(3px); + -moz-border-radius: 3px / 3px; + border-radius: 3px / 3px; + float: left; + margin-right: 10px; + width: 48px; + height: 48px; } + .topic-reply .ui-content .reply-item .main { + padding: 0 0 0 60px; } + .topic-reply .ui-content .reply-item .main .meta { + font-size: 12px; + padding: 0 0 5px 0; } + .topic-reply .ui-content .reply-item .main .meta .username { + font-weight: bold; } + .topic-reply .ui-content .reply-item .main .meta .username em.badge-icon-1 { + display: inline-block; + width: 14px; + height: 14px; + background: transparent url("../images/member-icons.png") no-repeat scroll -124px 0; + vertical-align: middle; + margin: 0 0 0 3px; } + .topic-reply .ui-content .reply-item .main .meta .time { + color: #999; + margin: 0 0 0 5px; } + .topic-reply .ui-content .reply-item .main .meta .reply-username { + color: #333; } + .topic-reply .ui-content .reply-item .main .meta .reply-to { + margin: 0 5px 0 0; + cursor: pointer; } + .topic-reply .ui-content .reply-item .main .meta .reply-to img { + vertical-align: text-bottom; } + .topic-reply .ui-content .reply-item .main .meta .floor { + color: #999; } + .topic-reply .ui-content .reply-item .main .content { + font-size: 14px; + font-weight: normal; + line-height: 22px; } + .topic-reply .ui-content .reply-item .main .content h1, .topic-reply .ui-content .reply-item .main .content h2, .topic-reply .ui-content .reply-item .main .content h3, .topic-reply .ui-content .reply-item .main .content h4, .topic-reply .ui-content .reply-item .main .content h5, + .topic-reply .ui-content .reply-item .main .content blockquote p { + font-size: 13px; + line-height: 20px; } + .topic-reply .ui-content .reply-item .main .content iframe { + max-height: 135px; } + .topic-reply .ui-content .gist .gist-file { + -webkit-border-radius: first-value-of(3px) first-value-of(3px); + -moz-border-radius: 3px / 3px; + border-radius: 3px / 3px; } + .topic-reply .ui-footer .pagination { + margin: 5px 15px 10px 10px; + float: right; } + .topic-reply .ui-footer .pagination a { + color: #999; } + +.sidebox .ui-header .title { + margin-bottom: 10px; } +.sidebox .ui-content { + line-height: 23px; } + +.topic-create form .span11 { + width: 622px; } +.topic-create form textarea { + width: 635px; + height: 430px; } + +.topic-reply-create form { + margin: 0; } + .topic-reply-create form textarea { + width: 635px; + height: 230px; } +.topic-reply-create .ui-content { + padding: 5px 0 0; } + +.errors { + margin: 0 0 25px 0; } + +form .errors { + margin: 5px 0 5px 0; } + +.sidenav ul { + margin: 0; + padding: 0 0 0 10px; } + .sidenav ul li { + list-style: none; + line-height: 25px; } + .sidenav ul li a { + color: #999; } + +form #self_intro { + height: 120px; } +form .set-avatar-btn { + width: 284px; + margin: 15px 0 0 0; } +form .control-group { + margin: 0 0 15px !important; } +form .controls .avatar { + -webkit-border-radius: first-value-of(3px) first-value-of(3px); + -moz-border-radius: 3px / 3px; + border-radius: 3px / 3px; + vertical-align: text-bottom; } +form .controls p { + padding: 7px 0 0; } + +.node-topics .ui-header { + border-bottom: 1px solid #eee; } + +.smart-code-support { + font-family: Consolas, "Liberation Mono", Courier, monospace; + font-size: 13px; + -moz-resize: vertical; + -webkit-resize: vertical; + resize: vertical; } + +.alert a { + color: #c09853; } + +.notification-item { + border-bottom: 1px solid #eee; + padding: 10px 0; } + .notification-item .avatar { + -webkit-border-radius: first-value-of(3px) first-value-of(3px); + -moz-border-radius: 3px / 3px; + border-radius: 3px / 3px; + float: left; + margin-right: 10px; + width: 48px; + height: 48px; } + .notification-item .main { + padding: 0 0 0 60px; } + .notification-item .main .title { + font-size: 13px; + font-weight: bold; + display: block; + margin: 0 0 5px 0; + color: #999; } + .notification-item .main .title a { + color: #333; } + .notification-item .main .meta { + font-size: 12px; + padding: 0 0 5px 0; } + .notification-item .main .meta .username { + font-weight: bold; } + .notification-item .main .meta .time { + color: #999; + margin: 0 0 0 5px; } + .notification-item .main .content { + font-size: 13px; + font-weight: normal; + font-family: Monaco, "Microsoft YaHei", "Hiragino Sans GB W3", Tahoma, Arial; } + .notification-item .main .content h1, .notification-item .main .content h2, .notification-item .main .content h3, .notification-item .main .content h4, .notification-item .main .content h5, + .notification-item .main .content blockquote p { + font-size: 13px; + line-height: 20px; } + +.replies-lists { + padding: 0; } + .replies-lists .ui-header { + padding: 10px; } + .replies-lists .ui-content .reply-item { + font-size: 13px; } + .replies-lists .ui-content .reply-item .title { + display: block; + background: #eff6ff; + line-height: 30px; + padding: 3px 10px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#e9e9e9), to(#f8f8f8)); + background-image: -webkit-linear-gradient(top, #e9e9e9, #f8f8f8); + background-image: -moz-linear-gradient(top, #e9e9e9, #f8f8f8); + background-image: -o-linear-gradient(top, #e9e9e9, #f8f8f8); + background-image: linear-gradient(to bottom, #e9e9e9, #f8f8f8); } + .replies-lists .ui-content .reply-item .content { + padding: 10px; + line-height: 22px; } + .replies-lists .ui-content .reply-item .content h1, .replies-lists .ui-content .reply-item .content h2, .replies-lists .ui-content .reply-item .content h3, .replies-lists .ui-content .reply-item .content h4, .replies-lists .ui-content .reply-item .content h5, + .replies-lists .ui-content .reply-item .content blockquote p { + font-size: 13px; + line-height: 20px; } + .replies-lists .ui-content .reply-item .content iframe { + max-height: 135px; } + .replies-lists .ui-footer { + padding: 0 10px; } + +.member-lists .member { + display: inline-block; + width: 60px; + height: 50px; + padding: 10px; + text-align: center; + margin: 5px 0 0 5px; } + .member-lists .member .username { + display: block; + margin: 3px 0 0; } + .member-lists .member .username a { + font-family: Monaco, "Microsoft YaHei", "Hiragino Sans GB W3", Tahoma, Arial; + color: #666; + font-size: 12px; } + .member-lists .member .avatar { + -webkit-border-radius: first-value-of(3px) first-value-of(3px); + -moz-border-radius: 3px / 3px; + border-radius: 3px / 3px; + width: 48px; + height: 48px; } + +.book-lists .book { + vertical-align: top; + height: auto; } + .book-lists .book .thumb { + height: auto; } + +.no-replies, +.no-topics, +.no-favorites { + background: transparent; + border: 2px dashed rgba(0, 0, 0, 0.1); + text-align: center; + color: rgba(0, 0, 0, 0.25); + font-size: 12px; } + +p { + margin: 0 !important; } + +textarea, +input[type="text"], +input[type="password"], +input[type="datetime"], +input[type="datetime-local"], +input[type="date"], +input[type="month"], +input[type="time"], +input[type="week"], +input[type="number"], +input[type="email"], +input[type="url"], +input[type="search"], +input[type="tel"], +input[type="color"], +.uneditable-input { + -webkit-box-shadow: inset 1px 1px 5px 0px rgba(0, 0, 0, 0.18); + -moz-box-shadow: inset 1px 1px 5px 0px rgba(0, 0, 0, 0.18); + box-shadow: inset 1px 1px 5px 0px rgba(0, 0, 0, 0.18); } + +.codehilite pre { + -webkit-box-shadow: rgba(0, 0, 0, 0.07) 0 1px 2px inset; + -moz-box-shadow: rgba(0, 0, 0, 0.07) 0 1px 2px inset; + box-shadow: rgba(0, 0, 0, 0.07) 0 1px 2px inset; + background: #f1f1f1; + padding: 4.5px 8px; } + +.pagination ul > li a, .pagination ul > li.disabled a:hover { + color: #555; + font-size: 13px; + text-decoration: none; + text-shadow: 0 1px 0 #fff; + background-color: #eaeaea; + background-image: -moz-linear-gradient(#fafafa, #eaeaea); + background-image: -webkit-linear-gradient(#fafafa, #eaeaea); + background-image: linear-gradient(#fafafa, #eaeaea); + background-repeat: repeat-x; + border: 1px solid #ddd; + border-bottom: 1px solid #c5c5c5; + margin-left: -1px; } +.pagination ul > li a:hover { + color: #fff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.3); + background-color: #3072b3; + background-image: -moz-linear-gradient(#599bdc, #3072b3); + background-image: -webkit-linear-gradient(#599bdc, #3072b3); + background-image: linear-gradient(#599bdc, #3072b3); + background-repeat: repeat-x; + border-color: #2a65a0; } +.pagination ul > li.active a, .pagination ul > li:active a:hover { + color: #fff; + font-weight: bold; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.5); + background-color: #9e9e9e; + background-image: -moz-linear-gradient(#767676, #9e9e9e); + background-image: -webkit-linear-gradient(#767676, #9e9e9e); + background-image: linear-gradient(#767676, #9e9e9e); + background-repeat: repeat-x; + border-color: #686868; } + +.notification-indicator { + float: left; + width: 40px; + height: 40px; + margin: 0 -15px; + text-align: center; + line-height: 40px; } + +.notification-indicator .mail-status { + display: inline-block; + width: 8px; + height: 8px; + border-radius: 100px; + background-color: #aaa; + background-color: #cccccc; + background-image: -moz-linear-gradient(#aaaaaa, #cccccc); + background-image: -webkit-linear-gradient(#aaaaaa, #cccccc); + background-image: linear-gradient(#aaaaaa, #cccccc); + background-repeat: repeat-x; + box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.1), 0 1px 0 white; } + +.notification-indicator .unread { + background-color: #3269a0; + background-image: -moz-linear-gradient(#4183c4, #3269a0); + background-image: -webkit-linear-gradient(#4183c4, #3269a0); + background-image: linear-gradient(#4183c4, #3269a0); + background-repeat: repeat-x; + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 0 rgba(0, 0, 0, 0.1), 0 0 10px #4183c4; } + +.notification-indicator.contextually-unread { + position: relative; + z-index: 2; + margin: 0 -16px -1px -17px; + padding-left: 1px; + background-color: #d2e4f9; + background-image: -moz-linear-gradient(#e9f2fc, #d2e4f9); + background-image: -webkit-linear-gradient(#e9f2fc, #d2e4f9); + background-image: linear-gradient(#e9f2fc, #d2e4f9); + background-repeat: repeat-x; + border: solid #c2d5eb; + border-width: 0 1px 1px; + box-shadow: inset 1px 0 rgba(255, 255, 255, 0.5); } + +@media screen and (max-device-width: 480px), screen and (max-device-width: 641px), screen and (max-device-width: 720px) { + .navbar-static-top .container, + .navbar-fixed-top .container, + .navbar-fixed-bottom .container, + .container, + .navbar-static-top .container, + .navbar-fixed-top .container, + .navbar-fixed-bottom .container { + width: 100%; + box-sizing: border-box; } + + .container-fluid { + padding: 0 10px; } + + .navbar-inner .container > .nav-collapse { + display: none; } + .navbar-inner .container > .nav-collapse.pull-right { + display: block; + margin: -1px 10px 0 0; } + .navbar-inner .container .navbar-search { + display: none; } + + .row-fluid .left, + .row-fluid .right { + width: 100%; + min-height: 30px; } + + .row-fluid .right { + margin: 10px 0 0; } + + .nodes-cloud, + .usercard, + .user-page .profile { + display: none; } + + .sidebox.weixin, .sidebox.friends, .sidebox.community-status { + display: none; } + + .topics .topic-item .meta { + display: none; } + .topics .topic-item .avatar { + width: 20px; + height: 20px; } + .topics .topic-item .main { + padding: 0 0 0 30px; } + .topics .ui-header .dropdown { + display: none; } + + .topic-create form .span11 { + width: 90%; } + + .topic-detail .ui-footer a { + display: none; } + + fieldset { + min-width: 0; } + + .form-horizontal.setting .control-group:nth-child(2) { + display: none; } + .form-horizontal .control-label { + width: 90px; } + .form-horizontal .controls { + margin-left: 95px; } + .form-horizontal .controls a[href="/forgot"] { + display: none; } + .form-horizontal .input-xlarge { + width: 90%; } + + .user-page .project-lists { + display: none; } + + code { + white-space: normal; } + + .sidenav li:nth-child(2) { + display: none; } + + .login-box { + display: none; } + + .footer .donate { + display: none; } } +.navbar-static-top .container, +.navbar-fixed-top .container, +.navbar-fixed-bottom .container, +.container, +.navbar-static-top .container, +.navbar-fixed-top .container, +.navbar-fixed-bottom .container { + width: 100%; + max-width: 960px; + box-sizing: border-box; + padding: 0 10px; } + +.topic-create form textarea, +.topic-reply-create form textarea { + width: 100%; + box-sizing: border-box; } + +.topic-create form .input-prepend .add-on { + display: none; } +.topic-create form .input-prepend input { + width: 100%; + box-sizing: border-box; + -webkit-border-radius: first-value-of(4px) first-value-of(4px); + -moz-border-radius: 4px / 4px; + border-radius: 4px / 4px; } diff --git a/forum/static/css/main.scss b/forum/static/css/main.scss new file mode 100755 index 0000000..eee64db --- /dev/null +++ b/forum/static/css/main.scss @@ -0,0 +1,1431 @@ +@charset "UTF-8"; + +@import 'compass/_css3'; +@import 'base/atom'; +@import 'base/octicons'; + +html { + //background: transparent url("../images/idev.png") repeat scroll 0 0; + //background: transparent url("http://img02.taobaocdn.com/tps/i2/T1BsZZXhVfXXXgtLTf-1648-1165.png") repeat scroll 0 0; + //font-family: Tahoma, Arial, "Hiragino Sans GB W3", STHeiti, "Microsoft YaHei"; + background: #e3e3e3; + //background: transparent url('http://s.libdd.com/img/bg/htmlbg.$5752.png') repeat scroll 0 0; + background: transparent url('http://img01.taobaocdn.com/tps/i1/T1Eyp7Fn4dXXbfQAHy-500-400.png') repeat scroll 0 0; + font: 13px Helvetica, arial, freesans, clean, sans-serif; + font-family: "Helvetica Neue", "Luxi Sans", "DejaVu Sans", Tahoma, "Hiragino Sans GB", STHeiti !important; +} + +body { + //font-family: "TheSerifRegular", "TheSerif", "Hiragino Sans GB", "STHeiti", "Microsoft YaHei", "微软雅黑", "WenQuanYi Zen Hei", "文泉驿正黑", "WenQuanYi Micro Hei", "文泉驿微米黑", "times new roman", "times", serif; + //background: transparent url("../images/idev.png") repeat scroll 0 0; + //background: transparent url("http://img02.taobaocdn.com/tps/i2/T1BsZZXhVfXXXgtLTf-1648-1165.png") repeat scroll 0 0; + background: #e3e3e3; + //background: transparent url('http://s.libdd.com/img/bg/htmlbg.$5752.png') repeat scroll 0 0; + background: transparent url('http://img01.taobaocdn.com/tps/i1/T1Eyp7Fn4dXXbfQAHy-500-400.png') repeat scroll 0 0; + font: 13px Helvetica, arial, freesans, clean, sans-serif; + font-family: "Helvetica Neue", "Luxi Sans", "DejaVu Sans", Tahoma, "Hiragino Sans GB", STHeiti !important; +} + +a.btn-small { + font-size: 12px; +} + +a.btn { + color: #666!important; +} + +.navbar-static-top .container, +.navbar-fixed-top .container, +.navbar-fixed-bottom .container, +.container, +.navbar-static-top .container, +.navbar-fixed-top .container, +.navbar-fixed-bottom .container { + width: 960px; +} + +.top-navbar { + font-size: 14px; + position: relative; + + .navbar-inner { + background-color: #f3f3f3; + background-image: -moz-linear-gradient(#f9f9f9, #f3f3f3); + background-image: -webkit-linear-gradient(#f9f9f9, #f3f3f3); + background-image: linear-gradient(#f9f9f9, #f3f3f3); + background-repeat: repeat-x; + + text-shadow: 0 1px 0 #fff; + border-bottom: 1px solid #e5e5e5; + box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.2); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff2f2f2', GradientType=0); border-left: #d4d4d4 1px solid; + + .brand { + color: #333333; + transition: all 0.1s ease-in; + -webkit-transition: all 0.1s ease-in 0; + white-space: nowrap; + font-weight: bold; + text-shadow: 0 1px 0 #fff; + margin: 0 -15px 0 -10px; + padding: 7px 20px; + } + + .nav { + margin: 6px 0 0; + + li { + margin: 0 10px 0 0; + + &.active a { + background: transparent; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + + &:hover { + //color: #4183c4; + color: #db4937; + } + } + + a { + display: block; + padding: 5px; + font-size: 13px; + font-weight: bold; + color: #333333; + transition: all 0.1s ease-in; + -webkit-transition: all 0.1s ease-in 0; + text-shadow: 0 1px 0 #fff; + + &:hover { + //color: #4183c4; + color: #db4937; + } + } + + .avatar img { + @include border-radius(2px, 2px); + } + } + } + + .divider-vertical { + float: left; + width: 1px; + height: 40px; + margin: 0 15px; + background-color: #e5e5e5; + border-right: 1px solid #fff; + border-left: 0; + } + + .account-menu { + .btn-small { + margin: 2px 0 0 10px; + padding: 2px 8px; + } + + li { + margin: 0 1px 0 0; + + .avatar { + margin: -1px 0 0; + } + } + } + } + + .navbar-search { + margin-left: 30px; + + input.search-query { + height: 17px; + + position: relative; + -moz-box-sizing: border-box; + box-sizing: border-box; + width: 100%; + *width: 120px; + min-height: 28px; + min-height: 20px\9; + padding: 4px 8px 4px 8px; + padding: 1px 8px 1px 8px\9; + font-size: 12px; + transition: all 0.2s ease-in-out; + -webkit-transition: all 0.2s ease-in-out 0; + + outline: none; + color: #333; + background-color: #fcfcfc; + background-repeat: no-repeat; + background-position: right center; + border: 1px solid #ddd; + border-radius: 3px; + box-shadow: 1px 1px 0 #fff; + -moz-box-sizing: border-box; + box-sizing: border-box; + transition: all 0.15s ease-in; + -webkit-transition: all 0.15s ease-in 0; + vertical-align: middle; + + margin: 2px 0 0; + line-height: 1.4; + + &:focus { + padding: 1px 15px 1px 15px\9; + } + } + } + + .account-menu { + + } +} + +.container-box { + @include border-radius(5px, 5px); + @extend .clearfix; + background: #fff; + list-style-position: inside; + padding: 10px; + + //-webkit-box-shadow: 1px 1px 10px #b3b3b3; + //-moz-box-shadow: 1px 1px 10px #b3b3b3; + //box-shadow: 1px 1px 10px #b3b3b3; + //border: 1px solid #eee; + + -webkit-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.2); + box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.2); + border: 1px solid rgba(150, 150, 150, 0.6); + + .ui-header { + .title { + display: block; + border-bottom: 1px solid #eee; + padding: 0 0 8px; + margin: 0 0 -1px 0; + } + } + + a { + color: #999; + } +} + +.row-fluid { + .left { + width: 70.468%; + min-height: 750px; + } + + .right { + width: 27.404%; + } +} + +.news { + margin: 0; + + li { + float: left; + margin: 0 25px 0 0; + width: 190px; + height: 20px; + overflow: hidden; + + a { + color: #666; + text-overflow: ellipsis; + } + } +} + +.topics { + padding: 0; + //font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + //font-family: "Helvetica Neue", "Luxi Sans", "DejaVu Sans", Tahoma, "Hiragino Sans GB", STHeiti; + //border: 0; + + .topic-item { + @extend .clearfix; + padding: 10px 40px 10px 10px; + margin: 0 0 -1px 0; + //border-top: 1px solid #eee; + //border-bottom: 1px solid #eee; + border-bottom: 1px solid #e5e5e5; + border-top: 1px solid #e5e5e5; + line-height: 12px; + position: relative; + + //background-image: url("http://v2ex.com/static/img/bg_item.png"); + //background-position: 0 bottom; + //background-repeat: repeat-x; + + //background-color: #444444; + //background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#f5f5f5)); + //background-image: -webkit-linear-gradient(top, #fff, #f5f5f5); + //background-image: -moz-linear-gradient(top, #fff, #f5f5f5); + //background-image: -o-linear-gradient(top, #fff, #f5f5f5); + //background-image: linear-gradient(to bottom, #fff, #f5f5f5); + + &:first-child { + @include border-radius(3px, 3px 3px 0 0); + } + + &:last-child { + @include border-radius(3px, 0 0 3px 3px); + } + + &:hover { + background: #f5f9fc; + } + + .avatar { + @include border-radius(3px, 3px); + float: left; + margin: 0 10px 0 0; + width: 42px; + height: 42px; + } + + .title { + //font-size: 15px; + font-size: 16px; + font-weight: normal; + line-height: 21px; + color: #777; + margin: 0 0 3px 0; + letter-spacing: 0; + text-shadow: 0 1px 0 #fff; + + a { + color: #555; + } + } + + .meta { + font-size: 12px; + color: #a5a5a5; + + .node { + @include border-radius(3px, 3px); + display: inline-block; + padding: 3px 4px; + background: #eee; + + a { + color: #a5a5a5; + } + } + + .username { + font-weight: bold; + color: #888; + + a { + color: #888; + } + } + + .last-reply-username { + strong { + margin: 0 0 0 3px; + color: #888; + } + } + + span { + margin: 0 5px 0 2px; + } + } + + .count { + @include border-radius(8px, 8px); + position: absolute; + right: 10px; + top: 40%; + background: #bbb; + font-size: 13px; + + a { + color: #fff; + padding: 3px 8px; + display: block; + background: #b5bbcf; + @include border-radius(8px, 8px); + + &:visited { + background: #d5d5d5; + } + } + } + + .main { + padding: 0 0 0 45px; + } + } + + .pagination { + margin: 13px 15px; + float: right; + + a { + color: #999; + padding: 2px 9px; + } + } + + .ui-header { + padding: 10px; + + .bread-nav { + font-size: 14px; + line-height: 27px; + } + } +} + +.usercard { + padding: 0; + + .ui-header { + @include border-radius(5px, 5px 5px 0 0); + @extend .clearfix; + padding: 10px; + background: transparent url("../images/grey_header_web.png") repeat scroll 0 0; + color: #fff; + line-height: 25px; + + .avatar { + @include border-radius(3px, 3px); + float: left; + margin-right: 10px; + width: 48px; + height: 48px; + } + + .username { + font-size: 18px; + font-weight: bold; + } + + .website { + a { + color: #fff; + } + } + } + + .ui-content { + @extend .clearfix; + + .status { + width: 23.5%; + float: left; + padding: 5px 0; + margin: 10px 0; + text-align: center; + border-right: 1px solid #eee; + line-height: 18px; + + strong { + display: block; + font-size: 15px; + } + + a { + color: #333; + } + } + + .status-reputation { + border: 0; + } + + a { + color: #333; + } + } +} + +.nodes-cloud { + //font-family: "Helvetica Neue", "Luxi Sans", "DejaVu Sans", Tahoma, "Hiragino Sans GB", STHeiti; + padding: 0; + + .title { + font-size: 13px; + line-height: 12px; + color: #333; + margin: 0; + padding: 10px; + border-bottom: 1px solid #eee; + font-weight: bold; + padding-left: 30px; + text-shadow: 0 1px 0 #fff; + } + + ul { + margin: 0; + text-shadow: 0 1px 0 #fff; + + li { + list-style: none; + border-bottom: 1px solid #eee; + padding: 7px 10px 7px 0; + line-height: 24px; + + &:last-child { + border: 0; + } + + label { + font-weight: bold; + float: left; + text-align: right; + width: 60px; + line-height: 24px; + font-size: 13px; + } + + .nodes { + display: block; + padding: 0 0 0 80px; + + a { + color: #666; + font-size: 13px; + margin: 0 5px; + } + } + } + } +} + +.footer { + background: #fff; + border-top: 1px solid #ccc; + line-height: 20px; + padding: 8px 0 12px;; + //font-family: Monaco, "Microsoft YaHei", "Hiragino Sans GB W3", Tahoma, Arial; + + .footer-bg { + padding: 15px 0 10px 10px; + background: transparent url("/static/images/linode_logo.png") no-repeat scroll 850px center; + + a { + color: #999; + } + + .fade-color { + color: #ccc; + } + } +} + +.hot-nodes { + a { + @include border-radius(5px, 5px); + display: inline-block; + padding: 1px 5px; + margin: 3px 0; + background: #f3f3f3; + color: #999; + border: 1px solid #eee; + font-size: 12px; + //font-family: "Helvetica Neue", "Luxi Sans", "DejaVu Sans", Tahoma, "Hiragino Sans GB", STHeiti; + + //background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#f5f5f5)); + //background-image: -webkit-linear-gradient(top, #fff, #f5f5f5); + //background-image: -moz-linear-gradient(top, #fff, #f5f5f5); + //background-image: -o-linear-gradient(top, #fff, #f5f5f5); + //background-image: linear-gradient(to bottom, #fff, #f5f5f5); + + background: -moz-linear-gradient(center top, #fff 0%, #f3f3f3 50%, #ededed 51%, #fff 100%) repeat scroll 0 0 transparent; + background: -webkit-linear-gradient(top, #fff 0%, #f3f3f3 50%, #ededed 51%, #fff 100%) repeat scroll 0 0 transparent; + border: 1px solid #e5e5e5; + text-shadow: 0 1px 0 #fff; + } +} + +.community-status { + dl { + @extend .clearfix; + margin: 5px 0 5px 0; + + dt { + float: left; + width: 56px; + text-align: right; + } + + dd { + padding: 0 0 0 60px; + } + } +} + +.user-page { + .profile { + @extend .usercard; + + .ui-header { + position: relative; + } + + .ui-content { + padding: 15px; + } + + .user-number { + padding: 0 0 0 70px; + line-height: 20px; + position: absolute; + right: 20px; + top: 15px; + color: #999; + text-shadow: 0 1px 0 #000; + } + + dl { + @extend .clearfix; + margin: 5px 0 5px 0; + + dt { + float: left; + width: 50px; + text-align: right; + font-weight: normal; + } + + dd { + padding: 0 0 0 60px; + } + } + } + + .topic-lists { + padding: 0; + + .ui-header { + padding: 10px 10px 0; + } + + .topic-item { + .avatar { + display: none; + } + + .main { + padding: 0; + } + + &:first-child { + border-radius: 0; + } + } + + .ui-footer { + padding: 10px 10px 10px; + } + } + + .project-lists { + ul { + margin: 0; + padding: 10px 1px 0 1px; + + li { + list-style: none; + + .title { + a { + color: #333; + font-weight: bold; + } + } + + .desc { + color: #888; + } + } + } + } + + .self-introduction { + .ui-content { + padding: 10px 0 5px 0; + line-height: 25px; + } + } + + .book-lists { + table a img { + max-width: 73px; + } + } +} + +.topic-detail { + padding: 0; + + .ui-header { + @extend .clearfix; + @include border-radius(5px, 5px 5px 0 0); + border-bottom: 1px solid #eee; + padding: 10px; + background: #f5f5f5; + + background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#f5f5f5)); + background-image: -webkit-linear-gradient(top, #fff, #f5f5f5); + background-image: -moz-linear-gradient(top, #fff, #f5f5f5); + background-image: -o-linear-gradient(top, #fff, #f5f5f5); + background-image: linear-gradient(to bottom, #fff, #f5f5f5); + + .avatar { + float: right; + @include border-radius(3px, 3px); + } + + .title { + border: 0; + padding: 0; + font-weight: normal; + } + } + + .ui-content { + padding: 15px 10px 10px 10px; + //font-size: 13px; + font-size: 14px; + line-height: 25px; + //font-family: Monaco, "Microsoft YaHei", "Hiragino Sans GB W3", Tahoma, Arial; + + .gist { + .gist-file { + @include border-radius(3px, 3px); + } + } + + h1, h2, h3, h4, h5, + blockquote p { + font-size: 13px; + line-height: 20px; + } + + p { + margin: 0 0 10px 0!important; + } + + ul > li, + ol > li { + line-height: 22px; + + p { + margin: 0!important; + } + } + + iframe { + max-height: 195px; + } + } + + .ui-footer { + @extend .clearfix; + @include border-radius(5px, 0 0 5px 5px); + background: #f5f5f5; + padding: 5px 10px; + border-top: 1px solid #eee; + + color: #666; + font-size: 12px; + text-shadow: 0px 1px 0px #fff; + + //background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#f5f5f5)); + //background-image: -webkit-linear-gradient(top, #fff, #f5f5f5); + //background-image: -moz-linear-gradient(top, #fff, #f5f5f5); + //background-image: -o-linear-gradient(top, #fff, #f5f5f5); + //background-image: linear-gradient(to bottom, #fff, #f5f5f5); + + background: #eeeeee; + background: -moz-linear-gradient(top, #eeeeee 0%, #cccccc 100%); + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #eeeeee), color-stop(100%, #cccccc)); + background: -webkit-linear-gradient(top, #eeeeee 0%, #cccccc 100%); + background: -o-linear-gradient(top, #eeeeee 0%, #cccccc 100%); + background: -ms-linear-gradient(top, #eeeeee 0%, #cccccc 100%); + background: linear-gradient(to bottom, #eeeeee 0%, #cccccc 100%); + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr = '#eeeeee', endColorstr = '#cccccc', GradientType = 0); + + a { + margin: 0 15px 0 0; + color: #333; + font-size: 12px; + text-shadow: 0px 1px 0px #fff; + } + } +} + +.topic-reply { + padding: 0; + + .ui-header { + @include border-radius(5px, 5px 5px 0 0); + padding: 5px 10px; + background: #f5f5f5; + border-bottom: 1px solid #eee; + + background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#f5f5f5)); + background-image: -webkit-linear-gradient(top, #fff, #f5f5f5); + background-image: -moz-linear-gradient(top, #fff, #f5f5f5); + background-image: -o-linear-gradient(top, #fff, #f5f5f5); + background-image: linear-gradient(to bottom, #fff, #f5f5f5); + } + + .ui-content { + //padding: 10px; + //font-family: "Helvetica Neue", "Luxi Sans", "DejaVu Sans", Tahoma, "Hiragino Sans GB", STHeiti; + + padding: 0 10px; + + .reply-item { + @extend .clearfix; + border-bottom: 1px solid #eee; + padding: 10px 0; + + &:last-child { + border-bottom: 0; + } + + .avatar { + @include border-radius(3px, 3px); + float: left; + margin-right: 10px; + width: 48px; + height: 48px; + } + + .main { + padding: 0 0 0 60px; + + .meta { + font-size: 12px; + padding: 0 0 5px 0; + + .username { + font-weight: bold; + } + + .time { + color: #999; + margin: 0 0 0 5px; + } + + .reply-username { + color: #333; + } + + .reply-to { + margin: 0 5px 0 0; + cursor: pointer; + + img { + vertical-align: text-bottom; + } + } + + .floor { + color: #999; + } + } + + .content { + //font-size: 13px; + font-size: 14px; + font-weight: normal; + //font-family: Monaco, "Microsoft YaHei", "Hiragino Sans GB W3", Tahoma, Arial; + line-height: 22px; + + h1, h2, h3, h4, h5, + blockquote p { + font-size: 13px; + line-height: 20px; + } + + iframe { + max-height: 135px; + } + } + } + } + + .gist { + .gist-file { + @include border-radius(3px, 3px); + } + } + } + + .ui-footer { + .pagination { + margin: 5px 15px 10px 10px; + float: right; + + a { + color: #999; + } + } + } +} + +.sidebox { + .ui-header { + .title { + margin-bottom: 10px; + } + } + + .ui-content { + line-height: 23px; + } +} + +.topic-create { + form { + .span11 { + width: 622px; + } + + textarea { + width: 635px; + height: 430px; + } + } +} + +.topic-reply-create { + form { + margin: 0; + + textarea { + width: 635px; + height: 230px; + } + } + + .ui-content { + //padding: 10px 0; + padding: 5px 0 0; + } +} + +.errors { + margin: 0 0 25px 0; +} + +form .errors { + margin: 5px 0 5px 0; +} + +.sidenav { + ul { + margin: 0; + padding: 0 0 0 10px; + + li { + list-style: none; + line-height: 25px; + + a { + color: #999; + } + } + } +} + +form { + #self_intro { + height: 120px; + } + + .set-avatar-btn { + width: 284px; + margin: 15px 0 0 0; + } + + .control-group { + margin: 0 0 15px!important; + } + + .controls { + .avatar { + @include border-radius(3px, 3px); + vertical-align: text-bottom; + } + + p { + padding: 7px 0 0; + } + } +} + +.node-topics { + .ui-header { + border-bottom: 1px solid #eee; + } +} + +.smart-code-support { + font-family: Consolas, "Liberation Mono", Courier, monospace; + font-size: 13px; + -moz-resize: vertical; + -webkit-resize: vertical; + resize: vertical; +} + +.alert { + a { + color: #c09853; + } +} + +.notification-item { + @extend .clearfix; + border-bottom: 1px solid #eee; + padding: 10px 0; + + .avatar { + @include border-radius(3px, 3px); + float: left; + margin-right: 10px; + width: 48px; + height: 48px; + } + + .main { + padding: 0 0 0 60px; + + .title { + font-size: 13px; + font-weight: bold; + display: block; + margin: 0 0 5px 0; + color: #999; + + a { + color: #333; + } + } + + .meta { + font-size: 12px; + padding: 0 0 5px 0; + + .username { + font-weight: bold; + } + + .time { + color: #999; + margin: 0 0 0 5px; + } + } + + .content { + font-size: 13px; + font-weight: normal; + font-family: Monaco, "Microsoft YaHei", "Hiragino Sans GB W3", Tahoma, Arial; + + h1, h2, h3, h4, h5, + blockquote p { + font-size: 13px; + line-height: 20px; + } + } + } +} + +.replies-lists { + padding: 0; + + .ui-header { + padding: 10px; + } + + .ui-content { + .reply-item { + font-size: 13px; + + .title { + display: block; + background: #eff6ff; + line-height: 30px; + padding: 3px 10px; + + background-image: -webkit-gradient(linear, left top, left bottom, from(#e9e9e9), to(#f8f8f8)); + background-image: -webkit-linear-gradient(top, #e9e9e9, #f8f8f8); + background-image: -moz-linear-gradient(top, #e9e9e9, #f8f8f8); + background-image: -o-linear-gradient(top, #e9e9e9, #f8f8f8); + background-image: linear-gradient(to bottom, #e9e9e9, #f8f8f8); + } + + .content { + padding: 10px; + line-height: 22px; + + h1, h2, h3, h4, h5, + blockquote p { + font-size: 13px; + line-height: 20px; + } + + iframe { + max-height: 135px; + } + } + } + } + + .ui-footer { + padding: 0 10px; + } +} + +.member-lists { + .member { + display: inline-block; + width: 60px; + height: 50px; + padding: 10px; + text-align: center; + margin: 5px 0 0 5px; + + .username { + display: block; + margin: 3px 0 0; + + a { + font-family: Monaco, "Microsoft YaHei", "Hiragino Sans GB W3", Tahoma, Arial; + color: #666; + font-size: 12px; + } + } + + .avatar { + @include border-radius(3px, 3px); + width: 48px; + height: 48px; + } + } +} + +.no-replies, +.no-topics, +.no-favorites { + background: transparent; + border: 2px dashed rgba(0, 0, 0, 0.1); + text-align: center; + color: rgba(0, 0, 0, 0.25); + font-size: 12px; +} + +p { + margin: 0!important; +} + +textarea, +input[type="text"], +input[type="password"], +input[type="datetime"], +input[type="datetime-local"], +input[type="date"], +input[type="month"], +input[type="time"], +input[type="week"], +input[type="number"], +input[type="email"], +input[type="url"], +input[type="search"], +input[type="tel"], +input[type="color"], +.uneditable-input { + -webkit-box-shadow: inset 1px 1px 5px 0px rgba(0, 0, 0, 0.18) ; + -moz-box-shadow: inset 1px 1px 5px 0px rgba(0, 0, 0, 0.18) ; + box-shadow: inset 1px 1px 5px 0px rgba(0, 0, 0, 0.18) ; +} + +.codehilite { + pre { + -webkit-box-shadow: rgba(0, 0, 0, 0.07) 0 1px 2px inset; + -moz-box-shadow: rgba(0, 0, 0, 0.07) 0 1px 2px inset; + box-shadow: rgba(0, 0, 0, 0.07) 0 1px 2px inset; + background: #f1f1f1; + padding: 4.5px 8px; + } +} + +// 分页 - PAGINATION + +.pagination { + ul > li { + a, + &.disabled a:hover { + color: #555; + font-size: 13px; + text-decoration: none; + text-shadow: 0 1px 0 #fff; + background-color: #eaeaea; + background-image: -moz-linear-gradient(#fafafa, #eaeaea); + background-image: -webkit-linear-gradient(#fafafa, #eaeaea); + background-image: linear-gradient(#fafafa, #eaeaea); + background-repeat: repeat-x; + border: 1px solid #ddd; + border-bottom: 1px solid #c5c5c5; + margin-left: -1px; + } + + a:hover { + color: #fff; + text-shadow: 0 -1px 0 rgba(0,0,0,0.3); + background-color: #3072b3; + background-image: -moz-linear-gradient(#599bdc, #3072b3); + background-image: -webkit-linear-gradient(#599bdc, #3072b3); + background-image: linear-gradient(#599bdc, #3072b3); + background-repeat: repeat-x; + border-color: #2a65a0; + } + + &.active a, + &:active a:hover { + color: #fff; + font-weight: bold; + text-shadow: 0 -1px 0 rgba(0,0,0,0.5); + background-color: #9e9e9e; + background-image: -moz-linear-gradient(#767676, #9e9e9e); + background-image: -webkit-linear-gradient(#767676, #9e9e9e); + background-image: linear-gradient(#767676, #9e9e9e); + background-repeat: repeat-x; + border-color: #686868; + } + } +} + +// 提醒 - NOTIFICATION + +.notification-indicator { + float: left; + width: 40px; + height: 40px; + margin: 0 -15px; + text-align: center; + line-height: 40px; +} + +.notification-indicator .mail-status { + display: inline-block; + width: 8px; + height: 8px; + border-radius: 100px; + background-color: #aaa; + background-color: #cccccc; + background-image: -moz-linear-gradient(#aaa, #ccc); + background-image: -webkit-linear-gradient(#aaa, #ccc); + background-image: linear-gradient(#aaa, #ccc); + background-repeat: repeat-x; + box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.1), 0 1px 0 #fff; +} + +.notification-indicator .unread { + background-color: #3269a0; + background-image: -moz-linear-gradient(#4183c4, #3269a0); + background-image: -webkit-linear-gradient(#4183c4, #3269a0); + background-image: linear-gradient(#4183c4, #3269a0); + background-repeat: repeat-x; + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15),0 1px 0 rgba(0, 0, 0, 0.1), 0 0 10px #4183c4; +} + +.notification-indicator.contextually-unread { + position: relative; + z-index: 2; + margin: 0 -16px -1px -17px; + padding-left: 1px; + background-color: #d2e4f9; + background-image: -moz-linear-gradient(#e9f2fc, #d2e4f9); + background-image: -webkit-linear-gradient(#e9f2fc, #d2e4f9); + background-image: linear-gradient(#e9f2fc, #d2e4f9); + background-repeat: repeat-x; + border: solid #c2d5eb; + border-width: 0 1px 1px; + box-shadow: inset 1px 0 rgba(255, 255, 255, 0.5); +} + +// 响应式设计 + +@media screen and (max-device-width: 480px), +screen and (max-device-width: 641px), +screen and (max-device-width: 720px) { + .navbar-static-top .container, + .navbar-fixed-top .container, + .navbar-fixed-bottom .container, + .container, + .navbar-static-top .container, + .navbar-fixed-top .container, + .navbar-fixed-bottom .container { + width: 100%; + box-sizing: border-box; + } + + .container-fluid { + padding: 0 10px; + } + + .navbar-inner .container { + & > .nav-collapse { + display: none; + } + + & > .nav-collapse.pull-right { + display: block; + margin: -1px 10px 0 0; + } + + .navbar-search { + display: none; + } + } + + .row-fluid .left, + .row-fluid .right { + width: 100%; + min-height: 30px; + } + + .row-fluid .right { + margin: 10px 0 0; + } + + .nodes-cloud, + .usercard { + display: none; + } + + .sidebox { + &.weixin, + &.friends, + &.community-status { + display: none; + } + } + + .topics { + .topic-item { + .meta { + display: none; + } + + .avatar { + width: 20px; + height: 20px; + } + + .main { + padding: 0 0 0 30px; + } + } + } + + //.topic-create form textarea, + //.topic-reply-create form textarea { + // width: 100%; + // box-sizing: border-box; + //} + + .topic-create form .span11 { + width: 90%; + } + + .topic-detail .ui-footer a { + display: none; + } + + fieldset { + min-width: 0; + } + + .form-horizontal { + &.setting .control-group { + &:nth-child(2) { + display: none; + } + } + + .control-label { + width: 90px; + } + + .controls { + margin-left: 95px; + + a[href="/forgot"] { + display: none; + } + } + + .input-xlarge { + width: 90%; + } + } + + .user-page { + .project-lists { + display: none; + } + } + + code { + white-space: normal; + } + + .sidenav { + li:nth-child(2) { + display: none; + } + } + + .login-box { + display: none; + } +} + +.navbar-static-top .container, +.navbar-fixed-top .container, +.navbar-fixed-bottom .container, +.container, +.navbar-static-top .container, +.navbar-fixed-top .container, +.navbar-fixed-bottom .container { + width: 100%; + max-width: 960px; + //min-width: 685px; + box-sizing: border-box; +} + +.topic-create form textarea, +.topic-reply-create form textarea { + width: 100%; + box-sizing: border-box; +} + +.topic-create form .input-prepend { + .add-on { + display: none; + } + + input { + width: 100%; + box-sizing: border-box; + @include border-radius(4px, 4px); + } +} diff --git a/forum/static/favicon.ico b/forum/static/favicon.ico new file mode 100755 index 0000000000000000000000000000000000000000..cd7f6903aed248065ace85f7d6cc4c7e7d3b080c GIT binary patch literal 1150 zcmb7>OK1~O6oyY~Q5Qm@77-=d;>NY$qax^1&_!K{iy|)E=*C5MLQ&9#&?4@-ibw?$ z0(lS!1k#XK9n63shDjx45^a(RZki}aC5htkzt>3_E{|Tovo+G>6doUOzCo3z@pZa`vd12uJFD*S`)E1p}bsh?ZNP%^|#I;(TbGers zi^UjqpWSIa#gn;cG)fA(Wp#Np8gZqv&ZW{D zUR_NyoSTX#bMbhb6z;WJZ5|GX-0gl~!+6W(a)sf%Ry>(YBod@>Sl4wP3kGbVh2cLMXR_HW{e^R=zbF=qY+084E{0(+_O6Ir zKA-_Z{#b Ig4WO64{}8>Q~&?~ literal 0 HcmV?d00001 diff --git a/forum/static/images/ajax-loader.gif b/forum/static/images/ajax-loader.gif new file mode 100755 index 0000000000000000000000000000000000000000..99edaf0f0a140b2d00df3a16291db2aa2df3b019 GIT binary patch literal 9473 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 b-yLA{Vq|rB4lnNZ6#>*$G?l9rE#Lni_!e+5 literal 0 HcmV?d00001 diff --git a/forum/static/images/grey_header_web.png b/forum/static/images/grey_header_web.png new file mode 100755 index 0000000000000000000000000000000000000000..b5a6be1eb60816301968291ba3302cbab317cc74 GIT binary patch literal 95752 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

Tuc? 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 literal 0 HcmV?d00001 diff --git a/forum/static/images/icon-new.png b/forum/static/images/icon-new.png new file mode 100644 index 0000000000000000000000000000000000000000..27590a5380db23f273c87d74f6f0ae4cbb24a12d GIT binary patch literal 1010 zcmaJ=&ui0A9FLpe92@?)h@Kvqh>A`6(l%|g#@RKkD=ek9-RwbRugO~*y5wcatIejM zC_4xW-b4?27Q~C-K@U3%{sVebyzDd(uVcP+ZRf%INZxzjFW=AS`|~|6m#$Awo}1)2 zZo0UjRoHoo{l_N8+5R=NTw=#rny=F;S*2a%VJ>Tu1_nhNHE{(ab7TE8&T!oLd8<~Z zb$wAWh%KPdMhI+|p*b!y7r4l1V+tC$X*nvt`)Qj8mZ|bL6M9s4bGT(KYvs`Ks2ZW5MK{{0BS)>Ok*zS!M`FWauwCX^!=7~qn+1>9pqI2_jgBQblCO_7N5_&Hi4|Ee zV%XZhT0Ky)`3bMX!DYg5^s&R{-D86d_v+j1QB0K=Yx({AXrHYI;eL0vF~{^rX{A(U zB6scbo8RH%DQekT@NMzw@zWfb7(27K|N7C}3nwx+KE68HdiIlFd0(Af`mvna+S+-s n)Qq>EFTKp|+}r;3CT;+oE?_GZp* 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

xz3aqjY|SK-ZwMbxcFUt7L&9G&~lRsBC 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%0DZoK> zc617<3#1ws9u5b+d$h3ZB*QKl>@*_Oq=o)k{j)}<5t4aCp8SlS-ywaIw@KvP)VrAn z-L>kd6O46}V2bhnZ&! z$}P9RfWJ9=w3TSofO!hb!ySU}`W$!x7~A&??RLAm5~f80TVdgev*@($C7(~{3;6o= zD-3$X+fry_cWQa@z~$MM#>gaWn>o2C@yGy`+dhrHFIlC!iB}ZBqVN{-@~qy~F@S^G zbPI~&^~oNhOe~EY5=3%Mn;5;*Q!Mc@K=FfM!XHq@A-oke#dY8b}h5JwVu z!Ay_mHq$~}+gWVoCiE81 zRP`JF(`9Se{Gj*KD* z_B;B@c}B8xA15zMXu1i{ek}9nyQD2tsL?hmVs(vsb>WBJ-P=sW7-)7@EkI^L!JxXR za0H*sl-Q4Os=IWjC4b`Rkn?mB6RQC&&Y7guNDbe*)GY-Ct;|%fE?%~QJwu+W2IA+k zN2Z)gy^*8f9FZXQ{{CLLR?PR?w{MMQN5HP3%D=q4WJYrRxkS3KE2LzQ46n6yI2<@Z zH__kRWFy~*zMSRvb$smeQd_FhgwzjkF&MepqVN1k?vch=R2UNMb&os^52&>O4SvTC06^h9Mx*1rKy%5^+qHvxG}{* zU6h59of%&tj;{D9r8cyb!L7ED*@%+Q8$=;qN5~b@i|VJ*%G1dL<$M7>i_RCMJ5lcE zx-+nWXTr6B;F#17mi-hJF=)DN^PmsPCm@!>QqeH%n9z9AoHY*Op!D-dMT>=tDg*nl^MN0#y1m(Ey|eX}>%v zr0G~(uDU{AvM~(`Obr1bn9pk|&`oFsNp=p6tbR>`(o@x%pBki?aOS{eAL(g9TVwT> zbkgOv@= zvo2u#q)sqzZsu3l zvNi%N94_QQMfwPz04H~!si2M=$%#cV8$D)k%ceESKH9UM1Xo~CXNNdW8>&1DiPaGH ze)jLH$=ADx!EOWqjumJr=6y;J7E){mE=V-M;C?~dA!%h|^*Av$)x{_rYBz}0Ksr)m zkL|K>Iv$U1L2whuMr`+VI#Iy#_V(6jev>ez!EDg9cA8$7lidolN9WBtcR*)?(t6C{ zhBU@WI@JAsKVpj3Q$V7E6*vWiTy<^M*_h`d#gU{KFbY#$zq-0d>sm7PDXGSZ=L;+t z_dUSoB>5Qt=H7P5`};fcNxMGnp%YYR5yY7r;k_11|Tn zGGT~I#@euKH@c^jrHiFqpA9_kxt*rXMnKQENBZX9jhJ^u3(Inm(RKf6OspDo}y+^}*k%ZuKtdPWqJ2IY%KIz1nf~gs&++E9=>q zcjMliVtxahd3%D_M%68ycC+1N6sNipMz3Bz7R!>Hn(CUwL57-}-3(NNSsU;A%EafFDySAq;_0R7{DZmQTjKQ z45HeL*JMvMn$R#|T1wTA+L4L_nh7zxCcm4yZ1!xS<3Ug(5n0rVeTp{rL5pR21iJLc zAAkJebyZzM0w}kD;a1&B6COeu9%c37Br7N$*PH`3vXMe~zi<7sS|Sgu7csYtT^|&* za_b|epu1zDx}u@oEZfAJM!Je@XXq%$25)O z@n}D$%qo2d&9ID8$;I9}8L05MKJ~{~+6GQEoIV5VQrngdsANn2tWJ%Y!nk$wCL`#9 z5zFs-VnJK7ik}(w+NbPpN>sSNznu%QIg0T={1b?iyuZH#{6vcb9EHJ|>t9XZl)`!X z^DcbA00NMi)%HeRvNMd-nd0W^!XiZ1?{1<{)NFXl z`U%8-ytS*AT(k1KkhrJSo+hKYk6z<9#k=ju1fRan{R-WFgSrq)>u@+oCkZPt=w5<9 zRR47MBUQC|Nl!D!AkP$rv#5d$!r{b3*WpbgB;%GNb_1mmnoP~+98Epr3Na%)c|%3;iSaw zMxSR&u5|x$Gs+%B(ZpgGhP(BpO*8)=dvCiQIgVWGvX9$#yQ?Hs&;4ImUBz@sDrv^{ z-rIW}y(ia+21yVEK_)W={HRBjnIu6V5Z|$);UIea>&M`6udlC8T`ZZNw?6qwvn9!e zwMBiTvKxuZOHoqV)>TA$2xV)OGt)S@i}~bCX-#mWpUQh;KP(X4L}>EFPt?RoTY4#x z*%*0%ifNl1bcV(KG3l+NB-vy`oCZ%^xnpIn1*gdsNBLTxuPX}4#C&{w_gGpr1@ zbKOV@+M1>}?i+Ty!+G~FFE24|kUyLkCc)tZRSTxL7y3k-W$lO`OvZ^NbR3fW?~kFM z%}GNPc<6zk(S8H~Wwr`Mf1WOf2am(r;}|KTRSTv*?$hq*OR(0Uo#XXHtEfhqv>%B7 zP^d*LZmk(ivjR!G=vQ)DoE|EPb;psAD4sLA+9Y1pzkQ4?g(^nP-@`tU#mL-BnpdnH zr&ag}PU1~#E}|%2ps;JWBmin{%iSwh*~fDOn=hV0dXE_Sg)pzqqkh@8JPMzh=v>O^ za7l%u61|8er> zL~(pi(gdPIDsNBDIg5?=haatiCPBc|O(<<9iO(h5UJA~a*TL>@&5Aq={BAupV2>dp z(cyZ1ecdlfq>pQ`3z`TCMV7#_T+HsqA=z*F5Zj?EdO#D za|eoFQYA`)SVqxzLFjNv!XT#?! zDilkGzj)}}56-!glu?kKceXjZE{s%^w$DZVvX4m`@WaD{{#|uvqr3x-mVB$vDclAp zk%TxDef?LDv&7wRB{>e(DyTp)hw1!T8%H)1cEWXMCGudWzJC3RZ2%~z%ReKxAwXhB zt$skZV^kKC=j#3tq?@tiXGPJduA;z46k9?$n(dDtKhVIaH6Gtt-#ROkgthXsfUKk_ zjH+sS_3(B)mxKtCKz+BLKYucRdWJ+ft50Z*+clYn-)dEl^8bq`Hf(jkSW~*I7)GY+Qd*ac6)C$oYDDdYW^QUy*W1h{j`r zHw~qW%(y+Ci|)7m&X|GvJGw18XW0I&Hps=lkO#0lC_1i|(IT7tu5F$p_vgnF@ssg7>C*yhW4`NF2y2qtA>)38q4vHuy4p zIOh`|8vyyNw80{p=_)PC95laW115 zx^@ZoWe>paG1z4)m+uBfs*huoXSfH2br{BLZ$d^bb^TGg;FSZW1oi4e zNE(_kkaQ*iA1lcTuvpwgI&~Foj@%PNH%VHD-`x1;$1sKKb$S+mlhGY&HFgmoFC0!< z{O}3&)%5jCDiartc`8F)xk=1zxWr+M>*@RBkKoY;qUxt&r$Jfbjh57%(7lp}OW!_7 zkO5o_-MV5CVwv`&J^A$XL`56!3?2$B2tnh6nE0>1K0ZFu-a)M3_4QT%?Pu1DLk-~7 zG1T2UjRXf2GW=**MA1kS(Xyuo6Ie7kc)_()$Ab!&1;fU%qPba>xc@S48up7nd>;;@ zJ|Rty+^DG3+P`Ch)mFN72NYV=V!>|7vnKzUuYZbK6T-4M4LzIakx zW0aza(n1LBJl-_3WlV;I`6CgM+-Crx9QpGy0vvHpbrHdh;S<$4+#i`f1{<9Tu? z>Zg7WHsS;BWO*Fxn9O+DA`alMm*M8K|8*I$p)KEv-Xh>K7dkY{p>rjH)uFX53&uS? zqOL_1S_L=A^iCw8YqTgMDRqkK4z;}oEz+o>Pf*O=mF7eB!TspY*hyztXXWXfusO4&yr zi_)J8IFk@=@r|u}u&70cvI2yctIStY~M=UVk4RGTqvU+7|&xfW{BJU1jCpLM_u zr+=kGQYAo`fo}=i!Y=qkD$_{{IJ!gaZifyDUMh?kf?ZImdkmSTfiRn^*2cEScLw)& zx|s`Y+#3{s8ImJ`T11v4f}F!i4C*r&52WCB$y7cJSARD3B8GID587W^U+0h-r@XwW z1wUK-F~SeS0NX&1AYbfAT1DPVI#SA!z(|!3EfhV%Nxn<4KW@~arhUQCy828e%@s`# ztq7lNTySYrC4OfF(B38gPs^bX%y)OHBek#G}HZhax2IP@69>bTe#W`L#*mr&sCnuLR7P~^`1@h!wh@D_AU zaqhyT&)pv;tI(?ZE z1q6g@roWgLcTd__C(%{ogoFXpkMQ};l`xK{R8PWCI>Ja(;F)46S^hr5Um*)8--ToD zBEINoJJ|1lL*d7dANa*8SPCeRRur^NKY#wb0~9Kdyu^Viw>+m~V$R4cIVKV)-@bi2 zfSEizJZ#J*sT&wnn3N*y#ZDc49Hc>hC_g>K-ACa7gKXDB3NNKiu$UFKCbErDmDh?z zN8=<1kLN9Vu4e9H%<<%X^rHAcPnO8ThBu5ltsBI{N!zE_mc}1{{DH(jTY4JF4Z}yw zDbemorUTrHyzhpvR`@BJxP6&wM;>T9=uiX*W6AHS9YI}(6?k_@Nx{!WSs2X&0b?Dj zzWSD|NtrN7evJJCRFx&ZRE!RiXNmF}xXFqC!x9|+aDmj&1e~*p?~Gd~CvYvE z`1<-9Q}FPf+o92ks)0JxmtZWwplsU5P?9aSj#zSjHI8cMXJUvt&)hZG`mfH0J6lu8 z*^uc!Jw55UpM+WWP*2@Bl{ds0*X3Ku87$PoB~du45?7oH{VT}_06cflan`9J$t817 zgCk^qKqePRF7Yd>&#to9!=n3w^pPJ_Z68LQBu=6dfU`y^Ng=HQtCFMn=A=;)DdCLA3D5CP^5*k6hPpkxR`3j$QrVMCiBiPh zfB(JE&8JrY8f=``IXNg07{f5(0hc7BU9`R>_(`?hT-yPX#^;_z>b1MMCu{^J_b#Srn-%45xZl<*yiJRP33<+jJ-W*mEM6QD)o2bXb+E^KV34BDU%CsNXAb-h$ z#5qm6sZDOW6WnMQ$lJ1}HimkD@HmEdP;A&F5#1UO|0Pv8z6Di{(v8l{799pDcknr! zQnK&B5PpSAuAd#>x|qp6ifJTTk@Sq@&0XDxt38yCE|F^71l#q~nz+ zA67D`t<$Rk8Dj{BI|#AjP6bn@yJq_6qZPLSq^W0N^pPJJa#x`f@>>BTBd;8g&^c9v z2osUKMd^tm;U>%c7f+VNO*Li$`cfVp45>}{pIj|cPI#h3UhL*+fPbK$o$>~@I;{!L z##^MxBp?F`{op-3p{+5#VIQs7NHy3W5q++OYzVThWhNZYhE>M94hrdjsB#NL&OU*2 zYQsBeZ9V4SzkmPaOF(Y{o73i@k(tur(a43JIbLh0=U|6E@8GSqw7$P*?D&H~AazOCQlu$yqFvaWH~z^em4O0GA5(4J5vbL%Mh#5`v1dNLgqt;N1BZ^aTIi$|f;II&3UAsGHv#k~d zG({)F#koed8tY(Kx2_d$9KYt-XdWK#M!yv!wi6ApI$WY0U?q^n5c5JG9v%SvJINaX zwu<#jbGNyii+kEZz*%X8SAAzz3BBj-?Tt!6nk!e|S=;ga{H$9&K0azYz;V}((27M@ zO?H4SpEJO#o}MENH2c2e|?-Dq^7L}2#{>*a;5gUfHj=sia}`XOJgkkEM5!N7y(|S>Ex{R$;-=2+@pk&EtoT1dN=L@g(o2FGU3HNVhzz1 zd|qh6ed}C>P(RjA;t9P=N!P#a-yZfY`LLf*pX}e}zoozAaLJ{LNcpJTbjLn;RtR@| zO!&g0+JOE~M%&_@c|rYNwgYMddKan=#{XEpm&{pr1Hn!AA+tWYR*FP~g`(BCo)|lU z5*6c($jD0+q?o;O6Ldx5op`It z%oL%BH|bdr zr_T+sGI5MvHqysfy!sH??}JK%D8I_Au!KdllKbeE66+Y%bQlB3rKEi=AuIPU!aheu z$DvmJj#wY>@9)GE$8{Ar!UzGPndo(5NR{9p@2k%Z;UDkg6}TZ_^1aEXEg$Q(@C{dz zde6Fo35uPQ(q`-n5r2hkauf0ncI3Ci%!w~+#6a?mx{^~p?$-YTUU=+hVPrIXXVH~5 zK6Mgf<_t&Te=dVSlO}HuJ?|^I8v|2!$xOGKG&p5oF>U2#Bru4_8IE&m8Ib|N z`^XIX^5sk3t%e%PMl<%W^dt!=NOjpq?zW>~IOrWyh-ZXA-#fM{;12_$fZen#^h z;5m65yGH4Uf2mWZ$LXMz(2s6N3_1B6*aDIVodxF2<*+xYpCUZKBXl=9Jj_A55R(V7 z*r^1=1!>|w21PNXj&||iM>&Vrxe#yZC5;(gC!SW~fav2>4fJgTbUF#bTGJI3Yzh>p zctYY^T;`F>;&5P_-&?XvdeWv~OTdgsxzroln#C!h3u!(5VbmowD?(`8gnYL-=Eg4E zir?p$ZltYN1LeH?)S3+BOLcq~2owwolaS6uqU0A6q3wk;$D0X_$KWxk8_5Y0Z_&F* zG48kxn*_?ez8Lb%ojL(@H=@C!2rq#g+Le{tnCGa+tUBI;x;aiVITv>Ta#SLgHkPb| zT1D}oyAy2eABqzVqGFOpvRL$IajpNB29`;?H7n;TazlBNn^aaN7yHE+zqo( zr)2k8DBXmNLXkZVH55mjVp}vVw=Ceqajf*;=jUgagoEN&{*<`CQIF^T)R~gO?#wvr zUQPVt;(Pdy^q?mWuw3f-MG)mAtmz0e1SaD^fesO$ zn;6DVPfw^rH1~AaH4~=g^{v$;@c-u=K%ngXlvWsj+@w{*&`&-{qO7yc?FUGF#~h*x z1CTRS(bM3_0eH(IB~zy*M$yyLwv2l=CniBFY0Ou6{4jR`@UuVe81>!064VjB3%(>m zNzR+Y!pCU8Z{yI5Uvl8_;7ms3aHRp}isKU3%p6OlQ|DYvj2dBw_=Zbe!~6R?g>rc| zt!w}Gx4)5Riw;C~(s03}b=Pnn@$&NW@bKXF=Ux*UtBo?4*(8>8_k(;}9jjFwvX4)7 z*d<1(*g8)h1ioO2TCh{l{L9%9(uDXE+23Fsi)n0!i$M)=d_C&47$#$ngVhF7&KG6e z&Ee%AkX??}*F^cbj}GbQaSv7Zjw6Ojl-ea#xM_wn`rRiBdv=Cw~I~S^jqPg``WcB_sxwL&w{_S3pUHwo_9nJg( z273~RnhUNY2g@K-_7NF1U6Qr{lJ;@m_AsKH7?_Sc2ki{bHMA5QY7)nJywOCIqlbv{ z|NQe$t6PPZKWG??rK3xIwz`ZJx%?vjcqyg0z(XrfO>K$t$ZuVgh< zgP!KRheS*NuaB`-(WSXT;^{uyicQk?O+?CX4w$7o)TXJB-a58L?G%uGTL;oqAu~!i zJ_m-Ll6Su^*k&a{jt-lok7>|U5%nl$7=8QpjX!XTO*${=;)LFlxKpvRFc)oWCFD^k zl8xCvTp&4O6G^ssEqT~DyzZ`1*r;`@PFrxjCnGkzr;+7wi8AdWB;pR56#&_$H(D$* z1x`iOIOZF)F4e7wX#>izM~nynX0&sy9^l02-?TTHyo%4)0^Z$<<&PC)-}h%2#1D?d z+2o{9LbZjf|L4cp)vF7_H(mdR3y!Lbxj-oIs?oAS`4LajGERm7uWnlO2>ewB%Z@S@ z8xdf{M#Jw~2tFh%12iU<R@7D4S;n=I zDQUL)fwNH}u-g5NV_-}grXBU@LaRfXpy{s~u@4ovY2IJ6rnM1P^#9X3r{**(@)FL! zTUy!GplzLMjUGgF0EL zyYXBj-$MzgJMdz6ao*1Os2-ITwcXUWB70q)Xn?tDI_GlKNBcb!sMqEaA_375TmR#a zKR_Aa(eLl?B}7G&ie!4a7R5c*3-1?qC8ds;M8ZZ9pPROb@bU5SE?rKf0Bid`Pw4pn zT*i?a@S?Mf1dTk6;pf_Qr*s%a3|<^6{cXSLzulo$c&w;^JC*q@7WeY<^8EblKxrT4 zV|z>m0Y}dzDbnA*eIvXStFGY2KR?F7^n+?Ax|Nh)@HeQaSw8=;M2$KgZ~GE(!}&808! z%`IjGYd-A^&wv2Fjvo3cojkWlrkGQ6U1&*y=VOZ(=!eg+DKsN5j2hVsrhNpON?Td& z=Vp;zs$g};MTpzq&WVutKJKPlD_Hm&J9)W%suo`d!Rcv9E`3F(p8UWM=qwf7)?y3V z9WV_kyLf$lweFj_PgKpRxYX;&c%YOF{|=@*f9MC0ZuwG=-F9PTBHAjX188F8E={T$ z_X@1Qv9(+LGYpvLk-Nz;$?I*zDhpv*L)ua6F zB=aF16>ux<4xY7}0AD}DK!ehX&B<0tG2mYpH8<1%+(SBL5~E+fd?Cx5qm9#zv{s!U z3JVV4iU2EHKculHvlVO7yBDhcH1sU24fnEq`51=cP1GLqy@dau;%Z|5_!z?_QSNM+ zp?i!2a)R1QNeHP|eQrOh)y`rulUP+fR!dOtE5w%gMj;Z>c?P*S=U41+E|&kx_wV2P zK^=RqQ1N43G{!S!SqIMtR|2u$PrE6szuj9UmpJ`odmRDcQ)}nLC22ypZFT1DDr!hz zKzm%#>q_&7Rl7DG=Q7cg!b5} zxntO5Wg>4MA9GEhq#PT5YmW38jN3UrbJ}C&O1e*S@V5{9YsU2K#ROk?@_<+e$e)P+ zeHmk$3h3CK-fj*dcL=Ee2+fi?@UnQjO7uMwA^(kHH}WM7GD@QChAW~id@5o_W7(Cv zvX8A+6}fOjm20O}V5;>}jCUV%LOzj%xPQsXot)TC%E@QmZs2`dnR3UB|JUxyoO6lN zPx!6&5}_D>3C0TWLkG|5<>dt&`bk#uN%jb@BKpnZwPKg=@9#c`c)oNpx6F!U7BNlk zkFH}k|MvH_$2R%pmOIm*RJ?vtEjVBYAzg{6nC!Xs&fxN(^`f`~=Wj0?9yC1#{tMa& zia1TO>z)fA7(M{(^4I?S`I8_OrD1y6cvN+*KGDAxx|%A8X1{(67KeVIsK}x#tca31 z+gwR}YU69c6J!mOZ}kdBjUj0$0~UE7T*ZNI=~WS5<1XJ9$ClxE&`sxH4O=}IWFkEU z&|f-l@LYHNfJYg{57Ik=erAm540h^) zLW@I9H-}}BL#LbQDRKUHPm@|b0PpsDF8ThgBo1dJ5yzdYtooL4V63VxzZO_e5E8AK zaF&y6ffzQnOv#+lmNg>Ib>G2_-(u;H56KpY<)#98C!KYsiW(`c2KMDi@2@j2aqV5FInbcu{p zuR_@~qlgXA;%|t582N$ltyEd#PU_pcM@*Y^NACT~b^*6CDtljojci;js2Y9*k9-tH zcbFe_TC!!V9A@hYZBQF;8ktZ@97MP9tIjna}kaiJd}ajE^?*o zcI*byYfE3AWN{L2m)%K;lFinzJ7~j(8!vC-gKq*PzQP&OA%xClfF9DV!qh7|jOuSI z4nr<2X-8Uf^9o#hDC=4xGW+aA(^bqf7OC;FYgLLH9hfwe@RT>Ig^+jSI1uR`q&C2^ zAVU8hR=Ia&A_q{9)`N%@>k~(JH8_%d#oviTt-QZ;g{i}B=a{)Un4QsZ9w#ghm+W;E z>+Ve(E&xw&Z*Q6Iu6qn~GaSm)#F;rqzb)sY+dqYR7wv0?DU2c5h|e;t2A{Z*Lpc-` zN0?9lq-tBYzw>;Z}ZO0-k>p;jK(B+0xE zzY&xBoKW|~Cim728m_H&_C9osE9y2|Y$9=wB>RDClEfCE!q>{ls{MtZoY{Q7m0@MC z&JAs>^Q-JdSN^7t#~5WCrQ!H8X|xj*L~;r^w`<8oS5Y!amN@s+C$#q_Z9y7vCSJD( zmqY``4#^)L44V=;2ar5vfWxI(;c!7c+vrdu-z|d}Qaz|xgv|7yCRsvkw_f}zXg(;@ zc?ERKxv&(>8v{0afByVQeHqyb8G56GrxaG3WTpJ{V_<%8T6Lx{$f-Zwsa+uG@6;)1 z=FSkonPT?E**9pKJukTAQ2Ws1HGgvb?wi%)BEJs@BJ>t_+}x7Cu|uE=EK&^A{g?w1 z2O|&ygWD4&ifBQ@1**vf8nH`;WicXyL*39Dve;3?o&xa@H>d#uVz>mosHpAglQ|)7 zh$BUhA-y0xSiLp{wm)1N*WeQEkVdQcBq}k!NF(S2JLt?!LO41L20ch{W(%82C4}_w z@Ic-H>LM`wBxhCdZ8v|%F;|j0rw5^U;}*#rbK)70UuJG*%flsfmpIf2LO5rQw~j(Q z1IX|h9BK!65*x;$4UF4+eQvaZE3P$SX0jub`)gUhYNtSn?J3XRtZH={8{f$#73YO* z?GCjQ4QH0d?c`Vvr^-{Xf-ZYah#tEj*!JWA%IMtL$ns|D8%A6mJ z!;++5Dm|lHkZd)LjlI3V+0krK=9+5>kB^U-k!{KBDj8}{irK?e!OdByLL(M=4E`Ou zDGlbwOU<-VSnC3nRDj~-0<%p2qQ37}ev5thhGMcn2@%&!0bSGvmX;T<2Ob`R%;LinXZS+<*ut>2hQ?kvPnwNiyYJvuML5 zCk1d~-Gof)Ns#qVG6<4+L5_K-HVc8JC1 zVxM?~3FC>s0UC?)Z&U{==sz5-y!o9X0OM2R@NoG-tLxTEtf;!CxI5Gqc4Y_{Y6wwqhz@3m%*3#) z)NNHOxRdw)^UpugJM)NLNI5dyi!&i4s3` z%v2)lha@JSVrru2)P2qK?d|QpF`;n2CzX;1b9gMYjj6#DZyKFiF9l;~@9eiiF%^*j z|L<}wF=76olCcT&mCc@5l%22z=NdSRlchrmfJdbFyJ zr=pX(c6^Si*^Z+YQ@{{q77+!O&LyZ%9D^;JUPkYEg z1JGAYDV9{m`L0^B^1__$=yLCCse}2UGXNbH@|^Cybvze?}d`HPLfCkU|?> z1^>BMbMz!w{e_RMnUh(3vt zjEM_Y5tON!IC0PQGI-+1Qfb9oa4Xx3H(Y8wBVz$HKu@Qjn-4)exeTbyp(vbAW)KpPv_77Kj?9$AWKA z%`4~$kTms6rnkycFqR)0HM~)eczu1f`ayDiC&DPX%JFckZNOHx#<<|AkF{26o%N0C zJNAxInlO0@3Q5J*>xAA4QXU``&CwW;^*9Gs#iw-@eKTY692VIshZ;(nW3;Pg-UK$W zJJhBn9Osa8#VTI~g~~LsljJbg-_u2NbC)2EfZHD)+T=8 z5}8$Q?PO}WtYl{_C9g0i4tO<7OkMjq^Ge`I+OLC?)P{?jIIcXYpjXl2?qi6yNo$3$ zF@ch8jgDy!!X64h6i)z^z{*Ioouf3+MS(b|cB)E%8g{dluiUXKm&&?$cDOVj=w9G4 z*WG(fR`q-<)YE!`VI4EyQXE!Z@98tn0jyKQZUQN9r!E<;He0&_K;py`UFSlL@tak1 za4leWsO=)EId8<8+`8-dX!EXl!gNxLXbu^3LL%Q_jZ8^4gP~^^Js`k-lM6sI1pDL2 zjW?1jc|+seH=CVTO!l@>cPna#%L=YVx4SmxYik{8bDg0BK^hOGtt7)HabqBoH)Gjp zg~GwX0nv#x0j!ItHvsE41kjd}n^PVOu0-q;dQXGpI-aq(*waCUY67sb9&>?X))fpq zA!cU^<6uP}Y85chdp$ipkpwziplV4;p7cp&lvJ0aQa!zhf8>Vih^IZc5Q|A978kjJ zauQ~ByrcF!gLqrggW`ZeUvJ<7O%nKndgF*{b%NZD;nD*~f9pJwG&-sEZ2?Rux0XpZ zG43HUD>?GG|4236$PLJ}#cAFuRB6oC;ezJl45`9W*3af)Ifmd{36517S0Bkaf=0?U24;HZ?G9fXMVL+x*3R#&Wl?7Cie zNVluLzkL7xy&u}~aQDgUrXv~iD5i%%YWjSmI46qR7KM89DdSirwLcCZ$0DPDxs0)m zWEJgNW$Mz&%Bx&I^T1)cQ*xYr9}Vje6F5wh91m*iSwltOS+U`!F{CQ)>GpPRO6ZUa zw@tJMVguy}cbF@9Tkg+0fORw++xU;%3YtTq3T)xSND5G^FvF~!mFbODNDV($Zt5u?=M*DkD6pOlmbu_tL&7X_NXYs*_m^>`ycgD{}^hFzF zWL7l1@y(Mv>j#`HGvUeSidGGY72QnRrDU9Hg1ZDgNB9NMY7=!Z-r4;G?f*(9IXNq* zu_WGe^0w8rGEv|n{UL0z% zr4QG#1qrCx0ds~yF)^!`lD5M~X4#~nTlZX`A?eZ(BTUX*6Zx&WGnvI$xit68cz!=Q zO&Xej_1RA=&}edJ`}ZxgI#((DR)-=FdYHKue3dyH#A@yMTd@vtk_b4vN|T`~{LJfY zQCN5_4VMVjPeNFbYk~^O3dCIC1KubeRon}7u`j$cPTQy$)Xl1weCEd0TglKafJ!d+ z9tF;Pd+ilY!@cuO$e0+zV~>BC@kW!>Gh7uz%_dVn7bT}=5(;$ta4}b_jR4qq4o{R# zmnK9_oc=|P+ZbsCuA5f?E{c`~_S?E&N8t^L#gV2oTuMkNot`7+wWo=DYI?Y~?}=jV z!8xo+6Bww{Iqdow7h|HDXirNbeyA^GK637;B-Q2PbovQB;MZRtA0LMgBtbZKhMC)= zJ%{+49~1y`tK?Zu{TTk5(53NFU+i`o7F=nj{@@AjKu z5Jr(1zm0hcEEFN8;S!Zin6e?ac_Iu8WiGPj$@-u(xWL@JwTZL9R(JDx8ck{YR9#9o z*RE^06nhRATmUG9oD_1K>mDtkD~&l8i2cXMAf$$O%t4{WyJ*vwnM*sdU{&RWbBEU z{8n=&JAh{)7Z#~VWQ=`iABV|49^|NXCB>DTI4&%~g-k#Lz*8^L8ozz}=2jt|XFgWB zE6(YC3><3UOB`k}BzcY|r(3~|KH)$bmTV&F569!BAf|O-DNsU~F18%07;qsH;#_Jp ztdGHy6-x_(Bt@c+{JQOZiUEIYHCy*`?PHauRNcwJMHqE#gzjW@)6PV)Pcj^8T`R<~ zO_HcHW@#DvEX=68@5()~l;%p}w5HTkr z;@vP}9-ILVeaP(`w39BHpi%lp6jJWMw{bE!-EjGvmDqapf1_ZCX&U?hp5;l}4rFa( zGDv))pGzoUxTMTHK0daR1bZAGs`R%fh%w&Z-}9CBEKba5h{n7&!7D-4oxjQOS5&;*GJCQh)20R9IV`ygNkZ9*!7N`3~b1lU>ZvqsRsB?LOBUU=;EYhFoNE4FUTr z2BoH?s#(-FZ>QrM>Ol_=4`yy-q{WQQPnoCjTRNqc%QbKk_7l?$18gD{RPkQmveuzi zt?hGR=Gy#T&`-P~KaS|#b+Ok=)cA^3l~T%@Ba znBUPC=00&__gr$$lT0`N*lBU`$7VWldi*#(F@8HVO8c^}vw4Wd?oQTWqrQ$K^6BX* z^U4WTBtsLRQzyk5`h&cf!ZjoyGs)j^RB7nZl;FL;zawKfYi^EX_abHB<=e+E>q2m# z;}QR#M6>=h1eX)erWg$LC7#%L zp<>?LWUwUpJ%Dbw&-AQJZ|InU9c9z19dX^Lj{^>!CO8TB2PtPDVY6#Wg=U5uupBU; zv;>hFggf#jyF;yfICR8f;*QM7nlt18!pZ$#x{k(kD(28Ay&YIri>33(N| zk2%wKSLal7>g_E)D^?7@eBIIkzLq(>`8+aXJ5*4P_++cx##2!^8Oo@CQLq|GlXst7 z?L6kgRBD1Wx1W7%nvvbWu9 zFs$s#Tr$7_HfP_${;;WH&0XfCFEhsKYXOO<}Z*=ddl%g#}J-GzQ zq&w95`2VTR{@OZWR>GBHb)Ky_ddaOVavn3vxlbq>8Z*aa!bzd%+Sm6DlQkSKDX)nO zf368Pk@JirDP!U1yVniHJ$#$!4Q~2A?2w^mw0@W6)=d~|s=TV0Q?~XfA0tH%3{6Vx4SDJ|?9!_=WeQoW0Gh{qm0-oFFcOVmg;< z+DBA*slpR|W?H8;d>sC9$v7P=3Pup4ng)Pwv6*rodHfb&FCG&H-97qlzMRadk-M|1o=I}Nl6*rXYd$;NoZ(RS3 zvQ&~q>x9!f>2u~_TLLh;N=e3{W+WU#g^aBmWWg%C07gxxIA?pvz7W$MFDCIh!e+Gn zbp%>`p5IeY@02vUZ;iJ#0fr(TQ=zDIhuSCAkjjA`w(!K5FDAPY)G8X4_AK|aS)m*6 zAV!8FyNAhb{2dZcs*6fsxEXNwvEW&IOh}3Z8znzO#6aO&aB$r30x{!$pljD57WZv& zgwX@x=f{xHx@orp3%ehT8d4k~O*a^lXfmp{Gp)Q|`MtI)&DsM`G0MJwnW=gM@a1>~ zn)JZJuBO)-veIL}c^Y(dhgzX7PPObY^?=$b?aqIF3^*ryq*I`;G!uQxZuYIoOA0q3 z;e_TBH)!{EMN5)?+|dA|VGEFI`bzsQCfq9g19Ss&9B|CJWyI3c1Q3)ZZBqJ}6Bfve zU3)mRssgjP+b(Qz!SQP4sVKj{F7Bz2R@6nEw)@TE;$-YZG*S?0>6~Wo zHWe6d^l8PlFu+M28@Gai+o+th!iY~GkFY?I^5j$N^4Hf_B6-efwG}x@5B%YoR|vB1 z)cCv(6lDA!Es%U@V;o6;OON^Amr*TB!E4un=_MNn3`)ifqL;Uq01n5zY^zekIB=Fx#KX}9o?K1wpGfX(~+7Sa|u69 zLzC3>ZnsYvX-7L%rBQ{Hsf|s7W}3j?{`R++Lt3KS(I<{aBn9ke&MEun$8a^hW-d+o zoYCE+n%fC$T~ZXOn;)$Sj_C=YP5J%z-z7Lu@kLQ~dg_b-ts;dR$ByFS zdV0zfVc{^n7DOG+Q}?+}Br<%4{Dmek1$q{F#4am_*pjE~XA+L&O2l?FeN;2yh9P;X z^TuGHq}VjUR7KP4T|V1-#PS+NUdhK{OBF(yYk}!FZQ@AX+G2)~Ex$JNZi&FO*kNp`D1L8XB1< zSLT2=U(po{M!8BlqM&ay58PJ5o~#IghZGsVGEQg0T$Adfd&?T5cNMf8o4eK%w|K*~ z(>T?j9;bQ3H9{8|8vu7w!@ao0WsmN{#s1M}7-o;XbZZqS-?b)p?f{NYG@AEewPQCr zqR?dT@&Xi)#H;uyLG#H6^I|>bc0NC@?u63Zz`?EVTvOjEs>u+URfx+m|B1R~vO6@J zY9f@OlU|pzYQ=^Nj!Ff$U#v55+u{(~A!o zBs~P8`7^n^q;y~>g288`;HU}2BX63qmv9K!ZRO+Fp%`VUe|u-&f^nWfl-T}U>UYL$ ztK!ZyQp5udnCs-USKT>5&%K-drRstBJl~3^pf@}|K6>4ZXD242&lAn#<>h4vomG>k zOg4EE6{`h*s)WPbbeMmVy<;g=2~7s+mWa&`aRjBqB@b&oF;MRbA(tOw;bAX zXKjt{DRPZ5u`!=SIY?BuPa==>;&3XuC}8l6$?{Zl);uXOXv^#F{#%_abnda0a-(mQ z@yp!74#E%hiFQqYk2Qffkj``cG%N6ua->;XQla9UwiUz^-?kq9XtR+fdU%4t}5;<@$vBR zz@~$L>ibW+FZ9(Ie1KwbeTWxZCk|XTrmg>yQ;hNAYeCj#@|pnNx=aU~xi{+m@=rP_ zNrPl}dPH^KgUMStn^Y%Z@_;Q4lBeQ-!MUH)cy4z%SJ}+Ms~5{{$aEDKBhkrD1pW8* z^)=?Y7cNdA82{Qq8W+=cQ;72Yf}f%rt=(n!X>GVQQsT+S(aICyp~JUckj{+51?UH) zmBl&Jpa74v_F8v~s$27chX`j}@)g>rWG!>Jxs>G=~v;BcE{LeCmVe zOr5^wSt9iSj(`nrRDj)aD?ugJC(@wwp=A9P`!n3@hz)k?bYt+>NK*m_cJ4t^2>I)Kv%nka;tiOh!zqvpDuj`ub&4HB1}oh`gBn&ISsOqTC3GHZ(~++0Gp z#ea%3-F}I99?5Iwq51=6UeQOm>wI!E05LnrO|`S}=Whe4ZI z>_B2wH;2ya#1aN%Qn=SuA}|mY5h7Q*Aesb@OSsRXmjR$kw<~UFxH1{`ow|utEj1jI ztRtJ|+Az{ca^mUf3BeDzrihS;mIQ#lS}Tl+yTJECG@;_gA@T%YuCT3g!b1qij2VGr33Z@Y94u69c}FJYTKmAqL4R(ZiSh zBOhpe)f)$B*J%&Y78AxTvm3@fy(1(Cpct<;Qs_wF`g&fI(0)AW3EL-QgUTn_P&~K7 zKI#s&K6X@enjm@(m*{A|++gvTftix%RkDci&K$=0WXC491U|3WB6B;hG&|tcjO9Pp zLI~={P7(O^af@L5=&P5Pm;4gB_`IP$ZG^}O&CYuj?iXF&=1?t5yj1%s#3+9r5*f2PJsrbpW2`Qy5FnshMx zYBOWFKw;kWh)92st|XvX?k%?S)9I6lN4%Q1qj5Q@XHi(}k)OW!#J9IM`goR0YTL=W zWD5i}nn~;ii0UQ6XwvkckGbuu%VNesjIK*Mf4+f6D=!#R?G1$sPxO}lt?r+`__IPg zg(S6VLM0L8oaXtK%XN;vefzc(daRARSVzC=jI;PQtc>OI@0T%-zKG=h_~Q@co$ck- zJKhg)A3F^gRx56Tp;gV==J*;O6Y|uKv1!L^Vgs_(9AfKw>&K3uPRey4Mfm&c*RN6s z`CEJk#)KuAd8lvOP<|M3-^vppdPAApjy#Ah*u%T_y>@|TG|4n!tuy&$)f$*9Mp-4< zuDWMpIczD%9@q7ZH=V}SdL0=&x5Bb;B^ycl{_GIcP0_{)o3X~O9SLbsqID8A)Q#cE zO9D*o=g0W*;|HZ)UHUI722M!4=>sLzTv|AAKNxc48sAnR!429dzMgE7vnbgKryX3Z zt)r*8Rg_i6isLPt1%`w4CDaVOY0cZ(^f9Mxt{q^%YIk7WnOmXvHqmCgYju@`t*+;V zAryMb3Q1^7mKiT{LS^z)k<{_9vWMbVH&sZ88Xcq?VnW*Q90I#PoXo!|qLzMu``C{& zwvwGLsNN`mC)qSklVh@T=R#GULzAaSV-N>+4{uOK*L zX2(^MaC&-rdV70YG-#+K88z7yW(y zhDVM_-(_`%_Fb$1*Ol?bPonDs<2YOp4@vqUwH5%x69TKDrIEl33mxVoH+@7Q2m(t( zu$!yD5xK_HQ{$hyq5f{P*_EIdH;CX5Q4Z?cA)8mI-P|>yd-4D-w)4xVD-yWKME$!l zSc{JO+i$5h@8!$c8A)Xk1Hzo2EA%>pJ7|@ zlXV!MDCZg+ChaCqHKB}FbD$a=qs0v3>({TOn9KX*PNzi}>n5~Mn#n{7Pit&IF z`O9Ujx*O>^w5`y8Wo5aA<`XK|wnX^Mko#sqUCiwJ`?6p_{Nw_3=-P3!CFsPj@&y~3DAPZozvMJ9Jaewa= zf0|Pd=$=gYuvY$x(^##_B#0m&vDX<#0@4lAwYW> z+~B?mXXsIu^4+Osn}p&D!O_Y&70towI@jr4D!~2@Py)}K9N7 zCEmG;SLktdp7bsN?tDng5mAcE93ML4RBRVWPEXyUugqnr*%yG*VLPA7b875H;sbsi zTv2UPMcgzxYJSOT#GSG?CwU$5GQUwiO5oItR-q3bJx8~B1%;R0J`Fqdnw&&~^ix^m z>Cr1t@0)A^!a&O|b)S}G6f9II9RK<;WPXq`M(z(Tj8%6_;J3IHXLFK(F*0!riV@ZI z=RMde-iYFH@wpLf^hz!>@5)u}OY6%+-IjGG;qE$hOEhlkhKSDLrnghP#djV)nC zOM%1GT1&%?x1!r44O>^;4UZny*M2><`Y^$A5o}I@k7E z)1#c-5kjMnaGlPe%TJXKcIIvgV{?Oy@45z12Xp4`P`mR%?ji=Qtl1Kd&@f%A!tx(` zwXF4)-(=i(*;r|l{I1E%($-MSH#zx9#{;QfV~l)$BbBZ^3yG{BLJc6DEixwi3-m8# zdSX?$S|(Q>gnNJ?=gQ8<9xk!4CeaU)xyBUBG&I{uJC?c|DiE7&YZH5()G(~^$y@-v zCTVMvi%jAJucnQwt^*|o%Vbz#8Ga(U#m)7ISwhf~W`gT8a~0{f50kHZ%B`# zZqc4E24Noi$P!WIKgO66@i%6AOeuErAQ*t9*@ejVdycl9N_FE`q zEQc|6l2|ppCXQ_Kwdsh>#+3*N64S_W>z$$WYJb3+^RWTD?tObn93RllR@s7bD$6_<`5ciEvY3z=N@-4&)Z{Cpdd}AH;*V)iGIq4_ETF9DtC;7W_-ls0A}`{0B+r6|N7YiF;1VmjU3H*m z=wv|<;5&1*LKLvH@(xhVQGFKhUtpyyb{Z`Y^1Gp`jkmSRC7ERrFtzYL@CU3@OkaG# z`lDp#keO>v&&h;I6+C&b$!db6eA}B22k5$fAIA&&ajCc?3bE(?FshlF3$T?0-U@?r zld+A-YmFumB zX#(VnMZrlqRo=y}Yr)cDgAzsU$B!TQbfR3>j~^c&$@*c}CizZ$Ux>uIAR%;rOE^9H z!q)B}iY7^I+i64FO87U?X7sI=2u+ywR`qN7)&Xq4v$mK!>k(0m#%uMCQU(Z)lEK$c_f@{N z?g3?1+*$jGdP%{)yNGa#IpF#Vn6^0|P5E=N3v_dT()V}#E!oP{a8%qG6D%=;=B|Zh z%~^coYmL}gXCFD+`XsxcbslH2sKlByiacK~9i3u-aZCdJOrjn0$i@U9FIv1{wU*dYT(R5a-$TEJ(Y7=Y_=0N67bNd z7;26N{y&~|F~Aa_E0F0PA0Hdmo`Au>irR5l3>Ww?%1OpIVZkGna$3uK55dp@(Wj={ zIem*^I!Ky2XssANSxwtFnQH(_>ZoNN#hx}_{e#T3v3vD633Y691UJ+L(70RmAM zyM0`1tSarnATeW{5Bk2|MD@084T93Vr{G7=1PNED1vRUbUc;A z1s?$I!o{t8j`F!T8<&*Pg9t7*&#ll-p$B3)Cjt}?4#8$*dOyEc98l&KSO(W?N3ti; zk|3q~Sv3KFaJ5k1yG8S}F6)yMx(YyTmAylZxw;Pqj-m6k-?6E95(x#0^d0El-Jy1t zv4wHd!-CUJW!X40EAhh22`bdqh8lzOUx@LJ`5MVz)`<;1;@L(#;7K2r%g{KPYk|)R zNs)J>`;47&(aV|lOX6$5H(`C+8C7*uflr6IS+gGxQ~_6Uu5!zA$wtfwLo#ot8CEZo zBMp&6hno9WHfPF(B8NOmODR!rrh-zt^YiCV{8lkfP_L5@$V@H;RSBK|f&t@Ne^wCG6ZlUemXeIUQ>#L1_ z^3)^+>|#S50;OBr8*aIGL6e>$VIkS{+sD}B5hPzDKqWmb_l?RrS@h7y@dM}Ac840Z zDZ>R@mcTzMvH$rq_18&UBtmQhdf-OF*5yBc{;bg2 zAu}uu63x&KiP|Okk8{cg^JmDWB3+cmi(@ade*EN`lE(MCtJ0_!6h5hx^0 z)Dqf>-b7!;E84#RBUWF&3OBi;6igJ7=^IwU#8x#S-F3JutdF*%JJilH;IByS-XXo>*lxzv-vB==Wp+ z!F^wwF2{I(e@9`pw4fDHlpn)ibN8h1RWobgHaG5j0&-tH6EgB*hw#^d0p3 z#8-$PYPfjf?Eft{t~mSjKb?eBYipJ9I<^=&s;oxLJmp(W1}l!=*BU7ePOOY6ho1EUt+D7q4LNy9X1C%R1n<-W%tW4Z*& zVB-K+2>b*Dr3PNSex}Ygw(N)~_S?5_#%s1dGroTlzXOFPJ>fln#)l1QN;oj5NUC_ z48lkf85lYdSXVsjy&ghI)u56-P<$9ydwUSnY zE_C9AcF#p0=TRO2c*148(>dxRV-1oe4KoqT}ZMcbaGooFi6-sh5!wm z1h!0PCu+QXv>M%^c9wxEwy|an$1`34-3>6Z-+%wT7a;LMq z$EqHB&+y?f96l=PhL1Eoz4CVV3I;RTTST7A84#&?)mrt}uV0DEQnfdkBt?~<)5!Ji z5RWd=<*OcN9Quul_^>TQ9-I{WWlDTf#I@Y->99e~3y^4qi^~;{5|?v2$Snnwdbl*cSeqvZ5RYz4@2$4RA%KQ40gVDB z^E&_Qig+M|z(eGG!Iz?M-T9|ChdbWK{f#KK@t${G`AAdHsQk2YD+l=^ns_!W8xkIA zvPQ7Mb|CPeiKe<=dlN0JTlyrC*Zl^qrG^W-Zl~~bj*W@@g&vS5i9Btss{0$R{;9hh z*Vrl+isHTYL4XTwA%l}R)ZDAO(_Ulg*_YrvJY{=!7&ozHi1t&c-jR*f5QWOktuseA ziQC{@m^=LA`{2lMxgs7J-GOYE?Vw;@I^1>3&6( z=vv5LGQ8Fbq|Byou}s+OlH4Et#yLm(RSPCwQ5-aE?iO@pT8JQDsi}+(HCh6-#e*Z= z4BL;j#bf(#A0xARBwVHfsi>e z83+Z4dbs$@z{0c9%XS!N%^d@2RN94CACdFxh#lN&BT3>WVQN*Y>ywW&htth@#J39* zB@otTP(vuOy!x=wC{@Y|Ok|iARiO3jeRm==8f*H|VzvMmXaa2uDI%HSN<(YaLEfnW zLLb}BoMWEV(CN^<7{EJ>F>Y){qM=G+~{`h5#U~v*RZM?r7KJy9v*boI3`R69Gv`1@iRS|L_%!Bf4_{4 zORas>zQ4Y{7Pcf#76jJe0|?fS*#dcUB_=D5`xu8LO~YPAhE_l~1OTqq;8dD_vbLqJ;}iD2y5RDLO-L7aN_3E#{_OFk&Mw>U8|| z>sRql_$rp?q=+HQV?RG2QOx1eJQ`3lE3|E0kZx~{umI?Q9^BQ5GkxsmLi?&c?sfn4X{HQg_0 z{KTYLd3@s802%EHgv=%-ERtv^hZ>T1xFm_=BTjrAtsafg0U^%9g813qXSt7Rt#v4l za90oXiY9y&rJ{GYm=tH&fOV&gxW(FQk)ah_7uCIbAJG`w8Z4_~>V51we$9&|ae@Br z0pGs8y@9hn`5Uf9fg2x1-`NIU^gWl)iYP$@ci;HFQbbURqQMV#FM^6-BjE+z3TuSo zujI~Tf{=kl(yZ>FU*clJsKA4!YcsC*WA+#E@b&9g^V}0sT?8!CdX5*Z;?9UD?PkTb zKY#v&66Q{UuVtf&v5;oPLz}M^4nCfx`-|Q(DPybd3_X*lFkJd_#;rk1fZCI5pP!$H zkkknT56x#6pX;g_jpSQqf?J;!@A-4&ipYO_3<`&JL$K|(?84*YBPn>mYDA7VzE;0^ zeSHPW4PPPZ1)oGUt9*~}S4L%P@>+eO^~C+>PRd=DecEp!8{End4-XK}PS2&aF<{K( zVoTiQPs%N>GmW;*>mt@F>CASrEW%36nH=M4qv-Q8KgoO>pX*8@5*fJGk1%2*oiSaI zKH2Q(m~{pwBIYLhTj$foxy5Tmfg-=i^jggdA2EKk;Uk|KxgVWe5hu6$xg==oKH~Pt zZ}f>Ii<`)2H1p005B}B>M?T!?xm09lx>BsVvvEQo+P=ThYM{_$&MB6^v-IIa_LW>~ zaG|wx)+D9%!7VG^x1`0&s+D|sdBFn0x!mdMy5IJo`Y8r_L&k3{`GKwb^z@W>jn{=! zQ0y{24Xa-&sTUA8ag8Bu6RggX@Phi1U^g1xNID$01j%$(=A`-zm%_~J4!0vXc_d0} z2*O?Bfvp~n_ScaL=O>~r1)dfyS;ceV+Y>FfkRxEKzsV{T~-n$M|cj8 zm5AD00@`qaIdg(o{KLF7CZ-v)HU55liJyWP)l&$I`g3{#v#sOlA;^db9>2EYmelMs zH~NMrtC!(s0F3OBx&>7epOCp2X97xd_jIJx-ja7IraSdcw`{P$KC0(NfcUn5b=-U5T*h-!+_z-3? zuxwgyIhhT0J0_d}ix9@whd967wP3h}aES|12WP98bR_&})QZOZFBhesA@S8M4o{9h z>h^^V5&f&*7leKskr_cnX$JBG?UpcdtHKjtdZ>Mt)YLsm9o<7C6al-eX8Z_TGZ7ao zN_6ALd0DV0^NNMD%}d^h-{|$ZGq^=_ea$hev|@B@(0s@m)9%zsdW;zmsWR2CaZO0K zB#CunliyWw1y+Vt(roM6GW2ma-l(ly1h0(4RoH;0uYIDN1Kg(vEwp&$6&JtWkV8yM}fu#9)(*2NBK^qdQR5s+c{z| z)4qx=q(_q&B321}nD{3Y7-y)@=cZ@azUJOE&H@J^(MXXCM3?oOpFe+6rm*%Yq9xq{ zE!1WEleDMbKu8ct=k0CTtk$+J_Uz-ix7)52;uT6lZyGyi*w&pajKPEFtf^)g`yx@1 zY1?Y`ViI&8-J!PQLB&~fe)t36A@Z1ChUCC^F!@U~gSz*%d!>~R$oXzjAwxJhB%8=8 zWF)E*Q<9SR@bF;!fqpK!DzREoOi$v#O4ROi4hlV3)wTkuVhh;Tp&+>uq~!AO<71orO#h_@#7)80YG!zgK&naipj~~ahjW} zb%skZROW7!T36sJW6h#KkbveY%Sk%N#VNYd^uSgl=ag)JdFqMk zzK<&#HdbXM)t;Z9t6kJ>hkK~c9dBZZlEDT)o>S4le&Pq{L(prz zA1Y0SOYjU1#kKLMT&Hr6p8seV+oi4kvG#_>9$IYaNbcB}MC~LRpY+9ZCw2Vw^%XsS zxa4@+&ef^{H%U}FyA-_|xH2<`1z*^(p)DHOA74KPh%;KNmzS5=ZZ#R2CoGF| ztzFiUr-pRx(+yfdHEv>78R!?r?#ATR*#t>5zQRi=C_~R%ONxCAp~PmKnAvt{gCzY$ zjbj~vqHnTql2##k0c0IL&%tzL^mGIk5)d>fYy$!kg{}bvC7kMB(Rnz_cWHu-0Wl61 zE=V`i8_^LT2Ub2`4AF33C_5!U;x&obc9T~bFkbvN&$0C`lJ(@iRX`l-DaMj7Kc2}` zbjIndMa=t?aCIVZ$%l@tZ&BI{!7EOp#yjfY1$|r-o%(7vLcQ=7Yo$6~P62P7bpYqA zgJ7GS$=JlcA?85P{ccG54v)9f)8?W{FttSk{&@e(TyJt39${dUiZZD{$5^g@FTH`o zR^m`|0YXDwiApi9q0kYcIin_tNkH_^{hLti%E9toN!mr!6^E;a*U|~H4J4YmpOG>) zm-r((u_<22B1D0Juj$%v-@Xwcv5bsI>56!taH_&R#@u{1fIsr%ZrPS3pwPMFJJV^@bT1_ z2(r)PP}7P;=mm6cTw`&Fx1=tdoH3keZ>tGkvC72BirM$3sy z`uzNS#XNvjlXs3`D^R(sk2@?AaNQX>;p0Lu9bi%Oc^YG7oLR)NHBXohF9lHdoU@6j zofB;`DI{ao(3ahgRSKy-WXzEQKy(qY%3g2@_J29DIR5^dU?O)s0MW0IsVFW~%*~}x z0n$H54?sIpv67dvXx1s6V8Um+4jtrFJG{Wq_$3W zxit^0FoE!uP&*mdpDm+Tx3kZNOPT8A29bI|(=^RizsKEHULUPzp@qD?y}3=enH~+` zwqx8FEPQTO#4{)uOel@E47@KeJeSznY;z-e>aH_W>yam4`czH&EE%@eV&(U@WseM(1LS0%f`JRKxT^NxP^V^N+i%L`=Yl*2mR{=?#9acGoFsI_ zcw(=yUNBeOw3h{(%ong><5$p+b=z{i1cwWq9LAXfO%w>M$~opk6FTjJ%qk}w#p#hO zi5P0$&cYaW&B;t}gqi2I?j_D~Oe6Q7fpzDF0-2#2TD@H@B3>sU368d%>0$y;Pfy7X zCY2yypZgP{Sz|ldwqi!g8}87g;tTmoch*L*n9P4N>y~%`{*LQ%r{)7Q8-KJd@bef3 zY)8ofB)YSBT6GYv6$m7;OOrGsb%q*oi#dhL-D#RkgAO*6h{pOvV#RH#GL|junlA8> z1L(ApXWE2>Y&GN=`=l=I_CdPI0f74F8Ajxw>J~(r?HP^-v>>a)Fex!k`|t^^P7}*C z=RL@E@{#$mrD$}!erVNeY%eV4d|g*;S;XOCFuPSCql4c6=iu zLm%6X4dB?zcfr*?1gYFs$to#|d!gXO`%E&_cy9DGAVfUL5E3T>Iv)q~ivD*5552}< z`XtaHjc~6Im&Oj7aPn$%Jfv_v9ZPpFA=Va_H4fC{Rk2}4P51b@b{RNLgN%tq%5jw( z7xMbeu}-iUCmB});x@UerRUl~Y=31!zKBK3&_(%zy;?$M3F`THk=fQs z*Ew6y!j^=l*{Ng;T>RyOGdaUJF@%d}g$)p=?VcEJRXjI;7}WT!oj~elwMam)N%nb<$bJPn^K5fl)Rfq3C}(^qyoofezM|$yPNiWkhfB{WQlTf+Fiv_C z&SnL5I{*vklsO}|$W?EP3+#fA%!xzwo#Z^4l_-Y=JP%bLW3{qwvAt}^RQgvm$|c^tD8W;@r={p5=X7h!khrp zooVd{%L2=Z___YL);hnxzx(j|)t;Z9oe#*h_(8MC5gs*CBwk^&|E5N^0mZ1v6 zBJ6aSl-at9L?`gqal=`6iKVIdo?w8OaKn7(Fa3ZQM*!oJi(TQG>;fLlgd6iMIqIyZ zDN4Ug?yQ%En4!tF+-&Y!cQ>|YvlZ3RJ~ei}vm;|taKvkIVN<{h5~4PJ^0_W@G>aHU zv6CM^e&{A&zkcQ5yDcnrVK}pxUY?$jeI!JWX~TG(`UH~mw;UqxJ|b8TC6SGsP2JG9 zBEd&|LvKOy8c>fm}$Fw8HnvB`V9&@$>D4xnWO-3^jA3(7j{|1BvC~%V99k9;vH_oU9--=e4 zlk#X7ft}UO3Kf^bwOw=5O~~%#;3K}1)4hEqMQ{udz%z(Me_nwu}LX%(C-MO)| zoDHUui&Q!Qra)Q0smMq6(?n6$_MquTiW#@iGR!ayzknjX)=2!^7;hMC!=+ETza@B^ zq>Sn}G?)YA6<0q?bLcjnpFXh+>1t=mE zUM&O%J`M}aTGCp_L5G^6Meey6kJ1mmefuVZRzgnmapBb!SCxDm9O$magO$ZHXZt>4 zg^^v8bs<*R3oZ{CSMJy8O~HDZ#IUDZg4Ud6)Goka6PBglP%dhWc3KvocKfz26?Cf; z=#2o^__kXHPP#D}1D8Hrx|e1ER_MsgB#ur8rEg2{4#0|}SB526=OqmmAO#VdkIdba>D+1mEm%f$>-yF>J*H+WA#p|Pjf>>Cf(bgPt6v$yT zJmLvBj%_C+N5ot({8Jp8U2DF^i^DM^`9iBoTTH4vhMDd&wmRZH7m=qJm_u##kHZxG z*f*^Usv8<00XaU8@0-8{?t_>w!|_~HLqUG!M04Khb-Q>9aKM51&P^y+Y+g}VF&uHS zBhuJOK3|jp{^!Ra3!UOMk|XL=2eC>(yR`C{TV{ip`rthemsXo|K1$RMl6Sxza|>qM zoKH_rgkea)#-Dai6OEi@VKo+^ z%GQn~ZPU%{=eTz)js_7Nf&^0^8!0-5qA4CXaa^)thlS@uv&-Sqp^vr?aj!L1(yRRm zcyKtLCRIsiL*VRS{?1Uds_omx;}g-NNPV?>gRhW29x|Jq9LL^4QT$ln`t1DAW%v}2 zdD{3)K?ANVzBAdUMTV9piyL4jL|pWTK?Yneyz6SLZ2`f#xQS)|kB=eZ%s}`fQ#P(J z38z{a5OteOp2LVt6w}xblN%O<-+a;?KBV@^JKAr)~47mae{kxbWJRgz4tj?Y0F zQ$~lPFLMHyN74eK1%4Q3xBj->$nUAJV||j)Bdg)nj*7TW zqBxc73A)gDm^ZKw7aWp%;YS>*aEdAMfoE z;G{Qk+qJdZZ+aNmx7xI9lK-*Ya>Qw%QOCz12~vNm83Nh`$_)67#*xGWb1H`#H7J^% znX}XL4`?%z@u{^!WBj!h-@$~lRAY_yb3)}08?moM=t4aa(Z*Q@B4~K}KR*Vv2(c0e zKA?yoJ|d!)k{ek)jjh+CZ%PLmSXF) zKCbRiD-6N8)06j|>=>pV++{IOgM<6jIRyEkAPSXf_F8cjsS&24uWc8y#wHLF4z@l^{v<7auA0PICxJ_pNd%SD(Xp9rZ-w6xPgA@P#6Zqtl;e;n?#_(v!J**t z*rStp71AGok4f6#U$_mAh9DC)*ApOy%*`DV)6KPRq|!{b6R}eXuVTW)U~3JV2wl;* z0$+TX^2;aAM9zYij@5t@`h4-nt~w`^DP(t(xU>!i+~Q^-bhhM%*a?nbd%H;t{8lW( zNA(49awni`GC@cKpZtO5LjV9}2G#`Qikb|{Ioi&(Fu9L3&G3TxP03P;&WQ5zH`a4+ z3ml==uzUDDb!4s{t30RUf%p7i6Ln6z&9Hyw_@rINA~#)twar7ado}#0Ki*h`A}mWWLy(raRZdFZ%NIZIW2}?c29_vL-AUCVgsDG{+VbXt((aadZh_ zxit+dnCeG%I7F!RE~E| ziZ8bV9hCLnA*85wxm`=xz$0~o9VY<4QK~xGSu7&TXyP#z{d>r67J(e_$%-wvp+HdT zeF;>=ttV?0nSw|DzWaV63L~m@q$T587B(L==<42%$W}#~8PL_wHXKK<<|Gw8>*q*l zyUDYq*C)9$B&pTC(IngoABw|>2cpu9&4Gi1I+7ijEeYq}&$dFF#o<8c;_>k@17p(0 z1m1fQ4^Rh@Oim{mdtT`YlB6Zyb8V6zM^gc* zKSxa5v$;c!6}G>_*&MubG)VmVHd$$=<_*Pgjb>Y7V%-W%$$bw4-<0Smu@|1nUWPiQ zOctE@Ucpw2yNnBi$KlAp9(MhdYq(xtU&mN2ljlX z@z!%<9@b$)@MTs13a ztzuzua61E0|Kk1BB#rbBx!Q9#_NJNgt(*-ZCp`i=hfY(KM;-0X9XEfsd?36m-CS8=ET#!^ioh&gy;+vAU`&UVe5 zKcQ~gsKE}e;s=ib(edvIppFeOe!qvFkG!q;$?M z^L+EyXsl+u2CJG|`JOJ(vimQAnRlKif4Jz+$k4{PnKO!_0oDc8860ZEQjHrVJ(sS} zG1PH3?u~4f@}7o|?3E-xh%>I+((EQ?zK|oy3E~i4*93~b z2GY2wyW}fJXmKQY@yWi~@?6R=K@FnOw_T@p|UUn@SwUA?M`*O3Km+}hFWv8=Q zMkjEd9a&C`55hN%44vG~SV_J1Er_YGuoOR};kmgyy*+XY7}Cf_7XPCh%4$Z9n^>2B0& z2={(>{FoKC#Bj-2Xa0#l1<$EdU@{EEf`fG)E_np8j*Oa0S6MdKYBnNC^#Ouj zJPt{Gdl4WBfS5$REID5!7*Yumi>Z-KxJqLvh3p|`Q_f}j$BF^4HFW%G1bH86hSk}B zFLPx7^AX zTcb%Vo@1+HrQtwM}2Av7S(2RZwVT?0e?g%S5oO5tEwlFRx5-i-eg`p25iW$ zp)QH}%q>oSIJKuD13f=;l)}SG{=E)8J+19PJ&R|Absjflh`&$Hdr2`7+K!oO+()#X z%? zsZf<~&J{A*?xvdalkB#u+HaW7?WW%`DYSQQU*NoMVu=GIvz>lW3AUVHW6m6@R3I*^ z2@;LYh{n;qxY%I;er`R}AYCZ-cmNUy$ne)_nW1J%=5HA^US9UDp^W%7zl-^T!Th%` zFE6z6nWQuNTak1yc4KXMZUjV&ow-STFi6LE(1?BfEy-?VBJ8nN$l3@Ti1BQXSVV%r zr;9gDv`Yob_|5?RxJAR(O@FqyBB-x6slYSAi;M!s{ci52KHOtfGW$Oc=vQP0gH6Ha9B+^pIj%NRvF2 zRGKra^H?z8zQhNlcZ|(g#54%b&zUi|LRVl!4j0%vGSxwwHY}z`yw>&OS|2et@?P`L zHFR`BA$)6l+to(YrRvUPqhQZ#{Q2jfL+C%OY&WtwJf!B>gs&_ZS;Ai7?Kw>2wHa`{TNA-6a;P?mN!4p#%Yt?giCRi=r6|3hg z6u2Z_OQLSv1t40;Zyhs#?V2OxPVFRNO6SOT1|W|gz)1OJ{Td-=W@|&+csWpZ`9mE)IDq0{<4!z3Fh3TlsNGs z`HD`krA2LqEsu2#9Nk!E>y8JLN{Rn2tZs z<&0^}6?SzgIp|)bo8g2ixrtr#Cn@}Nak?|1oQH)^CmvOPuwSRM!-l1=I39Rd$@gk*}3r8CmF<(BE;&adUudhhD#Tt$@CCTkZ4KNm}#n& z3>@Ey>mS6u$vXgz7cDD(HkZo=lwtG{Puj_omAtWBAi{%0^$A}IBIYg|`59bt)g`Wl zuLBW>pd~;?(>6tuTZ!|>qQweITdN{&fA>}uuN2p#{bK#i?GbRdc5zH9QFxp|Pxg<| z{0Zu~QZT98ux^ZNGG<^5e{Cq7JZ=m_ziBmgmBHobWVrUC5=QO-3nj{!1Z++Q z6$(ULb=vK|h2ZQ{u0nbt~rO8 z!0IMp&`DKJnHjfrBe+721Nmin#+3(C&dRU$2j*>#Sq%AKH61Eo2^jmcwY zj>RkRfB*S0T=ok_?4qy`{cs!*Fmh+6cXlvdb#!{Ck ztCP++@(W0HtahjwDq)ZA1O_jTeQD;#qycFigER{9mJGOXALI4ko9s#C*&aqR+v&Tu zMgBGnWsw`zN}#W^9Et(>*W_s>i|p2g z(NaU9bueu1+%<0&yq80baCaej5uY>?3OyrUUS7sl;v&yN45R!JQX{c2X%crrb1`qU zn__ef%DaJ3BxUbx^x8)B-#nMc7B%gbpiud}*7BE#7FWLMs~jtR>^iXI^CsDte&|t1 z@-UVdz7NW@b;I}fcdMRJW!HI^onKC7-@bjr7de7h~nG25K0VjQS) zMUXx)l(UVUq58@|s$<$Cudsof`;6qA--;pMn!QLQ^N<0@BLz5w}zhF*85ZQ(*~ zRq>=(`$pefJ~?Yq`#PSC+xqVoeFA#cWJES|A`sjW*M%_Kc#+Y!F%ogfncF)i9cO4r z6FwZT0|`tO*lK%OSrNm&P)Bi{3*pVR(1YXzS_y-BVVN7#+KG;*vK9)NEL5UbkXZ;) z6%98R^@)f8LJdW%bB@;6-0o=P``>LBGsYwu&m`h-PoCQ@rHZ)kS2+mhN ze00u%YsrbU1i1XN(eobdd9C<6{{Ag|{W^ z(3$OH+Vg$JJ}@Z_MW@^64pmlSC26p5>q397WM)nkrzUr8ZW?~uNNn3D zuU#OYcc&yZh(YV4eb<~T3?_z)u7j<#q;Vnk3a zH`f#CXos4i0ZM+X7seW4Kgg?EWekvYVxJ4DOoS%@(V6(67HiU=x~@ZQk=0^fQHRV+ z0S=OBTAJj^69G6RLj zd)Em9KKnqB7(5s_FgD#BEp{y!F1eN%Q58}a*MlB`vk6H*_bx+mVBi3~zCr|QOiINgSOd6wq$*3Yi20KNF$w3t1uio|2Beh@T3~sY zi#udYabAQ7TMs1kaTw>1PGJNw#ZY5S4EF9=alS&9>V)VBh9_H{9dj)lWJWG?@D*r9 z8m@6Vbj)d3L|j30(dt!2{Tla%gd;CEcHG0A~-XQ>LP{S++X|3QKy9pb?> zHqkJHYjFjK8gtduDZ_M1d}ep6PYc#Hv?%3KmPdRB(51_v6l=Z zxRcStyN|J=QETud#ts^jNsI>iIsU|wEpN6v7GNmuOxyi&lBbkcHubU5tb(bDwC1>s zfu9pA%c7KUL2`2a73wLKeHs=p+yQMHCoGSsj$;FLjN1-(9*qm)-Hg(8_0SWwMXZby zp|up{S?fAnll^zjuQWp~decPWMo@4#Aw7ni*hmBtua=Vy`2&wzf-lDJ8-jG;9bUzq zNJGx&{yaQ9fMAet!an-gV~ktQXK+iMLd$=}sQ>o2zvZn6iwtx{s`EtTQq?9EXheX{ zFZrr?%mG_5ufV)<*&yyYsy+>!Q_T$N^Gm*)Gq0m$xu?=#GW!aR3hfu|iS_#us6pKs zV|%y&B(1`$!ipQu&0uzr7QmzA$n22?Mg{=C^ESh zo}_*Nj{Jlh>jOyITKD)qPft(SO5@$Z{X!cAXDmS*h2WS+IMnQSBuQ`Au2{%#z4>C^ z8OZ|p1y04?3eUFb>C2Zd-~>s1ap*N+Kv0;S7x=%&j2@)51~Ytn{5eV>&>s;Ie+a$9oYC(t99t}?&#?QriVAzX!=FU}g$h6IVxk(q zwnUWb{`leR>#O0G+(QQHmBiemvkEY6dYoRTJJgOD#~@-mDQ5d&cR#_;wo^^Qex#SS z-SM`2K_={E*7hO~)Dr3KOww@0z2(c6`=eJo4Fa&{a&wHt2xIS%m^^mK#K_zb@*BpB z9D%$h-)pjex77wFfb)*@YU%AXe_QKY*u|q{j9AK6CByb64$NRAdeVbwys{NY2M2KN z{GO3j=az^Gag3c}hK++#sS=uuG&=35A-5{*pTg^Kv@mGxi5nlPxi(Mt+E?prgH!@^ zWmDH2r;ZLFDmVE`+=_x_(uhbYEkRXamwgqjW}CFz0~1I06lW(uLCU8!oEWyq!M>jabKu3WmWHJ{d{E);^b;CR}yVG)Ew0lpTvqp{yGOGjG z^wGzd9VHGmjvE^17$4A_vqU0`jf0{BqjScw-FB9A^LYPswQg91(tU`~1GDty<5W`PTQ$rw z)q}=$B6C0EbqF>x;mBMf{1&}blAB;fclhnS2euQboy7U)L?c^92CtJ4qiTYJzKZcV z~{Z2Cxe>39%$C{{|+IRWd1rC8Ka{A!t9J2TqPgDa2j=BY?-yV<= z*kFaHJ6TDxaeIudi6U1bZ6OAbJxi9|Dk2K1JCc<*k+-ajsy-?)rzW`-9Es-hy^hlEXRb$!VUC!-G&;H+s}#<0}H6|R=?(*5&2GG=lND^0bDo9 zhh%Uh_)7W&ALKYbDVo-TK0G|+n;|UD3Rrz?wwUCSzZPPmSZVIgU%q@H!-C8UdLg+T zY|_H-?d^@y32tD_Q83eX_o_)prw$O zNitnrD4ztg>06=L8~T>2Ls#O!)I@ukYwe;1|IXH+gNm7^lasTuUzK|Jo!(b>rfCTd zZf8lLql-}IWZw35rZ-I_U2b0v`jXWjf6f+0R%gwFaKE=<1 z-k=RPT44_Vm%TULk{rpgG@0GrnOR|5WWN7{`BP-LZ61-+XR79weZ@Nn5mJ=OO{uED z4?pI*P=!Jf2yg*h6g_t0kho>@f*E4-Cz-u^^SW#VO2I*sclr}#cd)ZG`K0lp2~qDb z`0A5Vo*K_uD~I2upwHZ?c{=a>t{yiBkXPE^sR33+7D*#L4GWnZaA#h-tHX>jLn%Y4 zFYmG|>Fnmu^Ig4&?^@fy%jZgCkbTZ16u+D6Y9o)&{E6HBuHETDko4Rub2VPPt0zeB z5kXQ<8x()^QzOyM$j?5R;o!&z$ABxU9LcUthgCy}?^- zUFIIFR9!(yi}|hx3L=RM@qfNVD;~$VAV^+){3(Ums^!PxA!Pvcr=hKIEUB|7GV|x< zGSH&{{B$E7;*o3Hf+%V5&I-Y=2J=O6M^b!pBG|%3TL#{8rE2t+?W_Wh*E@(LXB1Q% zr+sq%Hhx{O7P_X!=#s8O;K9iz!0tHAaSTQ2Y5w$ID6QO+?Nxpqk#T3O`a}S+} zYq+7R>%QysocL}ePxP$TOi!#CR-MVzif0s`zOh1PwdhJ={=S0ofly5>E3-DH-eF4F z)L{jO`D7L_AEQg7poBy%0AA!!t$}xpFwN&1YH@+}2l%TgE%3z9at-KW+NI_+d87!Wc4yWjc=CNZkz| z%{?E1?6t%|dA72>l(25wF@FqQ6Z?+wazsA_XH3hIFB)i`F~Yd`alGw`)yk?!@LX2_ zci8N?a&{07k+J^l$MjMiV!1JIx?`LolYL7j#QyY{R~6vAhf!$@`mO`_3QdY89#%qZ-$@d4eV7{ddl+C zZIg9X7fAakEvQ2=bC>I79OJImwZ*`)1F$Rn1TIAa1y|F8 z0ACxU>x(>1D;^#vZ=AqB6pVCu#4M9{8Z8wNH{B6wdT1Q>&pf7;l<7jV2*?^;=2Q57 zV@sNttsfBebZ)o?S~}JP(YT2ow6Q9C#m;_W-O^cxsy!{9m>A-w$RufUg`%&n(^4?& z<2JPW>cv*LxP}P;0=g>A1kbQ>$~sFWe#O>5#zf(GYfhqHP2e3z*IF*th{YrqcR*tX z@No1u^}Ik%o*cHY{$&lIImz?}SaiZp;juUX;JyLeCi$=h$l^7_^b!g12Is!8o?%aL z!8=JwvEGOH5);nrM&+Evz^aR%afDDGFkV1E0dkE!t7Hck?84S{^&#Q~aJ{$y(D@X~ zZ~zyl`;n#J^~H%~jq!ZReDuEa@&Kmv_Vijsd+_vaUb}M$nOrp^xOWyfsaH;1bu14` z)CYAMrw{iYSqmKyGFs|;jNjF}F-_acfF+^9``seWhe~PZ`^0>%sKc7iZ-^CV7ZkwyTt)&ukHs5n`3I}&ur?iA z+5%JKXiGld-7vL%VpOYibK<<)rpmxEfh~MF`v}sR^+>7E&(SG0A9?fE#ojZj-@RW)=6!J>*X49`|vKX z;=lOqudlE8{E;NySVI~y8;SfVKwDQ)*~M+F8Ru&huK;OD$Xv6E1n)344{1ckT#Aa( z=xqD4U7wWUjqj{04+am`KD*X=OG!1tkNVfQ)f*9j)VM#$;i7NaN*e7nde)DZfPf4 z4>CE%85;{0b$v;oy{TeUE>ImLcd#;KD&l8&%0);pmeM;1aB$@M(XogtNt$QTY8((y z>-sdz_FZ_L`zWl7ksBwGS6yRm)Q*j>)<$+BHAemT8t1Pap{|dD#%5A9ij8$%?JN6l zE`^SY;B_4E^b;+%uD3pUd3jmuOw?f99&wefZBv9_%qAh1l9ORkLQs6B9l)oPU1X?? z0S_PO)c%|`NbNfvYK~Y8TK-o1w74O6ehb$NP%mxK9b_Lm>_|JX)&=kU!RZtxPB~Gr zuRH&>=ezDTrH&wWoV_yLBn<%JtW>^pvA+wdDTni&YTD@0d0DCJPHq`c!xiuTT+c|- zQ(P`~Xk*2hE65rqJ|sByc*k5pj#Bt0Fzbt|qE+B0_mv;p3EWQ6W(!Ya4C-FJ*Ga@3 z8ny+@fDW0SyRXg#XA=aoSX*0HbiJE^l$s87Xyf%Q#t&-zw_1 zyz*-k-vjRYOfGcSSXJPl&H)eNuC4m&uNTnL!^49sbRvvC_#E%YE8t;m;bj4}TpiPTpyMd zSCm^4AL{y`8oUSRvX2AxY9#nPvAALI!z8?Hq3WGxTQ{Lg+2UX||HG!cpj)p@IJ+Bl zp^jmqdSAVKDn5=a>IUpqEF4?6K?2=z%zOHAcYS@KD?F~gJ>l=GDVKVM7k)jhW7f7X*gq_qz1|!csy^~2E^(L zYf9D_c!Kg6~;0=Xx}elh`W_e6vxJL>~zr7MW1c!?RCg zu~M-}>ij0!iNuOUWDsd;WIr{sRCu=$h|u7RO{5QFK$E57GRE%DOlMs{(8$Hpl*S*5 zSyyKXz5%&@kPMzYBXM1zxXR`2Y1~K+9>jK8h|Y9>&dF-uCM)@VdM*P5fIjRAsOd*B za_U`w8)#a}Wd+l5?6@SG48yx&1HeP7&&b9m=c2HUtx_Q3#L7JvjdGlCFb%xetwkg6 zb^UYSbpmQzOVQ0{BUv{f#PYu0=-Ld+3UYI~Z+6r09i|6MioQLoBVSvX1W;tmv*)Qw zajU&6THfc*5}u%;5BONGea&Azpyo6Xljic@qD=<16*!ZuBz(~t^P&!sY!^LamssN1 zo3gt23Jz-Ylc$&6#(Is$XIxx1c3JEd=efAttnM;fY^v3%e?6s|gtk&39cju1>+-8E zaFf$$FTIErg@!fSM}t5Ez))j_14GN&_VXQl&?g_6euA*`e+BWcsM{5G6e-j3=6+^|gnVc$POcW>BKKDA_MU!LJLed$h$>2(}PgpnR!n)R#W4CT%UHIFxJ87K6{mres zyjjQKug66Dl&$@~?Q)j}eVJA83yi}%u_9b+0;eZ#GCsw`-50q~R+o+Xhq!^#xoZQ; zY2#edhg;`pU)D$<2>{MG$ct}a&0qaJ;Ih&P&-GbF2_f~Ebkl(F52|(CV6Q5DOz*m` z(CxtWMVK8>;yK^HU-)dzeowX0n zWs>#82v(HHWLF4zh3(W%LWtT;3l*hLWo=&eqjSMFB12iljIf{3ZO~baI&{yo%VVdX zWF%VOPbN`Y0XDc!$;EJ0^8Em6lm=7tH8KB}O}cd%&dD*jw{^Qg;aQ>?AS0|+IP9kG z6m{UrcH5Uqq+WiIp)Ucol!g0fEIfnptOYjM#h%y$`=Z_~#DTCb3cD0NLvY9yPiHM- zPTsbPrnkvP1r4Zzla_qST7KWw*d?asD!7JIJ={_4=0!Iv9YWmKj1Z5HkJGmvcGpH0 z#YUSHum9YYsgb1+m5bBS5}81^m|?3kXU z8jf+P{;wb|>m^)2Sa0ZtU(p+hsck3q>=X;wTXe7!nR}JSceO>~f^GadKqOE_8+to; zukJ${O77nDphwCo(>|rZP@ka-*uqDnGuRFFj8eHz<-Lif0!l$zuxWB)-`gqTMBOa{ z^;b8UjbuFsSFP6WWLgM8>2Q=`=LURZs$Nq>)fJm`Ye0=B;wqBjh&0g5?pW(YGmmNw zLxbFz?0g@V9NHzbbcbmGWqpwtMn;p?_PGg}}9?n3vvluhxPt$Sz3E?8?_?XDJvwws(# z2$yv*on>ue;nM|pBQIv7^+PZFbCFZB(x@24+}aeE-zZV{-j&k#@87T5?x$^EyBNpJ z_nhe7Mbn9d>0#fE&@eF!6SxvLrUd$=DL@_^e+)M6EXL3nK%^(1E>uwB3r%lkG4YyY zb#A%_2x26G@u9>C9T11DrL|dCRF+YUcAw9kbkrrcucyOldgp8}I9G!Q0f`u0=$z;V zthX&xT{)7(i8*$bk-=xPZ)-%!T%v;~9Yb}ZIuY_!ewY1%6<+@|XxiAj8(G5*g9JUv zy~j4eDJc^*fI9}%<`!OVU8TW-Y-<2mR#2yd>6~m~-YV?sDS|EC;DYctw@4 zJ}K@eBWX_=q}kcxS5|B|!{Xm9=yC(LS-U6r@-uy-laXb!(7JYp&_>KQZZwxGZAJOk zK3dvU3>Sab@$guJTYQ(rjcu)esdZu{)j_tg-!(zoV7Sa33?XiF6iz!~Y*cYq+xpk% z2OTzlSGO=&?D_ck2)WzfyN#Jd#p5(SKR-{Ljg#+UbwTPhXbi2mHi}Oke8t|wyIP90 zBcPGI_C?YA+23_#^pq=ey1>ikEUi0y`m!@@wHNCjoY7>@jVo(o{`m0&RBq5%ypt9C z_V)H4UsAlQnR$JEC5EZj-935m`nNP!T3T#L_AJ4nqLE+mU1)SUN0_T6qteP`3>=8@ z_#kpic1i6=K`+pKrK^*w7Q1pUoU50Y7g`c&JhjfzT$wDQ*iiF+7kk4cx3x)4+8}&1 z_5KAW=Ai%t7vM;qR{3t@U1F<+Hwep*Hm3GM+?6n;0Kml^=cQEiFf3t;YHh@$Z$$AhjF@SjnuaNxiiVdu}t(Xy~Q>D`XagNmb^>S6PAo- zc%$Fdf~VibD(61cd|LBlA?5RJzpE2mroN_Yqu(W)b)!4_?YG}*Wq8(=r9+&W7eBn# zY}8ScTy@Ley>56CvzxlV2GEO5$!EZ%Yh%4F`tU#h`OmuD;s2nLUl)fYSc;zf5lRtH zBbq(W+Vk`C$@GV@3l4&V6N3Ou%NX)CPXHFDP{^g+oVQO(DTfu#>p^I#-~}dDO&?Er7j>B@jA>A+bv;811gvA7vbcC` zLVeaQ))-!1UIrJuepFsAak#GMfr$$0_4RdmaUc12)Xn5t+D=>zw<(RcpgtT$cQ zo|_f~#A3D8MZO8<tbhh0};|FyOyLqz84uwBzqnAR=Yc(Me;lR-gVJ?9jo3QyVJgcsg%| zZ8b=ubSI{yW9bydFd-NR(~)sp8fNuA4_B7o;M%hh14(w*_xZm0Ibk;JrBD}eaz!vbMY}%yp#Kt(AnfN?_>6<1QjEN)>ySo4eLYX%;o$-PyF83i&OKbnaW2eJA~)vN z(7M&ZK?WIFBx6Sm`jaD`wo#A~)8=dND_sx0aWI{GHnl(RX2eBu3Y8-5?ArFcagULo z)b2^bC>yQSZsYDN9DnURrgQBLs+dmsxBln{G^w?Rhe!Kh3!)P*eYAXCWHIqZ_E%dkFE5Ezr>wgdKxv7w4B8O*liDU@ z0Y+^lso(m#LxENXJ^L?~t)^acqq0^e-fyZ!if z?Zizt_8BlT9B&9ip)snR3TSaClo)h5cp@hcR`>fJvq23ak9`0qit?P;u@~@KTh9QZ zPS0oodz{5;aiN)gDq;iruX}uVUzufi<8)Z2l!@9gs=S@!piu!Ag337`?Uov5rR*;z z0xvey=jSKcjuaz9n@A~K!_x!X)qc^}O|uQB7~j%c9P!p3V0PHj>uO#0JBCD&{Yri} zb)Yk@tUIDpingSuE&^)VA!G|96B3@SDLcDWyR@%vzH03eSBITr9x9!D(Xjs_fqVIrqvwvtuh^>5GbC{B{F6hIK z!|W~y{^%6uZGz)kTmg1JGm_ZtymJ!$|IymtzCAxb<8`3l<|!O^_|~y~ZxahTGiL6P zk4B>9Jp*c8=tJFh62?{_*p_p_u>R|7>J>`E8nGzM%9BUAbJ7Qg1h&=vImT8j3{vWf z2s24@?oJSsXX9aNgsb>bSkF8s*d)aE7%H45Wbr_uVuuI(qR7Or86;Cu77AMIfitOzvyvLxk6h6A;i%@49@7P))aEJDur!YU{|* z)*Z=BAw3&>psm41J-f+gPffD&L%-_LQ(D+YvUgS!vrpxel$#V;&pHxhh?`>t8_4_= z*wb+r>k#r0qVG~h0fT;KsM#8jX2bnnavjYr{8m$-idzy^RKsX5&S_0uU(2ssb3OHJ5(yNAsbh`8;0a^5 zkd*T3N|)P4>)A`+h=sw7l#76!CGJ{1{yD{u1RJGdTBDg z!xGxmo1mQnRSrw+^OLl*2j4_@C0AeanL*l=l;cR9>x6$81Bp6lUH1V_L1Qm}ki5w+$4=k9jhA`fqPI-AxFrqYc>ht!l)Z_rNIp&(%ET5Rl`DI^sQF%9MF z9W9QQlXx4FbQ>utDJzIh4w}=|dSBKm4RF!mnAZj@INRI{tm{+Qi2CZxqFcsF?urLf1C(+~M$-*&^Ih6>xn1~w3M8UW|!^J&Xx)Ykl5hsneW_NUDkh2YF zRG-^=;_cw8qcGX3$tjVtg^)lBSNGf7n=3I zd0psUvOF~#-BqOS5`@SmAzKK~G5)cg0B>OfP*aIcHe-PCEb=Qc9)SE<`H@P`&FhMg zmG_$Slvz}fm755(^DDcM9?tdwm2=>#0E}Y!XV+(8Z(;9w0P|*BU*88j+S-=W4CpDt zS~L41nhGwGfZFlpFW^9r_wLalSfDdNu0+QgCS5gq(Pt+`BXMxO= zG|5OXr1iW!m4h7HLUXdI*)r6XpWN50+-8Km=56+|?O%B5Yh66W3#JR$Q`eVLM##y; zvd)kKgmQ+jlLwtLR>z0H#bSOy zgW&$d`>5`XV-CT>wpo3PfdtL?E{W$mBw`nQk=soLVX%b;A!f-yf^#aAfk=JonrO{{r{8^23-06O9E@sY4Ck3)0S7&E$sJd__lexOpKjmvlK zWuc~wvgwEPb7Quwf0s2wWAW4~`R;YS>r!Z7YyPIQZFFwu{Vo8R_W0oM(v;9`F`XF~ zx6+FDYlI!Mq+Q>A?(Z^tU@n@s$O?ZgYhy5|2Ko@Y9+QN{ZIT!TK|$A(+{fNi_|=*X zP9;e3q0nW1bbU@M|84$Ujfc!H4l=iYwYqjyvY{xhL&C4~E}^61Z%``E6z-S&GN2rn zUK)F)mwMM{T`@5I8=JaD0#HaBbjrkRZZ`n&Kn}lvrqPXO(v9qWh2j|%$Q@T6Tvu9t zpP!%liJI&+@}@DXHQ=?%y7Hmiu&)|dW)&6pyTxj!%kb8_Y_OaBj4KlZ)|6h+nWDw^ z+i$;heTNEmu``h|uvz(7U)@kj@^ziCne>s8lCpwuNRPdXL1WgET6Idj;_+haQnY1! zEt`98Ef_I6wr@L*nBS`9mdx)a!Ub??PMg}UX8>1_Wh#hI^4AeOlwz?#bVpdhU}BQ zn3A%(xT|K|lJd#d%3*O*PmR|=F$P?sUxZ$buWZzLgAytb{D+5!qVjIxmEFk2?1v|3 zrbxE3mL{`!Er5OZ?`lPtpX`Qc_a( zIK42JBPn>pH8n3rBR3>v-3KJgQl_@dvKywW<3z9NML5@W`=mqK+>CAM%xtxT5%&Ln zb-wQw7vb7lkePdyovNwuy=y&;eb=Z{W0R7eHWpOxCR3S^!a%Zs`H!R@X4ufUc{Qf5 zJ0)F?>rW?Q2ah0Zkjf&ao4%|bZX?tf zVDawoE3Dgv$Q`J+IbPQVytcb{UHs+c1&kG_6dj1#0VM~l*Rtf@Yd=X7P)kWk*+ZaM zYU@qMNcpcU@1#!KP4skh@@eu{4B8(`uq?-T@ks=Lei--97{MkQ93owS$14 zMwZd~p%Etl)0kCcSE~D}-Z~eF!{yW8bgLMBXkxHVHK;zl+C{sz?K=j$t= zS9(S>a#zWc8$m9S1Bn6*NQQ(2ONREa%@Z&#PMISW;hT=T*6#&X_iCAe9AlWn8HqVg2r{8bycA znqlX<;k6!wj_Ja91I_@8d47J@nrFrG`sz&ymb4@2zEI%ZQoQ%+B}&pd#^jQnqA8_D zb;YsmvvX}qX~_}(r0Gr9XG>7Rd>g6#>8z%tq%1l?P56CU-FyYdB<7?j3_;n@*sr=K zLGqm8Jw+#+?6bjwxEm1Ms-k=&niuYHM|;igEAt54$_DE`Mwl#J{jOQAL7;$>ctutS zpc|!9_48t*;l!GpWqJw~_Ko)G`}=#$Ua4*R$Qd+tI}8}#l@b7;NqiNCHzg5(55Rvn z??L>>m$W}KJ#0(i6^|(!r=(n?P@jb#4s7IlzyfLN`u-utxgrL~yF~_i%z^=dqWewk zV`!3if)=rs&}E5TplP=);hJ=pm_;h9*cTXp$u2a=pi2Tx=UV6NoCLNS2c-tz@Dc$K zZySwD*;Ic1{7G6O`HzEyeTJ$Xcr%3@X5NZ$A%;q~08nH9?lXHk)O#XeVGFZ;QPETC zd(P7QyRFrtLcBg5ZbQ=kyFuBg<9JF+z0xRZ(BCgFFDDNSn(M(SP#oks-Axq?ns)8w z^jCQvd|@0@_!`W1aYcFt;A1R$uN!%KdZKlPS+wkEX<9bwF+VmKIb&|(AzO+xC=$(_ zF-OX$Npp$^gu@w2hqSHEGFXA_8cio-yR@W5G>zvUBIf)D!4sR#go8m-9nhbei6B!_LPi{ z?a)wYtYDBwUwio5)d{Ag>?1K7bWFKXZ4IBj7r9PkeRptQESK3Nv!uk{-eZbwH)dZ1 zRXmtLdM&P^O+Hu0?}lmq@g+Ot!6l$}YeI&Fw(eQvGASwZPITA9Pdr+5-0E9DfBuXX zFpR1u-(8UoIpth|{Dow$hJ!(3PTfrEutF+jo03dt{PXiOMXzL~5i*6o`cfl@(=Fm+ zq@EF!CQPl-MrNY!D~*fZNzMp6*IIQ%R8M&fEQ@yh*!A_g4eU0g*O6L(>~y%Yf0sGxHR5hYKAoNcX!hKsnB{sRFSP35du zu0jv2TQzeh0)v(N_eD68;0kF?Sjo7HBm?ThthDKC!|9x?>U>x!DJi#MsvRnvNkaWR zGk`MlJu}qy>GFxVU!R|!OI2O0s2>!dw|!dLrQDcIQTJr$l44^r z;N0@Z5vmBs3MBO|p6#^|v2#0Py&aDuu!h+Jb7l<%S^Ukt01jf-@cN3?kv!jch(Ni* zp-{lA7dP)xZa~#^J;UZkW)if0GJ&!aYszv9C%gKlq|^@P>}Ek60efbs(S2n%^Od}T z|t*IJ?mp~x=bVZn^xb883k=^5`* zUo7?2pp8Gsn4vs#?2h~|eIR03x)C~o5E^-Scp#fhCQBqATsSHy$$8vP3u2SzPRVzp zHlSdi2Dme>thN3A{$89K-m?zrV-t_%FgAV{W*;~Z3u7stV7@!g&LJbi>*}y$rre42 zkjvUvay{gm=mZ(W6mnf%`@1qi8l8DgUKx0L5bxM%%-FHJ%@tjYIelhd*)?yCWgj&+zE=r^@wRIjhE-B%7;{0#Opkda9S?C5dCz8mpL z#R>~r$WeZLlO0%6mMlNw0Fc_~Z)ur{JP6jm&@SBbE+;=BP|8>}=Dwk1O>n#xUnjzUo^7Gi$2Jp=YZIwxPrgC=F6dL$OO zb;;QBwd!8gj1xoaQuBt{pz*xCyll4zoeQ(X4xwHw6~(zTKfA;vCgbnCCU^TS?LO&^ zg}pv83wNtjZ952&YnWzJV}x5)^UC`n`C>A z;nM(_vb~<4pHFTZnpwb#jbA5ANIwzDzo4LFVck-t7$h~_R~kb5@Z&`9{+uOCy=T|w zRSvE{T~;&9L0f--uWL$q3gjkWmFAg|QtWzGOV{%eupl2E9{hTJaH1=~;LL85w#xxU z769s~$WA4kh>DOJApj0-fjr)$0ctG83px_#oyT7>k2uwXAEW;_EL7~E6`3)~N{*$b z38keBS|D+K&T~$*Ju&2TYEZu%uVxS&!$#}S>P6pjy))-XVKj3d5np5h(>L}uFdgYz znP;;pz*Ck02TtE!-Lut(0$l#%OZ0qadp8;C!D72eWNIO7eG}?VX9*xx3{*s#Qvw%fbjT>TAUVvC;p^eT1ydmb(d@ z@AX|c*UB&Q>qX+xRtEekx)KZsOs&?H_*z|0J#dnDz;_Os`^zuC_zd$=;cIH{ZUa!$ z%s3s4S7;dD-VfcM8|{(M*VwnLwytlsSQJ7-zJ|lb_R!?Ny}fnWHZ)~?9a?P>wHRBp zWC*)uGR%~e7*j5klX)ni<0{<=oF_%EJszJFh|E^0Vi@uC=nt5lrtz~Z$3WiOkaf3@ zo@~+srL?^fz;q1dc}O}*&0XI~HUesxH@>Fx*Zc~(oSZ&1F^B^o$3)f(aYt%Qbo!j- zW*=7Igr=1B@$oTND${4 zaWIi5>oz_U=luQsz5B|Vkq)7niWy68(20VTHG8_+rPEtsANv}s#3{A37Peg?n5|X1 z98lXW!la>2wS91s~S*q=`6s%i)=ZK z29+$+L5d*X)#*j91et3#<1j3)mph+`4K3um5Ng2H=*yoI(5+eF<*h z>oi;inIi9!waVgjcMi#t)L?c{*GJ{uVQ}73VXw^w0R1tRGH+OOIK;Kbwk4Df6VYtCZu%2XIw^x-$9;~|I}uw&PA0~@^_ ztI!0I?D~XBP2K0`r$&Oq96`*eC+cQJ`~{x`tw0%Aq^IL7V%= zj+r{q>ag{1*NcD0dK5Tn$Qgt`e?_GXjvp7g%Z9PNLE6IXgC*U$BBdCx`^t`7PP4_M zgp1vK2j8dWaw#4JzGBThYj=R0acZp0q&7PV2#;lFCYlEm43p`;9$xvF`?Los~ahaW6PuZ^wVT$`MVL10(WyG zSD?BYwS;_>Oy_e=b4TxLZwli(Ua-jD$8PM#%Xa8ROVOMY+4gbUF#0DpaTHPUmhsJ15+=^|P(Z=DzCLM5)fIjs4vW2v;%Wf&q!8LIr#{qK3-YvI zUS8^PvXwyIiTe`kjZocK8Co6(qyx|Ux?9HY@5Su@yXfuZ9D-meON`rvNn234+4ZAV z383KV>4|t7!s`W?<7NW<0VJpI{%0?P(J!Z)p@dx^Rm_8~qvIZhsVkenvA$YNM?Dar z=9XmKq?ZeNp9JPE^m@>Y>rTj0kqV1Nh`wO4+*ydMB+jqP z!sDQ6p?9nnnR%=@|DX~$`Rsf?X)qcd4YRtw9F=;CvFp%pZfwb>+$x~P&efxbx}Jt> zT7hhNFLJhOgIKNmf|5z})faE6!N_e0DQWVipuoQtetLIK$S0VRvN~YY_1sJZx@|&8 zlfS>e#|B<>%&6UCoYlbyoU6-gK#j{felvEg(EXESE~?d*FwTHvfl#!qO&y5*s6KWw z?(Mm%x#w{kqO#S;^kF;@&AjdolY7adLT&fru$8JTSX?(6fac6)3;)W=-Jeqx(gsV z?JpD#)(B8tynVnO%D!Nxc9D${w|FDE0z2#N?aj|L26uG@U_su^LYx(mDUOm$x$yh9 z+S4+oC);wfyk5!Yf;LM4ADWVp_{m-awP*KHK4>CB=uoMuc5QXE)u*Th_P!w?>m@L| zVoPEwkiZT!QAe#%gMjI4#obqn-dkhF!vKBiTZLkYoLl2B(*9^Vw`MT<=)M@REV-kZ zx4~7ko&+c*sB0^5m3S#@1=rE-Tva9q8;vl-l-2w1Ro zF&3dI4oL){ByhUr1f)yf-b6qSC?rIntH=5{A4(|pEOMn&Qc_lNpJ>VkL`96(dfTx# zx5?87>XZOc~JTJeX;I}py4@%jolRUxw@X7g>uO0wibJtd=N8Uxqq&9#Na%@ z149u*S5anboVqF9h3;sgH|uH!N>HDko(dm|4Q0i`_V4tTn$ohR+ zIl--c%z?avGO^fVbSl2ST>kR?`}eix7x*la+*94zP~6~XZoy#ak^Ek0&PjkmpB5A6 ziud9tVz&Hl4O7Q-4K|;TlZEEpS-(Ext~J|nw`=W^g^toJE(n{0fx=7)xo08h$}XPq zb@DgS9*Kh-O`KZmf|tVzIkWK?N=ZpsOE~mp6=2sA5cOVj#(Fe@2X`Wth6_(@@9|%Z z$*vEEV}ZEVA)XhF2>uAv&YTq1 z2&GQk7y6-axLCtuHViwWnCG^Ko5Bj2Js~{Pi)5$)J@5Z0S@z2@Suz-wT<7W<+7xvs z#(&22aB(1dYr{^4TA&DTVars@x2~Cm+eQ|PcQwAx&rjB<{w5j_3CN>zDxCDb^hDed3uo?FY*DWZ3?iZ8Q^%Jsh zF1g`p2q;nCpnBwtJ)vui*-HJt<~G@+J? z3gYPF=(2!2#o)Onb-@w-^P=kdg5ohK)~{=|fZ4@wMHgV~yZX70j}P{yJvh8~hNtBx zD}pV|HXj?0uZ;JBp3x^sf76Sa7C>{h2}yhe|Hz(;pfmZi5n+$_>mDg_m-$_HCAMji z=R)_D<*FB{{yX=(@YZQQFLFn$(*1u|%TmAF0FftNSy!m9GksJABjoW{9UI&#mxzMZ z=HPtB@3OmH)kmm_mP$U>mydbPWJ_n5qeB5@1_59S#Js$U3|kB=-K6G7*Ca8oIFsBq z0-K9VMZi*yN zS(9##CYd}Jvps|$vyb-rwy zx_f|Cde^5gL~kF6ico6|lE-E>&|>(%7_S9g)XB4EBCo5)AiYudK;%xr5io9TG!{H@ zn3M$_ZR6L?90dA?UM&hw;v~bYTtv~ajSI_}vGFd*mu?MH8B~sf1B&9!20hU-y!hIq z*3Yys`>b{lt^#&+3prWBkt2*aI!+D1RwD;Q4+u|BE1%U)DnMMBnAvq%rTK~KHP7qu zEkG*{@tB=)(j;T+ks!%Bobp8{Gt#sKOc2wK%n2^yve}c412+|a8dCO{=Ei5(K@`Mk zdLe+0lh$Z6$}q+(2l$)Pv?!hnt;yzn{jwQSD^k(Vz)6;u&$E(e^W?Y@$F(pup*Nf@ zYaq-uj*ah17ZK`%ClTWzc2a^GV)-D~R1Me@^mC0T(R`pXssznkUWO z$`We>(AM=b_gP(XSRsatayzC?=?w5(IVmYyhn=~eSrq> zt0@;H%xMIT1QyeSOgGOkx@1WMA$2`}cI<56<3=wQo{8DAK&IS*kwh&%k3a9|cdP(y z_=<#Aix&2t7I24{4=+o`{wi3&!<^V{;20L?$Mlh?fDYz3YRNgUwahi8YIKO}*le(PkZf z{VDPvU($s>BoiN#tFyh>x*jff|4lFT?i4>d8^4%IXMlQ1$L$c)0*a?OX1cf{b?|u^ zF{ftMOiU+9jcy)Lo6+An&gum%$xG#bn1XPXUZ1mpg=-|lL`kv%eZq2<)s0+=!;26X zY4!LrM3_j{=1gB+hr9A>hVqPnMi+9{3fv9u%t5x!__6lsUTe(3uNT>EWc(KB9!RYT zFT2o%vpvPwjy~{oDW^z~z<)E*jA+GDu}m?AV@(k}PDz;|;InUUZ|tmuMUEyQp6#RS zQesk@D{4iWl5$;QZ*weih7Kp$s&GwI0Pev-Odck%lA>PEE1 z2KQ!+nIKf5w$E#S5pXj;3mjwrx9zXdp>=Elqb0_s1*esGfDuVB(|e|kW(&+tp}>W_ ztjBSYGZa*46}*L9;~9y5xbVB(HR{gBIr{C~{2Rvn^XE@=CPneC9OwFj`;jO+&I=?G z{#|OJC?S_Dsj^xhPyEQmdwMexo@F?BWeM&0MrSM zt~WO$+#`%do<=Q1W+T0hlqDyG78Tq&tF(qmSyu?`95CP3{q>IDHX$YDdgY`M+(5Kt zL}6LsMZ4Myf562GF0_ojpmO`1r7o-F+3@O!r&{Cn0XAxFsXv zM&<8xKU_aFrTWALm4inxh`DCTP&*k6e7=zZXVg39))gXGyu>vLK5_EVIKn=ZvyLF}A`u_SQ-t)wcpbq7jFwD2-$SDq-tT+)0<7YzE&KNgMN~EA~q% z#z49mxrbx7;CYCU#ND1s%-FmKf$~{iVYkp@y`Yby#k0H$2RMQ*A2XC{w_}c;6(+_^ z+>FjHKMBr~Zvpc|?2b}w%o#G6qCRI)ZLwB<{q1`fy33PJ%M=R?{OVsPZ;JLL);G<+L7rS7>u4nS;=}8Nw;pT0`^?CAva!|4WcK&r3i=tZN z^Mp=mMLO6Nb?aCHyGj4Trv38rl1c6-g$lcQ6GaWmWlxZ`FqGLEW))ouHa8=@9aFsb z@#)AqVzdN!08)s1O$^mYqnhpEfSY2gW9jzv5k`-ju)_4z^&Fz$#HnOcQdW`2$46S_ z{{H*#br;~23yJ|X{c&-u6V#PV#{Coc-Hkg}Marg&JQfLFP{5wBiI1NOio-xo7PPiY z9zoZah}Iw-{(z~G4R|#?8GYFJR7_BEMQU^~sBQyd<6kfc{nnrc9)p~S`~LRZZ)5c@ z4a9+mPBsBQ!Hs|k8kI16vcF5Eo>QD6um7*V{yO&HK0ZF2)8r~eJxcnOjeTo3*F*j= z{RhVUo#{O>*A;$Iv!~g3etsStz(EpSnL{>?*VRSB2JASrgtOsNP8vV67g7;LxZo{Z z>Zehs%j-Pc>+|6BIL@j@F9Dr*Jq?^&M^4##N8X;9`Y}gHP$X@hU?ANLuy4}&Pf1xW zq=kZ*EKKN4S=VGI@A~J@pMy=7cN3XqQ~+st$a^_ikg~eqAEv^;y5sxb|Ni&i|Ni%D zsSY*;*da{DuaYtFAk(qK^?Q-==uwi+Of6WPG%R(%AdPu8Lkf(=)R+)SEeb8&^^bK$ z!mJ^%T7PP&)H;|vu6WjU2~WhxOg2(i*y+kIFE1ziAxtb00_LEryK~Fn#WP4$>5C zCsYS>98=_8Jc~>1{grR?`}gl@VV|`Lr3+&DG2{*o+Y(G8c$kh>O3HG~!cIs=4v!-^ zs|)i!mI$dLBy?QRnI|vfewhC7a$~p0!H$HmJK?Jwtz=tIjZ^zt^a)7BS!-UP`>StlI&@Q@_ zk_$8AucJS4O3zhaAb0wAMpgpe?3Aj>Xz034s-_we;jXVlj!|TEvOX65rHDHD!{oI! zo(SL4Z;d_Q#(@1>TlX$VNoj0S=WJ5rc1ta`PWEtUtDu8080aph+=5lmx*g;>MkmsD zo}AKd8f#~9h*+6l&}FzKEBe3B)IDipulil`sEK{qN+5ZjKH1dw{`*U`TL_tg1>{WT zyZP>nceU5F?>NusT%L1vgm-bW!J}?au^#H_YrvnMpKdRxJJqAtD@75OzDtQ>*VB~5OI`eq$a$ff?11wea~XKo zNje@s)`ccnD`(Ix(Z-|>`uX{J5I0#kW?fdx9yde3qG8xAS$Ji9Ei=#;?_y=qDU1b4 z<1kteL(=c^Nv%x&KvQwed9(5K^kiR!E|Y}W$;slobgqy2s(PI((=w&Vh}7$EZ*Lfr zGe(8Z8FNY--_>BcCV9M99TZn|uH>djKx2mg@0VycVloHsg>gJ~_`e z<6fqJ*UQ^S+tyEk_?C&Yyy@iA5q2HC!gcMGEcu)&_z61H-8LKdsc6sx&MKiC3G*fE zKvPoY39hf~cuIS+LBT-;is;|JWasV#GHYa$5!<+IEik0Kh*Ul99~Q&lLZx5|$iNBC zdnVp55f`$>6D=}xBNT&lU(8Sk%n)I~$5A7!89V<}7rwl_*kEwkAUG^Nc3E=tY>9Dc zEiI`^n<5)o9lG+<)06GvRf6_7w_TqPRRpn}lNFs(cl+YQ`d6C^PtPa}IZz90X5$T# zGX*t%^d}=LnFbb9I0299oI8R6^M+LX`g9p%*&lqwK(}viZ`ibT2g!I-@G}&u?7w=c zbK=HYE+VqDrQ}_=II(_{3vRdauU%%BxmnLsKur~n3%JZd##zPz$Lk2-J5Ut=`tw{C zcPX~!@D^qV!R_FBUbLdW8;>F5U$AtM2gHkw7JkK;25%shV9#mE~rg zC1kh_^METCiuyJzzetmr{;0E)u zJFDfg7PB8p;Zhz%jc7_K=Oj!`aboTFf?E+P@A@iQ04B18_!wZEljyhJ9cx)K^vwiK z`}^PjE@P?gzeX~w?n^gi!ZHHv9)_u-?5^n16Ncg7SnHva4At1Sab|Gl58^E_nCZRw z$P*;tQF9pY!aYWPWsuyWKPgH>UwnLgtQp4`#@O*89ip!QOl*C=uy;V>KtDlk0AhfR zT*T);_(1GLVXzy7g$zokw|IVd7ev^LHtu@TXNuqDV;nKyL@a4fI6r}pYWRuovL;a) z43aOJ+sH5zaIjOZVg{C%P(+=4%kEr(ug)Hf@c#U&S#nH6L_hH8-J_S>&T=vnBJL!^~I37ES(LJ~b zKQXQ#-i7(s8FQRH<{99Xge+2%sH=^XVJt9R?eX!^1n|cfr*=}3IoK_oEguQ#{guLG zw};>u3`=)Ki|Z`sX9l~?rb`Zb-*W*(eM>8fIX8DZa0#foa}|L_=n-L6P@mU^Gnk)P zH(Gmr69){U2hSSFNH;l;hEfuvQRoEJ0(ae2eHi$#BO(zY@}iBc>tbe8-2R0-%^G&r z6_3o29CMDVPvI>oQLaID#;fKWNC;#~ugi$y)_98_0(de4 zd0G~f9#E2?V`+^2Bqb$fY!gWZYX`}0)^55bhS%#A@)szx+TrlCvprT*c@gXe+XytR z`wF5+)xUko^YgRK1=E>dW272@COXD`7SRUc#fv{0XiV(~VrZfFjt8?CTM}!#Va@TNY*OL|(UBCvrb{Yj> z#x${*TTI;r^}|6TK=WEv5I6y@jgLkvjm$y*OUN1Q1{?>7ZSdapBDfokI~zaU^|etG zy+pPZd%vz7Zoqa?kHtJzS1QG{EWfLDMOrR-qjYKD13)>(!t9*$uf|CkpmV0;7-r{2 zkv4AUqWG9b8{g#?B0pfv<&0{)U7vgI$5O5uO_M5^9Y8G-T`vo$oz#RN)Z|cW?-VAk zl}x;;vl7;T>Zo;F4p%wzbc#?Rv1i~j#yPq_S4=a9vVS7cElTyetmOpMT4)+g(AR1Q zMtC2FTFN)F0yHJ%tQ~}5>kv zhodX4`@mC*95=3ph&CC1^2O8B7#nR9NK>++a5<9EG(VsnD$5Gz9~grFGHO|DdA?dkOzQz+0PbOoozrPib$>k+1U zNp1eq(-W~1Ujbe-ma9=wzRS)GP?sl|#SR zZFOH@Zb6|PJIw0m2&FWJH0pYdkZ`A@99ht@v(FSd555HvO3E<6A|HVfbg)M+*@ zNnWULoW3+VN1P1R9VSs_-fc!3n#64~8VcZM&~M)p({X97lmq!PF=)&Py_`rGe1CtZ z+-WyJ&0SDUX2epd4PqRazy0lRfK3rNi~Z>$jgiZcVR3?)XsoL4P(nepR+nZ2ECxS8 zw;yN5%^!>BuGbG`O}Xe#cXR};Rksj1*Bz>T>3YlPVew*nzfVzy=0Kd{C>AY8&yu=c zWYDgNFA^H(;7cI&nbg7|4dR7*>x#%Lx&+h)_dKNs=b~xA za4~M&FioDGp0tJFd5HxnDJd!Ky`y7~dV9Rk+&C9LLcZu)AP(EYwIJaL)!I%6xYU9i zq!e-cF#FZVNmQ9(Lz~N-iVxipj65;<%Pi5*djq%8oqf-itmaN4cM|+P-b>emZa(4} z_MQa2w7oNrJ_VavMOx|w0*G13EpRXHdl-wtQ!Y4GQ~zuCHOq9eV^Qz%+D9%_}M`nu2%;3@>4Us_^f?p{ht zAt$-;8X{$W(mUQ-XtVA^)65l8ZUyPBRhbS@cb3=JA0Hpl=dnde)KO>MAXdsMm9S>_ zKk{*3+rUOYn1>ZxhhM-ON(E7zH`-uY*-)NM|Dtg*xb%wD&@sbN{^!TX2e3W$!#C3i zCM9Jf(dN?8MXN_U#%Ud1P+-`hqw(q*jHmx8`dg)vAZ4tchbt%!gx4d0hNk1;}&%^3+h5*-JVauh=T)o zr^a?m;ZSH_q;`mnXGI8vEjt zspV%P4hwlw4VRxJ81lb#7(x4JTf%Kdx@pvGQ2>wDYEDJ%&O}>_r1;}NR}(2Ok1T)r z{{4HZ3EO07&vP}ty8@A#E;+0Ei7>uZRjTill<6CmGbxei%Ziz*)~%6;niPZPfZj60 ztM3{pCoW5h^}3!sh^VGZDUYx7>8OCw6Ekk8R&Xb*uCFwNs_b0jaxKV!&YrN7kW~kt z8Uxn77~pdkNKEQI{r2B~|J{Gv>VU2VU;UnQZ&B>*3lbg;UhrgDWBLGKF59r}6r~UV zI5%2+*#Y~ZAII^-@NgS}t7tFg=t9?Lvh1l|;;&zeTH|Qz`W*b!9$nvBdftL3xBUn` zb4b$c`sVD|V^gxCyd=o8i!m+T7d*LSg`cIYIKNhD5kSCcVjAGl0JR&CZ*2uPyVuOs zy$cntmRF9sz>;c?$V%zI)cY)B$lO zJwHF^TwUs28J#dR170k@GDMSHjXulz_h_?$TV-tzX_{Wq>olT;pPO7E2(x2!l!#m- zo%uNT>xVMsDKv5)b{I2g3x=;=k@Zi06Ljf%k>-zNqw`(e)XU4u&QC#)UZw&`SkaQE zZy?!N_oh|A<@KaA3ED5395`;M$<>3?jKNMwT3>W&8uj3*pAo9IuWMatFOvbi;+5$F z3^!k!CB6Qxw7pg)J~MXv*w+s=lkUp_V+OED?Z9s|DpGsc#e;Ce(N-Njm%F~*(BNn8 zO{>65ARRjhFP^+I$MGPbc9G{R`SIh2yoP!gKr=!nzR^H>OkpJGnnj}a(HEuZ~C* zX=``kXl1xHC8Z%!YBF~yWB{;8xrop!07bey6RQzBopQqJ!*am{%waP%QMKGm!5IjMA1N{rg=+Xhojd5=%3t-cw9&XFkt*h0u znV=+R22e_8)uZ5P11mrlx#HLu)!^yLUO;Konu>SZv}kUSO_I@`9BQUPJU+QW1SXj6 z>AZnAFX-EO$$IRy!qS5YS1(G)u4 zC9PUhMvb~VzkgDZWv0tw({4X&O~bvy;pF~Ykm=5*C!jZ(HYBi`e6ZB!DJg9yfouhQ z_=UX7DN7!NDOw_{x&;=Mlc0<~V{S4X`G-Z*z;0a3qM_=)8_@b=EnY^fN`YtvB6Keg8FWeW-d39bJ;`U86n-Dt1oZH zusJw6@u2a;-``#VWx3SUkY+{n(F;sZ@HowXQx3Z+v`(}yq!8p4(+uP+c#%XE zLfw3E75khz^q6kx-q0`x(owYQ^Nx zBh6WvE?C!-RL(}kum=ux9yMAXn~IcOWBZnzR`cPK?F*kQ)uY;sz{fLaqt-gI>5MsO zffu)*j?(IK?-R;_I+n%S7Gf7*_BQNjO|WpK>VnVD&+qT=zy0=`3sq85QU>Ma<%Ko{ z{7ZIcPRsuOu;XksSq8Q6Coe+H7Xd&$$3X<@Xm{=7U}BC8VHoTuX#SZo>HPTz`L}Q8 zYxl)BHAb;D-EY^9hmFz59B-FzV#h=JYI%l%PIOpL>Gm^tp8owy&H@>a4@i0b@pcHg zYs|CMO8X*PQ{)PuG(adz$ict=uJdSc+HE zXl4Jq9U*V&7Xbm;D4j8PQ}8N$|RnpGlWliol# zwl%*#6O)y=g47P#Nr}{Vefs2*j8WLiuHt63iDY?de`(BEEOi)79F*!6;A_r|J2xgK@Qd?K<7f{2&qtbJB7OS&Bc?Hs+RZ=Qob^W?GeEH%(?cT zy>xwf%e+Y2c7n;Fv9Y4?QR7n}L(r@12C5+G_yLrV-JDZqZyXuY6jR4Y&si1%gC z_9xvE8Xd*yze-*VN}He#DTn$uB8>6iczt~(e|+$#HUDV)=jUf;n~NBJO*69V!%MTL zg09ntx}!G0N9&u$n4LpYya>O9R@9FlKd5_~h=PHVFRzN_zT9f5{iC_C*Ofb+P@`#D zzO(mv+)>!L9B(TwQ=JpKn$80`5*)W_P^P4e?MH2AN(`|1Orn&sn>;-|{p(-A*D z4DMPKY!NDh2AY9^Tg6#F#XNS|+nGF}TqON7^ku5=~rtXWV43Dpd7@Rt7lY=%v z&gP3ZrE5~0>t}H%+s7rtv#;Qy$V1@(OW@tH-mmsS&IPX_gRYZIXNZ0pIJ>b#iwI&$ z0&4TU4k=AYRTlai4&YN_wvmR_w$#}G<>A}g+hC*Ll#~>27AOA$s~w+;>y`xL9^2G5 z2Ut&x9@~C}TMf72>Y8d5y!-A)>C_?J?>@_qtW1vzCud2Hk}G=LPSIe^4vC+XGSTPJ z;A3qO+O4JJ$B)BKQCv=>Au#xOhF%bU@=&8?9|1wK|JWK%RAJ0%2Bf4+)Y95hgUWD< zpHGE#Ok$$Gl0?_8hrgpkAyrHV9)D)ci73!CzsOM-nJBHbqL!l&m72%;^n{1>{r$bG zvhx5+=>PMNfBfUzW0$1tu8#!hzw!D2g_@$**Vitjr*(Y@YTlVhT@jHv|J=X+^)Kd! z_KWr%czfHjuq`Z@<}oeR?X1mnuT0_gD!gU@ z#O9iT?sdpd!1dpELn$#iqzXd?me);Xc0`pBK{Qc^B1R9+KK)R`fx zF549BDcG;jqU%9WaEGdlW+=?c_I5x*HyxPcGN7UW_%nl8Zv%%rZ+!Sl3clLZJt-=z8Ln`DOS8KGf(HIA(YN-xS6?yqx5vLaXEsKk#)%DmU0I%mr36Co=xxgykpv--%7n zjHaRD8aIVYZ@L3r93m|u1WXZt*YtjC7z}(RP8aHz&|TM4`uM+b4GbRoe7$(Fj%4t4 zew~rri9N~sspoUL(=90;*+IMmD%B1JPyjwIH`~~%?Wd+Cy|v+eZ}P2cw!%G0FnmSt zlC~`+`1JHNk9nkcm#~#fsdu|0>88)mPspJ-uHb#ksx}e4?B#u`l$5KsS_cH?Yg;w#wDL%zB}(-7c846D0Vu^xypC* z-OIi!Yq|SMvyGqm`1qjXC!HL}zWc9#{R<#~oOgW~#xc^aUteEiH){ALz>mmW)=vP9 z4FWV!q)|^7p&3%KFkOJI04G7%zMNmL0c+&-1$3*8k`>SdU;=M`ACWb}9L~71=89yfquno%QzJ2D|50hG zwG_338vS#pUm5PgXy_K-Wg{C>%u{3eyY~`D#i@n_VU?hLB+c3RUcdyUr*yz9X{xaB z_7jaxxe6glqy2(OM8n)nRohyigutRglOsC2)il}L@yJ2Q&to$Cz-#5 z@kxP9-I9`W904MUyOKyxBeL!<+T_N4iXf4j9s89({`dp*L1sCj?vti6IcP;GBG3={ z^#u~4|2{lCyuQBDK$G%zI{NVeY8&I#C?c~{4TRVAB$c316MZ7cZHyZZ3gAnf_M-24 zDyUc0z&<}exrHeMh!m5N@{H7AGU6$7(*XDYsbrcHOp(E49DUM+ZuFO{U1fbnt3`9A zD^Sqd?bQSN;zAlqLDn(-yAWa=u(UAJ5gtTX$qmZIb1f4#&ShQ8&pgiw%^W(*RiV8NC&|F8JoDN?U+MK%AuTI*+cYJmuTZi^JoX% ziAl7ZVBAYk?B@3+%&tH52(X@UQI;^>o)jQdGu_0zp<1EkvrAc`UjF(e_#Rr}Yq8f2 zF4VTxf}}i4eN$5GXvAFu9f6$8lY4|y!}&^u;EP7Q46vzY(rlm!Cd#RDAMcyjS)^(Xi_#i)+5`QaX^qoSJPV+DhXz1jX)2ol{|y3 zZ)-VbQi!X(m#;2e3P5>mi)jsKyS8=Zl7O1_m^35%ZBsxEiqPlh=PfqmrJ#2XMV+ad zL%EI*4-dOx?SviH`nkFnTT04CXBBBv1Zm&j-({A~=7vbA1>d0STV=%!?jDq&4_hNE2hFV~I2wDsq5n`IkdQZa5J#ABbzcDLNb1T#QRs%3BHXE;)G^+z@+F9}s zHN%a15D;x#psSwkKfdJY=_z9#DGT?en`U->RupvjQ@%b}tr?-52p-i~426LW14F~0 z6%V{)5#}4?cSFsZ!-HOb~YrZx(>_9DV?||cGXDeZta}SF=I^ugEMCNOA zNgFILKBKD!;QPAAD3-IXoOoRM_%1$z>710ax3rX-#WE?Iip~|O0z#cM{DrwQb1hd9Vq)}O>;kM7yM0M* z?og;Mee&?|0ECD8Gzh4nISmQnSIhudNv-F`^>u>b@mzy*fRu-83?4v5hh>K25$}R` zHOXVWbfxFzbzBxqgnW7n7G551*S95Iova!Q8<)Fb!qQ&wvT?o@9XYmS0%|Es1jmnJ zK;!~V=-d=*5u@TO+1)1fM0+8_1sgesJiWX z5^CNe5^(Z>AO#Oi=pL!vS615KFS<^X!o&8(u@Kq{hj2yLr*6eIpgTCTJByoW&kH&8 zfR5by$;5eng_3O`c(C}j+QCoX-H;xxf)4Bu^R3w~dx5o=lst zhDEcf0)ilOEPAutd%Spq3_@f;1B1EN%gqt4T;%tS?L$(#CnnRHWE2oxYvw<`B)8?* zSq_12s<4GZeHLrG>+`Ch8O~CvMaRjvZy{}mg(OaY=z{V(;>=v{V}(Ti^Jd`o-B z$NIee0_Ji-AK9^`XnVM@msfb2m<`6)90qnaqG^9Qm;l{u*#bt#pIGSBlk>RTXr$Oy z_c&Po^>5ZbIDN62RnAxHIZ;NI$vxzOXp463x|$ zNtiBEiu%+Yhz9o|ZAzlv8S^nHkm-6NMt*3m+_#$)GAszO=4>n%M>|<{npijO$^zt7 z%zdyk{?=5VYqc*Q1En!z07R^*SyHb7OEJ7EC^2lfh|k7My(`r`I2)w(Y1hPz16Lk3 zAg96)*~0pNe}6A{#Ql8hth#kq+IG3sP|aesWB*Y5S^OepP)v2CD>}Yt@4#`+KBA!Y zWL{57$|MixOMtuyvF!Ql06MFeTum2L0d-`xPQd@V6m0GBXxBFwPInU^61tI&on?Cc z*I$3dVkE8ahOKd&vLys+^YEIJZmF+H5**eD*<=RAz{LP+3)a5^GULDQQ4j~r--hID zOtMsb5z-ao7x`(5j!^>B=Rw~ht!(+yGLbQy(Y0wY11fcOGbIao#Qf>FS-7(67vU#* zdU}GFddc;5DL8KU@44w$5OCf@l`pYt(jwm8-gL{Wgy1-gsnUu{wqfiNt|8itmKmc# zfiBd2_izT{{v^Fc-@WR_eB?;3a*A*sxQ|CFujK;Tu9c=)rMw6(B+5c_erC(Z$A^b83#)Mu^269*$w*N5M1uj_ejO|6@9 z7aq4aMFiCI3%aX+g>#mWwh{xH$ zBcq5z*$?6#}aIlOmxdz`lfnLL@8sSBX zjb^F?YC!NjYwrTs{v;^N>LiP;&P>K2W_F08oTYI8pD)>ys{bIEnzVo(%_^80%U3!v zuJ4mu2-^i^)HRbbP#hBHe#eK!)5pBN-qH`<5lvgrK}+1Kc+GRY&F)nF^_|0NdNkTK z|J95B){9#c=ii<{pho$ml~N<#yMs4H8tfRL2Kg8Giy;Y!_Rg|ex=`AHh8%r6n0b${!vFU(3jEdr`Y!?dEl)|Bjf0au9eni?HT~V-!ZEXZzP<5j~4roHh zJ??t^3kncSchM@v;|Oj`H@72!E3B70p^%3dx{AjiV zg6+p0-BO>b{GwrcpV1zGY+$w?=$ngYfi*yXv?X<&!RaNVe-)bq8Z{?mL?Pwn+{{pu z;qok2gq6vpqupX{b(p7^C!+hZP9taE4+tl2jL&ylo%a3v_jyJYnMy@@lo!gBBZMoM zZKwNldA#2B3OE-{W37yJ$+>ND?!fYUXTQZg&x&V@Hu9v5eCx4-XSdgn5p=?dUPvgZ zt4_#rm|`IrHsvr~pJXxp;hH)1#t2h461%1x-Z^R0mzn9(_}97a7gvT|pQkY9TGxj4 zY=vW0R-9S9e!a1QsM0|UqaDVJ4alAkY`2>r_3%MM#Y7|(WnYiYzcu6mLk_wZ3?U}m zy+nO?wT9m=f`WSkI?2ht_0WH+@q4h1Yp83?t-XzN zIc~9(lgD=gYSH_fZLx6RE;)m69<8744942b<)_a+c?NLxaE{khYxsr*kV21+RnlUx zj%v3NL+&h~0AP!+V42K5H@TGC`vNs!JiED5H1LXiIxsbo**VZ7=y9p|=(oZ$uI<#p zciqaZ0MtG{J{}$(@J7bI>nm$1n{ADCL-wYwz!~5xV_kWIPF|V9??K9*li$68cZu<8 zdbNdSU)iPUk;4@ZLcM}bKlokZ%yISCJ6Y?5AR(C`=80rA;t#MrXdV}T=(?T}e6&F3 zV_%D+(y`J)Qh6w3M7Z#V7A!FP!_XL^Diwq-G3u4{asQVb0ayyFh7ZY^!mf z0+$`Li5k&A^>;B2!1T4hXa`o)=btqjR6000ns;@0X;JC7rtCpofu3|449joOuG;_U zQ|re}77M^_rpN9G&NYs5Lqf&5Fni2&+~!@V9*A?s_#8PY^%bzy7+x_R@S}FB`_@mv z#TtC_$B!SZPu~j$4=xAsTdd4RTJ-Euy}iBZQPST~^Q?~*EAy-?qck`ibxmCy>jFx( zElw-a>+F(seVDx)htcztyp4C=*`o{L0TV4rT*nl5`VGuRk!_u8qw#K9$gV3wImdG8 z=~pHn0{($$1x@)bR6jszB%N{Mn2D^Y`CU{V#-oM5I7y($BqFd)rO&e3e5Ul&x8`eorx)YWFcyD@3z1V2uy2zNzp`& zqvPfQr8njluSxQMdZ`r_uecl?QW!rw{y14`eied;!>KU4i6qmar>Xfrw^?57vDl?d z5Uto>fBjW!lG(=;h2B_ToVNUWBzo-M_R zNsp0uXu{#b;m8HY((Cqr)->-fT6`MKaStMTRK>DTG&#&5Z*Om|z|~Q;%B@)|YCeg_ zV4K!zu)e9-I-}5>dJy1Q3lGyJ;#v}HP?s~96^`*^dfGyTZh74#eN8N2F$V7P__;@} zOL2G3xiiy^?gBl$O4lXY;8pH9kXh%No#`_iQH;dJigwMz9Fn+5-u@x(p4tmee&u)AP6(A?R^;`t5!3XKfBd6p^m$UCPP<+X`*jU*9zk4Wk$$@! zzK)e6dT^*b7o5{N1irj^ii~_KY#Qe&0Ac9oDAxsCJ0N($Y(!ebF$-Rsq9CxG;Ra|P z$lGVy&sAP_S8`LFCFECv6ySKX=5c86R>_c3Y96AoO1gspYM3KCq!w~c71>*HBzE8< zc4qt4FH&ev2PN>4M#r(;1P({^SiwU?{1bD{M+~I~#qa_yC?jyY9a03$Dik9z4gGKdXr%M-}rmF_haAU~%FTG%2v9g@6ruYNRQ=|huER(TSKg}x7sZiVPBMQI{(E2fq|r~fDf34VS)W>Gv@9f{%q1b+1l~UPkOo=nLd*eOX=0jreu9=h z&&%8I@$pg44*_-p*WDp&6{$!ky`r($+*u|TFQ1iZ>>@I{Q@IdK1E?vqiNp@#q?w*J zUq$xxTYA=-VIDo|8`_;ap|C}}QWwJ+5A)GkiT(S_KE*qLjFghq?}C@1McovMa<;CI z97bcb3(YiRn)U^S)aIgLE8!L$5M-$7Hes~@5M-T5pA&B7_JK2u6|Vbq0A-?1Cgqt| z0A-BG(C3llXwJAAn*+_cY{q3I6n}erv%O?O-$A^U`(3L87c_HbQw8c;p0$Tr$WwD> z5LSmX2T9)K9Mt{RfEoq^qrzs;=VRbD-bHlt2nmq83QH*=!#whCMo4}ktip32bR|%> zcql9(18OXFcg`g|NxE^`R4KPAXw-S07pKx#yqVaHEuXIMGjNeieEXP35b{VoIUd;Z zQwjE@f|&kX>nnyLJm3Na>b|NpT#v{?YWPQH_llsoa9J>>cbO5Ff|J}SLRBSd~U#2igYHTX-dupH#;vJXi z6-`=OQ95Md8ieTI7A_4C4@xRhXx9)PPUaEPUam`EMWs`L3*4x~!tuVMAr=F9xoT>&Y*M;OYFtv+=wuR+HdKbF@$|0)r z*bdqYBz9?9q{M(@%(JUW@LF2&yf&wpJ7X|HXqDmrGU-9rGvZS$>6RMKyC3ulE{kkB zyj1Xw7D67GCV4H+N07U?wpoy?Oa<$T%tt#Cu~UKB65y0+Joi}NF!-cm7+AkWQw64o zEWhn)i&8EErLj;WNu>)fhzucY|9V+kKYL-I7Hl>fdRv#QFeT*(Xxa>`gA=wJ>XZs= zgiAXq^aGnF{rMt(+|gVN86-Np-QE;bWJdpSs%q$hMG+WTHL*p>S#w^XX~p?#(fCc- z*7fOQV+U(&v|S)~wN-<%#iFY(1@kp&?7DFhAg&Bh^Yb8zUUZX*(@hUuvH|Vw>xOBS zN`(T}xg3vZ1-h{4WJwX(QgjZzXB>@8TDJz{u*V=i7xto>-TjXX>zoUMxUF~#Rvcy` ze0_c8zuGWIm}JxwP}kV@wl7^c9yZjdhms8L8ZUk@yT5)3AfskO-~Gow{t;`MAkW4F zERyEjP$qgu-B-9iDfVXw&w>yFlSwiN&EqiNZ^O2xzO|rA9Z z`T3d6>mUS-S6z>`yXv8C1=F31^6hDTLizviFM+GU3HEglV*T;*@`78dEko$iYw7P_ zvZ6)n+!GK?{%d~m*tGx+OhZW?88I6u-c0!)F+}WInkF|i_STOeHhm%pJb0$_EY_;R zCKb2n(zVLPO%e|}U%+02j0&|EWR5wSw6=4`ov6sM7&okb3sT5D7O!2LyEQYiF|5Rh4NOl`lTy+XyZs^b>2Gv+)ay&KJ@t`AVdrQ+g+=sCDG zPt1)P6jmO@TX(1d;jtzWfZQ?pIdGqmC#VNR5a3+L%-+$UY|11>`T*LbJ&X%%n=c`4 zXADq7O%yffTH!Ey5E|9G)#e|YLkM(1lTH23MugR=R4^wkSn?%DS*Af#mE@rok;Pm8) z&|eIJY>P1Or5*uFUU&EY{!ZL+hgJ!0L~8?#;Byf(u(8M5m|_*M7=UHtth&cpT1e$3d1OR?ZS4Yt_7#^~#CM%u9mR5(z`4 z65$s%mp17+V@#SUDaZFE2@=o9lW@yv6A=>JGOrf&rib!78Xnwb?MYI$vHhe~;LbWZ z`LG*f$q-Xq#bP1O6nnTk9mvtj=48KeX?GzEqa zBz94xoFAMWo(=X>eD-8z!%D;JAg{F%i66UexciE5G}Ad@S$Yi>(N{7fUS3|V%Veyp zs171p)l@l+X*aj#jIX<3$28JbnuE_5*CIk2wZ@@#Y;2dISgp3)hj=hDkTOFJLh++V zNk$TW@8{=d*B2~1|LB;v;8bd}N_oI!e0b5OG_(Ov9D~xGTM7z)+8Z&+tQ;~Rn0z`j zK0iO}D|(UqT+Ek?-yqFx$s*Uk8t1v^2!Pa*_AG5NPbZ@mJ;(?JIsU563%pLJGK?;*&$W_Fp?Y9h0v|vJ0fg7})F`>GQm#etXmH7AeAkU% z0OknB;C|8q{y2AfaJYbz5vvkaMsMOlObYri&R;hQJIO*beFmV%MQvhY;n%#rzLH?> zVp6GJigg$U`fv=`(h-d1@b>lwS!!h7s13Y{=%?--7nWIqyqR^ zwH*wj%x)1FdtH0qk-tX3mcO0)o5UX*EewqK*g%lkCPsIVLHYnTVL>cBoUT<;e2|&e zfWY8cvsZM@_KVbC++nzA_QGDvRwjvOh#XV31YM!sL3J4Q{@=aiV@kOe!QDQq`34AD)UF39 z?Hm)GFQhCSc7$Lo_8z+7+r4a4!w%>*0fCxWWBhQ9rJ@LB)@b$X4{gU53 z_`5JSp|fD!(`J}{Wli13$44}FZ+NbDco)n|4~6C|eisF#*>$%hn!j2cC14?{57r$&&sr;hfm?rv9!OTiRE~2#MBw zF)Fu@z&htVZTxON!MlA|O9dZ+h66<62|Chx%ikqiKVE9nQE9oFKbjsskabW&4`p~h z!F>0C@3MDdAI5fBJw22$bonC^!yog0WqUWOvyU)loCu$T(17S)*U~cE1YAjApLk`w zfLJjwHYy@ygCG|TB~Eg-o;4fp1%L9px_!CHcv9B<=v(e<#ZgUscTs-IMl2pI6nLhL z1!#T;tFLuq2gjIK5t>pFf1@^bMu-&}W)AWUmn|3cS6z^09*x20*!5AX=9^|9e};x;?&7=fe6?I>26lDR&$S(l-0%Um8oBL?ZQ~cNo-nk zJtU?zzziAV z<*0=e0jFEp$HDWG;$3l6Q+Le)7rNUvS+qF^tu&B@+osB?iuB{l%S#%I z%Mp{V>hkM0nuBEpdX%nmMx}Lw!y@uQTXuFXQ){8mDJG~&aWyTPSl$47LxjzpN52SPe=+LIK*n<$xu&Rjy z9{ko^jd+n?uW9%JF7XIV#^SUI2K@2yVR}1#eIaTI)<4D1ZOqaIbr(daR;Nx(z99YA zK^c@V+Niv3RQYOek9Cf}4RaR!1$x3&Rtdn|=jW%cycRR--3kdlMN34dr;X_#?|<@= z=sFiafQ}o(xmX5fG>;k$#pjGUU4iO!xg{WUF4gha8vakp7S;*j7i~Q^Kf-Ipam6t( z))qO=Xmb%S#aZij9UJuD&WUqHCo7hB9ZpP1Nl6(r`b}&MquH3PMc5BL_V)Hh$ISQv zxeCM#97~{~EhPb~L zoDs`(C?-3OifFvcrXx_qhl}QlgPYn34Q}ATi**Sd5Tq?|TjNl{yu7^77ns?LVQ-2t zV_6B` zM9N0u=NomMN!DVJD%#on7Z5gD=WZuzN@m&=PEVgsNl8f=6e*mKj}I`5!AvnTSaTE- zWb&aybz9U|U5|y?XK;2c2%2?c*YhM8O+yXF4>%P!8iy{Ei4KX!07HT=5!)7r<{iKHBHea37x3RKx*Fu`rt2RS8Wp|j%>W|~dI5~x>VjgC!F z8q_#sVhvxA2AH3u3uTz>9Z)<%DUnyJ5MXQ6IF1;cQBLxT3I6&od0t&lO76kHc<3a% z##BJT;UmchQ(N!}eiRPz_i`cp8Z$tyr&cvg9-6767#=LM-vd+7wE& z0Ll>K-N>E;q?0zxj-Sh65o+2w3FK^0Ryk&|O=xb9{IwABZ-DGF5`AZ>E z{l;$eb*#+vA1@jHIx*U|L`ZgpM=7_#Y@uZ;M}ll4p4!5!$?1=tL^D*mOHGM?o@6ng z_!nn`Ivoyx#8^{OQjY9PcOhR193*m%bbl`N-~%rD`%5q8BJ6s)-zhERcQbFO7NOhB zrAFnsB{89KFj1!&52oS+v}aio9_X6===B6iod93s?DLQYJCs?VP8%Ei{=~*9?d?w{ z7f)P|^(=n9ouh`N*g(lAtKJKeVK5Rc+K-P9(;=D7LuMpe3%?qRJ%eN^M-bcx=!0CJ z=vajoDnJ#l!)#;rfI`7)owJwuuUpSkR;dr`D5PWK*pB|^KmU2wnZf{Q$TrVeBWujt zxggRRI~Lm)tX)4`Ik*(2U+S!fm?;!1EBtF2s1rfS9VO*bf9R~@aEbu%bqOIUI{4~X z-6!V`Y#t8#8_V+BS%|%(peZ=tQ%T|H5Z;kOKlgZ$krzvBawVjsq#V-#ke2)Hx8H09 zVh?mZ$%xy)+Zc5Y6j5SF$fM^$ek54k~SW0Ex| z!KK`o;9jy-Pxc>ZEa^SR>@a!shwXtow?#X>pdIXbVz{m+0YtyKVlt<8=@-}a?%f;b;M2>jX7SLq$mRWKXV+74&5NXfnu8!79%jej z^RW??L)QQP_rKYbSsen;8)7DZh=>D(>$#I#|HS!?VMI_}stj2Se-@%8P@;}?*`}gm= z{g`{w0hZYgt`i+&Ep$OE+XZwvn%Aa>AN*+}ZWK@);RJHET}_;{=NP01Yo7a*8I}{| zxH%OmDJdzlk0d~@g2uc1GZ_k}|0?>{wsmB(AGBZpcQ0E{0tqRy3h2~q#$wM2XU*1a z0U^gZY~Lp!S5`}Gk){DBrgnSw6^Ut(Y%JXDyV+^vnbzs9RHd-NyFSH|WqcNojT_?@ zA%v8a{dXv;n0)Hv5BMa*z-5Kc}e?GTK=eSUZFUC8Vo9v*5V zPhqt>U*K5~Z`N&6$?bp$M676e!zRhl2|E^mZKtWZzHo30y-K{+!*cBjH zD0sjRIA(x|W6m@7208MYNvR8Z{w(An&3CtccRwImXCdKbI7;XSHRC$&r`!G*jcE(8 zLtBWt3G7j~`5;AWpYV>3b9zC_@;gF6iJn|K$Y&5zq@<*zq@>I^$DNl!1{Sd;$~LE8 zhm;fY+T_8ynf=q#6McT>wV7uOm>Ib7UEgjDT67Z3LD}>#O<>lF%r^* znTx)zpN2F&GuKjf6D{@k_xJ7#-qjyEGLB3pbJ$G*qdMD`UM0lv@@PB0>mn$~>*Myo`8X#%^$;6d)jIMK#LpO+>f-XGft zo~x#uKmfZAnQQ5jr)+&*JU%{>s=}El(JQ&?rV9`Ov{ce~?u$w~cFxbi<;t4+Iqb8F zaa>#nDq@+B9N|2cPP2ohXA|sr}pt{1t z!^4srck@KuHDxH2vD2X?*I3Hx0+@?O37AW1^I`FXBaO1q*;@q;2)Pi)Bx}Ss(9&dj^HfMl zNl8gr<;dn_kpKocA8onq&VfarI~a>%b4+s9a8Qk}Z6R)y3?V5ACfqWB8o{}<&Q|zS zWI1U3vaM+ss2>8b+q0BLgNG`PA!#xXxXd&{GvvyJdwP0GOXhk-OI_{vyXfbXur&LwaUdGz69g= z_4T#uJAHSdu*-C-yG3`Qwvgw5$*%h)ZH-BoZk$n{CCfoZ$hTe`!Nz0Xtv&aODMH%` zKrJ&PQ~3G$`5v~|Z8%!B!Tk96NMh!>Rg)*DYad^I2`MuXZtB^$$RAgB+broGxr`)nxI9BY>PS))f zQ$%YBOwEa3xu)kt$X8o&x1B)#ssxl>3!Mg|6GKm=ZSy>MFozY?oGh5N)_O`xN=nKd z3d!AsRXHv<4N61NK!FwJDQv!kLyb()6KS{el)MkkfJ{A#*YGH)h?z1H@WHpYH+Wrj zo#*Fgvh83E`}y-H>GQW?a4#3lt?WY?T~rv{WOR^6Pn$^is&A>pl}a&}JxY75YmV-K zKjIIAh%NL!Xsbf;`0C><(mFIVT2VwGD0I3#tTtt5p-H9o0^m3YBHU^mYX2X5@46*N zax3YEW?H+on{}by|Hb$eTdb@qvRk92Ii~z3?Rdw<)8p(V2`S21?&^?#Ku^}NLAt52nEdohRB3W8%_s%94 z$%Os*;j}Fxlbx&Mn(h^m#!jGS6DA{xJBQ|te(lBbay6=W>Cey4dPW%HDB2>*ty2Xl zl1()Ykp|}|>GqhlAYugDn_JBzj5A=e7`>ju20NGo=Xm>|X`1t7PU)!^f3CItQaYt* zJRaPRTF@ZLAj{>U9VXDmwwYQhcg@pGKm3|~Z z4fA40&8|yh1k-zn0F<_TRz8wv9ais6^CC zSJy6VR<-69*EK`Xz9k;OYIJ6B7e88OW(;Krq#WMoK|l{NF)>19bgo1ra!~(GLqY8) zG`J+J*{lbV^pJuA^DesMPX%9!WKk;NzO>AF{TF^N%qLF8ne9G#9^ykX4cts4HM+Pi z*D}hMCJni?xj6+{HE^@6Yw%)Voh~i+A~yVbekt?qzy9mL7Qq40W00vy14s{S^DeY@ zq`;YS6s_YLMCD4z%=!H5RlMF&&fd+}6#qQqXG}vu!I6hx!b?_`a zb8`#599l*t24diWxAbN*Vmr~kX+2v)mv(Kz{RjN^?b}ga2E$qpOpBGqeR^Evh!bhW_~d>K@`Fseu|d%cCtKimuaH}jr%CaoK*dK(zKnNsHZ4F=TUu`jR5$C zQ>|xt5-rw+N;L3)ZXyG`{rvf}lB3Li$|vi&E6f_A%@lZQ+;x*(JhiHO&K%VsQ_u>X zgeA8b{;kmPfHO$R&ZhiY;%0yV7;pq|z|2j_MO)l|;g|g^~6G3x+-!vbuI0 zNviqCR%;c>7M@wZdVhb%>2=eC1I;VUC!7<#qoFe4-rv%U0$5Gs05k)<`}FjbQf+9Q zvF1};fWOIP^nZNd=L9O%H}ShtkC8TWF81UQz2-TZA4$!2 z=1-TS<3MkpGN_lA7p(#v_4;k~0$%F6Za2L6nc-O`TQ)t)=Ur#4@XY#GtD7n3@9+Bt zUATv@Yo!{yWE`Dyl!oArGdcYhpvp=Wf#$H8|VU+b$@wO@XwST6zQs_)07&v*S@> z<4N+{Z@=;L*Vk8)_%uZJc2c*8-%@Fqo_Pq?)Y&eVOLL{T(m8dvBnEO?igQ8MsQa62 z(BEauD}!1`-d^7 z3zRP?(BUmUXj-|nhUn@R6DR3?(d{?YRE0nT?wo#Jj}ycgGS6`};XERl0AF{n9*!Z$ z6(U|v^F+szeN4cNlwqekfo;KFpC+=A%f_C_E$DiJ5ItU z6n8V#H&|;ds8Nc};0Y|BJKBvT^cj@A8`9vOdwDR38e;QsbQ|_qnA(2)`0?`cl6zA} z*?kwUpk8pgz&>dBjQFaSw_ZG-AB*9Fa1&;I==YG2kdQ|fz#7}5Fy(LT$x~-UT2Ka- z(ihls*~l<&D zILysqS}A7!nsKz|id;i;<}5Sjt&8_l=uOw%lAerA>QPF`)n@wwY9t%AhWhRX(ex#E zr~Mvv9_*ZLbPJ^eJWJ-iA3)8aovZDDuAP#;W~mjcPh{XioUAV#E>BJS_vLaqMA!L{ zkdTm-ww`EhhP!B55Uh$V9VD<7=xOinq^URVG!V>jT5DAfKwwLdqD6I~%*qn73w|hL z1M-vu?cGDkhGT()ZQiUg<<=TOS8O@KdfSp#E||m+4X0yhr)vXLbXk>7-dUzhwUz&3 z?1@q=w~M_yx1r1<_qK8k=K5Ax!|~vpGP6>DuL?6e2Fg)_Uho)PpD zO0`44!OkB%3MAArN13IhZLX2j&-t4_*Fqj>#8ROouw^ilcYvd{wz6G3Lrn_}q<%;@ zf_u_#IJN)(^{;=83bgC(Q{B9!4>?o(Hp%Ox{!ZGAYMuz#hb-%{w$v|6vUlHyVBsiF z=iIbHXiR1sv|lhG>;pfF8BLKfG7&8-jP13o^aB>XLV zNUq?<3;^0&9j}`F3XaQK-~v@3MHw4Zyyl-sKhbw6i;z`4L^fBO06H83{==S5Z+v zh0eSj+Td9Er}jk&X)qwLt+``kbAuNnA3S8sIXS9`a^L;2DQ>7jnjYE)$Z4sK33@Be z$$pfk-}ZjFxt6<8WKgIEIbrYDoNws=Zk+d{`)4m6d{gyLCgOorh2sdR>6S(X?Z15a zqPZwD_Yff_ZGJE>hUTr)JcTi*S(*8`x%GpObj6TqB8|6~8lmK5vXXE9oaOX5LK9E^ zmSuAn$5}(?fTn5FoQ$TKXX>~Dtr!7bEuzcia@Pl-Fcw48FR^|b?({R|SRh~^<@Wymu9*-XN641@&LQrT++=gY-rX{qTgb;`b4#gl0Dbb`=}Qh-ygqNO zTt0z&PFp0ZvP5z5o$iyiOmUP(vs@7_Tp7ejhQ7m|n|X@bWAF5Ds)|S$J2k(L4v97r zy)%k9z}ITt`B(`@DN}u@Z9wzKbO0-LE2m#IDh2|`mzS65*%UHLFp+nGW7uv9j8C`$ zey&yUP+@a+HyWI4=yqvT&AXexqBUdy9bLfG;5C==D$5~1C-r?$7+UWgA|w6~8EWW+ z)_t=7t})0sFt}1(Qfl4C>+5UfKB1eLXwnYVSdpK&6zb&bg2>~BQT~iaw-ofrY4h~~ zZW_4AquHZAP}OJtaWpGv$ILwc<0|xKiEOoywXMXX%rUK$4A)!Ngfld;)b1c%N^V-( zSis#2(Q+RjA87)zu{{0IO$kbT)ghRSPaH;qgA!P6K0pLtEuM8|H^1K{>D#w&mD~4d z*m`b>+{Kwmb3nYB2Q_1Aq$X8EU@T(6yNC1y1Uclvh5C*muY)#B z%R)8)!H#7yV<#BssOSR`UoN6pTz<7zAvy1Ek=EEaX@~0wlwVC0bliPA7*1v_srVy%;UA;QmM~nc^MZCOKRO+JaHVch?{pY718UXJ;9Ie{8OxYi_H7n>s&?}yYW5MQ2*Ee8uBHCZ7onfaL1IZ`C+ zmLpb!SZm$L0l%`jf) zm$C0r{h`5XeRIdVB5wcX%a@sF*57pUg7icarOvnTzpm2zo!#fgzDJ236HMFkx?0ko zpP#rNnmKQ8ZyCPr3D<=j5I~LQII!u#yc=&nj*dF2$#c0}$mi`I)lAkjOHVcbx>Bml zTZtwu?gv?N=>*Q7*+k>Ie|>)XH^}okHYnZFyT`41SF(*XAEeEmo}PMr#j$6Gal?kh z3ErUoYep^ok?EMB-|8ru93HxwpI1{31Z0sj>v@SbV-xGy7rbW;ep&&IyJ8R@&Epip z?wO$yBWE^$-T(QY{~?9P-iw_jIC(3dv3gQXKgK`vTdF+>cr0>Va_Uk3I9g=J;Sf@T zIe*6i-yHG<(%&*Yx{%_u>l$)Ox773PM?9mOgz8_Ys2RqV^BmS!9G!5~Eh85{Gl`bZ z&(A|B&q_}O?d*SF#Y#BsXw>^#yZPjN+0DfDv*E#SzkmNOrJ4eE=0NCL*J)}nM~ScG z@f=DLeJANrDy8@v<44v$$eJxi0#O8?{9F3HwqCc7GD@@+GLR?FS~uUK$VV?REWK}` z_F90kt#H;8Y$pAyL0{yA*!prIYA(vqjj4FF0O#YsliFuf)>PM9lL;}DfX2pzp-lB|wGTxx$bx6nu#g+8QCcvOr&pVK zyL6Gu<#Ks>c^LwQ0ryMFnN6RELeuMZ>*300DX?#P|CyJC^Rozf79*XJ zeDf8it^(2i-7hbj0>fBQmA_?&yN!i-nBJ705qFohV;XY3UpDmU#}zUeTY%tV@rFw} zGbr%JIizVzO{9dtkvI)%E!8Ue|g^~x+JNAlC$Hp>8EEP0Y78> zzz^V*G?ct{Mq_+N+*0L?-sshqx*{?77G1A~vFqBCyp~bCRXfQGvJWhRHE0lDUtbqI z=dV}MnTgC-Sel_}s=25&aHhhUrMxw%36#-hU=unBhe7KC-L%Nn>9b*b1<_RqGBh_r z+>nq_LgGnAhcBz%*-aghW1V6)jRMqI2=@2RZC28OTBZqL&Bo7b9~cm1!K;(UalTgu z=*eEd#O^J|*C$U;Pw(&V`a`d{<{jLH#tZJwlHadFqGD!CWgjo;m5H)y+0zul*wgUt zIdq1?#$;NI>7I+l52ipEuUexWxTmn42)3nst@(f&uM$UY=+cX9Hxzs71?|G1&!ge} zo*qsjdl5)ftISXZabRpP^nM zHOzZlFKk2#cI&_Cjs{0OwH#OQ! zy4{3q0CU=|F71Az^OO5Lw1d|Ur~wDo;B^q@UE}0>{ZOcC+G*RUiW!0RSx=r|J>r?U zCE$ynZ@L+ChcBg$(T@%w`0w?)n1$@FV~HB^_MOuXGfM7EZa;hOKj>jySmc7ml*U}~G)Jufr zDB~!xV~GeZW$_YCp~~{E**4P`pdM;3KuwosML(2PmVyQB^{fS~7mBu|;=)o5DZ#ve zd)9EbA<6mYRh+!63u$teJ8R5v?>KBLncQTO%Sf}pwDyK2oeap;`>=NIO6ZJRSdue5 z{2}(F@7(ZQN^0pb>D>o2W*cBSzABd{s6bouwD5CCa}F5^g_{D9RA&FJ8c@T>+a1b* z41x&BdiL?l%ZujX`}?~bn|ihc7Mly8LJ{}s<;^ZfBpg=?dRo^t%zqH+Bgj6e@q}rT z;;;NOqCHXQd>JGny)mOIK`vXBP;zenjogO?-w`@|Xv!@M)Y786yQdEI;m*KJEQgI_ zj2jEFL=2Jbi~32lf!=GS{cg+L;a!AG%+IT&4YpdwJ?=NqTOn*JwNLOyGh_p6#Qnb( zpJQYa<&{Qxe@RBt-aCbaWCB9wf-cQ;teS(un02ICwEMwQ0%0?xX@%nnytv2&lZj4- zMIJTAIGJ-rbY_N*a|3~w4LI^K4Jr(8-lJYUQGcKWRtK7QCkT)7U?pC{?Z@n zLR`hC*4rUu?CLe^a)t4|ZA5nh;coP?ZXpF5!$StGfS9qZ7xZ>; z59Am$H-fh2*3&kxbM+H%2JVjB&EQKn13pZ3?%fADA05)}0-;ZHYkamwE^x+AcBk4= zmJ0beLtl7)ejf6x3vFvUXPctstnP{}w#9Q23y}_Ob2NMigng#j0O>xR3c5jBUNQ7r zfI)X_8=;6YBiIJ9w0xQ5WXp{i4y#7~>V=b#GE$=bDR2YXD7v&&bkn`735k>LM1l3M zRZ|nb|np?9y0|e#?ruTrMe( zhZY4a5d0UqPh2)sD5aX*XLr4{T8IKsrFR9XEA0_LtcXmvI78Ddk`RS=SaR8DHK0Sl zf28;k>`!;tOp+6+#IzPgPofa`En|XCV0-QMZkk{%)SjWXdxU`q?Pe|qK8DQSyP>wt z1S692>`=t1W@-A8NbwcZb|K3y2a19_2(4SIJ%N%7C5!oH6Ly`enFhNZ_OLy8)c?!ZF7 z_5J&I8~S(Ef{6u|Wwq;tCwl2iN_Im``EGCfbc4nr$zw6)52$ZyczX-g&BKtl#ivy{ z;8E~WbZKV+)F5t@q`Mk5n5fy3<_vew!&Xv~W;;iL6Kg4f?KXe|Amd1+hR*A=Digu0qy?Khhe6shf;#>#w|8f{$r7thv+Y=1^rr>_E2r`>B?2fpeGI1U5!ji3xe50vOUa|* zd_5pP+T4@bnlVW7)23cPjr{q2iy!f(Hr_s&g<2tGGw$y8ljW#Y7qs-PVd?cu_*}y^ zxfK^`&J2sGF{i0W!XOxdbk>3~7I#xh?_7TmRg9Co0KC=wIo%8&&saWYU#iHgBL968 zSN*W+Dc5p-1pm^sn8*pc5oTq|2Aw7&r27y>0WQKvv7~?H{WuvMW~`Ux;O<&2Oiizz?uYp$hBij?qY_sV z7LEinw>$@#4yUeCCoeV4q+?@h{>))Kq}fK{EMrL?tVVDxAnwUTdb-5Yyj(r?-Y-1-2Fg853=Bns^oVUIR?_mG@~%kR&)DZUZcGf4bKx2AgbB8_ zkWu;9Xcfp_u^5|9_n1_Aw^}l-<_8jdORb`!)^3$rL3T;FVHcmFPsl7Y0M}a&+u~5u zcjyG#Fm3Us}^hFZjogA1U;(`{o@qYAx8S7gIwcWCGFT)|&o*=;UBDW^qazweT)_JG;%C z@bn{ZX|bU-sH;=uZotdMo^)L?Fqd%yy8emgdebgoKQQ31;p$mLg{0jy%j=p2C3$T_#axWx+NcVl zY3JHxP@WVlBk3JipM=nE%DO(mrN;yzxxEWy)Mh)rzrX8s(*a;(G>xP`N)$Kq_8%t` zfznRBS-oPKhIj4D*Vos(0|F*OGNubZR}$Il=tfvO3()~+F+j=LYxG}2DKhRo*}SlSwZvA1Xh8oFYnr% zkR;H^r6iu$+{*&vDehjH#jbzTxM25<_!T=b4PyZKrE9Ea-1h(6`L}Q1s-5nn6Rh`iD+4bZkU*vx+I{b8a%CAF*zEpKDn=;MNVD?P+N9u zft{*61`ex>?G=|HP>v2_cVHujkL*F!J>K!Y; z^EqL#t4Q@ZBUwHaOsy7sQOOj&d!O7S@7gPo-}bID?xgv1!SeRG%+p@?r~zE?(oL4E zeWg9C9tU`1(}f*mLPAqI?Rjgf4j=}%P1TZX5%}>sH4{0m0wzk!hPKvCFW0&aTAH** z%w4^#ADTb2sH9tf;q~6Ffyx6@-E~bVwqX9QA&i<|&h8jC*+O1qc{=FWI*)VZTFQS~ zAji|DD)fql&^wnxO7tYycN+X=ZlDALTze>F&AiVo*DU?7Y4~jQwR*21(2O+KX!@!E z0((6kV#e8QZh4wuVJV=dPe!?EgW>yx6$B-e7Ly>N{g%FLa^}7QF za_YN6A&^?pyStgLuJ=N}7SpU4!!R6j+jPi zxNpa~QNvM`FHx`bs53&-FQ>nCQ(+QKiLN`D3l(V!HvJdw8=?U&t|S>@!6(v$*9i;X zuWmzk<*cg~%e79Tvzd9VdyRddM&@qZwcFA1rcH?U!l{E zlJg4`b@#Vm*(upGoU`1vl`2~gOBi6$XEu{SbED>zsjV$6Rb{%CGZfNbc#H0{`EwNs zf7`_(l#QhhtZ(xj+PD_=0lBn}MRj%K;%|YG>}H7HwaoF*AaWsj!_KhvOMW7~tG)y5!5ABEU z_6lrnWkFzw>DnO^dn}AY@sa!IZ;Y8mavIYW`f_GB(GJ2s1!QdBKah2=9IqMcP9D4Pd3!D^S~zQ;_bk zt(~aL~9_iSS{t;OnCsB8`W%cBP!v9UHXDn4UXmg{hci}Me9}-DskXaEWe!N zWZkzg)`GfAHBd4ca1*-QC|&%zpHC>l($1Lju2v$GqdnbO#wuhWdu>2#dp(pf<+Ui$V%q?z$4a{HsxS*#;oJtjYf6lPA+iqL>esJd zLFKUUX*^Q0Fozx!cLs78D+Jy4P=lR33unE6T9@T+8^PBdWn`?qaS}z;bljyWo0qPu z0z=_?QFW~uz^Q4I2Xgcjs=(8*)&ojgmg@ojW=>o96GsU$4cajH=>Gy_Gp(E338o4f zpZ7?dgl#}8dUv3~VHwljEz5fi>s+fbkT=@9&Val=DP$%;U)FRYn+(M`gaSM0boX)K z)h3tiu5F;&r3oLij<0ud$l?wP+Ly0o?Zu@YNWb>Z^#O{PD@Q9&n^#K65xmzec#rq;4K z-8f={P8z%>x8f;`I=IqveqWJA7ADocjDN-}Zaw&@;RQg1i><<-V3Z{;3#0sc6)Y28 zJ)|oDZOx6%aC-*QkYm~W%O*W!X6)TG2+e0^tW_?AzfgRx&Hh0vc^p9SyZrvH8_Q#4 zcD-GEI#UOd*iJe*TN`&c)L_Ty?FR$YMs?s`@S@mHwQW>5d-5drO5DRSew?Ohcjrm3 z0ZkHqs}oA0Kx}V#p0ZHFWiTsa{w|J5=@PyDTr!5Wbzcb{q?40{N9EU}<*I;H;ooAS z0a^h!knXfEGYdu}(H^~{*Vosj&J4Sa9u_arJu7(L-rhhh=f|C`?F%`Mgi7oMuiYoN zWL87U(4Cp)OG;-x$;;5z=%GkItQNHaP19{}+%N&(n}oQ1v#K9?lX7DLO;l>%O7=CP zHB?qk(A8wdrL6xLzU+*7WAARGPmJ=e4}eZ!#~fdRXav^bauulOp@yRj01gZSp{8>(1E%Mh$Ofrcp^Z zXMrQ5jM8$v)!`HK-_<5ss=UXL^~7mw%?;4UsAHQWV;yF6qH6)Jg;Xn;vS}E5o9T+0 z(i*vIQJ7}o?m6Lu>un0Ls#TfKPOTJBW2fBM!-P0v5p!WBAu~dzm^;yIeD(53;OT)9 zg841r3{np>BDd5Bbmn;PIQGq-8^_pf+I znRHSDY0W(-rSI;_egyDA!(Lbt6pF&EgfpxM?>;rFl5XF2v2X&xLsMQn2px9s3Z43^ zxXK#sEzvae!|rHW3QXizsNV01=^Y)6p^->F1Of!92~1+n%$BSvO2v|ClAuv{nWrr> zGtRAV()X-+t{ILR(Z6FsKo<3c^#xk(-M{?0c->eIj8d8&3ra#$_4U@NguX@u>Pmhk z!`ShmMR1DwK{aeGf;1()s+${rT4)+EC+pGby(+F+(Po_|^*@~08o>@X-ijsQIcaSc zj#5Z%^8EZvaST10H_#yt#uu`{yGcmq%icXxolkHjburf1Iw61_THWTVHyZci8 zI$cYGB94un7Wa=20pTL!MvgR&3SflnPOAK1{7u0E7j%$oBXib{eRB&+yUdN3tFwXb zI|i;RE=Y9MOX!=ikVxT_kp%iYdGz3^u;lw%di$xOo0kWZe9#{A>s!&8ef zCwC^j7W*P_XO}U7#Y>(7+jiO&0d{{gn!EQx4XzhD1aM&+G>y4LIiAxncOQhiE{zj` z&%IS?+M~K5Nz6k_RHkEXPd1=+A@;{sRoYDqasbRx6x6b-2^C6mvCHu9DlXQ@P>vxqm!ni4rIZ;{ zJVTBN$VG5YGmV#?UL9hA-fe~SVz;B1ks$kTrRzBj8?twB5}nNh#LSm zw~`awGk`YP$FlQKB_I*aEs&*uVL0J-r=jie`z6TFg>-T_-Eo1Y#Q`*Ku?WQA^Jwt0q@;8Ae4W$9x9JF(d)alfI7M1yfaX zuV8J)FF`yv5ORC-Z^X?m>dZh{N(h0_@g{?*v09x}JK5%T2CFnM zyChh=!$`fqk{t|TXtx7q`XE5?KwvnuGvg)GPy=i*iGg^S$O`qgeh#MAyLVFntC#it z`*;0U+rfhK69gHr1Fe1+PxPzAEN|WO`}@18>oSl3^C|@7&`ShJT7$3Yhm!C0iy(#6 zA78(IMbH2J?|u^MT!S=vubE@2H^D;jJ9tx>h zybyZBmMjEK>9kA=?^sivB{Q^v(!d9m&NtUiC3c|YcwIg>4jS`HXk=Oc90fzst>y#H zYXE9QUFu|%*jP<~oq?viGZ&F4!uxElIs_1g*_t7T2BgdIQb~izV8TVjE*zC#*18ti zH{}b2$62=ftvjVIn2t(rAP-39f(BpXHlIg%ls+M6AvIX@o*RABpybfq;sdW|Fr{ZU z4GkAv>iu>zmAZaKYKAri9MxJHh4Aqrv2lm;42d?k!~{z3DXEjW3_4sx6I+%l(8C6i z52m_%pVg+N@0NT%NN|Yo47DDlkM#~06%$mW&%y7$e*FrXz^2C1(8^5@w*=Bb^7#B21>8pN6$xt#x&*DtbP@ye8;x-&eXZ-^7(dl!mjTmJ z$j*HH%T2m>*bFC?yWd3y1ZM*GX7)KqpV=MKFidmf@f?~4nZ7#Ae3B6FZbn2#^YzXw z-X;m#n6Wp#^X5ifn%|nSPkKQatIeU45JJwhvtaN^x6j;zOEHEV3f&}8>LI^cUm!5t zTV13F0a}$ol@C&y%8)wf-WQ~k@X~v2c$&78wJL=G=4jH@<`#Bht${M=?{ZIy3R7=b z7>bMcWM5TKKCYyORk=HJ^qs&8Pa~jX0B7I7e@|JJO~%sQ2p~Q(CCiXWBQt~9vVj#x z@AA9(D}VX+?OTPf0gQi}yhQQ_kC>EO-pOt$!Bsmq^;O~a2KZ&JqUIL0ZmmFXff=~n zV@rBk{%iJm<|O2gO3LsvV&B*NUaY2Deh7BVX8MG%YByn_2HP0?LuT0GapmXDcyU%}2kZtY+#AGJf)~dTzo>||m+;^!8-(}mv#~ZRi zt+;l1p=7L7+ZC!8<8Yr}^DftX^W?~<$^pmzZu2##;dhCp(>_ac?j${7X8IX3%Il?} z5FJ2L{vD+}eVN)xHnG)&@hwMMFFdWzJ6>*5n z1(vb0<^)mLs`9#*2h4m2g@%&v-U)M?nUL4;KF`p;nObGN%9B)s=2i{rFHjBI)^!@!kg9R>oU0us@iM^h8+EKk)>Ns9rUbeX|)(jsWYpfPLialW>VJ8;p zkM8#1u7de9OKY(A6UkroiKy&@H|p+h^~SY8T*_+Iw$eCbW=;O><#K6m6_n{AGjp#! zHwaY1TV&1aqfo=N?yY-fXnk-mHLtX~hjx^i_ngT?nLips1bN3@`+6d3VVYZ=tYgt6 zIQO1mvwNn?Aq-7)fmrXl6f%=m*?Ps5yg}STYw6zKV&UPFJi=ZE_oW1zq4na@pz$vE z3|bA&Qn}us_7EV6qxzSe6p8cHs=8--hDcMTQ31O&{(kRop^Ie?%`BGkyK>pu+7?CY zC>)^a7JS^*&Fko{m!aQkcOVN@Yk#OrRloi1D*3zW{leHMN>4KMTVSK1qZp_ex+QH- z`5YF`Tr!_I2{G^9dnUeaG|fldq|`OH+#L8KTI{arnOS#WXY961%`4puS@zUT zuQy{UA|_dh@8IB@U?d$Y)KR)fAJ)@6%~8!^vqb^u56$*;Y4iOWo`}d9B}d%(&~NK4 z`P?QKW^#M@8bm`R(@m;MmfSXUIap&4j=019kz!{MlyGVW$ zMO??>SB#wv6U1I@Tqb{Ad#Vs5&^+&@*~wk6UtzjdQorMKTE zPO~w2CmJ=3$LhgycYc;k;6>i}-JN|X?eW*E7?soCre&~2N(<)h#!c!R{gD>$mx@AY z?qxO3--Ttt;xXYwK!cbHwBz!a8TQ%5Czuf!>yc7Ex#DJ~Dg)7=C}U{z zfIg$#^`(~ru%>CDL-t+!@P*mociF|9672axcFfxSn*h7vjq1IS8yxTcrV42pTfXS! za&d*iDTOGjMh4txgRO1U;zGsMAGBk3X{u;B{No@0(6ssf{rlV78v)v}Z9}&KU+~O% z#rWsX&(E)~uZ3g?U~1SWdfu69#AR#S+x(}oVCnTS)-4R#-Rm?NtEZwH`*hzL%Vcpc z6;`DUkPBMP&?m}4VtQ+IH)t1Y2cQ;GkIhedX~`O#9?B-)cxWlk+-|qo_UH{%c`UTV z(4mxL11=lV6Heb2?e2if06j$iiq?|MbffQep4~-s`!zz(gwM}UUA<(oIov&MW@=>I zsc_m2>sD#$m2dVusu3hJjiLae7jwwML)LR_GDY{BE$y|b(+JyORb+UDnrf0D+-)PH zG*V;3y_tH z##AqVN0TG0VH>&^W2Nrn&CLvP_2U=jUg>b$aT_Puqz>?oy+3 zn(KbIP<>izy;e8TJld5;o?1w2Qo&f<8}ePyEQY*1??rR85|{NZ`*`!`j(B!;nlVNC zM-+3}v~sDS0opys&`3eGLZaWx%Zo+~2HwA3MSGTv@7nqjK%58K-twIJ@2JuK+f}Ih zo@}mwLTTX277`jtsz%%>sfl8`J$C2MtH>#C(HFuLrVU7%q&FDG`dWNHrIvyo z>&{wT>G5ekz<;Tf&yXzPbVS#?kb}yUiHmcd$v1|-ZRTdVb|8gJ)YB|oS#_7oB~Pc3#7v9NcAa@tu_qhhzKAn$o@~MQ_xGWomUnJ!^ik0^%pKdB z)4EpCIsguxytV3FhS6&J%9f~?qPx{l?1*xPR3(t36B$}*FJrrx9qfXyypLCj&sGxa zc6tsakWQ;l+fkiWq(DeH#G|vG(L|EFC6(wyTW$feUZA0@lZLEo4sF&vdZsO%q4lIo z>DYalJT)nwX{3!TF)h7~E$}ntzmRo!_uY|>)FdqUv2U&|n%K~vrCcu5Pk_8<8Y%QH zlV$IXrfMv`RUK^-=S_7&$&0SrYaw{geUPTxA?K4{CNC0A`k~Ab)<0p!X%6ZJ>1onv zXR4o)&XQ##V|3Mu19pYTky*p!rFH!p);ZOJ<>g@dJ_u0_r7PTq?gs;zRX~feLKa2h&ozXpOtGKe z&YD}UI(p#g>4{`jJ@vUUYf>8D-`}Oa(uxLc6DIc=MG>%!J$juvJ2pl*rQ{t{*p&3H zM{R$c6HHAjMfzuysUK$KQsBs4t3z*==83&D@F5Gn3v5*L9U(;s9BgZTaIjHonB?xPupPzf@J>FwRH5BF{XEyj| zWoF!;KY#AU;IN*ciKLbE$4ZZ8FD0rz7a!R5@R3oa&3d`y2voH?U|Xj)lhlds7pOy* zO>?%yLyD_>+aC1GTuA6BIA98vNo)nKYB14*Bn%D%= z3k_U0g?bv-+>Oiur4esn3BxJ2K}fF#p?%7aA3s_e)diuu+>%~_ZXl8rwzNH_m3;vd zup^J<_uMN_iY0#zj~y2&|17Xp@qVS~X!09#e!(pm5REOvopYJqq>azn4XMi1`qE3p z(rdkLv-p?q>CLsCiTSYVGE7q=`J@XAdI0r|%;(6U3^}g+l394YnwQj-ypE7H1`3|K zj?`rJ{t)gGn^0@_*usV`=b1Z@NZU$RYVcoPURF{}+93i>JCFePluri2M4Ckv8eW=v zIDRrOu;yE82gRlNsV_L>{=cu%dqQeF^?m&@p*0&2UO8p#BCNo4AE)W3Zh)eji0M6= zP-v`qy9SzOHw?>rlnu>P)aoPEi|M-k{46Q?#M{A8adTm+4pAegUsjO#(4A>0g5sIB zjjMxV-x!lckuqnUwtr>wiwm(XoP|4OOO&nY9&PKFnB{>`nvib`$ktCF)p-JmaHMX#N-=)Kj; zoJp7lZ~nLn?87|W(VGN@JhJ@d+qZAM${OIT6(>ZMlmrj)PE(8wJx>48);amIl>%6G zhPiO25RpD{K?hoXrP0&L0U*MMuV28X%eN@jX?Ky`~Pg02j{v{0C(@=00y+JnlC4VLG|{H#Q zSqmW(%qd6@yR z>AypsXP$ch?oq&|-gP_k%#|F~qmgH%&)2vvSveZU$!ES?F6M+f>s#3UD8AzB>ucd} z^<_GNQhZwf^I|fR29FLI`YoHf=Iv5E>rA`qbb=o02wjeZqbI(F7l?0j+u-p z1>L$oOhGq8a_QH4`}XLzvE?w=r;VgOq?ag@q~x~%_Zw>l5(3iT(?Mq}uNYq@1w=He zTCm1~^)B$UX!Cm3^}Ethv?8n33k|X$4SSx)wyGy0SCQrV7x&tA5Hn3HkzC`bE~8emXrm0r3-hplI=Mk#1Cj+RZzxkhTS8-#(5Q3gT~ zySdesIDlpYVpY7K2-Ud*HSD95#Vvd06lt9!oJ4aYh}BmTZBAZjCBkBalj}h9oC0Lp zU1gNU;`+onETe*Z-SmO^Le(lIt{R6gU%o`D+PMX4v&A_;!P6lt9BMaoSF2;AQ|77j z?8u7ZNdAQ1QX%y?wNX-H8B;-fG=+Q!v>8H0~SE~tjsxbpg(tw*epdT1pZ@X)A z6D=rg=xB03CQr&A6H?v^tyALqw%DJZo_gmYnr$!c&XABr12<`@emQ|!$uBQ2)KU9d+L)<9Si=<{@cm#ppL5r?@%ZKnt@90=o7nmBM{*v!&KxWd!GFJFPV*zVdp)T$Z%S@3+ zr1R_E^mmkFpIEfC$);IKf8syj22b8E(lSrdHnABp87pgRhRL;EE_Zzd8Z{eT@9*!V zFm#X7Kpaf%l#g!`AKd2DubUIcrZOY*+YCSnJU8vSV~>7(e7IhF&M;CqEM+3w{%&7j zT#PN@trA|vqfA%Ov|j#Jnv$jPsK&XrHd7S}9;+cI*oWB@54{Vx^n@%h%vYz!a#X8z zr7RPjnbtSm#I%BQ1W9`6#{B7$WWqn(AnN3#A-vT zL(hmtdU|@AtORK5=~A+>j`~VazRs+N;@;@<8*C|OHTnT_C+Cs1gleEx-O#l2IH`wI zN%`o^J2H`_C30is%a<=7A0LmCLk$DN5Wqpl25l?6(DOaMcEE?_?lIZcB6|}}TIIBB zw&eSzpe26({F#=vtZgT(l!>#k*mCYFZLktvtNRyY6j63Z0%l~gX zR)4TF9^G0XtOamp^O&`uqf|go*6PlmHOSk$xn#=D%mu8UOK)h~)!<7fL_%fA;pCUR zeQd?8-LV@C`R7$oL#!otNAfpqUc)-X9zduQeneE5Nnum(ciBgU#d8f7=W0;~0?R{c zZq8Oz=&O)5gMZR07G69Y!L?xS)8BgCQpyjQs>8}EcMphJX;mKGqhQ;1@pyO6d%jH$ z#k+&bG&g%~1erIe$xp2Hku7F$qUP2i{xq&HPEkokRms`3_BBt4UC%#Ty4}M9(eyF2 zZV3}i)@eXU5LP^jEqJXeV1jjz(gztMYH^EV_hq$ex4ZiHP2T2GBj7&NGWaw7QnCCE z#BXL5p94_C0&n3U1hAo>Z;~QkU=#yw#|@n>vMHeGa9tTmXhYctPh%~((ROo-ErG7m zHWZ!^?QTP+tbPums(;wKaJ*%t-380HU2ZZhF-d7FLqZN_L}d)hCgEl1P3%e=2LJl& zuc>lxRa;=YdrM;zC5gt@YFVy}uP7~DJ;Fo5-Wp*kO>MDsMqfnAvup^FQALu@jTRTl zg8nnQ7zNFgd$gMTe_dr%$d~xlX%aDrGy*5J7CWE7!#eHc@(>_;m-1WO~#7e7u3R5!W!GVWnXKf zBy+BwvNb=5=y|nphL(fgCR~lw7M#h=e&m8UUX&Ug;aG@Y0-5Dnj24Rlf;0B zg27z|m2x%W)?Vopg_AuEbpxF8n{7DAub^|Dq{%h z!=FEY0wvS_wSIRRVnjw}=BdaK*Iv97n%3OVNm!gQ7+P_Zjitp|5mIO^XtN&b#^8pP z=j%=|AAa5a{wJHwZcVWG0@S|qew85ugE8MSncBrPhsK6@kZuzR+K#hBPT1cP)9MhtWb1eqkP^F2FzF^^2<9aANraE*<@H_`S)@5t2d9Vnd{#C%%%g4ZK+ zmAL-HR^Nvl-h#^SveeLNISny+51FlQYy^>$)fr30mFj$%C_x&hTHG3TodW3(bZ8=B z`8K+_hfOP#X>niV2*rx%jcde;I> z0(2)hnc+0QQ_a4>0k2GpZbHNeZMgP!`#cO6~`j`H?u+JLyZHLqY7(1fuG zt@WEJiYGThiwIAjaUQ!QqsBAj42HyAE14>%vFey)wA8I7Q)y^zcenFV3yjvk%`Ns$ z#SmJ+RjW8@Y4K@mbHyL9Gsb_VERMbv5wqGJHyP^HZFH3!?4i4I&v@IrLkgWp6yX$D zftY5GqoctHG!EskDTA+Baqe)C+ndap4Ag0Y`_K2gw&aV^4MRrzVf9+^`T zZXypoICQ*S^}@curh`YPwF9`U!CA06epy}0?ahgcke8=t*GU#{*Qk-y(2)^YNuOEo z<{_h?CA~XYO1&=;5{YI84P~`X_(5-8Gn~FpAX8d^6E<|`9xg6)%lZ8Le0zKA#q1zZ z-lltOZ`4F@pXOaqq1QhXu&aq54}AxK^8eg~U!53Ba~ZE@+| zu$8-tG&lAKXM8wS6}^y_dYMxRh|N@#FcAR9q~h~ij~HU}AIH+LGiixZohzda*1Y^T z^)+gKTNVsdJNgigr}?2#PgG49d(_RXfTgO5y^_$rXXtr*=L04PT|pi})0tXzGL|vl zfh2d*p}&pc7{{wCH(chVV$s}&g}_^DorF?|v~;)C52w!YVS&%NH;4th1^6cxRNUh{ z@3QlaG{d3YbCHd^o_PX&&k=84??P{ceQlHt&{etX83QD+NV-}bgKe|vM5%kr5c1Zr z6g}mtW{mg8yL*8R-9zmA6DAdsdTn@lkIcYD%7}(VlR3Yf<%qHBne#Y_-5s1F7SbV)Bfm7meYgnSkmk^GA&&Wa}nu_av>0M}@-oUb8YZ>$QBlAVY4HRG+ZI(hAk(ZloT(wKSuU-eF5@1ec`0 zh42BB14Hr9`ihB)5yeYnG_-#4!X8|EYkcGZX((P_U+?Pi=-8qgPxDmg43$bO7;Q3u;C}sg`#+%{E+7(-M*V z;AA?`;4cN*u-bKg`EuZHgy43M1%XC^0}{gli^N}T5{^74OFJ(w?Sqr1;(Pb9X@Ya! z+$wxq8k|F*a=sicE88Kja;UsZhqzmuKr$0u^WVxzX68`)3HLk%3TcMF{)U1SKY{8e z46K8~;T}&gh>{hdM+RTk04~l$T$O96>pkshtG{J>LQX6-wN2&GSaJTygx}Jx zYjMW3kaG*ssosKFTMG*kv+gd(P1ELeP~JXSb7BHP0kIxYhHg(6a#gs;Tr&+~z76ap zwh8G&u1Gu;1zUf1jQMKHTe1>5I&`rojtrd^OhJn?2thM@cPMQQ23m`YL)xD9hWdcbkc%$V!FOui*DUiFMJzV+6+FBiqwDhX+Eh}2dg2+{9^APvwt z{oNkcRE?$t(@n!`*Pw12Zh~hfs6EFBADwRXZcWx*pVoHZQafF*V8ZDVwEjd7Gr=f#pvID)w7!Nr zpbxvt5T|dwiG+jS>(yecMmR9!B!Jq2`vJw$05lW>g7V-6VVr?OkzE2ZG9PIIm0R`c z(DhC%=l*$Q?FTq%UE6fdV1l3_Xi~GnIsX~kMR{&AI78C2H;@lnvgRPD-5)pbd4 zaWN+8Z-zuIx(#kG&2;0P+L|FZq__DFu{FM#+7R7Hrq1JPT)zc+8>JRMkM{ih%&GKT zpr5n>I^yajDx!)y;y9V@1O3V{T-l1pP3>Z+k)q)&6H^+y*Xr>m)MA~eo!Ckd(hc5qf#{u+ekM#g+krqx;=$< z1|%uXH9_wYwkS=2uV263wXl2hEU2Ja1B@_%?vAg391{?EC*rM|$D~z{4$ON3R4q-r z4Zt$}+a&=>&)+1?q~P??72#9k3{?RHL}f-1jhhm$Avw%c_Rx~30{~fb%V_gS zTK_gT77KsDWJGE802y;+UBvr+WT6Xl{V|VC0X2giSYYHF*)r>bL6oG;%n$*0-!V*$ zrz&L!aTRbFtpGsQ?kWqsP<%g^SW<9~^Qp5Hj*^Qt=J4XVnNG?EHFUOaj$0S?(05=? zox}BDKsGfs?i!a|jug529RrNNY4-_kLfLF&ZFJ{=tIjb6-0ERH%YOH_K(?kk6=(te z?JDazQNWZ#x&o8h!w&Q>C5aAavmo@+o2J3n@_jaVzg7$SGLWJ@mKx|U(ZrECw1pmAW&gNAKYrwAi|K-2$1gD`OAyQ zcFqIq%J3PmPF_3Aw}!W=_bl1S-Okc9XPO^WgZ8Q_lF_KiLb;HG1`;`Z~S4$(=VyXoFF`_ha~ zdQG@r@9#2ch@GH{SAvaFn&x9oTG)Xx{tvp! z+)uz1&vfF3q@~M@9I~a*_8lT@vtwha8r!l zW5BuX^3}Fd>|xG5#3I$`QTxfLYCK6yUa1*cx?db+x)Oj-n^Pa?&YN2|GiZ(hqv;cs z#;{qBAv+p@nqATxEfdJy?Y7hju|b!pG7RR^2MAqpd;fPiU;HC{gsT*3uRLZPpNS%&#(tlei63E(!~i1t$& zj^mSzGG^Q)gr-LDHm-+9paDoa!+1Lu9(32vXWt?CjoIG?aF@E4w_r`nqfktuxHKRK zQtxC2=+0f%$BZRKAoi)FNW7^!#l)JY?=NRd_z+X^FWt9BeUW9BeH5ZI}I!od!n zCT_sex*q&N+f9wkv`c84Jl5{sef+dP204Q@gG~g(Z9`+w7ycHgqH;!+1!pxpans%= z1%`M>fUS#%%3%tt_H}p+aX*%I6k(9;J*^p+hbFLjf|>*uOX<=npU-5dG4eW3n)5}2 z7hZH#K0ix7|3uz99>K1fATS|%Qlazj4rxg5j_+}E$4T>5XY?)U_7(P()+2zV(~G<* zuAd;Cjmmw~X0J4(WB|Kxfg7gF6YZ^FDLTgla|_ERp-)=ry=&aq<4odAoot=87u4D0 zS6MyA17@njRQeaP?DF1OAt514*@vfj(%NEjL-L=Ok#WxRspD%OrD;*u&?!9g$H#|u z<<>X%eWI=nK^lK^OIRb|$tL>c%NL$~jk{vc%R@80ztxR_KApy1%9QrtNh)+}Vv&;484q_F>L7DQa_28EFTE=3h_kLqcr6&iH1e_3b$NFv)wDILwxnLfXWy}+ zS&(i__ni7c_2^jM7y1F$0FWKWEgjO(qH#2iE_IZ4t^f!@_r6_Y=6uhq$Hau_jd;~| z&-J347!#A*-rF0j@X<{6M1T|=E#30zeIqMsy)If>hg1-Z{h_<*O)jjfLGryvs}f8W zPykawYdzm>D?upR-7rEjLi``LnskjomrE`7f|_kq(eCy_)&}mPo?ZW4B!yFoP9qGa zW(){rm?6&4JjaKZNM#L$2MS-1E~K^Nj=&_FkZ&SoTggf>dm7{4ElB5c;Gu~8=apv* zfmk5gjPSq^HDsMpblo#Kv#6$wwT3d}d7=7($q@ovvP9jAPO5T| zT0-=a?(qBf?;wD-SoAkZwP(sYr?tYz#|IG*2(+I%ebtd|jH6Hk|5Ew9k+PnX>Rg+%VOjz99<2vQZc~?! zZox7vWM0Ue!iHORmvZ^WG#@gy%*}-OIjWOJ7Q8rmV`Y9QoeSx2ysVN{$tvrGfk>^o zTU1zXjMmS9gL^{?t%M5knXnqI1~ig7n>R?}3K_@AU0m{at9L|Gs>~gtR9QPNNCD$( zuC=8#RI2xMO@z4t^11H%8%A(o*6URrdOE-|)R)0B@2x-yRJtu&HmFBHQ*|pX4&-Bu z5(-loL%0!^ojl$kJb=~m=aQCKi3#U^0wx)tl7`5%-kK(Vm(o5YBxG?hOG)MTiETe8 zN{zRBAo}mB0kt`4Q1pYV$9g7t+r6b^fZnzCbpL<<```5-`r$wR@elT`r7&qS>WP4j zovgt@v!#F(*k{1bma5W>x?C6WA?-X3aOxSK=5xKgPMMFya#paqjN%sCPY7jp$gEbHudf59#E6$6NLWH%S8cWc5X2_^|+o z+B4Md`ba}!=AGSz@*MaD^dMu44ME>PNoX#5)kj zrpQ1n1X)5d>&r+qw1cS@ZH>R}{?>}*yN$LUDqn>`x4#6`?B2+({q;`Q3fcK7W(|$IV@>Y&S?UgHr8I(Md7EL zP>2m3^5Jlbr>7@(P|?40He>x3PYFwFDKU--&LQB)ka~pNf98xPQd%_} z)xmT0*fb-MMu_BGm+xFqBCzAoPHoiH*^>0eGsX2#lyYzQWsca|nyF+t6*?Ql8P3$N{SbnGNIFmcjgwprdVB6M z@qoO(zD`>OB#ln9Ss}BNp-&gK<_dO~q`;uij<|dvawc&=LaN$?t7b4O{r!DQXQsPzp_ciBUWCn!v+0z?Nek*pYT^BNbEA?x8H4*?!)ux( zRtE(g=1Oa6KaQ@qj({G3lUn^`Qf2Fwz8O7366lb|ZaT?#6Lu@qrf&oHk`~gL2mIGn znuIIBsh1Rh0_Hgyi*f99yTFbq!ccX&qv zVdqjt?bokg*>|OzX0|aUF9XK$LW|@Ol0| z^;;-KjCW}8^E(Z!tT9IB#Tx;o30`T9u*ZQplT>a{?hK6W=N>4cwiXU*U+FIguN1XVpyUH)rPLyqbe< zIp~V07%DZR;I9B+Is~Eq z%!N!CPb&-PkhGPOfGDng-l(Qev9Be?m|EApza>T5Z-Fun|D?C~i_@HGETA*+uY*`! z!6_h+W`R&8!vzWYrrWlO%O2+zd;zE}X~RwU6=2r(?uTZZ93i0MRqKZ6p-%rP?S*rA ze{?Dr3EurO3n~1%&8CwL!RO~^OrN3GgqGC5kAS8%H}>LbP7Yhed@e#lE^^zPsR7|j zCKvStV6=8VASVD^{V~DMp|M6)NfUa5%&5Iooa;TQq-$=3=<_p?A4DjL#aN`HE1w4z zxrhMlrlCQI1t^?HGoC0ziOS4`BjD553=CHEF`|)`S7? z4R%r$Shy&T>%Ow0d0uHnZM8CQCM!c)0N44XRJJzPKwWEN9w`k7KnW$9 z^e`P>IyJdD0Dg+&L#~)P9>yT~ssXVp%#GdM%xJ-d!NdPiLoyC+tF|4h zprzAz5fcz|N)$2r?-nW=P@Bo8K^vdmsvL5en_C59$S&fyKzhsM*A2m9g_@rL)fy2d z(t_AioFIQVeb{Xp$V>A@haP807WjjjFL-J)&S%WY zp`#i}0)TICZ%qs~Gw5~hgw zwy>eaubYOEy3OLS=%_7AcS(1ZA-xNLsYRMe`+6M9YMbpR#ECbq+0o3V zSWPu)4rl*Lj%xJBnY%DWOKS3H((7%4%FIG-oH|BMAOgx!l;P|HrXMeM6tZB zZJ}tuweA3w%*RP@GAj7kFhH)!ojJ#NN@JjTcw{>6MbLPH5N|Z?k(aP5(LiaNTVy^) zY)G{IIhjQUS#%RyP^d=H@ZKd|HR)$M!}($1_EbWH3ud|$%XRN_VcONn=uZQp2ifj{ zpX_sjsf{{An)zFa&Zi)2k%lwa@aBP`9Qz!pKp0N=)fy<4yzHxBb3V`;1P9+tk?M*N z_0lgAv;4oWvZ_J`26AC_x>Yd(EiI&bBPN}q7DRE#ymqN3YZ+20HsapiSuNK_CwYB+ z{rU4JSr>&J1;PI204asamItAS1D~V}r<9KBk&nU*e$K?pZN?oBhor=(r>E``+EVBx z`o~q8k*qP$pn!|twUVRwXl;Q(sZj4bnIH9McCZ-6p#`hKS;@-$!NBD; zohjp;txh(9186bRCJ13V0)uH)OLs>jJuOBoGao`;*whssTsS*~UVRm5Y0ikSjn?|Mm4XwDBQ?$vMQAzlMOOne)MM7jj3| zy9W&Z-t#+cg-(E}xx(#fdV8K{8qSzutrcw|SD=@71tvNa7hzb(8b|HX6(+fCioPUdQIA5D>5KLc82+|PS!|^U>d=<(tD> zha#F=U*O&^LuNcbmWlsxAl=1=(p;gyhnjwJH7Nj;PSXxMsvx5h+ZEpd@(21&O}HzA zXjpxz;kS50gWWAR^CU)b%;DahW+U~9f4j;y7p2mZ+2YJ5{Nh#d0m@Li`v|=+Q)4Xs ziJ@VA4R9@Qs%ba;`1mk&X_Is_$apsxMIc;vFCl&M+i$YT2D=Dx zj6#i%a>Ojdm(DaNKD4kG&dI!EGuRBtB29)|ZuisCBfPx4Y=ii3tab5oTJUZx=W-Je z|B9Ida7IEU?6a(HQXS!zYW|#5Zy1gO2f$6-Er2#@20o#L4I9^JU2}`#vK_e3hRwV5 zUz~aF7G-4`+GtkuAfm;d2h_Tjw5O0JVMY&QUb7FD0Kto>bZ+%PfSNh%?Lq0kGWj<1 zTK5tvJ>liiAONlv2Fbc0@Ai6LcMIUf0x7R!GAln@04Xhx(9)f^#`AWM!W$I|xk4dL z47INnx>=-OrVAT~R)>4SHn-Trs_t<-GeZ}h{8Ya?pIs(NWQ!J}qu67R^9*A&Ebc zj9jOXfnhEhfNv8ZvVE*kFJcDj)`TI*o!PChTjnqz+&O_NrE`E712YQYmVw`Pwqs~-zcTh%0j^c@qk@=SZ(p_akN$A=a$oeJ_dj26g; zo$>Bs_gdR@C{$Z)S9&ApJ6JRHx@Ba@P_qT8uR#?*R5f!5(KevXL(|wj-A3sIaw0Z1 zrc?8s4$zxXNNg$6hlJqL2amNpR)Ei>tL@t}q^{_h0~T1Nq|=WNd#T@P&(z#vGcB3c z|A<0A9R*Bbl3>E7xo>99O08ix^x$7hbEEI&S8k-`%sW4?OXQq|XG0&T&gc*5p+P<1 zKhn3^1PwUyFCMSqLQqKKdjGx&nS%(!PU$Y*g)vP^9RZ#=>V77EDYpKl*zIRJ*uX`} z@bd7w5V+-|b~zky`%_ivKASD1?8jAJUtfDSENeXD0-jEUH>zr^;ZABt0o0mKY91dx zl+Qy?WXS1d_DHwLVa}9L>{VSsb*cji@Es3T(xBzg|EO*d?T7VdoeG`mbIo>0*2zK& z`=L%J)UQU9Un?}tI0ig=d3jlUVw;R?)URZErMKs90AmFzb4&tBi)2PeX(9(fQ+LFM zs61N&98XE+Pv&CpNWq>>l*ANvq&FtB@(<)aN6X_^?A0+;y z9yr{(CZ|h7?kVk^5h&a|Z=n>PWtmv&XB^^+(5S|(hq0{p5O9! zT07j^$%~_QV%=P<1x(n`%5W#AIqwACDNA9etBO0q_-Xy?i0Rs;%OP*{(cCIBc}b|G z^CQU`nr2-upas)!BUa$76mnI1*D^Rb-8^7Xh#cD{>EHxl+FWb;$d`G9iq}K$_?qpQ zh-ug+-GbM6eKHbU1v%041YWTwT%F^ zyDg|DY>MC)$4a!uw!o$bG9SWg2!&w*2SwU0Rx)T>2^Oq(Bz3IWDDxuC*n%UB%muVF z?o&S1`P`$bJ(4yt8(&)Qh1?SuscbPr1}8Og+)Pj6=a~Mf$wG5(Qfxw|3A2K1VrGkG zFJ%HU!mvswgUgR>**AX%^3p2Q=2mE*(YF&a@}?bi`WrOEdeN9P&SLW#1bn1U)&QJ= zFjqpQ34MNQ8Um&eVT$(|r)vh1wlpWrhMrNaY-*7A0e5nTdgPCfkIUtPK~jSzG&M~9 z&B1*PTq-TvHBd(}`vX zsHo+ekkjCeGLs(=QVYIt6}>ww87yIvsr61*dV}PJ0c1m5Py#&BUC_{hZW7RTagCvK z>O#F%fdfu4bB?O4zJ2?4rsrV^EeLx#U!Yr(eIOymuKUls4MW7AA#00!2A6!9I-nu` z8oU>}>fmlYY##}eDQxfa@Q&OD0pHS&5Xi{ntnwWNC@r-BnpInr)K z7%`8KwG9S<028Pgl_M~~Y|JOyLcokq(rcB~GnuWQ4*^w^Ns*RHxOTW(pZg$^Vrpq3 zDy};=06_Dq_5fL>tsER~z>ugV;-Cj&`TMJTV)~~<*daTh%kJ7Ef;je?f-xD9Da^dc8-8bjy z=?S~AH^%|)JQ;R+?=LSek2%hCY;g1D&8`cd3wAtJ88V55f##qJCIY+;K{hGQH`UHs0%UsL9x1)4=W=%zE z@tSMr9Q~x`(U2aNLhGU}72Y%OAL|`N#tDP^3FHQkHe)p#_4=@m0IUth^x||^p>sxQBwlDY3>jk;M_cOAGek$V)^Lbm+)F1< z+PKLX%37o>XI$o?de0c=INA@Wokl<>NiCzTy_c0UWF>UQ{Y#PPqfViw(#ZVw+ixXnoKCX(ZL8R=&WEkGX?s_s zX+h9HIbF%vOC0t%LIg`&D$X-?RkW8i#UcFxK!m5Y^MgLc*_t3_>5^e{*PQ?W@nzkN z+k9JTho&7Rk(d^8S7ZWxetxDqj?^QqOIWSlA}xo6ts*d@3aN5T35w|}{X^MiZ+%St zlmbT=H?`kKN1eqh+f7}*slQ5z__uwFP975PU@eo;Aqyd%wCzf`kWq)0jO;+lzKr> zLKdN^6^}*wxvwFP1&j%y|Muo9J*JS^V3GRJdDcy*xfvCsI<099-6YrT4qz3;ec-wzsl}uX3E4nc z<1HF8Ff}Pjt;(+V+Gp;Q8h*U3%X=>|b)62tVZ z-rPKtyNWv#HtlJS=CM*DZJ8gs?FkBs{JXTxx4EAEL-#KNr6M+f_Jg6DL;M`h0dmrT z7Xh{y9KOlGra4cvXW_T0?_i1v8)nwJ&8@dmlN8PPYz)4%?k+LB!2A3CdFsUiO$%9D ztYz}zFh~iSW@iTC2{-+;5U!~(Yk;PlzyYtXuM_gNXhZJzCQDVzh*W08xeJ&ZadcO(ozZF>hB&>TG1z9RU0jL%)cz_odb0UF%EU6&)I9!cRd zIugW~Gzqb{wkPZ#KrX5*v4!Xcz?X?>nJxxr(rzl*fA&bb9U-6*q=_x(*L!i;DY!&K zLN-M-t`>E7-QiR8rV+?S%8*3ebvLm2ZThw@fqCyn+aO2i9A~SgC{l9+?lUfu5xP`m zrALSI;9PZ{Ue2d-q`~J*9|sJpm0$~OM;yWsUXz3?a1g-q0P=>;Je1+lIs|?P`UZ9e zNvrvVeR~0@RU!EElmJ9zDP(Q@2ztA_S{vZM98E*n$+n~DAZ^FSsUZ2Pa6o4Ew%5a& zNPA0xI*nJE$HjDe1fb}7=THxw9I2~1ga^wuCUXSWZmC-Pkje62SMf#`Xj-{VY-7=! z;-{a?ZeOE?3?E`lhU2=C;64F;+DWE05dI;W5SNeYOQteLsuw7xO zy>(q6A-OOd<-cG?ZsBda4t&bDf$QX&R&ItJ!TDTHt>Bi(AamvyT;4VyQ!5A?$srt{ z&_YB3-_0lYzo zeN%7e%a<=?#nP$_0F-tL)lOX!-GTr3#C62lwu34n`9*|Qn|(7QNE zr@3-(g|%~Z{OIH3LmNjFRitA=CJ2!#**~T(WrGF+(~?iks+X4+CvlMOfwSiplblfh zQbtPXE^xGvkQ#(eAXI$IMx`W>#lBM6N-w*Mv`ROqpPIzI<}tTt+atYO|DE!or)tO5 zlo{`%)#I4bc(?+zap(*g2Qy#N1b~=vj()w$&=>N*EpG=0+_qz2DYk(>p&OcTP??5( z8M1+6BSm(1rV%5R>Kv7xW+8r}O~tAQVi5`t>)a8iA!1n1udlD$Lpg+opgJzOd6*iA zy%59Ee`U&(h?nNh&)EB;I*zz0+{dVl=_V++@@U*e^t94u54OA6%rCsgJ^Big@D-DUvCoI zTx!G9v(7nUayO1{@VIt$#|H^O?f>`2nNo%Q7DGbjum8I$9*#+}CnjHoENGf+IHqy3 z-GwZ?T>`}#TZ+V`JqkHfu=R%^8=Tv>dt5B{JTn!D8d2PG! zxfL>*fEYh9AR%K#n>dYhg7~6WsHefN#C00gYbaz$LRQ<3$$*Qp~=5`7-M2y_Z_TZm;L&^-ciM8dzH-O=#9L2D$T_CE8v#)eG}NjEc5Mi@Q*Vd$!nazJ2@l;6p$nH!foAnjsrV%I}yF zd|jA67O_;I{OCoEq12J>azvDbB(Gfp$m~P3$6i)@VAh-GXqQe4y_+#4sS&O}jX-A$ zS*)wZ9w#G%4k57QI*kRo@uS!SPN=D~NIWEDccBHRl^a$N>)m>f@@LXiW5o8d<5uhcB;n4N|6u=xlyB!dDwVDOLZ>I8&&9)zMjYMd=pTRlA!9Dh zHtPK?tRFaaOWhR}US9I)Q8$`&?}BYc1N}}8-Lx|U@zAkh%lAuKoEgwEB~){+O9g0i zE!66zKHd0v$>PzS#OgllQRxBAI@(S2B1$KFUO8-fULG808xlha%COoe(hD-}I%bT& zAM-hm#?jVMEpwbnwrn`d35E?hlQEKoM`2}h%ks2EAid`4q-@4UM{b-WCeuoTQ#q_XAoxT=HWL{QcWd|b9T@#ceP8O* z%yU{Cw9H4^6l|Z7fh$XH#e}PC{c3#lT-%3M$W5ak_IeRi%>gOy!fvpu3W+?R3_-?x zVj+pOhWg@dgmwg!gYmcixLhtY2&*vXi?VC2$KQYd9i^?86`eXmLh`~I*J5G4+Z+m( zrLp>lv_7J18cC{r_#4q72n6&uP8K$vb(FiNLL&>wFNa#aHR!bp$5SgwUmr$6Xh=x8 zNY`l*{rve;#)FovjCsO`Y4gyK$?~AeNRvrZs<}1Ujd>8V87kqX$U_2)gsh4++B{^5u)3bTXRu>s7XQXhG9bUeAq16N$dyQf0b_we4w|W3+IG zkdRc!SvbeD032&^Nx#(=xz&xyZW(f4LqbA^oXN<-C^vG<4@-i)i^95g=>$ualr+#x zpfn$H;u{~zu+%3G8$fnRimtx!{{GI5Nw~>)cOfBp`Ri3!=9q2z?}D{Z4=axdsKKZ$ zg?=E`;gA!EtcSZ(4m52VI8`Vzi3mALfeumW6FH>ORpwN3IQg21GbU7uO>@FEP${kE zmSRKj%a<>^80chc^Y;d=dB{zpMkW+y$dJglIa8r1+3V=Zdc0hciyx;THzXuvOCjz{ zQD<`vEkIC8(Js_`2-Y=O)y(Q1Y`tm7kpP!$! zhJk+#^J^O-Hf+ANGqW=9sJY^j+n1W^!AXwuj=1({V_VDQ-DR{xjv~|qVV{|j;{+)K zTN(*;Xkn-5EoIWtKmPbbLn;qbU!zG#H0KIg%D?*f_yEp0t8EN-ff1q*-aBpnz@(fJ zMznGf1;A%_I8HL8*#{vat zu3|2sFJHd&dVn5G`Zbf;LEC6*RAU~7%$$e7YFfGHvyio9-rwIzsE>C|RRLt zVS$B&tggAVqsxHETc||UK~mQpsygbaCS*Y9E$L%X(p)R9h?&9&Hb%j?2t z=f+r$xMFm!>R)ME5<`xK9Fi9Z4K-0UTUaLBtWW~2biKqAYp%dI{ksp5o1mplWfP?7 zLto<%tVYc(K~?|aHwGbWNJbzE$VBzrivz3RG(i*~Lj6k!F!GhKHvjnJ59%(ZuIX)} zzwxn`x(aAr+V+9$+M!NL@T1#6)oj!^$(x&Sb^RQKPFK_!$exar-jEQs11*Qm{LKfE z7|M{4b%k9#k62N|NcrS8cSWlv=~Ed!6hVx_)bLujXT>JYDHCw}__^7X(ccxi(}m4djHfqO zaP8&g#pFTmT^JJ5yHdbP2#{pvAweUcw{s+^!Cv3BULMmHr5k{iBot|Dyl7p8UPcVK ztj)V=kNS?8L->QZ@8quH*lF&Q?nGd?N&;33c}#)IFzxlxRgYm#OtF5yeft)p5E8Pl zm7{H5TmCLd>Ck7Cm=}B#$4`H>JZEWP@Fu+0HEz|}`@86R%uro@OE)9sM5iKygcN^a zCAUXc!4KK^c|$_VjY25|J8Yy{q=~E43c0+?+&$8Dn*rk77=ZX9>YWZDO~BkClctSk zz)w8_4y-{)xcBUInF*xuhodh113=_w+dxnr()=#DsWxcU_e}BgY z?Y;VX*Zutb#K6^cc{TC0 zN9d22mlr%D*YUw}sA-wsL-j+Qf%Vl2vmI+R^a$F>FvB2SB~w*jwy${Z*$!ERS<)cs z?|u9F4qY|%wXa{l_CjEp>ry6+?FWuVvamEZCPeRVxuWhzSJzP#W{XclGf>(aYh=N( z(nWR8ER7)=%FvT>^n4bSR3g3ux$O=#nx+G3)l0=lmK=?e&ybL{m$aJ{ z+2Ta7kQK#6ZYKa=jXKe zaWmnGc);!74$SUsc(N>Atg&AEDxy{H^A!@Z%_<{}VyG%pb5a@=E+oD{L*!nSg>?vJ z67-b%TiV##>G!Jut1a~i+@W*gWRG_J!})77rpg>4=a*#XjF)~;(ez-A03Ny0jqN*a zu$bR;v?#PXK0ZEV8yvUxM?=B$lAdPH!AGcOf;Eg+k5D1*T*a;->Tg0lRyf}vS|z;& zZWHtj$;v`ld`8O*3r8UIw>cu0r$ZWs~Izk)i>9UZuGv=E$;*dbg0XiYq#u zj!JevHoq&ZBRy?`1fUiYvXGcPECF*Y|mq=jZ34d;agMG`BEs*C4|j z(HUe*={tTX4F%b4|NQ4aWz|jC00855QSq?PG}n;kE@qa2OU)KH0hCYJeG3adauYRW zA=?Tt2fmzEx_qtHdbiKU=b3izB`KRFsYb_%8WoC6~29k#0h9QNU4yV$lbKH$UBcMmnQ^PO_vW6RZ;z=$& zDecE5&XdYu$b&@gT}}>u$+{rw26}6qoN_^eVCL(Ksfs`e!xcO9eUQ8LYLIQ&(vy__ zFrhF*P9^~BBk)9bqZ5n1ZhJy z7O5QyGhK<$Dovt297uhBF`67lXM-yT?@p@*myEPIS^dl!T^6mmX6 zIb<|L^!=Q!Kw=0U0ok#u>`jh!MMeN77oR%-PAE_N3IMjglakHrkUoJi0e2<(k^lVp z)3D3k>~wvBaIu`mlw*EJCHwsRECZSVT_!rmE5<>ES&Y;zeBG2h$UmW~w7iZW6_BI7 z&@=+DFgNYHgsEPkLcznkcpU_wgN#~}3WtPjCek7Km3|jWOJ}m_v8hj|YCF|q@cZa< z>NHU`m6tg`Jv|Ys2|#Uv(0)fd-B}+H%Z*%4j5@RA=nuA!LVJU?2DotC+JA5#12I%K zEnYlWgORV-N_c=m_)!T~=o76D4^+3)AEy5I@86pn%tTmX2rpx(?;1|TVlf(rlt0;p z+mtE5q(+x8?Fce)dCY*-LPA3BDAE{$lZoRhrli4sVhaTJO1I(GK4DPI%|1Zfnrk&d zn#IN?TD!6~A=1CeGBB&c-E^&^%g>)b;py-v8H){S`DVW=!d`*lUN@!*b2qSwcgox# zB~AZQlc;~0X)Tjz!UQmR*)F35V=lz}iVv)rXhql8RW}02edLU(7V$%TOIf9cLk-9 zXw*R*U4T*UR*iwZVpAQ?J^^>oA0Hnd+PN^j*eRZ$pU2K&peU;C4m$r^F=Lm(o?}YW zniDmJtuiebM(-oS34lisEfFUMts_{T@3NH&W?Mes2i=>$pZO-Fe!8Evt3F#Io0j?S zzS7aDDI_GM-;9hQID`;Y1F^yyaDEEl1)vyo$Y~iSS=>W8KH8rkQEq+Co&g`$&@HtZ z$2zXX?#{0K@0+l#;@;?%2>a-|WQ_OT!-0fyJO)kAsE4A(k_JTkaccu68-gy~6+R0b zu>iG0O%-HRy}iBZ0b3mm=n+F!2=Pp4H72+v`mHQ2a^JQ`)2Mr;nsxU#LhCD*c58($ zm`4Uj+m794Lqetr4LSfpywhpr(h`@A2~aEp7HdJlW1#Qohs~`f6!NLaO*pzx6Zi7+ za#z1GXAb(9ny#Ap(D0{OnG?`7LoINF91&0>sF|7{PPwY8IAGd*mf49#E!{Q$aWpd8 z{bf<;Y#KLNUyg{oI-cT#Qs44AVe+k$@CD2wl0O^%&NfME7Q)6b1L)EkAGU*tuY`nz zwAEA$LCssHG&t;-DeVQ289iTBX|b^p+)k>KDoz^)l&K%`EQ@%{e(PEf8FQ3U{{aJ5Bz>)HXm<+ryt=H!Ha zNpcBvs$Hln=v{?RzWXF33stf z3x4a?{gXFde~U2_TV%{=C@pMiV7Z!B4?K~?kg=94CgWaHop-c*TTfO2G2vEv+Twz? ziCTt`Ln9_+Ls+|_jz}@E5=*nZ(NWW6cl zI3LV?(ZLHK4We%8D3sqhT@cC&;0xE zzf*e2e>GM^_}ADoYXyCLd|>43oD-~TN?VAy>&Ea7S}@l3?+93vMh!zPAVLGj(Kz~O zN2BC(f1zv>1Iy?V(I-mYPTX;i!W{liLx`|(5uPH=Tc6aBG}JY5{CAp8*hN5qO7#dw zNr=!;1B%Hc8tQjO_L)mdAde%x3+rcW(i71?z~${9*^TFAi|-zIv^FTG0iGZr!o8Sj zNXX%Klh!9D=yB!+a5?T-%=rfqz5OozLa#Dpp1|(9lD_@?{B&-9Is^aDO>}kdo9^By z6+MC64FZapRuje;RiB42r+M8buy>0I3~8cehw~9+oH!!8NHZeZF6lh(IY1iYf^V7b zNwgiHfp}r2BzB;QZip#1*W`~MKYr|3zF<>dcS0bUguzHv3keAcKy7CMXK^FH-t3qM z6j-{nOKIN%Qv>YK&gvZU8YnQ*o~k4h83t|nb;OyERcN4j`2POhTvMfn0_m-W5&$$1 z&`dznsBr9UjkdvH74|6X0s2`xI0uhgis-@6I?ax{+u!!SlW+^I9c9&PRJD5&kp+c>iWG`o zjr_4RK-$Wa`i7Yyc7pei|B`!1ImH^mdkwe@DoANRK0b7zv;e;)M9|F}>-I95z`Qb@ zO?RuW)j&@{(<(ih29q`yl@y7GgoNxO0jTX};dxgBK_Ec17nD%5dGxodU{$c!lA}(p z^}ac4+<^9b-PjO^y?Krghg{fVpm*op(51$K26?=-Q4fn#pIjzl5ckW<(m+wlSJ33I+(soF{WI4LrL)47ML1 z8h6&$yi$nN^5q)PD~eG7)MO{?Ru9U}7ZMV(fXx|0u)RqCLh3>0Hm2UbM4O{F=3P)B zZJ)2NuXsn^gSCw<(lUIe+a?)mOUeyv(B>FJJBlW!dp|+%owsEnylDPh%u*ttY1qNL zcw)M3y`UN*pJW9>!Z> zCZHAw2ZvJOjBy-gVx(Lmcexjr-BlS+%owcY!gyp?$bNFbLj%T%T!}di>ZhC0G}DcJ|Nfme)1jP0LLN;5P}@|T zyv?p=Bxu1zYx3K<7F#=UMfNRB4R@;MbM`QfvYC04<6j#G&7a%JQ&2!<%{Cqj1|Q}T z1~i6X4Ww5?IFVZ`9CXrR3_;rk)nkZW@Jh_zF2cTzHo_yhtfKd zhu|04u?B#@kPF`p7>mw_R=TNmbr9f_)4$h7S#ll`<6})vhaCs*5Flmx7U0I@^wBpwRGP&0`*~y4CypJGqUk9mX!)>G(&jKz*`H6cwR@VJ;`h$bL04buOmq z5L?$8qaVo}(9&tT)9P+-z4dmR3TGdJYR3r&4Ug!`?_Tv;#OS;hq#etT8vdu@6q`dC zqKnowf$GD_12GB1U6k$43e?ZgqtcQS-;XmfA$%afd5-;-9!~nAe8Z^E!>LFj*ar$8 zH_=%<7YomWcpd1&!X!=CA|KBAbcQwd+-!;;JIqC~A}lu--=F z$mDLY!WBJHs0Xip(x0aC*KiC%RN-1($8E5ifsS3};l%eox8?z%7V1*j8>uc@wCsY7 zDkIgb*j6j*#JLO^83aY&x?4xR_10T!O>)m#gz3qpz|0{L=2s%|YEEBDDtYmxiYKgQ+ha~7;nj|P{)r=`c~#6jybaArp-c>{#= zm@|t;#RGn@a9)6BdW71N20RpwEl4Hh%P(pXf1Da5AuG@{h|%{wX%?kq^b{B7(mzE3eo}SbuGAo zs{pqC=hP<8*YW4k`FgFyw-@fOr)Dg`7@y_UQP$e<7Fu0}uu0%8)r7v~O*d{w4s$}rhHQU$+!`O@n?_14=x zw7-1)`n8Wj30s}mdmpIly8P^|x88cQY#bw5;kh3c zcN#Yef=?dAM3Li<^xZ-}`$;(ucz4y2K^WbnKH&6B6eJ&}J{GCJ#D^xd1urx8?N#As zE5;wMZKqma(g=IU0U0fTgvZya{t7*cdZrFMuTac%-6}#a8culbweH5rHM#vhrB{NJ z!8@kbTW>etKBc96x;{?-cJf;ZP}k`LcOWt0sylOF5S)*`h+H1)G|i3%j3gZMsIB26qMzT3q+YhP&Ta(Se9WuHOA++BLN|1IQ$EVi*j zqK{So_J+TWvcM7q6fi1Gev29JLPp_LA0Hpc^RQL`8dvz^=(*8-7QT_$*7RS8dhxA} zRAP&O)u{Cekp9BUMtzDP>1*!{%1j#dwd=Xsx6=QaS@MKH zS|QklY^U#|{%!yEmcH$%dHzNnPl%aT2d0t#g^gXa?03e7s!EX~9BBF@kpQ?A8$NkZ zbz$I7_2- zLXe{`iSEpP)Sb1AqxzU3g$?nfS4Af3hGsmeFoRu0AEL=%&>jK#)j}G#S1Y9bv?O4d>j+5=>#*yr@7_tqEh?aJZ_?(MajX+Wvq3`6q}Q zPN3zitdt!LDdDdTf)2}4^|tVY4YLswB`K`!Lp8hbbf&}^r4NXOZ`?p2Z3XQyi;_d0 zHN?#=zc`y$lSLjkML(`0jO(qp-j32bpq9Deo&rr;wh0`)B&=Fck(ra-ff>^R_nsGoC}n<4jF8IJpB2+Dd6XQqXy0o;!jPEOU96YH9@sXl#*YE5Vj z6XiGgdwl0lPfr(TmV^%!6+}90V(q8mqLrmL^0ke;A5g`{*8>W(`?-ZbuD9NLYj?Bv zA;@U2zP!9}i2izN>+WOH*_%ORTtJ%ll9pWP)$H{pI;sAlrB_4cy=^8eDt@Yce0;2^ zx&WFcEfDm1JElfn4-_N-4W_@9HiO;5LydNkfE?|+Fg!uO50yVU4CW=>2;!SaJJjR! z6*$PkLa4xV!wF66AppIx@W}9rAOiq3K4FcScW*2P!PIPQ*o?QC$F;s8Y1dE+>SuWV zZ2$mCIC9e@LC89GK~(M#$iUn1Kw$18-aLYaLL_)0{*$Y(vwA zv#U@iuba1dG<_OmFtz0~Na~7A3*434 z(KI;Szzd|h>9&&;u%z2q$BmLbp*Z0}g7f{$;T$pHO|3^zwcT00hAIF!7W(rEA4oH5 z=iP%{P&eK%oLI>Ya{w5OW1^~wg zWY>x{ZfM;tzdp;rYXdIDF5!FYZ4OIup3vbUqq}ODr(s~A+ifhe0}xD7n8bk#*t)o_(YknZHQW+dcW%ovc4D6tx}8o&#C(k28l*>GWq1`;J_Ll+=Ge>lk0 znSeyVIek@645L#qTA~3lN;o;}OyyCQNl) zq!6Dt-PsP@Gdti?vw^>`$T{QmU)~F{SE#!t1D&9It6wq_iQ$LhA0-^#FJd#GN{U`kWnD>M=QCfBh+jrV$xn4+hrG{I&?W+cC9yE-t*tD66V+bo)may z(ghLVeFHIy&K9EiXXh%_h@Zy#%D!QX{YVvc#Pm`;gU$`}esGi-S*ltJcW;O3*XutK}F3$ysWoI>NJd1EYjJ$-D4^pgeQy z85-ZP{^^!Rr65O#IhGb#!9LY*WVO;&)IvH;Ge;!GyNrKkd5eH9C&Ph;@O8Y zBkFLD&&{hY+CxCVT0|cKIQaDR6g`wELWYaUQvXf-3Q9;>@S`j|a6{sVO8{ybKn;ss zo2{Vb9dOeK%{QiN-q0`bcV!E*o zu|!p35H6xfU>|6TUfJa;Z;qSOc1-j$oa=36nTznA?94jGa5zo$0V#ajm>T|V=?CcF ziQEumWe65;nPmzfvRNc~m*`R`&2tt4)5kp>c^6J-v~zjlYBkOgF{P`gNuTQhHHR>F zji!Z4HVJF`q6hMK-`2kCAo z68!#f0YQ^zpB+W;c}e}lyr0u&bZ}_gvQVdK0A(5x%8Cyx+^y~dpcvdBt|Q@;_H@jw zZmX;O-)N%s+;H!Q(ezSX9O0f_5P_kLM+52!btw$g1uwHV0yiNw$GMQg6#5Mmu1B$} z0n{`Oh2qFa_Sdj9Sm#vBl3;2FigGYX!ce4jd2UB<>(p$b*N1b(u*lN1SDQG;x3{;) z$H!1%)(^-M_~q1C%(`a>)Y7|N3)>kC1S^;opp=h)a|gXho+ht6HwQ3Tgm&kL_5 z1;z>`bQp71G;0($*ASq;bCKuS1su5bu%O!gI>j*zPpjrzCe_G~(=yN$X!@Y2zimQa ztu*w!betObBMafhw8;vq2yV}a3N5iPaQV)uFGMluH&mckZ(USzGE;1$Ma^goCu-q@ zDY#uoPSVNs)}Y!woSoRw3|c8M%~?m*_EI@8>}3x1(P*lr4|>!voyE(`i;qE>LpOru z@w`HPkkCo6Lh)2(c{;Wet|O@2LX6Uf6rO{1^NxgEF=Yr|Ldhyjgk-oA04Y8*uCq)i z2W+sDii-3f_#)e1qHxy`XRx9K$C9QyYil=%dV>Yc3be*zEdEcud%fCeefePRQXAc>oZ+BvcZtV|HEC%Um)L0R@PR_3`c7 zH3fJ)50U!{vu%P z@Y)cGbFH+*vm%7&zkPhO}HvdOG&&SD>!;P9D}8`3Pxkh5GRS2ML7uPf@uHx z3WN{QaHww^*Wj4p@5xn!C@0k$GACO1a_Z&mKYkIph>lyJ9Cvu zilXer11T^Txei%y-X(H43j*LYXH$`~J>jTDc6k8Vy!;X^7l_lrt#cx=&Gso=VUq%} z&2Jg~r>7^-P>r}xmzupo8WMvI+B(Nsc-5VCLlzTJ-xse^`z zC-JJ0geeAj#bPKigLc>+QMTX7x6p(WGh$a>)U;IeIr)Z89$B&K`nOxY_4#hQH~jHk zjRt8-TCsD{Ud_JI=g*%xJI3l+U+vMii5Sck8nOf(F>$TEul6;zrM{iB*>XLX*fdub z4#^yewU3x9d@VYUFZtW4{r&HMPk=Rzj5FFeujW!Vg`Nw{G5MSA&n0beEb->9MSFx$ zdk!$-T51$v$%a3>$ukr>EwB>)W^HVLF4@y49O3p(=*gZR0=} zzz>`pN+vtX|IT1P$8dc`mY4X_DDsC`4lSmX~t`d z`)bU8jx7CjYJ9jIf!5(oD5+m(7gQUCDXeNon&GdfCNTkZ!r`_XOFB{ToA_SfQN5$L zfcEL@>#GS_m#j?vQn#9vR`9H8_j{kI66K0Jzq# zsJ@Zx2{c)5zB#;LmQ-L{r1~$B&LPBkd~#a`pNKQU8PM& zXo)U#N-Qx=@T0dm?*w0Sx>ZQ0oh;CtrD>2U`@4LZ>BY&$2%|FRx=k>ID;wTw1JWAK z1vfDObJ5;$=g1;($#2a9OfQZsgN1n*#mAXU&7W{jg5Ah+ySDh)3e{ahBts^n?GL;Q znh9W%MIdX((baI*GkQ-?PtVWKngSPm7|uyEQGF6ad+?bU-yCL2+c(}0shTrw5R->1 zW|z){@ss?$9W()#fsU=H@&_7drk*;26|tqAgEq7MxFu+a4T;3uku)0QC>l(}x{jF&8$*0QTA5hz_M%l zp2s09nR?JlJLHmRyJ`EpomwG>WpCkmw3l~tynsWKfn|)HNt#Q!5qNodA$bLv9}0X~ zo^w1H1jbUPMyg||L^*l6Srmr2{%XmLl*7(DiQom$eJo`6qhtgeL<`qEM8F*DH+iOO zO#c4&zekc*I=ohXF6M+u9wcj4Bt z-e_AswB5`a&*KP5<3oofPEH^D1x$@-wOmY4HQVt3HKWVnav|Mv=b=0o=cX#QDOWa% ziKs48iN-dlaPpzJ5S?o#yX_Si;+GvwIr{gkghq^sa3fNSJd8ETgyW zV8rX|>)YF#6Q)`)?6L7elN;mB;WH&R4q6a3I&CRfSHU|n*;`m&)x${zhPyQ@ix}-{ zVe-Hn8S!yV3YORMWCG4*0J5uG4#a9{1rq;zd(t2Tg0-GOhtoRGwSdv&UWnq+Lf(}y zu`GIMq}b~!Og7z3M@Bhk61aiiD5C+ZH}$(yVmMcaqk<{~Lkwq*AlW<4>P7C2%gxzQ zXPbqjF0~`-8^;6G$hUGVjJMN{Vf;3aU5p&cfGzUfd68OPMg6GNbV}TVM5S2*;uF}i z!wsgm(ksCEUMCYTm_}P}74pF7;@wS9qCYkYaV;B14o@C4e%25Kej_Lr@(p{na7Z|Z ze>l^2hKWvO0bB*B5kxth^Q_CsMhca7i>}S)PzVyx(&i9ZGx*6vB_=v_dMl^kzP-H} z{p5VP&rmgvY!?MH>u_&PHB84ADjsr-!hNw?!P7Y#C24L~bfe8nsMqhm|6b_ObSht% zyJYPbrG>oCvBD7AqH`Kco3h9y6smc(9T$^D?bl84qo@IqBU@>#$&F~hzmSyXv6pt9n_73ccG$eTam0!YR!0+YQ>Uss#nlq zuUELXq!g7FV45qmztlJNu*Y09YwJ>KW;hd~UA)9O&f!XXdV0bK-cx#uHnIY3AVJ!Q zx9o1iKSMvzu_CPRq{$W~m38-?=on(ltQJ#J9-OO{3*{N=5+L#l!U| zrZA>2kuzOMK#5)>evO`iR1Hvf-+4a08-2MLKzfCUJBT_gSJ!Ime&6giGF+0IrS62hghM zR&e09BUKiL=_TqyXlhvG7x$eWgqjWL!#&fFHUs#ibpQnu1_&(MHm>oS`zCaLNBvok zhFW*|M$=iWx6_~{R7wbQ*pkK;^`Oa1pw__-V%Q;-8^-}4+^7sW-b4PlNJ2njI01zxwY$Dnjj^ zpPy}-;V09-(xBkh7_vsNUMpu9>fszI64tw%TYFeWiJw8t$4iA}h33u(pho02ch;ay z79chdray=x1ezdvW;lljM$TaEDX0dCx}akh3v+cqt$0IqXbOWEhd#p5&aNiwO)__( zIu3Lg8dqpDTA+@{$z_mdFT+HvJ7A(iSjSxKM2D`xk|aGTL;%7#?mUsDdo2(3>f__% zs_-tlihOBdRa-`Lq+O+v0Pc8Fn0^13|iN?1`qJd^i# zQYT1IRCLn&otP<%GToW&3BY8E=OvKe#m*zp(EOjCo)$_Q{g{Y3bq{`+*Vk9AgoGhO zSGgpi9-y?~&gT*;oX(l9W~}0q=jZ2f8ZuxRp~`F-r^+&rScFr%9Z z{Qt|>uV0VYZ@5?6iO7%)((0c(;fU25&he8=gf)eSqF=J%jZCwMH!egn`?8ejMUK!z z1K|uy#@&L-=sV8|k)q{|m#l|G)K%hG;&^UhNv}X!?H*rvih!n>v=|+c*JlYKk%#}} zw)C~*zJXk~Q}Y2amA3}=W$|VkTPdNW5^391gc_l~ z1mvzp3djLLbWf@%ST&po){hrzGQCw;16JYw_~VbXiM4u#jLB+EZCAqlkoM99)4=;J|l{u-ul^ve9Ks8X>}94)K_ zRYGNDBdie7(5RclYKi#(zFb1}DtG6F2Z4n=aUtn(a|mj7CEJO#(6B7`Rd1xLNK+sGEPXAppa3F<_FX4Mos=}0 z3?JJv3shcXSmy3bA12lPYHI^j(Vtv(tp-z{*i>$I5005Z-rwJesgcxPac7)_Y$dxp z_{y1~T&vx|ZVL0=NFI57e4I1$>W`H+7bnUm!x()%91#mS5?)Ev#J3#*^2 z^{+=HyvKbOuKL!MzmQ|G%7Q0^leh_@-9yze?;Pp=vN#wh1NpB+~$F4)OasZOtmhzX&ntL_XQ$KR7H)_c%t0dt_qmN&wrJOYhPYo?EH4D1C28a_F;4(j@OI5g0u%g2l3W$3Y43~!5vgM zcO?BE(s6G7M89|a7N#mTk2uAm!xar+@>b#b!3O(zYR<1@8!Yi}xQ6#d2M!<+ zijKE*^wuclM2%*TAH+t5BQxOvYauI#suYt^R7;i<{FDdEEoTMN;njl=^q@V0^oI|X zyD{&cT((9uIGkinjTp-1Wbvbn!l%>HH`Nf5F6db(njMChKK0w1h7lwJT{E4(w!Mnn zRSlxaAt-Jh^&BrThhuc&kIOgBiEgq&9v>g|g3`J1*o6q4Wv}i}^!I%hKOqb%Q68uC z(~oR?ue}yV ze1|{*#+jjok1w2i)P>fjQKQRx-NQf?6UhpbUePZ#c)}=3q=$jbXFI?XK|8>rA26_KdV&^g_w*2#z19vLqJ~Cego4SPJ#1jNutp+ z6dn#pB*rH_vJO0HYHJX#axqP(0-(nFT+t0;d8nyn`8jTsn}Ei;9MlDdrR5E#RtHeC zoFQq+Wf=)#n7m5k3}-Y^Y1+J|v=2o`Xg2m1ZD&9cfwXqqz=|iQ6uw^<`}EI}-A?1fMEh>uTY25cj)9Y5-R1{04O` z>Zihku?`U<7B71|9YGU-Q>-ru$1APf=5X%<4}f~%$YUGd}IbCVlE)VF6W*k*>gArXk0w^35gvqPDss}M=YE(TG}Z8l@Fx2=)tuLlgz$j}DnQYbct;;LrU=1{6LC;8FhQieCrR zrZt;J+O>zY<&JiO>-Fl5bROf2BV}?}o7u{qp-AlzFf~B;NZK=TG$H+&!7^$^p{(fI zqUD58^v9I*z!T=hzp7|sy5dZohQ_lU)bmo&D3NepXck}-kOCL+k1R1tVJ#^!;8wWt zdbtA5aLz9n&iE{>a^BhiC>UOK!waF9W*OWcO zIW?nC#KJRzXc}WlOT-s&`HHgCTLhrJUs3;wXTjbM`$LqjUd^SzIYTE`kxO*3Tn*CA z5!M_IJ|k@3v3rDjtk!4nuEM~YQ-#cu2!rqu(^M@Q zEQ=w@66HB7pM0Su%52A!c=_jH;WA52Gr%mm6XXrI2 z{dUyN952@pbh~Xd?H{Lh?UHk3u7`2B#NHK3$R+w-c&o~U6&+AJo?6_3+ILliS|q}N zjfoB;kJSNL*`x5rI}iov?d^?2B0SoMnSk@`Vn{DLDHm32y;+K%Zg1)aE{p9;lu$Jt zX*%0V5UZh*vi7d>;S)GkCn9|~ml$KAI=&J`b~rhRcA0d#!Gv(Fg1mQ*ra^*(^$SJra(HVO?IK(Tgt1_5jj?sy-6Yd3 z5h;;)F-heOOf*go#sta;aF&h2bFaZMW$pX>J7%_hhjq|2TWF5LPA{zx>KYS1dYO?P z5mq8H6SgZhq9mK8%NscXEk$)j2skQ~xB$X9oI*mD9Qu#! zSv2GLTK)ej600$c6)|DqfFXyYa=N!xg`~Zno+c~Y-Z)Jn9%TKk_m#kL?8T%-L)PKl zQUPFngraG=D#E_L=b^i$cHp7}MKjoIDp-Wx5DNyus$<9Slhm;>b{RS}GY+bZ_Z%81 zTR~PVHCVH(F*rnAts<`iO`!W#SO9h%I^QmKCV?107%ZV(BGg=uDa;xxo6CTSoM~GWn@V;;gD(DgwsOO4MJ8aNj z@yW->2T2K_gb=Gie}>ub@t53lp!(#l;VZa+p>>1cGJDv#Zi~BmAUH^JZV#+o=FeqWp{H-ouRyJu7N`2vMejVj$T2}MM{_6=93|2M8CpkLJ91&WVpj- z3d?I@Zjy_$yWV@-s~vR~H!4OY(5Ni=eUe;IS$m`6op6=I5(eSLIEakTnv+L)_0AR? z?1Yu&%}pk+o(#>rcUEtopP#SNKXe!XAM7>S&VQsD_g+3*hbEOC2a|eq=%gut2Kk@e zLu+=SCBN)TVxi)T3afqe@bGXgnx?s~f4HD+dl?WW0O3?x;t@6T`ua)&RN{~t&SjK& zkYlTdpxEN!8b}ShQm;uJ%#H8Dz_s6h|GkUBf;}Ve$Z*5u@hS95 zS7~F8zoI;1WMc!Pqw?)i5F@?OS_`qk!<4A9x&kg4PG09-yeV4q>ce=o)Po7mxffl{ zm~5=H6_FF{nvSO3Ogk`#T05&SFCc~FLVdRyL9rF^6o{E}z5c>-q8rD@RUjjwgC>+W z+y?Lc?h$H3z=D)rU63{C(3ri}{P3Ud;`$vx&)!{=i}Fy4E+?zw{pf08ce@5wMB<)H zi|uiUdF@^ZfXS1+c5F+Zl1olB^?`b72`XZ2?=b!a#9>ZAY3Z8TU6vb5TK|P%U3a?{ zd2B~T40-Nt32zae1oZ7IekncxSqA~jrTar{lvdR9^RxR9E-+Gz8E~_mx>t@wi*k^u zZ@^W0Bi#W`ZrBn+`FZn;Q-3y&f; z>4SsP3dV+(2f@`u6OfHtvMlp9^io5>8)YvclO?!TmMi=ax@C;H>n*QLUY9k3NbLIj z&9uLK{rdHw%5e*}v}G=mE~CK3MGUe=66jdJr{Tw2eae#Vk+<_#%_Cq$MlAsq2fnS{ zp%zVCIX+QJm1k$ZU$SOM!Ps$xnPrNL?>oy7h*Zds0+^mFlHJ=bE0B1NLc$YUWjUMy z!EM*iCPlH?e?x2k+8M6{osSO@%7;04C(Vj&UUL^TAoKAmeTIc}P*j(JGK^y3IRper ztJRful3{sGto@>b4y=T*DXXIk$ALog!zsXLwa9YyjLBosc+=!iMDUs6<6Ii7N8>8G z49fW#02=Qyg7w&mfRfnlrKkH^okWA*RF^`5ztOHSt?=&Ee#Qc=w|3f(A3q2ryqR*? zy{&7X(&u8@f3oAZc(*2hQ@>X}8Z+LRqm=M(z6JRr!w9uzIOn0j!RguvxUZ?&Nu|!j zbMXrDph(48*yl-_jD^>7Vv&)NagIJdKJ@QcXR5z8Oc7G(xfHO6f_k#ZclPJ%Sv*uL zXATA}z4swWeR_I|w59s zxSKZmbR?Rme5E7#rSV2pIii&gBMzc?<_*JKKqRz}AW}i?* zjS_agDUduqOYZEn07k>bXTqa)-}goHln5FZo67iH6bx&dF8?=184{-?j^RYQ;+8(A zYimZ=s@v!f0DK#@FVJe;YK(LwuC)tT;={|Fro|WH-NK8Q0ezG_9Eg8Wfq~6EsKEFM7QG#~* zlf5ujSX11O_}i&r8{jrX+ja)1b3@qS__aW+aLdCz=X6L&?!z(&rf4x{H#zv@f=ydq zGy7Z&4HP99&SklZ7E2{gliUGmilsLNg))Bm<(CQ-VCR|vtQJBiylW~% z*Vk8MpmyBy8j&j=6qZz9A_}(CuHRU5K~E&c#z2Ezc3;FKMaJK?ceuBCw{sB%Neu@Z zi(z5LA4-voSY3tQ1y@wKCACA}-`|Hb75XmmBc=B{sw3kDerM{v<;$-E$LR94L567- zRYdJc+twriV$=BVwawnC zU3k+boAw=qgT0)0Yb~nA+uPl?15>oLrY7dqwsDG1zN4!haf(OYIc$5YgM_pYtIxr} z6L0_Da)zA!RS_x*~<;DZ` zbQ%eLhqr~|A+V^Fn`?G%SEu%E7?xrDOVI;m`7!5mw>>Mw0|?kbuy&TTo%+U=7XXiz z?%wlCmh1(M68u@PBA_GbUkK)w>=ANoi9uF_={!0Oi9jb27|&&tnWf+8CX;cI+f|fM zuPZ&CD2hagUkd~n-DqTaL~Lv88mufUs71ngS2v{U!yKo7agE~_8P_02lh-ftDN4BM z+8w0<6WVM!U{>7<7Gp{tvvk`Lw&c|&%G&nUTW>on9>>*{+mUo7puN@i9CPkWDnKFs z+V1dE-cTbu_jX?x%!Mnam3|gEAX0hLG+Pi1uV6rf4CN}Wkn9SagYestMWktH2VuWy zF~iLaxS2~h5KKDkT4S!a;T)9!P;Li!iSuYh$&p`AtS6hNM^ zz+^w)51tN^rCqjyh#gb{twytN^#+H>a#ZNy;eq0MuJi}D23e4Ju!w!5hi`9hP~UQY z!j2|W!u2_kty|8rs|Xy4FWY7PplP%NsO6F{!>ZsE&W>o0NB7a%nDo{Vpo&{j|GvJy z>c6{C*|N6l6ZkG~z)z$_FE=q z@>#P*HI-^M6bslxGv2e2DxVzcxD%^cUzA&#vl+qw#;X)u^o$*OH{ou>fN4$3Au0hY zi$5}ExDftk6}$s#`x^Nu*)H+vza#%dn62q7d+?o*U7I3q+KHrx4?(anm8`>1P{RZX ziQSZ|X|G0UHfAJaNEZ}l^;I20rAW2AlNlrc$Jz8u<#PXoe)jbA4O_V@!S z1o4(T)@(@8ff~tod8=t%rRKq{Oi5oY_4@D%6FmaD-#-MNQ_4MrVap=&EOh^4>2Zt#B`0>LDzu~ud-pn+- zaD_;3`=3+Wah1YT)8IyPN>TPE4NvwPRXe~|R-`cWmT@}5;)#aO45Eb_%}n0jXf|#w z^ss*Crj>h|TzUL08(G&vYlztlnCl{>Hox7~;T&-j(sYI~%Vx#)9RLAADEtb*$L;J# zoCM$r)8#g(K_xh>JWlLtuA2YKmYtwOa1Nb?fLn6;e^i3l#Z|!W&3dW=|Xit z{ZUWIB!!)pE_wTpZQZcXTB5`6N&cJoICf(6ELd?vT+fnf_tNLL z(HQ*I05|iyr32`7A0Hpk+E%9eQs?#1q68ONnpS(r8J%tp8f`hPUb2OZREwS7dh4wf zOYormhPm!SS+opPHLNjBX+@?V2mz-zcjKu_6nEN;*lw?RV1xK_5=Bn`dcS4 zTJ>@=b*R&JMAL}U!WOz8=}bJ7^Y~o4uAf^wih5Apu*9vaG5R+c!(dg^Sw^kr62eBX zlmGnlPpxXw#K9gz>KL%|z`}Cv{=g{2t>}r1S%|Q$mIwkpn3hRQMF*{ZCxXgkdgxH6v8ZW35NlGQ|*o~ zU%pg>w_NVF@tGnVbxDpS)gef$ZyBf}NR4y0gX6vR)&aFV2t_-oPs@EE%Ny`Vg}RNy zt|e0mV9q`rLo)$`5NXNezKX{oSEHc26lm#NtWtI3T3k$>*R?z1INA%}zkmPhsqIw^ zA>1q^=#^Gpi3)^i-ka2*OmDk1EU3v$pHSe8mq#dI`HD}%;;<2|p>9ZZLfb7-`q*UY zZdQv{4q2!aw~2yQ^e5@)9aRc(+1SkDa+@uVYkOV`CIB>p22subp}VLdUVvtmnxPFsE;8 zOX3uHcz7U5Gy1VUCzFno+5`*#b#8`ZCilJ@Jw(n}5ZzC{aOrbd!V~}E>iW(b!_(X- z!20p=K_GKAOb!1{`+yF?o_0(oehEcDO;B>nOX+naKsun-TW@Xc&4X%JIJX<=Pv}U@ zcx(?xP9wcaNzFTSD9!DJ61Y4T#%=x0B27X^@9XPpWTq}@1ib9Xx&j{@Mf!H%4rJvR zv6cN(PW=MiF!~98k+I4_Z(GDmg$EH}6`BFdp9||#ShYD?HtDLD+Hn`Z9sdB4>v%mt z1f-vPPEiqxIe^evP@5huM8_sG+9KH=#s>QJON7%l#oT%)?d9dg@({Rc38jOU86lki zdv1Olh7(SAV)+r!}s}mR#3G=dv9~sLE>VXm(CN+Ryx3T6El?R({S`>oh*1$k^DuKRRGCierxLIzWcxa-;}WYozK>5IW;M$!%=J*Hq#i zS2Xez(gi>#*T%kQHl|SvXc|V8aSE)va=QkD&}#;PpvQH$My6}qogmV!!<$+H%b_i;T8)aeyRFKoEPcrMvx4-XHMm{FZRQy^76w?lYGnInbl`}gkz9q4bZ zF$(Y%dhW-^2c{R_lEoA4(`M!Kt$vF&r3D$nntiPH{g#w)Gg1LkL{e+}b6qVi`sH2C z0$i3b@h?0V{`lh$@*F{;6J-IHNMPc6#*YrKCBhN!5i%2|LQcKmoI!c*Xdv*ZwMu#f zq=%5Q>0d2E^)QmpdS9~1;GFV7W}-CEdG52KR|qAwFk7ulhC<)sJ9o8{)py2Cn77aR z1TmBdwVtndboNBZ))I3}Ayj8J6T{*^U?NM55^*0zBe0h2 z0u;DLO0&yoffHRTmWYPZ%S_r5p%5hA4nd4YZ+orDEydk>E7Z)cSS~=rRTuAbgeCeY zwaL+-(f<7T^O6(+;=hK#v9#qRU9$DYm0JM8H;w=??{q*%0L~sQ2^~)y>qPFv8uq78 z&(F_L7KSK1pq@G=!x&g?UC58_3|OG2_j)y@o9j+&QRG~mIlF>~&kte>Ez1&O@F?X7 z!lund>4s<)^r1Gaw&xM!%{2v5kM#qa*4u#rwcQa4H&;{2bwjlFu!K|T!MrhI zjveck&gnXosB0m=gHTGT@*f``cHKw6p%B52bX|HnMVHz!5+Ht3e;Ah1yM}-WKN`B9 zCH1O$E85yQcX~6@0Vx$*qmZ!&AabAcE-RgK5I{nbfy=9-VDCwoll*wxK?v7X7@O=R z@$m4VBlYd=O-E`(eK-l0L2M5l)#^lkJT9)=%egt1;MUtlorLtjjapo}dC@9*e0+R; zeI=5#1fQDjd_*EwjSMN>j{P>GxI=HZPmyNJPiC6;)?07&+aUopPNQ}L+Ox+)VY5Nn zQpZZXu^_bulO3Sksu|#5S8Cdf!P6z(LIymf47pCjGwN5$#-J zuK)F~e|>y>kQR6J3E~w(iDay>=X+)!YRYJChm*FG2`&+akB^VAd1wm*yl!ml;$yL= zMGBSv)y5~@{{{#Lf$yQ@>pQf!-ga*XPQ7ji1Ik`;`7h^I=N+Xn?`UgLO){gl&Cs>x zp(R4Cj+zU{lSY8_lZ8aiR1V_Wy*3v#C2HAARjdXhq>oZlxbmaf5mb}$VkVVCf4slH zQ*7=))$4DgRolY&Ikw9&3<*LkZzAQC3ePr zm$BeUwE%Ne2%MB*sQZf7KQvHFrYF*=Q2o>0Z1~e=Z=~W`Z@t}fJ0zgiTAeiczSv|^n%wI;-%9ppgu9k`WH2$ z8`v3Ti&k|m2pHY0+7>`c7#3e~2V$VKz>a%xXh%?`9Z%#fF$`*(cR;PT-kLa+zkdCC zxK2xBkOU!uqY*0$;@*r-WAmU_=szdTE@zA$O$tWdD(_Mq@Y6PUt}l!h@yJ}euHcRx zPSH%uhZN@f==a!Ebt;SNWzh*5(RI+F$0<&|-E(7SRag?7DS30@4aZR7_r|6MSfMB- zJjE_|v?__S@PCWu@cKanJ!xPiqBR13DA*ZsE1XdLz&3o;^PvG^FQoc#3hTHH!EQ?O z(7D2l^c1j+7Khe$Mp3L;t4t|~(X?*mqnqV5aB9j-O5b8I>Qp8D{KnLh&i>I`Z@afo zLy{LDZU67}EwM8)2_}D2zgIr1GTxb(aA2m=ZzNf)lX48+RTxQp*ATU2ytD4P*Bhn3 z#UzUqn($hOz%VkT(k!_%=8Z1VTR%KJT-B@h_jh8`LKR%!K0iO}h7}|J8t)?^3_y!a1aG-<6~Dk@YXB z9v;DmmPn8&5$XTq$B*G0!rY~I#&5N-qcyYf&iG0zzY*EuBrd=QvQRgBdwY}C3h~9U zW>7Dy&XXXo{_79zl+bZ|GbTc3$Y8ytcrJ{E+pgl> zTW{^R19PcBG1drBlD#fL(bSc(j4548QEWtGBXOytX}wL#tD37KJ1?i~is$F&c9845Z&x&x z6?Uo}F_+iZSE9MyhlD8B3Box-w+W*E{{8!MTNI|J;mk>jlnz}%47F~nLqUDhzc^-w z_MDv>2coyM_^li0rS##;%L|n4N0;`REcB?`<|xpb*OJp}WI`)6J#Ji!V`JMZA(vP! ztrNEG5}~JG9yHmL!o;|QJ=)~#w+#KSo7P`{{nZknx88c&XD1%?Ol^dc!)8x*x?=R; zI`WY~=v{_Rr(KC+TlKwv%ZEB`2%!z5z5Vy8EgT%I<%frdtE}Ze{`f<`w;_~XY}&~VIwfO zt0KWI{m2nR;72^CfCB0ju1#IS0ig%Ml;4QeY6q2340ZVR^%W=$lF$%nJMQ{tif`Kw zqy>iWO_Nv$Q`1wjD+4=j4RW-lacRK-IbBrGj!3xq^XE_eA7kwDZ-4t60pK^bHL4km zz4g}HWIJk=&(;b=YehT8`k|C(w|v@Mx>8Lrjplk7ruvc}>iTGN_avf9cfJaf zf}UBr#qz7j%CsW8y^aL=t?EEKAv14pZ~FJDoY~&)r%6Gt1J;+Q9DUo32(@yO-wCtz zq4w|Jzhi+z{o^wtp#tHU(P-!o>IPi(M0iNG)b(f{q)#I9IQ2xg<=bCQjpv3JK0iP2 zzJ`q?Y7D=9`xbr0o8Ex?gvB|WFwh&`=4OMqBIyF)n54G5HRioeDTnVH^$mATcac{?Jb+qt8f^jU1hGqi2a~;G*?X>#G3U)7n zRESED)`VAP2ucU69!Wjx{r#O4GDg$*&7>pb;o$)#t)>EV5rP4H0sdn!^`X=riay}gS^Wf2UY_pRYXhWk3as<2y3&C2bsuI zSGYP#)09bJMq1AC0;}o8Z>iQNFQx5pd-c0}J64m>kZnk|HI+c_=iQG7sNpDXDkG*4 z5m+_9&|cwwKJBvWD0kXr$!)-|3(TX%IJQ4o`&;GNbaa^p5A z)yO?8t}xXN*3e7oAmDV?-}p|4XYuOuzyJO3bePi5_-U4}Uj6tg4^6asoAMm! zU7ntv07tIPemzjr;X=uyn+Z~*1i_?UA;I;JfBd6p;vR{C+B?}7vu>E?(yg;8Bs$a$ zi4mOzk?D(uw$A6eW25#6+UeXLM}5UhaWi`#k-Ph%>h0zmT9!c%>^`V1(ZOte|LfH5 z%HBC-$|vITD($eep*0+w?`E%1VU$0ZiS8su)TtTc28T2zP#9^Cav-Hg8uM7c`P<+A zMjf|>9e}S|Rx}FJc7+T-rvvGiKzjg8QdJvq5^@sgjY`xaAa8d#c@cXO-=TF@I3FuK zi+~y}n{*)3mit3Ie`7{P>2suVdZ4C>b|nB&I8C9>XpmHxncp-X=I?YFz~7>B1- z{j&xqiVo;HYlbM58=JM^T&ZdNvRc?$|K)Voa=2s(2mHDwbN8R8hRZg5cMa^ZihHWV zD5CHJr*{fi?JenJ=96i5b{K6dQ6YDe`A^x`VA=ov&o-{kY}MUVp~JbN4qg+$9V=1% z;rjps@w2dA2axMfJ$2EK(;LmX?sy}IsE=dSJ+_X;_8@3v2*(cLFux$mhS31Koy<;) zJe-qVSg-!-KC?a#38e69J2$gh&2=WKg z8cyisMSYs&P^tL2#+(o{*wEl{qXRReJOHgbBfatg!Omx#`naOc0<^U zE}?js=zu@)hWc`2f;^gdF299-?5K!Phv7r+X@t>Z1%`+P4G@X_6}^$iB($}|7cue} z^)?*I;Xmu%gm{^MOlJ($F+_J2q4t-rU%&QadwU~y{h(?S82?`DUi;rUDH-pHMbYMf z>u8xwbwm^rjy_5GPegb0Ubqg>elBWhu*?>Uc?o^Rb9fm5Q&W~aY%JSrEX?V7s5k`G zc2RlghU!)!GTNm}$jj~{f3cxZwk=K27hnpHZ zd~yu=R_nizrbjeKiG#Z+?!UTARxhb5av+Vx;WNwoOpNvtC-i|Dk;n}?$*cymizfjr zLupaUSIANBNHl|476l(L z#y|7>j&Bv|2_gO!#jkLA1dS2j=l@2+D!g0+$Qd`BGNpJB_LP5cOH73q+b0Ghaia8Z zmwXF&e9$)nWEo50I=zy?@Z-l1J>Al6`<;;y1pw|E{nDja?vUP~-kh*jxZ z@<1mwgXp>M@9+3^`DNbs)qlxwF~yG#(TMC8|B1eRdU~4k4OX5boJD+|{kakg1d!`} z=k&HNMGy2XN@4WN63=BfNk8thu<%=i+Z@2O{kf=#|8r_}-iSD5i%=`alCfc#f=RHZ zuZ`Wm)db;ZodeX;*M9&09fG_`3++xulGBrAKmL~B6n;?R?8Z--D4MkTec#^R=4yKE zI13V2F(Nh( zimL9*=J3lezdSxZW_J^{>=TAYEgE(bA@MEDN!z&`gbk&~$3Koz zj$DTqv1!-xbr6O_EZ)uR7c+%5cshHH`CN0NV*4iB@}|A>^74W;cRyP35QOFtK;T?~ zTiRcjH{jvU*9J9=1kuA$_QSrTS^|q~mYWlGYJ8A;3C(3K5$?1O5rfQSvZg_a*(Ab_ z2xq9@r1ZSLzC!$;D8N*+sbk;2e^*aR6e1Xc*tedtcN>k=_#1;TvpQHBw9C9&zQD#vu~ z@f{Y1%B~}|d5+j)WT2|?U8c>VKcsD5J5zqsL|vD|HBhS7tWhWA7P9qPds!?0ccK+X zw0FpDSyei}o=@$5&ix}T?q)3+^Y9(l4!JQg*Lc97`Ln|h$!-W$aHE`(&V+ic%SeYE zqjETd`uX_yXpURTdJeTX-Ip|ViIBY#OGR_1`|I`Zib3G!jpW<&Iy!>p&SPPgARU#F zh&iiUB9tiL+gN@F!grRppFe*>@pJ7ok-r87M+xtjP9<|%x8F!@PK-lTsUu?}nY54^ z+3ZmQ_W8R zIyJDdtk95Pa;ZNcL|ABbeSCbFjI$A}6OvSQuY_F+m)vlwpVf1+Zl;+bqQbM_BCHUC z*U_t=dObWhq2j?4ddRDkvRvUtq!IV@j?GO zwPwSkCOeEeHy1|af_>RnGJ*Ex_IsOC0F?0f_^1K@@#BY%p+Y*+#-`l?9wCK!^&C;~ zhhUVv_xJ^yu7y zN=$#?!_bGgMQK`l{v5vQ8yE_WgI;7sAQ(mZ%2ih^4LTQ6(&y`V70?6kB(XNpPaq z6m~ae`nKG3+DR=)n17VDQcG7GS)xEox!+~uU{m3T@o7pf%)W!~WY0o20Qy;HIJ&*o z5z@w|rt}1LKE%03bQKg}R@H#Xh9GxO|J8BEA6zIUM*`EZTAO_BR~;@o;3WKY(p|M$ z7`?xq+QwryZT=l)4HIY+E|s}mpIv<|Elk=>GbB9CdW-fc4$+T~k3!5CE1LQPMz4Ol zUgYZLAjHz1n40Hco7P-H_`nG>1bEh7mj0(tpO)u)`j{h0KfH<8YWTS=zHta11li;- zH@*%-1kGdBBlrJr>W?KU%2ANECdI6Y)@l2WYIf<_J}Vq)7e)O@C_|J{1pB`CT!n64j}DJ7}w^jv|=&o?e8Rxh7uY2w}qr^(7oa0B+k_z zop&63M~Ct~YfT*r9GAG&hpEsxhbL>xGX*=cYMPp6`Hx`=i>5$}3WX|MR7jOcJ|e=? zik2--?|n@W+n=P@$@+B|Zjeh33!)D1upN)rwn0G6buKc#qgHLT18mrBpWL4#et{_ydPU<;7OCRsiQ>N7HVyv7YPfrlJKa z=db|nO{hI~k0D*%%E^;!lR@sPLC%Ha{o2UikV);(l2ap~!v$9j@Z$2-;^3e(TzgUe zq!Vzk^okCGWQc((& zMz%!WCP=6-?n1f55sAxW90X@-|Ln=&dg#Z;ho)dGioNlf0w2UA5=E3Xri?xNh47hHhX;t4Wmxq#kG4&S)!`{n!-f*iXmQkuItN0Sd7_pUi zWiC}%{a>9Ozhrk4SKBeQNx2Hw=Ze9hY|e0U-5(dpJSDeAetGel><{E#k-z%*2j3Y_yYG~;zyb*Dpv9z2UdN5uKcSqej-Vr2ogq2NkR`-kI36FJHbu2wnP(AQN>Auq!2}Df#g~ z^M~#eMnRYBvqoEk^YrvIY4vSR~e_xJxbuTf$WCIPS&DN;$v~sZ36Y-dp*R#|x0?-m8sbP_Z zgW5K!-IePzp^Lb(N@(?{qhrwFpz>LJoMgkAb2Mp*5UVjKH=OK=(3nJmka%;?CHyM9 z1hW4`uSiJeD388Hf??Yl-^XN#b}sawx|aH|lWUSVWqS_PPsH!!XuQ0<;D^xX*eNgu zjNxPL1p;^(H?7zZ1RviS>x>_BTIs()7J3BtQPYmrhX&X1?u3TYw{PDle5?`H;1DYc z@<{(Eut8d1PcY2NET6yb?EIzTOu|j`-3PE zRry3abm%_y+RAZDUz@~t^UYC9s4J`2s?*<&OHRkZ7x_e&6aHek&8hDOn{;Suh)BMh zWVMeTN72UNOp@)aqH9%-kWkFkhofvD_)^t98J}rK8rRxEOKyjIj=cwy8Ww4KRg_4> z=WazcD7~g_*A_OircdJx#4z_WeBMM3N@vq*taDhH+${~8ZfUwLnD}j^7ii;1MAX+G z#`}oO$2l=b#MUGYzvKfoqsegr`UwgC_zeYc0Ie3%`4en0DFZQEfcbnLA$}cM;^-MP zv@mUJY~OJ*4ncO;oK!(9>ym$*8k!g--LxyMc4EbNUy!Pd)SY}&$2F5K4O1t5W8}fd zk-(8e3g3(Va}~5X!`XMj4G&bAwCvV9oDS#xN%|+)fmXcccyd)$XjF8{`x|cIL@f=cSQUIK zY2yvkg3Qn;kkF_9L0xNvV_&6KjrUrD>J-CLha)4*5jn=rLX`|6GaRLsR|eN`Kcm{= zBuJlJJnP4){qMQyl|AE}<0u}9-2tc45O82y{UbKk0tb^)*4oF%$3>MOyBmP@TvYrv z#qbL*u!Q;$CM>`j=&?!*L%=%>y>jXNu%m!h+<+FxR@xm!+UN!xw2%ONnNJEGB=f#7n>6ZzwJ_L#Y+hH*6a%FLeiGm81(L1Eq z$%XfoUe6gRz^TAePVL}OaY)*5a&+hw63j2@cUM<+H>qW)_^+?8C0LW;iqWHMP%24)$FkMrn6s!F(ATYsKJ1tyveP=z}o+dytwXKOSr;?ySl zK=%w?@xF7A6KI!FEr^&HA5KR74c10}PXfB)KD-DLo2Ug{1y5plh!Yv-AaUM~LZ6}Z zv!FKfwNG%WDCjH9Hy(7iI?}-aHRzd82w2DH82}S|ol;f>^1f!Z{-?uMN%;nqxVC`T z64CFSe~;Vm6q}u8~SiArhx_b zxRovPlMuyq*bO>Oh4I(=MAfJRY3&#t=2V4^L<&U8z^-)z5J{b7cGU#!sEOg4#;BOI zLP3Aba_gGT(TdU$fCf_Zjs83}tdyq8`9%>E<6{>ChF7pn70FL5PeO;tP8!?N(B(KP zfskrVqE1`*3dYk%mJmjlbiYYXF)J`j!V{!3V0VR@BwjRnWr7jMtnuH(`JNr)t{~wt zm0MVT)MUR(fx)CF@3@3f;C=D-_GVF2+CU&Mr!v`2IYnh?BMQ>?-HMGCf@J{i(J8aM zj)Wfc^71mAoClH3Yc@bbW?^LjIy@f@2^I&0C4$sQ-xG~?5C|GagAhf%$fme+GG|0g+MDFg zjPvfDGMSe*BbqqK5C|*K+O8Z>Y~r4=3o1>_hXhcc$+gkijzTAfGlLt7F(W)FH#kyp zFKId)5llIqal#Jl-TZ*U5p%+j;Ds#;k6BaLVzzS0drD{;uGLUTo)l`66nMK>8NjU9 z%4d?!v}}m<$)5YEWxyhb8zj5tHaXqE%`Id~X3?oyz%`6g%`LyVYQL7ZNg|KZNf>V1c?p z0U5hCLkuL{z@VewPs*II=(EpXkT|o&k$*bOyG(H5Fp`ynfjXeJ6@UOe#X=4zSf9VY zzZ2WCiwMiOjK<=loV)Tf043l!y~;cW8ukLliOOkOLdt96##R4%yS5RGU>=8s4RY=w zNRY1}Fj2WmKLtB>N0)$xGz%fA_HVjANePKs6itinPrMHlis<5XURKZA-6rRKDbhWD zYt(Ta?znkyk`JfEz{&y>#Rg3SIYZyVK8HCn$QGcht0aSC7Dy%n*uwC0MT;?&yV*z+ z>zUJ5qYZL_v4`{vl`%4ECxLkS;N2ZY6|qCdeQ-s^MEBD17dV{o!iGH=o7oOOA-2v{ z6x0DJsA+&BZ%7eiI9y6Ky^V%Gzb?L>#SBWGmuv?Db>d}e`V3s&aUr0_o@!J51Bq_I zz!^?)VRNHIVALGIjKSgZp&&B9CxRi33CxAhyIcc)>xJqcTbqQWCH8&^uAUC4 z)o2pjfWgr;vmb_Y?c3v`Y2h1HI8Z}nh-&2$6JwX4D|%>nH3b<}4GN`a*P)N14A~F7 zrAbic4NoIMhB2&f0VSi%w@&Ww}cXC_o~l9YGf007plShat^|_ zJr<@EL1{O)aex%l_`dPGFozMy?EU>6mtpiq(5^)*VY1FCb|6Gc2?>*NQPnAt(MYVT zV;)y;d<<`GpNyv!ID%QvYl2W3kcBkF2n}@=6sEP4*UX0dHXn|YJJbkQBml$kd=z+c zexoohn3uu4mK)S?dJ=*#2mgUyMWx2TPbtSi4+-H%I)z3G5fTxg22utCMkrw-pM>j~ z8cpLEvh>!?UtV5Zu7T$!gq41|!Z`}2rVfX}ZoSC3xwu_E&BLC(&-b^*tB=z&Z$q8B*`Fa}8MEv-Q!9xDWnA(mTEh@HH! zI`*pC1}RM|#yEtpL-Y+WGzbE;BNbxg%VoN)fYK(9p1E9}`kiE97&QO_2>bk(pt0#z z^b?Z_%Lf=p|Be~Q##f~?yLHdU$47X?Y@X>4!nh&`gZNoO{>Ou0HZ=Z)e|zj9nOPU%Dsgk?ZU(mzJ;a zBKYLX)iuKa4wpCUkdZOp3W!GOmnG?McefVvdvV|4elQ_RO%v2uOd8m7Y^;&BEuAF5 zVWAjQ_bTu|THgbPLtwg=WqNypainM2(IO5M1yW3a5xL}K-W_K^r)Y)5FgRteHWp}G zUWX07MFFrpDLwcXkN73~kzZ!fy~|lZyF>(!cW6TV5-+x7#*tu%7taoQe#q~PV`HPJ zv_D|HUxsttfH~pjnAveRfdA}-!<#a$S9&_CwgfbV zJDc5Q_@JmfJ9!Yo(ngRCM7u4TM4AqL@(ue~$jIk5Ar z>lJ;_Mo3huH5+$SI1=qv*CvA7w~rO-{-T8AT&q8{J*FHZ#XM8TiIy}ymtmm!;t17LlIJHx11{}mR4*k$Jo0RQlYHvy_V9Trj z=`_8o?yR{3B`KgD@y-SsG@+$W*tu^> z+_9S^ajjlp#y6r; z6XQv!+Sq0X@*~-E^>Y(yOh;WB|F+Y}WovoU8C)*6T+^9Br7(yCmRv%eY)rnE%V@fo zOZ&|XDc6Q)1B9)v#7E&UM;$j(6)4f5@Jpn4gyp4KoK6YM*f{(5a!Zm`kv-lA0D3#~ z;Fik?l#qBy3l_rl#{`;o{gqqBleF|D8b-y?KruLyzVVk{dlZJ1;Ohv|qW9N0gvSbg z^6=cOTuP!2ftpiP@Rmn`8yr|mb_DElGW7}NtHU%m1pKzLlc}wgI1M8n($#fNsA@|7 z5ruumwFts7tgvP@M+OZsTv@tHit4mUIBg<4wT%4h&hR>}up)9QeRdF{m{E;kk)Wh~ ze0)4UJ}y5f9hEbNcPlriY!mr-(MD@CJk1Mica+_JDI}HL&74ms6IqwRI>)h2R0E>CB}AR zWfhe8^jZol&CPWq{S<3mQCBs&Bo`E|d5@64x1!)zjVGp&3q&}rtOEK|n%<7w)$m2I z7QCcumI$CTr5~pwp2!hRA}16n&tW&NT1W(464758vvAWvKyVyn(*JX6;nN8^hE|Lz z_93z^sn(ncERTqbdVKm*KiyqImKGfoh{>wiqS+f$Mw)-#v6`z`ntlHkdc>03nh_=Y z?1M3BwQH|wjV*-6$kx~TPvFkg8vQ4HFRcvVX`nQL-c+)pnoO%>lX99<%f4JrI#BGw z!U8QflASA1f;1?NhjS=H`+QJkwdJ9=CRO>3T%p&Vf|JJ>;EO}3h-DqK%x-T~M$gCy zb1aF*;4krsS$=(dd}zcdF|%BU)4>n-JidC^TaGnQi6OGforryu8;vT#`P)hN$sXGA z;O7;#>^}7P@oC3Oh)Tavw`<`FadKbc(NaB44K`PYZa76#Pu5PwI-R5iAs3G-E9K5| zLn{5qn``9DaG-?4H7@Fxy#a3(6+RK1ssl^!OP;b*o(ma-*fxY=URAIHp|K)h!K{c# zJVIJX>GJ+HGxu^$W2jPr4$p_WDoH{lK6C-thx+&F>B)iuiA14K6TP{#+++dJ&K5DOcTqvH0NLiG`4gjo;v$+92VUxx;~2FTv_Nz@X36XpYvQ{H(@1Vf$LhLcWWrv=u*` z@pQY6I2ng?@&~mVn0I~Ux`o8kxL|_s=|lt{l=|cG@v+UJ=z!YvR)2YUkviK*5sE@i zt!iRut|lfCw&t2$k{z&aw_iNHRsd=!riaiPG1V4EQGuqRN-hCAAi{J|z$CrJ4K&vP zH4;r-bBA&)$14+RXo8Ehbi?_xkwO>?c?>!EOtp^dN^R-f4RS>(z+@!O)h)t3?qcML zuu6{eIW2I^+Zb+eUaGXA-a_Tgy&5He(`PPXoY(~FK@aCrh822PbZ?GfEIm$Vq89es z+nbAUS?SEX_o<_201H+4Vi*NxUU;F8@+A)qNrKE59u7hn&ou{mOwLhhz=A|etvXOn z-i4__Rzw{O-Gq7P&O`)>-+((1{%=z4jX>UQH_Z_ltl1U3?fVxl*NfF%3mqj6u1st( zxMd4@o={D7|M&NI7_a6YM3^B_=NI$oYBou{KTa)ipa7ylsQ>izgfnkDX-3{g!O-|%6e0{oU5UwF*k+1M|KU; zAI>|jC4AeN83r*iH?+3-g#IuW^Z_9QT=nmBL+tZo6m>3fr58vr0k-rC90p+Pggnv8DdN9WZkq896bIg4C@@0z( z%e6atT@WvG9Z>ghC#GrRCiQF%crQFGaMmO^Y~qGwq58k%U7}Wo0jD1yAAG1;xR}X4 zCrH8U+)ub{&0(C5Ud%NG$I2zodq6&M0z&YjfT7t-RHg?hbQz;@kR`ekP zmhd717Su9E7-8G6%k(&g5wt~*OB*>PEuuqX11zkdhi;7m;7`<($Hzx35X+6ZJHUKD zjykVHs|SI!Ed;MamZf?%J_<{8iOA?BWL0fe)@~eAD|hEDa{)JhT5T>D>CFC05LaPT zm!_@I06siC{P^)h8*nc7Q{N&?_9~b@*EDx%Q;BVB$AA<4Omxu5?zk$Dc|0}48R#E^ z4C{59bnZgVHAgx5XLkIATtjx=gz(L9j<=fITo^&27i#!V-fG`D>}nX_$NX|FvDLt8 zjskJd(E+R_(obv?`xK3Q@pgW+`(`d+e{QA`{{ z;5S35Wzawb@G8sfe0zIK8|^xt0WNtiL99{DHNL`*T|$68R~`Y~BFszWZ(hoHLD4l< zE!e8TX5DM<2ccV7e`_adUa&N@s4`~sC*aP~=hWn|cu!H`2lsL=zH0K10JC@y9_(RR zX_U#(kBgEJwcY`_j_pchYLCyLardxE%B7oyKqm%+jV|mW!XK)gh7d9&iXrsYre(3^ zC`s&;2=6GTNhVYUA~!22{5WwXsiZ}W>&8-_WH2gHg$Aa4Q6F+Ro8a`AC3FateK znYR)W5flso)=Z^N&V|WY+gJrMaXJ(FeeIpO;oP?x3dTPXIYDS@;<<@$p<4-e_vE$B zmg(q#+69q!bg{KiqrLgT^dXe78|5e}icY~Cdz57s5z&*X61ED}${clnF@)h}niVoT zui(MS;wqv3!@lu-i5MTvvJorJ)JdW-DXJk1`S}?@Eu&;ZOSUp#=H!oN%`{QLX6 zlkdKK`O;wK1UOE@j&R&7+2trpt-Z)P?U!gHV=J89S~HPyMadfcNvtcvY^`-0S)Mzm zER)mVl%bq(c*9oq6una<_oMH;%_+~9v>g?FyPj#(!@N^AxbM6 z)M?k2Va=}PYl`P|4%9yC%|j^~d6R|!ZynCrSXwYL{#k5f9Ao`TFVugX%ypGy(-Mt3 zsi%+%v2ab=i#X^#3C1L%9Zb*pRi# z4_Wv1ozfevXljQ~u4-bZ!}Vah2py$zGRvJb4BFitk07dZL0ZikvPrL`h>W_35t$%4t+o5esbSH!fhYNNBvc&|+ z!`ZbtmtzugPCI_#PBNw;mkb?Xh|}Rr%G1x*1{+kQ!^vB-+PEN-K!PYS%iyXd_5yA* zb$)zm?`StsG~DWkrAo`vz*S!+=aDc*+(n4B);6_PGVx+7j9Ic4hM?+kB8xEM@+YS_ zWLeo*oBlwW&s93xRm8FvK}pN5(%c%oCEBMnkg+j~xX`!6YiNs3;!X8?#a>Fgrmwm) z8Cbqy={HjUfBg6{mIZZ2(q2L5x^KTTmbP!$_$784fH?yN{7hD$A@Mivf0R>A!?~auLy)pq}OE`4eg7`$tpL_q>qI)C^fur zc$0@dXB+EUsP~PjL8XjsGx;JHdquHP=Qp{SNf?+gd98DQ?&M6Nb`X{}q0?BWnlFu& zrAI$uTlqV+G5Y&Mjt4e^0`Ygg)0|_Cj|wIm(X}? z>j9s!^}KEq)j1PQcX)bwf{%>#xsYlqQ5p6o+h5KNVoF=KcTU*cezVBEN|NA+3a`2t z)egH;iT=-}eL*L(SD=uqggHC%5Rs}8Yvkk)TDB=xXhf`&At=?I5Zxv_3TcbOm0zc( zbA^#aqehLHj4Z=hxcp5~S1u|QdNlOJh?IzX5f>MKyu7?*=OXXzYC(6<_1#o|Tr}jk zYQ&Ba%kVd4fBGCBS)=>#6m$Sm7UDP#ex#g@UHy75kciclD|<^fVqn`*`{t@5xFQlo z3A8p$eiU{-RISL(oO}wO<5!HJuGNiNPFmG0V3Tg(or}PNM0rGrnJ6ELz3P-_HpQQR z{+aL?XOZ)D=q6pkYG3BQIf%z>^i5elL*b$XyA-+!%aaYK_)UOg_PhR@2y*eF&2B|| zv={nv?ybfpBSU#sg4CKiN_tCJxlTx2E)QkX+R?(lOUR6}%TGs-j)fIWyJR`+a;D(= zVtAng)>;4f_}IA71V`99WU3L%Zk=q0V0X#*5OPbz^rYr?bON=Xr-nfArcNJxZIFR0W8EDSy z>uVUEVEX5Btlqu(5KXh6tgwf*!nagkWnWO2U`~1R-@lyN5L5#U_r;FUB6M;NErN-k zT19DbG1lQUK5uVtAq!z44Y-2i0k{NRs#!_Zrh!pZ=9`JXW|PAGk8?x*TP|T6OMNGu zszfAOZyOg(j}*B128>1cm5w%otS^H5Si-r~6$t@7ojgi{sv=Qp1v-og(8OpqMCk}C!T(0FL-E~C=T-M;Yr6)<)*KQ&tO@s68+qXpg zDajLz8vqy~otO|$dimf-tQb|mfCYRbIIJd{h$ zE7WR96OH%QTW=+FQS?mhKJ7&PA#>VNA{`tA?3L@VAaF)~pi~I{_z>6FkbtUC}Plff~`0krzX9rbeP2!N2BH{>#o$}4G<%v_`aq_|d?g-v5E zc~jt<1cQt0JElON&*`q%?8ZzTc+sWzj_r_uT50;>b&@M1hjis6j(y{~$fC+#Wr8rq z1Es^*yfgqHNM_w)yMkfWjE)|F9k0b*HL*V31l&UP+s7|OcnLHinWEc$9 zqJ{kF6Qpm41JqVSsIDNiU6)2pZMMA964lfNMo565P8Z}PV-11I48}1{)Dy0GNW=B{ zj~_osr^4e55o$9E|`zqyy*h!D& z7@-I^fx9dxEpm-aFFR0Euy7(?b(N_==e`|IP|-$Il;Q)pyf{bOiAmwz9Tp1UWs+v| zr1Aq3Jy;7d*9J~GDFlWKJ*vKyV`=?WIP#9h4@qQm#V*xJ`r{Rvn&0%)YfPjXN>c4B zZ;NK3vPv6FbnR$bZ@uM(A)qE)xci7T13`nLl+UHMCBy|VO)d!_*(-}09FT(*?p^e1 zY7o`8m^6kI;0|j6Q-a*!lyg7T$u>)W;@Kh`{yc`02oLl3o^-rn9w(a`;S(E1MI;-LL* zEuk-Oz6nB{)3Jg)x>)4^CX?BtbZ5o^Okw zKtJOvNKY@Kcv=QJFCA<}WD2;ISxBQ;E&masSI{od0ieMDJvUNCIH&c4Fupy^q2_N) z2m@Fya5kLlX*j5dK+CYV?%SNqwEX!Z$o;Ej+H4t=oA{`vD~eeR+JXx9mY0`IJTHW`F&5a8wIg)xls#PuPc zurdjqa|Q4op|+2>`1C~j7Eh4?+X2APqs6jxn`tVd|wIs%{~xG z#*0kty=7T5tApenbRfk4&uBxGW1-$P(+9ABDEa27m`03hKN7}FbEW(1~W^T&;uD1 zxIEh&%)rTPCGj{a!hA^Kc`{w`5m?zQ+$p-3=i`dHZl_DgLe4O1W7O~t5e*B z|DqP~Tz5tXKdOUM4kLOdAL`_@+~LY0*>=20@;(HAYBHz*} z*}v`I_HUza@x|(-RF%)+$kl2yGNd*&BZo`*jGCQzQop2X5K%nzmb+1f zbIblkM;vb=a^j4Hem=GF0hxA&!`&N(k2%TF>?DTO_?J+-YmWqCA$^cfS_1l97gnGW zYxBf0A6&Voz=hExQm<`A=fx%J`#AU3+szC4jd4A=)^LbU{y@ifc44AEKR!MZ(lVTU zgye$lRooL?(qhxmG;^1bwx(`N*L`|=YAUoUBj?>68pt=<04v9^sD-SSEi~yN^XJcphleegGK%B)4g`Gp z&<$6()J^IPTwMHN#zfTM8?L!YalU~s+~;9m;jKGvzIuI@oAiBaVfWTs%bPCT8aQ2a zOvtc2-0Q5SeTW(n-*Y8;U7|X(Id^KLlDQhv?kYX*HzJ6Kpc2s-jL>jt{H5r=y}juW z{QUWIBO({DIxWTteYdL3SChYcH6pO6pK>hI zx7u+o-Qwfpyzmw~I1-2+GUWpPh1UAztm4 zuqR0;og@6Mqok>j|K5iG#MID^%wie+06hl?0|x8Rs2%m@8jd+UJ5YraT-Zh z4(>y!(_oTK9239(`YRY5r`ArFI2$rrn7ZNH z+uM+=a*(m@>&HO1E1`_un9UD5^Yrv2Jwpl~tZH3^t!}7#xm>vRyLvaFluP{@ySu3t z4|kisZ9k1y3c7mx>!~4{?hR0LmTOm1=cLoVOCnvOKFbT<-mC%8e0+RJ3=;D1aFP(a zSv@1+9mc18RMHm{nkr^MIiNgLZqc_CVh*t$AWmX|`3;^4n50bM#H}1MqfavlT!y!%X z$!`!ryr8}UZs79}p5PKL2b=IK=;@3SJ$J|W<6o!dI!K;7Q(rMM=-&Dyav&LW=HQF? zvktU<)aTL>YSENs*QjAn+e@*hnz9< z&WF8`O_F~4gptO!)!!JU7#NfDi2Yw$ci-N$(l7->U-7+Vin;7VS5haN)`m^}9Z%t+ zht!P;K=ASR_jf=Ofb!u?sbS+5a6~^KkPW~^pXfJC`fv_S;zE#3sv8@e0{zjySlYl+ z4$dW97a)wiX5r~%u@DqJNnGnnx>P%r!ch3>DZS; za)Z7#p29)nKL7mrGd%dBK>lv(qCLQ>Ug=(DvmOY^Jxhc>R)uNJ$%kK8x*|C9-fB*g+Aii-xt+gz! z-g@hRTBE|EK^!5Y!i@u`ng-tpJ52UI-0*RNt}l%Qg`CeCeuB^Rsi@w2frNZ#nTC6!N%r6F4zLRrEh_&j4pXg zK0Q4F<;=aTq%i=KZlw-Hdzq*i{^leN(H~;R!kb&F>+`u9&BU{i9T`<~Gpt~r%J?W@ zA4S~=>)V8#G_*JQ-{DdU!fHuQyu8L1Pm)KK5gX3csE4C*Ie|nJE%;+-xP)TEX57)^ zW&R3;3A>FS{6$Ygoj@{R zF15yqzf$xauE#}#rB@%oc`dGpnW7GowfiBF@qJO^Z{7x$YJ%PJ{{AjwqZbEU*oczI zyT3FMgh-Il!y>$a+7VJ8NlIn7YzbiR-4CpW4X`~AZlO`MBfI}WTj`~EV-*SXI^YFQ zPfy{{5#N-sT|@ZEqA#3<#4!{`sYFx8-~M)t&I|$BYjn6@+>#;0bCZi7yM_GI(sDzR zp9nZYpp}BqWKW)ta7ne+xX<;`!~KPePEZFCm{@7BF;J-0lKFTL()ku(T9EoKGbF( zAK5T17<_M^`sT8k@b&B0!>wlQ;dY`wSZWyy2xxVZR#3+v2L;HO{*w@&j5tG77rP2xOw`qq-%pwY*2=bw3_Y&^TW>e$G*C@pYR=X- zxD!_8a_Dgg^cXFIb07qd!Wt~0#4{h%Br&&9CoW_X!L|sT99s(J2M9m(LP9;}R$=zW zBwX&kP5xnm%Mf%M{|C4tMKOAqa1VdN!`3(fAeHxO< z_Gvzay}pH-VeSX@d!;jsJ(ls#q*U->={G{4jP3tABdMW-#zh@KgV}y(PEco;G`^m< zf2*cpB>Cd==g(HuZuNave+wJVq@Q#9bG2c=fB!z5)2aNF8yiW#CaUwp!$YK8-s-x- zF*vqW@;(@P%Fv`AntVDG4B`MfU^${ z9a^`56%bo(^pSG~a6`D7tfJpOKR@GN)|%Jfb#4sonr};ysoeonI5}v!TQ)A%QB;N# zwS-y{QWS|wHh)ct(o7MjbhBe)GUBFjTNV4l?9kD*=0%3rj11gIiv%mXkenH3rxiER zwH3$oRTr@CrhoPF#!G3tWB&V0GaHA|bc`x}gks`I{aT!5g-YXeOLR7$*`CBo z!5nTrvIyI9P`|TzX-@t0^b`dI?$l#gOuNKTbJpditcZD?BWv1JG28ZDLpQrm?E#6% zB%TiG9FJ4+I-GU5ba5dfTkt^^8+nlur8sa8|H&(qQ^EFKpR&_YlHPn56Jj|_(mh^} zv66?&dIIJn%Bnyz=xj$A}=d-l%WYx5BgifciwxFz_r1xTGy9uI$vrAbr{-oGRrH=K6=y0f5G86z4s-^Dte90 z#w0f4S2cZnd>}_aMrxm+sfixg0_?~xq&|JA;=L{ITu{3;S;Rx1xK5~s(F^GFJN>_U zx(@LmAc=2UQFyOr1WKAnMu_XwE0_uLqnWU)v`t^(Uf7A7Zy7A1GZ>L}J&HyS=#*$KbL!DX@2WQtx6qQ-a&FQ?pU?&+I8`V_HjF>T02!3t21-Smnk%F;JRqUAK8~Ad z1s(dn1^7!iN>-B~%c*5}jSn*^Za`Kil0nuf+;f#pT@{fyqjE%s@pOD~*^1-{)Fmky z1nrefHRuWe@BldQxc1ZQ6FvI|WP*yl&~96)6EvF|-aUr&#+kTx6eU>fN9vkVVa4uf zuhrG*h4)U0<$i!P&7!Lqkbawr?u-p~;T|NVPT5WTdsTo^#`yO3_QxN8+;Mm{hFV&~ zzq(U8G#4Bm+(w1-7wACN($mw^>+9=HJJ+tLDHH8pob?BZw}2x=Q_j9KoupiuIOBd= znv-Xj4z+voi>>)emdNlLsPfLmH18e|n7!l^CHTSp9pbj)*HSMk(Y!|>uo9Z2xp@?s z>ig|SdDF*&udxm{K8Ejx+8oi+@@1Wr$X z#XZScd$eJZ3;Sr8kC!;|ZAVtw=}GXwnd&p&DL=F{|x%zK3F66_Zc zC?*cx+o!ORVWAgxzpS~`Ar$XUL^;YNJw#Nh?v#(QK_({V)bBr|34^(d>Hath3Et$- z&(FS4F(a&XIC~B$L#_Q@hv>Q&-HOIl|I+E^HiKW!Z_v^A_xIRY@{Tb@Dia3^2y(0{ zCujv~m9{^hT+4BvNqjeIq#ytwgR~|kv#xgSxT*j+zJ*e%VJY609@DV>fkHXvGCMq@ z<*L^PCv+h+(v?=uel@~PnVL&%>6O{X9r+g=XZB%yOboS76I~64inOgIv1+U^4kc=#=rUgx&L zva;DvhR&1`qcVuNlwqfbsO7tk3eX&8A%;H?#Bd-Hx0qM~y+<;n$?0^8iM0Adi&mrY z#~**NxwH|UpPy$p&}i7QsWD-n&b1P715LLLD{%FY48Z0B0Iji&oOa_L24hF|sUIwr zIEFs6vUo^4b>?XiXQdIUdnIYL+xbN{oW`^6Q}bMOjx*W4mF0W?`}H! z{QNw9tN^VemLSW@ZRz?}&S8`;7RExKGvjSp#&f~#?~cBI|4y6_4+56FhQir}NJCOmmTiU4=gopT!9u@|0M*lQirruEbVaezK zz}6h~Gl}6G`x}$iTuuPAFC91)=tFc4(!Vxp6w z)>Z?U-{yj99MyUvtbEQ*dlU4f;onH27DYN_lleVIFF$9K@$yt?_JMEU_~W56W;*pH z4^(q$Q97`lYu{;9wxZnPY2_W-i-%>iLW_pgh?K)6K4-?BVOlFo+U5XFrdQK1#}cr`(zMxq1o!N#b4gILBT_Qr|+q zNOZ4-p38n;NGl*9Yzei~^$hC2xqaW|Z*OlpM_O;^35&k-)6EM{M8RQN)Px_W0OrE{p;*OH-z!iFW&d2`+E{r%mB zQyW8yJ8MXz2^5X1=A6&2$B~<+>7WD^R~-eg?d(OWRx7ALyW{*AjV~`Rv)`GL>gn&S zb;xKlUk@vtHAjdTQPF&0x#x;g;W+5b_PUp^{sS?7$!bV<0`gY zNEjpdZt4<;ij(G?me}`Pj9KFq=(e5MUcY|*;%Mg+_2IaFuq8Von31GzAyudc?YBas zgS-Cm#~*#_1lKZX8g>j=nx8h8>QN*P31tXA{eqXu@`!BiVzkj?VdG}|dIYXazcce* zq^A{M1pa{G*BJ*=5fQ8;QDBp2E!o)K_F=<8~)N392N5^$}3BdM*Y-d>P8h zWH88pjIUuN8ni6N4UnMb61pD_zkq3XHKdOv<}^CMo}~l9wO=TQl*OiJ(yN!tD=vI-1;xHmb%TA?w zA-wMytNX8t!ajkEX9{;`b7>KVpAo)YQCD28%qz8}j~`umLybQkJ)VUyMYPe)z*S;; zD=U-=9N`Io_1aULvU&z2pGsGdF1%bG^pAUC9sZRuc!Ld!tyh1jaE`VMO38 zo#2v^tU@^+xafnVa2yO?8t)8-$8xM}Q3QPeckdFUk=jbMoCxqlL`aaKn21iR-p-oN zr-1OyA>BmNITq-N|_D7(7eCD+hs=P8WRV? zeZ0^hZo{o*Y#}$otDOALGm-tlTRlHN$M2OL)mfftNNN7XNkMK1&NU#bI#t$#>0LO~ zD9)OlpG?)FmpFYwl|F|d-t`VjDQ3; zSGLxT>*%Gj53atnh+E*aZ2~48v#jL}LISr!#E?|W(a!PIY4lqcXXCc*9s>F^_xpoK#{hLlQ{*g=CXKF=BP0}lAl!h3zIOZ@8 zo!vHKC3N--A?aKHl9A!gZm+Mem6ySE89sVm;RD^fek&})o3uVM4rsrQRV)h%i%xfI zZ#UlONDegv7%k+BnRpZI;dWuyBa`?NP)&dgE^0vG#3xB-3l24y^IV@y3UIwO=XL+W zIja{=*td@i0aoFABsWn>BW{l$xnMz<;fR$==Sus_2o6!(Sor3g@D9X>9{T?N4zd%& zi%8NTC$Sc72MWd*S$BMa%DCypbi(O$aswPPqiKjq;iMR{e$=~B?CF~mO}V;LP$xPS zr>|eX!uh#*ESrD`#@KDmcB|;IU^-1vUDBbp6xZ0A*q*%w7~sLH^-FT|-FuBHtPn0U z%R6M3&s!Boak|el>5pB<5F{k%QFEm-2Lw&8Qqf}>^Uj~`${#3 zTR8L!>$7kSXVdpe6rK>}zIBc$QK=^^I6L5~#RVddOb(Jn+Ic#F>F@{ENW62=mO&?= z^w$fxi2rw*D;OBur!PUE_^9Da3x$vucI&s{la3$oR?iDTVvQcSX&My)}&+viZ|G+f2n0OUebz^pKvQ>^l#uZnw6BHwfS8p=+;U9JO3a z)q<=u*Wg>&>2k?pJO&JlEVvWPX-zNENdjIM zQ1cmu=A!kU(fzTe!HnBW>aun2wzJ6slmImXl+*Oiogn?VMfx0Sm@9pQ8H)jL)hymm#x!n$>W-pYal zeJn2it2rnnuQ^2;QRphpwz#Kok_H95gVWROk25Y9IlO)5Z80?rtS|2zVaaYRVnaWX z-qqRs!7N%whkLu~a)*>a|5tY&VHF~YM)cs`E9cqW8*ebZdG=g)cIMJPHOe1wlat>o z2_*iAc8(H8Kw#0=pfY@R7Z?^r>J~SVIHm*)Qpe$uy%6H(k(j)#VPg(U{aDr(r4%zdXKWEd9!P&^dWnTm*>roXEHJ7OY6WR$PF%1taK8MDcQ@I z^ouG66BCDLk*)Qmd2zB~IBizTJEi(ETK3lBbK!9tVu0@~-U7~nU zy|o=BoGxMMJCnCXtZ4CI1=}U$N^trbyMd4UOxF;S^sqq$YI3g(12TC!C8A0seJP;CGlB z&9EpPw>!UX3(Z(|y7#`TclRC02>JEv*W24$%#YYIfzFd)B1y|Fu;!ouXKQL#uw^Oh z^N!@wvx7ywrq*Fgeuyl4d3gaq8dn;iGkq~(r?9o%1Xul%TqsU^YxxHLK^oxHThX;U zbnA;`vGjRh38d?L|NQe$+mm!laHU?wL58A&g@XYpsn=P<#o%yGTnPjq$%4W38kiA- zVAbUSnA&tip^BLcWJyG8+4$UgG>RFc6d{J)rW31X#%QIj&0>6xR}Ll$KZ74Auq6-VboUx0G4B7R`0BTdx2z0HuUvudcd=>B%e#O7!=(RiP*%8*q zz~OS0vRT~${ChqS&O?h;O|F?FRhckw(uBPXI@bo^2A!`Y>1Mc3=iVCs%gTUG0B92b zqi*>A{th?xhgiN8&jL_P+?(X+*)^i=5LuiLQZBaFrUaYHotXt;v@LE&e z>tRj@GmeRM==c>bo_GG8FLVkn=M$VMa{i0>DqPiYhA7Q;?KN|E`MetRNE)a|vJMMO z%?%O}q`SunlMcKi(xEnscC`?S_7YOKuzuInI$YdG-oaJL$jY?hF6ms!R_KE;yE=d* zI#J?O1X>D--@Xv%pwFo|@7h0BAb9Luid98meqG(pp!KsX-Kl`LYVUM61~s}(d?mM& zyD3W=n;%=W@KVLh1#G{rB|a)Lps(E9NC8?h4l0U0Qam#C1=g-}ZKIp33$wt9%H6wTvj&^OfA>T+u!Wn0M(i%qT zRco*n8hA@5BZt3_S=;qyJ<^d7)Y%Wy-Y|M3M8ru`hZ!U0v z21-PQG8QH}s~uP_z-%sQv25nf{mgUefz?hN7%>`@oDf&%<$2F0z*0Jx6Z6#gE~J9~ zkY?Nm<}&21sOKjl49J;VInY$B!TJi>Ta>FQCh5I}ib+Pp6X= z9_vfPbwbz1@_LeVZ*OnT-=|SvaV^UL2sXF@tD@q?n`LdFFKMWwxwXOFO^w(g`IVML z=cbr)=Z}w%5!Vv@Zq8{kecp$Z-NjMu9gx(>+nr0|#G~RK24P(Pd%=r@8&8xt@hG>| zzUHI)uBGN3UW(|6TwNni_AW7@&ajZC#(8QI8Po01?Hom37hk>8FTx8Edr;VT*DP01 zAZ(S#>=_6D+(NWdSJ~HC?Gi(6Yk2cZybKC4veWpoalPV1qdpnQ+F8MlDOi7&vCpQz zb_D)#@kOTzs<*O3jY@LkuNiHZC^wn0w>s~q)XXORg-4v}|2dPiKykh8)EeM~U7`tB zQc|%C))6I+7#+L4#(&OKw+wF;!OJoH+4~L+BrFipsYLJZ@8H4rEm6EYRH+oEVC`&BBj?fBZa;c|U=fV}6j+J5`24u4Pd5|H=1aG3BJmut zFKMt97CM@!`V=p^SCZQ7fO<~RxSE~@2S#L2gNcQ12!CgIklxYBI>fy{&qRXA%gf6# za$VQir*XiWzvd<*+B_*Xxo%eL zCy{L|%z;YVQJc8mk$_9kn#6{ox7yun{x@EWnsgX)o5Dq(;=-|G+e>2UM)sU*NIOBn zX4E?F*aykI$^JZ3-}3n9nXDDmxuPM%+LmFbcB{_^-n+R}2>?JAPm6xK`m|P7IDj>U zekF5DPp5AZqK8a3921D4TNe^FCNi@zgBg&%eq`7QGs3)%PW znfQtiLGFLt*3@RSVDU@<@WdXOjT^6LH6ApZF{fUDWv_( zl5$36>|CY~T+YPu?!DI-dRy9MMuMpM4zLlfZykbU)NU4*G<}*RQDFCEt6_)SE3iO} zB}27ID^LZVa$eWTBiPSmQK2KwqC$0MXU}W2Y+>BKe*G$@2UyiYiy5a9KBhv*`YNj^ z5(o2sAaU%rK+($p{~WskMEh+-rkJzLnoA=&RG?1Pf)~rk&BKx_i|4B37$HhLfoDXwot-OQW#-f2w*bKeygOQC`tRrGXB~~2=t!R<3^ah|QsUQs z?)&?@vnb+H=N+8*90A&*YeqMxMF5AmmDA#EBT%)?I~ecVjdY3*Fm^Dx5g)JWUIg64 zT~I9$i>7?~FTtniglYodfWG~27iunfUQNL1rf z1npfy(kWvyuDg&?XI2<-rWbOVX@hq{7xDDO8Ckd;&(>x#cZj&0YlSA^@kJ^!hT@YEwM^%Ib3ytEiuIv6$ta- z05vH|<46mST#{K2j+o1^ioHHpPEtc&OiYH5 zE{*RdHm}3?@$&LAMJI{tyuIe5`zCssT}Y@o(!Yos{8ktpw(smdvzG^-QFK%p#LXr) z!=-B}iXt`4z9%j;!ho~DqESf_H-{pc80SX^lih8$Ou5z`tHOs+NACj1v+rp8T1j(C zH6_05u9A9xYJEjK+9@vMFALnb zODLEP21v*I`+L!peT5+z0FV|P;0F(`IvOd3vx|5#2!HOu4ZktWbwU@QAf@#Yd%oM_ThFw)7} z5w-5y`1|*7e0;d`77FiKo!j67dwP1xg!e}#l=FzKt=uE#S zty=7AS1AVZ__&O2j)_bcMLCD~rTepglR%sP2Sk+4Z{xi+VVE3;rM% zisL>LH!N~(mMAYWBpEgvpu)hQaDup}6JJT4B?~Dgg&Od9Uai7uuJze;YB8Nj8A-ji z-WDL_Vn#OAx#D<4dN4jOFtcfwHW%Xt;Gmt&PQhtxf02~5G<6m%EMc}iVE1&~VN;Bd zD5Msem(e)lBi7jG=O+=SHXIE2mD5*9Wj&KWD8^3vHbbtgpx_O`z`mnPCE4IZ8%t+z z@+|FQZmkG$tHi#VjHFxT1$b&=vmYNH(pslmG_Jy1&7p=kn1yEoh4%iX9U-HYjAtA7iC*AF2hcJ!`N@4!d2zloCXyXWCwRppItNMwnw z@RhoB97a<%t&6mg#IB~a8$uh5Hs_?Wlh3JN(6e3i&I`w{b4wQ&s9VOvg1Nr|4sT+1 z!=)O%oFx%~SJS@|kTGJ=2Z5P1BS{vrekevD?{cm(Oow3$q0S1-V$YIM;fvB*N1MVa-f=!gX0z znY2yP;-ok6bcfolsQ|{-m=X5t!HL``nCkD}zcr_QnEJzSh|xhJ!aAap+^$)45=z?9 z|OENOq(8pLdS}JVbJ60)b-YWnFR-<-e3 zn{YC@gv=B`s5>Qg5ioeSCZvm&Xg`|y-7?z2lDd(@~Z<)Hyxw&dFoLc+X|s_FA$TYMXI5oHUTW)SV8)0sq!HidBQ(1h?zgGu`*CT$&M&>SPz9)17MgodJWS zo~}5m5uk*#xnzWKf9pLv7r1$%YbvNF2vw|Uawv$wsTgB`bIE$9o4ZbtY80yv;hu?`StQ;?77SKBPDYZbkxl`{fs1b(Jcl>Cf%! z=9GIskLJ<7qZDBv2u9x-@ZTZVI(aHuYB>ut9;J#_gG_g0O^tzoN8DL*#P_LmvY!4$ zA0HoDgzXaG4UV%TQULYrdgV}?758H&3`o3|^m35@MtUX_V&h^JTCYC(noiO>a7JtV?lD$nr(D)bYBv)53s%X{pIBaG}Bve8*{?( zPunxqTw)-kpihikVPY*bl5`TVPeft{pCEmRMef!-~a^Z8NTIwgWG zAyg9`XU!#^$=^kDbUqx6Gox_QEhIismrKl5J`gXM8GaM`W>VH&Fb5sgt5RlLn6jvq z$iC=MW6-#{5!v7vB(sw(E=j=$@(5Bth#uQ-sB^fvem|W~#_vB;mz%o-Wh5o-bmNFo z*by^YD;}7QOL`hiDF=V)X+=VT9y2aoTK8ef7S&Wyu=kR&h;~7-h?p11J*`*0O3TX=#cGuk(_0GFLa#LO!-vj!z_iO$<{C9Nsiy zAyEUvJtXCFfBIya3cQ~4S$L>8F(5Y1WLVf z@E0WsUqUPhP-(EEEfL#*3#q0E<-LHPShgO+B6ET~@aUR|kB<+{MH|^!Yl%7=>=ajM zbqT`)NC z8;JlBpwooq|BzN&NHk^K-QIF))M4qG8@vBuRZUD-rqe@nN6Z=p;4D zZV+}$ysDPpMvUK^jJ^ZZ3^`C|BV8H=|1G9lzi2HHq{K+6L}aPo#0F=SNPJ_8J3V6P za`6sisBnoM%^N!EnY04!&!MJ8_V)H>0JZIGGj?IS z_4ghH-p)LdD4GcTtih*ryt(wj$$fsu-D+80MqWBZDvSh?enl9Fpl9KjL?)5p^T`~l`0%aH#DD|Ax z?6_~=zI}dvqH0nPG{SF%vP#5j36pJKOX5fl9hZDkhKbLMGT|bDoik%Y04}L4JbZA{ zUZiOhDf3aOBS~ND)5&P)CpryBKYSx{68)axz%^{%JzD8BB6xm&-iU|Ztu32#zU4%< zJE9N9w9n2 z6xJz%Y!-QhHQSsc0mdasO4^i}im8ToKK2{22dxmp_#qKuqh>)bDm1(Y;1>)ZBbe!(~8CCXK6Rhwo6eri;gftvdL*p;($qME)UNaY*M*Yc`x6^;zGp-38)}o|eznqp= ziri{?L7%OlR7yJ6vyD$JlK5X@r%@@7&e{J7)F*G6OJZQB;HRXQJ4Da{9CKF%iTfBf z$HF>I+Bl&YP2`P+I%b1pzm&RAAcJp+AOHb+dWJX?)Lig`_f=Vw^k@_{PvhovO2!N; zEB56Xu657fmFIGE{zf~&%fP>Q zrrPCZlqh2(k$qq!wL*#M`=XDJ5AjNu+{ZSzclOeHy3=gqNE7) zL@wcvCSWk@zkbiv=2xFagJC@Sl!f={e?#u9F=22t>G9;Pt><-)GPxR6oUqROHRNrv zP$MRwb#!)t_4Vjbi{1JRHO0!*%%XyL_5Sh4AFSAziOGdp>U6j1`yv9uHn3U4yeGY4 zE2E*MPBt7J{oFPee`19*kR_^rxul&{MD$YE>JfYpbIf7&>GW?qiuj7P;Ku#?-Ir*f^P>HYm3O;x-Lm5kP(AmWkHljFRRqx8|j zkkn+6s@A?1gA2`8M=@tGLyEA_h`0Ln>z7uDtT}D@oTDuq%^jLYI~-~|BAf1#H{xhA zOZwa{I!a+0wz@c)okx|MM;tNt$k64m(U`Vl!Zx;(!o4}ToTISU&WBP9{rUMRIf`=u zg`UpM%{f=A69`PxDSnL`g1iY%vm=97Z9f<0&S{S7<88SY;uy&Y%_X_InH*4c`@Bc) z0?DG4-WHn)GO+fadY!no-+nY*j#AD#v5Off7Iv0*ja_Nc*QP)I`%K&u16Au*vy8pU z2~0X(t$I6odhG$hezWb8<-+8aJU!Vw4|iXk`^kEBU-w$ zv=PK$Kaso!ygFNHchF0_ASomoe2IAU{NdsNW#HGZU!D{c3{9N01(Yu0k@ftSq!mbe z%Gf@dFHKNXI8kx26VdcYVxZI!)p26M4eF(Cm}s6!Nt>npIn;pq6T_;@7&6zKiZz4{ zar3%YvX1|UP?VN)ll;Sv5G@Bih(t3qp_sE)JlaTy@yB{WT+xcu-%IY#U8=Hi(=->* z#DQf#b?c}J&dmoQ+&Tz;msQ4PKuL0Q@q%fTu0~&*i_5rpkd#O~N33@H(TLHZa1fod z=gYNJI^q5Oois6B`}FjrL!Y0Y+U? z2JF7(G2O4ZI58;|Nr&2wh-!;**Wz`BGmqdQ zlyrB8j#j<|sKY|^dP5Vik&jeL<})v$w0Qgnx-1Dm#*!BTdsf9c!JVM>2u*bIr8|-o z-H(qCEJ|x`KnWYVB&vCFmUYgQxnp(dxw!z6k~Xcl?vby>a;geV_siTwIJTz8A}mnx zP=IQ=&imim9C|L&xJ5V0^mm}g@Z)S_bT1>SG$9jBG8m<;J*pMg)m3#+BV4GDu~)1H z|Ld9jGGwATM+_$vEx?;gCz^E}OgF7A_za1k-6_6bzP!G^R?>s@V^e$6XF4012~c&<^AX7aDqqHRCX&XGI)LF0eT)7$_~`kXDT0wkIwqv2M@UC{$)^C&VV`lNv7+GdsOGDNi)=4LkC6?IXpd+1A@|)^`}Fc=%eXQHXA`U4 z>dW3I@#Et|-vw-zyO)?dySEZ5Rp#R(n5DS8%UuB5v&X^(`l zE#V^5{q60of|aJNR41hiA6ZkzfHDvx;X?x5ZWgt0Ck6N&6-8&G0y`c}6piUd*ffW80y`*+4>?rZLm)H$T4hm69}fo)yrJh&YB zq@;~gI@D$$`XrEC1CqszH>aLd_oNvjJ|oP4c1F?^*G98ejil8A{p;3{)14+XAa5?k zJBKllh+9gm;&#Ld<@Qg9iCE$jB-vAof#5lxufMgwc4zduM#H@w{H4tW<8}+t^`wCu zayWMqXTt}Cp_SgWDFpB{o`SvtcF9MVy$@unH0Q;9?Q8p!l(ZMp)^N}6ftXD?O>9c* zU)O^4L_mvr2q{rpRxP|?@k|ZBP#<_Yo!Iy{0W}UW1f-7*=}k;{AbJD!3DO6eOAn~_ z4B}JMo9j>}sohtp)7(ko40MxenbEoRR`eCFYW@nemz0#WSxUY<-%x(};&S)t@q{9H z1?FXQ4v)AK^PgvGF8DsvljCmEONOg27?wl@-C-I7Re#UYz{uV--RJ4)=@{0L#!B-` z+_*XCUx0*icoz)0^v$Ilm@e{EhO&4-`rrO6lLf%GvhSGbb0fC9)LAFpYP{W)z>6=K z#vQQeq$z^6_+z5v(#d$!^!M}gvu?Y=()gsLTghstv%JlYXipR+CLSE3j|MrF>8>A< zwx`ocT4ii5v?)U4MLW7lBZ|G7<|TR!OA);a1dJLJUzf!Rs!U8cJ&(E&ANr%)<@#z;W zhWXK*K-*Utq!lEu4O;c?pLmnv>fYiD`J{CJs}S;lBkLT`h~0d3v@Bxw1BFr2yhKd5 zZMHCXnzg0ybosj^z1 zgJ&VGig2x5OU$IX;JaJs60sNS*PGaY2Qwm8nfcC`8H7;$tj^~m^}!Lq%VRf3^mmYh z#t0y6XflOnrpxD=1p`a#Z;ij+Vb|+QqY98Yy|>YsDuoG;wg-Rz{!Q^0i=0I$or4U= zEq{@{;vlBdcdZ?2%n0hYUQE;BIpSLQmG5KqTlbItxLoZ^AJxdyyTj>ecxExX z493!FJ-NEV=63zLB!|+Xt*zbV9OcnGy3L~*;+TPOR3Y1Nfyr`ye}BgS8qWzxh4fm_51hlIUOt0kW5u3h|{!X3U*=n2#|vQetv#Ve8Z%@6GdvxUlTm> z1zb&g2eQB@u52IhTet9O2*Kg#mh|;%&UkanHE{w`8J(o>9Q(y^pJ{l-f7(fBgbd@4 zc>MWrJtec9YVOLE65+J%ja30!Y)Ug^CG~8PiEgds0Mm2<9@k z{9mdLNj0L8_K?0m#SO(wWh#qP57%8#5&n6m<^o;@NGjp7|GAJMfuci=PjK|o(LaNo z#g7G1)&4SEig@>i#Qi1`$v&7p{8w^rk8Lik=hGR`&0V zRn>;#9WL$(73;N^j=iD1)9|5llwzP72TCUv1ewuA6`{*MFfLMRuRxk3AO+%LLuGOl zALX;}4zwm9GqJM#FxfQ48O}*c+MijPLol7%fMvKvNSH@`8FA0iMzZff@T72Tp@`sO zLr5UGiF#qEqx$I0>9oLW;5hT07j>D{?SCmNek%me9<>TaSi^{R#mFPDNxxcucy~ue z{ik~aT4pS!H~{I39J{8~ugg`mXJzW3yN_5cT6lCC#cC=X4aHiexEpQH4CE2kn1c;{ zOojp+l4R4HwkX3iwm_#9-8Vr-GoW~?Smd_zbqKizLtdgqPg2sFL?K}ldQ7vtX+bbf zpVaozZ6$Pc2N$*vkzypcb;>FBH8Efp$5EHvr``E9bkwUaV4$mcJ9~B#dCI5L>G$v7 zZSOxP_>)PR0}DkT;zB}(qRrOO6{%+U{QO+ub5iaQaVg-;fbU>cgF_-spl@4gr!Zv| zhg$3lpWd{jq}@?E)Mg+AULp3-Kj`~|y9zk7A(n3yztQg&yC0@`>%%j!(DQk7Kg6b*V4t9cZP0uhTh-@REoUl<1sx%t_h zU{PY6JLNkGWk9FBzrWj|hObjg?&;~t78dExpx<^r2%}H8>J(&2Nl6>0WW+O2B|heU zm?In1 zW#D9}>503*t(#@Tx>~BR8&S2f)6$!^G->ev{qKLbg_Jfs?6hr%&}{%Ky%XTMxd7ad zhe&z|OTEpOlalsA0H4LZ(_Fm&4x>)liQ;$?OnL;VYDG0%u|4q<;Re!+X-m5ElJ_8+ zH+s{IOrpzacNo=FaHa-UCr~>{gnP9q(0~wp!lxGBlaGxaPrcabbmDJ~tsQMThtkpF zGeJ^AnM{Y;qWh?#>LC5m5b&23W|Wq$i#MgGX^O$QZfgqwC`_DFS*eBt%cNtqBh|u0Ue{Wk%GQd z!Z>?o-^|gze4*K^Mh^#&)LF*~?@RO$z$fKqfU1`m+^%`_M_3U z2giine+Y5*yS67@Jo99-`v>|&2*j>D3lf)7KS(!=vXbc_2d%llE)%%=@#Ba7#fJ#* zVgTE!V8mldT25o9w5YG{xVhx8QwmMOAPNA%l}q9$?M>Bd6(uIAn%c4y?~^&Ji96NK!Xz-3*ECT@g@_Sp3jmCl(I z`iiS5ElA~^HZ8qBUpu?iNK!*Ry}N6YB46(>W6E6hNwH4YAblo*Bm8m6q27V+fikCO z6)nSJjsOjF`_xKj4K!zOud&+?um3Ty@$;K=>Qg7KO415M6{qGxhDy^_ii>P@UW`~l zUzJUB0cUWfl_pfX3`r#Ej5j&Q{78f#Zu7%p%OgJUhOp9hM5sxwpd>m=Le0E2kH|07 zHik4RHh!pnM-U@Q@Hp^0QBu8dAqsWE%gYOR@NPhl5VWWoq9JoF5v=v~5C9pBjn&qB zk*C&m-`?JQg5DXOoN+7KDG)^?sXVb*4dulWrwot)!BIzDLmql_PgC;V|#n;Mh52gk5#S za{}+*#}jZyM~@FlovzkIhto|oAbqgVaVHjs96#p;oLtZc4}T;VJ9Y8z znpo<1I!N;@Fx0fpjmPx#^mNtgcE2{Gi^{eEyRg|33_{W@i$}Va*9l$;dz!F~-QV1o z?5hWh)-A4KG)W>W82_`w&T>z?4>Y#!AF45AsC7ucfWF^c;>yEs&b4r0iabcH#*0Bw zB!Iu|PeZ%DW2&j%3gN3y(BFi_9J)pyfdA+aAHs!VT$(!oABoX6-l<82=A+fs zS4jX{V3oeTy`gBuGc~h-_tAPn6Uw3`NzE=)ayB#1eecAaCQQUbJA!`x{F$RLT}30~ zeYDDDQ`WHyShJ&WD=2fw_*>l#nAy?f=rlht$lGRr+X-TG{TTi7XfWqN=t~{1Ov(XV zigza*xL#xH%e-jMj9?CgNh_DbJt|v6{Jl3Z?~^{k2OQ*zvq)+P^*<2LdDrxDF{_zizI>+>#3=^^Kf9kl*t zM+q5W;w2r4zO;FIp?T!dt4EDJH09358h4vQBrYyC_aH-!AZB7*j9I?O`6f%`lMH{J|6aSCo}Zun70wO=OLWn<(sL=&1jLO72yujAq`2M~d@31-$U&XpWOFdl zh-y$>(eB}k8%rnLU4sI06y2UqqneSv2Brh=j3%Q`F4kx6{ke{!R#o(NtTxm$XEzsj z#)*b!*{x}#S)|3U8H^1#^jscFZYl0mOh4_foTI*@^rLUi3Fa%?lA2k{iAaXcIeN^a zS@Jmp4eT^Dkg(RG0ehvM1Ozr zb?smLL>|FadS@3(#BS)|Jyn#{1CZD&DlF!=IILLwxW&*p1xX_|Dc#M*3h{MDpUBdL zh#iNBM_wm4={tcSeDR~};4olf`@*;ybrhtJ3RXz`!vMO?jiv7UT{%riyoIyvw=c?( z2>IoO?Nl}WH+s{OlG?IBD+f~+a~CGrPG#B=i_>gn_t zb!oPBPBOI(jC)ffEE3)T!!l|5Dn2Enj7a~ zDIIDvkYf(Z-QT^9{44^1JQP0bpda~V1wM$g!yF-W$F%0JT>|lo5$Z=%;T(c6h6x~l z4KCjnIamF=2VM^v8FxL$m1eKyIA6@Z09>|A*h^SYME}5lSwY<5UmnpJ(>NU!-2yL9 z{6+Q*iLQ}H@frnI8oEoR8i+^3I^r({V#rY`wrWZ1WmAN6yx0iMITI(nX-O5L2+@3dj9j@(=KP#s#004z;9_4zJn$;*z+u?}=8f*+gs( z*mhl+v+J#jqfroo@am&t*%A!T&(G!vb*EUC{df8`B%a+#K!Z6QXOvP#|6v_?Y3|$G%bg|ba$B_sGHa@eYpVCGm@Rr_wo_+-Kql$qgc=AGhf&sL<;A-i;^PAmKwe)8I#O_PHnJ`O(Gil;o?) zCN{|m?5e(#S#L4zy7_CWV3G34-Dnz^j4r9}-H7m8S~C*X)Pahf0&ldhFEUV?q+4fi znUx7&fQFZsaj%cj8c_@(N7bmgpe05=fa^^|LHFv7%#oLw8JFvhiDBdOYC?iJ9v1q8 z+dF9v@4j9x4FP{f|0Q*|ofIFXkJpJ?5=GAMr?}m`!}F09JKWCW_#*0j?ODTh#kKgk z@RZrvgx@O40z1gK+)gn|5F0X1fsF4HJzREC6>1VAfM1gT`b>)|PKYRko&t|XX9bTN zuNA`;-_7pPLet|8goWI$no8lv;m>xEjZ@WDCS0q{+&z?&(xLWnL{Zhe>9}mpaW!I< zWQu4Rc0MuL!IWiS&@_s|=IYu*W>Z#~&92&#S}$!$8*L#AswjAA&cU~vkfEbHqmxjk zi^WF$=8!dm+oFe?sGS{SjAic?Hezc?`B1xt8^diPlw8zPF%zMh z+ihoUu(ik57P8+e-r3J}Mu5$v246?s0K%acfDk&9TtV|ZJ_rJ274#~Bry%AiTjT+R{TwJ zndL|XEQU$CyRq4$hgYLbo|@TX9CjTwZn_z%Gu$=!=nOGX>0<^rtvmwXwq4LsIM)vE-c6cOs(M66N&O0%s?3U+rp_nG_HBSZQdk?f)?E6`~LG}YD=4=V=#%qT;t=qx;C zg?q97h^r%Pp;qLD`C0AdRLMccKh?%o_W68B-x5XpYCn#b!70}Fb?$#!j0u=-SFrcbstgHuVrJVDdLRFN}HFl&o_8qw#0w58h;nM}1(4w~|WV?zgLH zjbXnu)6$`qG9?6~FqbOp zidy|!FZ^_K!@8R7_E{057N4EYp$Ws5WeN-sx7u{^owQkUpbK;ndZ|~Us!mC30=x#I z_MyhD0zy)`#EfG0_W{<;X^&_u9Ez^wG@>7w(xEnwW;T2m0f=A#(MrT-1Vb53Mn}ro zymj1SndiLjn7F|3sfp&zeM>^!m;Q}=NDA&h|M|~Z6kI?Vm{Ws(nkuOSbS)ovJ6!DWa_H#Sm+V9Epwo z#Nyg^Hi1uT-@IO>)n4jxpVnQINl9(ea-zX;vBD(|XzBuZbHA*vckFE=rEw|sGXF3rfVU%zboy8=C9Fpo^> zK$(XD4ctW}{ZbXEEh;7(0c9fTG${u~3$vt65k3eqFL25%=K!S*Q;zvkeDIv!fBSXPIfh?Xhg(N{3Rq3~qGHAIp;36^hbUKlt)0UDh_LRVq zB-Ou~qgY)<;nj%#p{o(=MD!=NtAu>3F1-*<4T>>n zR2vfzo0|+GqW<-(wD^a(2%W<|@U@#RM2Jq((@72;sOsw+og9&!z|Ql3#f!w&47ZmH z{$c5FKY#wrQJ79ZTwOJlQO*d>(VeHSl89oK*+HEuMmwFhvvKD@LNRi_#tO+1G;b>U z_aQ%=9F*1j6Ui{u8p(<7QEhM{>NeQeWw&DC5zNG+N+&GvN?3$*u?XI_uqxxK))V_) z8`a0yYDq~+Ne3X*u<5cOsnBHHs3(?p#6FD9!fs2b&SWlkS=nr=7ZCV-Z}D};Ovq(+ zJo35)Md7L;2|i#v6D~C5@>$;21&oA&2bzTL;(GN<>8(t@YW+@R0>kG?R5w3UZ;;DS=)CO zyU{t~3)=1Ld=Y(i;>kI`eMbr7ATt2r5^r69)#)ARG-Q!hV4da+-g*?YV5|G?hc)8P z>}ynHaJWdM*WXc-7=m?$$Ckp(*nyE^(pg4Be}jZ&hE^#q&Xto#^JpGD{82GjkiYtz z9XVE`H7EnL({Wp37h@Y#!~zb5;3WaY_9JvH;l@sMwvCL&uV24h$ETOn2>7U%8U73K z`*P*%{it*{a?>=wMHzDEwPbi%AB(C!))~I7<=&Y+NM3~-#R3*ad+xq#(V6M0fj_Ho zPQ~X^yDc*0Zu_msV$+X$4c%O?L@c?DBCTyjUaFo8#ERQNRK8dDaat&yA9Pxg72#{i zebJ|3ZBfgjqd$K9pr;LA!QC(!axXmQ(M%|qfv|FioJI#X?A4|UzD5b*YMs14M94(Ss3~gias}_*8A2pF1?R$sFxx69Ia*E zLVy?#%wqE-wB8|6;-qm5oHm7SH+&?bejJvyU%djLTk&vlU42Mygc)Ux*M1?U#)Mk#D4@4gI*N7HXX@Kz)5OU zjS9WJy}1QYEE~koXnGo<&MuNbu!)6J`cdyj-dx|8l6u*Pz}wyn+`Q5d6U|n4qaNJG za?vIj|2xb?Cu5fl`BHLO7+dOlDy#z@r71Kr?hhP?AIizr!_TIGh zp<9{Q!SCO{=YpA^vXhDa>3uR`_3B)kYm2krQGsL0F>$0l5~nR%j3Y*4jR>ozASbtGc*?lZrHl9ld_Ao1QyaPvUO>8N`4J#=I)6cM}t-v zv{pDg^a_Bmc+>34k*0KCrFt&9OJDE`1V)ctY5RUB%%l}-Q^u{jrP;rT+Ka1}KlIPzSxNq*~aTlk-6@~}6pv=Z*t zT$;Ie3XbSm1Lh^!`-2L#9D-RigJwXxT%6+K5d_nms@Ca@v%6#nUm$;8uQ4UGmB_nS zNs~phb}`nw8<|!_{`Ieaxvr2R(Cl_MoiwD{P1;sdvcM!|wN#`V0Vn<;28cmT%bu1&S7*=GF?Gn?)+e=jSJRTb;$NM-nl160)=I@C zi6;6l#tUd@+!N1xbIE$9@)ST}x^kgc03B4b1@c=;7|X2r$2K!hEeaXtPgE zq(MkcX)e-I|K~sdN$n@HvN_`rY1L^uz&G%`L}gg#>na`ExcQ35(0aHVYIj-+WT0!i zX_?_uJ8FA(0H7v4B=dd%lUC2?wHFJ};$?|5|vpncCwwebYK~t>EI-*f@V^!!s zXTp!hC0M>_8YFLaPQA{z*3EXHLnxjJI!?U<`L9w73mjSKIzl5D&SzRw-_A zOl)7(1dJ4Xg4wk9F)1Bt^T>wSL$^)^bA&HAOl=oFrwz2j?V*#xEoK3SB4{wMi7%Wk zr?R4RQviixy#=X{D2gcn*43^$c9Vu{Ib@#qMW~XJj>qfVDhuA?GKxy4*Q62F3l!Z1 zM9y8dZ##jS8aGQR1cB@a5ME|~L%<)gf^G`c;G*g*li3uxt6f`JA_KzjuaysM6f(((Trzd<9c-A$Wumv^QXyr!c$wAE79NMlDkX#tj7|=3(t*k5t94vSB0zse8wp9BYC}6I!+j6^ zUnH^&a)}{Cc0rWAERhTL=b8L^(Tha792Q0AwY=)a>)fp}QHvKDJ8k9)3m+?&w5d!w zo{?m-Qu#%7IS2_xSVJ#$$8Ba!zXQv#Wqnnm?t@v$w?OpNy=hD|gM-wA>r(cCL#=&2@jS5PXd&wN zaVaSNEc^R(3EhG5*pl?x-Z^E86RB^t(z77%g+S>q>=wF=cuHqiv@h58MLww|VD9D$3qW-4iNjlWpSKRv;7mTuaz9Tb=@EIbk6A1L+op6Q|Slqi?5UV=m(v zh3wPQ)BF27H5R~-YjtTNDCsg(F|lU~(zpCYq?)ow2+HDLc4O1}!B5|LTX7RYVSOi*6MrVoL|<`T zPflo*`sV2*4{k~UHSfli2EOLu`$OG@keX5*z)!ukGp{bx9TI{nX&07l6kah;M*=8| z-R7bq8O_o^{_8Ni3bnS*U_d$n3U8X0I$1)6AfUCBq<|zsF5`Lac~oc(FUgNI_2UqkEINwHy^Ged zY;c1;QP5rNpt{z9PmPS5x3@Qq&jC_koT((?LgJqDL-&=W1{4flAz5mBkC@_6YtDWs zS3$xa3&?+$M)KiQ$2XycLcQ2umuTF$d1diKbPs?bbSmDfB@6di*80-d*H>BSTpsrBJO8Udz%BX~H6h*1zPaXt)E0f@k?^N9XHQullLFG%RHTzrT}v?w6VY5^CsGD1*$LMZ6=Sj{@)jx_UE9)JS`!k?r*m|afVi28 zG=$=A5r%Jr#2E7ad^@_93!E!18}(IAv-_XvRORHwz`S|$Hdr&JDFSa}5 zHJAD)J3zq*D!w|onL*DjLzA~Z+R@BKnv_zeaeVq!c_ zQl>Zq=1UV9pwws&Z)u+$Ka%!BZYbGYYL4J4`a=c}nFV4s3BEhaP#3?zTU>P*BP9{N z#SJt8Y(-Q};VsUrk1h<~GinYXR5%S^ONF<^{XvX@zqhDrq^A78@HB47tQO6ghfH+b2T}MBUoGr(K1SG)2mEcKXvG zi@lID<*o&VAHmoTxV>VB@hLOzgpuZwCC7W}>2bR4O~d0R9>^b*x;Ry>SrOXiCL+58 zCz^wij3iOCfzD#|G*C4YC1YNPg?+^F_r6r14cgV{{1voyCv}d{J+#jz)9FO1Ia(%FGf^dt&F0D9 z1_sOd!|`N8r_qQ?JGK*-gcLJWTmM401map?OBXU8!LT)eu=^4n*^wNZ4U|QejbQ-x zfix}6=J3p^q!C2g4jA6`#NcQoJf`}Uv|rn%LtQu%h{ZWXQ-}ofK8uAkcCt2#BnVQ@ zDNB^7!o2zOOr6q-e0D>!Ha&@Bk{WpY-`?J0a{bfOlUITshv$y>vF{A19jDJU7r59B z4!cH4U*U{P3sa9$(T(n^%11_FJEtRQG~wHg5cR0CJBs-J`0=CZ=`hH$!D&9yX8ZDm zY87_9wyl0SOmT_(Gj599I1Uy;|AEmnm~>PRfLBY7#$!@C)aE3qXhc_VZxP6)2-JvI z?M;X`q%;0T{F&~;5$}+$?bNy(f{lvNPIcM&^X;b}DZn+IK0ZDufF(C=vu-K9UJT-C z;n8nM<_$44Qq_{PFDE-S=D&ac?%Q!~g)B=xlai7wkt?h~wy~X4g{KBZf?P0q1pwx) zza_kiY%-B}lw0e#P_&&TUs&8|4A*I}Gj}ql6G!M}>XD6m(cU}Up(lH52d2%%-bxLipn+OTy zfIJ|jLv3a)`Rkc(n}aj;ndP+2HfWk3WW(MnFIb+PaXbU!~t|%&!KA$p+62n3R;%gie1IL$0|vfI2THrJZJ=_}2j1FVqj6 zfN#Pb2536b4j0jn$eD2@!4;|qUM$~u*dXQCRK!sjIy-39+`6P zw=Obqi%79RtAM%l3;M2IDt%VH%QSMUSIDhYo4aTWa9VTXN6SUm@C&thUHZ|!7O zT{f)^1VovvX&2Is;GkgAvQVa1qS_-&`m7o!W>6V@1#=I36b3=+TCmKSeuCzx!=~mJh(&DoT zam}w^zv2ka7-3}rOK}B`S$jlm;qMnptz$UB{0T_I<#6fd$Rs80n%1$u(xJ8|8n+-Y z3{bV{T$zEsf-FI0Y#amIHMOYKh%^m)i|>n`&87(w0g4l;SCCVD#NyP9o4L zsNGi5X=`mZj)e^FYIDZ)0Ski0f55FyG%3l;h(10*nwpRc=33Ow{zy$v>w}5pbUYk( z-@kunYV>-}(~teHsY_iaYXCQ8ALd5VRno-$`t{3xf%FB_2cUD6TwAcvl=uvU`a|!+AoO{N^=0EXHnDmZ$E$j%;A0na-YG>N^KLa zMj-Ig6_qqX8#7pVv?R6ZK;`4V*r-_S8EH>S+M0;8@0$Wi{)=2#;#pKycHZ1TW?~fe z02qaw+znH3iU*Lu0L;paOLvxKUW|kLj~5bC98Y&}1EsmhX@fXi?9tF5^1)|cDvv<8L`l8Gh0*o_F`I>iO{(yO{|TfWk=bf}${UGk{1@21^rIyu9flbK zbJ5w3XT7ktt5Y57_tGqu)wjCq{~+6Nj25HSROs#C{oY8^mk@ zdPD!wIXZ#trzO@E6}Wnei%fHuT|Elg1{k9nK=LakOp8KYUHkO(^#1;?Ic;~9&5r=cOk7Gd}mV8tj=QJ8sr;bZ~BVlh$SU$hj7H;sVSOh%MhJCDTV}` zzGf!WE%E|GAi$anH2!os0s>lF`)sG1^`&CL+~&=NF`gX^Hu6t8iaJ|OCz!$FLC|{| zQ55@G_gMm7ikKW(RL200Sd=tV#v!3{ne9MfPUj`h&(H7g?~=1GFE5#=HjvNIh4z1) z2^CQTNWYH9%vnPX)0hwerG2M%Zl>=gCGFju7nh?8IlqvxzFOs3+I2~fOOmX#M%ud* zij070i6yN+1%N2iz23jOT#M`pGA5R;+6STizMQskOYFONy=Awmu^u>bkbe*lm&2ezKAcaz+Ie}A9% z4Lx7=rq4;u+4ZR@AbCo1Gj_4pe=BRA*#ssmhjAd$n&bKT87DXh6&gcr0qv0~Ol)6F zo=?`oBX$m)^tW%{vKTfg=>P;mGDcwiX|8=3|TtxL^6QIG? zA%Fh#Zk5z#&i;nvF}Y?9gi4nR;vJx}9%dUok~;0>(@*}?h^_!c$^4{-a^ZZ=IoKIkJ~@~@eit-+bw{St}ae;JaJ#r`GmAhE!v{m@i1Kd z|2>nt&5)M|E{Fc!Z&gZC(!;81O-~BEm>3BS`h)a^HN9y~I@IPOD+IeENmB`x*Vora z)BmJQXunZNa)8glN8=uCxh3yHT1!&&H4E@`ew3by{b1Da-F=r4!JPmy(C=W$_w`J< zLXx&jH&u6fM^m;os293x_2fPjozWO z?D+ir#3fBD5;yud2I&Le-`_z_WXaL1B-P`jq&*Uu?=*DMUM3{K?gp%bfR;{>Oc7@T z6>(J!Dko_!*9;25?iMJ4T&+K;DUTEJL+5S|)RT)$C=|^p6|AUMS{Ri7VBMj0VQYzD znUO&pa{sl8ezQ>8!q&7^x2w16=C6(=NW0(5umoxa17E^0*Y}{2@>8hy#98g`FFe_ zILk=0GR_XJ*v>_Tok^=T|4!CGWW>z{4F@A6I^)pujOEXR@E8^;cqoDermP>dz6u2f zuwKdC3Fuf)iORkVfWKXcqyS<;&DraUk5#kG*LB)L1Q;v@2d+k~6V2N6qO+u=o0umO zkah0nA)RiKn5PMDz(9X7zMBXE=2(TR^r~|)lnRduw`z@2>3qyfsEk0z?kC@?}pT%9G;>x(4B7b0>u9^K755g z*{sG=rjxThJw5S~_(nn^>@^JAitg`BTj$-i%D7+RnnlU0F$u9DYv>Dy^k- zs7-gPG4e2h-@kvu9}H>dtgg*^qj+0blUtPVUFcoerzI>ej@Jh>O^4bHvyMWx)95r&S&Gy|TA-Dt+DFpx=q+_H-3V)n zZo&0+OV_85j}MqmWLqv}0*uB!HIi&GpD@4(5fp}sU1q1#3GU`lCkBt79&w9MwcFk| zj5=GJ7-sQIv_QYMtxf&c8hoJ(qTf?*;xql3#Xw;RV4E2Y4H1GShuzB~Fd)VB-`?Ip zQp3#CFFVbJY@56Iyfn_Z8yq9@(Zc%mL=SnK`#Atemm(%<9nxZ!;De#rA*DqKESLW1 zlkZdu4n%YkPr$isk3S9tSe)4`90|Xk|Er_axQQrKbawFnz7U>1H}#9r5x}SHAmjer zkV|+0lmWdY=lI1)TZ4ylThyL{^V_S{T=K{aU1YZ!rf;W%Y>13QQHDA237$ciFbH%Y zbCD_B4#O0VQJn)U7vF_+pvlZQhnkVp9(-FFz6zIaEChCy0CQR_r>lgoL|3Jln1$R( zm+eE$%;YH}^@9Y%_5H;z>qhmm6W?qE>pEh#W`~fZq}jJ2IGD|1eei&yg2_a4k8*X3 z0G$(MG>u1Wj;&AWP@6>J=`>=u_JEABq=`8)jt{d6vF9V}x3_}8T@h}rEbgoJYIHQ< z)^+$=&ywPZW{JF<3!rzi1hB$rb$QDw(aXzArM((ji1XoDY)(PKIl`(S6Rm=KB}OLQ z1%P2Yww%Zo-CHCa>Hc)@;sx|y{8N43BF#Ix#&{)`YvBeJd&Q-Nr5AmCyhAY>Izfh( zooMxaq`_o^lfvoWUteFj1C@_#C@$AWY0yY`;X&;v${raVMNGgFIeDj;3!3a;eE+8TbS*$x{Ai#K}EoFi7;pGV*_f~|tc+Td2kG^cl(ZUYzl%{9W}uXORCjje>>QX5-M0z_y^KtIBBS6r z+`$I_`SWKkn$b(mEWU7}#s8Z1x3w!|gMG_L6DT6tE-UBTgZh}M2| z?L`fh-Gb>md&9D=5xIB|mH*;aN71|FREXJe%}~PHiEpgWTZ=nxBHMm-r?8VyI5XOK zo!h**c)$zmw+ZQ2_Q$yx%06+5B6q!nC{;6aaPCa;UH)VY9-Z&v(6(pRUNhf>rogjfA9w}{?2}>i2rIS;WprfqQ;^b}U9rnO_xtznj$pWxntg2msdQR6hnWQ} zv){jecV=?!?u#^Kc+mKftV6(t3Xx`91FAw?m_`*9F1F^z|4x1uqWH7nA_hg^%@At`{#pw}iz?d9cVP5GNCvg66&6#LGk zD{CTM{=nkn98Ilp2aGd?-KgKGG9dPXXzwdXqy|k|ou^Yz)Ey!yRTOC=+LJe3E$3Ml zT6u^)t;J*KZQ*=$hpA(KDV{7VF(|mJIqaR!MN2jKosoLxf`8sJX=5Uv_S>{1a*{S? zN;@yW;RJh2sS8Huh8Yrc0^__1MRvZH4sK0tVPpkcz?vc_Ox zv4f{8>#@K!F9~`*uUaLwcoqSTtQoy!fNS~q_#nC4B9-5-z9H;U%2mbJa}2`a2-+aF zR%Og3`cZd5nV9%!>B&scl$U>he|Jop=+|CSpIDGc(ly^4WuR~_YpDYpLb`x)Y3+S; z*KZo|IbjVX5EsgD8oo3B6=yztrsv_2c9OQQVZE~YlAdhC)?YjdPf_H#c9NAxFmfrVp8P6 zEJN+A)9K_4!Cik#6M&rfZ=0vZJ`z5&l4%kdj{R$-&^BFwR*y-b5n&L7 z81e}Q889BA_?W(;-eUys;e8cmR4MzUSe!2}FL$(wDudRS)8W3HL)3D5KnT@q1mwbNsR@;g%Q-tnaQ)A~b<89?1w zOQU5{pGOv4aDjVA|`(#I9;agQq ztcbf<;I7M9usn#t_-pma~>kX<4s_p1g^>K+k(=p*P!d)y}%{^JQHh4qpHmk zO(sSUACRY8TPX%tbdgJMyjkltnOQJ{6vIDzroN>DafiA@n_YIz!<`N9Z z9JD(s`UJ*V+lJ9-0-Pm_6LhEc33F*mZ~&T1#vV1~ymu~mbSmw>*Vor0O^Q3h<4V)# zCO zC24I)!NM%upyojcLUTbIQ2vdD%!eWE=({-7uwJb9(+zF(@U|`0W^%*q2wLpB>CVQn zy8F7tb|SG0etT1m63R!Pg+p=#Mp41W-4B}S!=Xd0g~9RolZxNQqlveo)$C2RZ){IG z)nYkcWj<~w={CMQ-LSDQyREnspm&rMT8H%eb0$%2<>U?z;IDZLusiUwY4aAl44(+< z`v{c}7mV(YCMGg!Sm9aIbN_Ru1Bf;TR(gdC_w-Q(P+CQT;58teHm?#6fWSb{DLqDT zl#}5F;-|Mi`EG?t*<5_PQK!O<6%oPa^%WNCYZN7V!|3SebKDklM_OwWIzA25rto_n zMps0LC#z4o7gr}@N|Xoy)3_hC*C=$O;0EXZ?1>s~$+&BuM!I8W6Y6b6e9U~DQOw%8 zj(8v3XanO)3w=aT?lB3Y=#c(LXP|hIxCC8{Z_AnoS|ET#cz>K|bC~d>;X+pSslC6y zV_=Z0i2EjXDjY%4okUc8;>a|YLTpmfnhV0o%KDETK(3iLxeAIY1*CIl!QKZ1XZ(}e01UumF2&|sQwo7;IBM=1-{ zIh2+Ualj=d4JS0KAwDU0c{0L0xFr@tK z`MIQTN4(K?Y?wFMQGKypgq<(UuEC7=kD4i@_yEA-8p`8CK8AH%DVJru_oakqIu;BtJ87mqj zviN~`C6-IjolzUsn%B#tvg3fbJMP<@O!hnrxIfmJ2vmGM*X4m^Wa!^QEYtwRy#s=KL<(BrQv9szJ6J#JpI}rO29jns~N3IIyCHXu;W zy~Ley3GIdP5>wQ_?JbF?jQv8+k-Md{-GD37z98juqWoeTI_Feu7DpSKk&QerM#l=O z1x&^T6I2(D0L`FzZgT+@T}T3IYzOA!n`PnmFB(U>wO7&IOU&7E0*wHDOPWhhFiPE7 za&l){^)6ZD2f()V0)Q0o~bZQk!PNF@@g_++vO0TYNDM;}hu=`dkeTothb zAn7s5tx-^|;ZfQeF{-+Rv4G_jx0v6D3|uSZVggGPxf?xT?*(M3`0kQO2gq?4NVuH9 z$T*T^MX@9*dnbaUYzBgs)7xpS;8vqznx3=zH2wD&^|_8?OKz>>Dq_J$zlPWazMFAs zC>m|lYh9KYe~gWfhmaO6J|Oz6`Bk@oz*W@FAnc{w4@m*Q6$Kgq8?b;C0}V=F>J}pI zfJW^zKoaEP16QoeF>XP);M&6Si94O~)M-vmtT-m5Hnp=CxvFo)lI4LN>&52U&lEbd zlT)h-t#?L&g6_T-0OCL$zrPO|L$uClZ{FC!Lz@Ek5H6vZ06U{u?v~bozTtDhm))Er z@Vfv=;?0{-=}a;d>kZ(M;dj&2;9ewrvK(j7u#1V&EaJM^bMAZN*7k7?xMODgOcoD+ zv#4Nn*2X!9Si%z4W|YEx&Z#BFR$q;iow(P$oWZS!+O3U9?ryrglM(6Z01h<*V=Q2X zI+G-hO*oGvyeJ=um?xBLcnxrr5ZZEvgP!8*5F(@Ak5n5_T5fSLZhaa+vlGqP9fbBy z=}=2LIAPp2e{FcWcXACyb53dL^OxZT`2G7gCi?cj3sf~i&6+O|)(@az=(|>Ps2PX5 z7&l6Q#|o}@@n>br zi5@P4;=_;EUF7Z}j5Htbk>S1xpvQ*f46+CJ5_58M$)=T(LwXCf_O=;F6T@6F6V@7@ z-2*}%mSwa}g_uLMH7r-)8c~x7(cv6q45y5bb7nOrivmR%No~l$!rxf%y5!fdU$ph4 z1r5?IE+-q45ilE<9F-!l^y0!9XD2$6+9b}Pr#oOg*Lo&1&Q<@B`OiX(SX(3!g0kdt z*Y7yjxE}T%a0P)eb}VTl_az;PkmGP3r=eNFCKHXoPjf+bLheuOc39DJfnsNifjts8 z+URCnm?5sfKoIa_8>p(t2;MLK?dQ**xyq9cOu&D5yBf@Rzhr!0^xe8;MP#6_Zfl#w zJ3D~6TBYQo@xSUei z=ujg~#wU}`7XNG5Z+r2sE*m`To%P+$u;@IBx?@ulmV#AdrHV)?t{L70cN;mdB-7bv zmkzbrokv*jAnUhhkV^S>?AMisLv&*J#x5FR+s8qjRPn;B=YrE3UJ8?yKRWs3Ld>6} zRND_^cannIT< z_dB^?*w1~3>p-x1G>>lls5bW7+Z#>mh)!dB{QW}v`XaJO2o+LYa`oEp-@lX3(&l2D z{a)VLsO|b*M~3&iCM7Cp`d;A3%>GOlsM+5c$bWoHTi9ivpPw;U z=cA-B6!$6ajIHINrj>zM4PQqxh_gy{ls}4l>NH?tK>_c?9*WOJJCBK|@u+wO!El{M z-B~;eOTi?IN68#)E-*Lt*Kjlf+2AhJFPxL|XvU*1tu?q_aV=%Y*q@X@GCTas?9^8* z1cV>@?#9PTa>4b^PVMwjLi(|CoIQxo5d{DXR_BmuyYxG2`$!J~nE{FBjIh}EBO(%- z&o~ipxYW>+(3d(#z*ZU0vg-u%29LS3U*{SPI(K6rVI!?D&IrE3ecZlQdx{VO&2SiY zCxRJx)SH5l!P!Aoz70QM^6`uS1$$LG>vE&fRlW$%p#5bAsf>395I{%u&SW=tN|UQ2 z`CtF_UwndI%o2nGa9oXsPc5!R!G=Lqz6dBZoCuslJjVMJls$kcqF+z)h-R!&I(xL| zU9oE(rR9R%4LXx>6v!tj2M>Hy`?}sKZcXbr7R^k*vouD>l67-wEQFttWhj$|8wWc7E}tJwep?8IT)fkm4aiW?YMHX5T!du6;ra6C5YkdeUw*ZGn#QrJG;D;9atl*}iC z)<GV`xJwHEVd$5)IUZ#&5&>67uEYj18 zwDyQg1 zS~NSc(o^otNG#M!&88ur*tvMnFkD$bx}5Y7+$hC5kIg__(%bIddtbqKI-T@l#Rz~1 z*|Z$oc&7T+AqC5TZM9J*7bQK^RV{IgwP%*hGR>^9^PMOP_i%F(V_D$-z{>!ZmR&_G zj3T>j(a;q97JpyNiC%%UD)2?tKhTjIhKuZp_IpOghov#}BfrCy^-WI)5;BX)Kjp=6y^WBeRG$^~p3SAVHK0!HnkeavnBH6}G~1FC9fN%b z|8WP;xOtuX>{hLvOpkHfbvHn=Q=Nzxd-%Y6H(v7g=b1D$mHeHgt7d7${=cJao!#^p zZAX)=y7$RVhg#BM3DdWYsX-i4+ywbe3=P4yO$Y<$)=d#(Q}DCa_dUhRBh3i56IBEI zU67hS=^|thEa!S)85;+*??J{jAhJy)oI|nZWz9(+XAE35VCV*DBZO+=CZs2{t=Yao zyE<`a@D;{7P>4*}IGAMB!A!hv(W^Bhu}dIO27H~T$sg+kz)pce+^F4e zL6mnRs*TT@6b=9;JTLli=cbWov{!C>wlS=!FGncZz_nCVA1(gp=Vy&AczhI6-6hG$ z{-D|K46K8DZff!9mr6R--!9bmo^^Kv+$P>RR#TEx(z!6=W{<%0IQZH&mHP}ZWzGkA zd3gbMrf*^BG|ZAtR&$eH2mq6w)d}&IG?zoIZ%evUK{5En?As#{Ps5gLE+|FKrMs&Q z_3eni&Z1-bCr~66C7SN z2JMYQP1ZloWRKXF3)%C6LQ2=fC+k<^qCp~SXm!tD55a-^Vt`bIIr*vLH*QGpMoJXv{joM}uN${MUl-Z2fb+eHL{e)Rjd60(567ZKuLIvMsbdZe9A?dqEdzY^a8$517I z$EFU=$k7EU2*@u0F7=VO|H1?4!8gpAPbfZ(G_?3`yl|TrVUQS>o~oSAkBX@0 z%_UQ&y?sWk#=c&tN%Jb-eVdmO!nl9QFN^2nPHI|B@myr>R*Yh*xStR@o01gmnrN!V z#M$)85s`}GGMEE!=6FwV0o?a1^ge)IZOS7y<1V(z=cX%nAB?Gt zlE|i0U-JYs#EmKPxSyTa0jO<&4z$;W^Fnt5cX9RVI}kud2G%DF`@RoI|A$7%%KE5X z@f6k8bfOALu4!xPY|072UBK%iTd1!Po6*;HOG0@D?siSGiJNcw!IP$?HPus0AdQhW zo(1}X*i8$I^__j4{e)qRD*{arWouaLNqDZkBEsJ$SZcXalaz;mBBB@|w?e6+RT8 zhX&#Lebo$L3XIV;=!ds3!sz?CM-p@t>a77a+u1T<qk_w=IZq@BK!HJ2oCz5+3gqlBbMenNXj%0N}_=cT!u#p=g@cz;uY=bN`eQw_R%^ zcll@dZnEWa3)q+)Pp!XW$qbzVH245B$-01Ic#WvLA=$98&%wxQ-V}(uMA?rYKjNH3 zJ6`(`%B@QcWkA(oirw`5vYm>POo|7wAH<`JiM*Lxvr}l9!yf!_Zn!rnKQ{DhUhlrbNI8_DpN5@6eGM6$u)-eE|e~>++(& zg#s^%3r8ARqGJp|ZH$K-SRqNyg=Zfdu%2aC*fA5K3T* zlpMDn;F2}4jMxkAUz=ryoI&b+qy{1d-i`pZ8@02nAw>E@|>0wA7F zG09~0aroVk(cg{U1x!FsPfustAT<18QuFK<{_oR>Q@4y>iU*(B+ir|ygVHc^rHjP; zS~xeXES~O~R}7U87;#iFc>5d{slU5-ZUuD4Z+Gsh+sjf`mZ(VlQVzSrV?E?i`hNP^ zV5<-|ne)_rgzi4iwB@M@Ms^6oyiF`iPy`uUdo;J3n3Mjm4Ny}(I;xQ-i7+ZbqvD5? zqYZ!s-!4QA`s3y03miNEwFN7VrY<5@v1cyEEj&MwOZs|oO@Rn%l;xu&2=O(ibbXALJpBIs z`jx;c!a|e|dLH*l^l4Myz=M*io4SEbAPl+C^t5BH)^K@*p97I2CX63#OXwFR1 zIuq!ylzX(Xz;xpNytN|NjGe7qHU{KUmtB`v)Sk}!FgDoAcWj(1j(_ei)qD>!1z@FN z8sjOZUkca6D#drw9dhJNLN^EaM%*=ASv*Ga1Xr9-gyhUbhB2<0XI9X4&>Mi5+MmuI zz3=)ul*M5|;B%IJoOOqLsXIm$_H$$?6Ha&=7svthML%uCp&eLI#-2Z&qp%IEkPUe~ z>#q3_40E&pXFf;_GDSMJOV2*6opUTJqCTsvI~ystQf#{SfYq)zsIDzOuf=bl7$PTP z=>5e5>n>SY0>k!dhI6p)}#YtwvcgU4gp_|leBx5z{o?~ZqG`YwJl z5k>xR>J9Z%HDSS(-HQiz;_2yWI<-7^2QgFL8t_{2iMYPGNY{Xcwg~l0~(z9m^iWMqlg7u8xfF64YWl znI@@rW&R7$)8|Zne0*SH7EOxAcQrH4&2*kxlm^L6zQ4cYkWkBGfIev#@b>mbicoDP z^;@J7CHLdRB3nqLq+w>kr>=|4JfS#FiCFWy#VcIDM(|1NZgbMNp^w&m*Ps%z6d?Yl zzx(amH%Qq4kz=C7_Oqeq)tw;fIe%arBwh8 zIsok^eX!j-9e`MYSz2&$aU=CF#U@yv3ks$h_dwEqY)QW2z!@XCclC=)s=mIy65qg5 zw?(L_Yoyy0L5Id5OIeGB{juWwZxqM)j7@15t##+rXJO@-s?3Q4%>T@wQ=cWYly~Wg z@bL30)U(IR2sQP^l12!7`u zV7M!H@qjd@o!ruP3L88RY%>!X^Iv@(vEa&6LuMR9C(BP62OPJZS9I~nq*+XXbD8}E z0fN&DK-t{qgxhfSdOS5|N2N!wi&aU{)ePKAy$(Qaj6)6krDWOIB0*Br3_c135Hxr% zHRf`}uEmGbvt7M)<^2N!HbRKkj~hXCQ)oyRQ~Z*|sC?#^x#bj?$e;%t*;oF#&HXlE z+(k3bzyIfRn7xZ!gDq=I+wYQ8SUf2tM{ovn>lu<7Q;aV_2h6;Fw&EL!L1K>mC7s8l zY;%r>bJ4WR*6FinNbTef#*IhNr`;k`I|XxLAi6K0Mm}uPRK$Li#2xlhV}@b9ph2ke0 zuB9nWY8xzmF_Iu*x|5+CRS7%U*>Dti#oh~?Yd*%iKIum8BDxo+&OQ#+B!=oxZPyq3 zFH{!8WE|sQ!_Yf1ft@eC#)C#zB`El3*O6p9)Q{|_2T>cdqU_lh6iLTh{$#T%``FQ03J7vxE>(M=OC+rB*G;verC_8T2!){Jn&dJ#?=Us?#aRnG9&{&b&3v-k z3HxmDEQZn=mXDCeS+rAViQ9%sV`Y{s+bsh;1O*S7 ziPm11nq`ZKFct%ormH~itNk~KXl}Xjz^Ybn++EGT#|{{ zB~?n}{r#PkH<~KylQUD|B}w64y=k#$aVpl;i<$(c(e!i00sR>k`878HY^SrJ3EvmG zaqF1aX2Z2VPEIU_(LndK+(imfYz5jI!9kw1>F`GF1jm_EH+pP0fECd}etCI$G%sk3 zF|H9EXLAj1G$7WLjCCbWVkyxw2rjUqZwb%rbfPis9IL`k9_N&vf7nd^KI94 zjiN_$z!s11Dl$typ9{+yX$PXPtZ zq_(sws5W2mg0=%{Phrwc>4sG*TQU1|9nIms0ywf+fyMWG+-QcNC1Bq|0KtgI3NNma zu_$Z9tcCgmBQiF%@W*mCiZQkyu0}az$aIV`Zt6vYS!@g+{P{W1&iuOjxJ6ePZ`pm! z6KU_3O>Jt_e*EO=#H;GDw^%F)s%%~B#af%AEysf zuDh~tZ*NFi_s=10tk-GiX+IRglcf1(ycC>=*n0}OLZ+g`;xVcXb>DOj~X z1N1gSrxn)i$P8VqEy7BH6E@xK%m_b)?|BAXjp4ANaqvRRHsE-hgjm! zg43zFWN|7e+tddDyc)O_VuFAGS!p%MQY%730~Ri+1_iLAB{OMpZha8b)?&ui_O%Il zGSOOwLhV`fTQm_{(P-Ay=!>*3aLNaK^(EMBP#EHyCk8IzMhPc~7+`TD^%4;mkFEYr zY)#1WSl>}#*u&QS_U+r4hcU)jrn9!J+;Nf%J(u3z-k`q5fJrcMC(!9Lc9=oaV5xt4 zdfJx+9z{}k4cjM0j&T;gIV&i1JaI{i-Ou~H?L97pQ+L-g#qB>PhmK!~LW!ToxOH); z>wNWJn$EXxOb6UK9QZ`n$DXNyOMchwp}Flj&F*iyaEbRMJ%z_{mv%J2eEX&b=UabQLq9__nCOP{lH92!X_YA%v;_)Fd6z7Wo2BaO@Gehvv3V^ z3g^d0*-iGZ-<>}3xa}A57QLKe9_5yT6Y*vY7-Nhv#$vTg3H&xcN1p-0cz|ejha`0ov+iAPgVSL@?iQWCyEZI5`$(i6 zqqkw^*|VlH%rpI*KF-vUtX5Y)tSBgoXp~nofk&Cr|G{NW*^AWR-^=1O91eQgMWhgt>Pc)!c(!WR7c^(%c9Yv0v}X(>RNK%T{xtf2mj#R*7PyfP63q7489 z?)yvd0Umd%O1&AjoJoo$i>0sY{%-8*c%vuMD(G}HTD5k#W1)U?-S;t0C~HB5f*z0t ztc}%|1k?WKMc(DS}hUS^O?>ZcM>$*9gi;m_{N>c+HhrGKtU}a|AoX=8tZdd*#tsua;o3 zlBV zlmR9O!+b-R{sajcQHlXz57t#CC-Tt2+~l;|b`*#vn*?kd4dbU%K`3Rmjd&4?1nEPx zA)a%#3U|o6_p11#wr=&-1j*1;NC3eCaJye2)`vpcO9dro`FQzO&U64o){1<5d{FIM z{BUAe9H}Y$7-Muekjc}jzeFd+L=Q4*#1uCg61;dsXkqLY_a&e)4*laWU$KHPim)wB zGqT62Cb~1YhF2Wew+)zbjQKNp)~_VRvY&J?QUvDQ5A4$YmxywQYqc&VjjM>JA&n(n za|&tTJPi^ZdYG1{rzfu%evV$!fE%bSCNq&ae1NDAj8FH~ zQv*<2XOMJ8W~Qmo^k3~oZH0s;-#rHwY(7A`#3y$S)FUqeCZk&fU>!;#%z@Gfz(QEi z7L-4K{-ix+gO8JIT1?ZUAYPeplQxX5#w*CIT04cCn%a7BT3g&mVVfWD*7@ojJ>cxU z0BYPP;l3jsM#yw2Q3tW5@;W9eCh~BBxi-cadp8>vcjLmwZBPxghclAUJ_AtOUh;1i z2gMO0zDNST_6!|A-{0R+&F&#X?45*tv?}i3PUjgreDoz)cSvGTqA{2>7jMhtkJ@nA zU5CeNj#DQ4yVAz&DZ=NxIi#g;MojqMlK$Chx zTj>KX4ZPPh9tu#?)W5&K<5A~U=2^*=wBERQDo->(aivL>it5}1`T43tk;WHc=}K5O zicpKIs~*_}Zu*TTXAUhNl%ka;_#jXY>mOqxoLcU?^BH$8X@P^!Jq-FUAZl%a~W#I3a3ss zK=F0z5`4o*Ico9xUyBuGJIvj?JJEIqqxZy`f@*0grAp?YD}3wu`MGAvLww}_CJs9d zsi$*XW{$qw9MXU9sI$8EIe{2v#>dP^m2f52*3wmh|M@xoc^YjBtxH{H68qyuAt5N& z?z$gZn?vIbpBFutd^l^*H56MU)72SnZz_ySV63xH8vS2@w`v;$5Qm-yY@y<&HDEfO zg2r5v{5VilFf|QWKeoZ4YBzlS`PGOi#2XB)l-3s>;$3WAM8vL-@LzxZMW&3mD?S^i zh7+XYMvu8Xh=kQeLJfa!P#`?U7}pG{3@(k^MU}BEYX-s*osJkliYJld1BE;`t3DZ% zwcRlZ%K3&}F~&_@xXom~*0*gGMJtqjrQIU0_!vAy8{~ zes|qBRf-ld@aRG?eWn`mnAeaSY_JfES(uKo4Z5LQ- z;--zf7JFOMsYo!t;rM98oJdlWztbm1?+n(*?64s-Ai-FCuAzn}RT)224jo2F`n@{Hfv9PM)_tbUfkz4+ktbV%dU(xfun1@c5JQbR$rSDN z({~%4&Wkc}$^bPdDE@6FK7kwA#QNi+6kq3RKC*J6OtLl!uJOdZ&t3X_KG}8c<^v?V zMb@?)2;ir|(Wg@`m_9=`WpT$+C{7LnB15}EQViac9W6B6JsW##oMj00cA+3C?A>*S znrk^pc+sBM%v;{lf&-%})`7;aYr_)=0qh>u_82`6B=by5plHA#^Dj02&`px7ROm;x zb(k*9zG|J47Z#BgtlDOwh+0NY#>5SG+0ArHufydbp8!m)!zXe^)dM=tvbwPcrW3ELjRD+G7<+J^wUl!* zoUlw9oJIOMVt(2Ti&OO}O=UZE!ZX+@phof@cHv)t{Uvv+?Hj`?Qp57ST^PC)%_A<& z0>dGkllkJ$Aa}s~`=KQ*&1eV<>CMyAQ&$h=+FK)i zID;_om=6DtIV*ZPOc82wAuRHflGu?v_?&qFYG+o9#Pp=FwNqQ>U_`y0j$gii|K8ym zQ-e+EHB!56zp@)@MSO&FZD;~#a853&Euwp4yU8OPg^NcB-#OBH3h*5=mGTEcD$UPb zBsAS&V(^wDY4_{Nv_NdY>XcQIt9Z8NmnC+kOsx_Vb!btN>|T}(=x4srXKxtN-I$x~ zqVqf5yDc=h%w7%!0^z}r@EBus=<^U}$FU*q3h*&Aq~ShRwg+OH4!YLNv_QaI=>3g7 zL!)XFt&-!JC{HFI*kmqb&Zy`H#ElC zon1k4NYO$2FEBOg_O7>= z06=W*Fm(}u@!|BJ{9SDtEgLV= z@roQ44AW@AwC`D`PFtb&0ezR;H!N??;m@BxU8CVIg2+Ve9)FiyHhspw)xN9u_xJW) z^|rpNzY9XD4Wl{dU3VT}@(JeW-{p(I8MHiW|1K=fNFQ=)@)d+G&85Vo$i`UBbgCGd zxxVpTYT9vxj1}t6YbtrcJi9;Ug74~D)z4QV%P)Iscg;z3yQ7I-!Q=90vkE$aBp1tZjZr904e|1l<<)UEg5W%{gTF;UQlRk%T5(ID><2Iv6`7y>AwLz&Sa+M5sa|Sg6 z7`4-F1Av$x1e%1|=Ev$0t)!b-VmQT&;7ZQmxlGZFv4PRzUNmvl+yvQ0pv3k`A6qe9 zg}|+eWski{{&^Z>~vElWLILibAnd;ShLT*3yk?rqOT0|&}r?idHWE+87 zX{BXV6nlzmpRvrbf?8I{`};dc>e*z)M#stIhDnujZ3tW*@PNn+kk3k0^i8bvXUZhg* zQb9*Z2F(r-hIw$2;?956;a~qZzH2*mtZ8q9u&!;q2%LenMIK&iLfL*;o>#W9*50Fd z!qLRTqd#DjL;kOBw2UcTJlK=_lFxRZb3at-iF&dcVG(U``XqoR3EkBD58^ma>k;E< zGe12&v7g`G-rC%(SWws}d1+bEe`AK} z4#CAK$17?AvJ0t2Cuz2^9Of%oWy$ChOov32fjO}0BE0ONUD|bpSoftZK5nh`iI(i5 zH38=S0Mu?OBG{tAqghWWXKN{tq(8Wq+%=9r3XwF1N z`(sW(qZYGVL19Mw&Teg57Lkx1R$sIUDWWk~Gz$A`p zBwa)n55phbJD^5dAo)kNo(^YArIJ)H9e5clgjUR9kuSg2*bRVf#LxnAj*E^BRBVP) z%s$f(nKo`_>{0h4S+!c{{s?#;dopdThZllkXiFl6}-2+}hKL#r#2zm<5L;u3s?(wiMZ#2f-jxm4a zg?P|>0A5H)Q@UG45!hF zuUm=4qQtb>+$M|`FZLw%DhisC8DO>iC!h(A40_Zwu`x&|f1Hh>nIv~+?7bDeaWVkL zY%B(Gc6R_l_H(tuW{^mcz;T5&&M&D65?Ko}yEj`43YG3oR_#qr}@15;UwZ(6Uwe-OZvIioYErPkfg^$t0dc0dx+xA+65zUs}DP!ZRW1BSh;l5 z%=|p}qZ@nhU=h@Y4F)mjy`~fFbrwz2#F9c>|k)U^{Fe zRK~H3^y2gLGmV3w@;!S&DILdbNv0+#Nir7qp40oO$Thp>(V<8)Q!>4 zaA5?br86~}jSZALdjNvxoNt#s5ZhsCdl3J_?|n2CFv2RUPw60jUBxol(ExIC*RSXx zqtt%?{dYrY$SZ^uDI*;|F9-uM20GNyy6_RUALa)z%Ub3!#deQLG;z;oCSwR^lA`OJ z=ATYg?gvqW5*mUDC5qufiW!Y0Fo+!}m?QYGv&pnSKeL}zoHdjO0)i`r3vkbsRDwsc zO^bVjKAxas@XfWa=K4)Qy5cq60FH`F>X93_M>>P=5ch1|Ng$tY`fLCP4;rR3L1}j5 zoPA4c8_wpgBiMw|ract;xfRZ+NxYSw`%FY1b34YIfn^B;19CeltV4j4FGinD=Ykbg zM%;L|d8Sj|^vsYLri<=Jq8?7qDI}-6VU}wHZ6u5Zy=aiee(O{wTW-LzmpU^vwV<0h z#;tB!uf**~(qcsJ*n4gTJH{AS+ASjr_-MoRRf#nPD-J#pK70Iptq!yw|8Y9y&>$zL z-B#l+fDu@iwVE(Um&G>dkL76G>xXTLQd147`P0)=Vvj;}H^=;~86{AjfiKA5;HUtW zQ?Exs-<*2}kC>UWiWOdbOFzAqxi(5UVrp^nx=R-!6l=p?eC6ZggXROZ1#&59(iXZl zAT^8i9WD`FcM=F3IT?*}#N&{RtwG<|9JbDFeLlSFK#e5{)vul3ElDNAJiRGIvO5Cc zG43Tg$X+LXp8pp0IO6^N{hjkWCsKkyru7hx-|iuSI6PYla)fB{vUn?3M)#chzWIP)CDrk!88lje#QEMO6ZK zJ1qVi4ejL7yk(5}Lt;}x6;WRc!(c*yqoHfg+NLhdCqbSo%(rL_h@ggY@J>7Y<>dv@ z-ENOFM#IcQ*H7zpKs##;Bl!vYp>r{b8(;bO_>dB(v4A~5?JEk3{VX)5r{qeTXF=1U zV+=k1DCSuGq_~=I%*HYlW2abT+lSo|o?`#e*dKh*62FqDq^M7&)`DYXE`bhv51UFsy60Gc0NxCqGlPeKc{(}-Q4d6)xu?C z_pVyX!{R|nY5THtL5*z+=;RRZEr)pa8*0EQiWTKO-z^&~=fN3c#RIaUdrUxRXq+)F z9fs$0(z|NpGKP<~OMY$|PeLfs>8#yd4vPXs=I>&(SY;41<6Ul>-W0q7PWRx;DmURS z8TV96U~V1E_6EHjdEd)+<60>i8|yEv`(Y@?ScvH}hhS{WF=om=cp>tZwg0~yY#eDF zo?E=D8`35=F)ID4U=Zgk7hRbiB2fI^?w-fHeZC7E2G<@LWMEidzkbazl>ED>2a0fu zzYAZZ%Xw<11K$PR!({>;PWCgUlu5IjD`$hmdvdLl}@)e7oa+U=R|d(Wh z2w%f1et6R;8B1T@XIAMfldu(L0m!KMrz{X7-*R<9KK> zCHjWFWT7@XentzG9tAZw+eyC|vS%B*L9a%JFbr!&X1CROvfQNRYFd|8P`Lra zk<&*hsAeO{^epD7LCDhi#&GYEX%FKrN z%5bLq!A?D!ZSYhqb6fU!+cJI*Mw!P#Xb-=>zRGhP7{VBhK>~^lgW4(ha>q>!nu*xsbYjYEZys`0py#h)UKpulb^haXOwArBI%a%+ zIyIxn?*aS{e9B!%*E;0WC+Sbaq%%_h)(*$GY9yzx zE0l=g!OCZ$MBDL1&d|1-Cgyw$Rz7I0xU#H*fu=EtI6?-prFBXGX8NotJD#SX;oGmj z{yL~C9zhY{YaB^`#gN9>!(+6CIc%iyl~f+yOOB9Jru#Du1V{v#FPA!&0CQ4Zqo>sa z?sAfKsq}33@r0mPyQS8w08oidNEt<2dAP=t$Y=2@rc^VYMXLN-fSM~)k|%XtCqOf% zb^?S^C`#F^W724FRFnywm&|U8$!e+v_{*%ARP$T+r5l{ITGrg%f$sjr)2oNyk zTtuL@>_6yZIKX3u#~9;yV1Z6L_1*NKU)SS`s2PKRmX(()=}^-}r63U`p+uBUs@eSw zpm!Jv7m0Y^Sg}HrhkifgS^%iUnClqxtjE7V7`K(%E;8lNpZA7hL$dLB}LQj7F@lOC6fU-3jI5{X5gkW_} zl?1&7I0CSlXpNF@>6$-({&WC@`(#Ziw_Hn=8Z}Q|jIkpF1A>2p>?_LrD2~Vwmxz$ufTfhERb;ZS$v1N3DO06fV+fg|kFcde zcZ=0pcHy!i<>FpaJ)91##6kah(b%Jnw|#==tw*d{7+pTcDDDsvVtj0W{qs`faskWv{u;v`4>$oNGpqw{ridqnm?ot?ThoiOQ$K>%Gr zg+m+?MMV)GKW!)^X8k2VMgrFG>pUHR7fqdbOk$qV?RSik+wi+4Qsp*`xEUjWRNk*Y zRC?OftPW<{H92%1m`=G`xwB33nr8m2>4TkQx-=Rf6t}lF5&)lHIlE#->gZHzjUS`UC4mBoua!ABmuqx{AXJ(6{5h;XE*jZxGWX#D9^1bJ5EeyQy< zSr5ewG7gnB_p*2$;XZS+65_ysu-D;~t6b=qgnkM%N%37zK}@W5t_o1ybV?12)5p(o zC-Jh(BbNoqa>|e83mz0d#Or*L=81GS=L6P5u1C|mn(g?=AcMX!Kp8+fyfx1ZRsxR} z>t`QCCxMq0-=f1~qg(>`ndCLf7|)_< z!$d1b@3zZElEY;*FkY7X*Kh4b_i$>a*%g2H-N{DnhbCKhVq-Vki?(jta|SFcnwY?& zj@#?s(cAG6cG`3fw8iW}^^Y0b(SVrgWYEbOyj16|p@$X-|!D4YF%@s3LhHW-R6tg5( z8Nkt)<2!t*0S&I`%q>D|h{apbV36~_;sr4*xO)&ND-S-5OCOUCaF}^FrsW&<^50~l z#XFD0WOBW5draaUDaro)^G|4Ejm<3 z&a)E;a)*aZ*<;b5(FbHpO(!-$EoeN1jybQ(V(#r4Uxc;;ND%~irXr;6Kuo}-m6$7z zcT`Or)9X6V3}SBSySmmjNzY{IAIDrEFEyc7Bu8vrqn|@jlrUaRi-L9e4aVqg%h9Y{ zYu%u(w|0=~S)Jj2j9U*ZL-N$lHWOb4Odu}M+N7!x^V4q0P3Vu052_-Dc)3W)-uhQ; zSWcg5&Pi3ThL#l*>uk@fqNu@`=_jaZPi<_li=dp{>A2}ch;fW8dkjL%p^8NewnpP+>E+q)p^mk&v>6F;j7WX(j{+KO^-6g?}ao<6>&z>_| zQM-$>-`cmxRUzGP4i-shdOC5C)mYfLChzKFIq;-|irKL)VKCeP&OkB0D-Gj}J_BcM zZg(T~E4oQHn|Iyuj&u*?GE7VV{eQXD>s_PBn&)D}2eBAn14zt$l33{^u%aK*I99ap za31s^Y(BPY1j8x+rR8*DwQ~${v-#wlMmje=CPXDI7CJP&BI`vz_hw4?Vi({`1%3>< zp?`U5SQi|_OE@Adv&e~^>0OAv;-JwL`Oy+urV;wB7IiP->;1?HCNLvS@Q13$A^Byq!N19jLSyE zumIY}ubt0z$9HMsrl)v$dC5B`?(vC^`mS~zE($rBZn*jM^i&g$WUk>_=k#a!@9GrL z@{glcyQ|ori*Rvb56*v%GqEBiXgh))&1z+=v&&jGN`-0v%{`SHzc%kjpAdR(Biusy2LnK@prW)Bn>db$Y=DsHbq!9{g)kH z!=Z}5OXF7z$gbv@aPrg)TaG=M_|g1P{7i@UjMH?aRd6klPE)a7e(czXdY2l{$YkB% zB&}V!8mrOeq_z`njgOI-HQI}k@@A8fF9-Ut#~ffQhG~bKk&iZz@ARW2EA9FD8Stq1 zc?eJ>J+V#aVAVu0^eeh%k$6=@Kf@8s;Q!PB%z4cAbac%u;Je@_?@kAw&Xj%KN_CNk@q}7-z zjd7j%Sc}QSNU&LMpxgXu21c5|#uA1EG$=K5No$@{_jt8fzUhtW7ZKo6c6ky+B4^mi zMC{4pxnm}RZh)FcGsDtTyB0JmE((|((nM*p45RFxZ#e}?1m$}qnf+x zojrW}wPY8)Vt}ILE$GVKHWzmXnE31wS#wkA;^eSHoN7&FP_5R?diHp1U3l<7}=>_akT1uQ_!X59fq}t;pz6~lMRirqlp3vI1-@dLbU$r zmB+aC-j>i<)+RFbzyEeUc9TkM+Yfj9L(3(*O!-< z?Wa`pqkGeQYJLF1rqHWuj&Teg_x$`!Z!3E2STfMGN<$yGQrT%8X-0u^zm#BpeyS0; zjK6j3%`?UVT?yX^Vn1QEL;mYn6*2USBsNZ2WA(Wc;ww5to2diBOT?i^e~e3oz%E?l zgEh8t2X=hJu@xV4;G0jUa<}VU#V>7tAevlut{SI~5Q_P*_vn60a6COdjWEkzmMrOs zk(?G3{G5n11yk57a=B|q3mct$5S@hv@Jd8c*K~1*Qx(?rv4K(0c{PXuN@wSH(L;5e@<|gs?wD%TAp|zTFL{~AUNmPjh6S^{$N7qcIzAkq?Sr?p;YxJ4@ znRx%WF^)LtT+81kW6=$xHQ|@~0CVOR2V=T%))=Wbt}q>d+Q#C=g8l4<0j>f;&QHXp zy!+-4&9|=k`;hQ_fYZTG8_Ul1Ch7pv{kynrx+SutfxTdu0=PWeq8HUXg}x97D_u}u zrvwj@6nBch@`hmwCbMrr9`u}~5AYHGCTnk)rq?K0C=ph?rZFtEPtuQ7dyJ!$Xg61! z&EJGZ$?3XY{EQSdrl}rNcU5GDy3ydSM)lnMt+8}$AC9lxD)11LFmht5nVGSU12haJ=5AZ(IYrP$&uS>Ab| zcC@fppjWG{H6PQJievvxt!MkrUoY$A&Rb7x(%gL7B26b+(*EkdYl)!2Xz51=)H z5ixnYtyRn=%r&A07xen)HQ*Ju2Nl*=`XoLS#=rD08}h8reAYsZ?Q!5li^mzGpQseT z!P&~q8dye4K3yS-7ee%sIn;pbEv>>bE{2(V22x0gBT{=ttaZx+>lDlOC!rv$b#~T8 zw07V=^F=ZH+*mL!z5dotK=*N=$Y#<;eS3S;J$(E24MUFGHuq@a7)J%MC7Px?CsA5| z|MABk6bg_M`{TzCV7`WIOo;0EJZcwFK*{8Es{USfpQv>ghH%3lA0L!|&adQk!BJy_ z$*8upY_wV$<07TD?lraaEM<|}95;$83jZ{D=;)5dk=N1_De;CW`epI+j@NGQt#BOn zNSu8y^)YS52ys2`!1lhKCA0A$RS3d&6u|)09%|qMnEiIe9c?h>QR>v3H-JpT|b*bHqLpL>{2kkLF1GbWzLJ==_cUY-;3&8APU=+mGtQx(&XF zD;_%lt}@QX2Dw}PE2H1-3$XAGOkqw^14dp$cJ*_&Sl-uL!+KJAV%L-GP43=H{TJeh!*x^M05}{$ z)6mXsh<}VI%-I7qkSkFx*j@>lCPx*1t2w_|+h$l7+AZWx&fkquP(+GrOL(^o=K2Jm z=o-oXq=>uGhH^`{oU>ygiRArP1T)XIdBIqXt+0HZAz zze2BG0zAZ2rb?Lk)&qG6ZO#If%7)(y*X>$k7l#_W7@>Lq;K?+dr2a_DtkS$|j9m=c zf8#7eYPoI@`pZm*if~`U`rP|5b9gh+L*)K+5*v)|=f?2HV?vyJH8Ym$lFaEdQA_8l z#)Af98s2!D?+IaTUh{wX9K}UkQ8RH%jR3x$4(FeI1pTxgr188*GNv7rz9#!=8$gXX zHYW0=0tY|`yN8X(f3LYEfZCjBX>sRD-55a&UGo+$B9&qkdQYFBk)py{2BPI>N{X4j zdth6n8?4w7;;b)+BS+k8q^Hds1Qn1B4OHkQJR_^Q^;@+C=vw3Q4s@k*Y%3v;ZIvVHtQkMy1-iRc@ zDyMC(C4q6wbmiyg=h|{x3+rR#vN<)TmYznRDBE&uJPMX!&`a(CS_5-lBa!HDyXCag zN}F)t)3Gjoyefzd+XWxzz1^ZZuqc6cD3^Lz|a8Sa$x{y4R zp$43!^CPjopfqM*$E;{(MU(fAgJL4q!uop@qOxR=m`Lt}9L-rQg2^yOw-ebYN}{jg>R<;>+ZG{l5hG<-hY^zF%Fu$? zcz|=)>d9H6IafftEA)*92srLE6`GNf%%Zy{G7l2y6Rv;zEQMG-F2M~AyjZ~dqr|x`k_jN7j2uC2 z)<%I{Wfoy3Si?-NJY~6=7>=Z_;HXF2CXqSC7jHWFMbEHT#BzouXb>_0l{VU6B6g5t zELL@Z#fFyfQVOxG}I@ z6wP#f7wFT(u_m}#Wi})xcr@qC1G&DwzLIBDWV}B1-k|*}2gEi(xAzPI3N?cleHYa1 z|NR`c__46Hha35BXRmBReO;Nhuq4oFv(>%}Sf<}?;AKd&n#KPh@@m<;`Y+N$x|r4z zyo)YKt}|vbZp$A(eqcjKGn!gmqVC$U?vZD0Yd8iMH#*M%BKl1GuIL7kQ*{vPz@ei0 z0NgEE?)=JRVe9Mf@9*FR°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

oCE_ED{u^9^~>=;?#_YK8+4v=?d{*Mj~ zvC*>=LcP3|G6m>CyN*!UOtz5XZcKehVBYn1kdYOe5CQUN; z(t!q<_reND-g>!JYn;d?cw{Q@$-eVYh){-?S-IiRf~WAH2>lSd!LBt?;Vzy7GG&+# zPI{NVVW|RwDZhv%%vc^bk4R0n^m8|_kC^@`gje{(W2ltB)H`aXNAS+JKb%&L5hza2 z2l%4|x&G_uU{einhZyZ{8^FbvWWr{6oZnoF7ia>H^RrU7rwAgDEegCp*Y*w-ok>)? ztE+nh5>E*xX`bub8lD4*D2+5)0E62|1OwQC8#kYB^sL;2=v(1WApO%q4>-(`UC=N;?W2@)qvN(u&TkvQ*qKgES(E-aXQof zLrV-(^3Ka^ka$a#!ptj-r-8MxuNieIRZ47=G(hbD;y@3$3?h(Z5Q_32SPw(AroH`5 z7%fBUCVn_YvZGIaaX$@KV*^9IuT5-J3j5gXiracFZJJ(G1&m-PXj%%fb@tG(1OD+P zL?@L40OJzf8q1z8D@4W_-X#xW&Xyy)F=ercUhlWJk6iV_UJ&aCZAEuG;Qs`=VyP54 z3a2)VtjVp+Rzp;5uEre~63MOlj0mJ|vk^$en%`$)5=D103(Kn07wBlkFDE0z(CuCm~VXXSDyB-}sFjLW7OK33n zjJE>Rh>a81tRZFYqcO)n!}a{7*&Tdx_MrIR%vR1m%F&MT&e0pmZWV7rqFg+OMF(GT z8z!u}-vyGGeXsuApmxNN4>QwDl3@wF;@P1eL8I*C&&O`)zBvSH9t=Y!nHh)q5C_Z- z8S{)QeWSBPM}oGFAsTAZ@v;1IW566kB)ffld=U2K7Bg5sc>sXm{QH;qCg>ah2(+kr zKXvs+V=c&`!t`0NzuBJ~pjPR3;4r7t(yA2kM7s{@cD6Uj3AHz|Th0g84w97dF6&dn z@p`bZxkNAXnvhcB4=w_ZY8g$UO3QF7Y>bO@|DG8O$Cj87M+#m-?Hqb$2T zICy^i_|cTbt%NO|%pzYznA^?(?X?NK4{u0fCe1+!^ia@%&34Szi<6ureCwA?0Z}-{ z#y9I9b}f6by&p>uc!nTw$x!3mN((se$%1O`g+FLyyEOcF%#P(uAu@R;P& zFESZt>_Nr`!`LmkL4zDi*ippGY8GUZZ3MbpO;yzUP`quECdW16$t}eWx%rL-fEwOH z_WMXrV<{_l*-{lGiy0IqP;2CJMhC^pMZM>+hmA=|3Kfx7S1p$|!pko3fPv1Rp<@22 z(kSAPgEZ5Xp>qUl44L010UQ&H5pC(RC?RozehSaMD#T;x!&3)*_a?3~^~w(7@}Ux| zS^I1`DUKyhMI1&WrA*x!)E<9eF+;%y2OFFbKdIv_wSJrhN{4lhlhts4N%k7gOy|!!0YQPyWAPqBPZ*& zvDQqqTHyc6dck=;fHM0Tld%jd2`RnvUp<(~8hBMhrV_Mm7zaMQ@KT3&ijHDsX)Yew*=(0!I3n4Us+;+Be zqXF95svSM(Q6hhh6fa^y%{dDH7n`-2hVM0#)_W^BVVAY9q(DG(^nuU`MQbx!xe#I) zv2qPTyS3$W9Ser3iQR}fk%cM{e_9s2%8c-`3ph%wnHmQZ1&auiCUWkCtf=roG z1g+=vNhdPQk@#FRh#t!BV&y7L1Ge>2UjVjVlCUFJCiSz3LoVskGaBjmJKQ4dcJ69G zIs*j?o1tE2xW<>?;6tcllkGWQ+*;{TJza(-D^_o~3e`Nl+Yle;J)by8NIghh4#?I68jINPX@f%DxDCaV+vF+Em#c3$y zPrkjq0Y8}|rMF*XCYc=qfb3#gD0_0?0yxruYrTjJ`KPiZd+%ujyJEumLcI5q3D*V3 zro}wQ0vcw?AZQ44k$|HyY#|O)!c*u?IwNh(<~lasP>Kx20V-(KT)Kv|h>E*?OPNx)feto@$Rx%6PC81tjBj*uqz`hhZc}xmz z(;!LOpS-!$ZIw)`T?o3Ix=2^JY|FGW8Y5eP863Te%zOke_GQcA znAe!*4#9p}FMXXcMwbgDRum;K$6J;|rLw*0cQ`2l#FYrtvf=05s;K4JSGg)_A0ya= zroHD-0D&Fg2v3{HV~D380QagCX5CO~lvce5bc4xwEezVE$>bsD)lhR;*7+D7kS0y` zFGfIyfR&p}w_XCN?YW}XSX|fucC!z8nBI^B5kuiz{C4{S)=v1zrIi9Q1!`HTJTTj_}4GF~%E?&rYwZ$k3I|R6~G$Tk5foY!9VAik=mf@er65?L77!;^udJ{Pr z-kL-@;bM7Q&;ZiHQpc2C#@v8M4`~dpz1X}J$c#wpr>CbAV`@zHtPWwOf52YKMxdU9 zT1ma2KGI+YQzIa;0cw|*999?DzR()ecJN$$iWn>ASnsISoPm*jyurbmN;sl_>8%@W zoNlQ5U1Y7Yb#_tJLj5oSj=9*ju{uwACWaJ2YD6}TH0kc49(J#SSXMHce_L!=Mc2+6 zR8@V2=!HAkSYVJ3J@ne~$#(HMDj19rvNkY|TY-WmYfB7`p}KtI?`v`nVdF=O(XN7A zm}?o))%HwA;7yA!F;Ir5D#MW;4dKan5}ec#M{t!fyIun_))XEZ7_LLoYp`W|er~1c zpOeBue(U&8z**oC8H!4?WX%0zEM(U^t^~H*F-cwe^WVS3g?Ce6*V1c@92nDVc%!Hl zyUw?5>rouo=IoOKAruSxAh!}^{P@e1MB77T?wn6Hz>Ra^U$Vlr=8tovp1Fh6AQiqy z9U_;|U?rgmap1wnGBm%?Cl^1&)xG0u>$!MaWrEkqghb;Z_$4laLu!GLLo)r<#W1OX zuQfoew(3CULS{Y+B3607R(ETp!W~do{c*3pHzhL))6bhK@>6C0`_zPp0XUH3s)8uqfTy%G?GZ_4ypv;u%bkR@H=c}rJ&avU^<|Vnk{-S#p zpi)R(=q8LzC|LlP^$XTA=YS}g{_oJni6`~T%S#I7u%mfw(16%9#w76sR6D6RLX2qR zR{AA6P&DQccEink_b1?QArU*9Df$p1<7|MP8#^`)B^+FttB8(@$l8$7P&4Xs^4N&% zt5>tRcR-Ce)uqaf0gFPQ?r624lj-klCikw#<|E)$HCw0{J#>lJ{>oUXCtZ&DQnJCX z($vPkF0NZF?InI}iZ}Hae`|=3DIj$*l>Hn++pZdm2hpCfRJau;k0r>wDmw|=2-~@1 zO3>~^$WreONOZRU80!-)bPrRb$xiHbYbRX31?x&TY0@MLJ{~TXR|+7u^^62fYFl~) zt*`Mcid=DL{G4kQQQhj!;2YFbmes}XJH~2R@6xt?RC;4xgEZBQM$ILvMuI*%4K5dF zKUKVa$Fp2C!-)H!P($jdh`gnZkzXdq5XjS;;5J^sZdMwxm{KQLi9l+mA?9G;PJ40= z5ZZ%)M{GrNb5Ga{->m>_(SUp%TkIvxnS2%#So`-sf62&aX(kf6Nl?Pe%L~k#=FX<6 zOVkXAQ_2DEY?o3*!+-&0J;Edp$=5!O5F_>W_6GQCeGV{!0}H{IO;FT0`ppZd zPJVxXCoC7bt)Y4m4Nyzo!vR^N9V>BwV;t1f@h{eEY+qy_w0=ajF$1&c&^qu@KMI&V zIWmQ}8p&=LD~d*?W4_ojXup^KBYkC?T6tZYuy*>a&kX|csCNTz!XhQc2^zm`_%UI9 zM~Tw1S<`DXT}7{pj;i^fwFSI8(V`g-%Koz|{1p)r$?{ec~ zcvl8M;qTPve^l zim23;48pT>)D^f70c*1PPaMaW#UBmD+;Q5>G7FSuQrn`+nD1&{`@#f^WLLRl-|Oou zr-21~VrFlpdlF+Ml|tQ80Hb@zZpNomld?vDMWTxFVcC^QMft?oM2^iw!=vRYQ{b+h zDDuNuU%dj=IT4~3?%iECDci-UH?FO3jId(qLGn6A>PPy%?jAG9baS$}uVN)<;{v>v zSq(VI4a?P(418~b5iSmmJ!2Flp4DpXjiKWvj>sJX-Fi)pv@LJQx%CvfX{j6DR=E?w zt{HKWRrKZpcLO`~sHv>!CXgeT#;!?|4O9pICuUz(p}0wtCX1W6S|hY%$nIkHL9?)) zEySj;W5+NQFG5aN39um9k^1}X?Tvtu%17}g*r=vXuduIT-bcly|LR&j%QY_XtGS`k zC_p!x-w>4!VO4n4x^uZ?VJCqc7g3OpMzt$6aLz!*=RV8psUlQl}fx%44G zwj&#jt+_aF9q89<(=bf2c!<6H|LmRpcH6cR#F^Whq_rx$eg7BpTlB>GsGF0-ckAEP zoDB#{w@(cC{KfRx)=CF*MNg6?VT zQN*{w?#(r~5{?G+ad{vYHWL=}NuN5GvWJ>6H?Y(RKw#_Ty%~0fu{>}BjiuVhXJDXa z+j5L(#(0E1c6WEjDjh?Psp_x4{$inc;hJ1=g(#pCi^CbV{(~`N)#^kG`qVh|BjbOz}pii_v)N1>2V1)Z}AFSh)lmqt&eKXbunFEkw z*!CKh>8kN#-_sC@s&;3GnB(Fa6{V~AT9j?(18o=$!oT<(Hyk@+)QuOh*=*R$X?Q_> zxWB*mH!UEXDf))dB!0{kk9K>y+BTP#YA7S-+!$*rhWyKdSD>VDR6g@Z31AHT{*f^$)FW1O3C#2f#B#*#o0_NCYy`qvrx zNf(B+ewh@}KI?zdbpMl#TImQlXS^}@(nYQ@{@x5@ndwy$QL=2MORa7B`KGO?0EVAj zsxPF`bwR~OF@?2971`klyCfRjGy>CSdYqunbUuA#-ZqKH$nYaB_O4 zkowaVViS0j#PQWyk+M_ayTAYbd%t((Ct@!y->dq(aoBdd#lKNKd9_*t|i6 z1n2mMDD#ha0qKIHpsWd3J-7Qg6k3Y}#Z7ZxHqQ#uK?4Q*Vfr!K15wKJ=2LXvw&RTY zZ?U%FzdBc?c~wk1>nU>N0;TM}=Hz`kGF}AUH&ws#eu^=j7=J`*RU<;BIpv=Y;|h($ z^SM^};=B|_;J9zKky%1;ZZ6W_Y7M1^%&tR>?fl(uD@6UPZ=wIy$S$k{w{Y4v-it!OlHXQH2AYI4Pj`%1k&o4e}8I+0!}dX69?tl31C)n4*$gq`&(`6ehpQX~@zk)} zMW>58;LQg+&`&?aNOG#XfkZd_DH^l(H3c<5btxiDF4#W~kXB}wGCoU*Nlb@kVZLG3 zw3$@O)CQ}4sdjb;El8X`aG+*7%ft$5o~${Qc$zgBF#>G$XK^C!wBg~R7_po^O;jL@ z?e5?~BNbQZ6)vtz6-;8jse*L$ytGEa(d48MjDFdPUKEM0oOwFAgtPoE7%RP|ERD*Q zMTx?kDu-G>0b<@h%vDko(HhyK8M`Q(YEr$(bZs1l=e{0I9|_G%U_pLC9L&FZ`mo-oAr6UlzPUF$~%}VN>U%;j2F^XpG`(ktcz16wz^FtdM&eL-fPLLq8yQ zE<#PN=GX5viiwctV+_0QXQ4{0hZuKaMrZS?JLtmnKird?DjS)_WtYTF=?1tc5A_6E z8#BEzN#MeUiyXoSG3E2$G1F>Z8(eue*lxE`)yDp$@v^AKu48@9I&}22V)aL`nAns+ zhq%bO2O^wd`wIg+$fWT+6eP1;AMC^HXI zL3twz?m(%!xpKkvXo|1;pW@^t&#A&kEPH!(hm2ZcKv>Tpfs}otq}mDnl*4BrSzsJ^ zH1?&HKoI^#Lyf$U6u2jT3hy?WR74E39>=f?4ds-1bNNP5EAA*#1~UNvCMn9RVtRvW zB9`>o7?97MSVC1Su3V_oX8T9ADuMvAS6zO&G&09?Zl-dI#j|RaSw-4e9%|KfNSvFa z3yX{QHJ)i4K3dMr&PUQD;$Plibp+OxtE2r;fS$g8N~sL(!v%T2+3Tvfb(n&fmvWj@ zC!!zm7Q~UM&3Q*qX3)WWHcCrX#4w(RA`_n;p&=Cg;*%X(~10nWm2?W^$#7RinZTS z4ry!;)R{6X#>2)2WKo|n;E{{%qU!05Yo0ObR8JwUFpNDye%b;_Mf(iBqaq1rzYoH0 zvlifX@75BFroc%p4{k-&YVq!_JVnxLhn#@gV&ty^aO-#nS3NxPa#DN^1LkJ4K|c=B z>VmuJJHU#qXpBy5r8pnxC0MOiFr*@YVn8U|a?itjUwaM+$Uk-|AA$~3a%4ph%%^mwb0+|J2@IezZc!qU>UG@Kem7^i1}dQH(j z*DowRq^V(Cl{Ju)!RL6WS?^22tcH79Ky2DFU`!|QM=@^N-j6Ak9*VDAmB-J48|0(W zP~6rcwe@4ny`;p=vwPle>$}PuhB2#^i!Rs@13Nhgv&BP`ESY`TllL?FMN>%FZh^(E z(O&s?2gZMrnAvNvqVaWQo!GGSFlgoZ%fEy^Adf>#dZ8+y|K_~CESweX&UNAdXgi&v zn<`-9J7>d_Y5~r(UD966d`b?1N0>rV z4BgM6@ydnLr4U;2M>(@_K^5V(qqfa1+c=5GdnCoG#!Nj3waR|na+&7^;gKNXLPHH? zg*?qAr%(t`s7EOKB27evv+_pa6sEV(?@&Ci!rDZZ>AqU=Dff%y8elVWTF5NlNo})l zuf%yFb8t7yZ(nQ7xB|Y|JYfEQ_^6;?)KIJnVV@by`@GG6=a@&kq(+e)>aNz*K$k&2 zeqz%!2Ju0}zqq^SeSq8*&tQCx9)p*DmI!I*{KkQf2RV9uT;+#?4vtz0UWXe~5lH}l z%%Y3UVNtbxVI*F&jCqG{8WR!>T9=~aV$fGj82Y1?s==xX7DJXro~_DLTpa;y*&7QW zKI8bz!cuJSAsL1-6RpD{aDmZ2I{0R@k>1=Gao#sS`t5eRQ*&?|Gtp1+K@#W#>+xp3 zvA>@|UGBZmewch*n9u!Qrio;#Foh>K8)zG1=NsoCS=;?7uB!)X>mB~lB8F3ImG z6MRx&$YPH2W9kmtNAiuz2Z#(RPR|;ea)auAR(kCYqNQ2gH8+T4J+qCigB3NR%hC>o zZYd$3`9+BL(TQ0zfyb1Zs%j-g&O)_7PY3TNNvq6A#)%)Ffz!IA9z;%MF;IeF(2keN zXPhfZjXdvgN69rb)ZE6W4ybZ@Im)$vF5hR>Z36N!Qyij+dG>0pCMMLRN5*~>oM=_P z6%BnI2lq7_j@(tskMb4d}G+sv`&&D?Ch8C$b&f0nhNH)k%5)ImRXuX{UjF$o| zHX=3h51m_{FH3+|2Qf5C<`!{de+(zGJSE^wK%6E?KQ+X&sX|JS>Lf&avUL`xvsDnc z7di|;|%PcYQ%IT;3G?oWy9&hit z(1HwmFTS)P7Q3oKC=2jZQ?NL`F{jHVP$yRJCE_Ok(zvW>k)hIRat~R*{9TQ;s-9c4 zcH7!HsaE|f$Ac4_OaPhGIUA8-ZJo*?l^eMb4qchen4xxtam(jQ2(lXps>`3jRI|eZ zv&_+3Ol;9YHj#o?S+r(a8_OY3j*E>{I~O*hGIlHLU#wK&eJ^=H5eG*D+~A2vUN-7R zl7TKctr*628kz)#lXjM0V$h#eLnI82ygOGN#O4lXW)GhcfPo8&tsxVO=|EN{oYeY5 zVvJERbWmwWa}MOKC&QQ<@ulH#O&@fF7{-#b?d|RD0$w?+mYIgUTcZVb*g0Cm8^%ms zFTS+xb{pp9dc8K6{i=;6DZtoRdL1+Dw3owwvY0R?mqUs#?BU@dyKVx7FHN3Z6tDH& zZU;Gq7ntTqM2^m|8;W#SQvo}Men_mZKXl_dp=`78zkI9oi>$3SE!yJ)sRrBKnQ(gQ zOg#Uo$=7j1!`&JOQt2dC0Sy7O521!HaPeGdF33;2J9uahQD!)=+3GTuL40Xp<%g}0 zC;>4AZWhB>2Fq-(#stb@-ZP63107r4n(+-|ram4Y8^K9-r+C$P14%R9mwkJGe?Q^n z$fYGRmFQX0hzzX~C6<((DcT+rc`1uCp%M$=U9vERgj`=$)u;_(+!j-7GK?xFC!kNg zdsg%W$S2Q~%^mNUAyWgD8JwJ}2|)0#(fGrL!P#-&g3_CgDXq2-nc(sImSO@`tzMS# z*+D4A!cY$)|DYShFpPIH^s!@Sro)&IsOevBlp2OH9{)05BPHLCmXg6#k=s#m%4Pm(kVkeQLP(F3yu0UIUtn6BkH8& zvV>XT5^^-b_K*u3S7sN8e4SU$Xxg9Ccqx!Jgb-=O?~DF|Mq$yZ7XZro-61Emve?KH zMKh85cTM@v>M(UQK${HW%2S-11*h88YQ>La_?{$WTZw+EKu;PqQ}!Vg)G5SpN)nje zZr3G!v>~Ps_hE098_T1SeaSEk;|;@eu5k&%;tlKf;o(7UB?ylYq=nTtQ+S7A7(h-)uIlhYLTBPtUmUz6w}lG>K{ugSlR>{elgnipR%C6c3{VLSX&< z_uoZgpg1Oa)9vl;<-{}zf2B<(<_PYah-n5599;>wj6cF?z+6zqYlVBCSCh6*KWV3< z4)9R>{l4!5%dPW(!kD{U6o z8Y9~G&1pB4FOL+nRq-RkFz7h&G71KS``+z#@k@5|WNyCvj&WthccY+$=wWwIB7<(@ z7q;Ex`IYl7<1YqV1o@?S&+&s*H_U%An8Y=up;jE3IWGvuI2fAml7`9-cU8cS#T~g( z!y6fn3_7wQj)n`Ky@U+IFbu;mUJH=Wl^dGY%hmkvhG8s#X$Un|woqE#a~NZE=~#}& zqLgT|hNA?FZNf!ynh-&D^uD-<5dFk5JN`vx+ppFz8XdNK_8ZsKyI!v!9v-6iZ8jTr zx1frq@*DsB`7;a-;{!Wsad((>q8*{kPK{m10hUJ?Qxm88pdhe{uz&tkNqDZhJN|wmw*2GC#T!;J+GJifbM|dhy78i7{MpyPp$v5w4Dptys1z zfBPP94Z|=D!!QiPFfPHRgc`Ee4W^8uI1D8qD40pj}m{T}zUDu-C5@NRE!&kOck81Yaz z+1WkKFbu;m48t%Cb%dB7s?Q&Evf5L$R*E4=0 zA1LVyCcjr)yfGpTWi5Cccop2AVHk#C7=~dO#x>*Lh3iQ<_0A}bRqNy9g) x-|coke*DN1Z-!wQhG7_nVHk$-BKV&G0|0`tsJ9G6K)wI~002ovPDHLkV1l|BP1pbc literal 0 HcmV?d00001 diff --git a/forum/static/images/linode_logo.png b/forum/static/images/linode_logo.png new file mode 100755 index 0000000000000000000000000000000000000000..c47d18b92b0e634c9d68044b10f6da4c5bc017ff GIT binary patch literal 2780 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 Ce=jTm literal 0 HcmV?d00001 diff --git a/forum/static/images/logo-dance.png b/forum/static/images/logo-dance.png new file mode 100644 index 0000000000000000000000000000000000000000..2dbf9c963b718441d8d45fd812cbdcd245b98dc3 GIT binary patch literal 949 zcmV;m14{gfP)0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU#S4l)cRCwC#THB4}AP{6jAO%w3LLdcF zAO%uz3Z&o^NP!8#8v+}GZ$|P+7UEG2c+R>zr2bf~J>4#@J`o@yDkvvzg`^PIDmM4Y)}B20H^dPjq^= zJFxH-!`2!9Ix=H!0JyiQKMbA$Qq>=p1KIUB)eWk@^+6{LTW$uRY{-iSz&0~kw>5q+ z_bwmE0Ch6n@qQ_7UE%qdAqwnQR4P*h#WZFBpIIS2fzb=0DDZ+$OQCwKh$!#W8cG{L zsgM>R!w#k+FBHjuvd>fkr?|?Kgoy}(;>W&2&n3I80s&73l%L;;Lz!?wVb2X+QqP=Ef9sw||z`D0+ zMopR+s|;91m9BmjsO$zrFS3%>N62lYm<`NI+_CCbz(K{&9j$mxS1rpw6w zBV~m%yq={jvpCq3DX;;(V&h=#@DoPXv<&Qd3<#b9o7F4Wr#tsi-artE@gSQadBgZa2+~VL? z(Uv$<16%pq#K{gF;6=j3F33(&i-k5*skQ+Cds0RgCV~?;L;^wY3}y0ll7jvKP7J2~ zURl7)qbkORUs)&`we%Z31d>zF4 z>&ez}<+*Ve2asstk*x1XG!}Z^sl%{2SG@!)A6lD+e^(LwHL3QkL;3BbspRq1p?f|v zL$4c~zXtX6b>s89^WF3YZ0osm+&}C?gK}c`&kPC!bw=YJjamQu0o?bU{U80~w*UhG Xcs(}4@XmF200000NkvXXu0mjfI=-`i literal 0 HcmV?d00001 diff --git a/forum/static/images/member-icons.png b/forum/static/images/member-icons.png new file mode 100644 index 0000000000000000000000000000000000000000..c372ebfe5feae097119e202d86ccfda7ee7f89f5 GIT binary patch literal 4173 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

X1t$bSh?0OPXR(j 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 P+-37R^8fij`Pus~q~FSw literal 0 HcmV?d00001 diff --git a/forum/static/images/reply.png b/forum/static/images/reply.png new file mode 100755 index 0000000000000000000000000000000000000000..5493c723996438f632f5ca455f40e1cbdc02f297 GIT binary patch literal 1153 zcmbVM%WD%s9GnGCUvto>5+lS zzKT9Ms;3OD`v~j`Bqm@Hs=>e-vwbN@a|^l>n}^#x2Nxi8G|eqKHB{<{vf~lh5kpZO zB@s;G7>*}IQ9J|%gb|Mf9t%+{N^wC#2rfMwv*sB!sjL*1Y_V0Et5fPqJl|+EVvTsr z@kV%@N~J;#L5MO$)Ss}a7DR1-Pg6l5zV4YWH60sNM0%zsCDCat5AtA?;O^ubfNbGc+L-sGybPc>U7O}i$uyTr}^l`F{}(Wv899A~Uq0sVD{I)2@8 zp*+w5OPX%l;X1sY#b_1cnWu?S@Ei*+bG47rDm&uwIQM)`qSzA3*m24&WSe=`n?{3>Wb?Hnl^Q>hZxi zscCQ`uAYR)O<@P!860T*V>!a*UKD3 zz1j)SuQk=}Pj0mpQ<(?fK=0l2=PDb7;g)G}+ktoQK}!U1gWA5jdgW^PQ&97L%G2EN F* literal 0 HcmV?d00001 diff --git a/forum/static/images/ruby_china_logo.png b/forum/static/images/ruby_china_logo.png new file mode 100755 index 0000000000000000000000000000000000000000..b5e76a6d11cde0c500873650d1fde7ac0de70906 GIT binary patch literal 8168 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 literal 0 HcmV?d00001 diff --git a/forum/static/images/totop.gif b/forum/static/images/totop.gif new file mode 100755 index 0000000000000000000000000000000000000000..0ea74ef4d90eb4defd1a5c8304c8dad37839db5d GIT binary patch literal 644 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 TUJ8rb00000NkvXXu0mjfD_is* literal 0 HcmV?d00001 diff --git a/forum/static/images/ubuntusoft.png b/forum/static/images/ubuntusoft.png new file mode 100755 index 0000000000000000000000000000000000000000..d0aee512d46c2176fb0f5381e69aee3878c7cd1b GIT binary patch literal 2226 zcmZ8jXIN8d7QUb$MKGWOOD_tFAv6O5OOYakqJy*u!In^l2t+U*B!Lu(zv?d`8y3A=2<^%MJ5-R zqBRam8}31$Ikg>5$_zt$>66Qzsuf4d>?8+S+&rm|=hw^oyQ`3MsTLQlSMJ|gKt{cK zk*s^+ZbwR#=+5ZMyu+t&_MjBtqVnpjJOIED0Kky}0Fok*Ns#&u^`Uwo2*{}efIu49 zfG(^*;g9GI__t^XK7P42nJ4OFq>P94KN{}%@}J65u!!CESlAWzC6NNuDDr1de<0z(YClu&oVVY<_C zwX*$NSB+>Yg*HCZbwXEuZMA#ghKSMMIj!vU`<`~~b1x*T+}6dho=<5-A23~$Q`ZNl z?k;bIn1Xw$Op48D?u?OM_6ybOBVLbHiPu-ZN+unWI{N7oevT#_57uMHy{4Fm+YM#S zRez|}Z-siFc2PrmTv!ls!jY<-qBluz`z5mv%uu?y!&DIa%`y!KkRI2D%UM|SV2H)fn16qIC z0wpbu_}%~m_1$U`Bp)((E+V@CM~iu^`d&Z-J0>RW*_%by(g&v!P`2+Ej4&ice%>e< zA5qvqe2po=-HP=>ae^|G=|=x^$;VSHn}hdkYR0KrKk?a3x(!!{_VL~Q7YP1t4{QWj zx;QajpVjoOz!nx~Ao#d^x&j8e5=`)y5}p7T6##D9?v? zQ`sY`!=dDTXJ_@iu8-`BG)v4T43V|Qjukw-S3hj25;w`YA&=S@Xdf2Cb{#saQp+aP z>}@J_t2zy$o*^A#P4Qwn3TjJhXWwcRgsRq#QB7ux+!z zkiToDg`e)>9nQqjMh7`WCHm1V!}rQ}!Ut#wmr2dSxrg1-&^K8pD(}T=Mb@N670;zr z<iq9y{Z^3AMe2IUN>Nh!e6J@AI)BXsGFmfm2^M$sM1 zwXcxWCD6$mtB`FgKC3H`unRcDrl)QNQ?{O~K7Y?`p4$duD+vv3N`Y~eq}c` z33qsO#0r24XQ)x?8!?Uv%-88R+*-On8e%d8%hhl58Lx5(Dxz639u*bi`XqR)?jo@- zT8Wf$UiFgI2&|X1b%lh8iJWaB%O33JmPN#vZ$NcHB&GuIdk%j53PhrfkKR!dDaRxcYCfp-#L(dV z*9cd*`oH-fDDEr9qDMk`?45#F$!mC(O^P>dP5A;YvLW%mco?PmVo~sTOvM_0N8HTZ zi9C&w)3k$v(3HrhFaBLee77Fh(v&ZrDtLhOvo~I-7JjNTwye*_UEu`D7Gb@o2RRMg ztdgpUIQm*E8J}$tvDgq=yN)?puVzKPMg`bu9g=be5bC@O##t9dVDzFv(N z=2jHn=PXKYo99sI*lqp1cyprxN^H5VVU{M3-9!jSeokL89N#oo9POysQHd{8wxqVj z_s%&Zm0I+i_vN;dXw*3(D0{oKd8FZketw1WQ?p!C2JvM=&Oe57pf@GKpBE+ea4r2G zxckz4Vuf|5aF>F5l$0h0UFdVvMp3L6>F|&aFT`wrs;99&UxtkL(?pjOut|2m)vO`q zz|b_vW4iz+uF+;|?F=i2e2y{t)tnQbsR^HkKn96Ki&Cdb1>uAK3;u8^L*&Su|JUMllSRFE7;qwLIP*PS z*)l}TfCtviEG59{2U^}_9D-oN==j?D0C7^Kmhiw0!iWfpZ6Mxfg2yQ6-U$y%$DI3v&ea>Ef&T_|- S|HFgQ0hGsK_gdGJm;V56E+L-) literal 0 HcmV?d00001 diff --git a/forum/static/js/base/bootstrap.js b/forum/static/js/base/bootstrap.js new file mode 100755 index 0000000..a535f36 --- /dev/null +++ b/forum/static/js/base/bootstrap.js @@ -0,0 +1,2036 @@ +/* =================================================== + * bootstrap-transition.js v2.2.1 + * http://twitter.github.com/bootstrap/javascript.html#transitions + * =================================================== + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================================================== */ + + +!function ($) { + + "use strict"; // jshint ;_; + + + /* CSS TRANSITION SUPPORT (http://www.modernizr.com/) + * ======================================================= */ + + $(function () { + + $.support.transition = (function () { + + var transitionEnd = (function () { + + var el = document.createElement('bootstrap') + , transEndEventNames = { + 'WebkitTransition' : 'webkitTransitionEnd' + , 'MozTransition' : 'transitionend' + , 'OTransition' : 'oTransitionEnd otransitionend' + , 'transition' : 'transitionend' + } + , name + + for (name in transEndEventNames){ + if (el.style[name] !== undefined) { + return transEndEventNames[name] + } + } + + }()) + + return transitionEnd && { + end: transitionEnd + } + + })() + + }) + +}(window.jQuery); +/* ========================================================= + * bootstrap-modal.js v2.2.1 + * http://twitter.github.com/bootstrap/javascript.html#modals + * ========================================================= + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================================================= */ + + +!function ($) { + + "use strict"; // jshint ;_; + + + /* MODAL CLASS DEFINITION + * ====================== */ + + var Modal = function (element, options) { + this.options = options + this.$element = $(element) + .delegate('[data-dismiss="modal"]', 'click.dismiss.modal', $.proxy(this.hide, this)) + this.options.remote && this.$element.find('.modal-body').load(this.options.remote) + } + + Modal.prototype = { + + constructor: Modal + + , toggle: function () { + return this[!this.isShown ? 'show' : 'hide']() + } + + , show: function () { + var that = this + , e = $.Event('show') + + this.$element.trigger(e) + + if (this.isShown || e.isDefaultPrevented()) return + + this.isShown = true + + this.escape() + + this.backdrop(function () { + var transition = $.support.transition && that.$element.hasClass('fade') + + if (!that.$element.parent().length) { + that.$element.appendTo(document.body) //don't move modals dom position + } + + that.$element + .show() + + if (transition) { + that.$element[0].offsetWidth // force reflow + } + + that.$element + .addClass('in') + .attr('aria-hidden', false) + + that.enforceFocus() + + transition ? + that.$element.one($.support.transition.end, function () { that.$element.focus().trigger('shown') }) : + that.$element.focus().trigger('shown') + + }) + } + + , hide: function (e) { + e && e.preventDefault() + + var that = this + + e = $.Event('hide') + + this.$element.trigger(e) + + if (!this.isShown || e.isDefaultPrevented()) return + + this.isShown = false + + this.escape() + + $(document).off('focusin.modal') + + this.$element + .removeClass('in') + .attr('aria-hidden', true) + + $.support.transition && this.$element.hasClass('fade') ? + this.hideWithTransition() : + this.hideModal() + } + + , enforceFocus: function () { + var that = this + $(document).on('focusin.modal', function (e) { + if (that.$element[0] !== e.target && !that.$element.has(e.target).length) { + that.$element.focus() + } + }) + } + + , escape: function () { + var that = this + if (this.isShown && this.options.keyboard) { + this.$element.on('keyup.dismiss.modal', function ( e ) { + e.which == 27 && that.hide() + }) + } else if (!this.isShown) { + this.$element.off('keyup.dismiss.modal') + } + } + + , hideWithTransition: function () { + var that = this + , timeout = setTimeout(function () { + that.$element.off($.support.transition.end) + that.hideModal() + }, 500) + + this.$element.one($.support.transition.end, function () { + clearTimeout(timeout) + that.hideModal() + }) + } + + , hideModal: function (that) { + this.$element + .hide() + .trigger('hidden') + + this.backdrop() + } + + , removeBackdrop: function () { + this.$backdrop.remove() + this.$backdrop = null + } + + , backdrop: function (callback) { + var that = this + , animate = this.$element.hasClass('fade') ? 'fade' : '' + + if (this.isShown && this.options.backdrop) { + var doAnimate = $.support.transition && animate + + this.$backdrop = $('

+{% endblock %} diff --git a/forum/templates/topic/profile.html b/forum/templates/topic/profile.html new file mode 100755 index 0000000..c7e7897 --- /dev/null +++ b/forum/templates/topic/profile.html @@ -0,0 +1,273 @@ +{% extends 'snippet/layout.html' %} +{% load forum_extras %} + +{% block stylesheet %} + +{% endblock %} + +{% block javascript %} + + + + + {% if user_info.github %} + + {% endif %} +{% endblock %} + +{% block main %} +
+
+
+ + + +
{{ user_info.username }}
+ {% if user_info.website %} + + {% endif %} +
+
小程序开发社区第{{ user_info.id }}号成员
+
入住于{{ user_info.date_joined.date }}
+
+
+
+
+
ID
+
{{ user_info.username }}
+
+ {% if user_info.nickname %} +
+
名号
+
{{ user_info.nickname }}
+
+ {% endif %} + {% if user_info.location %} +
+
城市
+
{{ user_info.location }}
+
+ {% endif %} + {% if user_info.company %} +
+
公司
+
{{ user_info.company }}
+
+ {% endif %} +
+
Email
+
{{ user_info.email|email_mosaic }}
+
+ {% if user_info.twitter %} +
+
Twitter
+
http://twitter.com/{{ user_info.twitter }}
+
+ {% endif %} + {% if user_info.github %} +
+
Github
+
http://github.com/{{ user_info.github }}
+
+ {% endif %} + {% if user_info.website %} +
+
Blog
+
{{ user_info.website }}
+
+ {% endif %} + {% if user_info.signature %} +
+
签名
+
{{ user_info.signature }}
+
+ {% endif %} +
+
+ + {% if user_info.github %} +
+
+ 开源项目 +
+
+ {% comment %} +
    + {% for repo in github_repos if not repo.fork %} +
  • +
    + {{ repo.name }} + {{ repo.watchers }} +
    +

    + {{ repo.description }} +

    +
  • + {% endfor %} +
+ {% endcomment %} + +
+
+ {% endif %} + + {% ifnotequal topic_page.total 0 %} +
+
+ 主题列表 +
+
+ {% for topic in topics %} +
+ +
+

+ {{ topic.title }} +

+
+ {{ topic.node.name }} • + + {{ topic.author.username }} + • + {% if topic.last_replied_time %} + {{ topic.last_touched|pretty_date }} • + 最后回复来自 + + {{ topic.last_replied_by.username }} + + + {% else %} + {{ topic.last_touched|pretty_date }} + {% endif %} +
+
+ {% if topic.reply_count %} + + {% endif %} +
+ {% endfor %} + + {% comment %} + + {% endcomment %} +
+ +
+ {% endifnotequal %} + + {% ifnotequal reply_page.total 0 %} +
+
+ 回复列表 +
+
+ {% for reply in replies %} +
+
+ + 回复了 {{ reply.topic.author.username }} 创建的主题 {{ reply.topic.title }} + +
+ {{ reply.content|markdown|content_process|safe }} +
+
+
+ {% endfor %} +
+ +
+ {% endifnotequal %} +
+{% endblock %} + +{% block sidebar %} +
+
+
+ + + +
+ {% if user_info.reputation %}{{ user_info.reputation }}{% else %}0{% endif %} 威望 +
+
+
+ + {% if user_info.self_intro %} +
+
+ 自我介绍 +
+
+ {{ user_info.self_intro|linebreaks }} +
+
+ {% endif %} + + {% if user_info.douban %} +
+
+ 正在读的书籍列表 +
+
+ +
+
+ +
+
+ 已读过的书籍列表 +
+
+ +
+
+ {% endif %} +
+{% endblock %} diff --git a/forum/templates/topic/reply_edit.html b/forum/templates/topic/reply_edit.html new file mode 100755 index 0000000..668d8eb --- /dev/null +++ b/forum/templates/topic/reply_edit.html @@ -0,0 +1,66 @@ +{% extends 'snippet/layout.html' %} +{% load forum_extras %} + +{% block javascript %} + + + + + +{% endblock %} + +{% block main %} +
+
+ 编辑回复 +
+ +
+
+ {{ errors|dump_errors }} + + + + {% csrf_token %} +
+
+
+{% endblock %} + +{% block sidebar %} +
+ +
+ + + +
+ {% if user.reputation %}{{ user.reputation }}{% else %}0{% endif %} 威望 +
+
+
+{% endblock %} diff --git a/forum/templates/topic/topics.html b/forum/templates/topic/topics.html new file mode 100755 index 0000000..bc1beb0 --- /dev/null +++ b/forum/templates/topic/topics.html @@ -0,0 +1,187 @@ +{% extends 'snippet/layout.html' %} +{% load forum_extras %} + +{% block main %} + +
+
+ + + 微信小程序 + W3C + 社区开发 + +
+ {% for topic in topics %} +
+ + + +
+

+ {{ topic.title }} +

+
+ {{ topic.node.name }} • + + {{ topic.author.username }} + • + {% if topic.last_replied_time %} + {{ topic.last_touched|pretty_date }} • + 最后回复来自 + + {{ topic.last_replied_by.username }} + + + {% else %} + {{ topic.last_touched|pretty_date }} + {% endif %} +
+
+ {% if topic.reply_count %} + + {% endif %} +
+ {% endfor %} + + {% if topic_page.pages > 1 %} + + {% endif %} +
+ +
+

+ + 常见节点导航 +

+
    + {% for plane in planes %} +
  • + + + {% for node in plane.node_set.all %} + {{ node.name }} + {% endfor %} + +
  • + {% endfor %} +
+
+{% endblock %} + +{% block sidebar %} + {% if user.is_authenticated %} +
+ +
+ + + +
+ {% if user.reputation %}{{ user.reputation }}{% else %}0{% endif %} 威望 +
+
+
+ {% else %} + + {% endif %} + + + + + + + + {% comment %} + + {% endcomment %} + + + +{% endblock %} diff --git a/forum/templates/topic/user_favorites.html b/forum/templates/topic/user_favorites.html new file mode 100755 index 0000000..71a2406 --- /dev/null +++ b/forum/templates/topic/user_favorites.html @@ -0,0 +1,89 @@ +{% extends 'snippet/layout.html' %} +{% load forum_extras %} + +{% block main %} +
+
+ 小程序开发社区 › {{ user_info.username }} › 收藏的主题列表 +
+ +
+ {% for favorite in favorites %} +
+ + + +
+

+ {{ favorite.involved_topic.title }} +

+
+ {{ favorite.involved_topic.node.name }} • + + {{ favorite.involved_topic.author.username }} + • + {% if favorite.involved_topic.last_replied_time %} + {{ favorite.involved_topic.last_touched|pretty_date }} • + 最后回复来自 + + {{ favorite.involved_topic.last_replied_by.username }} + + + {% else %} + {{ favorite.involved_topic.last_touched|pretty_date }} + {% endif %} +
+
+ {% if favorite.involved_topic.reply_count %} + + {% endif %} +
+ {% endfor %} + + {% ifequal favorite_page.total 0 %} +
+
+ 该用户暂时还没有收藏过主题。 +
+
+ {% endifequal %} +
+ + +
+{% endblock %} + +{% block sidebar %} +
+
+ + + +
{{ user_info.username }}
+
{% if user_info.website %}{{ user_info.website }}{% endif %}
+
+
+ + + +
+ {% if user_info.reputation %}{{ user_info.reputation }}{% else %}0{% endif %} 威望 +
+
+
+ +{% endblock %} diff --git a/forum/templates/topic/user_replies.html b/forum/templates/topic/user_replies.html new file mode 100755 index 0000000..415e992 --- /dev/null +++ b/forum/templates/topic/user_replies.html @@ -0,0 +1,72 @@ +{% extends 'snippet/layout.html' %} +{% load forum_extras %} + +{% block stylesheet %} + +{% endblock %} + +{% block main %} +
+
+ 小程序开发社区 › {{ user_info.username }} › 回复列表 +
+ +
+ {% for reply in replies %} +
+
+ + 回复了 {{ reply.topic.author.username }} 创建的主题 {{ reply.topic.title }} + +
+ {{ reply.content|markdown|content_process|safe }} +
+
+
+ {% endfor %} + + {% ifequal reply_page.total 0 %} +
+
+ 该用户暂时还没有回复过主题。 +
+
+ {% endifequal %} +
+ + +
+{% endblock %} + +{% block sidebar %} +
+ +
+ + + +
+ {% if user_info.reputation %}{{ user_info.reputation }}{% else %}0{% endif %} 威望 +
+
+
+ +{% endblock %} diff --git a/forum/templates/topic/user_topics.html b/forum/templates/topic/user_topics.html new file mode 100755 index 0000000..1fc06d7 --- /dev/null +++ b/forum/templates/topic/user_topics.html @@ -0,0 +1,89 @@ +{% extends 'snippet/layout.html' %} +{% load forum_extras %} + +{% block main %} +
+
+ 小程序开发社区 › {{ user_info.username }} › 主题列表 +
+ +
+ {% for topic in topics %} +
+ + + +
+

+ {{ topic.title }} +

+
+ {{ topic.node.name }} • + + {{ topic.author.username }} + • + {% if topic.last_replied_time %} + {{ topic.last_touched|pretty_date }} • + 最后回复来自 + + {{ topic.last_replied_by.username }} + + + {% else %} + {{ topic.last_touched|pretty_date }} + {% endif %} +
+
+ {% if topic.reply_count %} + + {% endif %} +
+ {% endfor %} + + {% ifequal topic_page.total 0 %} +
+
+ 该用户暂时还没有发表过主题。 +
+
+ {% endifequal %} +
+ + +
+{% endblock %} + +{% block sidebar %} +
+ +
+ + + +
+ {% if user_info.reputation %}{{ user_info.reputation }}{% else %}0{% endif %} 威望 +
+
+
+ +{% endblock %} diff --git a/forum/templates/topic/view.html b/forum/templates/topic/view.html new file mode 100755 index 0000000..2e10d23 --- /dev/null +++ b/forum/templates/topic/view.html @@ -0,0 +1,258 @@ +{% extends 'snippet/layout.html' %} +{% load forum_extras %} + +{% block title %} + {{ topic.title }} - 小程序开发社区 +{% endblock %} + +{% block stylesheet %} + +{% endblock %} + +{% block javascript %} + + + + + + +{% endblock %} + +{% block main %} +
+
+ + + +
+

{{ topic.title }}

+
+ {{ topic.node.name }} • + + {{ topic.author.username }} + • + {% if topic.last_replied_time %} + 发表于 {{ topic.created|pretty_date }} • + 最后回复来自 + + {{ topic.last_replied_by.username }} + + • + {{ topic.last_replied_time|pretty_date }} + {% else %} + 发表于 {{ topic.created|pretty_date }} + {% endif %} +
+
+
+
+ {{ topic.content|markdown|content_process|safe }} +
+ +
+ + {% ifnotequal reply_page.total 0 %} +
+
+ 共收到{{ reply_page.total }}条回复 +
+
+ {% for reply in replies %} +
+ + + +
+
+ + {{ reply.author.username }} + + {{ reply.created|pretty_date }} + {% if user.is_authenticated %} + {% ifequal user.id reply.author.id %} + 编辑回复 + {% endifequal %} + {% endif %} + #{{ floor|add:forloop.counter }} + + + +
+ {{ reply.content|markdown|content_process|safe }} +
+
+ {% endfor %} +
+ +
+ {% else %} +
+ 暂无回复,说出你的观点吧 +
+ {% endifnotequal %} + +
+ {% if user.is_authenticated %} +
+ 创建新的回复 +
+
+
+ {{ errors|dump_errors }} + + + {% csrf_token %} +
+
+ {% else %} +
+ 登录后即可参与回复 +
+
+ 登录 + 注册 +
+ {% endif %} +
+{% endblock %} + +{% block sidebar %} + {% if user.is_authenticated %} +
+ +
+ + + +
+ {% if user.reputation %}{{ user.reputation }}{% else %}0{% endif %} 威望 +
+
+
+ {% else %} + + {% endif %} +{% endblock %} diff --git a/forum/templates/user/forgot_password.html b/forum/templates/user/forgot_password.html new file mode 100755 index 0000000..421f177 --- /dev/null +++ b/forum/templates/user/forgot_password.html @@ -0,0 +1,57 @@ +{% extends 'snippet/layout.html' %} +{% load forum_extras %} + + +{% block main %} +
+
+
+
+ 找回密码 +
+ {% if success_message %} +
    +
  • {{ success_message }}
  • +
+ {% endif %} + {{ errors|dump_errors }} +
+ + +
+ +

用户名由字母开头,只能含有字母、数字或者下划线

+
+
+ +
+ + +
+ +

请输入你的E-mail,新密码将发送到这里

+
+
+ +
+ +
+ +
+
+
+ {% csrf_token %} +
+
+{% endblock %} + +{% block sidebar %} + +{% endblock %} diff --git a/forum/templates/user/forgot_password_mail.html b/forum/templates/user/forgot_password_mail.html new file mode 100755 index 0000000..f7a9789 --- /dev/null +++ b/forum/templates/user/forgot_password_mail.html @@ -0,0 +1,18 @@ + + + + + + + +
Welcome to 小程序开发社区.
+
您成功重置了您在小程序开发社区的会员密码
+ +
+
+ # 您的注册邮箱:{{ email }}
+ # 您的随机密码:{{ new_password }}
+ # 请您尽快登陆小程序开发社区修改当前随机密码 +
+ + diff --git a/forum/templates/user/login.html b/forum/templates/user/login.html new file mode 100755 index 0000000..1f1c62e --- /dev/null +++ b/forum/templates/user/login.html @@ -0,0 +1,53 @@ +{% extends 'snippet/layout.html' %} +{% load forum_extras %} + +{% block main %} +
+
+
+
+ 登录 +
+ {{ errors|dump_errors }} +
+ + +
+ +

请输入您注册时所填的用户名

+
+
+ +
+ + +
+ +

请输入您的密码(不少于4个字符)

+
+
+ +
+ +
+ + 注册账号 + 忘记密码了 +
+
+
+ {% csrf_token %} +
+
+{% endblock %} + +{% block sidebar %} + +{% endblock %} diff --git a/forum/templates/user/register.html b/forum/templates/user/register.html new file mode 100755 index 0000000..6a70f78 --- /dev/null +++ b/forum/templates/user/register.html @@ -0,0 +1,71 @@ +{% extends 'snippet/layout.html' %} +{% load forum_extras %} + +{% block main %} +
+
+
+
+ 注册 +
+ {{ errors|dump_errors }} +
+ + +
+ +

用户名由字母开头,只能含有字母、数字或者下划线

+
+
+ +
+ + +
+ +

请输入你的E-mail,便于登录和找回密码

+
+
+ +
+ + +
+ +

密码不少于4个字符

+
+
+ +
+ + +
+ +

请再次输入密码

+
+
+ +
+ +
+ +
+
+
+ {% csrf_token %} +
+
+{% endblock %} + +{% block sidebar %} + +{% endblock %} diff --git a/forum/templates/user/register_mail.html b/forum/templates/user/register_mail.html new file mode 100755 index 0000000..18012a1 --- /dev/null +++ b/forum/templates/user/register_mail.html @@ -0,0 +1,15 @@ + + + + + + + +
Welcome to 小程序开发社区.
+
欢迎您,成功注册成为小程序开发社区会员
+ +
+
+
+ + diff --git a/forum/templates/user/setting.html b/forum/templates/user/setting.html new file mode 100755 index 0000000..b65354e --- /dev/null +++ b/forum/templates/user/setting.html @@ -0,0 +1,149 @@ +{% extends 'snippet/layout.html' %} +{% load forum_extras %} + +{% block main %} +
+
+
+
+ 用户信息设置 +
+ {% if success_message %} +
    +
  • {{ success_message }}
  • +
+ {% endif %} + {{ errors|dump_errors }} +
+ + +
+ + + + 设置头像 +
+
+ +
+ + +
+ +

用户名由字母开头,只能含有字母、数字或者下划线

+
+
+ +
+ + +
+ +

你的E-mail,便于登录和找回密码

+
+
+ +
+ + +
+ +

你的昵称,便于其他人更好的认识你

+
+
+ +
+ + +
+ +

你的签名,将展示在你的个人资料页面

+
+
+ +
+ + +
+ +

你的城市,有助于后续你在社区的交友

+
+
+ +
+ + +
+ +

你的个人网站,让你的朋友了解你更多一点

+
+
+ +
+ + +
+ +

你所在的公司,让你的朋友了解你更多一点

+
+
+ +
+ + +
+ +

你的Github用户名,用以在你的个人页面展示你的开源项目。

+
+
+ +
+ + +
+ +

你的Twitter用户名,用以在你的个人页面展示你的Twitter地址。

+
+
+ +
+ + +
+ +

你的豆瓣用户名,用以在你的个人页面展示你正在读的书。

+
+
+ +
+ + +
+ +

可以稍微详细的介绍自己。

+
+
+ +
+ +
+ + 设置密码 +
+
+
+ {% csrf_token %} +
+
+{% endblock %} + +{% block sidebar %} + +{% endblock %} diff --git a/forum/templates/user/setting_avatar.html b/forum/templates/user/setting_avatar.html new file mode 100755 index 0000000..9760a7c --- /dev/null +++ b/forum/templates/user/setting_avatar.html @@ -0,0 +1,54 @@ +{% extends 'snippet/layout.html' %} +{% load forum_extras %} + +{% block main %} +
+
+
+
+ 用户头像设置 +
+ {{ errors|dump_errors }} +
+ + +
+ + + + 设置头像 +
+
+ +
+ + +
+ +

请选择要上传的头像文件

+
+
+ +
+ +
+ + 返回设置页 +
+
+
+ {% csrf_token %} +
+
+{% endblock %} + +{% block sidebar %} + +{% endblock %} diff --git a/forum/templates/user/setting_password.html b/forum/templates/user/setting_password.html new file mode 100755 index 0000000..a315bfb --- /dev/null +++ b/forum/templates/user/setting_password.html @@ -0,0 +1,66 @@ +{% extends 'snippet/layout.html' %} +{% load forum_extras %} + +{% block main %} +
+
+
+
+ 用户密码设置 +
+ {% if success_message %} +
    +
  • {{ success_message }}
  • +
+ {% endif %} + {{ errors|dump_errors }} +
+ + +
+ +

密码不少于4个字符

+
+
+ +
+ + +
+ +

密码不少于4个字符

+
+
+ +
+ + +
+ +

请再次输入新密码

+
+
+ +
+ +
+ + 返回设置页 +
+
+
+ {% csrf_token %} +
+
+{% endblock %} + +{% block sidebar %} + +{% endblock %} diff --git a/forum/templatetags/__init__.py b/forum/templatetags/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/forum/templatetags/forum_extras.py b/forum/templatetags/forum_extras.py new file mode 100644 index 0000000..93fb1bc --- /dev/null +++ b/forum/templatetags/forum_extras.py @@ -0,0 +1,167 @@ +# coding: utf-8 + +''' +Django模板引擎的自定义过滤器,需要在模板中引用 +{% load forum_extras %} +''' + + +import json, re, random +from datetime import date, datetime +from django import template +from django.utils import timezone +from markdown import markdown + + + +register = template.Library() + + +@register.filter(name='dump_errors') +def dump_errors(errors): # 显示错误信息 + t = template.Template(''' + {% if errors %} +
    + {% for v in errors.itervalues %} +
  • {{ v | join:',' }}
  • + {% endfor %} +
+ {% endif %} + ''') + c = template.Context(dict(errors = errors)) + + return t.render(c) + + +@register.simple_tag +def build_uri(uri, param, value): # 给uri添加参数或者修改参数的值 + regx = re.compile('[\?&](%s=[^\?&]*)' % param) + find = regx.search(uri) + split = '&' if re.search(r'\?', uri) else '?' + if not find: return '%s%s%s=%s' % (uri, split, param, value) + return re.sub(find.group(1), '%s=%s' % (param, value), uri) + + +@register.simple_tag +def pagination(page, uri, list_rows = 10): # 显示分页 + def gen_page_list(current_page = 1, total_page = 1, list_rows = 10): + if total_page <= list_rows: + return range(1, total_page + 1) + elif current_page <= (list_rows // 2): + return range(1, list_rows + 1) + elif current_page >= (total_page - list_rows // 2): + return range(total_page - list_rows + 1, total_page + 1) + else: + return range(current_page - list_rows // 2, current_page - list_rows // 2 + list_rows) + + t = template.Template(''' + {% load forum_extras %} {# 如果要使用自定义tag filter这里也需要加载 #} + {% if page and page.pages > 1 %} +
    +
  • «
  • + {% for p in gen_page_list %} +
  • + {% ifnotequal page.index p %} + {{ p }} + {% else %} + {{ p }} + {% endifnotequal %} +
  • + {% endfor %} +
  • »
  • +
+ {% endif %} + ''') + c = template.Context(dict(page = page, uri = uri, gen_page_list = gen_page_list(page.index, page.pages, list_rows))) + + return t.render(c) + + +@register.filter(name='pretty_date') +def pretty_date(time = None): # 输出时间,格式化的时间 + ''' + Get a datetime object or a int() Epoch timestamp and return a + pretty string like 'an hour ago', 'Yesterday', '3 months ago', + 'just now', etc + ''' + if time == None: + return time + + now = timezone.now() + if isinstance(time, basestring): + time = datetime.strptime(time, '%Y-%m-%d %H:%M:%S') + elif isinstance(time, int): + diff = now - datetime.fromtimestamp(time) + elif isinstance(time, datetime): + diff = now - time + elif not time: + diff = now - now + second_diff = diff.seconds + day_diff = diff.days + + if day_diff < 0: + return '' + + if day_diff == 0: + if second_diff < 10: + return '刚刚' + if second_diff < 60: + return str(second_diff) + ' 秒前' + if second_diff < 120: + return '1 分钟前' + if second_diff < 3600: + return str(second_diff / 60) + ' 分钟前' + if second_diff < 7200: + return '1 小时前' + if second_diff < 86400: + return str(second_diff / 3600) + ' 小时前' + if day_diff == 1: + return '昨天' + if day_diff < 7: + return str(day_diff) + ' 天前' + if day_diff < 31: + return str(day_diff / 7) + ' 周前' + if day_diff < 365: + return str(day_diff / 30) + ' 月前' + return str(day_diff / 365) + ' 天前' + + +@register.filter(name='content_process') +def content_process(content): #内容处理,把gist,微博图片什么的替换为引用框架什么的 + # render content included gist + content = re.sub(r'http(s)?:\/\/gist.github.com\/(\d+)(.js)?', r'', content) + # render sinaimg pictures + content = re.sub(r'(http:\/\/\w+.sinaimg.cn\/.*?\.(jpg|gif|png))', r'', content) + # render @ mention links + content = re.sub(r'@(\w+)(\s|)', r'@\1 ', content) + # render youku videos + content = re.sub(r'http://v.youku.com/v_show/id_(\w+).html', r'', content) + return content + + +@register.filter(name='markdown') +def markdown_up(content): # 转为markdown + if not content: + return '' + return markdown(content, extensions = ['codehilite', 'fenced_code'], safe_mode = 'escape') + + +@register.filter(name='email_mosaic') +def email_mosaic(email): # 隐藏email + if not email: + return '' + + email_name = re.findall(r'^([^@]+)@', email)[0] + + if len(email_name) < 5: + email_name = email_name + '***' + email = re.sub(r'^([^@]+)@', '%s@' % email_name, email) + else: + email = re.sub(r'[^@]{3}@', '***@', email) + + return email + + +@register.simple_tag +def gen_random(): # 生成随机数用语静态文件,避免静态文件被浏览器缓存 + return random.random() diff --git a/forum/tests.py b/forum/tests.py new file mode 100644 index 0000000..501deb7 --- /dev/null +++ b/forum/tests.py @@ -0,0 +1,16 @@ +""" +This file demonstrates writing tests using the unittest module. These will pass +when you run "manage.py test". + +Replace this with more appropriate tests for your application. +""" + +from django.test import TestCase + + +class SimpleTest(TestCase): + def test_basic_addition(self): + """ + Tests that 1 + 1 always equals 2. + """ + self.assertEqual(1 + 1, 2) diff --git a/forum/urls.py b/forum/urls.py new file mode 100644 index 0000000..cb6fb22 --- /dev/null +++ b/forum/urls.py @@ -0,0 +1,45 @@ +from django.conf.urls import patterns, include, url +from forum.forms.user import LoginForm + +from views import common, user, topic, notification +from forum.sitemap import TopicSitemap + +# Uncomment the next two lines to enable the admin: +# from django.contrib import admin +# admin.autodiscover() + +urlpatterns = patterns('', + # Examples: + # url(r'^$', 'xp.views.home', name='home'), + # url(r'^xp/', include('xp.foo.urls')), + + # Uncomment the admin/doc line below to enable admin documentation: + # url(r'^admin/doc/', include('django.contrib.admindocs.urls')), + + # Uncomment the next line to enable the admin: + # url(r'^admin/', include(admin.site.urls)), + url(r'^$', common.method_splitter, {'GET': topic.get_index}), + url(r'^t/(\d+)/$', common.method_splitter, {'GET': topic.get_view, 'POST': topic.post_view}), + url(r'^t/create/(.*)/$', common.method_splitter, {'GET': topic.get_create, 'POST': topic.post_create}), + url(r'^t/edit/(.*)/$', common.method_splitter, {'GET': topic.get_edit, 'POST': topic.post_edit}), + url(r'^reply/edit/(.*)/$', common.method_splitter, {'GET': topic.get_reply_edit, 'POST': topic.post_reply_edit}), + url(r'^node/(.*)/$', common.method_splitter, {'GET': topic.get_node_topics}), + url(r'^u/(.*)/topics/$', common.method_splitter, {'GET': topic.get_user_topics}), + url(r'^u/(.*)/replies/$', common.method_splitter, {'GET': topic.get_user_replies}), + url(r'^u/(.*)/favorites/$', common.method_splitter, {'GET': topic.get_user_favorites}), + url(r'^u/(.*)/$', common.method_splitter, {'GET': topic.get_profile}), + url(r'^vote/$', common.method_splitter, {'GET': topic.get_vote}), + url(r'^favorite/$', common.method_splitter, {'GET': topic.get_favorite}), + url(r'^unfavorite/$', common.method_splitter, {'GET': topic.get_cancel_favorite}), + url(r'^notifications/$', common.method_splitter, {'GET': notification.get_list}), + url(r'^members/$', common.method_splitter, {'GET': topic.get_members}), + url(r'^setting/$', common.method_splitter, {'GET': user.get_setting, 'POST': user.post_setting}), + url(r'^setting/avatar/$', common.method_splitter, {'GET': user.get_setting_avatar, 'POST': user.post_setting_avatar}), + url(r'^setting/password/$', common.method_splitter, {'GET': user.get_settingpwd, 'POST': user.post_settingpwd}), + url(r'^forgot/$', common.method_splitter, {'GET': user.get_forgotpwd, 'POST': user.post_forgotpwd}), + url(r'^login/$', common.method_splitter, {'GET': user.get_login, 'POST': user.post_login}), + url(r'^logout/$', common.method_splitter, {'GET': user.get_logout}), + url(r'^register/$', common.method_splitter, {'GET': user.get_register, 'POST': user.post_register}), + + url(r'^sitemap\.xml$', 'django.contrib.sitemaps.views.sitemap', {'sitemaps': {'topics': TopicSitemap}}), +) diff --git a/forum/views/__init__.py b/forum/views/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/forum/views/common.py b/forum/views/common.py new file mode 100644 index 0000000..4522913 --- /dev/null +++ b/forum/views/common.py @@ -0,0 +1,26 @@ +# coding: utf-8 + +import re +from django.core.mail import EmailMultiAlternatives +from django.http import Http404 +from django.conf import settings + + +def method_splitter(request, *args, **kwargs): + get_view = kwargs.pop('GET', None) + post_view = kwargs.pop('POST', None) + if request.method == 'GET' and get_view is not None: + return get_view(request, *args, **kwargs) + elif request.method == 'POST' and post_view is not None: + return post_view(request, *args, **kwargs) + raise Http404 + +def sendmail(title, content, to): + msg = EmailMultiAlternatives(title, content, settings.DEFAULT_FROM_EMAIL, [to]) + msg.attach_alternative(content, 'text/html') + msg.send() + + +def find_mentions(content): + regex = re.compile(ur'@(?P\w+)(\s|$)', re.I) + return set([m.group('username') for m in regex.finditer(content)]) diff --git a/forum/views/notification.py b/forum/views/notification.py new file mode 100644 index 0000000..2db0126 --- /dev/null +++ b/forum/views/notification.py @@ -0,0 +1,26 @@ +# coding: utf-8 + +from django.shortcuts import render_to_response +from django.contrib.auth.decorators import login_required +from django.template import RequestContext +from forum.models import Notification + + +@login_required +def get_list(request): + current_page = int(request.GET.get('p', '1')) + user = request.user + counter = { + 'topics': user.topic_author.all().count(), + 'replies': user.reply_author.all().count(), + 'favorites': user.fav_user.all().count() + } + + notifications_count = user.notify_user.filter(status=0).count() + notifications, page = Notification.objects.get_user_all_notifications(user.id, current_page=current_page) + active_page = 'topic' + + user.notify_user.filter(status=0).update(status=1) # 未读消息设置为已读 + + return render_to_response('notification/notifications.html', locals(), + context_instance=RequestContext(request)) diff --git a/forum/views/topic.py b/forum/views/topic.py new file mode 100644 index 0000000..a77b6a3 --- /dev/null +++ b/forum/views/topic.py @@ -0,0 +1,609 @@ +# coding: utf-8 + +import json, math, hashlib +from django.http import HttpResponse, Http404 +from django.shortcuts import render_to_response, redirect, get_object_or_404 +from django.contrib import auth +from django.contrib.auth.decorators import login_required +from django.template import RequestContext +from django.utils import timezone +from django.conf import settings +from forum.models import ForumUser, Topic, Favorite, Vote, Reply, Node, Notification, Plane +from forum.forms.topic import ReplyForm, CreateForm +from common import find_mentions + + +def get_index(request): + user = request.user + if user.is_authenticated(): + counter = { + 'topics': user.topic_author.all().count(), + 'replies': user.reply_author.all().count(), + 'favorites': user.fav_user.all().count() + } + notifications_count = user.notify_user.filter(status=0).count() + + status_counter = { + 'users': ForumUser.objects.all().count(), + 'nodes': Node.objects.all().count(), + 'topics': Topic.objects.all().count(), + 'replies': Reply.objects.all().count(), + } + + try: + current_page = int(request.GET.get('p', '1')) + except ValueError: + current_page = 1 + + topics, topic_page = Topic.objects.get_all_topic(current_page=current_page) + planes = Plane.objects.all().prefetch_related('node_set') + # hot_nodes = Node.objects.get_all_hot_nodes() + hot_nodes = Node.objects.all() + active_page = 'topic' + return render_to_response('topic/topics.html', locals(), + context_instance=RequestContext(request)) + + +def get_view(request, topic_id, errors=None): + try: + topic = Topic.objects.get_topic_by_topic_id(topic_id) + except Topic.DoesNotExist: + raise Http404 + user = request.user + if user.is_authenticated(): + counter = { + 'topics': user.topic_author.all().count(), + 'replies': user.reply_author.all().count(), + 'favorites': user.fav_user.all().count() + } + notifications_count = user.notify_user.filter(status=0).count() + topic_favorited = Favorite.objects.filter(involved_topic=topic, owner_user=user).exists() + + reply_num = 106 + reply_count = topic.reply_count + reply_last_page = (reply_count // reply_num + (reply_count % reply_num and 1)) or 1 + try: + current_page = int(request.GET.get('p', reply_last_page)) + except ValueError: + current_page = reply_last_page + + replies, reply_page = Reply.objects.get_all_replies_by_topic_id(topic.id, current_page=current_page, num = reply_num) + active_page = 'topic' + floor = reply_num * (current_page - 1) + + topic.reply_count = reply_page.total + topic.hits = (topic.hits or 0) + 1 + topic.save() + return render_to_response('topic/view.html', locals(), + context_instance=RequestContext(request)) + + +@login_required +def post_view(request, topic_id): + try: + topic = Topic.objects.select_related('author').get(pk=topic_id) + except Topic.DoesNotExist: + raise Http404 + form = ReplyForm(request.POST) + if not form.is_valid(): + return get_view(request, topic_id, errors=form.errors) + + user = request.user + try: + last_reply = topic.reply_set.all().order_by('-created')[0] + except IndexError: + last_reply = None + if last_reply: + last_replied_fingerprint = hashlib.sha1(str(topic.id) + str(last_reply.author_id) + last_reply.content).hexdigest() + new_replied_fingerprint = hashlib.sha1(str(topic.id) + str(user.id) + form.cleaned_data.get('content')).hexdigest() + if last_replied_fingerprint == new_replied_fingerprint: + errors = {'duplicated_reply': [u'回复重复提交']} + return get_view(request, topic.id, errors=errors) + + now = timezone.now() + reply = Reply( + topic = topic, + author = user, + content = form.cleaned_data.get('content'), + created = now, + ) + reply.save() + Topic.objects.filter(pk=topic.id).update(last_replied_by=user, last_replied_time=now, last_touched=now) + + notifications = [] + if user.id != topic.author.id: + notification = Notification( + content = form.cleaned_data.get('content'), + status = 0, + involved_type = 1, # 0: mention, 1: reply + involved_user = topic.author, + involved_topic = topic, + trigger_user = user, + occurrence_time = now, + ) + notifications.append(notification) + + mentions = find_mentions(form.cleaned_data.get('content')) + if user.username in mentions: + mentions.remove(user.username) + if topic.author.username in mentions: + mentions.remove(topic.author.username) + if mentions: + mention_users = ForumUser.objects.filter(username__in=mentions) + if mention_users: + for mention_user in mention_users: + notification = Notification( + content = form.cleaned_data.get('content'), + status = 0, + involved_type = 0, # 0: mention, 1: reply + involved_user = mention_user, + involved_topic = topic, + trigger_user = user, + occurrence_time = now, + ) + notifications.append(notification) + if notifications: + Notification.objects.bulk_create(notifications) + + if user.id != topic.author.id: + topic_time_diff = timezone.now() - topic.created + reputation = topic.author.reputation or 0 + reputation = reputation + 2 * math.log(user.reputation or 0 + topic_time_diff.days + 10, 10) + ForumUser.objects.filter(pk=topic.author.id).update(reputation=reputation) + + return redirect('/t/%s/#reply%s' % (topic.id, topic.reply_count + 1)) + + +@login_required +def get_create(request, slug=None, errors=None): + node = get_object_or_404(Node, slug=slug) + user = request.user + counter = { + 'topics': user.topic_author.all().count(), + 'replies': user.reply_author.all().count(), + 'favorites': user.fav_user.all().count() + } + notifications_count = user.notify_user.filter(status=0).count() + node_slug = node.slug + active_page = 'topic' + return render_to_response('topic/create.html', locals(), + context_instance=RequestContext(request)) + + +@login_required +def post_create(request, slug=None): + node = get_object_or_404(Node, slug=slug) + + form = CreateForm(request.POST) + if not form.is_valid(): + return get_create(request, slug=slug, errors=form.errors) + + user = request.user + try: + last_created = user.topic_author.all().order_by('-created')[0] + except IndexError: + last_created = None + + if last_created: # 如果用户最后一篇的标题内容与提交的相同 + last_created_fingerprint = hashlib.sha1(last_created.title + \ + last_created.content + str(last_created.node_id)).hexdigest() + new_created_fingerprint = hashlib.sha1(form.cleaned_data.get('title') + \ + form.cleaned_data.get('content') + str(node.id)).hexdigest() + + if last_created_fingerprint == new_created_fingerprint: + errors = {'duplicated_topic': [u'帖子重复提交']} + return get_create(request, slug=slug, errors=errors) + + now = timezone.now() + topic = Topic( + title = form.cleaned_data.get('title'), + content = form.cleaned_data.get('content'), + created = now, + node = node, + author = user, + reply_count = 0, + last_touched = now, + ) + topic.save() + + reputation = user.reputation or 0 + reputation = reputation - 5 # 每次发布话题扣除用户威望5点 + reputation = 0 if reputation < 0 else reputation + ForumUser.objects.filter(pk=user.id).update(reputation=reputation) + + return redirect('/') + + +@login_required +def get_edit(request, topic_id, errors=None): + topic = get_object_or_404(Topic, pk=topic_id) + + user = request.user + counter = { + 'topics': user.topic_author.all().count(), + 'replies': user.reply_author.all().count(), + 'favorites': user.fav_user.all().count() + } + notifications_count = user.notify_user.filter(status=0).count() + + active_page = 'topic' + return render_to_response('topic/edit.html', locals(), + context_instance=RequestContext(request)) + + +@login_required +def post_edit(request, topic_id): + topic = get_object_or_404(Topic, pk=topic_id) + + form = CreateForm(request.POST) + if not form.is_valid(): + return get_edit(request, topic_id, errors=form.errors) + + user = request.user + if topic.author_id != user.id: + errors = {'invalid_permission': [u'没有权限修改该主题']} + return get_edit(request, topic_id, errors=errors) + + now = timezone.now() + Topic.objects.filter(pk=topic.id).update(updated=now, last_touched=now, **form.cleaned_data) + + reputation = user.reputation or 0 + reputation = reputation - 2 # 每次修改回复扣除用户威望2点 + reputation = 0 if reputation < 0 else reputation + ForumUser.objects.filter(pk=user.id).update(reputation=reputation) + + return redirect('/t/%s/' % topic.id) + + +@login_required +def get_reply_edit(request, reply_id, errors=None): + reply = get_object_or_404(Reply, pk=reply_id) + user = request.user + counter = { + 'topics': user.topic_author.all().count(), + 'replies': user.reply_author.all().count(), + 'favorites': user.fav_user.all().count() + } + notifications_count = user.notify_user.filter(status=0).count() + active_page = 'topic' + return render_to_response('topic/reply_edit.html', locals(), + context_instance=RequestContext(request)) + + +@login_required +def post_reply_edit(request, reply_id): + reply = get_object_or_404(Reply, pk=reply_id) + + form = ReplyForm(request.POST) + if not form.is_valid(): + return get_reply_edit(request, reply_id, errors=form.errors) + + user = request.user + if reply.author_id != user.id: + errors = {'invalid_permission': [u'没有权限修改该回复']} + return get_reply_edit(request, reply_id, errors=errors) + + Reply.objects.filter(pk=reply.id).update(updated=timezone.now(), **form.cleaned_data) + + reputation = user.reputation or 0 + reputation = reputation - 2 # 每次修改回复扣除用户威望2点 + reputation = 0 if reputation < 0 else reputation + ForumUser.objects.filter(pk=user.id).update(reputation=reputation) + + return redirect('/t/%s/' % reply.topic_id) + + +def get_node_topics(request, slug): + node = get_object_or_404(Node, slug=slug) + + user = request.user + if user.is_authenticated(): + counter = { + 'topics': user.topic_author.all().count(), + 'replies': user.reply_author.all().count(), + 'favorites': user.fav_user.all().count() + } + notifications_count = user.notify_user.filter(status=0).count() + + try: + current_page = int(request.GET.get('p', '1')) + except ValueError: + current_page = 1 + + topics, topic_page = Topic.objects.get_all_topics_by_node_slug(node_slug=slug, current_page=current_page) + active_page = 'topic' + return render_to_response('topic/node_topics.html', locals(), + context_instance=RequestContext(request)) + + +def get_user_topics(request, uid): + try: + if uid.isdigit(): + user_info = ForumUser.objects.get(pk=uid) + else: + user_info = ForumUser.objects.get(username=uid) + except ForumUser.DoesNotExist: + raise Http404 + + try: + current_page = int(request.GET.get('p', '1')) + except ValueError: + current_page = 1 + + counter = { + 'topics': user_info.topic_author.all().count(), + 'replies': user_info.reply_author.all().count(), + 'favorites': user_info.fav_user.all().count() + } + + user = request.user + if user.is_authenticated(): + notifications_count = user.notify_user.filter(status=0).count() + + topics, topic_page = Topic.objects.get_user_all_topics(user_info.id, current_page=current_page) + active_page = 'topic' + return render_to_response('topic/user_topics.html', locals(), + context_instance=RequestContext(request)) + + +def get_user_replies(request, uid): + try: + if uid.isdigit(): + user_info = ForumUser.objects.get(pk=uid) + else: + user_info = ForumUser.objects.get(username=uid) + except ForumUser.DoesNotExist: + raise Http404 + + try: + current_page = int(request.GET.get('p', '1')) + except ValueError: + current_page = 1 + + counter = { + 'topics': user_info.topic_author.all().count(), + 'replies': user_info.reply_author.all().count(), + 'favorites': user_info.fav_user.all().count() + } + + user = request.user + if user.is_authenticated(): + notifications_count = user.notify_user.filter(status=0).count() + + replies, reply_page = Reply.objects.get_user_all_replies(user_info.id, current_page=current_page) + active_page = 'topic' + return render_to_response('topic/user_replies.html', locals(), + context_instance=RequestContext(request)) + + +def get_user_favorites(request, uid): + try: + if uid.isdigit(): + user_info = ForumUser.objects.get(pk=uid) + else: + user_info = ForumUser.objects.get(username=uid) + except ForumUser.DoesNotExist: + raise Http404 + + try: + current_page = int(request.GET.get('p', '1')) + except ValueError: + current_page = 1 + + counter = { + 'topics': user_info.topic_author.all().count(), + 'replies': user_info.reply_author.all().count(), + 'favorites': user_info.fav_user.all().count() + } + + user = request.user + if user.is_authenticated(): + notifications_count = user.notify_user.filter(status=0).count() + + favorites, favorite_page = Favorite.objects.get_user_all_favorites(user_info.id, current_page=current_page) + active_page = 'topic' + return render_to_response('topic/user_favorites.html', locals(), + context_instance=RequestContext(request)) + + +def get_profile(request, uid): + try: + if uid.isdigit(): + user_info = ForumUser.objects.get(pk=uid) + else: + user_info = ForumUser.objects.get(username=uid) + except ForumUser.DoesNotExist: + raise Http404 + + try: + current_page = int(request.GET.get('p', '1')) + except ValueError: + current_page = 1 + + counter = { + 'topics': user_info.topic_author.all().count(), + 'replies': user_info.reply_author.all().count(), + 'favorites': user_info.fav_user.all().count() + } + + user = request.user + if user.is_authenticated(): + notifications_count = user.notify_user.filter(status=0).count() + + topics, topic_page = Topic.objects.get_user_all_topics(user_info.id, current_page=current_page) + replies, reply_page = Reply.objects.get_user_all_replies(user_info.id, current_page=current_page) + active_page = '_blank' + return render_to_response('topic/profile.html', locals(), + context_instance=RequestContext(request)) + + +def get_vote(request): + user = request.user + if not user.is_authenticated(): + return HttpResponse(json.dumps({ + 'success': 0, + 'message': 'user_not_login' + }), content_type='application/json') + + try: + topic_id = int(request.GET.get('topic_id')) + except (TypeError, ValueError): + topic_id = None + topic = None + if topic_id: + try: + topic = Topic.objects.select_related('author').get(pk=topic_id) + except Topic.DoesNotExist: + pass + + if not (topic_id and topic): + return HttpResponse(json.dumps({ + 'success': 0, + 'message': 'topic_not_exist' + }), content_type='application/json') + + if user.id == topic.author.id: + return HttpResponse(json.dumps({ + 'success': 0, + 'message': 'can_not_vote_your_topic' + }), content_type='application/json') + + if Vote.objects.filter(trigger_user=user, involved_topic=topic).exists(): + return HttpResponse(json.dumps({ + 'success': 0, + 'message': 'already_voted' + }), content_type='application/json') + + vote = Vote(trigger_user=user, involved_type=0, involved_topic=topic, \ + involved_user=topic.author, status=0, occurrence_time=timezone.now()) + vote.save() + + # 更新话题作者声誉 + topic_time_diff = timezone.now() - topic.created + reputation = topic.author.reputation or 0 + reputation = reputation + 2 * math.log((user.reputation or 0) + topic_time_diff.days + 10, 10) + ForumUser.objects.filter(pk=topic.author.id).update(reputation=reputation) + + return HttpResponse(json.dumps({ + 'success': 1, + 'message': 'thanks_for_your_vote' + }), content_type='application/json') + + +def get_favorite(request): + user = request.user + if not user.is_authenticated(): + return HttpResponse(json.dumps({ + 'success': 0, + 'message': 'user_not_login' + }), content_type='application/json') + + try: + topic_id = int(request.GET.get('topic_id')) + except (TypeError, ValueError): + topic_id = None + topic = None + if topic_id: + try: + topic = Topic.objects.select_related('author').get(pk=topic_id) + except Topic.DoesNotExist: + pass + + if not (topic_id and topic): + return HttpResponse(json.dumps({ + 'success': 0, + 'message': 'topic_not_exist' + }), content_type='application/json') + + if user.id == topic.author.id: + return HttpResponse(json.dumps({ + 'success': 0, + 'message': 'can_not_favorite_your_topic' + }), content_type='application/json') + + if Favorite.objects.filter(owner_user=user, involved_topic=topic).exists(): + return HttpResponse(json.dumps({ + 'success': 0, + 'message': 'already_favorited' + }), content_type='application/json') + + favorite = Favorite(owner_user=user, involved_type=0, involved_topic=topic, created=timezone.now()) + favorite.save() + + # 更新话题作者声誉 + topic_time_diff = timezone.now() - topic.created + reputation = topic.author.reputation or 0 + reputation = reputation + 2 * math.log((user.reputation or 0) + topic_time_diff.days + 10, 10) + ForumUser.objects.filter(pk=topic.author.id).update(reputation=reputation) + + return HttpResponse(json.dumps({ + 'success': 1, + 'message': 'cancel_favorite_success' + }), content_type='application/json') + + +def get_cancel_favorite(request): + user = request.user + if not user.is_authenticated(): + return HttpResponse(json.dumps({ + 'success': 0, + 'message': 'user_not_login' + }), content_type='application/json') + + try: + topic_id = int(request.GET.get('topic_id')) + except (TypeError, ValueError): + topic_id = None + topic = None + if topic_id: + try: + topic = Topic.objects.select_related('author').get(pk=topic_id) + except Topic.DoesNotExist: + pass + + if not (topic_id and topic): + return HttpResponse(json.dumps({ + 'success': 0, + 'message': 'topic_not_exist' + }), content_type='application/json') + + try: + favorite = Favorite.objects.get(owner_user=user, involved_topic=topic) + except Favorite.DoesNotExist: + favorite = None + + if not favorite: + return HttpResponse(json.dumps({ + 'success': 0, + 'message': 'not_been_favorited' + }), content_type='application/json') + + favorite.delete() + + # 更新话题作者声誉 + topic_time_diff = timezone.now() - topic.created + reputation = topic.author.reputation or 0 + reputation = reputation - math.log(user.reputation or 0 + topic_time_diff.days + 10, 15) + ForumUser.objects.filter(pk=topic.author.id).update(reputation=reputation) + + return HttpResponse(json.dumps({ + 'success': 1, + 'message': 'cancel_favorite_success' + }), content_type='application/json') + + +def get_members(request): + user = request.user + if user.is_authenticated(): + counter = { + 'topics': user.topic_author.all().count(), + 'replies': user.reply_author.all().count(), + 'favorites': user.fav_user.all().count() + } + notifications_count = user.notify_user.filter(status=0).count() + + members = ForumUser.objects.all().order_by('-id')[:49] + active_members = ForumUser.objects.all().order_by('-last_login')[:49] + active_page = 'members' + return render_to_response('topic/members.html', locals(), + context_instance=RequestContext(request)) diff --git a/forum/views/user.py b/forum/views/user.py new file mode 100644 index 0000000..8405b1d --- /dev/null +++ b/forum/views/user.py @@ -0,0 +1,165 @@ +# coding: utf-8 + +import os, uuid, copy, urllib +from PIL import Image +from django.shortcuts import render_to_response, redirect +from django.contrib import auth +from django.contrib.auth.decorators import login_required +from django.template import RequestContext, Context, loader +from django.utils import timezone +from django.conf import settings +from forum.models import ForumUser +from forum.forms.user import RegisterForm, LoginForm, ForgotPasswordForm, SettingPasswordForm, SettingForm +from common import sendmail + + +@login_required +def get_setting(request, **kwargs): + return render_to_response('user/setting.html', kwargs, + context_instance=RequestContext(request)) + + +@login_required +def post_setting(request): + form = SettingForm(request.POST) + if not form.is_valid(): + return get_setting(request, errors=form.errors) + + user = request.user + cd = copy.copy(form.cleaned_data) + cd.pop('username') + cd.pop('email') + for k, v in cd.iteritems(): + setattr(user, k, v) + user.updated = timezone.now() + user.save() + return get_setting(request, success_message=u'用户基本资料更新成功') + + +@login_required +def get_setting_avatar(request, **kwargs): + return render_to_response('user/setting_avatar.html', kwargs, + context_instance=RequestContext(request)) + + +@login_required +def post_setting_avatar(request): + if not 'avatar' in request.FILES: + errors = {'invalid_avatar': [u'请先选择要上传的头像'],} + return get_setting_avatar(request, errors=errors) + + user = request.user + avatar_name = '%s' % uuid.uuid5(uuid.NAMESPACE_DNS, str(user.id)) + avatar = Image.open(request.FILES['avatar']) + + # crop avatar if it's not square + avatar_w, avatar_h = avatar.size + avatar_border = avatar_w if avatar_w < avatar_h else avatar_h + avatar_crop_region = (0, 0, avatar_border, avatar_border) + avatar = avatar.crop(avatar_crop_region) + + avatar_96x96 = avatar.resize((96, 96), Image.ANTIALIAS) + avatar_48x48 = avatar.resize((48, 48), Image.ANTIALIAS) + avatar_32x32 = avatar.resize((32, 32), Image.ANTIALIAS) + path = os.path.dirname(__file__) + avatar_96x96.save(os.path.join(path, '../static/avatar/b_%s.png' % avatar_name), 'PNG') + avatar_48x48.save(os.path.join(path, '../static/avatar/m_%s.png' % avatar_name), 'PNG') + avatar_32x32.save(os.path.join(path, '../static/avatar/s_%s.png' % avatar_name), 'PNG') + user.avatar = '%s.png' % avatar_name + user.updated = timezone.now() + user.save() + return get_setting_avatar(request) + + +@login_required +def get_settingpwd(request, **kwargs): + return render_to_response('user/setting_password.html', kwargs, + context_instance=RequestContext(request)) + + +@login_required +def post_settingpwd(request): + form = SettingPasswordForm(request) + if not form.is_valid(): + return get_settingpwd(request, errors=form.errors) + + user = request.user + password = form.cleaned_data.get('password') + user.set_password(password) + user.updated = timezone.now() + user.save() + return get_settingpwd(request, success_message=u'您的用户密码已更新') + + +def get_forgotpwd(request, **kwargs): + auth.logout(request) + return render_to_response('user/forgot_password.html', kwargs, + context_instance=RequestContext(request)) + + +def post_forgotpwd(request): + form = ForgotPasswordForm(request.POST) + if not form.is_valid(): + return get_login(request, errors=form.errors) + + user = form.get_user() + + new_password = uuid.uuid1().hex + user.set_password(new_password) + user.updated = timezone.now() + user.save() + + # 给用户发送新密码 + mail_title = u'前端社区(F2E.im)找回密码' + var = {'email': user.email, 'new_password': new_password} + mail_content = loader.get_template('user/forgot_password_mail.html').render(Context(var)) + sendmail(mail_title, mail_content, user.email) + + return get_forgotpwd(request, success_message=u'新密码已发送至您的注册邮箱') + + +def get_login(request, **kwargs): + auth.logout(request) + return render_to_response('user/login.html', kwargs, + context_instance=RequestContext(request)) + +def post_login(request): + form = LoginForm(request.POST) + if not form.is_valid(): + return get_login(request, errors=form.errors) + + user = form.get_user() + auth.login(request, user) + + if user.is_staff: + return redirect(request.REQUEST.get('next', '/manage/admin/')) + + return redirect(request.REQUEST.get('next', '/')) + + +def get_logout(request): + auth.logout(request) + return redirect(request.REQUEST.get('next', '/')) + + +def get_register(request, **kwargs): + auth.logout(request) + return render_to_response('user/register.html', kwargs, + context_instance=RequestContext(request)) + + +def post_register(request): + form = RegisterForm(request.POST) + + if not form.is_valid(): + return get_register(request, errors=form.errors) + + user = form.save() + if user: + # 注册成功,发送邮件到用户邮箱 + # mail_title = u'微信小程序开发社区注册成功通知' + # mail_content = loader.get_template('user/register_mail.html').render(Context({})) + # sendmail(mail_title, mail_content, user.email) + pass + + return redirect(settings.LOGIN_URL) diff --git a/manage.py b/manage.py new file mode 100755 index 0000000..3e0b5f1 --- /dev/null +++ b/manage.py @@ -0,0 +1,12 @@ +#!/usr/bin/env python +import os +import sys +reload(sys) +sys.setdefaultencoding("utf8") + +if __name__ == "__main__": + os.environ.setdefault("DJANGO_SETTINGS_MODULE", "xp.settings") + + from django.core.management import execute_from_command_line + + execute_from_command_line(sys.argv) diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..b9d662a --- /dev/null +++ b/requirements.txt @@ -0,0 +1,3 @@ +Django==1.5.2 +Markdown==2.5.2 +MySQL-python==1.2.3 diff --git a/xp/__init__.py b/xp/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/xp/settings.py b/xp/settings.py new file mode 100644 index 0000000..6ec5aa2 --- /dev/null +++ b/xp/settings.py @@ -0,0 +1,204 @@ +# coding: utf-8 +# Django settings for xp project. + +DEBUG = True +TEMPLATE_DEBUG = DEBUG + +ADMINS = ( + # ('Your Name', 'your_email@example.com'), +) + +MANAGERS = ADMINS + +DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'. + 'NAME': 'forum', # Or path to database file if using sqlite3. + # The following settings are not used with sqlite3: + 'USER': 'root', + 'PASSWORD': 'nineteen', + 'HOST': '127.0.0.1', # Empty for localhost through domain sockets or '127.0.0.1' for localhost through TCP. + 'PORT': '3306', # Set to empty string for default. + } +} + +# Hosts/domain names that are valid for this site; required if DEBUG is False +# See https://docs.djangoproject.com/en/1.5/ref/settings/#allowed-hosts +ALLOWED_HOSTS = ['*'] + +# Local time zone for this installation. Choices can be found here: +# http://en.wikipedia.org/wiki/List_of_tz_zones_by_name +# although not all choices may be available on all operating systems. +# In a Windows environment this must be set to your system time zone. +TIME_ZONE = 'Asia/Shanghai' + +# Language code for this installation. All choices can be found here: +# http://www.i18nguy.com/unicode/language-identifiers.html +LANGUAGE_CODE = 'zh-CN' + +SITE_ID = 1 + +# If you set this to False, Django will make some optimizations so as not +# to load the internationalization machinery. +USE_I18N = True # 只有用admin的时候需要开启 + +# If you set this to False, Django will not format dates, numbers and +# calendars according to the current locale. +USE_L10N = False + +# If you set this to False, Django will not use timezone-aware datetimes. +USE_TZ = False + +# Absolute filesystem path to the directory that will hold user-uploaded files. +# Example: "/var/www/example.com/media/" +MEDIA_ROOT = '' + +# URL that handles the media served from MEDIA_ROOT. Make sure to use a +# trailing slash. +# Examples: "http://example.com/media/", "http://media.example.com/" +MEDIA_URL = '' + +# Absolute path to the directory static files should be collected to. +# Don't put anything in this directory yourself; store your static files +# in apps' "static/" subdirectories and in STATICFILES_DIRS. +# Example: "/var/www/example.com/static/" +STATIC_ROOT = '' + +# URL prefix for static files. +# Example: "http://example.com/static/", "http://static.example.com/" +STATIC_URL = '/static/' + +# Additional locations of static files +STATICFILES_DIRS = ( + # Put strings here, like "/home/html/static" or "C:/www/django/static". + # Always use forward slashes, even on Windows. + # Don't forget to use absolute paths, not relative paths. +) + +# List of finder classes that know how to find static files in +# various locations. +STATICFILES_FINDERS = ( + 'django.contrib.staticfiles.finders.FileSystemFinder', + 'django.contrib.staticfiles.finders.AppDirectoriesFinder', +# 'django.contrib.staticfiles.finders.DefaultStorageFinder', +) + +# Make this unique, and don't share it with anybody. +SECRET_KEY = 'h6=yzee&jze#4p1@twhksg1wg6hv%pzwomw(!o($qsly%lzlhe' + +# List of callables that know how to import templates from various sources. +TEMPLATE_LOADERS = ( + 'django.template.loaders.filesystem.Loader', + 'django.template.loaders.app_directories.Loader', +# 'django.template.loaders.eggs.Loader', +) + +MIDDLEWARE_CLASSES = ( + 'django.middleware.cache.UpdateCacheMiddleware', # 缓存中间件,必须放在开头 + 'django.middleware.common.CommonMiddleware', + 'django.contrib.sessions.middleware.SessionMiddleware', + 'django.middleware.csrf.CsrfViewMiddleware', # 开启了CSRF,记得在POST表单中加{% csrf_token %},使用RequestContext + 'django.contrib.auth.middleware.AuthenticationMiddleware', + 'django.contrib.messages.middleware.MessageMiddleware', + # Uncomment the next line for simple clickjacking protection: + # 'django.middleware.clickjacking.XFrameOptionsMiddleware', + 'django.middleware.cache.FetchFromCacheMiddleware', # 缓存中间件,必须放在最后 +) + +ROOT_URLCONF = 'xp.urls' + +# Python dotted path to the WSGI application used by Django's runserver. +WSGI_APPLICATION = 'xp.wsgi.application' + +TEMPLATE_DIRS = ( + # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates". + # Always use forward slashes, even on Windows. + # Don't forget to use absolute paths, not relative paths. +) + +TEMPLATE_CONTEXT_PROCESSORS = ( # F2E中有current_user对象和request对象,这里设置可在模板中使用RquestContext + 'django.contrib.auth.context_processors.auth', # user对象等等 + 'django.core.context_processors.request', # request对象等等 + 'django.core.context_processors.static', # 在模板中使用{{ STATIC_URL }}获取静态文件路径 + 'forum.context_processors.custom_proc', # 自定义模板上下文处理器 +) + +INSTALLED_APPS = ( + 'django.contrib.auth', + 'django.contrib.contenttypes', + 'django.contrib.sessions', + 'django.contrib.sites', + 'django.contrib.messages', + 'django.contrib.staticfiles', + # Uncomment the next line to enable the admin: + 'django.contrib.admin', + # Uncomment the next line to enable admin documentation: + # 'django.contrib.admindocs', + 'django.contrib.sitemaps', # Django sitemap framework + 'forum', +) + +# A sample logging configuration. The only tangible logging +# performed by this configuration is to send an email to +# the site admins on every HTTP 500 error when DEBUG=False. +# See http://docs.djangoproject.com/en/dev/topics/logging for +# more details on how to customize your logging configuration. +LOGGING = { + 'version': 1, + 'disable_existing_loggers': False, + 'filters': { + 'require_debug_false': { + '()': 'django.utils.log.RequireDebugFalse' + } + }, + 'handlers': { + 'mail_admins': { + 'level': 'ERROR', + 'filters': ['require_debug_false'], + 'class': 'django.utils.log.AdminEmailHandler' + }, + 'console': { + 'level': 'DEBUG', + 'class': 'logging.StreamHandler', + }, + }, + 'loggers': { + 'django.request': { + 'handlers': ['mail_admins'], + 'level': 'ERROR', + 'propagate': True, + }, + 'django.db.backends': { + 'level': 'DEBUG', + 'handlers': ['console'], + }, + } +} +# +# CACHES = { # memcached缓存设置 +# 'default': { +# 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache', +# 'LOCATION': '127.0.0.1:11211', +# } +# } + +# SESSION_ENGINE = 'django.contrib.sessions.backends.cache' # 使用memcached存储session + +# 自定义User类 +AUTH_USER_MODEL = 'forum.ForumUser' + +# 用户认证BackEnds +# AUTHENTICATION_BACKENDS = ('forum.backends.EmailAuthBackend',) + +# 默认登陆uri +LOGIN_URL = '/login/' + +# 发送邮件设置 +EMAIL_HOST = 'smtp.qq.com' +EMAIL_PORT = 25 +EMAIL_HOST_USER= '*********' +EMAIL_HOST_PASSWORD= '******' +DEFAULT_FROM_EMAIL = '*********@qq.com' + +# 注册用户保留关键字,非Django设置 +RESERVED = ["user", "topic", "home", "setting", "forgot", "login", "logout", "register", "admin"] diff --git a/xp/urls.py b/xp/urls.py new file mode 100644 index 0000000..f127928 --- /dev/null +++ b/xp/urls.py @@ -0,0 +1,26 @@ +# coding: utf-8 + +from django.conf.urls import patterns, include, url +from django.conf import settings + +# Uncomment the next two lines to enable the admin: +from django.contrib.auth.decorators import login_required +from django.contrib import admin +admin.autodiscover() +admin.site.login = login_required(admin.site.login) # 设置admin登录的页面,settings.LOGIN_URL + +import forum.urls + +urlpatterns = patterns('', + # Examples: + # url(r'^$', 'xp.views.home', name='home'), + # url(r'^xp/', include('xp.foo.urls')), + + # Uncomment the admin/doc line below to enable admin documentation: + # url(r'^admin/doc/', include('django.contrib.admindocs.urls')), + + # Uncomment the next line to enable the admin: + # url(r'^admin/', include(admin.site.urls)), + url(r'^', include(forum.urls)), + url(r'^manage/admin/', include(admin.site.urls)), +) diff --git a/xp/wsgi.py b/xp/wsgi.py new file mode 100644 index 0000000..62ee1b9 --- /dev/null +++ b/xp/wsgi.py @@ -0,0 +1,32 @@ +""" +WSGI config for xp project. + +This module contains the WSGI application used by Django's development server +and any production WSGI deployments. It should expose a module-level variable +named ``application``. Django's ``runserver`` and ``runfcgi`` commands discover +this application via the ``WSGI_APPLICATION`` setting. + +Usually you will have the standard Django WSGI application here, but it also +might make sense to replace the whole Django WSGI application with a custom one +that later delegates to the Django one. For example, you could introduce WSGI +middleware here, or combine a Django application with an application of another +framework. + +""" +import os + +# We defer to a DJANGO_SETTINGS_MODULE already in the environment. This breaks +# if running multiple sites in the same mod_wsgi process. To fix this, use +# mod_wsgi daemon mode with each site in its own daemon process, or use +# os.environ["DJANGO_SETTINGS_MODULE"] = "xp.settings" +os.environ.setdefault("DJANGO_SETTINGS_MODULE", "xp.settings") + +# This application object is used by any WSGI server configured to use this +# file. This includes Django's development server, if the WSGI_APPLICATION +# setting points here. +from django.core.wsgi import get_wsgi_application +application = get_wsgi_application() + +# Apply WSGI middleware here. +# from helloworld.wsgi import HelloWorldApplication +# application = HelloWorldApplication(application) -- 2.0.0