-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathchimpmemorytest-kodeWeave.json
More file actions
30 lines (30 loc) · 48.8 KB
/
chimpmemorytest-kodeWeave.json
File metadata and controls
30 lines (30 loc) · 48.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
{
"name": "Chimp Memory Test",
"version": "0.0.1",
"title": "Chimp Memory Test - Can You Beat the Chimpanzee?",
"description": "Test your visual short-term memory in this challenging game inspired by the research where chimpanzees outperformed humans. Three difficulty levels, progressive challenges, and mobile-friendly design.",
"author": "Michael Schwartz",
"url": "https://michaelsboost.com/ChimpMemoryTest",
"meta": "<script defer src=\"https://cdn.jsdelivr.net/npm/alpinejs@3.x.x/dist/cdn.min.js\"></script>",
"libraries": [
"https://cdnjs.cloudflare.com/ajax/libs/picocss/2.0.6/pico.min.css",
"https://michaelsboost.com/TailwindCSSMod/tailwind-mod-noreset.min.js"
],
"html_pre_processor": "html",
"css_pre_processor": "css",
"javascript_pre_processor": "javascript",
"html": "<main class=\"min-h-screen grid grid-cols-1 gap-0 py-8 place-items-center\">\n <div x-data=\"memoryTest()\" x-init=\"init()\" class=\"w-full max-w-sm sm:max-w-md md:max-w-lg lg:max-w-xl xl:max-w-2xl 2xl:max-w-4xl\">\n <!-- Header with Settings Toggle -->\n <header class=\"flex justify-between text-center mb-4 sm:mb-6 relative\">\n <div>\n <a href=\"https://michaelsboost.com/donate/\" target=\"_blank\" role=\"button\" class=\"p-2 rounded-full shadow-none border-0 bg-transparent\">\n <svg class=\"w-6 h-6 text-red-500 hover:text-red-600 dark:text-red-400 dark:hover:text-red-300 transition-colors\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M4.318 6.318a4.5 4.5 0 000 6.364L12 20.364l7.682-7.682a4.5 4.5 0 00-6.364-6.364L12 7.636l-1.318-1.318a4.5 4.5 0 00-6.364 0z\" />\n </svg>\n </a>\n </div>\n\n <hgroup>\n <h1 class=\"text-2xl sm:text-3xl md:text-4xl lg:text-5xl font-bold mb-2\" style=\"color: unset;\">Chimp Memory Test</h1>\n <h4 class=\"font-light text-base sm:text-lg md:text-xl text-gray-600 dark:text-gray-400\">Can you beat the chimpanzee?</h4>\n </hgroup>\n\n <div>\n <button @click=\"showSettings = !showSettings\" class=\"p-2 rounded-full shadow-none border-0 bg-transparent\" style=\"color: unset;\">\n <svg class=\"w-6 h-6\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z\" />\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M15 12a3 3 0 11-6 0 3 3 0 016 0z\" />\n </svg>\n </button>\n </div>\n\n </header>\n\n <!-- Settings Panel -->\n <dialog x-ref=\"settingsDialog\" x-effect=\"showSettings ? $refs.settingsDialog.showModal() : $refs.settingsDialog.close()\" @click=\"if ($event.target === $el) showSettings = false\" @keydown.escape.window=\"showSettings = false\">\n <article class=\"rounded-lg sm:rounded-xl shadow-2xl shadow-black p-4 sm:p-6 dark-mode-transition backdrop:bg-black/50 overflow-auto\">\n <header class=\"flex justify-between items-center\">\n <h1 class=\"text-lg font-thin m-0 capitalize\">\n settings\n </h1>\n <button class=\"text-xs w-auto px-3 py-2 m-0 capitalize rounded-md bg-transparent border-0 shadow-none\" style=\"color: unset;\" aria-label=\"Close\" @click=\"showSettings = false\">\n <svg class=\"h-4 w-4\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M6 18 18 6M6 6l12 12\"></path>\n </svg>\n </button>\n </header>\n\n <!-- Dark Mode Toggle -->\n <nav class=\"flex justify-between mb-4 items-center\">\n <label for=\"darkSwitch\" class=\"mb-2 flex justify-between items-center cursor-pointer font-extralight\">\n <span>Dark:</span>\n </label>\n\n <input id=\"darkSwitch\" class=\"m-0\" type=\"checkbox\" role=\"switch\" name=\"toggle dark mode\" :checked=\"darkMode\" @change=\"toggleDarkMode()\">\n </nav>\n\n <!-- Sound Toggle -->\n <nav class=\"flex justify-between mb-4 items-center\">\n <label for=\"soundSwitch\" class=\"mb-2 flex justify-between items-center cursor-pointer font-extralight\">\n <span>Sound Effects:</span>\n </label>\n <input id=\"soundSwitch\" class=\"m-0\" type=\"checkbox\" role=\"switch\" name=\"toggle sound\" \n x-model=\"settings.sound\">\n </nav>\n \n <!-- Vibration Toggle -->\n <nav class=\"flex justify-between mb-4 items-center\">\n <label for=\"vibrationSwitch\" class=\"mb-2 flex justify-between items-center cursor-pointer font-extralight\">\n <span>Vibration (Mobile):</span>\n </label>\n <input id=\"vibrationSwitch\" class=\"m-0\" type=\"checkbox\" role=\"switch\" name=\"toggle vibration\" \n x-model=\"settings.vibration\">\n </nav>\n\n <!-- Memorization Time Slider -->\n <div class=\"mb-2\">\n <label class=\"block mb-4\">\n Memorization Time: <span x-text=\"settings.customMemorizeTime\"></span>s\n </label>\n <input type=\"range\" min=\"1\" max=\"10\" step=\"0.5\" x-model=\"settings.customMemorizeTime\">\n </div>\n\n <!-- High Score Display -->\n <div class=\"border-t border-gray-200 dark:border-gray-700 pt-4\">\n <h4 class=\"text-md font-light mb-4\">High Scores</h4>\n <div class=\"grid grid-cols-3 gap-2 text-center\">\n <div class=\"bg-[#01ad0d] p-2 rounded\">\n <div class=\"text-xs text-white\">Easy</div>\n <div class=\"font-bold text-green-700 dark:text-green-300\" x-text=\"highScores.easy || 0\"></div>\n </div>\n <div class=\"bg-[#adaa01] p-2 rounded\">\n <div class=\"text-xs text-white\">Medium</div>\n <div class=\"font-bold text-yellow-700 dark:text-yellow-300\" x-text=\"highScores.medium || 0\"></div>\n </div>\n <div class=\"bg-[#a801ad] p-2 rounded\">\n <div class=\"text-xs text-white\">Hard</div>\n <div class=\"font-bold text-red-700 dark:text-red-300\" x-text=\"highScores.hard || 0\"></div>\n </div>\n </div>\n </div>\n\n <!-- Reset Button -->\n <div class=\"mt-4\">\n <button @click=\"resetHighScores()\" class=\"w-full bg-red-500 border-0 hover:bg-red-600 font-bold rounded transition\">\n Reset High Scores\n </button>\n </div>\n </article>\n </dialog>\n\n <!-- Game Container -->\n <article class=\"rounded-lg sm:rounded-xl shadow-md sm:shadow-lg p-4 sm:p-6 md:p-8\">\n <!-- Difficulty Settings -->\n <div class=\"mb-4 sm:mb-6\" x-show=\"gameState === 'start'\">\n <h3 class=\"text-lg sm:text-xl font-light mb-3\">Select Difficulty:</h3>\n <div class=\"grid grid-cols-3 gap-2\">\n <template x-for=\"(diff, key) in difficulties\" :key=\"key\">\n <button @click=\"setDifficulty(key)\" class=\"py-2 px-1 sm:px-3 rounded-lg transition font-light border-0 opacity-20\" :class=\"{\n 'bg-[#01ad0d]': key === 'easy',\n 'bg-[#adaa01]': key === 'medium',\n 'bg-[#a801ad]': key === 'hard',\n 'opacity-20': difficulty != key,\n 'active opacity-100': difficulty === key\n }\" x-text=\"diff.label\"></button>\n </template>\n </div>\n <div class=\"mt-3 text-sm lg:text-base p-3 text-center opacity-50\">\n <p x-text=\"difficulties[difficulty].description\"></p>\n </div>\n </div>\n\n <!-- Score Display -->\n <div class=\"flex justify-between items-center mb-4 sm:mb-6\">\n <div class=\"text-base sm:text-lg md:text-xl\">\n <span class=\"font-light\">Level:</span>\n <span x-text=\"level\" class=\"text-blue-500 font-bold\"></span>\n </div>\n <div class=\"text-base sm:text-lg md:text-xl\">\n <span class=\"font-light\">Score:</span>\n <span x-text=\"score\" class=\"text-green-500 font-bold\"></span>\n </div>\n </div>\n\n <!-- Game State Messages -->\n <div class=\"text-center mb-4 sm:mb-6\">\n <template x-if=\"gameState === 'start'\">\n <div class=\"fade-in\">\n <p class=\"text-base sm:text-lg md:text-xl opacity-50 mb-4\">Remember the positions of the numbers in sequence</p>\n <button @click=\"startGame()\" class=\"font-bold py-2 sm:py-3 px-4 sm:px-6 rounded-lg transition text-base sm:text-lg bg-blue-600 border-0\">\n Start Test\n </button>\n </div>\n </template>\n\n <template x-if=\"gameState === 'memorize'\">\n <div class=\"fade-in\">\n <p class=\"text-base sm:text-lg md:text-xl\">Memorize the sequence...</p>\n <div class=\"mt-4 text-sm sm:text-base\" x-text=\"`Time left: ${memorizeTimeLeft}s`\"></div>\n </div>\n </template>\n\n <template x-if=\"gameState === 'recall'\">\n <div class=\"fade-in\">\n <p class=\"text-base sm:text-lg md:text-xl\">Now tap the numbers in sequence</p>\n </div>\n </template>\n\n <template x-if=\"gameState === 'success'\">\n <div class=\"fade-in text-center\">\n <p class=\"text-base sm:text-lg md:text-xl font-light mb-2\">Correct! Well done!</p>\n <button @click=\"nextLevel()\" class=\"bg-green-500 hover:bg-green-600 transition border-0\">\n Next Level\n </button>\n </div>\n </template>\n\n <template x-if=\"gameState === 'fail'\">\n <div class=\"fade-in text-center\">\n <p class=\"text-base sm:text-lg md:text-xl text-red-500 font-light mb-2\">Game Over!</p>\n <p class=\"mb-4\" x-text=\"`Your final score: ${score}`\"></p>\n <button @click=\"resetGame()\" class=\"bg-blue-500 hover:bg-blue-600 text-white font-bold py-2 px-4 rounded transition text-base sm:text-lg\">\n Try Again\n </button>\n </div>\n </template>\n </div>\n\n <!-- Game Grid -->\n <div class=\"grid gap-2 sm:gap-3 md:gap-4 mb-4 sm:mb-6\" :class=\"{\n 'grid-cols-3': difficulties[difficulty].gridSize === 9,\n 'grid-cols-4': difficulties[difficulty].gridSize === 16,\n 'grid-cols-5': difficulties[difficulty].gridSize === 25\n }\" x-show=\"gameState === 'memorize' || gameState === 'recall'\">\n <template x-for=\"i in difficulties[difficulty].gridSize\" :key=\"i\">\n <div class=\"aspect-square rounded-lg flex items-center justify-center font-bold grid-item cursor-pointer\" :class=\"{\n 'bg-blue-500 text-white': gameState === 'memorize' && sequence.includes(i),\n 'bg-gray-200 dark:bg-gray-700 text-gray-800 dark:text-gray-300': gameState === 'recall' && !selected.includes(i),\n 'bg-green-500 text-white': gameState === 'recall' && selected.includes(i) && this.isCorrectSelection(i),\n 'bg-red-500 text-white': gameState === 'recall' && selected.includes(i) && !this.isCorrectSelection(i),\n 'ring-2 ring-blue-400': gameState === 'recall' && selected.includes(i) && this.isCorrectSelection(i),\n 'ring-2 ring-red-400': gameState === 'recall' && selected.includes(i) && !this.isCorrectSelection(i)\n }\" x-text=\"gameState === 'recall' ? i : (sequence.includes(i) && gameState === 'memorize' ? sequence.indexOf(i)+1 : '')\" @click=\"handleGridClick(i)\">\n </div>\n </template>\n </div>\n\n <!-- Instructions -->\n <details class=\"rounded-lg border border-solid border-gray-500/50 p-4\" open>\n <summary class=\"py-2 font-light cursor-pointer\">How to Play</summary>\n <ul class=\"mt-3 list-disc pl-4 sm:pl-5 space-y-1\">\n <li>Memorize the positions of numbers in sequence</li>\n <li>After they disappear, tap them in the correct order</li>\n <li>Each level adds one more number to remember</li>\n </ul>\n </details>\n </article>\n\n <!-- Footer -->\n <footer class=\"grid grid-cols-1 gap-4 text-center py-4\">\n <div class=\"text-sm opacity-75\">\n 💡 Inspired by chimp memory tests 🐵\n </div>\n \n <div class=\"flex flex-wrap justify-center items-center gap-3 text-sm\">\n <span class=\"flex items-center gap-1\">\n Built with \n \n <svg class=\"w-4 text-red-500\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n <path fill=\"currentColor\" d=\"m12 21.35-1.45-1.32C5.4 15.36 2 12.27 2 8.5 2 5.41 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.08C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.41 22 8.5c0 3.77-3.4 6.86-8.55 11.53Z\"/>\n </svg>\n \n by \n <a href=\"https://michaelsboost.com/\" target=\"_blank\">\n Michael Schwartz\n </a>\n </span>\n \n <span class=\"text-gray-400\">•</span>\n \n <a href=\"https://github.com/michaelsboost/ChimpMemoryTest\" target=\"_blank\">\n Source on GitHub\n </a>\n \n <span class=\"text-gray-400\">•</span>\n \n <a href=\"https://github.com/michaelsboost/ChimpMemoryTest/issues\" target=\"_blank\">\n Report an Issue\n </a>\n </div>\n \n <div class=\"text-xs opacity-50\">\n No tracking — runs entirely in your browser\n </div>\n </footer>\n </div>\n</main>",
"css": "",
"javascript": "function memoryTest() {\n return {\n // Game state\n gameState: 'start', // start, memorize, recall, success, fail\n level: 1,\n score: 0,\n showSettings: false,\n darkMode: false,\n\n // Settings\n settings: {\n sound: true,\n vibration: true,\n customMemorizeTime: 3\n },\n\n // High scores\n highScores: {\n easy: 0,\n medium: 0,\n hard: 0\n },\n\n // Audio context for sound effects\n audioContext: null,\n\n // Difficulty settings\n difficulty: 'medium',\n difficulties: {\n easy: {\n label: 'Easy',\n gridSize: 9,\n memorizeTime: 4,\n startingSequence: 2,\n description: '3x3 grid, longer memorization time, starts with 2 numbers'\n },\n medium: {\n label: 'Medium',\n gridSize: 16,\n memorizeTime: 2,\n startingSequence: 3,\n description: '4x4 grid, standard memorization time, starts with 3 numbers'\n },\n hard: {\n label: 'Hard',\n gridSize: 25,\n memorizeTime: 1,\n startingSequence: 4,\n description: '5x5 grid, shorter memorization time, starts with 4 numbers'\n }\n },\n\n // Game data\n sequence: [],\n selected: [],\n memorizeTimeLeft: 3,\n memorizeTimer: null,\n\n // Initialize the game\n init() {\n // Load settings from localStorage\n this.loadSettings();\n // Set initial difficulty\n this.setDifficulty('medium');\n // Apply dark mode if enabled\n this.applyDarkMode();\n // Initialize audio context\n this.initAudio();\n },\n\n // Initialize audio context for sound effects\n initAudio() {\n try {\n this.audioContext = new (window.AudioContext || window.webkitAudioContext)();\n } catch (e) {\n console.log('Web Audio API not supported');\n }\n },\n\n // Play sound effect\n playSound(frequency, duration, type = 'sine') {\n if (!this.settings.sound || !this.audioContext) return;\n\n try {\n const oscillator = this.audioContext.createOscillator();\n const gainNode = this.audioContext.createGain();\n\n oscillator.connect(gainNode);\n gainNode.connect(this.audioContext.destination);\n\n oscillator.frequency.value = frequency;\n oscillator.type = type;\n\n gainNode.gain.setValueAtTime(0.3, this.audioContext.currentTime);\n gainNode.gain.exponentialRampToValueAtTime(0.01, this.audioContext.currentTime + duration);\n\n oscillator.start(this.audioContext.currentTime);\n oscillator.stop(this.audioContext.currentTime + duration);\n } catch (e) {\n console.log('Error playing sound:', e);\n }\n },\n\n // Vibrate on mobile devices\n vibrate(pattern) {\n if (!this.settings.vibration) return;\n\n if (navigator.vibrate) {\n try {\n navigator.vibrate(pattern);\n } catch (e) {\n console.log('Vibration not supported');\n }\n }\n },\n\n // Load settings from localStorage\n loadSettings() {\n const savedData = localStorage.getItem('chimpMemoryGame');\n\n if (savedData) {\n const data = JSON.parse(savedData);\n\n // Load settings with defaults\n this.settings = { \n sound: true,\n vibration: true,\n customMemorizeTime: 3,\n ...data.settings \n };\n\n // Load high scores\n this.highScores = {\n easy: 0,\n medium: 0,\n hard: 0,\n ...data.highScores\n };\n\n // Load dark mode\n this.darkMode = data.darkMode || false;\n }\n },\n\n // Save settings to localStorage\n saveSettings() {\n const data = {\n settings: this.settings,\n highScores: this.highScores,\n darkMode: this.darkMode\n };\n\n localStorage.setItem('chimpMemoryGame', JSON.stringify(data));\n },\n\n // Toggle dark mode\n toggleDarkMode() {\n this.darkMode = !this.darkMode;\n this.applyDarkMode();\n this.saveSettings();\n },\n\n // Apply dark mode to document\n applyDarkMode() {\n if (this.darkMode) {\n document.documentElement.setAttribute('data-theme', 'dark');\n document.documentElement.classList.add('dark');\n } else {\n document.documentElement.setAttribute('data-theme', 'light');\n document.documentElement.classList.remove('dark');\n }\n },\n\n // Set difficulty level\n setDifficulty(level) {\n this.difficulty = level;\n this.level = this.difficulties[level].startingSequence;\n this.score = 0;\n },\n\n // Start a new game\n startGame() {\n this.gameState = 'memorize';\n this.sequence = this.generateSequence();\n this.selected = [];\n // Use custom time if set, otherwise use difficulty default\n this.memorizeTimeLeft = this.settings.customMemorizeTime || this.difficulties[this.difficulty].memorizeTime;\n this.startMemorizeTimer();\n\n // Play start sound\n this.playSound(523.25, 0.3); // C5\n this.vibrate(100);\n },\n\n // Generate a random sequence of positions\n generateSequence() {\n const sequence = [];\n const gridSize = this.difficulties[this.difficulty].gridSize;\n const positions = Array.from({length: gridSize}, (_, i) => i + 1);\n\n // Shuffle positions and take the first 'level' number of items\n for (let i = positions.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1));\n [positions[i], positions[j]] = [positions[j], positions[i]];\n }\n\n return positions.slice(0, this.level);\n },\n\n // Start the memorization timer\n startMemorizeTimer() {\n this.memorizeTimer = setInterval(() => {\n this.memorizeTimeLeft--;\n\n if (this.memorizeTimeLeft <= 0) {\n clearInterval(this.memorizeTimer);\n this.gameState = 'recall';\n // Play transition sound\n this.playSound(659.25, 0.5); // E5\n this.vibrate([100, 50, 100]);\n }\n }, 1000);\n },\n\n // Check if a selection is correct\n isCorrectSelection(position) {\n const index = this.selected.indexOf(position);\n return index !== -1 && this.sequence[index] === position;\n },\n\n // Handle grid click during recall phase\n handleGridClick(position) {\n if (this.gameState !== 'recall') return;\n\n // Add to selected if not already selected\n if (!this.selected.includes(position)) {\n this.selected.push(position);\n\n // Check if selection is correct so far\n const currentIndex = this.selected.length - 1;\n if (this.selected[currentIndex] !== this.sequence[currentIndex]) {\n // Incorrect selection - game over\n this.gameState = 'fail';\n // Play failure sound\n this.playSound(220, 0.8, 'square'); // A3\n this.vibrate([200, 100, 200, 100, 200]);\n // Update high score if applicable\n this.updateHighScore();\n return;\n }\n\n // Play correct selection sound\n this.playSound(523.25 + (currentIndex * 100), 0.2); // Ascending tones\n this.vibrate(50);\n\n // Check if all correct selections have been made\n if (this.selected.length === this.sequence.length) {\n // Level completed successfully\n this.score += this.level * this.difficulties[this.difficulty].gridSize;\n this.gameState = 'success';\n // Play success sound\n this.playSound(1046.50, 0.6); // C6\n this.vibrate([100, 50, 100, 50, 200]);\n this.updateHighScore();\n }\n }\n },\n\n // Update high score\n updateHighScore() {\n if (this.score > (this.highScores[this.difficulty] || 0)) {\n this.highScores[this.difficulty] = this.score;\n this.saveSettings();\n // Play new high score sound\n if (this.gameState === 'success') {\n setTimeout(() => {\n this.playSound(1318.51, 0.8); // E6\n this.vibrate([300, 100, 300]);\n }, 500);\n }\n }\n },\n\n // Proceed to next level\n nextLevel() {\n this.level++;\n this.startGame();\n },\n\n // Reset the game\n resetGame() {\n this.gameState = 'start';\n this.level = this.difficulties[this.difficulty].startingSequence;\n this.score = 0;\n this.sequence = [];\n this.selected = [];\n clearInterval(this.memorizeTimer);\n // Play reset sound\n this.playSound(392, 0.3); // G4\n this.vibrate(150);\n },\n\n // Reset high scores\n resetHighScores() {\n this.highScores = { easy: 0, medium: 0, hard: 0 };\n this.saveSettings();\n // Play reset sound\n this.playSound(261.63, 0.5); // C4\n this.vibrate(200);\n }\n }\n}",
"logo": "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgdmVyc2lvbj0iMS4yIgogICB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IgogICB3aWR0aD0iMTAyNCIKICAgaGVpZ2h0PSIxMDI0IgogICBpZD0ic3ZnMSIKICAgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczpzdmc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZGVmcwogICAgIGlkPSJkZWZzMSIgLz48c3R5bGUKICAgICBpZD0ic3R5bGUxIj4KCQkuczAgeyBmaWxsOiAjZjNlZmViIH0gCgkJLnMxIHsgZmlsbDogIzM5MWQxMiB9IAoJCS5zMiB7IGZpbGw6ICM3MDM3MWMgfSAKCQkuczMgeyBmaWxsOiAjZjliZjg0IH0gCgkJLnM0IHsgZmlsbDogI2UxOTQ1YyB9IAoJCS5zNSB7IGZpbGw6ICM5NzUyMmMgfSAKCQkuczYgeyBmaWxsOiAjZTVlMGRiIH0gCgk8L3N0eWxlPjxyZWN0CiAgICAgc3R5bGU9ImZpbGw6I2FmZmY5OTtmaWxsLW9wYWNpdHk6MTtzdHJva2U6IzIzNTlkZTtzdHJva2Utd2lkdGg6MS40Njc7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1vcGFjaXR5OjAuNjk0MTE4O3BhaW50LW9yZGVyOmZpbGwgbWFya2VycyBzdHJva2UiCiAgICAgaWQ9InJlY3QyIgogICAgIHdpZHRoPSIxMDIyLjUzMyIKICAgICBoZWlnaHQ9IjEwMjIuNTMzIgogICAgIHg9IjAuNzMzNSIKICAgICB5PSIwLjczMzUiCiAgICAgcnk9IjAiIC8+PGcKICAgICBpZD0iZzE5NCIKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgwLjQ2ODczOTY2LC0wLjA4ODM1MDIyLDAuMDg4MzUwMjIsMC40Njg3Mzk2NiwtNjU0LjkxOTY4LDk2LjQxMzQxMikiPjxnCiAgICAgICBpZD0iZzEzNCI+PGcKICAgICAgICAgaWQ9ImcxMjEiPjxnCiAgICAgICAgICAgaWQ9ImcxMjAiPjxwYXRoCiAgICAgICAgICAgICBzdHlsZT0iZmlsbDojZmZjYmEyIgogICAgICAgICAgICAgZD0ibSAyODk4LjkyNiwxNTcxLjIzNCBjIDAsMCAxNjcuNjU3LC0xNS4zNjkgMTg1LjYyNSwxNDkuMjMxIDE3Ljk2OCwxNjQuNTk5IC0xNDcuNDEsMjg4LjAzIC0yOTUuMjE1LDI2MS41NDcgMCwwIC0yOS4xNjQsLTkxLjc1MiAtMzAuNTA4LC0xMTYuOTgyIC0xLjM0NCwtMjUuMjMgMTQwLjA5OCwtMjkzLjc5NiAxNDAuMDk4LC0yOTMuNzk2IHoiCiAgICAgICAgICAgICBpZD0icGF0aDExOSIgLz48L2c+PC9nPjxnCiAgICAgICAgIHN0eWxlPSJvcGFjaXR5OjAuNCIKICAgICAgICAgaWQ9ImcxMjMiPjxnCiAgICAgICAgICAgaWQ9ImcxMjIiPjxwYXRoCiAgICAgICAgICAgICBzdHlsZT0iZmlsbDojZmZmZmZmIgogICAgICAgICAgICAgZD0ibSAzMDc2LjYyNSwxNzM5LjI0MiBjIDAsMCAtMTIuMjQyLC0xMDUuNjkxIC0xODIuODA5LC0xMjYuMzI5IGwgNi4zMTYsLTMyLjU4MyAxOS4yNDksLTkuMjY5IGMgMCwwIDcxLjE5MiwtMS4xNTYgMTIwLjIxNiw0Ny41NDUgNDkuMDI0LDQ4LjcwMSAzNy4wMjgsMTIwLjYzNiAzNy4wMjgsMTIwLjYzNiB6IgogICAgICAgICAgICAgaWQ9InBhdGgxMjEiIC8+PC9nPjwvZz48ZwogICAgICAgICBpZD0iZzEyNSI+PGcKICAgICAgICAgICBpZD0iZzEyNCI+PHBhdGgKICAgICAgICAgICAgIHN0eWxlPSJmaWxsOiM2NjAwMDAiCiAgICAgICAgICAgICBkPSJtIDI4MjkuNjI2LDIwMDMuNzUzIGMgLTE0LjY1MywwIC0yOS4yMDksLTEuMjUgLTQzLjUwMywtMy44MDkgLTYuNjU1LC0xLjE5NiAtMTIuMTAyLC01Ljk3MiAtMTQuMTUsLTEyLjQxNyAtMy4wNTcsLTkuNjE5IC0yOS45MTIsLTk0Ljc0MSAtMzEuMzM4LC0xMjEuNTMzIC0wLjQxLC03LjY5NSAtMS4wOTYsLTIwLjU4MSA3MS40NDgsLTE2NS40NzkgMzQuODczLC02OS42NTggNzAuMzY5LC0xMzcuMSA3MC43MjUsLTEzNy43NzQgMi44NzQsLTUuNDU0IDguMzEzLC05LjA4NyAxNC40NTYsLTkuNjUzIDEuODU1LC0wLjE2NiAxODUuNzE4LC0xNC45MDIgMjA1LjM5OCwxNjUuNDAxIDguMzg2LDc2LjgxNiAtMjAuODUsMTUyLjY2MSAtODAuMjEyLDIwOC4wODYgLTUyLjkwNyw0OS4zOTUgLTEyMy44MDEsNzcuMTc4IC0xOTIuODI0LDc3LjE3OCB6IG0gLTI2LjMwNiwtMzguMDQyIGMgNjcuNjc4LDguNDU3IDE0MS4xODIsLTE2LjIwNiAxOTQuMjYsLTY1Ljc2NyA1MS42MzgsLTQ4LjIxMyA3Ni4wOTEsLTExMS4yNSA2OC44NiwtMTc3LjUgLTEzLjQ1NSwtMTIzLjI2NyAtMTIwLjI3OCwtMTMzLjQ0MiAtMTU1LjEzOSwtMTMzLjQ0MiAtMC4zODgsMCAtMC43NjQsMCAtMS4xMzUsMCAtNjMuNzkyLDEyMS41NDggLTEyOS41MDcsMjU0LjkzMiAtMTMzLjA4OCwyNzUuOTIzIDEuMjc2LDE2LjA3NCAxNS41MTksNjYuMTM3IDI2LjI0MiwxMDAuNzg2IHoiCiAgICAgICAgICAgICBpZD0icGF0aDEyMyIgLz48L2c+PC9nPjxnCiAgICAgICAgIGlkPSJnMTI3Ij48ZwogICAgICAgICAgIGlkPSJnMTI2Ij48cGF0aAogICAgICAgICAgICAgc3R5bGU9ImZpbGw6I2Y0ODU3NiIKICAgICAgICAgICAgIGQ9Im0gMjg2Mi4yODgsMTY5NC4yMjUgYyAwLDAgODguMDM0LDMuMDggMTAwLjMzMiw1Mi4yMDcgMTIuMjk4LDQ5LjEyNyAtNTAuOTc3LDE1MS40NTQgLTE5MC42NjUsMTAzLjY2MyAwLDAgMjIuNDE0LC0xNDIuMTExIDkwLjMzMywtMTU1Ljg3IHoiCiAgICAgICAgICAgICBpZD0icGF0aDEyNSIgLz48L2c+PC9nPjxnCiAgICAgICAgIGlkPSJnMTI5Ij48ZwogICAgICAgICAgIGlkPSJnMTI4Ij48cGF0aAogICAgICAgICAgICAgc3R5bGU9ImZpbGw6IzY2MDAwMCIKICAgICAgICAgICAgIGQ9Im0gMjg0MC42NDIsMTg4MC44MTMgYyAtMjEuNTYzLDAgLTQ2LjM0NSwtMy44MTggLTc0LjU4MywtMTMuNDgxIC04LjM3NCwtMi44NjEgLTEzLjQ3OSwtMTEuMzMzIC0xMi4xLC0yMC4wNzMgMi40OTUsLTE1LjgyNSAyNi42NDEsLTE1NS4wNzMgMTA0LjcwOSwtMTcwLjg4OSAxLjQwMSwtMC4yODMgMi44MjcsLTAuMzg2IDQuMjU1LC0wLjM1MiAxMC40MTMsMC4zNjYgMTAyLjE3OCw1LjMwNyAxMTcuMzY4LDY1Ljk5MSA3LjkyNywzMS42NzUgLTcuNzkxLDczLjMzIC0zOC4yMjgsMTAxLjI5OSAtMTcuNTMsMTYuMTE0IC01MC40MzMsMzcuNTA1IC0xMDEuNDIxLDM3LjUwNSB6IG0gLTQ3LjcyMywtNDMuMzI1IGMgNjcuODMsMTguNDE4IDEwNi43NzUsLTQuNzI2IDEyNC40OSwtMjEuMDA2IDIzLjIxNSwtMjEuMzM4IDMxLjUxNCwtNDkuNzM2IDI3LjUzNywtNjUuNjI1IC03LjAwOSwtMjguMDAzIC01OS44OTUsLTM3LjAzMSAtODEuMDMzLC0zOC4zMTEgLTM4LjMzNSwxMC4wOTkgLTYyLjA2Myw4NC4xODUgLTcwLjk5NCwxMjQuOTQyIHoiCiAgICAgICAgICAgICBpZD0icGF0aDEyNyIgLz48L2c+PC9nPjxnCiAgICAgICAgIHN0eWxlPSJvcGFjaXR5OjAuMyIKICAgICAgICAgaWQ9ImcxMzEiPjxnCiAgICAgICAgICAgaWQ9ImcxMzAiPjxwYXRoCiAgICAgICAgICAgICBzdHlsZT0iZmlsbDojNjYwMDAwIgogICAgICAgICAgICAgZD0ibSAzMDgyLjMsMTcwNC44NDMgYyAwLDAgLTYyLjAxNiwyNjQuNzI3IC0zMTAuNDI1LDIwNy40NDggbCAxNS4zLDQyLjIxMyAxMy40MzQsMjkuMjE3IGMgMCwwIDExMS4yNzYsMy4wMjMgMTc2LjcxMSwtNDQuNDI4IDY1LjQzNiwtNDcuNDUxIDEzMy43OCwtMTQ4Ljk0IDEwNC45OCwtMjM0LjQ1IHoiCiAgICAgICAgICAgICBpZD0icGF0aDEyOSIgLz48L2c+PC9nPjxnCiAgICAgICAgIHN0eWxlPSJvcGFjaXR5OjAuMyIKICAgICAgICAgaWQ9ImcxMzMiPjxnCiAgICAgICAgICAgaWQ9ImcxMzIiPjxwYXRoCiAgICAgICAgICAgICBzdHlsZT0iZmlsbDojNjYwMDAwIgogICAgICAgICAgICAgZD0ibSAyOTMyLjM5NCwxODI3LjM2IGMgMCwwIC0wLjQxNiwtNDcuNDg5IC0zMi4yNDEsLTY4LjI0IC0zMS44MjYsLTIwLjc1MSAtNTUuMjk1LC0yNS4zNjcgLTU1LjI5NSwtMjUuMzY3IGwgMzAuMDE2LC0zOC40NCBjIDAsMCA0OC4yNTEsNy40NjcgNzIuNzI5LDI3LjAwMSAyNC40NzgsMTkuNTM0IDIwLjQ2Miw4MS4wNzUgLTE1LjIwOSwxMDUuMDQ2IHoiCiAgICAgICAgICAgICBpZD0icGF0aDEzMSIgLz48L2c+PC9nPjwvZz48ZwogICAgICAgaWQ9ImcxNDkiPjxnCiAgICAgICAgIGlkPSJnMTM2Ij48ZwogICAgICAgICAgIGlkPSJnMTM1Ij48cGF0aAogICAgICAgICAgICAgc3R5bGU9ImZpbGw6I2ZmY2JhMiIKICAgICAgICAgICAgIGQ9Im0gMTU1Ny4zNzYsMTIxMS41NTIgYyAwLDAgLTE0OS42MSwtNzcuNzI1IC0yMjcuNzM0LDY3Ljk4OCAtNzguMTI0LDE0NS43MTMgMjkuMDE1LDMyMi43MDUgMTc1Ljg2MiwzNTQuMTMzIDAsMCA2MS4yOTEsLTczLjk3NCA3MS45NiwtOTYuODQzIDEwLjY2OCwtMjIuODY4IC0yMC4wODgsLTMyNS4yNzggLTIwLjA4OCwtMzI1LjI3OCB6IgogICAgICAgICAgICAgaWQ9InBhdGgxMzQiIC8+PC9nPjwvZz48ZwogICAgICAgICBzdHlsZT0ib3BhY2l0eTowLjQiCiAgICAgICAgIGlkPSJnMTM4Ij48ZwogICAgICAgICAgIGlkPSJnMTM3Ij48cGF0aAogICAgICAgICAgICAgc3R5bGU9ImZpbGw6I2ZmZmZmZiIKICAgICAgICAgICAgIGQ9Im0gMTMzMy41MDQsMTMwMC42MzQgYyAwLDAgNTAuODE4LC05My4yOTcgMjE2LjU3MSwtNDcuODM0IGwgNi4zMTYsLTMyLjU4MyAtMTQuMzc0LC0xNS44NzggYyAwLDAgLTY1LjUzNSwtMjguMDI5IC0xMjkuMTQ5LC0xLjQ2NiAtNjMuNjE0LDI2LjU2NCAtNzkuMzY0LDk3Ljc2MSAtNzkuMzY0LDk3Ljc2MSB6IgogICAgICAgICAgICAgaWQ9InBhdGgxMzYiIC8+PC9nPjwvZz48ZwogICAgICAgICBpZD0iZzE0MCI+PGcKICAgICAgICAgICBpZD0iZzEzOSI+PHBhdGgKICAgICAgICAgICAgIHN0eWxlPSJmaWxsOiM2NjAwMDAiCiAgICAgICAgICAgICBkPSJtIDE1MDUuNTA1LDE2NTEuODkyIGMgLTEuMjY3LDAgLTIuNTQ0LC0wLjEzMiAtMy44MTMsLTAuNDA1IC04MS4xOTQsLTE3LjM3OCAtMTU0LjYyNCwtNzcuNzkzIC0xOTEuNjMzLC0xNTcuNjcxIC0zNC4xNjcsLTczLjc0IC0zMi44ODEsLTE1NC45NzUgMy41MjgsLTIyMi44ODYgODUuNjMyLC0xNTkuNzA3IDI1MC41MzIsLTc2LjQwNiAyNTIuMTg4LC03NS41NDcgNS40NDksMi44MzIgOS4xMDQsOC4yMTggOS43MjYsMTQuMzIxIDAuMDc2LDAuNzYyIDcuNzgxLDc2LjY5IDE0LjA4LDE1NC40MzkgMTMuMTAxLDE2MS43MjggNy42NDksMTczLjQwOCA0LjM5MiwxODAuMzkxIC0xMS4zMjgsMjQuMjg3IC02OC4wMTMsOTMuMDA4IC03NC40MzgsMTAwLjc2MiAtMy41MDMsNC4yMjggLTguNjcxLDYuNTk2IC0xNC4wMyw2LjU5NiB6IG0gLTM2LjQ3MiwtNDQyLjk0NCBjIC00MS4xNjcsMCAtODkuNjA5LDE2LjI5OSAtMTIzLjMzMyw3OS4xOTkgLTMxLjQwNCw1OC41NjkgLTMyLjMxOSwxMjYuMTcyIC0yLjU4MywxOTAuMzUyIDMwLjY1NCw2Ni4xNTcgODkuNTk3LDExNi45NDMgMTU1LjU2NCwxMzQuNzg1IDIyLjg2NiwtMjguMDQyIDU0LjcxMiwtNjguOTg0IDYxLjg5MiwtODMuMzc0IDQuNTE5LC0yMC44MyAtNi41NiwtMTY5LjM1NiAtMjAuMjc2LC0zMDYuMTM4IC0xMy4zMTMsLTUuNTQ3IC00MC4yMTksLTE0LjgyNCAtNzEuMjY0LC0xNC44MjQgeiIKICAgICAgICAgICAgIGlkPSJwYXRoMTM4IiAvPjwvZz48L2c+PGcKICAgICAgICAgaWQ9ImcxNDIiPjxnCiAgICAgICAgICAgaWQ9ImcxNDEiPjxwYXRoCiAgICAgICAgICAgICBzdHlsZT0iZmlsbDojZjQ4NTc2IgogICAgICAgICAgICAgZD0ibSAxNTQ1LjM5LDEzMzkuMzg4IGMgMCwwIC04Mi43MjIsLTMwLjQ4MSAtMTEyLjQ2NSwxMC4zODMgLTI5Ljc0Myw0MC44NjQgLTkuMzMsMTU5LjYzOSAxMzcuOTUyLDE2OC4yNTEgMCwtMTBlLTQgMzIuMzA3LC0xNDAuMTY3IC0yNS40ODcsLTE3OC42MzQgeiIKICAgICAgICAgICAgIGlkPSJwYXRoMTQwIiAvPjwvZz48L2c+PGcKICAgICAgICAgaWQ9ImcxNDQiPjxnCiAgICAgICAgICAgaWQ9ImcxNDMiPjxwYXRoCiAgICAgICAgICAgICBzdHlsZT0iZmlsbDojNjYwMDAwIgogICAgICAgICAgICAgZD0ibSAxNTcwLjg4OCwxNTM2LjIzOCBjIC0wLjM1NiwwIC0wLjcxMywtMC4wMSAtMS4wNzIsLTAuMDI5IC0xMDAuMjY2LC01Ljg1OSAtMTM5LjYsLTU4LjI2NyAtMTU0LjEyMSwtODguOTg0IC0xNy42NzYsLTM3LjM4MyAtMTYuNjQ4LC04MS44NyAyLjUsLTEwOC4xNzkgMzYuNzg1LC01MC41MzIgMTIzLjcwNCwtMjAuMzYxIDEzMy40OTQsLTE2Ljc1MyAxLjMzNiwwLjQ5MyAyLjYxLDEuMTM4IDMuNzk3LDEuOTI5IDY2LjM2Nyw0NC4xNyAzNi43NDMsMTgyLjI4NSAzMy4xNDcsMTk3Ljg5MSAtMS45MTcsOC4zMDUgLTkuMzEyLDE0LjEyNSAtMTcuNzQ1LDE0LjEyNSB6IG0gLTg1LjQzMiwtMTg5LjU0MSBjIC0xNS42NDUsMCAtMzAuMjUyLDMuNDE4IC0zNy44MDMsMTMuNzk0IC05LjU5NywxMy4xODggLTEyLjUxNyw0Mi42MDcgMC45ODEsNzEuMTYyIDEwLjMyNywyMS44NDEgMzcuNzU5LDU4LjEwNSAxMDcuNTIyLDY2Ljc1MyA2Ljk0MSwtNDEuMTc3IDEyLjU5MywtMTE4Ljc4OSAtMTkuMTk0LC0xNDIuNjcxIC0xMS4wOTgsLTMuNzc0IC0zMi4xMDIsLTkuMDM4IC01MS41MDYsLTkuMDM4IHoiCiAgICAgICAgICAgICBpZD0icGF0aDE0MiIgLz48L2c+PC9nPjxnCiAgICAgICAgIHN0eWxlPSJvcGFjaXR5OjAuMyIKICAgICAgICAgaWQ9ImcxNDYiPjxnCiAgICAgICAgICAgaWQ9ImcxNDUiPjxwYXRoCiAgICAgICAgICAgICBzdHlsZT0iZmlsbDojNjYwMDAwIgogICAgICAgICAgICAgZD0ibSAxMzM3LjU2MiwxMjY1LjkxNyBjIDAsMCAtNDEuNDA3LDI2OC43NzcgMjEwLjE2LDMwOS43NjUgbCAtMjkuOTQzLDMzLjMyIC0yMy4zNiwyMS45ODUgYyAwLDAgLTEwNC4yMzcsLTM5LjMzNSAtMTQ3LjE0NiwtMTA4LjA4IC00Mi45MSwtNjguNzQ1IC02OC4zMzQsLTE4OC42NjIgLTkuNzExLC0yNTYuOTkgeiIKICAgICAgICAgICAgIGlkPSJwYXRoMTQ0IiAvPjwvZz48L2c+PGcKICAgICAgICAgc3R5bGU9Im9wYWNpdHk6MC4zIgogICAgICAgICBpZD0iZzE0OCI+PGcKICAgICAgICAgICBpZD0iZzE0NyI+PHBhdGgKICAgICAgICAgICAgIHN0eWxlPSJmaWxsOiM2NjAwMDAiCiAgICAgICAgICAgICBkPSJtIDE0MzAuNzA3LDE0MzYuMjA0IGMgMCwwIDE4LjEyMSwtNDMuODQ2IDU1LjM2MSwtNTEuMDIzIDM3LjI0LC03LjE3NyA2MC43MSwtMi41NjcgNjAuNzEsLTIuNTY3IGwgLTEzLjQ1NiwtNDYuOTg0IGMgMCwwIC00Ny40OTgsLTExLjM1MiAtNzcuNDc1LC0yLjUyMSAtMjkuOTc3LDguODMyIC00OS4yNDEsNjcuMzc2IC0yNS4xNCwxMDMuMDk1IHoiCiAgICAgICAgICAgICBpZD0icGF0aDE0NiIgLz48L2c+PC9nPjwvZz48ZwogICAgICAgaWQ9ImcxNTEiPjxnCiAgICAgICAgIGlkPSJnMTUwIj48cGF0aAogICAgICAgICAgIHN0eWxlPSJmaWxsOiNiNzQ4MjkiCiAgICAgICAgICAgZD0ibSAxNjE5LjMxMSwxMDIzLjE5NSBjIDEzNy44NTUsLTI4NC41NzIgMzA0LjM4OSwtMzI0LjY2NSA3NDcuNzksLTM0My40NzkgNzIuNTI4LC0xMi4zMjIgMTY2LjcwMywtMTEyLjE5NyAxNjYuNzAzLC0xMTIuMTk3IDM2LjAxMiw3OS41NTggMjcuODgsMTU3LjY4OSAyNy44OCwxNTcuNjg5IDQ3LjMwMiwtMTQuODYzIDExMC4zODEsLTYyLjg2NiAxMTAuMzgxLC02Mi44NjYgMjQuNzQsMTEzLjU4MyAtOS41MTEsMTY5LjY2OCAtOS41MTEsMTY5LjY2OCAwLDAgMjQ3LjcwOCwxMzMuMjQ2IDI2OS4xNjEsNDQ5LjEyOSAyMS40NTMsMzE1Ljg4MyAtMTUyLjMzMiw0OTEuOTIxIC0xNTIuMzMyLDQ5MS45MjEgNDMuMjIzLDY2LjQ3OSA1Ni42ODQsMjM4LjI0NyAtODIuMDc3LDMwMi43ODMgLTIzMy44MTYsOTYuNTkgLTYwMC45MDksMC4yODEgLTYwMC45MDksMC4yODEgMCwwIC0zNzYuMTE1LC00OS43NjMgLTU1Ni42OTQsLTIyNy44IC0xMDQuNDcsLTExMi4zNDIgLTI3Ljg0NSwtMjY2LjQwMyAzNy4wMzQsLTMxMS42MzYgMCwwIC05NS4yODEsLTIyOC45MjEgNDIuNTc0LC01MTMuNDkzIHoiCiAgICAgICAgICAgaWQ9InBhdGgxNDkiIC8+PC9nPjwvZz48ZwogICAgICAgaWQ9ImcxNTMiPjxnCiAgICAgICAgIGlkPSJnMTUyIj48cGF0aAogICAgICAgICAgIHN0eWxlPSJmaWxsOiNmZmNiYTIiCiAgICAgICAgICAgZD0ibSAxNTcyLjMzNywxNjg4LjAzMiBjIDMzLjA2MSwtOTAuMTQzIDk2LjEyNCwtODUuODAyIDk2LjEyNCwtODUuODAyIDAsMCAtNjMuOTEzLC0xNjguNzk4IDQzLjk3NSwtNDI3Ljg1MSAxMDcuODg5LC0yNTkuMDU0IDQ2NC42MzMsLTIwMS44MjQgNTUzLjMwMSwyOC4yMTMgMTY4LjA3NSwtMTc5LjU3NiA1MjAuMDA3LC05Ny41MjEgNTIzLjIyNCwxODMuMzcgMy4yMTcsMjgwLjg5MSAtMTE5LjA0OCw0MTMuMDk2IC0xMTkuMDQ4LDQxMy4wOTYgMCwwIDYwLjA1NiwxOS44NTcgNTcuMDIzLDExNS45MDEgLTEyLjk1OCwxNDcuMjQ3IC0xNDYuMTQ2LDE5Mi45NzQgLTE0Ni4xNDYsMTkyLjk3NCAtMTI2LjE3NCwzNi45MTYgLTQ4NC4zOTIsLTMxLjgxMSAtNDg0LjM5MiwtMzEuODExIDAsMCAtMzU3LjU5MSwtNzEuOTYgLTQ2MC43MTYsLTE1My45NDMgMTBlLTQsMCAtMTA2LjMzMSwtOTIuODAyIC02My4zNDUsLTIzNC4xNDcgeiIKICAgICAgICAgICBpZD0icGF0aDE1MSIgLz48L2c+PC9nPjxnCiAgICAgICBpZD0iZzE1NSI+PGcKICAgICAgICAgaWQ9ImcxNTQiPjxlbGxpcHNlCiAgICAgICAgICAgdHJhbnNmb3JtPSJtYXRyaXgoMC4xODc5LC0wLjk4MjIsMC45ODIyLDAuMTg3OSw0MDIuMjcyNCwzNjk4LjU5MTEpIgogICAgICAgICAgIHN0eWxlPSJmaWxsOiM2NjAwMDAiCiAgICAgICAgICAgY3g9IjI0MzcuNjg5IgogICAgICAgICAgIGN5PSIxNjA2LjA0IgogICAgICAgICAgIHJ4PSIxNjguMzE3OTkiCiAgICAgICAgICAgcnk9IjExNy44MjEiCiAgICAgICAgICAgaWQ9ImVsbGlwc2UxNTMiIC8+PC9nPjwvZz48ZwogICAgICAgaWQ9ImcxNTciPjxnCiAgICAgICAgIGlkPSJnMTU2Ij48ZWxsaXBzZQogICAgICAgICAgIHRyYW5zZm9ybT0ibWF0cml4KDAuMTgzMSwtMC45ODMxLDAuOTgzMSwwLjE4MzEsNDU5LjQ1NSwzNjU4LjYzMDkpIgogICAgICAgICAgIHN0eWxlPSJmaWxsOiNmZmZmZmYiCiAgICAgICAgICAgY3g9IjI0MzEuMyIKICAgICAgICAgICBjeT0iMTU1Mi44NCIKICAgICAgICAgICByeD0iNTUuNzEwOTk5IgogICAgICAgICAgIHJ5PSI0Ny44Njg5OTkiCiAgICAgICAgICAgaWQ9ImVsbGlwc2UxNTUiIC8+PC9nPjwvZz48ZwogICAgICAgaWQ9ImcxNTkiPjxnCiAgICAgICAgIGlkPSJnMTU4Ij48ZWxsaXBzZQogICAgICAgICAgIHRyYW5zZm9ybT0ibWF0cml4KDAuODg4NSwtMC40NTksMC40NTksMC44ODg1LC01MTQuMTY0NywxMzE3LjQzODIpIgogICAgICAgICAgIHN0eWxlPSJmaWxsOiM5OTdmN2YiCiAgICAgICAgICAgY3g9IjI0NTMuMjMyOSIKICAgICAgICAgICBjeT0iMTcxNi40OTEiCiAgICAgICAgICAgcng9IjI4LjY2Nzk5OSIKICAgICAgICAgICByeT0iMTUuMjk3IgogICAgICAgICAgIGlkPSJlbGxpcHNlMTU3IiAvPjwvZz48L2c+PGcKICAgICAgIGlkPSJnMTYxIj48ZwogICAgICAgICBpZD0iZzE2MCI+PGVsbGlwc2UKICAgICAgICAgICB0cmFuc2Zvcm09Im1hdHJpeCgwLjE4NzksLTAuOTgyMiwwLjk4MjIsMC4xODc5LDk0LjMzOTksMzEzMC42NTQxKSIKICAgICAgICAgICBzdHlsZT0iZmlsbDojNjYwMDAwIgogICAgICAgICAgIGN4PSIxOTQwLjI4ODkiCiAgICAgICAgICAgY3k9IjE1MDguMjc5MSIKICAgICAgICAgICByeD0iMTY4LjMxNzk5IgogICAgICAgICAgIHJ5PSIxMTcuODIxIgogICAgICAgICAgIGlkPSJlbGxpcHNlMTU5IiAvPjwvZz48L2c+PGcKICAgICAgIGlkPSJnMTYzIj48ZwogICAgICAgICBpZD0iZzE2MiI+PGVsbGlwc2UKICAgICAgICAgICB0cmFuc2Zvcm09Im1hdHJpeCgwLjE4MzEsLTAuOTgzMSwwLjk4MzEsMC4xODMxLDE2OS4zMjM5LDMxMjYuNTg3OSkiCiAgICAgICAgICAgc3R5bGU9ImZpbGw6I2ZmZmZmZiIKICAgICAgICAgICBjeD0iMTk2Ni4wNzkiCiAgICAgICAgICAgY3k9IjE0NjEuNDA0MSIKICAgICAgICAgICByeD0iNTUuNzEwOTk5IgogICAgICAgICAgIHJ5PSI0Ny44Njg5OTkiCiAgICAgICAgICAgaWQ9ImVsbGlwc2UxNjEiIC8+PC9nPjwvZz48ZwogICAgICAgaWQ9ImcxNjUiPjxnCiAgICAgICAgIGlkPSJnMTY0Ij48ZWxsaXBzZQogICAgICAgICAgIHRyYW5zZm9ybT0ibWF0cml4KDAuNzYwMSwtMC42NDk4LDAuNjQ5OCwwLjc2MDEsLTU5MC42NDM3LDE2MDkuNjYyNikiCiAgICAgICAgICAgc3R5bGU9ImZpbGw6Izk5N2Y3ZiIKICAgICAgICAgICBjeD0iMTg4NC42MzQiCiAgICAgICAgICAgY3k9IjE2MDQuNzM2IgogICAgICAgICAgIHJ4PSIxNS4yNTkiCiAgICAgICAgICAgcnk9IjI4Ljc0MDk5OSIKICAgICAgICAgICBpZD0iZWxsaXBzZTE2MyIgLz48L2c+PC9nPjxnCiAgICAgICBpZD0iZzE2NyI+PGcKICAgICAgICAgaWQ9ImcxNjYiPjxwYXRoCiAgICAgICAgICAgc3R5bGU9ImZpbGw6IzY2MDAwMCIKICAgICAgICAgICBkPSJtIDI1OTEuMDkxLDEzNzMuODcyIGMgLTIwLjYxOSwtMTQuMzcyIC0zNy43NzYsLTMwLjk3NCAtNTYuODQ5LC00NS44NzUgLTQuOTE2LC0zLjY2NyAtMTAuNDQ4LC04LjAwNSAtMTUuODY1LC0xMC4xMzUgLTkuNjg2LC0zLjExMSAtMjguMzQ0LDAuNTY4IC00MC4yMDYsMi4yOCAtMTUuODk1LDIuNTY1IC0zMi4zMSw1Ljc3NiAtNDkuMSw3Ljk2MSAtNS44MDEsMC44NzMgLTguOTI2LC03LjA5OSAtNC4wOTUsLTEwLjM4NiAyMS43NzMsLTE1LjIyOSA0NS40NTUsLTI2LjM4IDcxLjY4NywtMzIuMDA0IDUuODkyLC0xLjI0NyAxMi41MTQsLTEuODk0IDE4LjYwOSwtMS44ODggMjQuNzk0LDAuNzI5IDQzLjgxOSwyMC42MDcgNTguNTQ5LDM4LjIzNCAxMC43OTksMTMuODE2IDE5Ljk4NCwyOC4zNzUgMjYuMjMsNDUuMDc1IDIuMTU3LDUuMjUyIC00LjU3MywxMC4yNDggLTguOTYsNi43MzggeiIKICAgICAgICAgICBpZD0icGF0aDE2NSIgLz48L2c+PC9nPjxnCiAgICAgICBpZD0iZzE2OSI+PGcKICAgICAgICAgaWQ9ImcxNjgiPjxwYXRoCiAgICAgICAgICAgc3R5bGU9ImZpbGw6IzY2MDAwMCIKICAgICAgICAgICBkPSJtIDE4OTMuODQ1LDEyMjguMzQzIGMgMjMuNDU0LC0yNC4wMDMgNTMuNjYyLC00My40MzUgODcuNDMsLTQ3Ljk3OSAxMy42NTEsLTEuODk1IDI3LjkxOCw0LjE2OSAzOS4wMDUsMTEuNzg1IDIyLjEyNSwxNS4xMzIgMzkuODQzLDM0LjM4IDU0LjI1Myw1Ni42ODUgMS42OTYsMi42ODkgMC44OTEsNi4yNDQgLTEuNzk4LDcuOTM5IC0xLjkxNSwxLjIwNyAtNC4yNTgsMS4xNDYgLTYuMDcyLDAuMDQ2IC0yMS41NDksLTEyLjEyIC00MS4yNTMsLTI2LjI3OSAtNjIuNTEyLC0zNy4zODkgLTEwLjkxMywtNS40NDkgLTE1LjAzMywtNy4wNTMgLTI0LjMzLC00Ljk0NCAtMjcuMjYsNS45MjggLTUyLjEzNiwxNy4zMjMgLTgwLjIxLDIzLjQ3MSAtNS40OTksMS41MzIgLTkuNzA2LC01LjUxNiAtNS43NjYsLTkuNjE0IHoiCiAgICAgICAgICAgaWQ9InBhdGgxNjciIC8+PC9nPjwvZz48ZwogICAgICAgaWQ9ImcxNzEiPjxnCiAgICAgICAgIGlkPSJnMTcwIj48cGF0aAogICAgICAgICAgIHN0eWxlPSJmaWxsOiM2NjAwMDAiCiAgICAgICAgICAgZD0ibSAyMTgwLjU1NiwxODM2LjU1OCBjIC00OS43NjIsMzQuMzg3IC0xMzIuNzYxLDI3LjM3MSAtMTU1LjQyLC0zNi4yNTUgLTYuOTMsLTE5LjMzOSAtNy43OTcsLTM5LjA5NSAtNC40NjcsLTU3LjUxNiAwLjU2NCwtMy4xMjUgMy41NTYsLTUuMiA2LjY4MSwtNC42MzUgMi4yNDMsMC40MDYgMy45NSwyLjA2MiA0LjUxOCw0LjEyNCA5LjA5OSwzMC44NSAxOS43NCw2MS4wOTcgNDkuNTczLDc0LjYwOSAyOC41ODQsMTIuNjE4IDYzLjAzNiw5Ljg4MSA5NS4yMDYsOS4xNjUgNS44MDEsLTAuNjQ5IDguNzMxLDcuMjUxIDMuOTA5LDEwLjUwOCB6IgogICAgICAgICAgIGlkPSJwYXRoMTY5IiAvPjwvZz48L2c+PGcKICAgICAgIGlkPSJnMTczIj48ZwogICAgICAgICBpZD0iZzE3MiI+PHBhdGgKICAgICAgICAgICBzdHlsZT0iZmlsbDojNjYwMDAwIgogICAgICAgICAgIGQ9Im0gMjE4Ny40NzcsMTc3Ny4yMDQgYyAtMTAuMTc3LC0xMC4zODMgLTkuNTI0LC0yMi44NzYgLTEuOTIxLC0zMy42NTIgMy42NDYsLTUuMzcxIDE0Ljc0MSwtMTUuMzY1IDIxLjIxOSwtNi45NzkgNy43ODQsMTAuMzg2IDkuNzY0LDIzLjA4NCAyLjk3LDMzLjg1NSAtMy4zMjQsNS4zMTUgLTE1LjU4NSwxNC4zNDIgLTIyLjI2OCw2Ljc3NiB6IgogICAgICAgICAgIGlkPSJwYXRoMTcxIiAvPjwvZz48L2c+PGcKICAgICAgIGlkPSJnMTc1Ij48ZwogICAgICAgICBpZD0iZzE3NCI+PHBhdGgKICAgICAgICAgICBzdHlsZT0iZmlsbDojNjYwMDAwIgogICAgICAgICAgIGQ9Im0gMjEyNi45NTEsMTc2NS4zMDkgYyAtMTAuMTc3LC0xMC4zODIgLTkuNTI0LC0yMi44NzYgLTEuOTIyLC0zMy42NTIgMy42NDYsLTUuMzcgMTQuNzQxLC0xNS4zNjUgMjEuMjE4LC02Ljk3OSA3Ljc4NSwxMC4zODcgOS43NjQsMjMuMDg0IDIuOTcxLDMzLjg1NSAtMy4zMjMsNS4zMTQgLTE1LjU4NCwxNC4zNDEgLTIyLjI2Nyw2Ljc3NiB6IgogICAgICAgICAgIGlkPSJwYXRoMTczIiAvPjwvZz48L2c+PGcKICAgICAgIHN0eWxlPSJvcGFjaXR5OjAuMyIKICAgICAgIGlkPSJnMTc3Ij48ZwogICAgICAgICBpZD0iZzE3NiI+PHBhdGgKICAgICAgICAgICBzdHlsZT0iZmlsbDojNjYwMDAwIgogICAgICAgICAgIGQ9Im0gMjgwOC45NzUsMTg4MC42NTEgYyAwLDAgLTE4MC4zNzgsMjAxLjgyMSAtNjk0LjIyOSwxMDAuODI4IC01MTMuODUxLC0xMDAuOTk0IC02MTguMjE4LC0zMjAuODgxIC02MTguMjE4LC0zMjAuODgxIDAsMCAtMTY2LjYxLDI2NC44OCA1OTkuODcsNDE1LjUyNyA3NjYuNDgsMTUwLjY0NyA3MTUuMzI3LC0xNjUuMzkzIDcxMi41NzcsLTE5NS40NzQgeiIKICAgICAgICAgICBpZD0icGF0aDE3NSIgLz48L2c+PC9nPjxnCiAgICAgICBzdHlsZT0ib3BhY2l0eTowLjQiCiAgICAgICBpZD0iZzE3OSI+PGcKICAgICAgICAgaWQ9ImcxNzgiPjxwYXRoCiAgICAgICAgICAgc3R5bGU9ImZpbGw6I2ZmZmZmZiIKICAgICAgICAgICBkPSJtIDI4OTcuNTA4LDE1NjIuMjU1IGMgMCwwIDQ0LjE5NywtMzAwLjg5NyAtODQuNzk4LC00OTcuNzg3IC03OC44NjksLTExNy43NzkgLTE2MC4zODUsLTE3MS42NTIgLTE5NC43NjEsLTE5OS4zNDcgLTM0LjM3NiwtMjcuNjk1IDkuMzM0LC04MC4zMSA0LjgzMywtOTMuMjc1IC00LjUwMSwtMTIuOTY1IC02NS4xNzEsMTQuNTczIC04OS43OTIsNC45MDEgLTI0LjYyMiwtOS42NzEgLTE0LjgzNSwtOTYuMzM1IC0yNi41NDcsLTk2LjIyMSAtMTEuNzEyLDAuMTE0IC05MS41MDcsMzkuMTExIC0xMzAuMzE2LDMwLjMyMyAtMTc5LjAxOCwtNDAuNTM2IC00OTUuMzc0LC01NS43ODQgLTY5NS42ODIsMjA1LjY0MSAtMjAwLjMwOCwyNjEuNDI1IC0xMzEuMDY0LDUwMi4wMTkgLTEzMS4wNjQsNTAyLjAxOSAwLDAgLTM2LjY4MSwtMjA3LjE5MiA5Mi45ODQsLTQzOS42NjMgMTI5LjY2NSwtMjMyLjQ3MSAyNjYuMTcsLTI0OS4wMjEgNDc1LjU0MywtMjgzLjU3MiAxMzIuMDg3LC0zLjU1NSAyNDkuMTk0LC0xNS41NTkgMjQ5LjE5NCwtMTUuNTU5IDAsMCA1Ny44NjUsLTE4LjcwOSA3Ny4xNTEsLTM0LjE2NCAxOS4yODcsLTE1LjQ1NSA4Mi44MTcsLTcxLjc0IDg3LjgyMywtNzEuMTI1IDUuMDA2LDAuNjE1IDE1LjY4NywxMi41NDYgMTUuNjg3LDEyLjU0NiAwLDAgMTQuOTk1LDY0LjM1NCAxNS42NjIsOTUuMDg4IDAuNjY2LDMwLjczNCAzLjc0LDQ1LjAyOSAzLjc0LDQ1LjAyOSAwLDAgOTUuNzM5LC01My42NjQgMTAzLjk5NywtNTQuMDU0IDguMjU5LC0wLjM5IDEzLjM0Miw3MS44ODEgOC42NzgsOTkuOTU3IC00LjY2NCwyOC4wNzYgLTYuNTQ2LDQ3LjgzOSAtNi41NDYsNDcuODM5IGwgMS43OTcsMTYuODYzIGMgMCwwIDExOS4xNjcsNzcuMTU0IDE5OS40MjksMjI3LjIzMSA4MC4yNjMsMTUwLjA3OCA1Ni44NDcsMzY4LjM1MyA1Ni44NDcsMzY4LjM1MyAwLDAgLTE2LjY5NiwxMTMuMzU0IC0zMy44NTksMTI4Ljk3NyB6IgogICAgICAgICAgIGlkPSJwYXRoMTc3IiAvPjwvZz48L2c+PGcKICAgICAgIHN0eWxlPSJvcGFjaXR5OjAuNCIKICAgICAgIGlkPSJnMTgxIj48ZwogICAgICAgICBpZD0iZzE4MCI+PHBhdGgKICAgICAgICAgICBzdHlsZT0iZmlsbDojZmZmZmZmIgogICAgICAgICAgIGQ9Im0gMjc1NS41NjEsMTYwNi41MDQgYyAwLDAgNTIuNjQsLTI4My42MDMgLTExMC44NCwtMzk3LjA3MyAtMTYzLjQ4LC0xMTMuNDcgLTM2OS41MjIsLTcuMzk0IC0zNjkuNTIyLC03LjM5NCAwLDAgMTE3LjY3MywtMTcxLjY2NCAzNzcsLTUzLjQzNyAyMjcuNzk3LDEwMy44NTEgMTAzLjM2Miw0NTcuOTA0IDEwMy4zNjIsNDU3LjkwNCB6IgogICAgICAgICAgIGlkPSJwYXRoMTc5IiAvPjwvZz48L2c+PGcKICAgICAgIHN0eWxlPSJvcGFjaXR5OjAuNCIKICAgICAgIGlkPSJnMTgzIj48ZwogICAgICAgICBpZD0iZzE4MiI+PHBhdGgKICAgICAgICAgICBzdHlsZT0iZmlsbDojZmZmZmZmIgogICAgICAgICAgIGQ9Im0gMTY2MC45NDMsMTM5MS4zNjUgYyAwLDAgNTcuMTQ1LC0yODIuNzE4IDI1MS4wMDQsLTMyNS45NTUgMTkzLjg2LC00My4yMzggMzQ1LjE1OSwxMzMuMDcxIDM0NS4xNTksMTMzLjA3MSAwLDAgLTQ0LjkyMSwtMjAzLjYyMSAtMzI5LjM2OSwtMTkyLjI2OSAtMjQ5Ljg2Myw5Ljk3IC0yNjYuNzk0LDM4NS4xNTMgLTI2Ni43OTQsMzg1LjE1MyB6IgogICAgICAgICAgIGlkPSJwYXRoMTgxIiAvPjwvZz48L2c+PGcKICAgICAgIGlkPSJnMTg1Ij48ZwogICAgICAgICBpZD0iZzE4NCI+PHBhdGgKICAgICAgICAgICBzdHlsZT0iZmlsbDojNjYwMDAwIgogICAgICAgICAgIGQ9Im0gMjQzNi4xMTMsMjEzNy4zNDIgYyAtMTcwLjUyNSwwIC0zMjUuODkxLC0zOC44MjggLTM0My4yMzUsLTQzLjMwNiAtMjcuMjQxLC0zLjcxMSAtMzg2LjMxOCwtNTUuNjI1IC01NjUuOTY0LC0yMzIuNzM5IC0wLjE4OCwtMC4xODUgLTAuMzcxLC0wLjM3NiAtMC41NDksLTAuNTY2IC00Mi42NDksLTQ1Ljg2NCAtNjEuNjY4LC0xMDMuMTAxIC01NSwtMTY1LjUzMiA3LjcxLC03Mi4xODMgNDYuNzk0LC0xMzMuMjYyIDgzLjY2NywtMTY0LjcwMiAtMTguMzg2LC01My43NiAtNzQuODAyLC0yNjEuOTg3IDQ3Ljg4MywtNTE1LjI0NCA0MS40NDgsLTg1LjU1MiA5NS42MjcsLTE4MC42NTkgMTgzLjIyNSwtMjM3LjM0NCAxMjAuMzI3LC03Ny44NjYgMzIwLjUxNSwtOTQuNjQzIDU1Mi4zMTQsLTExNC4wNzIgbCAyNi4zMTgsLTIuMjA3IGMgNjUuNTYyLC0xMS43MTQgMTU0Ljg4MywtMTA1LjY2NCAxNTUuNzgxLC0xMDYuNjExIDQuMTcsLTQuNDE5IDEwLjI2NiwtNi40NDUgMTYuMjU3LC01LjQ2OSA1Ljk4OSwxLjAwNiAxMS4wODYsNC45MjIgMTMuNTkxLDEwLjQ1NCAyNC4zMzEsNTMuNzYgMjkuNjM2LDEwNi40NzUgMzAuMjUxLDEzNy45MTUgMzguODQ4LC0xOC42NDggNzkuODgzLC00OS42OTcgODAuMzgxLC01MC4wNzggNC45NTEsLTMuNzY5IDExLjQ4OSwtNC43NDEgMTcuMzI5LC0yLjU5MyA1Ljg0LDIuMTUzIDEwLjE3OCw3LjEzOSAxMS41MDEsMTMuMjE4IDE4LjUwMSw4NC45MzIgNS41LDE0MC4zOTEgLTQuMDk0LDE2Ni4yMzEgMjIuNzc4LDE0LjUwMiA2OS4wNDMsNDcuMzU4IDExNi45NDYsMTAxLjMyOCA2MC44MzMsNjguNTQ1IDEzNS43NDUsMTg1LjU3NiAxNDcuMTc1LDM1My44ODIgMTkuMDg5LDI4MS4wNjUgLTExMC45MTgsNDUyLjY1NiAtMTQ4LjA2OSw0OTUuNTYyIDIyLjUyNCw0My4yNDIgMzUuOTI1LDExNC45MTIgMTUuODMsMTg0LjkyNyAtMTcuMjQxLDYwLjA3MyAtNTYuMTk5LDEwNS43MDggLTExMi42NjQsMTMxLjk2OCAtMC4yMzksMC4xMTIgLTAuNDgzLDAuMjIgLTAuNzI4LDAuMzE3IC04MS4xMzQsMzMuNTE4IC0xNzYuODE4LDQ0LjY1NiAtMjY4LjE0Niw0NC42NjEgeiBNIDE1NTIuNzgsMTgzNS42MzMgYyAxNzQuMzMzLDE3MS41MzMgNTQyLjMxLDIyMS45NDMgNTQ2LjAwOCwyMjIuNDMyIDAuNzUsMC4wOTggMS40OTcsMC4yNDkgMi4yMjksMC40MzkgMy42MTMsMC45NDcgMzYzLjU3Nyw5My40OTYgNTg4Ljk2MiwwLjY1NCA0Ny4wNzMsLTIyLjAwMiA3OC4yNDIsLTU4LjYxMyA5Mi42NTEsLTEwOC44MTMgMTguMTUyLC02My4yNDcgNC40MjQsLTEzMi4wNjYgLTE4LjUyMSwtMTY3LjM1NCAtNC42NjgsLTcuMTc4IC0zLjcwNiwtMTYuNjM2IDIuMzEsLTIyLjcyOSAxLjY2LC0xLjY5NCAxNjcuNzE3LC0xNzQuNjE0IDE0Ny4xMTksLTQ3Ny44ODYgLTIwLjQ4MSwtMzAxLjU1OCAtMjU3LjI0NiwtNDMzLjA0MiAtMjU5LjYzNCwtNDM0LjMzMSAtNC4zOTUsLTIuMzc4IC03LjYyOSwtNi40NjUgLTguOTMxLC0xMS4yODkgLTEuMzAyLC00LjgyNCAtMC41NzEsLTkuOTc2IDIuMDMxLC0xNC4yNDMgMC4yLC0wLjM0MiAyNC42LC00My4zMTUgMTIuMjY4LC0xMjguNzIxIC0yMy41OTksMTUuOTkxIC02MC42MTgsMzguODk3IC05Mi4xMjksNDguNzk5IC01Ljg1LDEuODM2IC0xMi4yMzksMC42MSAtMTYuOTg3LC0zLjI3NiAtNC43NTEsLTMuODgyIC03LjIyOSwtOS44OTMgLTYuNTk0LC0xNS45OTEgMC4wNjMsLTAuNjMgNS41NjQsLTU4Ljc4OSAtMTYuNTMzLC0xMjMuNDQ3IC0zMi43NDQsMzAuOTg2IC05OS41OTUsODguMDcxIC0xNTYuODc3LDk3Ljc5OCAtMC41MDUsMC4wODggLTEuMDEzLDAuMTUxIC0xLjUyMSwwLjE5NSBsIC0yNy4xMzQsMi4yNzUgYyAtMjI2LjkyMSwxOS4wMTkgLTQyMi44OTgsMzUuNDQ0IC01MzUuNTY0LDEwOC4zNSAtNjMuNjg0LDQxLjIxMSAtMTE0LjU5MiwxMDcuNzk4IC0xNzAuMjI3LDIyMi42NDcgdiAwIGMgLTEzMi4zNTYsMjczLjIxMyAtNDMuMDU3LDQ5Ni4zNDggLTQyLjE0MSw0OTguNTY5IDMuMjY0LDcuOSAwLjYwMywxNy4wMzEgLTYuNDA5LDIxLjkyNCAtMzQuMjY1LDIzLjg4NyAtNzIuNTk1LDgyLjIwMiAtNzkuNTYzLDE0Ny40MzcgLTMuODM2LDM1LjkyMSAwLjkwNSw4OC43NDggNDUuMTg3LDEzNi41NjEgeiBtIDY2LjUzMSwtODEyLjQzNyBoIDAuMDQ5IHoiCiAgICAgICAgICAgaWQ9InBhdGgxODMiIC8+PC9nPjwvZz48ZwogICAgICAgaWQ9ImcxODciPjxnCiAgICAgICAgIGlkPSJnMTg2Ij48cGF0aAogICAgICAgICAgIHN0eWxlPSJmaWxsOiM2NjAwMDAiCiAgICAgICAgICAgZD0ibSAyNDc0LjQzMSwyMTM1LjYwOCBjIC0xNTQuOTc2LDAgLTM2OS42NjgsLTQwLjc1MiAtMzgxLjIwMSwtNDIuOTY5IC0xNC45MTIsLTIuOTk4IC0zNjIuOTIyLC03My43NSAtNDY4LjAxLC0xNTcuMjk1IC0wLjIwMywtMC4xNjEgLTAuNCwtMC4zMjcgLTAuNTkzLC0wLjQ5MyAtNC42NzgsLTQuMDgyIC0xMTQuMDA2LC0xMDEuNjg1IC02OC4zNzYsLTI1MS43MTQgMC4wOSwtMC4zMDMgMC4xOTMsLTAuNiAwLjMsLTAuODk4IDI0LjQ5NSwtNjYuNzg3IDY0Ljc4OCwtODcuNjU2IDkwLjEwNSwtOTQuMDcyIC0xMy43MTgsLTUyLjkgLTM4LjkxNiwtMjA2LjEzOCA1MC4yNTYsLTQyMC4yNTQgNDcuODk2LC0xMTUgMTUwLjMyLC0xODIuNTI0IDI3NC4zMDQsLTE4MS4wMTEgMTI5LjE0NiwxLjcyNCAyNDYuNjY3LDc1LjcwMyAzMDAuMjAzLDE4Ni41MzggOTAuNjIsLTgyLjAxNyAyMjYuNjI2LC0xMDYuMjU1IDM0Ni41ODIsLTU5LjY2OCAxMTYuMTQ1LDQ1LjEwNyAxODYuMzQzLDE0Ni43ODcgMTg3Ljc3OCwyNzIuMDAyIDIuNjU5LDIzMi4xODMgLTc3Ljk0NCwzNjQuNjQ4IC0xMTAuNDEzLDQwOC40NjcgMjEuMDQ1LDE1LjQ5MyA1MC42MjcsNTAuMDU0IDQ4LjM4MSwxMjEuMjUgLTAuMDEsMC4zMTMgLTAuMDI5LDAuNjMgLTAuMDU2LDAuOTQyIC0xMy43NiwxNTYuMzMzIC0xNTEuNTgsMjA1LjM5MSAtMTU3LjQzOSwyMDcuNDAyIC0wLjI0NCwwLjA4OCAtMC40OTEsMC4xNjYgLTAuNzQsMC4yMzQgLTI4LjMxLDguMjg3IC02Ny4zMzEsMTEuNTM5IC0xMTEuMDgxLDExLjUzOSB6IG0gLTgyNy45MzUsLTIyNi4zMTMgYyA5OS4yNDYsNzguNDE4IDQ0OS42ODgsMTQ5LjYzNCA0NTMuMjIsMTUwLjM0NyAzLjM4NiwwLjY0NSAzNTQuNyw2Ny4zMzkgNDc1LjkzLDMyLjI3NSA4LjMyLC0yLjk3OSAxMjIuNjQ2LC00Ni4yNyAxMzQuNDk3LC0xNzcuOTU5IDIuMzY4LC04MC43NDcgLTQzLjc0LC05OC4yOTEgLTQ1LjcwOCwtOTguOTk5IC01LjMwOCwtMS45MDkgLTkuNDEyLC02LjM5MiAtMTAuNzUsLTExLjg3IC0xLjMzOCwtNS40ODMgMC4wNTEsLTExLjMwNCAzLjg4MiwtMTUuNDQ0IDEuMTUyLC0xLjI2IDExNy42NzEsLTEzMS41NjcgMTE0LjU3OCwtNDAxLjQ4OSAtMS4yODksLTExMi42MjcgLTYxLjkxMiwtMjAwLjQ3OCAtMTY2LjMyMSwtMjQxLjAzIC0xMTUuNDkxLC00NC44NTQgLTI0Ny4yMjcsLTE3LjE0MyAtMzI3LjgwOCw2OC45NTUgLTMuOTUzLDQuMjI5IC05LjgsNi4xMDggLTE1LjQ5MSw1LjAyIC01LjY4MSwtMS4xMDggLTEwLjM5NiwtNS4wNTkgLTEyLjQ3OCwtMTAuNDU5IC00Mi43MjksLTExMC44NTQgLTE1NC45NjYsLTE4Ni40NDUgLTI3OS4yODIsLTE4OC4xMSAtMS4zNzksLTAuMDE1IC0yLjc2NiwtMC4wMjQgLTQuMTM4LC0wLjAyNCAtMTA5LjMxNiwwIC0xOTYuMTUsNTguMjUyIC0yMzguNjY3LDE2MC4zMzcgLTEwMy42ODIsMjQ4Ljk1IC00NC4zNyw0MTMuODMzIC00My43Niw0MTUuNDY5IDIuMDAyLDUuMzUxIDEuMTUsMTEuMzc3IC0yLjI2OCwxNS45NTcgLTMuNDIsNC41OCAtOC44ODIsNy4wOTUgLTE0LjYyNiw2LjczOCAtMS44MjYsLTAuMDU5IC01MS4wNzksLTEuMjc0IC03OS4wMTYsNzQuMzcgLTM4LjE3NiwxMjYuNDE5IDUxLjQwNywyMDkuODE3IDU4LjIwNiwyMTUuOTE2IHoiCiAgICAgICAgICAgaWQ9InBhdGgxODUiIC8+PC9nPjwvZz48ZwogICAgICAgaWQ9ImcxODkiPjxnCiAgICAgICAgIGlkPSJnMTg4Ij48ZWxsaXBzZQogICAgICAgICAgIHRyYW5zZm9ybT0ibWF0cml4KDAuMTkzNiwtMC45ODExLDAuOTgxMSwwLjE5MzYsLTI2Ni4wNjU5LDMyMTQuMzIzNSkiCiAgICAgICAgICAgc3R5bGU9ImZpbGw6I2Y2ODQ3NCIKICAgICAgICAgICBjeD0iMTgyMi4yOCIKICAgICAgICAgICBjeT0iMTc2OS4wMTI5IgogICAgICAgICAgIHJ4PSIzOS41MTEwMDIiCiAgICAgICAgICAgcnk9IjgyLjYyNzk5OCIKICAgICAgICAgICBpZD0iZWxsaXBzZTE4NyIgLz48L2c+PC9nPjxnCiAgICAgICBpZD0iZzE5MSI+PGcKICAgICAgICAgaWQ9ImcxOTAiPjxlbGxpcHNlCiAgICAgICAgICAgdHJhbnNmb3JtPSJtYXRyaXgoMC4xOTM2LC0wLjk4MTEsMC45ODExLDAuMTkzNiwxMTguODc0MSwzOTI5LjI2MzcpIgogICAgICAgICAgIHN0eWxlPSJmaWxsOiNmNjg0NzQiCiAgICAgICAgICAgY3g9IjI0NDkuNjU2IgogICAgICAgICAgIGN5PSIxODkyLjMxOSIKICAgICAgICAgICByeD0iMzkuNTExMDAyIgogICAgICAgICAgIHJ5PSI4Mi42Mjc5OTgiCiAgICAgICAgICAgaWQ9ImVsbGlwc2UxODkiIC8+PC9nPjwvZz48ZwogICAgICAgc3R5bGU9Im9wYWNpdHk6MC4zIgogICAgICAgaWQ9ImcxOTMiPjxnCiAgICAgICAgIGlkPSJnMTkyIj48cGF0aAogICAgICAgICAgIHN0eWxlPSJmaWxsOiM2NjAwMDAiCiAgICAgICAgICAgZD0ibSAxNzUzLjkyNCw4MzYuNzk0IGMgMCwwIDQwNS4wMDcsLTY0LjEyNSA2MTMuMTc4LC0xNTcuMDc4IDAsMCAtNDMwLjkwNiwyMy45OSAtNjEzLjE3OCwxNTcuMDc4IHoiCiAgICAgICAgICAgaWQ9InBhdGgxOTEiIC8+PC9nPjwvZz48L2c+PC9zdmc+Cg==",
"console": false,
"dark": true,
"previewDark": true,
"module": false,
"autorun": true,
"pwa": true,
"preview": true,
"activePanel": "html",
"columns": false,
"columnsRight": true
}