From 1f8357a86eb54a40ca5d43b967c102e5f9f6a202 Mon Sep 17 00:00:00 2001 From: Steve Rybka Date: Sat, 11 Jan 2025 00:02:13 -0700 Subject: [PATCH] Add The Tracker app --- apps/thetracker/README.md | 31 ++++ apps/thetracker/_img1.png | Bin 0 -> 23224 bytes apps/thetracker/_img2.png | Bin 0 -> 21172 bytes apps/thetracker/_img3.png | Bin 0 -> 13213 bytes apps/thetracker/manifest.yaml | 6 + apps/thetracker/the_tracker.star | 309 +++++++++++++++++++++++++++++++ 6 files changed, 346 insertions(+) create mode 100644 apps/thetracker/README.md create mode 100644 apps/thetracker/_img1.png create mode 100644 apps/thetracker/_img2.png create mode 100644 apps/thetracker/_img3.png create mode 100644 apps/thetracker/manifest.yaml create mode 100644 apps/thetracker/the_tracker.star diff --git a/apps/thetracker/README.md b/apps/thetracker/README.md new file mode 100644 index 000000000..28103c2ef --- /dev/null +++ b/apps/thetracker/README.md @@ -0,0 +1,31 @@ +# The Tracker + +### Flexible Tidbyt counter to display your numbers via an ilo.so Counter ID. + +## Show social & sales numbers + +X, YouTube, TikTok, Bluesky, Ghost, Chart Mogul, Beehiiv, Kit, Paddle, Stripe, Fathom Analytics, Simple Analytics, and more. + +Data refreshes every 60 minutes. + +## Flexible layout, number formatting, colors, icons, and font + +![Screenshot1](_img1.png) + +![Screenshot2](_img2.png) + +![Screenshot3](_img3.png) + +## About this app and ilo.so + +To use this app, create an account on https://ilo.so/ (creator Dan Rowden) and link your desired account to your dashboard on their site. Open your dashboard and copy the Counter ID into the "Counter ID" field of this Tidbyt app. One ilo.so tracker per Tidbyt screen. Add multiple screens to show multiple trackers. + +Your Counter ID will look similar to this: m1dlbolq + +## Ongoing + +Happy to add any additonal icons! Most icons are 16px for consistency. A few are 12px. Feel free to send me your desired icon in PNG or Base64. + +If you want to find your own icon, I suggest icons8.com's Tiny Color collection: https://icons8.com/icons/tiny-color. These are all 16px pixel perfect icons. + +Happy to add addional colors too! Send me a hex color code and your preferred color name. \ No newline at end of file diff --git a/apps/thetracker/_img1.png b/apps/thetracker/_img1.png new file mode 100644 index 0000000000000000000000000000000000000000..7d2c6f6b79df75e60be106b9f0562eadf0b363b1 GIT binary patch literal 23224 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 literal 0 HcmV?d00001 diff --git a/apps/thetracker/_img2.png b/apps/thetracker/_img2.png new file mode 100644 index 0000000000000000000000000000000000000000..d4754e97132921f34f36c7781b73ad8e3c632547 GIT binary patch literal 21172 zcmeHv2~bl>yEY<@3kt5FvMLIWC-{;NU z3zjC^w(Q>`BqX%W^!!x9;W&vkBJYrr^`YBiPF;0DdhnM8WLXb#Nik*VZn?&ca;BBM_!?)icoDOC=lzPJkc1 za2;?6^9s2t9}e>mfa`?oAN*cJ2OJBERS(L4uMz^)KWJxhLEbnp*h^kZ<%G(Kg9cmV z<>mE)J-v0T&z}3^a`2!2!D}HQ*L74?5eS3|LPI4m*hf_j0)eQWP*+t~KMrafherg2 zTn#@S09W|Ekw4ox>jn1+_PrkB8yFxjX!ojnU}%W`!GnU1{`&d-KE1+y|J73f{Ex>1 z52z|QqpGHILiMkjsXMJH{ct9TpCm|>GzSsW`Xa3dW->$U#*Od@$ z$ltI0+nImA@)F!D*fq^dE796*+d6)T>w4dMKI6NEN)aX;qM^Xkdut*0r^G9Sz4UDQku zXxitg#zsm6)T_9 z0!n#IybEO0c6p;4LhFP@em{uY8mEf%4Xr2%(|u8J^pCzCB zZLR51{Cg|wgq52sEY_BYY}s(AJKn8e*P8y;HCO2WQ}3T~`DY&dvp&8XhJWnA|08x% zT=hDKHQPHE8(7P{9CqOueGW4;w>vq%Nq>W*+RnZ!^`TXz11Dy4!x^QI$k_`Y?ny#% zZGLi1{W7|RLz0ieD32R!DO%Bn@h=qV2Ws=&l+Ot}Z;>w6MKw9+nr%Q@os(z13=i3j zfpac)V`@osv)ug%w)#2w6InN=gHLfj|CUyL*|;4SHju&6gqg8>4@{F9ox8Q#o?*BL zWEOvN`&D=_J!iP!_{p)pZHD)2=3A7D)yv*~I?{`P5@aOJHR;LrAy#e|){#b^u5Ofx zE@Jb@rpci$`B>{wwKQ9bZA1}6rPVs+dE?S{J!?Q1U`i@g9PiUOp8Y8B6n{ts5C|F_|!?+$LuxPK{B`Z$D+TOh%iKxK4rGtRPo$#`r=~Jf;+@CHvj&qzhSQo+sN2;z!fsZV z?MTiq#e35t1PltKDd6tOx@i$c|@uelLL8{D+ za?#h>vMa;)R3$b@O$8El2JUh6#P%R2@;brFF&G(;fquklM;(jK{;bxE&GS4)3=%aT zUSJb%4QJhbw~|W$w|(f#-CD#zOZ)adO&Hw$Uhlr(89S%^x6g*f*!TL>h@58I5zE>2qa!hNnUNJ~ z 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 hU9XeEJk6| literal 0 HcmV?d00001 diff --git a/apps/thetracker/_img3.png b/apps/thetracker/_img3.png new file mode 100644 index 0000000000000000000000000000000000000000..ebd75c13d1ea1d857855269b53414969f62b79c5 GIT binary patch literal 13213 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 literal 0 HcmV?d00001 diff --git a/apps/thetracker/manifest.yaml b/apps/thetracker/manifest.yaml new file mode 100644 index 000000000..8792f6dd8 --- /dev/null +++ b/apps/thetracker/manifest.yaml @@ -0,0 +1,6 @@ +--- +id: the-tracker +name: The Tracker +summary: Show your internet stats +desc: 'Flexible counter to display your numbers via ilo.so: X, YouTube, TikTok, Bluesky, Ghost, Kit, and more!' +author: Steve Rybka diff --git a/apps/thetracker/the_tracker.star b/apps/thetracker/the_tracker.star new file mode 100644 index 000000000..6934e71ab --- /dev/null +++ b/apps/thetracker/the_tracker.star @@ -0,0 +1,309 @@ +""" +Applet: The Tracker +Summary: Show your internet stats +Description: Flexible counter to display your numbers via ilo.so: X, YouTube, TikTok, Bluesky, Ghost, Kit, and more! +Author: Steve Rybka +""" + +load("cache.star", "cache") +load("encoding/base64.star", "base64") +load("encoding/json.star", "json") # Added to parse JSON responses +load("http.star", "http") +load("humanize.star", "humanize") +load("render.star", "render") +load("schema.star", "schema") + +CACHE_TTL = 300 +DEFAULT_CODE = "n1bmw0og" # Updated to a sample ilo.so counter ID +DEFAULT_COLOR = "#1DA1F2" +DEFAULT_LAYOUT = "Number" +DEFAULT_FONT = "tb-8" +DEFAULT_BANNER = "Followers" +DEFAULT_FORMAT = "Full" +DEFAULT_ICON = """iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA4dpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDkuMS1jMDAyIDc5LmE2YTYzOTY4YSwgMjAyNC8wMy8wNi0xMTo1MjowNSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo4MDNmNDJjMS1kMzcwLTQwYWYtODA4Mi0wNjBiODAzMjUzMWIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6M0ZBOEM5RURDODBDMTFFRkJCMjE4MzM3QTM2MDM3MTciIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6M0ZBOEM5RUNDODBDMTFFRkJCMjE4MzM3QTM2MDM3MTciIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDI1LjEyIChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6ZDNjNGVhMDQtZDNkZC00NzY0LTgzMjEtZmVjYTk1MThhMTUzIiBzdFJlZjpkb2N1bWVudElEPSJhZG9iZTpkb2NpZDpwaG90b3Nob3A6MDFiOTVmNjQtYmFhMC0zMjQxLThkZjMtYjE0NTEzMDMxZjUxIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+scETfwAAAM9JREFUeNqMUwENxCAMRAISJgEJSEDCJCABB5MwCZOABCS8hEngWXJ8Lv2ytAlLytprd3dzvffW/yO5lxjvz1/deAQkz2UE4D2OXzRn1O/a5QO2AaAqzTvqDg25Yrqnwkzv49x09V1z8oH8Qh5w1K0kSJrkYJMPcdJWvEiQOdnT2repGQBzckVeABKdNWhyRt4Aat6ikKlY2svSPCUsmCylTRYVTuSBjUMEb1pz0NYklyZJsGYiVWu4VEqbWbZXluX/QSQHR04LRpdytK8AAwBMGuwGXzA6/wAAAABJRU5ErkJggg==""" +DEFAULT_MULTIPLY_BY_12 = False +DEFAULT_ADD_DOLLAR_SIGN = False +DEFAULT_SHOW_COMMA = True + +def render_error(): + return render.Root( + render.WrappedText("Something went wrong!"), + ) + +def main(config): + # Load the Counter ID from the config + code = config.str("code", DEFAULT_CODE).strip() + + # If the Counter ID is blank, show an error message + if code == "": + return render.Root( + render.WrappedText( + content = "Error: Counter ID is blank.", + ), + ) + + # Load user settings from Tidbyt app, or grab defaults + layout = config.str("layout", DEFAULT_LAYOUT) + color = config.str("color", DEFAULT_COLOR) + code = config.str("code", DEFAULT_CODE) + banner = config.str("banner", DEFAULT_BANNER) + font = config.str("font", DEFAULT_FONT) + icon = base64.decode(config.get("icon", DEFAULT_ICON)) + multiply_by_12 = config.str("multiply_by_12", "false") == "true" + add_dollar_sign = config.str("add_dollar_sign", "false") == "true" # New toggle for dollar sign + show_comma = config.str("show_comma", "true") == "true" # New toggle for commas + + # Cache checker + cache_key = code + "_multiplier_" + str(multiply_by_12) + str(add_dollar_sign) + "_comma_" + str(show_comma) # Create a unique cache key based on multiplier + cached_data = cache.get(cache_key) + + if cached_data != None: + print("Cache hit!") + body_content = cached_data + else: + print("Cache miss! Getting Data...") + + # Get data from ilo.so API with user's counter ID + ILO_URL = "https://api.ilo.so/v2/counters/" + code + "/" + response = http.get(ILO_URL) + + # Attempt to parse JSON response + data = json.decode(response.body()) + + if "count" in data: + # Extract the count value as an integer + count_value = int(data["count"]) + + # Apply the multiplier if enabled + if multiply_by_12: + count_value *= 12 + + # Format the count with or without commas based on the toggle + if show_comma: + formatted_count = humanize.comma(count_value) + else: + formatted_count = str(count_value) + + # Prepend the dollar sign if the toggle is enabled + if add_dollar_sign: + formatted_count = "$" + formatted_count + + # Use the formatted count as the body content + body_content = formatted_count + + # Cache the result with a unique key + cache.set(cache_key, body_content, CACHE_TTL) + else: + print("Error: 'count' key missing in API response") + body_content = "Error" + + # Use the final content + final_content = body_content + + # If user has entered a bad or empty counter ID + if code == "" or code.strip() == "": + final_content = "no ID" + elif body_content == "No counter": + final_content = "bad ID" + + print(final_content) + + # Top & bottom layout + if layout == "Top": + return render.Root( + child = render.Column( + expanded = True, + main_align = "space_evenly", + cross_align = "center", + children = [ + render.Text( + content = banner, + font = font, + ), + render.Box( + width = 64, + height = 1, + color = color, + ), + render.Text( + content = final_content, + font = font, + ), + ], + ), + ) + # Side by side layout + + elif layout == "Side": + return render.Root( + child = render.Box( + render.Row( + expanded = True, + main_align = "space_evenly", + cross_align = "center", + children = [ + render.Image(src = icon), + render.Text( + content = final_content, + color = "#fff", + font = font, + ), + ], + ), + ), + ) + # Number only layout + + elif layout == "Number": + return render.Root( + child = render.Box( + render.Row( + expanded = True, + main_align = "space_evenly", + cross_align = "center", + children = [ + render.Text( + content = final_content, + font = font, + ), + ], + ), + ), + ) + # Fallback layout + + else: + return render.Root( + render.WrappedText(content = "Error: Invalid layout"), + ) + +def get_schema(): + colors = [ + schema.Option(display = "Ghost White", value = "#FFFFFF"), + schema.Option(display = "Twitter Blue", value = "#1DA1F2"), + schema.Option(display = "Instagram Purple", value = "#833AB4"), + schema.Option(display = "YouTube Red", value = "#FF0000"), + schema.Option(display = "Gumroad Pink", value = "#FF90E8"), + schema.Option(display = "Paddle Yellow", value = "#FFE450"), + schema.Option(display = "Money Green", value = "#2E7E74"), + schema.Option(display = "Slime Orange", value = "#FE4D00"), + ] + icons = [ + schema.Option(display = "Logo - X", value = """iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA4dpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDkuMS1jMDAyIDc5LmE2YTYzOTY4YSwgMjAyNC8wMy8wNi0xMTo1MjowNSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo4MDNmNDJjMS1kMzcwLTQwYWYtODA4Mi0wNjBiODAzMjUzMWIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6M0ZBOEM5RURDODBDMTFFRkJCMjE4MzM3QTM2MDM3MTciIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6M0ZBOEM5RUNDODBDMTFFRkJCMjE4MzM3QTM2MDM3MTciIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDI1LjEyIChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6ZDNjNGVhMDQtZDNkZC00NzY0LTgzMjEtZmVjYTk1MThhMTUzIiBzdFJlZjpkb2N1bWVudElEPSJhZG9iZTpkb2NpZDpwaG90b3Nob3A6MDFiOTVmNjQtYmFhMC0zMjQxLThkZjMtYjE0NTEzMDMxZjUxIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+scETfwAAAM9JREFUeNqMUwENxCAMRAISJgEJSEDCJCABB5MwCZOABCS8hEngWXJ8Lv2ytAlLytprd3dzvffW/yO5lxjvz1/deAQkz2UE4D2OXzRn1O/a5QO2AaAqzTvqDg25Yrqnwkzv49x09V1z8oH8Qh5w1K0kSJrkYJMPcdJWvEiQOdnT2repGQBzckVeABKdNWhyRt4Aat6ikKlY2svSPCUsmCylTRYVTuSBjUMEb1pz0NYklyZJsGYiVWu4VEqbWbZXluX/QSQHR04LRpdytK8AAwBMGuwGXzA6/wAAAABJRU5ErkJggg=="""), + schema.Option(display = "Logo - X Verified", value = """iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAOBJREFUeNpiZMACZBd+EgBS64HYASp0AIgDH8fzfUBXy4imKQGIQbQ9kmYGJEMOAjHIkAUwwxiRNN+HaiYGgDQrggxhggokkKCZAaoWpIeBCUmAVADWwwR1vj0RGhqhTocBe5BeJrTQxgUSgXgCmhhIz3omLJpBtlxA07wBiPdj8aoDExbbJgKxI9SQCUiaDbA5jQkav8igHogDQIYAo6kQ6kUDHF47wIgl1SE73R4WXdg0g1InEzRFHcSiYD4ezSBwEDkhfWAgE8AMWECiIR9g0UpOZgKBCSiZiZLsDBBgAFuLRzv95mBJAAAAAElFTkSuQmCC"""), + schema.Option(display = "Logo - BlueSky", value = """iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3lpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDkuMS1jMDAyIDc5LmE2YTYzOTY4YSwgMjAyNC8wMy8wNi0xMTo1MjowNSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo4MDNmNDJjMS1kMzcwLTQwYWYtODA4Mi0wNjBiODAzMjUzMWIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MjFEQjcyODhDODBCMTFFRkJCMjE4MzM3QTM2MDM3MTciIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MjFEQjcyODdDODBCMTFFRkJCMjE4MzM3QTM2MDM3MTciIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDI1LjEyIChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6ODAzZjQyYzEtZDM3MC00MGFmLTgwODItMDYwYjgwMzI1MzFiIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjgwM2Y0MmMxLWQzNzAtNDBhZi04MDgyLTA2MGI4MDMyNTMxYiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PvvmFjEAAADaSURBVHjaYvz//z8DJYBFqO1/AZD2B+IHQNwIpfEBBSCuh9IbWaCaHaCSAUBcCMQLcGhOAOJ+IBaAuwBNAUhiPpS9AIvm+egmMuGwCWSLARLfACrGQKwBMJcIoLExAxGIDyKFAQOarfVIbGzgIMiAD3hCvIBAjHxgggbWBTKSAEjPAiaoCxyhaeADERo/QNU6wlwAE5THFVBYAlgeZhkTUiAlkOD8BFjAwgzAlXwPQDE28ADZgA/QJIwOGqEYHRSiewEEJiBLQDXCXFCIZFEiVC0YMFKanQECDADhzjIeFn0a0AAAAABJRU5ErkJggg=="""), + schema.Option(display = "Logo - Instagram", value = """iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA4dpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDkuMC1jMDAxIDc5LjE0ZWNiNDJmMmMsIDIwMjMvMDEvMTMtMTI6MjU6NDQgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6YTcyYmVhZjYtMjI0Zi00NTYzLTliNjEtMTBhODkxNDJmZTMzIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjE5QUM2N0U5QkUyMTExRUQ5NzVDREMwQUE3MjM2QTBEIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjE5QUM2N0U4QkUyMTExRUQ5NzVDREMwQUE3MjM2QTBEIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCAyNC4yIChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6YmQ3NzU4YWUtODZhMS00MjgyLTg0MjctNDg3ZDM3MDM0NzUyIiBzdFJlZjpkb2N1bWVudElEPSJhZG9iZTpkb2NpZDpwaG90b3Nob3A6Y2VjZWYwNTEtZTJkYi05NjQxLWJjYzYtMGIwNjRjZTIyMjhhIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+IK4mlwAAA0xJREFUeNqEU21oFEcYfmdnb293b+8j9xFzUdMGYkgaTqRSSUEMUYxSPUKkJBIlSmghRf0hAUXS1h/h1DYGRUTxoyTU2jTWfyH+0CtpiCRGiR6JgmiN0ETTHveRy+V2dje3u927ZC34x4Fnhpd53mee950ZBMZgEE23C8ETjez2b5xQ7BdVK+RAVBaIZiAfsyCpHMT1eHQM+q8NQnenAkRGHFiYHm/zz018bdMzORmNyNGnokZnZc0CigFZY1bWXGxFHr3yk2I9sPoB/D7QA4f3QmhVzbd6+Xn9N++Bm4XY4YEPDBcUulug+2ovZPQG6AhBsqYtFlt/9J8CirW9T3YiweFCDpcZH2NCfV1M34QTPM5ONPKqC54mKdda5JliX08lNSljEqssxZW/uI/cHvWdmxlyX37zk/1MeANdVa1AOmVFGiawSObQkydu5HHR4FkE1UE0MzlgKaq4W3RouAj5fYOZvx4saEjaYv1s20b6xy1t6ZN1F7I/tGmgA0tlKQ4IUOAxDrZL72yfWVNzuojlfK3xKy2746c+b06GalsXvq9lMFHbbQcvUoBxjmelssBhaUXAIS83iGHsWz/21j3Gkw97MuM3TNERZfLPO0q4fyOztqoE+8vyV08t5QVoKBDfOcAUomifiGUxLb3fUBWJRMAK0AjRywIKcJRsOHARAGHZQUKWU+NLM6PVFd7NX/hKtv3fl+KKZmFD46z2enZWjU4vP74l4PMOcgK8kifqOkDHRKTjj4bC4cGddeFbUzM3yTwmX6JNTTadsx9P9h4WdYnkuJaVEihwGpOgIPO04b9jY8GB8M4p9e1EY6B034HKqq9iXPzf1tj1/b+K430mz2gishkloYVH/gRJ0aQs+KYsTTRiErAhWe5yrsMaxq8WU9NEVRVzjwEa3y8MveTB7cUeny5s38PuKuEt/qFH8pCk6HmiUQ3EJDkRlUksq+uqmexALH/WXd9dz3+643rm3kUk2BB3+5Kjf0fQHpx7iGYiES2STTNZEBmAjIE0C7BoNVYr0GkOB+SPAmuU8tK788/DjbHePfnabTxiO9tt3x2st39dwPE+SBlJKQ5g3kCCN2B8k3gOAizMosSNF9M9HXNDJ1OanPlPgAEAcPheP0TTVRgAAAAASUVORK5CYII="""), + schema.Option(display = "Logo - YouTube", value = """iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAM1BMVEX/////AAD/AAD/AAD/AAD/AAD/AAD/AAD/AAD/4OD/QED/////sLD/ICD/wMD/UFD/EBCDEFz4AAAACHRSTlMAEECAYDBQcJt0SmoAAAABYktHRACIBR1IAAAAB3RJTUUH5wMWFzQsZdzZ6AAAAAFvck5UAc+id5oAAABPSURBVBjTY2AgAjAyMTGDARMTI4jPwoEEWBgYWDlQACsDG6oACwMzhMHJBaGZYQLc3Dy8aAJ8qAKc/DAtUEMF4IZiWIvhMLDT2ZGdTggAAKVMBQDy4NHaAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDIzLTAzLTIyVDIzOjUyOjQyKzAwOjAw//0zcAAAACV0RVh0ZGF0ZTptb2RpZnkAMjAyMy0wMy0yMlQyMzo1Mjo0MiswMDowMI6gi8wAAAAASUVORK5CYII="""), + schema.Option(display = "Logo - Ghost", value = """iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAt1BMVEVHcExvM//dAPLaAPJiPP+PIf9URv9gPv9bQf+0Kff5BfJvNf+KIv+qDP+ZF//kCfS/AfyUG//hAPH/HvBdQf96LP9lOv/2BvJ7Kv/yAPLCAPy1A/6+AvudFP+yEfn/Q+juLOz/ROjnAPH/Sub/Qen/Lu1kPP9VRf9vNP9VR/9vNP+EJf95Lf/NAPbXAPH0APKIJP+0Bf+lD/+WGf/jAPDjAO6kEP+6AP/OAPXXAPLMAPb/Nuz/SuaY9v4LAAAAPXRSTlMAHiA2PQZce0wLXRFmI1UTZDJ5jo1/WKxDTYFJP2guJCyJXTyWb7ZupDKTdomxb2fCsZelqTyFWFe/o6lVoJ2UwgAAAKZJREFUGJVFjtUWg0AMRAO7rOBeCuXgdXf7/+8qUGSeMjcnkwGohQlhKw69OPUxZoQS4e8lDwdrSl3qLpjSADXYeFKzYHPaECVW9e42WPoMwNLvQ5q6FQR4mLMBwFGwwAyNEVx0C57vsYB0jjVIX+IAtFOkgXHNB2CGUV3gMJl2Xtyh5oHhtIQj296jNi/JPo4syzmyb31cmpVlVTnyGA+8+BZJO/0AM8MK7K02+ZoAAAAASUVORK5CYII="""), + schema.Option(display = "Logo - Paddle", value = """iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAIGNIUk0AAHomAACAhAAA+gAAAIDoAAB1MAAA6mAAADqYAAAXcJy6UTwAAAByUExURQAAAA8VFQ4UFA4UFA4UFA8WFg0TEw4UFA0TEw0TEw4UFCQmFycpF4x9JZqJJ862L9m/MBAWFGNcIP3dNW9mIg8VFGhfIPTWNPfYNHFoIpuKJ9e9MNvBMSstGJiHJ9W8L5yLJ2ZeIWFaH25lIcy0Lv///ymZXt4AAAAKdFJOUwBVz/rOU1DNT1FFS96bAAAAAWJLR0QlwwHJDwAAAAd0SU1FB+cDFgE7MgDgJ4YAAAB4SURBVBjTZY/ZFoIwDESnhVoouJQgaJHF5f+/UaFBKMxLcu7JJBlAyMiwolgBBxNIQPomy32NwfPHE7vAo+eL9Q2DgqhcgWtVE93ulkHmGpr0cK0HXc9gaGfLc7SUdrX0RfQOrpjP/+zusc3rGkkY7hdX6SW+TvEFOVQL4prCEKkAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjMtMDMtMjJUMDE6NTk6NTArMDA6MDDdGqjWAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIzLTAzLTIyVDAxOjU5OjUwKzAwOjAwrEcQagAAACh0RVh0ZGF0ZTp0aW1lc3RhbXAAMjAyMy0wMy0yMlQwMTo1OTo1MCswMDowMPtSMbUAAAAASUVORK5CYII="""), + schema.Option(display = "Logo - Gumroad", value = """iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAylpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDkuMC1jMDAxIDc5LjE0ZWNiNDJmMmMsIDIwMjMvMDEvMTMtMTI6MjU6NDQgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCAyNC4yIChNYWNpbnRvc2gpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkZDMDMzRDc5QzA3OTExRURBOEYxQzFCNUVCNTdCODk4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkZDMDMzRDdBQzA3OTExRURBOEYxQzFCNUVCNTdCODk4Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6RkMwMzNENzdDMDc5MTFFREE4RjFDMUI1RUI1N0I4OTgiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6RkMwMzNENzhDMDc5MTFFREE4RjFDMUI1RUI1N0I4OTgiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz56c3/iAAADO0lEQVR42mRTWUhUYRT+7p2Z62w6qy3aZKOpZWlRkQiVIEkLTBBBlPWQLZgULQ9tZA9FUb0ULZjZQkkaafhgZRBESqBWE5aURjqlpYWjTprXmWb9O/ObEPjDucs531m/8wuYfAw2U+Lm7KRFBVkJGXMFQQi/6/3gbHQ1VQ3Knmqyh/4HC///mDWGdcXLtx/funTjkhTTTFGlVHJ9IBRAh7vLf7u5svFG870SX/DPm0kB0qekHKsuvH0mK3mpgOCfcaViPADCQUISVKVB/dta35aK4k3DvpE6Dok+4vUWR33R/ZuZ9iUCAmOAqMDX/k6862lFz8AXqAQRcToL4JeRaluoyrDYHA/fP34SYZF+7n/OUdLGrnsZuzzAvBd62Z5lhUwraRjZuFh1ZnZx/SnGrgwxdsnNWJnMtmdvbiJbDBKN0/e6TryOsKsexq6NsmMr93Gn/LQVrOngU/aoqIrNMCZwXd3Ou4yV/ua4VwfrmVJU7FY6MvK32s02ASwCz68+3GypRIJhGh5sK4cp3k45JJjUsbjVUoVAmAiIhElCmD99DpItSYXKtCkpWQL1CFGJ78N9GJCHkJuSA5PVjiG3C9WtddBIaqyZmwd9jA4s6IcgCtDqzLDqLWmiP+QP8kkzBr2khaRQ4ZdvhNj2Q0HfGrUejV3N2HhnFw7VnSRn8R95jFyYQXR+b2sLRSgGlZdkTcaCxHlo+9GO8hdlMOqtKFi8AbLfC0kpIYaEH2JpTPbALQ+GxZZu5z3XYA/nXEmlnl93AmpVDIpqDiPt5GKkklj1Zpi1Roz4RscDkL217yO6h74NKEb9cpdBHZebl7naFuXZPjUda9NzYVTH8Yw7cgpwNH8fiErkpS5HFlUYrWB/zRF09He+5Juok7Q5T4oqG3Iz10jwDlMGNQdNzIZvJmXlvdO7oqEM26oORGewiqOC4WBvffvzT3OsSY502jTiiQ+RS3SNo4OjgUYDVLy8hWLKTj5nSVGumLgLYwFve+37x889v/tnJ8TGzzJTCwpNLHeUvSNwdjtxuLYEp59djATDoTPkUjLpNk5cMOrdkRqfXGjSGhdSmWaaduSz2/WTbB9ISkkaJsB/BRgADeRRlrdTYsgAAAAASUVORK5CYII="""), + schema.Option(display = "Logo - ChartMogul", value = """iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAylpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDkuMC1jMDAxIDc5LjE0ZWNiNDJmMmMsIDIwMjMvMDEvMTMtMTI6MjU6NDQgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCAyNC4yIChNYWNpbnRvc2gpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkZDMDMzRDdEQzA3OTExRURBOEYxQzFCNUVCNTdCODk4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkZDMDMzRDdFQzA3OTExRURBOEYxQzFCNUVCNTdCODk4Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6RkMwMzNEN0JDMDc5MTFFREE4RjFDMUI1RUI1N0I4OTgiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6RkMwMzNEN0NDMDc5MTFFREE4RjFDMUI1RUI1N0I4OTgiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6O8G3aAAACKElEQVR42qRTTWgTURD+3nu722yTxtDSRKw/1JJC0BaRgAcrIlYQpL3oRQS9WQ+ak60H6SmUtkgFf6l4slC8KILerCgFQVpE6aEUg1hQQfRglTQ/m93sOm+zm7r21DowvJ15OzPfNzOP6W2pI6HE7nsMSGIDwpiAWVi5xpr3n/hAdic2J7/4fwRLiXH/y3YcFEtl2LZdg0hqVEyUykYgQtrSzzyb+8ERXUfvwTS2NIVdu0w/pTp24fCBfcSXwSGfaVXRk+5Gd6oDllfITWCaFnZsi+PRnSyS7TuRXy0g3hLDk8kR3B8ZhKoI5AtFHEp34fmDCWTOniIklbUEUmQFCa9arZLaGB08j+1bW/E7X0CF0MRbmnFjOOPRKAcp1EdDKiudO3kc/Ud78PDZC3DOUbEsjF8ZgEP3s3Pv0aBp9ZhAAsM0sTfZjutXL2Fschozr99SP2yc7uvFmf5juDA8gS/ffkAhSusSSAoSw9jQAHKfPmOcEmiqgrZEKyW8iFtTj/Fydg7hRj0wlQAC2bhoUwSZ7E0YhgHBBWLRCHLLX5G9PQUR0gi+6qovisudMxSpgW/eLWL66QwWlj5CDzfi+88VzC8s4fLoXawWSy73xdwyLGoyF7XacpUdn4Kcszz9CnKpLJqK3ANNUdwmStutLMQagtrjYO685VnnRxNQyXYXyfMJIf7pAef4O8n6Vxf0MU+9Swg1mghztWEPmSFs7D3DNo1XfwQYAFMzyp62Ng0LAAAAAElFTkSuQmCC"""), + schema.Option(display = "Logo - Twitter Bird", value = """iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAALEwEAmpwYAAABLUlEQVR4nK1SPUsDQRBdd3JaWSkWdlYWdiL4MyzE3k7xB9gKNlqk0FIQLMTL2xM/Ku38ARFJZy9iIQEh9+ZQJLhyBpJcvFwSyMCwMLPv7XuzY8xYwvuJQVeCkEtSSdZM1FhsF0988Hdax6pFvJOLjPykQCFOfTuh5wLui9NnYy7i2VaRTRvpZi/eQvcy4K604L0JoMs9jbK5rU93CFjLJQCbKdaUwmQ150JdwMPUszi+9SF4bT1xxTkBf/rJLJBf6/h0rI5OoJdtAkG8PjKBS7Yz0xanlaEJoDTXjZl//20db4Yj4EH+ukVe0maxdD6ZOz+VXVFwwyLZEvBUnH4UTj5M5rPewbPBsvkt0OPuBctEKUxWBHpkHR8F+i7gl4Av1umDhe6a6HMh3/MY4hcwAZqpRCof8AAAAABJRU5ErkJggg=="""), + schema.Option(display = "Fire", value = """iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAACXBIWXMAAAsTAAALEwEAmpwYAAABSElEQVR4nI2QO0vDYBSGv9C5mw7dFEsHQU3tRWrbpBdDQ23TSC8Kbv4DFwdxEl0cHISqi4gg+AMcGsFF/CdCG9Om+dKvtUo7vJLVtOoDB1447zOcQ8gEOsqe1xnyH1CtelhhW2OFWsPJ5C9YrnLE5AqYXIadKx/+WqZSibclddSTtmBvqKBZZUTFEj9VsDPKM00roOkiaKoIKhZgifmniWUrmRcsYROWkMfwJICP4wC6cRnd9RysNTnhEsy4fOUs7d0oxq8cxi8caC0MM5JFO5Spu4RONKN1IlkMb734ahB8PhIM6l60eQHtFUFzCQYvXpupCAYPBP17gv4dAbshMGKr0Bdjly5BX07OG/HggF4QWOcE3TMO5ikHPbQ0NBaC/omHt/xh8X1nlhkHHPR9Dk11ptea48Wpb3UAqXreEj61mfSVnPyz8A0s+58mcDA2swAAAABJRU5ErkJggg=="""), + schema.Option(display = "Lightning", value = """iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAALEwEAmpwYAAAA1klEQVR4nK2SMQrCQBBFF7H0BIK1M7HRE1hbmYsouUnQi2hl6w20ESQzVoJ1ipQyGdkkgoYku4Iftpv35sOOMR3RBNc5owpB2jXXGL3hQhiehYDhbH6JEs6EIbNw1WDnD1/HQyG4v+GyAcZ+8CUY2LqfsH1KELlhNT0h2NfhQsAYOgVCsG2CC0ESTJ2CvAVue/8X1GNrt8HCsHELGMNGmOCgx3nfLSCIGjaf7FcbnwhjXDumh/Jk5AUXAoLdx+bM6yu/G5QXKYSijMuf4KpBWl5hsOoafAHe1CwuMkCgpAAAAABJRU5ErkJggg=="""), + schema.Option(display = "Checkmark", value = """iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAnUlEQVR4nNWRSwoCMRBE62SCG0FEvIKIi66AAwpzs+6cTJEsdIQwTsYfMcGNDb0JVfWaCvB/o9JCuaszGw8wdlBeodKUk43dsDGEroz8uCcop0nkOYO6VZYc6XKEusmIIHMozzAGeC7LyMpFb74LQnz7yhwD3BomlydhyJ89Hi+bNyEZ8kvTso1fU2XG0HhTb06d7OvN6ZL2c2E/nhvi4bFIkTdT4AAAAABJRU5ErkJggg=="""), + schema.Option(display = "Lightbulb", value = """iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAuklEQVR4nLWQPwrCYAzFvzs4OovJ4kkUvYndHKWD4AE61tVjaI/QSTA5gpu6ppEUClL6/Snog7ckeb+EOPcPKeNaGCtheLcmvCrNV0lhYTw2jDpkIThENzeecGclWIa2VzGAEF4CAHhFAYzPZICeF63HAOo4AOrQD/KEC3IvQG8wEcaHD2A9m/ECTMq4EcKmD7Ca9VyKhLAYABRJYWdX3GfTPsBqyQDTKVP99qjwTwDlVndduMx07xv8AEo7TNPXQVHiAAAAAElFTkSuQmCC"""), + schema.Option(display = "Money", value = """iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAALEwEAmpwYAAABCElEQVR4nGNgQAfbs7QZtmY2MGzJvMqwJfMZw9bMVQxbMtMYtmQqMRAFtmbuZ9ia+R8rJgpsTnegzAAGBoZPTYL/sWE6GLA5XZphS+ZenF7YkrGQYVUoG3bN29K1GLZkvsSpGY4ztmAaciaNlWFrxjVkhTU3N/3//vfXfxhAM2QSqgFbshLQbfr4+ztcMxYD/jJsTtdHMiBzM7oBm19eAmuc8+goLu/MQDIg4xG6Aq2DTf9///v7/++/f/8ND7dhC9DbyAb8wGYLyHYQALkG04DM7wgDtma+RleADD78/obNBa+QDMg4gcuAb39+/a+4sQFbdJ5AdkEH4fjHwB3I0WhAsgEgPUC9AFY8mXb6FDVPAAAAAElFTkSuQmCC"""), + schema.Option(display = "USD", value = """iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAALEwEAmpwYAAABKUlEQVR4nJVTQU5CMRB9G/UuiidQj+EVdEYlJngNv8FA4AK4kOjKFheKS42GHXxu8F0rmujiwzdTEdrfX4KTTNK0ndd5b16BfOjDTWg+h6IBFH1OU9ZV3FAJweiU16C4AU1jaM4CmUJxHe3dVb9Y08OCQjcVd10QRc2ii38RAKlZnMlp+zhuZ6/fbzOAAFCK24MNGMGsg52nyCsMd0JngOLY3jwZXpvLreR5GT36wv/D3tx+PPVeFjrl+LIIYCQURvkDuZx8uRpMsokBd4Wkd49CUV4kLwakMrwqpFANjS/fwZbfQQRjTxnJAgChczTwNEjR2V+fGonr/zaSjH8WYktF90tbWfMdensr7n8wIFzL0/Halpe9YjvEnuIwUVg88usTWUdzzvP4AXhkEFi6q3STAAAAAElFTkSuQmCC"""), + schema.Option(display = "Plant", value = """iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAALEwEAmpwYAAAA50lEQVR4nGMQ/uT3H4F93wh/8tsl8tkvguE/AyMDMUAYxQAUw3YIvfHgI2zAR79/uA3x287wn4GJYWtmHMOWjFMMWzK/M2zN/A/GCBf4vsFjwH+Oi7H74JqQMZIXduEzgO9hKKbmrZlf4QaIfPaLwGeA0NsATAO2ZB5HBML/eiZQgOEzBMOAbenRKAEp9MaDDxRgRBmwJWMW9uj4z8Ao+Nk3TPiT307hj36vUQ3I+MawNeMEhs3EphEGcoEwuQb8X67r+X+p3p53qw3/v11j+P//Mr3d/5fpeWBXvEwPpIBsPAgMoBQAAAVUgtSQelqmAAAAAElFTkSuQmCC"""), + schema.Option(display = "Potted Plant", value = """iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAALEwEAmpwYAAAA5UlEQVR4nMXQMQ6CMBQG4MfkKAVN9BJeRMDFzaCj9BQI8RQaVw+g1CuIeA5cTRvUsQaiKLQhaRz8k39q3te+ArxiMofnNajzMJiTmNRyiwMOGhA8hchLIMIPIJgXrcd8AZVSew0R3pRD363HoPZdhrTOM3GY4JvkBfZJBrTTsQhE+CgC1HJlgHEdicBhPhEA4KDlO8uQ6u3eShwWXmLH338CxLsD8WL5zQ0pgabw7YD/Uvg/kIcG+oWFiKuUhnoK77AA7VUBFqJdCdAALdQB3f8AoW4prxCgYQlkfrenCmTLTj8ffgL7RtuB0udv3QAAAABJRU5ErkJggg=="""), + schema.Option(display = "Bubbly", value = """iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAgElEQVR4nGNgwAE+NQn+R8YMpIJPlBrwf5nef2Q81AzYnO6wf6UNXHP9Op//IDHiDdiaud9hUzRC89ZMEN5PtO0MEA2YmChXbM1Yi9OALRmrCRuwJfMtHgNeEeP//2zHE/8Lvg4EY9ZjiaiGEALCn/z+48NDwAAGXAFIbBiQagAAOMXsHKsff1EAAAAASUVORK5CYII="""), + schema.Option(display = "Confetti", value = """iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAALEwEAmpwYAAABgElEQVR4nGNgwAa2Zv4HYzRgfvybjdmJr7vNTnw9YnLsuwtY8J9h6H8QJsYAsxPf/kMwIQNwAJgBDKQC8+NfzSFOJ2DAj/yEA1+8Wlbjstn0xNfDZie+O+LU/H+Z3v8/E53/v+HZ30OS098ynJL9WRL7H2QACH8Nrf7/hvlEB0ze9Pi3cvwGMB0Leyex9f+/eaZgA/4tMP7/XnIziiFmJ77VIetBCfw3/LunvGE58f+rfwPcFT9LY/6DxJANwWnAz7KoN2+5D/1/w37s/+8Ob7ghn0xm4TUEYnt0Lt+/hUYQf7Oc+P9Ba8n//0v1/8MC9C3nYfyGfE8sSAP7e6HR//fSm8CKf2RkogYoyABchnwNrpwH93cZxN9vBfb+/zvDCjVAIYbUYxjwmvXY6l+1IRj+/uzUgx6gKJphcgyvWY4/fi+/7v//xYZwf7/hPPz7DeuxM9/TM459S8ib8i243grdYoQBzMcbQIZ8Da068z0ndcP3+MLUl/b1PDhDHQ0AAGzYZo9VxMOOAAAAAElFTkSuQmCC"""), + schema.Option(display = "Balloons", value = """iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAALEwEAmpwYAAABVklEQVR4nKWSO0sDQRSFp1FT+gckYKfmTmHAWEhKK0NqKwux8k+IoEgaCVlCfECaZFdDZpLKSrITrBQLsXATQey0jwlmzS5XZk1AzAwb8MBpDnO+ufMgZCjggzQwT8SY15UG5tm0NkhhCdJoUoEmdAOXwcYyTY16gYD7R8B9VDlbOUU0qcoHw/IgrSuPLC531ZAS3SBy7DDAdvVWMwU0CHDvIwywyjq6Y3RIcGH/AQDz7sMAm9VHNaAMd/IF9sMA+UpeB9gjC1WMAvdcXTnOP/HdWleUaR+tpbkJ/sGZbvfDn19ECFms4DRwv/G3TNlXwzWXbcXu13gSnyK/FS1iJMb8zEqt7yfqLiZ4vyAzLEYjaNJMz1rzexdJ7FrJgsyITjnh1I1mC3PNp61J8jEZdnsnWCicl/xNez4sH1P26nnGEM6DXCwdlit1bL/OGsI5z4nWW1j+DTLCMmUQLmPUAAAAAElFTkSuQmCC"""), + schema.Option(display = "Heart", value = """iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAwUlEQVR4nK2SzQrCMAyAc/TnIuw9XIIMvPkCgjs0N8FHkcl8tJ0UvOv0OUSNlSD4MzrXbRZyafp9SdMC/GPZMXeFzErQ5IJ8FeSjIKd2NO3Z4bwvZNZCfHrmTC7EiTIfMGd3YlsMQd5qOHPEmZ0sOqCVXQd84oZmCdpuU4EQ70HQXFoIzqDDaSxAPugV0hYdJKBPVTbpiuqb91OGs4Fu1Ki8s1EcfH+m0E/ihH0lP2GokHjBZZJacFHSCH5Jojiogh9P+KuoZdT7dgAAAABJRU5ErkJggg=="""), + schema.Option(display = "Storefront", value = """iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAeElEQVR4nGNgoAZQbX7/nxw8SAz4v1zf4f8yvf8gvH+lzX+GrZlgDBODYZg4SA1cfLm+A8P/pbr7YQIOm6IJGgBSAxdfqruf4d9tzf8wLPzJD46RxfHJMVBsAAgsevLlPzkYrBkEYALooUxIfCQZsIjSQCRoACUAAG4YRrHv30ITAAAAAElFTkSuQmCC"""), + schema.Option(display = "Megaphone", value = """iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAk0lEQVR4nGNgoCf4tO2c6JdN51d93Xz+PwiTpPnblvOhXzedfwXTTLQBn9BsJcmAb1hsxTDgg4DPf3SMSwPVDfhvEOxJkQF/DUIeDawB/w1DPSgPRBh4z++9GWYATOzrpgu+Xzedf0asAQ3oBoDAhy2XBL9uOjeToAEfBXx9sBmAzzUoCr6IekngMwCba3CpIwkAAK2I09xYTb8DAAAAAElFTkSuQmCC"""), + schema.Option(display = "Green Box", value = """iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAGRJREFUeNpi1KsrYSAFsCBzLjZ2Qxj69aW42AxAG/4TDYCKmaD6YCTCJGxsIGCE+wFoL5ocsjhclhHZ08T4gYmBRECyBkas8YDpn6HhByLjgQm/ajQ/QDXgUY2ZOhhJTd4AAQYAmvV1vwf5/YoAAAAASUVORK5CYII="""), + schema.Option(display = "The Letter P", value = """iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAMtJREFUeNpiFFNwYSAFMDGQCEjWwILGz8+JszDVg3M/ff567cbdtet3Pnn6EiLCiOaHQ3uWyEiLYxocFV9y4tRFdCfx8fJgVQ0EiXFBWPygpakMZ9u5xChpugLdAzOLG4sfzM304WwZaQlNDWW4hUDPYNGgpYGwYdnCHmSpXXuPYnGSuZkeVg+sXb8LiNBtANoO9DRcxZNn0HDcveco3CcoGjSR3NPcPv3T5y8EYtoC5mNgHOFSjWID0N6JUxeDNbzAkzQYaZ5aAQIMAENAQ6U0j5ejAAAAAElFTkSuQmCC"""), + schema.Option(display = "Hands - Finger Gun", value = """iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAkElEQVR4nGNgQAP/l+oa/1+m9/j/cl1PBnLA/2V6M/8v0/v/f6neI9I1r9Li+b9M9yPYgGV6/0k3YKl+Okwz0QaoNr//D8JQ558h24D/SBqJx7qHKTRA7z/pBizRS/6/VM/9/zJ97f+LzfhIM2Cp7hVKw6CeMgMWG2iRb8BSLM4n0QX1lBmAzfnIBhCR5mgDAPnOeKTjoJxhAAAAAElFTkSuQmCC"""), + schema.Option(display = "Hands - Pray", value = """iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAALEwEAmpwYAAABX0lEQVR4nGNgwAL+L9X7/H+ZXiuCr9sGEsOmFgP8X6XF83+Z3v//S/V+wMWW6v0Ei63S4iFswHJ9BbDiZXr/4WJQ/v8lhvKEDViha4TTgGV6hoQNWKbjitOApbouRHhBLxy3C/TDCBuwVK8Ctwv0Kogx4CIeL1zBr3mxgSlSgGELxP//l+mYYNc805j1/1K9ZQQNAKmZacwK16je9FHdtu3m/vdLrK+i2oTLBXr/3y+xvu3Qdu0QSC+DavO7farN7//XTVr4n1gDQGpBekB6GdRaX2uoNb/9odb87v/xuQlICnWvIgXsNZj4yblx/0FqVZvf/lJueqsNVqDS/K4OZKJrx6X/35eagEL7CXJggdggsZ9LTf57dF4A267S9K4WHg5a9f/ZVJveXwZJVPQvufh/lZYQZgyZ8RX3rToJUqPW+O4KSA+KAtXGj+Yaza9Xy9e/lMAVzSA5kBqQWpggAA3ZUoHzkYX5AAAAAElFTkSuQmCC"""), + schema.Option(display = "Hands - Peace", value = """iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAALEwEAmpwYAAAA5klEQVR4nK3OMUuCURQG4AsK/gdpCXSK93zU0CS0tIhzg1P/wAiSfoCzS6PgopyjOFuT6NhvaAjXNocGp3oj7+0zEP0+uB44wz3c85zXuVA0NGnyzvFZks6GOKFiScPcZRVNJjQhDd1/s5afyWsOAPebzyofXFwVA/DsZ+hnA2NchGvkCHW+VEpU+fRvecgGJjcFGlYhhVFxnYKWNDKB36JiGpbWVDylwEBOXZ6ior29+tf4okqPijuf6rx8AEgud4Hd3rMsNZrMYoDvPMsHALzFAYbbKMD5FI9RgE8SAVQ7K+btowE/yeeFOvmRptkAAAAASUVORK5CYII="""), + schema.Option(display = "Hands - Shaka", value = """iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAjElEQVR4nGNgQAP/l+oa/1+m9/j/cl1PBnLA/2V6M/8v0/v/f6neI9I1r9Li+b9M9yPYgGV6/0k3YKl+Okwz0QaoNr//D8JQ558h24D/SBoJ4aFuwFLdK5S6oJ4yAxYbaJFvwFLdp/+X6vn+X6pn83+Zvvb/pbqCZAUiAuv+osAA3V//l+p2o6TEAQEAAFiTBKrY0ckAAAAASUVORK5CYII="""), + ] + layouts = [ + schema.Option(display = "Top and Bottom (With Banner and Divider)", value = "Top"), + schema.Option(display = "Side by Side (With Icon)", value = "Side"), + schema.Option(display = "Number Only", value = "Number"), + ] + fonts = [ + schema.Option(display = "Small", value = "tom-thumb"), + schema.Option(display = "Medium (Default)", value = "tb-8"), + schema.Option(display = "Large", value = "Dina_r400-6"), + schema.Option(display = "XL", value = "6x13"), + schema.Option(display = "XXL", value = "10x20"), + schema.Option(display = "Mono Small", value = "CG-pixel-3x5-mono"), + schema.Option(display = "Mono Medium", value = "CG-pixel-4x5-mono"), + ] + + return schema.Schema( + version = "1", + fields = [ + schema.Text( + id = "code", + icon = "fingerprint", + name = "Counter ID", + desc = "Enter your ilo.so counter ID", + default = DEFAULT_CODE, + ), + schema.Dropdown( + id = "layout", + icon = "grip", + name = "Layout", + desc = "The layout of your display", + options = layouts, + default = DEFAULT_LAYOUT, + ), + schema.Dropdown( + id = "font", + icon = "font", + name = "Font", + desc = "Font used for text and numbers", + options = fonts, + default = DEFAULT_FONT, + ), + schema.Text( + id = "banner", + icon = "message", + name = "Banner", + desc = "Text to display in banner", + default = DEFAULT_BANNER, + ), + schema.Dropdown( + id = "color", + icon = "eyeDropper", + name = "Divider Color", + desc = "The color of the divider", + options = colors, + default = DEFAULT_COLOR, + ), + schema.Dropdown( + id = "icon", + icon = "icons", + name = "Icon", + desc = "The icon to display", + options = icons, + default = DEFAULT_ICON, + ), + schema.Toggle( + id = "show_comma", + icon = "toggleOn", + name = "Show Comma", + desc = "Enable commas in the number display", + default = DEFAULT_SHOW_COMMA, + ), + schema.Toggle( + id = "multiply_by_12", + icon = "toggleOn", + name = "Annual Multiplier", + desc = "Multiply the counter by 12", + default = DEFAULT_MULTIPLY_BY_12, + ), + schema.Toggle( + id = "add_dollar_sign", + icon = "toggleOn", + name = "Add Dollar Sign", + desc = "Add a dollar sign to the number", + default = DEFAULT_ADD_DOLLAR_SIGN, + ), + ], + )