radiospieler 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
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