From e7f387b7203222fcb43bf94f56ea62c6051e8a22 Mon Sep 17 00:00:00 2001 From: Alpha Chen Date: Tue, 3 Nov 2015 18:56:30 -0800 Subject: [PATCH] [alfred] Update workflows --- ...kflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C | 1 - .../2A5C0A87-204E-49EA-94A7-8E62BB4EFD8A.png | Bin 0 -> 17261 bytes .../CHANGELOG.md | 52 ++ .../Gemfile | 7 + .../Gemfile.lock | 23 + .../README.md | 44 ++ .../Rakefile | 1 + .../config.rb | 14 + .../forecast.rb | 145 +++++ .../forecaster.rb | 24 + .../geocoder.rb | 30 + .../icon.png | Bin 0 -> 17261 bytes .../icons/Cloud-Download.png | Bin 0 -> 1531 bytes .../icons/Cloud-Drizzle-Alt.png | Bin 0 -> 976 bytes .../icons/Cloud-Drizzle-Moon-Alt.png | Bin 0 -> 1169 bytes .../icons/Cloud-Drizzle-Moon.png | Bin 0 -> 1180 bytes .../icons/Cloud-Drizzle-Sun-Alt.png | Bin 0 -> 1337 bytes .../icons/Cloud-Drizzle-Sun.png | Bin 0 -> 1354 bytes .../icons/Cloud-Drizzle.png | Bin 0 -> 1026 bytes .../icons/Cloud-Fog-Alt.png | Bin 0 -> 609 bytes .../icons/Cloud-Fog-Moon-Alt.png | Bin 0 -> 818 bytes .../icons/Cloud-Fog-Moon.png | Bin 0 -> 879 bytes .../icons/Cloud-Fog-Sun-Alt.png | Bin 0 -> 968 bytes .../icons/Cloud-Fog-Sun.png | Bin 0 -> 1032 bytes .../icons/Cloud-Fog.png | Bin 0 -> 695 bytes .../icons/Cloud-Hail-Alt.png | Bin 0 -> 1095 bytes .../icons/Cloud-Hail-Moon-Alt.png | Bin 0 -> 1266 bytes .../icons/Cloud-Hail-Moon.png | Bin 0 -> 1157 bytes .../icons/Cloud-Hail-Sun-Alt.png | Bin 0 -> 1422 bytes .../icons/Cloud-Hail-Sun.png | Bin 0 -> 1325 bytes .../icons/Cloud-Hail.png | Bin 0 -> 1008 bytes .../icons/Cloud-Lightning-Moon.png | Bin 0 -> 1243 bytes .../icons/Cloud-Lightning-Sun.png | Bin 0 -> 1414 bytes .../icons/Cloud-Lightning.png | Bin 0 -> 1067 bytes .../icons/Cloud-Moon.png | Bin 0 -> 1047 bytes .../icons/Cloud-Rain-Alt.png | Bin 0 -> 979 bytes .../icons/Cloud-Rain-Moon-Alt.png | Bin 0 -> 1136 bytes .../icons/Cloud-Rain-Moon.png | Bin 0 -> 1110 bytes .../icons/Cloud-Rain-Sun-Alt.png | Bin 0 -> 1313 bytes .../icons/Cloud-Rain-Sun.png | Bin 0 -> 1303 bytes .../icons/Cloud-Rain.png | Bin 0 -> 951 bytes .../icons/Cloud-Refresh.png | Bin 0 -> 1732 bytes .../icons/Cloud-Snow-Alt.png | Bin 0 -> 1034 bytes .../icons/Cloud-Snow-Moon-Alt.png | Bin 0 -> 1167 bytes .../icons/Cloud-Snow-Moon.png | Bin 0 -> 1107 bytes .../icons/Cloud-Snow-Sun-Alt.png | Bin 0 -> 1365 bytes .../icons/Cloud-Snow-Sun.png | Bin 0 -> 1291 bytes .../icons/Cloud-Snow.png | Bin 0 -> 963 bytes .../icons/Cloud-Sun.png | Bin 0 -> 1225 bytes .../icons/Cloud-Upload.png | Bin 0 -> 1519 bytes .../icons/Cloud-Wind-Moon.png | Bin 0 -> 1227 bytes .../icons/Cloud-Wind-Sun.png | Bin 0 -> 1389 bytes .../icons/Cloud-Wind.png | Bin 0 -> 1075 bytes .../icons/Cloud.png | Bin 0 -> 879 bytes .../icons/Compass-East.png | Bin 0 -> 835 bytes .../icons/Compass-North.png | Bin 0 -> 783 bytes .../icons/Compass-South.png | Bin 0 -> 846 bytes .../icons/Compass-West.png | Bin 0 -> 849 bytes .../icons/Compass.png | Bin 0 -> 785 bytes .../icons/Degrees-Celcius.png | Bin 0 -> 655 bytes .../icons/Degrees-Fahrenheit.png | Bin 0 -> 581 bytes .../icons/Moon-First-Quarter.png | Bin 0 -> 591 bytes .../icons/Moon-Full.png | Bin 0 -> 635 bytes .../icons/Moon-Last-Quarter.png | Bin 0 -> 598 bytes .../icons/Moon-New.png | Bin 0 -> 518 bytes .../icons/Moon-Waning-Crescent.png | Bin 0 -> 640 bytes .../icons/Moon-Waning-Gibbous.png | Bin 0 -> 635 bytes .../icons/Moon-Waxing-Crescent.png | Bin 0 -> 630 bytes .../icons/Moon-Waxing-Gibbous.png | Bin 0 -> 631 bytes .../icons/Moon.png | Bin 0 -> 626 bytes .../icons/Shades.png | Bin 0 -> 446 bytes .../icons/Snowflake.png | Bin 0 -> 589 bytes .../icons/Sun-Low.png | Bin 0 -> 738 bytes .../icons/Sun-Lower.png | Bin 0 -> 637 bytes .../icons/Sun.png | Bin 0 -> 878 bytes .../icons/Sunrise.png | Bin 0 -> 796 bytes .../icons/Sunset.png | Bin 0 -> 800 bytes .../icons/Thermometer-100.png | Bin 0 -> 597 bytes .../icons/Thermometer-25.png | Bin 0 -> 608 bytes .../icons/Thermometer-50.png | Bin 0 -> 616 bytes .../icons/Thermometer-75.png | Bin 0 -> 613 bytes .../icons/Thermometer-Zero.png | Bin 0 -> 576 bytes .../icons/Thermometer.png | Bin 0 -> 552 bytes .../icons/Tornado.png | Bin 0 -> 522 bytes .../icons/Umbrella.png | Bin 0 -> 715 bytes .../icons/Wind.png | Bin 0 -> 560 bytes .../icons/forecast.png | Bin 0 -> 17261 bytes .../info.plist | 179 +++++ .../location.rb | 28 + .../spark.rb | 17 + .../test_spark.rb | 10 + .../vendor/bundle/bundler/setup.rb | 7 + .../bundle/ruby/2.0.0/cache/alphred-1.1.0.gem | Bin 0 -> 10752 bytes .../bundle/ruby/2.0.0/cache/builder-3.2.2.gem | Bin 0 -> 31744 bytes .../ruby/2.0.0/gems/alphred-1.1.0/.gitignore | 9 + .../ruby/2.0.0/gems/alphred-1.1.0/.travis.yml | 4 + .../2.0.0/gems/alphred-1.1.0/CHANGELOG.md | 12 + .../gems/alphred-1.1.0/CODE_OF_CONDUCT.md | 13 + .../ruby/2.0.0/gems/alphred-1.1.0/Gemfile | 10 + .../ruby/2.0.0/gems/alphred-1.1.0/Guardfile | 5 + .../ruby/2.0.0/gems/alphred-1.1.0/LICENSE.txt | 21 + .../ruby/2.0.0/gems/alphred-1.1.0/README.md | 151 +++++ .../ruby/2.0.0/gems/alphred-1.1.0/Rakefile | 17 + .../2.0.0/gems/alphred-1.1.0/alphred.gemspec | 26 + .../2.0.0/gems/alphred-1.1.0/lib/alphred.rb | 10 + .../gems/alphred-1.1.0/lib/alphred/config.rb | 52 ++ .../gems/alphred-1.1.0/lib/alphred/icon.rb | 39 ++ .../gems/alphred-1.1.0/lib/alphred/item.rb | 59 ++ .../gems/alphred-1.1.0/lib/alphred/items.rb | 23 + .../gems/alphred-1.1.0/lib/alphred/mods.rb | 22 + .../gems/alphred-1.1.0/lib/alphred/tasks.rb | 40 ++ .../gems/alphred-1.1.0/lib/alphred/text.rb | 17 + .../gems/alphred-1.1.0/lib/alphred/version.rb | 3 + .../ruby/2.0.0/gems/builder-3.2.2/CHANGES | 107 +++ .../ruby/2.0.0/gems/builder-3.2.2/MIT-LICENSE | 20 + .../ruby/2.0.0/gems/builder-3.2.2/README.md | 258 ++++++++ .../ruby/2.0.0/gems/builder-3.2.2/Rakefile | 195 ++++++ .../2.0.0/gems/builder-3.2.2/doc/jamis.rb | 591 +++++++++++++++++ .../doc/releases/builder-1.2.4.rdoc | 31 + .../doc/releases/builder-2.0.0.rdoc | 46 ++ .../doc/releases/builder-2.1.1.rdoc | 58 ++ .../gems/builder-3.2.2/lib/blankslate.rb | 137 ++++ .../2.0.0/gems/builder-3.2.2/lib/builder.rb | 13 + .../builder-3.2.2/lib/builder/blankslate.rb | 23 + .../gems/builder-3.2.2/lib/builder/version.rb | 8 + .../gems/builder-3.2.2/lib/builder/xchar.rb | 197 ++++++ .../gems/builder-3.2.2/lib/builder/xmlbase.rb | 199 ++++++ .../builder-3.2.2/lib/builder/xmlevents.rb | 63 ++ .../builder-3.2.2/lib/builder/xmlmarkup.rb | 339 ++++++++++ .../gems/builder-3.2.2/rakelib/publish.rake | 17 + .../gems/builder-3.2.2/rakelib/tags.rake | 62 ++ .../gems/builder-3.2.2/test/performance.rb | 41 ++ .../2.0.0/gems/builder-3.2.2/test/preload.rb | 39 ++ .../builder-3.2.2/test/test_blankslate.rb | 217 +++++++ .../builder-3.2.2/test/test_eventbuilder.rb | 150 +++++ .../builder-3.2.2/test/test_markupbuilder.rb | 611 ++++++++++++++++++ .../builder-3.2.2/test/test_method_caching.rb | 62 ++ .../builder-3.2.2/test/test_namecollision.rb | 39 ++ .../gems/builder-3.2.2/test/test_xchar.rb | 78 +++ .../specifications/alphred-1.1.0.gemspec | 37 ++ .../specifications/builder-3.2.2.gemspec | 20 + .../info.plist | 11 +- 142 files changed, 4773 insertions(+), 11 deletions(-) delete mode 160000 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/2A5C0A87-204E-49EA-94A7-8E62BB4EFD8A.png create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/CHANGELOG.md create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/Gemfile create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/Gemfile.lock create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/README.md create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/Rakefile create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/config.rb create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/forecast.rb create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/forecaster.rb create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/geocoder.rb create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icon.png create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Cloud-Download.png create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Cloud-Drizzle-Alt.png create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Cloud-Drizzle-Moon-Alt.png create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Cloud-Drizzle-Moon.png create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Cloud-Drizzle-Sun-Alt.png create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Cloud-Drizzle-Sun.png create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Cloud-Drizzle.png create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Cloud-Fog-Alt.png create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Cloud-Fog-Moon-Alt.png create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Cloud-Fog-Moon.png create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Cloud-Fog-Sun-Alt.png create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Cloud-Fog-Sun.png create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Cloud-Fog.png create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Cloud-Hail-Alt.png create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Cloud-Hail-Moon-Alt.png create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Cloud-Hail-Moon.png create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Cloud-Hail-Sun-Alt.png create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Cloud-Hail-Sun.png create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Cloud-Hail.png create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Cloud-Lightning-Moon.png create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Cloud-Lightning-Sun.png create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Cloud-Lightning.png create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Cloud-Moon.png create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Cloud-Rain-Alt.png create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Cloud-Rain-Moon-Alt.png create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Cloud-Rain-Moon.png create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Cloud-Rain-Sun-Alt.png create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Cloud-Rain-Sun.png create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Cloud-Rain.png create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Cloud-Refresh.png create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Cloud-Snow-Alt.png create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Cloud-Snow-Moon-Alt.png create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Cloud-Snow-Moon.png create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Cloud-Snow-Sun-Alt.png create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Cloud-Snow-Sun.png create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Cloud-Snow.png create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Cloud-Sun.png create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Cloud-Upload.png create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Cloud-Wind-Moon.png create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Cloud-Wind-Sun.png create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Cloud-Wind.png create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Cloud.png create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Compass-East.png create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Compass-North.png create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Compass-South.png create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Compass-West.png create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Compass.png create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Degrees-Celcius.png create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Degrees-Fahrenheit.png create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Moon-First-Quarter.png create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Moon-Full.png create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Moon-Last-Quarter.png create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Moon-New.png create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Moon-Waning-Crescent.png create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Moon-Waning-Gibbous.png create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Moon-Waxing-Crescent.png create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Moon-Waxing-Gibbous.png create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Moon.png create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Shades.png create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Snowflake.png create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Sun-Low.png create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Sun-Lower.png create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Sun.png create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Sunrise.png create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Sunset.png create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Thermometer-100.png create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Thermometer-25.png create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Thermometer-50.png create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Thermometer-75.png create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Thermometer-Zero.png create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Thermometer.png create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Tornado.png create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Umbrella.png create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Wind.png create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/forecast.png create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/info.plist create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/location.rb create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/spark.rb create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/test_spark.rb create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/bundler/setup.rb create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/cache/alphred-1.1.0.gem create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/cache/builder-3.2.2.gem create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/alphred-1.1.0/.gitignore create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/alphred-1.1.0/.travis.yml create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/alphred-1.1.0/CHANGELOG.md create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/alphred-1.1.0/CODE_OF_CONDUCT.md create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/alphred-1.1.0/Gemfile create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/alphred-1.1.0/Guardfile create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/alphred-1.1.0/LICENSE.txt create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/alphred-1.1.0/README.md create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/alphred-1.1.0/Rakefile create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/alphred-1.1.0/alphred.gemspec create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/alphred-1.1.0/lib/alphred.rb create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/alphred-1.1.0/lib/alphred/config.rb create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/alphred-1.1.0/lib/alphred/icon.rb create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/alphred-1.1.0/lib/alphred/item.rb create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/alphred-1.1.0/lib/alphred/items.rb create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/alphred-1.1.0/lib/alphred/mods.rb create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/alphred-1.1.0/lib/alphred/tasks.rb create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/alphred-1.1.0/lib/alphred/text.rb create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/alphred-1.1.0/lib/alphred/version.rb create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/CHANGES create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/MIT-LICENSE create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/README.md create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/Rakefile create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/doc/jamis.rb create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/doc/releases/builder-1.2.4.rdoc create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/doc/releases/builder-2.0.0.rdoc create mode 100755 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/doc/releases/builder-2.1.1.rdoc create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/lib/blankslate.rb create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/lib/builder.rb create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/lib/builder/blankslate.rb create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/lib/builder/version.rb create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/lib/builder/xchar.rb create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/lib/builder/xmlbase.rb create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/lib/builder/xmlevents.rb create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/lib/builder/xmlmarkup.rb create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/rakelib/publish.rake create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/rakelib/tags.rake create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/test/performance.rb create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/test/preload.rb create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/test/test_blankslate.rb create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/test/test_eventbuilder.rb create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/test/test_markupbuilder.rb create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/test/test_method_caching.rb create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/test/test_namecollision.rb create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/test/test_xchar.rb create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/specifications/alphred-1.1.0.gemspec create mode 100644 Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/specifications/builder-3.2.2.gemspec diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C deleted file mode 160000 index 24666fa..0000000 --- a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 24666fa0572ff0152f827f83817f23cf0e5055d7 diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/2A5C0A87-204E-49EA-94A7-8E62BB4EFD8A.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/2A5C0A87-204E-49EA-94A7-8E62BB4EFD8A.png new file mode 100644 index 0000000000000000000000000000000000000000..f2c85b266c1f3dc0f51adf3a8ec8ab9845b03ccb GIT binary patch literal 17261 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 M07*qoM6N<$f&kqY761SM literal 0 HcmV?d00001 diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/CHANGELOG.md b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/CHANGELOG.md new file mode 100644 index 0000000..6584dec --- /dev/null +++ b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/CHANGELOG.md @@ -0,0 +1,52 @@ +## Current + +## 1.0.0 - 2015.11.01 +### Changed +- Use [Alphred](https://github.com/kejadlen/alphred) + +## 0.0.8 - 2015.05.31 +### Added +- Re-add support for `DEFAULT_LAT_LONG` and `DEFAULT_LOCATION`. + +## 0.0.7 - 2015.01.05 +### Added +- The current location is retrieved via IP geolocation rather than set in the + workflow configuration. +- Fixed opening the forecast in the browser. + +### Removed +- Support for `DEFAULT_LAT_LONG` and `DEFAULT_LOCATION` has been deprecated in favor + of getting the current location from the IP. + +## 0.0.6 - 2014.12.13 +### Added +- Add option to force Celsius/Fahrenheit using `FORECAST_UNITS`. + +## 0.0.5 - 2014.11.22 +### Changed +- Use `forecast-config` for managing API keys. +- Fixed bug when precipitation intensity/probability was all 0's. + +## 0.0.4 - 2014.11.21 +### Added +- Sparklines for precipitation intensity and probability for the next hour + (where applicable) and day. + +### Changed +- Bugfix for when `DEFAULT_LAT_LONG` is set and `DEFAULT_LOCATION` is not. + +## 0.0.3 - 2014.11.19 +### Added +- Forecast now uses units appropriate to the location. + +### Changed +- Fix `DEFAULT_LAT_LONG`. + +## 0.0.2 - 2014.11.19 +### Changed +- Remove minutely result for non-US locations since Forecast doesn't have this + data. + +## 0.0.1 - 2014.11.18 +### Added +- Initial release diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/Gemfile b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/Gemfile new file mode 100644 index 0000000..a12d1c2 --- /dev/null +++ b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/Gemfile @@ -0,0 +1,7 @@ +source "https://rubygems.org" + +gem "alphred", "~> 1.1" + +group :development do + gem "pry" +end diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/Gemfile.lock b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/Gemfile.lock new file mode 100644 index 0000000..f64845e --- /dev/null +++ b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/Gemfile.lock @@ -0,0 +1,23 @@ +GEM + remote: https://rubygems.org/ + specs: + alphred (1.1.0) + builder (~> 3.2) + builder (3.2.2) + coderay (1.1.0) + method_source (0.8.2) + pry (0.10.3) + coderay (~> 1.1.0) + method_source (~> 0.8.1) + slop (~> 3.4) + slop (3.6.0) + +PLATFORMS + ruby + +DEPENDENCIES + alphred (~> 1.1) + pry + +BUNDLED WITH + 1.10.6 diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/README.md b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/README.md new file mode 100644 index 0000000..a3d2b39 --- /dev/null +++ b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/README.md @@ -0,0 +1,44 @@ +# Forecast Workflow for Alfred + +![screenshot][screenshot] + +[screenshot]: http://i.imgur.com/mxGnovo.png + +# Requirements + +- [Alfred](http://www.alfredapp.com/) +- [Alfred Powerpack](http://www.alfredapp.com/powerpack/) +- OS X Mavericks + +# Installation + +Download and install the [workflow][download]. + +[download]: https://github.com/kejadlen/forecast.alfredworkflow/releases/download/0.0.5/Forecast.alfredworkflow + +Run `forecast-config VALUE` to set API keys and the default location: + +- `FORECAST_API_KEY`: Get an API key [here][forecast-api-key]. +- `GOOGLE_API_KEY`: Get an API key [here][google-api-key]. (Used for geocoding + queries. *This can be omitted if you only want the forecast for the current + location*.) +- `FORECAST_UNITS`: Defaults to `auto`, which sets the units based on the + location. Use `si` for Celsius and `us` for Fahrenheit. +- `DEFAULT_LAT_LONG`: Set this to override IP geolocation. Ex: `47.7396,-122.3426` for Seattle. +- `DEFAULT_LOCATION`: Used for displaying the location name when using `DEFAULT_LAT_LONG`. + +[forecast-api-key]: https://developer.forecast.io/register +[google-api-key]: https://developers.google.com/maps/documentation/geocoding/#api_key + +# TODO + +- Handle errors gracefully +- Caching? (Probably unnecessary...) +- Use `Accept-Encoding: gzip` for Forecast calls + +# Attributions + +- [Climacons](http://adamwhitcroft.com/climacons/) +- [Forecast API](https://developer.forecast.io/docs/v2) +- [Google Geocoding API](https://developers.google.com/maps/documentation/geocoding/) +- [ipinfo.io](http://ipinfo.io/) diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/Rakefile b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/Rakefile new file mode 100644 index 0000000..911ecca --- /dev/null +++ b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/Rakefile @@ -0,0 +1 @@ +require "alphred/tasks" diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/config.rb b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/config.rb new file mode 100644 index 0000000..b64e965 --- /dev/null +++ b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/config.rb @@ -0,0 +1,14 @@ +$LOAD_PATH.unshift(File.expand_path("../vendor/bundle", __FILE__)) +require "bundler/setup" + +require "alphred" + +module Forecast + Config = Alphred::Config.load( + FORECAST_API_KEY: nil, + GOOGLE_API_KEY: nil, + FORECAST_UNITS: nil, + DEFAULT_LOCATION: nil, + DEFAULT_LAT_LONG: nil, + ) +end diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/forecast.rb b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/forecast.rb new file mode 100644 index 0000000..2cf8207 --- /dev/null +++ b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/forecast.rb @@ -0,0 +1,145 @@ +$LOAD_PATH.unshift(File.expand_path("../vendor/bundle", __FILE__)) +require "bundler/setup" + +require "alphred" + +require_relative 'config' +require_relative 'forecaster' +require_relative 'location' +require_relative 'spark' + +ICONS = { + 'clear-day' => 'Sun', + 'clear-night' => 'Moon', + 'rain' => 'Cloud-Rain', + 'snow' => 'Cloud-Snow', + 'sleet' => 'Cloud-Snow-Alt', + 'wind' => 'Wind', + 'fog' => 'Cloud-Fog', + 'cloudy' => 'Cloud', + 'partly-cloudy-day' => 'Cloud-Sun', + 'partly-cloudy-night' => 'Cloud-Moon', +} + +Precipitation = Struct.new(:intensity, :probability) do + def self.from_forecast(forecast) + self.new(*forecast.values_at('precipIntensity', 'precipProbability')) + end + + def human_intensity + case intensity + when 0...0.002 + 'no' + when 0.002...0.017 + 'very light' + when 0.017...0.1 + 'light' + when 0.1...0.4 + 'moderate' + else + 'heavy' + end + end + + def to_s + "#{(probability*100).to_i}% chance of #{human_intensity} rain." + end +end + +query = ARGV.shift || '' +location = if query.empty? + if Forecast::Config['DEFAULT_LAT_LONG'].empty? + Location.from_ip + else + lat, long = Forecast::Config['DEFAULT_LAT_LONG'].split(?,).map(&:to_f) + Location.new(Forecast::Config['DEFAULT_LOCATION'], lat, long) + end + else + Location.new(query) + end +forecast = Forecaster.forecast(location) + +items = Alphred::Items.new + +items << Alphred::Item.new( + uid: :location, + arg: "#{location.lat.round(4)},#{location.long.round(4)}", + valid: true, + title: location.name, + icon: 'icons/forecast.png', +) + +currently = forecast['currently'] +precip = Precipitation.from_forecast(currently) +subtitle = [ "#{currently['temperature'].round}°" ] +subtitle << "Feels like #{currently['apparentTemperature'].round}°" +subtitle << precip.to_s if precip.probability > 0 +items << Alphred::Item.new( + uid: :currently, + title: currently['summary'], + subtitle: subtitle.join(' · '), + icon: "icons/#{ICONS[currently['icon']]}.png", +) + +minutely = forecast['minutely'] +if minutely + intensity = minutely['data'].map {|m| m['precipIntensity'] } + intensity = intensity.select.with_index {|_,i| i % 4 == 0 } + min, max = intensity.minmax + intensity = intensity.map {|i| 1000 * i } + + subtitle = ["#{min.round(3)}\" #{Spark.new(intensity)} #{max.round(3)}\""] + + probability = minutely['data'].map {|m| (100 * m['precipProbability']).round } + probability = probability.select.with_index {|_,i| i % 5 == 0 } + min, max = probability.minmax + + subtitle << "#{min}% #{Spark.new(probability, max: 100)} #{max}%" + + items << Alphred::Item.new( + uid: :minutely, + title: minutely['summary'], + subtitle: subtitle.join(' · '), + icon: "icons/#{ICONS[minutely['icon']]}.png", + ) +end + +hourly = forecast['hourly'] + +intensity = hourly['data'].map {|m| m['precipIntensity'] } +intensity = intensity.select.with_index {|_,i| i % 4 == 0 } +min, max = intensity.minmax +intensity = intensity.map {|i| 1000 * i } + +subtitle = ["#{min.round(3)}\" #{Spark.new(intensity)} #{max.round(3)}\""] + +probability = hourly['data'].map {|m| (100 * m['precipProbability']).round } +probability = probability.select.with_index {|_,i| i % 4 == 0 } +min, max = probability.minmax + +subtitle << "#{min}% #{Spark.new(probability, max: 100)} #{max}%" + +items << Alphred::Item.new( + uid: :hourly, + title: hourly['summary'], + subtitle: subtitle.join(' · '), + icon: "icons/#{ICONS[hourly['icon']]}.png", +) + +forecast['daily']['data'][1..6].each do |data| + wday = Time.at(data['time']).strftime('%A') + precip = Precipitation.from_forecast(data) + + subtitle = [ "Low: #{data['apparentTemperatureMin'].round}°", + "High: #{data['apparentTemperatureMax'].round}°" ] + subtitle << precip.to_s if precip.probability > 0 + + items << Alphred::Item.new( + uid: wday, + title: "#{wday} - #{data['summary']}", + subtitle: subtitle.join(' · '), + icon: "icons/#{ICONS[data['icon']]}.png", + ) +end + +puts items.to_xml diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/forecaster.rb b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/forecaster.rb new file mode 100644 index 0000000..bdfc664 --- /dev/null +++ b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/forecaster.rb @@ -0,0 +1,24 @@ +require 'json' +require 'open-uri' + +require_relative 'config' + +Forecaster = Struct.new(:api_key) do + def self.forecast(location) + forecaster.forecast(location) + end + + def self.forecaster + return @forecaster if defined?(@forecaster) + + @forecaster = self.new(Forecast::Config['FORECAST_API_KEY']) + end + + def forecast(location) + lat, long = location.lat, location.long + units = Forecast::Config['FORECAST_UNITS'] + url = "https://api.forecast.io/forecast/#{api_key}/#{lat},#{long}?units=#{units}" + response = JSON.load(open(url)) + end +end + diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/geocoder.rb b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/geocoder.rb new file mode 100644 index 0000000..1f6e950 --- /dev/null +++ b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/geocoder.rb @@ -0,0 +1,30 @@ +require 'json' +require 'open-uri' +require 'uri' + +require_relative 'config' + +Geocoder = Struct.new(:api_key) do + def self.geocode(location) + geocoder.geocode(location) + end + + def self.geocoder + return @geocoder if defined?(@geocoder) + + @geocoder = self.new(Forecast::Config['GOOGLE_API_KEY']) + end + + def geocode(location) + url = 'https://maps.googleapis.com/maps/api/geocode/json' + query = URI.encode_www_form(address: location, api_key: api_key) + response = JSON.load(open("#{url}?#{query}")) + result = response['results'][0] + + name = result['formatted_address'] + location = result['geometry']['location'] + lat, long = location.values_at('lat', 'lng') + + [name, lat, long] + end +end diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icon.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..f2c85b266c1f3dc0f51adf3a8ec8ab9845b03ccb GIT binary patch literal 17261 zcmV(*K;FNJP)4vFu`>St{sTY(Ujqp4T|7;(io$Zdc%fxc)74Tr zdVHa7SyfbRX?am^SFfq|R_b+GS6x*d%}fW>8eb`R+hWLSl!z>Fm|q&7J&d z=RPxmggYiAG$x6r*^+I|&V(FKXp&8sCFx`b@+34N&`)D70&LkQX*y$0{=*At@qGQF zl3H>HRTL*l01P*J&ns0L1#{G4Y|n2M%JmH44L27VnDrnm4m~j;Rnr@JWx!qu>LMft|>3~z3GjQa=_iM90M4Zq)pH-m_;XiCWF*-!^juzCh;<5AkM zm~aH04_KU!^Y`%=Y+8Y8Y#XLE<9J#!!)y@>Fy3qu8G67T?hQ$6p1}}HfcGQ`?=+GE zg51P^v)M-eaUgN9Q4kvjKgN2OL^6C1%^A0%uW2 z${_P2hF$gqm`V-J7%Z!ITBEcbgsw6ggE6&Df&n2$@0X{ro*G+t-bZS3Vn?8LW@hga zp?cyU6tt=hBiYH&P=OSgLpi{TAvmNsGSHdm0@&?Y7;2?KR%X7@@{DTSN<=COv7 z*57F}Y#5RNCas#Oh;j~GsQ%K{{E6usZE4aV*~02g2N3WoiGT_mg^>`!&r*Ts$)bf3 z7C_U2A(>xbYmhsL9urd7vB!8|NF(voaV4jXYSlvHA-MG92R39yLf;f-dpONNNaLRz zD736SN+v~$>VQKHX$!3z;Xd&0fw|^uTvilRWmE$oX*~La0sYZ8yG+XvvdNL<5dpa z&VF@KmG@vLx13^2YKgdv1T6cpnJqPA^@QTm9BeeINsO|jygK8e<$X3JkV2=#W=7&* zm_gU=$=tHp!*eDEv?H$XFN!F6P9f8A**3xLXN%2!P1#h!SP8>ZUdrKrF z8>=Si;t6Lf6&Nmo&W$`E`S=b&k_gGCH=dF8X*?Fzh_81Rbe?Dho7@;+Qz?wdEUXCJ zZ1$>21gEHQNyT=0M%?c2myQ=da6t-V6lOd=X=$1xtvsoAHm%u18C8>zOpXGm>Ep>G z0jH*()jNJ5{X!!w&IyckJ`f%ZEvGxf$aWn)9 zfoIYnFgeg%OPI5l8+!o+`oa)eMRz>U5OS~KF=ap}c&a6V|~zOkk06z!Z$ zKzxkq%ju`At(_RN5twIla>c57;ePqTiR8+%aXZx+Byg!-K%Tn3v>5&IHl}IdI~_=^ zB6r#ceuvad9ez$Nvr^kC^p(7RUAN$4z$Ae40wWx_OGz`lklKXafVT*UJXzd8bTqo*@yMYe?3g{|{{x zHZ2AX$)B>kT+eg_oFZOiUeY8wOgE_L>04(_)T_h;04^kOyj)u9N-ID{)T%!SjQs^z zwQ)&|b{bL{#`gxtGAhDp5dZ$-ztdpz^11tXLAR}s zKJhkjCY=Lp2teE3aTh5C_n~ZtBn1yyR}vHwW3RV(SWZJLDyu-O?h}ipk)XCWETi@D|cfm8( zUXeTYiFVIdoW43 zA$W#+Pg2|R2;PW8SV$ygcVck)14PWMe3*Pz7+yp#vJ3I5_%Lx`gxG4S#7Hn0Ac|99 z0I{p`Q<9R)pgv7oVCe{Z05Gf9qQar>_~F6ZZfd+?XO`I#;fY26$M^IfIOm4U0FY!? z5&;s44FrX?e~8lpm_onIqu}M$5`g6)NQq@+wMG0E2h|G9z_L6{B1aX?k>J$YQclZ6 z)uU)H3v6Otqu^eJ_>tgH5!6VjB@Bvfls~v%;FtF|etK_hX}|-=7;fv^<~_I8-+Ej3 z^fIS*2nM3CGSGma3IRwIyHhx%5KR~pvMXi-X28p38z6#VIEb)_;JugxW+^#JX%Qe< zqK&jAjw&=2eF!ZWQ?}3#Cs<)@#0-{)mh?NL{8?+m2}a)8hBqf021(w>638Hot9Krb z6rlAZ_I2B{P600=J-P+YHR&}w(wq$$qVT^ZA~Jv>l242_2B=C34Op)c!V-*OLR5(^ zafB@#t09t?q>DsKg*wM7!)2|2K#LSDGBOS=L`x!?-~}~)In+{%<)!pgndhm!m_!tg zwoNAEb?Oxis5u!hc1@UCS~^Gx3jxwWAai(c4;b+=p@Es;1wg2t@YQqKfKdke?7<<; zDC2c8iLy!JEN_VrFAyR&QZ)coh228S1X}ttZbb)SZ(vJp$(c4%hBY!M;~4fs3#SFK zq8yYr0pw)(P?OUeJTR6PHRIS2%0HznpR&QQ!!V4pUrv2FB2&kbe9OgvQbr_zNv*r7 zD+cHqOQ5V3h#`J`;SqF{Ps)yw5zm2Og2a0nF+@S5!YRB-=mt&&$QxYCb!VHEP0EI&!bU2($-VlY0r5L5vQ8^z8 zA3;Syb{tM%N`#h}8lwU~Wv`83lYlU?@-`5PBSUQl!#>W{;^MC?@kotBg&wF1H%c?I zn4{~^N&t?4Wo9Jhr2<4GMM5cUNF1n|FKNLO1BC+*0VM=5xO^k90ecY^OK~GuSg@o4 z6#h?ujv>X=suU`^+QP)^jfxgQL?#wYjAXeF5>Z^WEUL%luyo*6uOb{G=nrbp5LxPY ztQ0U5UAn=jC1x}Omy%+T*gy_W1jNGzZ3dZvuH!7ho;kW<9c`GPzDL0@L?H4MEFqXB zGYNqrAqYq<5oo+xbKsybBYwW>veBx_EU6l!gn3b5DYOh^(#30PS_lzJ2-cN?MO%oH zFo5(G=F+1sV=?Eo%`hlgGS{q`XprxPP(m`+P!(b+c7(>vfTynKmu@k?aD&}2N@kcm z+)mOfI?=*7@BI3UtpMWMx~k15o};)4B>ThylSic z?Uz^r`VQVBF?jVJvtf*W^UFmqhXokShTuc}9^tom4;C#cT8dksrJ}^@#ayU<^)=G5 zI;Fay;|pnumNcQIEnXBQN;Jg53?fK&*yMa5#D1P=A%`Kvn<3PU19@1K_D}+f(1NvO z!ytgT>-f4Edg}|UXY>m25Tj>a?BV*g^xD0qUw9Cg+A_-2fjBtHC>E3fhNn1PGuo;c z0RRAsfzT3pskLbxh?^=TMr^E&XsJ{>0&GM2EFrrQkOr^_ui(x@=6vMemMr z^umHMEN+hiIpy;hwj9YBQ%!p3Ep{|R?qrUy0vHsyX#*t*d|1cjuyn?>N|r1lQ+-w< zOVqrVP4ZtYzKCDI5E(ZU&A61N^p(YtKa2cm&KP(ifWe8Sn$=6&Vg_|`qK#vX=v!yI zKe@I(-AW~W23i?Ce0uS|(^u-7*9E5{mQb?Vs~ry*c1*_LKi+J&jZ*iFQZM+=YPuySQmYE;_s7@2F`6fJ}3WW>&l z30;Ss2%T2Jl@Ok;oXT`k^$z7I#!5MN5E5A3aYmoK4@huTgj`rB8;LTE zftJLG%F3`CU%U4FIsYg3Je{%gjNEgx)t=n3of?gyyrPv!&p??SV|dig=%;rko>^>| zX4b0VTemTo4d6;~gfl%z=`6a4Cje$8G70NNTc+}^x=4Hy8AeFRKwgr5 zgcB8NBk3@awfI+CYXr)@xO5LJ7yQzhWNpLz!IA#=mVL_xI6^DJ72LdsZ?D_Xn4Bt> z7q}>Ft&y}w$pmA_EXfu#2OCHpundpf)7BBJZ(-n}w!o}ir*9pc|MRau)t=r&X^ou& zGl;{TUMzYd7OMymtB6cG3|8x5ky%r@4)l!+MrB~eXeCAd$y5yrZ%xaJnwii_&HARz zJrDut6uh-%KJ=XWhmQ`ve#tcrkwh5subxuTnW@)njYer^oM-mI3=T1In9R_a%6qri zurWj=!jO&7Na=}l-QWA{0n?srOmATC0OmkQty9b8^%|SR8iGxASbUfWOL$aY4h5Aa z%W{`i4?&kgAPB2$U{w2n%3Y$Z=eTL{-d(kIr}9soDQbqG@BP%M^jyJ9=|Ih<%8?;5 zf;WJNF}O6~j-z(Mh0}qCrKO&G-)9fZ7s>S29SndyQ;64zRgMh6=$fH?rXon%REjH# zJQ-B1A>J0%hoBe7%+KKRAMkDlvH zZr)8v0yqwD1u&!&*uaZ_B5hhVHgTmPN<_uAX;9I;yrhyUisO!$kno7(3xNkYKd6n# zeDd(6o5rTHEE!1Vq}1aW9{87Y$z4kW73GUvR3{IZnb9(sNoXde@q|V#2;Ao8%Mu%;N0})J+{&Eg#*c? zi?oT$LlGQ@K7-=)&yXhR>9~qCR4n)Wp8YmJx!X;sAZ54nNTA4%zcmfoKN)l zkp+I>iaXljf>AGhcS+8YcVpA4EqE=>8p(&E=dCZA6sk{k*$O&CyZ|B%f>t^gPzr=(Q8}oiK2bb)#n*|g0X&#}(r8TW+~<}T zU9Sh&q~113!#f|=%*1Jlwm8J}3XBIr-O`oVl>L;rq#V}^m{qB9Tapn|h3j#y9k{Ss(pKS?U+T9eCYbzHRNi0(c*BJKqYcTfIxRac zB2<;w;*Ei>X9j*@WAgjgWz%))F{l&}Gka$DYzxxS0U<(T+3Vj`ouY+KSe*0n)CjQA z^(UjF59vqpiVF5JqH;1B7eYokEz-0Uybv*Zm$lo|d-s3w;@}s)c;9c`aqxrp9(m^- z-}}X{JaEUEOA}kRQavlzFAVjG{@rx)8*?@xhzm(DEw?UA!zJ9TNL)|lRVT{=C(?1!gO7x?)p`%6=%2NVFPx~+<> zdazUQmZtgref2d>>TyXc=qY$Fi429D*hys@y$UhZdS;+S!AP>)u9*NvE2*3|y`-tl zV|7DRGB%2bIxVmvNQbIv$!7^3M6IHJnqAA0IWpIB9x})udJa z9!f}VKX)FE;aSRhF|!rNTblG+dus1`tT!lN%dmpu4}@4bVxcG9v|vzKRi2rB5f zJ}LDSJrG5a1Ay2V$`os;h(K0815TtCWW+FXzU%{carlWfSrWqcAuXT}>}t?|n6{3| zRnuYshNy1fflK}3+)8i0moszC+POw;u32j*G++!IN6bWLH;$QK*_wXni9s{WY}AyV z1d?b7IzkahGJ?o3g26+Dsq_f4wp3~NM00ADIU)ps8ejUT)FaJAw}Z;(B#h`8fjk^4 z0sZ^QWX#ZtzoxF57G1|*IeqDCC(j?gym+ZQ7!(c+Lue(*hF0U2wNtO&vS!Cvqwi68 zMiuyu<2S5J@11vdoG+S0AYP4DrO4pbGKyF6d)VuZSr#zkf}slN1&sD&QB6z9%S6-- zgqEmRDjh;sU4E-*DHAG!=hX9leag+FuGJ z>99H!AI3Uy7DCDlL0*z|765`UernCN9(<`2b4Z}5=rV}(N}P`PNs;q}F~U!dn1ZXL z21`f?e}4GH#||B1n@nunluk{XT7yiu=pKMa!~4;}pnv)DCyt%I=j`PV+`4b?WUCW1 z1Nx44wau&MlFyvVTS6;}Yr?&Kp4mJ2g4r<_OrGJnMzC?L0i`ry>_ep^OrnW|MKKJi zC&{?rl!hq85F@E*DV!8e0LdpuTTZRcvfpF;Xw&RSslyet3?U_a=zCB9^%KX&W@eik zx0rep-otzLPV!U+gDFiLYu47MW=@U(vug8yPoXMFLT`p9960(K_}5isW615)uzcA zm0Xh!{dM`cidHasN*@LU5ug5@N>7TM(i{Vsc@~&M_0}YO?C9zL{^YT#Et~5bHZy}= zA=N|XP}nU|urFX}V#}7r^R0J(_lf`diswuU0#7+J z4JJSkDq4R!CKO?*#sp8~04E7c`3Dw+T^a4kXn=~XZt(Cz=PwRFJ+^5}ee;%b&ECi* z1L5Hs!$DcyX77rTnVB;lAAR)r`)}DrM9j+fFe4$nWGcDyf|JN1Tx0t3_33Zj*l4F1 zICy5y@E(163xIjkgni$u$KU$57thY;DOf>b#Yskji!zmu{*isWHfB@+C-*z6`(Gen zgmEMkF`;r4I8h(yFbZHap&d1PY0JEJ#J*|F{vTuZ=SJ*n+vb*rd3oJ5C{Db}xB9Cm zj}6AgTAMdByAli`+KZ0a5Yw>Zim}<5+l%`B=jKHOYGnueM(tQe9zv^NtZkaNUEio# zEayCMTzGhneH2y(yms8aW`8p;g0PgNG_$Y>l!#&wCfyJ~tH$&u+{Q}*I>`^}2ct)e zLt2z5JNmiTa6pf#2|TB1p4X!1G|a|~#w_YYmc+a>!7*}1j}dPf;qisecNdl?uG`Oq z@MNi~$qVvg3OD`{!+^Z=lhdEOaOL@P<8fwIFt4f8x;l;wkcBB8c)n#Wooi6E7*vJa z@wS=7+W5jL2^2L#PSo=mL|6uhM#QlIT44%_vX&AC1n~(Zg(|q&Au7zI<_#0(m7``y zo$5r6xL|n3K%SJVDy5ZM3f%t8`N8DmSi8wZ0Ryo7q`rj&Fkmkaa0u_q^~63}G|qMN zsd`pKRYUUechzpP@|lA;L+iLrHT&6L*YGh;83?uv+EcPDn|u40iHR$ z!d$*8|HEP5f)|qd(>c~OP(;7l5au%H^)oFm_v6bns<*`A@X5=Ad{ED7A}r;=AU;f2 z>xG#*l%PM76hbEwrHVKdNI>OW;@t|M>+z}y`(L(azqU4+NwMs>@4-M!D+U+8#6SVO zefPE>8*i^LI}=&Qg2p}h%DvY_tuNyZW>_H{7)Y5$y1}gdD$_3_$>zM7~AXF2Y^rK_{)LsGO}K_7|_42 zX&BxkIHJtbq09YGKDh8}FWT5GC@&agos|q=j7-myXO`aoHxHg&^ivxe>{!SssWJ5J zehCZ$EeHvXMQB+&|kI8Le;9#wz)z*vVax~neAaV=h#}8B1`7t&0qF$xnwE{dV`j<2nCtc0#~wX%X@23~ zzF_;@NSzs-ezDvu7Q6YC<^JX6{>6pfQ)d_NK5%w^IiFg;JKV+0%JT(I(iepVPO48; zgVF+KUDySL7K6GDDX?q8+&X7(oU)r+)XtC)sXMO;2FO{=Zq04@yMu?m{P>+4$6Ew^pVM+D@Aiv+ z-xaxI2Se1Tw#0XW&ToP502)dp!gIBCeUbop^ zKV@184Ryu?hd%fR1fjR^Xb!-Hne>1gHqTgn>o7JNe6UXM?%|jVItxhjK47B|Z4x$Q zgWNPc)-oIMerIGkJQpYIJW z^#{54sWsEJY_?vTsb_6M0rUaBHn}ci1L1u&dPk2hdt@Q&(B*T6_EHX*N@#1%g4(YW(GM)6X3nNeSKXm&P7wg|XA%oi+2@J?|MtqI^XHB!;QSd}GVbCRAP? z!s?T>lDp$e{j_b>uLsMgmET7WO|e0k}<^XKk)(fnYUQpXu?25xc)`dR0y`GkE0Ol_g3i4Y7lU zgo+psUL8Sbfqm#y`Y?tsnI#pmI7q__&ob41OZr1vKd~cu*DWin1EwBz_XN`V&A}LgrUF>1bxc$V%v^6CRd8) zfk%+~xEdTxVgxC!+y_oZVOhxhJ!?#M_76&nwA zM!s0*h+t5;z6w0-xBYnCu@SY^u+N(~nJ{_us)k;|R4OTA8B z4A_m-(y3;)b)vO>qP4l5J$kwG&f6dDB-!+?y{6SHZ)PPu9~_000UkRKqOpzZJMGqQ zJn__@@7cAz)$E~qW1!E^wq2G!IBGwa(qAkW9fo7<&&<0gldUPO2racGguj3MSg+P@ zB`N1lYb)#}wbBan02AQhwbN4Ygt4$^PNYtV;VzC0Szd*%VmL-Cqj$V08>^G7qeok6 zDYH0qVdX1_p1Je*#nX!`D}_U1$PgulnL*wdo^EE(UpH}Np|fPNiCz0lqc$wD6S$g< zD!h@JBhI-sF}{c`?|=IE|GjrtYOPzfdfsCg;9oV(wj}xJLUB`S-!x*IbWK`~gdV%F z^z~yGM>p+d&)_PdKtYm2k02UUD@s_Q3HgcL`%G5j!og@x zU}9p5WJ0nRspWojV*Gn~@z;X9$5C+pVCLC(mId>edcRfb;tPgdkzm8 zW9?>}^8$z-5{5LWI-xi%8H~_!qF0jvM3IFI8ZZz}>lL_Rt^LWp*~&GvMf5DK zZ$CNzpKg2N#FftI)a2a8waMrxrD^%>Isy#Hf()!3&CE>8Z}ePHR$~`v2?16zk{dmO zTjS9800A^)Ha-36Q>T7>d1Xtx*=JO2tPc7N!|1EwI3~h>d+g+$XRgfbx*qI-h>C1g zf)i>C)-Nd|84w2VB|(QMf=m>$qcY-PzyLpYeO61bk^@vhtC`W?K5+I!w>`mGHn(kW zIx!7P4A0JinT`7TTLzceaFVk3F!~P*vf@Am3?Rm))eTtB%QLf|UYLJ(yO|IG41j{g zFT|T)g(zbrr8`g0|Jl8VN7rt&^(NEsrnA(1QIzG#uucFc>LH%Kpa6pH%%sQczmsm^? zRL2kZj$3K=4U@k4!N=Zz_^D5yJAbO%uM_G7s?-`|m93T1!ONZZ-u|d-jy7l3viAu8 z@qU3$&Yi;d$|S%mgH~ERRuQA;axY<_R-Vw3k3x_X0xFJjWavXK2Vb*0O>K4Uu9@Mk zrxyPBtB0Etvtyg~nzY8Q(4}b7QI*0YO@DYvGZrwwD$JZbUOBy{jn=j~sA@S>yf%{v$b@8MA}7mlAhk^J=5`p;}_ykI)@ zo(E3HhX@_^)lt4jU?!T=cg>0qlS+qXBZ0F53CcY-jG5$e)YQ9 zx9r|Flcg&jtINw8Y8iavoSQnB2CPl8g%nM#0=P^!DA&SIlOa1%TY)-t&Wx zJhXK3O3^gXpCl4n$E+GyYfC0UnNSa-Y@O8ORSO@7vNI^?`RnaOgPcda)f0U3?vqF7 z{p7}73<7&?-=puORu(ew^DKD62+L^<&njm2A!7Dn3cNHp1`{P|GBVm&zj5X{*SB`< z`Rsh>m+pG#q4}kDwax@~wdn#(GkeFszN`6~b+w#%Ie)ed zJimBN?N44d@%*`Lx$n6G4?@#SHW4A&uF{NNrNrRojR|vQ%7x>X2LJTP z*~#_W$kyP8w0s1NujP;wRB=TdoS2LZ$3h<*qtdhEJ)GylabCb98=soH?uPSIb8o%x zv2QUl zE-v^u#tmp#njlnvK%m8>sQ7SkwL%h_8sX3&=eVKUVL!TlgWt0AcOO6c`214C(zRUJ zEo-MHH*ali-Hjw+7gn%_?{VE|k{S4_yCo8Xcf4@??Kh9o&`t&tT5ui;q&TfA3(4|K ze2qtzlH>0kg!5QCVy2pKk;I6oo8zt{ms^u-IS307b1KS+wZ$^s(!7`r`P<|jI1EbY z5s+wpKE}!Lo(Dy1e4@8$`}-e%dZC{uCNN_)^|!8{-nV7*z%iUxQfAm|Cjf=#Ug3Xg zU+V*}oE*)laIBqoWe^YP%U&5zS#FMk!_Z;zWMFb0>qn`UkY@!8Kw@xazIS4Y8trj7 z4}qks6VAKv|FP`MrS_pU7bvCV?1Y4MuB-!=FK1Aus3-a~xub!j#?9F<9i@0O^49Vsv8qi(Ptpv6C5! z&0@j0X(Xu=vCsk-HADBGU%Bth!boPcyi{+o?_RdG`P{YHAomaq`V$7}YggwLNY8O7 zuR{-}Fyj<16xXh>VudwZ>ih4gq#c1%MTfQN_*qCwQp+xLCGv-n<{+3Ta@cBniw`#^l z(Pr4l_m)xehEM^AzFK-#4QhqVMAvIXs5sCXb`0W8NRY8aN%XB0q%&m-cw$4xffFV<|B8d5USY32pVA)35!F~zMNlLWkDH;?VAwgXwrpN=rHq; zRg_I?{W^>Y!Ca)@rp@AHCJsr(qE9?gYG?xO-%l{$7JM3J&JvO#^&tKkm=3W1A z&r)yD%%rYEgz<*C{qeK+KY5{MtyqPsKU^`3o0O(jp%wZRAQ?bsU~;Bs%#PL)B3W1T zA*^8nF*DS{kCFd$=u4@I%X7k;ct%JR$BUg`_{3iPW{!L?|H-XuHQ6)P};riv1k79A0JF=6NU_PAz*Yg z5%y6)ug2NL3;$7v$^$N^Yre}|<;Dt!O_Q}&W}K9f2x9s~D+JLNiFXYelGr`cRyk8) z@4P4`4C+=DdN{964jp1F=FF9W1JE!aR|qY~D&Hs^n5H-FJXVbU+F#xMuK#i0fB(*t zAN%H!w}1S*|L4cGHOO&4)<@fLL1q1yK^~8_^gLkyYKX6ZX^t0Ai4jlW!eJ9|&HMZ5BXiRJ%B+O2+fwGNCc3xK(A#yYT z$HEGIqf4}9A@R%tU+E%_?LDKJ(ar0UqF{*qA@+dx@VaurU{COX&Z5}I(ICgCfmxR` zLdfodmvTW#j)MwACpb1ym@BndCnBMx=Av+(#fL%tAj=^auGSoz-m-6Y>%N)Id!{x& zr#Z8YC}r<-$S%}{kgAA!$?;iQa&2u9szwdr@*+Qd!Od<>ik!6?dEn^fTg_(<`Mxh{ z2jeI{41PFn0E9!s@Zg{=@m|a#Z2+Y2E+LMp)?9Yt%!75ODkNjaYf}80VWt5ANu8C34`Ufa4zox;$Q>SC(7&lB*hGtkYZyI(^3f#2f3pL zY^fW^npSw%3(I}54GCW~<4#5bNYACX5dg?OE_P^6(IER+VN!pppv4lYrk3tMRxEXs zB(dJJxQ*dH_xLya?A<5%QrD*m5R^oo*o0_>11jPnzW~zXDlNfa!Zgc`k+HT!g0hb{ zNoyic=HWcgrnI$TbB|b>&g0ZV&(N3{UQw8bkc&$&5Uq#-3@z@n&<*lZB`Xs-u;?HP zi&KlIFY!aid-WuYYmu!T!LQt8%CdtLx0rpj@WEgPg1Od~fr8hO*{Nu*a)c`*!_Xj} zEcm>B?r$DVrczR?5W}u9wA{~+&i7KA1X?1aa43U;kQZ7?Sjr&B0bx|j)(e=C8Dvy% zYH5IxeCd&{XC^|ttqkyetN5lHZ0;l|@Fj1VeFl}ZbcHaEHL4m5n=pwIUjz*B2>sz+ z8sH@uVaIjgf1Al%g+)PX=)`>I%yN+$D{t$?5^A-vE?+^LO0Sj2VbF(;1R7dfrF$O& zTOF0JAXiV#{U_+5qf7OS^p8pmzjuZZ+=KT7ooR76WU)(rbx08{K_X^KQ4B3GlM@tU ztmOXXQ`!E}r0;?V^fLPW$1nDf87846vkaMc`M-%u)Cnwrqf9Xb`XQ!|d~LXU1*>da zImkr5pyns;xN!ZJHj!bDtSMn-dD->1^ zDB+?IJTWaN+7f0l9vKuTdd;{WtX49CsZT)1jlI?9jsT!F`X1u2T`gXia{G7>9{BUDmvQ0Mp|g-c7gvVyr$@=iX#Ao7e> zW}dq)dF;Ha8M(M$3LNZ9R6~kUsZd&6+Nh)@DQ-+l4-7mH3f?vq&$v%cO+sI-KPcxz|$`G-$`>+t!>E!Uy&;#?(~m7GkIg96}I#luQ!aWo(P0ErS~ zGpM!2k#P(Ll86Qc9y#S+vctrGbYAf8S@W{3=8K11s}4qqr_>WjgarsKuV@8S9Ib@2 zU=v7!N?UWT8`?2qc8u5;PG>hvrsEm)9ItXac0DmiFRuLQS08PR&)Kxat`H20O*O5m zhKQEeqSUvm=$sk|L5Iw96)j?_Fo&MQ_q8K2^uW`_(k;eX>pd&bK;iH+&$V|S_scn_ zNvZJwDXJC{;91cEU^J>gMLL>UWyH}h_-)rWU$?PN!_k4`PQF^`pIWmrD1PrV4_xe- z>9y;)aGDmEL2o#$w2cubFC$JLvdX=p2I-(8N+hK%f~FJP zWY0z6e|AT6B&C>ETyo12$IaahBAWHHo zL<|dcDh5$^MR@Jl!sH9E)e2MrU;rio`f#j~nY*6C?bW`%HH#T-mm>Xu3;|uQg6N8aVBGq_RB@X46bN~F=>}@xU6dvrwT1Oiv)-*G7 z-_gsz|JjERpIw+*w>2A`_c!a)a3)MjfheK&zOuBkW7BC}$QDg~8 zqUJ!~h`(~&tR>$$ntuQ0#Gkl%W~mEMh0Zzye*Omgk=L8AA1S_exHxjzbp{{;875O+ zGf#xk20d?$eeJIFC7V(rEDks`^gAzVHY~n!wBJa`8Wnmdy^w^3ot$61F8iGqjB z?pAab)AEAT#WA4_s=k~rkbo#wM5spVTA~LmI93>kei-6V#t2qYtP*o(%!PdB1Aq7Q zhktobVr}8BkrEB1Mua`H_Bm@Thp5UBtN}A}&$;7)gT8={4dLhZ*Kb*${^OzE-KPc@ zSDa@U14B&ZMTH>nWYfHIW9^N*oBO7dUcptg7<~1c=<`qAdHhQcoqXc-d|InbuiKW6 z%n*nNg-oJHAQxXIrTtKK1kce5s+YJ!v=!ut>X=>{IH^vV*@H~rC#XO=VkBaO0q;jf zM(#T^@`rzSeGdOsmIJ@i?`rb3f z>t?QH_DrYGU6ZaGu~$!q+T_p>CD#1mXCL|Oy-$y}TNASz(~)UoGcFv<9I5LABZYBb z$?$=zD_@ep&jnP>VSLzk0RXD*m4fVJY;@~850_uWK^Dfy6ZMRd4nw}dqs-63*9|a3 ze*wYevq#_fJiP0t_FT=w#6hmU{V>m!O$=og1QZ?v&&EFnXfL;xRBF&p~zmO#;!bBPVn#! z>=SJ(7^K4wX854CAS{_w??c!qcTi8R+4_(79lo^q$a~+kZ@iVP^vm&8VQ_r3%K3%o z!izc$A+n;^6zfRSe))kjfA)n(N2fN_M%S_{xX8iUT_J#h4iUu+#@)Suk{+dp&N zjXOuXeH4zbU9@DZvaLos%o~g(Hazsm6MIGyV zHB#bYq2%PP(Wz(V^Do_X zq}%s2?{&_uO&>?e zkVl-2#h2Cu>lZ}k7#!0IG8!H$oq1O4VR9w|-fnvFTL46lJ7?*OEJ$XeJeeaE27n&* z);K4PyB<36?T1bSX8ly-``E0d;BGmZ^w1?F*3>h~QnH4eNA>mt3#(bPy@C74=MQ}J z^N%Fi$mrY-f`OEgG$B{^qlzEH#~oITMOX}nU=k&6)U+zD=8$ozAF6we6R-!2e*TPy zF|rH;!007*gP^B?Gt8Ih48-2m8soE@_dj#_^zVP_&|iP~$yeOC=0|Rr+qq$6yq#D> zUOq-3$k$xt1uiZ1A3JvC&I8ZfvS;RB+_V-v*`10HNd zE$o8k%a2_7w4gux@ppmIftcdj4VG}jty zXCsZImYPoAb$Z36#r~-aokJ(D967W2%zP*J^!e|e{ObKPKl{oZH*A~C66)t%IM1td z0<1B$jGV{!j?e$i?MJ@;z=_<`^qQ^N$SgCna~cu^n{Z;t$2z{4&<98&tk74S1fkG^ z7(HbJ!$^1&<<&%C@wX8WLB5I6N{B&WIfRFe2*mJVbt4E%p6(**^JHu7iOsFCHFkfVl z*XMm-^qD=gBQno!HZy6>BsDTA{eO*}eXis<4#P>Kw*TAFTJ5O|C)yv$JpAWQbBHj`HDQ7~YDWkJAao~w1A|NQwc{9v7Mh9^7@%)s zgIuBHQ(3m3_S0u%f8Q9y`O)tIM{qcpA6j}4q6If@ZAi2u@@epNuF8j)N-6-=22J9w zQ5Z%HoBZT4%6{Pr%zyZyuw901RV7jPq_DgdOzUg3feL2U3M(`l9uyi63u61r{|zc> zIymm;oSLW|_r|zpe)r3l{H1}Hg7X^KT~aAx1hd2gAZ1~<8cZ2O3NGQnHhgk3a}j8A zj+R?n-jWt(@z)x9P#xdst9gQ)7(Wu^h;Mj^AbhGoCL3Bl&1e~enMk&_blttjVeh&> zlwmxUmoa4Os#Iq(^KMdi0aCW#BjJjN7+{4WIJ8h561&7Wo-ex$A^2@ntqF!`uC<1H zlrgi?rxPTtY{Y3(RjWsEcX?QbL>oquAWK2cAd^!ib;0&7Ku}QXOh{Vq3ad|Bt`TNw zvA*E3zeZ0(P9T6Wik>#vxM#1}b+8JM6IYY>`qj!6829*F-I4G7HxD@00Zaq4{3R-d zjF8y8W#o51Vm-IusWGs$6|FZb>{}plFbhrxr&>%ZoTsxMJ%KSr62>4%g^C5}z8OZ17`5pi_P@BWHW>PHX%&_NM_<;hct4 zoYf7XX0j|mW5oOHFUwJ`Hh+brr2`-#tw5Suxfk(EZTXFts0h7_$vie-U`0ag`p^a{ zuCQneXd7@=b4b(|I4HHY=8iFl$jNdpM~$RJV9~1IX=&}=W9FW^8EuxGnb$_X=!0Ip&c7PsPas!y#6%gzVOf1(?wuB1zuwaU;wB~scm~J zLt7ug>6V%9hmzC601SgzN!pUS7Zg_N9=wbl0~d*u)TU*?AE2Ok=x4wfn+p?PcP`}X z+zd~9oqmD2OHFr=2VkTe_rxIDrEI)m*nUqXz2fxI`AZ!m#wAh3Rqc&cUjByuV_AgpkR4fH7V~>vnyoDA077bpD_)W_; z|M$jWr51Ipu$$2do*nfqzm`z(_JCMHXW-WFo2;Ilm)%z>`+#ziqNS)nu z>DF72v%NvqmE~t1VEwkpT)v;EGQ=JR4jN)jiw9dqJjQCxS{>GkcnkTjX=&p@#-AP5 zelNk1#^$jNU`NiCtB|5WDhaFqO?i{U8chLbX1?WBjHxD^y=rGKLo=ii&|l4+Q&LQp znGyHW#;Q1IJ0}AbrS@hC9}+e&E9?!Du;L!z_C<5Xd5x1l3M-KDHU>EiX074xH77D3 zUiD*J^ZbAJlW>G3rnUh|{MdcI=Md+zsXv87oC7}X0S?L2(SYwtfPll4Awz=`lt8!=9UcdI06n{B42nYA({spka1IaA+aVu=z!+KkKoYC3ydOz* zRK@zLIJe|}QN+WEdKwi_(vhZ>B=!(tFvM?M01Uqmo9l)|^_K|i|5#acmO=r3+yDRo M07*qoM6N<$f&kqY761SM literal 0 HcmV?d00001 diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Cloud-Download.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Cloud-Download.png new file mode 100644 index 0000000000000000000000000000000000000000..4187ce2b74693556ef61cbd75505babfc9eb1fc2 GIT binary patch literal 1531 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 literal 0 HcmV?d00001 diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Cloud-Drizzle-Sun.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Cloud-Drizzle-Sun.png new file mode 100644 index 0000000000000000000000000000000000000000..bc475f411d7656c908e7532ed5a646d09d3f97cc GIT binary patch literal 1354 zcmV-Q1-1H#P)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00002 zVoOIv0RM-N%)bBt1Z7D?K~!ko?U`F>Ttyhif7vw`ldw^&F5C|0`(Qy#EQoEe6)SB;+ElHYz}h^dH!2!p8{61q zb9~s@FK5nW_w1b6L`weW;hg<$=RY&wnQvwm<`9fz8Db`QfM!n4cGGhB1P6z%*`@(d z!z2z4r%QKDSSM4hhQ99qKqdyRa57oXz073l*hz-&5Z^J50dOG1yPEA}c;D8fvIz$V zhmS(&q}fU**Mv~{Qh7gVhs+igE}Tvnrl~kQZHG)VCneH(W7hPRvH=SEJKWFn)B-Z3oH4V1E^(hAd&p_0aa1LR2aOvlABmS ziU~$I#Sk^@X0>Ru9ODcLT3GCgzMDswvfBeG+S$XH*6MQ%$n&4Pz;$AsrpsmfhD{>% zbTe9TFb>n?^SXsWrJdp)TU1uLCc3ceXIcY1n`BPfXNO7$SZ@pypu z3en#lpGueObt7zHsVgy)EaN>_W@Kp(h|s6Bo8nS=*7c%yxHiyc9y`Tqf`@(jcBT7D zBneirUS0P^rLvTNRiN{%DQLNY%hG#kkFHg+Dvur7@J8B6Bp0%XrWc>`#q84`0%xA&od=?b?~BV0!Y*8nuT6BCv#ebxWhaI0E?uQX1Uia zM1_=qR7^5(gVd)!vjA5s_wm?N0PdHeT4L5S`H894#NCH{ecBvu621v@7*$UVG&o?7;MBUfsNasjO1wZt z8!{u49j0|j60WNc=$WlrcR@xere$*rXRLQrQlBwsM zbZ&mZeuzFEHf=&afsZTLqTMw_&DVB(>nAV@*+iV^le({@YWtZhlt&q`kWQ=}IUuHD( zCa+5E@eiA>pHUR6O(h`y*A(MFN&95HITQo27dt>R8@a^0HU?@AbC|;wi2neQQ+E7v z&VTs;001R)MObuXVRU6WV{&C-bY%cCFflYOF)=MMH&ik)Ix;mnG&e0UI65#eKEKe+ z0000bbVXQnWMOn=I&E)cX=ZrNS%G|oWRD45bDP46hOx7_4S6Fo+k-*%fF5lweBoc6VX;-`;;_KLZ1^ ztfz}(NXEUl)BQa{9A%E%?|jj9D@t*qSc;2F0?Sf?5{-_3GD7-pv6J{%WtEmVOT?N8 z|8i!X%YA59#EkCg1_m7)Jc2y9IM*Bq5InPH%cVQDvSnp8pUdv=vVOl;^i}Qs#Ikzh z{r79`y~%%O&b_bZ=clKqr|ZY>`{%2B`NPRnWoZqiL*Z>dH-x-U^t*7Br|sp;1#=HS zNf%GC)b-Jnc$VH{%(A(4Q~&vG3Ln!Oa&J0hDlGD`KF58islNUG!#x=1$Ap`G2=9zmWTB&Hn9_=XcC1usV6M{iT?rU+R<6 zzRhbU+&{G=!>U#9_2Hf_f#@&J3>!KfcM58Kb$W6_DBz6%+cg87B-^Xp0Sd2srEe+M zYppGfi;xWW3m$- z(huJE?DcM4t$HtH?^`br^k%JuM9ikIyW1NbHy@4CTU2|cnbSaxDaJgqd68NFt%|4J z{{*}DMjd%|vAOZH(g7LKOJYLX^3CjyE~-D3lrQ{EdY6G~Pq)B)jm@or#VVFQJNHz{ zUTAHMs*E^#*-~&>=*fvG29DhpMd^nTusM+WaB-m`i6h?;#n)FR{A(phx9bP0l+XkKWNEp9 literal 0 HcmV?d00001 diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Cloud-Fog-Alt.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Cloud-Fog-Alt.png new file mode 100644 index 0000000000000000000000000000000000000000..24e2d6f6ee744f11832e2278bcc850c5fd5d3a44 GIT binary patch literal 609 zcmeAS@N?(olHy`uVBq!ia0vp^ZXnFT0wiy%Yw-gqmUKs7M+SzC{oH>NS%G|oWRD45bDP46hOx7_4S6Fo+k-*%fF5lweBoc6VX;-`;;_KLZ0} zji-xaNXEUl)6Q$V1WL5Y@4ToZqPkxwbJ8M_r6NmzFz38UOH9u+RPEh5Wz8Svuv1P_ zH-q1#sowNz_B?xJNA%>G+1wqzG^4FsYo|2?}yeJ3Sa zG0wO7&T>}L*0C$Nrb+*_x_6h$;<=KkbMH;qtMvPh>2XE(BgJWr^Je_@irFPwG4<8< zDKo-)O{bsh+2H(I-zx0ng!0#Z&K*T*GtIi!$&0)=y!ec6>dL_BN$ILK&gM&APAX74 zyXM5gxSM~AEsZRV5AIkIc0f|}_M^kQgg+O*oylr@IIb}{Fg>Bek?W9cY~raiU03tf zyJY&!Qu80pNS%G|oWRD45bDP46hOx7_4S6Fo+k-*%fF5lweBoc6VX;-`;;_Kak_= z>EalYaqsPP`-~7nndA21{oDA0GOn(QcwPUH#nCZ9gmrb+Qnet0#1p6J4D*Q@#33Ti)ny7yG*{-@t5o=%hQoA3Xv zrqAA_z|rJz?DDSMCmD;KCVJK_-@Z5OSA}n@!_>8zoF@xrM(RG!&-8QmGXC!5#Kd%M znc~ukAGJ8W&#b;R(d5XTYfg2AbNSptUSIn^y~xRXW|BI?^N`={*)?qEHq6yKSJ2g5 za*4qquC?xbmFcR^^Q-c&oM+uM>9fs}EoT-O-+4MKFVuQT_;nfa2w!6f@b6xpa#-rPdPFzlXE7N~NMk+XA^51`Y zp|S4@Q#-jA-hA8BdhColYuEWRVr>zD&0ma|MVxByekqJOK5Ow&JL9~JbdS_$zE>vf zP%fY4)_ow=ZeyR${TYjv{Oa1W>Q>9$yj?=os<)i=UoK?5abnIZYe~^_Z)V2v-FT~X zL_F`(S{I$7iJK;e{!Kb{Ca>t+t|P8$8Jx)*X&!h=Y6?sE@I<(Hr67x=00o=IO>_+nbq&o!j0~-eOs!1Jbqy@63=Hh{UpRxJ cAvZrIGp!Q02LDGH1wai9p00i_>zopr028NS;s5{u literal 0 HcmV?d00001 diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Cloud-Fog-Moon.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Cloud-Fog-Moon.png new file mode 100644 index 0000000000000000000000000000000000000000..bf148f9b1503a0b92abebad3ab7cb845f85ea6cc GIT binary patch literal 879 zcmeAS@N?(olHy`uVBq!ia0vp^ZXnFT0wiy%Yw-gqmUKs7M+SzC{oH>NS%G|oWRD45bDP46hOx7_4S6Fo+k-*%fF5lweBoc6VX;-`;;_KakVq z>EalYaqsPPUk{N)iR1OzL2d!pqMDqXR2CjrDsXJ!cpbvF@yb#^*V96YZLWdK4>%_X z1hRMgT|BGvf_YJkNz(<@!_Kl@i!}b+SYi76#+kW%c6-j8dw1^LzRj;=?)|TxIrDjP z-RCpL=g%}u1OdTDqo=%=d?tuY?wR=I{ikaMP2o#6q~w0!R&i*_=Soft{n;FJRF}P@ z^{AD7z%-)_=O4%AZ)SaFezuEg=2H{Lyc2QnA1&UZJ*99K!wvP{oY$s(J~Gv0Q?tQt z&WjGL42G6p)vqd_o-rZ$?^8(yZHp7OX_ur*x@OOr{I=4`?7iO8;;E-DHR(Lp`KaUH zUCV2sB@sL=aoZHWrBll*9dvZ8WCM9?0=J1Me-Tjhx+3j0W#^X3exI9m-+3r`IrI2r znKBo%&vwi|7mH7syv@ZpW`XN0u?0%}qw?`MjH7uhVk8ngLs zUqM@~dVfy-YR}jyYIR;+@o&n%-dUaYPDgt4jqI0#zh}sKH7I(1n4Vj?_qJ!(cj0ZD zx^1^?x|Q}`ID5XFPrKIJiA{g{Q%zpm=)X)64RCkrD}8a0$NR_QCT+_Zjme3E&jt9e z^j!P3B4f%jZ&AYyPL=6_F6;GMsV@`-+KzrsCO&g6+fKoS+Huwip6sl zy1l(x9QU>BDF3T30S~q=$++mNaO=p9LpRsWezIF7;=LeSQ_X}J<-EMS@(+sM3^P9P ze4c7>cT?>7^z%P^{)8O3dM)hJ{&|}7Ua`jMJ-EH@N2%v}BhIjCJM_3CR~OIJiaC^& z>d<)cj@tH9S1wHbYJ9T$UeUygNWDuL8&jV3_@$nib5hkfy=T+OGm>*p&9I#8opw$_ z5(s`S{Lh&AFC^mp&m3SHRV{IiC`m~yNwrEYN(E93Mh1o^x`u|jhUOtghE_(VRwm}U n1{PKZ26p=|oI%l$o1c=IR*74K|D%iopaup{S3j3^P6NS%G|oWRD45bDP46hOx7_4S6Fo+k-*%fF5lweBoc6VX;-`;;_Kalg- z)5S3)chlbEy&TDlg1Y*Co8v%YCyPLPq&(Ve<`is#&}cz$d;b5L z?{|!u?dtm(O0Vc`?_e=EFvy6^ll=VWz<~s<&z+3CNj&Q}ZZ_%oc&1)IP48v!?in#r zofmwzo&CYhP?hVpIaAF^d#90h{(%Dr7Tk67Q}i_n%urr>cg|e}Wwn&H&C`>QH;FV) z=$T>a5_)1=PujMXm4Qu0NeiZQaP7YObxm%TU(2PVy`K*Wd@b3`*|Gf17S@o!BRtA` zp07?#>9UA)m{QfYq-N&wmggTgDakUG*%VqjbjDE2VXb&;yf=DvI2> zQzl2nS#5jrAtO++vuwIex%Q_=POML#2&*462n@S$F40u#Id3z|4TsW8({3GQOiPtL z@z}zD#)dUjbIM;;HED~i*xkMJ%o3^Hy03jy(>2N@{+|rB`*Sh;T=3Tq*Dou-_I<{} zIs4w1<D#xDSyA(x%;#Wv#bcs>%S#uz9k^d>T}@NJ6nF-oD}fljAD_E%KX$BTb~%5 zi%xRTyUgIT`s{n_)sx=MSFx|XP`fVs=sw!aF0*4L^YT?I6588(3gxP1Zj1Fk+jCRBWYtW@ zcM)|>Ck=Gu0{LH-O|o4heC~$lnb%kLO3tajyTx(&;iz541>%ZjoWDNJkc?cs_2Ij> zo9EqS+SyXa%Ch6c8KKorg=eSEVO;U-kI+B8xeqScSDgF$5e_0Bm>c;&o@VB@Iu)4s zRZCnWN>UO_QmvAUQh^kMk%6I!uA!l>p?Qdrp_P%Tm5I5ofrXWUf!+QKXHYcc=BH$) XRpQp*|0tsXsDZ)L)z4*}Q$iB}3}>jk literal 0 HcmV?d00001 diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Cloud-Fog-Sun.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Cloud-Fog-Sun.png new file mode 100644 index 0000000000000000000000000000000000000000..cbc7e7f776f5adbbcd10e01b53ad4da7877d2036 GIT binary patch literal 1032 zcmeAS@N?(olHy`uVBq!ia0vp^ZXnFT0wiy%Yw-gqmUKs7M+SzC{oH>NS%G|oWRD45bDP46hOx7_4S6Fo+k-*%fF5lweBoc6VX;-`;;_KLZ1^ zvZsquXQz3U1jaOPITCPa`X&Pv0eyZa{fn-<97Mhdr3OkQO|<vKJi->h+)bN_%*^}f^p z&TmiOS6t?3SX-g7Bw?8=%Su=0$8UU2OFU+ml4=g-|Kj4<^US2&N92gbv;E@6tEzi< z&9J=kcyU{VaJ4pruG+PTtPg?ybF7W^ot>Q*Uv%l4p0(=ZERRf)i@)y(7P~Alo}PSc zhe)qi`4N?e(>0}+iQH6p{6}S%GTWsOC%0(lx<5T3A)k4ywb;r0=pAKYj+W9W{hLb+ z&baUTA(JGj;=uD@`HZ~nuZ-NZ%wH_=F`slKFz(dN?4D0ExSqYV`F8naY0zEKq$7M) zrB27z`@iWuwJh07#<$I>>AI@WnRjZRMtIaJnA! zep8=dxwgUd*gH?6PptV}q5J;#N+s7S{Y71jnbz-@Ou{K(gkxw#Zht3*x<*A#3&uKf%JsG!WLieTYDVGd>hb304xZ8+qbd6~( zTbk1Sc)vraPe_-?!HRmFu5jq6ps^LQQKwf`_-f1c;6{gc5YILW)G-C9Jt zhhLE2!P+wEh_~g;NB53P{!;Uvt16b-aCO@fhBaH?xQORG=Ui;_MskC*w3PCei$`>= z)V?hDJ$E#wuq4X%fZ?R4yN}MfP`c3Sd6HGktJ$Y3RjsG)-J0%D;5Kpo8KIYxeotl% zOMh_t4ATPjB*XZdeyuzFi+}%FJtNI#+BT-UikD=oDjw);D7&CAYmY=28xsUl=5L zHT_ILt=qx?4H4sm@oute(v@dSftiRwwZt`|BqgyV)hf9t6-Y4{85o-A8XD>vnuiz} vS{a#InV9PuSXdbt*zLb?21P?|eoAIqC2kG=k1`5?8W=oX{an^LB{Ts5$Q`;k literal 0 HcmV?d00001 diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Cloud-Fog.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Cloud-Fog.png new file mode 100644 index 0000000000000000000000000000000000000000..b02b45e6e41b7ae08393729374d336e4444649e3 GIT binary patch literal 695 zcmeAS@N?(olHy`uVBq!ia0vp^ZXnFT0wiy%Yw-gqmUKs7M+SzC{oH>NS%G|oWRD45bDP46hOx7_4S6Fo+k-*%fF5lweBoc6VX;-`;;_KLZ2f zB~KT}kc@k8r=8ViNt8Kmzk5l*y+f_1#ZFG`a0={O5@QkI=OrYhYHqIT>Ge~1i|a!b z)u65-K~=pu*P>fCyj|CP++_CLjq~Q-)ctFBJ~eIL{nOunntsl85MXfxq95}sOo}dj ze5gEKfIp_tQN{Gq=9j5+)s>c&p4YmYq8jd@7JSF;q``WIKvQszp&XsqalCM5URmZKGVY=5f(e2KZOU^ekws-`dnPD@H z*HY2y?xdiT-C3W!rst-p=WBhEoG%?@^JWE`yvcv5yQg+{-CNXVW|gtzfTiKvV;_D$ z?vnrYv9;AAZAy*$kvCH6z2%c`8`}S}{7?Dc^UDUU&HtCL zaaLlnJanEdJ@DTa*S38U`?ZWdE??uQrfKrdYsRyS6E-i=e-<)z#btd)2UhjA;H@vj ze%b|QHYF`+@D6=_K~LvyTK;4c1}4t#oy)roOJh%!9{So6@@V7T>_s;o)-jfS5fZQa zyZv(H=c>t-D#su0tO-54`PQdfOJsK{uv#zQINL{Y@f1s)r*kaxVl9_U&^eM`qNZ$@ z-1?(OfcvB5+>;&WBNXkFIhqufH2J@1DZG5czqk|_*QzD15hW>!C8<`)MX5lF!N|bS zMAy(z*U&t~$k58j)XKzM*TBNcz`$<*g)=A`a`RI%(<*Um@PCw10Mx+X>FVdQ&MBb@ E0Ms5G2mk;8 literal 0 HcmV?d00001 diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Cloud-Hail-Alt.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Cloud-Hail-Alt.png new file mode 100644 index 0000000000000000000000000000000000000000..76cd34e69776fae63d93797c9141b3569cbb88fb GIT binary patch literal 1095 zcmeAS@N?(olHy`uVBq!ia0vp^ZXnFT0wiy%Yw-gqmUKs7M+SzC{oH>NS%G|oWRD45bDP46hOx7_4S6Fo+k-*%fF5lweBoc6VX;-`;;_KLZ1E zlBbJfNXEUlGdweb9VL#}d#>8HV#kGR%~2}?90M{ngIE>AE==B{z@_x!VE2xYfE7m{ zU6m6Nyxz>!B)3K5n!~~7-%Z}0uN}8&h_N`nWy*XUwmZcp#j3WlveNU}UYCjA>)TI$ znf-I${XKP?_b~d;v#I>_Ca+p)jdZtmMH!mbkYI25-T z+3r_xl}S@zJpAL!Wsksp0b!RX3#B}&boaFjC^OEg;@9WAcr5sr@ISj#eKCt=Oj^2& zrcC`Y^{l_>afzUB66{5tn|fz(l}r;lZMNAmKVz$AxQ6!+#pXXL-MOcGc}`EeA323v zM7}?@K``s`wz%W@H-G7AuUOnC)pfUdW%$kw#*4rGo|JaOLO&yAnY4lb6%XUu$=`L= zYvp%uxmMMzl@fGp#kn2lS4~-cAvC@FQQgaDkzsoeakz07Hw(n}NEf^_bd`U$tmM*^ z(Di#wq%UoolEx-_&a!q!-piz=`?wiSRV*#IbpE8sEQ!FG&Jr^YTfbcGY(CL_Nwd>& zgMhW0j;9%ay>0Ph;jyPNbGMv~|5{}r70z2<&}Cii!|2mj=E7^P&JztUkkc=FCclMUC8*)>1S3D}y?!P305*)wpy| zN2a_@43j^z?%$w9#F!cnGj2ZqXU@zAdlP0!aD9Gv5*V3FD+SYmwJR^&Do~Ki~SS6 z2T$&b50X|d|Fa_Mr5cyWWhZZ^O`?S{ebqtyPg>oTe6rgNWmer~37*s<zm0Xkx zq!^403{7+m4RsC8LyQcqj7+Ue%ykVctPBk7_Fp)Iq9HdwB{QuOw+8=583jNM44$rj JF6*2UngDlZ+Kd1I literal 0 HcmV?d00001 diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Cloud-Hail-Moon-Alt.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Cloud-Hail-Moon-Alt.png new file mode 100644 index 0000000000000000000000000000000000000000..5671d7c11e46be74c3a632b185210f7f2c15f812 GIT binary patch literal 1266 zcmV004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00002 zVoOIv0RM-N%)bBt1Pw_&VRjGM%-2OWc#7H#xu_ zxp#QU)q1OL^C?rp1)0WfZl(BI+}BB?2V>gO&BE|dmT)-@h(fW=@T%pSwmI|=Wdp6W z2199O#PiaA&d|wmex~2^e28_1=Y0N3LcS6NWxFd-ocCEINefWK^R&CN$YHbLUBg!f z%maIrHF}O`LGeRyS->=JCITxX)_emT&4Y_a4utuvZfmd#@cz zgi{h=m}O~OFK0+v|40MPtmI`XT=xB9-ERleth@HDjM{HXO4f(;@(yLdYzE}n>vk~R z;{HR%J=v9nqfp#tJ>Tgu+GoDI~Kid*DqVd{g6~Mh9Q>D-R8n zZrh2WLjt^;l~)@(snWF?cIjME#F=e}0(}xFrJNB0OpIf4x6%&gwv@9%fPq6&F0q5TBxTS9PUx(ZPus!t zNZFKRsi)re#m}X%kImH;SgAo$ZjhR!!2ZjCnQj zdMjh8HVH7o3!di=%GXb&u#YVuKDUJ_P#!#vvYf;C{+#!yFn+ zIbV`EppMb0Z8M4To@<+zu_83mnBw3x6PPM4p}512u!g(6C=`2jy_vccFcDrckQIt^ zD9-a_I3R%RlH;BpIZcBB^9c&Y#|Dg|kFxMkkkghfUGJnHCFfJ)N*ph`KkmdaQGJ*w zP(_reC)uXaF28$RC*|nO3v)PJl!^3>0h5gEpm<|)VCvIOgo7xa%095o-1Hkq)3i87 zG1n)jX9_ClvC$*2Id=P|%q{o;001R)MObuXVRU6WV{&C-bY%cCFflYOF)=MMH&ik) zIx;mnG&e0UI65#eKEKe+0000bbVXQnWMOn=I&E)cX=ZrNS%G|oWRD45bDP46hOx7_4S6Fo+k-*%fF5lweBoc6VX;-`;;_KLZ2v z0#6smkc@k8XGG`l1WFvQzw8ydC&XJ-v`axzMbxFUdQqo1@5K*?gcV;2&B_SbJ4s;T z4%;ao98`QSc&s?GlwVco?6j`-HUX!gsFvI*_sWhPo+r0Cy*zzedfINeXZHNY>HnYq zerB$Ie_nB#LcjutMkdxn9>MpRo&_{`s^@-5efROx%15ed(=3*ya~(+#w^woda^ftH zm)>=cvuBl+f+jT?JXrORLRXS$bq!Hh?g>Y0{DijI{;yN5Qra#u!~T~>^i!+k zBD<6KP5P~(*LPX$@AZ)MzR5M$pqxst`zTMGyekcBn#{=;qpC7qZ8f<5k9PL-f zR`|E2DT(zVTvPoLcWWA*Ub%Y#!+FT6W5=zneDQK^N!%ug6yH*GrgH9@ZXL%U{w zO0Y~{>(TPE3mVTe*7_dx2`o|L4(f}1WF`LglJsEOLtA5qQM5z0%LcG4ooi zMBB6WSBb7~7q)%e6zaiipSw9^q8!(jZjq(CI9rx|aC)@nqOZ{xmtdPi2Q1>cW6qZb zfBC&*X`I69^vq9wk$jw0Pl_wUwRs<9HOrmhFP!&;ndeIPXCvDgWrg#ebNh5#_+M@2 z?EJjUVtI?uaq08^5BS$!{h5)u@s80-{iL~iw;R^6)a^U*&6oe!gS8$7frV@mB|S1e z57tjvZ!~Mwl!i=R*Oq4c2%Ro!^bY)2bL1oIQT-WmN;8`bBN$C?A6u-JmctX4bo58& zl}H_(b1GlY@BFb(>lc%}->dT7KRl!l1X7ujx-0c?f@=A}^TdBaOm7AU0vQ>b&<^SG)Ob=%p#@yWzdI6YoRZCnW zN>UO_Qh`Y;6-Y4{85o-A8XD>vnuiz}S{a#InV9PuSXdbt*zLb?21P?|eoAIqC2kG= Tk1`5?8W=oX{an^LB{Ts59o75G literal 0 HcmV?d00001 diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Cloud-Hail-Sun-Alt.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Cloud-Hail-Sun-Alt.png new file mode 100644 index 0000000000000000000000000000000000000000..4704ebd8f058a80d239ff105a176a723b9b8ca4d GIT binary patch literal 1422 zcmV;91#$X`P)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00002 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 literal 0 HcmV?d00001 diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Cloud-Hail.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Cloud-Hail.png new file mode 100644 index 0000000000000000000000000000000000000000..9d033103d6d01a976555dfd6a8be6c09ee3fd517 GIT binary patch literal 1008 zcmeAS@N?(olHy`uVBq!ia0vp^ZXnFT0wiy%Yw-gqmUKs7M+SzC{oH>NS%G|oWRD45bDP46hOx7_4S6Fo+k-*%fF5lweBoc6VX;-`;;_KLZ0Z zx2KC^NXEUlGtPR8B+4AO-#klGXm3DS2Tya;0*8qg6gD+A>2U=LILhvF$#-hyd=?+j zzF@mEo2*rfK<9t4~gNpuSk*Kil3(mu=Kr6L$%H zDVlWZQB%l;lS^0+*Z5v=bKMy5&FB@^rjp(Z0X$PaFUkGKMPEAJ*&A* zjLCIze2Kw%#{0M0X9#coeZ$xItjPvDn;Bv+TQ^%?%|Bap*r;YfZ)oCyJ;IvzpV&;! zmyQ2bcusTeSG8Q>Wmi_7-+5NRO|yk-8EUvl+UUd6}3oGmH1lP$E@Mqg+O zds}1GOS%5DCeJ1&MD=O!XnP@8uA61R8JNe#$hOP%<`Onzol~(35AgirKg+GAcPcq@ zVpNu`^}6DY{?4Msw<4rko<3V~%FE{6&7zpHy=zL9ZZDDQIc7d_!D%ti%@1xC9aOxh zQdAq*+{j(@eyd)MRonBbM2nhzC7m(+p^0IiVwe1I?Pc$|>wME7^wR{f2Qn2Aa_al5 z4)ol#Nov=8xb?)R*+!)jJ5;|}H?5ev>^ILY^`5@G?y}uAg{=!zH2Y^ZhxhBGP(Z!a; zPVsZG6Mi5wAjQ=Z9}Pd#<)YZDK1Osbnr_M3EW z`;?)FK#IZ0z|ch3&`{UVJjBS*%E;8p#9Y_F!pgwFZvTZdC>nC}Q!>*kacl5@ Slu-cGz~JfX=d#Wzp$Py}1F28| literal 0 HcmV?d00001 diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Cloud-Lightning-Moon.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Cloud-Lightning-Moon.png new file mode 100644 index 0000000000000000000000000000000000000000..f02c182698b10256df895ffde8ed92e9112660da GIT binary patch literal 1243 zcmV<11SI>3P)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00002 zVoOIv0RM-N%)bBt1NKQoK~!ko?U-*&l~o+aKlcVm%SySXL`|CJ7_59D*aT@yH!5EM zHDxxJHJlY=tPwSxrLStNndU3g5o^3?+8+Yl$`_!%z_htwQqHl#v{ufcUTaA=Q+Rc`8^-bbM86kIpE8eFJHcV5tyUAAqof);X1ucdiU>T z@jky1!H{d2S0DjuxTP?n*F0}fGC5)aF)(<{3zQ5_n-HeBBcL>%NiN906|uxuOwKSBn&L1Uviz* z-A>$<1X`otq9UdxTdBJ#7$?EF{CzkDFx?!N(yQ*Kcw>8*1ps6-6vvg}Fo{j@ldbNE zU=*XJW74s2#&uOX%q1T=`0^xnRS)LgX7XrU*S9v5e#Z~DOo`sngDF(a7rA;KVZsKp z!Oo(;%L@|$xz$yKgo88 z=h)Vs-7c9Ht0}Zx7X~({?P4EK+M*34GISxx58}9%+!VUs^i5D}k(0zcz%JFtG zD3C_0>2aNusaZSUg3|8TzKFBR@k{bwmg#&K^UwyV|HK0G0afaHSzgakQ~WBACyN3Q zV2ApQi|~}xU2)ybP0JGTv8irAPA5{LXX(Je;Edd_jkC4f1HdNJw^AEfsY8jXgcho$ z{DmvZ_XL2IjA399rZdsgEB%v`Lxfa0kCm$YJ0*-0;8W%^$N(Mulj=T+uWwYZ++_Lv zeY92S>bNzWz<1{yYrX21I!j#7yqNIJq;men=|Be0wq9U1S>rV1o0000b zbVXQnWMOn=I%9HWVRU5xGB7bTEio}IF*j5)F*-6eIy5&eFgQ9eFh0M~%m4rYC3Hnt zbYx+4WjbwdWNBu305UK!G%YbPEipG#GBG+bH99mmEigDbFfdQzXm9`k002ovPDHLk FV1h=(IOhNW literal 0 HcmV?d00001 diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Cloud-Lightning-Sun.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Cloud-Lightning-Sun.png new file mode 100644 index 0000000000000000000000000000000000000000..9768843c566173e0898f4ff6ac1be5adefc210be GIT binary patch literal 1414 zcmV;11$p|3P)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00002 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 XI65#ePvU5B00000NkvXXu0mjf{qIB7 literal 0 HcmV?d00001 diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Cloud-Rain-Sun.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Cloud-Rain-Sun.png new file mode 100644 index 0000000000000000000000000000000000000000..874b6f27d3799db9ff3391a80310be5e0cabfe8a GIT binary patch literal 1303 zcmV+y1?c*TP)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00002 zVoOIv0RM-N%)bBt1TslPK~!ko?U`F_6jd0ltdqDOF~e2(ePp*1T?0JQA;#js{w-&FGWFYlf@FsEtuHUf>`Kf zc-U_bb340pIe=;QKMyl|zRUd1%(rLGoPnbJmAnBt6Ffx?r*C!Fvf7S?Mf0u30H|OH z3yZViLleef%H`IN`9HwK&?tu)cI|I4%osia z_h$USBu~`+bcuC@xu#GS*#G) zMtqcJ+v$2)&m3D}CV7|-Y?U!gy-$XHVr`6z@`mk1?{k;0&v-sjUV|+4*z3i%OSL3e z#EY^$5)@?)S0qtC&*t@fl|gm&(k@$_s;ZoJIBsvCH;E)2;(nQV1-+Nadx6E5%;Pzh z^SI1vs#UFJRjNF*TTc*}SCsopfv)3Qo`2W~Ke3wG@++e}I~-o0XB+d6z`rpIfG=1c z2qwW{9`b1)paOvJm@h49-lSHJJK4lPg;GDLN^*K26o4gpN1}K02j`p5Nv``v-_c(h;o^LnVL2G-aHfEt?2JfF@=iU*>n0ALz_sF5o0nBr84 zdIY3m!oWmMNv?g-65KA~S7M_8JfUvYtY}vzH!zubsmRR**XdpKFJTsaa&)&5m{!?8 z83hJ9WnYI0{V4m%(O`a-{R&UaLLSW%=WowFm&Qly%VN397pZczXV>gnv~fFppTxD2 ztveb_lJk;aldZK}3j3TUO1Gx>jO02L4F=Xpf~&T=NlBaT(N-n)K3DsvJ{=3Cv0RW8 zC)I?>3*)R2f0%o?D(z24g@F}nu=+&{YX))Vm-?zX6Dr$3ClhP*J9w5l$} zeD5xmu~P@*{_Tb-=cq#YCerJ)Llv~ffJrHoZvQ2suu9UT7Jj0_99Pp!1DY8NW}9a9 zGp54A+(8?U1xp=mO)rct@_bO&QU2|q2vdY{tI+qPoBF-!UpfFdpt0w^HysF=FQ(FL zq)Cma-YG@aUKJ^KOck2>g;4wgj!`4#VG7ky2$}e7`4uCy)5w5NS%G|oWRD45bDP46hOx7_4S6Fo+k-*%fF5lweBoc6VX;-`;;_Kag|D z)5S3)Pr?5S%Ec;TRCOC7|%)q6I6=lDL(lzA#=?YT{^`lrhoF zkz-p%tiVOLMG{L|S-AwoJUJv4T_hx;oMzr+H+|{DeSY`e?`iieito!Z@BF`ghw<}y z#qaX(&8dD@osbFzTMf2)C@-7w^@>31Ed3sXKl?8%mRUag{gRmL>hB60HvMFc^y=~C zZ~Oi0K&IDo?o{*l%#L%iC**!^ESe{Ie$!(cWxqLgYBt~EWpqru&TPHI6278zYHdr^ zy4|ZX+JswOET2ZLXcm>M4J&l7{F@lRFyPe>-ENF%;4J;F#oZ{B=pgpP^YEN| zzCPXMbJ%8OESWd;Swi26+4UOg|GP7-b7rZ}S$K!#%z`C*<}a=n{3~hxSL67hMORi$ zx-+Br%)A47CC!rz45q92md6F=drW*_S^n~os;9W0xa%(i+euGS;sT#ryv||>-LiAn zh0xj=hMpTE?O7S5B_{cJzWNd*vQl}0k_yk7M3@n$URBn zpjc{m*V}A|9%K8Lo6EcY&eA($bWHWA^(v;sJ*JZ+mqpoDy}jDnn09r|oFc#WkJkd! zW(dve`kFiAuu$GFvG0d}WNXN#b^huOlHqM;I%;!?-r%P6F!)1*itQGOD(&r?HbrIp;@(w%;#AT3mL6bQS1oakC`m~yNwrEYN(E93 zMh1o^x`u|jhUOtghE_(VRwm}U1{PKZ26p=|oI%l$o1c=IR*74K|D%iopaup{S3j3^ HP6ua)AMmkb>e+pNgX>$~0s$peEFz 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 literal 0 HcmV?d00001 diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Cloud-Snow-Moon.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Cloud-Snow-Moon.png new file mode 100644 index 0000000000000000000000000000000000000000..062703930728e19a33944750ddb74057d9955dcf GIT binary patch literal 1107 zcmeAS@N?(olHy`uVBq!ia0vp^ZXnFT0wiy%Yw-gqmUKs7M+SzC{oH>NS%G|oWRD45bDP46hOx7_4S6Fo+k-*%fF5lweBoc6VX;-`;;_KLZ1E zo~MgrNXEUlGrT=S10{~vhdXmO1qB~;(AEmb5){qyj7nH{sB1~sRt=9$(|1m2iINf# zb=ew_sp=Te+09j@v4UmlvWre#aUoy$E?@doy1ezi?b*4nzuv1(TPL3MZ?i@5Gwb{2 z`-^`(vtf(bS@iVORBfBUuGvm}niW5N_z!P<9cL73bFf?S`l5)&3XSFdi9RvL$<0QS zPm2jKH*bkppmHI}N#b$;owePpKFv%&j|K+qP}zFPN?$drFF$YC{4N`Ij~Y?w?-wl<};| z#e?DdpC5j+t>W1SD~6wIWv65XFJSbWr0&TraGcBUV*acDirwW_zG5@(|I)C&YW4W3 z(}eRSdZo+4QW?Jq<;@OTeSVk5O&+ff#WJ6pMXP5O*Ke#4s+z6lGBR)_E}i@o!{&32M5 zqXiq={TqjUP2IC|wWfJos*IG}=3jSW=Zcv87_Fm!>s;dIO7vVh89J--%nsJ2zU7HK z^cYtuf4b$*`#D6nSE_DC+DaZ9chUd$<)5x#mm|FY0+(+;L=wGYzZ@7&JL+-dUb;F-nKqAr^qoTa={Y&ZYY zy~f2m+q3?$_}&b#G->=aX{p}=pNz-=?-epe20MiA$}9gD(Q40Y-M#eE&*Dc51)9xx zRxS_XoD(R#_o`f|tKE5*z=`LK6Seh<#CJ8+OZS|3>$udI^KQZ%zEu*FcC{;Q@~Mx_ zGkTUjKg>6~uVqqMU&PYM#$lPyJ3_aK>m|)mUI$A2ul8S#H`^r4oY}Cy5tt8EOI#yL zQW8s2t&)pUffR$0fuV`6p`os!d5Dprm655HiMg(Ug_VJU-Tn(_P&DM`r(~v8;@05* SD5C(Vfx*+&&t;ucLK6VUan(xz literal 0 HcmV?d00001 diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Cloud-Snow-Sun-Alt.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Cloud-Snow-Sun-Alt.png new file mode 100644 index 0000000000000000000000000000000000000000..11468ea92c5595b01458354b258323119a568350 GIT binary patch literal 1365 zcmV-b1*-aqP)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00002 zVoOIv0RM-N%)bBt1aL`2K~!ko?U`F>990;{f3wY1v^B9C!6qrz1dX7L#9)PBHliq` z;w2V*QV@#L7%!+<+fpAbRD!l%z(C)s&>*H&Dt$0DO;W02sCn>~4JFWEjcqX6G{z*m z$A_FbdnP+GnarMTLH0keGkd5;opLAlQGkX)NI~0>RAc z4XqrI5n+8tazG|D{`X{(+HcOu6myUST@-l82LTxHkQUHIf`b&B>G=)>0zr=lohWb_vOJ{h#wasG1}aG?x0?f7)hn9>mF@!< z1{1XKH8nsgBhp5xqk?(PbCxNGWQG(GV2lXw$0w8q>(S~_z$R{HElH;MjRb}C@R*XO z7~vciRotnC)Dt|+g4q$cmS;G|B}cC>@}s(*W;Yc|`$l&2my&&Gl1M3UGUYoNXQjsiieoyvP z;@a*0W*=L$g&E;4-quz|ikDqHd@7}HWlQC0QtCz@cDy;HS#*aJ6v4Jb*)^KDH;M%0l3#U5`E-v?3d4MmE-me!-2`1W|#&R8DX44 zs@UvE`Hu(olY!4dWvef+i}mVX1-qCwu|NGRU2F;O0)T4Hs7UotSSNN|tqkixp^RVE z{uC1P(t(L`E4@E8c`Nx-P%~n zO%AN!>s{%qJ1m)ERp5{NJX1m5ZdRxe+D2%!s&w)vHaa9lw916Q-gyA(X{9K`OGH(i z=duf-`?RY0an))uh(K^eB~F4Gjvx>WEX$G#=vF!%*-(Ks9Mv)s`!=uNCHQAAYLO#wQa}B?1|P zkw+e0_zyBcZy<8qgV+E703~!qSaf7zbY(hYa%Ew3WdJfTF*GePF)cASR5CF-GBr9h zH!UzYIxsLkztGG8001R)MObuXVRU6WZEs|0W_bWIFflYOF)=MMH&ik)Ix;mnG&e0U XI65#ePvU5B00000NkvXXu0mjfBtL6$ literal 0 HcmV?d00001 diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Cloud-Snow-Sun.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Cloud-Snow-Sun.png new file mode 100644 index 0000000000000000000000000000000000000000..1aad15dd0b8c5b16b3d4a751162b17f0819b26ce GIT binary patch literal 1291 zcmV+m1@!ufP)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00002 zVoOIv0RM-N%)bBt1SUyDK~!ko?U`L@990y@f0Lx$77;kya@5OQN(w=x)R> zP*JP_Un=y;l3JxGjkG?epw!|gSglV*Xb^*+6ltuamDbu&gGe=-O3=_EjW(@mP1EdN zANJ1a%HB6X6Jv;ng6|e_MCGwP{rKAA;E_E7UAM;6pAMw$Aqsel+`-1K77p1&0r6JtLq_D~nV9|d4AfURQ>DfSbyGxKf~3PoRloH)DL zO*}wKpSJF{Bc?~Y3zidv8&VWKcEmI=DlQL{WqCmCMyaK_`v&62Dd^l|5qDRP$<1e;Ur04`J;^SbWb_^E;*xOh*%Y#vSD7gKWt^rp z&uS?@37@njrGv9Yg(wuia!&!vdPX#V(oP_EbKUpY3;e)m^mB|0zWXz5E@0hGTJ!6o zOWEOh++|*4y(chhxSQ8Kk&)rW0vx#N(e zOCO1_Qda2pT5*+UijI7WX+3g^J9D^J&5X&NcYI%OsGWqvphQDw$6ix#rm1Y^tzp3D72X44AIUk z!;Gr+SYpkh19D>AR>7@}WaJ!&TAqCVScpbzSE(oD=5eO_fnj2kU2 zW@1k1^V3$uxTT=c%zT{=xoe)j)*KDeGaJE?J@p3`#3Zz@pG_TXm4+#L!?;iT`q0!t zj4|!v9BrNzOOPm1?;VnPe3LY3UFP$7NZQE}xtHzI-U_tI=WF>!dpXa-D9gK7%A7mb z>?ZC~phYep<0J90Es7MVmFn$^If6nl5NMIh|0q&UQX5SS#PolhTrrLG((B0=xiJ#Y z;aw@?c5=Bx57U7mTPlXKQqFRh4Jlcy3}i~hkV0`VV8>-0rDEt1_lI+2vK4pO01V>3 zu!yrActaAsLjvXDD~j^-Oa)PHo(T<;cL&*x%PC_%5GG0JE7Ba}C9dkv4oQ~shwxuB z>*MDXa~dP1U>qa4u<`QCI7V_2xo|PhF;YbpRa8;MO^5#hr&}-S+P|nw0000bbVXQn zWMOn=I%9HWVRU5xGB7bTEio}IF*j5)F*-6eIy5&eFgQ9eFh0M~%m4rYC3HntbYx+4 zWjbwdWNBu305UK!G%YbPEipG#GBG+bH99mmEigDbFfdQzXm9`k002ovPDHLkV1nab BPBQ=i literal 0 HcmV?d00001 diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Cloud-Snow.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Cloud-Snow.png new file mode 100644 index 0000000000000000000000000000000000000000..dfc873119f259c2000ea7cc9f8f30912bd6f9d8a GIT binary patch literal 963 zcmeAS@N?(olHy`uVBq!ia0vp^ZXnFT0wiy%Yw-gqmUKs7M+SzC{oH>NS%G|oWRD45bDP46hOx7_4S6Fo+k-*%fF5lweBoc6VX;-`;;_Kag|J z)5S3)GaNVof3Gg=n>E7xpi-TI_f{O@b5^pUYB^w!mF^(v1`Yn0HL&at-LLNP=+$B+d5z^Wi)`D=w_NlRZ}yz;U#N6lW4i42?!u{FPFi9~*4HHh zKW3hLF7#C5@+-IPoaZgmS<7WN^F8HCGk>=C?sVArVv4lSCiAy% z{`#DFGyTniSy^S9tSn|og>tJK&x*HxEiLw3S3FXTj#psv$wW{6B zGte)1Ug0^t^Lk${#0Reto^2kPTAFO^YTlpmn7NSsoVM8O!!}}*f34Yc?vg`iRk#=P ze$jKXwKL*2uDG(DA;DH&)NkrK&qeFkedc7=ekr_uMV_L6*TJCs1_A3y&po1l+CC=#CC_I+h`-Mw$C#M&4 zL!@e+bJa_+_#+D}8D?};)Lt^RSo|&S|MJ^uA9pR!4mc6M@rUQk$DOVnOETibLN`BJ z`f5U1M7=HhmBLS(f4vbiGc&g>o|Sf#yFyWKf5fBbAMXYH_DWi7eEUd8y4x91{U`fA zSv+TF<+}22ZbRmD=Emt(F(1Eksd_cqOK3cC6!PKhHL>dBd?&@Z`w{09`Ga4Ix~q=a zdT-P8;=ZGD3xfaZ3oql_ zu}*5QE6Z)c^D8&KH?|DfR;!lWy2*bb`;YnqC+yy7&Q<#|#UeH)!RKCd$i~Ket$#iH zJwNWzT5meZ@0RJKX?|ySER9vp`+0B2jOS8@MnDi%@QdB_S*zid*yWdj>0Y(OHKHUX zu_VKdAd7#Ug_nOd2c>l#>C85r2@zi004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00002 zVoOIv0RM-N%)bBt1LR3WK~!ko?U-9=6-OAye>o?bL$o19&E-%@6H$?xcu5o~(q;}jwGTll`D6@V5C?=+4R;+R`Wr5X(l zjbANrf*fWanHDJLh4)r>VCqCTYaA=RMbX&i4oogRGUV|j{8Ffwez#RVeRIvBTZYZI z?NzEn$ucuYRf6fHjK7!-j4&9}mcx9q7^0Uh1`I9F#PtrV=y$7MBFd+MHon)@WKqMv z^6fQ7XrYpHokbNP{$!TBAY*yHOvhj;3JQPy6ETlno)OqAcG1n^1|@eecYAzkJ!l!X&t0iXM501km>B_ zN!-D>O3oOsd9;bvQ9gAGWwkERS(RH9nt0~OoOH<@lq$k8LvxjS>bb&zq5gk1n|PPW z_65#SYITnrppIhQ#Pn0bQQgc4Q(+RJNwiiwMcJ-<&|y9_wVBCjX*JB+G3^zi?SicF zv5HNiEVqkN%qtP-8SCO&e#fxvyP;y0D#MsikculkSFf%@)J)Jgk7>8vX2yCphH}j zxB~OHxXxCCxhAgbU4e6N^-PmE_hqu%1(;~IdY}d~ z!q4Kal207NLm*h)1`eSuO;`CCk z6d|D7A#ZVl0;z^`bOS4r{9Cnx>(aY9{$|e3Sv#HI4CkSK8tI~!#|iwh$)jAi7Im^L zp^puvP!n^EOTOHpz&S`%i@2Z+GRkQeHX<=9;|~Ut1bNMQ8^;_m0Ld!A=M+)EbTSfH z_VbW-n&j&5$&)8fo;-Q-IE~H30sCQrQ3i03~!qSaf7zbY(hYa%Ew3WdJfT zF*GePF)cASR5CF-GBr9hH!UzYIxsLkztGG8001R)MObuXVRU6WZEs|0W_bWIFflYO nF)=MMH&ik)Ix;mnG&e0UI65#ePvU5B00000NkvXXu0mjf_Ax0d literal 0 HcmV?d00001 diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Cloud-Upload.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Cloud-Upload.png new file mode 100644 index 0000000000000000000000000000000000000000..8f88ab39b312a69092c44acc7a61dd069970ed09 GIT binary patch literal 1519 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 literal 0 HcmV?d00001 diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Cloud-Wind-Sun.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Cloud-Wind-Sun.png new file mode 100644 index 0000000000000000000000000000000000000000..cc0b3e6be033f27239b1334d39925e11e447bd2c GIT binary patch literal 1389 zcmV-z1(N!SP)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00002 zVoOIv0RM-N%)bBt1c*sQK~!ko?U`Ln990y@e}f1#hEy6Bj9{B8Xw*chwUuJyLTZgk zqg9c_7yICg2AU>o3`FajNl9#Iq7@U<^sVuMP{pqo7284;HJVD4i0oQTY||>xAjR@k zc6``7ckk@ZEHigzA)5Xt*^fE*{O5n~oSAdZ3|zy?!63>*t1ZI9VN6WkSZx_8{DXH?%#!k%cQM5rB~BNGF7`nH23)L#bP?w$#o^4n6%!Ma9v3+g zI_V_hBBe)ow}vC8L(sX)aYI^)Nk=$h){&5u$9#DnlYR-x!Vv@2#3k*$p1ta%Pn>G! zh10<~nm9oXkj%Q%mU9;sEO3FdOxi3nBq;zAG;uDhbxEO$j~KIsVHq9#AZKr~#1Jo0 zs*Gr3j1Q>_S4cJt_Hs!PlHUI0g}fvkR}}G{qY!I*mo?sIWFu?2$|cT|;Cgy^ zLRymy^9KgEaF23J{enkX40i=?U=JTNZJYH3Kgr)y?59GGu4F%dOWWIF3R%OeOyoQn zXIP)*wLuB##;~Mp=hvJ<t*%^}_PI-1C<0^m^(f3VEpjhmmm18g4#7ub+vs(^--qSknbG+c&sgbF{!b#hherxWzFvxZQ`gz!s7=wPt z6`Z34fMM#yo(L~;oA{mJ5EIK$*NV_hve}aqfNeSNMDKX!$wEv}eC5mQJ4_b&p5uJN zXvY2NNqsR^CiYjY?&THA<-aOkQ}R={zL=i{MZG=+0C&h#nq;Rgi8Z5YT>^_}&z%m=QfO zgW`L4z{49fvdf_g^o4qvuWt&((=B)gxIf5@MnWm3(;0e>$MtF2WC5`?fEYDHPwStq z64~IN=Vom&5e_JV-UKw`=n+XWB2&H|tXd}lXvfh(rCkehU9GiMdzx`n!28NMKgABN z(-N~oFkAp!;>b%|Rm2hYDE}w`QU!5taB_;}sURr<%F&c;p>tXhJr!r_~cG-^7 z%a#;{Yzp=`@`2m=Gz2jRZJhQv@`+9K1rRbzM@CrKa;@&|(`4MFozSWvT3k_T5;jGB!! z+y3xyLI|00e0r{6CEk&h6Qh)2`ZC^GUc-MA{{q&ZD+D;ImQ4Tv03~!qSaf7zbY(hY za%Ew3WdJfTF*GePF)cASR5CF-GBr9hH!UzYIxsLkztGG8001R)MObuXVRU6WZEs|0 vW_bWIFflYOF)=MMH&ik)Ix;mnG&e0UI65#ePvU5B00000NkvXXu0mjfIzMgx literal 0 HcmV?d00001 diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Cloud-Wind.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Cloud-Wind.png new file mode 100644 index 0000000000000000000000000000000000000000..929b81a2de171be684aef5c496b532261895467f GIT binary patch literal 1075 zcmeAS@N?(olHy`uVBq!ia0vp^ZXnFT0wiy%Yw-gqmUKs7M+SzC{oH>NS%G|oWRD45bDP46hOx7_4S6Fo+k-*%fF5lweBoc6VX;-`;;_KLZ1^ zpQnpsNXEUlGj4l}1j-z@-`$z1$hJ$;sdb9$mq~YHd@l%83r^m!K#r?Q^Mt`PC(WvE zt|>Je-W;uW%x&(_(9BP96%?G58YB={sTurvRyO~2=S|9-Nq{?A|A1S@h(^|0&*!{CF~#Ogv$-|A!O5@kPh@vz+e?kMykjbL6~Xn6AEu z&GeV%2`{|$#XI8lrpQzsYGUygub$5Qlqa|??RUkw*gsn?r~jz!nmo}>^SY_Ii)!4R zTejxbI~Sf_#IVm}k&OBR(~$1;gELI8WLjLF;=+|GUGJj2SSHqFQ%j+srBjqjK+Kjd zHnp4kQ%V?xm3DR7iUj(Id44-6l0CQnR!GgwJ%VOuxz9~bVE38*&HwDTCy!a#|1vBO z3B2U`itR?~F2ArFkt-T4L?z~LsLWb<%{y(zBT?Qv%TF8F+XfuW6j2kMmNoaO(8*id zL)LwWKD<+v|Fd62#Zz5|8(z!Jf<;fv;^FG%?J}5fB>mx4#cV@Oo+(298k6}pW~7{! z8f34cH3HmxkU!KkD}Jx*wbyp724hy z9=-m$=Fcl!^TWzk|5^OtPeC+iTEy%x$1FASgIDD$gp_SR+ctO6m&aX;qi58phDsef zY$_YTt1#1@-DI+#ndTS2jP;)dIi3b~x5_dGEPePzyLYwALnAhc&nr&s>6~r7EB&66 zo%WK1PpyZ|6Y}KN&gV5OzSg(2Pk7gRW}8RM_g`*rnAGQ=qw~s=sp7*#-*r2p4_kf? z(>o;@{mCVB8Ow=_KiNL7xSeI5|8OC%K`5JlvRq^cTOI2JL#<~^S`GUxIJB5EVa z)5gDXo7u^eu6j3Dy`B(zX}ufcH&=1D{Zg_0dR#Vw3d-JlZKuypU!y50&$;K|d50~( zk51(M#hzSNR{LgdUOF(Jsg}4#l%yncptHiBg=PHSrKn)C@u6{1-oD!M<+JD3; literal 0 HcmV?d00001 diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Cloud.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Cloud.png new file mode 100644 index 0000000000000000000000000000000000000000..9419d36c506a852bce6a915bdb24e22cfd221470 GIT binary patch literal 879 zcmeAS@N?(olHy`uVBq!ia0vp^ZXnFT0wiy%Yw-gqmUKs7M+SzC{oH>NS%G|oWRD45bDP46hOx7_4S6Fo+k-*%fF5lweBoc6VX;-`;;_KakVq z>EalYaqsPP-wa_#iMIJ_fzE3ePIcO#l;sdOQ7qFWZVOkCtA?eh=pRcDex)nT3*=l} zv?@L>VAqecxzXGu#JX`Cmr_TRL4x2BhvF5NZY{_a)HL-K=J#vsG&}k3jat_k>-L+m z``*t@PftrPJ8%LDUi=T~bvwu8v_{FH&C|`}pY9h1_m_{YEtl3j)SLTbHFuCZe=w^= zmgM5uu2-FI9zDKD;ir*{w`qW%arlKd7W$onk6DFT&!^uA&zvH+bSJ0YrBy!F`m=Yg zI zb2;82u(a90`);$Pj`jbBr9U>;*Ca~LD{hK1PiSj-YTNx$j_vv17xslmG`&{One9s*gtKltIac?&f4)RZE^C9KMBW6d8Ir$&-q?@!I5fed}yWb z{U-}zav!a^Q1qBi&FL-6w*2vOs@(6n3mW{_&9yADN!xw4{Pr>FnSYmj zDZF(ma`!ap60Pr=zdVhOT{o(947=pFd5=6W7>_q)S$w~3c&@I}{e-1QoUY9!wv(4m z3w;l$%T(V!a~tQRXNu8l_!?q=-t;n7e0Azy$NS%G|oWRD45bDP46hOx7_4S6Fo+k-*%fF5lweBoc6VX;-`;;_KadmW z>EalYaqsPP+luj+#zS<-I%hoacRbue$jC=UBbz z+!|erz$nO4(dmEm!g+jE9+M6pR(75wy(KujcA|p%&#v$#y_Z~bO+&YR*to)DooeRF zX{Q7)?R(_R^HV94FWmX5LS%4J%jPWx>`*D>*;izoUv zA6)9yP^UR%(ckrvvd@xz0v`K4+Yvd{S@kpDjH{Nfyq30|4_dT4=bh=vKSy%RjczYF zAaS}@S@GF#CG8)IH`iX)59lnPz2{!ijjp^$s)uXT-Ikl)7T8|t1fyWhT2kEh6#BzEp8RQ|l- zgyXe@vPtf+Kcry2r&csbS&-!?M zi!wL*5W{7ox%nfr&Ezw7;aVGRzv(}%`gz@qJ+kjo9?a9ctUF!H-f`WmIo5ii36k^5TX-J|>S{(-}f zZC~H%_SraN_O-2d?yJ4rcx|1QONUXQf{~;C+5c9lPpglmX;$CxW9~hm5MSXn<>IS# zoshU*q+xtSe)V1Nbtev20FxbqYKdz^NlIc#s#S7PDv)9@GB7mJH8j*UG!HQ{v@$Za qGO^G#u&^>PIPrafDvE~O{FKbJO57TDu9BDuvcl8V&t;ucLK6U#>1ql9 literal 0 HcmV?d00001 diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Compass-North.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Compass-North.png new file mode 100644 index 0000000000000000000000000000000000000000..417066e4c62eca31666e795148fa39b18995d5e2 GIT binary patch literal 783 zcmeAS@N?(olHy`uVBq!ia0vp^ZXnFT0wiy%Yw-gqmUKs7M+SzC{oH>NS%G|oWRD45bDP46hOx7_4S6Fo+k-*%fF5lweBoc6VX;-`;;_Kaiv4 z>EalYaqsOkU;ki7k+%7-kIi5xeC@tS*R?QMkcWHeqWukSS6p82|G-?P_K&rWam^Bs ztnVsnt_SDlv6N~j2=r{Uo;9WL;g=M)bq8{19(rU`UU>Wa9P7{Lj?b-j2o!Mzp()DB zSubDKxt%C%D?XrQzarq-<3OHAcJT&=*NqnI@);^-+8vR~jNx8#D>b#_tL<6|p4oRY z+o#^XvgEYxvPu_y*^&$1jf=#0i{A1wpMB}B&fVRQB)x?0KS=V>p7>^}mA|a5|Gl5z z=j=LLC10d%KOt~;*sdSvq?XI3`h0rVHhcQ|ZQa-B*)<+Cc$nFHG>R)V&0$;Gt-#G? zfv-|zO%G2y`;I&L+0xv9QXv3=*3FG@Y zpKbfhp30U^_It9aMy@Gf>)CRvTl+WvU~`t>dF{94a@v2(3U>7NS%G|oWRD45bDP46hOx7_4S6Fo+k-*%fF5lweBoc6VX;-`;;_Kai8@ z>EalYaqsPP`;6c~k@o$!RFXvhPhI5H-Xu10N5&Kn-mvuPZEUQiB?ZMLmjV~=$l$)V zweYgzQ9h*(7e^N54!4z|9VQ+*8@YUM9hqgxH0;zv57d(!Sj&N^Mi9A(NG3BI@lYRE=e3c`S`yO50xySfJtFnE zj}J@QjiAYqzqt2Im0bBQGv+}5dppVePm!+QKR0=*ReG-PdbTt4^A)bilisgde&6?G z&NHFJsh!?mCdwK=Hu_s8TCFg9M@Red+Nn1cufBgXL-WL!Um7}HdtF~Po!a7Ay0EaZ zf#3N4QMZmoowW;jUo2#8$PC>Zb!^kzb9<(}Ulo2V;A*GI5~IY!H98jo9Kjrmi1R^O2DEVe&1a{Nslm3zQh;yq^X~hdtNzI!FWph}<$IyxG(YOr{f>zn zZ%a1h-P8Gf|G?qoIkDe*bvAWMzuLOz+o}m6d$YL&-DbuorOc~-^Ygam-}REd*6x-^ z%&Zz^=6e`Ml}1>>V!iKw`~3F_Hic~$-M#~pplXS0L`h0wNvc(HQ7VvPFfuSS(KR&G zH8c+~GPE)>wKB2LHL$QUFgWpjfhvlI-29Zxv`X9>cCM0`3Dm&g>FVdQ&MBb@0P=Bg AzyJUM literal 0 HcmV?d00001 diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Compass-West.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Compass-West.png new file mode 100644 index 0000000000000000000000000000000000000000..22d9eac8a3c7350a8ea6331409714426d8abbdea GIT binary patch literal 849 zcmeAS@N?(olHy`uVBq!ia0vp^ZXnFT0wiy%Yw-gqmUKs7M+SzC{oH>NS%G|oWRD45bDP46hOx7_4S6Fo+k-*%fF5lweBoc6VX;-`;;_Kai8- z>EalYaqsPP?;M{%iR1NWe0;6Hde|(x+EteRSajl+PA>shB|#lkF%@N#d7MrzO)uo$ zHr%ugvxl*Oa4t?Lfy82xGx$nEn)6OxA zxCVmI)Bj1wwzzW$EMt11cJRdh>IqqX7rli1*Qo^h1;tiOY>i1gl5yiY$8}BpC8zTC zrHD%Ix7)lrK^Nf^ABK97SU7eF0;#K=t zU?1n-Iw^^1M>L{iR!tF@?o@llXV$8v@jwDQ%9G_TJE_#d#_BPJi%bT(R(OM$H0l{{H7-yS#qg+c{Bk(!*wlFrUjO{RX~!RbRJwoH=il>XT#G_x?zWTr&}9*DQfk}g17Auu z_2q5PXG^f_FP_JHY})Y+)e{Z7b{x6x>B_cq!p7Z&=aOcQrQt`<#B8r;;lV?GuK?y=&kNS%G|oWRD45bDP46hOx7_4S6Fo+k-*%fF5lweBoc6VX;-`;;_Kaiv2 z>EalYaqsQ4{r)13BFF8yTY0(G+6(PvJ`>5<9#*lUo>AQ2Q^cgqp+6y~=YOxvq|a-5 zk1mYJQjUo1bPMF1>+W>z(Dwejdt2|^Gi*Ql+sE)`Wq$fT9!Rtox6eyfxwZ;!`R*>3_MerD_Rh8`_F?+qWOF^X^JI2LTJp3wxqw7z`T3FzY^GD% z?{-vb-L>!D@-6t8|BC?jX8qIOh0T-VyuX(#1=YE~n;u`%nHm)pw^LBq<;>B5Xv?yj zZ{36a=CiB6@%XO3b*aBuM$hV`-OINHU)pr}4@2zP-D&|(SQzHrQ7?_#71{14wSA?~ z?Ii^n+c)@ThNT6+3S7B+r`*Q;&lX=wEx%nC?2eqeOXI6RZPx0|M?~$~_b{)I>Jkhx zSTz0Ke)b|izRz6WU-tfd7hmO^ccdccMK!O%Nu9%;*{=gd&-dpoVVE+jMnisO{KdHv z{ieQ(a&j-WuFyP^)wM5LLD*}Z7LUmd_OE-t{XAH?Jt@IvO4+-hG_OnNynQyycv^F> zTY8{=>ICK#ld?&trMKVAm+7A*_a!4T-}Y*bexh7r6H~ecd(A^_(^WMup3H(qVq0O# zAJ&!EyxmT=G;Rf^BGnSth?11Vl2ohYqEsNoU}RuuqHAcVYiJ%~WN2k%YGq=fYhYnz kU~uC50#y_Zx%nxXX_dG&>|7-=6R3f~)78&qol`;+0J~~KwEzGB literal 0 HcmV?d00001 diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Degrees-Celcius.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Degrees-Celcius.png new file mode 100644 index 0000000000000000000000000000000000000000..7e8e59322c4cced9783a8789a0a4d848522818fe GIT binary patch literal 655 zcmeAS@N?(olHy`uVBq!ia0vp^ZXnFT0wiy%Yw-gqmUKs7M+SzC{oH>NS%G|oWRD45bDP46hOx7_4S6Fo+k-*%fF5lweBoc6VX;-`;;_KLZ2f zDo+>3kc@k8r}_IGau8{^_j$wD;Sy88axnM>t4Qhc;}f>-aC70AF4)hY*3@ZOxG=`y z)>O_QaX)#UdLQ9-smb3{FD6(jr7zq6;xc=bHFW2fZYmTb9sZk^MS$7wH*hbm`^e#p=d*_movDfuD8Yx5#D z(|>MHXDdzr!ol$((7SFeEJznwJmYq}Cl%`FeghQWswJ)wB`Jv|saDBFsX&Us$iUD< z*U(Vc&^*M*(8|cv%EUs~z{1MF;KcU@swf(A^HVa@DsgMrxk_RtPy>UftDnm{r-UW| DYnldb literal 0 HcmV?d00001 diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Degrees-Fahrenheit.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Degrees-Fahrenheit.png new file mode 100644 index 0000000000000000000000000000000000000000..cfba4a555a47bbb627dc12cf3426d76e440ad0be GIT binary patch literal 581 zcmeAS@N?(olHy`uVBq!ia0vp^ZXnFT0wiy%Yw-gqmUKs7M+SzC{oH>NS%G|oWRD45bDP46hOx7_4S6Fo+k-*%fF5lweBoc6VX;-`;;_KLZ0} zf~SjPNXEUlQyl#cIf%6FmpbfaAoY4tcmTh$M0pj@Znp19CLc|zSPB%?@?s?P8IJOH z8tBQmSp_toys+ZuemxHR^_Tn2^SPWj6k7zGI6f}#v|R4(=GHD&=y=sGw~FWFi;HRb zrdsYPGiGKx)UI20i1%^KRqN{^hgSO(@f%7Uo9EZMd#6S<}2GSPR|x@QM+FL0Nxx?=I)96FVpkPy;OQ~Y4FXWn`Z0H z_Hw8jZ}3*r^URsF^T|cEpO#kJUOGz}F;Dkdo~2y={Mno@=4*6SKj+x{#}vK#%M{AM zlYj4iM@Pqs*4JmQGc0dq{`0d|=-oosBYBJeEZ!TukHUO_QmvAUQh^kMk%6I!uA!l>p?Qdrp_P%Tm5GI}frXWU j!HMq+R8chK=BH$)RpQpLbCtwQpaup{S3j3^P6NS%G|oWRD45bDP46hOx7_4S6Fo+k-*%fF5lweBoc6VX;-`;;_KLZ0} zmZytjNXEUl)A#x@ISMq`?+wz`ed5=&)u#2Ln@A0Z^#_j{VeclhX=PHCLZ%BR&iE0| zJ@rs0Yjww_it4zstux+t`KlGqexFvhxmtmv34%VnpK)E|vq#Im| z`8P8j&i6ke$$DL@`pYtxN6Wo$F7=w5vFy|eyM?<~`K;F2;5Ty!_&MmxB4+Ec; z-dQuJc4l&JvfWLI*Cx5E*JPDl2$x*3@z229;PZbY)bJ`)YxHV$Q2}N_^ z@D5pVEe7_^>8odHi#EjOZhpjOx!UWDk^8Kfx(II3sg}wNS%G|oWRD45bDP46hOx7_4S6Fo+k-*%fF5lweBoc6VX;-`;;_KLZ2f zG*1`Dkc@k8r|^#rjH8$%=*_ zuPK=+DT$rq<9Kt*D{bqK^CH22?w^}C_vXwuO$r?{quC-B(ZkSQ)hF>55OL_OAcamM$*x>tsnhq@oe{@{;H8 zg+f=kzj*aM*dEnk!y8(gc59DMb(UAWsVarzi61_epcJD`vUG8s;mpGj;ynOSPpJ#j5ivYWaoD5sF?>OOGw7lsr*V>lCx$sLf*+k4NS%G|oWRD45bDP46hOx7_4S6Fo+k-*%fF5lweBoc6VX;-`;;_KLZ0} zp{I*uNXEUl)2;muI|w+)FJtjiIp8T0^+1T@qJZi{0TG7{N`=B!O($4iIGl175L%=l z@+V42Du82Q!rmvFHR9IX4LDQ0@lwW~x_KXOWec!4LeP(LpQTpT?lYMxjSeuEn^-)r z6WT5q^tk!ng^N#n_T*2^jdOQ-wAlCLa<8fH)@$AW+W9B+sr%DOTC2}UlyupJ80~V* zeco-YqVVqeYeH8eWDE>vO3+ETuf&2FJ_5e53pOZVv> z5p7>%n0~`aq-F(!OR{(U-`2HR8|fDKG0nolc2FgzeYz zm5TZBVz*Y40tW>7{bV}zN5sBo(nmgERH&A?MwFx^mZVxG7o`Fz1|tJQ6J0|?T|@H_ wBSR}AQ!5h-T>}d%1A`Oa7pS6W$jwj5OsmALVdpA|nLrH;p00i_>zopr08$F%0{{R3 literal 0 HcmV?d00001 diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Moon-New.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Moon-New.png new file mode 100644 index 0000000000000000000000000000000000000000..1ac14ebc40742947a020ef37bdaa7273c1a97dc1 GIT binary patch literal 518 zcmeAS@N?(olHy`uVBq!ia0vp^ZXnFT0wiy%Yw-gqmUKs7M+SzC{oH>NS%G|oWRD45bDP46hOx7_4S6Fo+k-*%fF5lweBoc6VX;-`;;_KLZ1! zqNj^vNXEUl)6e=H3J`GXw_l&2B*x(u&$fEncY`D8iK!Qkuotv%T;I%Hf33qi=M__@ z%fdU2XRaPCPy1b3WMzK&OOt>ThhmF>(;w??W>vd9-MqT3KAcguWS;l$k*UzHnt*>R znyjNXhFb0UFEsP&jL$Q)ri*xoF8loQ*le$@r$W?EmAn#VH;K=e`EmLV+sY|ZVyai0 zi053`G;6|*S^3hbR&Q9+%TLy%-dgshbN!i(nzbo!@>Fsr?=wGDYGmdWKQsLJmdLah zGt5puS@xxQUJ)bp5_p@H@{CiSU*_7<(IsIp(OlYOze>$MvK)J zYXmcWL>p|Ye8h4B=HJ?-YrcDxO3D(My4cXRCwD#zRck@~#PRTydgLA@zMW4wqkuuD zTH+c}l9E`GYL#4+3Zxi}3=BNS%G|oWRD45bDP46hOx7_4S6Fo+k-*%fF5lweBoc6VX;-`;;_KLZ2f zY)==*kc@k8r=Qki4wPuHf4eC5$~iZE&)mE79CSK-Lo2yFOD}bpD|*b@v~i2_nZ=jsJj zMuugXRXk7T>_5e9ml~w??lMcl)#95zU)SU-yt`uFzxuWGdCj`j;m78A3YPwTry2Y; zeCPeVtd%$J&%1U-`}49Sr=!dF&AX;jy#7&B*HR$M<=joSCI+8Mzqh7)jSAB*ZoWPt zH+<@>cdqZYA*ZuD%p`PHHB!|#noH`aUg@MIplvi=nFa+%LrR@%_8 zQ{agD$r2o4E#+-UftDnm{r-UW|-v|3= literal 0 HcmV?d00001 diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Moon-Waning-Gibbous.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Moon-Waning-Gibbous.png new file mode 100644 index 0000000000000000000000000000000000000000..5916506c80882adeb107d38ea23796927fe3e0ac GIT binary patch literal 635 zcmeAS@N?(olHy`uVBq!ia0vp^ZXnFT0wiy%Yw-gqmUKs7M+SzC{oH>NS%G|oWRD45bDP46hOx7_4S6Fo+k-*%fF5lweBoc6VX;-`;;_KLZ2f zG*1`Dkc@k8r`!4;a*$|{fBmSTv-{&>2Lbca&+-{DDh>9BSQ|6`sOKf680qCnN&gkr z%Sw_ta&Wz9p;3p$4KWL^C6laW?>%qx{vG#z-o4x3)+ul_LC}Zy5>hW-Swse@bTIYb zd0cSjaQvM%-%kEnUYP|hhqj!O%8ylwTRG8iBeswL?j(L%|ZB+K7YkQyXJn*8$$k@Cpb&t8Gkc4btO5EX6IWu3m zziTsn_ZpqgljZK|(>$(Um8zAuS4hHF>v(xps?7GdbPI)DHx_SIOZw-oFE3zg{`+Ec zZM|hgn9}A`MH^N}v*u*&^INDJDdyMiHP!R4(S*#~PBEL$GA%x05wcA{Q&@}PsJwaj z&x7nQ=Wm(6=3S7fxwhQnHv#X3Rt6`%+8)dIZFSOQ)uTPXR|g$@*rI-Uvl1-e7EIM= zQvJ4NyK0&SFuqhvTq8@X{k*Sr5g|2~xm4U&D h?+a8>H00)|WTsW(*06Jx#7v+D22WQ%mvv4FO#oHl_M89! literal 0 HcmV?d00001 diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Moon-Waxing-Crescent.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Moon-Waxing-Crescent.png new file mode 100644 index 0000000000000000000000000000000000000000..8f029713050428cef7b3cc25706c6769d4e51cfb GIT binary patch literal 630 zcmeAS@N?(olHy`uVBq!ia0vp^ZXnFT0wiy%Yw-gqmUKs7M+SzC{oH>NS%G|oWRD45bDP46hOx7_4S6Fo+k-*%fF5lweBoc6VX;-`;;_KLZ2f zL{AsTkc@k8r| z?d7C=(PIl+j!2k}jG5M(7SZ&DJJP#Pp1Cu3&fJ-IcXBr=a6l0A@c{pFcMqZTHjWQR znA7J3ygQ!Uaw2&7&)1tQ({ANYHC>gfw05=EA^)j7+g6{t{wL+n?5Xp$%ykUBrugRV zfBD16dLbWo%4TPV4IUq#>4aU_bEfh1r5GWGgo_t%8m|>v_;6QnS*TCc)z>X&Pc7Mc z+l;H>=-e#NO6i&#i_dhGttn;5;oIHukG<DJoH=RRcdx0ZSMB+3vCBQ^R(LfZLw8fwO#^M=Yc*fC zh5B4u-!J!O_llSmj}tn}uTC;w%XE;BJ+)azxxw{X;7WtcxMjAjJJRMECgoUGAKfm( z#HO{A$s^;^Ij+@ps~CJHyq+;Z{%`I2FW*)Rsd>(cJmfG_==q#)&%<2>SRBFVpv3$l zVH@75{59KvQKeeq8c~vxSdwa$T$Bo=7>o=IO>_+nbq&o!j0~-eOsz~TbPX)53=B?u hU!aPjAvZrIGp!Q0hMlVNS%G|oWRD45bDP46hOx7_4S6Fo+k-*%fF5lweBoc6VX;-`;;_KLZ2f zBu^K|kc@k8r|_>zU5XaW_c`Q(LWb)z|mf`Cj8) zPv1UEmP@@h<=<4b%MW(=R~@;dJ(V*fnETv|xsj4z1I^d@`j(YVQQzYi{5f26{_-ye zjMjVAN6qfCx^BMND0Qj*a^JO9*V#84sV?2Wg#&ee|XySc4k=$p``z74Ud>07gkPQ6*MUFKb=s>>{v!snq&eL9)+x2;y@X{k*Sr5g|2~xm4U&D h?+a8>H00)|WTsW(*06Jx#7v+D22WQ%mvv4FO#muk^|$~4 literal 0 HcmV?d00001 diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Moon.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Moon.png new file mode 100644 index 0000000000000000000000000000000000000000..8f55b3f237400e7d246e2596d3544b42ded20446 GIT binary patch literal 626 zcmeAS@N?(olHy`uVBq!ia0vp^ZXnFT0wiy%Yw-gqmUKs7M+SzC{oH>NS%G|oWRD45bDP46hOx7_4S6Fo+k-*%fF5lweBoc6VX;-`;;_KLZ0} zucwP+NXEUl(@y&xa*%N2-{f+0<_cG#X>s$M7E3=$UC7@U#IdiVP~9-^3!{%uPhKsn zexTTt&s(!a~Dw_k3tomu}Z+fjf8f*#JFc=TygwN=TAiQWE3 z7M^0Cm+yUi>85j^%?0`UH&%q4`og3oxA|kwsp+RgRrRhG-rVQqCjO$8N%=sZ)qb_i z=w|_|bu#vrU)`1)uDUw>!nE~YBew3{m=S#JYO(6W?9zKRc18<)V&6_zsy4at)J4{QhV0Bo@|Vm`u6-41pl!U?S>GzxdzHKR@ija$e#@L42R6WUE!LVbYefT{8qp!YKyNYY? zFn!zWHNWuN3pSTsAv0yZP3%m}XE~7AYh!72K)Ljs#nQy;5NL2Y3iN#96uzTH+c}l9E`GYL#4+3Zxi}3=BNS%G|oWRD45bDP46hOx7_4S6Fo+k-*%fF5lweBoc6VX;-`;;_Kah9R z)5S3)X%-r1Of#Dmr9axpQrX*9xK+?xmcyh#^ z`)iiv8{PLdR#1X~PyI>Hrbz78QgdN&@mVovNs61yHlMt9-5a+ynwqLFKcRg3u;@*T z$8HA>-JE@F4M*^^B=#i-PP{8CdAZ?p8k_JkpThk$JWI}PP-XDWPm5^RWKOWSoczZm zkK@3B$+3q-cTP3DqMyHn-{JmbR=why>UHh>H}~CrI(J%XnEbvq`z-zjbI$zC-j|}% zd-KXk7by65LX?YhLq4mi@hhMwRZCnWN>UO_QmvAUQh^kMk%6I!uA!l>p?Qdrp_P%T rm5GI}frXWU!HMq+R8chK=BH$)RpQpLbCtwQpaup{S3j3^P6NS%G|oWRD45bDP46hOx7_4S6Fo+k-*%fF5lweBoc6VX;-`;;_KLZ0} zhNp{TNXEUl(`@|?8%VUtd$6lq@nY4KHJYkil9t?Hq!{{?<1Md+v)4}Nb57S+&2@Oi z5_ITJO2$nuiL5oV+?+E1seG}O%h}s!zu)uEO*TgX7BFh5KdH-TcXw584rfQ_$Ia|k zrw;ne319PA=FF3}sfB-7`D0dn}iEYFb$JbY03k>u_QWB;s2 zqQ-|$_|M!Jw6^fpg{@c8_J!1Xsc+oB`Fl#^mKjpU-Px%D$lZQ^rgmRxVpBo#njp_2H&xyI-c>Y34WmyzZ5@^WJ|~ zqnX5*r@d;|$;kQ}BRkX3o9(I2gTGhaU0!f-@3x?%tbXC|cb9ycVfN)Acg0zo!1=FZ zPCc&r#BL_+WFw<pWjzlKD7GTkmbo!6(bYm(1j6Xj&DY>OGxd{_It` z98C%kBy!07-1g=F7vyh_0LFl7iEBhjN@7W>RdP`(kYX@0Ff`FMG}JXT4>2;dGBUL? qvCuWJure?>@qK|RiiX_$l+3hB+!}VSl9&n9z~JfX=d#Wzp$Py4tmst$ literal 0 HcmV?d00001 diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Sun-Low.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Sun-Low.png new file mode 100644 index 0000000000000000000000000000000000000000..2b3cd279f133b1e2c7083e8d0206caba24addc71 GIT binary patch literal 738 zcmeAS@N?(olHy`uVBq!ia0vp^ZXnFT0wiy%Yw-gqmUKs7M+SzC{oH>NS%G|oWRD45bDP46hOx7_4S6Fo+k-*%fF5lweBoc6VX;-`;;_KLZ2f zUr!gukc@k8XZQw5If^vcGh3hD>$cP3%sGzi(uEUN?KrG`L?|^;?||hI=ZL%*weSFO zm8IMgehp$%MV!(TFPmie`#SUQs<^MS;#J-Iv*ve8&hv9LDS*)XE+IkPuKcwheOjC@ z&f0syi9u3y)wOm8qk{r7Z>E&3*!c2IF0+8;@6T6m@Tu-O%;4J3>|Q^yL#(>*9&?oj z+rpA8jgU2cv(rUe7m2y4<#T=0s7{@>_KffPGcMP!r&<6}vcn&79$F3mjsV$CehU#A})d8=|* z@c)^VTA%o3c_G{4-rhH}O3z&VcsjT??3x^ z{-0-DaO{ia{Em4Og>p9=DXo5yfA^cF+3(GLSu>`sPyT9iUnMH}_puiTS1yj8mb7{L znJ%eIa;vY`*q$w))%Nk`jTMRc9p(HBGJ1ReHkGZvZI-lo|BDsYtK(9x-sV-VT**D} znA_hAf#QjNuNGykyJ>rn`_IL|;@!@iPDWnBx5MvT^!q*Aw`i*7zMDVZ9ndTPHin(C|ERH}lqv^kor*m6$du=-~S*Vt{MwFx^mZVxG7o`Fz1|tJQ6J0|?T|@H_ wBSR}AQ!5h-T>}d%1A`Oa7pS6W$jwj5OsmALVdpA|nLrH;p00i_>zopr0Lhs-j{pDw literal 0 HcmV?d00001 diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Sun-Lower.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Sun-Lower.png new file mode 100644 index 0000000000000000000000000000000000000000..4696a7b6ba9641d78b6510f2b30fd836ecdbb944 GIT binary patch literal 637 zcmeAS@N?(olHy`uVBq!ia0vp^ZXnFT0wiy%Yw-gqmUKs7M+SzC{oH>NS%G|oWRD45bDP46hOx7_4S6Fo+k-*%fF5lweBoc6VX;-`;;_KLZ2f z3{Mxwkc@k8r`viv1xhr?E2~G#@JwurTC>z4d&R;12?2grg{<71+min_9Jp#*?_gpr zdd1&BX^zwqk!Bq&LI39MljFtrRJ<##oNs*hcio)!V*7J@6*!te$f4oD7SVqmmmjqs z&de@Zxj5j8TK*Gbg~dK!XBjFa^GuxSqvkwuO70iI2KL((T}qO{hjwd-bj|UtX^zf| z*xvbU%_~`Bqvv7P)w0z^yS|<2Ib-B|*XZ>Mqt&lxxtu-W;PiS+q|END&TV0yGlE`T z@8m!Fr-k#eyp?>p`_k3Hu7x+h&%3+GAu_(ph}EomkzJR@s%N3Qv;|&Sb``EStvW8d zao(B>9iqnPR_>E;bDu5zo%P>IexLgb3=5te(w>@Zo7yhq*~GwdbD4|#@xDC)ou5*D zzuP5sdwfcB-5*&P|18RW!)oQn*)7V)Y(DL1%GNZQT-#hs5*Zz>)9MRTCS0js;%Reb?f7LgmRHN8oUaMj8{JnP#SRDme zAjtnG>)z5UnJ+CNS%G|oWRD45bDP46hOx7_4S6Fo+k-*%fF5lweBoc6VX;-`;;_KakVu z>EalYaqsO+{~{qrk#>94-73`_Gngf|9f;cCrFijFSB&G6_@lxt(GpXmCA7VZS%rgl z@H}8VAfhUiA?`Da?d3_HFB3v;?vD((`uE=K{&$(r_OeGrf`DXTpP28a@4bd$+>Hx% z)+}&mOK4dc(a(E8VsdLFpPF-TOW8JF2XE{7OWbaW6toF8F|yD4DU%zu=gJv50|x`6 z)?jCan8Ghoi#b?KjSV~{3mooEPmlZP^W)Q(FMq3AY^z;g=x$s#uOMh%ZP3953{PGv z{x~(uXq)fMV5yj5-{xR1o4~Z|7S0zw@7yXUsJ*>Wn%kR|jZF*~J z>;5tqRhL%E+8l5RZHp3VOz=nz)%eYI%6!$E4d<+^LoCA!!ZukM?sVL*d1jBFlgP`{ zXK!)IEz=8}cXqD7_ndym#W|;izqn-wPg2(w)A5P4)Bg3nwuAflsu%h@?$@Y2uem0f zncH?Hea-ZczHK&=x~ebu)8DLIU4Ca{)`^LCS60|*cRsuF{+LSPD=X#M>+a3|U6WiJ-X=*|lci=3^df5xG%kSQ#7EuZY_$qC_WUfg*$XTmkLBjv|m zxbOxx@fqTWHZ?TWk((w27RYeW3bj zB&Uv|{B*7K;H6$unABq~Ej_I|U(-kS*#WPq>>)>V!|t^;Yvi95`R8eDz`sg$(!Rx! zTTc7my7lI4!Dfz2GCQ|jyz~12XWyQMH|#dF?&P0QD1YOCyrkNcr6;GZ?74pm2wv^K z9-lF5j+M!M5l~uJEpd$~Nl7e8wMs5Z1yT$~28JfOhK9O^<{?IgRz{{)CKkE|7FGrZ jC%!LGMbVI(pOTqYiCe?YRT49S8W=oX{an^LB{Ts5)bMTe literal 0 HcmV?d00001 diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Sunrise.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Sunrise.png new file mode 100644 index 0000000000000000000000000000000000000000..bbb7e274371a02addb393d8e5496ca4a1290a38e GIT binary patch literal 796 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 Q0yQvry85}Sb4q9e0E5Q#W&i*H literal 0 HcmV?d00001 diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Thermometer-Zero.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Thermometer-Zero.png new file mode 100644 index 0000000000000000000000000000000000000000..a0d446bbbad9564ad7d2fdb6038981b34ec9f320 GIT binary patch literal 576 zcmeAS@N?(olHy`uVBq!ia0vp^ZXnFT0wiy%Yw-gqmUKs7M+SzC{oH>NS%G|oWRD45bDP46hOx7_4S6Fo+k-*%fF5lweBoc6VX;-`;;_KLZ0} zw5N+>NXEUl)9n4297WpgeOo47@I1iWaqrL}?jO&E9+?U#Pkg|;qgm`&UGmb8{z;A= zJS^Ff){R>q7&=~QVomS;SsQ$2&-Rnm@o8!1+)f;dEdr0uPgv&S;NjuWSu#nhGOttZ z81K&~WluMs@=#xR*YeLIA;H24J!iIVwO99V_ckv0AVAExf zXGX@|u+wEY>EUKHX<|=`%IE*7mkj6qkxGBJzWj{Ey5C_p6B5=&>s{Y;rlEAdQEB!a zmE(r7yFyM}+>{h7sE?=F1Q_q-!E+V;oP%FWv%clkYQU9n>$6FjxA(Xnekzr7`;}$d)fsbcHQH?Sn#m`7>PbfQwpZb4llPhCZFXr8ZL{`;DjdDKU2FQ9AJZE}O3Nb_fArIpoGR$L>dxiIQ?32}+!qCgffL6^ zW%<_Rt+FSyvhD)|UA4qDq9i4;B-JXpC>2OC7#SFv=o%X88k&a~8Cn^cTA5hr8dz8v k7@YXNKovzpZhlH;S|x4`J6B1}1ZrULboFyt=akR{0LEhI00000 literal 0 HcmV?d00001 diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Thermometer.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Thermometer.png new file mode 100644 index 0000000000000000000000000000000000000000..580a9f3e60ebabe79ce35300e57e4d4395fd36d9 GIT binary patch literal 552 zcmeAS@N?(olHy`uVBq!ia0vp^ZXnFT0wiy%Yw-gqmUKs7M+SzC{oH>NS%G|oWRD45bDP46hOx7_4S6Fo+k-*%fF5lweBoc6VX;-`;;_KLZ1! zv!{z=NXEUl(|o-S2Z*@!H=W%O)xMH@!!GW-jVoqvSa&4JuYgxx?epJbMuFB&8#`mqM^#dw|}THNQd#BHjkO*tfu)zKwyu7yp{Pjy6iWyw)e9x!UAX&fIxR z8>45kOYffU{atr&x%TI@nF{uI;(5Ep;mqRyIcQaHf4MI zy=}8elY7ACKdtP}sT|`?2buX+1V5i3?(Mea&Z!jps-vPi!WyNf-(MB8;ZYo0R?Ew? zv(}V1Wre71c~NkDLU^8K;r}%t|2lQZ|72OLwoof+LGM>!;Hs9mMwFx^mZVxG7o`Fz z1|tJQ6J0|?T|@H_BSR}AQ!5h-T>}d%1A`Oa7pS6W$jwj5OsmALVdpA|nLrH;p00i_ I>zopr05~Gk;{X5v literal 0 HcmV?d00001 diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Tornado.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Tornado.png new file mode 100644 index 0000000000000000000000000000000000000000..b0d9a6a260644c400b90b0e9c5cd47c00e4c2775 GIT binary patch literal 522 zcmeAS@N?(olHy`uVBq!ia0vp^ZXnFT0wiy%Yw-gqmUKs7M+SzC{oH>NS%G|oWRD45bDP46hOx7_4S6Fo+k-*%fF5lweBoc6VX;-`;;_KLZ1! zs;7%%NXEUl(*yYqItaAY%T+4rnqU4N*P&g&q$1N8-dXjKL&h{AS^r-L zZ@&HR%)2kAMHE^DoH!KIw(MCf81#iV+&ZZ(J7YohlVjH{O!`mQOp&p^-;{g)25aC-HnUrV({-%0qojHir&pG_6`|7OW_uX#U@u+BbpzGENf z`kAZ#EzFW`wJD%{w!NQGrQ^HRUdX`9{F-hqcx%Ll|f$oS)8{}d%1A`Oa7pS6W c$jwj5OsmALVdpA|nLrH;p00i_>zopr0E*GX$^ZZW literal 0 HcmV?d00001 diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Umbrella.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/icons/Umbrella.png new file mode 100644 index 0000000000000000000000000000000000000000..73d8666fe0b12c550d6d7263ea0757e3f2cf3404 GIT binary patch literal 715 zcmeAS@N?(olHy`uVBq!ia0vp^ZXnFT0wiy%Yw-gqmUKs7M+SzC{oH>NS%G|oWRD45bDP46hOx7_4S6Fo+k-*%fF5lweBoc6VX;-`;;_KLZ2f zGfx-Ckc@k8r~7(K2Z}iKo6d3xxEOM0nx4zTyJ0PCI;~})_w_W0)Ci9X;?sFO+Cr|!u*J5Y4!Ijg{rPFuW%f0dwIn7o`m>vpDocr-x zSI_6AE8Q%tocXP#;=$LKGG;ZIC^!5v7c~~4WHPPm|kvPxYzwMp%C!Tl) zJ+*G1^J#{9%FA!{D?jxr`*|9l@~--m(<(3X;I84edA<|VHNDcmX-weEP1ktv@b0N^ zfi41E^|ms`BD~4QA~$=>X5Eu0GCm`*sY$|mwsFdRx5+O}p6rr(o3D2{S0;PaE0N7U zr){#fFF&>7jPvxLBEPmA%DWq)zGLm$Y}FiY36F`)+jitQzg@=S|D-{dCDEEsbjPRE zSCi`}d9ys+^VLaD??L>(@74^CgJZuow&YsZW)uT*BH@K`*^wlVHmq|pULp9+35NB(>iBKc<9b71_d zmbgZgq$HN4S|t~y0x1R~149#CLqlCd^AICLDNS%G|oWRD45bDP46hOx7_4S6Fo+k-*%fF5lweBoc6VX;-`;;_KLZ1! zx2KC^NXEUl(|!F88wj|~|8ZJuqgGZCm)}LDK1L4{Tj6#Gt!S2@sHyX1lyVY+Ga@!} zcF)>!a?zp38hsaR^p&Iijpx6W5OECzqo3wHCnE~ZvsUj5Rak8BxHGOig-g!zgSPRL zQs?KV%5xQxl2U|}Uzoa2oEXU@W_c?!^i#|1ZN(x**;dm{qOrOsx@3Rmo-F;m8bK2@;|A>3e!S}TS{?Gqu{C1wPT*1EfS&z1O z+dr9GwQ5c3vw!l1%tm%Q9`E5k9}V?+pw16QjxCwSbw&Xtz(7_lag8WRNi0dVN-jzT zQVd20h94vFu`>St{sTY(Ujqp4T|7;(io$Zdc%fxc)74Tr zdVHa7SyfbRX?am^SFfq|R_b+GS6x*d%}fW>8eb`R+hWLSl!z>Fm|q&7J&d z=RPxmggYiAG$x6r*^+I|&V(FKXp&8sCFx`b@+34N&`)D70&LkQX*y$0{=*At@qGQF zl3H>HRTL*l01P*J&ns0L1#{G4Y|n2M%JmH44L27VnDrnm4m~j;Rnr@JWx!qu>LMft|>3~z3GjQa=_iM90M4Zq)pH-m_;XiCWF*-!^juzCh;<5AkM zm~aH04_KU!^Y`%=Y+8Y8Y#XLE<9J#!!)y@>Fy3qu8G67T?hQ$6p1}}HfcGQ`?=+GE zg51P^v)M-eaUgN9Q4kvjKgN2OL^6C1%^A0%uW2 z${_P2hF$gqm`V-J7%Z!ITBEcbgsw6ggE6&Df&n2$@0X{ro*G+t-bZS3Vn?8LW@hga zp?cyU6tt=hBiYH&P=OSgLpi{TAvmNsGSHdm0@&?Y7;2?KR%X7@@{DTSN<=COv7 z*57F}Y#5RNCas#Oh;j~GsQ%K{{E6usZE4aV*~02g2N3WoiGT_mg^>`!&r*Ts$)bf3 z7C_U2A(>xbYmhsL9urd7vB!8|NF(voaV4jXYSlvHA-MG92R39yLf;f-dpONNNaLRz zD736SN+v~$>VQKHX$!3z;Xd&0fw|^uTvilRWmE$oX*~La0sYZ8yG+XvvdNL<5dpa z&VF@KmG@vLx13^2YKgdv1T6cpnJqPA^@QTm9BeeINsO|jygK8e<$X3JkV2=#W=7&* zm_gU=$=tHp!*eDEv?H$XFN!F6P9f8A**3xLXN%2!P1#h!SP8>ZUdrKrF z8>=Si;t6Lf6&Nmo&W$`E`S=b&k_gGCH=dF8X*?Fzh_81Rbe?Dho7@;+Qz?wdEUXCJ zZ1$>21gEHQNyT=0M%?c2myQ=da6t-V6lOd=X=$1xtvsoAHm%u18C8>zOpXGm>Ep>G z0jH*()jNJ5{X!!w&IyckJ`f%ZEvGxf$aWn)9 zfoIYnFgeg%OPI5l8+!o+`oa)eMRz>U5OS~KF=ap}c&a6V|~zOkk06z!Z$ zKzxkq%ju`At(_RN5twIla>c57;ePqTiR8+%aXZx+Byg!-K%Tn3v>5&IHl}IdI~_=^ zB6r#ceuvad9ez$Nvr^kC^p(7RUAN$4z$Ae40wWx_OGz`lklKXafVT*UJXzd8bTqo*@yMYe?3g{|{{x zHZ2AX$)B>kT+eg_oFZOiUeY8wOgE_L>04(_)T_h;04^kOyj)u9N-ID{)T%!SjQs^z zwQ)&|b{bL{#`gxtGAhDp5dZ$-ztdpz^11tXLAR}s zKJhkjCY=Lp2teE3aTh5C_n~ZtBn1yyR}vHwW3RV(SWZJLDyu-O?h}ipk)XCWETi@D|cfm8( zUXeTYiFVIdoW43 zA$W#+Pg2|R2;PW8SV$ygcVck)14PWMe3*Pz7+yp#vJ3I5_%Lx`gxG4S#7Hn0Ac|99 z0I{p`Q<9R)pgv7oVCe{Z05Gf9qQar>_~F6ZZfd+?XO`I#;fY26$M^IfIOm4U0FY!? z5&;s44FrX?e~8lpm_onIqu}M$5`g6)NQq@+wMG0E2h|G9z_L6{B1aX?k>J$YQclZ6 z)uU)H3v6Otqu^eJ_>tgH5!6VjB@Bvfls~v%;FtF|etK_hX}|-=7;fv^<~_I8-+Ej3 z^fIS*2nM3CGSGma3IRwIyHhx%5KR~pvMXi-X28p38z6#VIEb)_;JugxW+^#JX%Qe< zqK&jAjw&=2eF!ZWQ?}3#Cs<)@#0-{)mh?NL{8?+m2}a)8hBqf021(w>638Hot9Krb z6rlAZ_I2B{P600=J-P+YHR&}w(wq$$qVT^ZA~Jv>l242_2B=C34Op)c!V-*OLR5(^ zafB@#t09t?q>DsKg*wM7!)2|2K#LSDGBOS=L`x!?-~}~)In+{%<)!pgndhm!m_!tg zwoNAEb?Oxis5u!hc1@UCS~^Gx3jxwWAai(c4;b+=p@Es;1wg2t@YQqKfKdke?7<<; zDC2c8iLy!JEN_VrFAyR&QZ)coh228S1X}ttZbb)SZ(vJp$(c4%hBY!M;~4fs3#SFK zq8yYr0pw)(P?OUeJTR6PHRIS2%0HznpR&QQ!!V4pUrv2FB2&kbe9OgvQbr_zNv*r7 zD+cHqOQ5V3h#`J`;SqF{Ps)yw5zm2Og2a0nF+@S5!YRB-=mt&&$QxYCb!VHEP0EI&!bU2($-VlY0r5L5vQ8^z8 zA3;Syb{tM%N`#h}8lwU~Wv`83lYlU?@-`5PBSUQl!#>W{;^MC?@kotBg&wF1H%c?I zn4{~^N&t?4Wo9Jhr2<4GMM5cUNF1n|FKNLO1BC+*0VM=5xO^k90ecY^OK~GuSg@o4 z6#h?ujv>X=suU`^+QP)^jfxgQL?#wYjAXeF5>Z^WEUL%luyo*6uOb{G=nrbp5LxPY ztQ0U5UAn=jC1x}Omy%+T*gy_W1jNGzZ3dZvuH!7ho;kW<9c`GPzDL0@L?H4MEFqXB zGYNqrAqYq<5oo+xbKsybBYwW>veBx_EU6l!gn3b5DYOh^(#30PS_lzJ2-cN?MO%oH zFo5(G=F+1sV=?Eo%`hlgGS{q`XprxPP(m`+P!(b+c7(>vfTynKmu@k?aD&}2N@kcm z+)mOfI?=*7@BI3UtpMWMx~k15o};)4B>ThylSic z?Uz^r`VQVBF?jVJvtf*W^UFmqhXokShTuc}9^tom4;C#cT8dksrJ}^@#ayU<^)=G5 zI;Fay;|pnumNcQIEnXBQN;Jg53?fK&*yMa5#D1P=A%`Kvn<3PU19@1K_D}+f(1NvO z!ytgT>-f4Edg}|UXY>m25Tj>a?BV*g^xD0qUw9Cg+A_-2fjBtHC>E3fhNn1PGuo;c z0RRAsfzT3pskLbxh?^=TMr^E&XsJ{>0&GM2EFrrQkOr^_ui(x@=6vMemMr z^umHMEN+hiIpy;hwj9YBQ%!p3Ep{|R?qrUy0vHsyX#*t*d|1cjuyn?>N|r1lQ+-w< zOVqrVP4ZtYzKCDI5E(ZU&A61N^p(YtKa2cm&KP(ifWe8Sn$=6&Vg_|`qK#vX=v!yI zKe@I(-AW~W23i?Ce0uS|(^u-7*9E5{mQb?Vs~ry*c1*_LKi+J&jZ*iFQZM+=YPuySQmYE;_s7@2F`6fJ}3WW>&l z30;Ss2%T2Jl@Ok;oXT`k^$z7I#!5MN5E5A3aYmoK4@huTgj`rB8;LTE zftJLG%F3`CU%U4FIsYg3Je{%gjNEgx)t=n3of?gyyrPv!&p??SV|dig=%;rko>^>| zX4b0VTemTo4d6;~gfl%z=`6a4Cje$8G70NNTc+}^x=4Hy8AeFRKwgr5 zgcB8NBk3@awfI+CYXr)@xO5LJ7yQzhWNpLz!IA#=mVL_xI6^DJ72LdsZ?D_Xn4Bt> z7q}>Ft&y}w$pmA_EXfu#2OCHpundpf)7BBJZ(-n}w!o}ir*9pc|MRau)t=r&X^ou& zGl;{TUMzYd7OMymtB6cG3|8x5ky%r@4)l!+MrB~eXeCAd$y5yrZ%xaJnwii_&HARz zJrDut6uh-%KJ=XWhmQ`ve#tcrkwh5subxuTnW@)njYer^oM-mI3=T1In9R_a%6qri zurWj=!jO&7Na=}l-QWA{0n?srOmATC0OmkQty9b8^%|SR8iGxASbUfWOL$aY4h5Aa z%W{`i4?&kgAPB2$U{w2n%3Y$Z=eTL{-d(kIr}9soDQbqG@BP%M^jyJ9=|Ih<%8?;5 zf;WJNF}O6~j-z(Mh0}qCrKO&G-)9fZ7s>S29SndyQ;64zRgMh6=$fH?rXon%REjH# zJQ-B1A>J0%hoBe7%+KKRAMkDlvH zZr)8v0yqwD1u&!&*uaZ_B5hhVHgTmPN<_uAX;9I;yrhyUisO!$kno7(3xNkYKd6n# zeDd(6o5rTHEE!1Vq}1aW9{87Y$z4kW73GUvR3{IZnb9(sNoXde@q|V#2;Ao8%Mu%;N0})J+{&Eg#*c? zi?oT$LlGQ@K7-=)&yXhR>9~qCR4n)Wp8YmJx!X;sAZ54nNTA4%zcmfoKN)l zkp+I>iaXljf>AGhcS+8YcVpA4EqE=>8p(&E=dCZA6sk{k*$O&CyZ|B%f>t^gPzr=(Q8}oiK2bb)#n*|g0X&#}(r8TW+~<}T zU9Sh&q~113!#f|=%*1Jlwm8J}3XBIr-O`oVl>L;rq#V}^m{qB9Tapn|h3j#y9k{Ss(pKS?U+T9eCYbzHRNi0(c*BJKqYcTfIxRac zB2<;w;*Ei>X9j*@WAgjgWz%))F{l&}Gka$DYzxxS0U<(T+3Vj`ouY+KSe*0n)CjQA z^(UjF59vqpiVF5JqH;1B7eYokEz-0Uybv*Zm$lo|d-s3w;@}s)c;9c`aqxrp9(m^- z-}}X{JaEUEOA}kRQavlzFAVjG{@rx)8*?@xhzm(DEw?UA!zJ9TNL)|lRVT{=C(?1!gO7x?)p`%6=%2NVFPx~+<> zdazUQmZtgref2d>>TyXc=qY$Fi429D*hys@y$UhZdS;+S!AP>)u9*NvE2*3|y`-tl zV|7DRGB%2bIxVmvNQbIv$!7^3M6IHJnqAA0IWpIB9x})udJa z9!f}VKX)FE;aSRhF|!rNTblG+dus1`tT!lN%dmpu4}@4bVxcG9v|vzKRi2rB5f zJ}LDSJrG5a1Ay2V$`os;h(K0815TtCWW+FXzU%{carlWfSrWqcAuXT}>}t?|n6{3| zRnuYshNy1fflK}3+)8i0moszC+POw;u32j*G++!IN6bWLH;$QK*_wXni9s{WY}AyV z1d?b7IzkahGJ?o3g26+Dsq_f4wp3~NM00ADIU)ps8ejUT)FaJAw}Z;(B#h`8fjk^4 z0sZ^QWX#ZtzoxF57G1|*IeqDCC(j?gym+ZQ7!(c+Lue(*hF0U2wNtO&vS!Cvqwi68 zMiuyu<2S5J@11vdoG+S0AYP4DrO4pbGKyF6d)VuZSr#zkf}slN1&sD&QB6z9%S6-- zgqEmRDjh;sU4E-*DHAG!=hX9leag+FuGJ z>99H!AI3Uy7DCDlL0*z|765`UernCN9(<`2b4Z}5=rV}(N}P`PNs;q}F~U!dn1ZXL z21`f?e}4GH#||B1n@nunluk{XT7yiu=pKMa!~4;}pnv)DCyt%I=j`PV+`4b?WUCW1 z1Nx44wau&MlFyvVTS6;}Yr?&Kp4mJ2g4r<_OrGJnMzC?L0i`ry>_ep^OrnW|MKKJi zC&{?rl!hq85F@E*DV!8e0LdpuTTZRcvfpF;Xw&RSslyet3?U_a=zCB9^%KX&W@eik zx0rep-otzLPV!U+gDFiLYu47MW=@U(vug8yPoXMFLT`p9960(K_}5isW615)uzcA zm0Xh!{dM`cidHasN*@LU5ug5@N>7TM(i{Vsc@~&M_0}YO?C9zL{^YT#Et~5bHZy}= zA=N|XP}nU|urFX}V#}7r^R0J(_lf`diswuU0#7+J z4JJSkDq4R!CKO?*#sp8~04E7c`3Dw+T^a4kXn=~XZt(Cz=PwRFJ+^5}ee;%b&ECi* z1L5Hs!$DcyX77rTnVB;lAAR)r`)}DrM9j+fFe4$nWGcDyf|JN1Tx0t3_33Zj*l4F1 zICy5y@E(163xIjkgni$u$KU$57thY;DOf>b#Yskji!zmu{*isWHfB@+C-*z6`(Gen zgmEMkF`;r4I8h(yFbZHap&d1PY0JEJ#J*|F{vTuZ=SJ*n+vb*rd3oJ5C{Db}xB9Cm zj}6AgTAMdByAli`+KZ0a5Yw>Zim}<5+l%`B=jKHOYGnueM(tQe9zv^NtZkaNUEio# zEayCMTzGhneH2y(yms8aW`8p;g0PgNG_$Y>l!#&wCfyJ~tH$&u+{Q}*I>`^}2ct)e zLt2z5JNmiTa6pf#2|TB1p4X!1G|a|~#w_YYmc+a>!7*}1j}dPf;qisecNdl?uG`Oq z@MNi~$qVvg3OD`{!+^Z=lhdEOaOL@P<8fwIFt4f8x;l;wkcBB8c)n#Wooi6E7*vJa z@wS=7+W5jL2^2L#PSo=mL|6uhM#QlIT44%_vX&AC1n~(Zg(|q&Au7zI<_#0(m7``y zo$5r6xL|n3K%SJVDy5ZM3f%t8`N8DmSi8wZ0Ryo7q`rj&Fkmkaa0u_q^~63}G|qMN zsd`pKRYUUechzpP@|lA;L+iLrHT&6L*YGh;83?uv+EcPDn|u40iHR$ z!d$*8|HEP5f)|qd(>c~OP(;7l5au%H^)oFm_v6bns<*`A@X5=Ad{ED7A}r;=AU;f2 z>xG#*l%PM76hbEwrHVKdNI>OW;@t|M>+z}y`(L(azqU4+NwMs>@4-M!D+U+8#6SVO zefPE>8*i^LI}=&Qg2p}h%DvY_tuNyZW>_H{7)Y5$y1}gdD$_3_$>zM7~AXF2Y^rK_{)LsGO}K_7|_42 zX&BxkIHJtbq09YGKDh8}FWT5GC@&agos|q=j7-myXO`aoHxHg&^ivxe>{!SssWJ5J zehCZ$EeHvXMQB+&|kI8Le;9#wz)z*vVax~neAaV=h#}8B1`7t&0qF$xnwE{dV`j<2nCtc0#~wX%X@23~ zzF_;@NSzs-ezDvu7Q6YC<^JX6{>6pfQ)d_NK5%w^IiFg;JKV+0%JT(I(iepVPO48; zgVF+KUDySL7K6GDDX?q8+&X7(oU)r+)XtC)sXMO;2FO{=Zq04@yMu?m{P>+4$6Ew^pVM+D@Aiv+ z-xaxI2Se1Tw#0XW&ToP502)dp!gIBCeUbop^ zKV@184Ryu?hd%fR1fjR^Xb!-Hne>1gHqTgn>o7JNe6UXM?%|jVItxhjK47B|Z4x$Q zgWNPc)-oIMerIGkJQpYIJW z^#{54sWsEJY_?vTsb_6M0rUaBHn}ci1L1u&dPk2hdt@Q&(B*T6_EHX*N@#1%g4(YW(GM)6X3nNeSKXm&P7wg|XA%oi+2@J?|MtqI^XHB!;QSd}GVbCRAP? z!s?T>lDp$e{j_b>uLsMgmET7WO|e0k}<^XKk)(fnYUQpXu?25xc)`dR0y`GkE0Ol_g3i4Y7lU zgo+psUL8Sbfqm#y`Y?tsnI#pmI7q__&ob41OZr1vKd~cu*DWin1EwBz_XN`V&A}LgrUF>1bxc$V%v^6CRd8) zfk%+~xEdTxVgxC!+y_oZVOhxhJ!?#M_76&nwA zM!s0*h+t5;z6w0-xBYnCu@SY^u+N(~nJ{_us)k;|R4OTA8B z4A_m-(y3;)b)vO>qP4l5J$kwG&f6dDB-!+?y{6SHZ)PPu9~_000UkRKqOpzZJMGqQ zJn__@@7cAz)$E~qW1!E^wq2G!IBGwa(qAkW9fo7<&&<0gldUPO2racGguj3MSg+P@ zB`N1lYb)#}wbBan02AQhwbN4Ygt4$^PNYtV;VzC0Szd*%VmL-Cqj$V08>^G7qeok6 zDYH0qVdX1_p1Je*#nX!`D}_U1$PgulnL*wdo^EE(UpH}Np|fPNiCz0lqc$wD6S$g< zD!h@JBhI-sF}{c`?|=IE|GjrtYOPzfdfsCg;9oV(wj}xJLUB`S-!x*IbWK`~gdV%F z^z~yGM>p+d&)_PdKtYm2k02UUD@s_Q3HgcL`%G5j!og@x zU}9p5WJ0nRspWojV*Gn~@z;X9$5C+pVCLC(mId>edcRfb;tPgdkzm8 zW9?>}^8$z-5{5LWI-xi%8H~_!qF0jvM3IFI8ZZz}>lL_Rt^LWp*~&GvMf5DK zZ$CNzpKg2N#FftI)a2a8waMrxrD^%>Isy#Hf()!3&CE>8Z}ePHR$~`v2?16zk{dmO zTjS9800A^)Ha-36Q>T7>d1Xtx*=JO2tPc7N!|1EwI3~h>d+g+$XRgfbx*qI-h>C1g zf)i>C)-Nd|84w2VB|(QMf=m>$qcY-PzyLpYeO61bk^@vhtC`W?K5+I!w>`mGHn(kW zIx!7P4A0JinT`7TTLzceaFVk3F!~P*vf@Am3?Rm))eTtB%QLf|UYLJ(yO|IG41j{g zFT|T)g(zbrr8`g0|Jl8VN7rt&^(NEsrnA(1QIzG#uucFc>LH%Kpa6pH%%sQczmsm^? zRL2kZj$3K=4U@k4!N=Zz_^D5yJAbO%uM_G7s?-`|m93T1!ONZZ-u|d-jy7l3viAu8 z@qU3$&Yi;d$|S%mgH~ERRuQA;axY<_R-Vw3k3x_X0xFJjWavXK2Vb*0O>K4Uu9@Mk zrxyPBtB0Etvtyg~nzY8Q(4}b7QI*0YO@DYvGZrwwD$JZbUOBy{jn=j~sA@S>yf%{v$b@8MA}7mlAhk^J=5`p;}_ykI)@ zo(E3HhX@_^)lt4jU?!T=cg>0qlS+qXBZ0F53CcY-jG5$e)YQ9 zx9r|Flcg&jtINw8Y8iavoSQnB2CPl8g%nM#0=P^!DA&SIlOa1%TY)-t&Wx zJhXK3O3^gXpCl4n$E+GyYfC0UnNSa-Y@O8ORSO@7vNI^?`RnaOgPcda)f0U3?vqF7 z{p7}73<7&?-=puORu(ew^DKD62+L^<&njm2A!7Dn3cNHp1`{P|GBVm&zj5X{*SB`< z`Rsh>m+pG#q4}kDwax@~wdn#(GkeFszN`6~b+w#%Ie)ed zJimBN?N44d@%*`Lx$n6G4?@#SHW4A&uF{NNrNrRojR|vQ%7x>X2LJTP z*~#_W$kyP8w0s1NujP;wRB=TdoS2LZ$3h<*qtdhEJ)GylabCb98=soH?uPSIb8o%x zv2QUl zE-v^u#tmp#njlnvK%m8>sQ7SkwL%h_8sX3&=eVKUVL!TlgWt0AcOO6c`214C(zRUJ zEo-MHH*ali-Hjw+7gn%_?{VE|k{S4_yCo8Xcf4@??Kh9o&`t&tT5ui;q&TfA3(4|K ze2qtzlH>0kg!5QCVy2pKk;I6oo8zt{ms^u-IS307b1KS+wZ$^s(!7`r`P<|jI1EbY z5s+wpKE}!Lo(Dy1e4@8$`}-e%dZC{uCNN_)^|!8{-nV7*z%iUxQfAm|Cjf=#Ug3Xg zU+V*}oE*)laIBqoWe^YP%U&5zS#FMk!_Z;zWMFb0>qn`UkY@!8Kw@xazIS4Y8trj7 z4}qks6VAKv|FP`MrS_pU7bvCV?1Y4MuB-!=FK1Aus3-a~xub!j#?9F<9i@0O^49Vsv8qi(Ptpv6C5! z&0@j0X(Xu=vCsk-HADBGU%Bth!boPcyi{+o?_RdG`P{YHAomaq`V$7}YggwLNY8O7 zuR{-}Fyj<16xXh>VudwZ>ih4gq#c1%MTfQN_*qCwQp+xLCGv-n<{+3Ta@cBniw`#^l z(Pr4l_m)xehEM^AzFK-#4QhqVMAvIXs5sCXb`0W8NRY8aN%XB0q%&m-cw$4xffFV<|B8d5USY32pVA)35!F~zMNlLWkDH;?VAwgXwrpN=rHq; zRg_I?{W^>Y!Ca)@rp@AHCJsr(qE9?gYG?xO-%l{$7JM3J&JvO#^&tKkm=3W1A z&r)yD%%rYEgz<*C{qeK+KY5{MtyqPsKU^`3o0O(jp%wZRAQ?bsU~;Bs%#PL)B3W1T zA*^8nF*DS{kCFd$=u4@I%X7k;ct%JR$BUg`_{3iPW{!L?|H-XuHQ6)P};riv1k79A0JF=6NU_PAz*Yg z5%y6)ug2NL3;$7v$^$N^Yre}|<;Dt!O_Q}&W}K9f2x9s~D+JLNiFXYelGr`cRyk8) z@4P4`4C+=DdN{964jp1F=FF9W1JE!aR|qY~D&Hs^n5H-FJXVbU+F#xMuK#i0fB(*t zAN%H!w}1S*|L4cGHOO&4)<@fLL1q1yK^~8_^gLkyYKX6ZX^t0Ai4jlW!eJ9|&HMZ5BXiRJ%B+O2+fwGNCc3xK(A#yYT z$HEGIqf4}9A@R%tU+E%_?LDKJ(ar0UqF{*qA@+dx@VaurU{COX&Z5}I(ICgCfmxR` zLdfodmvTW#j)MwACpb1ym@BndCnBMx=Av+(#fL%tAj=^auGSoz-m-6Y>%N)Id!{x& zr#Z8YC}r<-$S%}{kgAA!$?;iQa&2u9szwdr@*+Qd!Od<>ik!6?dEn^fTg_(<`Mxh{ z2jeI{41PFn0E9!s@Zg{=@m|a#Z2+Y2E+LMp)?9Yt%!75ODkNjaYf}80VWt5ANu8C34`Ufa4zox;$Q>SC(7&lB*hGtkYZyI(^3f#2f3pL zY^fW^npSw%3(I}54GCW~<4#5bNYACX5dg?OE_P^6(IER+VN!pppv4lYrk3tMRxEXs zB(dJJxQ*dH_xLya?A<5%QrD*m5R^oo*o0_>11jPnzW~zXDlNfa!Zgc`k+HT!g0hb{ zNoyic=HWcgrnI$TbB|b>&g0ZV&(N3{UQw8bkc&$&5Uq#-3@z@n&<*lZB`Xs-u;?HP zi&KlIFY!aid-WuYYmu!T!LQt8%CdtLx0rpj@WEgPg1Od~fr8hO*{Nu*a)c`*!_Xj} zEcm>B?r$DVrczR?5W}u9wA{~+&i7KA1X?1aa43U;kQZ7?Sjr&B0bx|j)(e=C8Dvy% zYH5IxeCd&{XC^|ttqkyetN5lHZ0;l|@Fj1VeFl}ZbcHaEHL4m5n=pwIUjz*B2>sz+ z8sH@uVaIjgf1Al%g+)PX=)`>I%yN+$D{t$?5^A-vE?+^LO0Sj2VbF(;1R7dfrF$O& zTOF0JAXiV#{U_+5qf7OS^p8pmzjuZZ+=KT7ooR76WU)(rbx08{K_X^KQ4B3GlM@tU ztmOXXQ`!E}r0;?V^fLPW$1nDf87846vkaMc`M-%u)Cnwrqf9Xb`XQ!|d~LXU1*>da zImkr5pyns;xN!ZJHj!bDtSMn-dD->1^ zDB+?IJTWaN+7f0l9vKuTdd;{WtX49CsZT)1jlI?9jsT!F`X1u2T`gXia{G7>9{BUDmvQ0Mp|g-c7gvVyr$@=iX#Ao7e> zW}dq)dF;Ha8M(M$3LNZ9R6~kUsZd&6+Nh)@DQ-+l4-7mH3f?vq&$v%cO+sI-KPcxz|$`G-$`>+t!>E!Uy&;#?(~m7GkIg96}I#luQ!aWo(P0ErS~ zGpM!2k#P(Ll86Qc9y#S+vctrGbYAf8S@W{3=8K11s}4qqr_>WjgarsKuV@8S9Ib@2 zU=v7!N?UWT8`?2qc8u5;PG>hvrsEm)9ItXac0DmiFRuLQS08PR&)Kxat`H20O*O5m zhKQEeqSUvm=$sk|L5Iw96)j?_Fo&MQ_q8K2^uW`_(k;eX>pd&bK;iH+&$V|S_scn_ zNvZJwDXJC{;91cEU^J>gMLL>UWyH}h_-)rWU$?PN!_k4`PQF^`pIWmrD1PrV4_xe- z>9y;)aGDmEL2o#$w2cubFC$JLvdX=p2I-(8N+hK%f~FJP zWY0z6e|AT6B&C>ETyo12$IaahBAWHHo zL<|dcDh5$^MR@Jl!sH9E)e2MrU;rio`f#j~nY*6C?bW`%HH#T-mm>Xu3;|uQg6N8aVBGq_RB@X46bN~F=>}@xU6dvrwT1Oiv)-*G7 z-_gsz|JjERpIw+*w>2A`_c!a)a3)MjfheK&zOuBkW7BC}$QDg~8 zqUJ!~h`(~&tR>$$ntuQ0#Gkl%W~mEMh0Zzye*Omgk=L8AA1S_exHxjzbp{{;875O+ zGf#xk20d?$eeJIFC7V(rEDks`^gAzVHY~n!wBJa`8Wnmdy^w^3ot$61F8iGqjB z?pAab)AEAT#WA4_s=k~rkbo#wM5spVTA~LmI93>kei-6V#t2qYtP*o(%!PdB1Aq7Q zhktobVr}8BkrEB1Mua`H_Bm@Thp5UBtN}A}&$;7)gT8={4dLhZ*Kb*${^OzE-KPc@ zSDa@U14B&ZMTH>nWYfHIW9^N*oBO7dUcptg7<~1c=<`qAdHhQcoqXc-d|InbuiKW6 z%n*nNg-oJHAQxXIrTtKK1kce5s+YJ!v=!ut>X=>{IH^vV*@H~rC#XO=VkBaO0q;jf zM(#T^@`rzSeGdOsmIJ@i?`rb3f z>t?QH_DrYGU6ZaGu~$!q+T_p>CD#1mXCL|Oy-$y}TNASz(~)UoGcFv<9I5LABZYBb z$?$=zD_@ep&jnP>VSLzk0RXD*m4fVJY;@~850_uWK^Dfy6ZMRd4nw}dqs-63*9|a3 ze*wYevq#_fJiP0t_FT=w#6hmU{V>m!O$=og1QZ?v&&EFnXfL;xRBF&p~zmO#;!bBPVn#! z>=SJ(7^K4wX854CAS{_w??c!qcTi8R+4_(79lo^q$a~+kZ@iVP^vm&8VQ_r3%K3%o z!izc$A+n;^6zfRSe))kjfA)n(N2fN_M%S_{xX8iUT_J#h4iUu+#@)Suk{+dp&N zjXOuXeH4zbU9@DZvaLos%o~g(Hazsm6MIGyV zHB#bYq2%PP(Wz(V^Do_X zq}%s2?{&_uO&>?e zkVl-2#h2Cu>lZ}k7#!0IG8!H$oq1O4VR9w|-fnvFTL46lJ7?*OEJ$XeJeeaE27n&* z);K4PyB<36?T1bSX8ly-``E0d;BGmZ^w1?F*3>h~QnH4eNA>mt3#(bPy@C74=MQ}J z^N%Fi$mrY-f`OEgG$B{^qlzEH#~oITMOX}nU=k&6)U+zD=8$ozAF6we6R-!2e*TPy zF|rH;!007*gP^B?Gt8Ih48-2m8soE@_dj#_^zVP_&|iP~$yeOC=0|Rr+qq$6yq#D> zUOq-3$k$xt1uiZ1A3JvC&I8ZfvS;RB+_V-v*`10HNd zE$o8k%a2_7w4gux@ppmIftcdj4VG}jty zXCsZImYPoAb$Z36#r~-aokJ(D967W2%zP*J^!e|e{ObKPKl{oZH*A~C66)t%IM1td z0<1B$jGV{!j?e$i?MJ@;z=_<`^qQ^N$SgCna~cu^n{Z;t$2z{4&<98&tk74S1fkG^ z7(HbJ!$^1&<<&%C@wX8WLB5I6N{B&WIfRFe2*mJVbt4E%p6(**^JHu7iOsFCHFkfVl z*XMm-^qD=gBQno!HZy6>BsDTA{eO*}eXis<4#P>Kw*TAFTJ5O|C)yv$JpAWQbBHj`HDQ7~YDWkJAao~w1A|NQwc{9v7Mh9^7@%)s zgIuBHQ(3m3_S0u%f8Q9y`O)tIM{qcpA6j}4q6If@ZAi2u@@epNuF8j)N-6-=22J9w zQ5Z%HoBZT4%6{Pr%zyZyuw901RV7jPq_DgdOzUg3feL2U3M(`l9uyi63u61r{|zc> zIymm;oSLW|_r|zpe)r3l{H1}Hg7X^KT~aAx1hd2gAZ1~<8cZ2O3NGQnHhgk3a}j8A zj+R?n-jWt(@z)x9P#xdst9gQ)7(Wu^h;Mj^AbhGoCL3Bl&1e~enMk&_blttjVeh&> zlwmxUmoa4Os#Iq(^KMdi0aCW#BjJjN7+{4WIJ8h561&7Wo-ex$A^2@ntqF!`uC<1H zlrgi?rxPTtY{Y3(RjWsEcX?QbL>oquAWK2cAd^!ib;0&7Ku}QXOh{Vq3ad|Bt`TNw zvA*E3zeZ0(P9T6Wik>#vxM#1}b+8JM6IYY>`qj!6829*F-I4G7HxD@00Zaq4{3R-d zjF8y8W#o51Vm-IusWGs$6|FZb>{}plFbhrxr&>%ZoTsxMJ%KSr62>4%g^C5}z8OZ17`5pi_P@BWHW>PHX%&_NM_<;hct4 zoYf7XX0j|mW5oOHFUwJ`Hh+brr2`-#tw5Suxfk(EZTXFts0h7_$vie-U`0ag`p^a{ zuCQneXd7@=b4b(|I4HHY=8iFl$jNdpM~$RJV9~1IX=&}=W9FW^8EuxGnb$_X=!0Ip&c7PsPas!y#6%gzVOf1(?wuB1zuwaU;wB~scm~J zLt7ug>6V%9hmzC601SgzN!pUS7Zg_N9=wbl0~d*u)TU*?AE2Ok=x4wfn+p?PcP`}X z+zd~9oqmD2OHFr=2VkTe_rxIDrEI)m*nUqXz2fxI`AZ!m#wAh3Rqc&cUjByuV_AgpkR4fH7V~>vnyoDA077bpD_)W_; z|M$jWr51Ipu$$2do*nfqzm`z(_JCMHXW-WFo2;Ilm)%z>`+#ziqNS)nu z>DF72v%NvqmE~t1VEwkpT)v;EGQ=JR4jN)jiw9dqJjQCxS{>GkcnkTjX=&p@#-AP5 zelNk1#^$jNU`NiCtB|5WDhaFqO?i{U8chLbX1?WBjHxD^y=rGKLo=ii&|l4+Q&LQp znGyHW#;Q1IJ0}AbrS@hC9}+e&E9?!Du;L!z_C<5Xd5x1l3M-KDHU>EiX074xH77D3 zUiD*J^ZbAJlW>G3rnUh|{MdcI=Md+zsXv87oC7}X0S?L2(SYwtfPll4Awz=`lt8!=9UcdI06n{B42nYA({spka1IaA+aVu=z!+KkKoYC3ydOz* zRK@zLIJe|}QN+WEdKwi_(vhZ>B=!(tFvM?M01Uqmo9l)|^_K|i|5#acmO=r3+yDRo M07*qoM6N<$f&kqY761SM literal 0 HcmV?d00001 diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/info.plist b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/info.plist new file mode 100644 index 0000000..4ac4838 --- /dev/null +++ b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/info.plist @@ -0,0 +1,179 @@ + + + + + bundleid + com.kejadlen.forecast + category + Internet + connections + + 04EA4664-95DC-4438-8978-79A17ED2FF40 + + + destinationuid + EEDF82A8-40A8-4C05-9CFA-6669A97C0E46 + modifiers + 0 + modifiersubtext + + + + 2A5C0A87-204E-49EA-94A7-8E62BB4EFD8A + + + destinationuid + F496E087-4042-44E7-B07E-71986ED6CDBA + modifiers + 0 + modifiersubtext + + + + + createdby + Alpha Chen + description + + disabled + + name + Forecast + objects + + + config + + concurrently + + escaping + 0 + script + open "http://forecast.io/#/f/{query}" + type + 0 + + type + alfred.workflow.output.script + uid + F496E087-4042-44E7-B07E-71986ED6CDBA + version + 0 + + + config + + argumenttype + 1 + escaping + 127 + keyword + forecast + queuedelaycustom + 1 + queuedelayimmediatelyinitially + + queuedelaymode + 0 + queuemode + 1 + runningsubtext + Retriving location/weather... + script + ruby forecast.rb {query} + title + Forecast + type + 0 + withspace + + + type + alfred.workflow.input.scriptfilter + uid + 2A5C0A87-204E-49EA-94A7-8E62BB4EFD8A + version + 0 + + + config + + argumenttype + 1 + escaping + 102 + keyword + config-forecast + queuedelaycustom + 3 + queuedelayimmediatelyinitially + + queuedelaymode + 0 + queuemode + 1 + script + ruby -r./config -e'puts Forecast::Config.filter_xml("{query}")' + title + Configure Forecast + type + 0 + withspace + + + type + alfred.workflow.input.scriptfilter + uid + 04EA4664-95DC-4438-8978-79A17ED2FF40 + version + 0 + + + config + + concurrently + + escaping + 102 + script + ruby -r./config -e'Forecast::Config.update!("{query}")' + type + 0 + + type + alfred.workflow.output.script + uid + EEDF82A8-40A8-4C05-9CFA-6669A97C0E46 + version + 0 + + + readme + + uidata + + 04EA4664-95DC-4438-8978-79A17ED2FF40 + + ypos + 120 + + 2A5C0A87-204E-49EA-94A7-8E62BB4EFD8A + + ypos + 10 + + EEDF82A8-40A8-4C05-9CFA-6669A97C0E46 + + ypos + 120 + + F496E087-4042-44E7-B07E-71986ED6CDBA + + ypos + 10 + + + webaddress + http://github.com/kejadlen/forecast.alfredworkflow + + diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/location.rb b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/location.rb new file mode 100644 index 0000000..2ded3c7 --- /dev/null +++ b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/location.rb @@ -0,0 +1,28 @@ +require 'json' +require 'open-uri' + +require_relative 'geocoder' + +class Location + def self.from_ip(ip=nil) + url = ['http://ipinfo.io', ip, 'json'].compact.join(?/) + response = JSON.load(open(url)) + + lat, long = response['loc'].split(?,).map(&:to_f) + name = "#{response['city']}, #{response['region']}" + self.new(name, lat, long) + end + + attr_accessor :name, :lat, :long, :geocoder + + def initialize(name, lat=nil, long=nil, geocoder=Geocoder) + @name, @lat, @long, @geocoder = name, lat, long, geocoder + + geocode! unless lat && long + end + + def geocode! + self.name, self.lat, self.long = geocoder.geocode(name) + end +end + diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/spark.rb b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/spark.rb new file mode 100644 index 0000000..b6bed93 --- /dev/null +++ b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/spark.rb @@ -0,0 +1,17 @@ +class Spark + # TICKS = %w[▁ ▂ ▃ ▄ ▅ ▆ ▇ █] # Alfred doesn't render the last bar correctly + # for some reason... + TICKS = %w[▁ ▂ ▃ ▄ ▅ ▆ ▇] + + attr_reader :data, :min, :max + + def initialize(data, **kwargs) + @data = data.map(&:round) + @min = kwargs.fetch(:min) { 0 } + @max = [(kwargs.fetch(:max) { data.max }).to_f, 1.0].max + end + + def to_s + data.map {|i| TICKS[(TICKS.size - 1) * (i - min) / max] }.join + end +end diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/test_spark.rb b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/test_spark.rb new file mode 100644 index 0000000..9f99290 --- /dev/null +++ b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/test_spark.rb @@ -0,0 +1,10 @@ +require 'minitest/autorun' + +require_relative 'spark' + +class TestSpark < Minitest::Test + def test_div_by_zero + spark = Spark.new([0, 0, 0]) + assert_equal '▁▁▁', spark.to_s + end +end diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/bundler/setup.rb b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/bundler/setup.rb new file mode 100644 index 0000000..46bd82b --- /dev/null +++ b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/bundler/setup.rb @@ -0,0 +1,7 @@ +require 'rbconfig' +# ruby 1.8.7 doesn't define RUBY_ENGINE +ruby_engine = defined?(RUBY_ENGINE) ? RUBY_ENGINE : 'ruby' +ruby_version = RbConfig::CONFIG["ruby_version"] +path = File.expand_path('..', __FILE__) +$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/builder-3.2.2/lib" +$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/alphred-1.1.0/lib" diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/cache/alphred-1.1.0.gem b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/cache/alphred-1.1.0.gem new file mode 100644 index 0000000000000000000000000000000000000000..535eb3253f4155b9443b74fbdeb8956682c1fcd9 GIT binary patch literal 10752 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 literal 0 HcmV?d00001 diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/cache/builder-3.2.2.gem b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/cache/builder-3.2.2.gem new file mode 100644 index 0000000000000000000000000000000000000000..b59ef922ebd687bf5b6b254f410f4d511c1ccf6e GIT binary patch literal 31744 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 P;y)Ak&jkKon!x`66^mbr literal 0 HcmV?d00001 diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/alphred-1.1.0/.gitignore b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/alphred-1.1.0/.gitignore new file mode 100644 index 0000000..0cb6eeb --- /dev/null +++ b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/alphred-1.1.0/.gitignore @@ -0,0 +1,9 @@ +/.bundle/ +/.yardoc +/Gemfile.lock +/_yardoc/ +/coverage/ +/doc/ +/pkg/ +/spec/reports/ +/tmp/ diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/alphred-1.1.0/.travis.yml b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/alphred-1.1.0/.travis.yml new file mode 100644 index 0000000..ac0983c --- /dev/null +++ b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/alphred-1.1.0/.travis.yml @@ -0,0 +1,4 @@ +language: ruby +rvm: + - 2.0.0 +before_install: gem install bundler -v 1.10.6 diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/alphred-1.1.0/CHANGELOG.md b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/alphred-1.1.0/CHANGELOG.md new file mode 100644 index 0000000..ed95c7a --- /dev/null +++ b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/alphred-1.1.0/CHANGELOG.md @@ -0,0 +1,12 @@ +## Unreleased + +## [1.1.0] - 2015-11-01 + +### Added +- `Config` class for handling persistent configuration across workflow updates. +- CHANGELOG + +## [1.0.0] - 2015-10-31 + +### Added +- Library for making Alfred workflows. diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/alphred-1.1.0/CODE_OF_CONDUCT.md b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/alphred-1.1.0/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..ce9bee7 --- /dev/null +++ b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/alphred-1.1.0/CODE_OF_CONDUCT.md @@ -0,0 +1,13 @@ +# Contributor Code of Conduct + +As contributors and maintainers of this project, we pledge to respect all people who contribute through reporting issues, posting feature requests, updating documentation, submitting pull requests or patches, and other activities. + +We are committed to making participation in this project a harassment-free experience for everyone, regardless of level of experience, gender, gender identity and expression, sexual orientation, disability, personal appearance, body size, race, ethnicity, age, or religion. + +Examples of unacceptable behavior by participants include the use of sexual language or imagery, derogatory comments or personal attacks, trolling, public or private harassment, insults, or other unprofessional conduct. + +Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct. Project maintainers who do not follow the Code of Conduct may be removed from the project team. + +Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by opening an issue or contacting one or more of the project maintainers. + +This Code of Conduct is adapted from the [Contributor Covenant](http://contributor-covenant.org), version 1.0.0, available at [http://contributor-covenant.org/version/1/0/0/](http://contributor-covenant.org/version/1/0/0/) diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/alphred-1.1.0/Gemfile b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/alphred-1.1.0/Gemfile new file mode 100644 index 0000000..32fd98d --- /dev/null +++ b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/alphred-1.1.0/Gemfile @@ -0,0 +1,10 @@ +source 'https://rubygems.org' + +# Specify your gem's dependencies in alphred.gemspec +gemspec + +group :development do + gem "guard" + gem "guard-minitest" + gem "pry" +end diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/alphred-1.1.0/Guardfile b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/alphred-1.1.0/Guardfile new file mode 100644 index 0000000..13966bd --- /dev/null +++ b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/alphred-1.1.0/Guardfile @@ -0,0 +1,5 @@ +guard :minitest do + watch(%r{^test/(.*)\/?test_(.*)\.rb$}) + watch(%r{^lib/(.*/)?([^/]+)\.rb$}) { |m| "test/#{m[1]}test_#{m[2]}.rb" } + watch(%r{^test/test_helper\.rb$}) { 'test' } +end diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/alphred-1.1.0/LICENSE.txt b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/alphred-1.1.0/LICENSE.txt new file mode 100644 index 0000000..a73fd4f --- /dev/null +++ b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/alphred-1.1.0/LICENSE.txt @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2015 Alpha Chen + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/alphred-1.1.0/README.md b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/alphred-1.1.0/README.md new file mode 100644 index 0000000..b331d75 --- /dev/null +++ b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/alphred-1.1.0/README.md @@ -0,0 +1,151 @@ +# Alphred + +Alphred is a library for making Alfred workflows in Ruby. It's designed +specifically for how I work, so assumes that you manage dependencies with +[Bundler][bundler] and Rubies with [chruby][chruby]. + +[bundler]: http://bundler.io/ +[chruby]: https://github.com/postmodern/chruby + +## Usage + +The [example script filter][scriptfilter] would look like this using Alphred: + +[scriptfilter]: https://www.alfredapp.com/help/workflows/inputs/script-filter/ + +``` ruby +items = Alphred::Items.new( + Alphred::Item.new(uid: "desktop", + arg: "~/Desktop", + valid: true, + autocomplete: "Desktop", + type: :file, + title: "Desktop", + subtitle: "~/Desktop", + icon: { value: "~/Desktop", type: :fileicon }), + Alphred::Item.new(uid: "flickr", + valid: false, + autocomplete: "flickr", + title: "Flickr", + icon: "flickr.png"), + Alphred::Item.new(uid: "image", + autocomplete: "My holiday photo", + type: :file, + title: "My holiday photo", + subtitle: "~/Pictures/My holiday photo.jpg", + icon: { value: "public.jpeg", type: :filetype }), + Alphred::Item.new(uid: "home", + arg: "~/", + valid: true, + autocomplete: "Home", + type: :file, + title: "Home Folder", + subtitle: "Home folder ~/", + icon: { value: "~/", type: :fileicon }, + mods: { shift: "Subtext when shift is pressed", + fn: "Subtext when fn is pressed", + ctrl: "Subtext when ctrl is pressed", + alt: "Subtext when alt is pressed", + cmd: "Subtext when cmd is pressed" }, + text: { copy: "Text when copying", + largetype: "Text for LargeType" })) +items.to_xml +``` + +This produces the following XML: + +``` xml + + + + Desktop + ~/Desktop + ~/Desktop + + + Flickr + flickr.png + + + My holiday photo + ~/Pictures/My holiday photo.jpg + public.jpeg + + + Home Folder + Home folder ~/ + ~/ + Subtext when shift is pressed + Subtext when fn is pressed + Subtext when ctrl is pressed + Subtext when alt is pressed + Subtext when cmd is pressed + Text when copying + Text for LargeType + + +``` + +### Workflow Configuration + +`Alphred::Config` provides some helpers for managing configuration that should +persist when updating the workflow. This configuration is stored in an JSON +file in the workflow data directory. + +``` ruby +# config.rb + +module Workflow + defaults = { foo: "bar" } + Config = Alphred::Config.new(**defaults) +``` + +The corresponding Script Filter input and Run Action output then look like this: + +``` shell +# script filter + +ruby -r./config -e'puts Workflow::Config.filter_xml("{query}")' +``` + +``` shell +# run action + +ruby -r./config -e'Forecast::Config.update!("{query}")' +``` + +### Releasing + +Including `alphred/tasks` in your `Rakefile` will allow access to Alphred's +Rake tasks for releasing a workflow. `release` will tag the current commit with +the provided version and create a .alfredworkflow package with vendored gem +dependencies. + +## TODO + +- Add development mode for easier debugging. (Nicer errors, etc.) + +## Development + +After checking out the repo, run `bundle install` to install dependencies. +Then, run `rake test` to run the tests. You can also run `rake console` for an +interactive prompt that will allow you to experiment. + +To install this gem onto your local machine, run `bundle exec rake install`. To +release a new version, update the version number in `version.rb`, and then run +`bundle exec rake release`, which will create a git tag for the version, push +git commits and tags, and push the `.gem` file to +[rubygems.org](https://rubygems.org). + +## Contributing + +Bug reports and pull requests are welcome on GitHub at +https://github.com/kejadlen/alphred. This project is intended to be a safe, +welcoming space for collaboration, and contributors are expected to adhere to +the [Contributor Covenant](contributor-covenant.org) code of conduct. + +## License + +The gem is available as open source under the terms of the [MIT +License](http://opensource.org/licenses/MIT). + diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/alphred-1.1.0/Rakefile b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/alphred-1.1.0/Rakefile new file mode 100644 index 0000000..96a218b --- /dev/null +++ b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/alphred-1.1.0/Rakefile @@ -0,0 +1,17 @@ +require "bundler/gem_tasks" +require "rake/testtask" + +Rake::TestTask.new(:test) do |t| + t.libs << "lib" + t.test_files = FileList['test/**/test_*.rb'] +end + +task :console do + require "bundler/setup" + require "alphred" + + require "pry" + Pry.start +end + +task :default => :test diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/alphred-1.1.0/alphred.gemspec b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/alphred-1.1.0/alphred.gemspec new file mode 100644 index 0000000..c8ffb0d --- /dev/null +++ b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/alphred-1.1.0/alphred.gemspec @@ -0,0 +1,26 @@ +# coding: utf-8 +lib = File.expand_path("../lib", __FILE__) +$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib) +require "alphred/version" + +Gem::Specification.new do |spec| + spec.name = "alphred" + spec.version = Alphred::VERSION + spec.authors = ["Alpha Chen"] + spec.email = ["alpha.chen@gmail.com"] + + spec.summary = %q{Helper utilities for making Alfred workflows.} + spec.homepage = "https://github.com/kejadlen/alph" + spec.license = "MIT" + + spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) } + spec.bindir = "bin" + spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) } + spec.require_paths = ["lib"] + + spec.add_dependency "builder", "~> 3.2" + + spec.add_development_dependency "bundler", "~> 1.10" + spec.add_development_dependency "rake", "~> 10.0" + spec.add_development_dependency "minitest" +end diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/alphred-1.1.0/lib/alphred.rb b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/alphred-1.1.0/lib/alphred.rb new file mode 100644 index 0000000..729c584 --- /dev/null +++ b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/alphred-1.1.0/lib/alphred.rb @@ -0,0 +1,10 @@ +require "builder" + +require_relative "alphred/version" + +require_relative "alphred/config" +require_relative "alphred/icon" +require_relative "alphred/item" +require_relative "alphred/items" +require_relative "alphred/mods" +require_relative "alphred/text" diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/alphred-1.1.0/lib/alphred/config.rb b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/alphred-1.1.0/lib/alphred/config.rb new file mode 100644 index 0000000..b81dd70 --- /dev/null +++ b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/alphred-1.1.0/lib/alphred/config.rb @@ -0,0 +1,52 @@ +require "json" + +module Alphred + class Config + PATH = File.join(ENV["alfred_workflow_data"], 'config.json') + + def self.load(**defaults) + config = self.new(**defaults) + config.load! + config + end + + attr_reader :data + + def initialize(**defaults) + @data = Hash[defaults.map {|k,v| [k.to_s, v.to_s] }] + end + + def load! + self.data.merge!(JSON.load(File.open(PATH))) + end + + def update!(json) + data = self.data.merge(JSON.load(json)) + File.write(PATH, JSON.dump(data), mode: ?w) + end + + def [](key) + self.data[key.to_s] + end + + def filter_xml(filter=nil) + filter ||= "" + + items = self.data.map do |key, value| + title = if filter.empty? + "Unset #{key}" + else + "Set #{key} to #{filter}" + end + Item.new( + uid: key, + arg: JSON.dump(key => filter), + title: title, + subtitle: self[key] + ) + end + + Items.new(*items).to_xml + end + end +end diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/alphred-1.1.0/lib/alphred/icon.rb b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/alphred-1.1.0/lib/alphred/icon.rb new file mode 100644 index 0000000..7a7bcdf --- /dev/null +++ b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/alphred-1.1.0/lib/alphred/icon.rb @@ -0,0 +1,39 @@ +require "builder" + +module Alphred + class Icon + VALID_TYPES = %i[ fileicon filetype ] + + attr_accessor *%i[ value type ] + + def initialize(**kwargs) + raise ArgumentError.new("missing keyword: value") unless kwargs.has_key?(:value) + + @value = kwargs[:value] + self.type = kwargs[:type] if kwargs.has_key?(:type) + end + + def type=(type) + raise ArgumentError.new("`type` must be one of #{VALID_TYPES}") unless type.nil? || VALID_TYPES.include?(type) + + @type = type + end + + def to_xml(xml=nil) + xml ||= Builder::XmlMarkup.new(indent: 2) + attrs = {} + attrs[:type] = self.type unless self.type.nil? + xml.icon self.value, attrs + end + end +end + +module Kernel + def Icon(value) + case value + when Alphred::Icon then value + when String then Alphred::Icon.new(value: value) + when Hash then Alphred::Icon.new(**value) + end + end +end diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/alphred-1.1.0/lib/alphred/item.rb b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/alphred-1.1.0/lib/alphred/item.rb new file mode 100644 index 0000000..d986ddb --- /dev/null +++ b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/alphred-1.1.0/lib/alphred/item.rb @@ -0,0 +1,59 @@ +require "builder" + +require_relative "mods" +require_relative "text" + +module Alphred + class Item + VALID_TYPES = %i[ default file file_skipcheck ] + + attr_accessor *%i[ uid arg valid autocomplete title subtitle mods icon text ] + + def initialize(**kwargs) + raise ArgumentError.new("missing keyword: title") unless kwargs.has_key?(:title) + + @title = kwargs[:title] + + %i[ uid arg valid autocomplete subtitle ].each do |attr| + self.instance_variable_set("@#{attr}", kwargs[attr]) if kwargs.has_key?(attr) + end + + @icon = Icon(kwargs[:icon]) if kwargs.has_key?(:icon) + @text = Text.new(kwargs[:text]) if kwargs.has_key?(:text) + @mods = Mods.new(kwargs[:mods]) if kwargs.has_key?(:mods) + + self.type = kwargs[:type] if kwargs.has_key?(:type) + end + + def type=(type) + raise ArgumentError.new("`type` must be one of #{VALID_TYPES}") unless type.nil? || VALID_TYPES.include?(type) + + @type = type + end + + def type + @type && @type.to_s.gsub(?_, ?:) + end + + def to_xml(xml=nil) + xml ||= Builder::XmlMarkup.new(indent: 2) + xml.item self.attrs do + xml.title self.title + xml.subtitle self.subtitle unless self.subtitle.nil? + self.icon.to_xml(xml) unless self.icon.nil? + self.mods.to_xml(xml) unless self.mods.nil? + self.text.to_xml(xml) unless self.text.nil? + end + end + + def attrs + attrs = {} + %i[ uid arg autocomplete type ].each do |attr| + value = self.send(attr) + attrs[attr] = value unless value.nil? + end + attrs[:valid] = (self.valid) ? "yes" : "no" unless self.valid.nil? + attrs + end + end +end diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/alphred-1.1.0/lib/alphred/items.rb b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/alphred-1.1.0/lib/alphred/items.rb new file mode 100644 index 0000000..71dd6e5 --- /dev/null +++ b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/alphred-1.1.0/lib/alphred/items.rb @@ -0,0 +1,23 @@ +require "builder" +require "delegate" + +module Alphred + class Items < DelegateClass(Array) + attr_reader :items + + def initialize(*items) + @items = items + super(@items) + end + + def to_xml + xml = Builder::XmlMarkup.new(indent: 2) + xml.instruct! :xml + xml.items do + self.items.each do |item| + item.to_xml(xml) + end + end + end + end +end diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/alphred-1.1.0/lib/alphred/mods.rb b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/alphred-1.1.0/lib/alphred/mods.rb new file mode 100644 index 0000000..01da3f0 --- /dev/null +++ b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/alphred-1.1.0/lib/alphred/mods.rb @@ -0,0 +1,22 @@ +require "builder" + +module Alphred + class Mods + MODS = %i[ shift fn ctrl alt cmd ] + + attr_accessor *MODS + + def initialize(**kwargs) + MODS.each do |mod| + self.instance_variable_set("@#{mod}", kwargs[mod]) if kwargs.has_key?(mod) + end + end + + def to_xml(xml) + MODS.each do |mod| + value = self.send(mod) + xml.subtitle value, mod: mod unless value.nil? + end + end + end +end diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/alphred-1.1.0/lib/alphred/tasks.rb b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/alphred-1.1.0/lib/alphred/tasks.rb new file mode 100644 index 0000000..1e4bde8 --- /dev/null +++ b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/alphred-1.1.0/lib/alphred/tasks.rb @@ -0,0 +1,40 @@ +require "rake" + +namespace :alphred do + desc "Prepare a release, named after the directory" + task :release, [:version] => [:tag, :package] + + desc "Tag the current commit in git with VERSION" + task :tag, [:version] do |t, args| + version = args[:version] + + git_status = `git status --porcelain` + fail <<-FAIL unless git_status.empty? +Can't tag #{version}: dirty working directory. + FAIL + + sh "git tag #{version}" + end + + desc "Create an alfredworkflow package with vendored dependencies" + task :package do + restore_bundler_config do + cmd = "bundle install --standalone --path vendor/bundle --without development test" + sh "chruby-exec 2.0.0 -- #{cmd}" + end + sh "zip -r #{application_dir.pathmap("%n.alfredworkflow")} *" + rm_rf "vendor" + end + + def application_dir + Rake.application.original_dir + end + + def restore_bundler_config + path = File.join(application_dir, ".bundle", "config") + config = File.read(path) + yield + ensure + File.write(path, config, mode: ?w) + end +end diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/alphred-1.1.0/lib/alphred/text.rb b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/alphred-1.1.0/lib/alphred/text.rb new file mode 100644 index 0000000..0f24576 --- /dev/null +++ b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/alphred-1.1.0/lib/alphred/text.rb @@ -0,0 +1,17 @@ +require "builder" + +module Alphred + class Text + attr_accessor *%i[ copy largetype ] + + def initialize(copy: nil, largetype: nil) + @copy = copy + @largetype = largetype + end + + def to_xml(xml) + xml.text copy, type: :copy unless self.copy.nil? + xml.text largetype, type: :largetype unless self.largetype.nil? + end + end +end diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/alphred-1.1.0/lib/alphred/version.rb b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/alphred-1.1.0/lib/alphred/version.rb new file mode 100644 index 0000000..a9c6d1c --- /dev/null +++ b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/alphred-1.1.0/lib/alphred/version.rb @@ -0,0 +1,3 @@ +module Alphred + VERSION = "1.1.0" +end diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/CHANGES b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/CHANGES new file mode 100644 index 0000000..0f608fe --- /dev/null +++ b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/CHANGES @@ -0,0 +1,107 @@ += Change Log + +== Version 3.2.0 + +* Ruby 2.0 compatibility changes. + +* Allow single quoted attributes. + +== Version 3.1.0 + +* Included the to_xs arity patch needed for weird Rails compatibility + issue. + +* Escaping newlines in attributes now. + +* Allow method caching + +== Version 3.0.0 + +* Ruby 1.9 compatiblity issues. + +== Version 2.2.0 + +* Applied patch from Thijs van der Vossen to allow UTF-8 encoded + output when the encoding is UTF-8 and $KCODE is UTF8. + +== Version 2.1.2 + +* Fixed bug where private methods in kernel could leak through using + tag!(). Thanks to Hagen Overdick for finding and diagnosing this + bug. + +== Version 2.1.1 + +* Fixed typo in XmlMarkup class docs (ident => indent). (from Martin + Fowler). +* Removed extra directory indirection from legacy CVS to SVN move. +* Removed some extraneous tabs from source. +* Fixed test on private methods in blankslate to differentiate between + targetted and untargetted private methods. +* Removed legacy capture of @self in XmlBase (@self was used back when + we used instance eval). +* Added additional tests for global functions (both direct and included). + +== Version 2.1.0 + +* Fixed bug in BlankSlate where including a module into Object could + cause methods to leak into BlankSlate. +* Made BlankSlate available as its own gem. Currently the builder gem + still directly includes the BlankSlate code. +* Added reveal capability to BlankSlate. + +== Version 2.0.0 + +* Added doc directory +* Added unit tests for XmlEvents. +* Added XChar module and used it in the _escape method. +* Attributes are now quoted by default when strings. Use Symbol + attribute values for unquoted behavior. + +== Version 1.2.4 + +* Added a cdata! command to an XML Builder (from Josh Knowles). + +== Version 1.2.3 + +The attributes in the instruction will be ordered: +version, encoding, standalone. + +== Version 1.2.2 + +Another fix for BlankSlate. The Kernal/Object traps added in 1.2.1 +failed when a method was defined late more than once. Since the +method was already marked as removed, another attempt to undefine it +raised an error. The fix was to check the list of instance methods +before attempting the undef operation. Thanks to Florian Gross and +David Heinemeier Hansson for the patch. + +== Version 1.2.1 + +BlankSlate now traps method definitions in Kernel and Object to avoid +late method definitions inadvertently becoming part of the definition +of BlankSlate as well. + +== Version 1.2.0 + +Improved support for entity declarations by allowing nested +declarations and removal of the attribute processing. + +Added namespace support. + +== Version 1.1.0 + +Added support for comments, entity declarations and processing instructions. + +== Version 1.0.0 + +Removed use of instace_eval making the use of XmlMarkup much +less prone to error. + +== Version 0.1.1 + +Bug fix. + +== Version 0.1.0 + +Initial version release. diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/MIT-LICENSE b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/MIT-LICENSE new file mode 100644 index 0000000..7d9be51 --- /dev/null +++ b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/MIT-LICENSE @@ -0,0 +1,20 @@ +Copyright (c) 2003-2012 Jim Weirich (jim.weirich@gmail.com) + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/README.md b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/README.md new file mode 100644 index 0000000..81928cc --- /dev/null +++ b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/README.md @@ -0,0 +1,258 @@ +# Project: Builder + +## Goal + +Provide a simple way to create XML markup and data structures. + +## Classes + +Builder::XmlMarkup:: Generate XML markup notation +Builder::XmlEvents:: Generate XML events (i.e. SAX-like) + +**Notes:** + +* An Builder::XmlTree class to generate XML tree + (i.e. DOM-like) structures is also planned, but not yet implemented. + Also, the events builder is currently lagging the markup builder in + features. + +## Usage + +```ruby + require 'rubygems' + require_gem 'builder', '~> 2.0' + + builder = Builder::XmlMarkup.new +` xml = builder.person { |b| b.name("Jim"); b.phone("555-1234") } + xml #=> Jim555-1234 +``` + +or + +```ruby + require 'rubygems' + require_gem 'builder' + + builder = Builder::XmlMarkup.new(:target=>STDOUT, :indent=>2) + builder.person { |b| b.name("Jim"); b.phone("555-1234") } + # + # Prints: + # + # Jim + # 555-1234 + # +``` + +## Compatibility + +### Version 2.0.0 Compatibility Changes + +Version 2.0.0 introduces automatically escaped attribute values for +the first time. Versions prior to 2.0.0 did not insert escape +characters into attribute values in the XML markup. This allowed +attribute values to explicitly reference entities, which was +occasionally used by a small number of developers. Since strings +could always be explicitly escaped by hand, this was not a major +restriction in functionality. + +However, it did surprise most users of builder. Since the body text is +normally escaped, everybody expected the attribute values to be +escaped as well. Escaped attribute values were the number one support +request on the 1.x Builder series. + +Starting with Builder version 2.0.0, all attribute values expressed as +strings will be processed and the appropriate characters will be +escaped (e.g. "&" will be translated to "&"). Attribute values +that are expressed as Symbol values will not be processed for escaped +characters and will be unchanged in output. (Yes, this probably counts +as Symbol abuse, but the convention is convenient and flexible). + +Example: + +```ruby + xml = Builder::XmlMarkup.new + xml.sample(:escaped=>"This&That", :unescaped=>:"Here&There") + xml.target! => + +``` + +### Version 1.0.0 Compatibility Changes + +Version 1.0.0 introduces some changes that are not backwards +compatible with earlier releases of builder. The main areas of +incompatibility are: + +* Keyword based arguments to +new+ (rather than positional based). It + was found that a developer would often like to specify indentation + without providing an explicit target, or specify a target without + indentation. Keyword based arguments handle this situation nicely. + +* Builder must now be an explicit target for markup tags. Instead of + writing + +```ruby + xml_markup = Builder::XmlMarkup.new + xml_markup.div { strong("text") } +``` + + you need to write + +```ruby + xml_markup = Builder::XmlMarkup.new + xml_markup.div { xml_markup.strong("text") } +``` + +* The builder object is passed as a parameter to all nested markup + blocks. This allows you to create a short alias for the builder + object that can be used within the block. For example, the previous + example can be written as: + +```ruby + xml_markup = Builder::XmlMarkup.new + xml_markup.div { |xml| xml.strong("text") } +``` + +* If you have both a pre-1.0 and a post-1.0 gem of builder installed, + you can choose which version to use through the RubyGems + +require_gem+ facility. + +```ruby + require_gem 'builder', "~> 0.0" # Gets the old version + require_gem 'builder', "~> 1.0" # Gets the new version +``` + +## Features + +* XML Comments are supported ... + +```ruby + xml_markup.comment! "This is a comment" + #=> +``` + +* XML processing instructions are supported ... + +```ruby + xml_markup.instruct! :xml, :version=>"1.0", :encoding=>"UTF-8" + #=> +``` + + If the processing instruction is omitted, it defaults to "xml". + When the processing instruction is "xml", the defaults attributes + are: + + version: 1.0 + encoding: "UTF-8" + + (NOTE: if the encoding is set to "UTF-8" and $KCODE is set to + "UTF8", then Builder will emit UTF-8 encoded strings rather than + encoding non-ASCII characters as entities.) + +* XML entity declarations are now supported to a small degree. + +```ruby + xml_markup.declare! :DOCTYPE, :chapter, :SYSTEM, "../dtds/chapter.dtd" + #=> +``` + + The parameters to a declare! method must be either symbols or + strings. Symbols are inserted without quotes, and strings are + inserted with double quotes. Attribute-like arguments in hashes are + not allowed. + + If you need to have an argument to declare! be inserted without + quotes, but the argument does not conform to the typical Ruby + syntax for symbols, then use the :"string" form to specify a symbol. + + For example: + +```ruby + xml_markup.declare! :ELEMENT, :chapter, :"(title,para+)" + #=> +``` + + Nested entity declarations are allowed. For example: + +```ruby + @xml_markup.declare! :DOCTYPE, :chapter do |x| + x.declare! :ELEMENT, :chapter, :"(title,para+)" + x.declare! :ELEMENT, :title, :"(#PCDATA)" + x.declare! :ELEMENT, :para, :"(#PCDATA)" + end + + #=> + + + + + ]> +``` + +* Some support for XML namespaces is now available. If the first + argument to a tag call is a symbol, it will be joined to the tag to + produce a namespace:tag combination. It is easier to show this than + describe it. + +```ruby + xml.SOAP :Envelope do ... end +``` + + Just put a space before the colon in a namespace to produce the + right form for builder (e.g. "SOAP:Envelope" => + "xml.SOAP :Envelope") + +* String attribute values are now escaped by default by + Builder (NOTE: this is _new_ behavior as of version 2.0). + + However, occasionally you need to use entities in attribute values. + Using a symbol (rather than a string) for an attribute value will + cause Builder to not run its quoting/escaping algorithm on that + particular value. + + (Note: The +escape_attrs+ option for builder is now + obsolete). + + Example: + +```ruby + xml = Builder::XmlMarkup.new + xml.sample(:escaped=>"This&That", :unescaped=>:"Here&There") + xml.target! => + +``` + +* UTF-8 Support + + Builder correctly translates UTF-8 characters into valid XML. (New + in version 2.0.0). Thanks to Sam Ruby for the translation code. + + You can get UTF-8 encoded output by making sure that the XML + encoding is set to "UTF-8" and that the $KCODE variable is set to + "UTF8". + +```ruby + $KCODE = 'UTF8' + xml = Builder::Markup.new + xml.instruct!(:xml, :encoding => "UTF-8") + xml.sample("Iñtërnâtiônàl") + xml.target! => + "Iñtërnâtiônàl" +``` + +## Links + +| Description | Link | +| :----: | :----: | +| Documents | http://builder.rubyforge.org/ | +| Github Clone | git://github.com/jimweirich/builder.git | +| Issue / Bug Reports | https://github.com/jimweirich/builder/issues?state=open | + +## Contact + +| Description | Value | +| :----: | :----: | +| Author | Jim Weirich | +| Email | jim.weirich@gmail.com | +| Home Page | http://onestepback.org | +| License | MIT Licence (http://www.opensource.org/licenses/mit-license.html) | diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/Rakefile b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/Rakefile new file mode 100644 index 0000000..b082fbe --- /dev/null +++ b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/Rakefile @@ -0,0 +1,195 @@ +# Rakefile for rake -*- ruby -*- + +# Copyright 2004, 2005, 2006 by Jim Weirich (jim@weirichhouse.org). +# All rights reserved. + +# Permission is granted for use, copying, modification, distribution, +# and distribution of modified versions of this work as long as the +# above copyright notice is included. + +require 'rake/clean' +require 'rake/testtask' +begin + require 'rubygems' + require 'rubygems/package_task' + require 'rdoc/task' +rescue Exception + nil +end + +require './lib/builder/version' + +# Determine the current version of the software + +CLOBBER.include('pkg', 'html') +CLEAN.include('pkg/builder-*').include('pkg/blankslate-*').exclude('pkg/*.gem') + +PKG_VERSION = Builder::VERSION + +SRC_RB = FileList['lib/**/*.rb'] + +# The default task is run if rake is given no explicit arguments. + +desc "Default Task" +task :default => :test_all + +# Test Tasks --------------------------------------------------------- + +desc "Run all tests" +task :test_all => [:test_units] +task :ta => [:test_all] + +task :tu => [:test_units] + +Rake::TestTask.new("test_units") do |t| + t.test_files = FileList['test/test*.rb'] + t.libs << "." + t.verbose = false +end + +# Create a task to build the RDOC documentation tree. + +if defined?(RDoc) + rd = RDoc::Task.new("rdoc") { |rdoc| + rdoc.rdoc_dir = 'html' + rdoc.title = "Builder for Markup" + rdoc.options << '--line-numbers' << '--inline-source' << '--main' << 'README.rdoc' + rdoc.rdoc_files.include('lib/**/*.rb', '[A-Z]*', 'doc/**/*.rdoc').exclude("TAGS") + rdoc.template = 'doc/jamis.rb' + } +else + rd = Struct.new(:rdoc_files).new([]) +end + +# ==================================================================== +# Create a task that will package the Rake software into distributable +# gem files. + +PKG_FILES = FileList[ + '[A-Z]*', + 'doc/**/*', + 'lib/**/*.rb', + 'test/**/*.rb', + 'rakelib/**/*' +] +PKG_FILES.exclude('test/test_cssbuilder.rb') +PKG_FILES.exclude('lib/builder/css.rb') +PKG_FILES.exclude('TAGS') + +BLANKSLATE_FILES = FileList[ + 'lib/blankslate.rb', + 'test/test_blankslate.rb' +] + +if ! defined?(Gem) + puts "Package Target requires RubyGEMs" +else + spec = Gem::Specification.new do |s| + + #### Basic information. + + s.name = 'builder' + s.version = PKG_VERSION + s.summary = "Builders for MarkUp." + s.description = %{\ +Builder provides a number of builder objects that make creating structured data +simple to do. Currently the following builder objects are supported: + +* XML Markup +* XML Events +} + + s.files = PKG_FILES.to_a + s.require_path = 'lib' + + s.test_files = PKG_FILES.select { |fn| fn =~ /^test\/test/ } + + s.has_rdoc = true + s.extra_rdoc_files = rd.rdoc_files.reject { |fn| fn =~ /\.rb$/ }.to_a + s.rdoc_options << + '--title' << 'Builder -- Easy XML Building' << + '--main' << 'README.rdoc' << + '--line-numbers' + + s.author = "Jim Weirich" + s.email = "jim.weirich@gmail.com" + s.homepage = "http://onestepback.org" + s.license = 'MIT' + end + + blankslate_spec = Gem::Specification.new do |s| + + #### Basic information. + + s.name = 'blankslate' + s.version = PKG_VERSION + s.summary = "Blank Slate base class." + s.description = %{\ +BlankSlate provides a base class where almost all of the methods from Object and +Kernel have been removed. This is useful when providing proxy object and other +classes that make heavy use of method_missing. +} + + s.files = BLANKSLATE_FILES.to_a + s.require_path = 'lib' + + s.test_files = PKG_FILES.select { |fn| fn =~ /^test\/test/ } + + s.has_rdoc = true + s.extra_rdoc_files = rd.rdoc_files.reject { |fn| fn =~ /\.rb$/ }.to_a + s.rdoc_options << + '--title' << 'BlankSlate -- Base Class for building proxies.' << + '--main' << 'README.rdoc' << + '--line-numbers' + + s.author = "Jim Weirich" + s.email = "jim.weirich@gmail.com" + s.homepage = "http://onestepback.org" + s.license = 'MIT' + end + + namespace 'builder' do + Gem::PackageTask.new(spec) do |t| + t.need_tar = false + end + end + + namespace 'blankslate' do + Gem::PackageTask.new(blankslate_spec) do |t| + t.need_tar = false + end + end + + task :package => [:remove_tags, 'builder:package', 'blankslate:package'] +end + +task :remove_tags do + rm "TAGS" rescue nil +end + +# RCov --------------------------------------------------------------- +begin + require 'rcov/rcovtask' + + Rcov::RcovTask.new do |t| + t.libs << "test" + t.rcov_opts = [ + '-xRakefile', '--text-report' + ] + t.test_files = FileList[ + 'test/test*.rb' + ] + t.output_dir = 'coverage' + t.verbose = true + end +rescue LoadError + # No rcov available +end + +desc "Install the jamis RDoc template" +task :install_jamis_template do + require 'rbconfig' + dest_dir = File.join(Config::CONFIG['rubylibdir'], "rdoc/generators/template/html") + fail "Unabled to write to #{dest_dir}" unless File.writable?(dest_dir) + install "doc/jamis.rb", dest_dir, :verbose => true +end diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/doc/jamis.rb b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/doc/jamis.rb new file mode 100644 index 0000000..a00b583 --- /dev/null +++ b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/doc/jamis.rb @@ -0,0 +1,591 @@ +module RDoc +module Page + +FONTS = "\"Bitstream Vera Sans\", Verdana, Arial, Helvetica, sans-serif" + +STYLE = < pre { + padding: 0.5em; + border: 1px dotted black; + background: #FFE; +} + +CSS + +XHTML_PREAMBLE = %{ + +} + +HEADER = XHTML_PREAMBLE + < + + %title% + + + + + + + +ENDHEADER + +FILE_PAGE = < + + + + +
File
%short_name%
+ + + + + + + + + +
Path:%full_path% +IF:cvsurl +  (CVS) +ENDIF:cvsurl +
Modified:%dtm_modified%
+
+ +
+HTML + +################################################################### + +CLASS_PAGE = < + %classmod%
%full_name% + + + + + + +IF:parent + + + + +ENDIF:parent +
In: +START:infiles +HREF:full_path_url:full_path: +IF:cvsurl + (CVS) +ENDIF:cvsurl +END:infiles +
Parent: +IF:par_url + +ENDIF:par_url +%parent% +IF:par_url + +ENDIF:par_url +
+ + + +HTML + +################################################################### + +METHOD_LIST = < +IF:diagram +
+ %diagram% +
+ENDIF:diagram + +IF:description +

%description%
+ENDIF:description + +IF:requires +
Required Files
+
    +START:requires +
  • HREF:aref:name:
  • +END:requires +
+ENDIF:requires + +IF:toc +
Contents
+
+ENDIF:toc + +IF:methods +
Methods
+
    +START:methods +
  • HREF:aref:name:
  • +END:methods +
+ENDIF:methods + +IF:includes +
Included Modules
+
    +START:includes +
  • HREF:aref:name:
  • +END:includes +
+ENDIF:includes + +START:sections +IF:sectitle + +IF:seccomment +
+%seccomment% +
+ENDIF:seccomment +ENDIF:sectitle + +IF:classlist +
Classes and Modules
+ %classlist% +ENDIF:classlist + +IF:constants +
Constants
+ +START:constants + + + + + +IF:desc + + + + +ENDIF:desc +END:constants +
%name%=%value%
 %desc%
+ENDIF:constants + +IF:attributes +
Attributes
+ +START:attributes + + + + + +END:attributes +
+IF:rw +[%rw%] +ENDIF:rw + %name%%a_desc%
+ENDIF:attributes + +IF:method_list +START:method_list +IF:methods +
%type% %category% methods
+START:methods +
+
+IF:callseq + %callseq% +ENDIF:callseq +IFNOT:callseq + %name%%params% +ENDIF:callseq +IF:codeurl +[ source ] +ENDIF:codeurl +
+IF:m_desc +
+ %m_desc% +
+ENDIF:m_desc +IF:aka +
+ This method is also aliased as +START:aka + %name% +END:aka +
+ENDIF:aka +IF:sourcecode +
+ +
+
+%sourcecode%
+
+
+
+ENDIF:sourcecode +
+END:methods +ENDIF:methods +END:method_list +ENDIF:method_list +END:sections + +HTML + +FOOTER = < + +ENDFOOTER + +BODY = HEADER + < + +
+ #{METHOD_LIST} +
+ + #{FOOTER} +ENDBODY + +########################## Source code ########################## + +SRC_PAGE = XHTML_PREAMBLE + < +%title% + + + + +
%code%
+ + +HTML + +########################## Index ################################ + +FR_INDEX_BODY = < + + + + + + + +
+START:entries +%name%
+END:entries +
+ +HTML + +CLASS_INDEX = FILE_INDEX +METHOD_INDEX = FILE_INDEX + +INDEX = XHTML_PREAMBLE + < + + %title% + + + + + + + + + +IF:inline_source + +ENDIF:inline_source +IFNOT:inline_source + + + + +ENDIF:inline_source + + <body bgcolor="white"> + Click <a href="html/index.html">here</a> for a non-frames + version of this page. + </body> + + + + +HTML + +end +end + + diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/doc/releases/builder-1.2.4.rdoc b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/doc/releases/builder-1.2.4.rdoc new file mode 100644 index 0000000..a1cf54f --- /dev/null +++ b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/doc/releases/builder-1.2.4.rdoc @@ -0,0 +1,31 @@ += Builder 1.2.4 Released. + +Added a "CDATA" method to the XML Markup builder (from Josh Knowles). + +== What is Builder? + +Builder::XmlMarkup allows easy programmatic creation of XML markup. +For example: + + builder = Builder::XmlMarkup.new(:target=>STDOUT, :indent=>2) + builder.person { |b| b.name("Jim"); b.phone("555-1234") } + puts builder.target! + +will generate: + + + Jim + 555-1234 + + +== Availability + +The easiest way to get and install builder is via RubyGems ... + + gem install builder (you may need root/admin privileges) + +== Thanks + +* Josh Knowles for the cdata! patch. + +-- Jim Weirich diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/doc/releases/builder-2.0.0.rdoc b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/doc/releases/builder-2.0.0.rdoc new file mode 100644 index 0000000..ed9e086 --- /dev/null +++ b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/doc/releases/builder-2.0.0.rdoc @@ -0,0 +1,46 @@ += Builder 2.0.0 Released. + +== Changes in 2.0.0 + +* UTF-8 characters in data are now correctly translated to their XML + equivalents. (Thanks to Sam Ruby) + +* Attribute values are now escaped by default. See the README + file for details. + +NOTE: The escaping attribute values by default is different +than in previous releases of Builder. This makes version 2.0.0 +somewhat incompatible with the 1.x series of Builder. If you use "&", +"<", or ">" in attributes values, you may have to change your +code. (Essentially you remove the manual escaping. The new way is +easier, believe me). + +== What is Builder? + +Builder::XmlMarkup is a library that allows easy programmatic creation +of XML markup. For example: + + builder = Builder::XmlMarkup.new(:target=>STDOUT, :indent=>2) + builder.person { |b| b.name("Jim"); b.phone("555-1234") } + +will generate: + + + Jim + 555-1234 + + +== Availability + +The easiest way to get and install builder is via RubyGems ... + + gem install builder (you may need root/admin privileges) + +== Thanks + +* Sam Ruby for the XChar module and the related UTF-8 translation + tools. +* Also to Sam Ruby for gently persuading me to start quoting attribute + values. + +-- Jim Weirich diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/doc/releases/builder-2.1.1.rdoc b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/doc/releases/builder-2.1.1.rdoc new file mode 100755 index 0000000..dbbf121 --- /dev/null +++ b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/doc/releases/builder-2.1.1.rdoc @@ -0,0 +1,58 @@ += Builder 2.1.1 Released. + +Release 2.1.1 of Builder is mainly a bug fix release. + +== Changes in 2.1.1 + +* Added reveal capability to BlankSlate. + +* Fixed a bug in BlankSlate where including a module into Object could + cause methods to leak into BlankSlate. + +* Fixed typo in XmlMarkup class docs (from Martin Fowler). + +* Fixed test on private methods to differentiate between targetted and + untargetted private methods. + +* Removed legacy capture of @self in XmlBase (@self was used back when + we used instance eval). + +* Added additional tests for global functions (both direct and + included). + +* Several misc internal cleanups, including rearranging the source + code tree. + +NOTE: The escaping attribute values by default is different +than in previous releases of Builder. This makes version 2.0.x +somewhat incompatible with the 1.x series of Builder. If you use "&", +"<", or ">" in attributes values, you may have to change your +code. (Essentially you remove the manual escaping. The new way is +easier, believe me). + +== What is Builder? + +Builder::XmlMarkup is a library that allows easy programmatic creation +of XML markup. For example: + + builder = Builder::XmlMarkup.new(:target=>STDOUT, :indent=>2) + builder.person { |b| b.name("Jim"); b.phone("555-1234") } + +will generate: + + + Jim + 555-1234 + + +== Availability + +The easiest way to get and install builder is via RubyGems ... + + gem install builder (you may need root/admin privileges) + +== Thanks + +* Martin Fowler for spotting some typos in the documentation. + +-- Jim Weirich diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/lib/blankslate.rb b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/lib/blankslate.rb new file mode 100644 index 0000000..931c8a7 --- /dev/null +++ b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/lib/blankslate.rb @@ -0,0 +1,137 @@ +#!/usr/bin/env ruby +#-- +# Copyright 2004, 2006 by Jim Weirich (jim@weirichhouse.org). +# All rights reserved. + +# Permission is granted for use, copying, modification, distribution, +# and distribution of modified versions of this work as long as the +# above copyright notice is included. +#++ + +class String + if instance_methods.first.is_a?(Symbol) + def _blankslate_as_name + to_sym + end + else + def _blankslate_as_name + self + end + end +end + +class Symbol + if instance_methods.first.is_a?(Symbol) + def _blankslate_as_name + self + end + else + def _blankslate_as_name + to_s + end + end +end + +###################################################################### +# BlankSlate provides an abstract base class with no predefined +# methods (except for \_\_send__ and \_\_id__). +# BlankSlate is useful as a base class when writing classes that +# depend upon method_missing (e.g. dynamic proxies). +# +class BlankSlate + class << self + + # Hide the method named +name+ in the BlankSlate class. Don't + # hide +instance_eval+ or any method beginning with "__". + def hide(name) + warn_level = $VERBOSE + $VERBOSE = nil + if instance_methods.include?(name._blankslate_as_name) && + name !~ /^(__|instance_eval$)/ + @hidden_methods ||= {} + @hidden_methods[name.to_sym] = instance_method(name) + undef_method name + end + ensure + $VERBOSE = warn_level + end + + def find_hidden_method(name) + @hidden_methods ||= {} + @hidden_methods[name] || superclass.find_hidden_method(name) + end + + # Redefine a previously hidden method so that it may be called on a blank + # slate object. + def reveal(name) + hidden_method = find_hidden_method(name) + fail "Don't know how to reveal method '#{name}'" unless hidden_method + define_method(name, hidden_method) + end + end + + instance_methods.each { |m| hide(m) } +end + +###################################################################### +# Since Ruby is very dynamic, methods added to the ancestors of +# BlankSlate after BlankSlate is defined will show up in the +# list of available BlankSlate methods. We handle this by defining a +# hook in the Object and Kernel classes that will hide any method +# defined after BlankSlate has been loaded. +# +module Kernel + class << self + alias_method :blank_slate_method_added, :method_added + + # Detect method additions to Kernel and remove them in the + # BlankSlate class. + def method_added(name) + result = blank_slate_method_added(name) + return result if self != Kernel + BlankSlate.hide(name) + result + end + end +end + +###################################################################### +# Same as above, except in Object. +# +class Object + class << self + alias_method :blank_slate_method_added, :method_added + + # Detect method additions to Object and remove them in the + # BlankSlate class. + def method_added(name) + result = blank_slate_method_added(name) + return result if self != Object + BlankSlate.hide(name) + result + end + + def find_hidden_method(name) + nil + end + end +end + +###################################################################### +# Also, modules included into Object need to be scanned and have their +# instance methods removed from blank slate. In theory, modules +# included into Kernel would have to be removed as well, but a +# "feature" of Ruby prevents late includes into modules from being +# exposed in the first place. +# +class Module + alias blankslate_original_append_features append_features + def append_features(mod) + result = blankslate_original_append_features(mod) + return result if mod != Object + instance_methods.each do |name| + BlankSlate.hide(name) + end + result + end +end diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/lib/builder.rb b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/lib/builder.rb new file mode 100644 index 0000000..9719277 --- /dev/null +++ b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/lib/builder.rb @@ -0,0 +1,13 @@ +#!/usr/bin/env ruby + +#-- +# Copyright 2004 by Jim Weirich (jim@weirichhouse.org). +# All rights reserved. + +# Permission is granted for use, copying, modification, distribution, +# and distribution of modified versions of this work as long as the +# above copyright notice is included. +#++ + +require 'builder/xmlmarkup' +require 'builder/xmlevents' diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/lib/builder/blankslate.rb b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/lib/builder/blankslate.rb new file mode 100644 index 0000000..67d2f24 --- /dev/null +++ b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/lib/builder/blankslate.rb @@ -0,0 +1,23 @@ +#!/usr/bin/env ruby +#-- +# Copyright 2004, 2006 by Jim Weirich (jim@weirichhouse.org). +# All rights reserved. + +# Permission is granted for use, copying, modification, distribution, +# and distribution of modified versions of this work as long as the +# above copyright notice is included. +#++ + +###################################################################### +# BlankSlate has been promoted to a top level name and is now +# available as a standalone gem. We make the name available in the +# Builder namespace for compatibility. +# +module Builder + if Object::const_defined?(:BasicObject) + BlankSlate = ::BasicObject + else + require 'blankslate' + BlankSlate = ::BlankSlate + end +end diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/lib/builder/version.rb b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/lib/builder/version.rb new file mode 100644 index 0000000..cbe7bc4 --- /dev/null +++ b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/lib/builder/version.rb @@ -0,0 +1,8 @@ +module Builder + VERSION_NUMBERS = [ + VERSION_MAJOR = 3, + VERSION_MINOR = 2, + VERSION_BUILD = 2, + ] + VERSION = VERSION_NUMBERS.join(".") +end diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/lib/builder/xchar.rb b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/lib/builder/xchar.rb new file mode 100644 index 0000000..c7daa48 --- /dev/null +++ b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/lib/builder/xchar.rb @@ -0,0 +1,197 @@ +#!/usr/bin/env ruby + +# The XChar library is provided courtesy of Sam Ruby (See +# http://intertwingly.net/stories/2005/09/28/xchar.rb) + +# -------------------------------------------------------------------- + +# If the Builder::XChar module is not currently defined, fail on any +# name clashes in standard library classes. + +module Builder + def self.check_for_name_collision(klass, method_name, defined_constant=nil) + if klass.method_defined?(method_name.to_s) + fail RuntimeError, + "Name Collision: Method '#{method_name}' is already defined in #{klass}" + end + end +end + +if ! defined?(Builder::XChar) and ! String.method_defined?(:encode) + Builder.check_for_name_collision(String, "to_xs") + Builder.check_for_name_collision(Fixnum, "xchr") +end + +###################################################################### +module Builder + + #################################################################### + # XML Character converter, from Sam Ruby: + # (see http://intertwingly.net/stories/2005/09/28/xchar.rb). + # + module XChar # :nodoc: + + # See + # http://intertwingly.net/stories/2004/04/14/i18n.html#CleaningWindows + # for details. + CP1252 = { # :nodoc: + 128 => 8364, # euro sign + 130 => 8218, # single low-9 quotation mark + 131 => 402, # latin small letter f with hook + 132 => 8222, # double low-9 quotation mark + 133 => 8230, # horizontal ellipsis + 134 => 8224, # dagger + 135 => 8225, # double dagger + 136 => 710, # modifier letter circumflex accent + 137 => 8240, # per mille sign + 138 => 352, # latin capital letter s with caron + 139 => 8249, # single left-pointing angle quotation mark + 140 => 338, # latin capital ligature oe + 142 => 381, # latin capital letter z with caron + 145 => 8216, # left single quotation mark + 146 => 8217, # right single quotation mark + 147 => 8220, # left double quotation mark + 148 => 8221, # right double quotation mark + 149 => 8226, # bullet + 150 => 8211, # en dash + 151 => 8212, # em dash + 152 => 732, # small tilde + 153 => 8482, # trade mark sign + 154 => 353, # latin small letter s with caron + 155 => 8250, # single right-pointing angle quotation mark + 156 => 339, # latin small ligature oe + 158 => 382, # latin small letter z with caron + 159 => 376, # latin capital letter y with diaeresis + } + + # See http://www.w3.org/TR/REC-xml/#dt-chardata for details. + PREDEFINED = { + 38 => '&', # ampersand + 60 => '<', # left angle bracket + 62 => '>', # right angle bracket + } + + # See http://www.w3.org/TR/REC-xml/#charsets for details. + VALID = [ + 0x9, 0xA, 0xD, + (0x20..0xD7FF), + (0xE000..0xFFFD), + (0x10000..0x10FFFF) + ] + + # http://www.fileformat.info/info/unicode/char/fffd/index.htm + REPLACEMENT_CHAR = + if String.method_defined?(:encode) + "\uFFFD" + elsif $KCODE == 'UTF8' + "\xEF\xBF\xBD" + else + '*' + end + end + +end + + +if String.method_defined?(:encode) + module Builder + module XChar # :nodoc: + CP1252_DIFFERENCES, UNICODE_EQUIVALENT = Builder::XChar::CP1252.each. + inject([[],[]]) {|(domain,range),(key,value)| + [domain << key,range << value] + }.map {|seq| seq.pack('U*').force_encoding('utf-8')} + + XML_PREDEFINED = Regexp.new('[' + + Builder::XChar::PREDEFINED.keys.pack('U*').force_encoding('utf-8') + + ']') + + INVALID_XML_CHAR = Regexp.new('[^'+ + Builder::XChar::VALID.map { |item| + case item + when Fixnum + [item].pack('U').force_encoding('utf-8') + when Range + [item.first, '-'.ord, item.last].pack('UUU').force_encoding('utf-8') + end + }.join + + ']') + + ENCODING_BINARY = Encoding.find('BINARY') + ENCODING_UTF8 = Encoding.find('UTF-8') + ENCODING_ISO1 = Encoding.find('ISO-8859-1') + + # convert a string to valid UTF-8, compensating for a number of + # common errors. + def XChar.unicode(string) + if string.encoding == ENCODING_BINARY + if string.ascii_only? + string + else + string = string.clone.force_encoding(ENCODING_UTF8) + if string.valid_encoding? + string + else + string.encode(ENCODING_UTF8, ENCODING_ISO1) + end + end + + elsif string.encoding == ENCODING_UTF8 + if string.valid_encoding? + string + else + string.encode(ENCODING_UTF8, ENCODING_ISO1) + end + + else + string.encode(ENCODING_UTF8) + end + end + + # encode a string per XML rules + def XChar.encode(string) + unicode(string). + tr(CP1252_DIFFERENCES, UNICODE_EQUIVALENT). + gsub(INVALID_XML_CHAR, REPLACEMENT_CHAR). + gsub(XML_PREDEFINED) {|c| PREDEFINED[c.ord]} + end + end + end + +else + + ###################################################################### + # Enhance the Fixnum class with a XML escaped character conversion. + # + class Fixnum + XChar = Builder::XChar if ! defined?(XChar) + + # XML escaped version of chr. When escape is set to false + # the CP1252 fix is still applied but utf-8 characters are not + # converted to character entities. + def xchr(escape=true) + n = XChar::CP1252[self] || self + case n when *XChar::VALID + XChar::PREDEFINED[n] or + (n<128 ? n.chr : (escape ? "&##{n};" : [n].pack('U*'))) + else + Builder::XChar::REPLACEMENT_CHAR + end + end + end + + + ###################################################################### + # Enhance the String class with a XML escaped character version of + # to_s. + # + class String + # XML escaped version of to_s. When escape is set to false + # the CP1252 fix is still applied but utf-8 characters are not + # converted to character entities. + def to_xs(escape=true) + unpack('U*').map {|n| n.xchr(escape)}.join # ASCII, UTF-8 + rescue + unpack('C*').map {|n| n.xchr}.join # ISO-8859-1, WIN-1252 + end + end +end diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/lib/builder/xmlbase.rb b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/lib/builder/xmlbase.rb new file mode 100644 index 0000000..8f03a82 --- /dev/null +++ b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/lib/builder/xmlbase.rb @@ -0,0 +1,199 @@ +#!/usr/bin/env ruby + +require 'builder/blankslate' + +module Builder + + # Generic error for builder + class IllegalBlockError < RuntimeError; end + + # XmlBase is a base class for building XML builders. See + # Builder::XmlMarkup and Builder::XmlEvents for examples. + class XmlBase < BlankSlate + + class << self + attr_accessor :cache_method_calls + end + + # Create an XML markup builder. + # + # out :: Object receiving the markup. +out+ must respond to + # <<. + # indent :: Number of spaces used for indentation (0 implies no + # indentation and no line breaks). + # initial :: Level of initial indentation. + # encoding :: When encoding and $KCODE are set to 'utf-8' + # characters aren't converted to character entities in + # the output stream. + def initialize(indent=0, initial=0, encoding='utf-8') + @indent = indent + @level = initial + @encoding = encoding.downcase + end + + def explicit_nil_handling? + @explicit_nil_handling + end + + # Create a tag named +sym+. Other than the first argument which + # is the tag name, the arguments are the same as the tags + # implemented via method_missing. + def tag!(sym, *args, &block) + text = nil + attrs = nil + sym = "#{sym}:#{args.shift}" if args.first.kind_of?(::Symbol) + sym = sym.to_sym unless sym.class == ::Symbol + args.each do |arg| + case arg + when ::Hash + attrs ||= {} + attrs.merge!(arg) + when nil + attrs ||= {} + attrs.merge!({:nil => true}) if explicit_nil_handling? + else + text ||= '' + text << arg.to_s + end + end + if block + unless text.nil? + ::Kernel::raise ::ArgumentError, + "XmlMarkup cannot mix a text argument with a block" + end + _indent + _start_tag(sym, attrs) + _newline + begin + _nested_structures(block) + ensure + _indent + _end_tag(sym) + _newline + end + elsif text.nil? + _indent + _start_tag(sym, attrs, true) + _newline + else + _indent + _start_tag(sym, attrs) + text! text + _end_tag(sym) + _newline + end + @target + end + + # Create XML markup based on the name of the method. This method + # is never invoked directly, but is called for each markup method + # in the markup block that isn't cached. + def method_missing(sym, *args, &block) + cache_method_call(sym) if ::Builder::XmlBase.cache_method_calls + tag!(sym, *args, &block) + end + + # Append text to the output target. Escape any markup. May be + # used within the markup brackets as: + # + # builder.p { |b| b.br; b.text! "HI" } #=>


HI

+ def text!(text) + _text(_escape(text)) + end + + # Append text to the output target without escaping any markup. + # May be used within the markup brackets as: + # + # builder.p { |x| x << "
HI" } #=>


HI

+ # + # This is useful when using non-builder enabled software that + # generates strings. Just insert the string directly into the + # builder without changing the inserted markup. + # + # It is also useful for stacking builder objects. Builders only + # use << to append to the target, so by supporting this + # method/operation builders can use other builders as their + # targets. + def <<(text) + _text(text) + end + + # For some reason, nil? is sent to the XmlMarkup object. If nil? + # is not defined and method_missing is invoked, some strange kind + # of recursion happens. Since nil? won't ever be an XML tag, it + # is pretty safe to define it here. (Note: this is an example of + # cargo cult programming, + # cf. http://fishbowl.pastiche.org/2004/10/13/cargo_cult_programming). + def nil? + false + end + + private + + require 'builder/xchar' + if ::String.method_defined?(:encode) + def _escape(text) + result = XChar.encode(text) + begin + encoding = ::Encoding::find(@encoding) + raise Exception if encoding.dummy? + result.encode(encoding) + rescue + # if the encoding can't be supported, use numeric character references + result. + gsub(/[^\u0000-\u007F]/) {|c| "&##{c.ord};"}. + force_encoding('ascii') + end + end + else + def _escape(text) + if (text.method(:to_xs).arity == 0) + text.to_xs + else + text.to_xs((@encoding != 'utf-8' or $KCODE != 'UTF8')) + end + end + end + + def _escape_attribute(text) + _escape(text).gsub("\n", " ").gsub("\r", " "). + gsub(%r{"}, '"') # " WART + end + + def _newline + return if @indent == 0 + text! "\n" + end + + def _indent + return if @indent == 0 || @level == 0 + text!(" " * (@level * @indent)) + end + + def _nested_structures(block) + @level += 1 + block.call(self) + ensure + @level -= 1 + end + + # If XmlBase.cache_method_calls = true, we dynamicly create the method + # missed as an instance method on the XMLBase object. Because XML + # documents are usually very repetative in nature, the next node will + # be handled by the new method instead of method_missing. As + # method_missing is very slow, this speeds up document generation + # significantly. + def cache_method_call(sym) + class << self; self; end.class_eval do + unless method_defined?(sym) + define_method(sym) do |*args, &block| + tag!(sym, *args, &block) + end + end + end + end + end + + XmlBase.cache_method_calls = true + +end diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/lib/builder/xmlevents.rb b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/lib/builder/xmlevents.rb new file mode 100644 index 0000000..91fcd21 --- /dev/null +++ b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/lib/builder/xmlevents.rb @@ -0,0 +1,63 @@ +#!/usr/bin/env ruby + +#-- +# Copyright 2004 by Jim Weirich (jim@weirichhouse.org). +# All rights reserved. + +# Permission is granted for use, copying, modification, distribution, +# and distribution of modified versions of this work as long as the +# above copyright notice is included. +#++ + +require 'builder/xmlmarkup' + +module Builder + + # Create a series of SAX-like XML events (e.g. start_tag, end_tag) + # from the markup code. XmlEvent objects are used in a way similar + # to XmlMarkup objects, except that a series of events are generated + # and passed to a handler rather than generating character-based + # markup. + # + # Usage: + # xe = Builder::XmlEvents.new(hander) + # xe.title("HI") # Sends start_tag/end_tag/text messages to the handler. + # + # Indentation may also be selected by providing value for the + # indentation size and initial indentation level. + # + # xe = Builder::XmlEvents.new(handler, indent_size, initial_indent_level) + # + # == XML Event Handler + # + # The handler object must expect the following events. + # + # [start_tag(tag, attrs)] + # Announces that a new tag has been found. +tag+ is the name of + # the tag and +attrs+ is a hash of attributes for the tag. + # + # [end_tag(tag)] + # Announces that an end tag for +tag+ has been found. + # + # [text(text)] + # Announces that a string of characters (+text+) has been found. + # A series of characters may be broken up into more than one + # +text+ call, so the client cannot assume that a single + # callback contains all the text data. + # + class XmlEvents < XmlMarkup + def text!(text) + @target.text(text) + end + + def _start_tag(sym, attrs, end_too=false) + @target.start_tag(sym, attrs) + _end_tag(sym) if end_too + end + + def _end_tag(sym) + @target.end_tag(sym) + end + end + +end diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/lib/builder/xmlmarkup.rb b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/lib/builder/xmlmarkup.rb new file mode 100644 index 0000000..4730d09 --- /dev/null +++ b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/lib/builder/xmlmarkup.rb @@ -0,0 +1,339 @@ +#!/usr/bin/env ruby +#-- +# Copyright 2004, 2005 by Jim Weirich (jim@weirichhouse.org). +# All rights reserved. + +# Permission is granted for use, copying, modification, distribution, +# and distribution of modified versions of this work as long as the +# above copyright notice is included. +#++ + +# Provide a flexible and easy to use Builder for creating XML markup. +# See XmlBuilder for usage details. + +require 'builder/xmlbase' + +module Builder + + # Create XML markup easily. All (well, almost all) methods sent to + # an XmlMarkup object will be translated to the equivalent XML + # markup. Any method with a block will be treated as an XML markup + # tag with nested markup in the block. + # + # Examples will demonstrate this easier than words. In the + # following, +xm+ is an +XmlMarkup+ object. + # + # xm.em("emphasized") # => emphasized + # xm.em { xm.b("emp & bold") } # => emph & bold + # xm.a("A Link", "href"=>"http://onestepback.org") + # # => A Link + # xm.div { xm.br } # =>

+ # xm.target("name"=>"compile", "option"=>"fast") + # # => + # # NOTE: order of attributes is not specified. + # + # xm.instruct! # + # xm.html { # + # xm.head { # + # xm.title("History") # History + # } # + # xm.body { # + # xm.comment! "HI" # + # xm.h1("Header") #

Header

+ # xm.p("paragraph") #

paragraph

+ # } # + # } # + # + # == Notes: + # + # * The order that attributes are inserted in markup tags is + # undefined. + # + # * Sometimes you wish to insert text without enclosing tags. Use + # the text! method to accomplish this. + # + # Example: + # + # xm.div { #
+ # xm.text! "line"; xm.br # line
+ # xm.text! "another line"; xmbr # another line
+ # } #
+ # + # * The special XML characters <, >, and & are converted to <, + # > and & automatically. Use the << operation to + # insert text without modification. + # + # * Sometimes tags use special characters not allowed in ruby + # identifiers. Use the tag! method to handle these + # cases. + # + # Example: + # + # xml.tag!("SOAP:Envelope") { ... } + # + # will produce ... + # + # ... " + # + # tag! will also take text and attribute arguments (after + # the tag name) like normal markup methods. (But see the next + # bullet item for a better way to handle XML namespaces). + # + # * Direct support for XML namespaces is now available. If the + # first argument to a tag call is a symbol, it will be joined to + # the tag to produce a namespace:tag combination. It is easier to + # show this than describe it. + # + # xml.SOAP :Envelope do ... end + # + # Just put a space before the colon in a namespace to produce the + # right form for builder (e.g. "SOAP:Envelope" => + # "xml.SOAP :Envelope") + # + # * XmlMarkup builds the markup in any object (called a _target_) + # that accepts the << method. If no target is given, + # then XmlMarkup defaults to a string target. + # + # Examples: + # + # xm = Builder::XmlMarkup.new + # result = xm.title("yada") + # # result is a string containing the markup. + # + # buffer = "" + # xm = Builder::XmlMarkup.new(buffer) + # # The markup is appended to buffer (using <<) + # + # xm = Builder::XmlMarkup.new(STDOUT) + # # The markup is written to STDOUT (using <<) + # + # xm = Builder::XmlMarkup.new + # x2 = Builder::XmlMarkup.new(:target=>xm) + # # Markup written to +x2+ will be send to +xm+. + # + # * Indentation is enabled by providing the number of spaces to + # indent for each level as a second argument to XmlBuilder.new. + # Initial indentation may be specified using a third parameter. + # + # Example: + # + # xm = Builder.new(:indent=>2) + # # xm will produce nicely formatted and indented XML. + # + # xm = Builder.new(:indent=>2, :margin=>4) + # # xm will produce nicely formatted and indented XML with 2 + # # spaces per indent and an over all indentation level of 4. + # + # builder = Builder::XmlMarkup.new(:target=>$stdout, :indent=>2) + # builder.name { |b| b.first("Jim"); b.last("Weirich) } + # # prints: + # # + # # Jim + # # Weirich + # # + # + # * The instance_eval implementation which forces self to refer to + # the message receiver as self is now obsolete. We now use normal + # block calls to execute the markup block. This means that all + # markup methods must now be explicitly send to the xml builder. + # For instance, instead of + # + # xml.div { strong("text") } + # + # you need to write: + # + # xml.div { xml.strong("text") } + # + # Although more verbose, the subtle change in semantics within the + # block was found to be prone to error. To make this change a + # little less cumbersome, the markup block now gets the markup + # object sent as an argument, allowing you to use a shorter alias + # within the block. + # + # For example: + # + # xml_builder = Builder::XmlMarkup.new + # xml_builder.div { |xml| + # xml.stong("text") + # } + # + class XmlMarkup < XmlBase + + # Create an XML markup builder. Parameters are specified by an + # option hash. + # + # :target => target_object:: + # Object receiving the markup. +target_object+ must respond to + # the <<(a_string) operator and return + # itself. The default target is a plain string target. + # + # :indent => indentation:: + # Number of spaces used for indentation. The default is no + # indentation and no line breaks. + # + # :margin => initial_indentation_level:: + # Amount of initial indentation (specified in levels, not + # spaces). + # + # :quote => :single:: + # Use single quotes for attributes rather than double quotes. + # + # :escape_attrs => OBSOLETE:: + # The :escape_attrs option is no longer supported by builder + # (and will be quietly ignored). String attribute values are + # now automatically escaped. If you need unescaped attribute + # values (perhaps you are using entities in the attribute + # values), then give the value as a Symbol. This allows much + # finer control over escaping attribute values. + # + def initialize(options={}) + indent = options[:indent] || 0 + margin = options[:margin] || 0 + @quote = (options[:quote] == :single) ? "'" : '"' + @explicit_nil_handling = options[:explicit_nil_handling] + super(indent, margin) + @target = options[:target] || "" + end + + # Return the target of the builder. + def target! + @target + end + + def comment!(comment_text) + _ensure_no_block ::Kernel::block_given? + _special("", comment_text, nil) + end + + # Insert an XML declaration into the XML markup. + # + # For example: + # + # xml.declare! :ELEMENT, :blah, "yada" + # # => + def declare!(inst, *args, &block) + _indent + @target << "" + _newline + end + + # Insert a processing instruction into the XML markup. E.g. + # + # For example: + # + # xml.instruct! + # #=> + # xml.instruct! :aaa, :bbb=>"ccc" + # #=> + # + # Note: If the encoding is setup to "UTF-8" and the value of + # $KCODE is "UTF8", then builder will emit UTF-8 encoded strings + # rather than the entity encoding normally used. + def instruct!(directive_tag=:xml, attrs={}) + _ensure_no_block ::Kernel::block_given? + if directive_tag == :xml + a = { :version=>"1.0", :encoding=>"UTF-8" } + attrs = a.merge attrs + @encoding = attrs[:encoding].downcase + end + _special( + "", + nil, + attrs, + [:version, :encoding, :standalone]) + end + + # Insert a CDATA section into the XML markup. + # + # For example: + # + # xml.cdata!("text to be included in cdata") + # #=> + # + def cdata!(text) + _ensure_no_block ::Kernel::block_given? + _special("", text.gsub(']]>', ']]]]>'), nil) + end + + private + + # NOTE: All private methods of a builder object are prefixed when + # a "_" character to avoid possible conflict with XML tag names. + + # Insert text directly in to the builder's target. + def _text(text) + @target << text + end + + # Insert special instruction. + def _special(open, close, data=nil, attrs=nil, order=[]) + _indent + @target << open + @target << data if data + _insert_attributes(attrs, order) if attrs + @target << close + _newline + end + + # Start an XML tag. If end_too is true, then the start + # tag is also the end tag (e.g.
+ def _start_tag(sym, attrs, end_too=false) + @target << "<#{sym}" + _insert_attributes(attrs) + @target << "/" if end_too + @target << ">" + end + + # Insert an ending tag. + def _end_tag(sym) + @target << "" + end + + # Insert the attributes (given in the hash). + def _insert_attributes(attrs, order=[]) + return if attrs.nil? + order.each do |k| + v = attrs[k] + @target << %{ #{k}=#{@quote}#{_attr_value(v)}#{@quote}} if v + end + attrs.each do |k, v| + @target << %{ #{k}=#{@quote}#{_attr_value(v)}#{@quote}} unless order.member?(k) # " WART + end + end + + def _attr_value(value) + case value + when ::Symbol + value.to_s + else + _escape_attribute(value.to_s) + end + end + + def _ensure_no_block(got_block) + if got_block + ::Kernel::raise IllegalBlockError.new( + "Blocks are not allowed on XML instructions" + ) + end + end + + end + +end diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/rakelib/publish.rake b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/rakelib/publish.rake new file mode 100644 index 0000000..9849e0d --- /dev/null +++ b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/rakelib/publish.rake @@ -0,0 +1,17 @@ +# Optional publish task for Rake + +require 'rake/contrib/sshpublisher' +require 'rake/contrib/rubyforgepublisher' + +publisher = Rake::CompositePublisher.new +publisher.add Rake::RubyForgePublisher.new('builder', 'jimweirich') +publisher.add Rake::SshFilePublisher.new( + 'linode', + 'htdocs/software/builder', + '.', + 'builder.blurb') + +desc "Publish the Documentation to RubyForge." +task :publish => [:rdoc] do + publisher.upload +end diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/rakelib/tags.rake b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/rakelib/tags.rake new file mode 100644 index 0000000..93b47df --- /dev/null +++ b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/rakelib/tags.rake @@ -0,0 +1,62 @@ +#!/usr/bin/env ruby + +module Tags + extend Rake::DSL if defined?(Rake::DSL) + + PROG = ENV['TAGS'] || 'ctags' + + RAKEFILES = FileList['Rakefile', '**/*.rake'] + + FILES = FileList['**/*.rb', '**/*.js'] + RAKEFILES + FILES.exclude('pkg', 'dist') + + PROJECT_DIR = ['.'] + + RVM_GEMDIR = File.join(`rvm gemdir`.strip, "gems") + SYSTEM_DIRS = File.exists?(RVM_GEMDIR) ? RVM_GEMDIR : [] + + module_function + + # Convert key_word to --key-word. + def keyword(key) + k = key.to_s.gsub(/_/, '-') + (k.length == 1) ? "-#{k}" : "--#{k}" + end + + # Run ctags command + def run(*args) + opts = { + :e => true, + :totals => true, + :recurse => true, + } + opts = opts.merge(args.pop) if args.last.is_a?(Hash) + command_args = opts.map { |k, v| + (v == true) ? keyword(k) : "#{keyword(k)}=#{v}" + }.join(" ") + sh %{#{Tags::PROG} #{command_args} #{args.join(' ')}} + end +end + +namespace "tags" do + desc "Generate an Emacs TAGS file" + task :emacs, [:all] => Tags::FILES do |t, args| + puts "Making Emacs TAGS file" + verbose(true) do + Tags.run(Tags::PROJECT_DIR) + Tags.run(Tags::RAKEFILES, + :language_force => "ruby", + :append => true) + if args.all + Tags::SYSTEM_DIRS.each do |dir| + Tags.run(dir, + :language_force => "ruby", + :append => true) + end + end + end + end +end + +desc "Generate the TAGS file" +task :tags, [:all] => ["tags:emacs"] diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/test/performance.rb b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/test/performance.rb new file mode 100644 index 0000000..e764205 --- /dev/null +++ b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/test/performance.rb @@ -0,0 +1,41 @@ +#!/usr/bin/env ruby +# encoding: iso-8859-1 + +#-- +# Portions copyright 2004 by Jim Weirich (jim@weirichhouse.org). +# Portions copyright 2005 by Sam Ruby (rubys@intertwingly.net). +# All rights reserved. + +# Permission is granted for use, copying, modification, distribution, +# and distribution of modified versions of this work as long as the +# above copyright notice is included. +#++ + +require 'builder/xmlmarkup' +require 'benchmark' + +text = "This is a test of the new xml markup. I�t�rn�ti�n�liz�ti�n\n" * 10000 + +include Benchmark # we need the CAPTION and FMTSTR constants +include Builder +n = 50 +Benchmark.benchmark do |bm| + tf = bm.report("base") { + n.times do + x = XmlMarkup.new + x.text(text) + x.target! + end + } + def XmlMarkup._escape(text) + text.to_xs + end + tf = bm.report("to_xs") { + n.times do + x = XmlMarkup.new + x.text(text) + x.target! + end + } +end + diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/test/preload.rb b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/test/preload.rb new file mode 100644 index 0000000..395e043 --- /dev/null +++ b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/test/preload.rb @@ -0,0 +1,39 @@ +#!/usr/bin/env ruby + +#-- +# Portions copyright 2004 by Jim Weirich (jim@weirichhouse.org). +# Portions copyright 2005 by Sam Ruby (rubys@intertwingly.net). +# All rights reserved. + +# Permission is granted for use, copying, modification, distribution, +# and distribution of modified versions of this work as long as the +# above copyright notice is included. +#++ + +# We are defining method_added in Kernel and Object so that when +# BlankSlate overrides them later, we can verify that it correctly +# calls the older hooks. + +module Kernel + class << self + attr_reader :k_added_names + alias_method :preload_method_added, :method_added + def method_added(name) + preload_method_added(name) + @k_added_names ||= [] + @k_added_names << name + end + end +end + +class Object + class << self + attr_reader :o_added_names + alias_method :preload_method_added, :method_added + def method_added(name) + preload_method_added(name) + @o_added_names ||= [] + @o_added_names << name + end + end +end diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/test/test_blankslate.rb b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/test/test_blankslate.rb new file mode 100644 index 0000000..ea38ced --- /dev/null +++ b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/test/test_blankslate.rb @@ -0,0 +1,217 @@ +#!/usr/bin/env ruby + +#-- +# Portions copyright 2004 by Jim Weirich (jim@weirichhouse.org). +# Portions copyright 2005 by Sam Ruby (rubys@intertwingly.net). +# All rights reserved. + +# Permission is granted for use, copying, modification, distribution, +# and distribution of modified versions of this work as long as the +# above copyright notice is included. +#++ + +require 'test/unit' +require 'test/preload' +require 'blankslate' +require 'stringio' + +# Methods to be introduced into the Object class late. +module LateObject + def late_object + 33 + end + def LateObject.included(mod) + # Modules defining an included method should not prevent blank + # slate erasure! + end +end + +# Methods to be introduced into the Kernel module late. +module LateKernel + def late_kernel + 44 + end + def LateKernel.included(mod) + # Modules defining an included method should not prevent blank + # slate erasure! + end +end + +# Introduce some late methods (both module and direct) into the Kernel +# module. +module Kernel + include LateKernel + + def late_addition + 1234 + end + + def double_late_addition + 11 + end + + def double_late_addition + 22 + end +end + + +# Introduce some late methods (both module and direct) into the Object +# class. +class Object + include LateObject + def another_late_addition + 4321 + end +end + +# Introduce some late methods by inclusion. +module GlobalModule + def global_inclusion + 42 + end +end +include GlobalModule + +def direct_global + 43 +end + +###################################################################### +# Test case for blank slate. +# +class TestBlankSlate < Test::Unit::TestCase + def setup + @bs = BlankSlate.new + end + + def test_undefined_methods_remain_undefined + assert_raise(NoMethodError) { @bs.no_such_method } + assert_raise(NoMethodError) { @bs.nil? } + end + + + # NOTE: NameError is acceptable because the lack of a '.' means that + # Ruby can't tell if it is a method or a local variable. + def test_undefined_methods_remain_undefined_during_instance_eval + assert_raise(NoMethodError, NameError) do + @bs.instance_eval do nil? end + end + assert_raise(NoMethodError, NameError) do + @bs.instance_eval do no_such_method end + end + end + + def test_private_methods_are_undefined + assert_raise(NoMethodError) do + @bs.puts "HI" + end + end + + def test_targetted_private_methods_are_undefined_during_instance_eval + assert_raise(NoMethodError, NameError) do + @bs.instance_eval do self.puts "HI" end + end + end + + def test_untargetted_private_methods_are_defined_during_instance_eval + oldstdout = $stdout + $stdout = StringIO.new + @bs.instance_eval do + puts "HI" + end + ensure + $stdout = oldstdout + end + + def test_methods_added_late_to_kernel_remain_undefined + assert_equal 1234, nil.late_addition + assert_raise(NoMethodError) { @bs.late_addition } + end + + def test_methods_added_late_to_object_remain_undefined + assert_equal 4321, nil.another_late_addition + assert_raise(NoMethodError) { @bs.another_late_addition } + end + + def test_methods_added_late_to_global_remain_undefined + assert_equal 42, global_inclusion + assert_raise(NoMethodError) { @bs.global_inclusion } + end + + def test_preload_method_added + assert Kernel.k_added_names.include?(:late_addition) + assert Object.o_added_names.include?(:another_late_addition) + end + + def test_method_defined_late_multiple_times_remain_undefined + assert_equal 22, nil.double_late_addition + assert_raise(NoMethodError) { @bs.double_late_addition } + end + + def test_late_included_module_in_object_is_ok + assert_equal 33, 1.late_object + assert_raise(NoMethodError) { @bs.late_object } + end + + def test_late_included_module_in_kernel_is_ok + assert_raise(NoMethodError) { @bs.late_kernel } + end + + def test_revealing_previously_hidden_methods_are_callable + with_to_s = Class.new(BlankSlate) do + reveal :to_s + end + assert_match(/^#<.*>$/, with_to_s.new.to_s) + end + + def test_revealing_previously_hidden_methods_are_callable_with_block + Object.class_eval <<-EOS + def given_block(&block) + block + end + EOS + + with_given_block = Class.new(BlankSlate) do + reveal :given_block + end + assert_not_nil with_given_block.new.given_block {} + end + + def test_revealing_a_hidden_method_twice_is_ok + with_to_s = Class.new(BlankSlate) do + reveal :to_s + reveal :to_s + end + assert_match(/^#<.*>$/, with_to_s.new.to_s) + end + + def test_revealing_unknown_hidden_method_is_an_error + assert_raises(RuntimeError) do + Class.new(BlankSlate) do + reveal :xyz + end + end + end + + def test_global_includes_still_work + assert_nothing_raised do + assert_equal 42, global_inclusion + assert_equal 42, Object.new.global_inclusion + assert_equal 42, "magic number".global_inclusion + assert_equal 43, direct_global + end + end + + def test_reveal_should_not_bind_to_an_instance + with_object_id = Class.new(BlankSlate) do + reveal(:object_id) + end + + obj1 = with_object_id.new + obj2 = with_object_id.new + + assert obj1.object_id != obj2.object_id, + "Revealed methods should not be bound to a particular instance" + end +end diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/test/test_eventbuilder.rb b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/test/test_eventbuilder.rb new file mode 100644 index 0000000..f434470 --- /dev/null +++ b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/test/test_eventbuilder.rb @@ -0,0 +1,150 @@ +#!/usr/bin/env ruby + +#-- +# Portions copyright 2004 by Jim Weirich (jim@weirichhouse.org). +# Portions copyright 2005 by Sam Ruby (rubys@intertwingly.net). +# All rights reserved. + +# Permission is granted for use, copying, modification, distribution, +# and distribution of modified versions of this work as long as the +# above copyright notice is included. +#++ + +require 'test/unit' +require 'test/preload' +require 'builder' +require 'builder/xmlevents' + +class TestEvents < Test::Unit::TestCase + + class Target + attr_reader :events + + def initialize + @events = [] + end + + def start_tag(tag, attrs) + @events << [:start_tag, tag, attrs] + end + + def end_tag(tag) + @events << [:end_tag, tag] + end + + def text(string) + @events << [:text, string] + end + + end + + + def setup + @target = Target.new + @xml = Builder::XmlEvents.new(:target=>@target) + end + + def test_simple + @xml.one + expect [:start_tag, :one, nil] + expect [:end_tag, :one] + expect_done + end + + def test_nested + @xml.one { @xml.two } + expect [:start_tag, :one, nil] + expect [:start_tag, :two, nil] + expect [:end_tag, :two] + expect [:end_tag, :one] + expect_done + end + + def test_text + @xml.one("a") + expect [:start_tag, :one, nil] + expect [:text, "a"] + expect [:end_tag, :one] + expect_done + end + + def test_special_text + @xml.one("H&R") + expect [:start_tag, :one, nil] + expect [:text, "H&R"] + expect [:end_tag, :one] + expect_done + end + + def test_text_with_entity + @xml.one("H&R") + expect [:start_tag, :one, nil] + expect [:text, "H&R"] + expect [:end_tag, :one] + expect_done + end + + def test_attributes + @xml.a(:b=>"c", :x=>"y") + expect [:start_tag, :a, {:x => "y", :b => "c"}] + expect [:end_tag, :a] + expect_done + end + + def test_moderately_complex + @xml.tag! "address-book" do |x| + x.entry :id=>"1" do + x.name { + x.first "Bill" + x.last "Smith" + } + x.address "Cincinnati" + end + x.entry :id=>"2" do + x.name { + x.first "John" + x.last "Doe" + } + x.address "Columbus" + end + end + expect [:start_tag, "address-book".intern, nil] + expect [:start_tag, :entry, {:id => "1"}] + expect [:start_tag, :name, nil] + expect [:start_tag, :first, nil] + expect [:text, "Bill"] + expect [:end_tag, :first] + expect [:start_tag, :last, nil] + expect [:text, "Smith"] + expect [:end_tag, :last] + expect [:end_tag, :name] + expect [:start_tag, :address, nil] + expect [:text, "Cincinnati"] + expect [:end_tag, :address] + expect [:end_tag, :entry] + expect [:start_tag, :entry, {:id => "2"}] + expect [:start_tag, :name, nil] + expect [:start_tag, :first, nil] + expect [:text, "John"] + expect [:end_tag, :first] + expect [:start_tag, :last, nil] + expect [:text, "Doe"] + expect [:end_tag, :last] + expect [:end_tag, :name] + expect [:start_tag, :address, nil] + expect [:text, "Columbus"] + expect [:end_tag, :address] + expect [:end_tag, :entry] + expect [:end_tag, "address-book".intern] + expect_done + end + + def expect(value) + assert_equal value, @target.events.shift + end + + def expect_done + assert_nil @target.events.shift + end + +end diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/test/test_markupbuilder.rb b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/test/test_markupbuilder.rb new file mode 100644 index 0000000..562b12a --- /dev/null +++ b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/test/test_markupbuilder.rb @@ -0,0 +1,611 @@ +#!/usr/bin/env ruby + +#-- +# Portions copyright 2004 by Jim Weirich (jim@weirichhouse.org). +# Portions copyright 2005 by Sam Ruby (rubys@intertwingly.net). +# All rights reserved. + +# Permission is granted for use, copying, modification, distribution, +# and distribution of modified versions of this work as long as the +# above copyright notice is included. +#++ + +require 'test/unit' +require 'test/preload' +require 'builder' +require 'builder/xmlmarkup' + +class TestMarkup < Test::Unit::TestCase + def setup + @xml = Builder::XmlMarkup.new + end + + def test_create + assert_not_nil @xml + end + + def test_simple + @xml.simple + assert_equal "", @xml.target! + end + + def test_value + @xml.value("hi") + assert_equal "hi", @xml.target! + end + + def test_empty_value + @xml.value("") + assert_equal "", @xml.target! + end + + def test_nil_value + @xml.value(nil) + assert_equal "", @xml.target! + end + + def test_no_value + @xml.value() + assert_equal "", @xml.target! + end + + def test_nested + @xml.outer { |x| x.inner("x") } + assert_equal "x", @xml.target! + end + + def test_attributes + @xml.ref(:id => 12) + assert_equal %{}, @xml.target! + end + + def test_single_quotes_for_attrs + @xml = Builder::XmlMarkup.new(:quote => :single) + @xml.ref(:id => 12) + assert_equal %{}, @xml.target! + end + + def test_mixed_quotes_for_attrs + @xml = Builder::XmlMarkup.new(:quote => :single) + x = Builder::XmlMarkup.new(:target=>@xml, :quote => :double) + @xml.ref(:id => 12) do + x.link(:id => 13) + end + assert_equal %{}, @xml.target! + end + + def test_string_attributes_are_escaped_by_default + @xml.ref(:id => "H&R") + assert_equal %{}, @xml.target! + end + + def test_symbol_attributes_are_unescaped_by_default + @xml.ref(:id => :"H&R") + assert_equal %{}, @xml.target! + end + + def test_attributes_escaping_can_be_turned_on + @xml = Builder::XmlMarkup.new + @xml.ref(:id => "") + assert_equal %{}, @xml.target! + end + + def test_mixed_attribute_escaping_with_nested_builders + x = Builder::XmlMarkup.new(:target=>@xml) + @xml.ref(:id=>:"H&R") { + x.element(:tag=>"Long&Short") + } + assert_equal "", + @xml.target! + end + + def test_multiple_attributes + @xml.ref(:id => 12, :name => "bill") + assert_match %r{^$}, @xml.target! + end + + def test_attributes_with_text + @xml.a("link", :href=>"http://onestepback.org") + assert_equal %{link}, @xml.target! + end + + def test_attributes_with_newlines + @xml.abbr("W3C", :title=>"World\nWide\rWeb\r\nConsortium") + assert_equal %{W3C}, + @xml.target! + end + + def test_complex + @xml.body(:bg=>"#ffffff") { |x| + x.title("T", :style=>"red") + } + assert_equal %{T}, @xml.target! + end + + def test_funky_symbol + @xml.tag!("non-ruby-token", :id=>1) { |x| x.ok } + assert_equal %{}, @xml.target! + end + + def test_tag_can_handle_private_method + @xml.tag!("loop", :id=>1) { |x| x.ok } + assert_equal %{}, @xml.target! + end + + def test_no_explicit_marker + @xml.p { |x| x.b("HI") } + assert_equal "

HI

", @xml.target! + end + + def test_reference_local_vars + n = 3 + @xml.ol { |x| n.times { x.li(n) } } + assert_equal "
  1. 3
  2. 3
  3. 3
", @xml.target! + end + + def test_reference_methods + @xml.title { |x| x.a { x.b(name) } } + assert_equal "<a><b>bob</b></a>", @xml.target! + end + + def test_append_text + @xml.p { |x| x.br; x.text! "HI" } + assert_equal "


HI

", @xml.target! + end + + def test_ambiguous_markup + ex = assert_raise(ArgumentError) { + @xml.h1("data1") { b } + } + assert_match(/\btext\b/, ex.message) + assert_match(/\bblock\b/, ex.message) + end + + def test_capitalized_method + @xml.P { |x| x.B("hi"); x.BR(); x.EM { x.text! "world" } } + assert_equal "

hi
world

", @xml.target! + end + + def test_escaping + @xml.div { |x| x.text! ""; x.em("H&R Block") } + assert_equal %{
<hi>H&R Block
}, @xml.target! + end + + def test_nil + b = Builder::XmlMarkup.new + b.tag! "foo", nil + assert_equal %{}, b.target! + end + + def test_nil_without_explicit_nil_handling + b = Builder::XmlMarkup.new(:explicit_nil_handling => false) + b.tag! "foo", nil + assert_equal %{}, b.target! + end + + def test_nil_with_explicit_nil_handling + b = Builder::XmlMarkup.new(:explicit_nil_handling => true) + b.tag! "foo", nil + assert_equal %{}, b.target! + end + + def test_non_escaping + @xml.div("ns:xml"=>:"&xml;") { |x| x << ""; x.em("H&R Block") } + assert_equal %{
H&R Block
}, @xml.target! + end + + def test_return_value + str = @xml.x("men") + assert_equal @xml.target!, str + end + + def test_stacked_builders + b = Builder::XmlMarkup.new( :target => @xml ) + b.div { @xml.span { @xml.a("text", :href=>"ref") } } + assert_equal "", @xml.target! + end + + def name + "bob" + end +end + +class TestAttributeEscaping < Test::Unit::TestCase + + def setup + @xml = Builder::XmlMarkup.new + end + + def test_element_gt + @xml.title('1<2') + assert_equal '1<2', @xml.target! + end + + def test_element_amp + @xml.title('AT&T') + assert_equal 'AT&T', @xml.target! + end + + def test_element_amp2 + @xml.title('&') + assert_equal '&amp;', @xml.target! + end + + def test_attr_less + @xml.a(:title => '2>1') + assert_equal '', @xml.target! + end + + def test_attr_amp + @xml.a(:title => 'AT&T') + assert_equal '', @xml.target! + end + + def test_attr_quot + @xml.a(:title => '"x"') + assert_equal '', @xml.target! + end + +end + +class TestNameSpaces < Test::Unit::TestCase + def setup + @xml = Builder::XmlMarkup.new(:indent=>2) + end + + def test_simple_name_spaces + @xml.rdf :RDF + assert_equal "\n", @xml.target! + end + + def test_long + xml = Builder::XmlMarkup.new(:indent=>2) + xml.instruct! + xml.rdf :RDF, + "xmlns:rdf" => :"&rdf;", + "xmlns:rdfs" => :"&rdfs;", + "xmlns:xsd" => :"&xsd;", + "xmlns:owl" => :"&owl;" do + xml.owl :Class, :'rdf:ID'=>'Bird' do + xml.rdfs :label, 'bird' + xml.rdfs :subClassOf do + xml.owl :Restriction do + xml.owl :onProperty, 'rdf:resource'=>'#wingspan' + xml.owl :maxCardinality,1,'rdf:datatype'=>'&xsd;nonNegativeInteger' + end + end + end + end + assert_match(/^<\?xml/, xml.target!) + assert_match(/\n/m, xml.target!) + end + + def test_ensure + xml = Builder::XmlMarkup.new + xml.html do + xml.body do + begin + xml.p do + raise Exception.new('boom') + end + rescue Exception => e + xml.pre e + end + end + end + assert_match %r{

}, xml.target! + assert_match %r{

}, xml.target! + end +end + +class TestDeclarations < Test::Unit::TestCase + def setup + @xml = Builder::XmlMarkup.new(:indent=>2) + end + + def test_declare + @xml.declare! :element + assert_equal "\n", @xml.target! + end + + def test_bare_arg + @xml.declare! :element, :arg + assert_equal"\n", @xml.target! + end + + def test_string_arg + @xml.declare! :element, "string" + assert_equal"\n", @xml.target! + end + + def test_mixed_args + @xml.declare! :element, :x, "y", :z, "-//OASIS//DTD DocBook XML//EN" + assert_equal "\n", @xml.target! + end + + def test_nested_declarations + @xml = Builder::XmlMarkup.new + @xml.declare! :DOCTYPE, :chapter do |x| + x.declare! :ELEMENT, :chapter, "(title,para+)".intern + end + assert_equal "]>", @xml.target! + end + + def test_nested_indented_declarations + @xml.declare! :DOCTYPE, :chapter do |x| + x.declare! :ELEMENT, :chapter, "(title,para+)".intern + end + assert_equal "\n]>\n", @xml.target! + end + + def test_complex_declaration + @xml.declare! :DOCTYPE, :chapter do |x| + x.declare! :ELEMENT, :chapter, "(title,para+)".intern + x.declare! :ELEMENT, :title, "(#PCDATA)".intern + x.declare! :ELEMENT, :para, "(#PCDATA)".intern + end + expected = %{ + + +]> +} + assert_equal expected, @xml.target! + end +end + + +class TestSpecialMarkup < Test::Unit::TestCase + def setup + @xml = Builder::XmlMarkup.new(:indent=>2) + end + + def test_comment + @xml.comment!("COMMENT") + assert_equal "\n", @xml.target! + end + + def test_indented_comment + @xml.p { @xml.comment! "OK" } + assert_equal "

\n \n

\n", @xml.target! + end + + def test_instruct + @xml.instruct! :abc, :version=>"0.9" + assert_equal "\n", @xml.target! + end + + def test_indented_instruct + @xml.p { @xml.instruct! :xml } + assert_match %r{

\n <\?xml version="1.0" encoding="UTF-8"\?>\n

\n}, + @xml.target! + end + + def test_instruct_without_attributes + @xml.instruct! :zz + assert_equal "\n", @xml.target! + end + + def test_xml_instruct + @xml.instruct! + assert_match(/^<\?xml version="1.0" encoding="UTF-8"\?>$/, @xml.target!) + end + + def test_xml_instruct_with_overrides + @xml.instruct! :xml, :encoding=>"UCS-2" + assert_match(/^<\?xml version="1.0" encoding="UCS-2"\?>$/, @xml.target!) + end + + def test_xml_instruct_with_standalong + @xml.instruct! :xml, :encoding=>"UCS-2", :standalone=>"yes" + assert_match(/^<\?xml version="1.0" encoding="UCS-2" standalone="yes"\?>$/, @xml.target!) + end + + def test_no_blocks + assert_raise(Builder::IllegalBlockError) do + @xml.instruct! { |x| x.hi } + end + assert_raise(Builder::IllegalBlockError) do + @xml.comment!(:element) { |x| x.hi } + end + end + + def test_cdata + @xml.cdata!("TEST") + assert_equal "\n", @xml.target! + end + + def test_cdata_with_ampersand + @xml.cdata!("TEST&CHECK") + assert_equal "\n", @xml.target! + end + + def test_cdata_with_included_close + @xml.cdata!("TEST]]>CHECK") + assert_equal "CHECK]]>\n", @xml.target! + end +end + +class TestIndentedXmlMarkup < Test::Unit::TestCase + def setup + @xml = Builder::XmlMarkup.new(:indent=>2) + end + + def test_one_level + @xml.ol { |x| x.li "text" } + assert_equal "
    \n
  1. text
  2. \n
\n", @xml.target! + end + + def test_two_levels + @xml.p { |x| + x.ol { x.li "text" } + x.br + } + assert_equal "

\n

    \n
  1. text
  2. \n
\n
\n

\n", @xml.target! + end + + def test_initial_level + @xml = Builder::XmlMarkup.new(:indent=>2, :margin=>4) + @xml.name { |x| x.first("Jim") } + assert_equal " \n Jim\n \n", @xml.target! + end + + class TestUtfMarkup < Test::Unit::TestCase + if ! String.method_defined?(:encode) + def setup + @old_kcode = $KCODE + end + + def teardown + $KCODE = @old_kcode + end + + def test_use_entities_if_no_encoding_is_given_and_kcode_is_none + $KCODE = 'NONE' + xml = Builder::XmlMarkup.new + xml.p("\xE2\x80\x99") + assert_match(%r(

), xml.target!) # + end + + def test_use_entities_if_encoding_is_utf_but_kcode_is_not + $KCODE = 'NONE' + xml = Builder::XmlMarkup.new + xml.instruct!(:xml, :encoding => 'UTF-8') + xml.p("\xE2\x80\x99") + assert_match(%r(

), xml.target!) # + end + else + # change in behavior. As there is no $KCODE anymore, the default + # moves from "does not understand utf-8" to "supports utf-8". + + def test_use_entities_if_no_encoding_is_given_and_kcode_is_none + xml = Builder::XmlMarkup.new + xml.p("\xE2\x80\x99") + assert_match("

\u2019

", xml.target!) # + end + + def test_use_entities_if_encoding_is_utf_but_kcode_is_not + xml = Builder::XmlMarkup.new + xml.instruct!(:xml, :encoding => 'UTF-8') + xml.p("\xE2\x80\x99") + assert_match("

\u2019

", xml.target!) # + end + end + + def encode string, encoding + if !String.method_defined?(:encode) + $KCODE = encoding + string + elsif encoding == 'UTF8' + string.force_encoding('UTF-8') + else + string + end + end + + def test_use_entities_if_kcode_is_utf_but_encoding_is_dummy_encoding + xml = Builder::XmlMarkup.new + xml.instruct!(:xml, :encoding => 'UTF-16') + xml.p(encode("\xE2\x80\x99", 'UTF8')) + assert_match(%r(

), xml.target!) # + end + + def test_use_entities_if_kcode_is_utf_but_encoding_is_unsupported_encoding + xml = Builder::XmlMarkup.new + xml.instruct!(:xml, :encoding => 'UCS-2') + xml.p(encode("\xE2\x80\x99", 'UTF8')) + assert_match(%r(

), xml.target!) # + end + + def test_use_utf8_if_encoding_defaults_and_kcode_is_utf8 + xml = Builder::XmlMarkup.new + xml.p(encode("\xE2\x80\x99",'UTF8')) + assert_equal encode("

\xE2\x80\x99

",'UTF8'), xml.target! + end + + def test_use_utf8_if_both_encoding_and_kcode_are_utf8 + xml = Builder::XmlMarkup.new + xml.instruct!(:xml, :encoding => 'UTF-8') + xml.p(encode("\xE2\x80\x99",'UTF8')) + assert_match encode("

\xE2\x80\x99

",'UTF8'), xml.target! + end + + def test_use_utf8_if_both_encoding_and_kcode_are_utf8_with_lowercase + xml = Builder::XmlMarkup.new + xml.instruct!(:xml, :encoding => 'utf-8') + xml.p(encode("\xE2\x80\x99",'UTF8')) + assert_match encode("

\xE2\x80\x99

",'UTF8'), xml.target! + end + end + + class TestXmlEvents < Test::Unit::TestCase + def setup + @handler = EventHandler.new + @xe = Builder::XmlEvents.new(:target=>@handler) + end + + def test_simple + @xe.p + assert_equal [:start, :p, nil], @handler.events.shift + assert_equal [:end, :p], @handler.events.shift + end + + def test_text + @xe.p("HI") + assert_equal [:start, :p, nil], @handler.events.shift + assert_equal [:text, "HI"], @handler.events.shift + assert_equal [:end, :p], @handler.events.shift + end + + def test_attributes + @xe.p("id"=>"2") + ev = @handler.events.shift + assert_equal [:start, :p], ev[0,2] + assert_equal "2", ev[2]['id'] + assert_equal [:end, :p], @handler.events.shift + end + + def test_indented + @xml = Builder::XmlEvents.new(:indent=>2, :target=>@handler) + @xml.p { |x| x.b("HI") } + assert_equal [:start, :p, nil], @handler.events.shift + assert_equal "\n ", pop_text + assert_equal [:start, :b, nil], @handler.events.shift + assert_equal "HI", pop_text + assert_equal [:end, :b], @handler.events.shift + assert_equal "\n", pop_text + assert_equal [:end, :p], @handler.events.shift + end + + def pop_text + result = '' + while ! @handler.events.empty? && @handler.events[0][0] == :text + result << @handler.events[0][1] + @handler.events.shift + end + result + end + + class EventHandler + attr_reader :events + def initialize + @events = [] + end + + def start_tag(sym, attrs) + @events << [:start, sym, attrs] + end + + def end_tag(sym) + @events << [:end, sym] + end + + def text(txt) + @events << [:text, txt] + end + end + end + +end diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/test/test_method_caching.rb b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/test/test_method_caching.rb new file mode 100644 index 0000000..91f7aca --- /dev/null +++ b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/test/test_method_caching.rb @@ -0,0 +1,62 @@ +#!/usr/bin/env ruby + +#-- +# Portions copyright 2011 by Bart ten Brinke (info@retrosync.com). +# All rights reserved. + +# Permission is granted for use, copying, modification, distribution, +# and distribution of modified versions of this work as long as the +# above copyright notice is included. +#++ + +require 'test/unit' +require 'test/preload' +require 'builder' + +class TestMethodCaching < Test::Unit::TestCase + + # We can directly ask if xml object responds to the cache_me or + # do_not_cache_me methods because xml is derived from BasicObject + # (and repond_to? is not defined in BasicObject). + # + # Instead we are going to stub out method_missing so that it throws + # an error, and then make sure that error is either thrown or not + # thrown as appropriate. + + def teardown + super + Builder::XmlBase.cache_method_calls = true + end + + def test_caching_does_not_break_weird_symbols + xml = Builder::XmlMarkup.new + xml.__send__("work-order", 1) + assert_equal "1", xml.target! + end + + def test_method_call_caching + xml = Builder::XmlMarkup.new + xml.cache_me + + def xml.method_missing(*args) + ::Kernel.fail StandardError, "SHOULD NOT BE CALLED" + end + assert_nothing_raised do + xml.cache_me + end + end + + def test_method_call_caching_disabled + Builder::XmlBase.cache_method_calls = false + xml = Builder::XmlMarkup.new + xml.do_not_cache_me + + def xml.method_missing(*args) + ::Kernel.fail StandardError, "SHOULD BE CALLED" + end + assert_raise(StandardError, "SHOULD BE CALLED") do + xml.do_not_cache_me + end + end + +end diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/test/test_namecollision.rb b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/test/test_namecollision.rb new file mode 100644 index 0000000..5b16b30 --- /dev/null +++ b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/test/test_namecollision.rb @@ -0,0 +1,39 @@ +#!/usr/bin/env ruby + +#-- +# Portions copyright 2004 by Jim Weirich (jim@weirichhouse.org). +# Portions copyright 2005 by Sam Ruby (rubys@intertwingly.net). +# All rights reserved. + +# Permission is granted for use, copying, modification, distribution, +# and distribution of modified versions of this work as long as the +# above copyright notice is included. +#++ + +require 'test/unit' +require 'builder/xchar' + +class TestNameCollisions < Test::Unit::TestCase + module Collide + def xchr + end + end + + def test_no_collision + assert_nothing_raised do + Builder.check_for_name_collision(Collide, :not_defined) + end + end + + def test_collision + assert_raise RuntimeError do + Builder.check_for_name_collision(Collide, "xchr") + end + end + + def test_collision_with_symbol + assert_raise RuntimeError do + Builder.check_for_name_collision(Collide, :xchr) + end + end +end diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/test/test_xchar.rb b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/test/test_xchar.rb new file mode 100644 index 0000000..6a00716 --- /dev/null +++ b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/gems/builder-3.2.2/test/test_xchar.rb @@ -0,0 +1,78 @@ +#!/usr/bin/env ruby +# encoding: us-ascii + +#-- +# Portions copyright 2004 by Jim Weirich (jim@weirichhouse.org). +# Portions copyright 2005 by Sam Ruby (rubys@intertwingly.net). +# All rights reserved. + +# Permission is granted for use, copying, modification, distribution, +# and distribution of modified versions of this work as long as the +# above copyright notice is included. +#++ + +#!/usr/bin/env ruby + +require 'test/unit' +require 'builder/xchar' + +if String.method_defined?(:encode) + class String + ENCODING_BINARY = Encoding.find('BINARY') + + # shim method for testing purposes + def to_xs(escape=true) + raise NameError.new('to_xs') unless caller[0].index(__FILE__) + + result = Builder::XChar.encode(self) + if escape + result.gsub(/[^\u0000-\u007F]/) {|c| "&##{c.ord};"} + else + # really only useful for testing purposes + result.force_encoding(ENCODING_BINARY) + end + end + end +end + +class TestXmlEscaping < Test::Unit::TestCase + REPLACEMENT_CHAR = Builder::XChar::REPLACEMENT_CHAR.to_xs + + def test_ascii + assert_equal 'abc', 'abc'.to_xs + end + + def test_predefined + assert_equal '&', '&'.to_xs # ampersand + assert_equal '<', '<'.to_xs # left angle bracket + assert_equal '>', '>'.to_xs # right angle bracket + end + + def test_invalid + assert_equal REPLACEMENT_CHAR, "\x00".to_xs # null + assert_equal REPLACEMENT_CHAR, "\x0C".to_xs # form feed + assert_equal REPLACEMENT_CHAR, "\xEF\xBF\xBF".to_xs # U+FFFF + end + + def test_iso_8859_1 + assert_equal 'ç', "\xE7".to_xs # small c cedilla + assert_equal '©', "\xA9".to_xs # copyright symbol + end + + def test_win_1252 + assert_equal '’', "\x92".to_xs # smart quote + assert_equal '€', "\x80".to_xs # euro + end + + def test_utf8 + assert_equal '’', "\xE2\x80\x99".to_xs # right single quote + assert_equal '©', "\xC2\xA9".to_xs # copy + end + + def test_utf8_verbatim + assert_equal "\xE2\x80\x99", "\xE2\x80\x99".to_xs(false) # right single quote + assert_equal "\xC2\xA9", "\xC2\xA9".to_xs(false) # copy + assert_equal "\xC2\xA9&\xC2\xA9", + "\xC2\xA9&\xC2\xA9".to_xs(false) # copy with ampersand + end +end diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/specifications/alphred-1.1.0.gemspec b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/specifications/alphred-1.1.0.gemspec new file mode 100644 index 0000000..6add217 --- /dev/null +++ b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/specifications/alphred-1.1.0.gemspec @@ -0,0 +1,37 @@ +# -*- encoding: utf-8 -*- + +Gem::Specification.new do |s| + s.name = "alphred" + s.version = "1.1.0" + + s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version= + s.authors = ["Alpha Chen"] + s.date = "2015-11-01" + s.email = ["alpha.chen@gmail.com"] + s.homepage = "https://github.com/kejadlen/alph" + s.licenses = ["MIT"] + s.require_paths = ["lib"] + s.rubygems_version = "2.0.14" + s.summary = "Helper utilities for making Alfred workflows." + + if s.respond_to? :specification_version then + s.specification_version = 4 + + if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then + s.add_runtime_dependency(%q, ["~> 3.2"]) + s.add_development_dependency(%q, ["~> 1.10"]) + s.add_development_dependency(%q, ["~> 10.0"]) + s.add_development_dependency(%q, [">= 0"]) + else + s.add_dependency(%q, ["~> 3.2"]) + s.add_dependency(%q, ["~> 1.10"]) + s.add_dependency(%q, ["~> 10.0"]) + s.add_dependency(%q, [">= 0"]) + end + else + s.add_dependency(%q, ["~> 3.2"]) + s.add_dependency(%q, ["~> 1.10"]) + s.add_dependency(%q, ["~> 10.0"]) + s.add_dependency(%q, [">= 0"]) + end +end diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/specifications/builder-3.2.2.gemspec b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/specifications/builder-3.2.2.gemspec new file mode 100644 index 0000000..5a2853d --- /dev/null +++ b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.A3870418-93FC-4377-BAF8-EE932B5CF901/vendor/bundle/ruby/2.0.0/specifications/builder-3.2.2.gemspec @@ -0,0 +1,20 @@ +# -*- encoding: utf-8 -*- + +Gem::Specification.new do |s| + s.name = "builder" + s.version = "3.2.2" + + s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version= + s.authors = ["Jim Weirich"] + s.date = "2013-06-01" + s.description = "Builder provides a number of builder objects that make creating structured data\nsimple to do. Currently the following builder objects are supported:\n\n* XML Markup\n* XML Events\n" + s.email = "jim.weirich@gmail.com" + s.extra_rdoc_files = ["CHANGES", "MIT-LICENSE", "README.md", "Rakefile", "doc/releases/builder-1.2.4.rdoc", "doc/releases/builder-2.0.0.rdoc", "doc/releases/builder-2.1.1.rdoc"] + s.files = ["CHANGES", "MIT-LICENSE", "README.md", "Rakefile", "doc/releases/builder-1.2.4.rdoc", "doc/releases/builder-2.0.0.rdoc", "doc/releases/builder-2.1.1.rdoc"] + s.homepage = "http://onestepback.org" + s.licenses = ["MIT"] + s.rdoc_options = ["--title", "Builder -- Easy XML Building", "--main", "README.rdoc", "--line-numbers"] + s.require_paths = ["lib"] + s.rubygems_version = "2.0.14" + s.summary = "Builders for MarkUp." +end diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.EBB6171A-6C0B-447C-8BE5-E273C925A74F/info.plist b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.EBB6171A-6C0B-447C-8BE5-E273C925A74F/info.plist index dc51754..cc2f0ce 100644 --- a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.EBB6171A-6C0B-447C-8BE5-E273C925A74F/info.plist +++ b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.EBB6171A-6C0B-447C-8BE5-E273C925A74F/info.plist @@ -9,16 +9,7 @@ connections 1FB4AA4F-276E-4B9E-B48B-D6119EE1B6AE - - - destinationuid - 43DCD79F-94B0-4F0D-B7C2-4F04DC7ECE20 - modifiers - 0 - modifiersubtext - - - + 2E57B3A5-B65F-4AB6-93B2-183BB082414B