{
  "ml": {
    "v": "4",
    "fs": [
      {
        "id": 0,
        "prob": 0.8108052611351013,
        "class": 0
      }
    ],
    "prob": 0.81080526,
    "class": 0,
    "models": [
      {
        "m": "az",
        "prob": 0.81080526,
        "class": 0
      },
      {
        "m": "az/scripts",
        "prob": 0.57714105,
        "class": 0
      },
      {
        "m": "az/python",
        "prob": 0.31906685,
        "class": 0
      }
    ],
    "version": "v16.16",
    "thresholds": [
      0.9961138,
      0.99909174
    ],
    "analyzed_at": "2026-05-10T08:28:59Z"
  },
  "path": "quit_smoking.py",
  "raw": {
    "v": "4",
    "fs": [
      {
        "f": "H(Cm)Md(Pt)",
        "k": {
          "source.shebang": "/usr/bin/env python3",
          "source.imports[0]": "''.join",
          "source.imports[1]": "', '.join",
          "source.imports[2]": "(now - timedelta(days=i)).strftime",
          "source.imports[3]": "Flask",
          "source.imports[4]": "abort",
          "source.imports[5]": "achieved_benefits.append",
          "source.imports[6]": "app.logger.debug",
          "source.imports[7]": "app.logger.error",
          "source.imports[8]": "app.route",
          "source.imports[9]": "app.run",
          "source.strings[0]": "\n                \u003c/select\u003e\u003cbr\u003e\n                \u003clabel for=\"saved-per-day\"\u003eMoney saved per day:\u003c/label\u003e\u003cbr\u003e\n                $\u003cinput type=\"number\" name=\"saved-per-day\" id=\"saved-per-day\" step=\"0.01\" required\u003e\u003cbr\u003e\n                \u003cinput type=\"submit\" value=\"Track Progress\"\u003e\n            \u003c/form\u003e\n            \u003cp\u003e\u003ca href=\"/help\"\u003eNeed help?\u003c/a\u003e\u003c/p\u003e\n        \u003c/div\u003e\n    \u003c/body\u003e\n    \u003c/html\u003e\n    ",
          "source.strings[1]": "\n    \u003c!DOCTYPE html\u003e\n    \u003chtml lang=\"en\"\u003e\n    \u003chead\u003e\n        \u003cmeta charset=\"UTF-8\"\u003e\n        \u003cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"\u003e\n        \u003ctitle\u003eQuit Smoking Tracker\u003c/title\u003e\n        \u003cstyle\u003e\n            body { font-family: Arial, sans-serif; line-height: 1.6; margin: 40px; background-color: #1e1e1e; color: #ffffff; }\n            .container { max-width: 600px; margin: 0 auto; text-align: center; }\n            .btn { \n                display: inline-block;\n                padding: 10px 20px;\n                background-color: #4CAF50;\n                color: white;\n                text-decoration: none;\n                border-radius: 5px;\n                margin: 10px;\n            }\n            .btn:hover {\n                background-color: #45a049;\n            }\n            select, input[type=\"number\"] {\n                padding: 8px;\n                margin: 5px;\n                border-radius: 4px;\n                border: 1px solid #ccc;\n                background-color: #2c2c2c;\n                color: #ffffff;\n            }\n            form {\n                margin-top: 20px;\n            }\n        \u003c/style\u003e\n        \u003cscript\u003e\n        function updateDays() {\n            var month = document.getElementById('month').value;\n            var year = document.getElementById('year').value;\n            var day = document.getElementById('day');\n            var days = new Date(year, month, 0).getDate();\n            var currentDay = day.value;\n            day.innerHTML = '';\n            for (var i = 1; i \u003c= days; i++) {\n                var option = document.createElement('option');\n                option.value = i.toString().padStart(2, '0');\n                option.text = i.toString().padStart(2, '0');\n                day.appendChild(option);\n            }\n            if (currentDay \u003c= days) {\n                day.value = currentDay;\n            }\n        }\n        \u003c/script\u003e\n    \u003c/head\u003e\n    \u003cbody\u003e\n        \u003cdiv class=\"container\"\u003e\n            \u003ch1\u003eWelcome to Quit Smoking Tracker\u003c/h1\u003e\n            \u003cp\u003eTake control of your health and track your progress in quitting smoking.\u003c/p\u003e\n            \u003cform action=\"/quitsmoking\" method=\"get\"\u003e\n                \u003clabel for=\"month\"\u003eQuit Date:\u003c/label\u003e\u003cbr\u003e\n                \u003cselect id=\"month\" name=\"month\" onchange=\"updateDays()\" required\u003e\n                    {{ month_options | safe }}\n                \u003c/select\u003e\n                \u003cselect id=\"day\" name=\"day\" required\u003e\n                    {{ day_options | safe }}\n                \u003c/select\u003e\n                \u003cselect id=\"year\" name=\"year\" onchange=\"updateDays()\" required\u003e\n                    {{ year_options | safe }}\n                \u003c/select\u003e\u003cbr\u003e\n                \u003cinput type=\"number\" name=\"saved-per-day\" placeholder=\"Money Saved Per Day ($)\" step=\"0.01\" required\u003e\u003cbr\u003e\n                \u003cinput type=\"submit\" value=\"Start Tracking Now\" class=\"btn\"\u003e\n            \u003c/form\u003e\n            \u003cp\u003eCurrent server date: {{ now.strftime('%m-%d-%Y') }}\u003c/p\u003e\n            \u003ca href=\"/help\" class=\"btn\"\u003eView Help Guide\u003c/a\u003e\n        \u003c/div\u003e\n    \u003c/body\u003e\n    \u003c/html\u003e\n    ",
          "source.strings[2]": "\n    \u003chtml\u003e\n    \u003chead\u003e\n        \u003ctitle\u003eQuit Smoking Tracker\u003c/title\u003e\n        \u003cstyle\u003e\n            body {{ font-family: Arial, sans-serif; line-height: 1.6; margin: 40px; background-color: #1e1e1e; color: #ffffff; }}\n            .container {{ max-width: 600px; margin: 0 auto; text-align: center; }}\n            select, input[type=\"number\"] {{ padding: 8px; margin: 5px; border-radius: 4px; border: 1px solid #ccc; }}\n            input[type=\"submit\"] {{ padding: 10px 20px; background-color: #4CAF50; color: white; border: none; border-radius: 5px; cursor: pointer; }}\n            input[type=\"submit\"]:hover {{ background-color: #45a049; }}\n        \u003c/style\u003e\n    \u003c/head\u003e\n    \u003cbody\u003e\n        \u003cdiv class=\"container\"\u003e\n            \u003ch2\u003eQuit Smoking Tracker\u003c/h2\u003e\n            \u003cform action=\"/quitsmoking\" method=\"get\"\u003e\n                \u003clabel for=\"quit-date\"\u003eQuit date:\u003c/label\u003e\u003cbr\u003e\n                \u003cselect name=\"quit-date\" id=\"quit-date\" required\u003e\n                    ",
          "source.strings[3]": "\n\u003c!DOCTYPE html\u003e\n\u003chtml lang=\"en\"\u003e\n\u003chead\u003e\n    \u003cmeta charset=\"UTF-8\"\u003e\n    \u003cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"\u003e\n    \u003ctitle\u003eQuit Smoking Progress\u003c/title\u003e\n    \u003cstyle\u003e\n        body { font-family: Verdana, sans-serif; line-height: 1.6; margin: 20px; background-color: #121212; color: #e0e0e0; }\n        .container { max-width: 95%; margin: 0 auto; text-align: left; }\n        .stats { font-size: 26px; margin-bottom: 20px; }\n        .milestones, .purchases, .benefits { font-size: 22px; margin-bottom: 20px; }\n        h1, h2 { margin-bottom: 10px; font-size: 24px; color: #bb86fc; }\n        h3 { color: #03dac6; }\n        ul { padding-left: 20px; }\n        li { margin-bottom: 10px; }\n        .save-more { color: #ff7597; }\n        .purchase-item { color: #64ffda; }\n        .important-word { color: #ff7597; font-weight: bold; }\n        .time-left-label { color: #bb86fc; }\n        .time-left-value { color: #03dac6; }\n        .time-interval { color: #64ffda; font-weight: bold; }\n        .benefit-description { color: #e0e0e0; }\n        .progress-title { color: #cf6679; font-size: 32px; font-weight: bold; }\n        .quit-date { color: #64ffda; }\n        .time-quit { color: #03dac6; font-weight: bold; }\n        .money-saved { color: #64ffda; font-weight: bold; }\n        .purchase-amount { color: #bb86fc; }\n        a { color: #bb86fc; }\n        a:hover { color: #03dac6; }\n    \u003c/style\u003e\n    \u003cscript\u003e\n        function updateTime() {\n            const quitDate = new Date({{ year }}, {{ month - 1 }}, {{ day }}, 9, 0, 0);\n            const now = new Date();\n            const diff = Math.floor((now - quitDate) / 1000);\n            \n            const weeks = Math.floor(diff / 604800);\n            const days = Math.floor((diff % 604800) / 86400);\n            const hours = Math.floor((diff % 86400) / 3600);\n            const minutes = Math.floor((diff % 3600) / 60);\n            const seconds = diff % 60;\n            \n            let timeString = '';\n            if (weeks \u003e 0) timeString += weeks + (weeks === 1 ? ' week, ' : ' weeks, ');\n            if (days \u003e 0) timeString += days + (days === 1 ? ' day, ' : ' days, ');\n            if (hours \u003e 0) timeString += hours + (hours === 1 ? ' hour, ' : ' hours, ');\n            if (minutes \u003e 0) timeString += minutes + (minutes === 1 ? ' minute, ' : ' minutes, ');\n            timeString += seconds + (seconds === 1 ? ' second' : ' seconds');\n            \n            document.getElementById('time-quit').textContent = timeString;\n            \n            const totalSaved = (diff * {{ saved_per_second }}).toFixed(2);\n            document.getElementById('money-saved').textContent = '$' + numberWithCommas(totalSaved);\n        }\n        \n        function numberWithCommas(x) {\n            return x.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\n        }\n        \n        setInterval(updateTime, 1000);\n    \u003c/script\u003e\n\u003c/head\u003e\n\u003cbody onload=\"updateTime()\"\u003e\n    \u003cdiv class=\"container\"\u003e\n        \u003ch1 class=\"progress-title\"\u003eQuit Smoking Progress\u003c/h1\u003e\n        \u003cdiv class=\"stats\"\u003e\n            Quit Date: \u003cspan class=\"quit-date\"\u003e{{ month }}/{{ day }}/{{ year }} 9:00 AM\u003c/span\u003e\u003cbr\u003e\n            Time Quit: \u003cspan class=\"time-quit\"\u003e\u003cspan id=\"time-quit\"\u003e\u003c/span\u003e\u003c/span\u003e\u003cbr\u003e\n            Money Saved: \u003cspan class=\"money-saved\"\u003e\u003cspan id=\"money-saved\"\u003e\u003c/span\u003e\u003c/span\u003e\n        \u003c/div\u003e\n        \n        \u003ch2\u003eSuggested purchases based on your savings:\u003c/h2\u003e\n        \u003cdiv class=\"purchases\"\u003e\n            \u003cul\u003e\n            {% for amount, item in suggested_purchases %}\n                {% if total_saved \u003e= amount %}\n                    \u003cli\u003e\u003cspan class=\"purchase-item\"\u003e{{ item.split('(')[0] }}\u003c/span\u003e\u003cspan class=\"purchase-amount\"\u003e({{ item.split('(')[1] }}\u003c/span\u003e\u003c/li\u003e\n                {% else %}\n                    {% set money_needed = (amount - total_saved) | round(2) %}\n                    {% set days_left = ceil(money_needed / saved_per_day) %}\n                    {% set time_left = display_time(days_left * 24 * 60 * 60, 2) %}\n                    \u003cli\u003e\u003cspan class=\"purchase-item\"\u003e{{ item.split('(')[0] }}\u003c/span\u003e\u003cspan class=\"purchase-amount\"\u003e({{ item.split('(')[1] }}\u003c/span\u003e - \u003cspan class=\"save-more\"\u003eSave {{ format_money(money_needed) }} more\u003c/span\u003e \u003cspan class=\"time-left-value\"\u003e(about {{ time_left }} left)\u003c/span\u003e\u003c/li\u003e\n                {% endif %}\n            {% endfor %}\n            \u003c/ul\u003e\n        \u003c/div\u003e\n        \n        \u003ch2\u003eHealth benefits:\u003c/h2\u003e\n        \u003cdiv class=\"benefits\"\u003e\n            \u003ch3\u003eAchieved benefits:\u003c/h3\u003e\n            \u003cul\u003e\n            {% for seconds, desc in achieved_benefits %}\n                \u003cli\u003e\u003cspan class=\"benefit-description\"\u003e{{ desc | safe }}\u003c/span\u003e\u003c/li\u003e\n            {% endfor %}\n            \u003c/ul\u003e\n            \n            \u003ch3\u003eUpcoming benefits:\u003c/h3\u003e\n            \u003cul\u003e\n            {% for seconds, desc, time_left in upcoming_benefits %}\n                \u003cli\u003e\n                    \u003cspan class=\"benefit-description\"\u003e{{ desc | safe }}\u003c/span\u003e\n                    \u003cbr\u003e\n                    \u003cspan class=\"time-left-label\"\u003eTime left:\u003c/span\u003e \u003cspan class=\"time-left-value\"\u003e{{ time_left }}\u003c/span\u003e\n                \u003c/li\u003e\n            {% endfor %}\n            \u003c/ul\u003e\n        \u003c/div\u003e\n        \u003cp\u003e\u003ca href=\"/help\"\u003eNeed help?\u003c/a\u003e\u003c/p\u003e\n    \u003c/div\u003e\n\u003c/body\u003e\n\u003c/html\u003e\n",
          "source.strings[4]": "%m-%d-%Y",
          "source.strings[5]": "--debug",
          "source.strings[6]": "--host",
          "source.strings[7]": "--port",
          "source.strings[8]": "/quitsmoking",
          "source.strings[9]": "1 month: You now cough less and have fewer instances of shortness of breath",
          "source.has_imports": true,
          "source.imports[10]": "argparse",
          "source.imports[11]": "argparse.ArgumentParser",
          "source.imports[12]": "datetime",
          "source.imports[13]": "datetime(1900, i, 1).strftime",
          "source.imports[14]": "datetime.now",
          "source.imports[15]": "display_time",
          "source.imports[16]": "flask",
          "source.imports[17]": "float",
          "source.imports[18]": "format_money",
          "source.imports[19]": "functools",
          "source.imports[20]": "generate_input_page",
          "source.imports[21]": "generate_tracking_page",
          "source.imports[22]": "highlighted_desc.replace",
          "source.imports[23]": "int",
          "source.imports[24]": "len",
          "source.imports[25]": "lru_cache",
          "source.imports[26]": "map",
          "source.imports[27]": "math",
          "source.imports[28]": "name.rstrip",
          "source.imports[29]": "parse_arguments",
          "source.imports[30]": "parser.add_argument",
          "source.imports[31]": "parser.parse_args",
          "source.imports[32]": "print",
          "source.imports[33]": "quit_date.split",
          "source.imports[34]": "range",
          "source.imports[35]": "re",
          "source.imports[36]": "render_template_string",
          "source.imports[37]": "request.args.get",
          "source.imports[38]": "result.append",
          "source.imports[39]": "result[0].endswith",
          "source.imports[40]": "round",
          "source.imports[41]": "str",
          "source.imports[42]": "sys",
          "source.imports[43]": "sys.exit",
          "source.imports[44]": "time_difference.total_seconds",
          "source.imports[45]": "timedelta",
          "source.imports[46]": "upcoming_benefits.append",
          "source.strings[10]": "1 year: Your risk of coronary heart disease is now about half that of someone who continues to smoke",
          "source.strings[11]": "10 minutes: Your heart rate drops",
          "source.strings[12]": "10 years: Your risk of death from lung cancer will have halved compared with a smoker\\'s",
          "source.strings[13]": "12 hours: The carbon monoxide level in your blood has decreased dramatically, oxygen levels in your blood have improved, and the carbon monoxide level in your blood drops to normal",
          "source.strings[14]": "127.0.0.1",
          "source.strings[15]": "15 years: Your risk of coronary heart disease drops to close to that of someone who does not smoke",
          "source.strings[16]": "2 weeks: You now have a lower risk of heart attack",
          "source.strings[17]": "20 minutes: Your resting heart rate has already reduced (this is a key indicator of your overall fitness level)",
          "source.strings[18]": "20 years: Your risk of heart attack and stroke will be similar to that of someone who has never smoked",
          "source.strings[19]": "24 hours: The nicotine level in your blood drops to a negligible amount",
          "source.strings[20]": "48 hours: All carbon monoxide is flushed out. Your lungs are clearing out mucus, your senses of taste and smell are improving, and previously damaged nerve endings start to regrow",
          "source.strings[21]": "5 years: Your risk of cancers of the mouth, throat, and voice box drops by half",
          "source.strings[22]": "7 days: After a week without smoking, the carbon monoxide in your blood drops to normal levels",
          "source.strings[23]": "72 hours: Breathing feels easier as your bronchial tubes have started to relax. Your energy is increasing, and your lung capacity (the ability of the lungs to fill up with air) is improving",
          "source.strings[24]": "8 hours: Nicotine in your system has halved",
          "source.strings[25]": "\u003c/option\u003e",
          "source.strings[26]": "\u003c/span\u003e",
          "source.strings[27]": "\u003coption value=",
          "source.strings[28]": "\u003cspan class='important-word'\u003e",
          "source.strings[29]": "A high-end computer or gaming console",
          "source.strings[30]": "A luxury vacation",
          "source.strings[31]": "A movie ticket",
          "source.strings[32]": "A new gadget or electronics accessory",
          "source.strings[33]": "A new item of clothing",
          "source.strings[34]": "A new smartphone or tablet",
          "source.strings[35]": "A nice dinner at a restaurant",
          "source.strings[36]": "A takeaway meal",
          "source.strings[37]": "A used car or major home renovation",
          "source.strings[38]": "A weekend getaway",
          "source.strings[39]": "Achieved Benefit: ",
          "source.strings[40]": "Error processing tracking page: ",
          "source.strings[41]": "Error starting server: ",
          "source.strings[42]": "Host to run the server on (default: 127.0.0.1)",
          "source.strings[43]": "Port to run the server on (default: 5000)",
          "source.strings[44]": "Quit Smoking Tracker Web Application",
          "source.strings[45]": "Run in debug mode",
          "source.strings[46]": "There was an error processing your information. Please try again.",
          "source.strings[47]": "Total Achieved Benefits: ",
          "source.strings[48]": "Total Upcoming Benefits: ",
          "source.strings[49]": "__main__",
          "source.strings[50]": "bronchial tubes",
          "source.strings[51]": "cancers",
          "source.strings[52]": "carbon monoxide",
          "source.strings[53]": "coronary heart disease",
          "source.strings[54]": "f\"${amount:,.2f}",
          "source.strings[55]": "f\"\u003cspan class='important-word'\u003e{word}\u003c/span\u003e",
          "source.strings[56]": "f\"Achieved Benefit: {highlighted_desc}",
          "source.strings[57]": "f\"Error processing tracking page: {str(e)}",
          "source.strings[58]": "f\"Error starting server: {e}",
          "source.strings[59]": "f\"Total Achieved Benefits: {len(achieved_benefits)}",
          "source.strings[60]": "f\"Total Upcoming Benefits: {len(upcoming_benefits)}",
          "source.strings[61]": "f\"{int(value)} {name}",
          "source.strings[62]": "f\"{item} ({format_money(amount)})",
          "source.strings[63]": "f\"{month}-{day}-{year}",
          "source.strings[64]": "f'''\n    \u003chtml\u003e\n    \u003chead\u003e\n        \u003ctitle\u003eQuit Smoking Tracker\u003c/title\u003e\n        \u003cstyle\u003e\n            body {{ font-family: Arial, sans-serif; line-height: 1.6; margin: 40px; background-color: #1e1e1e; color: #ffffff; }}\n            .container {{ max-width: 600px; margin: 0 auto; text-align: center; }}\n            select, input[type=\"number\"] {{ padding: 8px; margin: 5px; border-radius: 4px; border: 1px solid #ccc; }}\n            input[type=\"submit\"] {{ padding: 10px 20px; background-color: #4CAF50; color: white; border: none; border-radius: 5px; cursor: pointer; }}\n            input[type=\"submit\"]:hover {{ background-color: #45a049; }}\n        \u003c/style\u003e\n    \u003c/head\u003e\n    \u003cbody\u003e\n        \u003cdiv class=\"container\"\u003e\n            \u003ch2\u003eQuit Smoking Tracker\u003c/h2\u003e\n            \u003cform action=\"/quitsmoking\" method=\"get\"\u003e\n                \u003clabel for=\"quit-date\"\u003eQuit date:\u003c/label\u003e\u003cbr\u003e\n                \u003cselect name=\"quit-date\" id=\"quit-date\" required\u003e\n                    {date_options}\n                \u003c/select\u003e\u003cbr\u003e\n                \u003clabel for=\"saved-per-day\"\u003eMoney saved per day:\u003c/label\u003e\u003cbr\u003e\n                $\u003cinput type=\"number\" name=\"saved-per-day\" id=\"saved-per-day\" step=\"0.01\" required\u003e\u003cbr\u003e\n                \u003cinput type=\"submit\" value=\"Track Progress\"\u003e\n            \u003c/form\u003e\n            \u003cp\u003e\u003ca href=\"/help\"\u003eNeed help?\u003c/a\u003e\u003c/p\u003e\n        \u003c/div\u003e\n    \u003c/body\u003e\n    \u003c/html\u003e\n    ",
          "source.strings[65]": "f'\u003coption value=\"{(now - timedelta(days=i)).strftime(\"%m-%d-%Y\")}\"\u003e{(now - timedelta(days=i)).strftime(\"%m-%d-%Y\")}\u003c/option\u003e",
          "source.strings[66]": "f'\u003coption value=\"{i:02d}\"\u003e{datetime(1900, i, 1).strftime(\"%B\")}\u003c/option\u003e",
          "source.strings[67]": "f'\u003coption value=\"{i:02d}\"\u003e{i:02d}\u003c/option\u003e",
          "source.strings[68]": "f'\u003coption value=\"{year}\"\u003e{year}\u003c/option\u003e",
          "source.strings[69]": "heart attack",
          "source.strings[70]": "heart rate",
          "source.strings[71]": "lung cancer",
          "source.strings[72]": "lung capacity",
          "source.strings[73]": "minutes",
          "source.strings[74]": "months",
          "source.strings[75]": "nerve endings",
          "source.strings[76]": "nicotine",
          "source.strings[77]": "oxygen levels",
          "source.strings[78]": "saved-per-day",
          "source.strings[79]": "seconds",
          "source.strings[80]": "shortness of breath",
          "source.strings[81]": "store_true",
          "source.functions[0]": "display_time",
          "source.functions[1]": "format_money",
          "source.functions[2]": "generate_input_page",
          "source.functions[3]": "generate_tracking_page",
          "source.functions[4]": "home",
          "source.functions[5]": "page",
          "source.functions[6]": "parse_arguments"
        },
        "x": 4,
        "id": 0,
        "is": [
          "Flask",
          "argparse.ArgumentParser",
          "parser.add_argument",
          "parser.add_argument",
          "parser.add_argument",
          "parser.parse_args",
          "lru_cache",
          "name.rstrip",
          "result.append",
          "int",
          "result[0].endswith",
          "', '.join",
          "', '.join",
          "format_money",
          "app.route",
          "int",
          "request.args.get",
          "int",
          "request.args.get",
          "int",
          "request.args.get",
          "float",
          "request.args.get",
          "generate_input_page",
          "datetime.now",
          "generate_tracking_page",
          "''.join",
          "(now - timedelta(days=i)).strftime",
          "timedelta",
          "(now - timedelta(days=i)).strftime",
          "timedelta",
          "range",
          "map",
          "quit_date.split",
          "datetime",
          "datetime.now",
          "time_difference.total_seconds",
          "round",
          "highlighted_desc.replace",
          "achieved_benefits.append",
          "app.logger.debug",
          "display_time",
          "int",
          "upcoming_benefits.append",
          "app.logger.debug",
          "len",
          "app.logger.debug",
          "len",
          "render_template_string",
          "app.logger.error",
          "str",
          "abort",
          "app.route",
          "datetime.now",
          "''.join",
          "datetime(1900, i, 1).strftime",
          "datetime",
          "range",
          "''.join",
          "range",
          "''.join",
          "range",
          "render_template_string",
          "parse_arguments",
          "app.run",
          "print",
          "sys.exit",
          "flask",
          "argparse",
          "functools",
          "re",
          "datetime",
          "math",
          "sys"
        ],
        "ms": {
          "file": {
            "size": 17451.0
          },
          "text": {
            "digit_ratio": 0.05,
            "space_count": 4623.0,
            "total_lines": 393.0,
            "char_entropy": 4.78,
            "unique_chars": 88.0,
            "import_density": 18.83,
            "lines_over_200": 3.0,
            "string_density": 0.56,
            "avg_line_length": 43.4,
            "max_line_length": 292.0,
            "empty_line_ratio": 0.09,
            "last_line_length": 19.0,
            "most_common_char": "e",
            "whitespace_ratio": 0.29,
            "most_common_ratio": 0.06,
            "identifier_density": 0.8,
            "line_length_stddev": 37.65,
            "normalized_import_count": 3.73,
            "normalized_string_count": 11.05,
            "repeated_char_sequences": 155.0,
            "suspicious_string_ratio": 0.03,
            "max_inline_whitespace_run": 2.0,
            "normalized_function_count": 0.35,
            "trailing_whitespace_lines": 19.0,
            "imports_to_functions_ratio": 10.57,
            "strings_to_functions_ratio": 31.29,
            "suspicious_identifier_ratio": 0.02,
            "normalized_unique_identifiers": 12.3,
            "identifiers_to_functions_ratio": 15.14
          },
          "imports": {
            "total": 74.0,
            "stdlib_count": 13.0,
            "stdlib_ratio": 0.18,
            "unique_modules": 47.0,
            "third_party_count": 61.0,
            "third_party_ratio": 0.82
          },
          "strings": {
            "total": 219.0,
            "ip_count": 2.0,
            "avg_length": 113.07,
            "max_length": 5218.0,
            "path_count": 2.0,
            "avg_entropy": 2.74,
            "sql_strings": 2.0,
            "total_bytes": 24763.0,
            "entropy_stddev": 1.4,
            "very_long_strings": 5.0,
            "embedded_code_candidates": 4.0
          },
          "comments": {
            "chars": 138.0,
            "lines": 5.0,
            "total": 5.0,
            "to_code_ratio": 0.01
          },
          "functions": {
            "total": 7.0,
            "length_stddev": 26.82,
            "avg_name_length": 12.57,
            "no_params_count": 7.0,
            "avg_length_lines": 29.57,
            "max_length_lines": 84.0,
            "min_length_lines": 2.0,
            "density_per_100_lines": 1.78,
            "code_in_functions_ratio": 0.53
          },
          "identifiers": {
            "total": 316.0,
            "avg_length": 8.01,
            "max_length": 22.0,
            "min_length": 1.0,
            "avg_entropy": 2.48,
            "reuse_ratio": 0.34,
            "unique_count": 106.0,
            "length_stddev": 4.78,
            "sequential_names": 2.0,
            "single_char_count": 2.0,
            "single_char_ratio": 0.02,
            "high_entropy_count": 2.0,
            "high_entropy_ratio": 0.02,
            "all_lowercase_ratio": 0.92,
            "all_uppercase_ratio": 0.04,
            "double_underscore_count": 1.0,
            "underscore_prefix_count": 1.0
          }
        },
        "ss": [
          [
            293,
            "f\"${amount:,.2f}"
          ],
          [
            293,
            "f"
          ],
          [
            295,
            "$"
          ],
          [
            384,
            "Quit Smoking Tracker Web Application"
          ],
          [
            385,
            "Quit Smoking Tracker Web Application"
          ],
          [
            448,
            "--host"
          ],
          [
            449,
            "--host"
          ],
          [
            466,
            "127.0.0.1"
          ],
          [
            467,
            "127.0.0.1"
          ],
          [
            484,
            "Host to run the server on (default: 127.0.0.1)"
          ],
          [
            485,
            "Host to run the server on (default: 127.0.0.1)"
          ],
          [
            558,
            "--port"
          ],
          [
            559,
            "--port"
          ],
          [
            597,
            "Port to run the server on (default: 5000)"
          ],
          [
            598,
            "Port to run the server on (default: 5000)"
          ],
          [
            666,
            "--debug"
          ],
          [
            667,
            "--debug"
          ],
          [
            684,
            "store_true"
          ],
          [
            685,
            "store_true"
          ],
          [
            703,
            "Run in debug mode"
          ],
          [
            704,
            "Run in debug mode"
          ],
          [
            775,
            "weeks"
          ],
          [
            776,
            "weeks"
          ],
          [
            798,
            "days"
          ],
          [
            799,
            "days"
          ],
          [
            819,
            "hours"
          ],
          [
            820,
            "hours"
          ],
          [
            840,
            "minutes"
          ],
          [
            841,
            "minutes"
          ],
          [
            861,
            "seconds"
          ],
          [
            862,
            "seconds"
          ],
          [
            973,
            "years"
          ],
          [
            974,
            "years"
          ],
          [
            1014,
            "months"
          ],
          [
            1015,
            "months"
          ],
          [
            1054,
            "weeks"
          ],
          [
            1055,
            "weeks"
          ],
          [
            1081,
            "days"
          ],
          [
            1082,
            "days"
          ],
          [
            1106,
            "hours"
          ],
          [
            1107,
            "hours"
          ],
          [
            1131,
            "minutes"
          ],
          [
            1132,
            "minutes"
          ],
          [
            1156,
            "seconds"
          ],
          [
            1157,
            "seconds"
          ],
          [
            1376,
            "s"
          ],
          [
            1377,
            "s"
          ],
          [
            1407,
            "f\"{int(value)} {name}"
          ],
          [
            1407,
            "f"
          ],
          [
            1421,
            " "
          ],
          [
            1533,
            "years"
          ],
          [
            1534,
            "years"
          ],
          [
            1542,
            "year"
          ],
          [
            1543,
            "year"
          ],
          [
            1550,
            "months"
          ],
          [
            1551,
            "months"
          ],
          [
            1560,
            "month"
          ],
          [
            1561,
            "month"
          ],
          [
            1586,
            ", "
          ],
          [
            1587,
            ", "
          ],
          [
            1624,
            ", "
          ],
          [
            1625,
            ", "
          ],
          [
            1680,
            "10 minutes: Your heart rate drops"
          ],
          [
            1681,
            "10 minutes: Your heart rate drops"
          ],
          [
            1729,
            "20 minutes: Your resting heart rate has already reduced (this is a key indicator of your overall fitness level)"
          ],
          [
            1730,
            "20 minutes: Your resting heart rate has already reduced (this is a key indicator of your overall fitness level)"
          ],
          [
            1857,
            "8 hours: Nicotine in your system has halved"
          ],
          [
            1858,
            "8 hours: Nicotine in your system has halved"
          ],
          [
            1917,
            "12 hours: The carbon monoxide level in your blood has decreased dramatically, oxygen levels in your blood have improved, and the"
          ],
          [
            1918,
            "12 hours: The carbon monoxide level in your blood has decreased dramatically, oxygen levels in your blood have improved, and the"
          ],
          [
            2114,
            "24 hours: The nicotine level in your blood drops to a negligible amount"
          ],
          [
            2115,
            "24 hours: The nicotine level in your blood drops to a negligible amount"
          ],
          [
            2203,
            "48 hours: All carbon monoxide is flushed out. Your lungs are clearing out mucus, your senses of taste and smell are improving, a"
          ],
          [
            2204,
            "48 hours: All carbon monoxide is flushed out. Your lungs are clearing out mucus, your senses of taste and smell are improving, a"
          ],
          [
            2400,
            "72 hours: Breathing feels easier as your bronchial tubes have started to relax. Your energy is increasing, and your lung capacit"
          ],
          [
            2401,
            "72 hours: Breathing feels easier as your bronchial tubes have started to relax. Your energy is increasing, and your lung capacit"
          ],
          [
            2607,
            "7 days: After a week without smoking, the carbon monoxide in your blood drops to normal levels"
          ],
          [
            2608,
            "7 days: After a week without smoking, the carbon monoxide in your blood drops to normal levels"
          ],
          [
            2720,
            "2 weeks: You now have a lower risk of heart attack"
          ],
          [
            2721,
            "2 weeks: You now have a lower risk of heart attack"
          ],
          [
            2789,
            "1 month: You now cough less and have fewer instances of shortness of breath"
          ],
          [
            2790,
            "1 month: You now cough less and have fewer instances of shortness of breath"
          ],
          [
            2884,
            "1 year: Your risk of coronary heart disease is now about half that of someone who continues to smoke"
          ],
          [
            2885,
            "1 year: Your risk of coronary heart disease is now about half that of someone who continues to smoke"
          ],
          [
            3005,
            "5 years: Your risk of cancers of the mouth, throat, and voice box drops by half"
          ],
          [
            3006,
            "5 years: Your risk of cancers of the mouth, throat, and voice box drops by half"
          ],
          [
            3105,
            "10 years: Your risk of death from lung cancer will have halved compared with a smoker\\'s"
          ],
          [
            3106,
            "10 years: Your risk of death from lung cancer will have halved compared with a smoker\\'s"
          ],
          [
            3214,
            "15 years: Your risk of coronary heart disease drops to close to that of someone who does not smoke"
          ],
          [
            3215,
            "15 years: Your risk of coronary heart disease drops to close to that of someone who does not smoke"
          ],
          [
            3333,
            "20 years: Your risk of heart attack and stroke will be similar to that of someone who has never smoked"
          ],
          [
            3334,
            "20 years: Your risk of heart attack and stroke will be similar to that of someone who has never smoked"
          ],
          [
            3475,
            "A movie ticket"
          ],
          [
            3476,
            "A movie ticket"
          ],
          [
            3503,
            "A takeaway meal"
          ],
          [
            3504,
            "A takeaway meal"
          ],
          [
            3532,
            "A nice dinner at a restaurant"
          ],
          [
            3533,
            "A nice dinner at a restaurant"
          ],
          [
            3576,
            "A new item of clothing"
          ],
          [
            3577,
            "A new item of clothing"
          ],
          [
            3613,
            "A new gadget or electronics accessory"
          ],
          [
            3614,
            "A new gadget or electronics accessory"
          ],
          [
            3665,
            "A weekend getaway"
          ],
          [
            3666,
            "A weekend getaway"
          ],
          [
            3698,
            "A new smartphone or tablet"
          ],
          [
            3699,
            "A new smartphone or tablet"
          ],
          [
            3740,
            "A high-end computer or gaming console"
          ],
          [
            3741,
            "A high-end computer or gaming console"
          ],
          [
            3793,
            "A luxury vacation"
          ],
          [
            3794,
            "A luxury vacation"
          ],
          [
            3827,
            "A used car or major home renovation"
          ],
          [
            3828,
            "A used car or major home renovation"
          ],
          [
            3950,
            "f\"{item} ({format_money(amount)})"
          ],
          [
            3950,
            "f"
          ],
          [
            3958,
            " ("
          ],
          [
            3982,
            ")"
          ],
          [
            4044,
            "\n\u003c!DOCTYPE html\u003e\n\u003chtml lang=\"en\"\u003e\n\u003chead\u003e\n    \u003cmeta charset=\"UTF-8\"\u003e\n    \u003cmeta name=\"viewport\" content=\"width=device-width, initi"
          ],
          [
            4047,
            "\n\u003c!DOCTYPE html\u003e\n\u003chtml lang=\"en\"\u003e\n\u003chead\u003e\n    \u003cmeta charset=\"UTF-8\"\u003e\n    \u003cmeta name=\"viewport\" content=\"width=device-width, initi"
          ],
          [
            9281,
            "/quitsmoking"
          ],
          [
            9282,
            "/quitsmoking"
          ],
          [
            9306,
            "GET"
          ],
          [
            9307,
            "GET"
          ],
          [
            9313,
            "POST"
          ],
          [
            9314,
            "POST"
          ],
          [
            9380,
            "month"
          ],
          [
            9381,
            "month"
          ],
          [
            9425,
            "day"
          ],
          [
            9426,
            "day"
          ],
          [
            9469,
            "year"
          ],
          [
            9470,
            "year"
          ],
          [
            9525,
            "saved-per-day"
          ],
          [
            9526,
            "saved-per-day"
          ],
          [
            9647,
            "f\"{month}-{day}-{year}"
          ],
          [
            9647,
            "f"
          ],
          [
            9656,
            "-"
          ],
          [
            9662,
            "-"
          ],
          [
            9789,
            "f'\u003coption value=\"{(now - timedelta(days=i)).strftime(\"%m-%d-%Y\")}\"\u003e{(now - timedelta(days=i)).strftime(\"%m-%d-%Y\")}\u003c/option\u003e"
          ],
          [
            9789,
            "f"
          ],
          [
            9791,
            "\u003coption value="
          ],
          [
            9842,
            "%m-%d-%Y"
          ],
          [
            9843,
            "%m-%d-%Y"
          ],
          [
            9854,
            "\u003e"
          ],
          [
            9892,
            "%m-%d-%Y"
          ],
          [
            9893,
            "%m-%d-%Y"
          ],
          [
            9904,
            "\u003c/option\u003e"
          ],
          [
            9946,
            "f'''\n    \u003chtml\u003e\n    \u003chead\u003e\n        \u003ctitle\u003eQuit Smoking Tracker\u003c/title\u003e\n        \u003cstyle\u003e\n            body {{ font-family: Arial, s"
          ],
          [
            9946,
            "f"
          ],
          [
            9950,
            "\n    \u003chtml\u003e\n    \u003chead\u003e\n        \u003ctitle\u003eQuit Smoking Tracker\u003c/title\u003e\n        \u003cstyle\u003e\n            body {{ font-family: Arial, sans-"
          ],
          [
            10917,
            "\n                \u003c/select\u003e\u003cbr\u003e\n                \u003clabel for=\"saved-per-day\"\u003eMoney saved per day:\u003c/label\u003e\u003cbr\u003e\n                $\u003cinp"
          ],
          [
            11422,
            "-"
          ],
          [
            11423,
            "-"
          ],
          [
            11860,
            "heart rate"
          ],
          [
            11861,
            "heart rate"
          ],
          [
            11874,
            "nicotine"
          ],
          [
            11875,
            "nicotine"
          ],
          [
            11886,
            "carbon monoxide"
          ],
          [
            11887,
            "carbon monoxide"
          ],
          [
            11905,
            "oxygen levels"
          ],
          [
            11906,
            "oxygen levels"
          ],
          [
            11922,
            "nerve endings"
          ],
          [
            11923,
            "nerve endings"
          ],
          [
            11939,
            "bronchial tubes"
          ],
          [
            11940,
            "bronchial tubes"
          ],
          [
            11958,
            "lung capacity"
          ],
          [
            11959,
            "lung capacity"
          ],
          [
            11975,
            "heart attack"
          ],
          [
            11976,
            "heart attack"
          ],
          [
            11991,
            "shortness of breath"
          ],
          [
            11992,
            "shortness of breath"
          ],
          [
            12014,
            "coronary heart disease"
          ],
          [
            12015,
            "coronary heart disease"
          ],
          [
            12040,
            "cancers"
          ],
          [
            12041,
            "cancers"
          ],
          [
            12051,
            "lung cancer"
          ],
          [
            12052,
            "lung cancer"
          ],
          [
            12257,
            "f\"\u003cspan class='important-word'\u003e{word}\u003c/span\u003e"
          ],
          [
            12257,
            "f"
          ],
          [
            12259,
            "\u003cspan class='important-word'\u003e"
          ],
          [
            12294,
            "\u003c/span\u003e"
          ],
          [
            12451,
            "f\"Achieved Benefit: {highlighted_desc}"
          ],
          [
            12451,
            "f"
          ],
          [
            12453,
            "Achieved Benefit: "
          ],
          [
            12749,
            "f\"Total Achieved Benefits: {len(achieved_benefits)}"
          ],
          [
            12749,
            "f"
          ],
          [
            12751,
            "Total Achieved Benefits: "
          ],
          [
            12828,
            "f\"Total Upcoming Benefits: {len(upcoming_benefits)}"
          ],
          [
            12828,
            "f"
          ],
          [
            12830,
            "Total Upcoming Benefits: "
          ],
          [
            13473,
            "f\"Error processing tracking page: {str(e)}"
          ],
          [
            13473,
            "f"
          ],
          [
            13475,
            "Error processing tracking page: "
          ],
          [
            13549,
            "There was an error processing your information. Please try again."
          ],
          [
            13550,
            "There was an error processing your information. Please try again."
          ],
          [
            13630,
            "/"
          ],
          [
            13631,
            "/"
          ],
          [
            13701,
            "f'\u003coption value=\"{i:02d}\"\u003e{datetime(1900, i, 1).strftime(\"%B\")}\u003c/option\u003e"
          ],
          [
            13701,
            "f"
          ],
          [
            13703,
            "\u003coption value="
          ],
          [
            13725,
            "\u003e"
          ],
          [
            13758,
            "%B"
          ],
          [
            13759,
            "%B"
          ],
          [
            13764,
            "\u003c/option\u003e"
          ],
          [
            13826,
            "f'\u003coption value=\"{i:02d}\"\u003e{i:02d}\u003c/option\u003e"
          ],
          [
            13826,
            "f"
          ],
          [
            13828,
            "\u003coption value="
          ],
          [
            13850,
            "\u003e"
          ],
          [
            13859,
            "\u003c/option\u003e"
          ],
          [
            13922,
            "f'\u003coption value=\"{year}\"\u003e{year}\u003c/option\u003e"
          ],
          [
            13922,
            "f"
          ],
          [
            13924,
            "\u003coption value="
          ],
          [
            13945,
            "\u003e"
          ],
          [
            13953,
            "\u003c/option\u003e"
          ],
          [
            14052,
            "\n    \u003c!DOCTYPE html\u003e\n    \u003chtml lang=\"en\"\u003e\n    \u003chead\u003e\n        \u003cmeta charset=\"UTF-8\"\u003e\n        \u003cmeta name=\"viewport\" content=\"width"
          ],
          [
            14055,
            "\n    \u003c!DOCTYPE html\u003e\n    \u003chtml lang=\"en\"\u003e\n    \u003chead\u003e\n        \u003cmeta charset=\"UTF-8\"\u003e\n        \u003cmeta name=\"viewport\" content=\"width"
          ],
          [
            17226,
            "__main__"
          ],
          [
            17227,
            "__main__"
          ],
          [
            17383,
            "f\"Error starting server: {e}"
          ],
          [
            17383,
            "f"
          ],
          [
            17385,
            "Error starting server: "
          ]
        ],
        "sz": 17451,
        "ts": [
          {
            "c": 0.30000001192092896,
            "d": "for loop (content)",
            "e": [
              " for i in "
            ],
            "i": "micro-behaviors/data/control-flow/analysis::for-loop-content",
            "l": 2
          },
          {
            "a": "T1480",
            "c": 0.9300000071525574,
            "d": "Regex component marker",
            "e": [
              "computer"
            ],
            "i": "objectives/anti-analysis/geofencing/target-gating::fqdn-substring-gate--rx-2",
            "l": 1,
            "m": "B0003"
          },
          {
            "c": 0.6000000238418579,
            "d": "Generates HTML tags",
            "e": [
              "\u003chtml"
            ],
            "i": "micro-behaviors/data/format/html::html-generator-tags",
            "l": 3
          },
          {
            "a": "T1195.002",
            "c": 0.9399999976158142,
            "d": "Regex component marker",
            "e": [
              "stderr"
            ],
            "i": "objectives/supply-chain/hidden-payload/runtime::python-popen-devnull-runtime--rx-3",
            "l": 1,
            "m": "B0024"
          },
          {
            "c": 0.8399999737739563,
            "d": "Hidden directory literal",
            "e": [
              "'.join"
            ],
            "i": "objectives/supply-chain/install-hook/module-backdoor::hidden-dir-literal",
            "l": 1
          },
          {
            "a": "T1497.003",
            "c": 0.8500000238418579,
            "d": "Python datetime now call",
            "e": [
              "datetime.now"
            ],
            "i": "objectives/anti-analysis/timing/timer::py-datetime-now-call",
            "l": 1
          },
          {
            "a": "T1071.001",
            "c": 0.800000011920929,
            "d": "Flask app.run() call",
            "e": [
              "app",
              "run"
            ],
            "i": "micro-behaviors/communications/http/server/framework::flask-run-call",
            "l": 3,
            "m": "C0002"
          },
          {
            "a": "T1071.001",
            "c": 0.800000011920929,
            "d": "Flask app instantiation",
            "e": [
              "Flask(__name__)"
            ],
            "i": "micro-behaviors/communications/http/server/framework::flask-instantiation",
            "l": 3,
            "m": "C0002"
          },
          {
            "c": 0.8999999761581421,
            "d": "File has 30 or more lines",
            "e": [
              "text.total_lines = 393.00"
            ],
            "i": "metadata/file/text/metrics::file-has-30-plus-lines",
            "l": 1
          },
          {
            "c": 0.8999999761581421,
            "d": "Generic env-based shebang line",
            "e": [
              "#!/usr/bin/env python3"
            ],
            "i": "metadata/lang/shebang::env-interpreter",
            "l": 2
          },
          {
            "a": "T1041",
            "c": 0.800000011920929,
            "d": "Regex component marker",
            "e": [
              "request"
            ],
            "i": "objectives/exfiltration/http/upload::system-data-post-platform--rx-4",
            "l": 1
          },
          {
            "a": "T1071.001",
            "c": 0.75,
            "d": "Flask @app.route decorator",
            "e": [
              "app.route('/')",
              "app.route('/quitsmoking', methods=['GET', 'POST'])"
            ],
            "i": "micro-behaviors/communications/http/server/framework::flask-route-decorator",
            "l": 3,
            "m": "C0002"
          },
          {
            "a": "T1547.001",
            "c": 0.6499999761581421,
            "d": "Python endswith file extension filter",
            "e": [
              ".endswith("
            ],
            "i": "objectives/persistence/login/startup/shortcut::endswith-filter-content",
            "l": 1
          },
          {
            "a": "T1071.001",
            "c": 0.699999988079071,
            "d": "HTTP POST method",
            "e": [
              "'POST'"
            ],
            "i": "micro-behaviors/communications/http/post::post",
            "l": 1,
            "m": "C0002"
          },
          {
            "a": "T1027",
            "c": 0.8500000238418579,
            "d": "Low comment line count",
            "e": [
              "comments.lines = 5.00"
            ],
            "i": "objectives/anti-static/obfuscation/tools/signature::low-comment-line-count",
            "l": 1,
            "m": "E1014"
          },
          {
            "c": 0.949999988079071,
            "d": "Python source extension basename",
            "e": [
              "quit_smoking.py"
            ],
            "i": "objectives/anti-static/obfuscation/payload/bytecode::py-extension-basename",
            "l": 1
          },
          {
            "c": 0.699999988079071,
            "d": "HTTP endpoint at root path",
            "e": [
              "@app.route('/'"
            ],
            "i": "micro-behaviors/communications/http/server/request::http-root-endpoint",
            "l": 2
          },
          {
            "c": 0.800000011920929,
            "d": "Generates HTML content (DOCTYPE)",
            "e": [
              "\u003c!DOCTYPE html\u003e"
            ],
            "i": "micro-behaviors/data/format/html::html-generator-doctype",
            "l": 2
          },
          {
            "c": 0.699999988079071,
            "d": "\"please\" instruction cue",
            "e": [
              "please"
            ],
            "i": "micro-behaviors/data/text/llm/action::llm-instruction-cue-please",
            "l": 1
          },
          {
            "a": "T1195.002",
            "c": 0.800000011920929,
            "d": "Regex component marker",
            "e": [
              "with"
            ],
            "i": "objectives/supply-chain/impersonation/core-module::write-password-file--rx-6",
            "l": 1
          },
          {
            "c": 1.0,
            "d": "Python 3 shebang line",
            "e": [
              "#!/usr/bin/env python3"
            ],
            "i": "metadata/lang/shebang::python3",
            "l": 3
          },
          {
            "a": "T1480",
            "c": 0.9300000071525574,
            "d": "Regex component marker",
            "e": [
              "host"
            ],
            "i": "objectives/anti-analysis/geofencing/target-gating::fqdn-substring-gate--rx-9",
            "l": 1,
            "m": "B0003"
          },
          {
            "a": "T1041",
            "c": 0.800000011920929,
            "d": "Regex component marker",
            "e": [
              "system"
            ],
            "i": "objectives/exfiltration/http/upload::system-data-post-platform--rx-5",
            "l": 1
          },
          {
            "c": 0.8399999737739563,
            "d": "\"store\" doc cue (storage instruction)",
            "e": [
              "store"
            ],
            "i": "micro-behaviors/data/text/llm/action::llm-send-action-cond-6--inline-11769",
            "l": 1
          },
          {
            "a": "T1027",
            "c": 0.949999988079071,
            "d": "Regex component marker",
            "e": [
              "except"
            ],
            "i": "objectives/command-and-control/dropper/staging/encrypted::dual-crypto-bcrypt-fallback--rx-4",
            "l": 1,
            "m": "B0032"
          },
          {
            "a": "T1027",
            "c": 0.949999988079071,
            "d": "Regex component marker",
            "e": [
              "except"
            ],
            "i": "objectives/command-and-control/dropper/staging/encrypted::dual-crypto-libcrypto-fallback--rx-8",
            "l": 1,
            "m": "B0032"
          },
          {
            "a": "T1071.001",
            "c": 0.699999988079071,
            "d": "Flask framework import",
            "e": [
              "from flask import Flask"
            ],
            "i": "micro-behaviors/communications/http/server/framework::flask-import",
            "l": 3,
            "m": "C0002"
          },
          {
            "a": "T1539",
            "c": 0.9200000166893005,
            "d": "Regex component marker",
            "e": [
              "cache"
            ],
            "i": "objectives/collection/stealer/session::jwt-file-or-browser-read--rx-6",
            "l": 1
          },
          {
            "a": "T1027",
            "d": "except keyword",
            "e": [
              "except Exception"
            ],
            "i": "micro-behaviors/data/control-flow/error-handling::except-keyword-dup",
            "l": 2,
            "m": "C0027"
          },
          {
            "c": 0.800000011920929,
            "d": "Extract data from form request",
            "e": [
              "request.args"
            ],
            "i": "micro-behaviors/communications/http/server/request::extract-from-request-form",
            "l": 2
          },
          {
            "c": 0.699999988079071,
            "d": "ROP gadget reference",
            "e": [
              "gadget"
            ],
            "i": "micro-behaviors/data/text/keywords/exploit::gadget-ref",
            "l": 2
          },
          {
            "c": 0.30000001192092896,
            "d": "for loop (AST)",
            "e": [
              "for seconds, desc in BENEFITS:\n            highlighted_desc = desc\n            for word in important...",
              "for word in important_words:\n                highlighted_desc = highlighted_desc.replace(word, f\"\u003csp...",
              "for name, count in intervals:\n        value = seconds // count\n        if value:\n            seconds..."
            ],
            "i": "micro-behaviors/data/control-flow/analysis::for-loop-ast",
            "l": 2
          },
          {
            "c": 0.800000011920929,
            "d": "Hardcoded loopback IPv4 address",
            "e": [
              "127.0.0.1"
            ],
            "i": "micro-behaviors/communications/ip/literal::loopback-ipv4-source",
            "l": 2
          },
          {
            "c": 0.949999988079071,
            "d": "imports flask",
            "e": [
              "flask"
            ],
            "i": "metadata/import/python::flask",
            "l": 2
          },
          {
            "c": 0.949999988079071,
            "d": "imports argparse",
            "e": [
              "argparse"
            ],
            "i": "metadata/import/python::argparse",
            "l": 2
          },
          {
            "c": 0.949999988079071,
            "d": "imports functools",
            "e": [
              "functools"
            ],
            "i": "metadata/import/python::functools",
            "l": 2
          },
          {
            "c": 0.949999988079071,
            "d": "imports re",
            "e": [
              "re"
            ],
            "i": "metadata/import/python::re",
            "l": 2
          },
          {
            "c": 0.949999988079071,
            "d": "imports datetime",
            "e": [
              "datetime"
            ],
            "i": "metadata/import/python::datetime",
            "l": 2
          },
          {
            "c": 0.949999988079071,
            "d": "imports math",
            "e": [
              "math"
            ],
            "i": "metadata/import/python::math",
            "l": 2
          },
          {
            "c": 0.949999988079071,
            "d": "imports sys",
            "e": [
              "sys"
            ],
            "i": "metadata/import/python::sys",
            "l": 2
          },
          {
            "a": "T1071.001",
            "c": 1.0,
            "d": "Flask web framework usage",
            "e": [
              "Flask(__name__)",
              "from flask import Flask",
              "app.route('/quitsmoking', methods=['GET', 'POST'])",
              "app.route('/')",
              "app",
              "run"
            ],
            "i": "micro-behaviors/communications/http/server/framework::flask-framework",
            "l": 3,
            "m": "C0002"
          }
        ],
        "sha": "1bc3aae4dfd216b8162d53501f767356338067afd71bbbfca2f6ba98c7695c0e",
        "path": "quit_smoking.py",
        "type": "python"
      }
    ],
    "tv": "d376d"
  }
}