https://senzubeans.github.io/ogdoge/

ID de l'analyse :
c680c982-224e-4db2-8ab0-d987a94fd2e1Terminée
URL soumise :
https://senzubeans.github.io/ogdoge/
Fin du rapport :

Liens : 0 trouvé(s)

Liens sortants identifiés à partir de la page

Variables JavaScript : 8 trouvée(s)

Les variables JavaScript globales chargées dans l'objet fenêtre d'une page sont des variables déclarées en dehors des fonctions et accessibles depuis n'importe quel endroit du code au sein du champ d'application actuel

NomType
onbeforetoggleobject
documentPictureInPictureobject
onscrollendobject
tailwindobject
/template.htmlstring
Reactobject
ReactDOMobject
Babelobject

Messages de journal de console : 5 trouvé(s)

Messages consignés dans la console web

TypeCatégorieEnregistrement
warningother
texte
Error with Permissions-Policy header: Origin trial controlled feature not enabled: 'interest-cohort'.
warningother
URL
https://cdn.tailwindcss.com/
texte
cdn.tailwindcss.com should not be used in production. To use Tailwind CSS in production, install it as a PostCSS plugin or use the Tailwind CLI: https://tailwindcss.com/docs/installation
infoother
URL
https://unpkg.com/react-dom@18/umd/react-dom.development.js
texte
%cDownload the React DevTools for a better development experience: https://reactjs.org/link/react-devtools font-weight:bold
warningother
URL
https://unpkg.com/@babel/standalone/babel.min.js
texte
You are using the in-browser Babel transformer. Be sure to precompile your scripts for production - https://babeljs.io/docs/setup/
errornetwork
URL
https://senzubeans.github.io/favicon.ico
texte
Failed to load resource: the server responded with a status of 404 ()

HTML

Le corps HTML de la page en données brutes

<!DOCTYPE html><html lang="en"><head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>D.O.G.E</title>
    <script src="https://cdn.tailwindcss.com"></script>
    <link rel="stylesheet" href="./styles.css">
    <script>
      tailwind.config = {
        content: ["./**/*.{html,js}"],
        theme: {
          extend: {},
        },
        plugins: [],
      }
    </script>
  <style>*, ::before, ::after{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246 / 0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246 / 0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }/* ! tailwindcss v3.4.15 | MIT License | https://tailwindcss.com */*,::after,::before{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}::after,::before{--tw-content:''}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;font-family:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.fixed{position:fixed}.left-0{left:0px}.right-0{right:0px}.top-0{top:0px}.mx-auto{margin-left:auto;margin-right:auto}.mt-16{margin-top:4rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.flex{display:flex}.min-h-screen{min-height:100vh}.w-11\/12{width:91.666667%}.w-full{width:100%}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-around{justify-content:space-around}.space-x-1 > :not([hidden]) ~ :not([hidden]){--tw-space-x-reverse:0;margin-right:calc(0.25rem * var(--tw-space-x-reverse));margin-left:calc(0.25rem * calc(1 - var(--tw-space-x-reverse)))}.rounded{border-radius:0.25rem}.bg-blue-500{--tw-bg-opacity:1;background-color:rgb(59 130 246 / var(--tw-bg-opacity, 1))}.bg-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.bg-gray-900{--tw-bg-opacity:1;background-color:rgb(17 24 39 / var(--tw-bg-opacity, 1))}.p-4{padding:1rem}.p-8{padding:2rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-2{padding-top:0.5rem;padding-bottom:0.5rem}.py-4{padding-top:1rem;padding-bottom:1rem}.text-center{text-align:center}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:0.875rem;line-height:1.25rem}.font-bold{font-weight:700}.text-red-500{--tw-text-opacity:1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.shadow-lg{--tw-shadow:0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)}@media (min-width: 768px){.md\:w-3\/4{width:75%}.md\:text-base{font-size:1rem;line-height:1.5rem}}</style><script type="module">function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
var {
  useState
} = React;

// Game constants and components
var PHASES = {
  TITLE: "title",
  STORY: "story",
  ENDING: "ending"
};

// Icons components
var TrendingUp = () => /*#__PURE__*/React.createElement("svg", {
  xmlns: "http://www.w3.org/2000/svg",
  width: "16",
  height: "16",
  viewBox: "0 0 24 24",
  fill: "none",
  stroke: "currentColor",
  strokeWidth: "2"
}, /*#__PURE__*/React.createElement("polyline", {
  points: "23 6 13.5 15.5 8.5 10.5 1 18"
}), /*#__PURE__*/React.createElement("polyline", {
  points: "17 6 23 6 23 12"
}));
var Users = () => /*#__PURE__*/React.createElement("svg", {
  xmlns: "http://www.w3.org/2000/svg",
  width: "16",
  height: "16",
  viewBox: "0 0 24 24",
  fill: "none",
  stroke: "currentColor",
  strokeWidth: "2"
}, /*#__PURE__*/React.createElement("path", {
  d: "M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"
}), /*#__PURE__*/React.createElement("circle", {
  cx: "9",
  cy: "7",
  r: "4"
}), /*#__PURE__*/React.createElement("path", {
  d: "M23 21v-2a4 4 0 0 0-3-3.87"
}), /*#__PURE__*/React.createElement("path", {
  d: "M16 3.13a4 4 0 0 1 0 7.75"
}));
var Brain = () => /*#__PURE__*/React.createElement("svg", {
  xmlns: "http://www.w3.org/2000/svg",
  width: "16",
  height: "16",
  viewBox: "0 0 24 24",
  fill: "none",
  stroke: "currentColor",
  strokeWidth: "2"
}, /*#__PURE__*/React.createElement("path", {
  d: "M12 4.5a2.5 2.5 0 0 0-4.96-.46 2.5 2.5 0 0 0-1.98 3 2.5 2.5 0 0 0-1.32 4.24 3 3 0 0 0 .34 5.58 2.5 2.5 0 0 0 2.96 3.08A2.5 2.5 0 0 0 12 19.5a2.5 2.5 0 0 0 4.96.44 2.5 2.5 0 0 0 2.96-3.08 3 3 0 0 0 .34-5.58 2.5 2.5 0 0 0-1.32-4.24 2.5 2.5 0 0 0-1.98-3A2.5 2.5 0 0 0 12 4.5"
}), /*#__PURE__*/React.createElement("path", {
  d: "M12 15v-2"
}), /*#__PURE__*/React.createElement("path", {
  d: "M12 11v-2"
}));
var Star = () => /*#__PURE__*/React.createElement("svg", {
  xmlns: "http://www.w3.org/2000/svg",
  width: "16",
  height: "16",
  viewBox: "0 0 24 24",
  fill: "none",
  stroke: "currentColor",
  strokeWidth: "2"
}, /*#__PURE__*/React.createElement("polygon", {
  points: "12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"
}));
// Game data
var G = {
  scenes: {
    // Introduction Scene
    intro: {
      text: "Welcome to the Department of Government Efficiency (D.O.G.E). Your mission: optimize governance while balancing Elon's innovation and Trump's vision for 'winning'. Where do you start?",
      choices: [{
        text: "Analyze inefficiencies 🔍",
        next: "analyze",
        fx: {
          efficiency: 5
        }
      }, {
        text: "Host a public forum 🗣️",
        next: "public_forum",
        fx: {
          influence: 5
        }
      }, {
        text: "Unleash the Meme Army 🐸",
        next: "meme_army",
        fx: {
          memes: 10
        }
      }, {
        text: "Explore secret archives 📂",
        next: "secret_archives",
        fx: {
          innovation: 5
        }
      }]
    },
    // Path: Analyze Inefficiencies
    analyze: {
      text: "Your analysis reveals outdated systems and redundant processes. What do you do next?",
      choices: [{
        text: "Automate processes with AI 🤖",
        next: "ai_automation",
        fx: {
          efficiency: 10
        }
      }, {
        text: "Form a task force 🚨",
        next: "task_force",
        fx: {
          influence: 5,
          efficiency: 5
        }
      }, {
        text: "Blame it on bureaucracy 🗂️",
        next: "bureaucracy_blame",
        fx: {
          memes: 5
        }
      }]
    },
    ai_automation: {
      text: "AI implementation improves efficiency, but it creates resistance among employees. What's your next step?",
      choices: [{
        text: "Draft ethical AI guidelines 📜",
        next: "ethical_ai",
        fx: {
          influence: 10
        }
      }, {
        text: "Expand AI into other departments 🚀",
        next: "expand_ai",
        fx: {
          efficiency: 20
        }
      }, {
        text: "Create a public AI awareness campaign 📣",
        next: "ai_awareness",
        fx: {
          innovation: 10,
          influence: 5
        }
      }]
    },
    ethical_ai: {
      text: "Your ethical AI guidelines gain global recognition. What's next?",
      choices: [{
        text: "Collaborate with international AI regulators 🌍",
        next: "global_ai",
        fx: {
          influence: 15,
          innovation: 10
        }
      }, {
        text: "Launch an AI innovation hub 🏢",
        next: "ai_hub",
        fx: {
          innovation: 15,
          efficiency: 10
        }
      }]
    },
    global_ai: {
      text: "Your collaboration shapes international AI standards, securing long-term global efficiency.",
      choices: [],
      ending: "AI Diplomat: You redefined the future of ethical AI globally."
    },
    ai_hub: {
      text: "The innovation hub becomes a global leader in cutting-edge AI development.",
      choices: [],
      ending: "Tech Visionary: Your leadership inspired global AI advancements."
    },
    expand_ai: {
      text: "Expanding AI boosts efficiency but sparks debates about automation's impact on jobs. What's next?",
      choices: [{
        text: "Introduce re-skilling programs for workers 👩‍🏫",
        next: "reskill_workers",
        fx: {
          influence: 10,
          efficiency: 5
        }
      }, {
        text: "Focus on AI-human collaboration 🤝",
        next: "ai_collaboration",
        fx: {
          innovation: 10
        }
      }]
    },
    reskill_workers: {
      text: "Re-skilling programs successfully integrate employees into new roles.",
      choices: [],
      ending: "Workforce Advocate: You ensured progress without leaving anyone behind."
    },
    ai_collaboration: {
      text: "AI-human collaboration models become a benchmark for innovative governance.",
      choices: [],
      ending: "Collaboration Architect: You harmonized technology and humanity."
    },
    ai_awareness: {
      text: "Your public awareness campaign gains widespread support. What do you focus on next?",
      choices: [{
        text: "Highlight AI's role in environmental conservation 🌱",
        next: "ai_environment",
        fx: {
          innovation: 10
        }
      }, {
        text: "Showcase AI's potential in healthcare 🏥",
        next: "ai_healthcare",
        fx: {
          innovation: 15
        }
      }]
    },
    ai_environment: {
      text: "AI-powered environmental solutions transform resource management globally.",
      choices: [],
      ending: "Eco-Tech Leader: You pioneered AI-driven sustainability."
    },
    ai_healthcare: {
      text: "AI revolutionizes healthcare, saving countless lives.",
      choices: [],
      ending: "Health Innovator: You transformed public health with AI."
    },
    // Task Force Path
    task_force: {
      text: "The task force uncovers widespread inefficiencies. What's your next step?",
      choices: [{
        text: "Streamline resource allocation 📊",
        next: "streamline_resources",
        fx: {
          efficiency: 15
        }
      }, {
        text: "Collaborate with other government agencies 🤝",
        next: "collaborate_agencies",
        fx: {
          influence: 10,
          efficiency: 5
        }
      }, {
        text: "Seek public input on inefficiencies 📣",
        next: "public_input",
        fx: {
          influence: 15
        }
      }]
    },
    streamline_resources: {
      text: "Streamlining resource allocation improves efficiency across departments. What do you focus on next?",
      choices: [{
        text: "Integrate data-driven decision-making 📊",
        next: "data_driven",
        fx: {
          efficiency: 20,
          innovation: 10
        }
      }, {
        text: "Establish inter-departmental task forces 🚧",
        next: "inter_department",
        fx: {
          influence: 15
        }
      }]
    },
    data_driven: {
      text: "Data-driven decision-making transforms government operations.",
      choices: [],
      ending: "Data Strategist: You brought precision to public administration."
    },
    inter_department: {
      text: "Collaboration between departments breaks silos and enhances productivity.",
      choices: [],
      ending: "Unity Pioneer: You united departments for seamless governance."
    },
    collaborate_agencies: {
      text: "Inter-agency collaboration creates new opportunities. What do you prioritize?",
      choices: [{
        text: "Build a unified government portal 🌐",
        next: "government_portal",
        fx: {
          innovation: 15
        }
      }, {
        text: "Standardize processes across agencies 📋",
        next: "process_standardization",
        fx: {
          efficiency: 15
        }
      }]
    },
    government_portal: {
      text: "The unified portal provides citizens easy access to government services.",
      choices: [],
      ending: "Digital Pioneer: You made governance accessible for all."
    },
    process_standardization: {
      text: "Standardized processes streamline operations nationwide.",
      choices: [],
      ending: "Process Champion: Your reforms set a gold standard."
    },
    public_input: {
      text: "Public input reveals hidden inefficiencies and inspires innovative solutions. What's next?",
      choices: [{
        text: "Crowdsource solutions for critical issues 💡",
        next: "crowdsource_solutions",
        fx: {
          influence: 10,
          innovation: 10
        }
      }, {
        text: "Hold public forums for real-time feedback 📣",
        next: "real_time_feedback",
        fx: {
          influence: 15
        }
      }]
    },
    crowdsource_solutions: {
      text: "Crowdsourced solutions bring fresh ideas to governance.",
      choices: [],
      ending: "Crowdsourcing Pioneer: You empowered citizens to solve problems."
    },
    real_time_feedback: {
      text: "Real-time feedback drives continuous improvement in government services.",
      choices: [],
      ending: "Feedback Leader: You fostered transparency and adaptability."
    },
    // Bureaucracy Blame Path
    bureaucracy_blame: {
      text: "Your humorous blame campaign gains public attention, making governance issues relatable. What's next?",
      choices: [{
        text: "Create a satirical bureaucracy task force 🎭",
        next: "satirical_task_force",
        fx: {
          memes: 15
        }
      }, {
        text: "Engage meme creators to amplify the message 🐸",
        next: "meme_creators",
        fx: {
          memes: 10,
          influence: 5
        }
      }, {
        text: "Turn the campaign into a public documentary 🎥",
        next: "public_documentary",
        fx: {
          influence: 15
        }
      }]
    },
    satirical_task_force: {
      text: "The satirical task force highlights absurd inefficiencies and inspires action.",
      choices: [],
      ending: "Humor Activist: You turned laughter into a catalyst for change."
    },
    meme_creators: {
      text: "Meme creators turn the campaign into a viral sensation, driving reform.",
      choices: [],
      ending: "Meme Mobilizer: You redefined activism with creativity."
    },
    public_documentary: {
      text: "The documentary educates citizens and ignites a wave of grassroots reform movements.",
      choices: [],
      ending: "Grassroots Hero: You empowered citizens to drive change."
    },
    // Public Forum Path
    public_forum: {
      text: "The public eagerly shares ideas to improve governance. What's next?",
      choices: [{
        text: "Form citizen advisory boards 👥",
        next: "advisory_boards",
        fx: {
          influence: 10
        }
      }, {
        text: "Launch transparency dashboards 📊",
        next: "transparency_dashboards",
        fx: {
          innovation: 10
        }
      }, {
        text: "Create meme-based reforms 🐸",
        next: "meme_reforms",
        fx: {
          memes: 10
        }
      }]
    },
    advisory_boards: {
      text: "Citizen advisory boards are formed, providing new ideas and perspectives. What do you do next?",
      choices: [{
        text: "Adopt citizen-driven policies 📜",
        next: "citizen_policies",
        fx: {
          efficiency: 15
        }
      }, {
        text: "Expand advisory boards nationwide 🌍",
        next: "national_boards",
        fx: {
          influence: 15
        }
      }, {
        text: "Host a yearly advisory summit 🏛️",
        next: "advisory_summit",
        fx: {
          innovation: 10,
          influence: 10
        }
      }]
    },
    citizen_policies: {
      text: "Citizen-driven policies transform public trust and government efficiency. What's next?",
      choices: [{
        text: "Create local-level advisory boards 🏡",
        next: "local_boards",
        fx: {
          influence: 10
        }
      }, {
        text: "Integrate policies with technology apps 📱",
        next: "policy_apps",
        fx: {
          innovation: 15
        }
      }]
    },
    local_boards: {
      text: "Local advisory boards foster a sense of community and engagement in governance.",
      choices: [],
      ending: "Community Builder: You brought governance closer to the people."
    },
    policy_apps: {
      text: "Technology apps make citizen policies accessible and actionable.",
      choices: [],
      ending: "Policy Innovator: You combined technology and governance seamlessly."
    },
    national_boards: {
      text: "Nationwide boards inspire public participation on an unprecedented scale.",
      choices: [],
      ending: "Visionary Leader: Your outreach united citizens across the country."
    },
    advisory_summit: {
      text: "The annual summit becomes a hub for innovation and collaboration. What's next?",
      choices: [{
        text: "Partner with international advisory groups 🤝",
        next: "global_partnership",
        fx: {
          influence: 15,
          innovation: 10
        }
      }, {
        text: "Use summit ideas to craft new legislation 📜",
        next: "summit_legislation",
        fx: {
          efficiency: 10
        }
      }]
    },
    global_partnership: {
      text: "Partnerships with global advisory groups spark international reforms.",
      choices: [],
      ending: "Global Reformer: You inspired collaboration beyond borders."
    },
    summit_legislation: {
      text: "New legislation based on summit ideas revolutionizes governance.",
      choices: [],
      ending: "Lawmaker Visionary: You turned ideas into impactful laws."
    },
    // Transparency Dashboards Path
    transparency_dashboards: {
      text: "Transparency dashboards provide real-time access to government data. What's next?",
      choices: [{
        text: "Integrate dashboards with public apps 📱",
        next: "dashboard_apps",
        fx: {
          innovation: 15
        }
      }, {
        text: "Promote dashboards globally 🌍",
        next: "global_dashboards",
        fx: {
          influence: 15
        }
      }, {
        text: "Use dashboards to crowdsource problem-solving 💡",
        next: "crowdsource_dashboards",
        fx: {
          innovation: 10,
          influence: 10
        }
      }]
    },
    dashboard_apps: {
      text: "Apps make dashboards accessible to citizens, empowering them to hold the government accountable.",
      choices: [{
        text: "Develop AI features for the dashboards 🤖",
        next: "ai_dashboards",
        fx: {
          innovation: 15
        }
      }, {
        text: "Focus on rural areas for app adoption 🌾",
        next: "rural_apps",
        fx: {
          influence: 10
        }
      }]
    },
    ai_dashboards: {
      text: "AI-enhanced dashboards predict inefficiencies and provide actionable insights.",
      choices: [],
      ending: "Tech Pioneer: You brought predictive analytics to governance."
    },
    rural_apps: {
      text: "Rural communities adopt apps, fostering inclusive governance.",
      choices: [],
      ending: "Rural Innovator: You made governance accessible to all."
    },
    global_dashboards: {
      text: "Transparency dashboards inspire global reforms in accountability.",
      choices: [],
      ending: "Global Advocate: Your efforts redefined transparency worldwide."
    },
    crowdsource_dashboards: {
      text: "Crowdsourcing through dashboards accelerates problem-solving. What's next?",
      choices: [{
        text: "Expand crowdsourcing to global issues 🌍",
        next: "global_crowdsourcing",
        fx: {
          innovation: 15,
          influence: 10
        }
      }, {
        text: "Use crowdsourcing to innovate public services 🚀",
        next: "public_innovation",
        fx: {
          innovation: 15
        }
      }]
    },
    global_crowdsourcing: {
      text: "Global crowdsourcing addresses critical issues like climate change and poverty.",
      choices: [],
      ending: "Global Problem Solver: You turned governance into a collaborative force."
    },
    public_innovation: {
      text: "Innovations in public services transform government efficiency and citizen satisfaction.",
      choices: [],
      ending: "Service Innovator: You revolutionized public services through collaboration."
    },
    // Meme-Based Reforms Path
    meme_reforms: {
      text: "Your meme-based reforms gain massive traction and public approval. What's next?",
      choices: [{
        text: "Launch a public meme competition 🎉",
        next: "public_meme_competition",
        fx: {
          memes: 15
        }
      }, {
        text: "Develop meme-based educational campaigns 📚",
        next: "educational_memes",
        fx: {
          innovation: 10,
          memes: 5
        }
      }, {
        text: "Create a government meme department 🏢",
        next: "meme_department",
        fx: {
          memes: 15
        }
      }]
    },
    public_meme_competition: {
      text: "The meme competition inspires creativity and civic awareness. What do you do next?",
      choices: [{
        text: "Publish winning memes in a national anthology 📖",
        next: "meme_anthology",
        fx: {
          memes: 10
        }
      }, {
        text: "Use winning memes in public service campaigns 📣",
        next: "service_campaigns",
        fx: {
          influence: 10,
          memes: 10
        }
      }]
    },
    meme_anthology: {
      text: "The anthology becomes a bestseller, highlighting the power of humor.",
      choices: [],
      ending: "Cultural Icon: Your anthology brought humor to the masses."
    },
    service_campaigns: {
      text: "Public service campaigns powered by memes drive engagement and awareness.",
      choices: [],
      ending: "Campaign Mastermind: You used memes to transform civic engagement."
    },
    educational_memes: {
      text: "Educational campaigns using memes improve public understanding of complex policies. What's next?",
      choices: [{
        text: "Introduce meme-based civic courses 📖",
        next: "civic_courses",
        fx: {
          innovation: 10,
          influence: 10
        }
      }, {
        text: "Develop a meme-powered voting initiative 🗳️",
        next: "meme_voting",
        fx: {
          influence: 15
        }
      }]
    },
    civic_courses: {
      text: "Civic courses make education engaging and accessible to all.",
      choices: [],
      ending: "Civic Meme Innovator: You brought humor to civic education."
    },
    meme_voting: {
      text: "Meme-powered voting drives record turnout and strengthens democracy.",
      choices: [],
      ending: "Democracy Defender: You revolutionized elections with creativity."
    },
    meme_department: {
      text: "The meme department becomes a cultural hub for humor-driven reforms.",
      choices: [],
      ending: "Meme Minister: You institutionalized the power of memes in governance."
    },
    // Meme Army Path
    meme_army: {
      text: "Your meme campaign gains massive traction, captivating audiences worldwide. What's next?",
      choices: [{
        text: "Collaborate with influencers 🌟",
        next: "influencer_collab",
        fx: {
          influence: 10,
          memes: 10
        }
      }, {
        text: "Create a Meme DAO 📜",
        next: "create_meme_dao",
        fx: {
          innovation: 10,
          memes: 15
        }
      }, {
        text: "Host a meme competition 🎉",
        next: "meme_competition",
        fx: {
          influence: 5,
          memes: 10
        }
      }]
    },
    influencer_collab: {
      text: "Influencers amplify your message, making your memes a cultural phenomenon. What's next?",
      choices: [{
        text: "Turn memes into merchandise 🛍️",
        next: "meme_merch",
        fx: {
          influence: 10,
          memes: 10
        }
      }, {
        text: "Use memes to educate citizens 📚",
        next: "educational_memes",
        fx: {
          innovation: 10,
          memes: 5
        }
      }, {
        text: "Create meme-powered charity campaigns 💝",
        next: "meme_charity",
        fx: {
          influence: 15,
          memes: 10
        }
      }]
    },
    meme_merch: {
      text: "Merchandise profits fund public projects and spread the meme movement even further. What do you do next?",
      choices: [{
        text: "Invest profits into meme-based schools 🎓",
        next: "meme_schools",
        fx: {
          innovation: 15
        }
      }, {
        text: "Use profits to fund infrastructure upgrades 🏗️",
        next: "meme_infrastructure",
        fx: {
          efficiency: 15
        }
      }]
    },
    meme_schools: {
      text: "Meme-based schools teach humor and critical thinking to the next generation.",
      choices: [],
      ending: "Meme Mentor: You shaped a future where humor and knowledge go hand in hand."
    },
    meme_infrastructure: {
      text: "Infrastructure upgrades funded by memes lead to better roads, faster internet, and happier citizens.",
      choices: [],
      ending: "Infrastructure Icon: You turned memes into a force for physical progress."
    },
    meme_charity: {
      text: "Charity campaigns powered by memes raise unprecedented funds. What's your next step?",
      choices: [{
        text: "Build global charity networks 🌍",
        next: "global_charity",
        fx: {
          influence: 20,
          innovation: 10
        }
      }, {
        text: "Develop tech to gamify charity campaigns 🎮",
        next: "gamify_charity",
        fx: {
          innovation: 15
        }
      }]
    },
    global_charity: {
      text: "Your charity networks improve lives worldwide, building bridges across nations.",
      choices: [],
      ending: "Global Humanitarian: You turned memes into a tool for global good."
    },
    gamify_charity: {
      text: "Gamification of charity campaigns makes giving back fun and engaging.",
      choices: [],
      ending: "Charity Game Changer: You revolutionized philanthropy with innovation."
    },
    // Meme DAO Path
    create_meme_dao: {
      text: "The Meme DAO gains massive support, enabling crowdfunding for reform projects. What's next?",
      choices: [{
        text: "Expand the DAO globally 🌍",
        next: "global_dao",
        fx: {
          influence: 20,
          innovation: 10
        }
      }, {
        text: "Use DAO funds for transparency dashboards 📊",
        next: "dashboard_funding",
        fx: {
          efficiency: 15
        }
      }, {
        text: "Partner DAO with tech companies 🤝",
        next: "tech_partnership",
        fx: {
          innovation: 20
        }
      }]
    },
    global_dao: {
      text: "The global DAO inspires international citizen-led reforms.",
      choices: [],
      ending: "Citizen Diplomat: You created a global movement for change."
    },
    dashboard_funding: {
      text: "DAO funds improve transparency and public accountability.",
      choices: [],
      ending: "Transparency Titan: Your DAO transformed public trust."
    },
    tech_partnership: {
      text: "Partnerships with tech companies revolutionize DAO efficiency.",
      choices: [],
      ending: "Tech Reformer: You pioneered citizen-tech collaboration."
    },
    // Host a Meme Competition
    meme_competition: {
      text: "The competition engages the public and sparks creativity. What's next?",
      choices: [{
        text: "Publish winning memes in a national anthology 📖",
        next: "meme_anthology",
        fx: {
          memes: 10
        }
      }, {
        text: "Use winning memes in public service campaigns 📣",
        next: "service_campaigns",
        fx: {
          influence: 10,
          memes: 10
        }
      }, {
        text: "Turn winning memes into NFTs 🖼️",
        next: "nft_memes",
        fx: {
          innovation: 10,
          memes: 10
        }
      }]
    },
    nft_memes: {
      text: "The NFT collection generates significant revenue for government projects.",
      choices: [],
      ending: "Digital Innovator: You blended art, technology, and reform."
    },
    // Path: Explore Secret Archives
    secret_archives: {
      text: "You uncover classified documents revealing inefficiencies and hidden agendas. What’s your next move?",
      choices: [{
        text: "Expose the truth 🕵️‍♂️",
        next: "expose_truth",
        fx: {
          influence: 15,
          memes: 10
        }
      }, {
        text: "Use secrets for leverage 💼",
        next: "leverage_secrets",
        fx: {
          efficiency: 10,
          influence: 10
        }
      }, {
        text: "Destroy the archives 🔥",
        next: "destroy_archives",
        fx: {
          memes: 5
        }
      }]
    },
    // Option 1: Expose the Truth
    expose_truth: {
      text: "The truth shocks the nation, sparking protests and demands for change. What’s your next move?",
      choices: [{
        text: "Rally citizens for reforms 🗣️",
        next: "citizen_rally",
        fx: {
          influence: 15
        }
      }, {
        text: "Work with investigative journalists 📰",
        next: "journalist_collab",
        fx: {
          influence: 10,
          innovation: 5
        }
      }, {
        text: "Push for emergency government hearings 🏛️",
        next: "gov_hearings",
        fx: {
          influence: 20
        }
      }]
    },
    citizen_rally: {
      text: "Massive citizen rallies lead to legislative reforms and greater transparency. What’s your next step?",
      choices: [{
        text: "Create permanent citizen reform groups 🌟",
        next: "reform_groups",
        fx: {
          influence: 10,
          efficiency: 10
        }
      }, {
        text: "Push for direct democracy initiatives 🗳️",
        next: "direct_democracy",
        fx: {
          innovation: 10
        }
      }]
    },
    reform_groups: {
      text: "Citizen reform groups sustain momentum for change across the nation.",
      choices: [],
      ending: "People’s Advocate: You empowered the public to take control of governance."
    },
    direct_democracy: {
      text: "Direct democracy initiatives give citizens a more active role in government decisions.",
      choices: [],
      ending: "Democracy Architect: You redefined governance by giving power to the people."
    },
    journalist_collab: {
      text: "Investigative reports reveal deeper issues, accelerating systemic reforms. What’s next?",
      choices: [{
        text: "Focus on judicial reforms ⚖️",
        next: "judicial_reforms",
        fx: {
          efficiency: 10
        }
      }, {
        text: "Develop whistleblower protection laws 🛡️",
        next: "whistleblower_laws",
        fx: {
          influence: 15
        }
      }]
    },
    judicial_reforms: {
      text: "Judicial reforms enhance accountability and fairness in governance.",
      choices: [],
      ending: "Justice Champion: Your reforms restored trust in the system."
    },
    whistleblower_laws: {
      text: "Whistleblower protections encourage more revelations, leading to continued improvements.",
      choices: [],
      ending: "Guardian of Truth: Your policies ensured transparency for the future."
    },
    gov_hearings: {
      text: "Emergency hearings uncover corruption, resulting in high-profile resignations. What’s your next move?",
      choices: [{
        text: "Appoint new ethical leaders 🌟",
        next: "ethical_leaders",
        fx: {
          influence: 15
        }
      }, {
        text: "Pass anti-corruption legislation 📜",
        next: "anti_corruption",
        fx: {
          efficiency: 15
        }
      }]
    },
    ethical_leaders: {
      text: "New leaders bring a fresh perspective and earn public trust.",
      choices: [],
      ending: "Leadership Revitalizer: You redefined leadership in governance."
    },
    anti_corruption: {
      text: "Anti-corruption laws create a cleaner, more efficient government.",
      choices: [],
      ending: "Corruption Fighter: Your efforts rooted out systemic inefficiencies."
    },
    // Option 2: Use Secrets for Leverage
    leverage_secrets: {
      text: "Strategic use of secrets ensures quick policy changes in your favor. What’s next?",
      choices: [{
        text: "Secure funding for reforms 💰",
        next: "funding_reforms",
        fx: {
          efficiency: 15,
          influence: 10
        }
      }, {
        text: "Forge alliances with key figures 🤝",
        next: "key_alliances",
        fx: {
          influence: 10
        }
      }, {
        text: "Launch covert reform projects 🛠️",
        next: "covert_projects",
        fx: {
          efficiency: 10
        }
      }]
    },
    funding_reforms: {
      text: "Secured funding accelerates efficiency and innovation across departments. What’s next?",
      choices: [{
        text: "Establish oversight committees 📋",
        next: "oversight_committees",
        fx: {
          influence: 10
        }
      }, {
        text: "Modernize government infrastructure 🏗️",
        next: "modern_infra",
        fx: {
          efficiency: 15
        }
      }]
    },
    oversight_committees: {
      text: "Oversight committees ensure reforms are implemented effectively.",
      choices: [],
      ending: "Accountability Advocate: Your vigilance ensured long-term success."
    },
    modern_infra: {
      text: "Modern infrastructure streamlines operations and improves efficiency.",
      choices: [],
      ending: "Efficiency Champion: Your efforts brought governance into the modern era."
    },
    key_alliances: {
      text: "Key alliances with influential figures advance your reform agenda.",
      choices: [],
      ending: "Power Broker: You built alliances to drive meaningful change."
    },
    covert_projects: {
      text: "Covert projects address inefficiencies without attracting public backlash.",
      choices: [],
      ending: "Stealth Reformer: You achieved success behind the scenes."
    },
    // Option 3: Destroy the Archives
    destroy_archives: {
      text: "You destroy the archives, ensuring no one can misuse the sensitive information. What’s your next step?",
      choices: [{
        text: "Work quietly on reforms 🛠️",
        next: "quiet_reforms",
        fx: {
          efficiency: 10
        }
      }, {
        text: "Focus on restoring public trust 🤝",
        next: "restore_trust",
        fx: {
          influence: 10
        }
      }, {
        text: "Create a citizen watchdog group 👀",
        next: "watchdog_group",
        fx: {
          influence: 15
        }
      }]
    },
    quiet_reforms: {
      text: "Quiet but effective reforms eliminate inefficiencies without public uproar.",
      choices: [{
        text: "Increase automation in departments 🤖",
        next: "automation_reforms",
        fx: {
          efficiency: 15
        }
      }, {
        text: "Focus on rural areas for reform outreach 🌾",
        next: "rural_reforms",
        fx: {
          influence: 10
        }
      }]
    },
    automation_reforms: {
      text: "Automation reforms reduce bureaucracy and improve efficiency.",
      choices: [],
      ending: "Automation Advocate: You streamlined governance through technology."
    },
    rural_reforms: {
      text: "Reforms bring modern governance to rural communities, empowering citizens.",
      choices: [],
      ending: "Rural Champion: You brought inclusive governance to underserved areas."
    },
    restore_trust: {
      text: "Restoring trust brings renewed hope and support for the government. What’s your next focus?",
      choices: [{
        text: "Engage citizens in policy-making 📜",
        next: "citizen_engagement",
        fx: {
          influence: 10
        }
      }, {
        text: "Strengthen media transparency 📰",
        next: "media_transparency",
        fx: {
          influence: 15
        }
      }]
    },
    citizen_engagement: {
      text: "Citizens become active participants in policy-making, enhancing trust.",
      choices: [],
      ending: "Trust Builder: You empowered citizens to shape their government."
    },
    media_transparency: {
      text: "Transparent media fosters accountability and public awareness.",
      choices: [],
      ending: "Media Ally: You ensured the free flow of truthful information."
    },
    watchdog_group: {
      text: "The watchdog group monitors government actions, ensuring accountability.",
      choices: [],
      ending: "Sentinel of Integrity: Your efforts created a culture of vigilance."
    }
  }
};

// Initial game state
var initialState = {
  phase: PHASES.TITLE,
  scene: "intro",
  stats: {
    efficiency: 0,
    influence: 0,
    innovation: 0,
    memes: 0
  },
  path: [],
  ending: null
};
// Footer Component
function Footer() {
  return /*#__PURE__*/React.createElement("footer", {
    className: "bg-gray-900 text-white py-4 mt-4 text-center w-full"
  }, /*#__PURE__*/React.createElement("p", null, "Made with ", /*#__PURE__*/React.createElement("span", {
    className: "text-red-500"
  }, "\u2764"), " by the OG D.O.G.E. Community"), /*#__PURE__*/React.createElement("p", null, "OG Doge CA: A5WzrfzWa4kjgEjSXCbnsn1xy5Aanuq3TCZJL1dhpump"));
}

// Main App Component
function App() {
  var [state, setState] = React.useState(initialState);
  var handleChoice = choice => {
    var nextScene = G.scenes[choice.next];
    if (!nextScene) return;
    var newStats = _objectSpread({}, state.stats);
    Object.keys(choice.fx || {}).forEach(key => {
      newStats[key] += choice.fx[key];
    });
    var isEnding = !nextScene.choices || nextScene.choices.length === 0;
    setState(prev => _objectSpread(_objectSpread({}, prev), {}, {
      scene: choice.next,
      stats: newStats,
      path: [...prev.path, choice.next],
      phase: isEnding ? PHASES.ENDING : PHASES.STORY,
      ending: isEnding ? nextScene.ending : null
    }));
  };
  var resetGame = () => setState(initialState);
  return /*#__PURE__*/React.createElement("div", {
    className: "bg-gradient-custom min-h-screen flex flex-col justify-between"
  }, /*#__PURE__*/React.createElement("div", {
    className: "fixed top-0 left-0 right-0 bg-gray-900 text-white p-4 shadow-md flex justify-around text-sm md:text-base"
  }, /*#__PURE__*/React.createElement("div", {
    className: "flex items-center space-x-1"
  }, /*#__PURE__*/React.createElement(TrendingUp, null), " ", /*#__PURE__*/React.createElement("span", null, "Efficiency: ", state.stats.efficiency)), /*#__PURE__*/React.createElement("div", {
    className: "flex items-center space-x-1"
  }, /*#__PURE__*/React.createElement(Users, null), " ", /*#__PURE__*/React.createElement("span", null, "Influence: ", state.stats.influence)), /*#__PURE__*/React.createElement("div", {
    className: "flex items-center space-x-1"
  }, /*#__PURE__*/React.createElement(Brain, null), " ", /*#__PURE__*/React.createElement("span", null, "Innovation: ", state.stats.innovation)), /*#__PURE__*/React.createElement("div", {
    className: "flex items-center space-x-1"
  }, /*#__PURE__*/React.createElement(Star, null), " ", /*#__PURE__*/React.createElement("span", null, "Memes: ", state.stats.memes))), /*#__PURE__*/React.createElement("div", {
    className: "p-8 bg-gray-800 rounded shadow-lg text-center w-11/12 md:w-3/4 mt-16 mx-auto"
  }, state.phase === PHASES.TITLE ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("h1", {
    className: "text-4xl font-bold"
  }, "D.O.G.E"), /*#__PURE__*/React.createElement("p", {
    className: "mt-4 text-lg"
  }, "Department Of Government Efficiency"), /*#__PURE__*/React.createElement("button", {
    className: "mt-6 px-6 py-2 bg-blue-500 text-white rounded",
    onClick: () => setState(_objectSpread(_objectSpread({}, state), {}, {
      phase: PHASES.STORY
    }))
  }, "Start")) : state.phase === PHASES.ENDING ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("h1", {
    className: "text-3xl font-bold"
  }, "Ending"), /*#__PURE__*/React.createElement("p", {
    className: "mt-4"
  }, G.scenes[state.scene].text), /*#__PURE__*/React.createElement("p", {
    className: "mt-4 text-lg font-semibold"
  }, state.ending), /*#__PURE__*/React.createElement("button", {
    className: "mt-6 px-6 py-2 bg-green-500 text-white rounded",
    onClick: resetGame
  }, "Replay")) : /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("p", {
    className: "text-lg mb-6"
  }, G.scenes[state.scene].text), G.scenes[state.scene].choices.map((choice, i) => /*#__PURE__*/React.createElement("button", {
    key: i,
    className: "block w-full px-4 py-2 bg-gray-700 hover:bg-gray-600 text-left text-white rounded mb-2 transition-colors",
    onClick: () => handleChoice(choice)
  }, choice.text)))), /*#__PURE__*/React.createElement(Footer, null));
}

// Mount the app
var root = ReactDOM.createRoot(document.getElementById('root'));
root.render(/*#__PURE__*/React.createElement(App, null));
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VTdGF0ZSIsIlJlYWN0IiwiUEhBU0VTIiwiVElUTEUiLCJTVE9SWSIsIkVORElORyIsIlRyZW5kaW5nVXAiLCJjcmVhdGVFbGVtZW50IiwieG1sbnMiLCJ3aWR0aCIsImhlaWdodCIsInZpZXdCb3giLCJmaWxsIiwic3Ryb2tlIiwic3Ryb2tlV2lkdGgiLCJwb2ludHMiLCJVc2VycyIsImQiLCJjeCIsImN5IiwiciIsIkJyYWluIiwiU3RhciIsIkciLCJzY2VuZXMiLCJpbnRybyIsInRleHQiLCJjaG9pY2VzIiwibmV4dCIsImZ4IiwiZWZmaWNpZW5jeSIsImluZmx1ZW5jZSIsIm1lbWVzIiwiaW5ub3ZhdGlvbiIsImFuYWx5emUiLCJhaV9hdXRvbWF0aW9uIiwiZXRoaWNhbF9haSIsImdsb2JhbF9haSIsImVuZGluZyIsImFpX2h1YiIsImV4cGFuZF9haSIsInJlc2tpbGxfd29ya2VycyIsImFpX2NvbGxhYm9yYXRpb24iLCJhaV9hd2FyZW5lc3MiLCJhaV9lbnZpcm9ubWVudCIsImFpX2hlYWx0aGNhcmUiLCJ0YXNrX2ZvcmNlIiwic3RyZWFtbGluZV9yZXNvdXJjZXMiLCJkYXRhX2RyaXZlbiIsImludGVyX2RlcGFydG1lbnQiLCJjb2xsYWJvcmF0ZV9hZ2VuY2llcyIsImdvdmVybm1lbnRfcG9ydGFsIiwicHJvY2Vzc19zdGFuZGFyZGl6YXRpb24iLCJwdWJsaWNfaW5wdXQiLCJjcm93ZHNvdXJjZV9zb2x1dGlvbnMiLCJyZWFsX3RpbWVfZmVlZGJhY2siLCJidXJlYXVjcmFjeV9ibGFtZSIsInNhdGlyaWNhbF90YXNrX2ZvcmNlIiwibWVtZV9jcmVhdG9ycyIsInB1YmxpY19kb2N1bWVudGFyeSIsInB1YmxpY19mb3J1bSIsImFkdmlzb3J5X2JvYXJkcyIsImNpdGl6ZW5fcG9saWNpZXMiLCJsb2NhbF9ib2FyZHMiLCJwb2xpY3lfYXBwcyIsIm5hdGlvbmFsX2JvYXJkcyIsImFkdmlzb3J5X3N1bW1pdCIsImdsb2JhbF9wYXJ0bmVyc2hpcCIsInN1bW1pdF9sZWdpc2xhdGlvbiIsInRyYW5zcGFyZW5jeV9kYXNoYm9hcmRzIiwiZGFzaGJvYXJkX2FwcHMiLCJhaV9kYXNoYm9hcmRzIiwicnVyYWxfYXBwcyIsImdsb2JhbF9kYXNoYm9hcmRzIiwiY3Jvd2Rzb3VyY2VfZGFzaGJvYXJkcyIsImdsb2JhbF9jcm93ZHNvdXJjaW5nIiwicHVibGljX2lubm92YXRpb24iLCJtZW1lX3JlZm9ybXMiLCJwdWJsaWNfbWVtZV9jb21wZXRpdGlvbiIsIm1lbWVfYW50aG9sb2d5Iiwic2VydmljZV9jYW1wYWlnbnMiLCJlZHVjYXRpb25hbF9tZW1lcyIsImNpdmljX2NvdXJzZXMiLCJtZW1lX3ZvdGluZyIsIm1lbWVfZGVwYXJ0bWVudCIsIm1lbWVfYXJteSIsImluZmx1ZW5jZXJfY29sbGFiIiwibWVtZV9tZXJjaCIsIm1lbWVfc2Nob29scyIsIm1lbWVfaW5mcmFzdHJ1Y3R1cmUiLCJtZW1lX2NoYXJpdHkiLCJnbG9iYWxfY2hhcml0eSIsImdhbWlmeV9jaGFyaXR5IiwiY3JlYXRlX21lbWVfZGFvIiwiZ2xvYmFsX2RhbyIsImRhc2hib2FyZF9mdW5kaW5nIiwidGVjaF9wYXJ0bmVyc2hpcCIsIm1lbWVfY29tcGV0aXRpb24iLCJuZnRfbWVtZXMiLCJzZWNyZXRfYXJjaGl2ZXMiLCJleHBvc2VfdHJ1dGgiLCJjaXRpemVuX3JhbGx5IiwicmVmb3JtX2dyb3VwcyIsImRpcmVjdF9kZW1vY3JhY3kiLCJqb3VybmFsaXN0X2NvbGxhYiIsImp1ZGljaWFsX3JlZm9ybXMiLCJ3aGlzdGxlYmxvd2VyX2xhd3MiLCJnb3ZfaGVhcmluZ3MiLCJldGhpY2FsX2xlYWRlcnMiLCJhbnRpX2NvcnJ1cHRpb24iLCJsZXZlcmFnZV9zZWNyZXRzIiwiZnVuZGluZ19yZWZvcm1zIiwib3ZlcnNpZ2h0X2NvbW1pdHRlZXMiLCJtb2Rlcm5faW5mcmEiLCJrZXlfYWxsaWFuY2VzIiwiY292ZXJ0X3Byb2plY3RzIiwiZGVzdHJveV9hcmNoaXZlcyIsInF1aWV0X3JlZm9ybXMiLCJhdXRvbWF0aW9uX3JlZm9ybXMiLCJydXJhbF9yZWZvcm1zIiwicmVzdG9yZV90cnVzdCIsImNpdGl6ZW5fZW5nYWdlbWVudCIsIm1lZGlhX3RyYW5zcGFyZW5jeSIsIndhdGNoZG9nX2dyb3VwIiwiaW5pdGlhbFN0YXRlIiwicGhhc2UiLCJzY2VuZSIsInN0YXRzIiwicGF0aCIsIkZvb3RlciIsImNsYXNzTmFtZSIsIkFwcCIsInN0YXRlIiwic2V0U3RhdGUiLCJoYW5kbGVDaG9pY2UiLCJjaG9pY2UiLCJuZXh0U2NlbmUiLCJuZXdTdGF0cyIsIl9vYmplY3RTcHJlYWQiLCJPYmplY3QiLCJrZXlzIiwiZm9yRWFjaCIsImtleSIsImlzRW5kaW5nIiwibGVuZ3RoIiwicHJldiIsInJlc2V0R2FtZSIsIkZyYWdtZW50Iiwib25DbGljayIsIm1hcCIsImkiLCJyb290IiwiUmVhY3RET00iLCJjcmVhdGVSb290IiwiZG9jdW1lbnQiLCJnZXRFbGVtZW50QnlJZCIsInJlbmRlciJdLCJzb3VyY2VzIjpbIklubGluZSBCYWJlbCBzY3JpcHQiXSwic291cmNlc0NvbnRlbnQiOlsiXG4gICAgICBjb25zdCB7IHVzZVN0YXRlIH0gPSBSZWFjdDtcbiAgICAgIFxuICAgICAgLy8gR2FtZSBjb25zdGFudHMgYW5kIGNvbXBvbmVudHNcbiAgICAgIGNvbnN0IFBIQVNFUyA9IHtcbiAgICAgICAgVElUTEU6IFwidGl0bGVcIixcbiAgICAgICAgU1RPUlk6IFwic3RvcnlcIixcbiAgICAgICAgRU5ESU5HOiBcImVuZGluZ1wiLFxuICAgICAgfTtcblxuICAgICAgLy8gSWNvbnMgY29tcG9uZW50c1xuICAgICAgY29uc3QgVHJlbmRpbmdVcCA9ICgpID0+IChcbiAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlV2lkdGg9XCIyXCI+XG4gICAgICAgICAgPHBvbHlsaW5lIHBvaW50cz1cIjIzIDYgMTMuNSAxNS41IDguNSAxMC41IDEgMThcIi8+XG4gICAgICAgICAgPHBvbHlsaW5lIHBvaW50cz1cIjE3IDYgMjMgNiAyMyAxMlwiLz5cbiAgICAgICAgPC9zdmc+XG4gICAgICApO1xuXG4gICAgICBjb25zdCBVc2VycyA9ICgpID0+IChcbiAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlV2lkdGg9XCIyXCI+XG4gICAgICAgICAgPHBhdGggZD1cIk0xNyAyMXYtMmE0IDQgMCAwIDAtNC00SDVhNCA0IDAgMCAwLTQgNHYyXCIvPlxuICAgICAgICAgIDxjaXJjbGUgY3g9XCI5XCIgY3k9XCI3XCIgcj1cIjRcIi8+XG4gICAgICAgICAgPHBhdGggZD1cIk0yMyAyMXYtMmE0IDQgMCAwIDAtMy0zLjg3XCIvPlxuICAgICAgICAgIDxwYXRoIGQ9XCJNMTYgMy4xM2E0IDQgMCAwIDEgMCA3Ljc1XCIvPlxuICAgICAgICA8L3N2Zz5cbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IEJyYWluID0gKCkgPT4gKFxuICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2VXaWR0aD1cIjJcIj5cbiAgICAgICAgICA8cGF0aCBkPVwiTTEyIDQuNWEyLjUgMi41IDAgMCAwLTQuOTYtLjQ2IDIuNSAyLjUgMCAwIDAtMS45OCAzIDIuNSAyLjUgMCAwIDAtMS4zMiA0LjI0IDMgMyAwIDAgMCAuMzQgNS41OCAyLjUgMi41IDAgMCAwIDIuOTYgMy4wOEEyLjUgMi41IDAgMCAwIDEyIDE5LjVhMi41IDIuNSAwIDAgMCA0Ljk2LjQ0IDIuNSAyLjUgMCAwIDAgMi45Ni0zLjA4IDMgMyAwIDAgMCAuMzQtNS41OCAyLjUgMi41IDAgMCAwLTEuMzItNC4yNCAyLjUgMi41IDAgMCAwLTEuOTgtM0EyLjUgMi41IDAgMCAwIDEyIDQuNVwiLz5cbiAgICAgICAgICA8cGF0aCBkPVwiTTEyIDE1di0yXCIvPlxuICAgICAgICAgIDxwYXRoIGQ9XCJNMTIgMTF2LTJcIi8+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgKTtcblxuICAgICAgY29uc3QgU3RhciA9ICgpID0+IChcbiAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlV2lkdGg9XCIyXCI+XG4gICAgICAgICAgPHBvbHlnb24gcG9pbnRzPVwiMTIgMiAxNS4wOSA4LjI2IDIyIDkuMjcgMTcgMTQuMTQgMTguMTggMjEuMDIgMTIgMTcuNzcgNS44MiAyMS4wMiA3IDE0LjE0IDIgOS4yNyA4LjkxIDguMjYgMTIgMlwiLz5cbiAgICAgICAgPC9zdmc+XG4gICAgICApO1xuLy8gR2FtZSBkYXRhXG4gICAgICBjb25zdCBHID0ge1xuICAgICAgICBzY2VuZXM6IHtcbiAgICAvLyBJbnRyb2R1Y3Rpb24gU2NlbmVcbiAgICAgICAgICBpbnRybzoge1xuICAgICAgICAgICAgdGV4dDogXCJXZWxjb21lIHRvIHRoZSBEZXBhcnRtZW50IG9mIEdvdmVybm1lbnQgRWZmaWNpZW5jeSAoRC5PLkcuRSkuIFlvdXIgbWlzc2lvbjogb3B0aW1pemUgZ292ZXJuYW5jZSB3aGlsZSBiYWxhbmNpbmcgRWxvbidzIGlubm92YXRpb24gYW5kIFRydW1wJ3MgdmlzaW9uIGZvciAnd2lubmluZycuIFdoZXJlIGRvIHlvdSBzdGFydD9cIixcbiAgICAgICAgICAgIGNob2ljZXM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRleHQ6IFwiQW5hbHl6ZSBpbmVmZmljaWVuY2llcyDwn5SNXCIsXG4gICAgICAgICAgICAgICAgbmV4dDogXCJhbmFseXplXCIsXG4gICAgICAgICAgICAgICAgZng6IHsgZWZmaWNpZW5jeTogNSB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGV4dDogXCJIb3N0IGEgcHVibGljIGZvcnVtIPCfl6PvuI9cIixcbiAgICAgICAgICAgICAgICBuZXh0OiBcInB1YmxpY19mb3J1bVwiLFxuICAgICAgICAgICAgICAgIGZ4OiB7IGluZmx1ZW5jZTogNSB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGV4dDogXCJVbmxlYXNoIHRoZSBNZW1lIEFybXkg8J+QuFwiLFxuICAgICAgICAgICAgICAgIG5leHQ6IFwibWVtZV9hcm15XCIsXG4gICAgICAgICAgICAgICAgZng6IHsgbWVtZXM6IDEwIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0ZXh0OiBcIkV4cGxvcmUgc2VjcmV0IGFyY2hpdmVzIPCfk4JcIixcbiAgICAgICAgICAgICAgICBuZXh0OiBcInNlY3JldF9hcmNoaXZlc1wiLFxuICAgICAgICAgICAgICAgIGZ4OiB7IGlubm92YXRpb246IDUgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICAvLyBQYXRoOiBBbmFseXplIEluZWZmaWNpZW5jaWVzXG4gICAgICAgICAgYW5hbHl6ZToge1xuICAgICAgICAgICAgdGV4dDogXCJZb3VyIGFuYWx5c2lzIHJldmVhbHMgb3V0ZGF0ZWQgc3lzdGVtcyBhbmQgcmVkdW5kYW50IHByb2Nlc3Nlcy4gV2hhdCBkbyB5b3UgZG8gbmV4dD9cIixcbiAgICAgICAgICAgIGNob2ljZXM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRleHQ6IFwiQXV0b21hdGUgcHJvY2Vzc2VzIHdpdGggQUkg8J+kllwiLFxuICAgICAgICAgICAgICAgIG5leHQ6IFwiYWlfYXV0b21hdGlvblwiLFxuICAgICAgICAgICAgICAgIGZ4OiB7IGVmZmljaWVuY3k6IDEwIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0ZXh0OiBcIkZvcm0gYSB0YXNrIGZvcmNlIPCfmqhcIixcbiAgICAgICAgICAgICAgICBuZXh0OiBcInRhc2tfZm9yY2VcIixcbiAgICAgICAgICAgICAgICBmeDogeyBpbmZsdWVuY2U6IDUsIGVmZmljaWVuY3k6IDUgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRleHQ6IFwiQmxhbWUgaXQgb24gYnVyZWF1Y3JhY3kg8J+Xgu+4j1wiLFxuICAgICAgICAgICAgICAgIG5leHQ6IFwiYnVyZWF1Y3JhY3lfYmxhbWVcIixcbiAgICAgICAgICAgICAgICBmeDogeyBtZW1lczogNSB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGFpX2F1dG9tYXRpb246IHtcbiAgICAgICAgICAgIHRleHQ6IFwiQUkgaW1wbGVtZW50YXRpb24gaW1wcm92ZXMgZWZmaWNpZW5jeSwgYnV0IGl0IGNyZWF0ZXMgcmVzaXN0YW5jZSBhbW9uZyBlbXBsb3llZXMuIFdoYXQncyB5b3VyIG5leHQgc3RlcD9cIixcbiAgICAgICAgICAgIGNob2ljZXM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRleHQ6IFwiRHJhZnQgZXRoaWNhbCBBSSBndWlkZWxpbmVzIPCfk5xcIixcbiAgICAgICAgICAgICAgICBuZXh0OiBcImV0aGljYWxfYWlcIixcbiAgICAgICAgICAgICAgICBmeDogeyBpbmZsdWVuY2U6IDEwIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0ZXh0OiBcIkV4cGFuZCBBSSBpbnRvIG90aGVyIGRlcGFydG1lbnRzIPCfmoBcIixcbiAgICAgICAgICAgICAgICBuZXh0OiBcImV4cGFuZF9haVwiLFxuICAgICAgICAgICAgICAgIGZ4OiB7IGVmZmljaWVuY3k6IDIwIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0ZXh0OiBcIkNyZWF0ZSBhIHB1YmxpYyBBSSBhd2FyZW5lc3MgY2FtcGFpZ24g8J+To1wiLFxuICAgICAgICAgICAgICAgIG5leHQ6IFwiYWlfYXdhcmVuZXNzXCIsXG4gICAgICAgICAgICAgICAgZng6IHsgaW5ub3ZhdGlvbjogMTAsIGluZmx1ZW5jZTogNSB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGV0aGljYWxfYWk6IHtcbiAgICAgICAgICAgIHRleHQ6IFwiWW91ciBldGhpY2FsIEFJIGd1aWRlbGluZXMgZ2FpbiBnbG9iYWwgcmVjb2duaXRpb24uIFdoYXQncyBuZXh0P1wiLFxuICAgICAgICAgICAgY2hvaWNlczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGV4dDogXCJDb2xsYWJvcmF0ZSB3aXRoIGludGVybmF0aW9uYWwgQUkgcmVndWxhdG9ycyDwn4yNXCIsXG4gICAgICAgICAgICAgICAgbmV4dDogXCJnbG9iYWxfYWlcIixcbiAgICAgICAgICAgICAgICBmeDogeyBpbmZsdWVuY2U6IDE1LCBpbm5vdmF0aW9uOiAxMCB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGV4dDogXCJMYXVuY2ggYW4gQUkgaW5ub3ZhdGlvbiBodWIg8J+PolwiLFxuICAgICAgICAgICAgICAgIG5leHQ6IFwiYWlfaHViXCIsXG4gICAgICAgICAgICAgICAgZng6IHsgaW5ub3ZhdGlvbjogMTUsIGVmZmljaWVuY3k6IDEwIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgZ2xvYmFsX2FpOiB7XG4gICAgICAgICAgICB0ZXh0OiBcIllvdXIgY29sbGFib3JhdGlvbiBzaGFwZXMgaW50ZXJuYXRpb25hbCBBSSBzdGFuZGFyZHMsIHNlY3VyaW5nIGxvbmctdGVybSBnbG9iYWwgZWZmaWNpZW5jeS5cIixcbiAgICAgICAgICAgIGNob2ljZXM6IFtdLFxuICAgICAgICAgICAgZW5kaW5nOiBcIkFJIERpcGxvbWF0OiBZb3UgcmVkZWZpbmVkIHRoZSBmdXR1cmUgb2YgZXRoaWNhbCBBSSBnbG9iYWxseS5cIixcbiAgICAgICAgICB9LFxuICAgICAgICAgIGFpX2h1Yjoge1xuICAgICAgICAgICAgdGV4dDogXCJUaGUgaW5ub3ZhdGlvbiBodWIgYmVjb21lcyBhIGdsb2JhbCBsZWFkZXIgaW4gY3V0dGluZy1lZGdlIEFJIGRldmVsb3BtZW50LlwiLFxuICAgICAgICAgICAgY2hvaWNlczogW10sXG4gICAgICAgICAgICBlbmRpbmc6IFwiVGVjaCBWaXNpb25hcnk6IFlvdXIgbGVhZGVyc2hpcCBpbnNwaXJlZCBnbG9iYWwgQUkgYWR2YW5jZW1lbnRzLlwiLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgZXhwYW5kX2FpOiB7XG4gICAgICAgICAgICB0ZXh0OiBcIkV4cGFuZGluZyBBSSBib29zdHMgZWZmaWNpZW5jeSBidXQgc3BhcmtzIGRlYmF0ZXMgYWJvdXQgYXV0b21hdGlvbidzIGltcGFjdCBvbiBqb2JzLiBXaGF0J3MgbmV4dD9cIixcbiAgICAgICAgICAgIGNob2ljZXM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRleHQ6IFwiSW50cm9kdWNlIHJlLXNraWxsaW5nIHByb2dyYW1zIGZvciB3b3JrZXJzIPCfkanigI3wn4+rXCIsXG4gICAgICAgICAgICAgICAgbmV4dDogXCJyZXNraWxsX3dvcmtlcnNcIixcbiAgICAgICAgICAgICAgICBmeDogeyBpbmZsdWVuY2U6IDEwLCBlZmZpY2llbmN5OiA1IH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0ZXh0OiBcIkZvY3VzIG9uIEFJLWh1bWFuIGNvbGxhYm9yYXRpb24g8J+knVwiLFxuICAgICAgICAgICAgICAgIG5leHQ6IFwiYWlfY29sbGFib3JhdGlvblwiLFxuICAgICAgICAgICAgICAgIGZ4OiB7IGlubm92YXRpb246IDEwIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVza2lsbF93b3JrZXJzOiB7XG4gICAgICAgICAgICB0ZXh0OiBcIlJlLXNraWxsaW5nIHByb2dyYW1zIHN1Y2Nlc3NmdWxseSBpbnRlZ3JhdGUgZW1wbG95ZWVzIGludG8gbmV3IHJvbGVzLlwiLFxuICAgICAgICAgICAgY2hvaWNlczogW10sXG4gICAgICAgICAgICBlbmRpbmc6IFwiV29ya2ZvcmNlIEFkdm9jYXRlOiBZb3UgZW5zdXJlZCBwcm9ncmVzcyB3aXRob3V0IGxlYXZpbmcgYW55b25lIGJlaGluZC5cIixcbiAgICAgICAgICB9LFxuICAgICAgICAgIGFpX2NvbGxhYm9yYXRpb246IHtcbiAgICAgICAgICAgIHRleHQ6IFwiQUktaHVtYW4gY29sbGFib3JhdGlvbiBtb2RlbHMgYmVjb21lIGEgYmVuY2htYXJrIGZvciBpbm5vdmF0aXZlIGdvdmVybmFuY2UuXCIsXG4gICAgICAgICAgICBjaG9pY2VzOiBbXSxcbiAgICAgICAgICAgIGVuZGluZzogXCJDb2xsYWJvcmF0aW9uIEFyY2hpdGVjdDogWW91IGhhcm1vbml6ZWQgdGVjaG5vbG9neSBhbmQgaHVtYW5pdHkuXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBhaV9hd2FyZW5lc3M6IHtcbiAgICAgICAgICAgIHRleHQ6IFwiWW91ciBwdWJsaWMgYXdhcmVuZXNzIGNhbXBhaWduIGdhaW5zIHdpZGVzcHJlYWQgc3VwcG9ydC4gV2hhdCBkbyB5b3UgZm9jdXMgb24gbmV4dD9cIixcbiAgICAgICAgICAgIGNob2ljZXM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRleHQ6IFwiSGlnaGxpZ2h0IEFJJ3Mgcm9sZSBpbiBlbnZpcm9ubWVudGFsIGNvbnNlcnZhdGlvbiDwn4yxXCIsXG4gICAgICAgICAgICAgICAgbmV4dDogXCJhaV9lbnZpcm9ubWVudFwiLFxuICAgICAgICAgICAgICAgIGZ4OiB7IGlubm92YXRpb246IDEwIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0ZXh0OiBcIlNob3djYXNlIEFJJ3MgcG90ZW50aWFsIGluIGhlYWx0aGNhcmUg8J+PpVwiLFxuICAgICAgICAgICAgICAgIG5leHQ6IFwiYWlfaGVhbHRoY2FyZVwiLFxuICAgICAgICAgICAgICAgIGZ4OiB7IGlubm92YXRpb246IDE1IH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgYWlfZW52aXJvbm1lbnQ6IHtcbiAgICAgICAgICAgIHRleHQ6IFwiQUktcG93ZXJlZCBlbnZpcm9ubWVudGFsIHNvbHV0aW9ucyB0cmFuc2Zvcm0gcmVzb3VyY2UgbWFuYWdlbWVudCBnbG9iYWxseS5cIixcbiAgICAgICAgICAgIGNob2ljZXM6IFtdLFxuICAgICAgICAgICAgZW5kaW5nOiBcIkVjby1UZWNoIExlYWRlcjogWW91IHBpb25lZXJlZCBBSS1kcml2ZW4gc3VzdGFpbmFiaWxpdHkuXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBhaV9oZWFsdGhjYXJlOiB7XG4gICAgICAgICAgICB0ZXh0OiBcIkFJIHJldm9sdXRpb25pemVzIGhlYWx0aGNhcmUsIHNhdmluZyBjb3VudGxlc3MgbGl2ZXMuXCIsXG4gICAgICAgICAgICBjaG9pY2VzOiBbXSxcbiAgICAgICAgICAgIGVuZGluZzogXCJIZWFsdGggSW5ub3ZhdG9yOiBZb3UgdHJhbnNmb3JtZWQgcHVibGljIGhlYWx0aCB3aXRoIEFJLlwiLFxuICAgICAgICAgIH0sXG4vLyBUYXNrIEZvcmNlIFBhdGhcbiAgICAgICAgICB0YXNrX2ZvcmNlOiB7XG4gICAgICAgICAgICB0ZXh0OiBcIlRoZSB0YXNrIGZvcmNlIHVuY292ZXJzIHdpZGVzcHJlYWQgaW5lZmZpY2llbmNpZXMuIFdoYXQncyB5b3VyIG5leHQgc3RlcD9cIixcbiAgICAgICAgICAgIGNob2ljZXM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRleHQ6IFwiU3RyZWFtbGluZSByZXNvdXJjZSBhbGxvY2F0aW9uIPCfk4pcIixcbiAgICAgICAgICAgICAgICBuZXh0OiBcInN0cmVhbWxpbmVfcmVzb3VyY2VzXCIsXG4gICAgICAgICAgICAgICAgZng6IHsgZWZmaWNpZW5jeTogMTUgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRleHQ6IFwiQ29sbGFib3JhdGUgd2l0aCBvdGhlciBnb3Zlcm5tZW50IGFnZW5jaWVzIPCfpJ1cIixcbiAgICAgICAgICAgICAgICBuZXh0OiBcImNvbGxhYm9yYXRlX2FnZW5jaWVzXCIsXG4gICAgICAgICAgICAgICAgZng6IHsgaW5mbHVlbmNlOiAxMCwgZWZmaWNpZW5jeTogNSB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGV4dDogXCJTZWVrIHB1YmxpYyBpbnB1dCBvbiBpbmVmZmljaWVuY2llcyDwn5OjXCIsXG4gICAgICAgICAgICAgICAgbmV4dDogXCJwdWJsaWNfaW5wdXRcIixcbiAgICAgICAgICAgICAgICBmeDogeyBpbmZsdWVuY2U6IDE1IH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgc3RyZWFtbGluZV9yZXNvdXJjZXM6IHtcbiAgICAgICAgICAgIHRleHQ6IFwiU3RyZWFtbGluaW5nIHJlc291cmNlIGFsbG9jYXRpb24gaW1wcm92ZXMgZWZmaWNpZW5jeSBhY3Jvc3MgZGVwYXJ0bWVudHMuIFdoYXQgZG8geW91IGZvY3VzIG9uIG5leHQ/XCIsXG4gICAgICAgICAgICBjaG9pY2VzOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0ZXh0OiBcIkludGVncmF0ZSBkYXRhLWRyaXZlbiBkZWNpc2lvbi1tYWtpbmcg8J+TilwiLFxuICAgICAgICAgICAgICAgIG5leHQ6IFwiZGF0YV9kcml2ZW5cIixcbiAgICAgICAgICAgICAgICBmeDogeyBlZmZpY2llbmN5OiAyMCwgaW5ub3ZhdGlvbjogMTAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRleHQ6IFwiRXN0YWJsaXNoIGludGVyLWRlcGFydG1lbnRhbCB0YXNrIGZvcmNlcyDwn5qnXCIsXG4gICAgICAgICAgICAgICAgbmV4dDogXCJpbnRlcl9kZXBhcnRtZW50XCIsXG4gICAgICAgICAgICAgICAgZng6IHsgaW5mbHVlbmNlOiAxNSB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGRhdGFfZHJpdmVuOiB7XG4gICAgICAgICAgICB0ZXh0OiBcIkRhdGEtZHJpdmVuIGRlY2lzaW9uLW1ha2luZyB0cmFuc2Zvcm1zIGdvdmVybm1lbnQgb3BlcmF0aW9ucy5cIixcbiAgICAgICAgICAgIGNob2ljZXM6IFtdLFxuICAgICAgICAgICAgZW5kaW5nOiBcIkRhdGEgU3RyYXRlZ2lzdDogWW91IGJyb3VnaHQgcHJlY2lzaW9uIHRvIHB1YmxpYyBhZG1pbmlzdHJhdGlvbi5cIixcbiAgICAgICAgICB9LFxuICAgICAgICAgIGludGVyX2RlcGFydG1lbnQ6IHtcbiAgICAgICAgICAgIHRleHQ6IFwiQ29sbGFib3JhdGlvbiBiZXR3ZWVuIGRlcGFydG1lbnRzIGJyZWFrcyBzaWxvcyBhbmQgZW5oYW5jZXMgcHJvZHVjdGl2aXR5LlwiLFxuICAgICAgICAgICAgY2hvaWNlczogW10sXG4gICAgICAgICAgICBlbmRpbmc6IFwiVW5pdHkgUGlvbmVlcjogWW91IHVuaXRlZCBkZXBhcnRtZW50cyBmb3Igc2VhbWxlc3MgZ292ZXJuYW5jZS5cIixcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNvbGxhYm9yYXRlX2FnZW5jaWVzOiB7XG4gICAgICAgICAgICB0ZXh0OiBcIkludGVyLWFnZW5jeSBjb2xsYWJvcmF0aW9uIGNyZWF0ZXMgbmV3IG9wcG9ydHVuaXRpZXMuIFdoYXQgZG8geW91IHByaW9yaXRpemU/XCIsXG4gICAgICAgICAgICBjaG9pY2VzOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0ZXh0OiBcIkJ1aWxkIGEgdW5pZmllZCBnb3Zlcm5tZW50IHBvcnRhbCDwn4yQXCIsXG4gICAgICAgICAgICAgICAgbmV4dDogXCJnb3Zlcm5tZW50X3BvcnRhbFwiLFxuICAgICAgICAgICAgICAgIGZ4OiB7IGlubm92YXRpb246IDE1IH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0ZXh0OiBcIlN0YW5kYXJkaXplIHByb2Nlc3NlcyBhY3Jvc3MgYWdlbmNpZXMg8J+Ti1wiLFxuICAgICAgICAgICAgICAgIG5leHQ6IFwicHJvY2Vzc19zdGFuZGFyZGl6YXRpb25cIixcbiAgICAgICAgICAgICAgICBmeDogeyBlZmZpY2llbmN5OiAxNSB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGdvdmVybm1lbnRfcG9ydGFsOiB7XG4gICAgICAgICAgICB0ZXh0OiBcIlRoZSB1bmlmaWVkIHBvcnRhbCBwcm92aWRlcyBjaXRpemVucyBlYXN5IGFjY2VzcyB0byBnb3Zlcm5tZW50IHNlcnZpY2VzLlwiLFxuICAgICAgICAgICAgY2hvaWNlczogW10sXG4gICAgICAgICAgICBlbmRpbmc6IFwiRGlnaXRhbCBQaW9uZWVyOiBZb3UgbWFkZSBnb3Zlcm5hbmNlIGFjY2Vzc2libGUgZm9yIGFsbC5cIixcbiAgICAgICAgICB9LFxuICAgICAgICAgIHByb2Nlc3Nfc3RhbmRhcmRpemF0aW9uOiB7XG4gICAgICAgICAgICB0ZXh0OiBcIlN0YW5kYXJkaXplZCBwcm9jZXNzZXMgc3RyZWFtbGluZSBvcGVyYXRpb25zIG5hdGlvbndpZGUuXCIsXG4gICAgICAgICAgICBjaG9pY2VzOiBbXSxcbiAgICAgICAgICAgIGVuZGluZzogXCJQcm9jZXNzIENoYW1waW9uOiBZb3VyIHJlZm9ybXMgc2V0IGEgZ29sZCBzdGFuZGFyZC5cIixcbiAgICAgICAgICB9LFxuICAgICAgICAgIHB1YmxpY19pbnB1dDoge1xuICAgICAgICAgICAgdGV4dDogXCJQdWJsaWMgaW5wdXQgcmV2ZWFscyBoaWRkZW4gaW5lZmZpY2llbmNpZXMgYW5kIGluc3BpcmVzIGlubm92YXRpdmUgc29sdXRpb25zLiBXaGF0J3MgbmV4dD9cIixcbiAgICAgICAgICAgIGNob2ljZXM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRleHQ6IFwiQ3Jvd2Rzb3VyY2Ugc29sdXRpb25zIGZvciBjcml0aWNhbCBpc3N1ZXMg8J+SoVwiLFxuICAgICAgICAgICAgICAgIG5leHQ6IFwiY3Jvd2Rzb3VyY2Vfc29sdXRpb25zXCIsXG4gICAgICAgICAgICAgICAgZng6IHsgaW5mbHVlbmNlOiAxMCwgaW5ub3ZhdGlvbjogMTAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRleHQ6IFwiSG9sZCBwdWJsaWMgZm9ydW1zIGZvciByZWFsLXRpbWUgZmVlZGJhY2sg8J+To1wiLFxuICAgICAgICAgICAgICAgIG5leHQ6IFwicmVhbF90aW1lX2ZlZWRiYWNrXCIsXG4gICAgICAgICAgICAgICAgZng6IHsgaW5mbHVlbmNlOiAxNSB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNyb3dkc291cmNlX3NvbHV0aW9uczoge1xuICAgICAgICAgICAgdGV4dDogXCJDcm93ZHNvdXJjZWQgc29sdXRpb25zIGJyaW5nIGZyZXNoIGlkZWFzIHRvIGdvdmVybmFuY2UuXCIsXG4gICAgICAgICAgICBjaG9pY2VzOiBbXSxcbiAgICAgICAgICAgIGVuZGluZzogXCJDcm93ZHNvdXJjaW5nIFBpb25lZXI6IFlvdSBlbXBvd2VyZWQgY2l0aXplbnMgdG8gc29sdmUgcHJvYmxlbXMuXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZWFsX3RpbWVfZmVlZGJhY2s6IHtcbiAgICAgICAgICAgIHRleHQ6IFwiUmVhbC10aW1lIGZlZWRiYWNrIGRyaXZlcyBjb250aW51b3VzIGltcHJvdmVtZW50IGluIGdvdmVybm1lbnQgc2VydmljZXMuXCIsXG4gICAgICAgICAgICBjaG9pY2VzOiBbXSxcbiAgICAgICAgICAgIGVuZGluZzogXCJGZWVkYmFjayBMZWFkZXI6IFlvdSBmb3N0ZXJlZCB0cmFuc3BhcmVuY3kgYW5kIGFkYXB0YWJpbGl0eS5cIixcbiAgICAgICAgICB9LFxuICAgICAgICAgIC8vIEJ1cmVhdWNyYWN5IEJsYW1lIFBhdGhcbiAgICAgICAgICBidXJlYXVjcmFjeV9ibGFtZToge1xuICAgICAgICAgICAgdGV4dDogXCJZb3VyIGh1bW9yb3VzIGJsYW1lIGNhbXBhaWduIGdhaW5zIHB1YmxpYyBhdHRlbnRpb24sIG1ha2luZyBnb3Zlcm5hbmNlIGlzc3VlcyByZWxhdGFibGUuIFdoYXQncyBuZXh0P1wiLFxuICAgICAgICAgICAgY2hvaWNlczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGV4dDogXCJDcmVhdGUgYSBzYXRpcmljYWwgYnVyZWF1Y3JhY3kgdGFzayBmb3JjZSDwn46tXCIsXG4gICAgICAgICAgICAgICAgbmV4dDogXCJzYXRpcmljYWxfdGFza19mb3JjZVwiLFxuICAgICAgICAgICAgICAgIGZ4OiB7IG1lbWVzOiAxNSB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGV4dDogXCJFbmdhZ2UgbWVtZSBjcmVhdG9ycyB0byBhbXBsaWZ5IHRoZSBtZXNzYWdlIPCfkLhcIixcbiAgICAgICAgICAgICAgICBuZXh0OiBcIm1lbWVfY3JlYXRvcnNcIixcbiAgICAgICAgICAgICAgICBmeDogeyBtZW1lczogMTAsIGluZmx1ZW5jZTogNSB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGV4dDogXCJUdXJuIHRoZSBjYW1wYWlnbiBpbnRvIGEgcHVibGljIGRvY3VtZW50YXJ5IPCfjqVcIixcbiAgICAgICAgICAgICAgICBuZXh0OiBcInB1YmxpY19kb2N1bWVudGFyeVwiLFxuICAgICAgICAgICAgICAgIGZ4OiB7IGluZmx1ZW5jZTogMTUgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBzYXRpcmljYWxfdGFza19mb3JjZToge1xuICAgICAgICAgICAgdGV4dDogXCJUaGUgc2F0aXJpY2FsIHRhc2sgZm9yY2UgaGlnaGxpZ2h0cyBhYnN1cmQgaW5lZmZpY2llbmNpZXMgYW5kIGluc3BpcmVzIGFjdGlvbi5cIixcbiAgICAgICAgICAgIGNob2ljZXM6IFtdLFxuICAgICAgICAgICAgZW5kaW5nOiBcIkh1bW9yIEFjdGl2aXN0OiBZb3UgdHVybmVkIGxhdWdodGVyIGludG8gYSBjYXRhbHlzdCBmb3IgY2hhbmdlLlwiLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgbWVtZV9jcmVhdG9yczoge1xuICAgICAgICAgICAgdGV4dDogXCJNZW1lIGNyZWF0b3JzIHR1cm4gdGhlIGNhbXBhaWduIGludG8gYSB2aXJhbCBzZW5zYXRpb24sIGRyaXZpbmcgcmVmb3JtLlwiLFxuICAgICAgICAgICAgY2hvaWNlczogW10sXG4gICAgICAgICAgICBlbmRpbmc6IFwiTWVtZSBNb2JpbGl6ZXI6IFlvdSByZWRlZmluZWQgYWN0aXZpc20gd2l0aCBjcmVhdGl2aXR5LlwiLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgcHVibGljX2RvY3VtZW50YXJ5OiB7XG4gICAgICAgICAgICB0ZXh0OiBcIlRoZSBkb2N1bWVudGFyeSBlZHVjYXRlcyBjaXRpemVucyBhbmQgaWduaXRlcyBhIHdhdmUgb2YgZ3Jhc3Nyb290cyByZWZvcm0gbW92ZW1lbnRzLlwiLFxuICAgICAgICAgICAgY2hvaWNlczogW10sXG4gICAgICAgICAgICBlbmRpbmc6IFwiR3Jhc3Nyb290cyBIZXJvOiBZb3UgZW1wb3dlcmVkIGNpdGl6ZW5zIHRvIGRyaXZlIGNoYW5nZS5cIixcbiAgICAgICAgICB9LFxuLy8gUHVibGljIEZvcnVtIFBhdGhcbiAgICAgICAgICBwdWJsaWNfZm9ydW06IHtcbiAgICAgICAgICAgIHRleHQ6IFwiVGhlIHB1YmxpYyBlYWdlcmx5IHNoYXJlcyBpZGVhcyB0byBpbXByb3ZlIGdvdmVybmFuY2UuIFdoYXQncyBuZXh0P1wiLFxuICAgICAgICAgICAgY2hvaWNlczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGV4dDogXCJGb3JtIGNpdGl6ZW4gYWR2aXNvcnkgYm9hcmRzIPCfkaVcIixcbiAgICAgICAgICAgICAgICBuZXh0OiBcImFkdmlzb3J5X2JvYXJkc1wiLFxuICAgICAgICAgICAgICAgIGZ4OiB7IGluZmx1ZW5jZTogMTAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRleHQ6IFwiTGF1bmNoIHRyYW5zcGFyZW5jeSBkYXNoYm9hcmRzIPCfk4pcIixcbiAgICAgICAgICAgICAgICBuZXh0OiBcInRyYW5zcGFyZW5jeV9kYXNoYm9hcmRzXCIsXG4gICAgICAgICAgICAgICAgZng6IHsgaW5ub3ZhdGlvbjogMTAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRleHQ6IFwiQ3JlYXRlIG1lbWUtYmFzZWQgcmVmb3JtcyDwn5C4XCIsXG4gICAgICAgICAgICAgICAgbmV4dDogXCJtZW1lX3JlZm9ybXNcIixcbiAgICAgICAgICAgICAgICBmeDogeyBtZW1lczogMTAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBhZHZpc29yeV9ib2FyZHM6IHtcbiAgICAgICAgICAgIHRleHQ6IFwiQ2l0aXplbiBhZHZpc29yeSBib2FyZHMgYXJlIGZvcm1lZCwgcHJvdmlkaW5nIG5ldyBpZGVhcyBhbmQgcGVyc3BlY3RpdmVzLiBXaGF0IGRvIHlvdSBkbyBuZXh0P1wiLFxuICAgICAgICAgICAgY2hvaWNlczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGV4dDogXCJBZG9wdCBjaXRpemVuLWRyaXZlbiBwb2xpY2llcyDwn5OcXCIsXG4gICAgICAgICAgICAgICAgbmV4dDogXCJjaXRpemVuX3BvbGljaWVzXCIsXG4gICAgICAgICAgICAgICAgZng6IHsgZWZmaWNpZW5jeTogMTUgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRleHQ6IFwiRXhwYW5kIGFkdmlzb3J5IGJvYXJkcyBuYXRpb253aWRlIPCfjI1cIixcbiAgICAgICAgICAgICAgICBuZXh0OiBcIm5hdGlvbmFsX2JvYXJkc1wiLFxuICAgICAgICAgICAgICAgIGZ4OiB7IGluZmx1ZW5jZTogMTUgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRleHQ6IFwiSG9zdCBhIHllYXJseSBhZHZpc29yeSBzdW1taXQg8J+Pm++4j1wiLFxuICAgICAgICAgICAgICAgIG5leHQ6IFwiYWR2aXNvcnlfc3VtbWl0XCIsXG4gICAgICAgICAgICAgICAgZng6IHsgaW5ub3ZhdGlvbjogMTAsIGluZmx1ZW5jZTogMTAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBjaXRpemVuX3BvbGljaWVzOiB7XG4gICAgICAgICAgICB0ZXh0OiBcIkNpdGl6ZW4tZHJpdmVuIHBvbGljaWVzIHRyYW5zZm9ybSBwdWJsaWMgdHJ1c3QgYW5kIGdvdmVybm1lbnQgZWZmaWNpZW5jeS4gV2hhdCdzIG5leHQ/XCIsXG4gICAgICAgICAgICBjaG9pY2VzOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0ZXh0OiBcIkNyZWF0ZSBsb2NhbC1sZXZlbCBhZHZpc29yeSBib2FyZHMg8J+PoVwiLFxuICAgICAgICAgICAgICAgIG5leHQ6IFwibG9jYWxfYm9hcmRzXCIsXG4gICAgICAgICAgICAgICAgZng6IHsgaW5mbHVlbmNlOiAxMCB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGV4dDogXCJJbnRlZ3JhdGUgcG9saWNpZXMgd2l0aCB0ZWNobm9sb2d5IGFwcHMg8J+TsVwiLFxuICAgICAgICAgICAgICAgIG5leHQ6IFwicG9saWN5X2FwcHNcIixcbiAgICAgICAgICAgICAgICBmeDogeyBpbm5vdmF0aW9uOiAxNSB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGxvY2FsX2JvYXJkczoge1xuICAgICAgICAgICAgdGV4dDogXCJMb2NhbCBhZHZpc29yeSBib2FyZHMgZm9zdGVyIGEgc2Vuc2Ugb2YgY29tbXVuaXR5IGFuZCBlbmdhZ2VtZW50IGluIGdvdmVybmFuY2UuXCIsXG4gICAgICAgICAgICBjaG9pY2VzOiBbXSxcbiAgICAgICAgICAgIGVuZGluZzogXCJDb21tdW5pdHkgQnVpbGRlcjogWW91IGJyb3VnaHQgZ292ZXJuYW5jZSBjbG9zZXIgdG8gdGhlIHBlb3BsZS5cIixcbiAgICAgICAgICB9LFxuICAgICAgICAgIHBvbGljeV9hcHBzOiB7XG4gICAgICAgICAgICB0ZXh0OiBcIlRlY2hub2xvZ3kgYXBwcyBtYWtlIGNpdGl6ZW4gcG9saWNpZXMgYWNjZXNzaWJsZSBhbmQgYWN0aW9uYWJsZS5cIixcbiAgICAgICAgICAgIGNob2ljZXM6IFtdLFxuICAgICAgICAgICAgZW5kaW5nOiBcIlBvbGljeSBJbm5vdmF0b3I6IFlvdSBjb21iaW5lZCB0ZWNobm9sb2d5IGFuZCBnb3Zlcm5hbmNlIHNlYW1sZXNzbHkuXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBuYXRpb25hbF9ib2FyZHM6IHtcbiAgICAgICAgICAgIHRleHQ6IFwiTmF0aW9ud2lkZSBib2FyZHMgaW5zcGlyZSBwdWJsaWMgcGFydGljaXBhdGlvbiBvbiBhbiB1bnByZWNlZGVudGVkIHNjYWxlLlwiLFxuICAgICAgICAgICAgY2hvaWNlczogW10sXG4gICAgICAgICAgICBlbmRpbmc6IFwiVmlzaW9uYXJ5IExlYWRlcjogWW91ciBvdXRyZWFjaCB1bml0ZWQgY2l0aXplbnMgYWNyb3NzIHRoZSBjb3VudHJ5LlwiLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgYWR2aXNvcnlfc3VtbWl0OiB7XG4gICAgICAgICAgICB0ZXh0OiBcIlRoZSBhbm51YWwgc3VtbWl0IGJlY29tZXMgYSBodWIgZm9yIGlubm92YXRpb24gYW5kIGNvbGxhYm9yYXRpb24uIFdoYXQncyBuZXh0P1wiLFxuICAgICAgICAgICAgY2hvaWNlczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGV4dDogXCJQYXJ0bmVyIHdpdGggaW50ZXJuYXRpb25hbCBhZHZpc29yeSBncm91cHMg8J+knVwiLFxuICAgICAgICAgICAgICAgIG5leHQ6IFwiZ2xvYmFsX3BhcnRuZXJzaGlwXCIsXG4gICAgICAgICAgICAgICAgZng6IHsgaW5mbHVlbmNlOiAxNSwgaW5ub3ZhdGlvbjogMTAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRleHQ6IFwiVXNlIHN1bW1pdCBpZGVhcyB0byBjcmFmdCBuZXcgbGVnaXNsYXRpb24g8J+TnFwiLFxuICAgICAgICAgICAgICAgIG5leHQ6IFwic3VtbWl0X2xlZ2lzbGF0aW9uXCIsXG4gICAgICAgICAgICAgICAgZng6IHsgZWZmaWNpZW5jeTogMTAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBnbG9iYWxfcGFydG5lcnNoaXA6IHtcbiAgICAgICAgICAgIHRleHQ6IFwiUGFydG5lcnNoaXBzIHdpdGggZ2xvYmFsIGFkdmlzb3J5IGdyb3VwcyBzcGFyayBpbnRlcm5hdGlvbmFsIHJlZm9ybXMuXCIsXG4gICAgICAgICAgICBjaG9pY2VzOiBbXSxcbiAgICAgICAgICAgIGVuZGluZzogXCJHbG9iYWwgUmVmb3JtZXI6IFlvdSBpbnNwaXJlZCBjb2xsYWJvcmF0aW9uIGJleW9uZCBib3JkZXJzLlwiLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgc3VtbWl0X2xlZ2lzbGF0aW9uOiB7XG4gICAgICAgICAgICB0ZXh0OiBcIk5ldyBsZWdpc2xhdGlvbiBiYXNlZCBvbiBzdW1taXQgaWRlYXMgcmV2b2x1dGlvbml6ZXMgZ292ZXJuYW5jZS5cIixcbiAgICAgICAgICAgIGNob2ljZXM6IFtdLFxuICAgICAgICAgICAgZW5kaW5nOiBcIkxhd21ha2VyIFZpc2lvbmFyeTogWW91IHR1cm5lZCBpZGVhcyBpbnRvIGltcGFjdGZ1bCBsYXdzLlwiLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgLy8gVHJhbnNwYXJlbmN5IERhc2hib2FyZHMgUGF0aFxuICAgICAgICAgIHRyYW5zcGFyZW5jeV9kYXNoYm9hcmRzOiB7XG4gICAgICAgICAgICB0ZXh0OiBcIlRyYW5zcGFyZW5jeSBkYXNoYm9hcmRzIHByb3ZpZGUgcmVhbC10aW1lIGFjY2VzcyB0byBnb3Zlcm5tZW50IGRhdGEuIFdoYXQncyBuZXh0P1wiLFxuICAgICAgICAgICAgY2hvaWNlczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGV4dDogXCJJbnRlZ3JhdGUgZGFzaGJvYXJkcyB3aXRoIHB1YmxpYyBhcHBzIPCfk7FcIixcbiAgICAgICAgICAgICAgICBuZXh0OiBcImRhc2hib2FyZF9hcHBzXCIsXG4gICAgICAgICAgICAgICAgZng6IHsgaW5ub3ZhdGlvbjogMTUgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRleHQ6IFwiUHJvbW90ZSBkYXNoYm9hcmRzIGdsb2JhbGx5IPCfjI1cIixcbiAgICAgICAgICAgICAgICBuZXh0OiBcImdsb2JhbF9kYXNoYm9hcmRzXCIsXG4gICAgICAgICAgICAgICAgZng6IHsgaW5mbHVlbmNlOiAxNSB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGV4dDogXCJVc2UgZGFzaGJvYXJkcyB0byBjcm93ZHNvdXJjZSBwcm9ibGVtLXNvbHZpbmcg8J+SoVwiLFxuICAgICAgICAgICAgICAgIG5leHQ6IFwiY3Jvd2Rzb3VyY2VfZGFzaGJvYXJkc1wiLFxuICAgICAgICAgICAgICAgIGZ4OiB7IGlubm92YXRpb246IDEwLCBpbmZsdWVuY2U6IDEwIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgZGFzaGJvYXJkX2FwcHM6IHtcbiAgICAgICAgICAgIHRleHQ6IFwiQXBwcyBtYWtlIGRhc2hib2FyZHMgYWNjZXNzaWJsZSB0byBjaXRpemVucywgZW1wb3dlcmluZyB0aGVtIHRvIGhvbGQgdGhlIGdvdmVybm1lbnQgYWNjb3VudGFibGUuXCIsXG4gICAgICAgICAgICBjaG9pY2VzOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0ZXh0OiBcIkRldmVsb3AgQUkgZmVhdHVyZXMgZm9yIHRoZSBkYXNoYm9hcmRzIPCfpJZcIixcbiAgICAgICAgICAgICAgICBuZXh0OiBcImFpX2Rhc2hib2FyZHNcIixcbiAgICAgICAgICAgICAgICBmeDogeyBpbm5vdmF0aW9uOiAxNSB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGV4dDogXCJGb2N1cyBvbiBydXJhbCBhcmVhcyBmb3IgYXBwIGFkb3B0aW9uIPCfjL5cIixcbiAgICAgICAgICAgICAgICBuZXh0OiBcInJ1cmFsX2FwcHNcIixcbiAgICAgICAgICAgICAgICBmeDogeyBpbmZsdWVuY2U6IDEwIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgYWlfZGFzaGJvYXJkczoge1xuICAgICAgICAgICAgdGV4dDogXCJBSS1lbmhhbmNlZCBkYXNoYm9hcmRzIHByZWRpY3QgaW5lZmZpY2llbmNpZXMgYW5kIHByb3ZpZGUgYWN0aW9uYWJsZSBpbnNpZ2h0cy5cIixcbiAgICAgICAgICAgIGNob2ljZXM6IFtdLFxuICAgICAgICAgICAgZW5kaW5nOiBcIlRlY2ggUGlvbmVlcjogWW91IGJyb3VnaHQgcHJlZGljdGl2ZSBhbmFseXRpY3MgdG8gZ292ZXJuYW5jZS5cIixcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJ1cmFsX2FwcHM6IHtcbiAgICAgICAgICAgIHRleHQ6IFwiUnVyYWwgY29tbXVuaXRpZXMgYWRvcHQgYXBwcywgZm9zdGVyaW5nIGluY2x1c2l2ZSBnb3Zlcm5hbmNlLlwiLFxuICAgICAgICAgICAgY2hvaWNlczogW10sXG4gICAgICAgICAgICBlbmRpbmc6IFwiUnVyYWwgSW5ub3ZhdG9yOiBZb3UgbWFkZSBnb3Zlcm5hbmNlIGFjY2Vzc2libGUgdG8gYWxsLlwiLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgZ2xvYmFsX2Rhc2hib2FyZHM6IHtcbiAgICAgICAgICAgIHRleHQ6IFwiVHJhbnNwYXJlbmN5IGRhc2hib2FyZHMgaW5zcGlyZSBnbG9iYWwgcmVmb3JtcyBpbiBhY2NvdW50YWJpbGl0eS5cIixcbiAgICAgICAgICAgIGNob2ljZXM6IFtdLFxuICAgICAgICAgICAgZW5kaW5nOiBcIkdsb2JhbCBBZHZvY2F0ZTogWW91ciBlZmZvcnRzIHJlZGVmaW5lZCB0cmFuc3BhcmVuY3kgd29ybGR3aWRlLlwiLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgY3Jvd2Rzb3VyY2VfZGFzaGJvYXJkczoge1xuICAgICAgICAgICAgdGV4dDogXCJDcm93ZHNvdXJjaW5nIHRocm91Z2ggZGFzaGJvYXJkcyBhY2NlbGVyYXRlcyBwcm9ibGVtLXNvbHZpbmcuIFdoYXQncyBuZXh0P1wiLFxuICAgICAgICAgICAgY2hvaWNlczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGV4dDogXCJFeHBhbmQgY3Jvd2Rzb3VyY2luZyB0byBnbG9iYWwgaXNzdWVzIPCfjI1cIixcbiAgICAgICAgICAgICAgICBuZXh0OiBcImdsb2JhbF9jcm93ZHNvdXJjaW5nXCIsXG4gICAgICAgICAgICAgICAgZng6IHsgaW5ub3ZhdGlvbjogMTUsIGluZmx1ZW5jZTogMTAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRleHQ6IFwiVXNlIGNyb3dkc291cmNpbmcgdG8gaW5ub3ZhdGUgcHVibGljIHNlcnZpY2VzIPCfmoBcIixcbiAgICAgICAgICAgICAgICBuZXh0OiBcInB1YmxpY19pbm5vdmF0aW9uXCIsXG4gICAgICAgICAgICAgICAgZng6IHsgaW5ub3ZhdGlvbjogMTUgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBnbG9iYWxfY3Jvd2Rzb3VyY2luZzoge1xuICAgICAgICAgICAgdGV4dDogXCJHbG9iYWwgY3Jvd2Rzb3VyY2luZyBhZGRyZXNzZXMgY3JpdGljYWwgaXNzdWVzIGxpa2UgY2xpbWF0ZSBjaGFuZ2UgYW5kIHBvdmVydHkuXCIsXG4gICAgICAgICAgICBjaG9pY2VzOiBbXSxcbiAgICAgICAgICAgIGVuZGluZzogXCJHbG9iYWwgUHJvYmxlbSBTb2x2ZXI6IFlvdSB0dXJuZWQgZ292ZXJuYW5jZSBpbnRvIGEgY29sbGFib3JhdGl2ZSBmb3JjZS5cIixcbiAgICAgICAgICB9LFxuICAgICAgICAgIHB1YmxpY19pbm5vdmF0aW9uOiB7XG4gICAgICAgICAgICB0ZXh0OiBcIklubm92YXRpb25zIGluIHB1YmxpYyBzZXJ2aWNlcyB0cmFuc2Zvcm0gZ292ZXJubWVudCBlZmZpY2llbmN5IGFuZCBjaXRpemVuIHNhdGlzZmFjdGlvbi5cIixcbiAgICAgICAgICAgIGNob2ljZXM6IFtdLFxuICAgICAgICAgICAgZW5kaW5nOiBcIlNlcnZpY2UgSW5ub3ZhdG9yOiBZb3UgcmV2b2x1dGlvbml6ZWQgcHVibGljIHNlcnZpY2VzIHRocm91Z2ggY29sbGFib3JhdGlvbi5cIixcbiAgICAgICAgICB9LFxuICAgICAgICAgIC8vIE1lbWUtQmFzZWQgUmVmb3JtcyBQYXRoXG4gICAgICAgICAgbWVtZV9yZWZvcm1zOiB7XG4gICAgICAgICAgICB0ZXh0OiBcIllvdXIgbWVtZS1iYXNlZCByZWZvcm1zIGdhaW4gbWFzc2l2ZSB0cmFjdGlvbiBhbmQgcHVibGljIGFwcHJvdmFsLiBXaGF0J3MgbmV4dD9cIixcbiAgICAgICAgICAgIGNob2ljZXM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRleHQ6IFwiTGF1bmNoIGEgcHVibGljIG1lbWUgY29tcGV0aXRpb24g8J+OiVwiLFxuICAgICAgICAgICAgICAgIG5leHQ6IFwicHVibGljX21lbWVfY29tcGV0aXRpb25cIixcbiAgICAgICAgICAgICAgICBmeDogeyBtZW1lczogMTUgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRleHQ6IFwiRGV2ZWxvcCBtZW1lLWJhc2VkIGVkdWNhdGlvbmFsIGNhbXBhaWducyDwn5OaXCIsXG4gICAgICAgICAgICAgICAgbmV4dDogXCJlZHVjYXRpb25hbF9tZW1lc1wiLFxuICAgICAgICAgICAgICAgIGZ4OiB7IGlubm92YXRpb246IDEwLCBtZW1lczogNSB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGV4dDogXCJDcmVhdGUgYSBnb3Zlcm5tZW50IG1lbWUgZGVwYXJ0bWVudCDwn4+iXCIsXG4gICAgICAgICAgICAgICAgbmV4dDogXCJtZW1lX2RlcGFydG1lbnRcIixcbiAgICAgICAgICAgICAgICBmeDogeyBtZW1lczogMTUgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBwdWJsaWNfbWVtZV9jb21wZXRpdGlvbjoge1xuICAgICAgICAgICAgdGV4dDogXCJUaGUgbWVtZSBjb21wZXRpdGlvbiBpbnNwaXJlcyBjcmVhdGl2aXR5IGFuZCBjaXZpYyBhd2FyZW5lc3MuIFdoYXQgZG8geW91IGRvIG5leHQ/XCIsXG4gICAgICAgICAgICBjaG9pY2VzOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0ZXh0OiBcIlB1Ymxpc2ggd2lubmluZyBtZW1lcyBpbiBhIG5hdGlvbmFsIGFudGhvbG9neSDwn5OWXCIsXG4gICAgICAgICAgICAgICAgbmV4dDogXCJtZW1lX2FudGhvbG9neVwiLFxuICAgICAgICAgICAgICAgIGZ4OiB7IG1lbWVzOiAxMCB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGV4dDogXCJVc2Ugd2lubmluZyBtZW1lcyBpbiBwdWJsaWMgc2VydmljZSBjYW1wYWlnbnMg8J+To1wiLFxuICAgICAgICAgICAgICAgIG5leHQ6IFwic2VydmljZV9jYW1wYWlnbnNcIixcbiAgICAgICAgICAgICAgICBmeDogeyBpbmZsdWVuY2U6IDEwLCBtZW1lczogMTAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBtZW1lX2FudGhvbG9neToge1xuICAgICAgICAgICAgdGV4dDogXCJUaGUgYW50aG9sb2d5IGJlY29tZXMgYSBiZXN0c2VsbGVyLCBoaWdobGlnaHRpbmcgdGhlIHBvd2VyIG9mIGh1bW9yLlwiLFxuICAgICAgICAgICAgY2hvaWNlczogW10sXG4gICAgICAgICAgICBlbmRpbmc6IFwiQ3VsdHVyYWwgSWNvbjogWW91ciBhbnRob2xvZ3kgYnJvdWdodCBodW1vciB0byB0aGUgbWFzc2VzLlwiLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VydmljZV9jYW1wYWlnbnM6IHtcbiAgICAgICAgICAgIHRleHQ6IFwiUHVibGljIHNlcnZpY2UgY2FtcGFpZ25zIHBvd2VyZWQgYnkgbWVtZXMgZHJpdmUgZW5nYWdlbWVudCBhbmQgYXdhcmVuZXNzLlwiLFxuICAgICAgICAgICAgY2hvaWNlczogW10sXG4gICAgICAgICAgICBlbmRpbmc6IFwiQ2FtcGFpZ24gTWFzdGVybWluZDogWW91IHVzZWQgbWVtZXMgdG8gdHJhbnNmb3JtIGNpdmljIGVuZ2FnZW1lbnQuXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBlZHVjYXRpb25hbF9tZW1lczoge1xuICAgICAgICAgICAgdGV4dDogXCJFZHVjYXRpb25hbCBjYW1wYWlnbnMgdXNpbmcgbWVtZXMgaW1wcm92ZSBwdWJsaWMgdW5kZXJzdGFuZGluZyBvZiBjb21wbGV4IHBvbGljaWVzLiBXaGF0J3MgbmV4dD9cIixcbiAgICAgICAgICAgIGNob2ljZXM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRleHQ6IFwiSW50cm9kdWNlIG1lbWUtYmFzZWQgY2l2aWMgY291cnNlcyDwn5OWXCIsXG4gICAgICAgICAgICAgICAgbmV4dDogXCJjaXZpY19jb3Vyc2VzXCIsXG4gICAgICAgICAgICAgICAgZng6IHsgaW5ub3ZhdGlvbjogMTAsIGluZmx1ZW5jZTogMTAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRleHQ6IFwiRGV2ZWxvcCBhIG1lbWUtcG93ZXJlZCB2b3RpbmcgaW5pdGlhdGl2ZSDwn5ez77iPXCIsXG4gICAgICAgICAgICAgICAgbmV4dDogXCJtZW1lX3ZvdGluZ1wiLFxuICAgICAgICAgICAgICAgIGZ4OiB7IGluZmx1ZW5jZTogMTUgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBjaXZpY19jb3Vyc2VzOiB7XG4gICAgICAgICAgICB0ZXh0OiBcIkNpdmljIGNvdXJzZXMgbWFrZSBlZHVjYXRpb24gZW5nYWdpbmcgYW5kIGFjY2Vzc2libGUgdG8gYWxsLlwiLFxuICAgICAgICAgICAgY2hvaWNlczogW10sXG4gICAgICAgICAgICBlbmRpbmc6IFwiQ2l2aWMgTWVtZSBJbm5vdmF0b3I6IFlvdSBicm91Z2h0IGh1bW9yIHRvIGNpdmljIGVkdWNhdGlvbi5cIixcbiAgICAgICAgICB9LFxuICAgICAgICAgIG1lbWVfdm90aW5nOiB7XG4gICAgICAgICAgICB0ZXh0OiBcIk1lbWUtcG93ZXJlZCB2b3RpbmcgZHJpdmVzIHJlY29yZCB0dXJub3V0IGFuZCBzdHJlbmd0aGVucyBkZW1vY3JhY3kuXCIsXG4gICAgICAgICAgICBjaG9pY2VzOiBbXSxcbiAgICAgICAgICAgIGVuZGluZzogXCJEZW1vY3JhY3kgRGVmZW5kZXI6IFlvdSByZXZvbHV0aW9uaXplZCBlbGVjdGlvbnMgd2l0aCBjcmVhdGl2aXR5LlwiLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgbWVtZV9kZXBhcnRtZW50OiB7XG4gICAgICAgICAgICB0ZXh0OiBcIlRoZSBtZW1lIGRlcGFydG1lbnQgYmVjb21lcyBhIGN1bHR1cmFsIGh1YiBmb3IgaHVtb3ItZHJpdmVuIHJlZm9ybXMuXCIsXG4gICAgICAgICAgICBjaG9pY2VzOiBbXSxcbiAgICAgICAgICAgIGVuZGluZzogXCJNZW1lIE1pbmlzdGVyOiBZb3UgaW5zdGl0dXRpb25hbGl6ZWQgdGhlIHBvd2VyIG9mIG1lbWVzIGluIGdvdmVybmFuY2UuXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgICAvLyBNZW1lIEFybXkgUGF0aFxuICAgICAgICAgIG1lbWVfYXJteToge1xuICAgICAgICAgICAgdGV4dDogXCJZb3VyIG1lbWUgY2FtcGFpZ24gZ2FpbnMgbWFzc2l2ZSB0cmFjdGlvbiwgY2FwdGl2YXRpbmcgYXVkaWVuY2VzIHdvcmxkd2lkZS4gV2hhdCdzIG5leHQ/XCIsXG4gICAgICAgICAgICBjaG9pY2VzOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0ZXh0OiBcIkNvbGxhYm9yYXRlIHdpdGggaW5mbHVlbmNlcnMg8J+Mn1wiLFxuICAgICAgICAgICAgICAgIG5leHQ6IFwiaW5mbHVlbmNlcl9jb2xsYWJcIixcbiAgICAgICAgICAgICAgICBmeDogeyBpbmZsdWVuY2U6IDEwLCBtZW1lczogMTAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRleHQ6IFwiQ3JlYXRlIGEgTWVtZSBEQU8g8J+TnFwiLFxuICAgICAgICAgICAgICAgIG5leHQ6IFwiY3JlYXRlX21lbWVfZGFvXCIsXG4gICAgICAgICAgICAgICAgZng6IHsgaW5ub3ZhdGlvbjogMTAsIG1lbWVzOiAxNSB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGV4dDogXCJIb3N0IGEgbWVtZSBjb21wZXRpdGlvbiDwn46JXCIsXG4gICAgICAgICAgICAgICAgbmV4dDogXCJtZW1lX2NvbXBldGl0aW9uXCIsXG4gICAgICAgICAgICAgICAgZng6IHsgaW5mbHVlbmNlOiA1LCBtZW1lczogMTAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBpbmZsdWVuY2VyX2NvbGxhYjoge1xuICAgICAgICAgICAgdGV4dDogXCJJbmZsdWVuY2VycyBhbXBsaWZ5IHlvdXIgbWVzc2FnZSwgbWFraW5nIHlvdXIgbWVtZXMgYSBjdWx0dXJhbCBwaGVub21lbm9uLiBXaGF0J3MgbmV4dD9cIixcbiAgICAgICAgICAgIGNob2ljZXM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRleHQ6IFwiVHVybiBtZW1lcyBpbnRvIG1lcmNoYW5kaXNlIPCfm43vuI9cIixcbiAgICAgICAgICAgICAgICBuZXh0OiBcIm1lbWVfbWVyY2hcIixcbiAgICAgICAgICAgICAgICBmeDogeyBpbmZsdWVuY2U6IDEwLCBtZW1lczogMTAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRleHQ6IFwiVXNlIG1lbWVzIHRvIGVkdWNhdGUgY2l0aXplbnMg8J+TmlwiLFxuICAgICAgICAgICAgICAgIG5leHQ6IFwiZWR1Y2F0aW9uYWxfbWVtZXNcIixcbiAgICAgICAgICAgICAgICBmeDogeyBpbm5vdmF0aW9uOiAxMCwgbWVtZXM6IDUgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRleHQ6IFwiQ3JlYXRlIG1lbWUtcG93ZXJlZCBjaGFyaXR5IGNhbXBhaWducyDwn5KdXCIsXG4gICAgICAgICAgICAgICAgbmV4dDogXCJtZW1lX2NoYXJpdHlcIixcbiAgICAgICAgICAgICAgICBmeDogeyBpbmZsdWVuY2U6IDE1LCBtZW1lczogMTAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBtZW1lX21lcmNoOiB7XG4gICAgICAgICAgICB0ZXh0OiBcIk1lcmNoYW5kaXNlIHByb2ZpdHMgZnVuZCBwdWJsaWMgcHJvamVjdHMgYW5kIHNwcmVhZCB0aGUgbWVtZSBtb3ZlbWVudCBldmVuIGZ1cnRoZXIuIFdoYXQgZG8geW91IGRvIG5leHQ/XCIsXG4gICAgICAgICAgICBjaG9pY2VzOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0ZXh0OiBcIkludmVzdCBwcm9maXRzIGludG8gbWVtZS1iYXNlZCBzY2hvb2xzIPCfjpNcIixcbiAgICAgICAgICAgICAgICBuZXh0OiBcIm1lbWVfc2Nob29sc1wiLFxuICAgICAgICAgICAgICAgIGZ4OiB7IGlubm92YXRpb246IDE1IH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0ZXh0OiBcIlVzZSBwcm9maXRzIHRvIGZ1bmQgaW5mcmFzdHJ1Y3R1cmUgdXBncmFkZXMg8J+Pl++4j1wiLFxuICAgICAgICAgICAgICAgIG5leHQ6IFwibWVtZV9pbmZyYXN0cnVjdHVyZVwiLFxuICAgICAgICAgICAgICAgIGZ4OiB7IGVmZmljaWVuY3k6IDE1IH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgbWVtZV9zY2hvb2xzOiB7XG4gICAgICAgICAgICB0ZXh0OiBcIk1lbWUtYmFzZWQgc2Nob29scyB0ZWFjaCBodW1vciBhbmQgY3JpdGljYWwgdGhpbmtpbmcgdG8gdGhlIG5leHQgZ2VuZXJhdGlvbi5cIixcbiAgICAgICAgICAgIGNob2ljZXM6IFtdLFxuICAgICAgICAgICAgZW5kaW5nOiBcIk1lbWUgTWVudG9yOiBZb3Ugc2hhcGVkIGEgZnV0dXJlIHdoZXJlIGh1bW9yIGFuZCBrbm93bGVkZ2UgZ28gaGFuZCBpbiBoYW5kLlwiLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgbWVtZV9pbmZyYXN0cnVjdHVyZToge1xuICAgICAgICAgICAgdGV4dDogXCJJbmZyYXN0cnVjdHVyZSB1cGdyYWRlcyBmdW5kZWQgYnkgbWVtZXMgbGVhZCB0byBiZXR0ZXIgcm9hZHMsIGZhc3RlciBpbnRlcm5ldCwgYW5kIGhhcHBpZXIgY2l0aXplbnMuXCIsXG4gICAgICAgICAgICBjaG9pY2VzOiBbXSxcbiAgICAgICAgICAgIGVuZGluZzogXCJJbmZyYXN0cnVjdHVyZSBJY29uOiBZb3UgdHVybmVkIG1lbWVzIGludG8gYSBmb3JjZSBmb3IgcGh5c2ljYWwgcHJvZ3Jlc3MuXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBtZW1lX2NoYXJpdHk6IHtcbiAgICAgICAgICAgIHRleHQ6IFwiQ2hhcml0eSBjYW1wYWlnbnMgcG93ZXJlZCBieSBtZW1lcyByYWlzZSB1bnByZWNlZGVudGVkIGZ1bmRzLiBXaGF0J3MgeW91ciBuZXh0IHN0ZXA/XCIsXG4gICAgICAgICAgICBjaG9pY2VzOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0ZXh0OiBcIkJ1aWxkIGdsb2JhbCBjaGFyaXR5IG5ldHdvcmtzIPCfjI1cIixcbiAgICAgICAgICAgICAgICBuZXh0OiBcImdsb2JhbF9jaGFyaXR5XCIsXG4gICAgICAgICAgICAgICAgZng6IHsgaW5mbHVlbmNlOiAyMCwgaW5ub3ZhdGlvbjogMTAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRleHQ6IFwiRGV2ZWxvcCB0ZWNoIHRvIGdhbWlmeSBjaGFyaXR5IGNhbXBhaWducyDwn46uXCIsXG4gICAgICAgICAgICAgICAgbmV4dDogXCJnYW1pZnlfY2hhcml0eVwiLFxuICAgICAgICAgICAgICAgIGZ4OiB7IGlubm92YXRpb246IDE1IH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgZ2xvYmFsX2NoYXJpdHk6IHtcbiAgICAgICAgICAgIHRleHQ6IFwiWW91ciBjaGFyaXR5IG5ldHdvcmtzIGltcHJvdmUgbGl2ZXMgd29ybGR3aWRlLCBidWlsZGluZyBicmlkZ2VzIGFjcm9zcyBuYXRpb25zLlwiLFxuICAgICAgICAgICAgY2hvaWNlczogW10sXG4gICAgICAgICAgICBlbmRpbmc6IFwiR2xvYmFsIEh1bWFuaXRhcmlhbjogWW91IHR1cm5lZCBtZW1lcyBpbnRvIGEgdG9vbCBmb3IgZ2xvYmFsIGdvb2QuXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBnYW1pZnlfY2hhcml0eToge1xuICAgICAgICAgICAgdGV4dDogXCJHYW1pZmljYXRpb24gb2YgY2hhcml0eSBjYW1wYWlnbnMgbWFrZXMgZ2l2aW5nIGJhY2sgZnVuIGFuZCBlbmdhZ2luZy5cIixcbiAgICAgICAgICAgIGNob2ljZXM6IFtdLFxuICAgICAgICAgICAgZW5kaW5nOiBcIkNoYXJpdHkgR2FtZSBDaGFuZ2VyOiBZb3UgcmV2b2x1dGlvbml6ZWQgcGhpbGFudGhyb3B5IHdpdGggaW5ub3ZhdGlvbi5cIixcbiAgICAgICAgICB9LFxuICAgICAgICAgIC8vIE1lbWUgREFPIFBhdGhcbiAgICAgICAgICBjcmVhdGVfbWVtZV9kYW86IHtcbiAgICAgICAgICAgIHRleHQ6IFwiVGhlIE1lbWUgREFPIGdhaW5zIG1hc3NpdmUgc3VwcG9ydCwgZW5hYmxpbmcgY3Jvd2RmdW5kaW5nIGZvciByZWZvcm0gcHJvamVjdHMuIFdoYXQncyBuZXh0P1wiLFxuICAgICAgICAgICAgY2hvaWNlczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGV4dDogXCJFeHBhbmQgdGhlIERBTyBnbG9iYWxseSDwn4yNXCIsXG4gICAgICAgICAgICAgICAgbmV4dDogXCJnbG9iYWxfZGFvXCIsXG4gICAgICAgICAgICAgICAgZng6IHsgaW5mbHVlbmNlOiAyMCwgaW5ub3ZhdGlvbjogMTAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRleHQ6IFwiVXNlIERBTyBmdW5kcyBmb3IgdHJhbnNwYXJlbmN5IGRhc2hib2FyZHMg8J+TilwiLFxuICAgICAgICAgICAgICAgIG5leHQ6IFwiZGFzaGJvYXJkX2Z1bmRpbmdcIixcbiAgICAgICAgICAgICAgICBmeDogeyBlZmZpY2llbmN5OiAxNSB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGV4dDogXCJQYXJ0bmVyIERBTyB3aXRoIHRlY2ggY29tcGFuaWVzIPCfpJ1cIixcbiAgICAgICAgICAgICAgICBuZXh0OiBcInRlY2hfcGFydG5lcnNoaXBcIixcbiAgICAgICAgICAgICAgICBmeDogeyBpbm5vdmF0aW9uOiAyMCB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGdsb2JhbF9kYW86IHtcbiAgICAgICAgICAgIHRleHQ6IFwiVGhlIGdsb2JhbCBEQU8gaW5zcGlyZXMgaW50ZXJuYXRpb25hbCBjaXRpemVuLWxlZCByZWZvcm1zLlwiLFxuICAgICAgICAgICAgY2hvaWNlczogW10sXG4gICAgICAgICAgICBlbmRpbmc6IFwiQ2l0aXplbiBEaXBsb21hdDogWW91IGNyZWF0ZWQgYSBnbG9iYWwgbW92ZW1lbnQgZm9yIGNoYW5nZS5cIixcbiAgICAgICAgICB9LFxuICAgICAgICAgIGRhc2hib2FyZF9mdW5kaW5nOiB7XG4gICAgICAgICAgICB0ZXh0OiBcIkRBTyBmdW5kcyBpbXByb3ZlIHRyYW5zcGFyZW5jeSBhbmQgcHVibGljIGFjY291bnRhYmlsaXR5LlwiLFxuICAgICAgICAgICAgY2hvaWNlczogW10sXG4gICAgICAgICAgICBlbmRpbmc6IFwiVHJhbnNwYXJlbmN5IFRpdGFuOiBZb3VyIERBTyB0cmFuc2Zvcm1lZCBwdWJsaWMgdHJ1c3QuXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB0ZWNoX3BhcnRuZXJzaGlwOiB7XG4gICAgICAgICAgICB0ZXh0OiBcIlBhcnRuZXJzaGlwcyB3aXRoIHRlY2ggY29tcGFuaWVzIHJldm9sdXRpb25pemUgREFPIGVmZmljaWVuY3kuXCIsXG4gICAgICAgICAgICBjaG9pY2VzOiBbXSxcbiAgICAgICAgICAgIGVuZGluZzogXCJUZWNoIFJlZm9ybWVyOiBZb3UgcGlvbmVlcmVkIGNpdGl6ZW4tdGVjaCBjb2xsYWJvcmF0aW9uLlwiLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgLy8gSG9zdCBhIE1lbWUgQ29tcGV0aXRpb25cbiAgICAgICAgICBtZW1lX2NvbXBldGl0aW9uOiB7XG4gICAgICAgICAgICB0ZXh0OiBcIlRoZSBjb21wZXRpdGlvbiBlbmdhZ2VzIHRoZSBwdWJsaWMgYW5kIHNwYXJrcyBjcmVhdGl2aXR5LiBXaGF0J3MgbmV4dD9cIixcbiAgICAgICAgICAgIGNob2ljZXM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRleHQ6IFwiUHVibGlzaCB3aW5uaW5nIG1lbWVzIGluIGEgbmF0aW9uYWwgYW50aG9sb2d5IPCfk5ZcIixcbiAgICAgICAgICAgICAgICBuZXh0OiBcIm1lbWVfYW50aG9sb2d5XCIsXG4gICAgICAgICAgICAgICAgZng6IHsgbWVtZXM6IDEwIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0ZXh0OiBcIlVzZSB3aW5uaW5nIG1lbWVzIGluIHB1YmxpYyBzZXJ2aWNlIGNhbXBhaWducyDwn5OjXCIsXG4gICAgICAgICAgICAgICAgbmV4dDogXCJzZXJ2aWNlX2NhbXBhaWduc1wiLFxuICAgICAgICAgICAgICAgIGZ4OiB7IGluZmx1ZW5jZTogMTAsIG1lbWVzOiAxMCB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGV4dDogXCJUdXJuIHdpbm5pbmcgbWVtZXMgaW50byBORlRzIPCflrzvuI9cIixcbiAgICAgICAgICAgICAgICBuZXh0OiBcIm5mdF9tZW1lc1wiLFxuICAgICAgICAgICAgICAgIGZ4OiB7IGlubm92YXRpb246IDEwLCBtZW1lczogMTAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBuZnRfbWVtZXM6IHtcbiAgICAgICAgICAgIHRleHQ6IFwiVGhlIE5GVCBjb2xsZWN0aW9uIGdlbmVyYXRlcyBzaWduaWZpY2FudCByZXZlbnVlIGZvciBnb3Zlcm5tZW50IHByb2plY3RzLlwiLFxuICAgICAgICAgICAgY2hvaWNlczogW10sXG4gICAgICAgICAgICBlbmRpbmc6IFwiRGlnaXRhbCBJbm5vdmF0b3I6IFlvdSBibGVuZGVkIGFydCwgdGVjaG5vbG9neSwgYW5kIHJlZm9ybS5cIixcbiAgICAgICAgICB9LFxuLy8gUGF0aDogRXhwbG9yZSBTZWNyZXQgQXJjaGl2ZXNcbiAgICBzZWNyZXRfYXJjaGl2ZXM6IHtcbiAgICAgIHRleHQ6IFwiWW91IHVuY292ZXIgY2xhc3NpZmllZCBkb2N1bWVudHMgcmV2ZWFsaW5nIGluZWZmaWNpZW5jaWVzIGFuZCBoaWRkZW4gYWdlbmRhcy4gV2hhdOKAmXMgeW91ciBuZXh0IG1vdmU/XCIsXG4gICAgICBjaG9pY2VzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0ZXh0OiBcIkV4cG9zZSB0aGUgdHJ1dGgg8J+Vte+4j+KAjeKZgu+4j1wiLFxuICAgICAgICAgIG5leHQ6IFwiZXhwb3NlX3RydXRoXCIsXG4gICAgICAgICAgZng6IHsgaW5mbHVlbmNlOiAxNSwgbWVtZXM6IDEwIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0ZXh0OiBcIlVzZSBzZWNyZXRzIGZvciBsZXZlcmFnZSDwn5K8XCIsXG4gICAgICAgICAgbmV4dDogXCJsZXZlcmFnZV9zZWNyZXRzXCIsXG4gICAgICAgICAgZng6IHsgZWZmaWNpZW5jeTogMTAsIGluZmx1ZW5jZTogMTAgfSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHRleHQ6IFwiRGVzdHJveSB0aGUgYXJjaGl2ZXMg8J+UpVwiLFxuICAgICAgICAgIG5leHQ6IFwiZGVzdHJveV9hcmNoaXZlc1wiLFxuICAgICAgICAgIGZ4OiB7IG1lbWVzOiA1IH0sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0sXG5cbiAgICAvLyBPcHRpb24gMTogRXhwb3NlIHRoZSBUcnV0aFxuICAgIGV4cG9zZV90cnV0aDoge1xuICAgICAgdGV4dDogXCJUaGUgdHJ1dGggc2hvY2tzIHRoZSBuYXRpb24sIHNwYXJraW5nIHByb3Rlc3RzIGFuZCBkZW1hbmRzIGZvciBjaGFuZ2UuIFdoYXTigJlzIHlvdXIgbmV4dCBtb3ZlP1wiLFxuICAgICAgY2hvaWNlczogW1xuICAgICAgICB7XG4gICAgICAgICAgdGV4dDogXCJSYWxseSBjaXRpemVucyBmb3IgcmVmb3JtcyDwn5ej77iPXCIsXG4gICAgICAgICAgbmV4dDogXCJjaXRpemVuX3JhbGx5XCIsXG4gICAgICAgICAgZng6IHsgaW5mbHVlbmNlOiAxNSB9LFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdGV4dDogXCJXb3JrIHdpdGggaW52ZXN0aWdhdGl2ZSBqb3VybmFsaXN0cyDwn5OwXCIsXG4gICAgICAgICAgbmV4dDogXCJqb3VybmFsaXN0X2NvbGxhYlwiLFxuICAgICAgICAgIGZ4OiB7IGluZmx1ZW5jZTogMTAsIGlubm92YXRpb246IDUgfSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHRleHQ6IFwiUHVzaCBmb3IgZW1lcmdlbmN5IGdvdmVybm1lbnQgaGVhcmluZ3Mg8J+Pm++4j1wiLFxuICAgICAgICAgIG5leHQ6IFwiZ292X2hlYXJpbmdzXCIsXG4gICAgICAgICAgZng6IHsgaW5mbHVlbmNlOiAyMCB9LFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9LFxuICAgIGNpdGl6ZW5fcmFsbHk6IHtcbiAgICAgIHRleHQ6IFwiTWFzc2l2ZSBjaXRpemVuIHJhbGxpZXMgbGVhZCB0byBsZWdpc2xhdGl2ZSByZWZvcm1zIGFuZCBncmVhdGVyIHRyYW5zcGFyZW5jeS4gV2hhdOKAmXMgeW91ciBuZXh0IHN0ZXA/XCIsXG4gICAgICBjaG9pY2VzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0ZXh0OiBcIkNyZWF0ZSBwZXJtYW5lbnQgY2l0aXplbiByZWZvcm0gZ3JvdXBzIPCfjJ9cIixcbiAgICAgICAgICBuZXh0OiBcInJlZm9ybV9ncm91cHNcIixcbiAgICAgICAgICBmeDogeyBpbmZsdWVuY2U6IDEwLCBlZmZpY2llbmN5OiAxMCB9LFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdGV4dDogXCJQdXNoIGZvciBkaXJlY3QgZGVtb2NyYWN5IGluaXRpYXRpdmVzIPCfl7PvuI9cIixcbiAgICAgICAgICBuZXh0OiBcImRpcmVjdF9kZW1vY3JhY3lcIixcbiAgICAgICAgICBmeDogeyBpbm5vdmF0aW9uOiAxMCB9LFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9LFxuICAgIHJlZm9ybV9ncm91cHM6IHtcbiAgICAgIHRleHQ6IFwiQ2l0aXplbiByZWZvcm0gZ3JvdXBzIHN1c3RhaW4gbW9tZW50dW0gZm9yIGNoYW5nZSBhY3Jvc3MgdGhlIG5hdGlvbi5cIixcbiAgICAgIGNob2ljZXM6IFtdLFxuICAgICAgZW5kaW5nOlxuICAgICAgICBcIlBlb3BsZeKAmXMgQWR2b2NhdGU6IFlvdSBlbXBvd2VyZWQgdGhlIHB1YmxpYyB0byB0YWtlIGNvbnRyb2wgb2YgZ292ZXJuYW5jZS5cIixcbiAgICB9LFxuICAgIGRpcmVjdF9kZW1vY3JhY3k6IHtcbiAgICAgIHRleHQ6IFwiRGlyZWN0IGRlbW9jcmFjeSBpbml0aWF0aXZlcyBnaXZlIGNpdGl6ZW5zIGEgbW9yZSBhY3RpdmUgcm9sZSBpbiBnb3Zlcm5tZW50IGRlY2lzaW9ucy5cIixcbiAgICAgIGNob2ljZXM6IFtdLFxuICAgICAgZW5kaW5nOlxuICAgICAgICBcIkRlbW9jcmFjeSBBcmNoaXRlY3Q6IFlvdSByZWRlZmluZWQgZ292ZXJuYW5jZSBieSBnaXZpbmcgcG93ZXIgdG8gdGhlIHBlb3BsZS5cIixcbiAgICB9LFxuICAgIGpvdXJuYWxpc3RfY29sbGFiOiB7XG4gICAgICB0ZXh0OiBcIkludmVzdGlnYXRpdmUgcmVwb3J0cyByZXZlYWwgZGVlcGVyIGlzc3VlcywgYWNjZWxlcmF0aW5nIHN5c3RlbWljIHJlZm9ybXMuIFdoYXTigJlzIG5leHQ/XCIsXG4gICAgICBjaG9pY2VzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0ZXh0OiBcIkZvY3VzIG9uIGp1ZGljaWFsIHJlZm9ybXMg4pqW77iPXCIsXG4gICAgICAgICAgbmV4dDogXCJqdWRpY2lhbF9yZWZvcm1zXCIsXG4gICAgICAgICAgZng6IHsgZWZmaWNpZW5jeTogMTAgfSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHRleHQ6IFwiRGV2ZWxvcCB3aGlzdGxlYmxvd2VyIHByb3RlY3Rpb24gbGF3cyDwn5uh77iPXCIsXG4gICAgICAgICAgbmV4dDogXCJ3aGlzdGxlYmxvd2VyX2xhd3NcIixcbiAgICAgICAgICBmeDogeyBpbmZsdWVuY2U6IDE1IH0sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0sXG4gICAganVkaWNpYWxfcmVmb3Jtczoge1xuICAgICAgdGV4dDogXCJKdWRpY2lhbCByZWZvcm1zIGVuaGFuY2UgYWNjb3VudGFiaWxpdHkgYW5kIGZhaXJuZXNzIGluIGdvdmVybmFuY2UuXCIsXG4gICAgICBjaG9pY2VzOiBbXSxcbiAgICAgIGVuZGluZzogXCJKdXN0aWNlIENoYW1waW9uOiBZb3VyIHJlZm9ybXMgcmVzdG9yZWQgdHJ1c3QgaW4gdGhlIHN5c3RlbS5cIixcbiAgICB9LFxuICAgIHdoaXN0bGVibG93ZXJfbGF3czoge1xuICAgICAgdGV4dDogXCJXaGlzdGxlYmxvd2VyIHByb3RlY3Rpb25zIGVuY291cmFnZSBtb3JlIHJldmVsYXRpb25zLCBsZWFkaW5nIHRvIGNvbnRpbnVlZCBpbXByb3ZlbWVudHMuXCIsXG4gICAgICBjaG9pY2VzOiBbXSxcbiAgICAgIGVuZGluZzpcbiAgICAgICAgXCJHdWFyZGlhbiBvZiBUcnV0aDogWW91ciBwb2xpY2llcyBlbnN1cmVkIHRyYW5zcGFyZW5jeSBmb3IgdGhlIGZ1dHVyZS5cIixcbiAgICB9LFxuICAgIGdvdl9oZWFyaW5nczoge1xuICAgICAgdGV4dDogXCJFbWVyZ2VuY3kgaGVhcmluZ3MgdW5jb3ZlciBjb3JydXB0aW9uLCByZXN1bHRpbmcgaW4gaGlnaC1wcm9maWxlIHJlc2lnbmF0aW9ucy4gV2hhdOKAmXMgeW91ciBuZXh0IG1vdmU/XCIsXG4gICAgICBjaG9pY2VzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0ZXh0OiBcIkFwcG9pbnQgbmV3IGV0aGljYWwgbGVhZGVycyDwn4yfXCIsXG4gICAgICAgICAgbmV4dDogXCJldGhpY2FsX2xlYWRlcnNcIixcbiAgICAgICAgICBmeDogeyBpbmZsdWVuY2U6IDE1IH0sXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0ZXh0OiBcIlBhc3MgYW50aS1jb3JydXB0aW9uIGxlZ2lzbGF0aW9uIPCfk5xcIixcbiAgICAgICAgICBuZXh0OiBcImFudGlfY29ycnVwdGlvblwiLFxuICAgICAgICAgIGZ4OiB7IGVmZmljaWVuY3k6IDE1IH0sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0sXG4gICAgZXRoaWNhbF9sZWFkZXJzOiB7XG4gICAgICB0ZXh0OiBcIk5ldyBsZWFkZXJzIGJyaW5nIGEgZnJlc2ggcGVyc3BlY3RpdmUgYW5kIGVhcm4gcHVibGljIHRydXN0LlwiLFxuICAgICAgY2hvaWNlczogW10sXG4gICAgICBlbmRpbmc6IFwiTGVhZGVyc2hpcCBSZXZpdGFsaXplcjogWW91IHJlZGVmaW5lZCBsZWFkZXJzaGlwIGluIGdvdmVybmFuY2UuXCIsXG4gICAgfSxcbiAgICBhbnRpX2NvcnJ1cHRpb246IHtcbiAgICAgIHRleHQ6IFwiQW50aS1jb3JydXB0aW9uIGxhd3MgY3JlYXRlIGEgY2xlYW5lciwgbW9yZSBlZmZpY2llbnQgZ292ZXJubWVudC5cIixcbiAgICAgIGNob2ljZXM6IFtdLFxuICAgICAgZW5kaW5nOlxuICAgICAgICBcIkNvcnJ1cHRpb24gRmlnaHRlcjogWW91ciBlZmZvcnRzIHJvb3RlZCBvdXQgc3lzdGVtaWMgaW5lZmZpY2llbmNpZXMuXCIsXG4gICAgfSxcblxuICAgIC8vIE9wdGlvbiAyOiBVc2UgU2VjcmV0cyBmb3IgTGV2ZXJhZ2VcbiAgICBsZXZlcmFnZV9zZWNyZXRzOiB7XG4gICAgICB0ZXh0OiBcIlN0cmF0ZWdpYyB1c2Ugb2Ygc2VjcmV0cyBlbnN1cmVzIHF1aWNrIHBvbGljeSBjaGFuZ2VzIGluIHlvdXIgZmF2b3IuIFdoYXTigJlzIG5leHQ/XCIsXG4gICAgICBjaG9pY2VzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0ZXh0OiBcIlNlY3VyZSBmdW5kaW5nIGZvciByZWZvcm1zIPCfkrBcIixcbiAgICAgICAgICBuZXh0OiBcImZ1bmRpbmdfcmVmb3Jtc1wiLFxuICAgICAgICAgIGZ4OiB7IGVmZmljaWVuY3k6IDE1LCBpbmZsdWVuY2U6IDEwIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0ZXh0OiBcIkZvcmdlIGFsbGlhbmNlcyB3aXRoIGtleSBmaWd1cmVzIPCfpJ1cIixcbiAgICAgICAgICBuZXh0OiBcImtleV9hbGxpYW5jZXNcIixcbiAgICAgICAgICBmeDogeyBpbmZsdWVuY2U6IDEwIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0ZXh0OiBcIkxhdW5jaCBjb3ZlcnQgcmVmb3JtIHByb2plY3RzIPCfm6DvuI9cIixcbiAgICAgICAgICBuZXh0OiBcImNvdmVydF9wcm9qZWN0c1wiLFxuICAgICAgICAgIGZ4OiB7IGVmZmljaWVuY3k6IDEwIH0sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0sXG4gICAgZnVuZGluZ19yZWZvcm1zOiB7XG4gICAgICB0ZXh0OiBcIlNlY3VyZWQgZnVuZGluZyBhY2NlbGVyYXRlcyBlZmZpY2llbmN5IGFuZCBpbm5vdmF0aW9uIGFjcm9zcyBkZXBhcnRtZW50cy4gV2hhdOKAmXMgbmV4dD9cIixcbiAgICAgIGNob2ljZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHRleHQ6IFwiRXN0YWJsaXNoIG92ZXJzaWdodCBjb21taXR0ZWVzIPCfk4tcIixcbiAgICAgICAgICBuZXh0OiBcIm92ZXJzaWdodF9jb21taXR0ZWVzXCIsXG4gICAgICAgICAgZng6IHsgaW5mbHVlbmNlOiAxMCB9LFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdGV4dDogXCJNb2Rlcm5pemUgZ292ZXJubWVudCBpbmZyYXN0cnVjdHVyZSDwn4+X77iPXCIsXG4gICAgICAgICAgbmV4dDogXCJtb2Rlcm5faW5mcmFcIixcbiAgICAgICAgICBmeDogeyBlZmZpY2llbmN5OiAxNSB9LFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9LFxuICAgIG92ZXJzaWdodF9jb21taXR0ZWVzOiB7XG4gICAgICB0ZXh0OiBcIk92ZXJzaWdodCBjb21taXR0ZWVzIGVuc3VyZSByZWZvcm1zIGFyZSBpbXBsZW1lbnRlZCBlZmZlY3RpdmVseS5cIixcbiAgICAgIGNob2ljZXM6IFtdLFxuICAgICAgZW5kaW5nOlxuICAgICAgICBcIkFjY291bnRhYmlsaXR5IEFkdm9jYXRlOiBZb3VyIHZpZ2lsYW5jZSBlbnN1cmVkIGxvbmctdGVybSBzdWNjZXNzLlwiLFxuICAgIH0sXG4gICAgbW9kZXJuX2luZnJhOiB7XG4gICAgICB0ZXh0OiBcIk1vZGVybiBpbmZyYXN0cnVjdHVyZSBzdHJlYW1saW5lcyBvcGVyYXRpb25zIGFuZCBpbXByb3ZlcyBlZmZpY2llbmN5LlwiLFxuICAgICAgY2hvaWNlczogW10sXG4gICAgICBlbmRpbmc6XG4gICAgICAgIFwiRWZmaWNpZW5jeSBDaGFtcGlvbjogWW91ciBlZmZvcnRzIGJyb3VnaHQgZ292ZXJuYW5jZSBpbnRvIHRoZSBtb2Rlcm4gZXJhLlwiLFxuICAgIH0sXG4gICAga2V5X2FsbGlhbmNlczoge1xuICAgICAgdGV4dDogXCJLZXkgYWxsaWFuY2VzIHdpdGggaW5mbHVlbnRpYWwgZmlndXJlcyBhZHZhbmNlIHlvdXIgcmVmb3JtIGFnZW5kYS5cIixcbiAgICAgIGNob2ljZXM6IFtdLFxuICAgICAgZW5kaW5nOiBcIlBvd2VyIEJyb2tlcjogWW91IGJ1aWx0IGFsbGlhbmNlcyB0byBkcml2ZSBtZWFuaW5nZnVsIGNoYW5nZS5cIixcbiAgICB9LFxuICAgIGNvdmVydF9wcm9qZWN0czoge1xuICAgICAgdGV4dDogXCJDb3ZlcnQgcHJvamVjdHMgYWRkcmVzcyBpbmVmZmljaWVuY2llcyB3aXRob3V0IGF0dHJhY3RpbmcgcHVibGljIGJhY2tsYXNoLlwiLFxuICAgICAgY2hvaWNlczogW10sXG4gICAgICBlbmRpbmc6IFwiU3RlYWx0aCBSZWZvcm1lcjogWW91IGFjaGlldmVkIHN1Y2Nlc3MgYmVoaW5kIHRoZSBzY2VuZXMuXCIsXG4gICAgfSxcblxuICAgIC8vIE9wdGlvbiAzOiBEZXN0cm95IHRoZSBBcmNoaXZlc1xuICAgIGRlc3Ryb3lfYXJjaGl2ZXM6IHtcbiAgICAgIHRleHQ6IFwiWW91IGRlc3Ryb3kgdGhlIGFyY2hpdmVzLCBlbnN1cmluZyBubyBvbmUgY2FuIG1pc3VzZSB0aGUgc2Vuc2l0aXZlIGluZm9ybWF0aW9uLiBXaGF04oCZcyB5b3VyIG5leHQgc3RlcD9cIixcbiAgICAgIGNob2ljZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHRleHQ6IFwiV29yayBxdWlldGx5IG9uIHJlZm9ybXMg8J+boO+4j1wiLFxuICAgICAgICAgIG5leHQ6IFwicXVpZXRfcmVmb3Jtc1wiLFxuICAgICAgICAgIGZ4OiB7IGVmZmljaWVuY3k6IDEwIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0ZXh0OiBcIkZvY3VzIG9uIHJlc3RvcmluZyBwdWJsaWMgdHJ1c3Qg8J+knVwiLFxuICAgICAgICAgIG5leHQ6IFwicmVzdG9yZV90cnVzdFwiLFxuICAgICAgICAgIGZ4OiB7IGluZmx1ZW5jZTogMTAgfSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHRleHQ6IFwiQ3JlYXRlIGEgY2l0aXplbiB3YXRjaGRvZyBncm91cCDwn5GAXCIsXG4gICAgICAgICAgbmV4dDogXCJ3YXRjaGRvZ19ncm91cFwiLFxuICAgICAgICAgIGZ4OiB7IGluZmx1ZW5jZTogMTUgfSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSxcbiAgICBxdWlldF9yZWZvcm1zOiB7XG4gICAgICB0ZXh0OiBcIlF1aWV0IGJ1dCBlZmZlY3RpdmUgcmVmb3JtcyBlbGltaW5hdGUgaW5lZmZpY2llbmNpZXMgd2l0aG91dCBwdWJsaWMgdXByb2FyLlwiLFxuICAgICAgY2hvaWNlczogW1xuICAgICAgICB7XG4gICAgICAgICAgdGV4dDogXCJJbmNyZWFzZSBhdXRvbWF0aW9uIGluIGRlcGFydG1lbnRzIPCfpJZcIixcbiAgICAgICAgICBuZXh0OiBcImF1dG9tYXRpb25fcmVmb3Jtc1wiLFxuICAgICAgICAgIGZ4OiB7IGVmZmljaWVuY3k6IDE1IH0sXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0ZXh0OiBcIkZvY3VzIG9uIHJ1cmFsIGFyZWFzIGZvciByZWZvcm0gb3V0cmVhY2gg8J+MvlwiLFxuICAgICAgICAgIG5leHQ6IFwicnVyYWxfcmVmb3Jtc1wiLFxuICAgICAgICAgIGZ4OiB7IGluZmx1ZW5jZTogMTAgfSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSxcbiAgICBhdXRvbWF0aW9uX3JlZm9ybXM6IHtcbiAgICAgIHRleHQ6IFwiQXV0b21hdGlvbiByZWZvcm1zIHJlZHVjZSBidXJlYXVjcmFjeSBhbmQgaW1wcm92ZSBlZmZpY2llbmN5LlwiLFxuICAgICAgY2hvaWNlczogW10sXG4gICAgICBlbmRpbmc6XG4gICAgICAgIFwiQXV0b21hdGlvbiBBZHZvY2F0ZTogWW91IHN0cmVhbWxpbmVkIGdvdmVybmFuY2UgdGhyb3VnaCB0ZWNobm9sb2d5LlwiLFxuICAgIH0sXG4gICAgcnVyYWxfcmVmb3Jtczoge1xuICAgICAgdGV4dDogXCJSZWZvcm1zIGJyaW5nIG1vZGVybiBnb3Zlcm5hbmNlIHRvIHJ1cmFsIGNvbW11bml0aWVzLCBlbXBvd2VyaW5nIGNpdGl6ZW5zLlwiLFxuICAgICAgY2hvaWNlczogW10sXG4gICAgICBlbmRpbmc6XG4gICAgICAgIFwiUnVyYWwgQ2hhbXBpb246IFlvdSBicm91Z2h0IGluY2x1c2l2ZSBnb3Zlcm5hbmNlIHRvIHVuZGVyc2VydmVkIGFyZWFzLlwiLFxuICAgIH0sXG4gICAgcmVzdG9yZV90cnVzdDoge1xuICAgICAgdGV4dDogXCJSZXN0b3JpbmcgdHJ1c3QgYnJpbmdzIHJlbmV3ZWQgaG9wZSBhbmQgc3VwcG9ydCBmb3IgdGhlIGdvdmVybm1lbnQuIFdoYXTigJlzIHlvdXIgbmV4dCBmb2N1cz9cIixcbiAgICAgIGNob2ljZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHRleHQ6IFwiRW5nYWdlIGNpdGl6ZW5zIGluIHBvbGljeS1tYWtpbmcg8J+TnFwiLFxuICAgICAgICAgIG5leHQ6IFwiY2l0aXplbl9lbmdhZ2VtZW50XCIsXG4gICAgICAgICAgZng6IHsgaW5mbHVlbmNlOiAxMCB9LFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdGV4dDogXCJTdHJlbmd0aGVuIG1lZGlhIHRyYW5zcGFyZW5jeSDwn5OwXCIsXG4gICAgICAgICAgbmV4dDogXCJtZWRpYV90cmFuc3BhcmVuY3lcIixcbiAgICAgICAgICBmeDogeyBpbmZsdWVuY2U6IDE1IH0sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0sXG4gICAgY2l0aXplbl9lbmdhZ2VtZW50OiB7XG4gICAgICB0ZXh0OiBcIkNpdGl6ZW5zIGJlY29tZSBhY3RpdmUgcGFydGljaXBhbnRzIGluIHBvbGljeS1tYWtpbmcsIGVuaGFuY2luZyB0cnVzdC5cIixcbiAgICAgIGNob2ljZXM6IFtdLFxuICAgICAgZW5kaW5nOlxuICAgICAgICBcIlRydXN0IEJ1aWxkZXI6IFlvdSBlbXBvd2VyZWQgY2l0aXplbnMgdG8gc2hhcGUgdGhlaXIgZ292ZXJubWVudC5cIixcbiAgICB9LFxuICAgIG1lZGlhX3RyYW5zcGFyZW5jeToge1xuICAgICAgdGV4dDogXCJUcmFuc3BhcmVudCBtZWRpYSBmb3N0ZXJzIGFjY291bnRhYmlsaXR5IGFuZCBwdWJsaWMgYXdhcmVuZXNzLlwiLFxuICAgICAgY2hvaWNlczogW10sXG4gICAgICBlbmRpbmc6IFwiTWVkaWEgQWxseTogWW91IGVuc3VyZWQgdGhlIGZyZWUgZmxvdyBvZiB0cnV0aGZ1bCBpbmZvcm1hdGlvbi5cIixcbiAgICB9LFxuICAgIHdhdGNoZG9nX2dyb3VwOiB7XG4gICAgICB0ZXh0OiBcIlRoZSB3YXRjaGRvZyBncm91cCBtb25pdG9ycyBnb3Zlcm5tZW50IGFjdGlvbnMsIGVuc3VyaW5nIGFjY291bnRhYmlsaXR5LlwiLFxuICAgICAgY2hvaWNlczogW10sXG4gICAgICBlbmRpbmc6XG4gICAgICAgIFwiU2VudGluZWwgb2YgSW50ZWdyaXR5OiBZb3VyIGVmZm9ydHMgY3JlYXRlZCBhIGN1bHR1cmUgb2YgdmlnaWxhbmNlLlwiLFxuICAgIH0sXG4gIH0sXG59O1xuXG4gICAgICAvLyBJbml0aWFsIGdhbWUgc3RhdGVcbiAgICAgIGNvbnN0IGluaXRpYWxTdGF0ZSA9IHtcbiAgICAgICAgcGhhc2U6IFBIQVNFUy5USVRMRSxcbiAgICAgICAgc2NlbmU6IFwiaW50cm9cIixcbiAgICAgICAgc3RhdHM6IHsgZWZmaWNpZW5jeTogMCwgaW5mbHVlbmNlOiAwLCBpbm5vdmF0aW9uOiAwLCBtZW1lczogMCB9LFxuICAgICAgICBwYXRoOiBbXSxcbiAgICAgICAgZW5kaW5nOiBudWxsLFxuICAgICAgfTtcbi8vIEZvb3RlciBDb21wb25lbnRcbiAgICAgIGZ1bmN0aW9uIEZvb3RlcigpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICA8Zm9vdGVyIGNsYXNzTmFtZT1cImJnLWdyYXktOTAwIHRleHQtd2hpdGUgcHktNCBtdC00IHRleHQtY2VudGVyIHctZnVsbFwiPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgIE1hZGUgd2l0aCA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LXJlZC01MDBcIj7inaQ8L3NwYW4+IGJ5IHRoZSBPRyBELk8uRy5FLlxuICAgICAgICAgICAgICBDb21tdW5pdHlcbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxwPk9HIERvZ2UgQ0E6IEE1V3pyZnpXYTRramdFalNYQ2Juc24xeHk1QWFudXEzVENaSkwxZGhwdW1wPC9wPlxuICAgICAgICAgIDwvZm9vdGVyPlxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICAvLyBNYWluIEFwcCBDb21wb25lbnRcbiAgICAgIGZ1bmN0aW9uIEFwcCgpIHtcbiAgICAgICAgY29uc3QgW3N0YXRlLCBzZXRTdGF0ZV0gPSBSZWFjdC51c2VTdGF0ZShpbml0aWFsU3RhdGUpO1xuXG4gICAgICAgIGNvbnN0IGhhbmRsZUNob2ljZSA9IChjaG9pY2UpID0+IHtcbiAgICAgICAgICBjb25zdCBuZXh0U2NlbmUgPSBHLnNjZW5lc1tjaG9pY2UubmV4dF07XG4gICAgICAgICAgaWYgKCFuZXh0U2NlbmUpIHJldHVybjtcblxuICAgICAgICAgIGNvbnN0IG5ld1N0YXRzID0geyAuLi5zdGF0ZS5zdGF0cyB9O1xuICAgICAgICAgIE9iamVjdC5rZXlzKGNob2ljZS5meCB8fCB7fSkuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgICAgICBuZXdTdGF0c1trZXldICs9IGNob2ljZS5meFtrZXldO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgY29uc3QgaXNFbmRpbmcgPSAhbmV4dFNjZW5lLmNob2ljZXMgfHwgbmV4dFNjZW5lLmNob2ljZXMubGVuZ3RoID09PSAwO1xuXG4gICAgICAgICAgc2V0U3RhdGUoKHByZXYpID0+ICh7XG4gICAgICAgICAgICAuLi5wcmV2LFxuICAgICAgICAgICAgc2NlbmU6IGNob2ljZS5uZXh0LFxuICAgICAgICAgICAgc3RhdHM6IG5ld1N0YXRzLFxuICAgICAgICAgICAgcGF0aDogWy4uLnByZXYucGF0aCwgY2hvaWNlLm5leHRdLFxuICAgICAgICAgICAgcGhhc2U6IGlzRW5kaW5nID8gUEhBU0VTLkVORElORyA6IFBIQVNFUy5TVE9SWSxcbiAgICAgICAgICAgIGVuZGluZzogaXNFbmRpbmcgPyBuZXh0U2NlbmUuZW5kaW5nIDogbnVsbCxcbiAgICAgICAgICB9KSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgcmVzZXRHYW1lID0gKCkgPT4gc2V0U3RhdGUoaW5pdGlhbFN0YXRlKTtcblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmctZ3JhZGllbnQtY3VzdG9tIG1pbi1oLXNjcmVlbiBmbGV4IGZsZXgtY29sIGp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgICAgICAgey8qIFN0YXRzIEJhciAqL31cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZml4ZWQgdG9wLTAgbGVmdC0wIHJpZ2h0LTAgYmctZ3JheS05MDAgdGV4dC13aGl0ZSBwLTQgc2hhZG93LW1kIGZsZXgganVzdGlmeS1hcm91bmQgdGV4dC1zbSBtZDp0ZXh0LWJhc2VcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTFcIj5cbiAgICAgICAgICAgICAgICA8VHJlbmRpbmdVcCAvPiA8c3Bhbj5FZmZpY2llbmN5OiB7c3RhdGUuc3RhdHMuZWZmaWNpZW5jeX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtMVwiPlxuICAgICAgICAgICAgICAgIDxVc2VycyAvPiA8c3Bhbj5JbmZsdWVuY2U6IHtzdGF0ZS5zdGF0cy5pbmZsdWVuY2V9PC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTFcIj5cbiAgICAgICAgICAgICAgICA8QnJhaW4gLz4gPHNwYW4+SW5ub3ZhdGlvbjoge3N0YXRlLnN0YXRzLmlubm92YXRpb259PC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTFcIj5cbiAgICAgICAgICAgICAgICA8U3RhciAvPiA8c3Bhbj5NZW1lczoge3N0YXRlLnN0YXRzLm1lbWVzfTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgey8qIEdhbWUgQ29udGVudCAqL31cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicC04IGJnLWdyYXktODAwIHJvdW5kZWQgc2hhZG93LWxnIHRleHQtY2VudGVyIHctMTEvMTIgbWQ6dy0zLzQgbXQtMTYgbXgtYXV0b1wiPlxuICAgICAgICAgICAgICB7c3RhdGUucGhhc2UgPT09IFBIQVNFUy5USVRMRSA/IChcbiAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgPGgxIGNsYXNzTmFtZT1cInRleHQtNHhsIGZvbnQtYm9sZFwiPkQuTy5HLkU8L2gxPlxuICAgICAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwibXQtNCB0ZXh0LWxnXCI+RGVwYXJ0bWVudCBPZiBHb3Zlcm5tZW50IEVmZmljaWVuY3k8L3A+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm10LTYgcHgtNiBweS0yIGJnLWJsdWUtNTAwIHRleHQtd2hpdGUgcm91bmRlZFwiXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldFN0YXRlKHsgLi4uc3RhdGUsIHBoYXNlOiBQSEFTRVMuU1RPUlkgfSl9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIFN0YXJ0XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgKSA6IHN0YXRlLnBoYXNlID09PSBQSEFTRVMuRU5ESU5HID8gKFxuICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICA8aDEgY2xhc3NOYW1lPVwidGV4dC0zeGwgZm9udC1ib2xkXCI+RW5kaW5nPC9oMT5cbiAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cIm10LTRcIj57Ry5zY2VuZXNbc3RhdGUuc2NlbmVdLnRleHR9PC9wPlxuICAgICAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwibXQtNCB0ZXh0LWxnIGZvbnQtc2VtaWJvbGRcIj57c3RhdGUuZW5kaW5nfTwvcD5cbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibXQtNiBweC02IHB5LTIgYmctZ3JlZW4tNTAwIHRleHQtd2hpdGUgcm91bmRlZFwiXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e3Jlc2V0R2FtZX1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgUmVwbGF5XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC1sZyBtYi02XCI+e0cuc2NlbmVzW3N0YXRlLnNjZW5lXS50ZXh0fTwvcD5cbiAgICAgICAgICAgICAgICAgIHtHLnNjZW5lc1tzdGF0ZS5zY2VuZV0uY2hvaWNlcy5tYXAoKGNob2ljZSwgaSkgPT4gKFxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAga2V5PXtpfVxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJsb2NrIHctZnVsbCBweC00IHB5LTIgYmctZ3JheS03MDAgaG92ZXI6YmctZ3JheS02MDAgdGV4dC1sZWZ0IHRleHQtd2hpdGUgcm91bmRlZCBtYi0yIHRyYW5zaXRpb24tY29sb3JzXCJcbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVDaG9pY2UoY2hvaWNlKX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHtjaG9pY2UudGV4dH1cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICB7LyogRm9vdGVyICovfVxuICAgICAgICAgICAgPEZvb3RlciAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICAvLyBNb3VudCB0aGUgYXBwXG4gICAgICBjb25zdCByb290ID0gUmVhY3RET00uY3JlYXRlUm9vdChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncm9vdCcpKTtcbiAgICAgIHJvb3QucmVuZGVyKDxBcHAgLz4pO1xuICAgICJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFDTSxJQUFNO0VBQUVBO0FBQVMsQ0FBQyxHQUFHQyxLQUFLOztBQUUxQjtBQUNBLElBQU1DLE1BQU0sR0FBRztFQUNiQyxLQUFLLEVBQUUsT0FBTztFQUNkQyxLQUFLLEVBQUUsT0FBTztFQUNkQyxNQUFNLEVBQUU7QUFDVixDQUFDOztBQUVEO0FBQ0EsSUFBTUMsVUFBVSxHQUFHQSxDQUFBLGtCQUNqQkwsS0FBQSxDQUFBTSxhQUFBO0VBQUtDLEtBQUssRUFBQyw0QkFBNEI7RUFBQ0MsS0FBSyxFQUFDLElBQUk7RUFBQ0MsTUFBTSxFQUFDLElBQUk7RUFBQ0MsT0FBTyxFQUFDLFdBQVc7RUFBQ0MsSUFBSSxFQUFDLE1BQU07RUFBQ0MsTUFBTSxFQUFDLGNBQWM7RUFBQ0MsV0FBVyxFQUFDO0FBQUcsZ0JBQ2xJ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</script></head>
  <body>
    <div id="root"><div class="bg-gradient-custom min-h-screen flex flex-col justify-between"><div class="fixed top-0 left-0 right-0 bg-gray-900 text-white p-4 shadow-md flex justify-around text-sm md:text-base"><div class="flex items-center space-x-1"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="23 6 13.5 15.5 8.5 10.5 1 18"></polyline><polyline points="17 6 23 6 23 12"></polyline></svg> <span>Efficiency: 0</span></div><div class="flex items-center space-x-1"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"></path><circle cx="9" cy="7" r="4"></circle><path d="M23 21v-2a4 4 0 0 0-3-3.87"></path><path d="M16 3.13a4 4 0 0 1 0 7.75"></path></svg> <span>Influence: 0</span></div><div class="flex items-center space-x-1"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 4.5a2.5 2.5 0 0 0-4.96-.46 2.5 2.5 0 0 0-1.98 3 2.5 2.5 0 0 0-1.32 4.24 3 3 0 0 0 .34 5.58 2.5 2.5 0 0 0 2.96 3.08A2.5 2.5 0 0 0 12 19.5a2.5 2.5 0 0 0 4.96.44 2.5 2.5 0 0 0 2.96-3.08 3 3 0 0 0 .34-5.58 2.5 2.5 0 0 0-1.32-4.24 2.5 2.5 0 0 0-1.98-3A2.5 2.5 0 0 0 12 4.5"></path><path d="M12 15v-2"></path><path d="M12 11v-2"></path></svg> <span>Innovation: 0</span></div><div class="flex items-center space-x-1"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"></polygon></svg> <span>Memes: 0</span></div></div><div class="p-8 bg-gray-800 rounded shadow-lg text-center w-11/12 md:w-3/4 mt-16 mx-auto"><h1 class="text-4xl font-bold">D.O.G.E</h1><p class="mt-4 text-lg">Department Of Government Efficiency</p><button class="mt-6 px-6 py-2 bg-blue-500 text-white rounded">Start</button></div><footer class="bg-gray-900 text-white py-4 mt-4 text-center w-full"><p>Made with <span class="text-red-500">❤</span> by the OG D.O.G.E. Community</p><p>OG Doge CA: A5WzrfzWa4kjgEjSXCbnsn1xy5Aanuq3TCZJL1dhpump</p></footer></div></div>
    
    <!-- Development version of React for better error messages -->
    <script src="https://unpkg.com/react@18/umd/react.development.js" crossorigin=""></script>
    <script src="https://unpkg.com/react-dom@18/umd/react-dom.development.js" crossorigin=""></script>
    <script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
    
    <!-- Your app scripts -->
    <script type="text/babel" data-type="module">
      const { useState } = React;
      
      // Game constants and components
      const PHASES = {
        TITLE: "title",
        STORY: "story",
        ENDING: "ending",
      };

      // Icons components
      const TrendingUp = () => (
        <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2">
          <polyline points="23 6 13.5 15.5 8.5 10.5 1 18"/>
          <polyline points="17 6 23 6 23 12"/>
        </svg>
      );

      const Users = () => (
        <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2">
          <path d="M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"/>
          <circle cx="9" cy="7" r="4"/>
          <path d="M23 21v-2a4 4 0 0 0-3-3.87"/>
          <path d="M16 3.13a4 4 0 0 1 0 7.75"/>
        </svg>
      );

      const Brain = () => (
        <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2">
          <path d="M12 4.5a2.5 2.5 0 0 0-4.96-.46 2.5 2.5 0 0 0-1.98 3 2.5 2.5 0 0 0-1.32 4.24 3 3 0 0 0 .34 5.58 2.5 2.5 0 0 0 2.96 3.08A2.5 2.5 0 0 0 12 19.5a2.5 2.5 0 0 0 4.96.44 2.5 2.5 0 0 0 2.96-3.08 3 3 0 0 0 .34-5.58 2.5 2.5 0 0 0-1.32-4.24 2.5 2.5 0 0 0-1.98-3A2.5 2.5 0 0 0 12 4.5"/>
          <path d="M12 15v-2"/>
          <path d="M12 11v-2"/>
        </svg>
      );

      const Star = () => (
        <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2">
          <polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"/>
        </svg>
      );
// Game data
      const G = {
        scenes: {
    // Introduction Scene
          intro: {
            text: "Welcome to the Department of Government Efficiency (D.O.G.E). Your mission: optimize governance while balancing Elon's innovation and Trump's vision for 'winning'. Where do you start?",
            choices: [
              {
                text: "Analyze inefficiencies 🔍",
                next: "analyze",
                fx: { efficiency: 5 },
              },
              {
                text: "Host a public forum 🗣️",
                next: "public_forum",
                fx: { influence: 5 },
              },
              {
                text: "Unleash the Meme Army 🐸",
                next: "meme_army",
                fx: { memes: 10 },
              },
              {
                text: "Explore secret archives 📂",
                next: "secret_archives",
                fx: { innovation: 5 },
              },
            ],
          },
          // Path: Analyze Inefficiencies
          analyze: {
            text: "Your analysis reveals outdated systems and redundant processes. What do you do next?",
            choices: [
              {
                text: "Automate processes with AI 🤖",
                next: "ai_automation",
                fx: { efficiency: 10 },
              },
              {
                text: "Form a task force 🚨",
                next: "task_force",
                fx: { influence: 5, efficiency: 5 },
              },
              {
                text: "Blame it on bureaucracy 🗂️",
                next: "bureaucracy_blame",
                fx: { memes: 5 },
              },
            ],
          },
          ai_automation: {
            text: "AI implementation improves efficiency, but it creates resistance among employees. What's your next step?",
            choices: [
              {
                text: "Draft ethical AI guidelines 📜",
                next: "ethical_ai",
                fx: { influence: 10 },
              },
              {
                text: "Expand AI into other departments 🚀",
                next: "expand_ai",
                fx: { efficiency: 20 },
              },
              {
                text: "Create a public AI awareness campaign 📣",
                next: "ai_awareness",
                fx: { innovation: 10, influence: 5 },
              },
            ],
          },
          ethical_ai: {
            text: "Your ethical AI guidelines gain global recognition. What's next?",
            choices: [
              {
                text: "Collaborate with international AI regulators 🌍",
                next: "global_ai",
                fx: { influence: 15, innovation: 10 },
              },
              {
                text: "Launch an AI innovation hub 🏢",
                next: "ai_hub",
                fx: { innovation: 15, efficiency: 10 },
              },
            ],
          },
          global_ai: {
            text: "Your collaboration shapes international AI standards, securing long-term global efficiency.",
            choices: [],
            ending: "AI Diplomat: You redefined the future of ethical AI globally.",
          },
          ai_hub: {
            text: "The innovation hub becomes a global leader in cutting-edge AI development.",
            choices: [],
            ending: "Tech Visionary: Your leadership inspired global AI advancements.",
          },
          expand_ai: {
            text: "Expanding AI boosts efficiency but sparks debates about automation's impact on jobs. What's next?",
            choices: [
              {
                text: "Introduce re-skilling programs for workers 👩‍🏫",
                next: "reskill_workers",
                fx: { influence: 10, efficiency: 5 },
              },
              {
                text: "Focus on AI-human collaboration 🤝",
                next: "ai_collaboration",
                fx: { innovation: 10 },
              },
            ],
          },
          reskill_workers: {
            text: "Re-skilling programs successfully integrate employees into new roles.",
            choices: [],
            ending: "Workforce Advocate: You ensured progress without leaving anyone behind.",
          },
          ai_collaboration: {
            text: "AI-human collaboration models become a benchmark for innovative governance.",
            choices: [],
            ending: "Collaboration Architect: You harmonized technology and humanity.",
          },
          ai_awareness: {
            text: "Your public awareness campaign gains widespread support. What do you focus on next?",
            choices: [
              {
                text: "Highlight AI's role in environmental conservation 🌱",
                next: "ai_environment",
                fx: { innovation: 10 },
              },
              {
                text: "Showcase AI's potential in healthcare 🏥",
                next: "ai_healthcare",
                fx: { innovation: 15 },
              },
            ],
          },
          ai_environment: {
            text: "AI-powered environmental solutions transform resource management globally.",
            choices: [],
            ending: "Eco-Tech Leader: You pioneered AI-driven sustainability.",
          },
          ai_healthcare: {
            text: "AI revolutionizes healthcare, saving countless lives.",
            choices: [],
            ending: "Health Innovator: You transformed public health with AI.",
          },
// Task Force Path
          task_force: {
            text: "The task force uncovers widespread inefficiencies. What's your next step?",
            choices: [
              {
                text: "Streamline resource allocation 📊",
                next: "streamline_resources",
                fx: { efficiency: 15 },
              },
              {
                text: "Collaborate with other government agencies 🤝",
                next: "collaborate_agencies",
                fx: { influence: 10, efficiency: 5 },
              },
              {
                text: "Seek public input on inefficiencies 📣",
                next: "public_input",
                fx: { influence: 15 },
              },
            ],
          },
          streamline_resources: {
            text: "Streamlining resource allocation improves efficiency across departments. What do you focus on next?",
            choices: [
              {
                text: "Integrate data-driven decision-making 📊",
                next: "data_driven",
                fx: { efficiency: 20, innovation: 10 },
              },
              {
                text: "Establish inter-departmental task forces 🚧",
                next: "inter_department",
                fx: { influence: 15 },
              },
            ],
          },
          data_driven: {
            text: "Data-driven decision-making transforms government operations.",
            choices: [],
            ending: "Data Strategist: You brought precision to public administration.",
          },
          inter_department: {
            text: "Collaboration between departments breaks silos and enhances productivity.",
            choices: [],
            ending: "Unity Pioneer: You united departments for seamless governance.",
          },
          collaborate_agencies: {
            text: "Inter-agency collaboration creates new opportunities. What do you prioritize?",
            choices: [
              {
                text: "Build a unified government portal 🌐",
                next: "government_portal",
                fx: { innovation: 15 },
              },
              {
                text: "Standardize processes across agencies 📋",
                next: "process_standardization",
                fx: { efficiency: 15 },
              },
            ],
          },
          government_portal: {
            text: "The unified portal provides citizens easy access to government services.",
            choices: [],
            ending: "Digital Pioneer: You made governance accessible for all.",
          },
          process_standardization: {
            text: "Standardized processes streamline operations nationwide.",
            choices: [],
            ending: "Process Champion: Your reforms set a gold standard.",
          },
          public_input: {
            text: "Public input reveals hidden inefficiencies and inspires innovative solutions. What's next?",
            choices: [
              {
                text: "Crowdsource solutions for critical issues 💡",
                next: "crowdsource_solutions",
                fx: { influence: 10, innovation: 10 },
              },
              {
                text: "Hold public forums for real-time feedback 📣",
                next: "real_time_feedback",
                fx: { influence: 15 },
              },
            ],
          },
          crowdsource_solutions: {
            text: "Crowdsourced solutions bring fresh ideas to governance.",
            choices: [],
            ending: "Crowdsourcing Pioneer: You empowered citizens to solve problems.",
          },
          real_time_feedback: {
            text: "Real-time feedback drives continuous improvement in government services.",
            choices: [],
            ending: "Feedback Leader: You fostered transparency and adaptability.",
          },
          // Bureaucracy Blame Path
          bureaucracy_blame: {
            text: "Your humorous blame campaign gains public attention, making governance issues relatable. What's next?",
            choices: [
              {
                text: "Create a satirical bureaucracy task force 🎭",
                next: "satirical_task_force",
                fx: { memes: 15 },
              },
              {
                text: "Engage meme creators to amplify the message 🐸",
                next: "meme_creators",
                fx: { memes: 10, influence: 5 },
              },
              {
                text: "Turn the campaign into a public documentary 🎥",
                next: "public_documentary",
                fx: { influence: 15 },
              },
            ],
          },
          satirical_task_force: {
            text: "The satirical task force highlights absurd inefficiencies and inspires action.",
            choices: [],
            ending: "Humor Activist: You turned laughter into a catalyst for change.",
          },
          meme_creators: {
            text: "Meme creators turn the campaign into a viral sensation, driving reform.",
            choices: [],
            ending: "Meme Mobilizer: You redefined activism with creativity.",
          },
          public_documentary: {
            text: "The documentary educates citizens and ignites a wave of grassroots reform movements.",
            choices: [],
            ending: "Grassroots Hero: You empowered citizens to drive change.",
          },
// Public Forum Path
          public_forum: {
            text: "The public eagerly shares ideas to improve governance. What's next?",
            choices: [
              {
                text: "Form citizen advisory boards 👥",
                next: "advisory_boards",
                fx: { influence: 10 },
              },
              {
                text: "Launch transparency dashboards 📊",
                next: "transparency_dashboards",
                fx: { innovation: 10 },
              },
              {
                text: "Create meme-based reforms 🐸",
                next: "meme_reforms",
                fx: { memes: 10 },
              },
            ],
          },
          advisory_boards: {
            text: "Citizen advisory boards are formed, providing new ideas and perspectives. What do you do next?",
            choices: [
              {
                text: "Adopt citizen-driven policies 📜",
                next: "citizen_policies",
                fx: { efficiency: 15 },
              },
              {
                text: "Expand advisory boards nationwide 🌍",
                next: "national_boards",
                fx: { influence: 15 },
              },
              {
                text: "Host a yearly advisory summit 🏛️",
                next: "advisory_summit",
                fx: { innovation: 10, influence: 10 },
              },
            ],
          },
          citizen_policies: {
            text: "Citizen-driven policies transform public trust and government efficiency. What's next?",
            choices: [
              {
                text: "Create local-level advisory boards 🏡",
                next: "local_boards",
                fx: { influence: 10 },
              },
              {
                text: "Integrate policies with technology apps 📱",
                next: "policy_apps",
                fx: { innovation: 15 },
              },
            ],
          },
          local_boards: {
            text: "Local advisory boards foster a sense of community and engagement in governance.",
            choices: [],
            ending: "Community Builder: You brought governance closer to the people.",
          },
          policy_apps: {
            text: "Technology apps make citizen policies accessible and actionable.",
            choices: [],
            ending: "Policy Innovator: You combined technology and governance seamlessly.",
          },
          national_boards: {
            text: "Nationwide boards inspire public participation on an unprecedented scale.",
            choices: [],
            ending: "Visionary Leader: Your outreach united citizens across the country.",
          },
          advisory_summit: {
            text: "The annual summit becomes a hub for innovation and collaboration. What's next?",
            choices: [
              {
                text: "Partner with international advisory groups 🤝",
                next: "global_partnership",
                fx: { influence: 15, innovation: 10 },
              },
              {
                text: "Use summit ideas to craft new legislation 📜",
                next: "summit_legislation",
                fx: { efficiency: 10 },
              },
            ],
          },
          global_partnership: {
            text: "Partnerships with global advisory groups spark international reforms.",
            choices: [],
            ending: "Global Reformer: You inspired collaboration beyond borders.",
          },
          summit_legislation: {
            text: "New legislation based on summit ideas revolutionizes governance.",
            choices: [],
            ending: "Lawmaker Visionary: You turned ideas into impactful laws.",
          },
          // Transparency Dashboards Path
          transparency_dashboards: {
            text: "Transparency dashboards provide real-time access to government data. What's next?",
            choices: [
              {
                text: "Integrate dashboards with public apps 📱",
                next: "dashboard_apps",
                fx: { innovation: 15 },
              },
              {
                text: "Promote dashboards globally 🌍",
                next: "global_dashboards",
                fx: { influence: 15 },
              },
              {
                text: "Use dashboards to crowdsource problem-solving 💡",
                next: "crowdsource_dashboards",
                fx: { innovation: 10, influence: 10 },
              },
            ],
          },
          dashboard_apps: {
            text: "Apps make dashboards accessible to citizens, empowering them to hold the government accountable.",
            choices: [
              {
                text: "Develop AI features for the dashboards 🤖",
                next: "ai_dashboards",
                fx: { innovation: 15 },
              },
              {
                text: "Focus on rural areas for app adoption 🌾",
                next: "rural_apps",
                fx: { influence: 10 },
              },
            ],
          },
          ai_dashboards: {
            text: "AI-enhanced dashboards predict inefficiencies and provide actionable insights.",
            choices: [],
            ending: "Tech Pioneer: You brought predictive analytics to governance.",
          },
          rural_apps: {
            text: "Rural communities adopt apps, fostering inclusive governance.",
            choices: [],
            ending: "Rural Innovator: You made governance accessible to all.",
          },
          global_dashboards: {
            text: "Transparency dashboards inspire global reforms in accountability.",
            choices: [],
            ending: "Global Advocate: Your efforts redefined transparency worldwide.",
          },
          crowdsource_dashboards: {
            text: "Crowdsourcing through dashboards accelerates problem-solving. What's next?",
            choices: [
              {
                text: "Expand crowdsourcing to global issues 🌍",
                next: "global_crowdsourcing",
                fx: { innovation: 15, influence: 10 },
              },
              {
                text: "Use crowdsourcing to innovate public services 🚀",
                next: "public_innovation",
                fx: { innovation: 15 },
              },
            ],
          },
          global_crowdsourcing: {
            text: "Global crowdsourcing addresses critical issues like climate change and poverty.",
            choices: [],
            ending: "Global Problem Solver: You turned governance into a collaborative force.",
          },
          public_innovation: {
            text: "Innovations in public services transform government efficiency and citizen satisfaction.",
            choices: [],
            ending: "Service Innovator: You revolutionized public services through collaboration.",
          },
          // Meme-Based Reforms Path
          meme_reforms: {
            text: "Your meme-based reforms gain massive traction and public approval. What's next?",
            choices: [
              {
                text: "Launch a public meme competition 🎉",
                next: "public_meme_competition",
                fx: { memes: 15 },
              },
              {
                text: "Develop meme-based educational campaigns 📚",
                next: "educational_memes",
                fx: { innovation: 10, memes: 5 },
              },
              {
                text: "Create a government meme department 🏢",
                next: "meme_department",
                fx: { memes: 15 },
              },
            ],
          },
          public_meme_competition: {
            text: "The meme competition inspires creativity and civic awareness. What do you do next?",
            choices: [
              {
                text: "Publish winning memes in a national anthology 📖",
                next: "meme_anthology",
                fx: { memes: 10 },
              },
              {
                text: "Use winning memes in public service campaigns 📣",
                next: "service_campaigns",
                fx: { influence: 10, memes: 10 },
              },
            ],
          },
          meme_anthology: {
            text: "The anthology becomes a bestseller, highlighting the power of humor.",
            choices: [],
            ending: "Cultural Icon: Your anthology brought humor to the masses.",
          },
          service_campaigns: {
            text: "Public service campaigns powered by memes drive engagement and awareness.",
            choices: [],
            ending: "Campaign Mastermind: You used memes to transform civic engagement.",
          },
          educational_memes: {
            text: "Educational campaigns using memes improve public understanding of complex policies. What's next?",
            choices: [
              {
                text: "Introduce meme-based civic courses 📖",
                next: "civic_courses",
                fx: { innovation: 10, influence: 10 },
              },
              {
                text: "Develop a meme-powered voting initiative 🗳️",
                next: "meme_voting",
                fx: { influence: 15 },
              },
            ],
          },
          civic_courses: {
            text: "Civic courses make education engaging and accessible to all.",
            choices: [],
            ending: "Civic Meme Innovator: You brought humor to civic education.",
          },
          meme_voting: {
            text: "Meme-powered voting drives record turnout and strengthens democracy.",
            choices: [],
            ending: "Democracy Defender: You revolutionized elections with creativity.",
          },
          meme_department: {
            text: "The meme department becomes a cultural hub for humor-driven reforms.",
            choices: [],
            ending: "Meme Minister: You institutionalized the power of memes in governance.",
          },
          // Meme Army Path
          meme_army: {
            text: "Your meme campaign gains massive traction, captivating audiences worldwide. What's next?",
            choices: [
              {
                text: "Collaborate with influencers 🌟",
                next: "influencer_collab",
                fx: { influence: 10, memes: 10 },
              },
              {
                text: "Create a Meme DAO 📜",
                next: "create_meme_dao",
                fx: { innovation: 10, memes: 15 },
              },
              {
                text: "Host a meme competition 🎉",
                next: "meme_competition",
                fx: { influence: 5, memes: 10 },
              },
            ],
          },
          influencer_collab: {
            text: "Influencers amplify your message, making your memes a cultural phenomenon. What's next?",
            choices: [
              {
                text: "Turn memes into merchandise 🛍️",
                next: "meme_merch",
                fx: { influence: 10, memes: 10 },
              },
              {
                text: "Use memes to educate citizens 📚",
                next: "educational_memes",
                fx: { innovation: 10, memes: 5 },
              },
              {
                text: "Create meme-powered charity campaigns 💝",
                next: "meme_charity",
                fx: { influence: 15, memes: 10 },
              },
            ],
          },
          meme_merch: {
            text: "Merchandise profits fund public projects and spread the meme movement even further. What do you do next?",
            choices: [
              {
                text: "Invest profits into meme-based schools 🎓",
                next: "meme_schools",
                fx: { innovation: 15 },
              },
              {
                text: "Use profits to fund infrastructure upgrades 🏗️",
                next: "meme_infrastructure",
                fx: { efficiency: 15 },
              },
            ],
          },
          meme_schools: {
            text: "Meme-based schools teach humor and critical thinking to the next generation.",
            choices: [],
            ending: "Meme Mentor: You shaped a future where humor and knowledge go hand in hand.",
          },
          meme_infrastructure: {
            text: "Infrastructure upgrades funded by memes lead to better roads, faster internet, and happier citizens.",
            choices: [],
            ending: "Infrastructure Icon: You turned memes into a force for physical progress.",
          },
          meme_charity: {
            text: "Charity campaigns powered by memes raise unprecedented funds. What's your next step?",
            choices: [
              {
                text: "Build global charity networks 🌍",
                next: "global_charity",
                fx: { influence: 20, innovation: 10 },
              },
              {
                text: "Develop tech to gamify charity campaigns 🎮",
                next: "gamify_charity",
                fx: { innovation: 15 },
              },
            ],
          },
          global_charity: {
            text: "Your charity networks improve lives worldwide, building bridges across nations.",
            choices: [],
            ending: "Global Humanitarian: You turned memes into a tool for global good.",
          },
          gamify_charity: {
            text: "Gamification of charity campaigns makes giving back fun and engaging.",
            choices: [],
            ending: "Charity Game Changer: You revolutionized philanthropy with innovation.",
          },
          // Meme DAO Path
          create_meme_dao: {
            text: "The Meme DAO gains massive support, enabling crowdfunding for reform projects. What's next?",
            choices: [
              {
                text: "Expand the DAO globally 🌍",
                next: "global_dao",
                fx: { influence: 20, innovation: 10 },
              },
              {
                text: "Use DAO funds for transparency dashboards 📊",
                next: "dashboard_funding",
                fx: { efficiency: 15 },
              },
              {
                text: "Partner DAO with tech companies 🤝",
                next: "tech_partnership",
                fx: { innovation: 20 },
              },
            ],
          },
          global_dao: {
            text: "The global DAO inspires international citizen-led reforms.",
            choices: [],
            ending: "Citizen Diplomat: You created a global movement for change.",
          },
          dashboard_funding: {
            text: "DAO funds improve transparency and public accountability.",
            choices: [],
            ending: "Transparency Titan: Your DAO transformed public trust.",
          },
          tech_partnership: {
            text: "Partnerships with tech companies revolutionize DAO efficiency.",
            choices: [],
            ending: "Tech Reformer: You pioneered citizen-tech collaboration.",
          },
          // Host a Meme Competition
          meme_competition: {
            text: "The competition engages the public and sparks creativity. What's next?",
            choices: [
              {
                text: "Publish winning memes in a national anthology 📖",
                next: "meme_anthology",
                fx: { memes: 10 },
              },
              {
                text: "Use winning memes in public service campaigns 📣",
                next: "service_campaigns",
                fx: { influence: 10, memes: 10 },
              },
              {
                text: "Turn winning memes into NFTs 🖼️",
                next: "nft_memes",
                fx: { innovation: 10, memes: 10 },
              },
            ],
          },
          nft_memes: {
            text: "The NFT collection generates significant revenue for government projects.",
            choices: [],
            ending: "Digital Innovator: You blended art, technology, and reform.",
          },
// Path: Explore Secret Archives
    secret_archives: {
      text: "You uncover classified documents revealing inefficiencies and hidden agendas. What’s your next move?",
      choices: [
        {
          text: "Expose the truth 🕵️‍♂️",
          next: "expose_truth",
          fx: { influence: 15, memes: 10 },
        },
        {
          text: "Use secrets for leverage 💼",
          next: "leverage_secrets",
          fx: { efficiency: 10, influence: 10 },
        },
        {
          text: "Destroy the archives 🔥",
          next: "destroy_archives",
          fx: { memes: 5 },
        },
      ],
    },

    // Option 1: Expose the Truth
    expose_truth: {
      text: "The truth shocks the nation, sparking protests and demands for change. What’s your next move?",
      choices: [
        {
          text: "Rally citizens for reforms 🗣️",
          next: "citizen_rally",
          fx: { influence: 15 },
        },
        {
          text: "Work with investigative journalists 📰",
          next: "journalist_collab",
          fx: { influence: 10, innovation: 5 },
        },
        {
          text: "Push for emergency government hearings 🏛️",
          next: "gov_hearings",
          fx: { influence: 20 },
        },
      ],
    },
    citizen_rally: {
      text: "Massive citizen rallies lead to legislative reforms and greater transparency. What’s your next step?",
      choices: [
        {
          text: "Create permanent citizen reform groups 🌟",
          next: "reform_groups",
          fx: { influence: 10, efficiency: 10 },
        },
        {
          text: "Push for direct democracy initiatives 🗳️",
          next: "direct_democracy",
          fx: { innovation: 10 },
        },
      ],
    },
    reform_groups: {
      text: "Citizen reform groups sustain momentum for change across the nation.",
      choices: [],
      ending:
        "People’s Advocate: You empowered the public to take control of governance.",
    },
    direct_democracy: {
      text: "Direct democracy initiatives give citizens a more active role in government decisions.",
      choices: [],
      ending:
        "Democracy Architect: You redefined governance by giving power to the people.",
    },
    journalist_collab: {
      text: "Investigative reports reveal deeper issues, accelerating systemic reforms. What’s next?",
      choices: [
        {
          text: "Focus on judicial reforms ⚖️",
          next: "judicial_reforms",
          fx: { efficiency: 10 },
        },
        {
          text: "Develop whistleblower protection laws 🛡️",
          next: "whistleblower_laws",
          fx: { influence: 15 },
        },
      ],
    },
    judicial_reforms: {
      text: "Judicial reforms enhance accountability and fairness in governance.",
      choices: [],
      ending: "Justice Champion: Your reforms restored trust in the system.",
    },
    whistleblower_laws: {
      text: "Whistleblower protections encourage more revelations, leading to continued improvements.",
      choices: [],
      ending:
        "Guardian of Truth: Your policies ensured transparency for the future.",
    },
    gov_hearings: {
      text: "Emergency hearings uncover corruption, resulting in high-profile resignations. What’s your next move?",
      choices: [
        {
          text: "Appoint new ethical leaders 🌟",
          next: "ethical_leaders",
          fx: { influence: 15 },
        },
        {
          text: "Pass anti-corruption legislation 📜",
          next: "anti_corruption",
          fx: { efficiency: 15 },
        },
      ],
    },
    ethical_leaders: {
      text: "New leaders bring a fresh perspective and earn public trust.",
      choices: [],
      ending: "Leadership Revitalizer: You redefined leadership in governance.",
    },
    anti_corruption: {
      text: "Anti-corruption laws create a cleaner, more efficient government.",
      choices: [],
      ending:
        "Corruption Fighter: Your efforts rooted out systemic inefficiencies.",
    },

    // Option 2: Use Secrets for Leverage
    leverage_secrets: {
      text: "Strategic use of secrets ensures quick policy changes in your favor. What’s next?",
      choices: [
        {
          text: "Secure funding for reforms 💰",
          next: "funding_reforms",
          fx: { efficiency: 15, influence: 10 },
        },
        {
          text: "Forge alliances with key figures 🤝",
          next: "key_alliances",
          fx: { influence: 10 },
        },
        {
          text: "Launch covert reform projects 🛠️",
          next: "covert_projects",
          fx: { efficiency: 10 },
        },
      ],
    },
    funding_reforms: {
      text: "Secured funding accelerates efficiency and innovation across departments. What’s next?",
      choices: [
        {
          text: "Establish oversight committees 📋",
          next: "oversight_committees",
          fx: { influence: 10 },
        },
        {
          text: "Modernize government infrastructure 🏗️",
          next: "modern_infra",
          fx: { efficiency: 15 },
        },
      ],
    },
    oversight_committees: {
      text: "Oversight committees ensure reforms are implemented effectively.",
      choices: [],
      ending:
        "Accountability Advocate: Your vigilance ensured long-term success.",
    },
    modern_infra: {
      text: "Modern infrastructure streamlines operations and improves efficiency.",
      choices: [],
      ending:
        "Efficiency Champion: Your efforts brought governance into the modern era.",
    },
    key_alliances: {
      text: "Key alliances with influential figures advance your reform agenda.",
      choices: [],
      ending: "Power Broker: You built alliances to drive meaningful change.",
    },
    covert_projects: {
      text: "Covert projects address inefficiencies without attracting public backlash.",
      choices: [],
      ending: "Stealth Reformer: You achieved success behind the scenes.",
    },

    // Option 3: Destroy the Archives
    destroy_archives: {
      text: "You destroy the archives, ensuring no one can misuse the sensitive information. What’s your next step?",
      choices: [
        {
          text: "Work quietly on reforms 🛠️",
          next: "quiet_reforms",
          fx: { efficiency: 10 },
        },
        {
          text: "Focus on restoring public trust 🤝",
          next: "restore_trust",
          fx: { influence: 10 },
        },
        {
          text: "Create a citizen watchdog group 👀",
          next: "watchdog_group",
          fx: { influence: 15 },
        },
      ],
    },
    quiet_reforms: {
      text: "Quiet but effective reforms eliminate inefficiencies without public uproar.",
      choices: [
        {
          text: "Increase automation in departments 🤖",
          next: "automation_reforms",
          fx: { efficiency: 15 },
        },
        {
          text: "Focus on rural areas for reform outreach 🌾",
          next: "rural_reforms",
          fx: { influence: 10 },
        },
      ],
    },
    automation_reforms: {
      text: "Automation reforms reduce bureaucracy and improve efficiency.",
      choices: [],
      ending:
        "Automation Advocate: You streamlined governance through technology.",
    },
    rural_reforms: {
      text: "Reforms bring modern governance to rural communities, empowering citizens.",
      choices: [],
      ending:
        "Rural Champion: You brought inclusive governance to underserved areas.",
    },
    restore_trust: {
      text: "Restoring trust brings renewed hope and support for the government. What’s your next focus?",
      choices: [
        {
          text: "Engage citizens in policy-making 📜",
          next: "citizen_engagement",
          fx: { influence: 10 },
        },
        {
          text: "Strengthen media transparency 📰",
          next: "media_transparency",
          fx: { influence: 15 },
        },
      ],
    },
    citizen_engagement: {
      text: "Citizens become active participants in policy-making, enhancing trust.",
      choices: [],
      ending:
        "Trust Builder: You empowered citizens to shape their government.",
    },
    media_transparency: {
      text: "Transparent media fosters accountability and public awareness.",
      choices: [],
      ending: "Media Ally: You ensured the free flow of truthful information.",
    },
    watchdog_group: {
      text: "The watchdog group monitors government actions, ensuring accountability.",
      choices: [],
      ending:
        "Sentinel of Integrity: Your efforts created a culture of vigilance.",
    },
  },
};

      // Initial game state
      const initialState = {
        phase: PHASES.TITLE,
        scene: "intro",
        stats: { efficiency: 0, influence: 0, innovation: 0, memes: 0 },
        path: [],
        ending: null,
      };
// Footer Component
      function Footer() {
        return (
          <footer className="bg-gray-900 text-white py-4 mt-4 text-center w-full">
            <p>
              Made with <span className="text-red-500">❤</span> by the OG D.O.G.E.
              Community
            </p>
            <p>OG Doge CA: A5WzrfzWa4kjgEjSXCbnsn1xy5Aanuq3TCZJL1dhpump</p>
          </footer>
        );
      }

      // Main App Component
      function App() {
        const [state, setState] = React.useState(initialState);

        const handleChoice = (choice) => {
          const nextScene = G.scenes[choice.next];
          if (!nextScene) return;

          const newStats = { ...state.stats };
          Object.keys(choice.fx || {}).forEach((key) => {
            newStats[key] += choice.fx[key];
          });

          const isEnding = !nextScene.choices || nextScene.choices.length === 0;

          setState((prev) => ({
            ...prev,
            scene: choice.next,
            stats: newStats,
            path: [...prev.path, choice.next],
            phase: isEnding ? PHASES.ENDING : PHASES.STORY,
            ending: isEnding ? nextScene.ending : null,
          }));
        };

        const resetGame = () => setState(initialState);

        return (
          <div className="bg-gradient-custom min-h-screen flex flex-col justify-between">
            {/* Stats Bar */}
            <div className="fixed top-0 left-0 right-0 bg-gray-900 text-white p-4 shadow-md flex justify-around text-sm md:text-base">
              <div className="flex items-center space-x-1">
                <TrendingUp /> <span>Efficiency: {state.stats.efficiency}</span>
              </div>
              <div className="flex items-center space-x-1">
                <Users /> <span>Influence: {state.stats.influence}</span>
              </div>
              <div className="flex items-center space-x-1">
                <Brain /> <span>Innovation: {state.stats.innovation}</span>
              </div>
              <div className="flex items-center space-x-1">
                <Star /> <span>Memes: {state.stats.memes}</span>
              </div>
            </div>

            {/* Game Content */}
            <div className="p-8 bg-gray-800 rounded shadow-lg text-center w-11/12 md:w-3/4 mt-16 mx-auto">
              {state.phase === PHASES.TITLE ? (
                <>
                  <h1 className="text-4xl font-bold">D.O.G.E</h1>
                  <p className="mt-4 text-lg">Department Of Government Efficiency</p>
                  <button
                    className="mt-6 px-6 py-2 bg-blue-500 text-white rounded"
                    onClick={() => setState({ ...state, phase: PHASES.STORY })}
                  >
                    Start
                  </button>
                </>
              ) : state.phase === PHASES.ENDING ? (
                <>
                  <h1 className="text-3xl font-bold">Ending</h1>
                  <p className="mt-4">{G.scenes[state.scene].text}</p>
                  <p className="mt-4 text-lg font-semibold">{state.ending}</p>
                  <button
                    className="mt-6 px-6 py-2 bg-green-500 text-white rounded"
                    onClick={resetGame}
                  >
                    Replay
                  </button>
                </>
              ) : (
                <>
                  <p className="text-lg mb-6">{G.scenes[state.scene].text}</p>
                  {G.scenes[state.scene].choices.map((choice, i) => (
                    <button
                      key={i}
                      className="block w-full px-4 py-2 bg-gray-700 hover:bg-gray-600 text-left text-white rounded mb-2 transition-colors"
                      onClick={() => handleChoice(choice)}
                    >
                      {choice.text}
                    </button>
                  ))}
                </>
              )}
            </div>

            {/* Footer */}
            <Footer />
          </div>
        );
      }

      // Mount the app
      const root = ReactDOM.createRoot(document.getElementById('root'));
      root.render(<App />);
    </script>
  

</body></html>