\n);\n\nexport default Header;","import React from 'react';\n\nimport Header from './Header';\n\nconst MainContent = () => (\n \n
\n
\n\n {/* Self info & img */}\n \n
Logan is a Full Stack Software Engineer with, expert knowledge of BEW, FEW, proficient at Data/Big Data (e.g. Data Colection, Adobe Analytics, Google Analytics, etc.) and graphic design. He always goes above and beyond to ensure the job gets done right the first time. His work stands out because he pays close attention to all details of the job.
\n
Logan is a compelling Full Stack Web/App Developer. He is effective at combining creativity and problem solving to develop user-friendly tested/benchmarked applications, in various environments with novel methods of design. He's known among staff for strong wit, attention to detail and multi-tasking no matter the complexity of the project. He has an ability to work independently, in a team environment or as a lead project manager.
\n
Logan's been doing software engineering work for a while now, as it provides him with a skill set to design applications with a variety of technologies. During his free time you can find him, swing/position trading in the stock market, watching movies, coding his own projects, and learning new skills!
Software Engineering - Full Stack Web/Mobile/Application Development - User Experience/User Interface Design - Game Design/Development - Data Science
*/}\n
\n
\n
Expert
\n \n
{props.experience.expert}
\n
\n
\n
Proficient
\n
{props.experience.proficient}
\n
\n
\n
Novice
\n
{props.experience.novice}
\n
\n
\n \n );\n}\n\nexport default ExtendSkills;","import { platform, focus, tech } from './skills';\n\n\nexport const ProProj = [\n {\n img: {\n src: \"images/experience/adobe.png\",\n alt: \"red outlike of the letter A and the word Adobe\"\n },\n title: 'Adobe: Web Appications Engineer',\n paragraph1: `Application (CI/CD) in Adobe Analytics, Customer journey Analytics &,various Adobe Experience Cloud software; worked on FEW in-house software to collect user data; additionally maintained BEW in-house library connected to AA via custom extension in Data Collection (e.g. agile dev., CRUD, support tickets, etc.)`,\n skills: {\n platform: [\n platform.des,\n // platform.mob\n ], \n focus: [\n focus.sofEngr, \n focus.data,\n `${focus.dev.area.fs} \n ${focus.dev.type.wma}` \n ], \n tech: [\n tech.js.id, \n tech.html.id, \n tech.css.id, \n tech.git.id, \n tech.gitHub.id, \n tech.sql.sql.id,\n tech.adobe.analytics.id,\n tech.dom.id,\n tech.npm.id,\n tech.yarn.id,\n tech.shell.id,\n tech.terminal.id,\n tech.react.id,\n tech.node.id,\n tech.chromeDev.id,\n tech.mac.id,\n tech.dataAnaly.id,\n tech.CI_CD.id, \n tech.api.api.id,\n tech.json.id,\n tech.adobe.adminConsole.id,\n tech.adobe.dataCollection.id,\n tech.adobe.marketing.id,\n tech.adobe.cja.id,\n tech.jira.id,\n tech.ts.id,\n ]\n },\n paragraph2: '',\n projectLink: \"https://business.adobe.com/products/analytics/adobe-analytics.html\",\n codeLink: false\n },\n {\n img: {\n src: \"images/experience/prose.jpeg\",\n alt: \"White crow infront of a white ball cut out of black square shap.\"\n },\n title: 'Interim Fractional Chief Technical Officer (CTO)',\n paragraph1: `Served as the Interim Fractional Chief Technical Officer, in this capacity, my primary focus revolved around oversight and active participation in software engineering processes, with a particular emphasis on technologies such as React.js and GraphQL.`,\n skills: {\n platform: [\n platform.des, \n platform.mob\n ], \n focus: [\n focus.sofEngr, \n ], \n tech: [\n tech.js.id, \n tech.html.id, \n tech.css.id, \n tech.git.id, \n tech.gitHub.id, \n tech.dom.id,\n tech.npm.id,\n tech.yarn.id,\n tech.shell.id,\n tech.terminal.id,\n tech.react.id,\n tech.node.id,\n tech.chromeDev.id,\n tech.mac.id,\n tech.CI_CD.id, \n tech.api.api.id,\n tech.json.id,\n tech.jira.id,\n tech.graphQL.id,\n // tech.typeScript.id,\n // tech.aws.id,\n ]\n },\n paragraph2: '',\n projectLink: \"https://www.theprose.com\",\n codeLink: false\n },\n {\n img: {\n src: \"images/experience/verizon.jpeg\",\n alt: \"Words that say Verzon with a black background and red check mark\"\n },\n title: 'Verizon: Support Engineer',\n paragraph1: 'My responsibilities encompassed a diverse range of support engineering tasks, which entailed efficiently resolving tickets, working with JSON APIs, and addressing intricate issues, with little to no guidance or supervision',\n skills: {\n platform: [\n platform.des\n ], \n focus: [\n focus.sofEngr, \n // `${focus.dev.area.fs} \n // ${focus.dev.type.wma}`\n ], \n tech: [\n tech.json.id,\n tech.api.api.id,\n tech.data.id,\n tech.windows.id,\n // \"XML\"\n ]\n },\n paragraph2: '',\n projectLink: \"https://www.verizon.com\",\n codeLink: false\n },\n {\n img: {\n src: \"images/experience/wipro.png\",\n alt: \"Screen Shot of the Wipro.com home page.\"\n },\n title: 'Wipro: App-Cloud Services-Developer',\n paragraph1: 'Received application development training, in-order to be able to use a variety of different technologies to develop and maintain code base.',\n skills: {\n platform: [\n platform.des\n ], \n focus: [\n focus.sofEngr, \n // `${focus.dev.area.fs} \n // ${focus.dev.type.wma}`\n ], \n tech: [\n tech.js.id, \n tech.html.id, \n tech.css.id, \n // tech.git.id, \n // tech.gitHub.id, \n // tech.browserify.id, \n // tech.CI_CD.id, \n tech.aws.id,\n // \"AWS\",\n // \"Java\",\n tech.json.id,\n tech.api.api.id,\n tech.shell.id,\n tech.terminal.id,\n tech.node.id,\n tech.data.id,\n tech.databases.id,\n tech.preformOptimiz.id,\n tech.windows.id,\n // tech.py.id\n ]\n },\n paragraph2: '',\n projectLink: \"https://www.wipro.com/\",\n codeLink: false\n },\n {\n img: {\n src: \"images/experience/dance4healing.jpeg\",\n alt: \"screen shot of www.dance4healing.com this is an image of the dance for healing website mobile site or small version has many people in the image dancing woman has dance for healing logo. a slide show would move if you on the site but this is a still image.\"\n },\n title: 'Dance4Healing.com',\n paragraph1: 'Used CI/CD on a Node.js app cloned through GitHub, then tested and deployed on Heroku. The web development process included aspects such as web design, web publishing, web programming & database management.',\n skills: {\n platform: [platform.des, platform.mob], \n focus: [focus.sofEngr, `${focus.dev.area.fs} ${focus.dev.type.wma}`, focus.design.xi, focus.data], \n tech: [\n // tech.ai.id, \n tech.express.id, \n tech.heroku.id, \n tech.node.id, \n // tech.jade.id, \n \"jade\",\n tech.mongo.id, \n // tech.mongoose.id, \n // tech.twilio.id, \n tech.js.id, \n tech.html.id, \n tech.css.id, \n // tech.passport.id, \n // tech.vimeo.id, \n tech.bitBucket.id, \n tech.git.id, \n tech.gitHub.id, \n // tech.browserify.id, \n tech.CI_CD.id, \n tech.adobe.photo.id, \n tech.trello.id, \n tech.google.analytic.id, \n tech.google.font.id, \n // tech.sketchApp.id, \n tech.npm.id, \n tech.yarn.id\n ]\n },\n paragraph2: 'Once on the site, sign up to begin learning different dance moves.',\n projectLink: \"https://dance4healing.com\",\n codeLink: false\n },\n {\n img: {\n src: \"images/experience/stageIV.jpg\", \n alt: \"This is a screenshot of the homepage for stage four .org. Stage IV.org is tan e-commerce website.\"\n },\n title: 'StageIV.org',\n paragraph1: \"Setup Google Analytics within site. Identified and fixed existing bugs within a JS/HTML codebase\",\n skills: {\n platform: [platform.des, platform.mob], \n focus: [focus.sofEngr], \n tech: [\n tech.js.id, \n tech.css.id, \n tech.html.id, \n // tech.wordPr.id, \n tech.google.analytic.id\n ]\n },\n paragraph2: 'This is an e-commerce platform where you can buy products from artists, view blogs & see art galleries.',\n projectLink: \"https://stageiv.org\",\n codeLink: false\n }\n];\n\n\nexport const PersonalProj = [\n {\n img: {\n src: \"images/experience/kdp-books-site.png\", \n alt: \"this is a screen shot of the home page for The Midnight Dream Publishing website.\"\n },\n title: \"Amazon KDP E-commerce & Website\",\n paragraph1: \"Logan created this React.js website for an Amazon KDP project. He managed/orchestrated the publication of 10+ ebooks on Amazon including paper & audible publication of books. Gave ideas & directed ghostwriters in realizing those ideas as published works. Plus he designed eight book covers. This involves the design of the entire process of acquiring and integrating the product, including aspects of branding, design, usability & function. Making interfaces in software or computerized devices with a focus on looks or style.\",\n skills: {\n platform: [platform.des], \n focus: [focus.sofEngr, `${focus.dev.area.fs} ${focus.dev.type.wma}`, focus.design.xi,], \n tech: [tech.js.id, tech.html.id, tech.css.id, tech.react.id, tech.reactBootstrap.id, tech.bootstrap.id, tech.git.id, tech.gitHub.id, tech.gitHubPg.id]\n },\n paragraph2: 'Feel free to poke around the site!',\n projectLink: 'https://lwrgithub.github.io/book-site/#/',\n codeLink: \"https://github.com/LWRGitHub/book-site\"\n },\n {\n img: {\n src: \"images/experience/womens-basketball.png\", \n alt: \"this is a screen shot of the home page for women's basketball through the years. Image of a big photo black-and-white of women playing basketball with the chalkboard in the back.\"\n },\n title: \"Women's Basketball Through The Years\",\n paragraph1: \"As part of a woman's history class I took in college we were encouraged to create a website related to a pivotal moment in history for women. This site about women's basketball. It provides information about specific events throughout the years. The site has been made with React.js & hosted through GitHub Pages.\",\n skills: {\n platform: [platform.des], \n focus: [focus.sofEngr, `${focus.dev.area.fs} ${focus.dev.type.wma}`, focus.design.xi,], \n tech: [tech.js.id, tech.html.id, tech.css.id, tech.react.id, tech.reactBootstrap.id, tech.bootstrap.id, tech.git.id, tech.gitHub.id, tech.gitHubPg.id]\n },\n paragraph2: 'Use a desktop, laptop or phone to take a look around the site!',\n projectLink: 'https://lwrgithub.github.io/womens-basketball-website/#/',\n codeLink: \"https://github.com/LWRGitHub/womens-basketball-website\"\n },\n {\n img: {\n src: \"images/experience/scraping-craigslist.png\", \n alt: \"Image of the app having found something & starting to text a number.\"\n },\n title: \"Scraping Craigslist & TrashNothing.com!\",\n paragraph1: \"Free Apple products & more through scraping Craigslist & the website Trash Nothing! These python files use bs4 & selenium to scrape the web & send you a text message when you find that awesome thing your looking for! The file are setup to search for free apple products, computers, laptops, video games, ect.\",\n skills: {\n platform: [platform.des], \n focus: [focus.sofEngr, focus.dev.type.a], \n tech: [tech.py.id, tech.git.id, tech.gitHub.id, tech.bs4.id, tech.selenium.id, tech.request.id, tech.dotenv.id, tech.unixCLI.id]\n },\n paragraph2: 'You will have to follow the detailed instructions in the README.md file on GetHub.',\n projectLink: 'https://github.com/LWRGitHub/cs_scraper',\n codeLink: \"https://github.com/LWRGitHub/cs_scraper\"\n },\n {\n img: {\n src: 'images/experience/lovers-art.png', \n alt: 'This is a screen shot of lovers art websites home page.'\n },\n title: \"Art Site Template\",\n paragraph1: 'Built with Flask, Jinga2 & hosted through Heroku this site is a grate template for organizing art for sale & as a plus it has the capability to sell art supplies as well.',\n skills: {\n platform: [platform.des, platform.mob], \n focus: [focus.sofEngr, `${focus.dev.area.fs} ${focus.dev.type.wma}`, focus.design.xi], \n tech: [\n tech.html.id, \n tech.css.id, \n tech.js.id,\n tech.py.id,\n tech.flask.id,\n tech.jinja2.id,\n tech.jquery.id,\n tech.bootstrap.id, \n tech.boostrIcon.id,\n // tech.heroku.id,\n tech.wireFrames.id,\n tech.figma.id,\n // tech.heroku.id,\n tech.git.id, \n tech.gitHub.id,\n // tech.img.png.id,\n ]\n },\n paragraph2: 'Browse the website get to know the template possibilities!',\n projectLink: 'https://github.com/LWRGitHub/lover-artist-site', // 'https://lover-artist-site.herokuapp.com',\n codeLink: 'https://github.com/LWRGitHub/lover-artist-site' \n },\n {\n img: {\n src: \"images/experience/duro-ios.png\", \n alt: \"Image of the app's wallet page.\"\n },\n title: \"Duro iOS App!\",\n paragraph1: \"An inflation resistant currency backed by inflation resistant assets such as the CPI index.\",\n skills: {\n platform: [platform.mob], \n focus: [focus.sofEngr, `${focus.dev.area.f} ${focus.dev.type.ma}` , focus.design.xi], \n tech: [\n // tech.swift.id, \n // tech.swiftUI.id, \n // tech.xCode.id, \n \"Swift\",\n \"SwiftUI\",\n \"xCode\",\n tech.api.api.id, \n tech.git.id, \n tech.gitHub.id\n ]\n },\n paragraph2: 'The project is available to clone on GetHub.',\n projectLink: 'https://github.com/LWRGitHub/duro-ios',\n codeLink: \"https://github.com/LWRGitHub/duro-ios\"\n },\n {\n img: {\n src: \"images/experience/astrology-api.png\", \n alt: \"Screenshot of the astrology home page. It has images & names of all the zodiac signs.\"\n },\n title: \"Daily Horoscopes\",\n paragraph1: \"This Node.js web app is a grate web page to get your daily horoscope from. It uses the horoscope API from astrology.com.\",\n skills: {\n platform: [platform.des, platform.mob], \n focus: [focus.sofEngr, `${focus.dev.area.fs} ${focus.dev.type.wma}`, focus.design.xi], \n tech: [\n tech.js.id, \n tech.node.id,\n // tech.pug.id,\n \"Pug\",\n tech.express.id,\n tech.bootstrap.id,\n tech.html.id,\n tech.css.id,\n // tech.heroku.id,\n tech.git.id,\n tech.gitHub.id\n ]\n },\n paragraph2: 'Simply click on your zodiac sign to view your horoscope for the day.',\n projectLink: \"https://github.com/LWRGitHub/astrology-api\", // 'https://astrology-horoscope.herokuapp.com',\n codeLink: \"https://github.com/LWRGitHub/astrology-api\"\n },\n {\n img: {\n src: \"images/experience/veganQuery.png\", \n alt: \"Screenshot of the home page. The image has photos of the Different vegan dishes with their names such as tomato soup & slaw with coriander.\"\n },\n title: \"Vegan Query\",\n paragraph1: \"Website that scrapes vegan recipes off the internet & places them in a search engine.\",\n skills: {\n platform: [platform.des, platform.mob], \n focus: [focus.sofEngr, `${focus.dev.area.fs} ${focus.dev.type.wma}`, focus.design.xi], \n tech: [tech.js.id, tech.react.id, tech.bootstrap.id, tech.reactBootstrap.id, tech.html.id, tech.css.id, tech.git.id, tech.gitHub.id, tech.gitHubPg.id]\n },\n paragraph2: 'Simply search for something like tomato soup.',\n projectLink: 'https://github.com/VeganQuery/VeganQuery.github.io',\n codeLink: \"https://github.com/VeganQuery/VeganQuery.github.io\"\n },\n];\n\nexport const TutorialProj = [\n {\n img: {\n src: \"images/experience/mobile-home-page-portfolio-site.png\", \n alt: \"Screenshot on the mobile phone of Logan Reynolds' software engineering portfolio website. This is the homepage otherwise known as the index page. Shows a list of programming languages such as JavaScript ESS6 Ruby python & C#. Shows navigation bar in blue. Has a big jumbotron image in the background\"\n },\n title: 'Portfolio Site',\n paragraph1: \"Transformed into a React.js site from basic HTML/CSS; adding some custom UI/UX design.\",\n skills: {\n platform: [platform.des, platform.mob], \n focus: [focus.sofEngr, `${focus.dev.area.fs} ${focus.dev.type.wma}`, focus.design.xi, focus.data], \n tech: [\n tech.react.id, \n tech.reactBootstrap.id, \n tech.reactRouter.id, \n tech.js.id, \n tech.html.id, \n tech.css.id, \n tech.bootstrap.id, \n tech.google.analytic.id, \n tech.dom.id, \n tech.google.map.id, \n tech.CI_CD.id, \n tech.git.id, \n tech.gitHub.id, \n tech.gitHubPg.id,\n tech.adobe.photo.id, \n // tech.sketchApp.id, \n // tech.img.png.id, \n // tech.img.jpg.id, \n // tech.img.svg.id\n ]\n },\n paragraph2: 'You are currently viewing this project. It is estimated that Logan has created over 85% of the code on this project as the tutorial was originally simply HTML/CSS & bootsrtap.',\n projectLink: 'index.html',\n codeLink: \"https://github.com/LWRGitHub/LWRGitHub.github.io\",\n tutorial: \"https://www.codecademy.com/learn/make-a-website\"\n },\n // {\n // img: {\n // src: 'images/experience/student-enrollment-program.png', \n // alt: 'This is a screen shot of a student enrollment app that is on the web. buttons are students courses & add a student. below buttons are a list of students in boxes.'\n // },\n // title: 'Student Enrollment',\n // paragraph1: 'This web application is an example student enrollment platform. It alows the teacher to edit, add or remove students at any time.',\n // skills: {\n // platform: [platform.des, platform.mob], \n // focus: [focus.sofEngr, `${focus.dev.area.f} ${focus.dev.type.wa}`, focus.design.xi, focus.data], \n // tech: [\n // tech.html.id, \n // tech.css.id, \n // tech.js.id, \n // // tech.img.png.id, \n // tech.google.analytic.id, \n // tech.google.font.id, \n // tech.bootstrap.id, \n // tech.api.api.id, \n // ]\n // },\n // paragraph2: 'Click on \"Students\" to edite & add them to a course, use \"Courses\" to add student to course, & add a new student with \"New Student',\n // projectLink: 'https://lwrgithub.github.io/student-enrollment/',\n // codeLink: 'https://github.com/LWRGitHub/student-enrollment',\n // tutorial: \"https://github.com/Code-the-Dream-School/Student-Enrollment-Program-Exercise\"\n // },\n // {\n // img: {\n // src: \"images/experience/p5-js.jpg\", \n // alt: \"Screenshot of Logan Reynolds P5JS projects sorted in arranged in a card like format through bootstraps. Clearly a screenshot of the website grayish background cards on screen with images of the P5JS projects.\"\n // },\n // title: 'P5.JS',\n // paragraph1: \"This is an example of several P5*JS projects. I've taking these projects and retrofited them so they can be seen through the web or a moblie platform. It includes projects such as Mardi Gras, Sketch, Light on Light off, Fleeing or Chasing. I love P5*js as it is perfect for making commputer ART!!!!!!!\",\n // skills: {\n // platform: [platform.des, platform.mob], \n // focus: [focus.sofEngr, `${focus.dev.area.f} ${focus.dev.type.wma}`, focus.design.xi, focus.game.desDev], \n // tech: [tech.html.id, tech.css.id, tech.google.analytic.id, tech.p5.id, tech.js.id]\n // },\n // paragraph2: 'Some projects are interactive to a click of the mouse or movement of the mouse others just move on their own.',\n // projectLink: \"https://lwrgithub.github.io/p5js-img/\",\n // codeLink: \"https://github.com/LWRGitHub/p5js-img\",\n // tutorial: \"https://www.makeschool.com/mediabook/oa/tutorials/ramp-0/tips-for-success/\"\n // },\n // {\n // img: {\n // src: \"images/experience/form.jpg\", \n // alt: \"This is a screenshot of an online form. The background is white the form is gray and it is a sign up form. The first section is called your basic info which includes name email password and age, greater than 13 or under 13. The second section is called your profile it includes biography charbroil interest interest include development design and business. There's a drop-down menu select your job role you can select from front end developer and many more options at the bottom of the form there is a button labeled sign up.\"\n // },\n // title: 'Form',\n // paragraph1: 'This is a nice HTML form that can be manipulated in many different ways. Forms can be made in a variety of different ways depending upon what is needed.',\n // skills: {\n // platform: [platform.des, platform.mob], \n // focus: [focus.sofEngr, focus.dev.type.wma, focus.design.xi, focus.data], \n // tech: [tech.js.id, tech.dom.id, tech.html.id, tech.css.id, tech.google.analytic.id, tech.google.font.id]\n // },\n // paragraph2: 'Simply fill out the form and click submit.',\n // projectLink: \"https://lwrgithub.github.io/form/\",\n // codeLink: \"https://github.com/LWRGitHub/form\",\n // tutorial: \"https://teamtreehouse.com/library/html-forms\"\n // },\n // {\n // img: {\n // src: \"images/experience/pong-like-game-paddle.svg\", \n // alt: \"Screenshot of paddle game that is kind of like pong Where are you trying to destroy the bricks by moving the ball around. Video game online for the computer. This video game is in mid play and most of the bricks have been destroyed player is about to win.\"\n // },\n // title: 'Pong like Game',\n // paragraph1: 'An awesome game that uses the DOM \"a tightly integrated part of JavaScript.\" The game is on one HTML document with the CSS, DOM & JavaScript. I had fun making it & hope you enjoy playing it also.',\n // skills: {\n // platform: [platform.des], \n // focus: [focus.sofEngr, focus.dev.type.wa, focus.game.desDev], \n // tech: [tech.js.id, tech.dom.id, tech.html.id, tech.css.id, tech.google.analytic.id]\n // },\n // paragraph2: 'Use a desktop or laptop computer not a phone. Moving the mouse around the play area will move the board at the bottom.',\n // projectLink: 'https://lwrgithub.github.io/pong-like-game/',\n // codeLink: \"https://github.com/LWRGitHub/pong-like-game\",\n // tutorial: \"https://developer.mozilla.org/en-US/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript\"\n // },\n // {\n // img: {\n // src: \"images/experience/js-animation.svg\", \n // alt: \"This is an image of a JavaScript animation game. Action has yet to get taken on the animation. Image shows a triangle circle and two squares one twisted sideways. The image also has words saying which shape has no corner, This is to entice you to click on the shape you think it is, which will begin the animation.\"\n // },\n // title: 'Interactive Animation',\n // paragraph1: 'This project is an example of interactive animation with Javascript. This project uses HTML, CSS, DOM, SVG & JavaScript. The ending was an interesting part of the project as it was the first time I used an svg image. I hope you all enjoy it!',\n // skills: {\n // platform: [platform.des, platform.mob], \n // focus: [focus.sofEngr, focus.dev.type.wma,], \n // tech: [\n // tech.html.id, \n // tech.css.id, \n // tech.js.id, \n // // tech.img.svg.id, \n // // tech.img.png.id, \n // tech.dom.id, \n // tech.google.analytic.id\n // ]\n // },\n // paragraph2: 'Click once to select a shape in the animation & it will play itself through to the end. If you keep clicking it will quickly go through animation.',\n // projectLink: \"https://lwrgithub.github.io/js-animation/\",\n // codeLink: \"https://github.com/LWRGitHub/js-animation\",\n // tutorial: \"https://www.linkedin.com/learning/interactive-animations-with-css-and-javascript?trk=learning-serp_learning_search-card&upsellOrderOrigin=lynda_redirect_learning\"\n // },\n // {\n // img: {\n // src: \"images/experience/connect-four-in-a-row-game.svg\", \n // alt: \"This is a screenshot of the completed connect four game. We're player one is the winner, This shows that the red coins have four in a row going vertically, yellow came close though. Shows is clearly as a computer game designed to get played by two people on one computer.\"\n // },\n // title: 'Connect Four',\n // paragraph1: 'I am happy to say that the game uses JavaScript, classes a new feature that was added in 2015. The game is called \"Connect Four\" also known as \"Four in a Row.\" You may just be one of these people that have played the game in real life, I hope you like it! TAKE NOTE: This game has some beautiful comments in the JS files.',\n // skills: {\n // platform: [platform.des], \n // focus: [focus.sofEngr, focus.dev.type.wa, focus.design.xi, focus.game.desDev], \n // tech: [\n // tech.js.id, \n // tech.html.id, \n // tech.css.id, \n // tech.dom.id, \n // // tech.img.svg.id, \n // tech.google.analytic.id, \n // tech.google.font.id, \n // tech.jquery.id\n // ]\n // },\n // paragraph2: 'Use the mouse to click \"Start.\" use the left, right & down arrows to place token.',\n // projectLink: \"https://lwrgithub.github.io/connect-four/\",\n // codeLink: \"https://github.com/LWRGitHub/connect-four\",\n // tutorial: \"https://teamtreehouse.com/library/objectoriented-javascript-challenge\"\n // },\n // {\n // img: {\n // src: \"images/experience/video-audio-project.jpg\", \n // alt: \"Screenshot of a webpage that includes video of a river In what seems like farmland but more so the wild and lots of trees, with a subtitle saying birds chirping. Audio recording below and a title on the web page stating HTML video and audio. Other heading tags stating audio example and video example. White background & Black outlines on the video area and audio area\"\n // },\n // title: 'Video/Audio Elements',\n // paragraph1: 'Code includes WebVTT subtitling & MediaElement.js which brings consistency through all browsers. A skip-back plug-in is used to get a 4 sec. playback button. Project has a video and an audio file displayed on screen with user-friendly access.',\n // skills: {\n // platform: [platform.des], \n // focus: [focus.sofEngr, focus.dev.type.wa], \n // tech: [\n // tech.webVtt.id, \n // tech.mediaEl.id, \n // tech.js.id, \n // tech.html.id, \n // tech.css.id, \n // tech.jquery.id, \n // tech.dom.id, \n // tech.gitHub.id, \n // tech.git.id, \n // // tech.mp4.id, \n // // tech.audio.mp3.id, \n // // tech.audio.ogg.id, \n // // tech.vlcMedia.id, \n // // tech.img.svg.id, \n // tech.google.analytic.id, \n // tech.google.font.id\n // ]\n // },\n // paragraph2: 'Use your mouse to control the video & audio elements on the screen.',\n // projectLink: \"https://lwrgithub.github.io/video-audio-elements/\",\n // codeLink: \"https://github.com/LWRGitHub/video-audio-elements\",\n // tutorial: \"https://teamtreehouse.com/library/create-a-media-player-with-mediaelementjs\"\n // },\n // {\n // img: {\n // src: \"images/experience/phaser-io-game-like-mario-lg.jpeg\", \n // alt: \"This is a screenshot of an interactive computer game that looks kind of like Super Mario. There are coins spinning on screen, poison bottles as well as a Barely visible spinning star. The upper left corner says score is 15. Player in the game is jumping from what appears to be floating pieces of land and floating pieces of metal there are coins and items all over the screen. Player appears in midair.\"\n // },\n // title: 'Mario Like Game',\n // paragraph1: 'This project is a one-page game using the framework Phaser. This framework \"Phaser\" is an HTML & JS gaming framework basically it makes it easy to make a game with JavaScript. I hope you all have fun with it!',\n // skills: {\n // platform: [platform.des], \n // focus: [focus.sofEngr, focus.dev.type.wa, focus.design.xi, focus.game.desDev], \n // tech: [\n // tech.html.id, \n // tech.css.id, \n // tech.js.id, \n // // tech.phaser.id, \n // // tech.img.png.id, \n // tech.dom.id, tech.google.analytic.id\n // ]\n // },\n // paragraph2: '\"Space bar\" = jump, \"Left & Right arrows\" = move',\n // projectLink: \"https://lwrgithub.github.io/mario-like-game/\",\n // codeLink: \"https://github.com/LWRGitHub/mario-like-game\",\n // tutorial: \"https://teamtreehouse.com/library/introducing-javascript\"\n // },\n // {\n // img: {\n // src: \"images/experience/full-stack-conf.jpg\", \n // alt: \"Screenshot of the full stock tech conference website. This is an image that provides a good example of the web development skills available by Logan Reynolds. Has a blue navigation bar in a light blue Jumbotron with the blue filter over the image on the Jumbotron. Heading says Full Stack Conf A one day conference about all things JavaScript. Buttons to register now and see speakers. there is an imgae of the city they are in. Other titles on the page include about full stack conference, Expert speakers and what you'll learn. Subjects and details are below those tiles.\"\n // },\n // title: 'Full Stack Conf',\n // paragraph1: 'This is a Basic HTML/CSS website That uses some JavaScript and jQuery for functionality as well as bootstraps for looks. This website includes a registration form that upon clicking the button pops up, as well as the necessary information & sections needed for a tech conference website.',\n // skills: {\n // platform: [platform.des, platform.mob], \n // focus: [focus.sofEngr, `${focus.dev.area.f} ${focus.dev.type.wma}`, focus.design.xi], \n // tech: [\n // tech.js.id, \n // tech.dom.id, \n // tech.html.id, \n // tech.css.id, \n // // tech.img.png.id, \n // // tech.img.jpg.id, \n // tech.jquery.id, \n // tech.bootstrap.id, \n // tech.google.analytic.id\n // ]\n // },\n // paragraph2: 'Scrolling down the website you will find a pop up registration form, along with the schedule, speakers, & other necessary information.',\n // projectLink: \"https://lwrgithub.github.io/tech-conf-site/\",\n // codeLink: \"https://github.com/LWRGitHub/tech-conf-site\",\n // tutorial: \"https://teamtreehouse.com/library/practice-selecting-dom-elements\"\n // },\n // {\n // img: {\n // src: \"images/experience/veganRestaurant.jpg\", \n // alt: \"Screen shot of vegan restaurant website. image's of vegan food and a google map of the location.\"\n // },\n // title: 'Vegan Restaurant',\n // paragraph1: 'This project displays my skills with Google maps & the ability to do web & mobile development. I hope you enjoy the vegan restaurant website.',\n // skills: {\n // platform: [platform.des, platform.mob], \n // focus: [focus.sofEngr, `${focus.dev.area.f} ${focus.dev.type.wm}`, focus.design.xi], \n // tech: [tech.html.id, tech.css.id, tech.js.id, tech.jquery.id, tech.google.analytic.id, tech.google.map.id, tech.google.font.id]\n // },\n // paragraph2: 'Vegan restaurant website demo.',\n // projectLink: \"https://lwrgithub.github.io/vegan-restaurant/\",\n // codeLink: \"https://github.com/LWRGitHub/vegan-restaurant\",\n // tutorial: \"https://dash.generalassemb.ly/\"\n // },\n // {\n // img: {\n // src: \"images/experience/html-table.png\", \n // alt: \"White background screenshot of an HTML table. HTML table is Different shades of gray. It has heading of employee information, The categories include name, email and job rule. Below each category are some names and emails & some different job rolls in the computer science industry. At the bottom it has italicized refreshes every 15 minutes.\"\n // },\n // title: 'HTML Table',\n // paragraph1: 'This is an example of an HTML table, although there are so many different ways to make tables here is an example of one way.',\n // skills: {\n // platform: [platform.des], \n // focus: [focus.sofEngr, focus.dev.type.w, focus.design.xi, focus.data], \n // tech: [tech.html.id, tech.css.id, tech.google.analytic.id, tech.google.font.id]\n // },\n // paragraph2: 'This is a table of employee information.',\n // projectLink: \"https://lwrgithub.github.io/html-table/\",\n // codeLink: \"https://github.com/LWRGitHub/html-table\",\n // tutorial: \"https://teamtreehouse.com/library/html-tables\"\n // },\n {\n img: {\n src: \"images/experience/dish-site.jpg\", \n alt: \"dish submitter website, add food & cooking instructions to the local storage on your internet browser. blue & green faded background on baner the rest of the background is very light green.\"\n },\n title: `Dish Yumy`,\n paragraph1: 'From an RSVP tutorial into a dish submitter website using local storage.',\n skills: {\n platform: [platform.des, platform.mob], \n focus: [focus.sofEngr, focus.dev.type.wma, focus.design.xi], \n tech: [tech.js.id, tech.css.id, tech.html.id, tech.dom.id, tech.google.font.id, tech.google.analytic.id, tech.git.id, tech.gitHub.id, tech.gitHubPg.id]\n },\n paragraph2: 'Type in the name of your dish along with the ingredients & submit it. You can then edit or remove the dish if you like.',\n projectLink: 'https://lwrgithub.github.io/Dish-submitter/',\n codeLink: \"https://github.com/LWRGitHub/Dish-submitter\",\n tutorial: \"https://teamtreehouse.com/library/dom-scripting-by-example\"\n },\n // {\n // img: {\n // src: \"images/experience/react-router.png\", \n // alt: \"Image of react router side, background green with a different box that is white with the light gray bar on top that has home about teachers and tech courses as links to click on to move to the site.Upper left corner has a dark box with two opening and closing brackets below the light color gray bar, You find a header that says front in course directory below that it says the fun directory is a project using react router emphasized. Hello settings is whole bunch of lorem ipsum text. Hello that is an area called featured teachers or you can type in the name of the teacher and the topic and press the button go and it'll bring you to another page. Basically this is a screenshot of the website.\"\n // },\n // title: 'Course Directory Site',\n // paragraph1: 'This is a website coded with React Router. React Router alows you to have all of your content on one page but it seems like multiple pages.',\n // skills: {\n // platform: [platform.des, platform.mob], \n // focus: [focus.sofEngr, `${focus.dev.area.f} ${focus.dev.type.wm}`, focus.design.xi, focus.data], \n // tech: [tech.html.id, tech.css.id, tech.google.analytic.id, tech.react.id, tech.js.id, tech.reactRouter.id, tech.reactBootstrap.id, tech.dom.id]\n // },\n // paragraph2: 'This site is an example of my React Router work. The site is about different technologies to learn!',\n // projectLink: \"http://LWRGitHub.github.io/Course-Directory-Site\",\n // codeLink: \"https://github.com/LWRGitHub/Course-Directory-Site\",\n // tutorial: \"https://teamtreehouse.com/library/react-router-4-basics-2\"\n // },\n // {\n // img: {\n // src: 'images/experience/books-home.png', \n // alt: 'This is a screen shot of the home page for the books traker web app.'\n // },\n // title: \"Book Tracker Web App\",\n // paragraph1: 'Built with Flask, Jinga2 & Hosted on Heroku this site is grate for organizing books you have read or want to read, have fun! I have a link to one of the GitHubs the tutorial originated from although the last GitHub tutorial was mostly about testing, but we did go thourgh other GitHub tutorials & have to build a lot of this site on are won before we were given the testing HW. ',\n // skills: {\n // platform: [platform.des], \n // focus: [focus.sofEngr, `${focus.dev.area.f} ${focus.dev.type.wa}`, focus.design.xi], \n // tech: [\n // tech.html.id, \n // tech.css.id, \n // tech.js.id,\n // tech.py.id,\n // tech.flask.id,\n // tech.jinja2.id,\n // tech.heroku.id,\n // tech.sql.sql.id,\n // tech.sql.alchemy.id,\n // tech.flaskWTF.id,\n // tech.dotenv.id,\n // tech.unittest.id,\n // // tech.img.png.id,\n // ]\n // },\n // paragraph2: \"Browse the website, signup it's free, just see what happends!\",\n // projectLink: 'https://app-to-keep-track-of-books.herokuapp.com',\n // codeLink: 'https://github.com/LWRGitHub/app-to-keep-track-of-books',\n // tutorial: \"https://github.com/Make-School-Labs/BEW-1.2-Testing-Homework\"\n // },\n // {\n // img: {\n // src: \"images/experience/react-scoreboard-lg.png\", \n // alt: \"This is an image scoreboard. The scoreboard is purple and has four players listed on it player two is winning. Play or two has a crown Player one score has gone negative and the other is a trailing behind player two. A timer is counting up in the corner currently at 47 seconds. The background is white.\"\n // },\n // title: 'React Scoreboard',\n // paragraph1: 'This is a scoreboard application designed with React.js. It keeps track of players scores throughout the game, you can add and remove the players & the current leader will have a crown.',\n // skills: {\n // platform: [platform.des], \n // focus: [focus.sofEngr, `${focus.dev.area.f} ${focus.dev.type.wa}`, focus.design.xi], \n // tech: [\n // tech.html.id, \n // tech.css.id, \n // tech.google.analytic.id, \n // tech.react.id, \n // tech.jsx.id, \n // tech.json.id, \n // // tech.lock.id, \n // tech.js.id, \n // tech.git.id, \n // tech.gitHub.id, \n // tech.reactBootstrap.id\n // ]\n // },\n // paragraph2: 'Up date the score with the plus or minus button, add players at the bottom or remove players with the red \"X\" by the players name.',\n // projectLink: \"https://lwrgithub.github.io/gaming-scoreboard/\",\n // codeLink: \"https://github.com/LWRGitHub/gaming-scoreboard\",\n // tutorial: \"https://teamtreehouse.com/library/react-components\"\n // },\n]\n\n// {\n// img: {\n// src: '', \n// alt: ''\n// },\n// title: '',\n// paragraph1: '',\n// skills: {\n// platform: [], \n// focus: [], \n// tech: []\n// },\n// paragraph2: '',\n// projectLink: '',\n// codeLink: ''\n// }\n","import {tech, mainLang} from './skills';\n\nlet expert = '';\nlet proficient = '';\nlet novice = '';\nconst js = [];\nconst java = [];\nconst py = [];\nconst rb = [];\nconst swift = [];\nconst go = [];\nconst c_Sharp = [];\nconst ts = [];\n\nfor(const key1 in tech){\n for(const key2 in tech[key1]){\n if(key2 == 'id'){\n if(tech[key1].level == 'Expert'){\n expert += `, ${tech[key1].id}`;\n }else if(tech[key1].level == 'Proficient'){\n proficient += `, ${tech[key1].id}`;\n }else if(tech[key1].level == 'Novice'){\n novice += `, ${tech[key1].id}`\n }\n } else if(key2 == 'langType') {\n if(tech[key1].langType == 'JavaScript'){\n js.push({id: tech[key1].id, level: tech[key1].level});\n } else if(tech[key1].langType == 'Python'){\n py.push({id: tech[key1].id, level: tech[key1].level});\n } else if(tech[key1].langType == 'Ruby'){\n rb.push({id: tech[key1].id, level: tech[key1].level});\n } else if(tech[key1].langType == 'C#'){\n c_Sharp.push({id: tech[key1].id, level: tech[key1].level});\n } else if(tech[key1].langType == 'Swift'){\n swift.push({id: tech[key1].id, level: tech[key1].level});\n } else if(tech[key1].langType == 'Go (Golang)'){\n go.push({id: tech[key1].id, level: tech[key1].level});\n } else if(tech[key1].langType == 'Java'){\n java.push({id: tech[key1].id, level: tech[key1].level});\n }\n } else if(key2 != 'langType' && key2 != 'level'){\n for(const key3 in tech[key1][key2]){\n if(key3 == 'id'){\n if(tech[key1][key2].level == 'Expert'){\n expert += `, ${tech[key1][key2].id}`;\n }else if(tech[key1][key2].level == 'Proficient'){\n proficient += `, ${tech[key1][key2].id}`;\n }else if(tech[key1][key2].level == 'Novice'){\n novice += `, ${tech[key1][key2].id}`;\n }\n } else if(key3 == 'langType') {\n if(tech[key1][key2].langType == 'JavaScript'){\n js.push({id: tech[key1][key2].id, level: tech[key1][key2].level});\n } else if(tech[key1][key2].langType == 'Python'){\n py.push({id: tech[key1][key2].id, level: tech[key1][key2].level});\n } else if(tech[key1][key2].langType == 'Ruby'){\n rb.push({id: tech[key1][key2].id, level: tech[key1][key2].level});\n } else if(tech[key1][key2].langType == 'C#'){\n c_Sharp.push({id: tech[key1][key2].id, level: tech[key1][key2].level});\n } else if(tech[key1][key2].langType == 'Swift'){\n swift.push({id: tech[key1][key2].id, level: tech[key1][key2].level});\n } else if(tech[key1][key2].langType == 'Go (Golang)'){\n go.push({id: tech[key1][key2].id, level: tech[key1][key2].level});\n }\n }\n }\n }\n }\n}\n\nexpert = expert.substring(2);\nproficient = proficient.substring(2);\nnovice = novice.substring(2);\n\nexport const experience = {\n expert: expert,\n proficient: proficient,\n novice: novice\n}\n\nexport const mainLanguages = [\n {\n level: mainLang.js.level,\n id: mainLang.js.id,\n associatedLang: js,\n src: \"images/experience/js-logo.svg\",\n alt: \"programming language logo for JavaScript\"\n },\n {\n level: mainLang.py.level,\n id: mainLang.py.id,\n associatedLang: py,\n src: \"images/experience/python-logo.svg\",\n alt: \"programming language logo for Python\"\n },\n // {\n // level: mainLang.swift.level,\n // id: mainLang.swift.id,\n // associatedLang: swift,\n // src: \"images/experience/swift-logo.png\",\n // alt: \"programming language logo for Swift\"\n // },\n {\n level: mainLang.go.level,\n id: mainLang.go.id,\n associatedLang: go,\n src: \"images/experience/go-logo.png\",\n alt: \"programming language logo for Golang\"\n },\n {\n level: mainLang.ts.level,\n id: mainLang.ts.id,\n associatedLang: ts,\n src: \"images/experience/Typescript_logo.png\",\n alt: \"programming language logo for TypeScript\"\n },\n // {\n // level: mainLang.java.level,\n // id: mainLang.java.id,\n // associatedLang: java,\n // src: \"images/experience/java-logo.png\",\n // alt: \"programming language logo for Java\"\n // },\n // {\n // level: mainLang.rb.level,\n // id: mainLang.rb.id,\n // associatedLang: rb,\n // src: \"images/experience/ruby-logo.svg\",\n // alt: \"The Ruby Logo for the computer Science programming language\"\n // },\n // {\n // level: mainLang.c_sharp.level,\n // id: mainLang.c_sharp.id,\n // associatedLang: c_Sharp,\n // src: \"images/experience/c-sharp.svg\",\n // alt: \"The C# Logo for the computer Science programming language\"\n // }\n];","import React from 'react';\n\n//components\nimport ProjectContainer from './experience/projects/ProjectContainer';\nimport MainLangContainer from './experience/mainLang/MainLangContainer';\nimport ExtendSkills from './experience/extendSkills/ExtendSkills';\nimport Header from './Header';\n\n//data\nimport { ProProj, PersonalProj, TutorialProj } from '../data/projects';\nimport {mainLanguages, experience} from '../data/experiencePgSkillSort';\n\nconst Projects = () => (\n
\n \n
Engineering Positions
\n \n \n \n
Personal Projects
\n \n \n \n
Tutorial Projects Taken To The Next Level
\n \n \n
\n);\n\nconst Experience = () => (\n
\n \n \n \n \n
\n);\n\nexport default Experience;","import React from 'react';\n\nimport Header from './Header';\n\nconst ContactInfo = () => (\n
\n);\n\nexport default Contact;","import React from 'react';\n\nconst Footer = () => (\n \n);\n\nexport default Footer;","import React from 'react';\nimport {\n HashRouter,\n Route,\n Switch\n} from 'react-router-dom';\n\n// Components\nimport About from './About';\nimport Home from './Home';\nimport Education from './Education';\nimport Experience from './Experience';\nimport Contact from './Contact';\nimport Footer from './Footer';\n\nconst App = () => (\n \n
\n \n \n \n \n \n \n \n \n \n
\n \n);\n\nexport default App;\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' },\n })\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready\n .then(registration => {\n registration.unregister();\n })\n .catch(error => {\n console.error(error.message);\n });\n }\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport 'bootstrap/dist/css/bootstrap.min.css';\nimport './css/index.css';\nimport App from './components/App';\nimport * as serviceWorker from './serviceWorker';\n// import './js/javascript.js';\n\nReactDOM.render(\n \n \n ,\n document.getElementById('root')\n);\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n"],"names":["reactIs","require","REACT_STATICS","childContextTypes","contextType","contextTypes","defaultProps","displayName","getDefaultProps","getDerivedStateFromError","getDerivedStateFromProps","mixins","propTypes","type","KNOWN_STATICS","name","length","prototype","caller","callee","arguments","arity","MEMO_STATICS","compare","TYPE_STATICS","getStatics","component","isMemo","ForwardRef","render","Memo","defineProperty","Object","getOwnPropertyNames","getOwnPropertySymbols","getOwnPropertyDescriptor","getPrototypeOf","objectPrototype","module","exports","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","keys","concat","targetStatics","sourceStatics","i","key","descriptor","e","hasOwnProperty","propIsEnumerable","propertyIsEnumerable","assign","test1","String","test2","fromCharCode","map","n","join","test3","split","forEach","letter","err","shouldUseNative","target","source","from","symbols","to","val","undefined","TypeError","toObject","s","call","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","props","propName","componentName","location","propFullName","secret","Error","getShim","isRequired","ReactPropTypes","array","bigint","bool","func","number","object","string","symbol","any","arrayOf","element","elementType","instanceOf","node","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","PropTypes","aa","r","u","a","b","c","encodeURIComponent","ba","d","f","g","h","k","l","Array","slice","apply","m","this","onError","da","ea","fa","ha","ia","ja","la","ma","na","oa","currentTarget","ka","pa","qa","ra","indexOf","sa","extractEvents","eventTypes","ta","phasedRegistrationNames","ua","registrationName","va","wa","dependencies","xa","ya","window","document","createElement","za","Aa","Ba","Ca","stateNode","Da","push","Ea","Fa","Ga","Ha","Ia","Ja","Ka","La","Ma","Na","Oa","Pa","Qa","v","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","propertyName","sanitizeURL","C","toLowerCase","Ua","Va","toUpperCase","replace","xlinkHref","Wa","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","Xa","Sa","isNaN","Ta","test","Ra","removeAttribute","setAttribute","setAttributeNS","ReactCurrentDispatcher","current","ReactCurrentBatchConfig","suspense","Ya","E","Symbol","for","Za","$a","ab","bb","cb","db","eb","fb","gb","hb","ib","jb","kb","lb","mb","iterator","nb","pb","$$typeof","_status","_result","qb","tag","_debugOwner","_debugSource","fileName","lineNumber","return","rb","sb","nodeName","xb","_valueTracker","constructor","get","set","configurable","enumerable","getValue","setValue","stopTracking","tb","yb","checked","value","zb","defaultChecked","defaultValue","_wrapperState","initialChecked","Ab","initialValue","controlled","Bb","Cb","Db","Eb","ownerDocument","activeElement","Gb","children","Children","Fb","Hb","options","selected","defaultSelected","disabled","Ib","dangerouslySetInnerHTML","Jb","isArray","Kb","Lb","textContent","Mb","Nb","Ob","Pb","Qb","namespaceURI","innerHTML","valueOf","toString","firstChild","removeChild","appendChild","MSApp","execUnsafeLocalFunction","Rb","lastChild","nodeType","nodeValue","Sb","Tb","animationend","animationiteration","animationstart","transitionend","Ub","Vb","Wb","style","animation","transition","Xb","Yb","Zb","$b","ac","bc","WeakMap","Map","cc","dc","alternate","effectTag","ec","memoizedState","dehydrated","fc","hc","child","sibling","gc","ic","jc","kc","lc","_dispatchListeners","_dispatchInstances","isPropagationStopped","isPersistent","release","mc","nc","srcElement","correspondingUseElement","parentNode","oc","pc","qc","topLevelType","nativeEvent","targetInst","ancestors","rc","pop","eventSystemFlags","sc","containerInfo","tc","uc","has","vc","F","wc","xc","yc","zc","Ac","Bc","Cc","Dc","Ec","Fc","Gc","Hc","Ic","Kc","blockedOn","container","Lc","delete","pointerId","Mc","Nc","Pc","unstable_runWithPriority","priority","hydrate","Qc","Rc","Sc","Tc","shift","Uc","unstable_scheduleCallback","unstable_NormalPriority","Vc","Wc","Yc","Zc","$c","ad","bubbled","captured","eventPriority","bd","cd","dd","unstable_UserBlockingPriority","ed","fd","gd","bind","hd","id","addEventListener","Oc","jd","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","kd","ld","trim","md","setProperty","charAt","substring","nd","menuitem","area","base","br","col","embed","hr","img","input","keygen","link","meta","param","track","wbr","od","pd","is","qd","rd","sd","td","body","ud","vd","offset","nextSibling","wd","contains","compareDocumentPosition","xd","HTMLIFrameElement","contentWindow","href","yd","contentEditable","zd","Ad","Bd","Cd","Dd","Ed","Fd","autoFocus","Gd","__html","Hd","setTimeout","Id","clearTimeout","Jd","Kd","previousSibling","data","Ld","Math","random","Md","Nd","Od","Pd","Qd","Rd","Sd","Td","dispatchConfig","Ud","_targetInst","Vd","Wd","Xd","Yd","Zd","$d","ae","be","ce","G","Interface","isDefaultPrevented","defaultPrevented","returnValue","ee","eventPool","fe","destructor","de","getPooled","preventDefault","stopPropagation","cancelBubble","persist","eventPhase","bubbles","cancelable","timeStamp","Date","now","isTrusted","extend","ge","he","ie","je","ke","documentMode","le","me","ne","oe","beforeInput","compositionEnd","compositionStart","compositionUpdate","pe","qe","keyCode","re","detail","se","ve","locale","which","te","ctrlKey","altKey","metaKey","char","ue","we","color","date","datetime","email","month","password","range","search","tel","text","time","url","week","xe","ye","change","ze","Ae","Be","Ce","De","Ee","Fe","Ge","detachEvent","He","Ie","attachEvent","Je","Ke","Le","Me","_isInputEventSupported","Ne","view","Oe","Alt","Control","Meta","Shift","Pe","getModifierState","Qe","Re","Se","Te","Ue","Ve","screenX","screenY","clientX","clientY","pageX","pageY","shiftKey","button","buttons","relatedTarget","fromElement","toElement","movementX","movementY","We","width","height","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Xe","mouseEnter","mouseLeave","pointerEnter","pointerLeave","Ye","defaultView","parentWindow","p","$e","af","bf","cf","df","select","ef","ff","gf","hf","jf","start","selectionStart","end","selectionEnd","anchorNode","getSelection","anchorOffset","focusNode","focusOffset","kf","onSelect","lf","animationName","elapsedTime","pseudoElement","mf","clipboardData","nf","of","charCode","pf","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","qf","rf","repeat","sf","dataTransfer","tf","touches","targetTouches","changedTouches","uf","vf","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","wf","SimpleEventPlugin","EnterLeaveEventPlugin","ChangeEventPlugin","SelectEventPlugin","BeforeInputEventPlugin","yf","zf","H","I","Af","J","K","Bf","Cf","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","L","Df","Ef","Ff","getChildContext","Gf","__reactInternalMemoizedMergedChildContext","Hf","If","Jf","Kf","unstable_cancelCallback","Lf","unstable_requestPaint","Mf","unstable_now","Nf","unstable_getCurrentPriorityLevel","Of","unstable_ImmediatePriority","Pf","Qf","Rf","unstable_LowPriority","Sf","unstable_IdlePriority","Tf","Uf","unstable_shouldYield","Vf","Wf","Xf","Yf","Zf","$f","ag","bg","cg","dg","eg","fg","gg","hg","ig","jg","kg","lg","mg","ng","og","_context","_currentValue","pg","childExpirationTime","qg","firstContext","expirationTime","rg","sg","context","observedBits","next","responders","tg","ug","updateQueue","baseState","baseQueue","shared","pending","effects","vg","wg","suspenseConfig","payload","callback","xg","yg","zg","x","z","ca","Ag","D","t","Bg","Cg","Dg","Eg","Component","refs","Fg","Jg","isMounted","_reactInternalFiber","enqueueSetState","Gg","Hg","Ig","enqueueReplaceState","enqueueForceUpdate","Kg","shouldComponentUpdate","isPureReactComponent","Lg","state","updater","Mg","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","Ng","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","Og","Pg","ref","_owner","_stringRef","Qg","Rg","lastEffect","nextEffect","firstEffect","index","Sg","Tg","mode","Ug","implementation","Vg","Wg","y","A","q","done","Xg","Yg","Zg","$g","ah","bh","ch","dh","documentElement","tagName","eh","fh","gh","M","hh","memoizedProps","revealOrder","ih","responder","jh","kh","lh","N","O","P","mh","Q","nh","oh","ph","qh","rh","sh","th","queue","uh","vh","wh","lastRenderedReducer","action","eagerReducer","eagerState","lastRenderedState","dispatch","xh","yh","zh","Ah","create","destroy","deps","Bh","Ch","Dh","Eh","Fh","Gh","Hh","Ih","Jh","Kh","Lh","Mh","Nh","readContext","useCallback","useContext","useEffect","useImperativeHandle","useLayoutEffect","useMemo","useReducer","useRef","useState","useDebugValue","useResponder","useDeferredValue","useTransition","Oh","Ph","Qh","Rh","Sh","Th","pendingProps","Uh","Vh","Wh","Xh","Yh","ReactCurrentOwner","R","Zh","$h","ai","bi","ci","di","ei","fi","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","gi","hi","pendingContext","ni","oi","pi","qi","ii","retryTime","ji","fallback","unstable_avoidThisFallback","ki","li","isBackwards","rendering","renderingStartTime","last","tail","tailExpiration","tailMode","mi","ri","si","wasMultiple","multiple","onClick","onclick","size","createElementNS","createTextNode","S","ti","ui","vi","wi","T","xi","U","yi","zi","Ai","stack","Bi","WeakSet","Set","Ci","console","error","Fi","Ei","Gi","__reactInternalSnapshotBeforeUpdate","Hi","Ii","Ji","focus","Ki","Li","componentWillUnmount","Di","Mi","Ni","Oi","Pi","Qi","Ri","instance","insertBefore","_reactRootContainer","Si","Ti","display","Ui","Vi","add","then","Wi","Xi","Yi","Zi","$i","componentDidCatch","aj","componentStack","Rj","bj","ceil","cj","dj","V","ej","fj","gj","hj","ij","jj","W","X","kj","lj","mj","nj","oj","pj","Y","qj","rj","sj","tj","uj","vj","wj","timeoutMs","xj","yj","Z","zj","lastExpiredTime","Aj","firstPendingTime","lastPingedTime","nextKnownPendingLevel","callbackExpirationTime","callbackPriority","callbackNode","Bj","timeout","Cj","Dj","Ej","Fj","Gj","Hj","finishedWork","finishedExpirationTime","lastSuspendedTime","Ij","timeoutHandle","Jj","busyMinDurationMs","busyDelayMs","Kj","Mj","Nj","pingCache","Oj","w","ub","Pj","Xc","Qj","Sj","firstSuspendedTime","rangeCount","wb","activeElementDetached","focusedElem","selectionRange","Tj","B","min","createRange","setStart","removeAllRanges","addRange","setEnd","left","scrollLeft","top","scrollTop","vb","Uj","Vj","Wj","hidden","_ctor","default","ob","Xj","_calculateChangedBits","unstable_observedBits","Zj","isReactComponent","pendingChildren","ak","bk","ck","dk","ek","fk","Jc","_internalRoot","gk","ik","hasAttribute","hk","kk","jk","unmount","querySelectorAll","JSON","stringify","form","Lj","lk","Events","findFiberByHostInstance","__REACT_DEVTOOLS_GLOBAL_HOOK__","isDisabled","supportsFiber","inject","onCommitFiberRoot","onCommitFiberUnmount","Yj","overrideHookState","overrideProps","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","bundleType","version","rendererPackageName","createPortal","findDOMNode","flushSync","unmountComponentAtNode","unstable_batchedUpdates","unstable_createPortal","unstable_renderSubtreeIntoContainer","checkDCE","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Element","Fragment","Lazy","Portal","Profiler","StrictMode","Suspense","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","arr","isarray","pathToRegexp","parse","compile","str","tokensToFunction","tokensToRegExp","PATH_REGEXP","RegExp","res","tokens","path","defaultDelimiter","delimiter","exec","escaped","prefix","capture","group","modifier","asterisk","partial","optional","pattern","escapeGroup","escapeString","substr","encodeURIComponentPretty","encodeURI","charCodeAt","matches","flags","obj","opts","encode","pretty","token","segment","j","attachKeys","sensitive","strict","route","endsWithDelimiter","groups","match","regexpToRegexp","parts","arrayToRegexp","stringToRegexp","setState","forceUpdate","__self","__source","result","keyPrefix","count","escape","IsSomeRendererActing","toArray","only","PureComponent","cloneElement","createContext","_currentValue2","_threadCount","Provider","Consumer","createFactory","createRef","forwardRef","isValidElement","lazy","memo","MessageChannel","unstable_forceFrameRate","performance","cancelAnimationFrame","requestAnimationFrame","floor","port2","port1","onmessage","postMessage","sortIndex","startTime","priorityLevel","unstable_Profiling","unstable_continueExecution","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","delay","unstable_wrapCallback","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","getter","__esModule","definition","o","globalThis","Function","prop","_setPrototypeOf","setPrototypeOf","__proto__","_inheritsLoose","subClass","superClass","isAbsolute","pathname","spliceOne","list","hasTrailingSlash","toParts","fromParts","isToAbs","isFromAbs","mustEndAbs","up","part","unshift","isProduction","process","condition","message","addLeadingSlash","stripLeadingSlash","stripBasename","hasBasename","stripTrailingSlash","createPath","hash","createLocation","currentLocation","hashIndex","searchIndex","parsePath","_extends","decodeURI","URIError","resolvePathname","createTransitionManager","prompt","listeners","setPrompt","nextPrompt","confirmTransitionTo","getUserConfirmation","appendListener","fn","isActive","listener","filter","item","notifyListeners","_len","args","_key","canUseDOM","getConfirmation","confirm","PopStateEvent","HashChangeEvent","getHistoryState","history","createBrowserHistory","invariant","globalHistory","canUseHistory","navigator","userAgent","supportsHistory","needsHashChangeListener","_props","_props$forceRefresh","forceRefresh","_props$getUserConfirm","_props$keyLength","keyLength","basename","getDOMLocation","historyState","_ref","_window$location","createKey","transitionManager","nextState","handlePopState","event","isExtraneousPopstateEvent","handlePop","handleHashChange","forceNextPop","ok","fromLocation","toLocation","toIndex","allKeys","fromIndex","delta","go","revertPop","initialLocation","createHref","listenerCount","checkDOMListeners","removeEventListener","isBlocked","pushState","prevIndex","nextKeys","replaceState","goBack","goForward","block","unblock","listen","unlisten","HashChangeEvent$1","HashPathCoders","hashbang","encodePath","decodePath","noslash","slash","stripHash","getHashPath","replaceHashPath","createHashHistory","_props$hashType","hashType","_HashPathCoders$hashT","ignorePath","encodedPath","prevLocation","allPaths","lastIndexOf","baseTag","querySelector","getAttribute","pushHashPath","nextPaths","clamp","lowerBound","upperBound","max","MAX_SIGNED_31_BIT_INT","commonjsGlobal","global","React","calculateChangedBits","_Provider$childContex","_Consumer$contextType","contextProp","getUniqueId","_Component","_this","emitter","handlers","on","handler","off","newValue","changedBits","createEventEmitter","_proto","nextProps","oldValue","_Component2","_this2","onUpdate","_proto2","excluded","sourceKeys","createNamedContext","historyContext","Router","_isMounted","_pendingLocation","staticContext","computeRootMatch","params","isExact","RouterContext","HistoryContext","cache","cacheLimit","cacheCount","matchPath","reduce","matched","cacheKey","pathCache","regexp","compilePath","values","Route","computedMatch","createURL","staticHandler","methodName","noop","Switch","HashRouter","createHistory","resolveToLocation","normalizeToLocation","forwardRefShim","LinkAnchor","forwardedRef","innerRef","navigate","rest","ex","isModifiedEvent","Link","ariaCurrent","activeClassName","activeStyle","classNameProp","className","isActiveProp","locationProp","styleProp","escapedPath","classnames","joinClassnames","page","h4","MainContent","src","alt","secondUl","skills","moreInfo","credentials","skill","liCredentailTag","aText","title","content","extendedInfo","school","moreInfoLen","schools","edSection","expertise","mainLang","js","level","py","ts","platform","fs","wma","wm","tech","langType","goScrape","goTempGen","goTest","goBenchmark","flask","flaskWTF","jinja2","express","heroku","jade","pug","bootstrap","boostrIcon","react","reactBootstrap","reactRouter","dom","mongo","mongoose","pyTest","dotenv","html","css","bitBucket","git","gitHub","gitHubPg","bs4","selenium","request","CI_CD","resourceOverride","charlesProxy","postman","jira","adobe","photo","analytics","cja","marketing","experience","dataCollection","adminConsole","webSDK","dream","muse","trello","graphQL","localStor","npm","yarn","chromeDev","google","font","analytic","adsense","cloud","wordPr","phaser","jquery","webVtt","mediaEl","json","jsx","p5","shell","unixShell","powerSh","terminal","wix","goDaddy","wireFrames","figma","asyncAwait","http","unixCLI","aws","cloud9","testDev","dataAnaly","databases","webAccess","webOptimiz","preformOptimiz","flexbox","responsive","balsamiq","sql","vSCode","adam","brackets","vS","ftp","fZilla","gitHubCP","windows","mac","Linux","api","fetch","garageband","milkyTrack","imove","markdown","education","TutorialCheck","tutorial","codeLink","projectLink","platforms","paragraph1","paragraph2","projects","project","associatedLang","language","expert","proficient","novice","ProProj","PersonalProj","TutorialProj","java","swift","c_Sharp","key1","key2","key3","mainLanguages","Projects","ContactInfo","GMap","frameborder","allowfullscreen","Home","About","Education","Experience","Contact","Boolean","hostname","ReactDOM","getElementById","serviceWorker","ready","registration","unregister","catch"],"sourceRoot":""}
\ No newline at end of file
diff --git a/static/js/main.039285ef.js b/static/js/main.3c2f456c.js
similarity index 80%
rename from static/js/main.039285ef.js
rename to static/js/main.3c2f456c.js
index 35b4252..ae2a476 100644
--- a/static/js/main.039285ef.js
+++ b/static/js/main.3c2f456c.js
@@ -1,3 +1,3 @@
-/*! For license information please see main.039285ef.js.LICENSE.txt */
-!function(){var e={110:function(e,t,n){"use strict";var r=n(441),i={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},a={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},o={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},l={};function u(e){return r.isMemo(e)?o:l[e.$$typeof]||i}l[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},l[r.Memo]=o;var c=Object.defineProperty,s=Object.getOwnPropertyNames,f=Object.getOwnPropertySymbols,d=Object.getOwnPropertyDescriptor,p=Object.getPrototypeOf,m=Object.prototype;e.exports=function e(t,n,r){if("string"!==typeof n){if(m){var i=p(n);i&&i!==m&&e(t,i,r)}var o=s(n);f&&(o=o.concat(f(n)));for(var l=u(t),h=u(n),g=0;gt}return!1}(t,n,i,r)&&(n=null),r||null===i?function(e){return!!V.call(B,e)||!V.call($,e)&&(W.test(e)?B[e]=!0:($[e]=!0,!1))}(t)&&(null===n?e.removeAttribute(t):e.setAttribute(t,""+n)):i.mustUseProperty?e[i.propertyName]=null===n?3!==i.type&&"":n:(t=i.attributeName,r=i.attributeNamespace,null===n?e.removeAttribute(t):(n=3===(i=i.type)||4===i&&!0===n?"":""+n,r?e.setAttributeNS(r,t,n):e.setAttribute(t,n))))}Y.hasOwnProperty("ReactCurrentDispatcher")||(Y.ReactCurrentDispatcher={current:null}),Y.hasOwnProperty("ReactCurrentBatchConfig")||(Y.ReactCurrentBatchConfig={suspense:null});var X=/^(.*)[\\\/]/,Z="function"===typeof Symbol&&Symbol.for,ee=Z?Symbol.for("react.element"):60103,te=Z?Symbol.for("react.portal"):60106,ne=Z?Symbol.for("react.fragment"):60107,re=Z?Symbol.for("react.strict_mode"):60108,ie=Z?Symbol.for("react.profiler"):60114,ae=Z?Symbol.for("react.provider"):60109,oe=Z?Symbol.for("react.context"):60110,le=Z?Symbol.for("react.concurrent_mode"):60111,ue=Z?Symbol.for("react.forward_ref"):60112,ce=Z?Symbol.for("react.suspense"):60113,se=Z?Symbol.for("react.suspense_list"):60120,fe=Z?Symbol.for("react.memo"):60115,de=Z?Symbol.for("react.lazy"):60116,pe=Z?Symbol.for("react.block"):60121,me="function"===typeof Symbol&&Symbol.iterator;function he(e){return null===e||"object"!==typeof e?null:"function"===typeof(e=me&&e[me]||e["@@iterator"])?e:null}function ge(e){if(null==e)return null;if("function"===typeof e)return e.displayName||e.name||null;if("string"===typeof e)return e;switch(e){case ne:return"Fragment";case te:return"Portal";case ie:return"Profiler";case re:return"StrictMode";case ce:return"Suspense";case se:return"SuspenseList"}if("object"===typeof e)switch(e.$$typeof){case oe:return"Context.Consumer";case ae:return"Context.Provider";case ue:var t=e.render;return t=t.displayName||t.name||"",e.displayName||(""!==t?"ForwardRef("+t+")":"ForwardRef");case fe:return ge(e.type);case pe:return ge(e.render);case de:if(e=1===e._status?e._result:null)return ge(e)}return null}function ve(e){var t="";do{e:switch(e.tag){case 3:case 4:case 6:case 7:case 10:case 9:var n="";break e;default:var r=e._debugOwner,i=e._debugSource,a=ge(e.type);n=null,r&&(n=ge(r.type)),r=a,a="",i?a=" (at "+i.fileName.replace(X,"")+":"+i.lineNumber+")":n&&(a=" (created by "+n+")"),n="\n in "+(r||"Unknown")+a}t+=n,e=e.return}while(e);return t}function ye(e){switch(typeof e){case"boolean":case"number":case"object":case"string":case"undefined":return e;default:return""}}function be(e){var t=e.type;return(e=e.nodeName)&&"input"===e.toLowerCase()&&("checkbox"===t||"radio"===t)}function we(e){e._valueTracker||(e._valueTracker=function(e){var t=be(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&"undefined"!==typeof n&&"function"===typeof n.get&&"function"===typeof n.set){var i=n.get,a=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return i.call(this)},set:function(e){r=""+e,a.call(this,e)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(e){r=""+e},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}(e))}function ke(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=be(e)?e.checked?"true":"false":e.value),(e=r)!==n&&(t.setValue(e),!0)}function Ee(e,t){var n=t.checked;return i({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=n?n:e._wrapperState.initialChecked})}function Te(e,t){var n=null==t.defaultValue?"":t.defaultValue,r=null!=t.checked?t.checked:t.defaultChecked;n=ye(null!=t.value?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:"checkbox"===t.type||"radio"===t.type?null!=t.checked:null!=t.value}}function xe(e,t){null!=(t=t.checked)&&J(e,"checked",t,!1)}function Se(e,t){xe(e,t);var n=ye(t.value),r=t.type;if(null!=n)"number"===r?(0===n&&""===e.value||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if("submit"===r||"reset"===r)return void e.removeAttribute("value");t.hasOwnProperty("value")?Pe(e,t.type,n):t.hasOwnProperty("defaultValue")&&Pe(e,t.type,ye(t.defaultValue)),null==t.checked&&null!=t.defaultChecked&&(e.defaultChecked=!!t.defaultChecked)}function Ce(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!("submit"!==r&&"reset"!==r||void 0!==t.value&&null!==t.value))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}""!==(n=e.name)&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,""!==n&&(e.name=n)}function Pe(e,t,n){"number"===t&&e.ownerDocument.activeElement===e||(null==n?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}function _e(e,t){return e=i({children:void 0},t),(t=function(e){var t="";return r.Children.forEach(e,(function(e){null!=e&&(t+=e)})),t}(t.children))&&(e.children=t),e}function Ne(e,t,n,r){if(e=e.options,t){t={};for(var i=0;i=n.length))throw Error(o(93));n=n[0]}t=n}null==t&&(t=""),n=t}e._wrapperState={initialValue:ye(n)}}function Re(e,t){var n=ye(t.value),r=ye(t.defaultValue);null!=n&&((n=""+n)!==e.value&&(e.value=n),null==t.defaultValue&&e.defaultValue!==n&&(e.defaultValue=n)),null!=r&&(e.defaultValue=""+r)}function je(e){var t=e.textContent;t===e._wrapperState.initialValue&&""!==t&&null!==t&&(e.value=t)}var De="http://www.w3.org/1999/xhtml",Ae="http://www.w3.org/2000/svg";function Ie(e){switch(e){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function Me(e,t){return null==e||"http://www.w3.org/1999/xhtml"===e?Ie(t):"http://www.w3.org/2000/svg"===e&&"foreignObject"===t?"http://www.w3.org/1999/xhtml":e}var Fe,ze,Ue=(ze=function(e,t){if(e.namespaceURI!==Ae||"innerHTML"in e)e.innerHTML=t;else{for((Fe=Fe||document.createElement("div")).innerHTML="",t=Fe.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}},"undefined"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(e,t,n,r){MSApp.execUnsafeLocalFunction((function(){return ze(e,t)}))}:ze);function He(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&3===n.nodeType)return void(n.nodeValue=t)}e.textContent=t}function We(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n}var Ve={animationend:We("Animation","AnimationEnd"),animationiteration:We("Animation","AnimationIteration"),animationstart:We("Animation","AnimationStart"),transitionend:We("Transition","TransitionEnd")},$e={},Be={};function Qe(e){if($e[e])return $e[e];if(!Ve[e])return e;var t,n=Ve[e];for(t in n)if(n.hasOwnProperty(t)&&t in Be)return $e[e]=n[t];return e}P&&(Be=document.createElement("div").style,"AnimationEvent"in window||(delete Ve.animationend.animation,delete Ve.animationiteration.animation,delete Ve.animationstart.animation),"TransitionEvent"in window||delete Ve.transitionend.transition);var Ge=Qe("animationend"),qe=Qe("animationiteration"),Ke=Qe("animationstart"),Ye=Qe("transitionend"),Je="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),Xe=new("function"===typeof WeakMap?WeakMap:Map);function Ze(e){var t=Xe.get(e);return void 0===t&&(t=new Map,Xe.set(e,t)),t}function et(e){var t=e,n=e;if(e.alternate)for(;t.return;)t=t.return;else{e=t;do{0!==(1026&(t=e).effectTag)&&(n=t.return),e=t.return}while(e)}return 3===t.tag?n:null}function tt(e){if(13===e.tag){var t=e.memoizedState;if(null===t&&(null!==(e=e.alternate)&&(t=e.memoizedState)),null!==t)return t.dehydrated}return null}function nt(e){if(et(e)!==e)throw Error(o(188))}function rt(e){if(e=function(e){var t=e.alternate;if(!t){if(null===(t=et(e)))throw Error(o(188));return t!==e?null:e}for(var n=e,r=t;;){var i=n.return;if(null===i)break;var a=i.alternate;if(null===a){if(null!==(r=i.return)){n=r;continue}break}if(i.child===a.child){for(a=i.child;a;){if(a===n)return nt(i),e;if(a===r)return nt(i),t;a=a.sibling}throw Error(o(188))}if(n.return!==r.return)n=i,r=a;else{for(var l=!1,u=i.child;u;){if(u===n){l=!0,n=i,r=a;break}if(u===r){l=!0,r=i,n=a;break}u=u.sibling}if(!l){for(u=a.child;u;){if(u===n){l=!0,n=a,r=i;break}if(u===r){l=!0,r=a,n=i;break}u=u.sibling}if(!l)throw Error(o(189))}}if(n.alternate!==r)throw Error(o(190))}if(3!==n.tag)throw Error(o(188));return n.stateNode.current===n?e:t}(e),!e)return null;for(var t=e;;){if(5===t.tag||6===t.tag)return t;if(t.child)t.child.return=t,t=t.child;else{if(t===e)break;for(;!t.sibling;){if(!t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}}return null}function it(e,t){if(null==t)throw Error(o(30));return null==e?t:Array.isArray(e)?Array.isArray(t)?(e.push.apply(e,t),e):(e.push(t),e):Array.isArray(t)?[e].concat(t):[e,t]}function at(e,t,n){Array.isArray(e)?e.forEach(t,n):e&&t.call(n,e)}var ot=null;function lt(e){if(e){var t=e._dispatchListeners,n=e._dispatchInstances;if(Array.isArray(t))for(var r=0;rft.length&&ft.push(e)}function pt(e,t,n,r){if(ft.length){var i=ft.pop();return i.topLevelType=e,i.eventSystemFlags=r,i.nativeEvent=t,i.targetInst=n,i}return{topLevelType:e,eventSystemFlags:r,nativeEvent:t,targetInst:n,ancestors:[]}}function mt(e){var t=e.targetInst,n=t;do{if(!n){e.ancestors.push(n);break}var r=n;if(3===r.tag)r=r.stateNode.containerInfo;else{for(;r.return;)r=r.return;r=3!==r.tag?null:r.stateNode.containerInfo}if(!r)break;5!==(t=n.tag)&&6!==t||e.ancestors.push(n),n=jn(r)}while(n);for(n=0;n=t)return{node:r,offset:t-e};e=n}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=dn(r)}}function mn(e,t){return!(!e||!t)&&(e===t||(!e||3!==e.nodeType)&&(t&&3===t.nodeType?mn(e,t.parentNode):"contains"in e?e.contains(t):!!e.compareDocumentPosition&&!!(16&e.compareDocumentPosition(t))))}function hn(){for(var e=window,t=fn();t instanceof e.HTMLIFrameElement;){try{var n="string"===typeof t.contentWindow.location.href}catch(r){n=!1}if(!n)break;t=fn((e=t.contentWindow).document)}return t}function gn(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&("input"===t&&("text"===e.type||"search"===e.type||"tel"===e.type||"url"===e.type||"password"===e.type)||"textarea"===t||"true"===e.contentEditable)}var vn="$",yn="/$",bn="$?",wn="$!",kn=null,En=null;function Tn(e,t){switch(e){case"button":case"input":case"select":case"textarea":return!!t.autoFocus}return!1}function xn(e,t){return"textarea"===e||"option"===e||"noscript"===e||"string"===typeof t.children||"number"===typeof t.children||"object"===typeof t.dangerouslySetInnerHTML&&null!==t.dangerouslySetInnerHTML&&null!=t.dangerouslySetInnerHTML.__html}var Sn="function"===typeof setTimeout?setTimeout:void 0,Cn="function"===typeof clearTimeout?clearTimeout:void 0;function Pn(e){for(;null!=e;e=e.nextSibling){var t=e.nodeType;if(1===t||3===t)break}return e}function _n(e){e=e.previousSibling;for(var t=0;e;){if(8===e.nodeType){var n=e.data;if(n===vn||n===wn||n===bn){if(0===t)return e;t--}else n===yn&&t++}e=e.previousSibling}return null}var Nn=Math.random().toString(36).slice(2),On="__reactInternalInstance$"+Nn,Ln="__reactEventHandlers$"+Nn,Rn="__reactContainere$"+Nn;function jn(e){var t=e[On];if(t)return t;for(var n=e.parentNode;n;){if(t=n[Rn]||n[On]){if(n=t.alternate,null!==t.child||null!==n&&null!==n.child)for(e=_n(e);null!==e;){if(n=e[On])return n;e=_n(e)}return t}n=(e=n).parentNode}return null}function Dn(e){return!(e=e[On]||e[Rn])||5!==e.tag&&6!==e.tag&&13!==e.tag&&3!==e.tag?null:e}function An(e){if(5===e.tag||6===e.tag)return e.stateNode;throw Error(o(33))}function In(e){return e[Ln]||null}function Mn(e){do{e=e.return}while(e&&5!==e.tag);return e||null}function Fn(e,t){var n=e.stateNode;if(!n)return null;var r=m(n);if(!r)return null;n=r[t];e:switch(t){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(r=!r.disabled)||(r=!("button"===(e=e.type)||"input"===e||"select"===e||"textarea"===e)),e=!r;break e;default:e=!1}if(e)return null;if(n&&"function"!==typeof n)throw Error(o(231,t,typeof n));return n}function zn(e,t,n){(t=Fn(e,n.dispatchConfig.phasedRegistrationNames[t]))&&(n._dispatchListeners=it(n._dispatchListeners,t),n._dispatchInstances=it(n._dispatchInstances,e))}function Un(e){if(e&&e.dispatchConfig.phasedRegistrationNames){for(var t=e._targetInst,n=[];t;)n.push(t),t=Mn(t);for(t=n.length;0this.eventPool.length&&this.eventPool.push(e)}function Zn(e){e.eventPool=[],e.getPooled=Jn,e.release=Xn}i(Yn.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&&(e.preventDefault?e.preventDefault():"unknown"!==typeof e.returnValue&&(e.returnValue=!1),this.isDefaultPrevented=qn)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():"unknown"!==typeof e.cancelBubble&&(e.cancelBubble=!0),this.isPropagationStopped=qn)},persist:function(){this.isPersistent=qn},isPersistent:Kn,destructor:function(){var e,t=this.constructor.Interface;for(e in t)this[e]=null;this.nativeEvent=this._targetInst=this.dispatchConfig=null,this.isPropagationStopped=this.isDefaultPrevented=Kn,this._dispatchInstances=this._dispatchListeners=null}}),Yn.Interface={type:null,target:null,currentTarget:function(){return null},eventPhase:null,bubbles:null,cancelable:null,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:null,isTrusted:null},Yn.extend=function(e){function t(){}function n(){return r.apply(this,arguments)}var r=this;t.prototype=r.prototype;var a=new t;return i(a,n.prototype),n.prototype=a,n.prototype.constructor=n,n.Interface=i({},r.Interface,e),n.extend=r.extend,Zn(n),n},Zn(Yn);var er=Yn.extend({data:null}),tr=Yn.extend({data:null}),nr=[9,13,27,32],rr=P&&"CompositionEvent"in window,ir=null;P&&"documentMode"in document&&(ir=document.documentMode);var ar=P&&"TextEvent"in window&&!ir,or=P&&(!rr||ir&&8=ir),lr=String.fromCharCode(32),ur={beforeInput:{phasedRegistrationNames:{bubbled:"onBeforeInput",captured:"onBeforeInputCapture"},dependencies:["compositionend","keypress","textInput","paste"]},compositionEnd:{phasedRegistrationNames:{bubbled:"onCompositionEnd",captured:"onCompositionEndCapture"},dependencies:"blur compositionend keydown keypress keyup mousedown".split(" ")},compositionStart:{phasedRegistrationNames:{bubbled:"onCompositionStart",captured:"onCompositionStartCapture"},dependencies:"blur compositionstart keydown keypress keyup mousedown".split(" ")},compositionUpdate:{phasedRegistrationNames:{bubbled:"onCompositionUpdate",captured:"onCompositionUpdateCapture"},dependencies:"blur compositionupdate keydown keypress keyup mousedown".split(" ")}},cr=!1;function sr(e,t){switch(e){case"keyup":return-1!==nr.indexOf(t.keyCode);case"keydown":return 229!==t.keyCode;case"keypress":case"mousedown":case"blur":return!0;default:return!1}}function fr(e){return"object"===typeof(e=e.detail)&&"data"in e?e.data:null}var dr=!1;var pr={eventTypes:ur,extractEvents:function(e,t,n,r){var i;if(rr)e:{switch(e){case"compositionstart":var a=ur.compositionStart;break e;case"compositionend":a=ur.compositionEnd;break e;case"compositionupdate":a=ur.compositionUpdate;break e}a=void 0}else dr?sr(e,n)&&(a=ur.compositionEnd):"keydown"===e&&229===n.keyCode&&(a=ur.compositionStart);return a?(or&&"ko"!==n.locale&&(dr||a!==ur.compositionStart?a===ur.compositionEnd&&dr&&(i=Gn()):(Bn="value"in($n=r)?$n.value:$n.textContent,dr=!0)),a=er.getPooled(a,t,n,r),i?a.data=i:null!==(i=fr(n))&&(a.data=i),Vn(a),i=a):i=null,(e=ar?function(e,t){switch(e){case"compositionend":return fr(t);case"keypress":return 32!==t.which?null:(cr=!0,lr);case"textInput":return(e=t.data)===lr&&cr?null:e;default:return null}}(e,n):function(e,t){if(dr)return"compositionend"===e||!rr&&sr(e,t)?(e=Gn(),Qn=Bn=$n=null,dr=!1,e):null;switch(e){case"paste":default:return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=document.documentMode,Gr={select:{phasedRegistrationNames:{bubbled:"onSelect",captured:"onSelectCapture"},dependencies:"blur contextmenu dragend focus keydown keyup mousedown mouseup selectionchange".split(" ")}},qr=null,Kr=null,Yr=null,Jr=!1;function Xr(e,t){var n=t.window===t?t.document:9===t.nodeType?t:t.ownerDocument;return Jr||null==qr||qr!==fn(n)?null:("selectionStart"in(n=qr)&&gn(n)?n={start:n.selectionStart,end:n.selectionEnd}:n={anchorNode:(n=(n.ownerDocument&&n.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:n.anchorOffset,focusNode:n.focusNode,focusOffset:n.focusOffset},Yr&&Br(Yr,n)?null:(Yr=n,(e=Yn.getPooled(Gr.select,Kr,e,t)).type="select",e.target=qr,Vn(e),e))}var Zr={eventTypes:Gr,extractEvents:function(e,t,n,r,i,a){if(!(a=!(i=a||(r.window===r?r.document:9===r.nodeType?r:r.ownerDocument)))){e:{i=Ze(i),a=S.onSelect;for(var o=0;opi||(e.current=di[pi],di[pi]=null,pi--)}function hi(e,t){pi++,di[pi]=e.current,e.current=t}var gi={},vi={current:gi},yi={current:!1},bi=gi;function wi(e,t){var n=e.type.contextTypes;if(!n)return gi;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var i,a={};for(i in n)a[i]=t[i];return r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=a),a}function ki(e){return null!==(e=e.childContextTypes)&&void 0!==e}function Ei(){mi(yi),mi(vi)}function Ti(e,t,n){if(vi.current!==gi)throw Error(o(168));hi(vi,t),hi(yi,n)}function xi(e,t,n){var r=e.stateNode;if(e=t.childContextTypes,"function"!==typeof r.getChildContext)return n;for(var a in r=r.getChildContext())if(!(a in e))throw Error(o(108,ge(t)||"Unknown",a));return i({},n,{},r)}function Si(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||gi,bi=vi.current,hi(vi,e),hi(yi,yi.current),!0}function Ci(e,t,n){var r=e.stateNode;if(!r)throw Error(o(169));n?(e=xi(e,t,bi),r.__reactInternalMemoizedMergedChildContext=e,mi(yi),mi(vi),hi(vi,e)):mi(yi),hi(yi,n)}var Pi=a.unstable_runWithPriority,_i=a.unstable_scheduleCallback,Ni=a.unstable_cancelCallback,Oi=a.unstable_requestPaint,Li=a.unstable_now,Ri=a.unstable_getCurrentPriorityLevel,ji=a.unstable_ImmediatePriority,Di=a.unstable_UserBlockingPriority,Ai=a.unstable_NormalPriority,Ii=a.unstable_LowPriority,Mi=a.unstable_IdlePriority,Fi={},zi=a.unstable_shouldYield,Ui=void 0!==Oi?Oi:function(){},Hi=null,Wi=null,Vi=!1,$i=Li(),Bi=1e4>$i?Li:function(){return Li()-$i};function Qi(){switch(Ri()){case ji:return 99;case Di:return 98;case Ai:return 97;case Ii:return 96;case Mi:return 95;default:throw Error(o(332))}}function Gi(e){switch(e){case 99:return ji;case 98:return Di;case 97:return Ai;case 96:return Ii;case 95:return Mi;default:throw Error(o(332))}}function qi(e,t){return e=Gi(e),Pi(e,t)}function Ki(e,t,n){return e=Gi(e),_i(e,t,n)}function Yi(e){return null===Hi?(Hi=[e],Wi=_i(ji,Xi)):Hi.push(e),Fi}function Ji(){if(null!==Wi){var e=Wi;Wi=null,Ni(e)}Xi()}function Xi(){if(!Vi&&null!==Hi){Vi=!0;var e=0;try{var t=Hi;qi(99,(function(){for(;e=t&&(Io=!0),e.firstContext=null)}function ca(e,t){if(ia!==e&&!1!==t&&0!==t)if("number"===typeof t&&1073741823!==t||(ia=e,t=1073741823),t={context:e,observedBits:t,next:null},null===ra){if(null===na)throw Error(o(308));ra=t,na.dependencies={expirationTime:0,firstContext:t,responders:null}}else ra=ra.next=t;return e._currentValue}var sa=!1;function fa(e){e.updateQueue={baseState:e.memoizedState,baseQueue:null,shared:{pending:null},effects:null}}function da(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,baseQueue:e.baseQueue,shared:e.shared,effects:e.effects})}function pa(e,t){return(e={expirationTime:e,suspenseConfig:t,tag:0,payload:null,callback:null,next:null}).next=e}function ma(e,t){if(null!==(e=e.updateQueue)){var n=(e=e.shared).pending;null===n?t.next=t:(t.next=n.next,n.next=t),e.pending=t}}function ha(e,t){var n=e.alternate;null!==n&&da(n,e),null===(n=(e=e.updateQueue).baseQueue)?(e.baseQueue=t.next=t,t.next=t):(t.next=n.next,n.next=t)}function ga(e,t,n,r){var a=e.updateQueue;sa=!1;var o=a.baseQueue,l=a.shared.pending;if(null!==l){if(null!==o){var u=o.next;o.next=l.next,l.next=u}o=l,a.shared.pending=null,null!==(u=e.alternate)&&(null!==(u=u.updateQueue)&&(u.baseQueue=l))}if(null!==o){u=o.next;var c=a.baseState,s=0,f=null,d=null,p=null;if(null!==u)for(var m=u;;){if((l=m.expirationTime)s&&(s=l)}else{null!==p&&(p=p.next={expirationTime:1073741823,suspenseConfig:m.suspenseConfig,tag:m.tag,payload:m.payload,callback:m.callback,next:null}),Eu(l,m.suspenseConfig);e:{var g=e,v=m;switch(l=t,h=n,v.tag){case 1:if("function"===typeof(g=v.payload)){c=g.call(h,c,l);break e}c=g;break e;case 3:g.effectTag=-4097&g.effectTag|64;case 0:if(null===(l="function"===typeof(g=v.payload)?g.call(h,c,l):g)||void 0===l)break e;c=i({},c,l);break e;case 2:sa=!0}}null!==m.callback&&(e.effectTag|=32,null===(l=a.effects)?a.effects=[m]:l.push(m))}if(null===(m=m.next)||m===u){if(null===(l=a.shared.pending))break;m=o.next=l.next,l.next=u,a.baseQueue=o=l,a.shared.pending=null}}null===p?f=c:p.next=d,a.baseState=f,a.baseQueue=p,Tu(s),e.expirationTime=s,e.memoizedState=c}}function va(e,t,n){if(e=t.effects,t.effects=null,null!==e)for(t=0;th?(g=f,f=null):g=f.sibling;var v=p(i,f,l[h],u);if(null===v){null===f&&(f=g);break}e&&f&&null===v.alternate&&t(i,f),o=a(v,o,h),null===s?c=v:s.sibling=v,s=v,f=g}if(h===l.length)return n(i,f),c;if(null===f){for(;hg?(v=h,h=null):v=h.sibling;var b=p(i,h,y.value,c);if(null===b){null===h&&(h=v);break}e&&h&&null===b.alternate&&t(i,h),l=a(b,l,g),null===f?s=b:f.sibling=b,f=b,h=v}if(y.done)return n(i,h),s;if(null===h){for(;!y.done;g++,y=u.next())null!==(y=d(i,y.value,c))&&(l=a(y,l,g),null===f?s=y:f.sibling=y,f=y);return s}for(h=r(i,h);!y.done;g++,y=u.next())null!==(y=m(h,i,g,y.value,c))&&(e&&null!==y.alternate&&h.delete(null===y.key?g:y.key),l=a(y,l,g),null===f?s=y:f.sibling=y,f=y);return e&&h.forEach((function(e){return t(i,e)})),s}return function(e,r,a,u){var c="object"===typeof a&&null!==a&&a.type===ne&&null===a.key;c&&(a=a.props.children);var s="object"===typeof a&&null!==a;if(s)switch(a.$$typeof){case ee:e:{for(s=a.key,c=r;null!==c;){if(c.key===s){if(7===c.tag){if(a.type===ne){n(e,c.sibling),(r=i(c,a.props.children)).return=e,e=r;break e}}else if(c.elementType===a.type){n(e,c.sibling),(r=i(c,a.props)).ref=Pa(e,c,a),r.return=e,e=r;break e}n(e,c);break}t(e,c),c=c.sibling}a.type===ne?((r=Bu(a.props.children,e.mode,u,a.key)).return=e,e=r):((u=$u(a.type,a.key,a.props,null,e.mode,u)).ref=Pa(e,r,a),u.return=e,e=u)}return l(e);case te:e:{for(c=a.key;null!==r;){if(r.key===c){if(4===r.tag&&r.stateNode.containerInfo===a.containerInfo&&r.stateNode.implementation===a.implementation){n(e,r.sibling),(r=i(r,a.children||[])).return=e,e=r;break e}n(e,r);break}t(e,r),r=r.sibling}(r=Gu(a,e.mode,u)).return=e,e=r}return l(e)}if("string"===typeof a||"number"===typeof a)return a=""+a,null!==r&&6===r.tag?(n(e,r.sibling),(r=i(r,a)).return=e,e=r):(n(e,r),(r=Qu(a,e.mode,u)).return=e,e=r),l(e);if(Ca(a))return h(e,r,a,u);if(he(a))return g(e,r,a,u);if(s&&_a(e,a),"undefined"===typeof a&&!c)switch(e.tag){case 1:case 0:throw e=e.type,Error(o(152,e.displayName||e.name||"Component"))}return n(e,r)}}var Oa=Na(!0),La=Na(!1),Ra={},ja={current:Ra},Da={current:Ra},Aa={current:Ra};function Ia(e){if(e===Ra)throw Error(o(174));return e}function Ma(e,t){switch(hi(Aa,t),hi(Da,e),hi(ja,Ra),e=t.nodeType){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:Me(null,"");break;default:t=Me(t=(e=8===e?t.parentNode:t).namespaceURI||null,e=e.tagName)}mi(ja),hi(ja,t)}function Fa(){mi(ja),mi(Da),mi(Aa)}function za(e){Ia(Aa.current);var t=Ia(ja.current),n=Me(t,e.type);t!==n&&(hi(Da,e),hi(ja,n))}function Ua(e){Da.current===e&&(mi(ja),mi(Da))}var Ha={current:0};function Wa(e){for(var t=e;null!==t;){if(13===t.tag){var n=t.memoizedState;if(null!==n&&(null===(n=n.dehydrated)||n.data===bn||n.data===wn))return t}else if(19===t.tag&&void 0!==t.memoizedProps.revealOrder){if(0!==(64&t.effectTag))return t}else if(null!==t.child){t.child.return=t,t=t.child;continue}if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}function Va(e,t){return{responder:e,props:t}}var $a=Y.ReactCurrentDispatcher,Ba=Y.ReactCurrentBatchConfig,Qa=0,Ga=null,qa=null,Ka=null,Ya=!1;function Ja(){throw Error(o(321))}function Xa(e,t){if(null===t)return!1;for(var n=0;na))throw Error(o(301));a+=1,Ka=qa=null,t.updateQueue=null,$a.current=So,e=n(r,i)}while(t.expirationTime===Qa)}if($a.current=Eo,t=null!==qa&&null!==qa.next,Qa=0,Ka=qa=Ga=null,Ya=!1,t)throw Error(o(300));return e}function eo(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return null===Ka?Ga.memoizedState=Ka=e:Ka=Ka.next=e,Ka}function to(){if(null===qa){var e=Ga.alternate;e=null!==e?e.memoizedState:null}else e=qa.next;var t=null===Ka?Ga.memoizedState:Ka.next;if(null!==t)Ka=t,qa=e;else{if(null===e)throw Error(o(310));e={memoizedState:(qa=e).memoizedState,baseState:qa.baseState,baseQueue:qa.baseQueue,queue:qa.queue,next:null},null===Ka?Ga.memoizedState=Ka=e:Ka=Ka.next=e}return Ka}function no(e,t){return"function"===typeof t?t(e):t}function ro(e){var t=to(),n=t.queue;if(null===n)throw Error(o(311));n.lastRenderedReducer=e;var r=qa,i=r.baseQueue,a=n.pending;if(null!==a){if(null!==i){var l=i.next;i.next=a.next,a.next=l}r.baseQueue=i=a,n.pending=null}if(null!==i){i=i.next,r=r.baseState;var u=l=a=null,c=i;do{var s=c.expirationTime;if(sGa.expirationTime&&(Ga.expirationTime=s,Tu(s))}else null!==u&&(u=u.next={expirationTime:1073741823,suspenseConfig:c.suspenseConfig,action:c.action,eagerReducer:c.eagerReducer,eagerState:c.eagerState,next:null}),Eu(s,c.suspenseConfig),r=c.eagerReducer===e?c.eagerState:e(r,c.action);c=c.next}while(null!==c&&c!==i);null===u?a=r:u.next=l,Vr(r,t.memoizedState)||(Io=!0),t.memoizedState=r,t.baseState=a,t.baseQueue=u,n.lastRenderedState=r}return[t.memoizedState,n.dispatch]}function io(e){var t=to(),n=t.queue;if(null===n)throw Error(o(311));n.lastRenderedReducer=e;var r=n.dispatch,i=n.pending,a=t.memoizedState;if(null!==i){n.pending=null;var l=i=i.next;do{a=e(a,l.action),l=l.next}while(l!==i);Vr(a,t.memoizedState)||(Io=!0),t.memoizedState=a,null===t.baseQueue&&(t.baseState=a),n.lastRenderedState=a}return[a,r]}function ao(e){var t=eo();return"function"===typeof e&&(e=e()),t.memoizedState=t.baseState=e,e=(e=t.queue={pending:null,dispatch:null,lastRenderedReducer:no,lastRenderedState:e}).dispatch=ko.bind(null,Ga,e),[t.memoizedState,e]}function oo(e,t,n,r){return e={tag:e,create:t,destroy:n,deps:r,next:null},null===(t=Ga.updateQueue)?(t={lastEffect:null},Ga.updateQueue=t,t.lastEffect=e.next=e):null===(n=t.lastEffect)?t.lastEffect=e.next=e:(r=n.next,n.next=e,e.next=r,t.lastEffect=e),e}function lo(){return to().memoizedState}function uo(e,t,n,r){var i=eo();Ga.effectTag|=e,i.memoizedState=oo(1|t,n,void 0,void 0===r?null:r)}function co(e,t,n,r){var i=to();r=void 0===r?null:r;var a=void 0;if(null!==qa){var o=qa.memoizedState;if(a=o.destroy,null!==r&&Xa(r,o.deps))return void oo(t,n,a,r)}Ga.effectTag|=e,i.memoizedState=oo(1|t,n,a,r)}function so(e,t){return uo(516,4,e,t)}function fo(e,t){return co(516,4,e,t)}function po(e,t){return co(4,2,e,t)}function mo(e,t){return"function"===typeof t?(e=e(),t(e),function(){t(null)}):null!==t&&void 0!==t?(e=e(),t.current=e,function(){t.current=null}):void 0}function ho(e,t,n){return n=null!==n&&void 0!==n?n.concat([e]):null,co(4,2,mo.bind(null,t,e),n)}function go(){}function vo(e,t){return eo().memoizedState=[e,void 0===t?null:t],e}function yo(e,t){var n=to();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&Xa(t,r[1])?r[0]:(n.memoizedState=[e,t],e)}function bo(e,t){var n=to();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&Xa(t,r[1])?r[0]:(e=e(),n.memoizedState=[e,t],e)}function wo(e,t,n){var r=Qi();qi(98>r?98:r,(function(){e(!0)})),qi(97<\/script>",e=e.removeChild(e.firstChild)):"string"===typeof r.is?e=u.createElement(a,{is:r.is}):(e=u.createElement(a),"select"===a&&(u=e,r.multiple?u.multiple=!0:r.size&&(u.size=r.size))):e=u.createElementNS(e,a),e[On]=t,e[Ln]=r,Qo(e,t,!1,!1),t.stateNode=e,u=ln(a,r),a){case"iframe":case"object":case"embed":qt("load",e),c=r;break;case"video":case"audio":for(c=0;cr.tailExpiration&&1t)&&au.set(e,t))}}function du(e,t){e.expirationTime=(e=n>(e=e.nextKnownPendingLevel)?n:e)&&t!==e?0:e}function mu(e){if(0!==e.lastExpiredTime)e.callbackExpirationTime=1073741823,e.callbackPriority=99,e.callbackNode=Yi(gu.bind(null,e));else{var t=pu(e),n=e.callbackNode;if(0===t)null!==n&&(e.callbackNode=null,e.callbackExpirationTime=0,e.callbackPriority=90);else{var r=cu();if(1073741823===t?r=99:1===t||2===t?r=95:r=0>=(r=10*(1073741821-t)-10*(1073741821-r))?99:250>=r?98:5250>=r?97:95,null!==n){var i=e.callbackPriority;if(e.callbackExpirationTime===t&&i>=r)return;n!==Fi&&Ni(n)}e.callbackExpirationTime=t,e.callbackPriority=r,t=1073741823===t?Yi(gu.bind(null,e)):Ki(r,hu.bind(null,e),{timeout:10*(1073741821-t)-Bi()}),e.callbackNode=t}}}function hu(e,t){if(uu=0,t)return Xu(e,t=cu()),mu(e),null;var n=pu(e);if(0!==n){if(t=e.callbackNode,(zl&(Ll|Rl))!==Nl)throw Error(o(327));if(Ru(),e===Ul&&n===Wl||bu(e,n),null!==Hl){var r=zl;zl|=Ll;for(var i=ku();;)try{Su();break}catch(u){wu(e,u)}if(aa(),zl=r,Pl.current=i,Vl===Dl)throw t=$l,bu(e,n),Yu(e,n),mu(e),t;if(null===Hl)switch(i=e.finishedWork=e.current.alternate,e.finishedExpirationTime=n,r=Vl,Ul=null,r){case jl:case Dl:throw Error(o(345));case Al:Xu(e,2=n){e.lastPingedTime=n,bu(e,n);break}}if(0!==(a=pu(e))&&a!==n)break;if(0!==r&&r!==n){e.lastPingedTime=r;break}e.timeoutHandle=Sn(Nu.bind(null,e),i);break}Nu(e);break;case Ml:if(Yu(e,n),n===(r=e.lastSuspendedTime)&&(e.nextKnownPendingLevel=_u(i)),Kl&&(0===(i=e.lastPingedTime)||i>=n)){e.lastPingedTime=n,bu(e,n);break}if(0!==(i=pu(e))&&i!==n)break;if(0!==r&&r!==n){e.lastPingedTime=r;break}if(1073741823!==Ql?r=10*(1073741821-Ql)-Bi():1073741823===Bl?r=0:(r=10*(1073741821-Bl)-5e3,0>(r=(i=Bi())-r)&&(r=0),(n=10*(1073741821-n)-i)<(r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*Cl(r/1960))-r)&&(r=n)),10=(r=0|l.busyMinDurationMs)?r=0:(i=0|l.busyDelayMs,r=(a=Bi()-(10*(1073741821-a)-(0|l.timeoutMs||5e3)))<=i?0:i+r-a),10 component higher in the tree to provide a loading indicator or placeholder to display."+ve(o))}Vl!==Fl&&(Vl=Al),l=al(l,o),f=a;do{switch(f.tag){case 3:u=l,f.effectTag|=4096,f.expirationTime=t,ha(f,Tl(f,u,t));break e;case 1:u=l;var w=f.type,k=f.stateNode;if(0===(64&f.effectTag)&&("function"===typeof w.getDerivedStateFromError||null!==k&&"function"===typeof k.componentDidCatch&&(null===tu||!tu.has(k)))){f.effectTag|=4096,f.expirationTime=t,ha(f,xl(f,u,t));break e}}f=f.return}while(null!==f)}Hl=Pu(Hl)}catch(E){t=E;continue}break}}function ku(){var e=Pl.current;return Pl.current=Eo,null===e?Eo:e}function Eu(e,t){eql&&(ql=e)}function xu(){for(;null!==Hl;)Hl=Cu(Hl)}function Su(){for(;null!==Hl&&!zi();)Hl=Cu(Hl)}function Cu(e){var t=Sl(e.alternate,e,Wl);return e.memoizedProps=e.pendingProps,null===t&&(t=Pu(e)),_l.current=null,t}function Pu(e){Hl=e;do{var t=Hl.alternate;if(e=Hl.return,0===(2048&Hl.effectTag)){if(t=rl(t,Hl,Wl),1===Wl||1!==Hl.childExpirationTime){for(var n=0,r=Hl.child;null!==r;){var i=r.expirationTime,a=r.childExpirationTime;i>n&&(n=i),a>n&&(n=a),r=r.sibling}Hl.childExpirationTime=n}if(null!==t)return t;null!==e&&0===(2048&e.effectTag)&&(null===e.firstEffect&&(e.firstEffect=Hl.firstEffect),null!==Hl.lastEffect&&(null!==e.lastEffect&&(e.lastEffect.nextEffect=Hl.firstEffect),e.lastEffect=Hl.lastEffect),1(e=e.childExpirationTime)?t:e}function Nu(e){var t=Qi();return qi(99,Ou.bind(null,e,t)),null}function Ou(e,t){do{Ru()}while(null!==ru);if((zl&(Ll|Rl))!==Nl)throw Error(o(327));var n=e.finishedWork,r=e.finishedExpirationTime;if(null===n)return null;if(e.finishedWork=null,e.finishedExpirationTime=0,n===e.current)throw Error(o(177));e.callbackNode=null,e.callbackExpirationTime=0,e.callbackPriority=90,e.nextKnownPendingLevel=0;var i=_u(n);if(e.firstPendingTime=i,r<=e.lastSuspendedTime?e.firstSuspendedTime=e.lastSuspendedTime=e.nextKnownPendingLevel=0:r<=e.firstSuspendedTime&&(e.firstSuspendedTime=r-1),r<=e.lastPingedTime&&(e.lastPingedTime=0),r<=e.lastExpiredTime&&(e.lastExpiredTime=0),e===Ul&&(Hl=Ul=null,Wl=0),1u&&(s=u,u=l,l=s),s=pn(w,l),f=pn(w,u),s&&f&&(1!==E.rangeCount||E.anchorNode!==s.node||E.anchorOffset!==s.offset||E.focusNode!==f.node||E.focusOffset!==f.offset)&&((k=k.createRange()).setStart(s.node,s.offset),E.removeAllRanges(),l>u?(E.addRange(k),E.extend(f.node,f.offset)):(k.setEnd(f.node,f.offset),E.addRange(k))))),k=[];for(E=w;E=E.parentNode;)1===E.nodeType&&k.push({element:E,left:E.scrollLeft,top:E.scrollTop});for("function"===typeof w.focus&&w.focus(),w=0;w=n?Jo(e,t,n):(hi(Ha,1&Ha.current),null!==(t=tl(e,t,n))?t.sibling:null);hi(Ha,1&Ha.current);break;case 19:if(r=t.childExpirationTime>=n,0!==(64&e.effectTag)){if(r)return el(e,t,n);t.effectTag|=64}if(null!==(i=t.memoizedState)&&(i.rendering=null,i.tail=null),hi(Ha,Ha.current),!r)return null}return tl(e,t,n)}Io=!1}}else Io=!1;switch(t.expirationTime=0,t.tag){case 2:if(r=t.type,null!==e&&(e.alternate=null,t.alternate=null,t.effectTag|=2),e=t.pendingProps,i=wi(t,vi.current),ua(t,n),i=Za(null,t,r,e,i,n),t.effectTag|=1,"object"===typeof i&&null!==i&&"function"===typeof i.render&&void 0===i.$$typeof){if(t.tag=1,t.memoizedState=null,t.updateQueue=null,ki(r)){var a=!0;Si(t)}else a=!1;t.memoizedState=null!==i.state&&void 0!==i.state?i.state:null,fa(t);var l=r.getDerivedStateFromProps;"function"===typeof l&&wa(t,r,l,e),i.updater=ka,t.stateNode=i,i._reactInternalFiber=t,Sa(t,r,e,n),t=$o(null,t,r,!0,a,n)}else t.tag=0,Mo(null,t,i,n),t=t.child;return t;case 16:e:{if(i=t.elementType,null!==e&&(e.alternate=null,t.alternate=null,t.effectTag|=2),e=t.pendingProps,function(e){if(-1===e._status){e._status=0;var t=e._ctor;t=t(),e._result=t,t.then((function(t){0===e._status&&(t=t.default,e._status=1,e._result=t)}),(function(t){0===e._status&&(e._status=2,e._result=t)}))}}(i),1!==i._status)throw i._result;switch(i=i._result,t.type=i,a=t.tag=function(e){if("function"===typeof e)return Wu(e)?1:0;if(void 0!==e&&null!==e){if((e=e.$$typeof)===ue)return 11;if(e===fe)return 14}return 2}(i),e=ea(i,e),a){case 0:t=Wo(null,t,i,e,n);break e;case 1:t=Vo(null,t,i,e,n);break e;case 11:t=Fo(null,t,i,e,n);break e;case 14:t=zo(null,t,i,ea(i.type,e),r,n);break e}throw Error(o(306,i,""))}return t;case 0:return r=t.type,i=t.pendingProps,Wo(e,t,r,i=t.elementType===r?i:ea(r,i),n);case 1:return r=t.type,i=t.pendingProps,Vo(e,t,r,i=t.elementType===r?i:ea(r,i),n);case 3:if(Bo(t),r=t.updateQueue,null===e||null===r)throw Error(o(282));if(r=t.pendingProps,i=null!==(i=t.memoizedState)?i.element:null,da(e,t),ga(t,r,null,n),(r=t.memoizedState.element)===i)Do(),t=tl(e,t,n);else{if((i=t.stateNode.hydrate)&&(Po=Pn(t.stateNode.containerInfo.firstChild),Co=t,i=_o=!0),i)for(n=La(t,null,r,n),t.child=n;n;)n.effectTag=-3&n.effectTag|1024,n=n.sibling;else Mo(e,t,r,n),Do();t=t.child}return t;case 5:return za(t),null===e&&Lo(t),r=t.type,i=t.pendingProps,a=null!==e?e.memoizedProps:null,l=i.children,xn(r,i)?l=null:null!==a&&xn(r,a)&&(t.effectTag|=16),Ho(e,t),4&t.mode&&1!==n&&i.hidden?(t.expirationTime=t.childExpirationTime=1,t=null):(Mo(e,t,l,n),t=t.child),t;case 6:return null===e&&Lo(t),null;case 13:return Jo(e,t,n);case 4:return Ma(t,t.stateNode.containerInfo),r=t.pendingProps,null===e?t.child=Oa(t,null,r,n):Mo(e,t,r,n),t.child;case 11:return r=t.type,i=t.pendingProps,Fo(e,t,r,i=t.elementType===r?i:ea(r,i),n);case 7:return Mo(e,t,t.pendingProps,n),t.child;case 8:case 12:return Mo(e,t,t.pendingProps.children,n),t.child;case 10:e:{r=t.type._context,i=t.pendingProps,l=t.memoizedProps,a=i.value;var u=t.type._context;if(hi(ta,u._currentValue),u._currentValue=a,null!==l)if(u=l.value,0===(a=Vr(u,a)?0:0|("function"===typeof r._calculateChangedBits?r._calculateChangedBits(u,a):1073741823))){if(l.children===i.children&&!yi.current){t=tl(e,t,n);break e}}else for(null!==(u=t.child)&&(u.return=t);null!==u;){var c=u.dependencies;if(null!==c){l=u.child;for(var s=c.firstContext;null!==s;){if(s.context===r&&0!==(s.observedBits&a)){1===u.tag&&((s=pa(n,null)).tag=2,ma(u,s)),u.expirationTime=t&&e<=t}function Yu(e,t){var n=e.firstSuspendedTime,r=e.lastSuspendedTime;nt||0===n)&&(e.lastSuspendedTime=t),t<=e.lastPingedTime&&(e.lastPingedTime=0),t<=e.lastExpiredTime&&(e.lastExpiredTime=0)}function Ju(e,t){t>e.firstPendingTime&&(e.firstPendingTime=t);var n=e.firstSuspendedTime;0!==n&&(t>=n?e.firstSuspendedTime=e.lastSuspendedTime=e.nextKnownPendingLevel=0:t>=e.lastSuspendedTime&&(e.lastSuspendedTime=t+1),t>e.nextKnownPendingLevel&&(e.nextKnownPendingLevel=t))}function Xu(e,t){var n=e.lastExpiredTime;(0===n||n>t)&&(e.lastExpiredTime=t)}function Zu(e,t,n,r){var i=t.current,a=cu(),l=ya.suspense;a=su(a,i,l);e:if(n){t:{if(et(n=n._reactInternalFiber)!==n||1!==n.tag)throw Error(o(170));var u=n;do{switch(u.tag){case 3:u=u.stateNode.context;break t;case 1:if(ki(u.type)){u=u.stateNode.__reactInternalMemoizedMergedChildContext;break t}}u=u.return}while(null!==u);throw Error(o(171))}if(1===n.tag){var c=n.type;if(ki(c)){n=xi(n,c,u);break e}}n=u}else n=gi;return null===t.context?t.context=n:t.pendingContext=n,(t=pa(a,l)).payload={element:e},null!==(r=void 0===r?null:r)&&(t.callback=r),ma(i,t),fu(i,a),a}function ec(e){return(e=e.current).child?(e.child.tag,e.child.stateNode):null}function tc(e,t){null!==(e=e.memoizedState)&&null!==e.dehydrated&&e.retryTimeO.length&&O.push(e)}function j(e,t,n,r){var i=typeof e;"undefined"!==i&&"boolean"!==i||(e=null);var l=!1;if(null===e)l=!0;else switch(i){case"string":case"number":l=!0;break;case"object":switch(e.$$typeof){case a:case o:l=!0}}if(l)return n(r,e,""===t?"."+A(e,0):t),1;if(l=0,t=""===t?".":t+":",Array.isArray(e))for(var u=0;u=k},o=function(){},t.unstable_forceFrameRate=function(e){0>e||125>>1,i=e[r];if(!(void 0!==i&&0
\n);\n\nexport default Header;","import React from 'react';\n\nimport Header from './Header';\n\nconst MainContent = () => (\n \n
\n
\n\n {/* Self info & img */}\n \n
Logan is a Full Stack Software Engineer with, expert knowledge of BEW, FEW, proficient at Data/Big Data (e.g. Data Colection, Adobe Analytics, Google Analytics, etc.) and graphic design. He always goes above and beyond to ensure the job gets done right the first time. His work stands out because he pays close attention to all details of the job.
\n
Logan is a compelling Full Stack Web/App Developer. He is effective at combining creativity and problem solving to develop user-friendly tested/benchmarked applications, in various environments with novel methods of design. He's known among staff for strong wit, attention to detail and multi-tasking no matter the complexity of the project. He has an ability to work independently, in a team environment or as a lead project manager.
\n
Logan's been doing software engineering work for a while now, as it provides him with a skill set to design applications with a variety of technologies. During his free time you can find him, swing/position trading in the stock market, watching movies, coding his own projects, and learning new skills!
Software Engineering - Full Stack Web/Mobile/Application Development - User Experience/User Interface Design - Game Design/Development - Data Science
*/}\n
\n
\n
Expert
\n \n
{props.experience.expert}
\n
\n
\n
Proficient
\n
{props.experience.proficient}
\n
\n
\n
Novice
\n
{props.experience.novice}
\n
\n
\n \n );\n}\n\nexport default ExtendSkills;","import { platform, focus, tech } from './skills';\n\n\nexport const ProProj = [\n {\n img: {\n src: \"images/experience/adobe.png\",\n alt: \"red outlike of the letter A and the word Adobe\"\n },\n title: 'Adobe: Web Appications Engineer',\n paragraph1: `Application (CI/CD) in Adobe Analytics, Customer journey Analytics &,various Adobe Experience Cloud software; worked on FEW in-house software to collect user data; additionally maintained BEW in-house library connected to AA via custom extension in Data Collection (e.g. agile dev., CRUD, support tickets, etc.)`,\n skills: {\n platform: [\n platform.des,\n // platform.mob\n ], \n focus: [\n focus.sofEngr, \n focus.data,\n `${focus.dev.area.fs} \n ${focus.dev.type.wma}` \n ], \n tech: [\n tech.js.id, \n tech.html.id, \n tech.css.id, \n tech.git.id, \n tech.gitHub.id, \n tech.sql.sql.id,\n tech.adobe.analytics.id,\n tech.dom.id,\n tech.npm.id,\n tech.yarn.id,\n tech.shell.id,\n tech.terminal.id,\n tech.react.id,\n tech.node.id,\n tech.chromeDev.id,\n tech.mac.id,\n tech.dataAnaly.id,\n tech.CI_CD.id, \n tech.api.api.id,\n tech.json.id,\n tech.adobe.adminConsole.id,\n tech.adobe.dataCollection.id,\n tech.adobe.marketing.id,\n tech.adobe.cja.id,\n tech.jira.id,\n tech.ts.id,\n ]\n },\n paragraph2: '',\n projectLink: \"https://business.adobe.com/products/analytics/adobe-analytics.html\",\n codeLink: false\n },\n {\n img: {\n src: \"images/experience/prose.jpeg\",\n alt: \"White crow infront of a white ball cut out of black square shap.\"\n },\n title: 'Interim Fractional Chief Technical Officer (CTO)',\n paragraph1: `Served as the Interim Fractional Chief Technical Officer, in this capacity, my primary focus revolved around oversight and active participation in software engineering processes, with a particular emphasis on technologies such as React.js and GraphQL.`,\n skills: {\n platform: [\n platform.des, \n platform.mob\n ], \n focus: [\n focus.sofEngr, \n ], \n tech: [\n tech.js.id, \n tech.html.id, \n tech.css.id, \n tech.git.id, \n tech.gitHub.id, \n tech.dom.id,\n tech.npm.id,\n tech.yarn.id,\n tech.shell.id,\n tech.terminal.id,\n tech.react.id,\n tech.node.id,\n tech.chromeDev.id,\n tech.mac.id,\n tech.CI_CD.id, \n tech.api.api.id,\n tech.json.id,\n tech.jira.id,\n tech.graphQL.id,\n // tech.typeScript.id,\n // tech.aws.id,\n ]\n },\n paragraph2: '',\n projectLink: \"https://www.theprose.com\",\n codeLink: false\n },\n {\n img: {\n src: \"images/experience/verizon.jpeg\",\n alt: \"Words that say Verzon with a black background and red check mark\"\n },\n title: 'Verizon: Support Engineer',\n paragraph1: 'My responsibilities encompassed a diverse range of support engineering tasks, which entailed efficiently resolving tickets, working with JSON APIs, and addressing intricate issues, with little to no guidance or supervision',\n skills: {\n platform: [\n platform.des\n ], \n focus: [\n focus.sofEngr, \n // `${focus.dev.area.fs} \n // ${focus.dev.type.wma}`\n ], \n tech: [\n tech.json.id,\n tech.api.api.id,\n tech.data.id,\n tech.windows.id,\n // \"XML\"\n ]\n },\n paragraph2: '',\n projectLink: \"https://www.verizon.com\",\n codeLink: false\n },\n {\n img: {\n src: \"images/experience/wipro.png\",\n alt: \"Screen Shot of the Wipro.com home page.\"\n },\n title: 'Wipro: App-Cloud Services-Developer',\n paragraph1: 'Received application development training, in-order to be able to use a variety of different technologies to develop and maintain code base.',\n skills: {\n platform: [\n platform.des\n ], \n focus: [\n focus.sofEngr, \n // `${focus.dev.area.fs} \n // ${focus.dev.type.wma}`\n ], \n tech: [\n tech.js.id, \n tech.html.id, \n tech.css.id, \n // tech.git.id, \n // tech.gitHub.id, \n // tech.browserify.id, \n // tech.CI_CD.id, \n tech.aws.id,\n // \"AWS\",\n // \"Java\",\n tech.json.id,\n tech.api.api.id,\n tech.shell.id,\n tech.terminal.id,\n tech.node.id,\n tech.data.id,\n tech.databases.id,\n tech.preformOptimiz.id,\n tech.windows.id,\n // tech.py.id\n ]\n },\n paragraph2: '',\n projectLink: \"https://www.wipro.com/\",\n codeLink: false\n },\n {\n img: {\n src: \"images/experience/dance4healing.jpeg\",\n alt: \"screen shot of www.dance4healing.com this is an image of the dance for healing website mobile site or small version has many people in the image dancing woman has dance for healing logo. a slide show would move if you on the site but this is a still image.\"\n },\n title: 'Dance4Healing.com',\n paragraph1: 'Used CI/CD on a Node.js app cloned through GitHub, then tested and deployed on Heroku. The web development process included aspects such as web design, web publishing, web programming & database management.',\n skills: {\n platform: [platform.des, platform.mob], \n focus: [focus.sofEngr, `${focus.dev.area.fs} ${focus.dev.type.wma}`, focus.design.xi, focus.data], \n tech: [\n // tech.ai.id, \n tech.express.id, \n tech.heroku.id, \n tech.node.id, \n // tech.jade.id, \n \"jade\",\n tech.mongo.id, \n // tech.mongoose.id, \n // tech.twilio.id, \n tech.js.id, \n tech.html.id, \n tech.css.id, \n // tech.passport.id, \n // tech.vimeo.id, \n tech.bitBucket.id, \n tech.git.id, \n tech.gitHub.id, \n // tech.browserify.id, \n tech.CI_CD.id, \n tech.adobe.photo.id, \n tech.trello.id, \n tech.google.analytic.id, \n tech.google.font.id, \n // tech.sketchApp.id, \n tech.npm.id, \n tech.yarn.id\n ]\n },\n paragraph2: 'Once on the site, sign up to begin learning different dance moves.',\n projectLink: \"https://dance4healing.com\",\n codeLink: false\n },\n {\n img: {\n src: \"images/experience/stageIV.jpg\", \n alt: \"This is a screenshot of the homepage for stage four .org. Stage IV.org is tan e-commerce website.\"\n },\n title: 'StageIV.org',\n paragraph1: \"Setup Google Analytics within site. Identified and fixed existing bugs within a JS/HTML codebase\",\n skills: {\n platform: [platform.des, platform.mob], \n focus: [focus.sofEngr], \n tech: [\n tech.js.id, \n tech.css.id, \n tech.html.id, \n // tech.wordPr.id, \n tech.google.analytic.id\n ]\n },\n paragraph2: 'This is an e-commerce platform where you can buy products from artists, view blogs & see art galleries.',\n projectLink: \"https://stageiv.org\",\n codeLink: false\n }\n];\n\n\nexport const PersonalProj = [\n {\n img: {\n src: \"images/experience/kdp-books-site.png\", \n alt: \"this is a screen shot of the home page for The Midnight Dream Publishing website.\"\n },\n title: \"Amazon KDP E-commerce & Website\",\n paragraph1: \"Logan created this React.js website for an Amazon KDP project. He managed/orchestrated the publication of 10+ ebooks on Amazon including paper & audible publication of books. Gave ideas & directed ghostwriters in realizing those ideas as published works. Plus he designed eight book covers. This involves the design of the entire process of acquiring and integrating the product, including aspects of branding, design, usability & function. Making interfaces in software or computerized devices with a focus on looks or style.\",\n skills: {\n platform: [platform.des], \n focus: [focus.sofEngr, `${focus.dev.area.fs} ${focus.dev.type.wma}`, focus.design.xi,], \n tech: [tech.js.id, tech.html.id, tech.css.id, tech.react.id, tech.reactBootstrap.id, tech.bootstrap.id, tech.git.id, tech.gitHub.id, tech.gitHubPg.id]\n },\n paragraph2: 'Feel free to poke around the site!',\n projectLink: 'https://lwrgithub.github.io/book-site/#/',\n codeLink: \"https://github.com/LWRGitHub/book-site\"\n },\n {\n img: {\n src: \"images/experience/womens-basketball.png\", \n alt: \"this is a screen shot of the home page for women's basketball through the years. Image of a big photo black-and-white of women playing basketball with the chalkboard in the back.\"\n },\n title: \"Women's Basketball Through The Years\",\n paragraph1: \"As part of a woman's history class I took in college we were encouraged to create a website related to a pivotal moment in history for women. This site about women's basketball. It provides information about specific events throughout the years. The site has been made with React.js & hosted through GitHub Pages.\",\n skills: {\n platform: [platform.des], \n focus: [focus.sofEngr, `${focus.dev.area.fs} ${focus.dev.type.wma}`, focus.design.xi,], \n tech: [tech.js.id, tech.html.id, tech.css.id, tech.react.id, tech.reactBootstrap.id, tech.bootstrap.id, tech.git.id, tech.gitHub.id, tech.gitHubPg.id]\n },\n paragraph2: 'Use a desktop, laptop or phone to take a look around the site!',\n projectLink: 'https://lwrgithub.github.io/womens-basketball-website/#/',\n codeLink: \"https://github.com/LWRGitHub/womens-basketball-website\"\n },\n {\n img: {\n src: \"images/experience/scraping-craigslist.png\", \n alt: \"Image of the app having found something & starting to text a number.\"\n },\n title: \"Scraping Craigslist & TrashNothing.com!\",\n paragraph1: \"Free Apple products & more through scraping Craigslist & the website Trash Nothing! These python files use bs4 & selenium to scrape the web & send you a text message when you find that awesome thing your looking for! The file are setup to search for free apple products, computers, laptops, video games, ect.\",\n skills: {\n platform: [platform.des], \n focus: [focus.sofEngr, focus.dev.type.a], \n tech: [tech.py.id, tech.git.id, tech.gitHub.id, tech.bs4.id, tech.selenium.id, tech.request.id, tech.dotenv.id, tech.unixCLI.id]\n },\n paragraph2: 'You will have to follow the detailed instructions in the README.md file on GetHub.',\n projectLink: 'https://github.com/LWRGitHub/cs_scraper',\n codeLink: \"https://github.com/LWRGitHub/cs_scraper\"\n },\n {\n img: {\n src: 'images/experience/lovers-art.png', \n alt: 'This is a screen shot of lovers art websites home page.'\n },\n title: \"Art Site Template\",\n paragraph1: 'Built with Flask, Jinga2 & hosted through Heroku this site is a grate template for organizing art for sale & as a plus it has the capability to sell art supplies as well.',\n skills: {\n platform: [platform.des, platform.mob], \n focus: [focus.sofEngr, `${focus.dev.area.fs} ${focus.dev.type.wma}`, focus.design.xi], \n tech: [\n tech.html.id, \n tech.css.id, \n tech.js.id,\n tech.py.id,\n tech.flask.id,\n tech.jinja2.id,\n tech.jquery.id,\n tech.bootstrap.id, \n tech.boostrIcon.id,\n // tech.heroku.id,\n tech.wireFrames.id,\n tech.figma.id,\n // tech.heroku.id,\n tech.git.id, \n tech.gitHub.id,\n // tech.img.png.id,\n ]\n },\n paragraph2: 'Browse the website get to know the template possibilities!',\n projectLink: 'https://github.com/LWRGitHub/lover-artist-site', // 'https://lover-artist-site.herokuapp.com',\n codeLink: 'https://github.com/LWRGitHub/lover-artist-site' \n },\n {\n img: {\n src: \"images/experience/duro-ios.png\", \n alt: \"Image of the app's wallet page.\"\n },\n title: \"Duro iOS App!\",\n paragraph1: \"An inflation resistant currency backed by inflation resistant assets such as the CPI index.\",\n skills: {\n platform: [platform.mob], \n focus: [focus.sofEngr, `${focus.dev.area.f} ${focus.dev.type.ma}` , focus.design.xi], \n tech: [\n // tech.swift.id, \n // tech.swiftUI.id, \n // tech.xCode.id, \n \"Swift\",\n \"SwiftUI\",\n \"xCode\",\n tech.api.api.id, \n tech.git.id, \n tech.gitHub.id\n ]\n },\n paragraph2: 'The project is available to clone on GetHub.',\n projectLink: 'https://github.com/LWRGitHub/duro-ios',\n codeLink: \"https://github.com/LWRGitHub/duro-ios\"\n },\n {\n img: {\n src: \"images/experience/astrology-api.png\", \n alt: \"Screenshot of the astrology home page. It has images & names of all the zodiac signs.\"\n },\n title: \"Daily Horoscopes\",\n paragraph1: \"This Node.js web app is a grate web page to get your daily horoscope from. It uses the horoscope API from astrology.com.\",\n skills: {\n platform: [platform.des, platform.mob], \n focus: [focus.sofEngr, `${focus.dev.area.fs} ${focus.dev.type.wma}`, focus.design.xi], \n tech: [\n tech.js.id, \n tech.node.id,\n // tech.pug.id,\n \"Pug\",\n tech.express.id,\n tech.bootstrap.id,\n tech.html.id,\n tech.css.id,\n // tech.heroku.id,\n tech.git.id,\n tech.gitHub.id\n ]\n },\n paragraph2: 'Simply click on your zodiac sign to view your horoscope for the day.',\n projectLink: \"https://github.com/LWRGitHub/astrology-api\", // 'https://astrology-horoscope.herokuapp.com',\n codeLink: \"https://github.com/LWRGitHub/astrology-api\"\n },\n {\n img: {\n src: \"images/experience/veganQuery.png\", \n alt: \"Screenshot of the home page. The image has photos of the Different vegan dishes with their names such as tomato soup & slaw with coriander.\"\n },\n title: \"Vegan Query\",\n paragraph1: \"Website that scrapes vegan recipes off the internet & places them in a search engine.\",\n skills: {\n platform: [platform.des, platform.mob], \n focus: [focus.sofEngr, `${focus.dev.area.fs} ${focus.dev.type.wma}`, focus.design.xi], \n tech: [tech.js.id, tech.react.id, tech.bootstrap.id, tech.reactBootstrap.id, tech.html.id, tech.css.id, tech.git.id, tech.gitHub.id, tech.gitHubPg.id]\n },\n paragraph2: 'Simply search for something like tomato soup.',\n projectLink: 'https://github.com/VeganQuery/VeganQuery.github.io',\n codeLink: \"https://github.com/VeganQuery/VeganQuery.github.io\"\n },\n];\n\nexport const TutorialProj = [\n {\n img: {\n src: \"images/experience/mobile-home-page-portfolio-site.png\", \n alt: \"Screenshot on the mobile phone of Logan Reynolds' software engineering portfolio website. This is the homepage otherwise known as the index page. Shows a list of programming languages such as JavaScript ESS6 Ruby python & C#. Shows navigation bar in blue. Has a big jumbotron image in the background\"\n },\n title: 'Portfolio Site',\n paragraph1: \"Transformed into a React.js site from basic HTML/CSS; adding some custom UI/UX design.\",\n skills: {\n platform: [platform.des, platform.mob], \n focus: [focus.sofEngr, `${focus.dev.area.fs} ${focus.dev.type.wma}`, focus.design.xi, focus.data], \n tech: [\n tech.react.id, \n tech.reactBootstrap.id, \n tech.reactRouter.id, \n tech.js.id, \n tech.html.id, \n tech.css.id, \n tech.bootstrap.id, \n tech.google.analytic.id, \n tech.dom.id, \n tech.google.map.id, \n tech.CI_CD.id, \n tech.git.id, \n tech.gitHub.id, \n tech.gitHubPg.id,\n tech.adobe.photo.id, \n // tech.sketchApp.id, \n // tech.img.png.id, \n // tech.img.jpg.id, \n // tech.img.svg.id\n ]\n },\n paragraph2: 'You are currently viewing this project. It is estimated that Logan has created over 85% of the code on this project as the tutorial was originally simply HTML/CSS & bootsrtap.',\n projectLink: 'index.html',\n codeLink: \"https://github.com/LWRGitHub/LWRGitHub.github.io\",\n tutorial: \"https://www.codecademy.com/learn/make-a-website\"\n },\n // {\n // img: {\n // src: 'images/experience/student-enrollment-program.png', \n // alt: 'This is a screen shot of a student enrollment app that is on the web. buttons are students courses & add a student. below buttons are a list of students in boxes.'\n // },\n // title: 'Student Enrollment',\n // paragraph1: 'This web application is an example student enrollment platform. It alows the teacher to edit, add or remove students at any time.',\n // skills: {\n // platform: [platform.des, platform.mob], \n // focus: [focus.sofEngr, `${focus.dev.area.f} ${focus.dev.type.wa}`, focus.design.xi, focus.data], \n // tech: [\n // tech.html.id, \n // tech.css.id, \n // tech.js.id, \n // // tech.img.png.id, \n // tech.google.analytic.id, \n // tech.google.font.id, \n // tech.bootstrap.id, \n // tech.api.api.id, \n // ]\n // },\n // paragraph2: 'Click on \"Students\" to edite & add them to a course, use \"Courses\" to add student to course, & add a new student with \"New Student',\n // projectLink: 'https://lwrgithub.github.io/student-enrollment/',\n // codeLink: 'https://github.com/LWRGitHub/student-enrollment',\n // tutorial: \"https://github.com/Code-the-Dream-School/Student-Enrollment-Program-Exercise\"\n // },\n // {\n // img: {\n // src: \"images/experience/p5-js.jpg\", \n // alt: \"Screenshot of Logan Reynolds P5JS projects sorted in arranged in a card like format through bootstraps. Clearly a screenshot of the website grayish background cards on screen with images of the P5JS projects.\"\n // },\n // title: 'P5.JS',\n // paragraph1: \"This is an example of several P5*JS projects. I've taking these projects and retrofited them so they can be seen through the web or a moblie platform. It includes projects such as Mardi Gras, Sketch, Light on Light off, Fleeing or Chasing. I love P5*js as it is perfect for making commputer ART!!!!!!!\",\n // skills: {\n // platform: [platform.des, platform.mob], \n // focus: [focus.sofEngr, `${focus.dev.area.f} ${focus.dev.type.wma}`, focus.design.xi, focus.game.desDev], \n // tech: [tech.html.id, tech.css.id, tech.google.analytic.id, tech.p5.id, tech.js.id]\n // },\n // paragraph2: 'Some projects are interactive to a click of the mouse or movement of the mouse others just move on their own.',\n // projectLink: \"https://lwrgithub.github.io/p5js-img/\",\n // codeLink: \"https://github.com/LWRGitHub/p5js-img\",\n // tutorial: \"https://www.makeschool.com/mediabook/oa/tutorials/ramp-0/tips-for-success/\"\n // },\n // {\n // img: {\n // src: \"images/experience/form.jpg\", \n // alt: \"This is a screenshot of an online form. The background is white the form is gray and it is a sign up form. The first section is called your basic info which includes name email password and age, greater than 13 or under 13. The second section is called your profile it includes biography charbroil interest interest include development design and business. There's a drop-down menu select your job role you can select from front end developer and many more options at the bottom of the form there is a button labeled sign up.\"\n // },\n // title: 'Form',\n // paragraph1: 'This is a nice HTML form that can be manipulated in many different ways. Forms can be made in a variety of different ways depending upon what is needed.',\n // skills: {\n // platform: [platform.des, platform.mob], \n // focus: [focus.sofEngr, focus.dev.type.wma, focus.design.xi, focus.data], \n // tech: [tech.js.id, tech.dom.id, tech.html.id, tech.css.id, tech.google.analytic.id, tech.google.font.id]\n // },\n // paragraph2: 'Simply fill out the form and click submit.',\n // projectLink: \"https://lwrgithub.github.io/form/\",\n // codeLink: \"https://github.com/LWRGitHub/form\",\n // tutorial: \"https://teamtreehouse.com/library/html-forms\"\n // },\n // {\n // img: {\n // src: \"images/experience/pong-like-game-paddle.svg\", \n // alt: \"Screenshot of paddle game that is kind of like pong Where are you trying to destroy the bricks by moving the ball around. Video game online for the computer. This video game is in mid play and most of the bricks have been destroyed player is about to win.\"\n // },\n // title: 'Pong like Game',\n // paragraph1: 'An awesome game that uses the DOM \"a tightly integrated part of JavaScript.\" The game is on one HTML document with the CSS, DOM & JavaScript. I had fun making it & hope you enjoy playing it also.',\n // skills: {\n // platform: [platform.des], \n // focus: [focus.sofEngr, focus.dev.type.wa, focus.game.desDev], \n // tech: [tech.js.id, tech.dom.id, tech.html.id, tech.css.id, tech.google.analytic.id]\n // },\n // paragraph2: 'Use a desktop or laptop computer not a phone. Moving the mouse around the play area will move the board at the bottom.',\n // projectLink: 'https://lwrgithub.github.io/pong-like-game/',\n // codeLink: \"https://github.com/LWRGitHub/pong-like-game\",\n // tutorial: \"https://developer.mozilla.org/en-US/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript\"\n // },\n // {\n // img: {\n // src: \"images/experience/js-animation.svg\", \n // alt: \"This is an image of a JavaScript animation game. Action has yet to get taken on the animation. Image shows a triangle circle and two squares one twisted sideways. The image also has words saying which shape has no corner, This is to entice you to click on the shape you think it is, which will begin the animation.\"\n // },\n // title: 'Interactive Animation',\n // paragraph1: 'This project is an example of interactive animation with Javascript. This project uses HTML, CSS, DOM, SVG & JavaScript. The ending was an interesting part of the project as it was the first time I used an svg image. I hope you all enjoy it!',\n // skills: {\n // platform: [platform.des, platform.mob], \n // focus: [focus.sofEngr, focus.dev.type.wma,], \n // tech: [\n // tech.html.id, \n // tech.css.id, \n // tech.js.id, \n // // tech.img.svg.id, \n // // tech.img.png.id, \n // tech.dom.id, \n // tech.google.analytic.id\n // ]\n // },\n // paragraph2: 'Click once to select a shape in the animation & it will play itself through to the end. If you keep clicking it will quickly go through animation.',\n // projectLink: \"https://lwrgithub.github.io/js-animation/\",\n // codeLink: \"https://github.com/LWRGitHub/js-animation\",\n // tutorial: \"https://www.linkedin.com/learning/interactive-animations-with-css-and-javascript?trk=learning-serp_learning_search-card&upsellOrderOrigin=lynda_redirect_learning\"\n // },\n // {\n // img: {\n // src: \"images/experience/connect-four-in-a-row-game.svg\", \n // alt: \"This is a screenshot of the completed connect four game. We're player one is the winner, This shows that the red coins have four in a row going vertically, yellow came close though. Shows is clearly as a computer game designed to get played by two people on one computer.\"\n // },\n // title: 'Connect Four',\n // paragraph1: 'I am happy to say that the game uses JavaScript, classes a new feature that was added in 2015. The game is called \"Connect Four\" also known as \"Four in a Row.\" You may just be one of these people that have played the game in real life, I hope you like it! TAKE NOTE: This game has some beautiful comments in the JS files.',\n // skills: {\n // platform: [platform.des], \n // focus: [focus.sofEngr, focus.dev.type.wa, focus.design.xi, focus.game.desDev], \n // tech: [\n // tech.js.id, \n // tech.html.id, \n // tech.css.id, \n // tech.dom.id, \n // // tech.img.svg.id, \n // tech.google.analytic.id, \n // tech.google.font.id, \n // tech.jquery.id\n // ]\n // },\n // paragraph2: 'Use the mouse to click \"Start.\" use the left, right & down arrows to place token.',\n // projectLink: \"https://lwrgithub.github.io/connect-four/\",\n // codeLink: \"https://github.com/LWRGitHub/connect-four\",\n // tutorial: \"https://teamtreehouse.com/library/objectoriented-javascript-challenge\"\n // },\n // {\n // img: {\n // src: \"images/experience/video-audio-project.jpg\", \n // alt: \"Screenshot of a webpage that includes video of a river In what seems like farmland but more so the wild and lots of trees, with a subtitle saying birds chirping. Audio recording below and a title on the web page stating HTML video and audio. Other heading tags stating audio example and video example. White background & Black outlines on the video area and audio area\"\n // },\n // title: 'Video/Audio Elements',\n // paragraph1: 'Code includes WebVTT subtitling & MediaElement.js which brings consistency through all browsers. A skip-back plug-in is used to get a 4 sec. playback button. Project has a video and an audio file displayed on screen with user-friendly access.',\n // skills: {\n // platform: [platform.des], \n // focus: [focus.sofEngr, focus.dev.type.wa], \n // tech: [\n // tech.webVtt.id, \n // tech.mediaEl.id, \n // tech.js.id, \n // tech.html.id, \n // tech.css.id, \n // tech.jquery.id, \n // tech.dom.id, \n // tech.gitHub.id, \n // tech.git.id, \n // // tech.mp4.id, \n // // tech.audio.mp3.id, \n // // tech.audio.ogg.id, \n // // tech.vlcMedia.id, \n // // tech.img.svg.id, \n // tech.google.analytic.id, \n // tech.google.font.id\n // ]\n // },\n // paragraph2: 'Use your mouse to control the video & audio elements on the screen.',\n // projectLink: \"https://lwrgithub.github.io/video-audio-elements/\",\n // codeLink: \"https://github.com/LWRGitHub/video-audio-elements\",\n // tutorial: \"https://teamtreehouse.com/library/create-a-media-player-with-mediaelementjs\"\n // },\n // {\n // img: {\n // src: \"images/experience/phaser-io-game-like-mario-lg.jpeg\", \n // alt: \"This is a screenshot of an interactive computer game that looks kind of like Super Mario. There are coins spinning on screen, poison bottles as well as a Barely visible spinning star. The upper left corner says score is 15. Player in the game is jumping from what appears to be floating pieces of land and floating pieces of metal there are coins and items all over the screen. Player appears in midair.\"\n // },\n // title: 'Mario Like Game',\n // paragraph1: 'This project is a one-page game using the framework Phaser. This framework \"Phaser\" is an HTML & JS gaming framework basically it makes it easy to make a game with JavaScript. I hope you all have fun with it!',\n // skills: {\n // platform: [platform.des], \n // focus: [focus.sofEngr, focus.dev.type.wa, focus.design.xi, focus.game.desDev], \n // tech: [\n // tech.html.id, \n // tech.css.id, \n // tech.js.id, \n // // tech.phaser.id, \n // // tech.img.png.id, \n // tech.dom.id, tech.google.analytic.id\n // ]\n // },\n // paragraph2: '\"Space bar\" = jump, \"Left & Right arrows\" = move',\n // projectLink: \"https://lwrgithub.github.io/mario-like-game/\",\n // codeLink: \"https://github.com/LWRGitHub/mario-like-game\",\n // tutorial: \"https://teamtreehouse.com/library/introducing-javascript\"\n // },\n // {\n // img: {\n // src: \"images/experience/full-stack-conf.jpg\", \n // alt: \"Screenshot of the full stock tech conference website. This is an image that provides a good example of the web development skills available by Logan Reynolds. Has a blue navigation bar in a light blue Jumbotron with the blue filter over the image on the Jumbotron. Heading says Full Stack Conf A one day conference about all things JavaScript. Buttons to register now and see speakers. there is an imgae of the city they are in. Other titles on the page include about full stack conference, Expert speakers and what you'll learn. Subjects and details are below those tiles.\"\n // },\n // title: 'Full Stack Conf',\n // paragraph1: 'This is a Basic HTML/CSS website That uses some JavaScript and jQuery for functionality as well as bootstraps for looks. This website includes a registration form that upon clicking the button pops up, as well as the necessary information & sections needed for a tech conference website.',\n // skills: {\n // platform: [platform.des, platform.mob], \n // focus: [focus.sofEngr, `${focus.dev.area.f} ${focus.dev.type.wma}`, focus.design.xi], \n // tech: [\n // tech.js.id, \n // tech.dom.id, \n // tech.html.id, \n // tech.css.id, \n // // tech.img.png.id, \n // // tech.img.jpg.id, \n // tech.jquery.id, \n // tech.bootstrap.id, \n // tech.google.analytic.id\n // ]\n // },\n // paragraph2: 'Scrolling down the website you will find a pop up registration form, along with the schedule, speakers, & other necessary information.',\n // projectLink: \"https://lwrgithub.github.io/tech-conf-site/\",\n // codeLink: \"https://github.com/LWRGitHub/tech-conf-site\",\n // tutorial: \"https://teamtreehouse.com/library/practice-selecting-dom-elements\"\n // },\n // {\n // img: {\n // src: \"images/experience/veganRestaurant.jpg\", \n // alt: \"Screen shot of vegan restaurant website. image's of vegan food and a google map of the location.\"\n // },\n // title: 'Vegan Restaurant',\n // paragraph1: 'This project displays my skills with Google maps & the ability to do web & mobile development. I hope you enjoy the vegan restaurant website.',\n // skills: {\n // platform: [platform.des, platform.mob], \n // focus: [focus.sofEngr, `${focus.dev.area.f} ${focus.dev.type.wm}`, focus.design.xi], \n // tech: [tech.html.id, tech.css.id, tech.js.id, tech.jquery.id, tech.google.analytic.id, tech.google.map.id, tech.google.font.id]\n // },\n // paragraph2: 'Vegan restaurant website demo.',\n // projectLink: \"https://lwrgithub.github.io/vegan-restaurant/\",\n // codeLink: \"https://github.com/LWRGitHub/vegan-restaurant\",\n // tutorial: \"https://dash.generalassemb.ly/\"\n // },\n // {\n // img: {\n // src: \"images/experience/html-table.png\", \n // alt: \"White background screenshot of an HTML table. HTML table is Different shades of gray. It has heading of employee information, The categories include name, email and job rule. Below each category are some names and emails & some different job rolls in the computer science industry. At the bottom it has italicized refreshes every 15 minutes.\"\n // },\n // title: 'HTML Table',\n // paragraph1: 'This is an example of an HTML table, although there are so many different ways to make tables here is an example of one way.',\n // skills: {\n // platform: [platform.des], \n // focus: [focus.sofEngr, focus.dev.type.w, focus.design.xi, focus.data], \n // tech: [tech.html.id, tech.css.id, tech.google.analytic.id, tech.google.font.id]\n // },\n // paragraph2: 'This is a table of employee information.',\n // projectLink: \"https://lwrgithub.github.io/html-table/\",\n // codeLink: \"https://github.com/LWRGitHub/html-table\",\n // tutorial: \"https://teamtreehouse.com/library/html-tables\"\n // },\n {\n img: {\n src: \"images/experience/dish-site.jpg\", \n alt: \"dish submitter website, add food & cooking instructions to the local storage on your internet browser. blue & green faded background on baner the rest of the background is very light green.\"\n },\n title: `Dish Yumy`,\n paragraph1: 'From an RSVP tutorial into a dish submitter website using local storage.',\n skills: {\n platform: [platform.des, platform.mob], \n focus: [focus.sofEngr, focus.dev.type.wma, focus.design.xi], \n tech: [tech.js.id, tech.css.id, tech.html.id, tech.dom.id, tech.google.font.id, tech.google.analytic.id, tech.git.id, tech.gitHub.id, tech.gitHubPg.id]\n },\n paragraph2: 'Type in the name of your dish along with the ingredients & submit it. You can then edit or remove the dish if you like.',\n projectLink: 'https://lwrgithub.github.io/Dish-submitter/',\n codeLink: \"https://github.com/LWRGitHub/Dish-submitter\",\n tutorial: \"https://teamtreehouse.com/library/dom-scripting-by-example\"\n },\n // {\n // img: {\n // src: \"images/experience/react-router.png\", \n // alt: \"Image of react router side, background green with a different box that is white with the light gray bar on top that has home about teachers and tech courses as links to click on to move to the site.Upper left corner has a dark box with two opening and closing brackets below the light color gray bar, You find a header that says front in course directory below that it says the fun directory is a project using react router emphasized. Hello settings is whole bunch of lorem ipsum text. Hello that is an area called featured teachers or you can type in the name of the teacher and the topic and press the button go and it'll bring you to another page. Basically this is a screenshot of the website.\"\n // },\n // title: 'Course Directory Site',\n // paragraph1: 'This is a website coded with React Router. React Router alows you to have all of your content on one page but it seems like multiple pages.',\n // skills: {\n // platform: [platform.des, platform.mob], \n // focus: [focus.sofEngr, `${focus.dev.area.f} ${focus.dev.type.wm}`, focus.design.xi, focus.data], \n // tech: [tech.html.id, tech.css.id, tech.google.analytic.id, tech.react.id, tech.js.id, tech.reactRouter.id, tech.reactBootstrap.id, tech.dom.id]\n // },\n // paragraph2: 'This site is an example of my React Router work. The site is about different technologies to learn!',\n // projectLink: \"http://LWRGitHub.github.io/Course-Directory-Site\",\n // codeLink: \"https://github.com/LWRGitHub/Course-Directory-Site\",\n // tutorial: \"https://teamtreehouse.com/library/react-router-4-basics-2\"\n // },\n // {\n // img: {\n // src: 'images/experience/books-home.png', \n // alt: 'This is a screen shot of the home page for the books traker web app.'\n // },\n // title: \"Book Tracker Web App\",\n // paragraph1: 'Built with Flask, Jinga2 & Hosted on Heroku this site is grate for organizing books you have read or want to read, have fun! I have a link to one of the GitHubs the tutorial originated from although the last GitHub tutorial was mostly about testing, but we did go thourgh other GitHub tutorials & have to build a lot of this site on are won before we were given the testing HW. ',\n // skills: {\n // platform: [platform.des], \n // focus: [focus.sofEngr, `${focus.dev.area.f} ${focus.dev.type.wa}`, focus.design.xi], \n // tech: [\n // tech.html.id, \n // tech.css.id, \n // tech.js.id,\n // tech.py.id,\n // tech.flask.id,\n // tech.jinja2.id,\n // tech.heroku.id,\n // tech.sql.sql.id,\n // tech.sql.alchemy.id,\n // tech.flaskWTF.id,\n // tech.dotenv.id,\n // tech.unittest.id,\n // // tech.img.png.id,\n // ]\n // },\n // paragraph2: \"Browse the website, signup it's free, just see what happends!\",\n // projectLink: 'https://app-to-keep-track-of-books.herokuapp.com',\n // codeLink: 'https://github.com/LWRGitHub/app-to-keep-track-of-books',\n // tutorial: \"https://github.com/Make-School-Labs/BEW-1.2-Testing-Homework\"\n // },\n // {\n // img: {\n // src: \"images/experience/react-scoreboard-lg.png\", \n // alt: \"This is an image scoreboard. The scoreboard is purple and has four players listed on it player two is winning. Play or two has a crown Player one score has gone negative and the other is a trailing behind player two. A timer is counting up in the corner currently at 47 seconds. The background is white.\"\n // },\n // title: 'React Scoreboard',\n // paragraph1: 'This is a scoreboard application designed with React.js. It keeps track of players scores throughout the game, you can add and remove the players & the current leader will have a crown.',\n // skills: {\n // platform: [platform.des], \n // focus: [focus.sofEngr, `${focus.dev.area.f} ${focus.dev.type.wa}`, focus.design.xi], \n // tech: [\n // tech.html.id, \n // tech.css.id, \n // tech.google.analytic.id, \n // tech.react.id, \n // tech.jsx.id, \n // tech.json.id, \n // // tech.lock.id, \n // tech.js.id, \n // tech.git.id, \n // tech.gitHub.id, \n // tech.reactBootstrap.id\n // ]\n // },\n // paragraph2: 'Up date the score with the plus or minus button, add players at the bottom or remove players with the red \"X\" by the players name.',\n // projectLink: \"https://lwrgithub.github.io/gaming-scoreboard/\",\n // codeLink: \"https://github.com/LWRGitHub/gaming-scoreboard\",\n // tutorial: \"https://teamtreehouse.com/library/react-components\"\n // },\n]\n\n// {\n// img: {\n// src: '', \n// alt: ''\n// },\n// title: '',\n// paragraph1: '',\n// skills: {\n// platform: [], \n// focus: [], \n// tech: []\n// },\n// paragraph2: '',\n// projectLink: '',\n// codeLink: ''\n// }\n","import {tech, mainLang} from './skills';\n\nlet expert = '';\nlet proficient = '';\nlet novice = '';\nconst js = [];\nconst java = [];\nconst py = [];\nconst rb = [];\nconst swift = [];\nconst go = [];\nconst c_Sharp = [];\nconst ts = [];\n\nfor(const key1 in tech){\n for(const key2 in tech[key1]){\n if(key2 == 'id'){\n if(tech[key1].level == 'Expert'){\n expert += `, ${tech[key1].id}`;\n }else if(tech[key1].level == 'Proficient'){\n proficient += `, ${tech[key1].id}`;\n }else if(tech[key1].level == 'Novice'){\n novice += `, ${tech[key1].id}`\n }\n } else if(key2 == 'langType') {\n if(tech[key1].langType == 'JavaScript'){\n js.push({id: tech[key1].id, level: tech[key1].level});\n } else if(tech[key1].langType == 'Python'){\n py.push({id: tech[key1].id, level: tech[key1].level});\n } else if(tech[key1].langType == 'Ruby'){\n rb.push({id: tech[key1].id, level: tech[key1].level});\n } else if(tech[key1].langType == 'C#'){\n c_Sharp.push({id: tech[key1].id, level: tech[key1].level});\n } else if(tech[key1].langType == 'Swift'){\n swift.push({id: tech[key1].id, level: tech[key1].level});\n } else if(tech[key1].langType == 'Go (Golang)'){\n go.push({id: tech[key1].id, level: tech[key1].level});\n } else if(tech[key1].langType == 'Java'){\n java.push({id: tech[key1].id, level: tech[key1].level});\n }\n } else if(key2 != 'langType' && key2 != 'level'){\n for(const key3 in tech[key1][key2]){\n if(key3 == 'id'){\n if(tech[key1][key2].level == 'Expert'){\n expert += `, ${tech[key1][key2].id}`;\n }else if(tech[key1][key2].level == 'Proficient'){\n proficient += `, ${tech[key1][key2].id}`;\n }else if(tech[key1][key2].level == 'Novice'){\n novice += `, ${tech[key1][key2].id}`;\n }\n } else if(key3 == 'langType') {\n if(tech[key1][key2].langType == 'JavaScript'){\n js.push({id: tech[key1][key2].id, level: tech[key1][key2].level});\n } else if(tech[key1][key2].langType == 'Python'){\n py.push({id: tech[key1][key2].id, level: tech[key1][key2].level});\n } else if(tech[key1][key2].langType == 'Ruby'){\n rb.push({id: tech[key1][key2].id, level: tech[key1][key2].level});\n } else if(tech[key1][key2].langType == 'C#'){\n c_Sharp.push({id: tech[key1][key2].id, level: tech[key1][key2].level});\n } else if(tech[key1][key2].langType == 'Swift'){\n swift.push({id: tech[key1][key2].id, level: tech[key1][key2].level});\n } else if(tech[key1][key2].langType == 'Go (Golang)'){\n go.push({id: tech[key1][key2].id, level: tech[key1][key2].level});\n }\n }\n }\n }\n }\n}\n\nexpert = expert.substring(2);\nproficient = proficient.substring(2);\nnovice = novice.substring(2);\n\nexport const experience = {\n expert: expert,\n proficient: proficient,\n novice: novice\n}\n\nexport const mainLanguages = [\n {\n level: mainLang.js.level,\n id: mainLang.js.id,\n associatedLang: js,\n src: \"images/experience/js-logo.svg\",\n alt: \"programming language logo for JavaScript\"\n },\n {\n level: mainLang.py.level,\n id: mainLang.py.id,\n associatedLang: py,\n src: \"images/experience/python-logo.svg\",\n alt: \"programming language logo for Python\"\n },\n // {\n // level: mainLang.swift.level,\n // id: mainLang.swift.id,\n // associatedLang: swift,\n // src: \"images/experience/swift-logo.png\",\n // alt: \"programming language logo for Swift\"\n // },\n {\n level: mainLang.go.level,\n id: mainLang.go.id,\n associatedLang: go,\n src: \"images/experience/go-logo.png\",\n alt: \"programming language logo for Golang\"\n },\n {\n level: mainLang.ts.level,\n id: mainLang.ts.id,\n associatedLang: ts,\n src: \"images/experience/Typescript_logo.png\",\n alt: \"programming language logo for TypeScript\"\n },\n // {\n // level: mainLang.java.level,\n // id: mainLang.java.id,\n // associatedLang: java,\n // src: \"images/experience/java-logo.png\",\n // alt: \"programming language logo for Java\"\n // },\n // {\n // level: mainLang.rb.level,\n // id: mainLang.rb.id,\n // associatedLang: rb,\n // src: \"images/experience/ruby-logo.svg\",\n // alt: \"The Ruby Logo for the computer Science programming language\"\n // },\n // {\n // level: mainLang.c_sharp.level,\n // id: mainLang.c_sharp.id,\n // associatedLang: c_Sharp,\n // src: \"images/experience/c-sharp.svg\",\n // alt: \"The C# Logo for the computer Science programming language\"\n // }\n];","import React from 'react';\n\n//components\nimport ProjectContainer from './experience/projects/ProjectContainer';\nimport MainLangContainer from './experience/mainLang/MainLangContainer';\nimport ExtendSkills from './experience/extendSkills/ExtendSkills';\nimport Header from './Header';\n\n//data\nimport { ProProj, PersonalProj, TutorialProj } from '../data/projects';\nimport {mainLanguages, experience} from '../data/experiencePgSkillSort';\n\nconst Projects = () => (\n
\n \n
Engineering Positions
\n \n \n \n
Personal Projects
\n \n \n \n
Tutorial Projects Taken To The Next Level
\n \n \n
\n);\n\nconst Experience = () => (\n
\n \n \n \n \n
\n);\n\nexport default Experience;","import React from 'react';\n\nimport Header from './Header';\n\nconst ContactInfo = () => (\n
\n);\n\nexport default Contact;","import React from 'react';\n\nconst Footer = () => (\n \n);\n\nexport default Footer;","import React from 'react';\nimport {\n HashRouter,\n Route,\n Switch\n} from 'react-router-dom';\n\n// Components\nimport About from './About';\nimport Home from './Home';\nimport Education from './Education';\nimport Experience from './Experience';\nimport Contact from './Contact';\nimport Footer from './Footer';\n\nconst App = () => (\n \n
\n \n \n \n \n \n \n \n \n \n
\n \n);\n\nexport default App;\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' },\n })\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready\n .then(registration => {\n registration.unregister();\n })\n .catch(error => {\n console.error(error.message);\n });\n }\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport 'bootstrap/dist/css/bootstrap.min.css';\nimport './css/index.css';\nimport App from './components/App';\nimport * as serviceWorker from './serviceWorker';\n// import './js/javascript.js';\n\nReactDOM.render(\n \n \n ,\n document.getElementById('root')\n);\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n"],"names":["reactIs","require","REACT_STATICS","childContextTypes","contextType","contextTypes","defaultProps","displayName","getDefaultProps","getDerivedStateFromError","getDerivedStateFromProps","mixins","propTypes","type","KNOWN_STATICS","name","length","prototype","caller","callee","arguments","arity","MEMO_STATICS","compare","TYPE_STATICS","getStatics","component","isMemo","ForwardRef","render","Memo","defineProperty","Object","getOwnPropertyNames","getOwnPropertySymbols","getOwnPropertyDescriptor","getPrototypeOf","objectPrototype","module","exports","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","keys","concat","targetStatics","sourceStatics","i","key","descriptor","e","hasOwnProperty","propIsEnumerable","propertyIsEnumerable","assign","test1","String","test2","fromCharCode","map","n","join","test3","split","forEach","letter","err","shouldUseNative","target","source","from","symbols","to","val","undefined","TypeError","toObject","s","call","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","props","propName","componentName","location","propFullName","secret","Error","getShim","isRequired","ReactPropTypes","array","bigint","bool","func","number","object","string","symbol","any","arrayOf","element","elementType","instanceOf","node","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","PropTypes","aa","r","u","a","b","c","encodeURIComponent","ba","d","f","g","h","k","l","Array","slice","apply","m","this","onError","da","ea","fa","ha","ia","ja","la","ma","na","oa","currentTarget","ka","pa","qa","ra","indexOf","sa","extractEvents","eventTypes","ta","phasedRegistrationNames","ua","registrationName","va","wa","dependencies","xa","ya","window","document","createElement","za","Aa","Ba","Ca","stateNode","Da","push","Ea","Fa","Ga","Ha","Ia","Ja","Ka","La","Ma","Na","Oa","Pa","Qa","v","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","propertyName","sanitizeURL","C","toLowerCase","Ua","Va","toUpperCase","replace","xlinkHref","Wa","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","Xa","Sa","isNaN","Ta","test","Ra","removeAttribute","setAttribute","setAttributeNS","ReactCurrentDispatcher","current","ReactCurrentBatchConfig","suspense","Ya","E","Symbol","for","Za","$a","ab","bb","cb","db","eb","fb","gb","hb","ib","jb","kb","lb","mb","iterator","nb","pb","$$typeof","_status","_result","qb","tag","_debugOwner","_debugSource","fileName","lineNumber","return","rb","sb","nodeName","xb","_valueTracker","constructor","get","set","configurable","enumerable","getValue","setValue","stopTracking","tb","yb","checked","value","zb","defaultChecked","defaultValue","_wrapperState","initialChecked","Ab","initialValue","controlled","Bb","Cb","Db","Eb","ownerDocument","activeElement","Gb","children","Children","Fb","Hb","options","selected","defaultSelected","disabled","Ib","dangerouslySetInnerHTML","Jb","isArray","Kb","Lb","textContent","Mb","Nb","Ob","Pb","Qb","namespaceURI","innerHTML","valueOf","toString","firstChild","removeChild","appendChild","MSApp","execUnsafeLocalFunction","Rb","lastChild","nodeType","nodeValue","Sb","Tb","animationend","animationiteration","animationstart","transitionend","Ub","Vb","Wb","style","animation","transition","Xb","Yb","Zb","$b","ac","bc","WeakMap","Map","cc","dc","alternate","effectTag","ec","memoizedState","dehydrated","fc","hc","child","sibling","gc","ic","jc","kc","lc","_dispatchListeners","_dispatchInstances","isPropagationStopped","isPersistent","release","mc","nc","srcElement","correspondingUseElement","parentNode","oc","pc","qc","topLevelType","nativeEvent","targetInst","ancestors","rc","pop","eventSystemFlags","sc","containerInfo","tc","uc","has","vc","F","wc","xc","yc","zc","Ac","Bc","Cc","Dc","Ec","Fc","Gc","Hc","Ic","Kc","blockedOn","container","Lc","delete","pointerId","Mc","Nc","Pc","unstable_runWithPriority","priority","hydrate","Qc","Rc","Sc","Tc","shift","Uc","unstable_scheduleCallback","unstable_NormalPriority","Vc","Wc","Yc","Zc","$c","ad","bubbled","captured","eventPriority","bd","cd","dd","unstable_UserBlockingPriority","ed","fd","gd","bind","hd","id","addEventListener","Oc","jd","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","kd","ld","trim","md","setProperty","charAt","substring","nd","menuitem","area","base","br","col","embed","hr","img","input","keygen","link","meta","param","track","wbr","od","pd","is","qd","rd","sd","td","body","ud","vd","offset","nextSibling","wd","contains","compareDocumentPosition","xd","HTMLIFrameElement","contentWindow","href","yd","contentEditable","zd","Ad","Bd","Cd","Dd","Ed","Fd","autoFocus","Gd","__html","Hd","setTimeout","Id","clearTimeout","Jd","Kd","previousSibling","data","Ld","Math","random","Md","Nd","Od","Pd","Qd","Rd","Sd","Td","dispatchConfig","Ud","_targetInst","Vd","Wd","Xd","Yd","Zd","$d","ae","be","ce","G","Interface","isDefaultPrevented","defaultPrevented","returnValue","ee","eventPool","fe","destructor","de","getPooled","preventDefault","stopPropagation","cancelBubble","persist","eventPhase","bubbles","cancelable","timeStamp","Date","now","isTrusted","extend","ge","he","ie","je","ke","documentMode","le","me","ne","oe","beforeInput","compositionEnd","compositionStart","compositionUpdate","pe","qe","keyCode","re","detail","se","ve","locale","which","te","ctrlKey","altKey","metaKey","char","ue","we","color","date","datetime","email","month","password","range","search","tel","text","time","url","week","xe","ye","change","ze","Ae","Be","Ce","De","Ee","Fe","Ge","detachEvent","He","Ie","attachEvent","Je","Ke","Le","Me","_isInputEventSupported","Ne","view","Oe","Alt","Control","Meta","Shift","Pe","getModifierState","Qe","Re","Se","Te","Ue","Ve","screenX","screenY","clientX","clientY","pageX","pageY","shiftKey","button","buttons","relatedTarget","fromElement","toElement","movementX","movementY","We","width","height","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Xe","mouseEnter","mouseLeave","pointerEnter","pointerLeave","Ye","defaultView","parentWindow","p","$e","af","bf","cf","df","select","ef","ff","gf","hf","jf","start","selectionStart","end","selectionEnd","anchorNode","getSelection","anchorOffset","focusNode","focusOffset","kf","onSelect","lf","animationName","elapsedTime","pseudoElement","mf","clipboardData","nf","of","charCode","pf","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","qf","rf","repeat","sf","dataTransfer","tf","touches","targetTouches","changedTouches","uf","vf","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","wf","SimpleEventPlugin","EnterLeaveEventPlugin","ChangeEventPlugin","SelectEventPlugin","BeforeInputEventPlugin","yf","zf","H","I","Af","J","K","Bf","Cf","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","L","Df","Ef","Ff","getChildContext","Gf","__reactInternalMemoizedMergedChildContext","Hf","If","Jf","Kf","unstable_cancelCallback","Lf","unstable_requestPaint","Mf","unstable_now","Nf","unstable_getCurrentPriorityLevel","Of","unstable_ImmediatePriority","Pf","Qf","Rf","unstable_LowPriority","Sf","unstable_IdlePriority","Tf","Uf","unstable_shouldYield","Vf","Wf","Xf","Yf","Zf","$f","ag","bg","cg","dg","eg","fg","gg","hg","ig","jg","kg","lg","mg","ng","og","_context","_currentValue","pg","childExpirationTime","qg","firstContext","expirationTime","rg","sg","context","observedBits","next","responders","tg","ug","updateQueue","baseState","baseQueue","shared","pending","effects","vg","wg","suspenseConfig","payload","callback","xg","yg","zg","x","z","ca","Ag","D","t","Bg","Cg","Dg","Eg","Component","refs","Fg","Jg","isMounted","_reactInternalFiber","enqueueSetState","Gg","Hg","Ig","enqueueReplaceState","enqueueForceUpdate","Kg","shouldComponentUpdate","isPureReactComponent","Lg","state","updater","Mg","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","Ng","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","Og","Pg","ref","_owner","_stringRef","Qg","Rg","lastEffect","nextEffect","firstEffect","index","Sg","Tg","mode","Ug","implementation","Vg","Wg","y","A","q","done","Xg","Yg","Zg","$g","ah","bh","ch","dh","documentElement","tagName","eh","fh","gh","M","hh","memoizedProps","revealOrder","ih","responder","jh","kh","lh","N","O","P","mh","Q","nh","oh","ph","qh","rh","sh","th","queue","uh","vh","wh","lastRenderedReducer","action","eagerReducer","eagerState","lastRenderedState","dispatch","xh","yh","zh","Ah","create","destroy","deps","Bh","Ch","Dh","Eh","Fh","Gh","Hh","Ih","Jh","Kh","Lh","Mh","Nh","readContext","useCallback","useContext","useEffect","useImperativeHandle","useLayoutEffect","useMemo","useReducer","useRef","useState","useDebugValue","useResponder","useDeferredValue","useTransition","Oh","Ph","Qh","Rh","Sh","Th","pendingProps","Uh","Vh","Wh","Xh","Yh","ReactCurrentOwner","R","Zh","$h","ai","bi","ci","di","ei","fi","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","gi","hi","pendingContext","ni","oi","pi","qi","ii","retryTime","ji","fallback","unstable_avoidThisFallback","ki","li","isBackwards","rendering","renderingStartTime","last","tail","tailExpiration","tailMode","mi","ri","si","wasMultiple","multiple","onClick","onclick","size","createElementNS","createTextNode","S","ti","ui","vi","wi","T","xi","U","yi","zi","Ai","stack","Bi","WeakSet","Set","Ci","console","error","Fi","Ei","Gi","__reactInternalSnapshotBeforeUpdate","Hi","Ii","Ji","focus","Ki","Li","componentWillUnmount","Di","Mi","Ni","Oi","Pi","Qi","Ri","instance","insertBefore","_reactRootContainer","Si","Ti","display","Ui","Vi","add","then","Wi","Xi","Yi","Zi","$i","componentDidCatch","aj","componentStack","Rj","bj","ceil","cj","dj","V","ej","fj","gj","hj","ij","jj","W","X","kj","lj","mj","nj","oj","pj","Y","qj","rj","sj","tj","uj","vj","wj","timeoutMs","xj","yj","Z","zj","lastExpiredTime","Aj","firstPendingTime","lastPingedTime","nextKnownPendingLevel","callbackExpirationTime","callbackPriority","callbackNode","Bj","timeout","Cj","Dj","Ej","Fj","Gj","Hj","finishedWork","finishedExpirationTime","lastSuspendedTime","Ij","timeoutHandle","Jj","busyMinDurationMs","busyDelayMs","Kj","Mj","Nj","pingCache","Oj","w","ub","Pj","Xc","Qj","Sj","firstSuspendedTime","rangeCount","wb","activeElementDetached","focusedElem","selectionRange","Tj","B","min","createRange","setStart","removeAllRanges","addRange","setEnd","left","scrollLeft","top","scrollTop","vb","Uj","Vj","Wj","hidden","_ctor","default","ob","Xj","_calculateChangedBits","unstable_observedBits","Zj","isReactComponent","pendingChildren","ak","bk","ck","dk","ek","fk","Jc","_internalRoot","gk","ik","hasAttribute","hk","kk","jk","unmount","querySelectorAll","JSON","stringify","form","Lj","lk","Events","findFiberByHostInstance","__REACT_DEVTOOLS_GLOBAL_HOOK__","isDisabled","supportsFiber","inject","onCommitFiberRoot","onCommitFiberUnmount","Yj","overrideHookState","overrideProps","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","bundleType","version","rendererPackageName","createPortal","findDOMNode","flushSync","unmountComponentAtNode","unstable_batchedUpdates","unstable_createPortal","unstable_renderSubtreeIntoContainer","checkDCE","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Element","Fragment","Lazy","Portal","Profiler","StrictMode","Suspense","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","arr","isarray","pathToRegexp","parse","compile","str","tokensToFunction","tokensToRegExp","PATH_REGEXP","RegExp","res","tokens","path","defaultDelimiter","delimiter","exec","escaped","prefix","capture","group","modifier","asterisk","partial","optional","pattern","escapeGroup","escapeString","substr","encodeURIComponentPretty","encodeURI","charCodeAt","matches","flags","obj","opts","encode","pretty","token","segment","j","attachKeys","sensitive","strict","route","endsWithDelimiter","groups","match","regexpToRegexp","parts","arrayToRegexp","stringToRegexp","setState","forceUpdate","__self","__source","result","keyPrefix","count","escape","IsSomeRendererActing","toArray","only","PureComponent","cloneElement","createContext","_currentValue2","_threadCount","Provider","Consumer","createFactory","createRef","forwardRef","isValidElement","lazy","memo","MessageChannel","unstable_forceFrameRate","performance","cancelAnimationFrame","requestAnimationFrame","floor","port2","port1","onmessage","postMessage","sortIndex","startTime","priorityLevel","unstable_Profiling","unstable_continueExecution","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","delay","unstable_wrapCallback","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","getter","__esModule","definition","o","globalThis","Function","prop","_setPrototypeOf","setPrototypeOf","__proto__","_inheritsLoose","subClass","superClass","isAbsolute","pathname","spliceOne","list","hasTrailingSlash","toParts","fromParts","isToAbs","isFromAbs","mustEndAbs","up","part","unshift","isProduction","process","condition","message","addLeadingSlash","stripLeadingSlash","stripBasename","hasBasename","stripTrailingSlash","createPath","hash","createLocation","currentLocation","hashIndex","searchIndex","parsePath","_extends","decodeURI","URIError","resolvePathname","createTransitionManager","prompt","listeners","setPrompt","nextPrompt","confirmTransitionTo","getUserConfirmation","appendListener","fn","isActive","listener","filter","item","notifyListeners","_len","args","_key","canUseDOM","getConfirmation","confirm","PopStateEvent","HashChangeEvent","getHistoryState","history","createBrowserHistory","invariant","globalHistory","canUseHistory","navigator","userAgent","supportsHistory","needsHashChangeListener","_props","_props$forceRefresh","forceRefresh","_props$getUserConfirm","_props$keyLength","keyLength","basename","getDOMLocation","historyState","_ref","_window$location","createKey","transitionManager","nextState","handlePopState","event","isExtraneousPopstateEvent","handlePop","handleHashChange","forceNextPop","ok","fromLocation","toLocation","toIndex","allKeys","fromIndex","delta","go","revertPop","initialLocation","createHref","listenerCount","checkDOMListeners","removeEventListener","isBlocked","pushState","prevIndex","nextKeys","replaceState","goBack","goForward","block","unblock","listen","unlisten","HashChangeEvent$1","HashPathCoders","hashbang","encodePath","decodePath","noslash","slash","stripHash","getHashPath","replaceHashPath","createHashHistory","_props$hashType","hashType","_HashPathCoders$hashT","ignorePath","encodedPath","prevLocation","allPaths","lastIndexOf","baseTag","querySelector","getAttribute","pushHashPath","nextPaths","clamp","lowerBound","upperBound","max","MAX_SIGNED_31_BIT_INT","commonjsGlobal","global","React","calculateChangedBits","_Provider$childContex","_Consumer$contextType","contextProp","getUniqueId","_Component","_this","emitter","handlers","on","handler","off","newValue","changedBits","createEventEmitter","_proto","nextProps","oldValue","_Component2","_this2","onUpdate","_proto2","excluded","sourceKeys","createNamedContext","historyContext","Router","_isMounted","_pendingLocation","staticContext","computeRootMatch","params","isExact","RouterContext","HistoryContext","cache","cacheLimit","cacheCount","matchPath","reduce","matched","cacheKey","pathCache","regexp","compilePath","values","Route","computedMatch","createURL","staticHandler","methodName","noop","Switch","HashRouter","createHistory","resolveToLocation","normalizeToLocation","forwardRefShim","LinkAnchor","forwardedRef","innerRef","navigate","rest","ex","isModifiedEvent","Link","ariaCurrent","activeClassName","activeStyle","classNameProp","className","isActiveProp","locationProp","styleProp","escapedPath","classnames","joinClassnames","page","h4","MainContent","src","alt","secondUl","skills","moreInfo","credentials","skill","liCredentailTag","aText","title","content","extendedInfo","school","moreInfoLen","schools","edSection","expertise","mainLang","js","level","py","ts","platform","fs","wma","wm","tech","langType","goScrape","goTempGen","goTest","goBenchmark","chatGPT","promptEngr","lLMResponses","flask","flaskWTF","jinja2","express","heroku","jade","pug","bootstrap","boostrIcon","react","reactBootstrap","reactRouter","dom","mongo","mongoose","pyTest","dotenv","html","css","bitBucket","git","gitHub","gitHubPg","bs4","selenium","request","CI_CD","resourceOverride","charlesProxy","postman","jira","adobe","photo","analytics","cja","marketing","experience","dataCollection","adminConsole","webSDK","dream","muse","trello","graphQL","localStor","npm","yarn","chromeDev","google","font","analytic","adsense","cloud","wordPr","phaser","jquery","webVtt","mediaEl","json","jsx","p5","shell","unixShell","powerSh","terminal","wix","goDaddy","wireFrames","figma","asyncAwait","http","unixCLI","aws","cloud9","testDev","dataAnaly","databases","webAccess","webOptimiz","preformOptimiz","flexbox","responsive","balsamiq","sql","vSCode","adam","brackets","vS","ftp","fZilla","gitHubCP","windows","mac","Linux","api","fetch","garageband","milkyTrack","imove","markdown","education","TutorialCheck","tutorial","codeLink","projectLink","platforms","paragraph1","paragraph2","projects","project","associatedLang","language","expert","proficient","novice","ProProj","PersonalProj","TutorialProj","java","swift","c_Sharp","key1","key2","key3","mainLanguages","Projects","ContactInfo","GMap","frameborder","allowfullscreen","Home","About","Education","Experience","Contact","Boolean","hostname","ReactDOM","getElementById","serviceWorker","ready","registration","unregister","catch"],"sourceRoot":""}
\ No newline at end of file