Skip navigation

Category Archives: RStudio

I had thought most folks likely knew this already, but if you are a user of RStudio dailies (this may apply to regular RStudio, but I only use the dailies) and are missing ligatures in the editor (for some fonts), the “fix” is pretty simple (some misguided folks think ligatures are daft).

RStudio, like VS Code and many other editors/apps, is just a special purpose web browser. That means ligatures are controlled via CSS. RStudio also supports themes. There are many built-in themes. I use this third-party one. We can use these themes to sneak in some CSS that gives you granular control over ligatures.

The CSS class we need to target is .ace_scroller. That’s the contents of the editor pane, console, and any other monospaced “scrolled text” components. If you’re wondering, “Why …ace…?”_, that’s die to RStudio’s use of the Ace editor component. Say all the nice things you want to about the Monaco editor component used by VS Code (et al.), but the wizards at Posit wield Ace better than I’ve seen any other app dev team.

You can start here to learn about all the ways you can, and, may need to customize ligatures, but the following worked for my new fav font family:

.ace_scroller {
  font-variant-ligatures: discretionary-ligatures;
  font-feature-settings: "dlig" 1;
}

There are many possible values for font-variant-ligatures, and you can fully customize the font-feature-settings to target only the ligatures you want (for example, the previous linked font has eight stylistic sets).

UPDATE

sailm-b has forked and is maintaining a more updated version of rscodeio.

FIN

If you were missing out before, hopefully this brings you back into the ligature fold.

RStudio’s macOS Electron build is coming along quite nicely and is blazing fast on Apple Silicon.

I like to install the dailies, well, daily!; and, of late, RStudio and Quarto are joined at the hip. As a result, I regularly found myself having to manually update Quarto CLI right after updating RStudio, so I made a small zsh script that will use the new RStudio dailies JSON API to grab the latest daily, and the GitHub JSON API to grab the latest Quarto release, then install them both.

Caveats and limitations are in the repo.

Modern MacBook Pros have a fairly useless (c’mon, admit it!) “Touch Bar” that did little more than cause severe ire in the developer community after turning a full-fledged, tactile Escape key into a hollow version if its former self.

Having said, that, some apps do make OK use of it, with Fantastical and Omnigraffle being two of the better implementations.

While I don’t need Touch Bar support in RStudio (I prefer developing cross-device keyboard shortcut muscle memory), I do have a Touch Bar Mac and came across this blog post which caused me to create this:

using BetterTouchTool (BTT).

This is a clearer, “proper screenshot” (Cmd-Shift-6) of it:

The rightmost two Touch Bar icons are technically not RStudio components, but I prefer iTerm to the built-in RStudio javascript terminal and felt compelled to write a curl … | jq … “one-liner” to get local weather data from the Dark Sky API, since there’s amazing support for scheduled actions to update the button display.

BTT is not free (~$7.00 USD) and, so far, I’ve only wired up basic keyboard shortcuts for RStudio with it. I have setup other BTT configurations for general and app-specific use for other apps and even setup a few “monitoring” ones that let me see the status off various external web services that I usually monitor in other ways. And, I plan on exploring ways to have it be a bit more dynamic with regard to the RStudio context (i.e. package, project or one of those “37 Untitled Document” type of session days).

The config (minus the weather and iTerm) is below and can be added into any BTT config file pretty easily. If you come up with some creative RStudio or other data-sci workflows with BTT, drop a link to the in the comments.

{
      "BTTAppBundleIdentifier" : "org.rstudio.RStudio",
      "BTTAppName" : "RStudio",
      "BTTAppProcessMatchMode" : 2,
      "BTTAppProcessName" : "RStudio",
      "BTTAppSpecificSettings" : {

      },
      "BTTTriggers" : [
        {
          "BTTTouchBarButtonName" : "New",
          "BTTTriggerType" : 629,
          "BTTTriggerClass" : "BTTTriggerTypeTouchBar",
          "BTTPredefinedActionType" : -1,
          "BTTPredefinedActionName" : "No Action",
          "BTTShortcutToSend" : "56,55,45",
          "BTTEnabled" : 1,
          "BTTOrder" : 1,
          "BTTIconData" : "iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAYAAACOEfKtAAAMFGlDQ1BJQ0MgUHJvZmlsZQAASImVVwdYU8kWnltSCAktEAEpoTdBepUaepcONkISIJSICUHEji4q2AuiWNFVEEXXAsiiImJnUbDXhyIqyrpYsKHyJgV0fe175\/vmzp8z55z5z9wzk7kAKNuy8\/JyUBUAcgX5wpggP2ZScgqT9BigQAuQgQcgsTmiPN\/o6HAAZaT\/u7y\/CRBJf81aEutfx\/+rqHJ5Ig4ASDTEaVwRJxfiowDgmpw8YT4AhHaoN5qZnyfBAxCrCyFBAIi4BGfIsKYEp8nwOKlNXAwLYh8AyFQ2W5gBgJKEN7OAkwHjKEk42gq4fAHEWyD24mSyuRDfh3hcbu50iJXJEJun\/RAn428x00ZjstkZo1iWi1TI\/nxRXg571v+5HP9bcnPEI3MYwkbNFAbHSHKG61adPT1MgqkQNwvSIqMgVoP4Ap8rtZfgu5ni4Hi5fT9HxIJrBhgAvm4u2z8MYh2IGeLseF85tmcLpb7QHo3k54fEyXGacHqMPD5aIMiJDJfHWZrJCxnB23iigNgRm3R+YAjEsNLQo0WZcYkynmhbAT8hEmIliK+KsmPD5L4PizJZkSM2QnGMhLMxxO\/ShYExMhtMM1c0khdmw2FL54K1gPnkZ8YFy3yxJJ4oKXyEA5fnHyDjgHF5gng5NwxWl1+M3LckLydabo9t4+UExcjWGTskKogd8e3KhwUmWwfscRY7NFo+1\/u8\/Og4GTccBeGABfwBE4hhSwPTQRbgd\/Q39MNfspFAwAZCkAF4wFquGfFIlI4I4DMWFIE\/IeIB0aifn3SUBwqg\/uuoVva0BunS0QKpRzZ4CnEuro174R54OHz6wGaPu+JuI35M5ZFZiQFEf2IwMZBoMcqDA1nnwCYE\/H+jC4M9D2Yn4SIYyeF7PMJTQifhMeEGoZtwBySAJ9Iocqtp\/GLhT8yZIAJ0w2iB8uzSfswON4WsnXA\/3BPyh9xxBq4NrHFHmIkv7g1zc4LaHxmKR7l9X8uf55Ow\/jEfuV7JUslJziJt9M2wRq1+jsL6YY24sA\/72RJbih3BzmOnsYtYM9YAmNgprBFrx05I8GglPJFWwshsMVJu2TAOf8TGtta2z\/bLT3Oz5fNL1kuUzyvMl2wG1vS8WUJ+RmY+0xeexjxmiIBjM45pb2vnCoDkbJcdHW8Z0jMbYVz6riteAYCn4\/DwcPN3XbgyAEdhTVN6vuvM3eF2LQTgwkqOWFgg00mOY0AAFKAMd4UW0ANGwBzmYw+c4X+IDwgAoSAKxIFkMBWueCbIhZxngjlgISgBZWA12AA2g+1gF6gGB8Bh0ACawWlwDlwGV8ENcA\/WRS94CQbAezCEIAgJoSF0RAvRR0wQK8QecUW8kAAkHIlBkpFUJAMRIGJkDrIIKUPWIpuRnUgN8htyHDmNXEQ6kTvII6QPeYN8RjGUiqqjuqgpOh51RX3RMDQOnYJmoDPQInQxuhKtQKvQ\/Wg9ehq9jN5Au9GX6CAGMEWMgRlg1pgrxsKisBQsHRNi87BSrByrwuqwJvier2HdWD\/2CSfidJyJW8PaDMbjcQ4+A5+HL8c349V4Pd6GX8Mf4QP4NwKNoEOwIrgTQghJhAzCTEIJoZywh3CMcBbum17CeyKRyCCaEV3gvkwmZhFnE5cTtxIPEluIncQe4iCJRNIiWZE8SVEkNimfVELaRNpPOkXqIvWSPpIVyfpke3IgOYUsIBeTy8n7yCfJXeRn5CEFFQUTBXeFKAWuwiyFVQq7FZoUrij0KgxRVClmFE9KHCWLspBSQamjnKXcp7xVVFQ0VHRTnKjIV1ygWKF4SPGC4iPFT1Q1qiWVRZ1MFVNXUvdSW6h3qG9pNJopzYeWQsunraTV0M7QHtI+KtGVbJRClLhK85UqleqVupReKSsomyj7Kk9VLlIuVz6ifEW5X0VBxVSFpcJWmadSqXJc5ZbKoCpd1U41SjVXdbnqPtWLqs\/VSGqmagFqXLXFarvUzqj10DG6EZ1F59AX0XfTz9J71YnqZuoh6lnqZeoH1DvUBzTUNBw1EjQKNSo1Tmh0MzCGKSOEkcNYxTjMuMn4PEZ3jO8Y3phlY+rGdI35oDlW00eTp1mqeVDzhuZnLaZWgFa21hqtBq0H2ri2pfZE7Zna27TPavePVR\/rMZYztnTs4bF3dVAdS50Yndk6u3TadQZ19XSDdPN0N+me0e3XY+j56GXprdc7qdenT9f30ufrr9c\/pf+CqcH0ZeYwK5htzAEDHYNgA7HBToMOgyFDM8N4w2LDg4YPjChGrkbpRuuNWo0GjPWNI4znGNca3zVRMHE1yTTZaHLe5IOpmWmi6RLTBtPnZppmIWZFZrVm981p5t7mM8yrzK9bEC1cLbIttlpctUQtnSwzLSstr1ihVs5WfKutVp3jCOPcxgnGVY27ZU219rUusK61fmTDsAm3KbZpsHk13nh8yvg148+P\/2brZJtju9v2np2aXahdsV2T3Rt7S3uOfaX9dQeaQ6DDfIdGh9eOVo48x22Ot53oThFOS5xanb46uzgLneuc+1yMXVJdtrjcclV3jXZd7nrBjeDm5zbfrdntk7uze777Yfe\/PKw9sj32eTyfYDaBN2H3hB5PQ0+2507Pbi+mV6rXDq9ubwNvtneV92MfIx+uzx6fZ74Wvlm++31f+dn6Cf2O+X1gubPmslr8Mf8g\/1L\/jgC1gPiAzQEPAw0DMwJrAweCnIJmB7UEE4LDgtcE3wrRDeGE1IQMhLqEzg1tC6OGxYZtDnscbhkuDG+KQCNCI9ZF3I80iRRENkSBqJCodVEPos2iZ0T\/PpE4MXpi5cSnMXYxc2LOx9Jjp8Xui30f5xe3Ku5evHm8OL41QTlhckJNwodE\/8S1id1J45PmJl1O1k7mJzemkFISUvakDE4KmLRhUu9kp8klk29OMZtSOOXiVO2pOVNPTFOexp52JJWQmpi6L\/ULO4pdxR5MC0nbkjbAYXE2cl5yfbjruX08T95a3rN0z\/S16c8zPDPWZfRlemeWZ\/bzWfzN\/NdZwVnbsz5kR2XvzR7OScw5mEvOTc09LlATZAvaputNL5zemWeVV5LXPcN9xoYZA8Iw4R4RIpoiasxXh9ecdrG5+BfxowKvgsqCjzMTZh4pVC0UFLbPspy1bNazosCiX2fjszmzW+cYzFk459Fc37k75yHz0ua1zjeav3h+74KgBdULKQuzF\/5RbFu8tvjdosRFTYt1Fy9Y3PNL0C+1JUolwpJbSzyWbF+KL+Uv7VjmsGzTsm+l3NJLZbZl5WVflnOWX1pht6JixfDK9JUdq5xXbVtNXC1YfXON95rqtapri9b2rItYV7+eub50\/bsN0zZcLHcs376RslG8sbsivKJxk\/Gm1Zu+bM7cfKPSr\/LgFp0ty7Z82Mrd2rXNZ1vddt3tZds\/7+DvuL0zaGd9lWlV+S7iroJdT3cn7D7\/q+uvNXu095Tt+bpXsLe7Oqa6rcalpmafzr5VtWituLZv\/+T9Vw\/4H2iss67beZBxsOwQOCQ+9OK31N9uHg473HrE9UjdUZOjW47Rj5XWI\/Wz6gcaMhu6G5MbO4+HHm9t8mg69rvN73ubDZorT2icWHWScnLxyeFTRacGW\/Ja+k9nnO5pndZ670zSmettE9s6zoadvXAu8NyZ877nT13wvNB80f3i8UuulxouO1+ub3dqP\/aH0x\/HOpw76q+4XGm86na1qXNC58ku767T1\/yvnbsecv3yjcgbnTfjb96+NflW923u7ed3cu68vltwd+jegvuE+6UPVB6UP9R5WPUPi38c7HbuPvHI\/1H749jH93o4PS+fiJ586V38lPa0\/Jn+s5rn9s+b+wL7rr6Y9KL3Zd7Lof6SP1X\/3PLK\/NXRv3z+ah9IGuh9LXw9\/Gb5W623e985vmsdjB58+D73\/dCH0o9aH6s\/uX46\/znx87OhmV9IXyq+Wnxt+hb27f5w7vBwHlvIll4FMNjQ9HQA3uwFgJYMAP0qvD8oyb69pILIvhelCPwnLPs+k4ozAHWwk1y5WS0AHILNFDbaAgAkV+84H4A6OIw2uYjSHexlsajwC4bwcXj4rS4ApCYAvgqHh4e2Dg9\/3Q3J3gGgZYbsm08iRHi\/3yGN0cUoXAB+kn8CCCdsu7q1Xy8AAAAJcEhZcwAAFiUAABYlAUlSJPAAAAYMSURBVHgB7ZzLbhU3HMYJLRTKJYXQcgtpxKotIIHEusmyD4DEDsEL8AYgwUOwZovEA7CEBZuqUpEqddEdCRJRUiil9wuX7zeM0bmNL8dn4uOJ\/9Inn5nxeOxvvrH9\/9vJzLZ39omSywLpNNv\/qtya8EK4J\/wuJLUP66fPKN0vzCatjfvhr5TlX+EDYU7YIfwqvBaSmCFwn55+QVhIUgv\/h75RVsj6TTgnrAq3hF+EJGYIzEWBhqRd+nGiPvi0TpMo0RBoKpZLulsVXRJeCrz8FSGJEnMlENL21OTNK+XTTqLEXAkUX5UlV2LuBCZXYu4EJldiKIH0NX8KpMzJ2jYU9pFAutPysGRKDCXwLzXigcDo97OAZ9Cm0cedF5jkLwpMnG226X1iKIGoDuKYuD4RNoPAw3rOAYEU5U+VEkMJRIH3BTyAH4R\/hDZtuwq\/KxwRbgrHhUVhapQYSqDpA3Himfn\/LbRp9G3\/CTyXl8bxuErkPl6I8Vgm4j\/jlGNEYa7UKcdN9ocuEAWhEkRF2v6E9YjqGfi+3wvfCV8INJ5+0dRfP0caAkG1JwVcv9PCTwL15sVEW6gCox84RgGQRWPXBRQ4jhIher6+\/5hSjul+IDJKieYNTrMC1cbKaOy4SqSdfMKLwinhnPBIIDQWpcQcFKg2VharRKY45pOmwKMCfWuUEnNSII3GYpVI7JPAw5dCtBJzUqDaW1mMEimAeSR9KX0hCoxSYo4KVJsrmwol5qhAQ+AoJXLtM4GItVEa50aZuT6oRJwFXo6X5axA08BeJX6rkwsCA8NBwSUQ2t\/bJ57V8UOB+a6XuR7gVUjiTL1KpE97LHBuXvi4Bn1ek\/UqkSmNEVVT\/r7zXSCQBkEcquHzuyEwyl4V8D6WBYi0Gb7153UGl5\/dV05XCKRRqA5sCHzWqwLKw+2EYEh0KRE1BlmXCOxtOKSxSocSIc9XicoaZl0lECUSs0Rx6wJeCLHMiRvhnS4bfeL9GvyeuHWdQD5f1nDMOk4hcOIMRBbYdQVG0uO+vRDo5siaoxBopcd9sRDo5siaoxBopcd9sRDo5siaoxBopcd9sRDo5siao6u+sGk0nggxPgKs+MQuI5KDH+1tXScQ8h4LEHNNINRvM1y+Z7YMg9e6TiAKRH0Y8UFXvI+8QVGbrUAgkWqUxa4GW0BVl6vYIbsVvK3rBEIEAyVgp6tr0KT\/47NHuV7WdQJZICIqzU6ur4U9gs3Yect+RFIv6zqBfLIoj\/UQwvosYdqMKPaWXJVrIsUocEEZLgqHmzLW51eU3hYg0su2ggIhkXbO1rARw6fuGmj67nd1qn2Zy8EwA4XAYU6CzhQCg+gazlwIHOYk6EwhMIiu4cw5j8L4tQiAuV2TEAgeHBAYgZvy6NJ7Iw8Tb9ffv+CxEHR4nSuBZjcVjb0k8FcGowxC2CfIRNo1ieb+OeG6gO9sM6I7N4WNXAkc9DAgaZRBIOThjfh4GORhX6GJ4OjnSHtfXs4E4tfyeZ4SmjwMMykm9dn3R7fwleAKJqwoTxUay5lASEFh9HOuQKmyeJlRtiszCqxeDhUoFsFAITCCPG4tBBYCIxmIvL0oMJLAXEdhphmsnrEbnw3ltlGYuR0jJvPBauRU2mSUy+KTaxpDyL\/KkyuBkIc3AIF3hCYvg\/YdEgiULguQaDPI81kTIWJNXuefQpFnGo23j7eAy7UqMKkeZRAI2SxVkrqMPE8EV0gfBVbl5a5AHPqnQlNfzoT3jHBC+EZoUqouVcY\/00CBvBSbEUwgb7ACTV+yV\/cS4bD1PZTftpmGkI4y6kdDUaqrX+N+ykFdLzjwsVAF8gcrywIS5y8b6YNSGo316bNaq2MogYxodMo40vxOTSAvknoks1ACUeCSwOfg0ym33bAVPeC24Or0W6tHKIH0gU0jXmuVtBQcvI5rKWusS02j11iFbcWbQhWYG0d0NWWHasRbKztUI8jjVhRo1jeYHFdheC40WNmhOkAMBG7KDlXzplzroQP1S36IYqi7zYyX0sq0ywwiONs\/Cs9tNZnCa2uqU9Ce5km3wRDYZQVOmrO+8t4CdZ1lQ7Sx3EwAAAAASUVORK5CYII=",
          "BTTTriggerConfig" : {
            "BTTTouchBarItemIconHeight" : 22,
            "BTTTouchBarItemIconWidth" : 22,
            "BTTTouchBarItemPadding" : 0,
            "BTTTouchBarFreeSpaceAfterButton" : "15.000000",
            "BTTTouchBarButtonColor" : "58.650001, 58.650001, 58.650001, 255.000000",
            "BTTTouchBarAlwaysShowButton" : "0",
            "BTTTouchBarAlternateBackgroundColor" : "0.000000, 0.000000, 0.000000, 0.000000"
          }
        },
        {
          "BTTTouchBarButtonName" : "Build",
          "BTTTriggerType" : 629,
          "BTTTriggerClass" : "BTTTriggerTypeTouchBar",
          "BTTPredefinedActionType" : -1,
          "BTTPredefinedActionName" : "No Action",
          "BTTShortcutToSend" : "56,55,11",
          "BTTEnabled" : 1,
          "BTTOrder" : 3,
          "BTTIconData" : "iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAYAAACOEfKtAAAMFGlDQ1BJQ0MgUHJvZmlsZQAASImVVwdYU8kWnltSCAktEAEpoTdBepUaepcONkISIJSICUHEji4q2AuiWNFVEEXXAsiiImJnUbDXhyIqyrpYsKHyJgV0fe175\/vmzp8z55z5z9wzk7kAKNuy8\/JyUBUAcgX5wpggP2ZScgqT9BigQAuQgQcgsTmiPN\/o6HAAZaT\/u7y\/CRBJf81aEutfx\/+rqHJ5Ig4ASDTEaVwRJxfiowDgmpw8YT4AhHaoN5qZnyfBAxCrCyFBAIi4BGfIsKYEp8nwOKlNXAwLYh8AyFQ2W5gBgJKEN7OAkwHjKEk42gq4fAHEWyD24mSyuRDfh3hcbu50iJXJEJun\/RAn428x00ZjstkZo1iWi1TI\/nxRXg571v+5HP9bcnPEI3MYwkbNFAbHSHKG61adPT1MgqkQNwvSIqMgVoP4Ap8rtZfgu5ni4Hi5fT9HxIJrBhgAvm4u2z8MYh2IGeLseF85tmcLpb7QHo3k54fEyXGacHqMPD5aIMiJDJfHWZrJCxnB23iigNgRm3R+YAjEsNLQo0WZcYkynmhbAT8hEmIliK+KsmPD5L4PizJZkSM2QnGMhLMxxO\/ShYExMhtMM1c0khdmw2FL54K1gPnkZ8YFy3yxJJ4oKXyEA5fnHyDjgHF5gng5NwxWl1+M3LckLydabo9t4+UExcjWGTskKogd8e3KhwUmWwfscRY7NFo+1\/u8\/Og4GTccBeGABfwBE4hhSwPTQRbgd\/Q39MNfspFAwAZCkAF4wFquGfFIlI4I4DMWFIE\/IeIB0aifn3SUBwqg\/uuoVva0BunS0QKpRzZ4CnEuro174R54OHz6wGaPu+JuI35M5ZFZiQFEf2IwMZBoMcqDA1nnwCYE\/H+jC4M9D2Yn4SIYyeF7PMJTQifhMeEGoZtwBySAJ9Iocqtp\/GLhT8yZIAJ0w2iB8uzSfswON4WsnXA\/3BPyh9xxBq4NrHFHmIkv7g1zc4LaHxmKR7l9X8uf55Ow\/jEfuV7JUslJziJt9M2wRq1+jsL6YY24sA\/72RJbih3BzmOnsYtYM9YAmNgprBFrx05I8GglPJFWwshsMVJu2TAOf8TGtta2z\/bLT3Oz5fNL1kuUzyvMl2wG1vS8WUJ+RmY+0xeexjxmiIBjM45pb2vnCoDkbJcdHW8Z0jMbYVz6riteAYCn4\/DwcPN3XbgyAEdhTVN6vuvM3eF2LQTgwkqOWFgg00mOY0AAFKAMd4UW0ANGwBzmYw+c4X+IDwgAoSAKxIFkMBWueCbIhZxngjlgISgBZWA12AA2g+1gF6gGB8Bh0ACawWlwDlwGV8ENcA\/WRS94CQbAezCEIAgJoSF0RAvRR0wQK8QecUW8kAAkHIlBkpFUJAMRIGJkDrIIKUPWIpuRnUgN8htyHDmNXEQ6kTvII6QPeYN8RjGUiqqjuqgpOh51RX3RMDQOnYJmoDPQInQxuhKtQKvQ\/Wg9ehq9jN5Au9GX6CAGMEWMgRlg1pgrxsKisBQsHRNi87BSrByrwuqwJvier2HdWD\/2CSfidJyJW8PaDMbjcQ4+A5+HL8c349V4Pd6GX8Mf4QP4NwKNoEOwIrgTQghJhAzCTEIJoZywh3CMcBbum17CeyKRyCCaEV3gvkwmZhFnE5cTtxIPEluIncQe4iCJRNIiWZE8SVEkNimfVELaRNpPOkXqIvWSPpIVyfpke3IgOYUsIBeTy8n7yCfJXeRn5CEFFQUTBXeFKAWuwiyFVQq7FZoUrij0KgxRVClmFE9KHCWLspBSQamjnKXcp7xVVFQ0VHRTnKjIV1ygWKF4SPGC4iPFT1Q1qiWVRZ1MFVNXUvdSW6h3qG9pNJopzYeWQsunraTV0M7QHtI+KtGVbJRClLhK85UqleqVupReKSsomyj7Kk9VLlIuVz6ifEW5X0VBxVSFpcJWmadSqXJc5ZbKoCpd1U41SjVXdbnqPtWLqs\/VSGqmagFqXLXFarvUzqj10DG6EZ1F59AX0XfTz9J71YnqZuoh6lnqZeoH1DvUBzTUNBw1EjQKNSo1Tmh0MzCGKSOEkcNYxTjMuMn4PEZ3jO8Y3phlY+rGdI35oDlW00eTp1mqeVDzhuZnLaZWgFa21hqtBq0H2ri2pfZE7Zna27TPavePVR\/rMZYztnTs4bF3dVAdS50Yndk6u3TadQZ19XSDdPN0N+me0e3XY+j56GXprdc7qdenT9f30ufrr9c\/pf+CqcH0ZeYwK5htzAEDHYNgA7HBToMOgyFDM8N4w2LDg4YPjChGrkbpRuuNWo0GjPWNI4znGNca3zVRMHE1yTTZaHLe5IOpmWmi6RLTBtPnZppmIWZFZrVm981p5t7mM8yrzK9bEC1cLbIttlpctUQtnSwzLSstr1ihVs5WfKutVp3jCOPcxgnGVY27ZU219rUusK61fmTDsAm3KbZpsHk13nh8yvg148+P\/2brZJtju9v2np2aXahdsV2T3Rt7S3uOfaX9dQeaQ6DDfIdGh9eOVo48x22Ot53oThFOS5xanb46uzgLneuc+1yMXVJdtrjcclV3jXZd7nrBjeDm5zbfrdntk7uze777Yfe\/PKw9sj32eTyfYDaBN2H3hB5PQ0+2507Pbi+mV6rXDq9ubwNvtneV92MfIx+uzx6fZ74Wvlm++31f+dn6Cf2O+X1gubPmslr8Mf8g\/1L\/jgC1gPiAzQEPAw0DMwJrAweCnIJmB7UEE4LDgtcE3wrRDeGE1IQMhLqEzg1tC6OGxYZtDnscbhkuDG+KQCNCI9ZF3I80iRRENkSBqJCodVEPos2iZ0T\/PpE4MXpi5cSnMXYxc2LOx9Jjp8Xui30f5xe3Ku5evHm8OL41QTlhckJNwodE\/8S1id1J45PmJl1O1k7mJzemkFISUvakDE4KmLRhUu9kp8klk29OMZtSOOXiVO2pOVNPTFOexp52JJWQmpi6L\/ULO4pdxR5MC0nbkjbAYXE2cl5yfbjruX08T95a3rN0z\/S16c8zPDPWZfRlemeWZ\/bzWfzN\/NdZwVnbsz5kR2XvzR7OScw5mEvOTc09LlATZAvaputNL5zemWeVV5LXPcN9xoYZA8Iw4R4RIpoiasxXh9ecdrG5+BfxowKvgsqCjzMTZh4pVC0UFLbPspy1bNazosCiX2fjszmzW+cYzFk459Fc37k75yHz0ua1zjeav3h+74KgBdULKQuzF\/5RbFu8tvjdosRFTYt1Fy9Y3PNL0C+1JUolwpJbSzyWbF+KL+Uv7VjmsGzTsm+l3NJLZbZl5WVflnOWX1pht6JixfDK9JUdq5xXbVtNXC1YfXON95rqtapri9b2rItYV7+eub50\/bsN0zZcLHcs376RslG8sbsivKJxk\/Gm1Zu+bM7cfKPSr\/LgFp0ty7Z82Mrd2rXNZ1vddt3tZds\/7+DvuL0zaGd9lWlV+S7iroJdT3cn7D7\/q+uvNXu095Tt+bpXsLe7Oqa6rcalpmafzr5VtWituLZv\/+T9Vw\/4H2iss67beZBxsOwQOCQ+9OK31N9uHg473HrE9UjdUZOjW47Rj5XWI\/Wz6gcaMhu6G5MbO4+HHm9t8mg69rvN73ubDZorT2icWHWScnLxyeFTRacGW\/Ja+k9nnO5pndZ670zSmettE9s6zoadvXAu8NyZ877nT13wvNB80f3i8UuulxouO1+ub3dqP\/aH0x\/HOpw76q+4XGm86na1qXNC58ku767T1\/yvnbsecv3yjcgbnTfjb96+NflW923u7ed3cu68vltwd+jegvuE+6UPVB6UP9R5WPUPi38c7HbuPvHI\/1H749jH93o4PS+fiJ586V38lPa0\/Jn+s5rn9s+b+wL7rr6Y9KL3Zd7Lof6SP1X\/3PLK\/NXRv3z+ah9IGuh9LXw9\/Gb5W623e985vmsdjB58+D73\/dCH0o9aH6s\/uX46\/znx87OhmV9IXyq+Wnxt+hb27f5w7vBwHlvIll4FMNjQ9HQA3uwFgJYMAP0qvD8oyb69pILIvhelCPwnLPs+k4ozAHWwk1y5WS0AHILNFDbaAgAkV+84H4A6OIw2uYjSHexlsajwC4bwcXj4rS4ApCYAvgqHh4e2Dg9\/3Q3J3gGgZYbsm08iRHi\/3yGN0cUoXAB+kn8CCCdsu7q1Xy8AAAAJcEhZcwAAFiUAABYlAUlSJPAAAAbCSURBVHgB7ZxPjxRFGIcRdf2D4l+WuAKLcd0YDnpCT4ZN\/Ape9ehBE41697DRK0fima9g0IuR1S9AjIkH8IDLsuIaRBQVRNHn6UwltbM90z3TtTvVO\/0mP2u2p7tm6tdPVb1VPbJnTxeNHLir0dU7e\/EMHxe+byjrfoP\/OPFvZJk07kla2\/ZVdi9Vz6P70INoLxolbnHyd8gyaeRuoKRp2APoUK98iHJUAm9yzQb6E11Hd1CSyN1AjTuBNO8d9AQyRjXwBtd8gS6hU+gaShK5GhjI208rNe8ImkOPoXHiYS463LvwQK9MQmKuBgbybPT7yEY\/0mv4OEWo7zcu9uasoiQk5mig3+l+9DTSQM0blzwuLULT9iFLiXY2TkLi3VSUU\/h9ZtEz6GP0KpI8G54ivDnemKPI8XQRfYucZMaKHAkcqyE1L\/JGJCUxNwLtWtLwB\/odXUAvIMewlJGMxBwJ\/AenNPEyMmH+GRl25VET6OLCkv8kIzE3AkNbNXEdXURX0XmUJYk5EohXxSxpN7ZLryGJyZLEXAnEryKyJzFXAoOBEpg1ibkTGIzMlsTcCQwGZktiWwgMRmZHYlsIDAYGEp2Vf0HusiTb2wsfQtmfJ\/oZ5qHuarun6Pcoom0Ghu+9U2XYxTGF+ga5i7OCNLGIthkoGe5QS97jyF2aVKsTqtoSgUTJO4QCiR4vSGzbGKh5S+gl9EHvdcrdGqosDZ\/FuBJ6ETl0eONcat5uC4GBvP18aUlItU9IVbVCysOepJ\/tGFiszdtiYBiLUu1Q13Kt5CRNews5JnpTr+Zu4KTJw6NNIYmaeBvZrWdyNzAX8vCqiJBG\/cpfF9GVXA1sSp6z5XVkg30oLzlOQNY7blinifwG+gn5gOpGrgY2JU\/zTiFTjWPICWAJaeI4EcjTuGW0is6hm7kZKCE+kTPPG2e2DeQ5yF9CPlDfh9zRCUSOSmJM3o\/UY71u9v6FsktjHJiPI2fb99BB5KBdNwJ5EvIp0sDP0ZNIiqx3CdUlcSB51OFEsicnAmd6DXuK0kePB5Bdr070k7fGRZppFzY0QnIk3OP+XUXiUPK4vohcDHSgn0ca9y7yZxxNyHOAt4uFCGR6UzSvikTPsdtvGfM4VpBHWUQOBkqe456m2TAb6Tq3zjKzijyqKcLzrvVeV5FYi7xeXRMvJO85tIS+Rt8jf8P3L5KCKrku\/Qi9iez6ThjDUpW9vO+wsIg+QWeQpIXP0TzpvYBeRyeQy0dvcmlMksB+8jRgFmnqMBNsSF3yPDeOKhK9cRtoy2wbV5LD650mr7\/Ng0i8wolvoEryQoWTIHAS5IX2hrKfRLvwOjLt2ZTnhQsGlVVdZdB14x6XvKPI2XYZhYnDGykVVeFE4ApjFZnnOV6ZqmjAOOFnOtu78nkeaew55AzuJmpl7CSBOZDXb0ggMaxYfN8bsilV6b9oEn9Pesyr02ZvsBopdoLAJuTZNaXDrrvWU7zC4FCyqNVl+z9tuw2UvHlUNubVGX\/N0VzLOuZ9hvylVrzC4M\/JxnYa2JQ8xyJpi8nT0KmIpmOeRp1BrhYWkDNlnVma03Y2toPAFOSZnkieOZndVhKnIlKSt4hjrluzJC\/czZQEpibPXWVn36mIqSMv3NUUBNrFNHAWuaMyyq6KeZ6zbTzmtYq8pgaay7kHdxC9jY4g17dukNbJ88zpvkJOFieR5rVqwmhioOR5fRl5VQN\/68mj3Y1Cunz0uIBOoxUkObeQ5lQpzvNaMdvSptIYh8B+8nyOYbd1S8ixcFh05OFOR16EyCgEduRFxo36shvzBjhWh8COvAHm1TnckVfh0jACO\/IqzBv2dkfeMHei98oIbEKeVftswfWtT\/cvo1atbfm+jaIpeZp3Hp1FLyOT7LKbxOHdEXHjUpDnv3WwjsJOsj\/G9vcmuz5SkvcKbj2L3GD1puzqkMDU5Dn2+Qsnn+679t314e\/fFtBptIJG2VWJx7ypIg+fipDAR5EPb\/xV\/Byqs6vCacVsG495U0eeJmjga0gDj\/XKqi0pTiu65w+UpikfojBx+D+iTEW3pZ1FaOCoYbedevJi03yOcRx9iczhNEiKyuR7nnMWTeWYR7s3hQSaq5lyrCFnZB8QaZ7H4tC8jrzYkd5rTdMsczepki4p07BAoa891pGHCXFI4B1kzmbuZkLtKsIykMjLjjxNKAuNChES6sMcmEPLyEeWhub2z7YaP\/URz8JlJPqY0tDAqczzitYP+U9MYDgtJjEYbH5n17bsyAtOUZYZ6Nsej\/\/FcCcTf6ts2UXkwCADPUUS4+jIi93oXqdx4H9uTccw8Bmi2QAAAABJRU5ErkJggg=="
        },
        {
          "BTTTouchBarButtonName" : "Help",
          "BTTTriggerType" : 629,
          "BTTTriggerClass" : "BTTTriggerTypeTouchBar",
          "BTTPredefinedActionType" : -1,
          "BTTPredefinedActionName" : "No Action",
          "BTTShortcutToSend" : "59,20",
          "BTTEnabled" : 1,
          "BTTOrder" : 5,
          "BTTIconData" : "iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAYAAACOEfKtAAAMFGlDQ1BJQ0MgUHJvZmlsZQAASImVVwdYU8kWnltSCAktEAEpoTdBepUaepcONkISIJSICUHEji4q2AuiWNFVEEXXAsiiImJnUbDXhyIqyrpYsKHyJgV0fe175\/vmzp8z55z5z9wzk7kAKNuy8\/JyUBUAcgX5wpggP2ZScgqT9BigQAuQgQcgsTmiPN\/o6HAAZaT\/u7y\/CRBJf81aEutfx\/+rqHJ5Ig4ASDTEaVwRJxfiowDgmpw8YT4AhHaoN5qZnyfBAxCrCyFBAIi4BGfIsKYEp8nwOKlNXAwLYh8AyFQ2W5gBgJKEN7OAkwHjKEk42gq4fAHEWyD24mSyuRDfh3hcbu50iJXJEJun\/RAn428x00ZjstkZo1iWi1TI\/nxRXg571v+5HP9bcnPEI3MYwkbNFAbHSHKG61adPT1MgqkQNwvSIqMgVoP4Ap8rtZfgu5ni4Hi5fT9HxIJrBhgAvm4u2z8MYh2IGeLseF85tmcLpb7QHo3k54fEyXGacHqMPD5aIMiJDJfHWZrJCxnB23iigNgRm3R+YAjEsNLQo0WZcYkynmhbAT8hEmIliK+KsmPD5L4PizJZkSM2QnGMhLMxxO\/ShYExMhtMM1c0khdmw2FL54K1gPnkZ8YFy3yxJJ4oKXyEA5fnHyDjgHF5gng5NwxWl1+M3LckLydabo9t4+UExcjWGTskKogd8e3KhwUmWwfscRY7NFo+1\/u8\/Og4GTccBeGABfwBE4hhSwPTQRbgd\/Q39MNfspFAwAZCkAF4wFquGfFIlI4I4DMWFIE\/IeIB0aifn3SUBwqg\/uuoVva0BunS0QKpRzZ4CnEuro174R54OHz6wGaPu+JuI35M5ZFZiQFEf2IwMZBoMcqDA1nnwCYE\/H+jC4M9D2Yn4SIYyeF7PMJTQifhMeEGoZtwBySAJ9Iocqtp\/GLhT8yZIAJ0w2iB8uzSfswON4WsnXA\/3BPyh9xxBq4NrHFHmIkv7g1zc4LaHxmKR7l9X8uf55Ow\/jEfuV7JUslJziJt9M2wRq1+jsL6YY24sA\/72RJbih3BzmOnsYtYM9YAmNgprBFrx05I8GglPJFWwshsMVJu2TAOf8TGtta2z\/bLT3Oz5fNL1kuUzyvMl2wG1vS8WUJ+RmY+0xeexjxmiIBjM45pb2vnCoDkbJcdHW8Z0jMbYVz6riteAYCn4\/DwcPN3XbgyAEdhTVN6vuvM3eF2LQTgwkqOWFgg00mOY0AAFKAMd4UW0ANGwBzmYw+c4X+IDwgAoSAKxIFkMBWueCbIhZxngjlgISgBZWA12AA2g+1gF6gGB8Bh0ACawWlwDlwGV8ENcA\/WRS94CQbAezCEIAgJoSF0RAvRR0wQK8QecUW8kAAkHIlBkpFUJAMRIGJkDrIIKUPWIpuRnUgN8htyHDmNXEQ6kTvII6QPeYN8RjGUiqqjuqgpOh51RX3RMDQOnYJmoDPQInQxuhKtQKvQ\/Wg9ehq9jN5Au9GX6CAGMEWMgRlg1pgrxsKisBQsHRNi87BSrByrwuqwJvier2HdWD\/2CSfidJyJW8PaDMbjcQ4+A5+HL8c349V4Pd6GX8Mf4QP4NwKNoEOwIrgTQghJhAzCTEIJoZywh3CMcBbum17CeyKRyCCaEV3gvkwmZhFnE5cTtxIPEluIncQe4iCJRNIiWZE8SVEkNimfVELaRNpPOkXqIvWSPpIVyfpke3IgOYUsIBeTy8n7yCfJXeRn5CEFFQUTBXeFKAWuwiyFVQq7FZoUrij0KgxRVClmFE9KHCWLspBSQamjnKXcp7xVVFQ0VHRTnKjIV1ygWKF4SPGC4iPFT1Q1qiWVRZ1MFVNXUvdSW6h3qG9pNJopzYeWQsunraTV0M7QHtI+KtGVbJRClLhK85UqleqVupReKSsomyj7Kk9VLlIuVz6ifEW5X0VBxVSFpcJWmadSqXJc5ZbKoCpd1U41SjVXdbnqPtWLqs\/VSGqmagFqXLXFarvUzqj10DG6EZ1F59AX0XfTz9J71YnqZuoh6lnqZeoH1DvUBzTUNBw1EjQKNSo1Tmh0MzCGKSOEkcNYxTjMuMn4PEZ3jO8Y3phlY+rGdI35oDlW00eTp1mqeVDzhuZnLaZWgFa21hqtBq0H2ri2pfZE7Zna27TPavePVR\/rMZYztnTs4bF3dVAdS50Yndk6u3TadQZ19XSDdPN0N+me0e3XY+j56GXprdc7qdenT9f30ufrr9c\/pf+CqcH0ZeYwK5htzAEDHYNgA7HBToMOgyFDM8N4w2LDg4YPjChGrkbpRuuNWo0GjPWNI4znGNca3zVRMHE1yTTZaHLe5IOpmWmi6RLTBtPnZppmIWZFZrVm981p5t7mM8yrzK9bEC1cLbIttlpctUQtnSwzLSstr1ihVs5WfKutVp3jCOPcxgnGVY27ZU219rUusK61fmTDsAm3KbZpsHk13nh8yvg148+P\/2brZJtju9v2np2aXahdsV2T3Rt7S3uOfaX9dQeaQ6DDfIdGh9eOVo48x22Ot53oThFOS5xanb46uzgLneuc+1yMXVJdtrjcclV3jXZd7nrBjeDm5zbfrdntk7uze777Yfe\/PKw9sj32eTyfYDaBN2H3hB5PQ0+2507Pbi+mV6rXDq9ubwNvtneV92MfIx+uzx6fZ74Wvlm++31f+dn6Cf2O+X1gubPmslr8Mf8g\/1L\/jgC1gPiAzQEPAw0DMwJrAweCnIJmB7UEE4LDgtcE3wrRDeGE1IQMhLqEzg1tC6OGxYZtDnscbhkuDG+KQCNCI9ZF3I80iRRENkSBqJCodVEPos2iZ0T\/PpE4MXpi5cSnMXYxc2LOx9Jjp8Xui30f5xe3Ku5evHm8OL41QTlhckJNwodE\/8S1id1J45PmJl1O1k7mJzemkFISUvakDE4KmLRhUu9kp8klk29OMZtSOOXiVO2pOVNPTFOexp52JJWQmpi6L\/ULO4pdxR5MC0nbkjbAYXE2cl5yfbjruX08T95a3rN0z\/S16c8zPDPWZfRlemeWZ\/bzWfzN\/NdZwVnbsz5kR2XvzR7OScw5mEvOTc09LlATZAvaputNL5zemWeVV5LXPcN9xoYZA8Iw4R4RIpoiasxXh9ecdrG5+BfxowKvgsqCjzMTZh4pVC0UFLbPspy1bNazosCiX2fjszmzW+cYzFk459Fc37k75yHz0ua1zjeav3h+74KgBdULKQuzF\/5RbFu8tvjdosRFTYt1Fy9Y3PNL0C+1JUolwpJbSzyWbF+KL+Uv7VjmsGzTsm+l3NJLZbZl5WVflnOWX1pht6JixfDK9JUdq5xXbVtNXC1YfXON95rqtapri9b2rItYV7+eub50\/bsN0zZcLHcs376RslG8sbsivKJxk\/Gm1Zu+bM7cfKPSr\/LgFp0ty7Z82Mrd2rXNZ1vddt3tZds\/7+DvuL0zaGd9lWlV+S7iroJdT3cn7D7\/q+uvNXu095Tt+bpXsLe7Oqa6rcalpmafzr5VtWituLZv\/+T9Vw\/4H2iss67beZBxsOwQOCQ+9OK31N9uHg473HrE9UjdUZOjW47Rj5XWI\/Wz6gcaMhu6G5MbO4+HHm9t8mg69rvN73ubDZorT2icWHWScnLxyeFTRacGW\/Ja+k9nnO5pndZ670zSmettE9s6zoadvXAu8NyZ877nT13wvNB80f3i8UuulxouO1+ub3dqP\/aH0x\/HOpw76q+4XGm86na1qXNC58ku767T1\/yvnbsecv3yjcgbnTfjb96+NflW923u7ed3cu68vltwd+jegvuE+6UPVB6UP9R5WPUPi38c7HbuPvHI\/1H749jH93o4PS+fiJ586V38lPa0\/Jn+s5rn9s+b+wL7rr6Y9KL3Zd7Lof6SP1X\/3PLK\/NXRv3z+ah9IGuh9LXw9\/Gb5W623e985vmsdjB58+D73\/dCH0o9aH6s\/uX46\/znx87OhmV9IXyq+Wnxt+hb27f5w7vBwHlvIll4FMNjQ9HQA3uwFgJYMAP0qvD8oyb69pILIvhelCPwnLPs+k4ozAHWwk1y5WS0AHILNFDbaAgAkV+84H4A6OIw2uYjSHexlsajwC4bwcXj4rS4ApCYAvgqHh4e2Dg9\/3Q3J3gGgZYbsm08iRHi\/3yGN0cUoXAB+kn8CCCdsu7q1Xy8AAAAJcEhZcwAAFiUAABYlAUlSJPAAAA5mSURBVHgB7drNi2RXHcZxE5M4ji+JeZnMa3eDMy4GkQRi0KDSC8VXcBOCBJRsBIniQsSNmzArCaL4H0hAF5KFiAlZhDgkxMUkYMA4EmYW3fM+k0wyScwkxkn0+dyp06mqruq+t+6tqgn4gy\/31q1b95zznOf3O6eq+6oPzDe2pPnbwtbw0eD13nBdGBVv5+LRcDGc6R29dn0ucc0MWr06bVwViOT8Q70jkQi2PXw4eN97N4Rrw6j4Ty7eHN7qvflmjq79u3ft3d65o3v+G5xPLaYtIOE+ErjrS8Hg7whE2h8ISEj3FaH1yetRQZBLgSjwmvsI+Wx4eejIqf8K7ptKTENAzyQG4TiJaB8Pi+GmsBSuD15zXBfBbefCx8KLvePZHIlHVC59PRThc9pNjJvpSZ\/+wXxwW\/hEuDvsCMuBA0elcFftcxgRCSSduZRwBDwUToeHwivBtc4c2ZUDOY5IHLUncBqHbQ8LgXjTDBOhjgrOJ5DXUpgTlQn9co1DObITIbtygBTluN3hO0GNMxCOJF5X7eRRtaPUSM4kGCG58g\/hVHg0ELFVtHGgWSWQuiNlOY6AuwJB5x2yQhRH6qtz\/XSuvFwI0nri2jipMywOS0G9uz\/ozP4gRQg66XPz0alFEemNtCC1D4UT4VdBWk+U0pM4kPNsP3b2UONuDTeGcfu3vDX34EjYAei\/fhu\/cbhOYKneaFPe1CnFedL0QNA49+kIYd8vYZEhlBX7SLBKPxjOhJVAyFrRxIH9zrOiEU4KS9umE5GPzDX0146hOFBN5EhOtNh4v5ETc\/+GwXn7wnJ4MhwNZu+dYDbfz3CbbzLGZGzLwViNedOo48BxztNAF85Te0zApd7RxIwKbUF\/ynHUfU2v0YADZZN+KE+McbJ31L+xsZkARFoKHnogqHnSV6NXh7ahw1Y\/oh0Lvm4d7r3OYS20tTUoF1Z7m\/alUMslua9OEEravhD05adBbdxwdd7IgTqtg2ZmRw\/nrm0mfG5ZF8VpF\/OOGSYa19mLOV8JOrsavO4P7RHN6mkvZ6tUMsM5BxVn5nSi6B+vtLazKOmtnyNjnBClwx5yICyE24MBaKhpFKcR6Mlg33UwEG8lFDHdNyxeLlWhTyCUBWBvuCXcF0wsZ7reNohlkp8Kq+GBoL8jY5wDieTbhG8Yvs8W500inrQwk6cDwXRKhxxfDceC95uELCCk4r8SiL47SHMQetKgiYlQroh5Q\/B1cGQqj2uIePeExfD9QEgdbhqEWQmnwgPBPuul4LpBl7qT08ahPyZUCnPij4P6vByI2CZkgok\/H34dTPKjgYgDMcqB\/TNgFhTuScTTEIEsDL5vngwEHDmTud40DFBwB6ccDwyhPUflZpxB8taG4XNcaCJ2Bc\/nehNmTGuh+PaH19J1Kfw8fC6Y4Uk7cjGffSz8IzwdXgtmt+sg5t97SGWTtD2MMkgu1w6iqf+e+UQwWbJnLYYboLB09b1W7kvltuGZZeYGZq\/tg\/s+77lcrh1ONy6uaRue57szTejBAExhF1HFsAPddF+4K9we2LhN6IBn6sAjQXpNM7jjhXAkfCu0NYDM40I6vRrUWs9e2yn0O9A5wVgfw+LmUuMgoBIANUktLbUrpwPhXh3Wj1IypDsnOdZxL2e8HOwZucXktV2V9YuINCGcc9eq\/hSRHNW+hfCT8JnQtuE8omrIIiSeunyoXDgsBsEMGvvCrqDDNwWC6zB31QmCe95SuBDUL4NuEyZ1Z7Avfjy8Far+FAfqoM4Xt9jtdxXa4DxiKO4nAgE50sQR2D3cIgOWQhmwTrrXfu9k8JqgGy1E7ieilMPwZOVS46APbdRDOjFXVQuLgDr+2bAY2ta9PGJdaPzucCycDRq\/I6gp3wgWraWgbX3iICElpeK58GA4FQ6HtRqU81FB6JVA6MopObYJ\/WEq\/bwzcOIT4WIRkBO8Ceddh2duC5yxEDjKZBHQ0SLjenFeTqsgAPFd12nCccNm4XMmCc67CO3qh0zh7EqnIqA0Wg4GU2pWTjuL4nCO+mIwqP4ULp0bbrDMPPG\/GVbDc8EEbBRc517RhQMvP+lyhtyZFybzsfA6AXXeUX7D666DEGVi1JAmoT9mW92BZ9UJtRJdhr4M6EQ4A2LLpTAqjXJ57sGxb\/ToKiUnGZTFcH9QD51XbpNKUgzVxRyvtHg3HSoCOq8TxtL1eDiQXvDsazhwb7DnGi7guXTFhJp3MKhrm9W\/3FKNRT1Hl+NSPrjPNxx1+e2Swi7WrS25deohTW1Wi\/Nsfc6HV3rXctgwjEVpQtfjKjVZxm4pDrR96XKm8rhWYbvyTHgxWO3OhaeCbUmdhcHg1CoOdN51WNRswd4hYKmBXc9U3U5zGfzQYJvDeYQ6Fgi4ErjPtc020Lmlqk3GNLBaeqPDoNWaA9l8XiksVS0OUvOhcDo8G3zl86OAjbf3CVzHebKI6xbCXWFnmKYDr+JAOU3ReTiQ4y6ElwLHnQqrgduISOC6YRwE3BZsdBmj7D1z2mkMOLDTJzd8mLT9bSDeI+G1IIUJ10Q8A5JFhPth4EApPK0oNfBaDpxncKBUVeOIJ12bRrUfy4c4b0cP5wY5rTBhnl\/tA6fVSJ3nEtBCAedNo9Q8zrs\/qHm3B4uI96Ye83agAVooUDdK3ZayatyesD1IW85zbdriKS8m\/NKVIGD6UTtK7fHzl98XpeyXg28Gfvby\/rTFSxOVeLLmPAFtEZoW7XxkpqHmqHW2JLvDzWExcJ603RpmGfSyJ32LgLYLZs3FKzWI55sF8Q4ENU8Kc9y0tip59NgotfssAW0bqHklC1j2XZwmbQk4zxhw4NH0RIe6\/OV2noObRdvFgWc40P7LzM7Lgb5BYLOoe99mz2n7vjWDgGs10N8YbAHeDrOO8g1CPXM+LureN+7zXV1nMpt9pjsXKgeWGkhRIirYswqu8pXLnxSKiGa4P9wjQ9zj3jpuzW1TCX272INWa\/vA\/r9iLeWNWeyl0ky1d7OfOxu4zK8ydgWlnLjmRwH7vnuDWm2\/N69gsmfCanBe\/TXOkbL+1olhB+TS1IKb\/MeC2BOIY4ZLH\/rdRzz3ztuBAzpZRMSb4WBYDHvDNH5Dy2PXBadrk3j7AuGKeDmtgmCQ4o6zyo40tS647nBY50Cril9FOMD5LKPUXD8AXMlhYn1nV2ZQTXRxYMltK0uV2zn+P95ToKy+fvg9GI4FWTtQAxVvP3DCUm3lU8RnETqoXe63upVU1j6H+somO0o653SmoT\/6Z\/tS9Kk6UByo4y9WVy7\/15G6tByIOIvQqYeDDDgUylZBvdsfLCDfC1Zjq\/KsJjZNVcFQjwa1b+BH3yKgu+S39D0TLCKzqIVm9nxQU6SFth11kogEtHjo16lgu6Vv+s2Nswh91K6+YUNdyox\/PTeeDFJrmnDcj8K3g5+m\/K63JUhbIhUBb8r5cvhuOBKkkoFNs2+erQ1tWXk\/H3YF5WQt+h3oog9wg3rjr2XSxXnXKaNzvgGpu8cD12l31AJm9tVFE6of+rW1x8Bgcq3roId9n75pt0xcTi\/HcAfKwAzO72zSZm\/oel9IKDv658Pvwkog0rgwEGJDSqvXnwpd9yuPHAiC\/T78NTwd1GoarcWwA71RauGJnBPYcl3SKqedBEF0Rgc9f5TzcnkgCGxi1UyZ4RnTimIkE8b5jCQT1rU5SsDcV830wznuDF8Ie8JSuDZ0ETqzEqxqzusGEdUji8xGjq37vHH3lQxRWv4YfFcfWH3LB8cJSGnuKGlMuF2BI7ta\/TgdTYIzCI6BVGrykE3uNTF2AKcD56l\/smVkjBOw3OzDvwwLveOOHKVP20XF5z2n6bN8Tg1E2z7kEevCxKwGafubQECLyNjYTEB7HlsNDjQjHKhw+1wbJ\/osd6M8a119yXvD4XN2BWjT\/vBzvdY+AY3XWC1Ufh\/YcN83vArn\/oEoxdQS\/kJ4LtwWrusxqQuKkzjwL0HN0fnNwjeRH4TPhk+GrmqycapxNsoPhsfDkWCB27BUbObAfH5tVWZnAzc7jm2cyD3Euz5sC+oOEdXEUU50v3ttqG\/pHbtyoLa1W5xnfM5N6Ki+5PJ7sZkDy50eZEln63+Gtk40eOnrm4cV\/tPh+aDTo5x4Q67fH74avhJ2B1kwaQbko1VoazUcDZz3p\/C3YKs0qh+5PBh1HFg+YabYmRNFORJDKhlQk9A2F+\/sfaiIciGv1R2TRiDP5byF4B4LiM+1CeMwHvvKk4HrjoezQdrWEi\/3TTSDBmQA+4LB\/yxsD0uBkE2iDESHDUQd4kSDsJXwvP3BoqHmaXdraOs85eJw0OYvgtpHxEuBsLWjiQPLQzXAIRp0lAIalo7Ssmwx6tQoQhDFpJgMjrDn6hdwMa+JpgbWLTm5dV1wNEySyTkWTgTjUJq0aUIbRZuZJL4BGZjV8d6wK3wtELPpHs\/giiMdvdY\/4jpOMtn5WBWep4bb0z0cCKfeKRevhCJuTptFm05xHc4FzlkNUvFUMMNWSym4JRBgM0eW97m4iygTwnH69VKwr9NPfeQ8orYKA+siDJ7jpONiUPTvCbeGO4IUbOrIfGTiKI7zdfSxQKw\/B46TrgQlnvtaRRsH9jdstnVWSnsmB5ppziQi8W4M3iMywYszc9oqitPUZudlP8ltUnYlEPBE0MdOhMtzqujKgeV5jkQikMVEChOOgHf2zjlSzfSaiG2iOM1EHQ4c9mwg3qFArOI4k0pgdBYG23Woi4IjTJDVTQpzohVWbXTcFtS7skjktBK+\/7Vr\/UGw4jTX7QKIpg2Od+5IwOOBaJ06Ls8biGk4cKCBvOBG7XCb8\/4Udr7Qu8al7tnfe53Duij7N44jjNcrvWMR1jUucw\/BO3VcnjcQ03DgQAN5UQZgNRTcV4LbykpNQE7dGcalNlHOheIsrzmNeHOJ\/wES39wijoywpgAAAABJRU5ErkJggg==",
          "BTTTriggerConfig" : {
            "BTTTouchBarItemIconHeight" : 22,
            "BTTTouchBarItemIconWidth" : 22,
            "BTTTouchBarItemPlacement" : 2,
            "BTTTouchBarItemPadding" : 0,
            "BTTTouchBarFreeSpaceAfterButton" : "5.000000",
            "BTTTouchBarButtonColor" : "58.650001, 58.650001, 58.650001, 255.000000",
            "BTTTouchBarAlwaysShowButton" : "0",
            "BTTTouchBarAlternateBackgroundColor" : "0.000000, 0.000000, 0.000000, 0.000000"
          }
        },
        {
          "BTTTouchBarButtonName" : "Check",
          "BTTTriggerType" : 629,
          "BTTTriggerClass" : "BTTTriggerTypeTouchBar",
          "BTTPredefinedActionType" : -1,
          "BTTPredefinedActionName" : "No Action",
          "BTTShortcutToSend" : "56,55,14",
          "BTTEnabled" : 1,
          "BTTOrder" : 4,
          "BTTIconData" : "iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAYAAACOEfKtAAAMFGlDQ1BJQ0MgUHJvZmlsZQAASImVVwdYU8kWnltSCAktEAEpoTdBepUaepcONkISIJSICUHEji4q2AuiWNFVEEXXAsiiImJnUbDXhyIqyrpYsKHyJgV0fe175\/vmzp8z55z5z9wzk7kAKNuy8\/JyUBUAcgX5wpggP2ZScgqT9BigQAuQgQcgsTmiPN\/o6HAAZaT\/u7y\/CRBJf81aEutfx\/+rqHJ5Ig4ASDTEaVwRJxfiowDgmpw8YT4AhHaoN5qZnyfBAxCrCyFBAIi4BGfIsKYEp8nwOKlNXAwLYh8AyFQ2W5gBgJKEN7OAkwHjKEk42gq4fAHEWyD24mSyuRDfh3hcbu50iJXJEJun\/RAn428x00ZjstkZo1iWi1TI\/nxRXg571v+5HP9bcnPEI3MYwkbNFAbHSHKG61adPT1MgqkQNwvSIqMgVoP4Ap8rtZfgu5ni4Hi5fT9HxIJrBhgAvm4u2z8MYh2IGeLseF85tmcLpb7QHo3k54fEyXGacHqMPD5aIMiJDJfHWZrJCxnB23iigNgRm3R+YAjEsNLQo0WZcYkynmhbAT8hEmIliK+KsmPD5L4PizJZkSM2QnGMhLMxxO\/ShYExMhtMM1c0khdmw2FL54K1gPnkZ8YFy3yxJJ4oKXyEA5fnHyDjgHF5gng5NwxWl1+M3LckLydabo9t4+UExcjWGTskKogd8e3KhwUmWwfscRY7NFo+1\/u8\/Og4GTccBeGABfwBE4hhSwPTQRbgd\/Q39MNfspFAwAZCkAF4wFquGfFIlI4I4DMWFIE\/IeIB0aifn3SUBwqg\/uuoVva0BunS0QKpRzZ4CnEuro174R54OHz6wGaPu+JuI35M5ZFZiQFEf2IwMZBoMcqDA1nnwCYE\/H+jC4M9D2Yn4SIYyeF7PMJTQifhMeEGoZtwBySAJ9Iocqtp\/GLhT8yZIAJ0w2iB8uzSfswON4WsnXA\/3BPyh9xxBq4NrHFHmIkv7g1zc4LaHxmKR7l9X8uf55Ow\/jEfuV7JUslJziJt9M2wRq1+jsL6YY24sA\/72RJbih3BzmOnsYtYM9YAmNgprBFrx05I8GglPJFWwshsMVJu2TAOf8TGtta2z\/bLT3Oz5fNL1kuUzyvMl2wG1vS8WUJ+RmY+0xeexjxmiIBjM45pb2vnCoDkbJcdHW8Z0jMbYVz6riteAYCn4\/DwcPN3XbgyAEdhTVN6vuvM3eF2LQTgwkqOWFgg00mOY0AAFKAMd4UW0ANGwBzmYw+c4X+IDwgAoSAKxIFkMBWueCbIhZxngjlgISgBZWA12AA2g+1gF6gGB8Bh0ACawWlwDlwGV8ENcA\/WRS94CQbAezCEIAgJoSF0RAvRR0wQK8QecUW8kAAkHIlBkpFUJAMRIGJkDrIIKUPWIpuRnUgN8htyHDmNXEQ6kTvII6QPeYN8RjGUiqqjuqgpOh51RX3RMDQOnYJmoDPQInQxuhKtQKvQ\/Wg9ehq9jN5Au9GX6CAGMEWMgRlg1pgrxsKisBQsHRNi87BSrByrwuqwJvier2HdWD\/2CSfidJyJW8PaDMbjcQ4+A5+HL8c349V4Pd6GX8Mf4QP4NwKNoEOwIrgTQghJhAzCTEIJoZywh3CMcBbum17CeyKRyCCaEV3gvkwmZhFnE5cTtxIPEluIncQe4iCJRNIiWZE8SVEkNimfVELaRNpPOkXqIvWSPpIVyfpke3IgOYUsIBeTy8n7yCfJXeRn5CEFFQUTBXeFKAWuwiyFVQq7FZoUrij0KgxRVClmFE9KHCWLspBSQamjnKXcp7xVVFQ0VHRTnKjIV1ygWKF4SPGC4iPFT1Q1qiWVRZ1MFVNXUvdSW6h3qG9pNJopzYeWQsunraTV0M7QHtI+KtGVbJRClLhK85UqleqVupReKSsomyj7Kk9VLlIuVz6ifEW5X0VBxVSFpcJWmadSqXJc5ZbKoCpd1U41SjVXdbnqPtWLqs\/VSGqmagFqXLXFarvUzqj10DG6EZ1F59AX0XfTz9J71YnqZuoh6lnqZeoH1DvUBzTUNBw1EjQKNSo1Tmh0MzCGKSOEkcNYxTjMuMn4PEZ3jO8Y3phlY+rGdI35oDlW00eTp1mqeVDzhuZnLaZWgFa21hqtBq0H2ri2pfZE7Zna27TPavePVR\/rMZYztnTs4bF3dVAdS50Yndk6u3TadQZ19XSDdPN0N+me0e3XY+j56GXprdc7qdenT9f30ufrr9c\/pf+CqcH0ZeYwK5htzAEDHYNgA7HBToMOgyFDM8N4w2LDg4YPjChGrkbpRuuNWo0GjPWNI4znGNca3zVRMHE1yTTZaHLe5IOpmWmi6RLTBtPnZppmIWZFZrVm981p5t7mM8yrzK9bEC1cLbIttlpctUQtnSwzLSstr1ihVs5WfKutVp3jCOPcxgnGVY27ZU219rUusK61fmTDsAm3KbZpsHk13nh8yvg148+P\/2brZJtju9v2np2aXahdsV2T3Rt7S3uOfaX9dQeaQ6DDfIdGh9eOVo48x22Ot53oThFOS5xanb46uzgLneuc+1yMXVJdtrjcclV3jXZd7nrBjeDm5zbfrdntk7uze777Yfe\/PKw9sj32eTyfYDaBN2H3hB5PQ0+2507Pbi+mV6rXDq9ubwNvtneV92MfIx+uzx6fZ74Wvlm++31f+dn6Cf2O+X1gubPmslr8Mf8g\/1L\/jgC1gPiAzQEPAw0DMwJrAweCnIJmB7UEE4LDgtcE3wrRDeGE1IQMhLqEzg1tC6OGxYZtDnscbhkuDG+KQCNCI9ZF3I80iRRENkSBqJCodVEPos2iZ0T\/PpE4MXpi5cSnMXYxc2LOx9Jjp8Xui30f5xe3Ku5evHm8OL41QTlhckJNwodE\/8S1id1J45PmJl1O1k7mJzemkFISUvakDE4KmLRhUu9kp8klk29OMZtSOOXiVO2pOVNPTFOexp52JJWQmpi6L\/ULO4pdxR5MC0nbkjbAYXE2cl5yfbjruX08T95a3rN0z\/S16c8zPDPWZfRlemeWZ\/bzWfzN\/NdZwVnbsz5kR2XvzR7OScw5mEvOTc09LlATZAvaputNL5zemWeVV5LXPcN9xoYZA8Iw4R4RIpoiasxXh9ecdrG5+BfxowKvgsqCjzMTZh4pVC0UFLbPspy1bNazosCiX2fjszmzW+cYzFk459Fc37k75yHz0ua1zjeav3h+74KgBdULKQuzF\/5RbFu8tvjdosRFTYt1Fy9Y3PNL0C+1JUolwpJbSzyWbF+KL+Uv7VjmsGzTsm+l3NJLZbZl5WVflnOWX1pht6JixfDK9JUdq5xXbVtNXC1YfXON95rqtapri9b2rItYV7+eub50\/bsN0zZcLHcs376RslG8sbsivKJxk\/Gm1Zu+bM7cfKPSr\/LgFp0ty7Z82Mrd2rXNZ1vddt3tZds\/7+DvuL0zaGd9lWlV+S7iroJdT3cn7D7\/q+uvNXu095Tt+bpXsLe7Oqa6rcalpmafzr5VtWituLZv\/+T9Vw\/4H2iss67beZBxsOwQOCQ+9OK31N9uHg473HrE9UjdUZOjW47Rj5XWI\/Wz6gcaMhu6G5MbO4+HHm9t8mg69rvN73ubDZorT2icWHWScnLxyeFTRacGW\/Ja+k9nnO5pndZ670zSmettE9s6zoadvXAu8NyZ877nT13wvNB80f3i8UuulxouO1+ub3dqP\/aH0x\/HOpw76q+4XGm86na1qXNC58ku767T1\/yvnbsecv3yjcgbnTfjb96+NflW923u7ed3cu68vltwd+jegvuE+6UPVB6UP9R5WPUPi38c7HbuPvHI\/1H749jH93o4PS+fiJ586V38lPa0\/Jn+s5rn9s+b+wL7rr6Y9KL3Zd7Lof6SP1X\/3PLK\/NXRv3z+ah9IGuh9LXw9\/Gb5W623e985vmsdjB58+D73\/dCH0o9aH6s\/uX46\/znx87OhmV9IXyq+Wnxt+hb27f5w7vBwHlvIll4FMNjQ9HQA3uwFgJYMAP0qvD8oyb69pILIvhelCPwnLPs+k4ozAHWwk1y5WS0AHILNFDbaAgAkV+84H4A6OIw2uYjSHexlsajwC4bwcXj4rS4ApCYAvgqHh4e2Dg9\/3Q3J3gGgZYbsm08iRHi\/3yGN0cUoXAB+kn8CCCdsu7q1Xy8AAAAJcEhZcwAAFiUAABYlAUlSJPAAABORSURBVHgB7dhtqGXnVQfw2tgmTWrzNnPzMpk7NzYaGfMhNJOgEJsLVkgTFZHYDwplUMRShKo04BejjlK0CUWhDZWIhPpFIfhB1M4HiTMSaDsJ2IpONPXl3jt33l+axDaZ2DT6\/52eddl333P22efec9v5MAv+s5+z97OfZ63\/+q\/17DtXvO2ydTHwnjz8heCe4Mxw4jdz\/b\/h+G3fW4PL13UMfE9+XR18X3BdcEVwU3BlcDF4M3gruGxjGEDeQ8GvBF8NTgXPBp8L7ggQi+TLCkRCw5ByVYCg24LdwY3Bu4e\/Pb8lUMJvBJR42RoMIO\/9gb73YnAh+FZQhL2S8aGglPie70QPtIfMvTN4e6CPuELdz7DTBPC\/gausV0D6kJ7k91aNf0qXwnYFO4PrgzLP+XtrYN9rg4vbTaDmyxGO7Q005H2BkpgL3hXMB5zrMuVyNPhGcC74n+CF4GvBkQCJW7F35OU9AeI+FiAJQW2refz\/QHB+1gSWoqjrmgAxeokNOYhAV78RqGQWAo51GQKR91ogGV8PzgZ6lQbvPhKVm3kU0rc\/8dX+NwelvBsylvy2UXrBXm8JeJamPClN430ooL4fCQSNTM7OsoSRpE8hlCJPB88ElHkmEGSXiV8yle0TgWq4MyhfM1xnVQkruftocHoWCrQGYkgeUZxAXF0pkNLGGbXIKjJcm1aKdkV806jPfEqnQIq0z54AKdYTsGf2gKbxme9zAQLBmBo9a5v3vxmcCI4HLwevblWBZG5ThH0k0DvuDvQ2gXFEUOP2QQD1CHQlcFA0rRTdJq85pxLQLGHB\/UUg0IPBq4F9KkH8QbKP48eC+cBfG3wdJary03ri5Oux4M1Rk3N\/onGA2gSGNI4sBPoINAMWIAjQFVmuyFJiReBSxjLcNOtIhCtf7VvlJUkSVL\/NY\/78MqZE71AWYuxFlfaVeP1Yq9kdiKH2yHCDefdcoEWAsXsj2XZ\/knH+gcDGvxjsCDhK\/gIqk7lvBMrohUC\/cqWQo8HrAQIrOPObVoRZ1x6I2Rv4vFgcXv1uJiw\/B4fLI7lK2o8FJ4MnA8EvBe8O9gdIvitAuj3GmZ76RLAcrAbiGfg6rQJl3OY23B3ob04uAQlOwKU4xFHUucBnh80R6IpAVwEisE1cbq0ziuE01dvHekuB0tR7JVRPNI\/a+MFH9\/knTv4iyX7mui\/p1mwmPT\/XjF\/2QuDx4EQgJjEOzEbTGKdkljMfDhDHGcSCDTkosIOBzP9N8EqAvGrsVcLmrzmTcZchgb9VssgxVgV6MH9uDu4LkFimZO3LF359MUD0TwXiQeA4Hsx\/JlgJ\/iRApPXWEt5XgchBFMLmAwTuCDhQZmHZUSY2Wgo4vRpwBLFrG2c8rSGB2YNRBiK+FVDncuAZ31QJX\/mNZMqbC9znP8IoF3mjjJ\/ise6xIYzfCNbZOObXTcoPm+0PbP5IoAEjtN7n+FJwKvjk8CogG9r4rSFymbkRQSUYIe8LtJbfCCgTafzkA2K0DdalPH4fDZD3aCAuArDGOpukQBvbCIGcghsCTjEOIchhQGn6hE3PBEqWOrbbSpnns5EglZt7\/HHdFVAgJTI9tMuQRBAnAmuoJhW0KUPeQ8FHgv8MLFSZRJ6D4m8D\/eGHg7ngymBSYjJlW0zC7S\/BdwaLwaHgpaB6F7\/HQWxifDF4ILg96Iyl66GMIfCW4NagDowM15RnM1mSdRmTre+mIUb5UZBefMVwvKH0cn+UqRjVczLw\/rmgs4rGEUjyewLy\/+UAgXpemZI9HCjXTwVnAyftpWKUqFQdcqpCL0TmJNMGDgTLAVHol5Iy1sYRaLMdwU3BjYFDwz2LKQWlS3kIRN53W3lxYc3enhEB8B9xVw1\/I3WciUsvV1HHA9VExROVO45AatsfUKFvK6XMgebp9Ef57XS6FJUn8Y8G84GDD4ldBFZFUd6\/BUSBwInWJtAmyCJ9TpC\/bMqqbFhUdqhPf7iUlBd3BlVSlaP9SH7573mXia+Jrrlrz9oE+rp\/IJC5ewIl4DAhcWVL3o8H+sOlRl5cGhx0H89V5dwdEAMCJ5mT+97AgUmxzGHSeYCYRFlN0+dkzUI2tzBVWujlQJPtdTpl3nfSxOErgfoQ4NAjBsnvY94Xr88f61wbtLnJrY3WVqDe90ggg8Zl\/mx6OtAj9D1qpMpLxQT80UDl\/GigBfUlL1MHInFqa1kPB+L8s4BoOq0IpDIbytoNgSxUBnzNXwx8G4FTWK9omvdljznNkNue49mszb6Ug0DKA0SonC7jW7WgilW8yh2JDhXVONGKQOTtDShP89X7LKB0zwYrwbPBamDxtnH6g4GA\/jH4+hDbrVIJfyCYDx4M+O3eJEPeE8NJeqZPNVbrLWf86cGdCf8UgdiXCUBm3a9MXcg9Zax021aZ03e8p3++ErwRUK81Zm0S5dNEmynlUaFEdhlfxKGXHwus4zcVW08sKsm61kKo6hsrhCLKxMWAApsZtPgzgYwYt40DNnLw\/FxA\/h8MnNYHgtMBNY51IM82Y0r03mB38OuBTy4ETjIxPB2sBM8G1nkumA\/uC5AoHm3Mb+seCZA40opAzJcCjcuU8JkhjNtmroZ9XeB9G8uy+5SIuFkrUYVQjPWr3di7y\/jxWvBKsDoEMn3XKmcxVHx81wvFZH5nLywCmz3QuEzwzwcUaNw22aI4yqU+myoBivy9YCU4EMxKiQKzF+I+FmgbfZSnbx8O+PNXwdlAO1JBFMa\/+wPxMMosBVLoqNZl3qBnIbGyKrMywJy2pCtzQFlNM09AyAJj96zFMcHJPKW4SsBWemLtZ12luzOg+E6F5Lk4+H8yOBFQXLUjqvOpIgmlwAwHceiDUHy4v8GQVwS4copDpE11YAMZQEIZgmRrLng40EMqexkOyKQUPWQWSqz9KO+3A\/shkf+ejbOK43gmPBUgsMjzTlWYNtWssFK6OcZjjQMaJ8ma6DejtvoUGaUaWaneJ3ujMjUrJdqLX5JFzWDM3y7yxIBA5FDf+YAYmkozhzrhYkCt5TdBQNceA8eaysv8gVnoaLAcGLfNws3eN26jyuRmlch5a3v\/sWB+CEnvCky1qBq97TPBSkB9SGpWUs1D7NLw2UKu5XeGkxWo770raDpkYZu1N8ytQU+wAeLBuKtPVEZvzTzrUpCrkhml7txeM+3kuuDGQMlaY9J+mTJQGVKojvqokBoprm3uUSV\/gG+M3yA2GPXuQIF35KFmzLEyi1QJ14KelSKU0MMBRVDIJLP2nmBaJWoN+4fv3pWrttH0Mz9Hmj73dLAc\/EvwaoDAcSZGih3X68U48nu22QP7KNAckBGqnVRKmbJm0yjR+sijvF0B1aoUa3QZIvQz328nAurze1Qbyu018x6CwbhMrFcO0SZ3MAeBvtsw3CTQhl09kOTPBggUqID7WF8llvIo\/CcDZSxhk+z1TDgcrAQHAz66N8kqHkkyLit\/\/aZqJb7OECh45DUJlIV2T8itQXY807tk1wYU4l1r9bEuJXJeUpzstw1hLMGTTNKpjV\/UR4VU08fE5H1oK1CM0OQnP79tfYOu+RbnlAz\/biDIJwIkzgWafh+rzLZ7oizvC3YHPxvsDPqQp\/SWg+PBUwECrdXXJM5BQ+VNBU58v4tAz0Y9dxpx2IYIKyVen7Es9S3nUUpUuspWQqzn9yRr+sOX84ETeCoiMn9UvATTRH6ut1EEmYEY2VcSo1RVSlzN88cDQf9OQFF66ki5537b2kpExg8FVcbt+e3f5cfpPPhMoDKob9TnV26PtSvzZG+wJzAuq\/VVnfEGQ6DNONycgAALwTgyKvOnMqeUaK4yGJeYPNpgTSV6uCNAbB+jsguBw+JkoCpUB9+mtYq3+R5ORp0Fa3ME+uVA\/9JAyyYpsOZxdjmggN8K9gSfDChxGisleqcveeY6KJ4M+PDPgW81Ps3KKj7rj1wXgcqUCptZoySqBOMuq5NL6SD+XEBVTs++\/TBTJ37jmVNGGcj6WmBf6hNHUwT52dvEWAqsePEB1hy7LgI50q5xKlgILNZHEZUpAf1xQIkfDRwE22H8\/Xyg5x0KHBwbvtFyr69JePVAYwmyR5uX3FpvCKQ+m3upDHEOg2kOBFmiguMB5QnK1Uk6jRIzvdOa+6xmps+V1zvf6H6IsFKfK9Nb8dKuTM\/WGQL\/I6CgZo1XRnyDGfc1gRwO\/OXg3flgf6CcZ2Gl9GNZ7KngRDDN917bB9WlWqBZaZJ0NFgOxpZvng1OSxMoUPCg71GMqxMVEa6y0VRpfm4wz8megqnDOhq9RF0duL9Z048QeCpAnNPX2lsx\/kkuNKtEHP4DAjpjFhhD4PPBmeC+AHmIu2H4+6ZcjwRI7GPVo3Zm8nsDSlwMkLgZq8Q4LB4PVgL9dqtGGIvBnsC4DB+lQOOxVgSqeV\/vMmHMZISslaNMO2H7moCVlvVXA2sh1RpawrRK5FP7e6\/8zKNNWcXnuxOa8VG7mMF4rBWBWKaw08H9AfUxTZUiKfC5AAnTGAeeDG4eYneue4Nq1hn2slpHT9KzfTlshUAJFCPiFgMV0lbg87lnv6kVqM9gXYZkRRlTk6AR\/mbQ16yj1Ly3Gljv9kAAfQ4nSkaWNfQ9JayNTONDpm8wsfnPWdXl6mvDPfs5E5wFYrZ3pwJLtiYpYS88GMiGAJXwruDG4B8CjlvcRtMYp\/41+EpAgfbjeO2f4Uij+M8HXwr+MqC+TkXkeR\/zafUzwb3BYsAXBPJT73spsN+ZoFPplMEE9FqAQOWiF14dCJDUbbAzMMf3Xeeied428\/2FYr1jAQVKjN8cb1spAYGUCxQheVs1+xFGtRXj8gEPZ4dA5kSlC6DMZAsgzyI\/GFSvMm9ueO8LuSJyWrM+Ev4p+HJwf+C0p3SENq2UcDQ3\/yB4LvDutMrPK+vMPsr1luDRYF9wfVAEahWfDsT41WAigaXAzB2Qp\/+dChBnjFCLI1DGBKZv6EPUOk1A1rKmspD1k8OrdtH0g9PKVM+jvAuBqpiFiUNP3xGIo\/5KKsVTOP8IiL8TralAkzmPQIt8IBAchdTGsiVL1LgcIHRas4fSlOGvBPcHVMGUOueXgseCg8HpoFcwmTfJ+P9rwU8E7wvq8CjF\/3vuPR38d9Artmbm887A0VdzfTlAlAxVL6TKa4LbAgEZU5SNNqNECpMYvVGS7IVcyaNOxHk2bb\/NKxtMFVnfYbgrUML2dF8s4iAc+2pPKqCXtRXoJUGAMhPk3uCqgNnU7zuDFwOkKrFpg+S0FiBRyvOl4PsDSftE4OSlBiU1TXIyfaQ5BPcHPx78dPDeoGJSDYj7\/eDvg+NB73jaCsy7axlBnucCRZQNZezagOpuC2xE7oLsJfnMKzNftjnsfVdKWA2owXirpVuHhtLlL1Ci1sTeDCTxfDBLxQ9ORRvdEfx5cDgoNQhWcP8VPBcsBj8QvCOY1gSoFWjs9wT6kn0pfRamx30o+Hgg0dqTpIgBVM+B4JcCPhDMVDbuBYv7bBAIJSKHWijQvSsCJxln5gNEKEUkU6z3+5h5Ssipbh9mn94lNHhj\/T98BIm4LtgdUB4Vusfsax8+21cJ84EipzKBdxmCdwW3Bp8YjhdyRSjyBKpvnQ\/+NFgN\/i5A4rRWyZw6iMZG4qE6ZH04QNxDgR6IPMQy5B0KVoI\/DJz87vVNfKZ+28rp+t2+IojMEXYs4OBNgY3eGXBoLtAjS4lOuDockNyXkL7zsuQG4xd\/+HlzoDr2BBLv5L06YKU8pSzZQIWqYFM2SYEWRRKilQKHDgRUuRBwmCFKycvikeBE8NlAZs8EErGdJoF7A+T9aiDJtwfuI6\/iLOURw6cC\/iGQ\/5uySQq0qMUdGojgiM0Z5TmZS4lOZ7\/nh\/dc\/ZZ1J67+aC1j9zZrEsoPaxs7UcF+Eqxsdwb80auZ\/SS4lCcG5Gk\/W7LKTJ9FmkqU6d8MKFHmZZoVWRQns5x+NuDsoYDDR4PeH6qZ2zT+6nFUtS9Qqu8PlOndgfuIK18zHBjingkQ97mAH1tSXt4fWB8F1lzqKSUiajlwT8\/j+DWBAIvMCmY+9yhkIdDMkXoxKCVas49Zl6KcrEjcEyBuIbg+kNTaO8NB7+UfohC2EiDwXIDQmZiApzXZBU7DzwfK5sEAQYKrdRGt7whECTsoHDDuUaLTeimYRCJi9gbWvytQvs0S5o9WUvuqgDMB5X820JO\/FNjXnvyZiU2jwNrQ5sA5pSiziOEkB\/UfhwsFCogymc8IhLpSoJOPGhk1dhkCKQ6BDrOm0vJzYOWXdfnFn9PBUnAqoMLNto68OtoqY6OfTr4r8xRXASqpDwXKaTFAYtsEisjNlDB\/m0qrta1HWUrzYHAy+OuA2o0pvPbLcHa2GQU2d0cGp\/Uma1HgcsDZ1QC5Ss1zJFepZbj296jxtIYwKrY\/VamAC4F+txQgjQL5RpHmb4ttVYFNpxCIICWLrPlAye0LKHMxcEIuBPX9mOGmDHlHAmX5QoA8v6lQa6E4yUQwbJttVYFNx6iAUR\/FSQ4F6okCo0wnKJIRbG9z6uq+302jHOsWEX5b34G0EiDOuq5OWKTZa9sUl7XXWdvhdQ+3+KOIaZawe0hE4ELg82ZH4PdcgPimUdJSQHFngiJO2TZLGMF+I25bFZf115mAtstKkc1PFCpz8iIVHDKSaOxwaPtDbecCyjo1vFKc+5eE\/T8FSG+nk0aUuQAAAABJRU5ErkJggg=="
        },
        {
          "BTTTouchBarButtonName" : "Document",
          "BTTTriggerType" : 629,
          "BTTTriggerClass" : "BTTTriggerTypeTouchBar",
          "BTTPredefinedActionType" : -1,
          "BTTPredefinedActionName" : "No Action",
          "BTTShortcutToSend" : "56,55,2",
          "BTTEnabled" : 1,
          "BTTOrder" : 2,
          "BTTIconData" : "iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAYAAACOEfKtAAAMFGlDQ1BJQ0MgUHJvZmlsZQAASImVVwdYU8kWnltSCAktEAEpoTdBepUaepcONkISIJSICUHEji4q2AuiWNFVEEXXAsiiImJnUbDXhyIqyrpYsKHyJgV0fe175\/vmzp8z55z5z9wzk7kAKNuy8\/JyUBUAcgX5wpggP2ZScgqT9BigQAuQgQcgsTmiPN\/o6HAAZaT\/u7y\/CRBJf81aEutfx\/+rqHJ5Ig4ASDTEaVwRJxfiowDgmpw8YT4AhHaoN5qZnyfBAxCrCyFBAIi4BGfIsKYEp8nwOKlNXAwLYh8AyFQ2W5gBgJKEN7OAkwHjKEk42gq4fAHEWyD24mSyuRDfh3hcbu50iJXJEJun\/RAn428x00ZjstkZo1iWi1TI\/nxRXg571v+5HP9bcnPEI3MYwkbNFAbHSHKG61adPT1MgqkQNwvSIqMgVoP4Ap8rtZfgu5ni4Hi5fT9HxIJrBhgAvm4u2z8MYh2IGeLseF85tmcLpb7QHo3k54fEyXGacHqMPD5aIMiJDJfHWZrJCxnB23iigNgRm3R+YAjEsNLQo0WZcYkynmhbAT8hEmIliK+KsmPD5L4PizJZkSM2QnGMhLMxxO\/ShYExMhtMM1c0khdmw2FL54K1gPnkZ8YFy3yxJJ4oKXyEA5fnHyDjgHF5gng5NwxWl1+M3LckLydabo9t4+UExcjWGTskKogd8e3KhwUmWwfscRY7NFo+1\/u8\/Og4GTccBeGABfwBE4hhSwPTQRbgd\/Q39MNfspFAwAZCkAF4wFquGfFIlI4I4DMWFIE\/IeIB0aifn3SUBwqg\/uuoVva0BunS0QKpRzZ4CnEuro174R54OHz6wGaPu+JuI35M5ZFZiQFEf2IwMZBoMcqDA1nnwCYE\/H+jC4M9D2Yn4SIYyeF7PMJTQifhMeEGoZtwBySAJ9Iocqtp\/GLhT8yZIAJ0w2iB8uzSfswON4WsnXA\/3BPyh9xxBq4NrHFHmIkv7g1zc4LaHxmKR7l9X8uf55Ow\/jEfuV7JUslJziJt9M2wRq1+jsL6YY24sA\/72RJbih3BzmOnsYtYM9YAmNgprBFrx05I8GglPJFWwshsMVJu2TAOf8TGtta2z\/bLT3Oz5fNL1kuUzyvMl2wG1vS8WUJ+RmY+0xeexjxmiIBjM45pb2vnCoDkbJcdHW8Z0jMbYVz6riteAYCn4\/DwcPN3XbgyAEdhTVN6vuvM3eF2LQTgwkqOWFgg00mOY0AAFKAMd4UW0ANGwBzmYw+c4X+IDwgAoSAKxIFkMBWueCbIhZxngjlgISgBZWA12AA2g+1gF6gGB8Bh0ACawWlwDlwGV8ENcA\/WRS94CQbAezCEIAgJoSF0RAvRR0wQK8QecUW8kAAkHIlBkpFUJAMRIGJkDrIIKUPWIpuRnUgN8htyHDmNXEQ6kTvII6QPeYN8RjGUiqqjuqgpOh51RX3RMDQOnYJmoDPQInQxuhKtQKvQ\/Wg9ehq9jN5Au9GX6CAGMEWMgRlg1pgrxsKisBQsHRNi87BSrByrwuqwJvier2HdWD\/2CSfidJyJW8PaDMbjcQ4+A5+HL8c349V4Pd6GX8Mf4QP4NwKNoEOwIrgTQghJhAzCTEIJoZywh3CMcBbum17CeyKRyCCaEV3gvkwmZhFnE5cTtxIPEluIncQe4iCJRNIiWZE8SVEkNimfVELaRNpPOkXqIvWSPpIVyfpke3IgOYUsIBeTy8n7yCfJXeRn5CEFFQUTBXeFKAWuwiyFVQq7FZoUrij0KgxRVClmFE9KHCWLspBSQamjnKXcp7xVVFQ0VHRTnKjIV1ygWKF4SPGC4iPFT1Q1qiWVRZ1MFVNXUvdSW6h3qG9pNJopzYeWQsunraTV0M7QHtI+KtGVbJRClLhK85UqleqVupReKSsomyj7Kk9VLlIuVz6ifEW5X0VBxVSFpcJWmadSqXJc5ZbKoCpd1U41SjVXdbnqPtWLqs\/VSGqmagFqXLXFarvUzqj10DG6EZ1F59AX0XfTz9J71YnqZuoh6lnqZeoH1DvUBzTUNBw1EjQKNSo1Tmh0MzCGKSOEkcNYxTjMuMn4PEZ3jO8Y3phlY+rGdI35oDlW00eTp1mqeVDzhuZnLaZWgFa21hqtBq0H2ri2pfZE7Zna27TPavePVR\/rMZYztnTs4bF3dVAdS50Yndk6u3TadQZ19XSDdPN0N+me0e3XY+j56GXprdc7qdenT9f30ufrr9c\/pf+CqcH0ZeYwK5htzAEDHYNgA7HBToMOgyFDM8N4w2LDg4YPjChGrkbpRuuNWo0GjPWNI4znGNca3zVRMHE1yTTZaHLe5IOpmWmi6RLTBtPnZppmIWZFZrVm981p5t7mM8yrzK9bEC1cLbIttlpctUQtnSwzLSstr1ihVs5WfKutVp3jCOPcxgnGVY27ZU219rUusK61fmTDsAm3KbZpsHk13nh8yvg148+P\/2brZJtju9v2np2aXahdsV2T3Rt7S3uOfaX9dQeaQ6DDfIdGh9eOVo48x22Ot53oThFOS5xanb46uzgLneuc+1yMXVJdtrjcclV3jXZd7nrBjeDm5zbfrdntk7uze777Yfe\/PKw9sj32eTyfYDaBN2H3hB5PQ0+2507Pbi+mV6rXDq9ubwNvtneV92MfIx+uzx6fZ74Wvlm++31f+dn6Cf2O+X1gubPmslr8Mf8g\/1L\/jgC1gPiAzQEPAw0DMwJrAweCnIJmB7UEE4LDgtcE3wrRDeGE1IQMhLqEzg1tC6OGxYZtDnscbhkuDG+KQCNCI9ZF3I80iRRENkSBqJCodVEPos2iZ0T\/PpE4MXpi5cSnMXYxc2LOx9Jjp8Xui30f5xe3Ku5evHm8OL41QTlhckJNwodE\/8S1id1J45PmJl1O1k7mJzemkFISUvakDE4KmLRhUu9kp8klk29OMZtSOOXiVO2pOVNPTFOexp52JJWQmpi6L\/ULO4pdxR5MC0nbkjbAYXE2cl5yfbjruX08T95a3rN0z\/S16c8zPDPWZfRlemeWZ\/bzWfzN\/NdZwVnbsz5kR2XvzR7OScw5mEvOTc09LlATZAvaputNL5zemWeVV5LXPcN9xoYZA8Iw4R4RIpoiasxXh9ecdrG5+BfxowKvgsqCjzMTZh4pVC0UFLbPspy1bNazosCiX2fjszmzW+cYzFk459Fc37k75yHz0ua1zjeav3h+74KgBdULKQuzF\/5RbFu8tvjdosRFTYt1Fy9Y3PNL0C+1JUolwpJbSzyWbF+KL+Uv7VjmsGzTsm+l3NJLZbZl5WVflnOWX1pht6JixfDK9JUdq5xXbVtNXC1YfXON95rqtapri9b2rItYV7+eub50\/bsN0zZcLHcs376RslG8sbsivKJxk\/Gm1Zu+bM7cfKPSr\/LgFp0ty7Z82Mrd2rXNZ1vddt3tZds\/7+DvuL0zaGd9lWlV+S7iroJdT3cn7D7\/q+uvNXu095Tt+bpXsLe7Oqa6rcalpmafzr5VtWituLZv\/+T9Vw\/4H2iss67beZBxsOwQOCQ+9OK31N9uHg473HrE9UjdUZOjW47Rj5XWI\/Wz6gcaMhu6G5MbO4+HHm9t8mg69rvN73ubDZorT2icWHWScnLxyeFTRacGW\/Ja+k9nnO5pndZ670zSmettE9s6zoadvXAu8NyZ877nT13wvNB80f3i8UuulxouO1+ub3dqP\/aH0x\/HOpw76q+4XGm86na1qXNC58ku767T1\/yvnbsecv3yjcgbnTfjb96+NflW923u7ed3cu68vltwd+jegvuE+6UPVB6UP9R5WPUPi38c7HbuPvHI\/1H749jH93o4PS+fiJ586V38lPa0\/Jn+s5rn9s+b+wL7rr6Y9KL3Zd7Lof6SP1X\/3PLK\/NXRv3z+ah9IGuh9LXw9\/Gb5W623e985vmsdjB58+D73\/dCH0o9aH6s\/uX46\/znx87OhmV9IXyq+Wnxt+hb27f5w7vBwHlvIll4FMNjQ9HQA3uwFgJYMAP0qvD8oyb69pILIvhelCPwnLPs+k4ozAHWwk1y5WS0AHILNFDbaAgAkV+84H4A6OIw2uYjSHexlsajwC4bwcXj4rS4ApCYAvgqHh4e2Dg9\/3Q3J3gGgZYbsm08iRHi\/3yGN0cUoXAB+kn8CCCdsu7q1Xy8AAAAJcEhZcwAAFiUAABYlAUlSJPAAAAcgSURBVHgB5Zw9kxVFFIYX\/AL8QCn5EHGXwB8AAbFGFEZGlCmx\/8GlClNj\/4iBJgZUWaUZVhFoYLCsy+KKiAICfoC+zzhna2jv3Jme233n9Hiq3p27uzPT3e88fbp7Znb3rKysnJRekM7VW23cxX3V6AvpF+k76Q\/JRTytWqBnpJekFyWP8awqdUSinlt1BV2YiHnHpKPSe\/VWG3fxSDU6L92Q1qXr0ob0pzRqGIFsD9YatUIthf+tn0Mf8YbE9zvSHmlUEp9SBU5K5MB36q027gKjMJAUc1o6I30r7ZXuSo+lUQLySgnMwkRyIQS6ILEUAuVXFe5ILIlAM9EViaURaCa6ITGGQBI1ueevemuNybHFIOrGFuJmhQsS+xqIcb9Jv0ubUu6pAxPnVek5iRkCRs4Kfv68xL4XpW1pXVraPDHGQMxjSfW99FDKGRjIiHtAwkTq6ZLEvgYy478mYR5X+EcpZ2Dgm9IJifJYKbkksa+BdGFMhELMYxWQM6Bvn0S5LN\/oqi5J7DsKM3D8IP0qfSaRD3PGY538nnRT+kb6WjolQSaalxMxf2krlr4Eqk5LDwYqCNyWMMwliV4JlF9VuCfRM4Fm4iIk0r7DEimIHEr3buv++lV8lGAgrbJZAIPXB9Kq1Gd01m55oxQDcSGWRLo\/5DEQMXNgBsGFIK8mi5IMpNF9ScQkZgoQe0li9XRFYgHAOZJFaQbS8C4S2QfyoI6Rm8k\/I\/kDKal5Ol+1RGJbWrSRyM1WAvOykleVoi8lEmh1n0UiD58IDOwiz9oOrYPDTjL4BCMfGJLI8o8g183Lecx\/md4QmG3GVz+I+VK6gbS1SSLzPAJj23IeS0HmhK9J3OFhwGGEZpnKyB0VUzCQBhuJzcbzszAweE06LpEjucPzlcQg87F0W4qKqRhIoyFxXkAeXRzzmIiz5aYDhja7dBSJUzJQPrSGkfe69oA8zOOxKMa9Ld2RWOJtSlEk\/h8MbJKHaeQ+pju2LuaRAOadkMiHNrj0InHqBraRR7ubNxX26\/u3pGgSp2xgF3nyazcwcxCJUzWwL3m7DtYfokmcooEx5IUGRpM4NQOHkhca2ZvEKRm4CHmhgb1JnIqBqcgLjewkcQoGpiQvNLCTxNINzEVeaGQriSUbmJO80MCQRO7aMG98UKqByyIvNNJI5C0N3tDYKdHAZZIXGshambs+iM\/F3dIfizy8IrjBwN0a7tp8Kd0ticAxySPnYR7PmHnWsiXx2PRhKQZ6Iu8TGcddGx4ZFNGFvZEHifcxj\/BOoFvy\/rXPt4GuyfNuoHvyPBtYBHleDSyGPK8G2pqTv54\/KjWfnlmdc2xnzfOeGG3bCvU2ChuBa6rwy5I96Gmrf6qfN1cYT8zzugrY27XDkn\/P+pJXMnhXhX8wQcOgI1dwbl7naK4wKJNVRrXW1XZueCOQ2f1liS5MA1al96VXpBwxmDyrjDcDMc2u\/pY+kxOhgzgopeoxg3NeVZPGF28GWtVyk7gweVbRsQyELHsZEhogj3tsFrlITEaeVXQsA3nB8YzEqMsborxRuiGF7\/SlJjEZeaprFWMZSC5joIBCVh7c3diRIDMHicnJUz2rGMtAm+\/xvt5ZCQPXpevShpSaxOTkqY5VjGUgpGEiBLLioAvz7h65LyWJ2chTPasYy0ArHyNZbbBkuyhtSylJzEae6lnF2AZSCfIhNGIiBKYgsQ955F6CfYlBfy\/iwUAqbySu6nMKErvIsxzMO9LkX3LuoL8X8WKg6p+ERKPpls5nT88wE5MsII\/ce1yi\/Qxc5GAuYnR4MpDKL0oif7ZA8B\/dZt1VMfIY\/S9JpI+PJEy8IUV3474G0jAKZwJMrooNyIAKI2Te8YvkxAP1iSFuHnn2tj67QyRdOSuBduUOq6APJZCPCW4IcMXtxkDXsUNJNBMYjFjFWFj9jTy6LyZyUe0Y2zdqG0Mg9BEU3FwtVD\/s+MKxXOWYGELirPM3c56RRy\/CVMpYKGIMZL5GFyHPcIVjYlM727Qh5rhYEsNzt5FHuxcizwrqayD729WKJYljIbBZYS7AI4mkTTowuvVxZrA\/a2e6JWmEY7YkztGWV+eR16yLTjE8YgwcXsp\/j6Th5EMuxlWJv5rsCozC8HcllnvoJ4n\/cBT2iOzkqcwqxjIQM3hBB\/Lo3qSHPsFx0MfENzSteTwX5lWJdXb4t3HN\/Rb+PJaBdMXLEmnhUymmS2EiYprCdpaR5OkL0pp0TCJ3x5Sh3fvFWAbSaJ59EEx6UwcXhmcoiDZa\/tbHtJHtxGmr6fdsXB3mdDyHZTGdKxgw6G7LCuvit1Ugg409fwnLp820vSunhsftfk9eYFJJAafrrTbJg6XV5xLbZYS1h9x3SGrraQxIVyTq9bMUfZGNQB1bTSuGTHY5tiuoaHTluk465\/dGoNHVZiC9j7rFrqx2i\/4HVWqBYcJfxRMAAAAASUVORK5CYII="
        },
        {
          "BTTTouchBarButtonName" : "Knit",
          "BTTTriggerType" : 629,
          "BTTTriggerClass" : "BTTTriggerTypeTouchBar",
          "BTTPredefinedActionType" : -1,
          "BTTPredefinedActionName" : "No Action",
          "BTTShortcutToSend" : "56,55,40",
          "BTTEnabled" : 1,
          "BTTOrder" : 0,
          "BTTIconData" : "iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAYAAACOEfKtAAAMFGlDQ1BJQ0MgUHJvZmlsZQAASImVVwdYU8kWnltSCAktEAEpoTdBepUaepcONkISIJSICUHEji4q2AuiWNFVEEXXAsiiImJnUbDXhyIqyrpYsKHyJgV0fe175\/vmzp8z55z5z9wzk7kAKNuy8\/JyUBUAcgX5wpggP2ZScgqT9BigQAuQgQcgsTmiPN\/o6HAAZaT\/u7y\/CRBJf81aEutfx\/+rqHJ5Ig4ASDTEaVwRJxfiowDgmpw8YT4AhHaoN5qZnyfBAxCrCyFBAIi4BGfIsKYEp8nwOKlNXAwLYh8AyFQ2W5gBgJKEN7OAkwHjKEk42gq4fAHEWyD24mSyuRDfh3hcbu50iJXJEJun\/RAn428x00ZjstkZo1iWi1TI\/nxRXg571v+5HP9bcnPEI3MYwkbNFAbHSHKG61adPT1MgqkQNwvSIqMgVoP4Ap8rtZfgu5ni4Hi5fT9HxIJrBhgAvm4u2z8MYh2IGeLseF85tmcLpb7QHo3k54fEyXGacHqMPD5aIMiJDJfHWZrJCxnB23iigNgRm3R+YAjEsNLQo0WZcYkynmhbAT8hEmIliK+KsmPD5L4PizJZkSM2QnGMhLMxxO\/ShYExMhtMM1c0khdmw2FL54K1gPnkZ8YFy3yxJJ4oKXyEA5fnHyDjgHF5gng5NwxWl1+M3LckLydabo9t4+UExcjWGTskKogd8e3KhwUmWwfscRY7NFo+1\/u8\/Og4GTccBeGABfwBE4hhSwPTQRbgd\/Q39MNfspFAwAZCkAF4wFquGfFIlI4I4DMWFIE\/IeIB0aifn3SUBwqg\/uuoVva0BunS0QKpRzZ4CnEuro174R54OHz6wGaPu+JuI35M5ZFZiQFEf2IwMZBoMcqDA1nnwCYE\/H+jC4M9D2Yn4SIYyeF7PMJTQifhMeEGoZtwBySAJ9Iocqtp\/GLhT8yZIAJ0w2iB8uzSfswON4WsnXA\/3BPyh9xxBq4NrHFHmIkv7g1zc4LaHxmKR7l9X8uf55Ow\/jEfuV7JUslJziJt9M2wRq1+jsL6YY24sA\/72RJbih3BzmOnsYtYM9YAmNgprBFrx05I8GglPJFWwshsMVJu2TAOf8TGtta2z\/bLT3Oz5fNL1kuUzyvMl2wG1vS8WUJ+RmY+0xeexjxmiIBjM45pb2vnCoDkbJcdHW8Z0jMbYVz6riteAYCn4\/DwcPN3XbgyAEdhTVN6vuvM3eF2LQTgwkqOWFgg00mOY0AAFKAMd4UW0ANGwBzmYw+c4X+IDwgAoSAKxIFkMBWueCbIhZxngjlgISgBZWA12AA2g+1gF6gGB8Bh0ACawWlwDlwGV8ENcA\/WRS94CQbAezCEIAgJoSF0RAvRR0wQK8QecUW8kAAkHIlBkpFUJAMRIGJkDrIIKUPWIpuRnUgN8htyHDmNXEQ6kTvII6QPeYN8RjGUiqqjuqgpOh51RX3RMDQOnYJmoDPQInQxuhKtQKvQ\/Wg9ehq9jN5Au9GX6CAGMEWMgRlg1pgrxsKisBQsHRNi87BSrByrwuqwJvier2HdWD\/2CSfidJyJW8PaDMbjcQ4+A5+HL8c349V4Pd6GX8Mf4QP4NwKNoEOwIrgTQghJhAzCTEIJoZywh3CMcBbum17CeyKRyCCaEV3gvkwmZhFnE5cTtxIPEluIncQe4iCJRNIiWZE8SVEkNimfVELaRNpPOkXqIvWSPpIVyfpke3IgOYUsIBeTy8n7yCfJXeRn5CEFFQUTBXeFKAWuwiyFVQq7FZoUrij0KgxRVClmFE9KHCWLspBSQamjnKXcp7xVVFQ0VHRTnKjIV1ygWKF4SPGC4iPFT1Q1qiWVRZ1MFVNXUvdSW6h3qG9pNJopzYeWQsunraTV0M7QHtI+KtGVbJRClLhK85UqleqVupReKSsomyj7Kk9VLlIuVz6ifEW5X0VBxVSFpcJWmadSqXJc5ZbKoCpd1U41SjVXdbnqPtWLqs\/VSGqmagFqXLXFarvUzqj10DG6EZ1F59AX0XfTz9J71YnqZuoh6lnqZeoH1DvUBzTUNBw1EjQKNSo1Tmh0MzCGKSOEkcNYxTjMuMn4PEZ3jO8Y3phlY+rGdI35oDlW00eTp1mqeVDzhuZnLaZWgFa21hqtBq0H2ri2pfZE7Zna27TPavePVR\/rMZYztnTs4bF3dVAdS50Yndk6u3TadQZ19XSDdPN0N+me0e3XY+j56GXprdc7qdenT9f30ufrr9c\/pf+CqcH0ZeYwK5htzAEDHYNgA7HBToMOgyFDM8N4w2LDg4YPjChGrkbpRuuNWo0GjPWNI4znGNca3zVRMHE1yTTZaHLe5IOpmWmi6RLTBtPnZppmIWZFZrVm981p5t7mM8yrzK9bEC1cLbIttlpctUQtnSwzLSstr1ihVs5WfKutVp3jCOPcxgnGVY27ZU219rUusK61fmTDsAm3KbZpsHk13nh8yvg148+P\/2brZJtju9v2np2aXahdsV2T3Rt7S3uOfaX9dQeaQ6DDfIdGh9eOVo48x22Ot53oThFOS5xanb46uzgLneuc+1yMXVJdtrjcclV3jXZd7nrBjeDm5zbfrdntk7uze777Yfe\/PKw9sj32eTyfYDaBN2H3hB5PQ0+2507Pbi+mV6rXDq9ubwNvtneV92MfIx+uzx6fZ74Wvlm++31f+dn6Cf2O+X1gubPmslr8Mf8g\/1L\/jgC1gPiAzQEPAw0DMwJrAweCnIJmB7UEE4LDgtcE3wrRDeGE1IQMhLqEzg1tC6OGxYZtDnscbhkuDG+KQCNCI9ZF3I80iRRENkSBqJCodVEPos2iZ0T\/PpE4MXpi5cSnMXYxc2LOx9Jjp8Xui30f5xe3Ku5evHm8OL41QTlhckJNwodE\/8S1id1J45PmJl1O1k7mJzemkFISUvakDE4KmLRhUu9kp8klk29OMZtSOOXiVO2pOVNPTFOexp52JJWQmpi6L\/ULO4pdxR5MC0nbkjbAYXE2cl5yfbjruX08T95a3rN0z\/S16c8zPDPWZfRlemeWZ\/bzWfzN\/NdZwVnbsz5kR2XvzR7OScw5mEvOTc09LlATZAvaputNL5zemWeVV5LXPcN9xoYZA8Iw4R4RIpoiasxXh9ecdrG5+BfxowKvgsqCjzMTZh4pVC0UFLbPspy1bNazosCiX2fjszmzW+cYzFk459Fc37k75yHz0ua1zjeav3h+74KgBdULKQuzF\/5RbFu8tvjdosRFTYt1Fy9Y3PNL0C+1JUolwpJbSzyWbF+KL+Uv7VjmsGzTsm+l3NJLZbZl5WVflnOWX1pht6JixfDK9JUdq5xXbVtNXC1YfXON95rqtapri9b2rItYV7+eub50\/bsN0zZcLHcs376RslG8sbsivKJxk\/Gm1Zu+bM7cfKPSr\/LgFp0ty7Z82Mrd2rXNZ1vddt3tZds\/7+DvuL0zaGd9lWlV+S7iroJdT3cn7D7\/q+uvNXu095Tt+bpXsLe7Oqa6rcalpmafzr5VtWituLZv\/+T9Vw\/4H2iss67beZBxsOwQOCQ+9OK31N9uHg473HrE9UjdUZOjW47Rj5XWI\/Wz6gcaMhu6G5MbO4+HHm9t8mg69rvN73ubDZorT2icWHWScnLxyeFTRacGW\/Ja+k9nnO5pndZ670zSmettE9s6zoadvXAu8NyZ877nT13wvNB80f3i8UuulxouO1+ub3dqP\/aH0x\/HOpw76q+4XGm86na1qXNC58ku767T1\/yvnbsecv3yjcgbnTfjb96+NflW923u7ed3cu68vltwd+jegvuE+6UPVB6UP9R5WPUPi38c7HbuPvHI\/1H749jH93o4PS+fiJ586V38lPa0\/Jn+s5rn9s+b+wL7rr6Y9KL3Zd7Lof6SP1X\/3PLK\/NXRv3z+ah9IGuh9LXw9\/Gb5W623e985vmsdjB58+D73\/dCH0o9aH6s\/uX46\/znx87OhmV9IXyq+Wnxt+hb27f5w7vBwHlvIll4FMNjQ9HQA3uwFgJYMAP0qvD8oyb69pILIvhelCPwnLPs+k4ozAHWwk1y5WS0AHILNFDbaAgAkV+84H4A6OIw2uYjSHexlsajwC4bwcXj4rS4ApCYAvgqHh4e2Dg9\/3Q3J3gGgZYbsm08iRHi\/3yGN0cUoXAB+kn8CCCdsu7q1Xy8AAAAJcEhZcwAAFiUAABYlAUlSJPAAAAeiSURBVHgB7dy5jh1FGMVxMPu+GYMlLxNA4ogAUkBkECMegocg4D0QMRIxZAhEhpyAhEM0HpvNmH3fOb\/x\/aTmuu\/SU\/eObKk+6Ux3V1dVV\/3rVPWdoPqGG3p0Ap3AdUzgxjXbLt+t0U3RQ9GRqOKvnPwb\/TM4uvfn7Np99\/6YXTvfZmib9t4cOddu19oupLse5pMutO3r6O+o2pvTxaGydUIjzkQnoleihyMBzuXo9+hSBNovs+vdHH+O9qIfo3PRb9FPEeDbCGDuim6LTkX3RNp9Z3Qskn50dhxeF4evcu\/V6GKkvfq1NKrg0ky5qWEeriEno0ciYaSkeZAjgADVgwEU0pz\/Gn0XAS+P8qACKm1KaLt23R5xl\/ZJu392vpPj3dHpCNQxcMoAWe5Ul35IV\/fKWBfgooo8mBsBOD471hQdm8Kg7UYgvhuZLmcjgC9FgK4T9VyAnowsK89G4O1EBdM0XTWFC16yTo9WgJ44pQ5QAb4v4gwATJsfIoMAMKfKM+9IzwGkpqiZcG+kHgAd1Wvq3hIdSkzp\/CYapGM6CtDjUU1hDnwn+jx6M\/o2GjqyHPdA0l+MuP25yAAMpzDAhwYvz9p3jwZ48PDtyg0Wfh3UuU2GKSU8t+KXnHCOewBbh76JakoDeDSyXMgH4IlIvm2GdVCbPH+Mz78c+ESkYa\/MjjnsTylOuBg5eqVvM+5I5c9EgD0f7UWc5vnC1Hw5Au+pCDhlth3gnYkM1hifHwCsN8\/JnNfb9fucmy7WJu7cdhhpa5uwrhmw4eKuDdrzYOSnydC9udxaaJcXkgEb43PkMOBsrXfXQsUdYOModIAdYCOBxuLdgR1gI4HG4t2BHWAjgcbi3YEdYCOBxuLdgR1gI4HG4t2BHWAjgcbi3YEdYCOBxuLdgR1gI4HG4t2BHWAjgcbi3YEdYCOBxuLdgR1gI4HG4t2BHWAjgcbi3YEdYCOBxuLdgR1gI4HG4t2BHWAjgcbi3YEdYCOBxuLdgR1gI4HG4t2BHWAjgcbi3YEdYCOBxuLdgR1gI4HG4t2BHWAjgcbi3YGNAO3WXCfsH7YV1S5yOzntlqyNzQbBrkZR+2uvXF2bf4df49CvCrvl9U0f9dW96ldOx2NdgCq0NV\/lb0Q2H9u7ayuoXeO2ptoS6nonKrg5vabCJwfOR2DZ5P1PJFz7Ssfl6JPIjnl9XslnZYZUIoxGPfRCzu1mF7WXFkAgXQsbldVtBB25FFRH7q30nG4sDK52+goIMAA4Vjrn0V6kL3bilwNdA2uXPLCu615OF8e6AMuBvrLxeVRA1OwcEOFY8GzRt6t8JwLXzm9f1Xhydn0sx+Gm6lweOKp9oJyNbBTfjcBw9CEL4Apiwaljbu1DA3w4ACtn0roAPcBICo1YFcBofLkNQDvSrTE+L2DXuXrABll+S4ABMCCrQsfVD5xv0ajrs8jMOB8B6ChPHXdzbgpvNKYAnPLgcgQgX0SgvD871gvo0Vxz5AuRTw08HQFNqwK096JL0VuRqfdJZOoNHTScwhuHl2ctXSS5gg4a5dixhquXaziSQ3T6QuTjEhzKScPp5VweU9ESok5T8stIeYv+xWjsWUluCiZbaLRFN3TwWGSkWyCm+GiUQ62pr0XWmtejB6KXIiDAquCsD6IPo48igAGUro2ctg14+m5AaZTDIoCmnHXKFDsVmVb1NtNYjqg3VV3Xfc4auieXo1EOld9UV5+XAEcpX\/dzur\/WXc5RJ4CTz88qAzE1rLuep4+EgWuDWOmO8lm3LS9Ho0kALezPRBr4fKSTOqCT1h2L87mIS8bS5ZsSgKmLm16fFayfSi7de3uWbirLfxB4IJ2OrMNmmH4yCFA70Xz6bUm7MwLP8nJVLHKgEVCp8B0XjVURMI46RECOpctXTiyHmmI6zlnSKl0+UWnWxflQbgh0eH+Ko+Q9FQEHIGA7kb6OpW\/sZ4wReDjSkeOzoy8euS4QwykMoKnGUZcirtmNQB9LP+j6NdVRAK4LfCW81LU\/\/2vkdVLH6wHuD2PerUZvURQQdRptIAWAYj6dC8ccu5959keHzAzrlmPBGHPOgR2VepcFw2in9jPMX6BYkDXm48jvqTORud8S5QwPfCxyXDaFNWqZM9W3E82vUQWxwIKrT67ngbtuDe209vv18Gn0k4ehaS27EMlg9ACshmgUlTPrbVT3Kz1Z\/hfS141FjtUeoa4xp20KynApWjbQZuj5iNH89vzZSGkcQH62gONaw7y6gbTYelFwJrhj6a2OTbUHmsLKtQRYuxETWastNXuRpWY3mk8H0KBa9uTd\/\/xdjbLMFUByJTCOwBGQY+nylSPHHGug6v4iZy5KT9FJoT\/rOkpewA78stOxRVEdHgOiTN1fx7FeJDuRAXDcxNRLNVfFVEcBOAX4VQ8EYVEM\/xOQp96kY\/lXOdbib7C4WIBO0mqAakAKrvRhmDZi2RrV7Kgrj1j\/rw5sKgpAASlA4HpO3S94Yy8FgKVbEvz7WO0zJf1aqN+Xi9aoZkflGZNimQMnVZTMUxxbLuNMzjbFRTkUQNO9XMh91l4AdyMA96L5tYs7DzVqhA\/1obOHlUPLseXQglvwqm3rTOHK24\/XC4H\/AJAhQASdnXZeAAAAAElFTkSuQmCC",
          "BTTTriggerConfig" : {
            "BTTTouchBarItemIconHeight" : 22,
            "BTTTouchBarItemIconWidth" : 22,
            "BTTTouchBarItemPadding" : 0,
            "BTTTouchBarFreeSpaceAfterButton" : "5.000000",
            "BTTTouchBarButtonColor" : "58.650001, 58.650001, 58.650001, 255.000000",
            "BTTTouchBarAlwaysShowButton" : "0",
            "BTTTouchBarAlternateBackgroundColor" : "0.000000, 0.000000, 0.000000, 0.000000"
          }
        }
      ]
    },

An R user asked a question regarding whether it’s possible to have the RStudio pipe (%>%) shortcut (Cmd-Shift-M) available in other macOS applications. If you’re using Alfred then you can use this workflow for said task (IIRC this requires an Alfred license which is reasonably cheap).

When you add it to Alfred you must edit it to make Cmd-Shift-M the hotkey since Alfred strips the keys on import (for good reasons). I limited the workflow to a few apps (Safari, Chrome, Sublime Text, iTerm) and I think it makes sense to limit the apps it applies to (you don’t need the operator everywhere, at least IMO).

I can’t believe I didn’t do this earlier. I use R in the terminal a bit and mis-hit Cmd-Shift-M all the time when I do (since RStudio is my primary editor for R code and muscle memory is scarily powerful). I also have to use (ugh) Jupyter notebooks on occasion and this will help there, too. If you end up modifying or using the workflow, drop a note in the comments.

@JennyBryan posted her [slides from the 2015 R Summit](https://github.com/jennybc/2015-06-28_r-summit-talk) and they are a must-read for instructors and even general stats/R-folk. She’s one of the foremost experts in R+GitHub and her personal and class workflows provide solid patterns worth emulation.

One thing she has mentioned a few times—and included in her R Summit talk—is the idea that you can lean on GitHub when official examples of a function are “kind of thin”. She uses a search for `vapply` as an example, showing how to [search for uses of `vapply` in CRAN](https://github.com/search?utf8=%E2%9C%93&q=vapply+extension%3AR+user%3Acran) (there’s a [read-only CRAN mirror on GitHub](http://www.r-pkg.org/)) and [in GitHub R code in general](https://github.com/search?utf8=%E2%9C%93&q=vapply+extension%3AR).

I remember throwing together a small function to kick up a browser from R for those URLs (in a response to one of her tweets), but realized this morning (after reading her slides last night) that it’s possible to not leave RStudio to get these GitHub search results (or, at least the first page of results). So, I threw together [this gist](https://gist.github.com/hrbrmstr/32e9c140129d7d51db52) which, when sourced, provides a `ghelp` function. This is the code:

ghelp <- function(topic, in_cran=TRUE) {
 
  require(htmltools) # for getting HTML to the viewer
  require(rvest)     # for scraping & munging HTML
 
  # github search URL base
  base_ext_url <- "https://github.com/search?utf8=%%E2%%9C%%93&q=%s+extension%%3AR"
  ext_url <- sprintf(base_ext_url, topic)
 
  # if searching with user:cran (the default) add that to the URL  
  if (in_cran) ext_url <- paste(ext_url, "+user%3Acran", sep="", collapse="")
 
  # at the time of writing, "rvest" and "xml2" are undergoing some changes, so
  # accommodate those of us who are on the bleeding edge of the hadleyverse
  # either way, we are just extracting out the results <div> for viewing in 
  # the viewer pane (it works in plain ol' R, too)
  if (packageVersion("rvest") < "0.2.0.9000") { 
    require(XML)
    pg <- html(ext_url)
    res_div <- paste(capture.output(html_node(pg, "div#code_search_results")), collapse="")
  } else {
    require(xml2)
    pg <- read_html(ext_url)
    res_div <- as.character(html_nodes(pg, "div#code_search_results"))
  }
 
  # clean up the HTML a bit   
  res_div <- gsub('How are these search results\\? <span class="removed_link" title="/contact">Tell us!</span>', '', res_div)
  # include a link to the results at the top of the viewer
  res_div <- gsub('href="/', 'href="http://github.com/', res_div)
  # build the viewer page, getting CSS from github-proper and hiding some cruft
  for_view <- sprintf('<html><head><link crossorigin="anonymous" href="https://assets-cdn.github.com/assets/github/index-4157068649cead58a7dd42dc9c0f2dc5b01bcc77921bc077b357e48be23aa237.css" media="all" rel="stylesheet" /><style>body{padding:20px}</style></head><body><span class="removed_link" title="%s">Show on GitHub</span><hr noshade size=1/>%s</body></html>', ext_url, res_div)
  # this makes it show in the viewer (or browser if you're using plain R)
  html_print(HTML(for_view))
 
}

Now, when you type `ghelp(“vapply”)`, you’ll get:

RStudio

in the viewer pane (and similar with `ghelp(“vapply”, in_cran=FALSE)`). Clicking the top link will take you to the search results page on GitHub (in your default web browser), and all the other links will pop out to a browser as well.

If you’re the trusting type, you can `devtools::source_gist(’32e9c140129d7d51db52′)` or just add this to your R startup functions (or add it to your personal helper package).

There’s definitely room for some CSS hacking and it would be fairly straightforward to get _all_ the search results into the viewer by following the pagination links and stitching them all together (an exercise left to the reader).

Mozilla released the [MetricsGraphics.js library](http://metricsgraphicsjs.org/) back in November of 2014 ([gh repo](https://github.com/mozilla/metrics-graphics)) and was greeted with great fanfare. It’s primary focus is on crisp, clean layouts for interactive time-series data, but they have support for other chart types as well (though said support is far from comprehensive).

I had been pondering building an R package to help generate these charts when Ramnath Vaidyanathan, Kenton Russell & JJ Allaire came up with the insanely awesome [htmlwidgets](http://www.htmlwidgets.org/) R package, which is the best javascript<->R bridge to-date. Here’s a quick take on how to make a basic line chart before going into some package (and MetricsGraphics) details:

library(metricsgraphics)
 
tmp <- data.frame(year=seq(1790, 1970, 10), uspop=as.numeric(uspop))
 
tmp %>%
  mjs_plot(x=year, y=uspop) %>%
  mjs_line() %>%
  mjs_add_marker(1850, "Something Wonderful") %>%
  mjs_add_baseline(150, "Something Awful")

Example of Basic MetricsGrahpics Chart

One of the package goals (which should be evident from the example) is that it had to conform to the new “piping” idiom, made popular through the [magrittr](https://github.com/smbache/magrittr), [ggvis](http://ggvis.rstudio.com/) and [dplyr](http://github.com/dplyr) packages. This made it possible to avoid one function with a ton of parameters and help break out the chart building into logical steps. While it may not have the flexibility of `ggplot2`, you can do some neat things with MetricsGraphics charts, like use multiple lines:

set.seed(1492)
stocks <- data.frame(
  time = as.Date('2009-01-01') + 0:9,
  X = rnorm(10, 0, 1),
  Y = rnorm(10, 0, 2),
  Z = rnorm(10, 0, 4))
 
stocks %>%
  mjs_plot(x=time, y=X, width=500, height=350) %>%
  mjs_line() %>%
  mjs_add_line(Y) %>%
  mjs_add_line(Z) %>%
  mjs_axis_x(xax_format="date") %>%
  mjs_add_legend(c("X", "Y", "Z"))

Stocks X, Y & Z over time

and, pretty configurable scatterplots:

library(RColorBrewer)
 
mtcars %>%
  mjs_plot(x=wt, y=mpg, width=500, height=350) %>%
  mjs_point(color_accessor=cyl,
            x_rug=TRUE, y_rug=TRUE,
            size_accessor=carb,
            size_range=c(5, 10),
            color_type="category",
            color_range=brewer.pal(n=11, name="RdBu")[c(1, 5, 11)]) %>%
  mjs_labs(x="Weight of Car", y="Miles per Gallon")

Motor Trend Cars – mpg~wt

The `htmlwidgets` developers go into [great detail](http://www.htmlwidgets.org/develop_intro.html) on how to create a widget, but there are some central points I’ll cover and potentially reiterate.

First, use the `htmlwidgets::scaffoldWidget` that `htmlwidgets` provides to kickstart your project. It’ll setup the essentials and free your time up to work on the interface components. You will need to edit the generated `yaml` file to use the minified javascript files for things like jquery or d3 since Chrome will be unhappy if you don’t.

Next, remember that all you’re doing is building an R object with data to be passed into a javascript function/environment. MetricsGraphics made this a bit easier for me since the main graphic configuration is one, giant parameter list (take a look at the `metricsgraphics.js` source in github).

Third, if you need to customize the html generation function in the main `packagename_html` file, ensure you pass in `class` to the main `div` element. I was very pleased to discover that you can return a list of HTML elements vs a single one:

metricsgraphics_html <- function(id, style, class, ...) {
  list(tags$div(id = id, class = class, style=style),
       tags$div(id = sprintf("%s-legend", id), class = sprintf("%s-legend", class)))
}

and that may eventually enable support for facet-like functionality without manually creating multiple plots.

Fourth, try to build around the piping idiom. It makes it so much easier to add parameters and manage the data environment.

Fifth, use `iframe`s for embedding your visualizations in other documents (like this blog post). It avoids potential namespace collisions and frees you from having to cut/paste HTML from one doc to another.

And, lastly, remember that you can generate your own `elementId` in the event you need to use it with your javascript visualization library (like I had to).

Currently, `metricsgraphics` is at 0.4.1 and has support for most of the basic chart types along with linking charts (in `Rmd` files). You can install it from the [github repo](https://github.com/hrbrmstr/metricsgraphics) and make sure to file all issues or feature requests there. If you make something with it like @abresler [did](http://asbcllc.com/blog/2015/January/ww2_tanks/), drop a note in the comments!

Now, go forth and wrap some libraries!

RStudio is my R development environment of choice and I work primarily on/in Mac OS X. While it’s great that Apple provides a built-in Terminal application, I prefer to use [iTerm 2](http://www.iterm2.com/#/section/home) when I need to do work at a shell. The fine folks at RStudio provide a handy `Shell`… menu item off the `Tools` menu, but it (rightly) defaults to using Apple’s Terminal.app for functionality since they can’t assume what terminal application you are using.

To change it to iTerm (or whatever your favorite terminal application is) you need to fire up a text editor and change (make a backup first!) `/Applications/RStudio.app/Contents/MacOS/mac-terminal` to contain the following modified AppleScript:

#!/usr/bin/osascript
on run argv
  set dir to quoted form of (first item of argv)
  tell app "iTerm"
    activate
    tell the first terminal
      launch session "Default Session"
      tell the last session
        set name to "RStudio Session"
        write text "cd " & dir
      end tell
    end tell
  end tell
end run

That will open a new tab in iTerm, set the session (tab) name to “RStudio Session” and change the directory to the current working directory in RStudio.

More often than not, I’m just using [Alfred](http://www.alfredapp.com/) to kick up iTerm and doing the `cd` myself, but this added tweak (which you have to do **every** time you upgrade RStudio) reduces the churn when I do end up using the feature within RStudio.

I’m jumping around analytics environments these days and have to leave the comfort of my Mac’s RStudio Desktop application to use various RStudio Server instances via browser. While I prefer to use Chrome, the need to have a “dedicated” RStudio Server client outweighs the utility of my favorite browser. This is where Fluid (@FluidApp by @iTod) comes in.

Fluid lets you build separate, dedicated, Safari/WebKit engine application wrappers for any web resource. As the web site puts it: “Fluid lets you create a Real Mac App (or “Fluid App”) out of any website or web application, effectively turning your favorite web apps into OS X desktop apps.” This means you can build something that will behave almost like the Desktop client and make one for any RStudio Server instance you use.

Fluid

It’s far too easy to perform this useful feat. Just download Fluid, point the “URL:” field in the “Create a Fluid App” dialog to an RStudio Server instance, name it what you like (something that lets you know which RStudio Server instance you’re using would be #spiffy), pick an icon (select the RStudio Desktop application to use that one) and go! You can now start a separate app for each RStudio instance you use, complete with its own cookie storage, fullscreen capability and more (provided you pay the quite reasonable $4.99USD).

Here’s a screen shot of what it ends up looking like (sans MacOS menu bar):

RStudio

If you currently use Fluid this way for RStudio Server instances or give this suggestion a try and come up with any helpful configuration options, Userscripts or Userstyles drop a note in the comments!