{"id":20579925,"url":"https://github.com/erikw/advent-of-code-solutions","last_synced_at":"2025-04-14T19:22:24.944Z","repository":{"id":37750090,"uuid":"433747676","full_name":"erikw/advent-of-code-solutions","owner":"erikw","description":"My solutions to puzzles at https://adventofcode.com/","archived":false,"fork":false,"pushed_at":"2025-04-13T18:47:40.000Z","size":42857,"stargazers_count":16,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-13T19:35:18.306Z","etag":null,"topics":["advent-of-code","adventofcode","aoc","competitive-programming","programming-challenges","solutions"],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/erikw.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2021-12-01T08:42:48.000Z","updated_at":"2025-04-10T08:54:23.000Z","dependencies_parsed_at":"2025-04-13T19:35:37.501Z","dependency_job_id":null,"html_url":"https://github.com/erikw/advent-of-code-solutions","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erikw%2Fadvent-of-code-solutions","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erikw%2Fadvent-of-code-solutions/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erikw%2Fadvent-of-code-solutions/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erikw%2Fadvent-of-code-solutions/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/erikw","download_url":"https://codeload.github.com/erikw/advent-of-code-solutions/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248943415,"owners_count":21186958,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["advent-of-code","adventofcode","aoc","competitive-programming","programming-challenges","solutions"],"created_at":"2024-11-16T06:19:08.127Z","updated_at":"2025-04-14T19:22:24.936Z","avatar_url":"https://github.com/erikw.png","language":"Ruby","funding_links":[],"categories":["Tools and Utilities"],"sub_categories":[],"readme":"# Advent of Code Solutions 🎄\n\n\u003c!-- [![Number of solved puzzles](https://img.shields.io/github/directory-file-count/erikw/advent-of-code-solutions?extension=txt)](#) --\u003e\n\u003c!-- API of my own Vercel deployment: https://adventofcode-badge-erikw.vercel.app/api/ --\u003e\n[![Total stars from all years](https://img.shields.io/badge/dynamic/json?logo=data:image/jpg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD//gAfQ29tcHJlc3NlZCBieSBqcGVnLXJlY29tcHJlc3P/2wCEAAQEBAQEBAQEBAQGBgUGBggHBwcHCAwJCQkJCQwTDA4MDA4MExEUEA8QFBEeFxUVFx4iHRsdIiolJSo0MjRERFwBBAQEBAQEBAQEBAYGBQYGCAcHBwcIDAkJCQkJDBMMDgwMDgwTERQQDxAUER4XFRUXHiIdGx0iKiUlKjQyNEREXP/CABEIAEAAQAMBIgACEQEDEQH/xAAcAAEAAgIDAQAAAAAAAAAAAAAABggFBwMECQH/2gAIAQEAAAAAo+ZXkwwNz5LQwnkD3pk68TyBrFb2kfbiejq3H30t5vM/jFs4d0tlVAMhcWlS5tScQAf/xAAYAQADAQEAAAAAAAAAAAAAAAABBQYCBP/aAAgBAhAAAABtxDuVyOa9rAi/ysLH/8QAGAEAAwEBAAAAAAAAAAAAAAAAAQIEAAP/2gAIAQMQAAAAnbL0oM3Osxl8n//EADYQAAEEAQEEBwYEBwAAAAAAAAIBAwQFBgcACBEhEBITIDEyQRQVIlNhchYXMFJic4KRkqPB/9oACAEBAAE/AOmkpLTI7SJS0sQpM+USgyyKoimqJx9dsgx+4xa2k0d9CKJYx0BXWTVFUe0BDHmPFOaL393xvtNXcR+jr5f4sntvLN9TWDIS/fGgH/oEe7K0xz6JQV2UHi85ynmxhlNSWG+2RGj5oTiBxIEVPUujduDr6wYx9AnF/aKe29E31NWZxfMrIRdFdpjntpSzsji4xNSpiRjkuSng7ECaBOKq31+Cuf09OCbyuc4gzDrbEGLqqjgDQMv8GXgaDkgtuhtHyXd11l5XdfHqbt7z+0okKQp/R9v4HNsH3d4GB59VZjQ5G5JrWWpKLElNorqdu0oIoOhyLbUTd/haj51+KrjIHYlcMCPGWNGaTtjJpSVVVw+QptIud3LRnlXQo9tdM+VGESfJQ/5pr1G9s63m82ypmZXU7DFJWPgbRA3wffNs+Sobh9wRIiEQFVJVREROaqq7acwPyR0kfu81sZSvK37Y7EeeJRYI+TcVkC5Ca+u2ZsNa8aRpZ4XayWJRAr7cUHyBDeb88OSI7OtOsOuMvtk262SgYGnAhIV4Kiovqnd3ZdLEvLNdQb6OiVNW6qQEd8r8oPFz7GdtftWS1CyH3VUSVXGqpwhjdXyyXvApH/A20J1Yd03yT2axdIscsyBuaHyD8BkD9vgW281pczBkhqXjjYlW2Kh7yBrmAPn5JA/wO9yqZgSbSuj2sxYkByS0EmQIK4rTKkiGaCPMlFPTbWzVXHKHDKjTPTOcycN+A2MmRFPiLcMk5Ndb5jvifToRqtSWONWemOpEuP7rCE6kR+YfAFionxxzJfUPFva/j1MS7tY1DPObVNyXBiSTBQJxlF+FVRfX9L//xAAlEQACAwABAwMFAQAAAAAAAAABAgMEBQARQVEGEDESFDI0YpH/2gAIAQIBAT8A5o2Wp0LlpAC0MLuAfjqo68y7T3s6lccAPNCjkD4BI9tSTVhijky68MzBuskcjFSy/wAnzzV9V13zNGjoU7FG29eRVSVeqsxHZhzH9VVosrNoUali7bSBFZIkIVWHljzLl1Zo5JNSvDAWYGOONixC/wBHz7bfX1JqR4Fb9WuwkuzAf4gPnmMD6Y1nw7H6VpjJTlPnuhPs6l0dQxUkEdR8jmRk18isYISzu7l5JX/J2Pc81sqvr1ft5yVKsHjkX8kYdxyNTHGiFyxVQPqPyenc8//EACIRAAICAAUFAQAAAAAAAAAAAAECAAMEEBIhURETIzJBgf/aAAgBAwEBPwCIup1Xkx10O68HplWKySLCRwRK8O3cR0cMoYbiWYdjY7uyqpb7LBWCBWxPJOVXgrNzex2QS3z1i0ey7MMhLLDY3U7fAJXYam1D9EO5Jn//2Q==\u0026labelColor=black\u0026color=118a03\u0026label=all\u0026query=allStars\u0026url=https://adventofcode-badge-erikw.vercel.app/api)](#)\n[![GitHub language count](https://img.shields.io/github/languages/count/erikw/advent-of-code-solutions)](#)\n[![GitHub top language](https://img.shields.io/github/languages/top/erikw/advent-of-code-solutions)](#)\n[![Languages Used](https://img.shields.io/badge/solution%20languages-Ruby,%20JavaScript,%20Python-blue)](#)\n[![SLOC](https://sloc.xyz/github/erikw/advent-of-code-solutions?lower=true)](#)\n[![GitHub last commit (branch)](https://img.shields.io/github/last-commit/erikw/advent-of-code-solutions/main)](#)\n[![Update README ⭐](https://github.com/erikw/advent-of-code-solutions/actions/workflows/readme-stars.yml/badge.svg)](https://github.com/erikw/advent-of-code-solutions/actions/workflows/readme-stars.yml)\n\u003cp align=\"center\"\u003e\n    \u003c!-- Ref: https://dev.to/azure/adding-a-github-codespace-button-to-your-readme-5f6l --\u003e\n    \u003ca href=\"https://github.com/codespaces/new?hide_repo_select=true\u0026ref=main\u0026repo=433747676\" title=\"Open in GitHub Codespaces\" \u003e\u003cimg alt=\"Open in GitHub Codespaces\" src=\"https://github.com/codespaces/badge.svg\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\u003cbr\u003e\n\nMy solutions to puzzles at [adventofcode.com](https://adventofcode.com/). Also check out my collected [tricks](tricks.md).\n\n\n\n\n```perl\n                                      `}-'       `}-'\n ___                    `}-' `}-'  ____/`-,  _____/`-,\n\"-_/}__             `}-'_/`-, /`-,( _,,.{-,_(__,,,.(\n  [(_.-'`--,__   ____/`-,.(,-`}-'_,\u003e___\\/`-, \u003e|`---\\\n  [(__\\___\\  _`-(--...(..-'_`./`-,/(--,,.(  //    / \u003e\n  |_______/-'    \u003e`---\\ / (   `{    \u003e`---\\\n  __|___|__)    / \\  / \\  /`--/\u003c   / \\   /|\n                         /  \\/  \\\n```\n\nSee also:\n* [erikw/hackerrank-solutions](https://github.com/erikw/hackerrank-solutions/)\n* [erikw/kattis-solutions](https://github.com/erikw/kattis-solutions/)\n* [erikw/leetcode-solutions](https://github.com/erikw/leetcode-solutions/)\n* [erikw/project-euler-solutions](https://github.com/erikw/project-euler-solutions)\n\n\n\u003c!--- advent_readme_stars table ---\u003e\n## 2024 Results\n\n| Day | Part 1 | Part 2 |\n| :---: | :---: | :---: |\n\u003c!--- advent_readme_stars table ---\u003e\n\n## All Results\n\u003cp\u003e\u003ca href = \"#\"\u003e\u003cimg alt=\"Stars 2015\" src=\"https://img.shields.io/badge/dynamic/json?style=for-the-badge\u0026logo=data:image/jpg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD//gAfQ29tcHJlc3NlZCBieSBqcGVnLXJlY29tcHJlc3P/2wCEAAQEBAQEBAQEBAQGBgUGBggHBwcHCAwJCQkJCQwTDA4MDA4MExEUEA8QFBEeFxUVFx4iHRsdIiolJSo0MjRERFwBBAQEBAQEBAQEBAYGBQYGCAcHBwcIDAkJCQkJDBMMDgwMDgwTERQQDxAUER4XFRUXHiIdGx0iKiUlKjQyNEREXP/CABEIAEAAQAMBIgACEQEDEQH/xAAcAAEAAgIDAQAAAAAAAAAAAAAABggFBwMECQH/2gAIAQEAAAAAo+ZXkwwNz5LQwnkD3pk68TyBrFb2kfbiejq3H30t5vM/jFs4d0tlVAMhcWlS5tScQAf/xAAYAQADAQEAAAAAAAAAAAAAAAABBQYCBP/aAAgBAhAAAABtxDuVyOa9rAi/ysLH/8QAGAEAAwEBAAAAAAAAAAAAAAAAAQIEAAP/2gAIAQMQAAAAnbL0oM3Osxl8n//EADYQAAEEAQEEBwYEBwAAAAAAAAIBAwQFBgcACBEhEBITIDEyQRQVIlNhchYXMFJic4KRkqPB/9oACAEBAAE/AOmkpLTI7SJS0sQpM+USgyyKoimqJx9dsgx+4xa2k0d9CKJYx0BXWTVFUe0BDHmPFOaL393xvtNXcR+jr5f4sntvLN9TWDIS/fGgH/oEe7K0xz6JQV2UHi85ynmxhlNSWG+2RGj5oTiBxIEVPUujduDr6wYx9AnF/aKe29E31NWZxfMrIRdFdpjntpSzsji4xNSpiRjkuSng7ECaBOKq31+Cuf09OCbyuc4gzDrbEGLqqjgDQMv8GXgaDkgtuhtHyXd11l5XdfHqbt7z+0okKQp/R9v4HNsH3d4GB59VZjQ5G5JrWWpKLElNorqdu0oIoOhyLbUTd/haj51+KrjIHYlcMCPGWNGaTtjJpSVVVw+QptIud3LRnlXQo9tdM+VGESfJQ/5pr1G9s63m82ypmZXU7DFJWPgbRA3wffNs+Sobh9wRIiEQFVJVREROaqq7acwPyR0kfu81sZSvK37Y7EeeJRYI+TcVkC5Ca+u2ZsNa8aRpZ4XayWJRAr7cUHyBDeb88OSI7OtOsOuMvtk262SgYGnAhIV4Kiovqnd3ZdLEvLNdQb6OiVNW6qQEd8r8oPFz7GdtftWS1CyH3VUSVXGqpwhjdXyyXvApH/A20J1Yd03yT2axdIscsyBuaHyD8BkD9vgW281pczBkhqXjjYlW2Kh7yBrmAPn5JA/wO9yqZgSbSuj2sxYkByS0EmQIK4rTKkiGaCPMlFPTbWzVXHKHDKjTPTOcycN+A2MmRFPiLcMk5Ndb5jvifToRqtSWONWemOpEuP7rCE6kR+YfAFionxxzJfUPFva/j1MS7tY1DPObVNyXBiSTBQJxlF+FVRfX9L//xAAlEQACAwABAwMFAQAAAAAAAAABAgMEBQARQVEGEDESFDI0YpH/2gAIAQIBAT8A5o2Wp0LlpAC0MLuAfjqo68y7T3s6lccAPNCjkD4BI9tSTVhijky68MzBuskcjFSy/wAnzzV9V13zNGjoU7FG29eRVSVeqsxHZhzH9VVosrNoUali7bSBFZIkIVWHljzLl1Zo5JNSvDAWYGOONixC/wBHz7bfX1JqR4Fb9WuwkuzAf4gPnmMD6Y1nw7H6VpjJTlPnuhPs6l0dQxUkEdR8jmRk18isYISzu7l5JX/J2Pc81sqvr1ft5yVKsHjkX8kYdxyNTHGiFyxVQPqPyenc8//EACIRAAICAAUFAQAAAAAAAAAAAAECAAMEEBIhURETIzJBgf/aAAgBAwEBPwCIup1Xkx10O68HplWKySLCRwRK8O3cR0cMoYbiWYdjY7uyqpb7LBWCBWxPJOVXgrNzex2QS3z1i0ey7MMhLLDY3U7fAJXYam1D9EO5Jn//2Q==\u0026labelColor=black\u0026color=118a03\u0026label=2015\u0026query=2015\u0026url=https://adventofcode-badge-erikw.vercel.app/api\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href = \"#\"\u003e\u003cimg alt=\"Stars 2016\" src=\"https://img.shields.io/badge/dynamic/json?style=for-the-badge\u0026logo=data:image/jpg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD//gAfQ29tcHJlc3NlZCBieSBqcGVnLXJlY29tcHJlc3P/2wCEAAQEBAQEBAQEBAQGBgUGBggHBwcHCAwJCQkJCQwTDA4MDA4MExEUEA8QFBEeFxUVFx4iHRsdIiolJSo0MjRERFwBBAQEBAQEBAQEBAYGBQYGCAcHBwcIDAkJCQkJDBMMDgwMDgwTERQQDxAUER4XFRUXHiIdGx0iKiUlKjQyNEREXP/CABEIAEAAQAMBIgACEQEDEQH/xAAcAAEAAgIDAQAAAAAAAAAAAAAABggFBwMECQH/2gAIAQEAAAAAo+ZXkwwNz5LQwnkD3pk68TyBrFb2kfbiejq3H30t5vM/jFs4d0tlVAMhcWlS5tScQAf/xAAYAQADAQEAAAAAAAAAAAAAAAABBQYCBP/aAAgBAhAAAABtxDuVyOa9rAi/ysLH/8QAGAEAAwEBAAAAAAAAAAAAAAAAAQIEAAP/2gAIAQMQAAAAnbL0oM3Osxl8n//EADYQAAEEAQEEBwYEBwAAAAAAAAIBAwQFBgcACBEhEBITIDEyQRQVIlNhchYXMFJic4KRkqPB/9oACAEBAAE/AOmkpLTI7SJS0sQpM+USgyyKoimqJx9dsgx+4xa2k0d9CKJYx0BXWTVFUe0BDHmPFOaL393xvtNXcR+jr5f4sntvLN9TWDIS/fGgH/oEe7K0xz6JQV2UHi85ynmxhlNSWG+2RGj5oTiBxIEVPUujduDr6wYx9AnF/aKe29E31NWZxfMrIRdFdpjntpSzsji4xNSpiRjkuSng7ECaBOKq31+Cuf09OCbyuc4gzDrbEGLqqjgDQMv8GXgaDkgtuhtHyXd11l5XdfHqbt7z+0okKQp/R9v4HNsH3d4GB59VZjQ5G5JrWWpKLElNorqdu0oIoOhyLbUTd/haj51+KrjIHYlcMCPGWNGaTtjJpSVVVw+QptIud3LRnlXQo9tdM+VGESfJQ/5pr1G9s63m82ypmZXU7DFJWPgbRA3wffNs+Sobh9wRIiEQFVJVREROaqq7acwPyR0kfu81sZSvK37Y7EeeJRYI+TcVkC5Ca+u2ZsNa8aRpZ4XayWJRAr7cUHyBDeb88OSI7OtOsOuMvtk262SgYGnAhIV4Kiovqnd3ZdLEvLNdQb6OiVNW6qQEd8r8oPFz7GdtftWS1CyH3VUSVXGqpwhjdXyyXvApH/A20J1Yd03yT2axdIscsyBuaHyD8BkD9vgW281pczBkhqXjjYlW2Kh7yBrmAPn5JA/wO9yqZgSbSuj2sxYkByS0EmQIK4rTKkiGaCPMlFPTbWzVXHKHDKjTPTOcycN+A2MmRFPiLcMk5Ndb5jvifToRqtSWONWemOpEuP7rCE6kR+YfAFionxxzJfUPFva/j1MS7tY1DPObVNyXBiSTBQJxlF+FVRfX9L//xAAlEQACAwABAwMFAQAAAAAAAAABAgMEBQARQVEGEDESFDI0YpH/2gAIAQIBAT8A5o2Wp0LlpAC0MLuAfjqo68y7T3s6lccAPNCjkD4BI9tSTVhijky68MzBuskcjFSy/wAnzzV9V13zNGjoU7FG29eRVSVeqsxHZhzH9VVosrNoUali7bSBFZIkIVWHljzLl1Zo5JNSvDAWYGOONixC/wBHz7bfX1JqR4Fb9WuwkuzAf4gPnmMD6Y1nw7H6VpjJTlPnuhPs6l0dQxUkEdR8jmRk18isYISzu7l5JX/J2Pc81sqvr1ft5yVKsHjkX8kYdxyNTHGiFyxVQPqPyenc8//EACIRAAICAAUFAQAAAAAAAAAAAAECAAMEEBIhURETIzJBgf/aAAgBAwEBPwCIup1Xkx10O68HplWKySLCRwRK8O3cR0cMoYbiWYdjY7uyqpb7LBWCBWxPJOVXgrNzex2QS3z1i0ey7MMhLLDY3U7fAJXYam1D9EO5Jn//2Q==\u0026labelColor=black\u0026color=118a03\u0026label=2016\u0026query=2016\u0026url=https://adventofcode-badge-erikw.vercel.app/api\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href = \"#\"\u003e\u003cimg alt=\"Stars 2017\" src=\"https://img.shields.io/badge/dynamic/json?style=for-the-badge\u0026logo=data:image/jpg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD//gAfQ29tcHJlc3NlZCBieSBqcGVnLXJlY29tcHJlc3P/2wCEAAQEBAQEBAQEBAQGBgUGBggHBwcHCAwJCQkJCQwTDA4MDA4MExEUEA8QFBEeFxUVFx4iHRsdIiolJSo0MjRERFwBBAQEBAQEBAQEBAYGBQYGCAcHBwcIDAkJCQkJDBMMDgwMDgwTERQQDxAUER4XFRUXHiIdGx0iKiUlKjQyNEREXP/CABEIAEAAQAMBIgACEQEDEQH/xAAcAAEAAgIDAQAAAAAAAAAAAAAABggFBwMECQH/2gAIAQEAAAAAo+ZXkwwNz5LQwnkD3pk68TyBrFb2kfbiejq3H30t5vM/jFs4d0tlVAMhcWlS5tScQAf/xAAYAQADAQEAAAAAAAAAAAAAAAABBQYCBP/aAAgBAhAAAABtxDuVyOa9rAi/ysLH/8QAGAEAAwEBAAAAAAAAAAAAAAAAAQIEAAP/2gAIAQMQAAAAnbL0oM3Osxl8n//EADYQAAEEAQEEBwYEBwAAAAAAAAIBAwQFBgcACBEhEBITIDEyQRQVIlNhchYXMFJic4KRkqPB/9oACAEBAAE/AOmkpLTI7SJS0sQpM+USgyyKoimqJx9dsgx+4xa2k0d9CKJYx0BXWTVFUe0BDHmPFOaL393xvtNXcR+jr5f4sntvLN9TWDIS/fGgH/oEe7K0xz6JQV2UHi85ynmxhlNSWG+2RGj5oTiBxIEVPUujduDr6wYx9AnF/aKe29E31NWZxfMrIRdFdpjntpSzsji4xNSpiRjkuSng7ECaBOKq31+Cuf09OCbyuc4gzDrbEGLqqjgDQMv8GXgaDkgtuhtHyXd11l5XdfHqbt7z+0okKQp/R9v4HNsH3d4GB59VZjQ5G5JrWWpKLElNorqdu0oIoOhyLbUTd/haj51+KrjIHYlcMCPGWNGaTtjJpSVVVw+QptIud3LRnlXQo9tdM+VGESfJQ/5pr1G9s63m82ypmZXU7DFJWPgbRA3wffNs+Sobh9wRIiEQFVJVREROaqq7acwPyR0kfu81sZSvK37Y7EeeJRYI+TcVkC5Ca+u2ZsNa8aRpZ4XayWJRAr7cUHyBDeb88OSI7OtOsOuMvtk262SgYGnAhIV4Kiovqnd3ZdLEvLNdQb6OiVNW6qQEd8r8oPFz7GdtftWS1CyH3VUSVXGqpwhjdXyyXvApH/A20J1Yd03yT2axdIscsyBuaHyD8BkD9vgW281pczBkhqXjjYlW2Kh7yBrmAPn5JA/wO9yqZgSbSuj2sxYkByS0EmQIK4rTKkiGaCPMlFPTbWzVXHKHDKjTPTOcycN+A2MmRFPiLcMk5Ndb5jvifToRqtSWONWemOpEuP7rCE6kR+YfAFionxxzJfUPFva/j1MS7tY1DPObVNyXBiSTBQJxlF+FVRfX9L//xAAlEQACAwABAwMFAQAAAAAAAAABAgMEBQARQVEGEDESFDI0YpH/2gAIAQIBAT8A5o2Wp0LlpAC0MLuAfjqo68y7T3s6lccAPNCjkD4BI9tSTVhijky68MzBuskcjFSy/wAnzzV9V13zNGjoU7FG29eRVSVeqsxHZhzH9VVosrNoUali7bSBFZIkIVWHljzLl1Zo5JNSvDAWYGOONixC/wBHz7bfX1JqR4Fb9WuwkuzAf4gPnmMD6Y1nw7H6VpjJTlPnuhPs6l0dQxUkEdR8jmRk18isYISzu7l5JX/J2Pc81sqvr1ft5yVKsHjkX8kYdxyNTHGiFyxVQPqPyenc8//EACIRAAICAAUFAQAAAAAAAAAAAAECAAMEEBIhURETIzJBgf/aAAgBAwEBPwCIup1Xkx10O68HplWKySLCRwRK8O3cR0cMoYbiWYdjY7uyqpb7LBWCBWxPJOVXgrNzex2QS3z1i0ey7MMhLLDY3U7fAJXYam1D9EO5Jn//2Q==\u0026labelColor=black\u0026color=118a03\u0026label=2017\u0026query=2017\u0026url=https://adventofcode-badge-erikw.vercel.app/api\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href = \"#\"\u003e\u003cimg alt=\"Stars 2018\" src=\"https://img.shields.io/badge/dynamic/json?style=for-the-badge\u0026logo=data:image/jpg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD//gAfQ29tcHJlc3NlZCBieSBqcGVnLXJlY29tcHJlc3P/2wCEAAQEBAQEBAQEBAQGBgUGBggHBwcHCAwJCQkJCQwTDA4MDA4MExEUEA8QFBEeFxUVFx4iHRsdIiolJSo0MjRERFwBBAQEBAQEBAQEBAYGBQYGCAcHBwcIDAkJCQkJDBMMDgwMDgwTERQQDxAUER4XFRUXHiIdGx0iKiUlKjQyNEREXP/CABEIAEAAQAMBIgACEQEDEQH/xAAcAAEAAgIDAQAAAAAAAAAAAAAABggFBwMECQH/2gAIAQEAAAAAo+ZXkwwNz5LQwnkD3pk68TyBrFb2kfbiejq3H30t5vM/jFs4d0tlVAMhcWlS5tScQAf/xAAYAQADAQEAAAAAAAAAAAAAAAABBQYCBP/aAAgBAhAAAABtxDuVyOa9rAi/ysLH/8QAGAEAAwEBAAAAAAAAAAAAAAAAAQIEAAP/2gAIAQMQAAAAnbL0oM3Osxl8n//EADYQAAEEAQEEBwYEBwAAAAAAAAIBAwQFBgcACBEhEBITIDEyQRQVIlNhchYXMFJic4KRkqPB/9oACAEBAAE/AOmkpLTI7SJS0sQpM+USgyyKoimqJx9dsgx+4xa2k0d9CKJYx0BXWTVFUe0BDHmPFOaL393xvtNXcR+jr5f4sntvLN9TWDIS/fGgH/oEe7K0xz6JQV2UHi85ynmxhlNSWG+2RGj5oTiBxIEVPUujduDr6wYx9AnF/aKe29E31NWZxfMrIRdFdpjntpSzsji4xNSpiRjkuSng7ECaBOKq31+Cuf09OCbyuc4gzDrbEGLqqjgDQMv8GXgaDkgtuhtHyXd11l5XdfHqbt7z+0okKQp/R9v4HNsH3d4GB59VZjQ5G5JrWWpKLElNorqdu0oIoOhyLbUTd/haj51+KrjIHYlcMCPGWNGaTtjJpSVVVw+QptIud3LRnlXQo9tdM+VGESfJQ/5pr1G9s63m82ypmZXU7DFJWPgbRA3wffNs+Sobh9wRIiEQFVJVREROaqq7acwPyR0kfu81sZSvK37Y7EeeJRYI+TcVkC5Ca+u2ZsNa8aRpZ4XayWJRAr7cUHyBDeb88OSI7OtOsOuMvtk262SgYGnAhIV4Kiovqnd3ZdLEvLNdQb6OiVNW6qQEd8r8oPFz7GdtftWS1CyH3VUSVXGqpwhjdXyyXvApH/A20J1Yd03yT2axdIscsyBuaHyD8BkD9vgW281pczBkhqXjjYlW2Kh7yBrmAPn5JA/wO9yqZgSbSuj2sxYkByS0EmQIK4rTKkiGaCPMlFPTbWzVXHKHDKjTPTOcycN+A2MmRFPiLcMk5Ndb5jvifToRqtSWONWemOpEuP7rCE6kR+YfAFionxxzJfUPFva/j1MS7tY1DPObVNyXBiSTBQJxlF+FVRfX9L//xAAlEQACAwABAwMFAQAAAAAAAAABAgMEBQARQVEGEDESFDI0YpH/2gAIAQIBAT8A5o2Wp0LlpAC0MLuAfjqo68y7T3s6lccAPNCjkD4BI9tSTVhijky68MzBuskcjFSy/wAnzzV9V13zNGjoU7FG29eRVSVeqsxHZhzH9VVosrNoUali7bSBFZIkIVWHljzLl1Zo5JNSvDAWYGOONixC/wBHz7bfX1JqR4Fb9WuwkuzAf4gPnmMD6Y1nw7H6VpjJTlPnuhPs6l0dQxUkEdR8jmRk18isYISzu7l5JX/J2Pc81sqvr1ft5yVKsHjkX8kYdxyNTHGiFyxVQPqPyenc8//EACIRAAICAAUFAQAAAAAAAAAAAAECAAMEEBIhURETIzJBgf/aAAgBAwEBPwCIup1Xkx10O68HplWKySLCRwRK8O3cR0cMoYbiWYdjY7uyqpb7LBWCBWxPJOVXgrNzex2QS3z1i0ey7MMhLLDY3U7fAJXYam1D9EO5Jn//2Q==\u0026labelColor=black\u0026color=118a03\u0026label=2018\u0026query=2018\u0026url=https://adventofcode-badge-erikw.vercel.app/api\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href = \"#\"\u003e\u003cimg alt=\"Stars 2019\" src=\"https://img.shields.io/badge/dynamic/json?style=for-the-badge\u0026logo=data:image/jpg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD//gAfQ29tcHJlc3NlZCBieSBqcGVnLXJlY29tcHJlc3P/2wCEAAQEBAQEBAQEBAQGBgUGBggHBwcHCAwJCQkJCQwTDA4MDA4MExEUEA8QFBEeFxUVFx4iHRsdIiolJSo0MjRERFwBBAQEBAQEBAQEBAYGBQYGCAcHBwcIDAkJCQkJDBMMDgwMDgwTERQQDxAUER4XFRUXHiIdGx0iKiUlKjQyNEREXP/CABEIAEAAQAMBIgACEQEDEQH/xAAcAAEAAgIDAQAAAAAAAAAAAAAABggFBwMECQH/2gAIAQEAAAAAo+ZXkwwNz5LQwnkD3pk68TyBrFb2kfbiejq3H30t5vM/jFs4d0tlVAMhcWlS5tScQAf/xAAYAQADAQEAAAAAAAAAAAAAAAABBQYCBP/aAAgBAhAAAABtxDuVyOa9rAi/ysLH/8QAGAEAAwEBAAAAAAAAAAAAAAAAAQIEAAP/2gAIAQMQAAAAnbL0oM3Osxl8n//EADYQAAEEAQEEBwYEBwAAAAAAAAIBAwQFBgcACBEhEBITIDEyQRQVIlNhchYXMFJic4KRkqPB/9oACAEBAAE/AOmkpLTI7SJS0sQpM+USgyyKoimqJx9dsgx+4xa2k0d9CKJYx0BXWTVFUe0BDHmPFOaL393xvtNXcR+jr5f4sntvLN9TWDIS/fGgH/oEe7K0xz6JQV2UHi85ynmxhlNSWG+2RGj5oTiBxIEVPUujduDr6wYx9AnF/aKe29E31NWZxfMrIRdFdpjntpSzsji4xNSpiRjkuSng7ECaBOKq31+Cuf09OCbyuc4gzDrbEGLqqjgDQMv8GXgaDkgtuhtHyXd11l5XdfHqbt7z+0okKQp/R9v4HNsH3d4GB59VZjQ5G5JrWWpKLElNorqdu0oIoOhyLbUTd/haj51+KrjIHYlcMCPGWNGaTtjJpSVVVw+QptIud3LRnlXQo9tdM+VGESfJQ/5pr1G9s63m82ypmZXU7DFJWPgbRA3wffNs+Sobh9wRIiEQFVJVREROaqq7acwPyR0kfu81sZSvK37Y7EeeJRYI+TcVkC5Ca+u2ZsNa8aRpZ4XayWJRAr7cUHyBDeb88OSI7OtOsOuMvtk262SgYGnAhIV4Kiovqnd3ZdLEvLNdQb6OiVNW6qQEd8r8oPFz7GdtftWS1CyH3VUSVXGqpwhjdXyyXvApH/A20J1Yd03yT2axdIscsyBuaHyD8BkD9vgW281pczBkhqXjjYlW2Kh7yBrmAPn5JA/wO9yqZgSbSuj2sxYkByS0EmQIK4rTKkiGaCPMlFPTbWzVXHKHDKjTPTOcycN+A2MmRFPiLcMk5Ndb5jvifToRqtSWONWemOpEuP7rCE6kR+YfAFionxxzJfUPFva/j1MS7tY1DPObVNyXBiSTBQJxlF+FVRfX9L//xAAlEQACAwABAwMFAQAAAAAAAAABAgMEBQARQVEGEDESFDI0YpH/2gAIAQIBAT8A5o2Wp0LlpAC0MLuAfjqo68y7T3s6lccAPNCjkD4BI9tSTVhijky68MzBuskcjFSy/wAnzzV9V13zNGjoU7FG29eRVSVeqsxHZhzH9VVosrNoUali7bSBFZIkIVWHljzLl1Zo5JNSvDAWYGOONixC/wBHz7bfX1JqR4Fb9WuwkuzAf4gPnmMD6Y1nw7H6VpjJTlPnuhPs6l0dQxUkEdR8jmRk18isYISzu7l5JX/J2Pc81sqvr1ft5yVKsHjkX8kYdxyNTHGiFyxVQPqPyenc8//EACIRAAICAAUFAQAAAAAAAAAAAAECAAMEEBIhURETIzJBgf/aAAgBAwEBPwCIup1Xkx10O68HplWKySLCRwRK8O3cR0cMoYbiWYdjY7uyqpb7LBWCBWxPJOVXgrNzex2QS3z1i0ey7MMhLLDY3U7fAJXYam1D9EO5Jn//2Q==\u0026labelColor=black\u0026color=118a03\u0026label=2019\u0026query=2019\u0026url=https://adventofcode-badge-erikw.vercel.app/api\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href = \"#\"\u003e\u003cimg alt=\"Stars 2020\" src=\"https://img.shields.io/badge/dynamic/json?style=for-the-badge\u0026logo=data:image/jpg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD//gAfQ29tcHJlc3NlZCBieSBqcGVnLXJlY29tcHJlc3P/2wCEAAQEBAQEBAQEBAQGBgUGBggHBwcHCAwJCQkJCQwTDA4MDA4MExEUEA8QFBEeFxUVFx4iHRsdIiolJSo0MjRERFwBBAQEBAQEBAQEBAYGBQYGCAcHBwcIDAkJCQkJDBMMDgwMDgwTERQQDxAUER4XFRUXHiIdGx0iKiUlKjQyNEREXP/CABEIAEAAQAMBIgACEQEDEQH/xAAcAAEAAgIDAQAAAAAAAAAAAAAABggFBwMECQH/2gAIAQEAAAAAo+ZXkwwNz5LQwnkD3pk68TyBrFb2kfbiejq3H30t5vM/jFs4d0tlVAMhcWlS5tScQAf/xAAYAQADAQEAAAAAAAAAAAAAAAABBQYCBP/aAAgBAhAAAABtxDuVyOa9rAi/ysLH/8QAGAEAAwEBAAAAAAAAAAAAAAAAAQIEAAP/2gAIAQMQAAAAnbL0oM3Osxl8n//EADYQAAEEAQEEBwYEBwAAAAAAAAIBAwQFBgcACBEhEBITIDEyQRQVIlNhchYXMFJic4KRkqPB/9oACAEBAAE/AOmkpLTI7SJS0sQpM+USgyyKoimqJx9dsgx+4xa2k0d9CKJYx0BXWTVFUe0BDHmPFOaL393xvtNXcR+jr5f4sntvLN9TWDIS/fGgH/oEe7K0xz6JQV2UHi85ynmxhlNSWG+2RGj5oTiBxIEVPUujduDr6wYx9AnF/aKe29E31NWZxfMrIRdFdpjntpSzsji4xNSpiRjkuSng7ECaBOKq31+Cuf09OCbyuc4gzDrbEGLqqjgDQMv8GXgaDkgtuhtHyXd11l5XdfHqbt7z+0okKQp/R9v4HNsH3d4GB59VZjQ5G5JrWWpKLElNorqdu0oIoOhyLbUTd/haj51+KrjIHYlcMCPGWNGaTtjJpSVVVw+QptIud3LRnlXQo9tdM+VGESfJQ/5pr1G9s63m82ypmZXU7DFJWPgbRA3wffNs+Sobh9wRIiEQFVJVREROaqq7acwPyR0kfu81sZSvK37Y7EeeJRYI+TcVkC5Ca+u2ZsNa8aRpZ4XayWJRAr7cUHyBDeb88OSI7OtOsOuMvtk262SgYGnAhIV4Kiovqnd3ZdLEvLNdQb6OiVNW6qQEd8r8oPFz7GdtftWS1CyH3VUSVXGqpwhjdXyyXvApH/A20J1Yd03yT2axdIscsyBuaHyD8BkD9vgW281pczBkhqXjjYlW2Kh7yBrmAPn5JA/wO9yqZgSbSuj2sxYkByS0EmQIK4rTKkiGaCPMlFPTbWzVXHKHDKjTPTOcycN+A2MmRFPiLcMk5Ndb5jvifToRqtSWONWemOpEuP7rCE6kR+YfAFionxxzJfUPFva/j1MS7tY1DPObVNyXBiSTBQJxlF+FVRfX9L//xAAlEQACAwABAwMFAQAAAAAAAAABAgMEBQARQVEGEDESFDI0YpH/2gAIAQIBAT8A5o2Wp0LlpAC0MLuAfjqo68y7T3s6lccAPNCjkD4BI9tSTVhijky68MzBuskcjFSy/wAnzzV9V13zNGjoU7FG29eRVSVeqsxHZhzH9VVosrNoUali7bSBFZIkIVWHljzLl1Zo5JNSvDAWYGOONixC/wBHz7bfX1JqR4Fb9WuwkuzAf4gPnmMD6Y1nw7H6VpjJTlPnuhPs6l0dQxUkEdR8jmRk18isYISzu7l5JX/J2Pc81sqvr1ft5yVKsHjkX8kYdxyNTHGiFyxVQPqPyenc8//EACIRAAICAAUFAQAAAAAAAAAAAAECAAMEEBIhURETIzJBgf/aAAgBAwEBPwCIup1Xkx10O68HplWKySLCRwRK8O3cR0cMoYbiWYdjY7uyqpb7LBWCBWxPJOVXgrNzex2QS3z1i0ey7MMhLLDY3U7fAJXYam1D9EO5Jn//2Q==\u0026labelColor=black\u0026color=118a03\u0026label=2020\u0026query=2020\u0026url=https://adventofcode-badge-erikw.vercel.app/api\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href = \"#\"\u003e\u003cimg alt=\"Stars 2021\" src=\"https://img.shields.io/badge/dynamic/json?style=for-the-badge\u0026logo=data:image/jpg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD//gAfQ29tcHJlc3NlZCBieSBqcGVnLXJlY29tcHJlc3P/2wCEAAQEBAQEBAQEBAQGBgUGBggHBwcHCAwJCQkJCQwTDA4MDA4MExEUEA8QFBEeFxUVFx4iHRsdIiolJSo0MjRERFwBBAQEBAQEBAQEBAYGBQYGCAcHBwcIDAkJCQkJDBMMDgwMDgwTERQQDxAUER4XFRUXHiIdGx0iKiUlKjQyNEREXP/CABEIAEAAQAMBIgACEQEDEQH/xAAcAAEAAgIDAQAAAAAAAAAAAAAABggFBwMECQH/2gAIAQEAAAAAo+ZXkwwNz5LQwnkD3pk68TyBrFb2kfbiejq3H30t5vM/jFs4d0tlVAMhcWlS5tScQAf/xAAYAQADAQEAAAAAAAAAAAAAAAABBQYCBP/aAAgBAhAAAABtxDuVyOa9rAi/ysLH/8QAGAEAAwEBAAAAAAAAAAAAAAAAAQIEAAP/2gAIAQMQAAAAnbL0oM3Osxl8n//EADYQAAEEAQEEBwYEBwAAAAAAAAIBAwQFBgcACBEhEBITIDEyQRQVIlNhchYXMFJic4KRkqPB/9oACAEBAAE/AOmkpLTI7SJS0sQpM+USgyyKoimqJx9dsgx+4xa2k0d9CKJYx0BXWTVFUe0BDHmPFOaL393xvtNXcR+jr5f4sntvLN9TWDIS/fGgH/oEe7K0xz6JQV2UHi85ynmxhlNSWG+2RGj5oTiBxIEVPUujduDr6wYx9AnF/aKe29E31NWZxfMrIRdFdpjntpSzsji4xNSpiRjkuSng7ECaBOKq31+Cuf09OCbyuc4gzDrbEGLqqjgDQMv8GXgaDkgtuhtHyXd11l5XdfHqbt7z+0okKQp/R9v4HNsH3d4GB59VZjQ5G5JrWWpKLElNorqdu0oIoOhyLbUTd/haj51+KrjIHYlcMCPGWNGaTtjJpSVVVw+QptIud3LRnlXQo9tdM+VGESfJQ/5pr1G9s63m82ypmZXU7DFJWPgbRA3wffNs+Sobh9wRIiEQFVJVREROaqq7acwPyR0kfu81sZSvK37Y7EeeJRYI+TcVkC5Ca+u2ZsNa8aRpZ4XayWJRAr7cUHyBDeb88OSI7OtOsOuMvtk262SgYGnAhIV4Kiovqnd3ZdLEvLNdQb6OiVNW6qQEd8r8oPFz7GdtftWS1CyH3VUSVXGqpwhjdXyyXvApH/A20J1Yd03yT2axdIscsyBuaHyD8BkD9vgW281pczBkhqXjjYlW2Kh7yBrmAPn5JA/wO9yqZgSbSuj2sxYkByS0EmQIK4rTKkiGaCPMlFPTbWzVXHKHDKjTPTOcycN+A2MmRFPiLcMk5Ndb5jvifToRqtSWONWemOpEuP7rCE6kR+YfAFionxxzJfUPFva/j1MS7tY1DPObVNyXBiSTBQJxlF+FVRfX9L//xAAlEQACAwABAwMFAQAAAAAAAAABAgMEBQARQVEGEDESFDI0YpH/2gAIAQIBAT8A5o2Wp0LlpAC0MLuAfjqo68y7T3s6lccAPNCjkD4BI9tSTVhijky68MzBuskcjFSy/wAnzzV9V13zNGjoU7FG29eRVSVeqsxHZhzH9VVosrNoUali7bSBFZIkIVWHljzLl1Zo5JNSvDAWYGOONixC/wBHz7bfX1JqR4Fb9WuwkuzAf4gPnmMD6Y1nw7H6VpjJTlPnuhPs6l0dQxUkEdR8jmRk18isYISzu7l5JX/J2Pc81sqvr1ft5yVKsHjkX8kYdxyNTHGiFyxVQPqPyenc8//EACIRAAICAAUFAQAAAAAAAAAAAAECAAMEEBIhURETIzJBgf/aAAgBAwEBPwCIup1Xkx10O68HplWKySLCRwRK8O3cR0cMoYbiWYdjY7uyqpb7LBWCBWxPJOVXgrNzex2QS3z1i0ey7MMhLLDY3U7fAJXYam1D9EO5Jn//2Q==\u0026labelColor=black\u0026color=118a03\u0026label=2021\u0026query=2021\u0026url=https://adventofcode-badge-erikw.vercel.app/api\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href = \"#\"\u003e\u003cimg alt=\"Stars 2022\" src=\"https://img.shields.io/badge/dynamic/json?style=for-the-badge\u0026logo=data:image/jpg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD//gAfQ29tcHJlc3NlZCBieSBqcGVnLXJlY29tcHJlc3P/2wCEAAQEBAQEBAQEBAQGBgUGBggHBwcHCAwJCQkJCQwTDA4MDA4MExEUEA8QFBEeFxUVFx4iHRsdIiolJSo0MjRERFwBBAQEBAQEBAQEBAYGBQYGCAcHBwcIDAkJCQkJDBMMDgwMDgwTERQQDxAUER4XFRUXHiIdGx0iKiUlKjQyNEREXP/CABEIAEAAQAMBIgACEQEDEQH/xAAcAAEAAgIDAQAAAAAAAAAAAAAABggFBwMECQH/2gAIAQEAAAAAo+ZXkwwNz5LQwnkD3pk68TyBrFb2kfbiejq3H30t5vM/jFs4d0tlVAMhcWlS5tScQAf/xAAYAQADAQEAAAAAAAAAAAAAAAABBQYCBP/aAAgBAhAAAABtxDuVyOa9rAi/ysLH/8QAGAEAAwEBAAAAAAAAAAAAAAAAAQIEAAP/2gAIAQMQAAAAnbL0oM3Osxl8n//EADYQAAEEAQEEBwYEBwAAAAAAAAIBAwQFBgcACBEhEBITIDEyQRQVIlNhchYXMFJic4KRkqPB/9oACAEBAAE/AOmkpLTI7SJS0sQpM+USgyyKoimqJx9dsgx+4xa2k0d9CKJYx0BXWTVFUe0BDHmPFOaL393xvtNXcR+jr5f4sntvLN9TWDIS/fGgH/oEe7K0xz6JQV2UHi85ynmxhlNSWG+2RGj5oTiBxIEVPUujduDr6wYx9AnF/aKe29E31NWZxfMrIRdFdpjntpSzsji4xNSpiRjkuSng7ECaBOKq31+Cuf09OCbyuc4gzDrbEGLqqjgDQMv8GXgaDkgtuhtHyXd11l5XdfHqbt7z+0okKQp/R9v4HNsH3d4GB59VZjQ5G5JrWWpKLElNorqdu0oIoOhyLbUTd/haj51+KrjIHYlcMCPGWNGaTtjJpSVVVw+QptIud3LRnlXQo9tdM+VGESfJQ/5pr1G9s63m82ypmZXU7DFJWPgbRA3wffNs+Sobh9wRIiEQFVJVREROaqq7acwPyR0kfu81sZSvK37Y7EeeJRYI+TcVkC5Ca+u2ZsNa8aRpZ4XayWJRAr7cUHyBDeb88OSI7OtOsOuMvtk262SgYGnAhIV4Kiovqnd3ZdLEvLNdQb6OiVNW6qQEd8r8oPFz7GdtftWS1CyH3VUSVXGqpwhjdXyyXvApH/A20J1Yd03yT2axdIscsyBuaHyD8BkD9vgW281pczBkhqXjjYlW2Kh7yBrmAPn5JA/wO9yqZgSbSuj2sxYkByS0EmQIK4rTKkiGaCPMlFPTbWzVXHKHDKjTPTOcycN+A2MmRFPiLcMk5Ndb5jvifToRqtSWONWemOpEuP7rCE6kR+YfAFionxxzJfUPFva/j1MS7tY1DPObVNyXBiSTBQJxlF+FVRfX9L//xAAlEQACAwABAwMFAQAAAAAAAAABAgMEBQARQVEGEDESFDI0YpH/2gAIAQIBAT8A5o2Wp0LlpAC0MLuAfjqo68y7T3s6lccAPNCjkD4BI9tSTVhijky68MzBuskcjFSy/wAnzzV9V13zNGjoU7FG29eRVSVeqsxHZhzH9VVosrNoUali7bSBFZIkIVWHljzLl1Zo5JNSvDAWYGOONixC/wBHz7bfX1JqR4Fb9WuwkuzAf4gPnmMD6Y1nw7H6VpjJTlPnuhPs6l0dQxUkEdR8jmRk18isYISzu7l5JX/J2Pc81sqvr1ft5yVKsHjkX8kYdxyNTHGiFyxVQPqPyenc8//EACIRAAICAAUFAQAAAAAAAAAAAAECAAMEEBIhURETIzJBgf/aAAgBAwEBPwCIup1Xkx10O68HplWKySLCRwRK8O3cR0cMoYbiWYdjY7uyqpb7LBWCBWxPJOVXgrNzex2QS3z1i0ey7MMhLLDY3U7fAJXYam1D9EO5Jn//2Q==\u0026labelColor=black\u0026color=118a03\u0026label=2022\u0026query=2022\u0026url=https://adventofcode-badge-erikw.vercel.app/api\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href = \"#\"\u003e\u003cimg alt=\"Stars 2023\" src=\"https://img.shields.io/badge/dynamic/json?style=for-the-badge\u0026logo=data:image/jpg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD//gAfQ29tcHJlc3NlZCBieSBqcGVnLXJlY29tcHJlc3P/2wCEAAQEBAQEBAQEBAQGBgUGBggHBwcHCAwJCQkJCQwTDA4MDA4MExEUEA8QFBEeFxUVFx4iHRsdIiolJSo0MjRERFwBBAQEBAQEBAQEBAYGBQYGCAcHBwcIDAkJCQkJDBMMDgwMDgwTERQQDxAUER4XFRUXHiIdGx0iKiUlKjQyNEREXP/CABEIAEAAQAMBIgACEQEDEQH/xAAcAAEAAgIDAQAAAAAAAAAAAAAABggFBwMECQH/2gAIAQEAAAAAo+ZXkwwNz5LQwnkD3pk68TyBrFb2kfbiejq3H30t5vM/jFs4d0tlVAMhcWlS5tScQAf/xAAYAQADAQEAAAAAAAAAAAAAAAABBQYCBP/aAAgBAhAAAABtxDuVyOa9rAi/ysLH/8QAGAEAAwEBAAAAAAAAAAAAAAAAAQIEAAP/2gAIAQMQAAAAnbL0oM3Osxl8n//EADYQAAEEAQEEBwYEBwAAAAAAAAIBAwQFBgcACBEhEBITIDEyQRQVIlNhchYXMFJic4KRkqPB/9oACAEBAAE/AOmkpLTI7SJS0sQpM+USgyyKoimqJx9dsgx+4xa2k0d9CKJYx0BXWTVFUe0BDHmPFOaL393xvtNXcR+jr5f4sntvLN9TWDIS/fGgH/oEe7K0xz6JQV2UHi85ynmxhlNSWG+2RGj5oTiBxIEVPUujduDr6wYx9AnF/aKe29E31NWZxfMrIRdFdpjntpSzsji4xNSpiRjkuSng7ECaBOKq31+Cuf09OCbyuc4gzDrbEGLqqjgDQMv8GXgaDkgtuhtHyXd11l5XdfHqbt7z+0okKQp/R9v4HNsH3d4GB59VZjQ5G5JrWWpKLElNorqdu0oIoOhyLbUTd/haj51+KrjIHYlcMCPGWNGaTtjJpSVVVw+QptIud3LRnlXQo9tdM+VGESfJQ/5pr1G9s63m82ypmZXU7DFJWPgbRA3wffNs+Sobh9wRIiEQFVJVREROaqq7acwPyR0kfu81sZSvK37Y7EeeJRYI+TcVkC5Ca+u2ZsNa8aRpZ4XayWJRAr7cUHyBDeb88OSI7OtOsOuMvtk262SgYGnAhIV4Kiovqnd3ZdLEvLNdQb6OiVNW6qQEd8r8oPFz7GdtftWS1CyH3VUSVXGqpwhjdXyyXvApH/A20J1Yd03yT2axdIscsyBuaHyD8BkD9vgW281pczBkhqXjjYlW2Kh7yBrmAPn5JA/wO9yqZgSbSuj2sxYkByS0EmQIK4rTKkiGaCPMlFPTbWzVXHKHDKjTPTOcycN+A2MmRFPiLcMk5Ndb5jvifToRqtSWONWemOpEuP7rCE6kR+YfAFionxxzJfUPFva/j1MS7tY1DPObVNyXBiSTBQJxlF+FVRfX9L//xAAlEQACAwABAwMFAQAAAAAAAAABAgMEBQARQVEGEDESFDI0YpH/2gAIAQIBAT8A5o2Wp0LlpAC0MLuAfjqo68y7T3s6lccAPNCjkD4BI9tSTVhijky68MzBuskcjFSy/wAnzzV9V13zNGjoU7FG29eRVSVeqsxHZhzH9VVosrNoUali7bSBFZIkIVWHljzLl1Zo5JNSvDAWYGOONixC/wBHz7bfX1JqR4Fb9WuwkuzAf4gPnmMD6Y1nw7H6VpjJTlPnuhPs6l0dQxUkEdR8jmRk18isYISzu7l5JX/J2Pc81sqvr1ft5yVKsHjkX8kYdxyNTHGiFyxVQPqPyenc8//EACIRAAICAAUFAQAAAAAAAAAAAAECAAMEEBIhURETIzJBgf/aAAgBAwEBPwCIup1Xkx10O68HplWKySLCRwRK8O3cR0cMoYbiWYdjY7uyqpb7LBWCBWxPJOVXgrNzex2QS3z1i0ey7MMhLLDY3U7fAJXYam1D9EO5Jn//2Q==\u0026labelColor=black\u0026color=118a03\u0026label=2023\u0026query=2023\u0026url=https://adventofcode-badge-erikw.vercel.app/api\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href = \"#\"\u003e\u003cimg alt=\"Stars 2024\" src=\"https://img.shields.io/badge/dynamic/json?style=for-the-badge\u0026logo=data:image/jpg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD//gAfQ29tcHJlc3NlZCBieSBqcGVnLXJlY29tcHJlc3P/2wCEAAQEBAQEBAQEBAQGBgUGBggHBwcHCAwJCQkJCQwTDA4MDA4MExEUEA8QFBEeFxUVFx4iHRsdIiolJSo0MjRERFwBBAQEBAQEBAQEBAYGBQYGCAcHBwcIDAkJCQkJDBMMDgwMDgwTERQQDxAUER4XFRUXHiIdGx0iKiUlKjQyNEREXP/CABEIAEAAQAMBIgACEQEDEQH/xAAcAAEAAgIDAQAAAAAAAAAAAAAABggFBwMECQH/2gAIAQEAAAAAo+ZXkwwNz5LQwnkD3pk68TyBrFb2kfbiejq3H30t5vM/jFs4d0tlVAMhcWlS5tScQAf/xAAYAQADAQEAAAAAAAAAAAAAAAABBQYCBP/aAAgBAhAAAABtxDuVyOa9rAi/ysLH/8QAGAEAAwEBAAAAAAAAAAAAAAAAAQIEAAP/2gAIAQMQAAAAnbL0oM3Osxl8n//EADYQAAEEAQEEBwYEBwAAAAAAAAIBAwQFBgcACBEhEBITIDEyQRQVIlNhchYXMFJic4KRkqPB/9oACAEBAAE/AOmkpLTI7SJS0sQpM+USgyyKoimqJx9dsgx+4xa2k0d9CKJYx0BXWTVFUe0BDHmPFOaL393xvtNXcR+jr5f4sntvLN9TWDIS/fGgH/oEe7K0xz6JQV2UHi85ynmxhlNSWG+2RGj5oTiBxIEVPUujduDr6wYx9AnF/aKe29E31NWZxfMrIRdFdpjntpSzsji4xNSpiRjkuSng7ECaBOKq31+Cuf09OCbyuc4gzDrbEGLqqjgDQMv8GXgaDkgtuhtHyXd11l5XdfHqbt7z+0okKQp/R9v4HNsH3d4GB59VZjQ5G5JrWWpKLElNorqdu0oIoOhyLbUTd/haj51+KrjIHYlcMCPGWNGaTtjJpSVVVw+QptIud3LRnlXQo9tdM+VGESfJQ/5pr1G9s63m82ypmZXU7DFJWPgbRA3wffNs+Sobh9wRIiEQFVJVREROaqq7acwPyR0kfu81sZSvK37Y7EeeJRYI+TcVkC5Ca+u2ZsNa8aRpZ4XayWJRAr7cUHyBDeb88OSI7OtOsOuMvtk262SgYGnAhIV4Kiovqnd3ZdLEvLNdQb6OiVNW6qQEd8r8oPFz7GdtftWS1CyH3VUSVXGqpwhjdXyyXvApH/A20J1Yd03yT2axdIscsyBuaHyD8BkD9vgW281pczBkhqXjjYlW2Kh7yBrmAPn5JA/wO9yqZgSbSuj2sxYkByS0EmQIK4rTKkiGaCPMlFPTbWzVXHKHDKjTPTOcycN+A2MmRFPiLcMk5Ndb5jvifToRqtSWONWemOpEuP7rCE6kR+YfAFionxxzJfUPFva/j1MS7tY1DPObVNyXBiSTBQJxlF+FVRfX9L//xAAlEQACAwABAwMFAQAAAAAAAAABAgMEBQARQVEGEDESFDI0YpH/2gAIAQIBAT8A5o2Wp0LlpAC0MLuAfjqo68y7T3s6lccAPNCjkD4BI9tSTVhijky68MzBuskcjFSy/wAnzzV9V13zNGjoU7FG29eRVSVeqsxHZhzH9VVosrNoUali7bSBFZIkIVWHljzLl1Zo5JNSvDAWYGOONixC/wBHz7bfX1JqR4Fb9WuwkuzAf4gPnmMD6Y1nw7H6VpjJTlPnuhPs6l0dQxUkEdR8jmRk18isYISzu7l5JX/J2Pc81sqvr1ft5yVKsHjkX8kYdxyNTHGiFyxVQPqPyenc8//EACIRAAICAAUFAQAAAAAAAAAAAAECAAMEEBIhURETIzJBgf/aAAgBAwEBPwCIup1Xkx10O68HplWKySLCRwRK8O3cR0cMoYbiWYdjY7uyqpb7LBWCBWxPJOVXgrNzex2QS3z1i0ey7MMhLLDY3U7fAJXYam1D9EO5Jn//2Q==\u0026labelColor=black\u0026color=118a03\u0026label=2024\u0026query=2024\u0026url=https://adventofcode-badge-erikw.vercel.app/api\"\u003e\u003c/a\u003e\u003c/p\u003e\n\n## Development Setup\n### Per Environment\n#### macOS\n```shell\nbrew bundle install\n```\n\n#### Ruby\n```shell\nbundle install\n```\n\n#### JavaScript\n```shell\nnpm install\n```\n\n#### Python\n```shell\npip install -r requirements.txt\n```\n\n### Session Cookie\nFetch your [AoC Session Cookie](https://github.com/wimglenn/advent-of-code-wim/issues/1) and store as an envvar or in `.env` as `$AOC_SESSION`.\n\n### Solve a Puzzle\n\nand now solve today's puzzle or a specific one:\n\n```shell\nbin/solve_day.sh           # Solve today's puzzle with default lanuage (ruby)\nbin/solve_day.sh 19/5      # 2019 day 5\nbin/solve_day.sh -l py     # Solve with language, here Python\n```\n\n\u003e [!TIP]\n\u003e The default language could be set with an envvar, e.g. with dotenv in a `.env` file which is also read by `bin/solve_day.sh`:\n\u003e ```shell\n\u003e echo AOC_LANG=py \u003e\u003e .env\n\u003e ```\n\n\n## Session Cookie Expired?\nUpdate:\n* `AOC_SESSION` in local `.env` for local development.\n* `AOC_SESSION` in [Codespaces secrets](https://github.com/erikw/advent-of-code-solutions/settings/secrets/codespaces) for GitHub Codespaces development.\n* `AOC_SESSION` in [Action Secret](https://github.com/erikw/advent-of-code-solutions/settings/secrets/actions) for [.github/workflows/readme-stars.yml](.github/workflows/readme-stars.yml).\n* `SESSION` in [Vercel Envvar](https://vercel.com/erikw/adventofcode-badge/settings/environment-variables) for [erikw/adventofcode-badge](https://github.com/erikw/adventofcode-badge).\n  * Then [redeploy](https://vercel.com/erik-westrups-projects/adventofcode-badge/deployments) to restart the service.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ferikw%2Fadvent-of-code-solutions","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ferikw%2Fadvent-of-code-solutions","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ferikw%2Fadvent-of-code-solutions/lists"}