gitextract_acp9dswb/ ├── .babelrc ├── .bowerrc ├── .editorconfig ├── .eslintignore ├── .eslintrc ├── .gitattributes ├── .github/ │ ├── ISSUE_TEMPLATE.md │ └── PULL_REQUEST_TEMPLATE.md ├── .gitignore ├── .jshintrc ├── .node-inspectorrc ├── .travis.yml ├── CONTRIBUTING.md ├── LICENSE ├── LICENSE-freeCodeCamp-Curriculum.md ├── LICENSE-freeCodeCamp-Translation.md ├── README.md ├── bower.json ├── client/ │ ├── README.md │ ├── commonFramework/ │ │ ├── add-loop-protect.js │ │ ├── bindings.js │ │ ├── code-storage.js │ │ ├── code-uri.js │ │ ├── create-editor.js │ │ ├── detect-unsafe-code-stream.js │ │ ├── display-test-results.js │ │ ├── end.js │ │ ├── execute-challenge-stream.js │ │ ├── get-iframe.js │ │ ├── init.js │ │ ├── output-display.js │ │ ├── phone-scroll-lock.js │ │ ├── report-issue.js │ │ ├── run-tests-stream.js │ │ ├── show-completion.js │ │ ├── step-challenge.js │ │ └── update-preview.js │ ├── es6-shims.js │ ├── iFrameScripts.js │ ├── index.js │ ├── less/ │ │ ├── challenge.less │ │ ├── chat.less │ │ ├── jobs.less │ │ ├── lib/ │ │ │ ├── animate.min.less │ │ │ ├── bootstrap/ │ │ │ │ ├── alerts.less │ │ │ │ ├── badges.less │ │ │ │ ├── bootstrap.less │ │ │ │ ├── breadcrumbs.less │ │ │ │ ├── button-groups.less │ │ │ │ ├── buttons.less │ │ │ │ ├── carousel.less │ │ │ │ ├── close.less │ │ │ │ ├── code.less │ │ │ │ ├── component-animations.less │ │ │ │ ├── dropdowns.less │ │ │ │ ├── forms.less │ │ │ │ ├── glyphicons.less │ │ │ │ ├── grid.less │ │ │ │ ├── input-groups.less │ │ │ │ ├── jumbotron.less │ │ │ │ ├── labels.less │ │ │ │ ├── list-group.less │ │ │ │ ├── media.less │ │ │ │ ├── mixins/ │ │ │ │ │ ├── alerts.less │ │ │ │ │ ├── background-variant.less │ │ │ │ │ ├── border-radius.less │ │ │ │ │ ├── buttons.less │ │ │ │ │ ├── center-block.less │ │ │ │ │ ├── clearfix.less │ │ │ │ │ ├── forms.less │ │ │ │ │ ├── gradients.less │ │ │ │ │ ├── grid-framework.less │ │ │ │ │ ├── grid.less │ │ │ │ │ ├── hide-text.less │ │ │ │ │ ├── image.less │ │ │ │ │ ├── labels.less │ │ │ │ │ ├── list-group.less │ │ │ │ │ ├── nav-divider.less │ │ │ │ │ ├── nav-vertical-align.less │ │ │ │ │ ├── opacity.less │ │ │ │ │ ├── pagination.less │ │ │ │ │ ├── panels.less │ │ │ │ │ ├── progress-bar.less │ │ │ │ │ ├── reset-filter.less │ │ │ │ │ ├── resize.less │ │ │ │ │ ├── responsive-visibility.less │ │ │ │ │ ├── size.less │ │ │ │ │ ├── tab-focus.less │ │ │ │ │ ├── table-row.less │ │ │ │ │ ├── text-emphasis.less │ │ │ │ │ ├── text-overflow.less │ │ │ │ │ └── vendor-prefixes.less │ │ │ │ ├── mixins.less │ │ │ │ ├── modals.less │ │ │ │ ├── navbar.less │ │ │ │ ├── navs.less │ │ │ │ ├── normalize.less │ │ │ │ ├── pager.less │ │ │ │ ├── pagination.less │ │ │ │ ├── panels.less │ │ │ │ ├── popovers.less │ │ │ │ ├── print.less │ │ │ │ ├── progress-bars.less │ │ │ │ ├── responsive-embed.less │ │ │ │ ├── responsive-utilities.less │ │ │ │ ├── scaffolding.less │ │ │ │ ├── tables.less │ │ │ │ ├── theme.less │ │ │ │ ├── thumbnails.less │ │ │ │ ├── tooltip.less │ │ │ │ ├── type.less │ │ │ │ ├── utilities.less │ │ │ │ ├── variables.less │ │ │ │ └── wells.less │ │ │ ├── bootstrap-social/ │ │ │ │ └── bootstrap-social.less │ │ │ ├── font-awesome-4.3.0/ │ │ │ │ ├── css/ │ │ │ │ │ └── font-awesome.css │ │ │ │ ├── fonts/ │ │ │ │ │ └── FontAwesome.otf │ │ │ │ ├── less/ │ │ │ │ │ ├── animated.less │ │ │ │ │ ├── bordered-pulled.less │ │ │ │ │ ├── core.less │ │ │ │ │ ├── fixed-width.less │ │ │ │ │ ├── font-awesome.less │ │ │ │ │ ├── icons.less │ │ │ │ │ ├── larger.less │ │ │ │ │ ├── list.less │ │ │ │ │ ├── mixins.less │ │ │ │ │ ├── path.less │ │ │ │ │ ├── rotated-flipped.less │ │ │ │ │ ├── stacked.less │ │ │ │ │ └── variables.less │ │ │ │ └── scss/ │ │ │ │ ├── _animated.scss │ │ │ │ ├── _bordered-pulled.scss │ │ │ │ ├── _core.scss │ │ │ │ ├── _fixed-width.scss │ │ │ │ ├── _icons.scss │ │ │ │ ├── _larger.scss │ │ │ │ ├── _list.scss │ │ │ │ ├── _mixins.scss │ │ │ │ ├── _path.scss │ │ │ │ ├── _rotated-flipped.scss │ │ │ │ ├── _stacked.scss │ │ │ │ ├── _variables.scss │ │ │ │ └── font-awesome.scss │ │ │ └── ionicons/ │ │ │ ├── _ionicons-animation.less │ │ │ ├── _ionicons-font.less │ │ │ ├── _ionicons-icons.less │ │ │ ├── _ionicons-variables.less │ │ │ └── ionicons.less │ │ ├── main.less │ │ ├── map.less │ │ ├── signin.less │ │ ├── toastr.less │ │ └── wiki.less │ ├── main.js │ ├── plugin.js │ └── sagas/ │ ├── README.md │ ├── err-saga.js │ ├── hard-go-to-saga.js │ ├── index.js │ ├── local-storage-saga.js │ └── title-saga.js ├── common/ │ ├── app/ │ │ ├── App.jsx │ │ ├── components/ │ │ │ ├── Flash/ │ │ │ │ ├── Queue.jsx │ │ │ │ └── index.jsx │ │ │ ├── Footer/ │ │ │ │ ├── Footer.jsx │ │ │ │ ├── README.md │ │ │ │ ├── index.js │ │ │ │ └── links.json │ │ │ ├── Nav/ │ │ │ │ ├── Nav.jsx │ │ │ │ ├── NavItem.jsx │ │ │ │ ├── index.js │ │ │ │ └── links.json │ │ │ ├── NotFound/ │ │ │ │ └── index.jsx │ │ │ └── README.md │ │ ├── create-app.jsx │ │ ├── create-reducer.js │ │ ├── index.js │ │ ├── middlewares.js │ │ ├── provide-store.js │ │ ├── redux/ │ │ │ ├── actions.js │ │ │ ├── fetch-user-saga.js │ │ │ ├── index.js │ │ │ ├── oldActions.js │ │ │ ├── reducer.js │ │ │ └── types.js │ │ ├── routes/ │ │ │ ├── Admin/ │ │ │ │ └── README.md │ │ │ ├── Bonfires/ │ │ │ │ └── README.md │ │ │ ├── Hikes/ │ │ │ │ ├── components/ │ │ │ │ │ ├── Hike.jsx │ │ │ │ │ ├── Hikes.jsx │ │ │ │ │ ├── Lecture.jsx │ │ │ │ │ ├── Map.jsx │ │ │ │ │ └── Questions.jsx │ │ │ │ ├── index.js │ │ │ │ └── redux/ │ │ │ │ ├── actions.js │ │ │ │ ├── answer-saga.js │ │ │ │ ├── fetch-hikes-saga.js │ │ │ │ ├── index.js │ │ │ │ ├── oldActions.js │ │ │ │ ├── reducer.js │ │ │ │ ├── selectors.js │ │ │ │ ├── types.js │ │ │ │ └── utils.js │ │ │ ├── Jobs/ │ │ │ │ ├── README.md │ │ │ │ ├── components/ │ │ │ │ │ ├── JobNotFound.jsx │ │ │ │ │ ├── JobTotal.jsx │ │ │ │ │ ├── Jobs.jsx │ │ │ │ │ ├── List.jsx │ │ │ │ │ ├── NewJob.jsx │ │ │ │ │ ├── NewJobCompleted.jsx │ │ │ │ │ ├── Preview.jsx │ │ │ │ │ ├── Show.jsx │ │ │ │ │ └── ShowJob.jsx │ │ │ │ ├── index.js │ │ │ │ ├── redux/ │ │ │ │ │ ├── actions.js │ │ │ │ │ ├── apply-promo-saga.js │ │ │ │ │ ├── fetch-jobs-saga.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── jobs-form-normalizer.js │ │ │ │ │ ├── oldActions.js │ │ │ │ │ ├── reducer.js │ │ │ │ │ ├── save-job-saga.js │ │ │ │ │ └── types.js │ │ │ │ └── utils.js │ │ │ └── index.js │ │ ├── sagas.js │ │ ├── shared/ │ │ │ └── README.md │ │ └── utils/ │ │ ├── Professor-Context.js │ │ ├── create-types.js │ │ ├── professor-x.js │ │ ├── render-to-string.js │ │ ├── render.js │ │ └── shallow-equals.js │ ├── config.global.js │ ├── models/ │ │ ├── User-Credential.json │ │ ├── User-Identity.js │ │ ├── User-Identity.json │ │ ├── challenge.json │ │ ├── job.json │ │ ├── nonprofit.json │ │ ├── pledge.json │ │ ├── promo.js │ │ ├── promo.json │ │ ├── story.json │ │ ├── user.js │ │ └── user.json │ └── utils/ │ ├── ajax-stream.js │ ├── constantStrings.json │ ├── index.js │ ├── jsonp$.js │ └── services-creator.js ├── config/ │ └── secrets.js ├── dataAsync.js ├── full-test-data.js ├── gulpfile.js ├── leanTest.js ├── package.json ├── pm2Start.js ├── public/ │ ├── browserconfig.xml │ ├── code.html │ ├── css/ │ │ ├── Vimeo.css │ │ ├── lato.css │ │ ├── main-69858c7174.css │ │ ├── main-ec0d2f5228.css │ │ ├── main-f928abf444.css │ │ ├── main.css │ │ ├── themes/ │ │ │ ├── flatly.less │ │ │ └── modern.less │ │ └── ubuntu.css │ ├── favicons/ │ │ ├── android-chrome-manifest.json │ │ └── browserconfig.xml │ ├── favicons.html │ ├── fonts/ │ │ └── FontAwesome.otf │ ├── grouth-hacker.html │ ├── js/ │ │ ├── .jshintrc │ │ ├── angular.js │ │ ├── calculator.js │ │ ├── commonFramework-2c9795240d.js │ │ ├── commonFramework-2f0be7f94b.js │ │ ├── commonFramework-64e637bbe5.js │ │ ├── commonFramework-e9a2482e6b.js │ │ ├── commonFramework.js │ │ ├── dashboard.js │ │ ├── echarts-all-3.js │ │ ├── greensock.js │ │ ├── join-group.js │ │ ├── join-race.js │ │ ├── lib/ │ │ │ ├── jailed/ │ │ │ │ ├── _JailedSite.js │ │ │ │ ├── _frame.html │ │ │ │ ├── _frame.js │ │ │ │ ├── _pluginCore.js │ │ │ │ ├── _pluginNode.js │ │ │ │ ├── _pluginWeb.js │ │ │ │ └── jailed.js │ │ │ └── loop-protect/ │ │ │ ├── LICENSE.md │ │ │ └── loop-protect.js │ │ └── sidecar.v1.js │ ├── json/ │ │ ├── bootcamps.json │ │ └── cats.json │ ├── leader-board.html │ ├── progress.html │ └── robots.txt ├── seed/ │ ├── bonfireMDNlinks.js │ ├── challenges/ │ │ ├── 00-getting-started/ │ │ │ └── getting-started.json │ │ ├── 01-front-end-development-certification/ │ │ │ ├── advanced-bonfires.json │ │ │ ├── advanced-ziplines.json │ │ │ ├── basic-bonfires.json │ │ │ ├── basic-javascript.json │ │ │ ├── basic-ziplines.json │ │ │ ├── bootstrap.json │ │ │ ├── front-end-development-certificate.json │ │ │ ├── gear-up-for-success.json │ │ │ ├── html5-and-css.json │ │ │ ├── intermediate-bonfires.json │ │ │ ├── intermediate-ziplines.json │ │ │ ├── jquery.json │ │ │ ├── json-apis-and-ajax.json │ │ │ └── object-oriented-and-functional-programming.json │ │ ├── 02-data-visualization-certification/ │ │ │ ├── d3.json │ │ │ ├── data-visualization-certificate.json │ │ │ ├── data-visualization-projects.json │ │ │ ├── react-projects.json │ │ │ ├── react.json │ │ │ └── sass.json │ │ ├── 03-back-end-development-certification/ │ │ │ ├── api-projects.json │ │ │ ├── automated-testing-and-debugging.json │ │ │ ├── back-end-development-certificate.json │ │ │ ├── dynamic-web-applications.json │ │ │ ├── git.json │ │ │ ├── mongodb.json │ │ │ └── nodejs-and-expressjs.json │ │ └── 04-video-challenges/ │ │ ├── accessibility.json │ │ ├── agile.json │ │ ├── bigonotation.json │ │ ├── chromedevtools.json │ │ ├── computer-basics.json │ │ ├── computer-science.json │ │ ├── data-visualization.json │ │ ├── devops.json │ │ ├── dom.json │ │ ├── embedded-and-internet-of-things.json │ │ ├── game-development.json │ │ ├── gamification.json │ │ ├── jslingo.json │ │ ├── machine-learning.json │ │ ├── math-for-programmers.json │ │ ├── mobile-javascript-development.json │ │ ├── software-engineering-principles.json │ │ ├── statistics.json │ │ ├── tools.json │ │ ├── user-experience-design.json │ │ └── visual-design.json │ ├── create-challenge-bundle.js │ ├── get-challenge-completion.js │ ├── get-emails.js │ ├── getChallenges.js │ ├── index.js │ ├── loopbackMigration.js │ └── test-challenges.js ├── server/ │ ├── README.md │ ├── boot/ │ │ ├── a-extendUser.js │ │ ├── a-extendUserIdent.js │ │ ├── a-react.js │ │ ├── a-services.js │ │ ├── about.js │ │ ├── authentication.js │ │ ├── certificate.js │ │ ├── challenge.js │ │ ├── commit.js │ │ ├── explorer.js │ │ ├── home.js │ │ ├── randomAPIs.js │ │ ├── redirectHttps.js │ │ ├── redirects.js │ │ ├── restApi.js │ │ ├── story.js │ │ ├── t-wiki.js │ │ └── user.js │ ├── config.development.js │ ├── config.json │ ├── config.local.js │ ├── config.production.js │ ├── datasources.json │ ├── datasources.local.js │ ├── debug-entry.js │ ├── manifests/ │ │ └── README.md │ ├── middleware.json │ ├── middlewares/ │ │ ├── add-return-to.js │ │ ├── constant-headers.js │ │ ├── cookie-parser.js │ │ ├── csp.js │ │ ├── error-handlers.js │ │ ├── express-rx.js │ │ ├── global-locals.js │ │ ├── jade-helpers.js │ │ ├── keymetrics.js │ │ ├── migrate-completed-challenges.js │ │ ├── revision-helpers.js │ │ ├── sessions.js │ │ └── validator.js │ ├── model-config.json │ ├── passport-providers.js │ ├── production-start.js │ ├── resources/ │ │ ├── labs.json │ │ └── testimonials.json │ ├── server.js │ ├── services/ │ │ ├── hikes.js │ │ ├── job.js │ │ └── user.js │ ├── ssl-config.js │ ├── utils/ │ │ ├── auth.js │ │ ├── bad-id-map.js │ │ ├── certTypes.json │ │ ├── commit-goals.json │ │ ├── commit.js │ │ ├── commit.json │ │ ├── constantStrings.json │ │ ├── constants.js │ │ ├── date-utils.js │ │ ├── getFromDisk$.js │ │ ├── index.js │ │ ├── middleware.js │ │ ├── resources.json │ │ ├── rx.js │ │ └── user-stats.js │ └── views/ │ ├── account/ │ │ ├── email-signin.jade │ │ ├── email-signup.jade │ │ ├── forgot.jade │ │ ├── reset.jade │ │ ├── settings.jade │ │ ├── show.jade │ │ └── signin.jade │ ├── certificate/ │ │ ├── back-end.jade │ │ ├── data-vis.jade │ │ ├── font.jade │ │ ├── front-end.jade │ │ ├── full-stack.jade │ │ ├── index.jade │ │ └── script.jade │ ├── challenges/ │ │ ├── showBonfire.jade │ │ ├── showHTML.jade │ │ ├── showJS.jade │ │ ├── showStep.jade │ │ ├── showVideo.jade │ │ └── showZiplineOrBasejump.jade │ ├── commit/ │ │ ├── directory.jade │ │ ├── index.jade │ │ └── pledge.jade │ ├── feed.jade │ ├── home.jade │ ├── layout-react.jade │ ├── layout-wide.jade │ ├── layout.jade │ ├── map/ │ │ └── show.jade │ ├── partials/ │ │ ├── challenge-footer.jade │ │ ├── challenge-modals.jade │ │ ├── flash.jade │ │ ├── footer.jade │ │ ├── meta.jade │ │ ├── navbar.jade │ │ ├── react-stylesheets.jade │ │ ├── scripts.jade │ │ └── stylesheets.jade │ ├── redirect-https.html │ ├── redirect-https.jade │ ├── resources/ │ │ ├── about.jade │ │ ├── academic-honesty.jade │ │ ├── calculator.jade │ │ ├── code-of-conduct.jade │ │ ├── code.jade │ │ ├── dashboard.jade │ │ ├── group.jade │ │ ├── how-nonprofit-projects-work.jade │ │ ├── labs.jade │ │ ├── links.jade │ │ ├── nonprofits-form.jade │ │ ├── nonprofits.jade │ │ ├── pmi-acp-agile-project-managers-form.jade │ │ ├── pmi-acp-agile-project-managers.jade │ │ ├── privacy.jade │ │ ├── progress.jade │ │ ├── shop.jade │ │ ├── sitemap.jade │ │ ├── stories.jade │ │ ├── terms-of-service.jade │ │ ├── test.css │ │ ├── the-fastest-web-page-on-the-internet.jade │ │ └── unsubscribed.jade │ ├── sponsors/ │ │ ├── sponsors.html │ │ └── sponsors.jade │ ├── stories/ │ │ ├── hot-stories.jade │ │ ├── index.jade │ │ ├── news-nav.jade │ │ ├── preliminary-submit.jade │ │ ├── show.jade │ │ └── submit-story.jade │ └── wiki/ │ └── show.jade ├── simple-json.js ├── test/ │ └── server/ │ └── utils/ │ ├── date-utils-test.js │ └── user-stats-test.js ├── webpack.config.js └── webpack.config.node.js