diff --git a/.babelrc b/.babelrc
new file mode 100644
index 0000000..c13c5f6
--- /dev/null
+++ b/.babelrc
@@ -0,0 +1,3 @@
+{
+ "presets": ["es2015"]
+}
diff --git a/.bowerrc b/.bowerrc
deleted file mode 100644
index 1f7e1f4..0000000
--- a/.bowerrc
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "directory": "app/scripts/src"
-}
\ No newline at end of file
diff --git a/README.md b/README.md
index 405510b..3f310db 100644
--- a/README.md
+++ b/README.md
@@ -1,110 +1,4 @@
Front End Gulp Boilerplate
==========================
-Front-end boilerplate for Gulp with everything you need to get started.
-
-* First download or clone this repo :)
-* Then run `npm install` to install dev dependencies. Use sudo if needed.
-
-You'll need to have Gulp installed. If you already have Gulp installed, you can skip the following line. It is as simple as running:
-* `npm install -g gulp`
-
-During development mode, run the default task so you'll have watchers and browser sync. Simply do the following:
-* Run `gulp` to start it up
-* Try to modify html, scss and javascript files and see how the page gets updated with BrowserSync
-
-When you're ready to deploy, simply do the following:
-* Run `gulp deploy`
-* All of the files you need will be in /dist with your images optimized, css compressed and js compressed
-
-Version
-==========================
-1.3.2
-
-More Information
-==========================
-Check out the website http://www.ryanbensonmedia.com/harvest for more information.
-
-Revision History
-==========================
-June 24, 2015
-* Fixed missing images folder in app when I removed placeholder
-
-May 8, 2015
-* Fixed install instructions on README
-* Minor revisions to README
-
-April 15, 2015
-* Merged PR from @telephant00
-* Adds SCSS Source Maps
-
-April 13, 2015
-* Merged PR from @telephant00
-* Fixed image dev task, it wasn't pushing images to a dest
-* Removed README from images folder, causing segfault errors
-
-April 9, 2015
-* Removed LiveReload in favor of BrowserSync
-
-March 6, 2015
-* Removed del lib, it was causing issues with deployments
-* Added sequence and shell libraries
-* Moved deployment task to use sequence
-* Using CLI to remove and setup dist folders on deployment, resolved bugs
-
-February 11, 2015
-* Updated npm dependency versions
-* Updated to latest HTML5 Boilerplate (slightly modified)
-* Updated CSS and JS vendors
-* Removed a couple unused modules
-* Started using version numbers and git flow
-
-January 16, 2014
-* Merge pull request from @quakenul fixing concat order issue with JS
-
-November 20, 2014
-* Added auto-prefixer support
-
-October 17, 2014
-* Removed recently deprecated `gulp-clean` module
-* Using `del` module instead
-* Updated gulpfile to use del method to cleanse the dist folder prior to the deployment task
-
-September 25, 2014
-* Merged pull request form @hhff
- * Improved gitignore for sass cache
- * Improved font-face mixing
- * Updated images and fonts gulp task for nested files
-
-August 14, 2014:
-* Finally figured out how to get all of the dependencies into dev, not production
-
-June 20, 2014:
-* Updated dependencies
-* Completely changed how webserver and livereload works
-* Refactored a lot of the build task, it is much more modular and flexible
-* Added some extra boilerplate
-* Removed a lot of the footprint styles, including the entire Skeleton framework
-* Fixed SASS crashing on syntax/coding error
-* Using default port number now (8080) for web server
-
-February 03, 2014:
-* Added caching of images so the deploy feature won't compress the same images multiple times
-* Added cleaning of the `dist` folder in case things got deleted at some point
-* Made the dev & dist scripts and css compressed file in the same place so no edits to the href/src needs to be done anymore
-* Added graceful errors during watch, so SCSS or JS errors no longe break the `watch`
-* Updated `gulpfile.js` since gulp.run() is deprecated now
-* Added fonts to the `deploy`
-
-February 04, 2014:
-* Removed coffee dependency
-* Removed some fingerprinted CSS
-* Fixed some CSS/HTML references
-* Cleaned up the builder and watcher and fixed watcher bugs, namely issue compression w/ SVGs
-* Merged pull request from @Contra who added some best practices, thanks! :)
-
-February 25, 2014
-* I've been using this more in development and production, so this has been fine tuned a bit
-* I added fonts and other misc assets that should be moved from `dev` to `dist` upon deployment
-* I removed image caching because there was an issue where it would randomly break all of the images. I'll figure this but out later though.
-* Updated npm dependencies accordingly
+Version 2.0.0 Coming Soon
diff --git a/app/.htaccess b/app/.htaccess
deleted file mode 100644
index 760ccd3..0000000
--- a/app/.htaccess
+++ /dev/null
@@ -1,935 +0,0 @@
-# Apache Server Configs v2.11.0 | MIT License
-# https://github.com/h5bp/server-configs-apache
-
-# (!) Using `.htaccess` files slows down Apache, therefore, if you have
-# access to the main server configuration file (which is usually called
-# `httpd.conf`), you should add this logic there.
-#
-# https://httpd.apache.org/docs/current/howto/htaccess.html.
-
-# ######################################################################
-# # CROSS-ORIGIN #
-# ######################################################################
-
-# ----------------------------------------------------------------------
-# | Cross-origin requests |
-# ----------------------------------------------------------------------
-
-# Allow cross-origin requests.
-#
-# https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS
-# http://enable-cors.org/
-# http://www.w3.org/TR/cors/
-
-#
-# Header set Access-Control-Allow-Origin "*"
-#
-
-# ----------------------------------------------------------------------
-# | Cross-origin images |
-# ----------------------------------------------------------------------
-
-# Send the CORS header for images when browsers request it.
-#
-# https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_enabled_image
-# https://blog.chromium.org/2011/07/using-cross-domain-images-in-webgl-and.html
-
-
-
-
- SetEnvIf Origin ":" IS_CORS
- Header set Access-Control-Allow-Origin "*" env=IS_CORS
-
-
-
-
-# ----------------------------------------------------------------------
-# | Cross-origin web fonts |
-# ----------------------------------------------------------------------
-
-# Allow cross-origin access to web fonts.
-
-
-
- Header set Access-Control-Allow-Origin "*"
-
-
-
-# ----------------------------------------------------------------------
-# | Cross-origin resource timing |
-# ----------------------------------------------------------------------
-
-# Allow cross-origin access to the timing information for all resources.
-#
-# If a resource isn't served with a `Timing-Allow-Origin` header that
-# would allow its timing information to be shared with the document,
-# some of the attributes of the `PerformanceResourceTiming` object will
-# be set to zero.
-#
-# http://www.w3.org/TR/resource-timing/
-# http://www.stevesouders.com/blog/2014/08/21/resource-timing-practical-tips/
-
-#
-# Header set Timing-Allow-Origin: "*"
-#
-
-
-# ######################################################################
-# # ERRORS #
-# ######################################################################
-
-# ----------------------------------------------------------------------
-# | Custom error messages/pages |
-# ----------------------------------------------------------------------
-
-# Customize what Apache returns to the client in case of an error.
-# https://httpd.apache.org/docs/current/mod/core.html#errordocument
-
-ErrorDocument 404 /404.html
-
-# ----------------------------------------------------------------------
-# | Error prevention |
-# ----------------------------------------------------------------------
-
-# Disable the pattern matching based on filenames.
-#
-# This setting prevents Apache from returning a 404 error as the result
-# of a rewrite when the directory with the same name does not exist.
-#
-# https://httpd.apache.org/docs/current/content-negotiation.html#multiviews
-
-Options -MultiViews
-
-
-# ######################################################################
-# # INTERNET EXPLORER #
-# ######################################################################
-
-# ----------------------------------------------------------------------
-# | Document modes |
-# ----------------------------------------------------------------------
-
-# Force Internet Explorer 8/9/10 to render pages in the highest mode
-# available in the various cases when it may not.
-#
-# https://hsivonen.fi/doctype/#ie8
-#
-# (!) Starting with Internet Explorer 11, document modes are deprecated.
-# If your business still relies on older web apps and services that were
-# designed for older versions of Internet Explorer, you might want to
-# consider enabling `Enterprise Mode` throughout your company.
-#
-# http://msdn.microsoft.com/en-us/library/ie/bg182625.aspx#docmode
-# http://blogs.msdn.com/b/ie/archive/2014/04/02/stay-up-to-date-with-enterprise-mode-for-internet-explorer-11.aspx
-
-
- Header set X-UA-Compatible "IE=edge"
- # `mod_headers` cannot match based on the content-type, however,
- # the `X-UA-Compatible` response header should be send only for
- # HTML documents and not for the other resources.
-
- Header unset X-UA-Compatible
-
-
-
-# ----------------------------------------------------------------------
-# | Iframes cookies |
-# ----------------------------------------------------------------------
-
-# Allow cookies to be set from iframes in Internet Explorer.
-#
-# http://msdn.microsoft.com/en-us/library/ms537343.aspx
-# http://www.w3.org/TR/2000/CR-P3P-20001215/
-
-#
-# Header set P3P "policyref=\"/w3c/p3p.xml\", CP=\"IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT\""
-#
-
-
-# ######################################################################
-# # MEDIA TYPES AND CHARACTER ENCODINGS #
-# ######################################################################
-
-# ----------------------------------------------------------------------
-# | Media types |
-# ----------------------------------------------------------------------
-
-# Serve resources with the proper media types (f.k.a. MIME types).
-#
-# https://www.iana.org/assignments/media-types/media-types.xhtml
-# https://httpd.apache.org/docs/current/mod/mod_mime.html#addtype
-
-
-
- # Data interchange
-
- AddType application/json json map topojson
- AddType application/ld+json jsonld
- AddType application/vnd.geo+json geojson
- AddType application/xml atom rdf rss xml
-
-
- # JavaScript
-
- # Normalize to standard type.
- # https://tools.ietf.org/html/rfc4329#section-7.2
-
- AddType application/javascript js
-
-
- # Manifest files
-
- # If you are providing a web application manifest file (see
- # the specification: https://w3c.github.io/manifest/), it is
- # recommended that you serve it with the `application/manifest+json`
- # media type.
- #
- # Because the web application manifest file doesn't have its
- # own unique file extension, you can set its media type either
- # by matching:
- #
- # 1) the exact location of the file (this can be done using a
- # directive such as ``, but it will NOT work in
- # the `.htaccess` file, so you will have to do it in the main
- # server configuration file or inside of a ``
- # container)
- #
- # e.g.:
- #
- #
- # AddType application/manifest+json json
- #
- #
- # 2) the filename (this can be problematic as you will need to
- # ensure that you don't have any other file with the same name
- # as the one you gave to your web application manifest file)
- #
- # e.g.:
- #
- #
- # AddType application/manifest+json json
- #
-
- AddType application/x-web-app-manifest+json webapp
- AddType text/cache-manifest appcache manifest
-
-
- # Media files
-
- AddType audio/mp4 f4a f4b m4a
- AddType audio/ogg oga ogg opus
- AddType image/bmp bmp
- AddType image/webp webp
- AddType video/mp4 f4v f4p m4v mp4
- AddType video/ogg ogv
- AddType video/webm webm
- AddType video/x-flv flv
- AddType image/svg+xml svg svgz
-
- # Serving `.ico` image files with a different media type
- # prevents Internet Explorer from displaying then as images:
- # https://github.com/h5bp/html5-boilerplate/commit/37b5fec090d00f38de64b591bcddcb205aadf8ee
-
- AddType image/x-icon cur ico
-
-
- # Web fonts
-
- AddType application/font-woff woff
- AddType application/font-woff2 woff2
- AddType application/vnd.ms-fontobject eot
-
- # Browsers usually ignore the font media types and simply sniff
- # the bytes to figure out the font type.
- # https://mimesniff.spec.whatwg.org/#matching-a-font-type-pattern
- #
- # However, Blink and WebKit based browsers will show a warning
- # in the console if the following font types are served with any
- # other media types.
-
- AddType application/x-font-ttf ttc ttf
- AddType font/opentype otf
-
-
- # Other
-
- AddType application/octet-stream safariextz
- AddType application/x-bb-appworld bbaw
- AddType application/x-chrome-extension crx
- AddType application/x-opera-extension oex
- AddType application/x-xpinstall xpi
- AddType text/vcard vcard vcf
- AddType text/vnd.rim.location.xloc xloc
- AddType text/vtt vtt
- AddType text/x-component htc
-
-
-
-# ----------------------------------------------------------------------
-# | Character encodings |
-# ----------------------------------------------------------------------
-
-# Serve all resources labeled as `text/html` or `text/plain`
-# with the media type `charset` parameter set to `UTF-8`.
-#
-# https://httpd.apache.org/docs/current/mod/core.html#adddefaultcharset
-
-AddDefaultCharset utf-8
-
-# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-# Serve the following file types with the media type `charset`
-# parameter set to `UTF-8`.
-#
-# https://httpd.apache.org/docs/current/mod/mod_mime.html#addcharset
-
-
- AddCharset utf-8 .atom \
- .bbaw \
- .css \
- .geojson \
- .js \
- .json \
- .jsonld \
- .rdf \
- .rss \
- .topojson \
- .vtt \
- .webapp \
- .xloc \
- .xml
-
-
-
-# ######################################################################
-# # REWRITES #
-# ######################################################################
-
-# ----------------------------------------------------------------------
-# | Rewrite engine |
-# ----------------------------------------------------------------------
-
-# (1) Turn on the rewrite engine (this is necessary in order for
-# the `RewriteRule` directives to work).
-#
-# https://httpd.apache.org/docs/current/mod/mod_rewrite.html#RewriteEngine
-#
-# (2) Enable the `FollowSymLinks` option if it isn't already.
-#
-# https://httpd.apache.org/docs/current/mod/core.html#options
-#
-# (3) If your web host doesn't allow the `FollowSymlinks` option,
-# you need to comment it out or remove it, and then uncomment
-# the `Options +SymLinksIfOwnerMatch` line (4), but be aware
-# of the performance impact.
-#
-# https://httpd.apache.org/docs/current/misc/perf-tuning.html#symlinks
-#
-# (4) Some cloud hosting services will require you set `RewriteBase`.
-#
-# http://www.rackspace.com/knowledge_center/frequently-asked-question/why-is-modrewrite-not-working-on-my-site
-# https://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewritebase
-#
-# (5) Depending on how your server is set up, you may also need to
-# use the `RewriteOptions` directive to enable some options for
-# the rewrite engine.
-#
-# https://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewriteoptions
-
-
-
- # (1)
- RewriteEngine On
-
- # (2)
- Options +FollowSymlinks
-
- # (3)
- # Options +SymLinksIfOwnerMatch
-
- # (4)
- # RewriteBase /
-
- # (5)
- # RewriteOptions
-
-
-
-# ----------------------------------------------------------------------
-# | Forcing `https://` |
-# ----------------------------------------------------------------------
-
-# Redirect from the `http://` to the `https://` version of the URL.
-# https://wiki.apache.org/httpd/RewriteHTTPToHTTPS
-
-#
-# RewriteEngine On
-# RewriteCond %{HTTPS} !=on
-# RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
-#
-
-# ----------------------------------------------------------------------
-# | Suppressing / Forcing the `www.` at the beginning of URLs |
-# ----------------------------------------------------------------------
-
-# The same content should never be available under two different
-# URLs, especially not with and without `www.` at the beginning.
-# This can cause SEO problems (duplicate content), and therefore,
-# you should choose one of the alternatives and redirect the other
-# one.
-#
-# By default `Option 1` (no `www.`) is activated.
-# http://no-www.org/faq.php?q=class_b
-#
-# If you would prefer to use `Option 2`, just comment out all the
-# lines from `Option 1` and uncomment the ones from `Option 2`.
-#
-# (!) NEVER USE BOTH RULES AT THE SAME TIME!
-
-# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-# Option 1: rewrite www.example.com → example.com
-
-
- RewriteEngine On
- RewriteCond %{HTTPS} !=on
- RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
- RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L]
-
-
-# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-# Option 2: rewrite example.com → www.example.com
-#
-# Be aware that the following might not be a good idea if you use "real"
-# subdomains for certain parts of your website.
-
-#
-# RewriteEngine On
-# RewriteCond %{HTTPS} !=on
-# RewriteCond %{HTTP_HOST} !^www\. [NC]
-# RewriteCond %{SERVER_ADDR} !=127.0.0.1
-# RewriteCond %{SERVER_ADDR} !=::1
-# RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
-#
-
-
-# ######################################################################
-# # SECURITY #
-# ######################################################################
-
-# ----------------------------------------------------------------------
-# | Clickjacking |
-# ----------------------------------------------------------------------
-
-# Protect website against clickjacking.
-#
-# The example below sends the `X-Frame-Options` response header with
-# the value `DENY`, informing browsers not to display the content of
-# the web page in any frame.
-#
-# This might not be the best setting for everyone. You should read
-# about the other two possible values the `X-Frame-Options` header
-# field can have: `SAMEORIGIN` and `ALLOW-FROM`.
-# https://tools.ietf.org/html/rfc7034#section-2.1.
-#
-# Keep in mind that while you could send the `X-Frame-Options` header
-# for all of your website’s pages, this has the potential downside that
-# it forbids even non-malicious framing of your content (e.g.: when
-# users visit your website using a Google Image Search results page).
-#
-# Nonetheless, you should ensure that you send the `X-Frame-Options`
-# header for all pages that allow a user to make a state changing
-# operation (e.g: pages that contain one-click purchase links, checkout
-# or bank-transfer confirmation pages, pages that make permanent
-# configuration changes, etc.).
-#
-# Sending the `X-Frame-Options` header can also protect your website
-# against more than just clickjacking attacks:
-# https://cure53.de/xfo-clickjacking.pdf.
-#
-# https://tools.ietf.org/html/rfc7034
-# http://blogs.msdn.com/b/ieinternals/archive/2010/03/30/combating-clickjacking-with-x-frame-options.aspx
-# https://www.owasp.org/index.php/Clickjacking
-
-#
-# Header set X-Frame-Options "DENY"
-# # `mod_headers` cannot match based on the content-type, however,
-# # the `X-Frame-Options` response header should be send only for
-# # HTML documents and not for the other resources.
-#
-# Header unset X-Frame-Options
-#
-#
-
-# ----------------------------------------------------------------------
-# | Content Security Policy (CSP) |
-# ----------------------------------------------------------------------
-
-# Mitigate the risk of cross-site scripting and other content-injection
-# attacks.
-#
-# This can be done by setting a `Content Security Policy` which
-# whitelists trusted sources of content for your website.
-#
-# The example header below allows ONLY scripts that are loaded from the
-# current website's origin (no inline scripts, no CDN, etc). That almost
-# certainly won't work as-is for your website!
-#
-# For more details on how to craft a reasonable policy for your website,
-# read: http://www.html5rocks.com/en/tutorials/security/content-security-policy/
-# (or the specification: http://www.w3.org/TR/CSP11/). Also, to make
-# things easier, you can use an online CSP header generator such as:
-# http://cspisawesome.com/.
-
-#
-# Header set Content-Security-Policy "script-src 'self'; object-src 'self'"
-# # `mod_headers` cannot match based on the content-type, however,
-# # the `Content-Security-Policy` response header should be send
-# # only for HTML documents and not for the other resources.
-#
-# Header unset Content-Security-Policy
-#
-#
-
-# ----------------------------------------------------------------------
-# | File access |
-# ----------------------------------------------------------------------
-
-# Block access to directories without a default document.
-#
-# You should leave the following uncommented, as you shouldn't allow
-# anyone to surf through every directory on your server (which may
-# includes rather private places such as the CMS's directories).
-
-
- Options -Indexes
-
-
-# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-# Block access to all hidden files and directories with the exception of
-# the visible content from within the `/.well-known/` hidden directory.
-#
-# These types of files usually contain user preferences or the preserved
-# state of an utility, and can include rather private places like, for
-# example, the `.git` or `.svn` directories.
-#
-# The `/.well-known/` directory represents the standard (RFC 5785) path
-# prefix for "well-known locations" (e.g.: `/.well-known/manifest.json`,
-# `/.well-known/keybase.txt`), and therefore, access to its visible
-# content should not be blocked.
-#
-# https://www.mnot.net/blog/2010/04/07/well-known
-# https://tools.ietf.org/html/rfc5785
-
-
- RewriteEngine On
- RewriteCond %{REQUEST_URI} "!(^|/)\.well-known/([^./]+./?)+$" [NC]
- RewriteCond %{SCRIPT_FILENAME} -d [OR]
- RewriteCond %{SCRIPT_FILENAME} -f
- RewriteRule "(^|/)\." - [F]
-
-
-# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-# Block access to files that can expose sensitive information.
-#
-# By default, block access to backup and source files that may be
-# left by some text editors and can pose a security risk when anyone
-# has access to them.
-#
-# http://feross.org/cmsploit/
-#
-# (!) Update the `` regular expression from below to
-# include any files that might end up on your production server and
-# can expose sensitive information about your website. These files may
-# include: configuration files, files that contain metadata about the
-# project (e.g.: project dependencies), build scripts, etc..
-
-
-
- # Apache < 2.3
-
- Order allow,deny
- Deny from all
- Satisfy All
-
-
- # Apache ≥ 2.3
-
- Require all denied
-
-
-
-
-# ----------------------------------------------------------------------
-# | HTTP Strict Transport Security (HSTS) |
-# ----------------------------------------------------------------------
-
-# Force client-side SSL redirection.
-#
-# If a user types `example.com` in their browser, even if the server
-# redirects them to the secure version of the website, that still leaves
-# a window of opportunity (the initial HTTP connection) for an attacker
-# to downgrade or redirect the request.
-#
-# The following header ensures that browser will ONLY connect to your
-# server via HTTPS, regardless of what the users type in the browser's
-# address bar.
-#
-# (!) Remove the `includeSubDomains` optional directive if the website's
-# subdomains are not using HTTPS.
-#
-# http://www.html5rocks.com/en/tutorials/security/transport-layer-security/
-# https://tools.ietf.org/html/draft-ietf-websec-strict-transport-sec-14#section-6.1
-# http://blogs.msdn.com/b/ieinternals/archive/2014/08/18/hsts-strict-transport-security-attacks-mitigations-deployment-https.aspx
-
-#
-# Header set Strict-Transport-Security "max-age=16070400; includeSubDomains"
-#
-
-# ----------------------------------------------------------------------
-# | Reducing MIME type security risks |
-# ----------------------------------------------------------------------
-
-# Prevent some browsers from MIME-sniffing the response.
-#
-# This reduces exposure to drive-by download attacks and cross-origin
-# data leaks, and should be left uncommented, especially if the server
-# is serving user-uploaded content or content that could potentially be
-# treated as executable by the browser.
-#
-# http://www.slideshare.net/hasegawayosuke/owasp-hasegawa
-# http://blogs.msdn.com/b/ie/archive/2008/07/02/ie8-security-part-v-comprehensive-protection.aspx
-# http://msdn.microsoft.com/en-us/library/ie/gg622941.aspx
-# https://mimesniff.spec.whatwg.org/
-
-
- Header set X-Content-Type-Options "nosniff"
-
-
-# ----------------------------------------------------------------------
-# | Reflected Cross-Site Scripting (XSS) attacks |
-# ----------------------------------------------------------------------
-
-# (1) Try to re-enable the cross-site scripting (XSS) filter built
-# into most web browsers.
-#
-# The filter is usually enabled by default, but in some cases it
-# may be disabled by the user. However, in Internet Explorer for
-# example, it can be re-enabled just by sending the
-# `X-XSS-Protection` header with the value of `1`.
-#
-# (2) Prevent web browsers from rendering the web page if a potential
-# reflected (a.k.a non-persistent) XSS attack is detected by the
-# filter.
-#
-# By default, if the filter is enabled and browsers detect a
-# reflected XSS attack, they will attempt to block the attack
-# by making the smallest possible modifications to the returned
-# web page.
-#
-# Unfortunately, in some browsers (e.g.: Internet Explorer),
-# this default behavior may allow the XSS filter to be exploited,
-# thereby, it's better to inform browsers to prevent the rendering
-# of the page altogether, instead of attempting to modify it.
-#
-# http://hackademix.net/2009/11/21/ies-xss-filter-creates-xss-vulnerabilities
-#
-# (!) Do not rely on the XSS filter to prevent XSS attacks! Ensure that
-# you are taking all possible measures to prevent XSS attacks, the
-# most obvious being: validating and sanitizing your website's inputs.
-#
-# http://blogs.msdn.com/b/ie/archive/2008/07/02/ie8-security-part-iv-the-xss-filter.aspx
-# http://blogs.msdn.com/b/ieinternals/archive/2011/01/31/controlling-the-internet-explorer-xss-filter-with-the-x-xss-protection-http-header.aspx
-# https://www.owasp.org/index.php/Cross-site_Scripting_%28XSS%29
-
-#
-# # (1) (2)
-# Header set X-XSS-Protection "1; mode=block"
-# # `mod_headers` cannot match based on the content-type, however,
-# # the `X-XSS-Protection` response header should be send only for
-# # HTML documents and not for the other resources.
-#
-# Header unset X-XSS-Protection
-#
-#
-
-# ----------------------------------------------------------------------
-# | Server software information |
-# ----------------------------------------------------------------------
-
-# Prevent Apache from sending in the `Server` response header its
-# exact version number, the description of the generic OS-type or
-# information about its compiled-in modules.
-#
-# (!) The `ServerTokens` directive will only work in the main server
-# configuration file, so don't try to enable it in the `.htaccess` file!
-#
-# https://httpd.apache.org/docs/current/mod/core.html#servertokens
-
-# ServerTokens Prod
-
-
-# ######################################################################
-# # WEB PERFORMANCE #
-# ######################################################################
-
-# ----------------------------------------------------------------------
-# | Compression |
-# ----------------------------------------------------------------------
-
-
-
- # Force compression for mangled `Accept-Encoding` request headers
- # https://developer.yahoo.com/blogs/ydn/pushing-beyond-gzipping-25601.html
-
-
-
- SetEnvIfNoCase ^(Accept-EncodXng|X-cept-Encoding|X{15}|~{15}|-{15})$ ^((gzip|deflate)\s*,?\s*)+|[X~-]{4,13}$ HAVE_Accept-Encoding
- RequestHeader append Accept-Encoding "gzip,deflate" env=HAVE_Accept-Encoding
-
-
-
- # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- # Compress all output labeled with one of the following media types.
- #
- # (!) For Apache versions below version 2.3.7 you don't need to
- # enable `mod_filter` and can remove the ``
- # and `` lines as `AddOutputFilterByType` is still in
- # the core directives.
- #
- # https://httpd.apache.org/docs/current/mod/mod_filter.html#addoutputfilterbytype
-
-
- AddOutputFilterByType DEFLATE "application/atom+xml" \
- "application/javascript" \
- "application/json" \
- "application/ld+json" \
- "application/manifest+json" \
- "application/rdf+xml" \
- "application/rss+xml" \
- "application/schema+json" \
- "application/vnd.geo+json" \
- "application/vnd.ms-fontobject" \
- "application/x-font-ttf" \
- "application/x-javascript" \
- "application/x-web-app-manifest+json" \
- "application/xhtml+xml" \
- "application/xml" \
- "font/eot" \
- "font/opentype" \
- "image/bmp" \
- "image/svg+xml" \
- "image/vnd.microsoft.icon" \
- "image/x-icon" \
- "text/cache-manifest" \
- "text/css" \
- "text/html" \
- "text/javascript" \
- "text/plain" \
- "text/vcard" \
- "text/vnd.rim.location.xloc" \
- "text/vtt" \
- "text/x-component" \
- "text/x-cross-domain-policy" \
- "text/xml"
-
-
-
- # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- # Map the following filename extensions to the specified
- # encoding type in order to make Apache serve the file types
- # with the appropriate `Content-Encoding` response header
- # (do note that this will NOT make Apache compress them!).
- #
- # If these files types would be served without an appropriate
- # `Content-Enable` response header, client applications (e.g.:
- # browsers) wouldn't know that they first need to uncompress
- # the response, and thus, wouldn't be able to understand the
- # content.
- #
- # https://httpd.apache.org/docs/current/mod/mod_mime.html#addencoding
-
-
- AddEncoding gzip svgz
-
-
-
-
-# ----------------------------------------------------------------------
-# | Content transformation |
-# ----------------------------------------------------------------------
-
-# Prevent intermediate caches or proxies (e.g.: such as the ones
-# used by mobile network providers) from modifying the website's
-# content.
-#
-# https://tools.ietf.org/html/rfc2616#section-14.9.5
-#
-# (!) If you are using `mod_pagespeed`, please note that setting
-# the `Cache-Control: no-transform` response header will prevent
-# `PageSpeed` from rewriting `HTML` files, and, if the
-# `ModPagespeedDisableRewriteOnNoTransform` directive isn't set
-# to `off`, also from rewriting other resources.
-#
-# https://developers.google.com/speed/pagespeed/module/configuration#notransform
-
-#
-# Header merge Cache-Control "no-transform"
-#
-
-# ----------------------------------------------------------------------
-# | ETags |
-# ----------------------------------------------------------------------
-
-# Remove `ETags` as resources are sent with far-future expires headers.
-#
-# https://developer.yahoo.com/performance/rules.html#etags
-# https://tools.ietf.org/html/rfc7232#section-2.3
-
-# `FileETag None` doesn't work in all cases.
-
- Header unset ETag
-
-
-FileETag None
-
-# ----------------------------------------------------------------------
-# | Expires headers |
-# ----------------------------------------------------------------------
-
-# Serve resources with far-future expires headers.
-#
-# (!) If you don't control versioning with filename-based
-# cache busting, you should consider lowering the cache times
-# to something like one week.
-#
-# https://httpd.apache.org/docs/current/mod/mod_expires.html
-
-
-
- ExpiresActive on
- ExpiresDefault "access plus 1 month"
-
- # CSS
- ExpiresByType text/css "access plus 1 year"
-
- # Data interchange
- ExpiresByType application/atom+xml "access plus 1 hour"
- ExpiresByType application/rdf+xml "access plus 1 hour"
- ExpiresByType application/rss+xml "access plus 1 hour"
-
- ExpiresByType application/json "access plus 0 seconds"
- ExpiresByType application/ld+json "access plus 0 seconds"
- ExpiresByType application/schema+json "access plus 0 seconds"
- ExpiresByType application/vnd.geo+json "access plus 0 seconds"
- ExpiresByType application/xml "access plus 0 seconds"
- ExpiresByType text/xml "access plus 0 seconds"
-
- # Favicon (cannot be renamed!) and cursor images
- ExpiresByType image/vnd.microsoft.icon "access plus 1 week"
- ExpiresByType image/x-icon "access plus 1 week"
-
- # HTML
- ExpiresByType text/html "access plus 0 seconds"
-
- # JavaScript
- ExpiresByType application/javascript "access plus 1 year"
- ExpiresByType application/x-javascript "access plus 1 year"
- ExpiresByType text/javascript "access plus 1 year"
-
- # Manifest files
- ExpiresByType application/manifest+json "access plus 1 year"
-
- ExpiresByType application/x-web-app-manifest+json "access plus 0 seconds"
- ExpiresByType text/cache-manifest "access plus 0 seconds"
-
- # Media files
- ExpiresByType audio/ogg "access plus 1 month"
- ExpiresByType image/bmp "access plus 1 month"
- ExpiresByType image/gif "access plus 1 month"
- ExpiresByType image/jpeg "access plus 1 month"
- ExpiresByType image/png "access plus 1 month"
- ExpiresByType image/svg+xml "access plus 1 month"
- ExpiresByType video/mp4 "access plus 1 month"
- ExpiresByType video/ogg "access plus 1 month"
- ExpiresByType video/webm "access plus 1 month"
-
- # Web fonts
-
- # Embedded OpenType (EOT)
- ExpiresByType application/vnd.ms-fontobject "access plus 1 month"
- ExpiresByType font/eot "access plus 1 month"
-
- # OpenType
- ExpiresByType font/opentype "access plus 1 month"
-
- # TrueType
- ExpiresByType application/x-font-ttf "access plus 1 month"
-
- # Web Open Font Format (WOFF) 1.0
- ExpiresByType application/font-woff "access plus 1 month"
- ExpiresByType application/x-font-woff "access plus 1 month"
- ExpiresByType font/woff "access plus 1 month"
-
- # Web Open Font Format (WOFF) 2.0
- ExpiresByType application/font-woff2 "access plus 1 month"
-
- # Other
- ExpiresByType text/x-cross-domain-policy "access plus 1 week"
-
-
-
-# ----------------------------------------------------------------------
-# | File concatenation |
-# ----------------------------------------------------------------------
-
-# Allow concatenation from within specific files.
-#
-# e.g.:
-#
-# If you have the following lines in a file called, for
-# example, `main.combined.js`:
-#
-#
-#
-#
-# Apache will replace those lines with the content of the
-# specified files.
-
-#
-#
-# Options +Includes
-# AddOutputFilterByType INCLUDES application/javascript \
-# application/x-javascript \
-# text/javascript
-# SetOutputFilter INCLUDES
-#
-#
-# Options +Includes
-# AddOutputFilterByType INCLUDES text/css
-# SetOutputFilter INCLUDES
-#
-#
-
-# ----------------------------------------------------------------------
-# | Filename-based cache busting |
-# ----------------------------------------------------------------------
-
-# If you're not using a build process to manage your filename version
-# revving, you might want to consider enabling the following directives
-# to route all requests such as `/style.12345.css` to `/style.css`.
-#
-# To understand why this is important and even a better solution than
-# using something like `*.css?v231`, please see:
-# http://www.stevesouders.com/blog/2008/08/23/revving-filenames-dont-use-querystring/
-
-#
-# RewriteEngine On
-# RewriteCond %{REQUEST_FILENAME} !-f
-# RewriteRule ^(.+)\.(\d+)\.(bmp|css|cur|gif|ico|jpe?g|js|png|svgz?|webp)$ $1.$3 [L]
-#
diff --git a/app/crossdomain.xml b/app/crossdomain.xml
deleted file mode 100644
index 818b822..0000000
--- a/app/crossdomain.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/app/fonts/README b/app/fonts/README
deleted file mode 100644
index 5e78ddd..0000000
--- a/app/fonts/README
+++ /dev/null
@@ -1 +0,0 @@
-Add your custom fonts here :)
\ No newline at end of file
diff --git a/app/humans.txt b/app/humans.txt
deleted file mode 100644
index 8d2330f..0000000
--- a/app/humans.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-# humanstxt.org/
-# The humans responsible & technology colophon
-
-# TEAM
-
- -- --
-
-# THANKS
-
-
-
-# TECHNOLOGY COLOPHON
-
- CSS3, HTML5
- Apache Server Configs, jQuery, Modernizr, Normalize.css
diff --git a/app/images/README b/app/images/README
deleted file mode 100644
index 3a9fc60..0000000
--- a/app/images/README
+++ /dev/null
@@ -1 +0,0 @@
-Place to put your images :)
diff --git a/app/index.html b/app/index.html
deleted file mode 100755
index 7847d09..0000000
--- a/app/index.html
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
-
-
-
- Website Title
-
-
-
-
-
-
-
-
-
Content
-
-
-
-
-
-
-
diff --git a/app/robots.txt b/app/robots.txt
deleted file mode 100644
index d0e5f1b..0000000
--- a/app/robots.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-# www.robotstxt.org/
-
-# Allow crawling of all content
-User-agent: *
-Disallow:
diff --git a/app/scripts/app.js b/app/scripts/app.js
deleted file mode 100644
index 1458c71..0000000
--- a/app/scripts/app.js
+++ /dev/null
@@ -1 +0,0 @@
-window.Modernizr=function(e,t,n){function r(e){b.cssText=e}function o(e,t){return r(S.join(e+";")+(t||""))}function a(e,t){return typeof e===t}function i(e,t){return!!~(""+e).indexOf(t)}function s(e,t){for(var r in e){var o=e[r];if(!i(o,"-")&&b[o]!==n)return"pfx"==t?o:!0}return!1}function c(e,t,r){for(var o in e){var i=t[e[o]];if(i!==n)return r===!1?e[o]:a(i,"function")?i.bind(r||t):i}return!1}function l(e,t,n){var r=e.charAt(0).toUpperCase()+e.slice(1),o=(e+" "+T.join(r+" ")+r).split(" ");return a(t,"string")||a(t,"undefined")?s(o,t):(o=(e+" "+k.join(r+" ")+r).split(" "),c(o,t,n))}function u(){m.input=function(n){for(var r=0,o=n.length;o>r;r++)$[n[r]]=n[r]in x;return $.list&&($.list=!!t.createElement("datalist")&&!!e.HTMLDataListElement),$}("autocomplete autofocus list placeholder max min multiple pattern required step".split(" ")),m.inputtypes=function(e){for(var r,o,a,i=0,s=e.length;s>i;i++)x.setAttribute("type",o=e[i]),r="text"!==x.type,r&&(x.value=E,x.style.cssText="position:absolute;visibility:hidden;",/^range$/.test(o)&&x.style.WebkitAppearance!==n?(g.appendChild(x),a=t.defaultView,r=a.getComputedStyle&&"textfield"!==a.getComputedStyle(x,null).WebkitAppearance&&0!==x.offsetHeight,g.removeChild(x)):/^(search|tel)$/.test(o)||(r=/^(url|email)$/.test(o)?x.checkValidity&&x.checkValidity()===!1:x.value!=E)),N[e[i]]=!!r;return N}("search tel url email datetime date month week time datetime-local number range color".split(" "))}var d,f,p="2.8.3",m={},h=!0,g=t.documentElement,y="modernizr",v=t.createElement(y),b=v.style,x=t.createElement("input"),E=":)",w={}.toString,S=" -webkit- -moz- -o- -ms- ".split(" "),C="Webkit Moz O ms",T=C.split(" "),k=C.toLowerCase().split(" "),j={svg:"http://www.w3.org/2000/svg"},M={},N={},$={},z=[],P=z.slice,L=function(e,n,r,o){var a,i,s,c,l=t.createElement("div"),u=t.body,d=u||t.createElement("body");if(parseInt(r,10))for(;r--;)s=t.createElement("div"),s.id=o?o[r]:y+(r+1),l.appendChild(s);return a=["",'"].join(""),l.id=y,(u?l:d).innerHTML+=a,d.appendChild(l),u||(d.style.background="",d.style.overflow="hidden",c=g.style.overflow,g.style.overflow="hidden",g.appendChild(d)),i=n(l,e),u?l.parentNode.removeChild(l):(d.parentNode.removeChild(d),g.style.overflow=c),!!i},O=function(t){var n=e.matchMedia||e.msMatchMedia;if(n)return n(t)&&n(t).matches||!1;var r;return L("@media "+t+" { #"+y+" { position: absolute; } }",function(t){r="absolute"==(e.getComputedStyle?getComputedStyle(t,null):t.currentStyle).position}),r},A=function(){function e(e,o){o=o||t.createElement(r[e]||"div"),e="on"+e;var i=e in o;return i||(o.setAttribute||(o=t.createElement("div")),o.setAttribute&&o.removeAttribute&&(o.setAttribute(e,""),i=a(o[e],"function"),a(o[e],"undefined")||(o[e]=n),o.removeAttribute(e))),o=null,i}var r={select:"input",change:"input",submit:"form",reset:"form",error:"img",load:"img",abort:"img"};return e}(),F={}.hasOwnProperty;f=a(F,"undefined")||a(F.call,"undefined")?function(e,t){return t in e&&a(e.constructor.prototype[t],"undefined")}:function(e,t){return F.call(e,t)},Function.prototype.bind||(Function.prototype.bind=function(e){var t=this;if("function"!=typeof t)throw new TypeError;var n=P.call(arguments,1),r=function(){if(this instanceof r){var o=function(){};o.prototype=t.prototype;var a=new o,i=t.apply(a,n.concat(P.call(arguments)));return Object(i)===i?i:a}return t.apply(e,n.concat(P.call(arguments)))};return r}),M.flexbox=function(){return l("flexWrap")},M.canvas=function(){var e=t.createElement("canvas");return!!e.getContext&&!!e.getContext("2d")},M.canvastext=function(){return!!m.canvas&&!!a(t.createElement("canvas").getContext("2d").fillText,"function")},M.webgl=function(){return!!e.WebGLRenderingContext},M.touch=function(){var n;return"ontouchstart"in e||e.DocumentTouch&&t instanceof DocumentTouch?n=!0:L(["@media (",S.join("touch-enabled),("),y,")","{#modernizr{top:9px;position:absolute}}"].join(""),function(e){n=9===e.offsetTop}),n},M.geolocation=function(){return"geolocation"in navigator},M.postmessage=function(){return!!e.postMessage},M.websqldatabase=function(){return!!e.openDatabase},M.indexedDB=function(){return!!l("indexedDB",e)},M.hashchange=function(){return A("hashchange",e)&&(t.documentMode===n||t.documentMode>7)},M.history=function(){return!!e.history&&!!history.pushState},M.draganddrop=function(){var e=t.createElement("div");return"draggable"in e||"ondragstart"in e&&"ondrop"in e},M.websockets=function(){return"WebSocket"in e||"MozWebSocket"in e},M.rgba=function(){return r("background-color:rgba(150,255,150,.5)"),i(b.backgroundColor,"rgba")},M.hsla=function(){return r("background-color:hsla(120,40%,100%,.5)"),i(b.backgroundColor,"rgba")||i(b.backgroundColor,"hsla")},M.multiplebgs=function(){return r("background:url(https://),url(https://),red url(https://)"),/(url\s*\(.*?){3}/.test(b.background)},M.backgroundsize=function(){return l("backgroundSize")},M.borderimage=function(){return l("borderImage")},M.borderradius=function(){return l("borderRadius")},M.boxshadow=function(){return l("boxShadow")},M.textshadow=function(){return""===t.createElement("div").style.textShadow},M.opacity=function(){return o("opacity:.55"),/^0.55$/.test(b.opacity)},M.cssanimations=function(){return l("animationName")},M.csscolumns=function(){return l("columnCount")},M.cssgradients=function(){var e="background-image:",t="gradient(linear,left top,right bottom,from(#9f9),to(white));",n="linear-gradient(left top,#9f9, white);";return r((e+"-webkit- ".split(" ").join(t+e)+S.join(n+e)).slice(0,-e.length)),i(b.backgroundImage,"gradient")},M.cssreflections=function(){return l("boxReflect")},M.csstransforms=function(){return!!l("transform")},M.csstransforms3d=function(){var e=!!l("perspective");return e&&"webkitPerspective"in g.style&&L("@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:3px;}}",function(t,n){e=9===t.offsetLeft&&3===t.offsetHeight}),e},M.csstransitions=function(){return l("transition")},M.fontface=function(){var e;return L('@font-face {font-family:"font";src:url("https://")}',function(n,r){var o=t.getElementById("smodernizr"),a=o.sheet||o.styleSheet,i=a?a.cssRules&&a.cssRules[0]?a.cssRules[0].cssText:a.cssText||"":"";e=/src/i.test(i)&&0===i.indexOf(r.split(" ")[0])}),e},M.generatedcontent=function(){var e;return L(["#",y,"{font:0/0 a}#",y,':after{content:"',E,'";visibility:hidden;font:3px/1 a}'].join(""),function(t){e=t.offsetHeight>=3}),e},M.video=function(){var e=t.createElement("video"),n=!1;try{(n=!!e.canPlayType)&&(n=new Boolean(n),n.ogg=e.canPlayType('video/ogg; codecs="theora"').replace(/^no$/,""),n.h264=e.canPlayType('video/mp4; codecs="avc1.42E01E"').replace(/^no$/,""),n.webm=e.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/,""))}catch(r){}return n},M.audio=function(){var e=t.createElement("audio"),n=!1;try{(n=!!e.canPlayType)&&(n=new Boolean(n),n.ogg=e.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),n.mp3=e.canPlayType("audio/mpeg;").replace(/^no$/,""),n.wav=e.canPlayType('audio/wav; codecs="1"').replace(/^no$/,""),n.m4a=(e.canPlayType("audio/x-m4a;")||e.canPlayType("audio/aac;")).replace(/^no$/,""))}catch(r){}return n},M.localstorage=function(){try{return localStorage.setItem(y,y),localStorage.removeItem(y),!0}catch(e){return!1}},M.sessionstorage=function(){try{return sessionStorage.setItem(y,y),sessionStorage.removeItem(y),!0}catch(e){return!1}},M.webworkers=function(){return!!e.Worker},M.applicationcache=function(){return!!e.applicationCache},M.svg=function(){return!!t.createElementNS&&!!t.createElementNS(j.svg,"svg").createSVGRect},M.inlinesvg=function(){var e=t.createElement("div");return e.innerHTML="",(e.firstChild&&e.firstChild.namespaceURI)==j.svg},M.smil=function(){return!!t.createElementNS&&/SVGAnimate/.test(w.call(t.createElementNS(j.svg,"animate")))},M.svgclippaths=function(){return!!t.createElementNS&&/SVGClipPath/.test(w.call(t.createElementNS(j.svg,"clipPath")))};for(var R in M)f(M,R)&&(d=R.toLowerCase(),m[d]=M[R](),z.push((m[d]?"":"no-")+d));return m.input||u(),m.addTest=function(e,t){if("object"==typeof e)for(var r in e)f(e,r)&&m.addTest(r,e[r]);else{if(e=e.toLowerCase(),m[e]!==n)return m;t="function"==typeof t?t():t,"undefined"!=typeof h&&h&&(g.className+=" "+(t?"":"no-")+e),m[e]=t}return m},r(""),v=x=null,function(e,t){function n(e,t){var n=e.createElement("p"),r=e.getElementsByTagName("head")[0]||e.documentElement;return n.innerHTML="x",r.insertBefore(n.lastChild,r.firstChild)}function r(){var e=v.elements;return"string"==typeof e?e.split(" "):e}function o(e){var t=y[e[h]];return t||(t={},g++,e[h]=g,y[g]=t),t}function a(e,n,r){if(n||(n=t),u)return n.createElement(e);r||(r=o(n));var a;return a=r.cache[e]?r.cache[e].cloneNode():m.test(e)?(r.cache[e]=r.createElem(e)).cloneNode():r.createElem(e),!a.canHaveChildren||p.test(e)||a.tagUrn?a:r.frag.appendChild(a)}function i(e,n){if(e||(e=t),u)return e.createDocumentFragment();n=n||o(e);for(var a=n.frag.cloneNode(),i=0,s=r(),c=s.length;c>i;i++)a.createElement(s[i]);return a}function s(e,t){t.cache||(t.cache={},t.createElem=e.createElement,t.createFrag=e.createDocumentFragment,t.frag=t.createFrag()),e.createElement=function(n){return v.shivMethods?a(n,e,t):t.createElem(n)},e.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+r().join().replace(/[\w\-]+/g,function(e){return t.createElem(e),t.frag.createElement(e),'c("'+e+'")'})+");return n}")(v,t.frag)}function c(e){e||(e=t);var r=o(e);return v.shivCSS&&!l&&!r.hasCSS&&(r.hasCSS=!!n(e,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),u||s(e,r),e}var l,u,d="3.7.0",f=e.html5||{},p=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,m=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,h="_html5shiv",g=0,y={};!function(){try{var e=t.createElement("a");e.innerHTML="",l="hidden"in e,u=1==e.childNodes.length||function(){t.createElement("a");var e=t.createDocumentFragment();return"undefined"==typeof e.cloneNode||"undefined"==typeof e.createDocumentFragment||"undefined"==typeof e.createElement}()}catch(n){l=!0,u=!0}}();var v={elements:f.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output progress section summary template time video",version:d,shivCSS:f.shivCSS!==!1,supportsUnknownElements:u,shivMethods:f.shivMethods!==!1,type:"default",shivDocument:c,createElement:a,createDocumentFragment:i};e.html5=v,c(t)}(this,t),m._version=p,m._prefixes=S,m._domPrefixes=k,m._cssomPrefixes=T,m.mq=O,m.hasEvent=A,m.testProp=function(e){return s([e])},m.testAllProps=l,m.testStyles=L,m.prefixed=function(e,t,n){return t?l(e,t,n):l(e,"pfx")},g.className=g.className.replace(/(^|\s)no-js(\s|$)/,"$1$2")+(h?" js "+z.join(" "):""),m}(this,this.document),function(e,t,n){function r(e){return"[object Function]"==g.call(e)}function o(e){return"string"==typeof e}function a(){}function i(e){return!e||"loaded"==e||"complete"==e||"uninitialized"==e}function s(){var e=y.shift();v=1,e?e.t?m(function(){("c"==e.t?f.injectCss:f.injectJs)(e.s,0,e.a,e.x,e.e,1)},0):(e(),s()):v=0}function c(e,n,r,o,a,c,l){function u(t){if(!p&&i(d.readyState)&&(b.r=p=1,!v&&s(),d.onload=d.onreadystatechange=null,t)){"img"!=e&&m(function(){E.removeChild(d)},50);for(var r in k[n])k[n].hasOwnProperty(r)&&k[n][r].onload()}}var l=l||f.errorTimeout,d=t.createElement(e),p=0,g=0,b={t:r,s:n,e:a,a:c,x:l};1===k[n]&&(g=1,k[n]=[]),"object"==e?d.data=n:(d.src=n,d.type=e),d.width=d.height="0",d.onerror=d.onload=d.onreadystatechange=function(){u.call(this,g)},y.splice(o,0,b),"img"!=e&&(g||2===k[n]?(E.insertBefore(d,x?null:h),m(u,l)):k[n].push(d))}function l(e,t,n,r,a){return v=0,t=t||"j",o(e)?c("c"==t?S:w,e,t,this.i++,n,r,a):(y.splice(this.i++,0,e),1==y.length&&s()),this}function u(){var e=f;return e.loader={load:l,i:0},e}var d,f,p=t.documentElement,m=e.setTimeout,h=t.getElementsByTagName("script")[0],g={}.toString,y=[],v=0,b="MozAppearance"in p.style,x=b&&!!t.createRange().compareNode,E=x?p:h.parentNode,p=e.opera&&"[object Opera]"==g.call(e.opera),p=!!t.attachEvent&&!p,w=b?"object":p?"script":"img",S=p?"script":w,C=Array.isArray||function(e){return"[object Array]"==g.call(e)},T=[],k={},j={timeout:function(e,t){return t.length&&(e.timeout=t[0]),e}};f=function(e){function t(e){var t,n,r,e=e.split("!"),o=T.length,a=e.pop(),i=e.length,a={url:a,origUrl:a,prefixes:e};for(n=0;i>n;n++)r=e[n].split("="),(t=j[r.shift()])&&(a=t(a,r));for(n=0;o>n;n++)a=T[n](a);return a}function i(e,o,a,i,s){var c=t(e),l=c.autoCallback;c.url.split(".").pop().split("?").shift(),c.bypass||(o&&(o=r(o)?o:o[e]||o[i]||o[e.split("/").pop().split("?")[0]]),c.instead?c.instead(e,o,a,i,s):(k[c.url]?c.noexec=!0:k[c.url]=1,a.load(c.url,c.forceCSS||!c.forceJS&&"css"==c.url.split(".").pop().split("?").shift()?"c":n,c.noexec,c.attrs,c.timeout),(r(o)||r(l))&&a.load(function(){u(),o&&o(c.origUrl,s,i),l&&l(c.origUrl,s,i),k[c.url]=2})))}function s(e,t){function n(e,n){if(e){if(o(e))n||(d=function(){var e=[].slice.call(arguments);f.apply(this,e),p()}),i(e,d,t,0,l);else if(Object(e)===e)for(c in s=function(){var t,n=0;for(t in e)e.hasOwnProperty(t)&&n++;return n}(),e)e.hasOwnProperty(c)&&(!n&&!--s&&(r(d)?d=function(){var e=[].slice.call(arguments);f.apply(this,e),p()}:d[c]=function(e){return function(){var t=[].slice.call(arguments);e&&e.apply(this,t),p()}}(f[c])),i(e[c],d,t,c,l))}else!n&&p()}var s,c,l=!!e.test,u=e.load||e.both,d=e.callback||a,f=d,p=e.complete||a;n(l?e.yep:e.nope,!!u),u&&n(u)}var c,l,d=this.yepnope.loader;if(o(e))i(e,0,d,0);else if(C(e))for(c=0;c #mq-test-1 { width: 42px; }',r.insertBefore(a,o),n=42===i.offsetWidth,r.removeChild(a),{matches:n,media:e}}}(e.document)}(this),function(e){"use strict";function t(){E(!0)}var n={};e.respond=n,n.update=function(){};var r=[],o=function(){var t=!1;try{t=new e.XMLHttpRequest}catch(n){t=new e.ActiveXObject("Microsoft.XMLHTTP")}return function(){return t}}(),a=function(e,t){var n=o();n&&(n.open("GET",e,!0),n.onreadystatechange=function(){4!==n.readyState||200!==n.status&&304!==n.status||t(n.responseText)},4!==n.readyState&&n.send(null))},i=function(e){return e.replace(n.regex.minmaxwh,"").match(n.regex.other)};if(n.ajax=a,n.queue=r,n.unsupportedmq=i,n.regex={media:/@media[^\{]+\{([^\{\}]*\{[^\}\{]*\})+/gi,keyframes:/@(?:\-(?:o|moz|webkit)\-)?keyframes[^\{]+\{(?:[^\{\}]*\{[^\}\{]*\})+[^\}]*\}/gi,comments:/\/\*[^*]*\*+([^\/][^*]*\*+)*\//gi,urls:/(url\()['"]?([^\/\)'"][^:\)'"]+)['"]?(\))/g,findStyles:/@media *([^\{]+)\{([\S\s]+?)$/,only:/(only\s+)?([a-zA-Z]+)\s?/,minw:/\(\s*min\-width\s*:\s*(\s*[0-9\.]+)(px|em)\s*\)/,maxw:/\(\s*max\-width\s*:\s*(\s*[0-9\.]+)(px|em)\s*\)/,minmaxwh:/\(\s*m(in|ax)\-(height|width)\s*:\s*(\s*[0-9\.]+)(px|em)\s*\)/gi,other:/\([^\)]*\)/g},n.mediaQueriesSupported=e.matchMedia&&null!==e.matchMedia("only all")&&e.matchMedia("only all").matches,!n.mediaQueriesSupported){var s,c,l,u=e.document,d=u.documentElement,f=[],p=[],m=[],h={},g=30,y=u.getElementsByTagName("head")[0]||d,v=u.getElementsByTagName("base")[0],b=y.getElementsByTagName("link"),x=function(){var e,t=u.createElement("div"),n=u.body,r=d.style.fontSize,o=n&&n.style.fontSize,a=!1;return t.style.cssText="position:absolute;font-size:1em;width:1em",n||(n=a=u.createElement("body"),n.style.background="none"),d.style.fontSize="100%",n.style.fontSize="100%",n.appendChild(t),a&&d.insertBefore(n,d.firstChild),e=t.offsetWidth,a?d.removeChild(n):n.removeChild(t),d.style.fontSize=r,o&&(n.style.fontSize=o),e=l=parseFloat(e)},E=function(t){var n="clientWidth",r=d[n],o="CSS1Compat"===u.compatMode&&r||u.body[n]||r,a={},i=b[b.length-1],h=(new Date).getTime();if(t&&s&&g>h-s)return e.clearTimeout(c),void(c=e.setTimeout(E,g));s=h;for(var v in f)if(f.hasOwnProperty(v)){var w=f[v],S=w.minw,C=w.maxw,T=null===S,k=null===C,j="em";S&&(S=parseFloat(S)*(S.indexOf(j)>-1?l||x():1)),C&&(C=parseFloat(C)*(C.indexOf(j)>-1?l||x():1)),w.hasquery&&(T&&k||!(T||o>=S)||!(k||C>=o))||(a[w.media]||(a[w.media]=[]),a[w.media].push(p[w.rules]))}for(var M in m)m.hasOwnProperty(M)&&m[M]&&m[M].parentNode===y&&y.removeChild(m[M]);m.length=0;for(var N in a)if(a.hasOwnProperty(N)){var $=u.createElement("style"),z=a[N].join("\n");$.type="text/css",$.media=N,y.insertBefore($,i.nextSibling),$.styleSheet?$.styleSheet.cssText=z:$.appendChild(u.createTextNode(z)),m.push($)}},w=function(e,t,r){var o=e.replace(n.regex.comments,"").replace(n.regex.keyframes,"").match(n.regex.media),a=o&&o.length||0;t=t.substring(0,t.lastIndexOf("/"));var s=function(e){return e.replace(n.regex.urls,"$1"+t+"$2$3")},c=!a&&r;t.length&&(t+="/"),c&&(a=1);for(var l=0;a>l;l++){var u,d,m,h;c?(u=r,p.push(s(e))):(u=o[l].match(n.regex.findStyles)&&RegExp.$1,p.push(RegExp.$2&&s(RegExp.$2))),m=u.split(","),h=m.length;for(var g=0;h>g;g++)d=m[g],i(d)||f.push({media:d.split("(")[0].match(n.regex.only)&&RegExp.$2||"all",rules:p.length-1,hasquery:d.indexOf("(")>-1,minw:d.match(n.regex.minw)&&parseFloat(RegExp.$1)+(RegExp.$2||""),maxw:d.match(n.regex.maxw)&&parseFloat(RegExp.$1)+(RegExp.$2||"")})}E()},S=function(){if(r.length){var t=r.shift();a(t.href,function(n){w(n,t.href,t.media),h[t.href]=!0,e.setTimeout(function(){S()},0)})}},C=function(){for(var t=0;t',a,""].join(""),l.id=h,(m?l:n).innerHTML+=f,n.appendChild(l),m||(n.style.background="",n.style.overflow="hidden",k=g.style.overflow,g.style.overflow="hidden",g.appendChild(n)),i=c(l,a),m?l.parentNode.removeChild(l):(n.parentNode.removeChild(n),g.style.overflow=k),!!i},z=function(b){var c=a.matchMedia||a.msMatchMedia;if(c)return c(b)&&c(b).matches||!1;var d;return y("@media "+b+" { #"+h+" { position: absolute; } }",function(b){d=(a.getComputedStyle?getComputedStyle(b,null):b.currentStyle)["position"]=="absolute"}),d},A=function(){function d(d,e){e=e||b.createElement(a[d]||"div"),d="on"+d;var f=d in e;return f||(e.setAttribute||(e=b.createElement("div")),e.setAttribute&&e.removeAttribute&&(e.setAttribute(d,""),f=F(e[d],"function"),F(e[d],"undefined")||(e[d]=c),e.removeAttribute(d))),e=null,f}var a={select:"input",change:"input",submit:"form",reset:"form",error:"img",load:"img",abort:"img"};return d}(),B={}.hasOwnProperty,C;!F(B,"undefined")&&!F(B.call,"undefined")?C=function(a,b){return B.call(a,b)}:C=function(a,b){return b in a&&F(a.constructor.prototype[b],"undefined")},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!="function")throw new TypeError;var d=w.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(w.call(arguments)));return Object(g)===g?g:f}return c.apply(b,d.concat(w.call(arguments)))};return e}),s.flexbox=function(){return J("flexWrap")},s.canvas=function(){var a=b.createElement("canvas");return!!a.getContext&&!!a.getContext("2d")},s.canvastext=function(){return!!e.canvas&&!!F(b.createElement("canvas").getContext("2d").fillText,"function")},s.webgl=function(){return!!a.WebGLRenderingContext},s.touch=function(){var c;return"ontouchstart"in a||a.DocumentTouch&&b instanceof DocumentTouch?c=!0:y(["@media (",n.join("touch-enabled),("),h,")","{#modernizr{top:9px;position:absolute}}"].join(""),function(a){c=a.offsetTop===9}),c},s.geolocation=function(){return"geolocation"in navigator},s.postmessage=function(){return!!a.postMessage},s.websqldatabase=function(){return!!a.openDatabase},s.indexedDB=function(){return!!J("indexedDB",a)},s.hashchange=function(){return A("hashchange",a)&&(b.documentMode===c||b.documentMode>7)},s.history=function(){return!!a.history&&!!history.pushState},s.draganddrop=function(){var a=b.createElement("div");return"draggable"in a||"ondragstart"in a&&"ondrop"in a},s.websockets=function(){return"WebSocket"in a||"MozWebSocket"in a},s.rgba=function(){return D("background-color:rgba(150,255,150,.5)"),G(j.backgroundColor,"rgba")},s.hsla=function(){return D("background-color:hsla(120,40%,100%,.5)"),G(j.backgroundColor,"rgba")||G(j.backgroundColor,"hsla")},s.multiplebgs=function(){return D("background:url(https://),url(https://),red url(https://)"),/(url\s*\(.*?){3}/.test(j.background)},s.backgroundsize=function(){return J("backgroundSize")},s.borderimage=function(){return J("borderImage")},s.borderradius=function(){return J("borderRadius")},s.boxshadow=function(){return J("boxShadow")},s.textshadow=function(){return b.createElement("div").style.textShadow===""},s.opacity=function(){return E("opacity:.55"),/^0.55$/.test(j.opacity)},s.cssanimations=function(){return J("animationName")},s.csscolumns=function(){return J("columnCount")},s.cssgradients=function(){var a="background-image:",b="gradient(linear,left top,right bottom,from(#9f9),to(white));",c="linear-gradient(left top,#9f9, white);";return D((a+"-webkit- ".split(" ").join(b+a)+n.join(c+a)).slice(0,-a.length)),G(j.backgroundImage,"gradient")},s.cssreflections=function(){return J("boxReflect")},s.csstransforms=function(){return!!J("transform")},s.csstransforms3d=function(){var a=!!J("perspective");return a&&"webkitPerspective"in g.style&&y("@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:3px;}}",function(b,c){a=b.offsetLeft===9&&b.offsetHeight===3}),a},s.csstransitions=function(){return J("transition")},s.fontface=function(){var a;return y('@font-face {font-family:"font";src:url("https://")}',function(c,d){var e=b.getElementById("smodernizr"),f=e.sheet||e.styleSheet,g=f?f.cssRules&&f.cssRules[0]?f.cssRules[0].cssText:f.cssText||"":"";a=/src/i.test(g)&&g.indexOf(d.split(" ")[0])===0}),a},s.generatedcontent=function(){var a;return y(["#",h,"{font:0/0 a}#",h,':after{content:"',l,'";visibility:hidden;font:3px/1 a}'].join(""),function(b){a=b.offsetHeight>=3}),a},s.video=function(){var a=b.createElement("video"),c=!1;try{if(c=!!a.canPlayType)c=new Boolean(c),c.ogg=a.canPlayType('video/ogg; codecs="theora"').replace(/^no$/,""),c.h264=a.canPlayType('video/mp4; codecs="avc1.42E01E"').replace(/^no$/,""),c.webm=a.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/,"")}catch(d){}return c},s.audio=function(){var a=b.createElement("audio"),c=!1;try{if(c=!!a.canPlayType)c=new Boolean(c),c.ogg=a.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),c.mp3=a.canPlayType("audio/mpeg;").replace(/^no$/,""),c.wav=a.canPlayType('audio/wav; codecs="1"').replace(/^no$/,""),c.m4a=(a.canPlayType("audio/x-m4a;")||a.canPlayType("audio/aac;")).replace(/^no$/,"")}catch(d){}return c},s.localstorage=function(){try{return localStorage.setItem(h,h),localStorage.removeItem(h),!0}catch(a){return!1}},s.sessionstorage=function(){try{return sessionStorage.setItem(h,h),sessionStorage.removeItem(h),!0}catch(a){return!1}},s.webworkers=function(){return!!a.Worker},s.applicationcache=function(){return!!a.applicationCache},s.svg=function(){return!!b.createElementNS&&!!b.createElementNS(r.svg,"svg").createSVGRect},s.inlinesvg=function(){var a=b.createElement("div");return a.innerHTML="",(a.firstChild&&a.firstChild.namespaceURI)==r.svg},s.smil=function(){return!!b.createElementNS&&/SVGAnimate/.test(m.call(b.createElementNS(r.svg,"animate")))},s.svgclippaths=function(){return!!b.createElementNS&&/SVGClipPath/.test(m.call(b.createElementNS(r.svg,"clipPath")))};for(var L in s)C(s,L)&&(x=L.toLowerCase(),e[x]=s[L](),v.push((e[x]?"":"no-")+x));return e.input||K(),e.addTest=function(a,b){if(typeof a=="object")for(var d in a)C(a,d)&&e.addTest(d,a[d]);else{a=a.toLowerCase();if(e[a]!==c)return e;b=typeof b=="function"?b():b,typeof f!="undefined"&&f&&(g.className+=" "+(b?"":"no-")+a),e[a]=b}return e},D(""),i=k=null,function(a,b){function l(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x",d.insertBefore(c.lastChild,d.firstChild)}function m(){var a=s.elements;return typeof a=="string"?a.split(" "):a}function n(a){var b=j[a[h]];return b||(b={},i++,a[h]=i,j[i]=b),b}function o(a,c,d){c||(c=b);if(k)return c.createElement(a);d||(d=n(c));var g;return d.cache[a]?g=d.cache[a].cloneNode():f.test(a)?g=(d.cache[a]=d.createElem(a)).cloneNode():g=d.createElem(a),g.canHaveChildren&&!e.test(a)&&!g.tagUrn?d.frag.appendChild(g):g}function p(a,c){a||(a=b);if(k)return a.createDocumentFragment();c=c||n(a);var d=c.frag.cloneNode(),e=0,f=m(),g=f.length;for(;e",g="hidden"in a,k=a.childNodes.length==1||function(){b.createElement("a");var a=b.createDocumentFragment();return typeof a.cloneNode=="undefined"||typeof a.createDocumentFragment=="undefined"||typeof a.createElement=="undefined"}()}catch(c){g=!0,k=!0}})();var s={elements:d.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output progress section summary template time video",version:c,shivCSS:d.shivCSS!==!1,supportsUnknownElements:k,shivMethods:d.shivMethods!==!1,type:"default",shivDocument:r,createElement:o,createDocumentFragment:p};a.html5=s,r(b)}(this,b),e._version=d,e._prefixes=n,e._domPrefixes=q,e._cssomPrefixes=p,e.mq=z,e.hasEvent=A,e.testProp=function(a){return H([a])},e.testAllProps=J,e.testStyles=y,e.prefixed=function(a,b,c){return b?J(a,b,c):J(a,"pfx")},g.className=g.className.replace(/(^|\s)no-js(\s|$)/,"$1$2")+(f?" js "+v.join(" "):""),e}(this,this.document),function(a,b,c){function d(a){return"[object Function]"==o.call(a)}function e(a){return"string"==typeof a}function f(){}function g(a){return!a||"loaded"==a||"complete"==a||"uninitialized"==a}function h(){var a=p.shift();q=1,a?a.t?m(function(){("c"==a.t?B.injectCss:B.injectJs)(a.s,0,a.a,a.x,a.e,1)},0):(a(),h()):q=0}function i(a,c,d,e,f,i,j){function k(b){if(!o&&g(l.readyState)&&(u.r=o=1,!q&&h(),l.onload=l.onreadystatechange=null,b)){"img"!=a&&m(function(){t.removeChild(l)},50);for(var d in y[c])y[c].hasOwnProperty(d)&&y[c][d].onload()}}var j=j||B.errorTimeout,l=b.createElement(a),o=0,r=0,u={t:d,s:c,e:f,a:i,x:j};1===y[c]&&(r=1,y[c]=[]),"object"==a?l.data=c:(l.src=c,l.type=a),l.width=l.height="0",l.onerror=l.onload=l.onreadystatechange=function(){k.call(this,r)},p.splice(e,0,u),"img"!=a&&(r||2===y[c]?(t.insertBefore(l,s?null:n),m(k,j)):y[c].push(l))}function j(a,b,c,d,f){return q=0,b=b||"j",e(a)?i("c"==b?v:u,a,b,this.i++,c,d,f):(p.splice(this.i++,0,a),1==p.length&&h()),this}function k(){var a=B;return a.loader={load:j,i:0},a}var l=b.documentElement,m=a.setTimeout,n=b.getElementsByTagName("script")[0],o={}.toString,p=[],q=0,r="MozAppearance"in l.style,s=r&&!!b.createRange().compareNode,t=s?l:n.parentNode,l=a.opera&&"[object Opera]"==o.call(a.opera),l=!!b.attachEvent&&!l,u=r?"object":l?"script":"img",v=l?"script":u,w=Array.isArray||function(a){return"[object Array]"==o.call(a)},x=[],y={},z={timeout:function(a,b){return b.length&&(a.timeout=b[0]),a}},A,B;B=function(a){function b(a){var a=a.split("!"),b=x.length,c=a.pop(),d=a.length,c={url:c,origUrl:c,prefixes:a},e,f,g;for(f=0;f #mq-test-1 { width: 42px; }';
- docElem.insertBefore(fakeBody, refNode);
- bool = div.offsetWidth === 42;
- docElem.removeChild(fakeBody);
- return {
- matches: bool,
- media: q
- };
- };
- }(w.document);
-})(this);
-
-(function(w) {
- "use strict";
- var respond = {};
- w.respond = respond;
- respond.update = function() {};
- var requestQueue = [], xmlHttp = function() {
- var xmlhttpmethod = false;
- try {
- xmlhttpmethod = new w.XMLHttpRequest();
- } catch (e) {
- xmlhttpmethod = new w.ActiveXObject("Microsoft.XMLHTTP");
- }
- return function() {
- return xmlhttpmethod;
- };
- }(), ajax = function(url, callback) {
- var req = xmlHttp();
- if (!req) {
- return;
- }
- req.open("GET", url, true);
- req.onreadystatechange = function() {
- if (req.readyState !== 4 || req.status !== 200 && req.status !== 304) {
- return;
- }
- callback(req.responseText);
- };
- if (req.readyState === 4) {
- return;
- }
- req.send(null);
- }, isUnsupportedMediaQuery = function(query) {
- return query.replace(respond.regex.minmaxwh, "").match(respond.regex.other);
- };
- respond.ajax = ajax;
- respond.queue = requestQueue;
- respond.unsupportedmq = isUnsupportedMediaQuery;
- respond.regex = {
- media: /@media[^\{]+\{([^\{\}]*\{[^\}\{]*\})+/gi,
- keyframes: /@(?:\-(?:o|moz|webkit)\-)?keyframes[^\{]+\{(?:[^\{\}]*\{[^\}\{]*\})+[^\}]*\}/gi,
- comments: /\/\*[^*]*\*+([^/][^*]*\*+)*\//gi,
- urls: /(url\()['"]?([^\/\)'"][^:\)'"]+)['"]?(\))/g,
- findStyles: /@media *([^\{]+)\{([\S\s]+?)$/,
- only: /(only\s+)?([a-zA-Z]+)\s?/,
- minw: /\(\s*min\-width\s*:\s*(\s*[0-9\.]+)(px|em)\s*\)/,
- maxw: /\(\s*max\-width\s*:\s*(\s*[0-9\.]+)(px|em)\s*\)/,
- minmaxwh: /\(\s*m(in|ax)\-(height|width)\s*:\s*(\s*[0-9\.]+)(px|em)\s*\)/gi,
- other: /\([^\)]*\)/g
- };
- respond.mediaQueriesSupported = w.matchMedia && w.matchMedia("only all") !== null && w.matchMedia("only all").matches;
- if (respond.mediaQueriesSupported) {
- return;
- }
- var doc = w.document, docElem = doc.documentElement, mediastyles = [], rules = [], appendedEls = [], parsedSheets = {}, resizeThrottle = 30, head = doc.getElementsByTagName("head")[0] || docElem, base = doc.getElementsByTagName("base")[0], links = head.getElementsByTagName("link"), lastCall, resizeDefer, eminpx, getEmValue = function() {
- var ret, div = doc.createElement("div"), body = doc.body, originalHTMLFontSize = docElem.style.fontSize, originalBodyFontSize = body && body.style.fontSize, fakeUsed = false;
- div.style.cssText = "position:absolute;font-size:1em;width:1em";
- if (!body) {
- body = fakeUsed = doc.createElement("body");
- body.style.background = "none";
- }
- docElem.style.fontSize = "100%";
- body.style.fontSize = "100%";
- body.appendChild(div);
- if (fakeUsed) {
- docElem.insertBefore(body, docElem.firstChild);
- }
- ret = div.offsetWidth;
- if (fakeUsed) {
- docElem.removeChild(body);
- } else {
- body.removeChild(div);
- }
- docElem.style.fontSize = originalHTMLFontSize;
- if (originalBodyFontSize) {
- body.style.fontSize = originalBodyFontSize;
- }
- ret = eminpx = parseFloat(ret);
- return ret;
- }, applyMedia = function(fromResize) {
- var name = "clientWidth", docElemProp = docElem[name], currWidth = doc.compatMode === "CSS1Compat" && docElemProp || doc.body[name] || docElemProp, styleBlocks = {}, lastLink = links[links.length - 1], now = new Date().getTime();
- if (fromResize && lastCall && now - lastCall < resizeThrottle) {
- w.clearTimeout(resizeDefer);
- resizeDefer = w.setTimeout(applyMedia, resizeThrottle);
- return;
- } else {
- lastCall = now;
- }
- for (var i in mediastyles) {
- if (mediastyles.hasOwnProperty(i)) {
- var thisstyle = mediastyles[i], min = thisstyle.minw, max = thisstyle.maxw, minnull = min === null, maxnull = max === null, em = "em";
- if (!!min) {
- min = parseFloat(min) * (min.indexOf(em) > -1 ? eminpx || getEmValue() : 1);
- }
- if (!!max) {
- max = parseFloat(max) * (max.indexOf(em) > -1 ? eminpx || getEmValue() : 1);
- }
- if (!thisstyle.hasquery || (!minnull || !maxnull) && (minnull || currWidth >= min) && (maxnull || currWidth <= max)) {
- if (!styleBlocks[thisstyle.media]) {
- styleBlocks[thisstyle.media] = [];
- }
- styleBlocks[thisstyle.media].push(rules[thisstyle.rules]);
- }
- }
- }
- for (var j in appendedEls) {
- if (appendedEls.hasOwnProperty(j)) {
- if (appendedEls[j] && appendedEls[j].parentNode === head) {
- head.removeChild(appendedEls[j]);
- }
- }
- }
- appendedEls.length = 0;
- for (var k in styleBlocks) {
- if (styleBlocks.hasOwnProperty(k)) {
- var ss = doc.createElement("style"), css = styleBlocks[k].join("\n");
- ss.type = "text/css";
- ss.media = k;
- head.insertBefore(ss, lastLink.nextSibling);
- if (ss.styleSheet) {
- ss.styleSheet.cssText = css;
- } else {
- ss.appendChild(doc.createTextNode(css));
- }
- appendedEls.push(ss);
- }
- }
- }, translate = function(styles, href, media) {
- var qs = styles.replace(respond.regex.comments, "").replace(respond.regex.keyframes, "").match(respond.regex.media), ql = qs && qs.length || 0;
- href = href.substring(0, href.lastIndexOf("/"));
- var repUrls = function(css) {
- return css.replace(respond.regex.urls, "$1" + href + "$2$3");
- }, useMedia = !ql && media;
- if (href.length) {
- href += "/";
- }
- if (useMedia) {
- ql = 1;
- }
- for (var i = 0; i < ql; i++) {
- var fullq, thisq, eachq, eql;
- if (useMedia) {
- fullq = media;
- rules.push(repUrls(styles));
- } else {
- fullq = qs[i].match(respond.regex.findStyles) && RegExp.$1;
- rules.push(RegExp.$2 && repUrls(RegExp.$2));
- }
- eachq = fullq.split(",");
- eql = eachq.length;
- for (var j = 0; j < eql; j++) {
- thisq = eachq[j];
- if (isUnsupportedMediaQuery(thisq)) {
- continue;
- }
- mediastyles.push({
- media: thisq.split("(")[0].match(respond.regex.only) && RegExp.$2 || "all",
- rules: rules.length - 1,
- hasquery: thisq.indexOf("(") > -1,
- minw: thisq.match(respond.regex.minw) && parseFloat(RegExp.$1) + (RegExp.$2 || ""),
- maxw: thisq.match(respond.regex.maxw) && parseFloat(RegExp.$1) + (RegExp.$2 || "")
- });
- }
- }
- applyMedia();
- }, makeRequests = function() {
- if (requestQueue.length) {
- var thisRequest = requestQueue.shift();
- ajax(thisRequest.href, function(styles) {
- translate(styles, thisRequest.href, thisRequest.media);
- parsedSheets[thisRequest.href] = true;
- w.setTimeout(function() {
- makeRequests();
- }, 0);
- });
- }
- }, ripCSS = function() {
- for (var i = 0; i < links.length; i++) {
- var sheet = links[i], href = sheet.href, media = sheet.media, isCSS = sheet.rel && sheet.rel.toLowerCase() === "stylesheet";
- if (!!href && isCSS && !parsedSheets[href]) {
- if (sheet.styleSheet && sheet.styleSheet.rawCssText) {
- translate(sheet.styleSheet.rawCssText, href, media);
- parsedSheets[href] = true;
- } else {
- if (!/^([a-zA-Z:]*\/\/)/.test(href) && !base || href.replace(RegExp.$1, "").split("/")[0] === w.location.host) {
- if (href.substring(0, 2) === "//") {
- href = w.location.protocol + href;
- }
- requestQueue.push({
- href: href,
- media: media
- });
- }
- }
- }
- }
- makeRequests();
- };
- ripCSS();
- respond.update = ripCSS;
- respond.getEmValue = getEmValue;
- function callMedia() {
- applyMedia(true);
- }
- if (w.addEventListener) {
- w.addEventListener("resize", callMedia, false);
- } else if (w.attachEvent) {
- w.attachEvent("onresize", callMedia);
- }
-})(this);
\ No newline at end of file
diff --git a/app/scripts/src/_includes/selectivizr.js b/app/scripts/src/_includes/selectivizr.js
deleted file mode 100644
index cdb9350..0000000
--- a/app/scripts/src/_includes/selectivizr.js
+++ /dev/null
@@ -1,561 +0,0 @@
-/*
-selectivizr v1.0.2 - (c) Keith Clark, freely distributable under the terms
-of the MIT license.
-
-selectivizr.com
-*/
-/*
-
-Notes about this source
------------------------
-
- * The #DEBUG_START and #DEBUG_END comments are used to mark blocks of code
- that will be removed prior to building a final release version (using a
- pre-compression script)
-
-
-References:
------------
-
- * CSS Syntax : http://www.w3.org/TR/2003/WD-css3-syntax-20030813/#style
- * Selectors : http://www.w3.org/TR/css3-selectors/#selectors
- * IE Compatability : http://msdn.microsoft.com/en-us/library/cc351024(VS.85).aspx
- * W3C Selector Tests : http://www.w3.org/Style/CSS/Test/CSS3/Selectors/current/html/tests/
-
-*/
-
-(function(win) {
-
- // If browser isn't IE, then stop execution! This handles the script
- // being loaded by non IE browsers because the developer didn't use
- // conditional comments.
- if (/*@cc_on!@*/true) return;
-
- // =========================== Init Objects ============================
-
- var doc = document;
- var root = doc.documentElement;
- var xhr = getXHRObject();
- var ieVersion = /MSIE (\d+)/.exec(navigator.userAgent)[1];
-
- // If were not in standards mode, IE is too old / new or we can't create
- // an XMLHttpRequest object then we should get out now.
- if (doc.compatMode != 'CSS1Compat' || ieVersion<6 || ieVersion>8 || !xhr) {
- return;
- }
-
-
- // ========================= Common Objects ============================
-
- // Compatiable selector engines in order of CSS3 support. Note: '*' is
- // a placholder for the object key name. (basically, crude compression)
- var selectorEngines = {
- "NW" : "*.Dom.select",
- "MooTools" : "$$",
- "DOMAssistant" : "*.$",
- "Prototype" : "$$",
- "YAHOO" : "*.util.Selector.query",
- "Sizzle" : "*",
- "jQuery" : "*",
- "dojo" : "*.query"
- };
-
- var selectorMethod;
- var enabledWatchers = []; // array of :enabled/:disabled elements to poll
- var ie6PatchID = 0; // used to solve ie6's multiple class bug
- var patchIE6MultipleClasses = true; // if true adds class bloat to ie6
- var namespace = "slvzr";
-
- // Stylesheet parsing regexp's
- var RE_COMMENT = /(\/\*[^*]*\*+([^\/][^*]*\*+)*\/)\s*/g;
- var RE_IMPORT = /@import\s*(?:(?:(?:url\(\s*(['"]?)(.*)\1)\s*\))|(?:(['"])(.*)\3))[^;]*;/g;
- var RE_ASSET_URL = /\burl\(\s*(["']?)(?!data:)([^"')]+)\1\s*\)/g;
- var RE_PSEUDO_STRUCTURAL = /^:(empty|(first|last|only|nth(-last)?)-(child|of-type))$/;
- var RE_PSEUDO_ELEMENTS = /:(:first-(?:line|letter))/g;
- var RE_SELECTOR_GROUP = /(^|})\s*([^\{]*?[\[:][^{]+)/g;
- var RE_SELECTOR_PARSE = /([ +~>])|(:[a-z-]+(?:\(.*?\)+)?)|(\[.*?\])/g;
- var RE_LIBRARY_INCOMPATIBLE_PSEUDOS = /(:not\()?:(hover|enabled|disabled|focus|checked|target|active|visited|first-line|first-letter)\)?/g;
- var RE_PATCH_CLASS_NAME_REPLACE = /[^\w-]/g;
-
- // HTML UI element regexp's
- var RE_INPUT_ELEMENTS = /^(INPUT|SELECT|TEXTAREA|BUTTON)$/;
- var RE_INPUT_CHECKABLE_TYPES = /^(checkbox|radio)$/;
-
- // Broken attribute selector implementations (IE7/8 native [^=""], [$=""] and [*=""])
- var BROKEN_ATTR_IMPLEMENTATIONS = ieVersion>6 ? /[\$\^*]=(['"])\1/ : null;
-
- // Whitespace normalization regexp's
- var RE_TIDY_TRAILING_WHITESPACE = /([(\[+~])\s+/g;
- var RE_TIDY_LEADING_WHITESPACE = /\s+([)\]+~])/g;
- var RE_TIDY_CONSECUTIVE_WHITESPACE = /\s+/g;
- var RE_TIDY_TRIM_WHITESPACE = /^\s*((?:[\S\s]*\S)?)\s*$/;
-
- // String constants
- var EMPTY_STRING = "";
- var SPACE_STRING = " ";
- var PLACEHOLDER_STRING = "$1";
-
- // =========================== Patching ================================
-
- // --[ patchStyleSheet() ]----------------------------------------------
- // Scans the passed cssText for selectors that require emulation and
- // creates one or more patches for each matched selector.
- function patchStyleSheet( cssText ) {
- return cssText.replace(RE_PSEUDO_ELEMENTS, PLACEHOLDER_STRING).
- replace(RE_SELECTOR_GROUP, function(m, prefix, selectorText) {
- var selectorGroups = selectorText.split(",");
- for (var c = 0, cs = selectorGroups.length; c < cs; c++) {
- var selector = normalizeSelectorWhitespace(selectorGroups[c]) + SPACE_STRING;
- var patches = [];
- selectorGroups[c] = selector.replace(RE_SELECTOR_PARSE,
- function(match, combinator, pseudo, attribute, index) {
- if (combinator) {
- if (patches.length>0) {
- applyPatches( selector.substring(0, index), patches );
- patches = [];
- }
- return combinator;
- }
- else {
- var patch = (pseudo) ? patchPseudoClass( pseudo ) : patchAttribute( attribute );
- if (patch) {
- patches.push(patch);
- return "." + patch.className;
- }
- return match;
- }
- }
- );
- }
- return prefix + selectorGroups.join(",");
- });
- };
-
- // --[ patchAttribute() ]-----------------------------------------------
- // returns a patch for an attribute selector.
- function patchAttribute( attr ) {
- return (!BROKEN_ATTR_IMPLEMENTATIONS || BROKEN_ATTR_IMPLEMENTATIONS.test(attr)) ?
- { className: createClassName(attr), applyClass: true } : null;
- };
-
- // --[ patchPseudoClass() ]---------------------------------------------
- // returns a patch for a pseudo-class
- function patchPseudoClass( pseudo ) {
-
- var applyClass = true;
- var className = createClassName(pseudo.slice(1));
- var isNegated = pseudo.substring(0, 5) == ":not(";
- var activateEventName;
- var deactivateEventName;
-
- // if negated, remove :not()
- if (isNegated) {
- pseudo = pseudo.slice(5, -1);
- }
-
- // bracket contents are irrelevant - remove them
- var bracketIndex = pseudo.indexOf("(")
- if (bracketIndex > -1) {
- pseudo = pseudo.substring(0, bracketIndex);
- }
-
- // check we're still dealing with a pseudo-class
- if (pseudo.charAt(0) == ":") {
- switch (pseudo.slice(1)) {
-
- case "root":
- applyClass = function(e) {
- return isNegated ? e != root : e == root;
- }
- break;
-
- case "target":
- // :target is only supported in IE8
- if (ieVersion == 8) {
- applyClass = function(e) {
- var handler = function() {
- var hash = location.hash;
- var hashID = hash.slice(1);
- return isNegated ? (hash == EMPTY_STRING || e.id != hashID) : (hash != EMPTY_STRING && e.id == hashID);
- };
- addEvent( win, "hashchange", function() {
- toggleElementClass(e, className, handler());
- })
- return handler();
- }
- break;
- }
- return false;
-
- case "checked":
- applyClass = function(e) {
- if (RE_INPUT_CHECKABLE_TYPES.test(e.type)) {
- addEvent( e, "propertychange", function() {
- if (event.propertyName == "checked") {
- toggleElementClass( e, className, e.checked !== isNegated );
- }
- })
- }
- return e.checked !== isNegated;
- }
- break;
-
- case "disabled":
- isNegated = !isNegated;
-
- case "enabled":
- applyClass = function(e) {
- if (RE_INPUT_ELEMENTS.test(e.tagName)) {
- addEvent( e, "propertychange", function() {
- if (event.propertyName == "$disabled") {
- toggleElementClass( e, className, e.$disabled === isNegated );
- }
- });
- enabledWatchers.push(e);
- e.$disabled = e.disabled;
- return e.disabled === isNegated;
- }
- return pseudo == ":enabled" ? isNegated : !isNegated;
- }
- break;
-
- case "focus":
- activateEventName = "focus";
- deactivateEventName = "blur";
-
- case "hover":
- if (!activateEventName) {
- activateEventName = "mouseenter";
- deactivateEventName = "mouseleave";
- }
- applyClass = function(e) {
- addEvent( e, isNegated ? deactivateEventName : activateEventName, function() {
- toggleElementClass( e, className, true );
- })
- addEvent( e, isNegated ? activateEventName : deactivateEventName, function() {
- toggleElementClass( e, className, false );
- })
- return isNegated;
- }
- break;
-
- // everything else
- default:
- // If we don't support this pseudo-class don't create
- // a patch for it
- if (!RE_PSEUDO_STRUCTURAL.test(pseudo)) {
- return false;
- }
- break;
- }
- }
- return { className: className, applyClass: applyClass };
- };
-
- // --[ applyPatches() ]-------------------------------------------------
- // uses the passed selector text to find DOM nodes and patch them
- function applyPatches(selectorText, patches) {
- var elms;
-
- // Although some selector libraries can find :checked :enabled etc.
- // we need to find all elements that could have that state because
- // it can be changed by the user.
- var domSelectorText = selectorText.replace(RE_LIBRARY_INCOMPATIBLE_PSEUDOS, EMPTY_STRING);
-
- // If the dom selector equates to an empty string or ends with
- // whitespace then we need to append a universal selector (*) to it.
- if (domSelectorText == EMPTY_STRING || domSelectorText.charAt(domSelectorText.length - 1) == SPACE_STRING) {
- domSelectorText += "*";
- }
-
- // Ensure we catch errors from the selector library
- try {
- elms = selectorMethod( domSelectorText );
- } catch (ex) {
- // #DEBUG_START
- log( "Selector '" + selectorText + "' threw exception '" + ex + "'" );
- // #DEBUG_END
- }
-
-
- if (elms) {
- for (var d = 0, dl = elms.length; d < dl; d++) {
- var elm = elms[d];
- var cssClasses = elm.className;
- for (var f = 0, fl = patches.length; f < fl; f++) {
- var patch = patches[f];
-
- if (!hasPatch(elm, patch)) {
- if (patch.applyClass && (patch.applyClass === true || patch.applyClass(elm) === true)) {
- cssClasses = toggleClass(cssClasses, patch.className, true );
- }
- }
- }
- elm.className = cssClasses;
- }
- }
- };
-
- // --[ hasPatch() ]-----------------------------------------------------
- // checks for the exsistence of a patch on an element
- function hasPatch( elm, patch ) {
- return new RegExp("(^|\\s)" + patch.className + "(\\s|$)").test(elm.className);
- };
-
-
- // =========================== Utility =================================
-
- function createClassName( className ) {
- return namespace + "-" + ((ieVersion == 6 && patchIE6MultipleClasses) ?
- ie6PatchID++
- :
- className.replace(RE_PATCH_CLASS_NAME_REPLACE, function(a) { return a.charCodeAt(0) }));
- };
-
- // --[ log() ]----------------------------------------------------------
- // #DEBUG_START
- function log( message ) {
- if (win.console) {
- win.console.log(message);
- }
- };
- // #DEBUG_END
-
- // --[ trim() ]---------------------------------------------------------
- // removes leading, trailing whitespace from a string
- function trim( text ) {
- return text.replace(RE_TIDY_TRIM_WHITESPACE, PLACEHOLDER_STRING);
- };
-
- // --[ normalizeWhitespace() ]------------------------------------------
- // removes leading, trailing and consecutive whitespace from a string
- function normalizeWhitespace( text ) {
- return trim(text).replace(RE_TIDY_CONSECUTIVE_WHITESPACE, SPACE_STRING);
- };
-
- // --[ normalizeSelectorWhitespace() ]----------------------------------
- // tidies whitespace around selector brackets and combinators
- function normalizeSelectorWhitespace( selectorText ) {
- return normalizeWhitespace(selectorText.
- replace(RE_TIDY_TRAILING_WHITESPACE, PLACEHOLDER_STRING).
- replace(RE_TIDY_LEADING_WHITESPACE, PLACEHOLDER_STRING)
- );
- };
-
- // --[ toggleElementClass() ]-------------------------------------------
- // toggles a single className on an element
- function toggleElementClass( elm, className, on ) {
- var oldClassName = elm.className;
- var newClassName = toggleClass(oldClassName, className, on);
- if (newClassName != oldClassName) {
- elm.className = newClassName;
- elm.parentNode.className += EMPTY_STRING;
- }
- };
-
- // --[ toggleClass() ]--------------------------------------------------
- // adds / removes a className from a string of classNames. Used to
- // manage multiple class changes without forcing a DOM redraw
- function toggleClass( classList, className, on ) {
- var re = RegExp("(^|\\s)" + className + "(\\s|$)");
- var classExists = re.test(classList);
- if (on) {
- return classExists ? classList : classList + SPACE_STRING + className;
- } else {
- return classExists ? trim(classList.replace(re, PLACEHOLDER_STRING)) : classList;
- }
- };
-
- // --[ addEvent() ]-----------------------------------------------------
- function addEvent(elm, eventName, eventHandler) {
- elm.attachEvent("on" + eventName, eventHandler);
- };
-
- // --[ getXHRObject() ]-------------------------------------------------
- function getXHRObject()
- {
- if (win.XMLHttpRequest) {
- return new XMLHttpRequest;
- }
- try {
- return new ActiveXObject('Microsoft.XMLHTTP');
- } catch(e) {
- return null;
- }
- };
-
- // --[ loadStyleSheet() ]-----------------------------------------------
- function loadStyleSheet( url ) {
- xhr.open("GET", url, false);
- xhr.send();
- return (xhr.status==200) ? xhr.responseText : EMPTY_STRING;
- };
-
- // --[ resolveUrl() ]---------------------------------------------------
- // Converts a URL fragment to a fully qualified URL using the specified
- // context URL. Returns null if same-origin policy is broken
- function resolveUrl( url, contextUrl ) {
-
- function getProtocolAndHost( url ) {
- return url.substring(0, url.indexOf("/", 8));
- };
-
- // absolute path
- if (/^https?:\/\//i.test(url)) {
- return getProtocolAndHost(contextUrl) == getProtocolAndHost(url) ? url : null;
- }
-
- // root-relative path
- if (url.charAt(0)=="/") {
- return getProtocolAndHost(contextUrl) + url;
- }
-
- // relative path
- var contextUrlPath = contextUrl.split(/[?#]/)[0]; // ignore query string in the contextUrl
- if (url.charAt(0) != "?" && contextUrlPath.charAt(contextUrlPath.length - 1) != "/") {
- contextUrlPath = contextUrlPath.substring(0, contextUrlPath.lastIndexOf("/") + 1);
- }
-
- return contextUrlPath + url;
- };
-
- // --[ parseStyleSheet() ]----------------------------------------------
- // Downloads the stylesheet specified by the URL, removes it's comments
- // and recursivly replaces @import rules with their contents, ultimately
- // returning the full cssText.
- function parseStyleSheet( url ) {
- if (url) {
- return loadStyleSheet(url).replace(RE_COMMENT, EMPTY_STRING).
- replace(RE_IMPORT, function( match, quoteChar, importUrl, quoteChar2, importUrl2 ) {
- return parseStyleSheet(resolveUrl(importUrl || importUrl2, url));
- }).
- replace(RE_ASSET_URL, function( match, quoteChar, assetUrl ) {
- quoteChar = quoteChar || EMPTY_STRING;
- return " url(" + quoteChar + resolveUrl(assetUrl, url) + quoteChar + ") ";
- });
- }
- return EMPTY_STRING;
- };
-
- // --[ init() ]---------------------------------------------------------
- function init() {
- // honour the tag
- var url, stylesheet;
- var baseTags = doc.getElementsByTagName("BASE");
- var baseUrl = (baseTags.length > 0) ? baseTags[0].href : doc.location.href;
-
- /* Note: This code prevents IE from freezing / crashing when using
- @font-face .eot files but it modifies the tag and could
- trigger the IE stylesheet limit. It will also cause FOUC issues.
- If you choose to use it, make sure you comment out the for loop
- directly below this comment.
-
- var head = doc.getElementsByTagName("head")[0];
- for (var c=doc.styleSheets.length-1; c>=0; c--) {
- stylesheet = doc.styleSheets[c]
- head.appendChild(doc.createElement("style"))
- var patchedStylesheet = doc.styleSheets[doc.styleSheets.length-1];
-
- if (stylesheet.href != EMPTY_STRING) {
- url = resolveUrl(stylesheet.href, baseUrl)
- if (url) {
- patchedStylesheet.cssText = patchStyleSheet( parseStyleSheet( url ) )
- stylesheet.disabled = true
- setTimeout( function () {
- stylesheet.owningElement.parentNode.removeChild(stylesheet.owningElement)
- })
- }
- }
- }
- */
-
- for (var c = 0; c < doc.styleSheets.length; c++) {
- stylesheet = doc.styleSheets[c]
- if (stylesheet.href != EMPTY_STRING) {
- url = resolveUrl(stylesheet.href, baseUrl);
- if (url) {
- stylesheet.cssText = patchStyleSheet( parseStyleSheet( url ) );
- }
- }
- }
-
- // :enabled & :disabled polling script (since we can't hook
- // onpropertychange event when an element is disabled)
- if (enabledWatchers.length > 0) {
- setInterval( function() {
- for (var c = 0, cl = enabledWatchers.length; c < cl; c++) {
- var e = enabledWatchers[c];
- if (e.disabled !== e.$disabled) {
- if (e.disabled) {
- e.disabled = false;
- e.$disabled = true;
- e.disabled = true;
- }
- else {
- e.$disabled = e.disabled;
- }
- }
- }
- },250)
- }
- };
-
- // Bind selectivizr to the ContentLoaded event.
- ContentLoaded(win, function() {
- // Determine the "best fit" selector engine
- for (var engine in selectorEngines) {
- var members, member, context = win;
- if (win[engine]) {
- members = selectorEngines[engine].replace("*", engine).split(".");
- while ((member = members.shift()) && (context = context[member])) {}
- if (typeof context == "function") {
- selectorMethod = context;
- init();
- return;
- }
- }
- }
- });
-
-
- /*!
- * ContentLoaded.js by Diego Perini, modified for IE<9 only (to save space)
- *
- * Author: Diego Perini (diego.perini at gmail.com)
- * Summary: cross-browser wrapper for DOMContentLoaded
- * Updated: 20101020
- * License: MIT
- * Version: 1.2
- *
- * URL:
- * http://javascript.nwbox.com/ContentLoaded/
- * http://javascript.nwbox.com/ContentLoaded/MIT-LICENSE
- *
- */
-
- // @w window reference
- // @f function reference
- function ContentLoaded(win, fn) {
-
- var done = false, top = true,
- init = function(e) {
- if (e.type == "readystatechange" && doc.readyState != "complete") return;
- (e.type == "load" ? win : doc).detachEvent("on" + e.type, init, false);
- if (!done && (done = true)) fn.call(win, e.type || e);
- },
- poll = function() {
- try { root.doScroll("left"); } catch(e) { setTimeout(poll, 50); return; }
- init('poll');
- };
-
- if (doc.readyState == "complete") fn.call(win, EMPTY_STRING);
- else {
- if (doc.createEventObject && root.doScroll) {
- try { top = !win.frameElement; } catch(e) { }
- if (top) poll();
- }
- addEvent(doc,"readystatechange", init);
- addEvent(win,"load", init);
- }
- };
-})(this);
\ No newline at end of file
diff --git a/app/sitemap.xml b/app/sitemap.xml
deleted file mode 100644
index 0f8724e..0000000
--- a/app/sitemap.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/app/styles/scss/config/README b/app/styles/scss/config/README
deleted file mode 100644
index 0d93213..0000000
--- a/app/styles/scss/config/README
+++ /dev/null
@@ -1 +0,0 @@
-Add your variables, mixins, etc here.
\ No newline at end of file
diff --git a/app/styles/scss/config/_mixins.scss b/app/styles/scss/config/_mixins.scss
deleted file mode 100644
index 63b0035..0000000
--- a/app/styles/scss/config/_mixins.scss
+++ /dev/null
@@ -1,191 +0,0 @@
-@mixin clearfix {
- zoom:1;
- &:before, &:after {
- content: "\0020";
- display: block;
- height: 0;
- overflow: hidden;
- }
- &:after {
- clear: both;
- }
-}
-
-@mixin background-gradient($startColor: #3C3C3C, $endColor: #999999) {
- background-color: $startColor;
- background-image: -webkit-gradient(linear, left top, left bottom, from($startColor), to($endColor));
- background-image: -webkit-linear-gradient(top, $startColor, $endColor);
- background-image: -moz-linear-gradient(top, $startColor, $endColor);
- background-image: -ms-linear-gradient(top, $startColor, $endColor);
- background-image: -o-linear-gradient(top, $startColor, $endColor);
- background-image: linear-gradient(top, $startColor, $endColor);
- filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#{$startColor}', endColorStr='#{$endColor}');
-}
-
-@mixin background-size($width: 100%, $height: 100%) {
- -moz-background-size: $width $height;
- -webkit-background-size: $width $height;
- background-size: $width $height;
-}
-
-@mixin border-radius($radius: 5px) {
- -moz-border-radius: $radius;
- -webkit-border-radius: $radius;
- border-radius: $radius;
-}
-
-@mixin border-radius-separate($topLeftRadius: 5px, $topRightRadius: 5px, $bottomLeftRadius: 5px, $bottomRightRadius: 5px) {
- -webkit-border-top-left-radius: $topLeftRadius;
- -webkit-border-top-right-radius: $topRightRadius;
- -webkit-border-bottom-right-radius: $bottomRightRadius;
- -webkit-border-bottom-left-radius: $bottomLeftRadius;
-
- -moz-border-radius-topleft: $topLeftRadius;
- -moz-border-radius-topright: $topRightRadius;
- -moz-border-radius-bottomright: $bottomRightRadius;
- -moz-border-radius-bottomleft: $bottomLeftRadius;
-
- border-top-left-radius: $topLeftRadius;
- border-top-right-radius: $topRightRadius;
- border-bottom-right-radius: $bottomRightRadius;
- border-bottom-left-radius: $bottomLeftRadius;
-}
-
-@mixin box($orient: horizontal, $pack: center, $align: center) {
- display: -webkit-box;
- display: -moz-box;
- display: box;
-
- -webkit-box-orient: $orient;
- -moz-box-orient: $orient;
- box-orient: $orient;
-
- -webkit-box-pack: $pack;
- -moz-box-pack: $pack;
- box-pack: $pack;
-
- -webkit-box-align: $align;
- -moz-box-align: $align;
- box-align: $align;
-}
-
-@mixin box-rgba($r: 60, $g: 3, $b: 12, $opacity: 0.23, $color: #3C3C3C) {
- background-color: transparent;
- background-color: rgba($r, $g, $b, $opacity);
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{$color}',endColorstr='#{$color}');
- zoom: 1;
-}
-
-@mixin box-shadow($x: 2px, $y: 2px, $blur: 5px, $color: rgba(0,0,0,.4), $inset: "") {
- @if $inset != "" {
- -webkit-box-shadow: $inset $x $y $blur $color;
- -moz-box-shadow: $inset $x $y $blur $color;
- box-shadow: $inset $x $y $blur $color;
- } @else {
- -webkit-box-shadow: $x $y $blur $color;
- -moz-box-shadow: $x $y $blur $color;
- box-shadow: $x $y $blur $color;
- }
-}
-
-@mixin box-sizing($type: border-box) {
- -webkit-box-sizing: $type;
- -moz-box-sizing: $type;
- box-sizing: $type;
-}
-
-@mixin columns($count: 3, $gap: 10) {
- -webkit-column-count: $count;
- -moz-column-count: $count;
- column-count: $count;
-
- -webkit-column-gap: $gap;
- -moz-column-gap: $gap;
- column-gap: $gap;
-}
-
-@mixin double-borders($colorOne: #3C3C3C, $colorTwo: #999999, $radius: 0) {
- border: 1px solid $colorOne;
-
- -webkit-box-shadow: 0 0 0 1px $colorTwo;
- -moz-box-shadow: 0 0 0 1px $colorTwo;
- box-shadow: 0 0 0 1px $colorTwo;
-
- @include border-radius( $radius );
-}
-
-@mixin flex($value: 1) {
- -webkit-box-flex: $value;
- -moz-box-flex: $value;
- box-flex: $value;
-}
-
-@mixin flip($scaleX: -1) {
- -moz-transform: scaleX($scaleX);
- -o-transform: scaleX($scaleX);
- -webkit-transform: scaleX($scaleX);
- transform: scaleX($scaleX);
- filter: FlipH;
- -ms-filter: "FlipH";
-}
-
-@mixin font-face($style-name, $file, $family) {
- $filepath: "../fonts/" + $family + "/" + $file;
- @font-face {
- font-family: $style-name;
- src: url('#{$filepath}.eot');
- src: url('#{$filepath}.eot?#iefix') format('embedded-opentype'),
- url('#{$filepath}.woff') format('woff'),
- url('#{$filepath}.ttf') format('truetype'),
- url('#{$filepath}.svg##{$style-name}') format('svg');
- }
-}
-
-@mixin outline-radius($radius: 5px) {
- -webkit-outline-radius: $radius;
- -moz-outline-radius: $radius;
- outline-radius: $radius;
-}
-
-@mixin resize($direction: both) {
- -webkit-resize: $direction;
- -moz-resize: $direction;
- resize: $direction;
-}
-
-@mixin rotate($deg: 0, $m11: 0, $m12: 0, $m21: 0, $m22: 0) {
- -moz-transform: rotate($deg + deg);
- -o-transform: rotate($deg + deg);
- -webkit-transform: rotate($deg + deg);
- -ms-transform: rotate($deg + deg);
- transform: rotate($deg + deg);
- filter: progid:DXImageTransform.Microsoft.Matrix(
- M11=#{$m11}, M12=#{$m12}, M21=#{$m21}, M22=#{$m22}, sizingMethod='auto expand');
- zoom: 1;
-}
-
-@mixin text-shadow($x: 2px, $y: 2px, $blur: 5px, $color: rgba(0,0,0,.4)) {
- text-shadow: $x $y $blur $color;
-}
-
-@mixin transform($params) {
- -webkit-transform: $params;
- -moz-transform: $params;
- transform: $params;
-}
-
-@mixin transition($declarations...) {
- @each $prefix in '-webkit-', '-moz-', '-ms-', '-o-', '' {
- #{$prefix}transition: $declarations;
- }
-}
-
-@mixin triple-borders($colorOne: #3C3C3C, $colorTwo: #999999, $colorThree: #000000, $radius: 0) {
- border: 1px solid $colorOne;
-
- @include border-radius($radius);
-
- -webkit-box-shadow: 0 0 0 1px $colorTwo, 0 0 0 2px $colorThree;
- -moz-box-shadow: 0 0 0 1px $colorTwo, 0 0 0 2px $colorThree;
- box-shadow: 0 0 0 1px $colorTwo, 0 0 0 2px $colorThree;
-}
diff --git a/app/styles/scss/config/_settings.scss b/app/styles/scss/config/_settings.scss
deleted file mode 100644
index 7ecbb83..0000000
--- a/app/styles/scss/config/_settings.scss
+++ /dev/null
@@ -1 +0,0 @@
-// Add your settings here
diff --git a/app/styles/scss/general/README b/app/styles/scss/general/README
deleted file mode 100644
index 9b44b85..0000000
--- a/app/styles/scss/general/README
+++ /dev/null
@@ -1 +0,0 @@
-Add generic SCSS files here (type, resets, etc)
\ No newline at end of file
diff --git a/app/styles/scss/general/_normalize.scss b/app/styles/scss/general/_normalize.scss
deleted file mode 100644
index 81c6f31..0000000
--- a/app/styles/scss/general/_normalize.scss
+++ /dev/null
@@ -1,427 +0,0 @@
-/*! normalize.css v3.0.2 | MIT License | git.io/normalize */
-
-/**
- * 1. Set default font family to sans-serif.
- * 2. Prevent iOS text size adjust after orientation change, without disabling
- * user zoom.
- */
-
-html {
- font-family: sans-serif; /* 1 */
- -ms-text-size-adjust: 100%; /* 2 */
- -webkit-text-size-adjust: 100%; /* 2 */
-}
-
-/**
- * Remove default margin.
- */
-
-body {
- margin: 0;
-}
-
-/* HTML5 display definitions
- ========================================================================== */
-
-/**
- * Correct `block` display not defined for any HTML5 element in IE 8/9.
- * Correct `block` display not defined for `details` or `summary` in IE 10/11
- * and Firefox.
- * Correct `block` display not defined for `main` in IE 11.
- */
-
-article,
-aside,
-details,
-figcaption,
-figure,
-footer,
-header,
-hgroup,
-main,
-menu,
-nav,
-section,
-summary {
- display: block;
-}
-
-/**
- * 1. Correct `inline-block` display not defined in IE 8/9.
- * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.
- */
-
-audio,
-canvas,
-progress,
-video {
- display: inline-block; /* 1 */
- vertical-align: baseline; /* 2 */
-}
-
-/**
- * Prevent modern browsers from displaying `audio` without controls.
- * Remove excess height in iOS 5 devices.
- */
-
-audio:not([controls]) {
- display: none;
- height: 0;
-}
-
-/**
- * Address `[hidden]` styling not present in IE 8/9/10.
- * Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22.
- */
-
-[hidden],
-template {
- display: none;
-}
-
-/* Links
- ========================================================================== */
-
-/**
- * Remove the gray background color from active links in IE 10.
- */
-
-a {
- background-color: transparent;
-}
-
-/**
- * Improve readability when focused and also mouse hovered in all browsers.
- */
-
-a:active,
-a:hover {
- outline: 0;
-}
-
-/* Text-level semantics
- ========================================================================== */
-
-/**
- * Address styling not present in IE 8/9/10/11, Safari, and Chrome.
- */
-
-abbr[title] {
- border-bottom: 1px dotted;
-}
-
-/**
- * Address style set to `bolder` in Firefox 4+, Safari, and Chrome.
- */
-
-b,
-strong {
- font-weight: bold;
-}
-
-/**
- * Address styling not present in Safari and Chrome.
- */
-
-dfn {
- font-style: italic;
-}
-
-/**
- * Address variable `h1` font-size and margin within `section` and `article`
- * contexts in Firefox 4+, Safari, and Chrome.
- */
-
-h1 {
- font-size: 2em;
- margin: 0.67em 0;
-}
-
-/**
- * Address styling not present in IE 8/9.
- */
-
-mark {
- background: #ff0;
- color: #000;
-}
-
-/**
- * Address inconsistent and variable font size in all browsers.
- */
-
-small {
- font-size: 80%;
-}
-
-/**
- * Prevent `sub` and `sup` affecting `line-height` in all browsers.
- */
-
-sub,
-sup {
- font-size: 75%;
- line-height: 0;
- position: relative;
- vertical-align: baseline;
-}
-
-sup {
- top: -0.5em;
-}
-
-sub {
- bottom: -0.25em;
-}
-
-/* Embedded content
- ========================================================================== */
-
-/**
- * Remove border when inside `a` element in IE 8/9/10.
- */
-
-img {
- border: 0;
-}
-
-/**
- * Correct overflow not hidden in IE 9/10/11.
- */
-
-svg:not(:root) {
- overflow: hidden;
-}
-
-/* Grouping content
- ========================================================================== */
-
-/**
- * Address margin not present in IE 8/9 and Safari.
- */
-
-figure {
- margin: 1em 40px;
-}
-
-/**
- * Address differences between Firefox and other browsers.
- */
-
-hr {
- -moz-box-sizing: content-box;
- box-sizing: content-box;
- height: 0;
-}
-
-/**
- * Contain overflow in all browsers.
- */
-
-pre {
- overflow: auto;
-}
-
-/**
- * Address odd `em`-unit font size rendering in all browsers.
- */
-
-code,
-kbd,
-pre,
-samp {
- font-family: monospace, monospace;
- font-size: 1em;
-}
-
-/* Forms
- ========================================================================== */
-
-/**
- * Known limitation: by default, Chrome and Safari on OS X allow very limited
- * styling of `select`, unless a `border` property is set.
- */
-
-/**
- * 1. Correct color not being inherited.
- * Known issue: affects color of disabled elements.
- * 2. Correct font properties not being inherited.
- * 3. Address margins set differently in Firefox 4+, Safari, and Chrome.
- */
-
-button,
-input,
-optgroup,
-select,
-textarea {
- color: inherit; /* 1 */
- font: inherit; /* 2 */
- margin: 0; /* 3 */
-}
-
-/**
- * Address `overflow` set to `hidden` in IE 8/9/10/11.
- */
-
-button {
- overflow: visible;
-}
-
-/**
- * Address inconsistent `text-transform` inheritance for `button` and `select`.
- * All other form control elements do not inherit `text-transform` values.
- * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.
- * Correct `select` style inheritance in Firefox.
- */
-
-button,
-select {
- text-transform: none;
-}
-
-/**
- * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
- * and `video` controls.
- * 2. Correct inability to style clickable `input` types in iOS.
- * 3. Improve usability and consistency of cursor style between image-type
- * `input` and others.
- */
-
-button,
-html input[type="button"], /* 1 */
-input[type="reset"],
-input[type="submit"] {
- -webkit-appearance: button; /* 2 */
- cursor: pointer; /* 3 */
-}
-
-/**
- * Re-set default cursor for disabled elements.
- */
-
-button[disabled],
-html input[disabled] {
- cursor: default;
-}
-
-/**
- * Remove inner padding and border in Firefox 4+.
- */
-
-button::-moz-focus-inner,
-input::-moz-focus-inner {
- border: 0;
- padding: 0;
-}
-
-/**
- * Address Firefox 4+ setting `line-height` on `input` using `!important` in
- * the UA stylesheet.
- */
-
-input {
- line-height: normal;
-}
-
-/**
- * It's recommended that you don't attempt to style these elements.
- * Firefox's implementation doesn't respect box-sizing, padding, or width.
- *
- * 1. Address box sizing set to `content-box` in IE 8/9/10.
- * 2. Remove excess padding in IE 8/9/10.
- */
-
-input[type="checkbox"],
-input[type="radio"] {
- box-sizing: border-box; /* 1 */
- padding: 0; /* 2 */
-}
-
-/**
- * Fix the cursor style for Chrome's increment/decrement buttons. For certain
- * `font-size` values of the `input`, it causes the cursor style of the
- * decrement button to change from `default` to `text`.
- */
-
-input[type="number"]::-webkit-inner-spin-button,
-input[type="number"]::-webkit-outer-spin-button {
- height: auto;
-}
-
-/**
- * 1. Address `appearance` set to `searchfield` in Safari and Chrome.
- * 2. Address `box-sizing` set to `border-box` in Safari and Chrome
- * (include `-moz` to future-proof).
- */
-
-input[type="search"] {
- -webkit-appearance: textfield; /* 1 */
- -moz-box-sizing: content-box;
- -webkit-box-sizing: content-box; /* 2 */
- box-sizing: content-box;
-}
-
-/**
- * Remove inner padding and search cancel button in Safari and Chrome on OS X.
- * Safari (but not Chrome) clips the cancel button when the search input has
- * padding (and `textfield` appearance).
- */
-
-input[type="search"]::-webkit-search-cancel-button,
-input[type="search"]::-webkit-search-decoration {
- -webkit-appearance: none;
-}
-
-/**
- * Define consistent border, margin, and padding.
- */
-
-fieldset {
- border: 1px solid #c0c0c0;
- margin: 0 2px;
- padding: 0.35em 0.625em 0.75em;
-}
-
-/**
- * 1. Correct `color` not being inherited in IE 8/9/10/11.
- * 2. Remove padding so people aren't caught out if they zero out fieldsets.
- */
-
-legend {
- border: 0; /* 1 */
- padding: 0; /* 2 */
-}
-
-/**
- * Remove default vertical scrollbar in IE 8/9/10/11.
- */
-
-textarea {
- overflow: auto;
-}
-
-/**
- * Don't inherit the `font-weight` (applied by a rule above).
- * NOTE: the default cannot safely be changed in Chrome and Safari on OS X.
- */
-
-optgroup {
- font-weight: bold;
-}
-
-/* Tables
- ========================================================================== */
-
-/**
- * Remove most spacing between table cells.
- */
-
-table {
- border-collapse: collapse;
- border-spacing: 0;
-}
-
-td,
-th {
- padding: 0;
-}
\ No newline at end of file
diff --git a/app/styles/scss/general/_reset.scss b/app/styles/scss/general/_reset.scss
deleted file mode 100644
index dbdfc9e..0000000
--- a/app/styles/scss/general/_reset.scss
+++ /dev/null
@@ -1,51 +0,0 @@
-html {
- margin: 0;
- padding: 0;
- border: 0;
-}
-body, div, span, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, code, del, dfn, em, img, q, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, dialog, figure, footer, header, hgroup, nav, section {
- margin: 0;
- padding: 0;
- border: 0;
- font-weight: inherit;
- font-style: inherit;
- font-size: 100%;
- font-family: inherit;
- vertical-align: baseline;
-}
-
-article, aside, dialog, figure, footer, header, hgroup, nav, section {
- display: block;
-}
-
-body {
- line-height: 1.5;
- background: white;
-}
-
-table {
- border-collapse: separate;
- border-spacing: 0;
-}
-
-caption, th, td {
- text-align: left;
- font-weight: normal;
- float: none !important;
-}
-
-table, th, td {
- vertical-align: middle;
-}
-
-blockquote before, blockquote after, q before, q after {
- content: '';
-}
-
-a img {
- border: none;
-}
-
-b, i {
- display: none;
-}
\ No newline at end of file
diff --git a/app/styles/scss/init.scss b/app/styles/scss/init.scss
deleted file mode 100644
index 1ac57c3..0000000
--- a/app/styles/scss/init.scss
+++ /dev/null
@@ -1,11 +0,0 @@
-//misc settings
-@import 'config/_settings';
-@import 'config/_mixins';
-
-//frameworks
-
-//global things
-@import 'general/_reset';
-@import 'layout/_main';
-
-//pages
\ No newline at end of file
diff --git a/app/styles/scss/layout/README b/app/styles/scss/layout/README
deleted file mode 100644
index ad5908c..0000000
--- a/app/styles/scss/layout/README
+++ /dev/null
@@ -1 +0,0 @@
-Add your layouts here
\ No newline at end of file
diff --git a/app/styles/scss/pages/README b/app/styles/scss/pages/README
deleted file mode 100644
index 97d3dfa..0000000
--- a/app/styles/scss/pages/README
+++ /dev/null
@@ -1 +0,0 @@
-Add your individual page files here
\ No newline at end of file
diff --git a/app/styles/styles.css b/app/styles/styles.css
deleted file mode 100644
index 9a541e1..0000000
--- a/app/styles/styles.css
+++ /dev/null
@@ -1,45 +0,0 @@
-html {
- margin: 0;
- padding: 0;
- border: 0; }
-
-body, div, span, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, code, del, dfn, em, img, q, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, dialog, figure, footer, header, hgroup, nav, section {
- margin: 0;
- padding: 0;
- border: 0;
- font-weight: inherit;
- font-style: inherit;
- font-size: 100%;
- font-family: inherit;
- vertical-align: baseline; }
-
-article, aside, dialog, figure, footer, header, hgroup, nav, section {
- display: block; }
-
-body {
- line-height: 1.5;
- background: white; }
-
-table {
- border-collapse: separate;
- border-spacing: 0; }
-
-caption, th, td {
- text-align: left;
- font-weight: normal;
- float: none !important; }
-
-table, th, td {
- vertical-align: middle; }
-
-blockquote before, blockquote after, q before, q after {
- content: ''; }
-
-a img {
- border: none; }
-
-b, i {
- display: none; }
-
-
-/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdlbmVyYWwvX3Jlc2V0LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDRSxVQUFRO0VBQ1IsV0FBUztFQUNULFVBQVEsRUFBQTs7QUFFMEg7RUFDMUgsVUFBQTtFQUNDLFdBQUE7RUFDRCxVQUFBO0VBQ0sscUJBQUE7RUFDRCxvQkFBQTtFQUNELGdCQUFBO0VBQ0UscUJBQUE7RUFDRyx5QkFBQSxFQUFBOztBQUdzQjtFQUN0QyxlQUFTLEVBQUE7O0FBR1g7RUFDZSxpQkFBQTtFQUNELGtCQUFBLEVBQUE7O0FBR2Q7RUFDRSwwQkFBaUI7RUFDakIsa0JBQWdCLEVBQUE7O0FBR2xCO0VBQ2MsaUJBQUE7RUFDQyxvQkFBQTtFQUNOLHVCQUFBLEVBQUE7O0FBR0Y7RUFDTCx1QkFBZ0IsRUFBQTs7QUFHQztFQUNqQixZQUFTLEVBQUE7O0FBR1g7RUFDRSxhQUFRLEVBQUE7O0FBR1Y7RUFDSSxjQUFTLEVBQUEiLCJmaWxlIjoic3R5bGVzLmNzcyIsInNvdXJjZVJvb3QiOiIvc291cmNlLyIsInNvdXJjZXNDb250ZW50IjpbImh0bWwge1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG4gIGJvcmRlcjogMDtcbn1cbmJvZHksIGRpdiwgc3Bhbiwgb2JqZWN0LCBpZnJhbWUsIGgxLCBoMiwgaDMsIGg0LCBoNSwgaDYsIHAsIGJsb2NrcXVvdGUsIHByZSwgYSwgYWJiciwgYWNyb255bSwgYWRkcmVzcywgY29kZSwgZGVsLCBkZm4sIGVtLCBpbWcsIHEsIGRsLCBkdCwgZGQsIG9sLCB1bCwgbGksIGZpZWxkc2V0LCBmb3JtLCBsYWJlbCwgbGVnZW5kLCB0YWJsZSwgY2FwdGlvbiwgdGJvZHksIHRmb290LCB0aGVhZCwgdHIsIHRoLCB0ZCwgYXJ0aWNsZSwgYXNpZGUsIGRpYWxvZywgZmlndXJlLCBmb290ZXIsIGhlYWRlciwgaGdyb3VwLCBuYXYsIHNlY3Rpb24ge1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG4gIGJvcmRlcjogMDtcbiAgZm9udC13ZWlnaHQ6IGluaGVyaXQ7XG4gIGZvbnQtc3R5bGU6IGluaGVyaXQ7XG4gIGZvbnQtc2l6ZTogMTAwJTtcbiAgZm9udC1mYW1pbHk6IGluaGVyaXQ7XG4gIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcbn1cblxuYXJ0aWNsZSwgYXNpZGUsIGRpYWxvZywgZmlndXJlLCBmb290ZXIsIGhlYWRlciwgaGdyb3VwLCBuYXYsIHNlY3Rpb24ge1xuICBkaXNwbGF5OiBibG9jaztcbn1cblxuYm9keSB7XG4gIGxpbmUtaGVpZ2h0OiAxLjU7XG4gIGJhY2tncm91bmQ6IHdoaXRlO1xufVxuXG50YWJsZSB7XG4gIGJvcmRlci1jb2xsYXBzZTogc2VwYXJhdGU7XG4gIGJvcmRlci1zcGFjaW5nOiAwO1xufVxuXG5jYXB0aW9uLCB0aCwgdGQge1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICBmbG9hdDogbm9uZSAhaW1wb3J0YW50O1xufVxuXG50YWJsZSwgdGgsIHRkIHtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbn1cblxuYmxvY2txdW90ZSBiZWZvcmUsIGJsb2NrcXVvdGUgYWZ0ZXIsIHEgYmVmb3JlLCBxIGFmdGVyIHtcbiAgY29udGVudDogJyc7XG59XG5cbmEgaW1nIHtcbiAgYm9yZGVyOiBub25lO1xufVxuXG5iLCBpIHtcbiAgICBkaXNwbGF5OiBub25lO1xufSJdfQ== */
diff --git a/dist/.htaccess b/dist/.htaccess
deleted file mode 100644
index 760ccd3..0000000
--- a/dist/.htaccess
+++ /dev/null
@@ -1,935 +0,0 @@
-# Apache Server Configs v2.11.0 | MIT License
-# https://github.com/h5bp/server-configs-apache
-
-# (!) Using `.htaccess` files slows down Apache, therefore, if you have
-# access to the main server configuration file (which is usually called
-# `httpd.conf`), you should add this logic there.
-#
-# https://httpd.apache.org/docs/current/howto/htaccess.html.
-
-# ######################################################################
-# # CROSS-ORIGIN #
-# ######################################################################
-
-# ----------------------------------------------------------------------
-# | Cross-origin requests |
-# ----------------------------------------------------------------------
-
-# Allow cross-origin requests.
-#
-# https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS
-# http://enable-cors.org/
-# http://www.w3.org/TR/cors/
-
-#
-# Header set Access-Control-Allow-Origin "*"
-#
-
-# ----------------------------------------------------------------------
-# | Cross-origin images |
-# ----------------------------------------------------------------------
-
-# Send the CORS header for images when browsers request it.
-#
-# https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_enabled_image
-# https://blog.chromium.org/2011/07/using-cross-domain-images-in-webgl-and.html
-
-
-
-
- SetEnvIf Origin ":" IS_CORS
- Header set Access-Control-Allow-Origin "*" env=IS_CORS
-
-
-
-
-# ----------------------------------------------------------------------
-# | Cross-origin web fonts |
-# ----------------------------------------------------------------------
-
-# Allow cross-origin access to web fonts.
-
-
-
- Header set Access-Control-Allow-Origin "*"
-
-
-
-# ----------------------------------------------------------------------
-# | Cross-origin resource timing |
-# ----------------------------------------------------------------------
-
-# Allow cross-origin access to the timing information for all resources.
-#
-# If a resource isn't served with a `Timing-Allow-Origin` header that
-# would allow its timing information to be shared with the document,
-# some of the attributes of the `PerformanceResourceTiming` object will
-# be set to zero.
-#
-# http://www.w3.org/TR/resource-timing/
-# http://www.stevesouders.com/blog/2014/08/21/resource-timing-practical-tips/
-
-#
-# Header set Timing-Allow-Origin: "*"
-#
-
-
-# ######################################################################
-# # ERRORS #
-# ######################################################################
-
-# ----------------------------------------------------------------------
-# | Custom error messages/pages |
-# ----------------------------------------------------------------------
-
-# Customize what Apache returns to the client in case of an error.
-# https://httpd.apache.org/docs/current/mod/core.html#errordocument
-
-ErrorDocument 404 /404.html
-
-# ----------------------------------------------------------------------
-# | Error prevention |
-# ----------------------------------------------------------------------
-
-# Disable the pattern matching based on filenames.
-#
-# This setting prevents Apache from returning a 404 error as the result
-# of a rewrite when the directory with the same name does not exist.
-#
-# https://httpd.apache.org/docs/current/content-negotiation.html#multiviews
-
-Options -MultiViews
-
-
-# ######################################################################
-# # INTERNET EXPLORER #
-# ######################################################################
-
-# ----------------------------------------------------------------------
-# | Document modes |
-# ----------------------------------------------------------------------
-
-# Force Internet Explorer 8/9/10 to render pages in the highest mode
-# available in the various cases when it may not.
-#
-# https://hsivonen.fi/doctype/#ie8
-#
-# (!) Starting with Internet Explorer 11, document modes are deprecated.
-# If your business still relies on older web apps and services that were
-# designed for older versions of Internet Explorer, you might want to
-# consider enabling `Enterprise Mode` throughout your company.
-#
-# http://msdn.microsoft.com/en-us/library/ie/bg182625.aspx#docmode
-# http://blogs.msdn.com/b/ie/archive/2014/04/02/stay-up-to-date-with-enterprise-mode-for-internet-explorer-11.aspx
-
-
- Header set X-UA-Compatible "IE=edge"
- # `mod_headers` cannot match based on the content-type, however,
- # the `X-UA-Compatible` response header should be send only for
- # HTML documents and not for the other resources.
-
- Header unset X-UA-Compatible
-
-
-
-# ----------------------------------------------------------------------
-# | Iframes cookies |
-# ----------------------------------------------------------------------
-
-# Allow cookies to be set from iframes in Internet Explorer.
-#
-# http://msdn.microsoft.com/en-us/library/ms537343.aspx
-# http://www.w3.org/TR/2000/CR-P3P-20001215/
-
-#
-# Header set P3P "policyref=\"/w3c/p3p.xml\", CP=\"IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT\""
-#
-
-
-# ######################################################################
-# # MEDIA TYPES AND CHARACTER ENCODINGS #
-# ######################################################################
-
-# ----------------------------------------------------------------------
-# | Media types |
-# ----------------------------------------------------------------------
-
-# Serve resources with the proper media types (f.k.a. MIME types).
-#
-# https://www.iana.org/assignments/media-types/media-types.xhtml
-# https://httpd.apache.org/docs/current/mod/mod_mime.html#addtype
-
-
-
- # Data interchange
-
- AddType application/json json map topojson
- AddType application/ld+json jsonld
- AddType application/vnd.geo+json geojson
- AddType application/xml atom rdf rss xml
-
-
- # JavaScript
-
- # Normalize to standard type.
- # https://tools.ietf.org/html/rfc4329#section-7.2
-
- AddType application/javascript js
-
-
- # Manifest files
-
- # If you are providing a web application manifest file (see
- # the specification: https://w3c.github.io/manifest/), it is
- # recommended that you serve it with the `application/manifest+json`
- # media type.
- #
- # Because the web application manifest file doesn't have its
- # own unique file extension, you can set its media type either
- # by matching:
- #
- # 1) the exact location of the file (this can be done using a
- # directive such as ``, but it will NOT work in
- # the `.htaccess` file, so you will have to do it in the main
- # server configuration file or inside of a ``
- # container)
- #
- # e.g.:
- #
- #
- # AddType application/manifest+json json
- #
- #
- # 2) the filename (this can be problematic as you will need to
- # ensure that you don't have any other file with the same name
- # as the one you gave to your web application manifest file)
- #
- # e.g.:
- #
- #
- # AddType application/manifest+json json
- #
-
- AddType application/x-web-app-manifest+json webapp
- AddType text/cache-manifest appcache manifest
-
-
- # Media files
-
- AddType audio/mp4 f4a f4b m4a
- AddType audio/ogg oga ogg opus
- AddType image/bmp bmp
- AddType image/webp webp
- AddType video/mp4 f4v f4p m4v mp4
- AddType video/ogg ogv
- AddType video/webm webm
- AddType video/x-flv flv
- AddType image/svg+xml svg svgz
-
- # Serving `.ico` image files with a different media type
- # prevents Internet Explorer from displaying then as images:
- # https://github.com/h5bp/html5-boilerplate/commit/37b5fec090d00f38de64b591bcddcb205aadf8ee
-
- AddType image/x-icon cur ico
-
-
- # Web fonts
-
- AddType application/font-woff woff
- AddType application/font-woff2 woff2
- AddType application/vnd.ms-fontobject eot
-
- # Browsers usually ignore the font media types and simply sniff
- # the bytes to figure out the font type.
- # https://mimesniff.spec.whatwg.org/#matching-a-font-type-pattern
- #
- # However, Blink and WebKit based browsers will show a warning
- # in the console if the following font types are served with any
- # other media types.
-
- AddType application/x-font-ttf ttc ttf
- AddType font/opentype otf
-
-
- # Other
-
- AddType application/octet-stream safariextz
- AddType application/x-bb-appworld bbaw
- AddType application/x-chrome-extension crx
- AddType application/x-opera-extension oex
- AddType application/x-xpinstall xpi
- AddType text/vcard vcard vcf
- AddType text/vnd.rim.location.xloc xloc
- AddType text/vtt vtt
- AddType text/x-component htc
-
-
-
-# ----------------------------------------------------------------------
-# | Character encodings |
-# ----------------------------------------------------------------------
-
-# Serve all resources labeled as `text/html` or `text/plain`
-# with the media type `charset` parameter set to `UTF-8`.
-#
-# https://httpd.apache.org/docs/current/mod/core.html#adddefaultcharset
-
-AddDefaultCharset utf-8
-
-# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-# Serve the following file types with the media type `charset`
-# parameter set to `UTF-8`.
-#
-# https://httpd.apache.org/docs/current/mod/mod_mime.html#addcharset
-
-
- AddCharset utf-8 .atom \
- .bbaw \
- .css \
- .geojson \
- .js \
- .json \
- .jsonld \
- .rdf \
- .rss \
- .topojson \
- .vtt \
- .webapp \
- .xloc \
- .xml
-
-
-
-# ######################################################################
-# # REWRITES #
-# ######################################################################
-
-# ----------------------------------------------------------------------
-# | Rewrite engine |
-# ----------------------------------------------------------------------
-
-# (1) Turn on the rewrite engine (this is necessary in order for
-# the `RewriteRule` directives to work).
-#
-# https://httpd.apache.org/docs/current/mod/mod_rewrite.html#RewriteEngine
-#
-# (2) Enable the `FollowSymLinks` option if it isn't already.
-#
-# https://httpd.apache.org/docs/current/mod/core.html#options
-#
-# (3) If your web host doesn't allow the `FollowSymlinks` option,
-# you need to comment it out or remove it, and then uncomment
-# the `Options +SymLinksIfOwnerMatch` line (4), but be aware
-# of the performance impact.
-#
-# https://httpd.apache.org/docs/current/misc/perf-tuning.html#symlinks
-#
-# (4) Some cloud hosting services will require you set `RewriteBase`.
-#
-# http://www.rackspace.com/knowledge_center/frequently-asked-question/why-is-modrewrite-not-working-on-my-site
-# https://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewritebase
-#
-# (5) Depending on how your server is set up, you may also need to
-# use the `RewriteOptions` directive to enable some options for
-# the rewrite engine.
-#
-# https://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewriteoptions
-
-
-
- # (1)
- RewriteEngine On
-
- # (2)
- Options +FollowSymlinks
-
- # (3)
- # Options +SymLinksIfOwnerMatch
-
- # (4)
- # RewriteBase /
-
- # (5)
- # RewriteOptions
-
-
-
-# ----------------------------------------------------------------------
-# | Forcing `https://` |
-# ----------------------------------------------------------------------
-
-# Redirect from the `http://` to the `https://` version of the URL.
-# https://wiki.apache.org/httpd/RewriteHTTPToHTTPS
-
-#
-# RewriteEngine On
-# RewriteCond %{HTTPS} !=on
-# RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
-#
-
-# ----------------------------------------------------------------------
-# | Suppressing / Forcing the `www.` at the beginning of URLs |
-# ----------------------------------------------------------------------
-
-# The same content should never be available under two different
-# URLs, especially not with and without `www.` at the beginning.
-# This can cause SEO problems (duplicate content), and therefore,
-# you should choose one of the alternatives and redirect the other
-# one.
-#
-# By default `Option 1` (no `www.`) is activated.
-# http://no-www.org/faq.php?q=class_b
-#
-# If you would prefer to use `Option 2`, just comment out all the
-# lines from `Option 1` and uncomment the ones from `Option 2`.
-#
-# (!) NEVER USE BOTH RULES AT THE SAME TIME!
-
-# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-# Option 1: rewrite www.example.com → example.com
-
-
- RewriteEngine On
- RewriteCond %{HTTPS} !=on
- RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
- RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L]
-
-
-# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-# Option 2: rewrite example.com → www.example.com
-#
-# Be aware that the following might not be a good idea if you use "real"
-# subdomains for certain parts of your website.
-
-#
-# RewriteEngine On
-# RewriteCond %{HTTPS} !=on
-# RewriteCond %{HTTP_HOST} !^www\. [NC]
-# RewriteCond %{SERVER_ADDR} !=127.0.0.1
-# RewriteCond %{SERVER_ADDR} !=::1
-# RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
-#
-
-
-# ######################################################################
-# # SECURITY #
-# ######################################################################
-
-# ----------------------------------------------------------------------
-# | Clickjacking |
-# ----------------------------------------------------------------------
-
-# Protect website against clickjacking.
-#
-# The example below sends the `X-Frame-Options` response header with
-# the value `DENY`, informing browsers not to display the content of
-# the web page in any frame.
-#
-# This might not be the best setting for everyone. You should read
-# about the other two possible values the `X-Frame-Options` header
-# field can have: `SAMEORIGIN` and `ALLOW-FROM`.
-# https://tools.ietf.org/html/rfc7034#section-2.1.
-#
-# Keep in mind that while you could send the `X-Frame-Options` header
-# for all of your website’s pages, this has the potential downside that
-# it forbids even non-malicious framing of your content (e.g.: when
-# users visit your website using a Google Image Search results page).
-#
-# Nonetheless, you should ensure that you send the `X-Frame-Options`
-# header for all pages that allow a user to make a state changing
-# operation (e.g: pages that contain one-click purchase links, checkout
-# or bank-transfer confirmation pages, pages that make permanent
-# configuration changes, etc.).
-#
-# Sending the `X-Frame-Options` header can also protect your website
-# against more than just clickjacking attacks:
-# https://cure53.de/xfo-clickjacking.pdf.
-#
-# https://tools.ietf.org/html/rfc7034
-# http://blogs.msdn.com/b/ieinternals/archive/2010/03/30/combating-clickjacking-with-x-frame-options.aspx
-# https://www.owasp.org/index.php/Clickjacking
-
-#
-# Header set X-Frame-Options "DENY"
-# # `mod_headers` cannot match based on the content-type, however,
-# # the `X-Frame-Options` response header should be send only for
-# # HTML documents and not for the other resources.
-#
-# Header unset X-Frame-Options
-#
-#
-
-# ----------------------------------------------------------------------
-# | Content Security Policy (CSP) |
-# ----------------------------------------------------------------------
-
-# Mitigate the risk of cross-site scripting and other content-injection
-# attacks.
-#
-# This can be done by setting a `Content Security Policy` which
-# whitelists trusted sources of content for your website.
-#
-# The example header below allows ONLY scripts that are loaded from the
-# current website's origin (no inline scripts, no CDN, etc). That almost
-# certainly won't work as-is for your website!
-#
-# For more details on how to craft a reasonable policy for your website,
-# read: http://www.html5rocks.com/en/tutorials/security/content-security-policy/
-# (or the specification: http://www.w3.org/TR/CSP11/). Also, to make
-# things easier, you can use an online CSP header generator such as:
-# http://cspisawesome.com/.
-
-#
-# Header set Content-Security-Policy "script-src 'self'; object-src 'self'"
-# # `mod_headers` cannot match based on the content-type, however,
-# # the `Content-Security-Policy` response header should be send
-# # only for HTML documents and not for the other resources.
-#
-# Header unset Content-Security-Policy
-#
-#
-
-# ----------------------------------------------------------------------
-# | File access |
-# ----------------------------------------------------------------------
-
-# Block access to directories without a default document.
-#
-# You should leave the following uncommented, as you shouldn't allow
-# anyone to surf through every directory on your server (which may
-# includes rather private places such as the CMS's directories).
-
-
- Options -Indexes
-
-
-# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-# Block access to all hidden files and directories with the exception of
-# the visible content from within the `/.well-known/` hidden directory.
-#
-# These types of files usually contain user preferences or the preserved
-# state of an utility, and can include rather private places like, for
-# example, the `.git` or `.svn` directories.
-#
-# The `/.well-known/` directory represents the standard (RFC 5785) path
-# prefix for "well-known locations" (e.g.: `/.well-known/manifest.json`,
-# `/.well-known/keybase.txt`), and therefore, access to its visible
-# content should not be blocked.
-#
-# https://www.mnot.net/blog/2010/04/07/well-known
-# https://tools.ietf.org/html/rfc5785
-
-
- RewriteEngine On
- RewriteCond %{REQUEST_URI} "!(^|/)\.well-known/([^./]+./?)+$" [NC]
- RewriteCond %{SCRIPT_FILENAME} -d [OR]
- RewriteCond %{SCRIPT_FILENAME} -f
- RewriteRule "(^|/)\." - [F]
-
-
-# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-# Block access to files that can expose sensitive information.
-#
-# By default, block access to backup and source files that may be
-# left by some text editors and can pose a security risk when anyone
-# has access to them.
-#
-# http://feross.org/cmsploit/
-#
-# (!) Update the `` regular expression from below to
-# include any files that might end up on your production server and
-# can expose sensitive information about your website. These files may
-# include: configuration files, files that contain metadata about the
-# project (e.g.: project dependencies), build scripts, etc..
-
-
-
- # Apache < 2.3
-
- Order allow,deny
- Deny from all
- Satisfy All
-
-
- # Apache ≥ 2.3
-
- Require all denied
-
-
-
-
-# ----------------------------------------------------------------------
-# | HTTP Strict Transport Security (HSTS) |
-# ----------------------------------------------------------------------
-
-# Force client-side SSL redirection.
-#
-# If a user types `example.com` in their browser, even if the server
-# redirects them to the secure version of the website, that still leaves
-# a window of opportunity (the initial HTTP connection) for an attacker
-# to downgrade or redirect the request.
-#
-# The following header ensures that browser will ONLY connect to your
-# server via HTTPS, regardless of what the users type in the browser's
-# address bar.
-#
-# (!) Remove the `includeSubDomains` optional directive if the website's
-# subdomains are not using HTTPS.
-#
-# http://www.html5rocks.com/en/tutorials/security/transport-layer-security/
-# https://tools.ietf.org/html/draft-ietf-websec-strict-transport-sec-14#section-6.1
-# http://blogs.msdn.com/b/ieinternals/archive/2014/08/18/hsts-strict-transport-security-attacks-mitigations-deployment-https.aspx
-
-#
-# Header set Strict-Transport-Security "max-age=16070400; includeSubDomains"
-#
-
-# ----------------------------------------------------------------------
-# | Reducing MIME type security risks |
-# ----------------------------------------------------------------------
-
-# Prevent some browsers from MIME-sniffing the response.
-#
-# This reduces exposure to drive-by download attacks and cross-origin
-# data leaks, and should be left uncommented, especially if the server
-# is serving user-uploaded content or content that could potentially be
-# treated as executable by the browser.
-#
-# http://www.slideshare.net/hasegawayosuke/owasp-hasegawa
-# http://blogs.msdn.com/b/ie/archive/2008/07/02/ie8-security-part-v-comprehensive-protection.aspx
-# http://msdn.microsoft.com/en-us/library/ie/gg622941.aspx
-# https://mimesniff.spec.whatwg.org/
-
-
- Header set X-Content-Type-Options "nosniff"
-
-
-# ----------------------------------------------------------------------
-# | Reflected Cross-Site Scripting (XSS) attacks |
-# ----------------------------------------------------------------------
-
-# (1) Try to re-enable the cross-site scripting (XSS) filter built
-# into most web browsers.
-#
-# The filter is usually enabled by default, but in some cases it
-# may be disabled by the user. However, in Internet Explorer for
-# example, it can be re-enabled just by sending the
-# `X-XSS-Protection` header with the value of `1`.
-#
-# (2) Prevent web browsers from rendering the web page if a potential
-# reflected (a.k.a non-persistent) XSS attack is detected by the
-# filter.
-#
-# By default, if the filter is enabled and browsers detect a
-# reflected XSS attack, they will attempt to block the attack
-# by making the smallest possible modifications to the returned
-# web page.
-#
-# Unfortunately, in some browsers (e.g.: Internet Explorer),
-# this default behavior may allow the XSS filter to be exploited,
-# thereby, it's better to inform browsers to prevent the rendering
-# of the page altogether, instead of attempting to modify it.
-#
-# http://hackademix.net/2009/11/21/ies-xss-filter-creates-xss-vulnerabilities
-#
-# (!) Do not rely on the XSS filter to prevent XSS attacks! Ensure that
-# you are taking all possible measures to prevent XSS attacks, the
-# most obvious being: validating and sanitizing your website's inputs.
-#
-# http://blogs.msdn.com/b/ie/archive/2008/07/02/ie8-security-part-iv-the-xss-filter.aspx
-# http://blogs.msdn.com/b/ieinternals/archive/2011/01/31/controlling-the-internet-explorer-xss-filter-with-the-x-xss-protection-http-header.aspx
-# https://www.owasp.org/index.php/Cross-site_Scripting_%28XSS%29
-
-#
-# # (1) (2)
-# Header set X-XSS-Protection "1; mode=block"
-# # `mod_headers` cannot match based on the content-type, however,
-# # the `X-XSS-Protection` response header should be send only for
-# # HTML documents and not for the other resources.
-#
-# Header unset X-XSS-Protection
-#
-#
-
-# ----------------------------------------------------------------------
-# | Server software information |
-# ----------------------------------------------------------------------
-
-# Prevent Apache from sending in the `Server` response header its
-# exact version number, the description of the generic OS-type or
-# information about its compiled-in modules.
-#
-# (!) The `ServerTokens` directive will only work in the main server
-# configuration file, so don't try to enable it in the `.htaccess` file!
-#
-# https://httpd.apache.org/docs/current/mod/core.html#servertokens
-
-# ServerTokens Prod
-
-
-# ######################################################################
-# # WEB PERFORMANCE #
-# ######################################################################
-
-# ----------------------------------------------------------------------
-# | Compression |
-# ----------------------------------------------------------------------
-
-
-
- # Force compression for mangled `Accept-Encoding` request headers
- # https://developer.yahoo.com/blogs/ydn/pushing-beyond-gzipping-25601.html
-
-
-
- SetEnvIfNoCase ^(Accept-EncodXng|X-cept-Encoding|X{15}|~{15}|-{15})$ ^((gzip|deflate)\s*,?\s*)+|[X~-]{4,13}$ HAVE_Accept-Encoding
- RequestHeader append Accept-Encoding "gzip,deflate" env=HAVE_Accept-Encoding
-
-
-
- # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- # Compress all output labeled with one of the following media types.
- #
- # (!) For Apache versions below version 2.3.7 you don't need to
- # enable `mod_filter` and can remove the ``
- # and `` lines as `AddOutputFilterByType` is still in
- # the core directives.
- #
- # https://httpd.apache.org/docs/current/mod/mod_filter.html#addoutputfilterbytype
-
-
- AddOutputFilterByType DEFLATE "application/atom+xml" \
- "application/javascript" \
- "application/json" \
- "application/ld+json" \
- "application/manifest+json" \
- "application/rdf+xml" \
- "application/rss+xml" \
- "application/schema+json" \
- "application/vnd.geo+json" \
- "application/vnd.ms-fontobject" \
- "application/x-font-ttf" \
- "application/x-javascript" \
- "application/x-web-app-manifest+json" \
- "application/xhtml+xml" \
- "application/xml" \
- "font/eot" \
- "font/opentype" \
- "image/bmp" \
- "image/svg+xml" \
- "image/vnd.microsoft.icon" \
- "image/x-icon" \
- "text/cache-manifest" \
- "text/css" \
- "text/html" \
- "text/javascript" \
- "text/plain" \
- "text/vcard" \
- "text/vnd.rim.location.xloc" \
- "text/vtt" \
- "text/x-component" \
- "text/x-cross-domain-policy" \
- "text/xml"
-
-
-
- # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- # Map the following filename extensions to the specified
- # encoding type in order to make Apache serve the file types
- # with the appropriate `Content-Encoding` response header
- # (do note that this will NOT make Apache compress them!).
- #
- # If these files types would be served without an appropriate
- # `Content-Enable` response header, client applications (e.g.:
- # browsers) wouldn't know that they first need to uncompress
- # the response, and thus, wouldn't be able to understand the
- # content.
- #
- # https://httpd.apache.org/docs/current/mod/mod_mime.html#addencoding
-
-
- AddEncoding gzip svgz
-
-
-
-
-# ----------------------------------------------------------------------
-# | Content transformation |
-# ----------------------------------------------------------------------
-
-# Prevent intermediate caches or proxies (e.g.: such as the ones
-# used by mobile network providers) from modifying the website's
-# content.
-#
-# https://tools.ietf.org/html/rfc2616#section-14.9.5
-#
-# (!) If you are using `mod_pagespeed`, please note that setting
-# the `Cache-Control: no-transform` response header will prevent
-# `PageSpeed` from rewriting `HTML` files, and, if the
-# `ModPagespeedDisableRewriteOnNoTransform` directive isn't set
-# to `off`, also from rewriting other resources.
-#
-# https://developers.google.com/speed/pagespeed/module/configuration#notransform
-
-#
-# Header merge Cache-Control "no-transform"
-#
-
-# ----------------------------------------------------------------------
-# | ETags |
-# ----------------------------------------------------------------------
-
-# Remove `ETags` as resources are sent with far-future expires headers.
-#
-# https://developer.yahoo.com/performance/rules.html#etags
-# https://tools.ietf.org/html/rfc7232#section-2.3
-
-# `FileETag None` doesn't work in all cases.
-
- Header unset ETag
-
-
-FileETag None
-
-# ----------------------------------------------------------------------
-# | Expires headers |
-# ----------------------------------------------------------------------
-
-# Serve resources with far-future expires headers.
-#
-# (!) If you don't control versioning with filename-based
-# cache busting, you should consider lowering the cache times
-# to something like one week.
-#
-# https://httpd.apache.org/docs/current/mod/mod_expires.html
-
-
-
- ExpiresActive on
- ExpiresDefault "access plus 1 month"
-
- # CSS
- ExpiresByType text/css "access plus 1 year"
-
- # Data interchange
- ExpiresByType application/atom+xml "access plus 1 hour"
- ExpiresByType application/rdf+xml "access plus 1 hour"
- ExpiresByType application/rss+xml "access plus 1 hour"
-
- ExpiresByType application/json "access plus 0 seconds"
- ExpiresByType application/ld+json "access plus 0 seconds"
- ExpiresByType application/schema+json "access plus 0 seconds"
- ExpiresByType application/vnd.geo+json "access plus 0 seconds"
- ExpiresByType application/xml "access plus 0 seconds"
- ExpiresByType text/xml "access plus 0 seconds"
-
- # Favicon (cannot be renamed!) and cursor images
- ExpiresByType image/vnd.microsoft.icon "access plus 1 week"
- ExpiresByType image/x-icon "access plus 1 week"
-
- # HTML
- ExpiresByType text/html "access plus 0 seconds"
-
- # JavaScript
- ExpiresByType application/javascript "access plus 1 year"
- ExpiresByType application/x-javascript "access plus 1 year"
- ExpiresByType text/javascript "access plus 1 year"
-
- # Manifest files
- ExpiresByType application/manifest+json "access plus 1 year"
-
- ExpiresByType application/x-web-app-manifest+json "access plus 0 seconds"
- ExpiresByType text/cache-manifest "access plus 0 seconds"
-
- # Media files
- ExpiresByType audio/ogg "access plus 1 month"
- ExpiresByType image/bmp "access plus 1 month"
- ExpiresByType image/gif "access plus 1 month"
- ExpiresByType image/jpeg "access plus 1 month"
- ExpiresByType image/png "access plus 1 month"
- ExpiresByType image/svg+xml "access plus 1 month"
- ExpiresByType video/mp4 "access plus 1 month"
- ExpiresByType video/ogg "access plus 1 month"
- ExpiresByType video/webm "access plus 1 month"
-
- # Web fonts
-
- # Embedded OpenType (EOT)
- ExpiresByType application/vnd.ms-fontobject "access plus 1 month"
- ExpiresByType font/eot "access plus 1 month"
-
- # OpenType
- ExpiresByType font/opentype "access plus 1 month"
-
- # TrueType
- ExpiresByType application/x-font-ttf "access plus 1 month"
-
- # Web Open Font Format (WOFF) 1.0
- ExpiresByType application/font-woff "access plus 1 month"
- ExpiresByType application/x-font-woff "access plus 1 month"
- ExpiresByType font/woff "access plus 1 month"
-
- # Web Open Font Format (WOFF) 2.0
- ExpiresByType application/font-woff2 "access plus 1 month"
-
- # Other
- ExpiresByType text/x-cross-domain-policy "access plus 1 week"
-
-
-
-# ----------------------------------------------------------------------
-# | File concatenation |
-# ----------------------------------------------------------------------
-
-# Allow concatenation from within specific files.
-#
-# e.g.:
-#
-# If you have the following lines in a file called, for
-# example, `main.combined.js`:
-#
-#
-#
-#
-# Apache will replace those lines with the content of the
-# specified files.
-
-#
-#
-# Options +Includes
-# AddOutputFilterByType INCLUDES application/javascript \
-# application/x-javascript \
-# text/javascript
-# SetOutputFilter INCLUDES
-#
-#
-# Options +Includes
-# AddOutputFilterByType INCLUDES text/css
-# SetOutputFilter INCLUDES
-#
-#
-
-# ----------------------------------------------------------------------
-# | Filename-based cache busting |
-# ----------------------------------------------------------------------
-
-# If you're not using a build process to manage your filename version
-# revving, you might want to consider enabling the following directives
-# to route all requests such as `/style.12345.css` to `/style.css`.
-#
-# To understand why this is important and even a better solution than
-# using something like `*.css?v231`, please see:
-# http://www.stevesouders.com/blog/2008/08/23/revving-filenames-dont-use-querystring/
-
-#
-# RewriteEngine On
-# RewriteCond %{REQUEST_FILENAME} !-f
-# RewriteRule ^(.+)\.(\d+)\.(bmp|css|cur|gif|ico|jpe?g|js|png|svgz?|webp)$ $1.$3 [L]
-#
diff --git a/dist/crossdomain.xml b/dist/crossdomain.xml
deleted file mode 100644
index 818b822..0000000
--- a/dist/crossdomain.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/dist/fonts/README b/dist/fonts/README
deleted file mode 100644
index 5e78ddd..0000000
--- a/dist/fonts/README
+++ /dev/null
@@ -1 +0,0 @@
-Add your custom fonts here :)
\ No newline at end of file
diff --git a/dist/humans.txt b/dist/humans.txt
deleted file mode 100644
index 8d2330f..0000000
--- a/dist/humans.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-# humanstxt.org/
-# The humans responsible & technology colophon
-
-# TEAM
-
- -- --
-
-# THANKS
-
-
-
-# TECHNOLOGY COLOPHON
-
- CSS3, HTML5
- Apache Server Configs, jQuery, Modernizr, Normalize.css
diff --git a/dist/index.html b/dist/index.html
deleted file mode 100755
index 7847d09..0000000
--- a/dist/index.html
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
-
-
-
- Website Title
-
-
-
-
-
-
-
-
-
Content
-
-
-
-
-
-
-
diff --git a/dist/robots.txt b/dist/robots.txt
deleted file mode 100644
index d0e5f1b..0000000
--- a/dist/robots.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-# www.robotstxt.org/
-
-# Allow crawling of all content
-User-agent: *
-Disallow:
diff --git a/dist/scripts/app.js b/dist/scripts/app.js
deleted file mode 100644
index 1458c71..0000000
--- a/dist/scripts/app.js
+++ /dev/null
@@ -1 +0,0 @@
-window.Modernizr=function(e,t,n){function r(e){b.cssText=e}function o(e,t){return r(S.join(e+";")+(t||""))}function a(e,t){return typeof e===t}function i(e,t){return!!~(""+e).indexOf(t)}function s(e,t){for(var r in e){var o=e[r];if(!i(o,"-")&&b[o]!==n)return"pfx"==t?o:!0}return!1}function c(e,t,r){for(var o in e){var i=t[e[o]];if(i!==n)return r===!1?e[o]:a(i,"function")?i.bind(r||t):i}return!1}function l(e,t,n){var r=e.charAt(0).toUpperCase()+e.slice(1),o=(e+" "+T.join(r+" ")+r).split(" ");return a(t,"string")||a(t,"undefined")?s(o,t):(o=(e+" "+k.join(r+" ")+r).split(" "),c(o,t,n))}function u(){m.input=function(n){for(var r=0,o=n.length;o>r;r++)$[n[r]]=n[r]in x;return $.list&&($.list=!!t.createElement("datalist")&&!!e.HTMLDataListElement),$}("autocomplete autofocus list placeholder max min multiple pattern required step".split(" ")),m.inputtypes=function(e){for(var r,o,a,i=0,s=e.length;s>i;i++)x.setAttribute("type",o=e[i]),r="text"!==x.type,r&&(x.value=E,x.style.cssText="position:absolute;visibility:hidden;",/^range$/.test(o)&&x.style.WebkitAppearance!==n?(g.appendChild(x),a=t.defaultView,r=a.getComputedStyle&&"textfield"!==a.getComputedStyle(x,null).WebkitAppearance&&0!==x.offsetHeight,g.removeChild(x)):/^(search|tel)$/.test(o)||(r=/^(url|email)$/.test(o)?x.checkValidity&&x.checkValidity()===!1:x.value!=E)),N[e[i]]=!!r;return N}("search tel url email datetime date month week time datetime-local number range color".split(" "))}var d,f,p="2.8.3",m={},h=!0,g=t.documentElement,y="modernizr",v=t.createElement(y),b=v.style,x=t.createElement("input"),E=":)",w={}.toString,S=" -webkit- -moz- -o- -ms- ".split(" "),C="Webkit Moz O ms",T=C.split(" "),k=C.toLowerCase().split(" "),j={svg:"http://www.w3.org/2000/svg"},M={},N={},$={},z=[],P=z.slice,L=function(e,n,r,o){var a,i,s,c,l=t.createElement("div"),u=t.body,d=u||t.createElement("body");if(parseInt(r,10))for(;r--;)s=t.createElement("div"),s.id=o?o[r]:y+(r+1),l.appendChild(s);return a=["",'"].join(""),l.id=y,(u?l:d).innerHTML+=a,d.appendChild(l),u||(d.style.background="",d.style.overflow="hidden",c=g.style.overflow,g.style.overflow="hidden",g.appendChild(d)),i=n(l,e),u?l.parentNode.removeChild(l):(d.parentNode.removeChild(d),g.style.overflow=c),!!i},O=function(t){var n=e.matchMedia||e.msMatchMedia;if(n)return n(t)&&n(t).matches||!1;var r;return L("@media "+t+" { #"+y+" { position: absolute; } }",function(t){r="absolute"==(e.getComputedStyle?getComputedStyle(t,null):t.currentStyle).position}),r},A=function(){function e(e,o){o=o||t.createElement(r[e]||"div"),e="on"+e;var i=e in o;return i||(o.setAttribute||(o=t.createElement("div")),o.setAttribute&&o.removeAttribute&&(o.setAttribute(e,""),i=a(o[e],"function"),a(o[e],"undefined")||(o[e]=n),o.removeAttribute(e))),o=null,i}var r={select:"input",change:"input",submit:"form",reset:"form",error:"img",load:"img",abort:"img"};return e}(),F={}.hasOwnProperty;f=a(F,"undefined")||a(F.call,"undefined")?function(e,t){return t in e&&a(e.constructor.prototype[t],"undefined")}:function(e,t){return F.call(e,t)},Function.prototype.bind||(Function.prototype.bind=function(e){var t=this;if("function"!=typeof t)throw new TypeError;var n=P.call(arguments,1),r=function(){if(this instanceof r){var o=function(){};o.prototype=t.prototype;var a=new o,i=t.apply(a,n.concat(P.call(arguments)));return Object(i)===i?i:a}return t.apply(e,n.concat(P.call(arguments)))};return r}),M.flexbox=function(){return l("flexWrap")},M.canvas=function(){var e=t.createElement("canvas");return!!e.getContext&&!!e.getContext("2d")},M.canvastext=function(){return!!m.canvas&&!!a(t.createElement("canvas").getContext("2d").fillText,"function")},M.webgl=function(){return!!e.WebGLRenderingContext},M.touch=function(){var n;return"ontouchstart"in e||e.DocumentTouch&&t instanceof DocumentTouch?n=!0:L(["@media (",S.join("touch-enabled),("),y,")","{#modernizr{top:9px;position:absolute}}"].join(""),function(e){n=9===e.offsetTop}),n},M.geolocation=function(){return"geolocation"in navigator},M.postmessage=function(){return!!e.postMessage},M.websqldatabase=function(){return!!e.openDatabase},M.indexedDB=function(){return!!l("indexedDB",e)},M.hashchange=function(){return A("hashchange",e)&&(t.documentMode===n||t.documentMode>7)},M.history=function(){return!!e.history&&!!history.pushState},M.draganddrop=function(){var e=t.createElement("div");return"draggable"in e||"ondragstart"in e&&"ondrop"in e},M.websockets=function(){return"WebSocket"in e||"MozWebSocket"in e},M.rgba=function(){return r("background-color:rgba(150,255,150,.5)"),i(b.backgroundColor,"rgba")},M.hsla=function(){return r("background-color:hsla(120,40%,100%,.5)"),i(b.backgroundColor,"rgba")||i(b.backgroundColor,"hsla")},M.multiplebgs=function(){return r("background:url(https://),url(https://),red url(https://)"),/(url\s*\(.*?){3}/.test(b.background)},M.backgroundsize=function(){return l("backgroundSize")},M.borderimage=function(){return l("borderImage")},M.borderradius=function(){return l("borderRadius")},M.boxshadow=function(){return l("boxShadow")},M.textshadow=function(){return""===t.createElement("div").style.textShadow},M.opacity=function(){return o("opacity:.55"),/^0.55$/.test(b.opacity)},M.cssanimations=function(){return l("animationName")},M.csscolumns=function(){return l("columnCount")},M.cssgradients=function(){var e="background-image:",t="gradient(linear,left top,right bottom,from(#9f9),to(white));",n="linear-gradient(left top,#9f9, white);";return r((e+"-webkit- ".split(" ").join(t+e)+S.join(n+e)).slice(0,-e.length)),i(b.backgroundImage,"gradient")},M.cssreflections=function(){return l("boxReflect")},M.csstransforms=function(){return!!l("transform")},M.csstransforms3d=function(){var e=!!l("perspective");return e&&"webkitPerspective"in g.style&&L("@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:3px;}}",function(t,n){e=9===t.offsetLeft&&3===t.offsetHeight}),e},M.csstransitions=function(){return l("transition")},M.fontface=function(){var e;return L('@font-face {font-family:"font";src:url("https://")}',function(n,r){var o=t.getElementById("smodernizr"),a=o.sheet||o.styleSheet,i=a?a.cssRules&&a.cssRules[0]?a.cssRules[0].cssText:a.cssText||"":"";e=/src/i.test(i)&&0===i.indexOf(r.split(" ")[0])}),e},M.generatedcontent=function(){var e;return L(["#",y,"{font:0/0 a}#",y,':after{content:"',E,'";visibility:hidden;font:3px/1 a}'].join(""),function(t){e=t.offsetHeight>=3}),e},M.video=function(){var e=t.createElement("video"),n=!1;try{(n=!!e.canPlayType)&&(n=new Boolean(n),n.ogg=e.canPlayType('video/ogg; codecs="theora"').replace(/^no$/,""),n.h264=e.canPlayType('video/mp4; codecs="avc1.42E01E"').replace(/^no$/,""),n.webm=e.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/,""))}catch(r){}return n},M.audio=function(){var e=t.createElement("audio"),n=!1;try{(n=!!e.canPlayType)&&(n=new Boolean(n),n.ogg=e.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),n.mp3=e.canPlayType("audio/mpeg;").replace(/^no$/,""),n.wav=e.canPlayType('audio/wav; codecs="1"').replace(/^no$/,""),n.m4a=(e.canPlayType("audio/x-m4a;")||e.canPlayType("audio/aac;")).replace(/^no$/,""))}catch(r){}return n},M.localstorage=function(){try{return localStorage.setItem(y,y),localStorage.removeItem(y),!0}catch(e){return!1}},M.sessionstorage=function(){try{return sessionStorage.setItem(y,y),sessionStorage.removeItem(y),!0}catch(e){return!1}},M.webworkers=function(){return!!e.Worker},M.applicationcache=function(){return!!e.applicationCache},M.svg=function(){return!!t.createElementNS&&!!t.createElementNS(j.svg,"svg").createSVGRect},M.inlinesvg=function(){var e=t.createElement("div");return e.innerHTML="",(e.firstChild&&e.firstChild.namespaceURI)==j.svg},M.smil=function(){return!!t.createElementNS&&/SVGAnimate/.test(w.call(t.createElementNS(j.svg,"animate")))},M.svgclippaths=function(){return!!t.createElementNS&&/SVGClipPath/.test(w.call(t.createElementNS(j.svg,"clipPath")))};for(var R in M)f(M,R)&&(d=R.toLowerCase(),m[d]=M[R](),z.push((m[d]?"":"no-")+d));return m.input||u(),m.addTest=function(e,t){if("object"==typeof e)for(var r in e)f(e,r)&&m.addTest(r,e[r]);else{if(e=e.toLowerCase(),m[e]!==n)return m;t="function"==typeof t?t():t,"undefined"!=typeof h&&h&&(g.className+=" "+(t?"":"no-")+e),m[e]=t}return m},r(""),v=x=null,function(e,t){function n(e,t){var n=e.createElement("p"),r=e.getElementsByTagName("head")[0]||e.documentElement;return n.innerHTML="x",r.insertBefore(n.lastChild,r.firstChild)}function r(){var e=v.elements;return"string"==typeof e?e.split(" "):e}function o(e){var t=y[e[h]];return t||(t={},g++,e[h]=g,y[g]=t),t}function a(e,n,r){if(n||(n=t),u)return n.createElement(e);r||(r=o(n));var a;return a=r.cache[e]?r.cache[e].cloneNode():m.test(e)?(r.cache[e]=r.createElem(e)).cloneNode():r.createElem(e),!a.canHaveChildren||p.test(e)||a.tagUrn?a:r.frag.appendChild(a)}function i(e,n){if(e||(e=t),u)return e.createDocumentFragment();n=n||o(e);for(var a=n.frag.cloneNode(),i=0,s=r(),c=s.length;c>i;i++)a.createElement(s[i]);return a}function s(e,t){t.cache||(t.cache={},t.createElem=e.createElement,t.createFrag=e.createDocumentFragment,t.frag=t.createFrag()),e.createElement=function(n){return v.shivMethods?a(n,e,t):t.createElem(n)},e.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+r().join().replace(/[\w\-]+/g,function(e){return t.createElem(e),t.frag.createElement(e),'c("'+e+'")'})+");return n}")(v,t.frag)}function c(e){e||(e=t);var r=o(e);return v.shivCSS&&!l&&!r.hasCSS&&(r.hasCSS=!!n(e,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),u||s(e,r),e}var l,u,d="3.7.0",f=e.html5||{},p=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,m=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,h="_html5shiv",g=0,y={};!function(){try{var e=t.createElement("a");e.innerHTML="",l="hidden"in e,u=1==e.childNodes.length||function(){t.createElement("a");var e=t.createDocumentFragment();return"undefined"==typeof e.cloneNode||"undefined"==typeof e.createDocumentFragment||"undefined"==typeof e.createElement}()}catch(n){l=!0,u=!0}}();var v={elements:f.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output progress section summary template time video",version:d,shivCSS:f.shivCSS!==!1,supportsUnknownElements:u,shivMethods:f.shivMethods!==!1,type:"default",shivDocument:c,createElement:a,createDocumentFragment:i};e.html5=v,c(t)}(this,t),m._version=p,m._prefixes=S,m._domPrefixes=k,m._cssomPrefixes=T,m.mq=O,m.hasEvent=A,m.testProp=function(e){return s([e])},m.testAllProps=l,m.testStyles=L,m.prefixed=function(e,t,n){return t?l(e,t,n):l(e,"pfx")},g.className=g.className.replace(/(^|\s)no-js(\s|$)/,"$1$2")+(h?" js "+z.join(" "):""),m}(this,this.document),function(e,t,n){function r(e){return"[object Function]"==g.call(e)}function o(e){return"string"==typeof e}function a(){}function i(e){return!e||"loaded"==e||"complete"==e||"uninitialized"==e}function s(){var e=y.shift();v=1,e?e.t?m(function(){("c"==e.t?f.injectCss:f.injectJs)(e.s,0,e.a,e.x,e.e,1)},0):(e(),s()):v=0}function c(e,n,r,o,a,c,l){function u(t){if(!p&&i(d.readyState)&&(b.r=p=1,!v&&s(),d.onload=d.onreadystatechange=null,t)){"img"!=e&&m(function(){E.removeChild(d)},50);for(var r in k[n])k[n].hasOwnProperty(r)&&k[n][r].onload()}}var l=l||f.errorTimeout,d=t.createElement(e),p=0,g=0,b={t:r,s:n,e:a,a:c,x:l};1===k[n]&&(g=1,k[n]=[]),"object"==e?d.data=n:(d.src=n,d.type=e),d.width=d.height="0",d.onerror=d.onload=d.onreadystatechange=function(){u.call(this,g)},y.splice(o,0,b),"img"!=e&&(g||2===k[n]?(E.insertBefore(d,x?null:h),m(u,l)):k[n].push(d))}function l(e,t,n,r,a){return v=0,t=t||"j",o(e)?c("c"==t?S:w,e,t,this.i++,n,r,a):(y.splice(this.i++,0,e),1==y.length&&s()),this}function u(){var e=f;return e.loader={load:l,i:0},e}var d,f,p=t.documentElement,m=e.setTimeout,h=t.getElementsByTagName("script")[0],g={}.toString,y=[],v=0,b="MozAppearance"in p.style,x=b&&!!t.createRange().compareNode,E=x?p:h.parentNode,p=e.opera&&"[object Opera]"==g.call(e.opera),p=!!t.attachEvent&&!p,w=b?"object":p?"script":"img",S=p?"script":w,C=Array.isArray||function(e){return"[object Array]"==g.call(e)},T=[],k={},j={timeout:function(e,t){return t.length&&(e.timeout=t[0]),e}};f=function(e){function t(e){var t,n,r,e=e.split("!"),o=T.length,a=e.pop(),i=e.length,a={url:a,origUrl:a,prefixes:e};for(n=0;i>n;n++)r=e[n].split("="),(t=j[r.shift()])&&(a=t(a,r));for(n=0;o>n;n++)a=T[n](a);return a}function i(e,o,a,i,s){var c=t(e),l=c.autoCallback;c.url.split(".").pop().split("?").shift(),c.bypass||(o&&(o=r(o)?o:o[e]||o[i]||o[e.split("/").pop().split("?")[0]]),c.instead?c.instead(e,o,a,i,s):(k[c.url]?c.noexec=!0:k[c.url]=1,a.load(c.url,c.forceCSS||!c.forceJS&&"css"==c.url.split(".").pop().split("?").shift()?"c":n,c.noexec,c.attrs,c.timeout),(r(o)||r(l))&&a.load(function(){u(),o&&o(c.origUrl,s,i),l&&l(c.origUrl,s,i),k[c.url]=2})))}function s(e,t){function n(e,n){if(e){if(o(e))n||(d=function(){var e=[].slice.call(arguments);f.apply(this,e),p()}),i(e,d,t,0,l);else if(Object(e)===e)for(c in s=function(){var t,n=0;for(t in e)e.hasOwnProperty(t)&&n++;return n}(),e)e.hasOwnProperty(c)&&(!n&&!--s&&(r(d)?d=function(){var e=[].slice.call(arguments);f.apply(this,e),p()}:d[c]=function(e){return function(){var t=[].slice.call(arguments);e&&e.apply(this,t),p()}}(f[c])),i(e[c],d,t,c,l))}else!n&&p()}var s,c,l=!!e.test,u=e.load||e.both,d=e.callback||a,f=d,p=e.complete||a;n(l?e.yep:e.nope,!!u),u&&n(u)}var c,l,d=this.yepnope.loader;if(o(e))i(e,0,d,0);else if(C(e))for(c=0;c #mq-test-1 { width: 42px; }',r.insertBefore(a,o),n=42===i.offsetWidth,r.removeChild(a),{matches:n,media:e}}}(e.document)}(this),function(e){"use strict";function t(){E(!0)}var n={};e.respond=n,n.update=function(){};var r=[],o=function(){var t=!1;try{t=new e.XMLHttpRequest}catch(n){t=new e.ActiveXObject("Microsoft.XMLHTTP")}return function(){return t}}(),a=function(e,t){var n=o();n&&(n.open("GET",e,!0),n.onreadystatechange=function(){4!==n.readyState||200!==n.status&&304!==n.status||t(n.responseText)},4!==n.readyState&&n.send(null))},i=function(e){return e.replace(n.regex.minmaxwh,"").match(n.regex.other)};if(n.ajax=a,n.queue=r,n.unsupportedmq=i,n.regex={media:/@media[^\{]+\{([^\{\}]*\{[^\}\{]*\})+/gi,keyframes:/@(?:\-(?:o|moz|webkit)\-)?keyframes[^\{]+\{(?:[^\{\}]*\{[^\}\{]*\})+[^\}]*\}/gi,comments:/\/\*[^*]*\*+([^\/][^*]*\*+)*\//gi,urls:/(url\()['"]?([^\/\)'"][^:\)'"]+)['"]?(\))/g,findStyles:/@media *([^\{]+)\{([\S\s]+?)$/,only:/(only\s+)?([a-zA-Z]+)\s?/,minw:/\(\s*min\-width\s*:\s*(\s*[0-9\.]+)(px|em)\s*\)/,maxw:/\(\s*max\-width\s*:\s*(\s*[0-9\.]+)(px|em)\s*\)/,minmaxwh:/\(\s*m(in|ax)\-(height|width)\s*:\s*(\s*[0-9\.]+)(px|em)\s*\)/gi,other:/\([^\)]*\)/g},n.mediaQueriesSupported=e.matchMedia&&null!==e.matchMedia("only all")&&e.matchMedia("only all").matches,!n.mediaQueriesSupported){var s,c,l,u=e.document,d=u.documentElement,f=[],p=[],m=[],h={},g=30,y=u.getElementsByTagName("head")[0]||d,v=u.getElementsByTagName("base")[0],b=y.getElementsByTagName("link"),x=function(){var e,t=u.createElement("div"),n=u.body,r=d.style.fontSize,o=n&&n.style.fontSize,a=!1;return t.style.cssText="position:absolute;font-size:1em;width:1em",n||(n=a=u.createElement("body"),n.style.background="none"),d.style.fontSize="100%",n.style.fontSize="100%",n.appendChild(t),a&&d.insertBefore(n,d.firstChild),e=t.offsetWidth,a?d.removeChild(n):n.removeChild(t),d.style.fontSize=r,o&&(n.style.fontSize=o),e=l=parseFloat(e)},E=function(t){var n="clientWidth",r=d[n],o="CSS1Compat"===u.compatMode&&r||u.body[n]||r,a={},i=b[b.length-1],h=(new Date).getTime();if(t&&s&&g>h-s)return e.clearTimeout(c),void(c=e.setTimeout(E,g));s=h;for(var v in f)if(f.hasOwnProperty(v)){var w=f[v],S=w.minw,C=w.maxw,T=null===S,k=null===C,j="em";S&&(S=parseFloat(S)*(S.indexOf(j)>-1?l||x():1)),C&&(C=parseFloat(C)*(C.indexOf(j)>-1?l||x():1)),w.hasquery&&(T&&k||!(T||o>=S)||!(k||C>=o))||(a[w.media]||(a[w.media]=[]),a[w.media].push(p[w.rules]))}for(var M in m)m.hasOwnProperty(M)&&m[M]&&m[M].parentNode===y&&y.removeChild(m[M]);m.length=0;for(var N in a)if(a.hasOwnProperty(N)){var $=u.createElement("style"),z=a[N].join("\n");$.type="text/css",$.media=N,y.insertBefore($,i.nextSibling),$.styleSheet?$.styleSheet.cssText=z:$.appendChild(u.createTextNode(z)),m.push($)}},w=function(e,t,r){var o=e.replace(n.regex.comments,"").replace(n.regex.keyframes,"").match(n.regex.media),a=o&&o.length||0;t=t.substring(0,t.lastIndexOf("/"));var s=function(e){return e.replace(n.regex.urls,"$1"+t+"$2$3")},c=!a&&r;t.length&&(t+="/"),c&&(a=1);for(var l=0;a>l;l++){var u,d,m,h;c?(u=r,p.push(s(e))):(u=o[l].match(n.regex.findStyles)&&RegExp.$1,p.push(RegExp.$2&&s(RegExp.$2))),m=u.split(","),h=m.length;for(var g=0;h>g;g++)d=m[g],i(d)||f.push({media:d.split("(")[0].match(n.regex.only)&&RegExp.$2||"all",rules:p.length-1,hasquery:d.indexOf("(")>-1,minw:d.match(n.regex.minw)&&parseFloat(RegExp.$1)+(RegExp.$2||""),maxw:d.match(n.regex.maxw)&&parseFloat(RegExp.$1)+(RegExp.$2||"")})}E()},S=function(){if(r.length){var t=r.shift();a(t.href,function(n){w(n,t.href,t.media),h[t.href]=!0,e.setTimeout(function(){S()},0)})}},C=function(){for(var t=0;t
-
-
\ No newline at end of file
diff --git a/dist/styles/styles.css b/dist/styles/styles.css
deleted file mode 100644
index 3128fa1..0000000
--- a/dist/styles/styles.css
+++ /dev/null
@@ -1 +0,0 @@
-html{margin:0;padding:0;border:0}a,abbr,acronym,address,article,aside,blockquote,body,caption,code,dd,del,dfn,dialog,div,dl,dt,em,fieldset,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,iframe,img,label,legend,li,nav,object,ol,p,pre,q,section,span,table,tbody,td,tfoot,th,thead,tr,ul{margin:0;padding:0;border:0;font-weight:inherit;font-style:inherit;font-size:100%;font-family:inherit;vertical-align:baseline}article,aside,dialog,figure,footer,header,hgroup,nav,section{display:block}body{line-height:1.5;background:#fff}table{border-collapse:separate;border-spacing:0}caption,td,th{text-align:left;font-weight:400;float:none!important}table,td,th{vertical-align:middle}blockquote after,blockquote before,q after,q before{content:''}a img{border:none}b,i{display:none}
\ No newline at end of file
diff --git a/gulpfile.babel.js b/gulpfile.babel.js
new file mode 100644
index 0000000..28be86b
--- /dev/null
+++ b/gulpfile.babel.js
@@ -0,0 +1,16 @@
+/*
+ * Harvest : Front-End boilerplate
+ * Author: Ryan Benson
+ */
+
+// Core libraries
+import gulp from 'gulp';
+
+// Tasks
+import configure from './harvest-core/tasks/configure';
+
+/*
+ * Task: configure
+ * Allows you to configure the entire boilerplate and workflow
+ */
+gulp.task('configure', configure());
diff --git a/gulpfile.js b/gulpfile.js
deleted file mode 100644
index a0663fe..0000000
--- a/gulpfile.js
+++ /dev/null
@@ -1,212 +0,0 @@
-//initialize all of our variables
-var app, base, concat, directory, gulp, gutil, hostname, path, refresh, sass, uglify, imagemin, minifyCSS, del, browserSync, autoprefixer, gulpSequence, shell, sourceMaps, plumber;
-
-var autoPrefixBrowserList = ['last 2 version', 'safari 5', 'ie 8', 'ie 9', 'opera 12.1', 'ios 6', 'android 4'];
-
-//load all of our dependencies
-//add more here if you want to include more libraries
-gulp = require('gulp');
-gutil = require('gulp-util');
-concat = require('gulp-concat');
-uglify = require('gulp-uglify');
-sass = require('gulp-sass');
-sourceMaps = require('gulp-sourcemaps');
-imagemin = require('gulp-imagemin');
-minifyCSS = require('gulp-minify-css');
-browserSync = require('browser-sync');
-autoprefixer = require('gulp-autoprefixer');
-gulpSequence = require('gulp-sequence').use(gulp);
-shell = require('gulp-shell');
-plumber = require('gulp-plumber');
-
-gulp.task('browserSync', function() {
- browserSync({
- server: {
- baseDir: "app/"
- },
- options: {
- reloadDelay: 250
- },
- notify: false
- });
-});
-
-
-//compressing images & handle SVG files
-gulp.task('images', function(tmp) {
- gulp.src(['app/images/*.jpg', 'app/images/*.png'])
- //prevent pipe breaking caused by errors from gulp plugins
- .pipe(plumber())
- .pipe(imagemin({ optimizationLevel: 5, progressive: true, interlaced: true }))
- .pipe(gulp.dest('app/images'));
-});
-
-//compressing images & handle SVG files
-gulp.task('images-deploy', function() {
- gulp.src(['app/images/**/*', '!app/images/README'])
- //prevent pipe breaking caused by errors from gulp plugins
- .pipe(plumber())
- .pipe(gulp.dest('dist/images'));
-});
-
-//compiling our Javascripts
-gulp.task('scripts', function() {
- //this is where our dev JS scripts are
- return gulp.src(['app/scripts/src/_includes/**/*.js', 'app/scripts/src/**/*.js'])
- //prevent pipe breaking caused by errors from gulp plugins
- .pipe(plumber())
- //this is the filename of the compressed version of our JS
- .pipe(concat('app.js'))
- //catch errors
- .on('error', gutil.log)
- //compress :D
- .pipe(uglify())
- //where we will store our finalized, compressed script
- .pipe(gulp.dest('app/scripts'))
- //notify browserSync to refresh
- .pipe(browserSync.reload({stream: true}));
-});
-
-//compiling our Javascripts for deployment
-gulp.task('scripts-deploy', function() {
- //this is where our dev JS scripts are
- return gulp.src(['app/scripts/src/_includes/**/*.js', 'app/scripts/src/**/*.js'])
- //prevent pipe breaking caused by errors from gulp plugins
- .pipe(plumber())
- //this is the filename of the compressed version of our JS
- .pipe(concat('app.js'))
- //compress :D
- .pipe(uglify())
- //where we will store our finalized, compressed script
- .pipe(gulp.dest('dist/scripts'));
-});
-
-//compiling our SCSS files
-gulp.task('styles', function() {
- //the initializer / master SCSS file, which will just be a file that imports everything
- return gulp.src('app/styles/scss/init.scss')
- //prevent pipe breaking caused by errors from gulp plugins
- .pipe(plumber({
- errorHandler: function (err) {
- console.log(err);
- this.emit('end');
- }
- }))
- //get sourceMaps ready
- .pipe(sourceMaps.init())
- //include SCSS and list every "include" folder
- .pipe(sass({
- errLogToConsole: true,
- includePaths: [
- 'app/styles/scss/'
- ]
- }))
- .pipe(autoprefixer({
- browsers: autoPrefixBrowserList,
- cascade: true
- }))
- //catch errors
- .on('error', gutil.log)
- //the final filename of our combined css file
- .pipe(concat('styles.css'))
- //get our sources via sourceMaps
- .pipe(sourceMaps.write())
- //where to save our final, compressed css file
- .pipe(gulp.dest('app/styles'))
- //notify browserSync to refresh
- .pipe(browserSync.reload({stream: true}));
-});
-
-//compiling our SCSS files for deployment
-gulp.task('styles-deploy', function() {
- //the initializer / master SCSS file, which will just be a file that imports everything
- return gulp.src('app/styles/scss/init.scss')
- .pipe(plumber())
- //include SCSS includes folder
- .pipe(sass({
- includePaths: [
- 'app/styles/scss',
- ]
- }))
- .pipe(autoprefixer({
- browsers: autoPrefixBrowserList,
- cascade: true
- }))
- //the final filename of our combined css file
- .pipe(concat('styles.css'))
- .pipe(minifyCSS())
- //where to save our final, compressed css file
- .pipe(gulp.dest('dist/styles'));
-});
-
-//basically just keeping an eye on all HTML files
-gulp.task('html', function() {
- //watch any and all HTML files and refresh when something changes
- return gulp.src('app/*.html')
- .pipe(plumber())
- .pipe(browserSync.reload({stream: true}))
- //catch errors
- .on('error', gutil.log);
-});
-
-//migrating over all HTML files for deployment
-gulp.task('html-deploy', function() {
- //grab everything, which should include htaccess, robots, etc
- gulp.src('app/*')
- //prevent pipe breaking caused by errors from gulp plugins
- .pipe(plumber())
- .pipe(gulp.dest('dist'));
-
- //grab any hidden files too
- gulp.src('app/.*')
- //prevent pipe breaking caused by errors from gulp plugins
- .pipe(plumber())
- .pipe(gulp.dest('dist'));
-
- gulp.src('app/fonts/**/*')
- //prevent pipe breaking caused by errors from gulp plugins
- .pipe(plumber())
- .pipe(gulp.dest('dist/fonts'));
-
- //grab all of the styles
- gulp.src(['app/styles/*.css', '!app/styles/styles.css'])
- //prevent pipe breaking caused by errors from gulp plugins
- .pipe(plumber())
- .pipe(gulp.dest('dist/styles'));
-});
-
-//cleans our dist directory in case things got deleted
-gulp.task('clean', function() {
- return shell.task([
- 'rm -rf dist'
- ]);
-});
-
-//create folders using shell
-gulp.task('scaffold', function() {
- return shell.task([
- 'mkdir dist',
- 'mkdir dist/fonts',
- 'mkdir dist/images',
- 'mkdir dist/scripts',
- 'mkdir dist/styles'
- ]
- );
-});
-
-//this is our master task when you run `gulp` in CLI / Terminal
-//this is the main watcher to use when in active development
-// this will:
-// startup the web server,
-// start up browserSync
-// compress all scripts and SCSS files
-gulp.task('default', ['browserSync', 'scripts', 'styles'], function() {
- //a list of watchers, so it will watch all of the following files waiting for changes
- gulp.watch('app/scripts/src/**', ['scripts']);
- gulp.watch('app/styles/scss/**', ['styles']);
- gulp.watch('app/images/**', ['images']);
- gulp.watch('app/*.html', ['html']);
-});
-
-//this is our deployment task, it will set everything for deployment-ready files
-gulp.task('deploy', gulpSequence('clean', 'scaffold', ['scripts-deploy', 'styles-deploy', 'images-deploy'], 'html-deploy'));
diff --git a/harvest-core/config/config.js b/harvest-core/config/config.js
new file mode 100644
index 0000000..24b44b9
--- /dev/null
+++ b/harvest-core/config/config.js
@@ -0,0 +1,19 @@
+/*
+ * Config
+ * The base Harvest configurations for files, deps, etc
+ */
+
+export default {
+ files: {
+ harvestConf: 'harvest.json',
+ template: './harvest-core/template'
+ },
+ baseDevDependencies: {
+ "gulp": "^3.9.0",
+ "gulp-prompt": "^0.1.2",
+ "babel-core": "^6.4.5",
+ "babel-preset-es2015": "^6.3.13",
+ "fs.extra": "^1.3.2",
+ "async": "^1.5.2"
+ }
+}
diff --git a/harvest-core/config/prompts.js b/harvest-core/config/prompts.js
new file mode 100644
index 0000000..0ebbc09
--- /dev/null
+++ b/harvest-core/config/prompts.js
@@ -0,0 +1,83 @@
+/*
+ * Prompts
+ * Configuration of the CLI prompts for the configuration system
+ */
+
+export default [
+ {
+ type: 'input',
+ name: 'name',
+ message: 'What is the name of the project?',
+ default: 'Harvest'
+ },
+ {
+ type: 'input',
+ name: 'version',
+ message: 'What is the version number?',
+ default: '1.0.0'
+ },
+ {
+ type: 'input',
+ name: 'description',
+ message: 'Write a brief description about the project',
+ default: ''
+ },
+ {
+ type: 'input',
+ name: 'main',
+ message: 'What is the main script?',
+ default: 'index.js'
+ },
+ {
+ type: 'input',
+ name: 'author',
+ message: 'Who is the author?',
+ default: ''
+ },
+ {
+ type: 'input',
+ name: 'license',
+ message: 'What is the license?',
+ default: 'ISC'
+ },
+ {
+ type: 'list', //checkbox for multi
+ name: 'css',
+ message: 'What CSS Pre-processor do you want to use?',
+ choices: ['None', 'SCSS', 'LESS', 'Stylus'],
+ default: 'SCSS'
+ },
+ {
+ type: 'list',
+ name: 'js',
+ message: 'What JS manager do you want to use?',
+ choices: ['Browserify', 'Webpack', 'JS PM'],
+ default: 'None'
+ },
+ {
+ type: 'list',
+ name: 'es2015',
+ message: 'Do you want to use ES2015?',
+ choices: ['Yes', 'No'],
+ default: 'Yes'
+ },
+ {
+ type: 'input',
+ name: 'src',
+ message: 'What do you want to name your development folder?',
+ default: 'src'
+ },
+ {
+ type: 'input',
+ name: 'dist',
+ message: 'What do you want to name your distribution folder?',
+ default: 'dist'
+ },
+ {
+ type: 'list',
+ name: 'sudo',
+ message: 'Do you need to install npm package using sudo?',
+ choices: ['No', 'Yes'],
+ default: 'No'
+ }
+];
diff --git a/harvest-core/tasks/configure.js b/harvest-core/tasks/configure.js
new file mode 100644
index 0000000..5ed7b50
--- /dev/null
+++ b/harvest-core/tasks/configure.js
@@ -0,0 +1,37 @@
+/*
+ * Harvest : Front-End boilerplate
+ * Author: Ryan Benson
+ */
+
+// Core libraries
+import gulp from 'gulp';
+import prompt from 'gulp-prompt';
+import async from 'async';
+import prompts from '../config/prompts';
+
+// Sub tasks
+import updatePackage from './configure/updatePackage';
+import writeCoreConfig from './configure/writeCoreConfig';
+import scaffold from './configure/scaffold';
+
+/*
+ * default
+ * Public method that updates the NPM package and runs CLI tasks
+ * @params: nil
+ */
+export default function() {
+ gulp.src('package.json')
+ .pipe(prompt.prompt(
+ prompts,
+ (config) => {
+ async.parallel([
+ async.apply(updatePackage, config),
+ async.apply(writeCoreConfig, config),
+ async.apply(scaffold, config)
+ ],
+ (err, results) => {
+ console.log('DONE!');
+ });
+ }
+ ));
+};
diff --git a/harvest-core/tasks/configure/scaffold.js b/harvest-core/tasks/configure/scaffold.js
new file mode 100644
index 0000000..11338db
--- /dev/null
+++ b/harvest-core/tasks/configure/scaffold.js
@@ -0,0 +1,73 @@
+/*
+ * Task: scaffold
+ * Creates the directories and moves our boilerplate template over to source dir
+ */
+
+// Core libraries
+import fs from 'fs.extra'; // will include native FS and extras
+import async from 'async';
+import coreConfig from '../../config/config';
+
+/*
+ * isDir - checks to see if a given path is a directory or not
+ * @params {string} path - path to check
+ * @params {function} cb - callback to run when done
+ */
+const isDir = (path, cb) => {
+ fs.stat(path, (err, stats) => {
+ if(err) return cb(err, null);
+ return cb(err, stats.isDirectory());
+ })
+};
+
+/*
+ * mkdir - creates a directory
+ * @params {string} path - path to make
+ * @params {function} cb - callback to run when done
+ */
+const mkdir = (path, cb) => {
+ fs.mkdir(path, (err) => cb(err));
+};
+
+/*
+ * readOrMakeDir - checks to see if a directory exists before trying to make it
+ * @params {string} path - path to check and/or make
+ * @params {function} cb - callback to run when done
+ */
+const readOrMakeDir = (path, cb) => {
+ isDir(path, (err, results) => {
+ if(err && err.code === 'ENOENT' && !results) return mkdir(path, (err) => cb(err));
+ console.log(`Could not create ${path}, make sure that this doesn't exist`);
+ cb(null);
+ });
+};
+
+/*
+ * copyTemplate - moves the template boilerplate to the source directory
+ * @params {string} dest - where to copy to
+ * @params {function} cb - callback to run when done
+ */
+const copyTemplate = (dest, cb) => {
+ fs.copyRecursive(coreConfig.files.template, dest, (err) => cb(err));
+};
+
+/*
+ * default
+ * Public method that updates the NPM package and runs CLI tasks
+ * @params: config (object) - config from the CLI prompts
+ * @params: cb (function) - callback for async
+ */
+export default function(config, cb) {
+ async.parallel([
+ (cb) => {
+ copyTemplate(config.src, (err) => cb(err));
+ },
+ (cb) => {
+ readOrMakeDir(config.dist, (err) => cb(err));
+ }
+ ], (err, results) => {
+ console.log('Finished with the directories');
+ return cb(err, results);
+ });
+
+};
diff --git a/harvest-core/tasks/configure/updatePackage.js b/harvest-core/tasks/configure/updatePackage.js
new file mode 100644
index 0000000..225511e
--- /dev/null
+++ b/harvest-core/tasks/configure/updatePackage.js
@@ -0,0 +1,58 @@
+/*
+ * Task: updatePackage
+ * Updates the package.json file and runs NPM taks (install and cleanup)
+ */
+
+// Core libraries
+import async from 'async';
+import fs from 'fs';
+import coreConfig from '../../config/config';
+import childProcess from 'child_process';
+
+// We need the exec to process the CLI tasks for NPM
+const exec = childProcess.exec;
+
+const addLibs = (npmDevDep, config) => {
+ if(config.css === 'SCSS') npmDevDep['gulp-sass'] = '^2.2.0';
+ if(config.css === 'LESS') npmDevDep['gulp-sass'] = '^3.0.5';
+ if(config.css === 'Stylus') npmDevDep['gulp-sass'] = '^2.3.0';
+ if(config.js === 'Browserify') npmDevDep['browserify'] = '^13.0.0';
+ if(config.js === 'Browserify') npmDevDep['vinyl-source-stream'] = '^1.1.0';
+ if(config.js === 'Webpack') npmDevDep['gulp-webpack'] = '^1.5.0';
+ if(config.js === 'JS PM') npmDevDep['gulp-jspm'] = '^0.5.6';
+ return npmDevDep;
+};
+
+/*
+ * default
+ * Public method that updates the NPM package and runs CLI tasks
+ * @params: config (object) - config from the CLI prompts
+ * @params: cb (function) - callback for async
+ */
+export default function(config, cb) {
+ config.devDependencies = coreConfig.baseDevDependencies;
+
+ config.devDependencies = addLibs(config.devDependencies, config);
+
+ const {name, version, description, main, author, license, devDependencies} = config;
+ const packageJsonData = {name, version, description, main, author, license, devDependencies};
+
+ async.series([
+ (cb) => {
+ fs.writeFile('package.json', JSON.stringify(packageJsonData, null, 2), (err) => {
+ cb(err, true);
+ });
+ },
+ (cb) => {
+ let sudo = '';
+ if(config.sudo === 'Yes') sudo = 'sudo ';
+ exec(sudo + 'npm install; npm prune;', (err, stdout, stderr) => {
+ if(stdout) console.log(stdout);
+ if(stderr) console.log(stderr);
+ cb(err, true);
+ });
+ }
+ ], (err, results) => {
+ cb(err, results);
+ });
+};
diff --git a/harvest-core/tasks/configure/writeCoreConfig.js b/harvest-core/tasks/configure/writeCoreConfig.js
new file mode 100644
index 0000000..8f1432c
--- /dev/null
+++ b/harvest-core/tasks/configure/writeCoreConfig.js
@@ -0,0 +1,20 @@
+/*
+ * Task: writeCoreConfig
+ * Writes our Harvest configuration for later use
+ */
+
+// Core libraries
+import fs from 'fs';
+import coreConfig from '../../config/config';
+
+/*
+ * default
+ * Public method writes our Harvest config
+ * @params: config (object) - config from the CLI prompts
+ * @params: cb (function) - callback for async
+ */
+export default function(config, cb) {
+ fs.writeFile(coreConfig.files.harvestConf, JSON.stringify(config, null, 2), (err) => {
+ cb(err, true);
+ });
+};
diff --git a/app/styles/ie8.css b/harvest-core/template/fonts/.gitkeep
similarity index 100%
rename from app/styles/ie8.css
rename to harvest-core/template/fonts/.gitkeep
diff --git a/app/styles/ie9.css b/harvest-core/template/images/.gitkeep
similarity index 100%
rename from app/styles/ie9.css
rename to harvest-core/template/images/.gitkeep
diff --git a/harvest-core/template/index.html b/harvest-core/template/index.html
new file mode 100644
index 0000000..b580baf
--- /dev/null
+++ b/harvest-core/template/index.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+ Website Title
+
+
+
+
+
+
+
+
Content
+
+
+
+
+
+
+
diff --git a/app/styles/scss/layout/_main.scss b/harvest-core/template/scripts/app.js
similarity index 100%
rename from app/styles/scss/layout/_main.scss
rename to harvest-core/template/scripts/app.js
diff --git a/dist/images/README b/harvest-core/template/scripts/src/.gitkeep
similarity index 100%
rename from dist/images/README
rename to harvest-core/template/scripts/src/.gitkeep
diff --git a/dist/styles/ie8.css b/harvest-core/template/scripts/vendors/.gitkeep
similarity index 100%
rename from dist/styles/ie8.css
rename to harvest-core/template/scripts/vendors/.gitkeep
diff --git a/dist/styles/ie9.css b/harvest-core/template/styles/scss/base/_reset.scss
similarity index 100%
rename from dist/styles/ie9.css
rename to harvest-core/template/styles/scss/base/_reset.scss
diff --git a/harvest-core/template/styles/scss/base/_typography.scss b/harvest-core/template/styles/scss/base/_typography.scss
new file mode 100644
index 0000000..e69de29
diff --git a/harvest-core/template/styles/scss/components/_buttons.scss b/harvest-core/template/styles/scss/components/_buttons.scss
new file mode 100644
index 0000000..e69de29
diff --git a/harvest-core/template/styles/scss/components/_navigation.scss b/harvest-core/template/styles/scss/components/_navigation.scss
new file mode 100644
index 0000000..e69de29
diff --git a/harvest-core/template/styles/scss/helpers/_functions.scss b/harvest-core/template/styles/scss/helpers/_functions.scss
new file mode 100644
index 0000000..e69de29
diff --git a/harvest-core/template/styles/scss/helpers/_mixins.scss b/harvest-core/template/styles/scss/helpers/_mixins.scss
new file mode 100644
index 0000000..e69de29
diff --git a/harvest-core/template/styles/scss/helpers/_variables.scss b/harvest-core/template/styles/scss/helpers/_variables.scss
new file mode 100644
index 0000000..e69de29
diff --git a/harvest-core/template/styles/scss/layout/_footer.scss b/harvest-core/template/styles/scss/layout/_footer.scss
new file mode 100644
index 0000000..e69de29
diff --git a/harvest-core/template/styles/scss/layout/_header.scss b/harvest-core/template/styles/scss/layout/_header.scss
new file mode 100644
index 0000000..e69de29
diff --git a/harvest-core/template/styles/scss/main.scss b/harvest-core/template/styles/scss/main.scss
new file mode 100644
index 0000000..e867bf6
--- /dev/null
+++ b/harvest-core/template/styles/scss/main.scss
@@ -0,0 +1,25 @@
+// Helpers
+@import 'helpers/_variables';
+@import 'helpers/_functions';
+@import 'helpers/_mixins';
+
+// Base
+@import 'base/_reset';
+@import 'base/_typography';
+
+// Vendors
+// @import 'vendors/...'
+
+// Themes
+@import 'themes/_theme';
+
+// Layout
+@import 'layout/_header';
+@import 'layout/_footer';
+
+// Components
+@import 'components/_navigation';
+@import 'components/_buttons';
+
+// Pages
+@import 'pages/_home';
diff --git a/harvest-core/template/styles/scss/pages/_home.scss b/harvest-core/template/styles/scss/pages/_home.scss
new file mode 100644
index 0000000..e69de29
diff --git a/harvest-core/template/styles/scss/styles.css b/harvest-core/template/styles/scss/styles.css
new file mode 100644
index 0000000..e69de29
diff --git a/harvest-core/template/styles/scss/themes/_theme.scss b/harvest-core/template/styles/scss/themes/_theme.scss
new file mode 100644
index 0000000..e69de29
diff --git a/harvest-core/template/styles/scss/vendors/.gitkeep b/harvest-core/template/styles/scss/vendors/.gitkeep
new file mode 100644
index 0000000..e69de29
diff --git a/package.json b/package.json
index 21e4026..524206a 100644
--- a/package.json
+++ b/package.json
@@ -1,21 +1,16 @@
{
- "name": "YourProject",
- "version": "0.0.1",
- "description": "Description of your project",
- "dependencies": {},
+ "name": "Harvest",
+ "version": "1.0.0",
+ "description": "",
+ "main": "index.js",
+ "author": "",
+ "license": "ISC",
"devDependencies": {
- "browser-sync": "^2.9.10",
+ "async": "^1.5.2",
+ "babel-core": "^6.4.5",
+ "babel-preset-es2015": "^6.3.13",
+ "fs.extra": "^1.3.2",
"gulp": "^3.9.0",
- "gulp-autoprefixer": "^3.0.2",
- "gulp-concat": "^2.6.0",
- "gulp-imagemin": "^2.3.0",
- "gulp-minify-css": "^1.2.1",
- "gulp-sass": "^2.0.4",
- "gulp-sequence": "^0.4.1",
- "gulp-shell": "^0.5.0",
- "gulp-sourcemaps": "^1.6.0",
- "gulp-uglify": "^1.4.1",
- "gulp-util": "^3.0.6",
- "gulp-plumber": "^1.0.1"
+ "gulp-prompt": "^0.1.2"
}
}