radiospieler 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. data/.document +5 -0
  2. data/Gemfile +26 -0
  3. data/Gemfile.lock +63 -0
  4. data/LICENSE.txt +20 -0
  5. data/README.rdoc +19 -0
  6. data/Rakefile +45 -0
  7. data/VERSION +1 -0
  8. data/app.tmproj +93 -0
  9. data/config/app.yml +5 -0
  10. data/lib/core-extensions/array_ext.rb +5 -0
  11. data/lib/core-extensions/benchmark-logger.rb +31 -0
  12. data/lib/core-extensions/cgi_ext.rb +9 -0
  13. data/lib/core-extensions/hash_ext.rb +24 -0
  14. data/lib/core-extensions/object_ext.rb +8 -0
  15. data/lib/core-extensions/string_ext.rb +59 -0
  16. data/lib/core-extensions/string_without_accents.rb +92 -0
  17. data/lib/core-extensions/tls.rb +16 -0
  18. data/lib/core-extensions/uids.rb +16 -0
  19. data/lib/core-extensions/uri_ext.rb +10 -0
  20. data/lib/extensions/bitly.rb +34 -0
  21. data/lib/extensions/http.rb +60 -0
  22. data/lib/radiospieler.rb +13 -0
  23. data/lib/radiospieler/radiospieler.rb +13 -0
  24. data/lib/radiospieler/radiospieler/cache.rb +77 -0
  25. data/lib/radiospieler/radiospieler/config.rb +58 -0
  26. data/lib/radiospieler/radiospieler/logger.rb +26 -0
  27. data/lib/radiospieler/radiospieler/root.rb +36 -0
  28. data/script/watchr +28 -0
  29. data/test/app_test.rb +56 -0
  30. data/test/array_ext_test.rb +37 -0
  31. data/test/bitlify_test.rb +28 -0
  32. data/test/cache_test.rb +15 -0
  33. data/test/cgi_ext_test.rb +19 -0
  34. data/test/config.yml +8 -0
  35. data/test/config_test.rb +16 -0
  36. data/test/fixtures-vcr/bitly_limit_exceeded.yml +43 -0
  37. data/test/fixtures-vcr/bitly_ok.yml +46 -0
  38. data/test/fixtures-vcr/http_test.yml +389 -0
  39. data/test/hash_ext_test.rb +15 -0
  40. data/test/helper.rb +29 -0
  41. data/test/http_test.rb +18 -0
  42. data/test/string_ext_test.rb +26 -0
  43. data/test/tls_test.rb +35 -0
  44. data/test/uid_test.rb +17 -0
  45. metadata +226 -0
@@ -0,0 +1,37 @@
1
+ # encoding: utf-8
2
+
3
+ require 'helper'
4
+
5
+ class ArrayExtTest < Test::Unit::TestCase
6
+ def test_extract_options
7
+ array = [ 1, 2, 3 ]
8
+ options = array.extract_options!
9
+ assert_equal({}, options)
10
+ assert_equal([1,2,3], array)
11
+
12
+ array = [ ]
13
+ options = array.extract_options!
14
+ assert_equal({}, options)
15
+ assert_equal([], array)
16
+
17
+ array = [ 1, 2, 3, {} ]
18
+ options = array.extract_options!
19
+ assert_equal({}, options)
20
+ assert_equal([1,2,3], array)
21
+
22
+ array = [ {} ]
23
+ options = array.extract_options!
24
+ assert_equal({}, options)
25
+ assert_equal([], array)
26
+
27
+ array = [ 1, 2, 3, { 1 => 2 } ]
28
+ options = array.extract_options!
29
+ assert_equal({ 1 => 2 }, options)
30
+ assert_equal([1,2,3], array)
31
+
32
+ array = [ { 1 => 2 } ]
33
+ options = array.extract_options!
34
+ assert_equal({ 1 => 2 }, options)
35
+ assert_equal([], array)
36
+ end
37
+ end
@@ -0,0 +1,28 @@
1
+ # encoding: utf-8
2
+
3
+ require_relative './helper'
4
+ require 'vcr'
5
+
6
+ VCR.configure do |c|
7
+ c.cassette_library_dir = "#{File.dirname(__FILE__)}/fixtures-vcr"
8
+ c.hook_into :webmock
9
+ end
10
+
11
+ class BitlifyTest < Test::Unit::TestCase
12
+ def test_limit_exceeded
13
+ VCR.use_cassette('bitly_limit_exceeded') do
14
+ assert_equal("http://radiospiel.org/foo", Bitly.shorten("http://radiospiel.org/foo"))
15
+ end
16
+ end
17
+
18
+ def test_ok
19
+ VCR.use_cassette('bitly_ok') do
20
+ assert_equal("http://bit.ly/HV7woD", Bitly.shorten("http://radiospiel.org/a=1&b=2"))
21
+ end
22
+ end
23
+
24
+ def test_url_base
25
+ expected = "https://api-ssl.bitly.com/v3/shorten?login=bitlyapidemo&apiKey=R_0da49e0a9118ff35f52f629d2d71bf07"
26
+ assert_equal expected, Bitly.url_base
27
+ end
28
+ end
@@ -0,0 +1,15 @@
1
+ require 'helper'
2
+
3
+ class CacheTest < Test::Unit::TestCase
4
+ def test_caching
5
+ App::Cache.clear
6
+
7
+ done = 0
8
+
9
+ r = App.cached("six") { done += 1; 2 * 3 }
10
+ assert_equal([1, 6], [done, r])
11
+
12
+ r = App.cached("six") { done += 1; 2 * 3 }
13
+ assert_equal([1, 6], [done, r])
14
+ end
15
+ end
@@ -0,0 +1,19 @@
1
+ # encoding: utf-8
2
+
3
+ require 'helper'
4
+
5
+ class CgiExtTest < Test::Unit::TestCase
6
+ def test_url_for
7
+ assert_equal "/abc", CGI.url_for("/abc")
8
+ assert_equal "/abc?p=12", CGI.url_for("/abc", :p => 12)
9
+ assert_equal "/abc?a=1&b=1&p=12", CGI.url_for("/abc?a=1&b=1", :p => 12)
10
+ assert_equal "/abc?p=1&p=12", CGI.url_for("/abc?p=1", :p => 12)
11
+ end
12
+
13
+ def test_url_for_escaping
14
+ assert_equal "/abc?p=foo+bar", CGI.url_for("/abc", :p => "foo bar")
15
+ assert_equal "/abc?p=foo+%3E+bar", CGI.url_for("/abc", :p => "foo > bar")
16
+ assert_equal "/abc?p=foo+%26+bar", CGI.url_for("/abc", :p => "foo & bar")
17
+ assert_equal "/abc?p=foo+%C3%A4+bar", CGI.url_for("/abc", :p => "foo ä bar")
18
+ end
19
+ end
data/test/config.yml ADDED
@@ -0,0 +1,8 @@
1
+ default:
2
+ abc: "abc"
3
+ dummy: "dummy"
4
+ erbed: <%= "test" %>
5
+
6
+ test:
7
+ abc: "def"
8
+
@@ -0,0 +1,16 @@
1
+ require 'helper'
2
+
3
+ class TestConfig < Test::Unit::TestCase
4
+ def test_read_from_test_config
5
+ App.root = File.dirname __FILE__
6
+
7
+ expected = {"abc"=>"def", "dummy"=>"dummy", "erbed"=> "test" }
8
+
9
+ expected.each do |key, expected_value|
10
+ assert_equal(expected_value, App.config[key])
11
+ end
12
+
13
+ assert_equal("def", App.config[:abc])
14
+ assert_equal("def", App.config["abc"])
15
+ end
16
+ end
@@ -0,0 +1,43 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://api-ssl.bitly.com/v3/shorten?apiKey=R_0da49e0a9118ff35f52f629d2d71bf07&login=bitlyapidemo&longUrl=http://radiospiel.org/foo
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Accept:
11
+ - ! '*/*'
12
+ User-Agent:
13
+ - Ruby
14
+ response:
15
+ status:
16
+ code: 200
17
+ message: OK
18
+ headers:
19
+ !binary "U2VydmVy":
20
+ - !binary |-
21
+ bmdpbng=
22
+ !binary "RGF0ZQ==":
23
+ - !binary |-
24
+ V2VkLCAwNCBBcHIgMjAxMiAxNTo0OTo0NiBHTVQ=
25
+ Content-Type:
26
+ - !binary |-
27
+ YXBwbGljYXRpb24vanNvbjsgY2hhcnNldD11dGYtOA==
28
+ !binary "Q29ubmVjdGlvbg==":
29
+ - !binary |-
30
+ a2VlcC1hbGl2ZQ==
31
+ Mime-Version:
32
+ - !binary |-
33
+ MS4w
34
+ Content-Length:
35
+ - !binary |-
36
+ NzI=
37
+ body:
38
+ encoding: US-ASCII
39
+ string: ! '{ "data": [ ], "status_code": 403, "status_txt": "RATE_LIMIT_EXCEEDED"
40
+ }'
41
+ http_version:
42
+ recorded_at: Wed, 04 Apr 2012 15:49:46 GMT
43
+ recorded_with: VCR 2.0.1
@@ -0,0 +1,46 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://api-ssl.bitly.com/v3/shorten?apiKey=R_0da49e0a9118ff35f52f629d2d71bf07&login=bitlyapidemo&longUrl=http://radiospiel.org/a=1%26b=2
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Accept:
11
+ - ! '*/*'
12
+ User-Agent:
13
+ - Ruby
14
+ response:
15
+ status:
16
+ code: 200
17
+ message: OK
18
+ headers:
19
+ !binary "U2VydmVy":
20
+ - !binary |-
21
+ bmdpbng=
22
+ !binary "RGF0ZQ==":
23
+ - !binary |-
24
+ V2VkLCAwNCBBcHIgMjAxMiAxNTo0NToyOSBHTVQ=
25
+ Content-Type:
26
+ - !binary |-
27
+ YXBwbGljYXRpb24vanNvbjsgY2hhcnNldD11dGYtOA==
28
+ !binary "Q29ubmVjdGlvbg==":
29
+ - !binary |-
30
+ a2VlcC1hbGl2ZQ==
31
+ Mime-Version:
32
+ - !binary |-
33
+ MS4w
34
+ Content-Length:
35
+ - !binary |-
36
+ MTk1
37
+ body:
38
+ encoding: US-ASCII
39
+ string: ! '{ "status_code": 200, "status_txt": "OK", "data": { "long_url": "http:\/\/radiospiel.org\/a=1&b=2",
40
+ "url": "http:\/\/bit.ly\/HV7woD", "hash": "HV7woD", "global_hash": "HV7woE",
41
+ "new_hash": 1 } }
42
+
43
+ '
44
+ http_version:
45
+ recorded_at: Wed, 04 Apr 2012 15:45:29 GMT
46
+ recorded_with: VCR 2.0.1
@@ -0,0 +1,389 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: http://google.de/
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ accept:
11
+ - ! '*/*'
12
+ user-agent:
13
+ - Ruby
14
+ response:
15
+ status:
16
+ code: 301
17
+ message: Moved Permanently
18
+ headers:
19
+ !binary "bG9jYXRpb24=":
20
+ - !binary |-
21
+ aHR0cDovL3d3dy5nb29nbGUuZGUv
22
+ !binary "Y29udGVudC10eXBl":
23
+ - !binary |-
24
+ dGV4dC9odG1sOyBjaGFyc2V0PVVURi04
25
+ !binary "ZGF0ZQ==":
26
+ - !binary |-
27
+ VHVlLCAwMyBBcHIgMjAxMiAxMToxMTowNiBHTVQ=
28
+ !binary "ZXhwaXJlcw==":
29
+ - !binary |-
30
+ VGh1LCAwMyBNYXkgMjAxMiAxMToxMTowNiBHTVQ=
31
+ !binary "Y2FjaGUtY29udHJvbA==":
32
+ - !binary |-
33
+ cHVibGljLCBtYXgtYWdlPTI1OTIwMDA=
34
+ !binary "c2VydmVy":
35
+ - !binary |-
36
+ Z3dz
37
+ !binary "Y29udGVudC1sZW5ndGg=":
38
+ - !binary |-
39
+ MjE4
40
+ !binary "eC14c3MtcHJvdGVjdGlvbg==":
41
+ - !binary |-
42
+ MTsgbW9kZT1ibG9jaw==
43
+ !binary "eC1mcmFtZS1vcHRpb25z":
44
+ - !binary |-
45
+ U0FNRU9SSUdJTg==
46
+ body:
47
+ encoding: US-ASCII
48
+ string: ! "<HTML><HEAD><meta http-equiv=\"content-type\" content=\"text/html;charset=utf-8\">\n<TITLE>301
49
+ Moved</TITLE></HEAD><BODY>\n<H1>301 Moved</H1>\nThe document has moved\n<A
50
+ HREF=\"http://www.google.de/\">here</A>.\r\n</BODY></HTML>\r\n"
51
+ http_version: '1.1'
52
+ recorded_at: Tue, 03 Apr 2012 11:11:06 GMT
53
+ - request:
54
+ method: get
55
+ uri: http://www.google.de/
56
+ body:
57
+ encoding: US-ASCII
58
+ string: ''
59
+ headers:
60
+ accept:
61
+ - ! '*/*'
62
+ user-agent:
63
+ - Ruby
64
+ response:
65
+ status:
66
+ code: 200
67
+ message: OK
68
+ headers:
69
+ !binary "ZGF0ZQ==":
70
+ - !binary |-
71
+ VHVlLCAwMyBBcHIgMjAxMiAxMToxMTowNyBHTVQ=
72
+ !binary "ZXhwaXJlcw==":
73
+ - !binary |-
74
+ LTE=
75
+ !binary "Y2FjaGUtY29udHJvbA==":
76
+ - !binary |-
77
+ cHJpdmF0ZSwgbWF4LWFnZT0w
78
+ !binary "Y29udGVudC10eXBl":
79
+ - !binary |-
80
+ dGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTE=
81
+ !binary "c2V0LWNvb2tpZQ==":
82
+ - !binary |-
83
+ UFJFRj1JRD0wODQ1ZWFlMzMzOGQwZmI5OkZGPTA6VE09MTMzMzQ1MTQ2NzpM
84
+ TT0xMzMzNDUxNDY3OlM9cEtDQ0liOVZmSmM5SnY1ZzsgZXhwaXJlcz1UaHUs
85
+ IDAzLUFwci0yMDE0IDExOjExOjA3IEdNVDsgcGF0aD0vOyBkb21haW49Lmdv
86
+ b2dsZS5kZQ==
87
+ - !binary |-
88
+ TklEPTU4PVFZd05pTUlUbDMyQVdaMTRwQzNQdVhfeVZSczZEMU9NLVl2dkUt
89
+ WDd5QnNjeXR2aU9XeFlCU3hlQ19GbHZxbm5uYS1qLVh1aVdyS0tUU2plQnVU
90
+ cmhfU1NzSE94QVc2MmJtbV9sSWVuWnFlY05wUmRQd2xkYVJWaHNfTUhSbW9n
91
+ OyBleHBpcmVzPVdlZCwgMDMtT2N0LTIwMTIgMTE6MTE6MDcgR01UOyBwYXRo
92
+ PS87IGRvbWFpbj0uZ29vZ2xlLmRlOyBIdHRwT25seQ==
93
+ !binary "cDNw":
94
+ - !binary |-
95
+ Q1A9IlRoaXMgaXMgbm90IGEgUDNQIHBvbGljeSEgU2VlIGh0dHA6Ly93d3cu
96
+ Z29vZ2xlLmNvbS9zdXBwb3J0L2FjY291bnRzL2Jpbi9hbnN3ZXIucHk/aGw9
97
+ ZW4mYW5zd2VyPTE1MTY1NyBmb3IgbW9yZSBpbmZvLiI=
98
+ !binary "c2VydmVy":
99
+ - !binary |-
100
+ Z3dz
101
+ !binary "eC14c3MtcHJvdGVjdGlvbg==":
102
+ - !binary |-
103
+ MTsgbW9kZT1ibG9jaw==
104
+ !binary "eC1mcmFtZS1vcHRpb25z":
105
+ - !binary |-
106
+ U0FNRU9SSUdJTg==
107
+ !binary "dHJhbnNmZXItZW5jb2Rpbmc=":
108
+ - !binary |-
109
+ Y2h1bmtlZA==
110
+ body:
111
+ encoding: ASCII-8BIT
112
+ string: !binary |-
113
+ PCFkb2N0eXBlIGh0bWw+PGh0bWwgaXRlbXNjb3BlIGl0ZW10eXBlPSJodHRw
114
+ Oi8vc2NoZW1hLm9yZy9XZWJQYWdlIj48aGVhZD48bWV0YSBodHRwLWVxdWl2
115
+ PSJjb250ZW50LXR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1J
116
+ U08tODg1OS0xIj48bWV0YSBpdGVtcHJvcD0iaW1hZ2UiIGNvbnRlbnQ9Ii9p
117
+ bWFnZXMvZ29vZ2xlX2Zhdmljb25fMTI4LnBuZyI+PHRpdGxlPkdvb2dsZTwv
118
+ dGl0bGU+PHNjcmlwdD53aW5kb3cuZ29vZ2xlPXtrRUk6Ink5cDZUOXo3QVlI
119
+ MnNnYWU3ZkNrQ0EiLGdldEVJOmZ1bmN0aW9uKGEpe3ZhciBiO3doaWxlKGEm
120
+ JiEoYS5nZXRBdHRyaWJ1dGUmJihiPWEuZ2V0QXR0cmlidXRlKCJlaWQiKSkp
121
+ KWE9YS5wYXJlbnROb2RlO3JldHVybiBifHxnb29nbGUua0VJfSxodHRwczpm
122
+ dW5jdGlvbigpe3JldHVybiB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2w9PSJo
123
+ dHRwczoifSxrRVhQSToiMzY2ODMsMzY4ODgsMzY5MzQsMzc1MDEsMzc1NzMs
124
+ Mzc2NDYsMzc2NzUsMzc2ODIsMzc4NTgsMzc5NTIsMzc5OTQsMzgxMDgiLGtD
125
+ U0k6e2U6IjM2NjgzLDM2ODg4LDM2OTM0LDM3NTAxLDM3NTczLDM3NjQ2LDM3
126
+ Njc1LDM3NjgyLDM3ODU4LDM3OTUyLDM3OTk0LDM4MTA4IixlaToieTlwNlQ5
127
+ ejdBWUgyc2dhZTdmQ2tDQSJ9LGF1dGh1c2VyOjAsCm1sOmZ1bmN0aW9uKCl7
128
+ fSxrSEw6ImRlIix0aW1lOmZ1bmN0aW9uKCl7cmV0dXJuKG5ldyBEYXRlKS5n
129
+ ZXRUaW1lKCl9LGxvZzpmdW5jdGlvbihhLGIsYyxlKXt2YXIgZD1uZXcgSW1h
130
+ Z2UsaD1nb29nbGUsaT1oLmxjLGY9aC5saSxqPSIiO2Qub25lcnJvcj0oZC5v
131
+ bmxvYWQ9KGQub25hYm9ydD1mdW5jdGlvbigpe2RlbGV0ZSBpW2ZdfSkpO2lb
132
+ Zl09ZDtpZighYyYmYi5zZWFyY2goIiZlaT0iKT09LTEpaj0iJmVpPSIrZ29v
133
+ Z2xlLmdldEVJKGUpO3ZhciBnPWN8fCIvZ2VuXzIwND9hdHlwPWkmY3Q9Iith
134
+ KyImY2FkPSIrYitqKyImeng9Iitnb29nbGUudGltZSgpOwp2YXIgaz0vXmh0
135
+ dHA6L2k7aWYoay50ZXN0KGcpJiZnb29nbGUuaHR0cHMoKSl7Z29vZ2xlLm1s
136
+ KG5ldyBFcnJvcigiR0xNTSIpLGZhbHNlLHtzcmM6Z30pO2RlbGV0ZSBpW2Zd
137
+ O3JldHVybn1kLnNyYz1nO2gubGk9ZisxfSxsYzpbXSxsaTowLFRvb2xiZWx0
138
+ Ont9LHk6e30seDpmdW5jdGlvbihhLGIpe2dvb2dsZS55W2EuaWRdPVthLGJd
139
+ O3JldHVybiBmYWxzZX19Owp3aW5kb3cuZ29vZ2xlLnNuPSJ3ZWJocCI7d2lu
140
+ ZG93Lmdvb2dsZS50aW1lcnM9e307d2luZG93Lmdvb2dsZS5zdGFydFRpY2s9
141
+ ZnVuY3Rpb24oYSxiKXt3aW5kb3cuZ29vZ2xlLnRpbWVyc1thXT17dDp7c3Rh
142
+ cnQ6KG5ldyBEYXRlKS5nZXRUaW1lKCl9LGJmcjohKCFiKX19O3dpbmRvdy5n
143
+ b29nbGUudGljaz1mdW5jdGlvbihhLGIsYyl7aWYoIXdpbmRvdy5nb29nbGUu
144
+ dGltZXJzW2FdKWdvb2dsZS5zdGFydFRpY2soYSk7d2luZG93Lmdvb2dsZS50
145
+ aW1lcnNbYV0udFtiXT1jfHwobmV3IERhdGUpLmdldFRpbWUoKX07Z29vZ2xl
146
+ LnN0YXJ0VGljaygibG9hZCIsdHJ1ZSk7dHJ5e31jYXRjaCh1KXt9CnZhciBf
147
+ Z2p3bD1sb2NhdGlvbjtmdW5jdGlvbiBfZ2p1Yygpe3ZhciBlPV9nandsLmhy
148
+ ZWYuaW5kZXhPZigiIyIpO2lmKGU+PTApe3ZhciBhPV9nandsLmhyZWYuc3Vi
149
+ c3RyaW5nKGUpO2lmKGEuaW5kZXhPZigiJnE9Iik+MHx8YS5pbmRleE9mKCIj
150
+ cT0iKT49MCl7YT1hLnN1YnN0cmluZygxKTtpZihhLmluZGV4T2YoIiMiKT09
151
+ LTEpe2Zvcih2YXIgYz0wO2M8YS5sZW5ndGg7KXt2YXIgZD1jO2lmKGEuY2hh
152
+ ckF0KGQpPT0iJiIpKytkO3ZhciBiPWEuaW5kZXhPZigiJiIsZCk7aWYoYj09
153
+ LTEpYj1hLmxlbmd0aDt2YXIgZj1hLnN1YnN0cmluZyhkLGIpO2lmKGYuaW5k
154
+ ZXhPZigiZnA9Iik9PTApe2E9YS5zdWJzdHJpbmcoMCxjKSthLnN1YnN0cmlu
155
+ ZyhiLGEubGVuZ3RoKTtiPWN9ZWxzZSBpZihmPT0iY2FkPWgiKXJldHVybiAw
156
+ O2M9Yn1fZ2p3bC5ocmVmPSIvc2VhcmNoPyIrYSsiJmNhZD1oIjtyZXR1cm4g
157
+ MX19fXJldHVybiAwfWZ1bmN0aW9uIF9nanAoKXshKHdpbmRvdy5fZ2p3bC5o
158
+ YXNoJiYKd2luZG93Ll9nanVjKCkpJiZzZXRUaW1lb3V0KF9nanAsNTAwKX07
159
+ CndpbmRvdy5fZ2pwICYmIF9nanAoKTwvc2NyaXB0PjxzdHlsZT4jZ2Jhciwj
160
+ Z3VzZXJ7Zm9udC1zaXplOjEzcHg7cGFkZGluZy10b3A6MXB4ICFpbXBvcnRh
161
+ bnQ7fSNnYmFye2hlaWdodDoyMnB4fSNndXNlcntwYWRkaW5nLWJvdHRvbTo3
162
+ cHggIWltcG9ydGFudDt0ZXh0LWFsaWduOnJpZ2h0fS5nYmgsLmdiZHtib3Jk
163
+ ZXItdG9wOjFweCBzb2xpZCAjYzlkN2YxO2ZvbnQtc2l6ZToxcHh9LmdiaHto
164
+ ZWlnaHQ6MDtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MjRweDt3aWR0aDoxMDAl
165
+ fUBtZWRpYSBhbGx7LmdiMXtoZWlnaHQ6MjJweDttYXJnaW4tcmlnaHQ6LjVl
166
+ bTt2ZXJ0aWNhbC1hbGlnbjp0b3B9I2diYXJ7ZmxvYXQ6bGVmdH19YS5nYjEs
167
+ YS5nYjR7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZSAhaW1wb3J0YW50fWEu
168
+ Z2IxLGEuZ2I0e2NvbG9yOiMwMGMgIWltcG9ydGFudH08L3N0eWxlPjxzdHls
169
+ ZSBpZD1nc3R5bGU+Ym9keXttYXJnaW46MDtvdmVyZmxvdy15OnNjcm9sbH0j
170
+ Z29ne3BhZGRpbmc6M3B4IDhweCAwfXRke2xpbmUtaGVpZ2h0Oi44ZW19Lmdh
171
+ Y19tIHRke2xpbmUtaGVpZ2h0OjE3cHh9Zm9ybXttYXJnaW4tYm90dG9tOjIw
172
+ cHh9Ym9keSx0ZCxhLHAsLmh7Zm9udC1mYW1pbHk6YXJpYWwsc2Fucy1zZXJp
173
+ Zn0uaHtjb2xvcjojMzZjO2ZvbnQtc2l6ZToyMHB4fS5xe2NvbG9yOiMwMGN9
174
+ LnRzIHRke3BhZGRpbmc6MH0udHN7Ym9yZGVyLWNvbGxhcHNlOmNvbGxhcHNl
175
+ fWVte2ZvbnQtd2VpZ2h0OmJvbGQ7Zm9udC1zdHlsZTpub3JtYWx9LmxzdHto
176
+ ZWlnaHQ6MjVweDt3aWR0aDo0OTZweH0uZ3NmaSwubHN0e2ZvbnQ6MThweCBh
177
+ cmlhbCxzYW5zLXNlcmlmfS5nc2Zze2ZvbnQ6MTdweCBhcmlhbCxzYW5zLXNl
178
+ cmlmfS5kc3tkaXNwbGF5Oi1tb3otaW5saW5lLWJveDtkaXNwbGF5OmlubGlu
179
+ ZS1ibG9jazttYXJnaW46M3B4IDAgNHB4O21hcmdpbi1sZWZ0OjRweH1pbnB1
180
+ dHtmb250LWZhbWlseTppbmhlcml0fWEuZ2IxLGEuZ2IyLGEuZ2IzLGEuZ2I0
181
+ e2NvbG9yOiMxMWMgIWltcG9ydGFudH1ib2R5e2JhY2tncm91bmQ6I2ZmZjtj
182
+ b2xvcjpibGFja31he2NvbG9yOiMxMWM7dGV4dC1kZWNvcmF0aW9uOm5vbmV9
183
+ YTpob3ZlcixhOmFjdGl2ZXt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lfS5m
184
+ bCBhe2NvbG9yOiMzNmN9YTp2aXNpdGVke2NvbG9yOiM1NTFhOGJ9YS5nYjEs
185
+ YS5nYjR7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZX1hLmdiMzpob3Zlcnt0
186
+ ZXh0LWRlY29yYXRpb246bm9uZX0jZ2hlYWQgYS5nYjI6aG92ZXJ7Y29sb3I6
187
+ I2ZmZiFpbXBvcnRhbnR9LnNibGN7cGFkZGluZy10b3A6NXB4fS5zYmxjIGF7
188
+ ZGlzcGxheTpibG9jazttYXJnaW46MnB4IDA7bWFyZ2luLWxlZnQ6MTNweDtm
189
+ b250LXNpemU6MTFweDt9LmxzYmJ7YmFja2dyb3VuZDojZWVlO2JvcmRlcjpz
190
+ b2xpZCAxcHg7Ym9yZGVyLWNvbG9yOiNjY2MgIzk5OSAjOTk5ICNjY2M7aGVp
191
+ Z2h0OjMwcHg7ZGlzcGxheTpibG9ja30uZnRsLCNmbGwgYXtkaXNwbGF5Omlu
192
+ bGluZS1ibG9jazttYXJnaW46MCAxMnB4fS5sc2J7YmFja2dyb3VuZDp1cmwo
193
+ L2ltYWdlcy9zcnByL25hdl9sb2dvODAucG5nKSAwIC0yNThweCByZXBlYXQt
194
+ eDtib3JkZXI6bm9uZTtjb2xvcjojMDAwO2N1cnNvcjpwb2ludGVyO2hlaWdo
195
+ dDozMHB4O21hcmdpbjowO291dGxpbmU6MDtmb250OjE1cHggYXJpYWwsc2Fu
196
+ cy1zZXJpZjt2ZXJ0aWNhbC1hbGlnbjp0b3B9LmxzYjphY3RpdmV7YmFja2dy
197
+ b3VuZDojY2NjfS5sc3Q6Zm9jdXN7b3V0bGluZTpub25lfSNhZGRsYW5nIGF7
198
+ cGFkZGluZzowIDNweH0uZ2FjX3YgZGl2e2Rpc3BsYXk6bm9uZX0uZ2FjX3Yg
199
+ LmdhY192MiwuZ2FjX2J0e2Rpc3BsYXk6YmxvY2shaW1wb3J0YW50fXRhYmxl
200
+ Lmdzc2JfY3t6LWluZGV4Ojk4NiAgfS5uYmNse2JhY2tncm91bmQ6dXJsKC9p
201
+ bWFnZXMvc3Jwci9uYXZfbG9nbzgwLnBuZykgbm8tcmVwZWF0IDtoZWlnaHQ6
202
+ cHg7d2lkdGg6cHh9PC9zdHlsZT48c2NyaXB0PihmdW5jdGlvbigpewp2YXIg
203
+ aD0wLGksaj1wYXJzZUludCgiMSIpO2Z1bmN0aW9uIF9tbFRva2VuKGEsZCxl
204
+ LGIpe2lmKGo8MCl7aWYod2luZG93LmNvbnNvbGUpd2luZG93LmNvbnNvbGUu
205
+ bG9nKCJqY2F0Y2hlciBleGNlcHRpb246ICIsYSwiIERhdGE6ICIsZSk7aWYo
206
+ aj09LTIpdGhyb3cgYTtyZXR1cm4gbnVsbH1pZighYXx8IWEubWVzc2FnZXx8
207
+ YS5tZXNzYWdlPT0iRXJyb3IgbG9hZGluZyBzY3JpcHQiKXJldHVybiBudWxs
208
+ O2lmKCFrKCkmJiFiKXJldHVybiBudWxsO2grKztpZihkKWk9YSYmYS5tZXNz
209
+ YWdlO3ZhciBjPWwoYSwiL2dlbl8yMDQ/YXR5cD1pIixlfHx7fSksZj1nb29n
210
+ bGUuX2FlbShhLGMpO2lmKCFiKWdvb2dsZS5sb2coMCwwLGYpO3JldHVybiBm
211
+ fWdvb2dsZS5tbD1fbWxUb2tlbjtmdW5jdGlvbiBrKCl7cmV0dXJuIGg8MX1m
212
+ dW5jdGlvbiBsKGEsZCxlKXt2YXIgYj1lbmNvZGVVUklDb21wb25lbnQsYz1b
213
+ ZCwiJmVpPSIsYihnb29nbGUua0VJKSwiJmpleHBpZD0iLApiKGdvb2dsZS5r
214
+ RVhQSSksIiZzcmNwZz0iLGIoImhwIiksIiZqc3I9IixiKCIxIiksIiZidmVy
215
+ PSIsYigiMjMyIildO2Zvcih2YXIgZiBpbiBlKXtjLnB1c2goIiYiKTtjLnB1
216
+ c2goYihmKSk7Yy5wdXNoKCI9Iik7Yy5wdXNoKGIoZVtmXSkpfWMucHVzaCgi
217
+ JmVtc2c9Iik7Yy5wdXNoKGIoYS5uYW1lKyI6ICIrYS5tZXNzYWdlKSk7dmFy
218
+ IGc9Yy5qb2luKCIiKTtpZihnb29nbGUuX2l0bChnKSlnPWcuc3Vic3RyKDAs
219
+ MjAwMCk7cmV0dXJuIGd9Z29vZ2xlLl9pdGw9ZnVuY3Rpb24oYSl7cmV0dXJu
220
+ IGEubGVuZ3RoPj0yMDAwfTtnb29nbGUuX2FlbT1mdW5jdGlvbihhLGQpe3Jl
221
+ dHVybiBkfTtmdW5jdGlvbiBfb25FcnJvclRva2VuKGEpe2lmKGkhPT1hKWdv
222
+ b2dsZS5tbChuZXcgRXJyb3IoYSksZmFsc2UpO2k9bnVsbDtpZighaygpKXdp
223
+ bmRvdy5vbmVycm9yPW51bGx9d2luZG93Lm9uZXJyb3I9X29uRXJyb3JUb2tl
224
+ bjsKfSkoKTsKd2luZG93LnJ3dD1mdW5jdGlvbihhLGYsZyxsLG0saCxjLG4s
225
+ aSl7dHJ5e2lmKGE9PT13aW5kb3cpe2E9d2luZG93LmV2ZW50LnNyY0VsZW1l
226
+ bnQ7d2hpbGUoYSl7aWYoYS5ocmVmKWJyZWFrO2E9YS5wYXJlbnROb2RlfX12
227
+ YXIgYj1lbmNvZGVVUklDb21wb25lbnR8fGVzY2FwZSxkO2Q9YS5nZXRBdHRy
228
+ aWJ1dGUoImhyZWYiKTtpZihjJiZjLnN1YnN0cmluZygwLDYpIT0iJnNpZzI9
229
+ IiljPSImc2lnMj0iK2M7dmFyIG89WyIvdXJsP3NhPXQiLCIiLCImY2Q9Iixi
230
+ KG0pLGk/IiZhdXRodXNlcj0iK2IoaSk6IiIsZ29vZ2xlLmomJmdvb2dsZS5q
231
+ LnBmPyImc3FpPTIiOiIiLCImdmVkPSIsYihuKSwiJnVybD0iLGIoZCkucmVw
232
+ bGFjZSgvXCsvZywiJTJCIiksIiZlaT0iLCJ5OXA2VDl6N0FZSDJzZ2FlN2ZD
233
+ a0NBIixoPyImdXNnPSIraDoiIixjXS5qb2luKCIiKTthLmhyZWY9bzthLm9u
234
+ bW91c2Vkb3duPSIifWNhdGNoKHApe31yZXR1cm4gdHJ1ZX07Cjwvc2NyaXB0
235
+ PjwvaGVhZD48Ym9keSBiZ2NvbG9yPSNmZmZmZmYgdGV4dD0jMDAwMDAwIGxp
236
+ bms9IzAwMDBjYyB2bGluaz0jNTUxYThiIGFsaW5rPSNmZjAwMDAgb25sb2Fk
237
+ PSJkb2N1bWVudC5mJiZkb2N1bWVudC5mLnEuZm9jdXMoKTtkb2N1bWVudC5n
238
+ YnFmJiZkb2N1bWVudC5nYnFmLnEuZm9jdXMoKTtpZihkb2N1bWVudC5pbWFn
239
+ ZXMpbmV3IEltYWdlKCkuc3JjPScvaW1hZ2VzL3NycHIvbmF2X2xvZ284MC5w
240
+ bmcnIiA+PHRleHRhcmVhIGlkPWNzaSBzdHlsZT1kaXNwbGF5Om5vbmU+PC90
241
+ ZXh0YXJlYT48ZGl2IGlkPW1uZ2I+PGRpdiBpZD1nYmFyPjxub2JyPjxiIGNs
242
+ YXNzPWdiMT5TdWNoZTwvYj4gPGEgY2xhc3M9Z2IxIGhyZWY9Imh0dHA6Ly93
243
+ d3cuZ29vZ2xlLmRlL2ltZ2hwP2hsPWRlJnRhYj13aSI+QmlsZGVyPC9hPiA8
244
+ YSBjbGFzcz1nYjEgaHJlZj0iaHR0cDovL3ZpZGVvLmdvb2dsZS5kZS8/aGw9
245
+ ZGUmdGFiPXd2Ij5WaWRlb3M8L2E+IDxhIGNsYXNzPWdiMSBocmVmPSJodHRw
246
+ Oi8vbWFwcy5nb29nbGUuZGUvbWFwcz9obD1kZSZ0YWI9d2wiPk1hcHM8L2E+
247
+ IDxhIGNsYXNzPWdiMSBocmVmPSJodHRwOi8vbmV3cy5nb29nbGUuZGUvbndz
248
+ aHA/aGw9ZGUmdGFiPXduIj5OZXdzPC9hPiA8YSBjbGFzcz1nYjEgaHJlZj0i
249
+ aHR0cDovL3d3dy5nb29nbGUuZGUvc2hvcHBpbmc/aGw9ZGUmdGFiPXdmIj5T
250
+ aG9wcGluZzwvYT4gPGEgY2xhc3M9Z2IxIGhyZWY9Imh0dHBzOi8vbWFpbC5n
251
+ b29nbGUuY29tL21haWwvP3RhYj13bSI+TWFpbDwvYT4gPGEgY2xhc3M9Z2Ix
252
+ IHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246bm9uZSIgaHJlZj0iaHR0cDovL3d3
253
+ dy5nb29nbGUuZGUvaW50bC9kZS9vcHRpb25zLyI+PHU+TWVocjwvdT4gJnJh
254
+ cXVvOzwvYT48L25vYnI+PC9kaXY+PGRpdiBpZD1ndXNlciB3aWR0aD0xMDAl
255
+ Pjxub2JyPjxzcGFuIGlkPWdibiBjbGFzcz1nYmk+PC9zcGFuPjxzcGFuIGlk
256
+ PWdiZiBjbGFzcz1nYmY+PC9zcGFuPjxzcGFuIGlkPWdiZT48YSAgaHJlZj0i
257
+ L3VybD9zYT1wJnByZWY9aWcmcHZhbD0zJnE9aHR0cDovL3d3dy5nb29nbGUu
258
+ ZGUvaWclM0ZobCUzRGRlJTI2c291cmNlJTNEaWdsayZ1c2c9QUZRakNORmpm
259
+ UGF2UlBCSnJPS0pTM01CMnV6aHBmTjZ6dyIgY2xhc3M9Z2I0PmlHb29nbGU8
260
+ L2E+IHwgPC9zcGFuPjxhIGhyZWY9Imh0dHA6Ly93d3cuZ29vZ2xlLmRlL2hp
261
+ c3Rvcnkvb3B0b3V0P2hsPWRlIiBjbGFzcz1nYjQ+V2VicHJvdG9rb2xsPC9h
262
+ PiB8IDxhICBocmVmPSIvcHJlZmVyZW5jZXM/aGw9ZGUiIGNsYXNzPWdiND5F
263
+ aW5zdGVsbHVuZ2VuPC9hPiB8IDxhIGlkPWdiXzcwIGhyZWY9Imh0dHBzOi8v
264
+ YWNjb3VudHMuZ29vZ2xlLmNvbS9TZXJ2aWNlTG9naW4/aGw9ZGUmY29udGlu
265
+ dWU9aHR0cDovL3d3dy5nb29nbGUuZGUvIiBjbGFzcz1nYjQ+QW5tZWxkZW48
266
+ L2E+PC9ub2JyPjwvZGl2PjxkaXYgY2xhc3M9Z2JoIHN0eWxlPWxlZnQ6MD48
267
+ L2Rpdj48ZGl2IGNsYXNzPWdiaCBzdHlsZT1yaWdodDowPjwvZGl2PjwvZGl2
268
+ PjxjZW50ZXI+PGJyIGNsZWFyPWFsbCBpZD1sZ3BkPjxkaXYgaWQ9bGdhPjxk
269
+ aXYgc3R5bGU9InBhZGRpbmc6MjhweCAwIDNweCI+PGRpdiBhbGlnbj1sZWZ0
270
+ IHN0eWxlPSJiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL3NycHIvbG9nbzF3LnBu
271
+ Zykgbm8tcmVwZWF0O2hlaWdodDoxMTBweDt3aWR0aDoyNzZweCIgdGl0bGU9
272
+ Ikdvb2dsZSIgaWQ9aHBsb2dvIG9ubG9hZD0id2luZG93LmxvbCYmbG9sKCki
273
+ PjxkaXYgbm93cmFwIHN0eWxlPSJjb2xvcjojNzc3O2ZvbnQtc2l6ZToxNnB4
274
+ O2ZvbnQtd2VpZ2h0OmJvbGQ7bGVmdDoyMTRweDtwb3NpdGlvbjpyZWxhdGl2
275
+ ZTt0b3A6NzBweCI+RGV1dHNjaGxhbmQ8L2Rpdj48L2Rpdj48L2Rpdj48YnI+
276
+ PC9kaXY+PGZvcm0gYWN0aW9uPSIvc2VhcmNoIiBuYW1lPWY+PHRhYmxlIGNl
277
+ bGxwYWRkaW5nPTAgY2VsbHNwYWNpbmc9MD48dHIgdmFsaWduPXRvcD48dGQg
278
+ d2lkdGg9MjUlPiZuYnNwOzwvdGQ+PHRkIGFsaWduPWNlbnRlciBub3dyYXA+
279
+ PGlucHV0IG5hbWU9aGwgdHlwZT1oaWRkZW4gdmFsdWU9ZGU+PGlucHV0IG5h
280
+ bWU9c291cmNlIHR5cGU9aGlkZGVuIHZhbHVlPWhwPjxpbnB1dCB0eXBlPWhp
281
+ ZGRlbiBuYW1lPWllIHZhbHVlPSJJU08tODg1OS0xIj48ZGl2IGNsYXNzPWRz
282
+ IHN0eWxlPSJoZWlnaHQ6MzJweDttYXJnaW46NHB4IDAiPjxpbnB1dCBhdXRv
283
+ Y29tcGxldGU9b2ZmIG1heGxlbmd0aD0yMDQ4IG5hbWU9cSBjbGFzcz0ibHN0
284
+ IiB0aXRsZT0iR29vZ2xlLVN1Y2hlIiB2YWx1ZT0iIiBzaXplPTU3IHN0eWxl
285
+ PSJjb2xvcjojMDAwO21hcmdpbjowO3BhZGRpbmc6NXB4IDhweCAwIDZweDt2
286
+ ZXJ0aWNhbC1hbGlnbjp0b3AiPjwvZGl2PjxiciBzdHlsZT0ibGluZS1oZWln
287
+ aHQ6MCI+PHNwYW4gY2xhc3M9ZHMgPjxzcGFuIGNsYXNzPWxzYmI+PGlucHV0
288
+ IG5hbWU9YnRuRyB0eXBlPXN1Ym1pdCB2YWx1ZT0iR29vZ2xlLVN1Y2hlIiBj
289
+ bGFzcz1sc2I+PC9zcGFuPjwvc3Bhbj48c3BhbiBjbGFzcz1kcz48c3BhbiBj
290
+ bGFzcz1sc2JiPjxpbnB1dCBuYW1lPWJ0bkkgdHlwZT1zdWJtaXQgY2xhc3M9
291
+ bHNiIHZhbHVlPSJBdWYgZ3V0IEds/GNrISI+PC9zcGFuPjwvc3Bhbj48L3Rk
292
+ Pjx0ZCBub3dyYXAgd2lkdGg9MjUlIGFsaWduPWxlZnQgY2xhc3M9ImZsIHNi
293
+ bGMiPjxhIGhyZWY9Ii9hZHZhbmNlZF9zZWFyY2g/aGw9ZGUiPkVyd2VpdGVy
294
+ dGUgU3VjaGU8L2E+PGEgaHJlZj0iL2xhbmd1YWdlX3Rvb2xzP2hsPWRlIj5T
295
+ cHJhY2hvcHRpb25lbjwvYT48L3RkPjwvdHI+PC90YWJsZT48aW5wdXQgdHlw
296
+ ZT1oaWRkZW4gaWQ9Z2J2IG5hbWU9Z2J2IHZhbHVlPSIxIj48L2Zvcm0+PGRp
297
+ diBzdHlsZT0iZm9udC1zaXplOjgzJTttaW4taGVpZ2h0OjMuNWVtIj48YnI+
298
+ PC9kaXY+PHNwYW4gaWQ9Zm9vdGVyPjxjZW50ZXIgaWQ9ZmN0cj48ZGl2IHN0
299
+ eWxlPSJmb250LXNpemU6MTBwdCI+PGRpdiBpZD1mbGwgc3R5bGU9Im1hcmdp
300
+ bjoxOXB4IGF1dG87dGV4dC1hbGlnbjpjZW50ZXIiPjxhIGhyZWY9Ii9pbnRs
301
+ L2RlL2Fkcy8iPldlcmJlbiBtaXQgR29vZ2xlPC9hPjxhIGhyZWY9Ii9zZXJ2
302
+ aWNlcy8iPlVudGVybmVobWVuc2FuZ2Vib3RlPC9hPjxhIGhyZWY9Ii9pbnRs
303
+ L2RlL2Fib3V0Lmh0bWwiPtxiZXIgR29vZ2xlPC9hPjxhIGhyZWY9Imh0dHA6
304
+ Ly93d3cuZ29vZ2xlLmNvbS9uY3IiIGNsYXNzPSJnbCBub2JyIj5Hb29nbGUu
305
+ Y29tIGluIEVuZ2xpc2g8L2E+PC9kaXY+PC9kaXY+PHAgc3R5bGU9ImNvbG9y
306
+ OiM3Njc2NzY7Zm9udC1zaXplOjhwdCI+JmNvcHk7IDIwMTIgLSA8YSBocmVm
307
+ PSIvaW50bC9kZS9wb2xpY2llcy8iPkRhdGVuc2NodXR6ZXJrbORydW5nICYg
308
+ TnV0enVuZ3NiZWRpbmd1bmdlbjwvYT48L3A+PC9jZW50ZXI+PC9zcGFuPiA8
309
+ L2NlbnRlcj48ZGl2IGlkPXhqc2Q+PC9kaXY+PGRpdiBpZD14anNpPjxzY3Jp
310
+ cHQ+aWYoZ29vZ2xlLnkpZ29vZ2xlLnkuZmlyc3Q9W107Z29vZ2xlLnJlZ2lz
311
+ dGVyPWdvb2dsZS5yZWdpc3Rlcnx8ZnVuY3Rpb24oaSxsKXtnb29nbGUueS5m
312
+ aXJzdC5wdXNoKGZ1bmN0aW9uKCl7Z29vZ2xlLnJlZ2lzdGVyKGksbCk7fSk7
313
+ fTtnb29nbGUuZGxqPWZ1bmN0aW9uKGIpe3dpbmRvdy5zZXRUaW1lb3V0KGZ1
314
+ bmN0aW9uKCl7dmFyIGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0
315
+ Iik7YS5zcmM9Yjtkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgieGpzZCIpLmFw
316
+ cGVuZENoaWxkKGEpfSwwKX07CmlmKGdvb2dsZS55KWdvb2dsZS55LmZpcnN0
317
+ PVtdO2lmKCFnb29nbGUueGpzKXtnb29nbGUuZHN0cj1bXTtnb29nbGUucmVp
318
+ bj1bXTtpZihnb29nbGUudGltZXJzJiZnb29nbGUudGltZXJzLmxvYWQudCl7
319
+ Z29vZ2xlLnRpbWVycy5sb2FkLnQueGpzbHM9bmV3IERhdGUoKS5nZXRUaW1l
320
+ KCk7fWdvb2dsZS5kbGooJy9leHRlcm5fanMvZi9DZ0prWlJJQ1pHVWdBQ3N3
321
+ UlRnQUxDc3dXamdBTENzd0RqZ0FMQ3N3RnpnQUxDc3dQRGdBTENzd1VUZ0FM
322
+ Q3N3Q2pnQW1nSUNhR1VzS3pDWUFUZ0FMQ3N3RmpnQUxDc3dHVGdCTENzd1FU
323
+ Z0FMQ3N3VFRnQUxDc3dUamdBTENzd1ZEZ0FMQ3N3YVRnQUxDc3drQUU0QUN3
324
+ ck1KSUJPQUFzS3pEVkFUZ0FMQ3N3MkFFNEFDd3JNQmc0QUN3ck1DWTRBQ3lB
325
+ QWxDUUFuQS9RNFY5Q2JwN2Z1by5qcycpO2dvb2dsZS54anM9MX1nb29nbGUu
326
+ bmVlZ2c9MTtnb29nbGUubWM9W107Z29vZ2xlLm1jPWdvb2dsZS5tYy5jb25j
327
+ YXQoW1s2OSx7fV0sWzE0LHt9XSxbNjAse31dLFsyMyx7fV0sWzgxLHt9XSxb
328
+ MTAseyJjbGllbnQiOiJocCIsImRoIjp0cnVlLCJkcyI6IiIsImV4cCI6ImZy
329
+ Z2JsZCIsImZsIjp0cnVlLCJob3N0IjoiZ29vZ2xlLmRlIiwianNvbnAiOnRy
330
+ dWUsIm1zZ3MiOnsibGNreSI6IkF1ZiBndXQgR2z8Y2shIiwibG1sIjoiV2Vp
331
+ dGVyZSBJbmZvcm1hdGlvbmVuIiwicHNyYyI6IkRpZXNlIFN1Y2hhbmZyYWdl
332
+ IHd1cmRlIGF1cyBJaHJlbSBcdTAwM0NhIGhyZWY9XCIvaGlzdG9yeVwiXHUw
333
+ MDNFV2VicHJvdG9rb2xsXHUwMDNDL2FcdTAwM0UgZW50ZmVybnQuIiwicHNy
334
+ bCI6IkVudGZlcm5lbiIsInNyY2giOiJHb29nbGUtU3VjaGUifSwib3ZyIjp7
335
+ ImZtIjoxLCJsbSI6MSwicGYiOjEsInN3IjoxfSwicHEiOiIiLCJzY2QiOjEw
336
+ LCJzY2UiOjV9XSxbMTUyLHt9XSxbNjUse31dLFsyMTMseyJwYmVyciI6Ilx1
337
+ MDAzQ2ZvbnQgY29sb3I9cmVkXHUwMDNFRmVobGVyOlx1MDAzQy9mb250XHUw
338
+ MDNFIERlciBTZXJ2ZXIga29ubnRlIElocmUgQW5mb3JkZXJ1bmcgbmljaHQg
339
+ YXVzZvxocmVuLiBWZXJzdWNoZW4gU2llIGVzIGluIDMwIFNla3VuZGVuIG5v
340
+ Y2ggZWlubWFsLiJ9XSxbNzgse31dLFsyNSx7ImciOjgsImsiOmZhbHNlLCJt
341
+ Ijp7ImFwcCI6dHJ1ZSwiYmtzIjp0cnVlLCJibGciOnRydWUsImRzYyI6dHJ1
342
+ ZSwiZXZuIjp0cnVlLCJmaW4iOnRydWUsImZsbSI6dHJ1ZSwiZnJtIjp0cnVl
343
+ LCJpc2NoIjp0cnVlLCJrbGciOnRydWUsIm1ibCI6dHJ1ZSwibndzIjp0cnVl
344
+ LCJwbGNzIjp0cnVlLCJwcGwiOnRydWUsInByYyI6dHJ1ZSwicHRzIjp0cnVl
345
+ LCJyY3AiOnRydWUsInNob3AiOnRydWUsInZpZCI6dHJ1ZX0sInQiOm51bGx9
346
+ XSxbMjE2LHt9XSxbMTA1LHt9XSxbMjIseyJkYiI6ZmFsc2UsIm1fZXJyb3Jz
347
+ Ijp7IjMyIjoiRXMgZ2lidCBsZWlkZXIga2VpbmUgd2VpdGVyZW4gRXJnZWJu
348
+ aXNzZS4iLCJkZWZhdWx0IjoiXHUwMDNDZm9udCBjb2xvcj1yZWRcdTAwM0VG
349
+ ZWhsZXI6XHUwMDNDL2ZvbnRcdTAwM0UgRGVyIFNlcnZlciBrb25udGUgSWhy
350
+ ZSBBbmZvcmRlcnVuZyBuaWNodCBhdXNm/GhyZW4uIFZlcnN1Y2hlbiBTaWUg
351
+ ZXMgaW4gMzAgU2VrdW5kZW4gbm9jaCBlaW5tYWwuIn0sIm1fdGlwIjoiS2xp
352
+ Y2tlbiBTaWUgaGllciwgdW0gd2VpdGVyZSBJbmZvcm1hdGlvbmVuIHp1IGVy
353
+ aGFsdGVuLiIsIm5scG0iOiItMTUzcHggLTg0cHgiLCJubHBwIjoiLTE1M3B4
354
+ IC03MHB4IiwidXRwIjpmYWxzZX1dLFs3Nyx7fV0sWzE0Nix7fV0sWzE0NCx7
355
+ fV0sWzg0LHsidHRfa2Z0Ijp0cnVlfV0sWzI0LHt9XSxbMzgse31dXSk7Z29v
356
+ Z2xlLnkuZmlyc3QucHVzaChmdW5jdGlvbigpe2lmKGdvb2dsZS5tZWQpe2dv
357
+ b2dsZS5tZWQoJ2luaXQnKTtnb29nbGUuaW5pdEhpc3RvcnkoKTtnb29nbGUu
358
+ bWVkKCdoaXN0b3J5Jyk7fWdvb2dsZS5IaXN0b3J5JiZnb29nbGUuSGlzdG9y
359
+ eS5pbml0aWFsaXplKCcvJyl9KTtpZihnb29nbGUuaiYmZ29vZ2xlLmouZW4m
360
+ Jmdvb2dsZS5qLnhpKXt3aW5kb3cuc2V0VGltZW91dChnb29nbGUuai54aSww
361
+ KTt9PC9zY3JpcHQ+PC9kaXY+PHNjcmlwdD4oZnVuY3Rpb24oKXsKdmFyIGIs
362
+ ZCxlLGY7ZnVuY3Rpb24gZyhhLGMpe2lmKGEucmVtb3ZlRXZlbnRMaXN0ZW5l
363
+ cil7YS5yZW1vdmVFdmVudExpc3RlbmVyKCJsb2FkIixjLGZhbHNlKTthLnJl
364
+ bW92ZUV2ZW50TGlzdGVuZXIoImVycm9yIixjLGZhbHNlKX1lbHNle2EuZGV0
365
+ YWNoRXZlbnQoIm9ubG9hZCIsYyk7YS5kZXRhY2hFdmVudCgib25lcnJvciIs
366
+ Yyl9fWZ1bmN0aW9uIGgoYSl7Zj0obmV3IERhdGUpLmdldFRpbWUoKTsrK2Q7
367
+ YT1hfHx3aW5kb3cuZXZlbnQ7dmFyIGM9YS50YXJnZXR8fGEuc3JjRWxlbWVu
368
+ dDtnKGMsaCl9dmFyIGk9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
369
+ ImltZyIpO2I9aS5sZW5ndGg7ZD0wO2Zvcih2YXIgaj0wLGs7ajxiOysrail7
370
+ az1pW2pdO2lmKGsuY29tcGxldGV8fHR5cGVvZiBrLnNyYyE9InN0cmluZyJ8
371
+ fCFrLnNyYykrK2Q7ZWxzZSBpZihrLmFkZEV2ZW50TGlzdGVuZXIpe2suYWRk
372
+ RXZlbnRMaXN0ZW5lcigibG9hZCIsaCxmYWxzZSk7ay5hZGRFdmVudExpc3Rl
373
+ bmVyKCJlcnJvciIsCmgsZmFsc2UpfWVsc2V7ay5hdHRhY2hFdmVudCgib25s
374
+ b2FkIixoKTtrLmF0dGFjaEV2ZW50KCJvbmVycm9yIixoKX19ZT1iLWQ7ZnVu
375
+ Y3Rpb24gbCgpe2lmKCFnb29nbGUudGltZXJzLmxvYWQudClyZXR1cm47Z29v
376
+ Z2xlLnRpbWVycy5sb2FkLnQub2w9KG5ldyBEYXRlKS5nZXRUaW1lKCk7Z29v
377
+ Z2xlLnRpbWVycy5sb2FkLnQuaW1sPWY7Z29vZ2xlLmtDU0kuaW1jPWQ7Z29v
378
+ Z2xlLmtDU0kuaW1uPWI7Z29vZ2xlLmtDU0kuaW1wPWU7aWYoZ29vZ2xlLnN0
379
+ dCE9PXVuZGVmaW5lZClnb29nbGUua0NTSS5zdHQ9Z29vZ2xlLnN0dDtnb29n
380
+ bGUudGltZXJzLmxvYWQudC54anMmJmdvb2dsZS5yZXBvcnQmJmdvb2dsZS5y
381
+ ZXBvcnQoZ29vZ2xlLnRpbWVycy5sb2FkLGdvb2dsZS5rQ1NJKX1pZih3aW5k
382
+ b3cuYWRkRXZlbnRMaXN0ZW5lcil3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigi
383
+ bG9hZCIsCmwsZmFsc2UpO2Vsc2UgaWYod2luZG93LmF0dGFjaEV2ZW50KXdp
384
+ bmRvdy5hdHRhY2hFdmVudCgib25sb2FkIixsKTtnb29nbGUudGltZXJzLmxv
385
+ YWQudC5wcnQ9KGY9KG5ldyBEYXRlKS5nZXRUaW1lKCkpOwp9KSgpOwo8L3Nj
386
+ cmlwdD4=
387
+ http_version: '1.1'
388
+ recorded_at: Tue, 03 Apr 2012 11:11:07 GMT
389
+ recorded_with: VCR 2.0.1