async 1.25.2 → 1.28.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (62) hide show
  1. checksums.yaml +4 -4
  2. data/lib/async/barrier.rb +1 -1
  3. data/lib/async/clock.rb +33 -1
  4. data/lib/async/logger.rb +1 -6
  5. data/lib/async/node.rb +20 -2
  6. data/lib/async/queue.rb +5 -1
  7. data/lib/async/reactor.rb +73 -12
  8. data/lib/async/scheduler.rb +112 -0
  9. data/lib/async/task.rb +11 -3
  10. data/lib/async/version.rb +1 -1
  11. metadata +46 -104
  12. data/.editorconfig +0 -6
  13. data/.github/workflows/development.yml +0 -55
  14. data/.gitignore +0 -14
  15. data/.rspec +0 -3
  16. data/.yardopts +0 -1
  17. data/Gemfile +0 -20
  18. data/Guardfile +0 -14
  19. data/README.md +0 -385
  20. data/Rakefile +0 -40
  21. data/async.gemspec +0 -34
  22. data/bake.rb +0 -33
  23. data/benchmark/async_vs_lightio.rb +0 -84
  24. data/benchmark/fiber_count.rb +0 -10
  25. data/benchmark/rubies/README.md +0 -51
  26. data/benchmark/rubies/benchmark.rb +0 -220
  27. data/benchmark/thread_count.rb +0 -9
  28. data/benchmark/thread_vs_fiber.rb +0 -45
  29. data/examples/async_method.rb +0 -60
  30. data/examples/callback/loop.rb +0 -44
  31. data/examples/capture/README.md +0 -59
  32. data/examples/capture/capture.rb +0 -116
  33. data/examples/fibers.rb +0 -178
  34. data/examples/queue/producer.rb +0 -28
  35. data/examples/sleep_sort.rb +0 -40
  36. data/examples/stop/condition.rb +0 -31
  37. data/examples/stop/sleep.rb +0 -42
  38. data/gems/event.gemfile +0 -4
  39. data/logo.png +0 -0
  40. data/logo.svg +0 -64
  41. data/papers/1982 Grossman.pdf +0 -0
  42. data/papers/1987 ODell.pdf +0 -0
  43. data/spec/async/barrier_spec.rb +0 -116
  44. data/spec/async/chainable_async_examples.rb +0 -13
  45. data/spec/async/clock_spec.rb +0 -37
  46. data/spec/async/condition_examples.rb +0 -105
  47. data/spec/async/condition_spec.rb +0 -72
  48. data/spec/async/logger_spec.rb +0 -65
  49. data/spec/async/node_spec.rb +0 -193
  50. data/spec/async/notification_spec.rb +0 -66
  51. data/spec/async/performance_spec.rb +0 -72
  52. data/spec/async/queue_spec.rb +0 -129
  53. data/spec/async/reactor/nested_spec.rb +0 -52
  54. data/spec/async/reactor_spec.rb +0 -253
  55. data/spec/async/semaphore_spec.rb +0 -169
  56. data/spec/async/task_spec.rb +0 -476
  57. data/spec/async/wrapper_spec.rb +0 -203
  58. data/spec/async_spec.rb +0 -33
  59. data/spec/enumerator_spec.rb +0 -83
  60. data/spec/kernel/async_spec.rb +0 -33
  61. data/spec/kernel/sync_spec.rb +0 -54
  62. data/spec/spec_helper.rb +0 -18
@@ -1,28 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # frozen_string_literal: true
3
-
4
- require 'async'
5
- require 'async/queue'
6
-
7
- Async do
8
- # Queue of up to 10 items:
9
- items = Async::LimitedQueue.new(10)
10
-
11
- # Five producers:
12
- 5.times do
13
- Async do |task|
14
- while true
15
- t = rand
16
- task.sleep(t)
17
- items.enqueue(t)
18
- end
19
- end
20
- end
21
-
22
- # A single consumer:
23
- Async do |task|
24
- while item = items.dequeue
25
- puts "dequeue -> #{item}"
26
- end
27
- end
28
- end
@@ -1,40 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # frozen_string_literal: true
3
-
4
- require_relative '../lib/async'
5
-
6
- def sleep_sort(items)
7
- Async::Reactor.run do |task|
8
- # Where to save the sorted items:
9
- sorted_items = []
10
-
11
- items.each do |item|
12
- # Spawn an async task...
13
- task.async do |nested_task|
14
- # Which goes to sleep for the specified duration:
15
- nested_task.sleep(item)
16
-
17
- # And then appends the item to the sorted array:
18
- sorted_items << item
19
- end
20
- end
21
-
22
- # Wait for all children to complete.
23
- task.children.each(&:wait)
24
-
25
- # Return the result:
26
- sorted_items
27
- end.wait # Wait for the entire process to complete.
28
- end
29
-
30
- # Calling at the top level blocks the thread:
31
- puts sleep_sort(5.times.collect{rand}).inspect
32
-
33
- # Calling in your own reactor allows you to control the asynchronus behaviour:
34
- Async::Reactor.run do |task|
35
- 3.times do
36
- task.async do
37
- puts sleep_sort(5.times.collect{rand}).inspect
38
- end
39
- end
40
- end
@@ -1,31 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # frozen_string_literal: true
3
-
4
- # require 'async'; require 'async/queue'
5
-
6
- require_relative '../../lib/async'; require_relative '../../lib/async/queue'
7
-
8
- Async do |consumer|
9
- consumer.annotate "consumer"
10
- condition = Async::Condition.new
11
-
12
- producer = Async do |subtask|
13
- subtask.annotate "subtask"
14
-
15
- (1..).each do |value|
16
- puts "producer yielding"
17
- subtask.yield # (1) Fiber.yield, (3) Reactor -> producer.resume
18
- condition.signal(value) # (4) consumer.resume(value)
19
- end
20
-
21
- puts "producer exiting"
22
- end
23
-
24
- value = condition.wait # (2) value = Fiber.yield
25
- puts "producer.stop"
26
- producer.stop # (5) [producer is resumed already] producer.stop
27
-
28
- puts "consumer exiting"
29
- end
30
-
31
- puts "Done."
@@ -1,42 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # frozen_string_literal: true
3
-
4
- require_relative '../../lib/async'
5
-
6
- require 'async/http/endpoint'
7
- require 'async/http/server'
8
-
9
- require 'async/http/internet'
10
-
11
- # To query the web server:
12
- # curl http://localhost:9292/kittens
13
-
14
- Async do |parent|
15
- endpoint = Async::HTTP::Endpoint.parse("http://localhost:9292")
16
- internet = Async::HTTP::Internet.new
17
-
18
- server = Async::HTTP::Server.for(endpoint) do |request|
19
- if request.path =~ /\/(.*)/
20
- keyword = $1
21
-
22
- response = internet.get("https://www.google.com/search?q=#{keyword}")
23
-
24
- count = response.read.scan(keyword).size
25
-
26
- Protocol::HTTP::Response[200, [], ["Google found #{count} instance(s) of #{keyword}.\n"]]
27
- else
28
- Protocol::HTTP::Response[404, [], []]
29
- end
30
- end
31
-
32
- tasks = server.run
33
-
34
- #while true
35
- parent.sleep(10)
36
- parent.reactor.print_hierarchy
37
- #end
38
-
39
- parent.stop # -> Async::Stop
40
-
41
- tasks.each(&:stop)
42
- end
@@ -1,4 +0,0 @@
1
-
2
- eval_gemfile("../Gemfile")
3
-
4
- gem 'event', '~> 1.1'
data/logo.png DELETED
Binary file
data/logo.svg DELETED
@@ -1,64 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
- <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3
- <svg width="300pt" viewBox="0 0 325 370" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41421;">
4
- <g transform="matrix(1,0,0,1,-0.25,0)">
5
- <g id="Layer_6" transform="matrix(1,0,0,1,8.35,0)">
6
- <path d="M179.1,84.1L154.2,111.3L168.5,111.3L179.1,84.1Z" style="fill-rule:nonzero;"/>
7
- </g>
8
- <g id="Layer_7" transform="matrix(1,0,0,1,8.35,0)">
9
- <path d="M179.1,84.1L168.5,111.3L191.6,111.3L179.1,84.1Z" style="fill:rgb(211,57,83);fill-rule:nonzero;"/>
10
- </g>
11
- <g id="Layer_9" transform="matrix(1,0,0,1,8.35,0)">
12
- <path d="M179.1,84.1L205.2,111.3L191.6,111.3L179.1,84.1Z" style="fill:rgb(240,85,121);fill-rule:nonzero;"/>
13
- </g>
14
- <g id="Layer_10" transform="matrix(1,0,0,1,8.35,0)">
15
- <path d="M154.2,111.3L162.7,124L168.5,111.3L154.2,111.3Z" style="fill:rgb(211,57,83);fill-rule:nonzero;"/>
16
- </g>
17
- <g id="Layer_11" transform="matrix(1,0,0,1,8.35,0)">
18
- <path d="M162.7,124L180,124L168.5,111.3L162.7,124Z" style="fill-rule:nonzero;"/>
19
- </g>
20
- <g id="Layer_12" transform="matrix(1,0,0,1,8.35,0)">
21
- <path d="M180,124L168.5,111.3L191.6,111.3L180,124Z" style="fill:rgb(240,85,121);fill-rule:nonzero;"/>
22
- </g>
23
- <g id="Layer_13" transform="matrix(1,0,0,1,8.35,0)">
24
- <path d="M180,124L197.4,124L191.6,111.3L180,124Z" style="fill-rule:nonzero;"/>
25
- </g>
26
- <g id="Layer_14" transform="matrix(1,0,0,1,8.35,0)">
27
- <path d="M205.2,111.3L197.4,124L191.6,111.3L205.2,111.3Z" style="fill:rgb(240,85,121);fill-rule:nonzero;"/>
28
- </g>
29
- </g>
30
- <g transform="matrix(1,0,0,1,6.25,349.07)">
31
- <g id="Layer_15">
32
- <g>
33
- <text x="0px" y="0px" style="font-family:'Iceland-Regular', 'Iceland';font-size:111px;fill:none;">ASYNC</text>
34
- <path d="M61.61,5L42.73,5L42.73,-10.54L23.87,-10.54L23.87,5L4.99,5L4.99,-46.634L4.991,-46.776L4.993,-46.932L4.998,-47.088L5.004,-47.244L5.012,-47.399L5.021,-47.555L5.033,-47.711L5.046,-47.867L5.062,-48.022L5.079,-48.178L5.098,-48.333L5.118,-48.488L5.141,-48.643L5.166,-48.798L5.192,-48.953L5.221,-49.107L5.251,-49.261L5.283,-49.415L5.318,-49.568L5.354,-49.721L5.392,-49.874L5.432,-50.026L5.474,-50.178L5.518,-50.329L5.564,-50.479L5.612,-50.629L5.661,-50.779L5.713,-50.928L5.767,-51.076L5.822,-51.224L5.88,-51.37L5.939,-51.516L6.001,-51.662L6.064,-51.806L6.129,-51.949L6.195,-52.092L6.264,-52.234L6.335,-52.375L6.407,-52.515L6.481,-52.654L6.557,-52.792L6.634,-52.929L6.713,-53.065L6.794,-53.2L6.877,-53.333L6.961,-53.466L7.047,-53.598L7.134,-53.728L7.223,-53.857L7.314,-53.985L7.406,-54.112L7.5,-54.238L7.595,-54.362L7.691,-54.486L7.789,-54.608L7.888,-54.729L7.989,-54.848L8.091,-54.966L8.194,-55.083L8.299,-55.199L8.405,-55.314L8.512,-55.427L8.62,-55.539L8.73,-55.65L8.841,-55.76L8.953,-55.868L9.066,-55.975L9.181,-56.081L9.297,-56.186L9.413,-56.289L9.532,-56.391L9.652,-56.492L9.772,-56.591L9.894,-56.689L10.018,-56.786L10.142,-56.881L10.268,-56.974L10.394,-57.066L10.523,-57.157L10.652,-57.246L10.782,-57.333L10.914,-57.419L11.046,-57.503L11.18,-57.586L11.315,-57.667L11.451,-57.746L11.588,-57.823L11.726,-57.899L11.865,-57.973L12.005,-58.045L12.146,-58.116L12.288,-58.185L12.431,-58.252L12.574,-58.316L12.718,-58.379L12.864,-58.441L13.01,-58.5L13.156,-58.558L13.304,-58.613L13.453,-58.667L13.601,-58.719L13.75,-58.768L13.9,-58.816L14.051,-58.862L14.202,-58.906L14.354,-58.948L14.506,-58.988L14.659,-59.026L14.812,-59.062L14.965,-59.097L15.119,-59.129L15.273,-59.159L15.427,-59.188L15.582,-59.214L15.736,-59.239L15.892,-59.262L16.047,-59.282L16.202,-59.301L16.357,-59.318L16.513,-59.334L16.669,-59.347L16.824,-59.358L16.981,-59.368L17.137,-59.376L17.292,-59.382L17.448,-59.387L17.604,-59.389L17.746,-59.39L61.61,-59.39L61.61,5ZM23.87,-41.62L23.87,-28.31L42.73,-28.31L42.73,-41.62L23.87,-41.62Z"/>
35
- <path d="M118.22,-41.62L88.25,-41.62L88.25,-36.08L105.464,-36.08L105.606,-36.079L105.762,-36.077L105.918,-36.072L106.073,-36.066L106.229,-36.058L106.386,-36.048L106.541,-36.037L106.697,-36.024L106.852,-36.008L107.007,-35.991L107.164,-35.972L107.319,-35.952L107.474,-35.929L107.628,-35.904L107.782,-35.878L107.937,-35.849L108.092,-35.819L108.245,-35.787L108.398,-35.752L108.551,-35.716L108.704,-35.678L108.856,-35.638L109.008,-35.596L109.159,-35.552L109.31,-35.506L109.459,-35.458L109.609,-35.409L109.758,-35.357L109.906,-35.303L110.054,-35.248L110.2,-35.19L110.346,-35.131L110.492,-35.069L110.636,-35.006L110.779,-34.942L110.922,-34.875L111.064,-34.806L111.205,-34.735L111.345,-34.663L111.484,-34.589L111.622,-34.513L111.759,-34.436L111.895,-34.357L112.03,-34.276L112.164,-34.193L112.296,-34.109L112.427,-34.023L112.558,-33.936L112.687,-33.847L112.815,-33.756L112.942,-33.664L113.068,-33.57L113.192,-33.475L113.316,-33.379L113.438,-33.281L113.558,-33.182L113.678,-33.081L113.797,-32.979L113.914,-32.876L114.029,-32.771L114.144,-32.665L114.257,-32.558L114.369,-32.45L114.48,-32.34L114.59,-32.229L114.698,-32.117L114.805,-32.004L114.911,-31.889L115.016,-31.773L115.119,-31.656L115.221,-31.538L115.322,-31.418L115.421,-31.298L115.519,-31.176L115.616,-31.052L115.71,-30.928L115.804,-30.802L115.896,-30.675L115.987,-30.547L116.076,-30.418L116.163,-30.288L116.249,-30.156L116.333,-30.024L116.416,-29.89L116.497,-29.755L116.576,-29.619L116.653,-29.482L116.729,-29.344L116.803,-29.205L116.875,-29.065L116.946,-28.924L117.015,-28.782L117.081,-28.64L117.146,-28.496L117.21,-28.351L117.271,-28.206L117.33,-28.06L117.388,-27.913L117.443,-27.766L117.497,-27.618L117.549,-27.469L117.598,-27.32L117.646,-27.169L117.692,-27.019L117.736,-26.868L117.778,-26.716L117.818,-26.564L117.856,-26.411L117.892,-26.258L117.927,-26.105L117.959,-25.951L117.989,-25.797L118.018,-25.643L118.044,-25.488L118.069,-25.333L118.092,-25.178L118.112,-25.023L118.131,-24.868L118.148,-24.712L118.164,-24.557L118.177,-24.401L118.189,-24.245L118.198,-24.089L118.206,-23.934L118.212,-23.778L118.217,-23.622L118.219,-23.466L118.22,-23.324L118.22,-7.756L118.219,-7.614L118.217,-7.458L118.212,-7.302L118.206,-7.146L118.198,-6.991L118.189,-6.835L118.177,-6.679L118.164,-6.523L118.148,-6.368L118.131,-6.212L118.112,-6.057L118.092,-5.902L118.069,-5.747L118.044,-5.592L118.018,-5.437L117.989,-5.283L117.959,-5.129L117.927,-4.975L117.892,-4.822L117.856,-4.669L117.818,-4.516L117.778,-4.364L117.736,-4.212L117.692,-4.061L117.646,-3.911L117.598,-3.76L117.549,-3.611L117.497,-3.462L117.443,-3.314L117.388,-3.166L117.33,-3.02L117.271,-2.874L117.209,-2.728L117.146,-2.584L117.081,-2.44L117.015,-2.298L116.946,-2.156L116.875,-2.015L116.803,-1.875L116.729,-1.736L116.653,-1.598L116.576,-1.461L116.496,-1.325L116.416,-1.19L116.333,-1.056L116.249,-0.924L116.163,-0.792L116.076,-0.662L115.987,-0.533L115.896,-0.405L115.804,-0.277L115.71,-0.152L115.616,-0.028L115.519,0.096L115.421,0.218L115.322,0.338L115.221,0.458L115.119,0.576L115.016,0.694L114.911,0.809L114.805,0.924L114.698,1.037L114.59,1.149L114.48,1.26L114.369,1.37L114.257,1.478L114.144,1.585L114.029,1.691L113.914,1.796L113.796,1.899L113.678,2.001L113.558,2.102L113.437,2.201L113.316,2.299L113.193,2.395L113.068,2.49L112.942,2.584L112.815,2.676L112.687,2.767L112.558,2.856L112.428,2.943L112.296,3.029L112.163,3.113L112.03,3.196L111.895,3.277L111.759,3.356L111.622,3.433L111.484,3.509L111.345,3.583L111.205,3.656L111.064,3.726L110.922,3.795L110.78,3.861L110.636,3.926L110.491,3.99L110.346,4.051L110.201,4.11L110.053,4.168L109.906,4.223L109.758,4.277L109.609,4.329L109.459,4.378L109.309,4.426L109.159,4.472L109.008,4.516L108.856,4.558L108.704,4.598L108.551,4.636L108.398,4.672L108.245,4.707L108.091,4.739L107.937,4.769L107.783,4.798L107.629,4.824L107.473,4.849L107.318,4.872L107.164,4.892L107.008,4.911L106.852,4.928L106.696,4.944L106.541,4.957L106.386,4.968L106.229,4.978L106.073,4.986L105.918,4.992L105.762,4.997L105.606,4.999L105.464,5L69.37,5L69.37,-12.77L99.34,-12.77L99.34,-18.31L82.126,-18.31L81.984,-18.311L81.828,-18.313L81.672,-18.318L81.516,-18.324L81.361,-18.332L81.205,-18.341L81.048,-18.353L80.893,-18.366L80.738,-18.382L80.582,-18.399L80.427,-18.418L80.272,-18.438L80.116,-18.461L79.962,-18.486L79.807,-18.512L79.653,-18.541L79.499,-18.571L79.345,-18.603L79.192,-18.638L79.039,-18.674L78.886,-18.712L78.734,-18.752L78.583,-18.794L78.431,-18.838L78.28,-18.884L78.131,-18.932L77.981,-18.981L77.832,-19.033L77.684,-19.087L77.537,-19.142L77.389,-19.2L77.244,-19.259L77.099,-19.32L76.954,-19.384L76.81,-19.449L76.667,-19.516L76.526,-19.584L76.385,-19.654L76.245,-19.727L76.106,-19.801L75.968,-19.877L75.831,-19.954L75.695,-20.034L75.56,-20.114L75.427,-20.197L75.294,-20.281L75.162,-20.367L75.032,-20.454L74.903,-20.543L74.774,-20.634L74.648,-20.726L74.522,-20.82L74.397,-20.915L74.274,-21.011L74.152,-21.109L74.031,-21.208L73.912,-21.309L73.794,-21.411L73.676,-21.514L73.561,-21.619L73.446,-21.725L73.333,-21.832L73.221,-21.94L73.11,-22.05L73,-22.161L72.892,-22.273L72.785,-22.386L72.679,-22.501L72.574,-22.617L72.471,-22.734L72.369,-22.852L72.268,-22.972L72.169,-23.092L72.071,-23.214L71.975,-23.338L71.879,-23.462L71.786,-23.588L71.694,-23.715L71.603,-23.843L71.515,-23.972L71.427,-24.102L71.341,-24.234L71.257,-24.366L71.174,-24.5L71.093,-24.635L71.014,-24.771L70.937,-24.908L70.861,-25.046L70.787,-25.185L70.715,-25.325L70.644,-25.466L70.575,-25.608L70.509,-25.75L70.444,-25.894L70.381,-26.038L70.319,-26.184L70.26,-26.33L70.202,-26.476L70.147,-26.624L70.093,-26.772L70.041,-26.921L69.992,-27.07L69.944,-27.221L69.898,-27.371L69.854,-27.522L69.812,-27.674L69.772,-27.826L69.734,-27.979L69.698,-28.132L69.663,-28.285L69.631,-28.439L69.601,-28.593L69.572,-28.747L69.546,-28.902L69.521,-29.056L69.498,-29.211L69.478,-29.367L69.459,-29.522L69.442,-29.678L69.426,-29.833L69.413,-29.989L69.401,-30.145L69.392,-30.301L69.384,-30.457L69.378,-30.612L69.373,-30.768L69.371,-30.924L69.37,-31.066L69.37,-46.634L69.371,-46.776L69.373,-46.932L69.378,-47.088L69.384,-47.243L69.392,-47.399L69.401,-47.555L69.413,-47.711L69.426,-47.867L69.442,-48.022L69.459,-48.178L69.478,-48.333L69.498,-48.489L69.521,-48.644L69.546,-48.798L69.572,-48.953L69.601,-49.107L69.631,-49.261L69.663,-49.415L69.698,-49.568L69.734,-49.721L69.772,-49.874L69.812,-50.026L69.854,-50.178L69.898,-50.329L69.944,-50.48L69.992,-50.63L70.041,-50.779L70.093,-50.928L70.147,-51.076L70.202,-51.224L70.26,-51.37L70.319,-51.516L70.381,-51.662L70.444,-51.806L70.509,-51.95L70.575,-52.092L70.644,-52.234L70.715,-52.375L70.787,-52.515L70.861,-52.654L70.937,-52.792L71.014,-52.929L71.093,-53.065L71.174,-53.2L71.257,-53.334L71.341,-53.466L71.427,-53.598L71.514,-53.728L71.603,-53.857L71.694,-53.985L71.786,-54.112L71.88,-54.238L71.975,-54.362L72.071,-54.486L72.169,-54.608L72.268,-54.729L72.369,-54.848L72.471,-54.966L72.574,-55.083L72.679,-55.199L72.785,-55.314L72.892,-55.427L73,-55.539L73.11,-55.65L73.221,-55.76L73.333,-55.868L73.446,-55.975L73.561,-56.081L73.676,-56.186L73.793,-56.289L73.912,-56.391L74.031,-56.492L74.152,-56.591L74.274,-56.689L74.398,-56.786L74.522,-56.881L74.648,-56.974L74.774,-57.066L74.903,-57.157L75.032,-57.246L75.162,-57.333L75.294,-57.419L75.426,-57.503L75.56,-57.586L75.695,-57.667L75.831,-57.746L75.968,-57.823L76.106,-57.899L76.245,-57.973L76.385,-58.045L76.526,-58.116L76.668,-58.185L76.811,-58.252L76.954,-58.316L77.098,-58.379L77.244,-58.441L77.39,-58.5L77.536,-58.558L77.684,-58.613L77.833,-58.667L77.981,-58.719L78.13,-58.768L78.28,-58.816L78.431,-58.862L78.582,-58.906L78.734,-58.948L78.886,-58.988L79.039,-59.026L79.192,-59.062L79.345,-59.097L79.499,-59.129L79.653,-59.159L79.807,-59.188L79.962,-59.214L80.116,-59.239L80.272,-59.262L80.427,-59.282L80.582,-59.301L80.737,-59.318L80.893,-59.334L81.049,-59.347L81.204,-59.358L81.361,-59.368L81.517,-59.376L81.672,-59.382L81.828,-59.387L81.984,-59.389L82.126,-59.39L118.22,-59.39L118.22,-41.62Z"/>
36
- <path d="M142.64,-28.31L161.5,-28.31L161.5,-59.39L180.38,-59.39L180.38,-23.296L180.379,-23.154L180.377,-22.998L180.372,-22.842L180.366,-22.687L180.358,-22.531L180.348,-22.374L180.337,-22.219L180.324,-22.064L180.308,-21.908L180.291,-21.752L180.272,-21.596L180.252,-21.442L180.229,-21.287L180.204,-21.131L180.178,-20.977L180.149,-20.823L180.119,-20.669L180.087,-20.515L180.052,-20.361L180.016,-20.209L179.978,-20.056L179.938,-19.904L179.896,-19.752L179.852,-19.601L179.806,-19.451L179.758,-19.301L179.709,-19.151L179.657,-19.002L179.603,-18.854L179.548,-18.706L179.49,-18.56L179.431,-18.414L179.37,-18.269L179.306,-18.124L179.241,-17.98L179.175,-17.838L179.106,-17.696L179.035,-17.555L178.963,-17.415L178.889,-17.276L178.813,-17.138L178.736,-17.001L178.657,-16.865L178.576,-16.73L178.493,-16.597L178.409,-16.464L178.323,-16.332L178.236,-16.202L178.147,-16.073L178.056,-15.945L177.964,-15.818L177.87,-15.692L177.775,-15.567L177.679,-15.444L177.581,-15.322L177.482,-15.202L177.381,-15.082L177.279,-14.964L177.176,-14.847L177.071,-14.731L176.965,-14.616L176.858,-14.503L176.75,-14.391L176.64,-14.28L176.529,-14.17L176.417,-14.062L176.304,-13.955L176.189,-13.849L176.074,-13.744L175.956,-13.641L175.838,-13.539L175.719,-13.438L175.598,-13.339L175.476,-13.241L175.352,-13.144L175.228,-13.049L175.102,-12.956L174.976,-12.864L174.847,-12.773L174.718,-12.684L174.588,-12.597L174.456,-12.511L174.324,-12.427L174.19,-12.344L174.055,-12.263L173.919,-12.184L173.782,-12.107L173.644,-12.031L173.505,-11.957L173.365,-11.885L173.224,-11.814L173.082,-11.745L172.94,-11.679L172.796,-11.614L172.652,-11.551L172.506,-11.489L172.36,-11.43L172.214,-11.372L172.066,-11.317L171.918,-11.263L171.769,-11.212L171.62,-11.162L171.469,-11.114L171.319,-11.068L171.168,-11.024L171.016,-10.982L170.864,-10.942L170.711,-10.904L170.558,-10.867L170.405,-10.833L170.251,-10.801L170.097,-10.771L169.943,-10.742L169.788,-10.716L169.634,-10.691L169.478,-10.668L169.323,-10.648L169.168,-10.629L169.013,-10.612L168.857,-10.596L168.701,-10.583L168.545,-10.571L168.389,-10.562L168.234,-10.554L168.078,-10.548L167.922,-10.543L167.766,-10.541L167.624,-10.54L161.51,-10.54L161.51,5L142.63,5L142.63,-10.54L136.516,-10.54L136.374,-10.541L136.218,-10.543L136.062,-10.548L135.906,-10.554L135.751,-10.562L135.595,-10.571L135.439,-10.583L135.283,-10.596L135.127,-10.612L134.972,-10.629L134.817,-10.648L134.662,-10.668L134.506,-10.691L134.352,-10.716L134.197,-10.742L134.043,-10.771L133.889,-10.801L133.735,-10.833L133.582,-10.867L133.429,-10.904L133.276,-10.942L133.124,-10.982L132.972,-11.024L132.821,-11.068L132.671,-11.114L132.52,-11.162L132.371,-11.211L132.222,-11.263L132.074,-11.317L131.926,-11.372L131.78,-11.43L131.634,-11.489L131.488,-11.551L131.344,-11.614L131.2,-11.679L131.058,-11.745L130.916,-11.814L130.775,-11.885L130.635,-11.957L130.496,-12.031L130.358,-12.107L130.221,-12.184L130.085,-12.263L129.95,-12.344L129.816,-12.427L129.684,-12.511L129.552,-12.597L129.422,-12.684L129.293,-12.773L129.164,-12.864L129.038,-12.956L128.912,-13.049L128.788,-13.144L128.664,-13.241L128.542,-13.339L128.421,-13.438L128.302,-13.539L128.184,-13.641L128.067,-13.744L127.951,-13.849L127.836,-13.955L127.723,-14.062L127.611,-14.17L127.5,-14.28L127.39,-14.391L127.282,-14.503L127.175,-14.616L127.069,-14.731L126.964,-14.847L126.861,-14.964L126.759,-15.082L126.658,-15.202L126.559,-15.322L126.461,-15.444L126.365,-15.568L126.27,-15.692L126.176,-15.818L126.084,-15.945L125.993,-16.073L125.904,-16.202L125.817,-16.332L125.731,-16.464L125.647,-16.596L125.564,-16.73L125.483,-16.865L125.404,-17.001L125.327,-17.138L125.251,-17.276L125.177,-17.415L125.105,-17.555L125.034,-17.696L124.966,-17.838L124.899,-17.981L124.834,-18.124L124.771,-18.268L124.709,-18.414L124.65,-18.56L124.592,-18.707L124.537,-18.854L124.483,-19.002L124.431,-19.151L124.382,-19.301L124.334,-19.45L124.288,-19.601L124.244,-19.752L124.202,-19.904L124.162,-20.056L124.124,-20.209L124.088,-20.362L124.053,-20.515L124.021,-20.669L123.991,-20.823L123.962,-20.977L123.936,-21.132L123.911,-21.286L123.888,-21.442L123.868,-21.597L123.849,-21.752L123.832,-21.908L123.816,-22.063L123.803,-22.219L123.791,-22.375L123.782,-22.531L123.774,-22.686L123.768,-22.842L123.763,-22.998L123.761,-23.154L123.76,-23.296L123.76,-59.39L142.64,-59.39L142.64,-28.31Z"/>
37
- <path d="M225.88,-29.041L225.88,-59.501L244.76,-59.501L244.76,4.889L221.01,4.889L207.02,-25.668L207.02,4.889L188.14,4.889L188.14,-59.501L212.008,-59.501L225.88,-29.041Z"/>
38
- <path d="M310.804,-7.614L310.802,-7.458L310.797,-7.302L310.791,-7.146L310.783,-6.991L310.774,-6.835L310.762,-6.679L310.749,-6.523L310.733,-6.367L310.716,-6.212L310.697,-6.057L310.677,-5.902L310.654,-5.746L310.629,-5.592L310.603,-5.437L310.574,-5.283L310.544,-5.129L310.512,-4.975L310.478,-4.822L310.441,-4.669L310.403,-4.516L310.363,-4.364L310.321,-4.213L310.277,-4.061L310.231,-3.91L310.183,-3.76L310.134,-3.611L310.082,-3.463L310.028,-3.314L309.973,-3.166L309.915,-3.02L309.856,-2.874L309.794,-2.728L309.731,-2.584L309.666,-2.44L309.6,-2.298L309.531,-2.156L309.46,-2.015L309.388,-1.875L309.314,-1.736L309.238,-1.598L309.161,-1.461L309.082,-1.325L309,-1.19L308.918,-1.056L308.834,-0.924L308.748,-0.792L308.661,-0.662L308.572,-0.533L308.481,-0.404L308.389,-0.278L308.295,-0.152L308.201,-0.028L308.104,0.095L308.006,0.218L307.907,0.339L307.806,0.458L307.704,0.576L307.601,0.694L307.496,0.809L307.39,0.924L307.283,1.037L307.175,1.149L307.065,1.26L306.954,1.37L306.842,1.478L306.729,1.585L306.614,1.691L306.498,1.796L306.381,1.899L306.263,2.001L306.143,2.102L306.022,2.201L305.901,2.299L305.778,2.395L305.653,2.49L305.527,2.584L305.4,2.676L305.272,2.767L305.143,2.856L305.013,2.943L304.881,3.029L304.748,3.113L304.615,3.196L304.48,3.277L304.344,3.356L304.207,3.433L304.069,3.509L303.93,3.583L303.79,3.655L303.649,3.726L303.507,3.795L303.365,3.861L303.221,3.926L303.076,3.99L302.931,4.051L302.786,4.11L302.638,4.168L302.491,4.223L302.343,4.277L302.194,4.329L302.044,4.378L301.894,4.426L301.744,4.472L301.593,4.516L301.441,4.558L301.289,4.598L301.136,4.636L300.983,4.672L300.83,4.707L300.676,4.739L300.522,4.769L300.368,4.798L300.214,4.824L300.058,4.849L299.903,4.872L299.749,4.892L299.593,4.911L299.437,4.928L299.281,4.944L299.126,4.957L298.971,4.968L298.814,4.978L298.658,4.986L298.503,4.992L298.347,4.997L298.191,4.999L298.049,5L266.941,5L266.799,4.999L266.643,4.997L266.487,4.992L266.332,4.986L266.176,4.978L266.019,4.968L265.864,4.957L265.709,4.944L265.553,4.928L265.397,4.911L265.241,4.892L265.087,4.872L264.932,4.849L264.776,4.824L264.622,4.798L264.468,4.769L264.314,4.739L264.16,4.707L264.007,4.672L263.854,4.636L263.701,4.598L263.549,4.558L263.397,4.516L263.246,4.472L263.096,4.426L262.946,4.378L262.796,4.329L262.647,4.277L262.499,4.223L262.352,4.168L262.204,4.11L262.059,4.051L261.914,3.99L261.769,3.926L261.625,3.861L261.483,3.795L261.341,3.726L261.2,3.655L261.06,3.583L260.921,3.509L260.783,3.433L260.646,3.356L260.51,3.277L260.375,3.196L260.242,3.113L260.109,3.029L259.977,2.943L259.847,2.856L259.718,2.767L259.59,2.676L259.463,2.584L259.337,2.49L259.212,2.395L259.089,2.299L258.967,2.201L258.847,2.102L258.727,2.001L258.609,1.899L258.491,1.796L258.375,1.691L258.261,1.585L258.148,1.478L258.036,1.37L257.925,1.26L257.815,1.149L257.707,1.037L257.6,0.924L257.494,0.81L257.389,0.694L257.286,0.576L257.184,0.458L257.083,0.338L256.984,0.218L256.886,0.096L256.79,-0.027L256.695,-0.152L256.601,-0.278L256.509,-0.405L256.418,-0.533L256.329,-0.662L256.242,-0.792L256.156,-0.924L256.072,-1.057L255.989,-1.19L255.909,-1.325L255.829,-1.461L255.752,-1.598L255.676,-1.736L255.602,-1.875L255.53,-2.015L255.459,-2.156L255.39,-2.298L255.324,-2.44L255.259,-2.584L255.195,-2.729L255.134,-2.874L255.075,-3.02L255.017,-3.166L254.962,-3.314L254.908,-3.462L254.856,-3.611L254.807,-3.761L254.759,-3.911L254.713,-4.061L254.669,-4.212L254.627,-4.364L254.587,-4.516L254.549,-4.669L254.513,-4.821L254.478,-4.975L254.446,-5.129L254.416,-5.283L254.387,-5.437L254.361,-5.591L254.336,-5.747L254.313,-5.902L254.293,-6.057L254.274,-6.212L254.257,-6.368L254.241,-6.524L254.228,-6.679L254.217,-6.834L254.207,-6.991L254.199,-7.147L254.193,-7.302L254.188,-7.458L254.186,-7.614L254.185,-7.756L254.185,-46.634L254.186,-46.776L254.188,-46.932L254.193,-47.088L254.199,-47.243L254.207,-47.399L254.217,-47.555L254.228,-47.711L254.241,-47.866L254.257,-48.022L254.274,-48.178L254.293,-48.334L254.313,-48.488L254.336,-48.643L254.361,-48.799L254.387,-48.953L254.416,-49.107L254.446,-49.261L254.478,-49.415L254.513,-49.569L254.549,-49.721L254.587,-49.874L254.627,-50.026L254.669,-50.178L254.713,-50.329L254.759,-50.479L254.807,-50.629L254.856,-50.779L254.908,-50.928L254.962,-51.076L255.017,-51.224L255.075,-51.37L255.134,-51.516L255.195,-51.661L255.259,-51.806L255.324,-51.95L255.39,-52.092L255.459,-52.234L255.529,-52.375L255.602,-52.515L255.676,-52.654L255.752,-52.792L255.829,-52.929L255.908,-53.065L255.989,-53.2L256.072,-53.333L256.156,-53.466L256.242,-53.598L256.329,-53.728L256.418,-53.857L256.509,-53.985L256.601,-54.112L256.695,-54.238L256.79,-54.363L256.886,-54.486L256.984,-54.608L257.083,-54.729L257.184,-54.848L257.286,-54.966L257.389,-55.083L257.494,-55.199L257.6,-55.314L257.707,-55.427L257.815,-55.539L257.925,-55.65L258.036,-55.76L258.148,-55.868L258.261,-55.975L258.376,-56.081L258.491,-56.186L258.608,-56.289L258.727,-56.391L258.847,-56.492L258.967,-56.591L259.089,-56.689L259.213,-56.786L259.337,-56.881L259.463,-56.974L259.589,-57.066L259.718,-57.157L259.847,-57.246L259.977,-57.333L260.108,-57.419L260.241,-57.503L260.375,-57.586L260.51,-57.667L260.646,-57.746L260.783,-57.823L260.921,-57.899L261.06,-57.973L261.2,-58.045L261.341,-58.116L261.483,-58.185L261.626,-58.251L261.769,-58.316L261.913,-58.379L262.059,-58.441L262.205,-58.5L262.352,-58.558L262.499,-58.613L262.647,-58.667L262.796,-58.719L262.945,-58.768L263.095,-58.816L263.246,-58.862L263.397,-58.906L263.549,-58.948L263.701,-58.988L263.854,-59.026L264.007,-59.062L264.16,-59.097L264.314,-59.129L264.468,-59.159L264.622,-59.188L264.777,-59.214L264.931,-59.239L265.087,-59.262L265.242,-59.282L265.397,-59.301L265.552,-59.318L265.708,-59.334L265.864,-59.347L266.019,-59.358L266.176,-59.368L266.332,-59.376L266.487,-59.382L266.643,-59.387L266.799,-59.389L266.941,-59.39L298.049,-59.39L298.191,-59.389L298.347,-59.387L298.503,-59.382L298.658,-59.376L298.814,-59.368L298.971,-59.358L299.126,-59.347L299.282,-59.334L299.438,-59.318L299.593,-59.301L299.748,-59.282L299.903,-59.262L300.059,-59.239L300.213,-59.214L300.368,-59.188L300.522,-59.159L300.676,-59.129L300.83,-59.097L300.983,-59.062L301.136,-59.026L301.289,-58.988L301.441,-58.948L301.593,-58.906L301.744,-58.862L301.895,-58.816L302.045,-58.768L302.194,-58.718L302.343,-58.667L302.491,-58.613L302.639,-58.558L302.785,-58.5L302.931,-58.441L303.077,-58.379L303.221,-58.316L303.364,-58.252L303.507,-58.185L303.649,-58.116L303.79,-58.045L303.93,-57.973L304.069,-57.899L304.207,-57.823L304.344,-57.746L304.48,-57.667L304.615,-57.586L304.749,-57.503L304.881,-57.419L305.013,-57.333L305.143,-57.246L305.272,-57.157L305.401,-57.066L305.527,-56.974L305.653,-56.881L305.778,-56.785L305.901,-56.689L306.023,-56.591L306.143,-56.492L306.263,-56.391L306.382,-56.289L306.498,-56.186L306.614,-56.081L306.729,-55.975L306.842,-55.868L306.954,-55.759L307.065,-55.65L307.175,-55.539L307.283,-55.427L307.39,-55.314L307.496,-55.199L307.601,-55.083L307.704,-54.966L307.806,-54.848L307.906,-54.729L308.006,-54.608L308.104,-54.485L308.201,-54.362L308.295,-54.238L308.389,-54.112L308.481,-53.986L308.572,-53.857L308.661,-53.728L308.748,-53.598L308.834,-53.466L308.918,-53.334L309,-53.2L309.082,-53.065L309.161,-52.929L309.238,-52.792L309.314,-52.654L309.388,-52.515L309.46,-52.375L309.531,-52.234L309.6,-52.092L309.666,-51.95L309.731,-51.806L309.794,-51.662L309.856,-51.516L309.915,-51.37L309.973,-51.224L310.028,-51.076L310.082,-50.928L310.133,-50.779L310.183,-50.63L310.231,-50.48L310.277,-50.329L310.321,-50.177L310.363,-50.026L310.403,-49.874L310.441,-49.721L310.477,-49.568L310.512,-49.415L310.544,-49.261L310.574,-49.108L310.603,-48.953L310.629,-48.798L310.654,-48.644L310.677,-48.488L310.697,-48.333L310.716,-48.178L310.733,-48.023L310.749,-47.867L310.762,-47.711L310.774,-47.555L310.783,-47.399L310.791,-47.244L310.797,-47.088L310.802,-46.932L310.804,-46.776L310.805,-46.634L310.805,-33.85L291.925,-33.85L291.925,-41.62L273.065,-41.62L273.065,-12.77L291.925,-12.77L291.925,-20.54L310.805,-20.54L310.805,-7.756L310.804,-7.614Z"/>
39
- </g>
40
- </g>
41
- </g>
42
- <g transform="matrix(1,0,0,1,-0.25,0)">
43
- <g id="Layer_2" transform="matrix(1,0,0,1,8.35,0)">
44
- <path d="M277.9,139.2L30.9,139.2C30.9,139.2 27.4,206.2 42.9,233.2C58.4,260.2 74.4,266.2 108.4,266.2L200.4,266.2C234.4,266.2 250.4,260.2 265.9,233.2C281.4,206.2 277.9,139.2 277.9,139.2Z" style="fill:rgb(174,173,174);fill-rule:nonzero;"/>
45
- <path d="M282.404,139.178L282.431,139.76L282.449,140.188L282.47,140.701L282.493,141.298L282.517,141.976L282.543,142.732L282.569,143.566L282.594,144.473L282.619,145.451L282.644,146.498L282.655,147.048L282.666,147.614L282.677,148.195L282.687,148.792L282.696,149.405L282.704,150.033L282.712,150.676L282.719,151.333L282.725,152.004L282.73,152.69L282.734,153.389L282.737,154.101L282.738,154.827L282.739,155.565L282.738,156.316L282.736,157.078L282.732,157.853L282.727,158.639L282.72,159.436L282.711,160.244L282.701,161.063L282.69,161.892L282.676,162.731L282.66,163.58L282.643,164.438L282.623,165.305L282.601,166.181L282.578,167.066L282.552,167.959L282.523,168.859L282.493,169.767L282.459,170.683L282.424,171.605L282.386,172.535L282.345,173.47L282.301,174.412L282.255,175.359L282.206,176.312L282.154,177.27L282.099,178.233L282.042,179.201L281.981,180.173L281.917,181.149L281.849,182.127L281.814,182.62L281.779,183.112L281.742,183.604L281.705,184.098L281.666,184.592L281.627,185.087L281.587,185.582L281.546,186.078L281.505,186.575L281.462,187.072L281.418,187.569L281.374,188.068L281.328,188.566L281.282,189.065L281.235,189.564L281.186,190.063L281.137,190.563L281.087,191.063L281.036,191.563L280.984,192.063L280.931,192.564L280.876,193.064L280.821,193.565L280.765,194.065L280.708,194.566L280.65,195.066L280.59,195.566L280.53,196.067L280.469,196.567L280.406,197.067L280.342,197.566L280.278,198.065L280.212,198.564L280.145,199.063L280.077,199.561L280.008,200.059L279.938,200.556L279.866,201.053L279.794,201.549L279.72,202.044L279.645,202.54L279.569,203.034L279.491,203.528L279.413,204.021L279.333,204.513L279.252,205.005L279.17,205.495L279.087,205.985L279.002,206.474L278.916,206.962L278.829,207.449L278.74,207.935L278.65,208.42L278.559,208.904L278.466,209.387L278.373,209.869L278.278,210.349L278.181,210.829L278.083,211.307L277.984,211.783L277.883,212.259L277.781,212.733L277.678,213.206L277.573,213.677L277.467,214.147L277.359,214.616L277.25,215.083L277.139,215.548L277.027,216.012L276.913,216.474L276.798,216.935L276.682,217.394L276.564,217.851L276.444,218.306L276.323,218.76L276.2,219.212L276.075,219.662L275.949,220.11L275.822,220.556L275.692,221.001L275.562,221.443L275.429,221.884L275.295,222.322L275.159,222.758L275.021,223.192L274.882,223.624L274.741,224.054L274.598,224.482L274.453,224.907L274.307,225.331L274.159,225.751L274.009,226.17L273.857,226.586L273.703,227L273.548,227.412L273.39,227.821L273.231,228.227L273.069,228.631L272.906,229.033L272.74,229.432L272.573,229.828L272.404,230.222L272.232,230.613L272.059,231.001L271.883,231.387L271.705,231.77L271.525,232.15L271.345,232.523L271.251,232.715L271.159,232.902L271.065,233.088L270.972,233.273L270.878,233.458L270.783,233.642L270.687,233.825L270.591,234.008L270.495,234.19L270.398,234.37L270.3,234.551L270.202,234.73L270.103,234.909L270.003,235.087L269.903,235.264L269.804,235.439L269.615,235.767L269.427,236.091L269.239,236.414L269.05,236.734L268.862,237.053L268.673,237.37L268.484,237.686L268.295,238L268.106,238.311L267.916,238.621L267.727,238.93L267.537,239.236L267.347,239.541L267.156,239.844L266.965,240.146L266.774,240.445L266.583,240.743L266.392,241.039L266.2,241.334L266.008,241.626L265.815,241.917L265.622,242.207L265.429,242.494L265.236,242.78L265.042,243.064L264.848,243.347L264.654,243.628L264.459,243.907L264.264,244.184L264.068,244.46L263.873,244.734L263.676,245.007L263.48,245.278L263.282,245.547L263.085,245.814L262.887,246.08L262.689,246.345L262.49,246.607L262.291,246.868L262.091,247.128L261.891,247.386L261.69,247.642L261.489,247.896L261.288,248.149L261.086,248.4L260.883,248.65L260.68,248.898L260.477,249.145L260.273,249.39L260.068,249.633L259.863,249.875L259.657,250.115L259.451,250.353L259.244,250.59L259.037,250.826L258.829,251.059L258.62,251.292L258.411,251.522L258.202,251.751L257.991,251.979L257.781,252.205L257.569,252.429L257.357,252.652L257.144,252.873L256.931,253.093L256.717,253.311L256.503,253.528L256.287,253.743L256.071,253.956L255.855,254.168L255.638,254.379L255.42,254.588L255.201,254.795L254.982,255.001L254.762,255.205L254.542,255.408L254.32,255.609L254.099,255.809L253.876,256.007L253.652,256.204L253.428,256.399L253.203,256.592L252.978,256.784L252.752,256.975L252.525,257.164L252.297,257.352L252.069,257.538L251.839,257.722L251.609,257.905L251.379,258.086L251.147,258.266L250.915,258.445L250.682,258.622L250.448,258.797L250.214,258.971L249.979,259.144L249.743,259.315L249.506,259.484L249.268,259.652L249.03,259.818L248.791,259.983L248.551,260.147L248.31,260.309L248.068,260.469L247.826,260.628L247.583,260.786L247.339,260.942L247.094,261.097L246.849,261.25L246.603,261.402L246.356,261.552L246.108,261.7L245.859,261.848L245.609,261.994L245.359,262.138L245.108,262.281L244.856,262.422L244.603,262.562L244.35,262.701L244.095,262.838L243.84,262.974L243.584,263.108L243.327,263.241L243.069,263.372L242.811,263.502L242.551,263.631L242.291,263.758L242.03,263.884L241.768,264.009L241.505,264.132L241.242,264.253L240.977,264.374L240.712,264.492L240.446,264.61L240.179,264.726L239.911,264.841L239.643,264.954L239.373,265.066L239.103,265.177L238.832,265.286L238.56,265.394L238.287,265.501L238.013,265.607L237.738,265.711L237.463,265.814L237.186,265.915L236.909,266.015L236.631,266.114L236.352,266.212L236.072,266.308L235.791,266.403L235.51,266.497L235.227,266.589L234.944,266.68L234.659,266.771L234.374,266.859L234.088,266.947L233.801,267.033L233.513,267.118L233.224,267.202L232.934,267.285L232.643,267.366L232.352,267.447L232.059,267.526L231.766,267.604L231.471,267.68L231.176,267.756L230.88,267.83L230.582,267.904L230.284,267.976L229.985,268.047L229.685,268.117L229.383,268.186L229.081,268.253L228.778,268.32L228.474,268.386L228.169,268.45L227.863,268.513L227.556,268.575L227.248,268.637L226.939,268.697L226.628,268.756L226.317,268.814L226.005,268.871L225.692,268.927L225.378,268.982L225.062,269.036L224.746,269.089L224.429,269.14L224.11,269.191L223.79,269.241L223.47,269.29L223.148,269.338L222.825,269.385L222.502,269.431L222.177,269.476L221.85,269.521L221.523,269.564L221.195,269.606L220.865,269.647L220.535,269.688L220.203,269.727L219.87,269.766L219.536,269.804L219.201,269.841L218.865,269.877L218.527,269.912L218.188,269.946L217.848,269.98L217.507,270.012L217.165,270.044L216.821,270.075L216.477,270.105L216.131,270.134L215.783,270.162L215.435,270.19L215.085,270.217L214.734,270.242L214.382,270.268L214.029,270.292L213.674,270.316L213.318,270.338L212.961,270.361L212.602,270.382L212.242,270.402L211.881,270.422L211.519,270.441L211.155,270.46L210.789,270.477L210.421,270.494L209.686,270.526L208.944,270.555L208.195,270.581L207.442,270.604L206.683,270.625L205.918,270.643L205.147,270.658L204.371,270.671L203.589,270.682L202.8,270.69L202.006,270.695L201.206,270.699L200.403,270.7L108.397,270.7L107.594,270.699L106.794,270.695L106,270.69L105.211,270.682L104.429,270.671L103.653,270.658L102.882,270.643L102.117,270.625L101.358,270.604L100.605,270.581L99.856,270.555L99.114,270.526L98.379,270.494L98.011,270.477L97.645,270.46L97.281,270.441L96.919,270.422L96.558,270.402L96.198,270.382L95.839,270.361L95.482,270.338L95.126,270.316L94.771,270.292L94.418,270.268L94.066,270.242L93.715,270.217L93.365,270.19L93.017,270.162L92.669,270.134L92.323,270.105L91.979,270.075L91.635,270.044L91.293,270.012L90.952,269.98L90.612,269.946L90.273,269.912L89.935,269.877L89.599,269.841L89.264,269.804L88.93,269.766L88.597,269.727L88.265,269.688L87.935,269.647L87.605,269.606L87.277,269.564L86.95,269.521L86.623,269.476L86.299,269.431L85.975,269.385L85.652,269.338L85.33,269.29L85.01,269.241L84.69,269.191L84.371,269.14L84.054,269.089L83.738,269.036L83.422,268.982L83.108,268.927L82.795,268.871L82.483,268.814L82.172,268.756L81.862,268.697L81.552,268.637L81.244,268.575L80.937,268.513L80.631,268.45L80.326,268.386L80.022,268.32L79.719,268.253L79.417,268.186L79.115,268.117L78.815,268.047L78.516,267.976L78.218,267.904L77.921,267.831L77.624,267.756L77.329,267.68L77.034,267.604L76.741,267.526L76.448,267.447L76.157,267.366L75.866,267.285L75.576,267.202L75.287,267.118L74.999,267.033L74.712,266.947L74.426,266.859L74.141,266.771L73.856,266.68L73.573,266.589L73.29,266.497L73.009,266.403L72.728,266.308L72.448,266.212L72.169,266.114L71.891,266.015L71.614,265.915L71.337,265.814L71.062,265.711L70.787,265.607L70.513,265.501L70.24,265.394L69.968,265.286L69.697,265.177L69.427,265.066L69.157,264.954L68.889,264.841L68.621,264.726L68.354,264.61L68.088,264.492L67.823,264.374L67.558,264.253L67.295,264.132L67.032,264.009L66.77,263.884L66.509,263.758L66.249,263.631L65.989,263.502L65.731,263.372L65.473,263.241L65.216,263.108L64.96,262.974L64.705,262.838L64.45,262.701L64.197,262.562L63.944,262.422L63.692,262.281L63.441,262.138L63.191,261.994L62.941,261.848L62.692,261.7L62.444,261.552L62.197,261.402L61.951,261.25L61.706,261.097L61.461,260.942L61.217,260.786L60.974,260.628L60.732,260.469L60.49,260.309L60.249,260.147L60.009,259.983L59.77,259.818L59.532,259.652L59.294,259.484L59.057,259.315L58.821,259.144L58.586,258.971L58.352,258.797L58.118,258.622L57.885,258.445L57.653,258.266L57.421,258.086L57.191,257.905L56.961,257.722L56.731,257.538L56.503,257.352L56.275,257.164L56.048,256.975L55.822,256.784L55.597,256.592L55.372,256.399L55.148,256.204L54.924,256.007L54.701,255.809L54.48,255.609L54.258,255.408L54.038,255.205L53.818,255.001L53.599,254.795L53.38,254.588L53.162,254.379L52.945,254.168L52.728,253.956L52.513,253.743L52.297,253.528L52.083,253.311L51.869,253.093L51.656,252.873L51.443,252.652L51.231,252.429L51.019,252.205L50.809,251.979L50.598,251.751L50.389,251.522L50.18,251.292L49.971,251.059L49.763,250.826L49.556,250.59L49.349,250.353L49.143,250.115L48.937,249.875L48.732,249.633L48.527,249.39L48.323,249.145L48.12,248.898L47.917,248.65L47.714,248.4L47.512,248.149L47.311,247.896L47.11,247.642L46.909,247.386L46.709,247.128L46.509,246.868L46.31,246.607L46.111,246.345L45.913,246.08L45.715,245.815L45.517,245.547L45.32,245.278L45.124,245.007L44.927,244.734L44.732,244.46L44.536,244.184L44.341,243.907L44.146,243.628L43.952,243.347L43.758,243.064L43.564,242.78L43.371,242.494L43.178,242.207L42.985,241.917L42.792,241.626L42.6,241.334L42.408,241.039L42.217,240.743L42.026,240.445L41.835,240.146L41.644,239.844L41.454,239.541L41.263,239.236L41.073,238.93L40.884,238.621L40.694,238.311L40.505,237.999L40.316,237.686L40.127,237.37L39.938,237.053L39.75,236.734L39.561,236.414L39.373,236.091L39.185,235.767L38.996,235.439L38.897,235.264L38.797,235.087L38.697,234.909L38.598,234.73L38.5,234.551L38.402,234.37L38.305,234.189L38.208,234.008L38.113,233.825L38.017,233.642L37.922,233.458L37.828,233.273L37.735,233.088L37.642,232.902L37.549,232.715L37.455,232.523L37.275,232.15L37.095,231.77L36.917,231.387L36.741,231.001L36.568,230.613L36.396,230.222L36.227,229.828L36.06,229.432L35.894,229.033L35.731,228.631L35.569,228.227L35.41,227.821L35.252,227.412L35.097,227L34.943,226.586L34.791,226.17L34.641,225.751L34.493,225.331L34.347,224.907L34.202,224.482L34.059,224.054L33.918,223.624L33.779,223.192L33.641,222.758L33.505,222.322L33.371,221.884L33.238,221.443L33.108,221.001L32.978,220.556L32.851,220.11L32.725,219.662L32.6,219.212L32.477,218.76L32.356,218.306L32.236,217.851L32.118,217.394L32.002,216.935L31.887,216.474L31.773,216.012L31.661,215.548L31.55,215.083L31.441,214.616L31.333,214.147L31.227,213.677L31.122,213.206L31.019,212.733L30.917,212.259L30.816,211.783L30.717,211.307L30.619,210.828L30.522,210.349L30.427,209.869L30.334,209.387L30.241,208.904L30.15,208.42L30.06,207.935L29.971,207.449L29.884,206.962L29.798,206.474L29.713,205.985L29.63,205.495L29.548,205.005L29.467,204.513L29.387,204.021L29.309,203.528L29.231,203.034L29.155,202.54L29.08,202.045L29.006,201.549L28.934,201.053L28.862,200.556L28.792,200.059L28.723,199.561L28.655,199.063L28.588,198.564L28.522,198.065L28.458,197.566L28.394,197.066L28.331,196.567L28.27,196.067L28.21,195.567L28.15,195.066L28.092,194.566L28.035,194.065L27.979,193.565L27.924,193.064L27.869,192.564L27.816,192.063L27.764,191.563L27.713,191.063L27.663,190.563L27.614,190.063L27.565,189.564L27.518,189.065L27.472,188.566L27.426,188.068L27.382,187.57L27.338,187.072L27.295,186.575L27.254,186.078L27.213,185.582L27.173,185.087L27.134,184.592L27.095,184.098L27.058,183.604L27.021,183.112L26.986,182.62L26.951,182.127L26.883,181.149L26.819,180.173L26.758,179.201L26.701,178.233L26.646,177.27L26.594,176.312L26.545,175.359L26.499,174.412L26.455,173.47L26.414,172.535L26.376,171.605L26.341,170.683L26.307,169.767L26.277,168.859L26.248,167.959L26.222,167.066L26.199,166.181L26.177,165.305L26.157,164.438L26.14,163.58L26.124,162.731L26.11,161.892L26.099,161.063L26.089,160.244L26.08,159.436L26.073,158.639L26.068,157.853L26.064,157.078L26.062,156.316L26.061,155.565L26.062,154.827L26.063,154.101L26.066,153.389L26.07,152.69L26.075,152.004L26.081,151.333L26.088,150.676L26.096,150.033L26.104,149.405L26.113,148.792L26.123,148.195L26.134,147.614L26.145,147.048L26.156,146.498L26.181,145.451L26.206,144.473L26.231,143.566L26.257,142.732L26.283,141.976L26.307,141.298L26.33,140.701L26.351,140.188L26.369,139.76L26.396,139.179L26.617,134.7L282.182,134.7L282.404,139.178ZM35.232,143.7L35.228,143.833L35.202,144.716L35.178,145.671L35.154,146.695L35.143,147.23L35.132,147.783L35.122,148.351L35.112,148.935L35.103,149.534L35.095,150.148L35.087,150.777L35.081,151.42L35.075,152.077L35.07,152.748L35.066,153.432L35.063,154.129L35.062,154.84L35.061,155.562L35.062,156.297L35.064,157.043L35.068,157.801L35.073,158.571L35.08,159.351L35.088,160.142L35.098,160.943L35.109,161.754L35.123,162.575L35.138,163.405L35.155,164.244L35.174,165.092L35.196,165.949L35.219,166.813L35.244,167.686L35.272,168.566L35.302,169.453L35.334,170.347L35.369,171.247L35.406,172.154L35.446,173.067L35.488,173.985L35.533,174.909L35.581,175.838L35.632,176.771L35.685,177.709L35.742,178.651L35.801,179.596L35.863,180.545L35.929,181.499L35.963,181.975L35.997,182.453L36.033,182.931L36.069,183.41L36.106,183.89L36.144,184.37L36.183,184.85L36.223,185.331L36.263,185.813L36.305,186.294L36.347,186.776L36.39,187.259L36.434,187.741L36.479,188.224L36.524,188.707L36.571,189.19L36.619,189.673L36.667,190.156L36.717,190.639L36.767,191.122L36.818,191.605L36.87,192.087L36.924,192.57L36.978,193.052L37.033,193.534L37.089,194.016L37.146,194.498L37.204,194.979L37.263,195.46L37.323,195.94L37.384,196.42L37.446,196.899L37.509,197.378L37.574,197.856L37.639,198.333L37.705,198.81L37.772,199.286L37.841,199.761L37.91,200.235L37.98,200.709L38.052,201.181L38.125,201.653L38.198,202.124L38.273,202.593L38.349,203.062L38.426,203.529L38.504,203.996L38.583,204.461L38.664,204.925L38.745,205.387L38.828,205.849L38.912,206.309L38.997,206.767L39.083,207.224L39.17,207.68L39.259,208.134L39.348,208.587L39.439,209.038L39.531,209.487L39.624,209.935L39.719,210.381L39.814,210.825L39.911,211.267L40.009,211.708L40.108,212.146L40.208,212.583L40.31,213.017L40.413,213.45L40.517,213.881L40.622,214.309L40.729,214.735L40.837,215.159L40.946,215.581L41.056,216.001L41.167,216.418L41.28,216.833L41.394,217.245L41.509,217.655L41.626,218.062L41.744,218.467L41.863,218.869L41.983,219.269L42.104,219.666L42.227,220.06L42.351,220.451L42.477,220.84L42.603,221.226L42.731,221.608L42.86,221.988L42.99,222.365L43.122,222.739L43.255,223.109L43.389,223.477L43.524,223.841L43.661,224.202L43.799,224.56L43.938,224.915L44.078,225.266L44.22,225.614L44.362,225.958L44.506,226.299L44.651,226.636L44.798,226.97L44.945,227.3L45.094,227.626L45.243,227.949L45.394,228.267L45.548,228.586L45.623,228.738L45.7,228.894L45.777,229.048L45.854,229.201L45.932,229.353L46.01,229.504L46.088,229.654L46.166,229.803L46.245,229.951L46.324,230.099L46.403,230.245L46.482,230.39L46.562,230.534L46.642,230.677L46.722,230.819L46.804,230.961L46.978,231.264L47.154,231.567L47.329,231.868L47.504,232.166L47.68,232.463L47.855,232.758L48.03,233.05L48.205,233.341L48.381,233.63L48.556,233.916L48.731,234.201L48.906,234.484L49.081,234.764L49.257,235.043L49.432,235.32L49.607,235.595L49.782,235.868L49.958,236.139L50.133,236.408L50.308,236.675L50.484,236.94L50.659,237.204L50.834,237.465L51.01,237.725L51.186,237.982L51.361,238.238L51.537,238.492L51.713,238.744L51.889,238.994L52.064,239.242L52.24,239.488L52.417,239.733L52.593,239.976L52.769,240.216L52.945,240.455L53.122,240.693L53.299,240.928L53.475,241.161L53.652,241.393L53.829,241.623L54.006,241.851L54.183,242.077L54.361,242.302L54.539,242.525L54.716,242.746L54.894,242.965L55.072,243.183L55.25,243.398L55.429,243.612L55.607,243.825L55.786,244.035L55.965,244.244L56.144,244.452L56.323,244.657L56.503,244.861L56.683,245.063L56.862,245.263L57.043,245.462L57.223,245.659L57.404,245.855L57.585,246.049L57.766,246.241L57.947,246.431L58.129,246.62L58.311,246.808L58.493,246.994L58.675,247.178L58.858,247.36L59.041,247.542L59.225,247.721L59.408,247.899L59.592,248.075L59.776,248.25L59.961,248.424L60.146,248.595L60.331,248.766L60.517,248.935L60.703,249.102L60.889,249.268L61.076,249.432L61.263,249.595L61.451,249.756L61.639,249.917L61.827,250.075L62.015,250.232L62.205,250.388L62.394,250.542L62.584,250.695L62.775,250.847L62.966,250.997L63.157,251.146L63.349,251.293L63.541,251.439L63.734,251.584L63.927,251.728L64.121,251.87L64.316,252.01L64.51,252.15L64.706,252.288L64.902,252.425L65.098,252.56L65.296,252.695L65.493,252.828L65.691,252.96L65.89,253.09L66.09,253.219L66.29,253.347L66.491,253.474L66.692,253.6L66.894,253.724L67.097,253.848L67.3,253.97L67.504,254.09L67.709,254.21L67.915,254.329L68.121,254.446L68.328,254.562L68.536,254.677L68.744,254.791L68.953,254.904L69.163,255.015L69.374,255.126L69.585,255.235L69.797,255.344L70.011,255.451L70.224,255.557L70.439,255.662L70.655,255.766L70.871,255.869L71.089,255.971L71.307,256.071L71.526,256.171L71.746,256.269L71.967,256.367L72.189,256.464L72.412,256.559L72.636,256.654L72.86,256.747L73.086,256.839L73.313,256.931L73.54,257.021L73.769,257.111L73.999,257.199L74.229,257.286L74.461,257.373L74.694,257.458L74.927,257.543L75.162,257.626L75.398,257.709L75.635,257.79L75.873,257.871L76.112,257.95L76.352,258.029L76.594,258.107L76.836,258.184L77.08,258.259L77.325,258.334L77.57,258.408L77.817,258.481L78.066,258.553L78.315,258.624L78.566,258.695L78.818,258.764L79.07,258.832L79.325,258.9L79.58,258.967L79.837,259.032L80.095,259.097L80.354,259.161L80.614,259.224L80.875,259.286L81.139,259.347L81.403,259.408L81.668,259.467L81.935,259.526L82.203,259.583L82.472,259.64L82.743,259.696L83.015,259.751L83.288,259.806L83.562,259.859L83.838,259.912L84.116,259.963L84.394,260.014L84.674,260.064L84.956,260.113L85.238,260.162L85.523,260.209L85.808,260.256L86.095,260.302L86.383,260.347L86.673,260.391L86.964,260.434L87.257,260.477L87.551,260.519L87.846,260.56L88.143,260.6L88.441,260.639L88.741,260.678L89.042,260.716L89.345,260.753L89.649,260.789L89.954,260.825L90.261,260.859L90.57,260.893L90.88,260.926L91.191,260.959L91.504,260.99L91.819,261.021L92.135,261.052L92.452,261.081L92.772,261.11L93.092,261.138L93.414,261.165L93.738,261.191L94.063,261.217L94.39,261.242L94.718,261.266L95.048,261.29L95.38,261.313L95.713,261.335L96.047,261.356L96.383,261.377L96.721,261.397L97.061,261.416L97.402,261.435L97.744,261.453L98.088,261.47L98.434,261.487L98.779,261.503L99.481,261.533L100.188,261.561L100.9,261.585L101.62,261.608L102.346,261.627L103.079,261.645L103.819,261.66L104.565,261.672L105.318,261.682L106.078,261.69L106.845,261.696L107.619,261.699L108.403,261.7L200.397,261.7L201.181,261.699L201.955,261.696L202.722,261.69L203.482,261.682L204.235,261.672L204.981,261.66L205.721,261.645L206.454,261.627L207.18,261.608L207.9,261.585L208.612,261.561L209.319,261.533L210.021,261.503L210.366,261.487L210.712,261.47L211.056,261.453L211.398,261.435L211.739,261.416L212.079,261.397L212.417,261.377L212.753,261.356L213.087,261.335L213.42,261.313L213.752,261.29L214.082,261.266L214.41,261.242L214.737,261.217L215.062,261.191L215.386,261.165L215.708,261.138L216.028,261.11L216.348,261.081L216.665,261.052L216.981,261.021L217.296,260.99L217.609,260.959L217.92,260.926L218.23,260.893L218.539,260.859L218.846,260.825L219.151,260.789L219.455,260.753L219.758,260.716L220.059,260.678L220.359,260.639L220.657,260.6L220.954,260.56L221.249,260.519L221.543,260.477L221.836,260.434L222.127,260.391L222.417,260.347L222.705,260.302L222.992,260.256L223.277,260.209L223.562,260.162L223.844,260.113L224.126,260.064L224.406,260.014L224.684,259.963L224.961,259.912L225.238,259.859L225.512,259.806L225.785,259.751L226.057,259.696L226.328,259.64L226.597,259.583L226.865,259.526L227.132,259.467L227.397,259.408L227.661,259.347L227.925,259.286L228.186,259.224L228.446,259.161L228.705,259.097L228.963,259.032L229.22,258.967L229.475,258.9L229.73,258.832L229.982,258.764L230.234,258.695L230.485,258.624L230.734,258.553L230.983,258.481L231.23,258.408L231.475,258.334L231.72,258.259L231.964,258.184L232.206,258.107L232.447,258.029L232.688,257.95L232.927,257.871L233.165,257.79L233.402,257.709L233.638,257.626L233.873,257.543L234.106,257.458L234.339,257.373L234.571,257.287L234.801,257.199L235.031,257.111L235.26,257.021L235.487,256.931L235.714,256.839L235.94,256.747L236.164,256.654L236.388,256.559L236.611,256.464L236.833,256.367L237.054,256.269L237.274,256.171L237.493,256.071L237.711,255.97L237.929,255.869L238.145,255.766L238.361,255.662L238.576,255.557L238.789,255.451L239.003,255.344L239.215,255.235L239.426,255.126L239.637,255.015L239.847,254.904L240.056,254.791L240.264,254.677L240.472,254.562L240.679,254.446L240.885,254.329L241.091,254.21L241.296,254.09L241.5,253.97L241.703,253.848L241.906,253.724L242.108,253.6L242.309,253.474L242.51,253.347L242.71,253.219L242.91,253.09L243.109,252.96L243.307,252.828L243.504,252.695L243.702,252.56L243.898,252.425L244.094,252.288L244.29,252.15L244.484,252.01L244.679,251.87L244.873,251.727L245.066,251.584L245.259,251.439L245.451,251.293L245.643,251.146L245.834,250.997L246.025,250.847L246.216,250.695L246.406,250.542L246.595,250.388L246.785,250.232L246.973,250.075L247.161,249.917L247.349,249.756L247.537,249.595L247.724,249.432L247.911,249.268L248.097,249.102L248.283,248.935L248.469,248.766L248.654,248.595L248.839,248.424L249.024,248.25L249.208,248.075L249.392,247.899L249.575,247.721L249.759,247.542L249.942,247.36L250.125,247.178L250.307,246.994L250.489,246.808L250.671,246.62L250.853,246.431L251.034,246.241L251.215,246.049L251.396,245.855L251.577,245.659L251.757,245.462L251.938,245.263L252.117,245.063L252.297,244.861L252.477,244.657L252.656,244.452L252.835,244.244L253.014,244.035L253.193,243.825L253.371,243.613L253.55,243.398L253.728,243.183L253.906,242.965L254.084,242.746L254.261,242.525L254.439,242.302L254.617,242.077L254.794,241.851L254.971,241.623L255.148,241.393L255.325,241.161L255.502,240.928L255.678,240.693L255.855,240.455L256.031,240.216L256.207,239.975L256.383,239.733L256.56,239.488L256.736,239.242L256.911,238.994L257.087,238.744L257.263,238.492L257.439,238.238L257.614,237.982L257.79,237.725L257.965,237.465L258.141,237.204L258.316,236.941L258.492,236.675L258.667,236.408L258.842,236.139L259.018,235.868L259.193,235.595L259.368,235.32L259.543,235.043L259.719,234.765L259.894,234.484L260.069,234.201L260.244,233.916L260.419,233.63L260.595,233.341L260.77,233.05L260.945,232.758L261.12,232.463L261.296,232.166L261.471,231.868L261.646,231.567L261.822,231.264L261.996,230.961L262.078,230.819L262.158,230.677L262.238,230.534L262.318,230.39L262.397,230.245L262.476,230.099L262.555,229.951L262.634,229.803L262.712,229.654L262.79,229.504L262.868,229.353L262.946,229.201L263.023,229.047L263.1,228.894L263.177,228.739L263.252,228.586L263.406,228.267L263.556,227.949L263.706,227.626L263.855,227.3L264.002,226.97L264.149,226.636L264.294,226.299L264.438,225.958L264.58,225.614L264.722,225.266L264.862,224.915L265.001,224.56L265.139,224.203L265.276,223.841L265.411,223.477L265.545,223.109L265.678,222.739L265.81,222.365L265.94,221.988L266.069,221.608L266.197,221.226L266.323,220.84L266.449,220.451L266.573,220.06L266.696,219.666L266.817,219.269L266.937,218.869L267.056,218.467L267.174,218.062L267.291,217.655L267.406,217.245L267.52,216.832L267.633,216.418L267.744,216.001L267.854,215.581L267.963,215.159L268.071,214.735L268.178,214.309L268.283,213.881L268.387,213.45L268.49,213.017L268.592,212.583L268.692,212.146L268.791,211.708L268.889,211.267L268.986,210.825L269.081,210.381L269.176,209.935L269.269,209.487L269.361,209.038L269.452,208.587L269.541,208.134L269.63,207.68L269.717,207.225L269.803,206.767L269.888,206.309L269.972,205.849L270.055,205.387L270.136,204.925L270.217,204.461L270.296,203.996L270.374,203.529L270.451,203.062L270.527,202.593L270.602,202.124L270.675,201.653L270.748,201.181L270.82,200.709L270.89,200.235L270.959,199.761L271.028,199.286L271.095,198.81L271.161,198.333L271.226,197.856L271.291,197.378L271.354,196.899L271.416,196.42L271.477,195.94L271.537,195.46L271.596,194.979L271.654,194.498L271.711,194.016L271.767,193.534L271.822,193.052L271.876,192.57L271.93,192.087L271.982,191.605L272.033,191.122L272.083,190.639L272.133,190.156L272.181,189.673L272.229,189.19L272.276,188.707L272.321,188.224L272.366,187.741L272.41,187.259L272.453,186.776L272.495,186.294L272.537,185.813L272.577,185.331L272.617,184.85L272.656,184.37L272.694,183.89L272.731,183.41L272.767,182.931L272.803,182.453L272.837,181.975L272.871,181.499L272.937,180.545L272.999,179.596L273.058,178.651L273.115,177.709L273.168,176.771L273.219,175.838L273.267,174.909L273.312,173.985L273.354,173.067L273.394,172.154L273.431,171.247L273.466,170.347L273.498,169.453L273.528,168.566L273.556,167.686L273.581,166.813L273.604,165.949L273.626,165.092L273.645,164.244L273.662,163.405L273.677,162.575L273.691,161.754L273.702,160.943L273.712,160.142L273.72,159.351L273.727,158.571L273.732,157.801L273.736,157.043L273.738,156.297L273.739,155.562L273.738,154.84L273.737,154.13L273.734,153.432L273.73,152.748L273.725,152.077L273.719,151.42L273.713,150.777L273.705,150.148L273.697,149.534L273.688,148.935L273.678,148.351L273.668,147.783L273.657,147.23L273.646,146.695L273.622,145.671L273.598,144.716L273.572,143.833L273.568,143.7L35.232,143.7Z"/>
46
- </g>
47
- <g id="Layer_4" transform="matrix(1,0,0,1,8.35,0)">
48
- <path d="M108.9,139.2L108.9,44.7C108.9,44.7 107.4,11.7 154.4,14.7C201.4,17.7 193.4,32 193.4,76.8L165.9,76.8L165.9,57.7C165.9,57.7 166.4,48.2 154.4,48.2C142.4,48.2 138.9,48.7 138.9,64.7L138.9,139.2L108.9,139.2Z" style="fill:rgb(174,173,174);fill-rule:nonzero;"/>
49
- <path d="M148.875,10.008L149.142,10.009L149.409,10.011L149.678,10.014L149.947,10.018L150.218,10.023L150.489,10.028L150.762,10.035L151.036,10.042L151.31,10.05L151.586,10.058L151.863,10.068L152.14,10.078L152.419,10.089L152.699,10.101L152.98,10.114L153.262,10.128L153.545,10.143L153.828,10.158L154.113,10.174L154.4,10.191L154.686,10.209L155.246,10.246L155.801,10.283L156.351,10.322L156.896,10.361L157.436,10.402L157.972,10.444L158.503,10.487L159.03,10.531L159.552,10.577L160.069,10.623L160.582,10.671L161.091,10.72L161.595,10.77L162.095,10.821L162.59,10.873L163.081,10.927L163.567,10.982L164.049,11.038L164.527,11.096L165.001,11.154L165.47,11.214L165.935,11.276L166.396,11.338L166.853,11.402L167.306,11.467L167.755,11.534L168.199,11.602L168.64,11.671L169.076,11.742L169.509,11.814L169.938,11.888L170.363,11.963L170.783,12.039L171.201,12.117L171.614,12.196L172.023,12.277L172.429,12.359L172.831,12.443L173.229,12.528L173.624,12.615L174.015,12.704L174.402,12.794L174.786,12.886L175.166,12.979L175.543,13.074L175.916,13.171L176.286,13.269L176.652,13.369L177.015,13.471L177.375,13.574L177.731,13.679L178.084,13.787L178.433,13.895L178.779,14.006L179.122,14.119L179.462,14.233L179.799,14.35L180.132,14.468L180.462,14.588L180.789,14.711L181.113,14.835L181.433,14.961L181.751,15.09L182.065,15.22L182.377,15.353L182.685,15.488L182.991,15.624L183.293,15.763L183.592,15.905L183.888,16.048L184.182,16.194L184.472,16.342L184.759,16.492L185.044,16.645L185.325,16.8L185.598,16.955L185.741,17.037L185.878,17.117L186.015,17.198L186.151,17.28L186.286,17.362L186.42,17.444L186.553,17.528L186.686,17.611L186.818,17.696L186.949,17.781L187.08,17.867L187.21,17.953L187.339,18.04L187.467,18.128L187.594,18.216L187.721,18.305L187.847,18.394L187.972,18.484L188.097,18.575L188.22,18.666L188.343,18.758L188.465,18.851L188.586,18.944L188.707,19.038L188.827,19.132L188.946,19.227L189.064,19.323L189.181,19.42L189.298,19.517L189.414,19.614L189.529,19.712L189.643,19.811L189.756,19.911L189.869,20.011L189.981,20.112L190.092,20.213L190.202,20.315L190.311,20.418L190.42,20.521L190.528,20.625L190.635,20.73L190.741,20.835L190.846,20.94L190.951,21.047L191.054,21.154L191.157,21.261L191.259,21.369L191.36,21.478L191.461,21.587L191.56,21.697L191.659,21.808L191.757,21.918L191.854,22.03L191.95,22.142L192.045,22.255L192.14,22.368L192.234,22.482L192.326,22.597L192.418,22.712L192.509,22.827L192.6,22.943L192.689,23.06L192.778,23.177L192.865,23.295L192.952,23.413L193.038,23.532L193.123,23.651L193.208,23.771L193.291,23.891L193.374,24.012L193.456,24.133L193.537,24.255L193.617,24.377L193.696,24.5L193.774,24.623L193.852,24.747L193.929,24.871L194.005,24.995L194.08,25.12L194.154,25.246L194.228,25.372L194.304,25.505L194.443,25.752L194.582,26.008L194.719,26.266L194.852,26.525L194.981,26.786L195.108,27.048L195.232,27.312L195.352,27.578L195.469,27.844L195.584,28.113L195.695,28.383L195.803,28.654L195.909,28.927L196.011,29.201L196.111,29.477L196.208,29.754L196.302,30.032L196.393,30.312L196.482,30.593L196.568,30.875L196.652,31.159L196.733,31.444L196.811,31.73L196.888,32.017L196.961,32.306L197.033,32.597L197.102,32.888L197.168,33.181L197.233,33.475L197.295,33.77L197.355,34.067L197.413,34.365L197.469,34.665L197.523,34.966L197.575,35.268L197.625,35.571L197.673,35.876L197.719,36.183L197.763,36.49L197.806,36.799L197.846,37.11L197.885,37.422L197.923,37.736L197.958,38.051L197.992,38.367L198.025,38.685L198.056,39.004L198.085,39.325L198.113,39.648L198.14,39.972L198.165,40.298L198.188,40.625L198.21,40.954L198.231,41.284L198.251,41.617L198.269,41.95L198.287,42.286L198.302,42.623L198.317,42.962L198.331,43.302L198.343,43.645L198.355,43.989L198.365,44.335L198.374,44.682L198.383,45.032L198.39,45.383L198.396,45.736L198.402,46.091L198.406,46.448L198.41,46.806L198.413,47.167L198.414,47.529L198.416,47.896L198.416,48.628L198.413,49.37L198.407,50.12L198.399,50.878L198.388,51.645L198.376,52.419L198.361,53.202L198.345,53.994L198.327,54.794L198.308,55.603L198.288,56.421L198.244,58.081L198.15,61.513L198.103,63.287L198.08,64.187L198.058,65.097L198.036,66.017L198.015,66.946L197.996,67.886L197.978,68.835L197.961,69.795L197.946,70.764L197.933,71.744L197.921,72.735L197.912,73.735L197.906,74.746L197.901,75.768L197.894,81.3L161.4,81.3L161.4,57.612L161.403,57.538L161.403,57.523L161.402,57.497L161.401,57.462L161.399,57.418L161.396,57.366L161.392,57.307L161.386,57.241L161.379,57.169L161.37,57.091L161.359,57.007L161.344,56.908L161.338,56.872L161.33,56.825L161.321,56.777L161.312,56.728L161.302,56.678L161.292,56.627L161.28,56.576L161.269,56.524L161.256,56.472L161.243,56.418L161.229,56.364L161.214,56.31L161.198,56.256L161.182,56.201L161.165,56.146L161.147,56.09L161.129,56.035L161.11,55.979L161.09,55.923L161.069,55.867L161.047,55.811L161.025,55.755L161.001,55.7L160.977,55.644L160.953,55.588L160.927,55.533L160.9,55.477L160.873,55.422L160.845,55.368L160.816,55.313L160.786,55.259L160.756,55.205L160.724,55.151L160.692,55.098L160.658,55.045L160.624,54.992L160.589,54.94L160.553,54.889L160.515,54.837L160.477,54.786L160.438,54.735L160.398,54.685L160.356,54.634L160.313,54.584L160.269,54.535L160.224,54.486L160.178,54.437L160.13,54.388L160.081,54.34L160.03,54.291L159.978,54.243L159.924,54.196L159.868,54.148L159.81,54.101L159.751,54.054L159.689,54.007L159.625,53.96L159.56,53.914L159.483,53.862L159.457,53.844L159.421,53.821L159.385,53.798L159.348,53.775L159.31,53.753L159.272,53.73L159.233,53.707L159.194,53.684L159.153,53.662L159.113,53.639L159.071,53.617L159.028,53.594L158.985,53.572L158.941,53.55L158.896,53.528L158.85,53.506L158.804,53.484L158.757,53.463L158.708,53.441L158.659,53.419L158.61,53.398L158.559,53.377L158.507,53.356L158.454,53.335L158.401,53.314L158.346,53.294L158.291,53.273L158.234,53.253L158.177,53.233L158.119,53.213L158.059,53.194L157.999,53.174L157.937,53.155L157.875,53.136L157.811,53.118L157.746,53.099L157.681,53.081L157.614,53.063L157.546,53.046L157.477,53.028L157.407,53.011L157.335,52.995L157.263,52.978L157.189,52.963L157.114,52.947L157.038,52.932L156.961,52.917L156.883,52.902L156.803,52.888L156.723,52.875L156.641,52.861L156.557,52.849L156.473,52.836L156.387,52.824L156.3,52.813L156.212,52.802L156.122,52.792L156.032,52.782L155.94,52.772L155.846,52.763L155.752,52.755L155.656,52.747L155.558,52.74L155.46,52.733L155.36,52.727L155.259,52.721L155.156,52.716L155.052,52.712L154.947,52.709L154.84,52.705L154.732,52.703L154.623,52.701L154.512,52.7L154.395,52.7L153.852,52.7L153.318,52.702L152.801,52.705L152.299,52.709L151.813,52.716L151.339,52.725L151.113,52.73L150.889,52.736L150.668,52.742L150.451,52.75L150.239,52.758L150.031,52.767L149.826,52.777L149.627,52.787L149.431,52.798L149.24,52.811L149.053,52.824L148.871,52.837L148.692,52.852L148.519,52.868L148.35,52.884L148.185,52.902L148.025,52.92L147.869,52.939L147.718,52.959L147.572,52.98L147.43,53.002L147.293,53.024L147.161,53.047L147.033,53.071L146.91,53.095L146.792,53.121L146.679,53.146L146.57,53.172L146.466,53.199L146.367,53.226L146.272,53.253L146.182,53.28L146.097,53.308L146.016,53.336L145.939,53.363L145.857,53.395L145.832,53.404L145.799,53.418L145.766,53.432L145.735,53.445L145.704,53.459L145.675,53.472L145.646,53.486L145.618,53.499L145.591,53.512L145.565,53.526L145.54,53.539L145.516,53.552L145.492,53.565L145.469,53.577L145.447,53.59L145.426,53.603L145.405,53.616L145.385,53.628L145.365,53.641L145.346,53.653L145.328,53.665L145.31,53.678L145.293,53.69L145.275,53.703L145.259,53.715L145.243,53.727L145.227,53.74L145.211,53.752L145.195,53.765L145.18,53.778L145.165,53.791L145.151,53.804L145.136,53.817L145.122,53.83L145.107,53.844L145.093,53.858L145.078,53.873L145.064,53.887L145.049,53.902L145.035,53.918L145.021,53.934L145.006,53.95L144.991,53.967L144.977,53.985L144.962,54.003L144.947,54.021L144.931,54.041L144.916,54.061L144.901,54.082L144.885,54.103L144.869,54.125L144.853,54.148L144.836,54.173L144.82,54.198L144.803,54.223L144.786,54.25L144.769,54.278L144.752,54.307L144.734,54.337L144.717,54.368L144.699,54.4L144.681,54.433L144.662,54.467L144.644,54.503L144.625,54.54L144.606,54.578L144.587,54.617L144.568,54.657L144.549,54.699L144.53,54.742L144.511,54.786L144.491,54.832L144.471,54.879L144.452,54.928L144.432,54.977L144.412,55.028L144.393,55.081L144.373,55.135L144.353,55.191L144.333,55.247L144.313,55.306L144.296,55.357L144.254,55.49L144.215,55.619L144.176,55.755L144.138,55.897L144.1,56.044L144.062,56.198L144.025,56.358L143.989,56.524L143.953,56.696L143.919,56.874L143.885,57.058L143.852,57.248L143.82,57.444L143.789,57.647L143.759,57.855L143.73,58.07L143.703,58.291L143.676,58.518L143.651,58.75L143.626,58.989L143.603,59.235L143.581,59.486L143.561,59.743L143.541,60.007L143.523,60.277L143.506,60.552L143.49,60.834L143.476,61.122L143.462,61.417L143.451,61.717L143.44,62.024L143.43,62.336L143.422,62.655L143.416,62.981L143.41,63.312L143.406,63.65L143.402,63.993L143.401,64.344L143.4,64.704L143.4,143.7L104.4,143.7L104.4,44.768L104.398,44.71L104.395,44.535L104.395,44.32L104.397,44.068L104.4,43.915L104.403,43.759L104.409,43.592L104.416,43.416L104.424,43.229L104.435,43.033L104.447,42.827L104.462,42.612L104.478,42.388L104.498,42.155L104.52,41.913L104.545,41.663L104.573,41.404L104.604,41.137L104.638,40.862L104.675,40.58L104.717,40.289L104.762,39.991L104.811,39.686L104.864,39.374L104.921,39.055L104.983,38.73L105.048,38.403L105.085,38.229L105.121,38.059L105.158,37.888L105.197,37.715L105.237,37.54L105.278,37.364L105.321,37.187L105.365,37.008L105.41,36.828L105.457,36.647L105.505,36.464L105.554,36.28L105.605,36.095L105.658,35.908L105.712,35.72L105.767,35.531L105.824,35.341L105.883,35.149L105.943,34.957L106.005,34.763L106.068,34.569L106.133,34.373L106.2,34.176L106.268,33.978L106.338,33.78L106.41,33.58L106.484,33.379L106.559,33.178L106.636,32.976L106.715,32.773L106.796,32.568L106.879,32.364L106.963,32.158L107.05,31.952L107.138,31.745L107.229,31.537L107.321,31.329L107.415,31.12L107.512,30.911L107.61,30.701L107.711,30.49L107.813,30.279L107.918,30.068L108.025,29.856L108.134,29.643L108.245,29.431L108.358,29.217L108.474,29.004L108.591,28.79L108.712,28.576L108.834,28.362L108.958,28.148L109.085,27.933L109.215,27.718L109.346,27.503L109.48,27.288L109.617,27.073L109.756,26.858L109.897,26.643L110.041,26.428L110.187,26.213L110.336,25.998L110.487,25.784L110.641,25.569L110.797,25.355L110.956,25.141L111.118,24.927L111.282,24.713L111.448,24.5L111.618,24.287L111.79,24.075L111.965,23.863L112.142,23.651L112.322,23.44L112.505,23.23L112.691,23.02L112.879,22.811L113.07,22.602L113.264,22.394L113.461,22.187L113.66,21.98L113.863,21.774L114.068,21.569L114.276,21.365L114.487,21.162L114.701,20.959L114.918,20.758L115.137,20.558L115.36,20.358L115.586,20.159L115.814,19.962L116.046,19.766L116.28,19.571L116.517,19.377L116.758,19.184L117.001,18.992L117.248,18.802L117.497,18.613L117.749,18.425L118.005,18.239L118.263,18.054L118.525,17.87L118.79,17.688L119.058,17.507L119.328,17.328L119.602,17.15L119.879,16.974L120.159,16.8L120.443,16.627L120.729,16.456L121.019,16.286L121.311,16.118L121.607,15.952L121.906,15.788L122.209,15.625L122.514,15.465L122.823,15.306L123.134,15.149L123.449,14.994L123.767,14.84L124.089,14.689L124.414,14.54L124.741,14.392L125.073,14.247L125.407,14.104L125.745,13.963L126.085,13.824L126.43,13.687L126.777,13.552L127.128,13.419L127.482,13.289L127.84,13.16L128.2,13.034L128.564,12.91L128.932,12.789L129.303,12.67L129.677,12.553L130.055,12.438L130.436,12.326L130.82,12.216L131.208,12.109L131.599,12.004L131.994,11.901L132.392,11.801L132.793,11.703L133.198,11.608L133.607,11.516L134.019,11.426L134.435,11.338L134.854,11.253L135.276,11.171L135.699,11.092L135.917,11.053L136.132,11.015L136.349,10.977L136.566,10.94L136.784,10.904L137.003,10.869L137.223,10.834L137.443,10.8L137.665,10.766L137.888,10.733L138.111,10.701L138.335,10.67L138.561,10.639L138.787,10.609L139.014,10.58L139.242,10.551L139.471,10.524L139.701,10.496L139.932,10.47L140.164,10.444L140.396,10.419L140.63,10.395L140.864,10.371L141.1,10.348L141.336,10.326L141.574,10.304L141.812,10.284L142.051,10.264L142.291,10.244L142.533,10.226L142.775,10.208L143.018,10.191L143.262,10.175L143.507,10.159L143.752,10.144L143.999,10.13L144.247,10.117L144.496,10.104L144.746,10.092L144.996,10.081L145.248,10.071L145.501,10.061L145.754,10.053L146.009,10.045L146.265,10.037L146.521,10.031L146.779,10.025L147.037,10.02L147.297,10.016L147.557,10.013L147.819,10.01L148.082,10.008L148.345,10.007L148.61,10.007L148.875,10.008ZM154.735,43.702L154.901,43.705L155.067,43.708L155.231,43.713L155.395,43.719L155.557,43.725L155.719,43.733L155.88,43.742L156.04,43.752L156.199,43.763L156.357,43.774L156.515,43.787L156.671,43.801L156.827,43.816L156.982,43.832L157.136,43.849L157.289,43.867L157.441,43.885L157.592,43.905L157.743,43.926L157.893,43.948L158.042,43.971L158.19,43.995L158.337,44.02L158.483,44.046L158.629,44.073L158.773,44.1L158.917,44.129L159.06,44.159L159.202,44.19L159.344,44.222L159.484,44.254L159.624,44.288L159.762,44.323L159.9,44.358L160.037,44.395L160.174,44.433L160.309,44.471L160.443,44.51L160.577,44.551L160.71,44.592L160.842,44.635L160.973,44.678L161.103,44.722L161.232,44.767L161.361,44.813L161.488,44.86L161.615,44.908L161.741,44.956L161.866,45.006L161.99,45.056L162.113,45.108L162.235,45.16L162.356,45.213L162.477,45.267L162.596,45.322L162.715,45.378L162.832,45.434L162.949,45.492L163.065,45.55L163.18,45.609L163.293,45.669L163.406,45.729L163.518,45.791L163.629,45.853L163.739,45.916L163.848,45.98L163.956,46.044L164.064,46.11L164.17,46.176L164.275,46.242L164.379,46.31L164.491,46.383L164.686,46.516L164.885,46.656L165.08,46.8L165.271,46.946L165.458,47.094L165.641,47.244L165.82,47.396L165.995,47.55L166.165,47.706L166.332,47.864L166.494,48.024L166.652,48.185L166.806,48.347L166.956,48.51L167.102,48.675L167.244,48.841L167.381,49.007L167.515,49.174L167.645,49.342L167.77,49.511L167.892,49.679L168.01,49.849L168.125,50.018L168.235,50.187L168.342,50.357L168.445,50.526L168.544,50.695L168.64,50.864L168.733,51.032L168.822,51.2L168.908,51.367L168.991,51.534L169.07,51.699L169.146,51.864L169.22,52.028L169.29,52.191L169.357,52.353L169.422,52.514L169.483,52.673L169.542,52.832L169.598,52.989L169.652,53.144L169.703,53.298L169.752,53.45L169.799,53.601L169.843,53.75L169.885,53.898L169.924,54.044L169.962,54.187L169.997,54.329L170.031,54.469L170.063,54.607L170.092,54.743L170.12,54.877L170.147,55.009L170.171,55.138L170.194,55.266L170.216,55.391L170.237,55.523L170.271,55.751L170.301,55.98L170.327,56.198L170.348,56.405L170.365,56.602L170.378,56.787L170.388,56.96L170.395,57.122L170.4,57.271L170.402,57.407L170.403,57.53L170.402,57.65L170.399,57.807L170.4,57.788L170.4,72.3L188.926,72.3L188.933,71.633L188.947,70.634L188.962,69.646L188.979,68.67L188.998,67.706L189.017,66.752L189.038,65.811L189.06,64.88L189.083,63.961L189.106,63.052L189.154,61.271L189.247,57.84L189.291,56.19L189.311,55.383L189.33,54.587L189.347,53.801L189.363,53.026L189.377,52.263L189.389,51.51L189.4,50.769L189.407,50.038L189.413,49.318L189.416,48.61L189.416,47.91L189.415,47.567L189.413,47.225L189.41,46.886L189.407,46.55L189.403,46.216L189.397,45.885L189.392,45.557L189.385,45.232L189.377,44.909L189.369,44.589L189.359,44.272L189.349,43.958L189.337,43.646L189.325,43.337L189.312,43.031L189.297,42.728L189.282,42.428L189.266,42.13L189.248,41.835L189.23,41.543L189.21,41.253L189.189,40.967L189.168,40.683L189.145,40.402L189.121,40.123L189.095,39.848L189.069,39.575L189.041,39.305L189.013,39.038L188.983,38.774L188.952,38.512L188.919,38.254L188.886,37.998L188.851,37.744L188.815,37.494L188.778,37.247L188.739,37.002L188.699,36.76L188.658,36.521L188.616,36.284L188.572,36.051L188.527,35.82L188.481,35.592L188.434,35.366L188.385,35.144L188.335,34.924L188.283,34.707L188.231,34.492L188.177,34.28L188.121,34.072L188.065,33.865L188.007,33.661L187.948,33.461L187.887,33.262L187.825,33.066L187.762,32.873L187.698,32.683L187.632,32.494L187.565,32.309L187.496,32.126L187.426,31.945L187.355,31.767L187.283,31.591L187.209,31.418L187.134,31.247L187.057,31.078L186.979,30.911L186.9,30.747L186.819,30.585L186.737,30.424L186.653,30.266L186.568,30.11L186.478,29.95L186.438,29.88L186.393,29.804L186.349,29.728L186.304,29.654L186.258,29.579L186.213,29.505L186.167,29.431L186.12,29.358L186.073,29.285L186.026,29.213L185.978,29.141L185.93,29.07L185.881,28.999L185.832,28.928L185.782,28.858L185.732,28.788L185.682,28.718L185.631,28.649L185.58,28.58L185.528,28.512L185.476,28.444L185.423,28.376L185.37,28.309L185.316,28.241L185.262,28.175L185.208,28.108L185.153,28.042L185.097,27.976L185.041,27.911L184.984,27.846L184.927,27.781L184.869,27.716L184.811,27.652L184.752,27.588L184.693,27.524L184.633,27.46L184.572,27.397L184.511,27.334L184.449,27.271L184.387,27.209L184.324,27.146L184.26,27.084L184.196,27.023L184.132,26.961L184.066,26.899L184,26.838L183.934,26.778L183.866,26.717L183.798,26.656L183.729,26.596L183.66,26.536L183.59,26.476L183.519,26.416L183.448,26.357L183.375,26.298L183.302,26.239L183.229,26.18L183.154,26.121L183.079,26.062L183.003,26.004L182.927,25.946L182.849,25.888L182.771,25.83L182.692,25.773L182.612,25.715L182.532,25.658L182.45,25.601L182.368,25.544L182.285,25.487L182.201,25.431L182.117,25.375L182.031,25.318L181.945,25.262L181.858,25.207L181.769,25.151L181.68,25.095L181.591,25.04L181.5,24.985L181.408,24.93L181.316,24.875L181.222,24.821L181.134,24.769L180.937,24.658L180.742,24.551L180.543,24.444L180.34,24.338L180.134,24.232L179.923,24.128L179.709,24.024L179.491,23.921L179.269,23.819L179.043,23.718L178.813,23.617L178.578,23.517L178.34,23.418L178.097,23.32L177.851,23.223L177.6,23.127L177.344,23.031L177.085,22.937L176.821,22.843L176.553,22.75L176.281,22.659L176.004,22.568L175.723,22.478L175.438,22.389L175.148,22.301L174.854,22.214L174.555,22.128L174.252,22.043L173.944,21.959L173.632,21.876L173.315,21.794L172.994,21.713L172.668,21.633L172.337,21.554L172.002,21.476L171.663,21.399L171.318,21.323L170.969,21.248L170.616,21.175L170.257,21.102L169.895,21.03L169.527,20.96L169.154,20.89L168.777,20.822L168.395,20.754L168.009,20.688L167.617,20.623L167.221,20.559L166.82,20.496L166.414,20.434L166.003,20.373L165.588,20.313L165.167,20.254L164.742,20.196L164.312,20.14L163.877,20.084L163.436,20.029L162.991,19.976L162.541,19.923L162.086,19.872L161.626,19.822L161.161,19.772L160.691,19.724L160.216,19.677L159.735,19.631L159.25,19.586L158.76,19.542L158.264,19.499L157.763,19.457L157.258,19.416L156.747,19.376L156.23,19.337L155.709,19.299L155.182,19.262L154.65,19.226L154.114,19.191L153.851,19.174L153.589,19.159L153.329,19.144L153.07,19.13L152.812,19.117L152.555,19.104L152.3,19.093L152.045,19.082L151.792,19.071L151.54,19.062L151.289,19.053L151.039,19.045L150.79,19.038L150.543,19.032L150.296,19.026L150.051,19.021L149.807,19.017L149.564,19.014L149.322,19.011L149.081,19.009L148.841,19.008L148.603,19.007L148.365,19.007L148.129,19.008L147.894,19.01L147.66,19.012L147.427,19.015L147.195,19.019L146.964,19.023L146.734,19.028L146.506,19.034L146.278,19.041L146.052,19.048L145.827,19.055L145.602,19.064L145.379,19.073L145.157,19.083L144.936,19.093L144.717,19.104L144.498,19.116L144.28,19.129L144.064,19.142L143.848,19.155L143.634,19.17L143.42,19.185L143.208,19.2L142.997,19.217L142.787,19.234L142.577,19.251L142.369,19.269L142.162,19.288L141.956,19.307L141.751,19.327L141.548,19.348L141.345,19.369L141.143,19.391L140.942,19.413L140.743,19.436L140.544,19.459L140.346,19.483L140.15,19.508L139.954,19.533L139.76,19.559L139.566,19.585L139.374,19.612L139.182,19.64L138.992,19.668L138.802,19.696L138.614,19.726L138.426,19.755L138.24,19.786L138.054,19.816L137.87,19.848L137.687,19.879L137.504,19.912L137.327,19.944L136.963,20.012L136.607,20.081L136.255,20.152L135.906,20.226L135.562,20.301L135.221,20.378L134.885,20.457L134.552,20.538L134.223,20.621L133.897,20.705L133.576,20.792L133.258,20.88L132.943,20.97L132.633,21.061L132.326,21.154L132.022,21.249L131.722,21.345L131.426,21.443L131.133,21.543L130.844,21.644L130.558,21.747L130.276,21.851L129.997,21.956L129.721,22.063L129.449,22.171L129.18,22.281L128.915,22.392L128.653,22.504L128.394,22.618L128.138,22.733L127.886,22.849L127.636,22.966L127.39,23.085L127.147,23.205L126.907,23.326L126.67,23.448L126.436,23.571L126.206,23.695L125.978,23.82L125.753,23.946L125.531,24.073L125.312,24.202L125.096,24.331L124.883,24.461L124.672,24.592L124.464,24.724L124.26,24.857L124.057,24.991L123.858,25.125L123.661,25.261L123.467,25.397L123.276,25.534L123.087,25.671L122.901,25.81L122.717,25.949L122.536,26.089L122.357,26.23L122.181,26.371L122.007,26.513L121.836,26.656L121.667,26.799L121.501,26.943L121.337,27.087L121.175,27.232L121.015,27.378L120.858,27.524L120.703,27.671L120.55,27.818L120.4,27.965L120.252,28.114L120.106,28.262L119.962,28.411L119.82,28.561L119.68,28.711L119.542,28.861L119.407,29.011L119.273,29.162L119.142,29.314L119.012,29.466L118.885,29.618L118.759,29.77L118.635,29.923L118.514,30.075L118.394,30.229L118.276,30.382L118.16,30.535L118.046,30.689L117.934,30.843L117.823,30.997L117.714,31.152L117.607,31.306L117.502,31.461L117.399,31.615L117.297,31.77L117.197,31.925L117.099,32.08L117.002,32.235L116.907,32.39L116.814,32.544L116.723,32.699L116.633,32.854L116.544,33.009L116.458,33.164L116.372,33.318L116.289,33.473L116.207,33.627L116.126,33.781L116.047,33.935L115.97,34.089L115.894,34.243L115.819,34.396L115.746,34.549L115.674,34.702L115.604,34.854L115.535,35.007L115.468,35.158L115.402,35.31L115.338,35.461L115.274,35.612L115.212,35.762L115.152,35.912L115.093,36.061L115.035,36.21L114.978,36.358L114.923,36.506L114.869,36.653L114.816,36.8L114.765,36.946L114.715,37.091L114.665,37.236L114.618,37.38L114.571,37.524L114.525,37.666L114.481,37.808L114.438,37.949L114.396,38.089L114.355,38.229L114.315,38.368L114.276,38.505L114.239,38.642L114.202,38.778L114.167,38.913L114.132,39.047L114.099,39.181L114.066,39.312L114.035,39.444L114.004,39.574L113.975,39.702L113.946,39.83L113.918,39.957L113.892,40.082L113.867,40.201L113.817,40.452L113.771,40.691L113.729,40.926L113.69,41.155L113.654,41.378L113.621,41.596L113.591,41.807L113.564,42.013L113.539,42.211L113.517,42.403L113.497,42.588L113.479,42.766L113.464,42.937L113.45,43.1L113.439,43.256L113.429,43.403L113.42,43.543L113.413,43.674L113.408,43.796L113.403,43.91L113.4,44.015L113.397,44.11L113.396,44.189L113.395,44.341L113.395,44.444L113.396,44.501L113.4,44.632L113.4,134.7L134.4,134.7L134.4,64.696L134.401,64.312L134.403,63.929L134.406,63.551L134.411,63.178L134.417,62.81L134.425,62.446L134.434,62.087L134.445,61.732L134.457,61.382L134.47,61.037L134.486,60.695L134.503,60.358L134.521,60.025L134.541,59.697L134.563,59.372L134.587,59.051L134.613,58.734L134.64,58.421L134.669,58.112L134.7,57.806L134.733,57.503L134.768,57.204L134.806,56.909L134.845,56.617L134.886,56.327L134.93,56.042L134.976,55.758L135.025,55.478L135.075,55.201L135.129,54.927L135.185,54.655L135.244,54.386L135.305,54.119L135.37,53.855L135.437,53.593L135.508,53.334L135.581,53.077L135.658,52.822L135.736,52.578L135.78,52.444L135.823,52.319L135.866,52.195L135.91,52.071L135.956,51.948L136.002,51.825L136.049,51.702L136.097,51.58L136.146,51.459L136.197,51.339L136.248,51.218L136.3,51.099L136.354,50.98L136.408,50.861L136.463,50.744L136.52,50.626L136.578,50.509L136.637,50.393L136.697,50.278L136.758,50.163L136.82,50.048L136.884,49.935L136.949,49.822L137.015,49.709L137.082,49.598L137.15,49.487L137.22,49.377L137.29,49.267L137.362,49.159L137.435,49.051L137.51,48.944L137.586,48.837L137.663,48.732L137.741,48.628L137.82,48.524L137.901,48.422L137.982,48.32L138.065,48.219L138.15,48.12L138.235,48.021L138.321,47.923L138.409,47.827L138.498,47.731L138.588,47.637L138.679,47.544L138.771,47.452L138.864,47.361L138.958,47.272L139.053,47.184L139.149,47.096L139.246,47.011L139.345,46.926L139.444,46.843L139.543,46.761L139.644,46.68L139.745,46.601L139.848,46.523L139.951,46.447L140.054,46.371L140.159,46.298L140.264,46.225L140.37,46.154L140.476,46.084L140.583,46.016L140.69,45.949L140.799,45.883L140.907,45.819L141.016,45.756L141.125,45.695L141.235,45.635L141.345,45.576L141.456,45.518L141.567,45.462L141.678,45.407L141.79,45.354L141.902,45.301L142.014,45.25L142.126,45.2L142.239,45.152L142.352,45.104L142.464,45.058L142.587,45.009L142.804,44.926L143.032,44.844L143.26,44.766L143.488,44.693L143.717,44.623L143.946,44.557L144.175,44.495L144.405,44.436L144.636,44.381L144.866,44.329L145.097,44.28L145.329,44.234L145.561,44.19L145.793,44.15L146.026,44.112L146.26,44.076L146.494,44.043L146.729,44.012L146.964,43.983L147.201,43.956L147.438,43.931L147.677,43.907L147.916,43.886L148.157,43.866L148.398,43.847L148.641,43.83L148.885,43.815L149.13,43.801L149.377,43.788L149.625,43.776L149.875,43.765L150.126,43.756L150.379,43.747L150.633,43.739L150.89,43.733L151.151,43.727L151.669,43.717L152.198,43.71L152.735,43.705L153.281,43.702L153.836,43.7L154.405,43.7L154.568,43.7L154.735,43.702Z"/>
50
- </g>
51
- <g id="Layer_5" transform="matrix(1,0,0,1,8.35,0)">
52
- <path d="M49.1,139.2L49.1,122C49.1,117.2 49.6,113 69.3,113C89,113 90.3,115.2 90.3,119L90.3,139.2L49.1,139.2Z" style="fill:rgb(174,173,174);fill-rule:nonzero;"/>
53
- <path d="M69.766,108.5L70.226,108.502L70.68,108.504L71.127,108.507L71.567,108.51L72.002,108.515L72.43,108.52L72.853,108.526L73.269,108.533L73.679,108.541L74.083,108.549L74.481,108.559L74.874,108.569L75.26,108.58L75.641,108.592L76.017,108.605L76.386,108.618L76.751,108.633L77.109,108.648L77.463,108.664L77.81,108.681L78.153,108.698L78.491,108.717L78.823,108.736L79.15,108.756L79.472,108.777L79.79,108.799L80.102,108.822L80.409,108.846L80.712,108.87L81.01,108.896L81.304,108.922L81.593,108.949L81.877,108.977L82.157,109.006L82.433,109.036L82.705,109.067L82.972,109.099L83.236,109.132L83.495,109.166L83.75,109.201L84.002,109.236L84.25,109.273L84.494,109.311L84.735,109.35L84.972,109.391L85.205,109.432L85.436,109.474L85.663,109.518L85.887,109.563L86.107,109.609L86.325,109.657L86.54,109.706L86.752,109.756L86.962,109.808L87.169,109.861L87.373,109.916L87.575,109.973L87.775,110.031L87.972,110.091L88.167,110.153L88.361,110.217L88.552,110.283L88.741,110.351L88.928,110.422L89.114,110.494L89.298,110.57L89.48,110.647L89.66,110.728L89.839,110.811L90.016,110.897L90.192,110.986L90.366,111.078L90.539,111.174L90.71,111.273L90.879,111.375L91.046,111.481L91.212,111.591L91.376,111.704L91.537,111.822L91.696,111.943L91.853,112.069L92.008,112.198L92.159,112.331L92.308,112.469L92.453,112.61L92.595,112.755L92.733,112.904L92.868,113.056L92.998,113.212L93.124,113.37L93.245,113.532L93.362,113.696L93.473,113.863L93.58,114.031L93.682,114.201L93.778,114.372L93.869,114.544L93.955,114.717L94.036,114.89L94.111,115.062L94.182,115.235L94.247,115.406L94.308,115.577L94.363,115.746L94.415,115.913L94.462,116.079L94.505,116.243L94.543,116.405L94.579,116.565L94.61,116.722L94.639,116.876L94.664,117.029L94.686,117.178L94.706,117.325L94.723,117.469L94.738,117.611L94.751,117.75L94.762,117.886L94.772,118.02L94.779,118.151L94.785,118.279L94.79,118.405L94.794,118.537L94.799,118.767L94.8,118.987L94.8,143.7L44.6,143.7L44.6,121.996L44.6,121.755L44.602,121.504L44.606,121.244L44.612,120.977L44.622,120.71L44.628,120.562L44.635,120.419L44.644,120.275L44.654,120.128L44.665,119.979L44.678,119.828L44.693,119.675L44.71,119.52L44.728,119.362L44.749,119.203L44.771,119.042L44.797,118.879L44.825,118.714L44.855,118.547L44.888,118.378L44.925,118.207L44.964,118.035L45.007,117.861L45.053,117.685L45.103,117.509L45.157,117.33L45.215,117.151L45.277,116.97L45.343,116.789L45.413,116.607L45.488,116.425L45.567,116.242L45.651,116.059L45.739,115.876L45.833,115.694L45.931,115.511L46.034,115.33L46.142,115.15L46.254,114.971L46.371,114.793L46.494,114.617L46.62,114.443L46.752,114.271L46.887,114.102L47.028,113.934L47.172,113.769L47.321,113.607L47.474,113.448L47.631,113.292L47.792,113.139L47.956,112.989L48.124,112.842L48.296,112.699L48.471,112.558L48.649,112.421L48.83,112.287L49.015,112.157L49.202,112.03L49.393,111.906L49.586,111.785L49.782,111.667L49.982,111.553L50.184,111.441L50.388,111.332L50.596,111.226L50.806,111.124L51.019,111.023L51.235,110.926L51.454,110.831L51.675,110.739L51.9,110.649L52.127,110.561L52.358,110.476L52.591,110.394L52.828,110.313L53.068,110.235L53.311,110.158L53.557,110.084L53.807,110.012L54.06,109.942L54.317,109.874L54.577,109.808L54.841,109.744L55.109,109.681L55.38,109.62L55.656,109.561L55.935,109.504L56.218,109.449L56.506,109.395L56.798,109.343L57.094,109.292L57.395,109.243L57.7,109.196L58.009,109.151L58.323,109.107L58.642,109.064L58.966,109.023L59.295,108.984L59.628,108.946L59.966,108.91L60.31,108.875L60.659,108.842L61.013,108.811L61.372,108.781L61.737,108.752L62.107,108.725L62.482,108.699L62.863,108.675L63.25,108.653L63.643,108.632L64.041,108.613L64.446,108.595L64.856,108.578L65.272,108.564L65.694,108.55L66.123,108.539L66.558,108.528L66.998,108.52L67.446,108.513L67.9,108.507L68.36,108.503L68.827,108.501L69.298,108.5L69.766,108.5ZM68.857,117.501L68.421,117.503L67.993,117.507L67.572,117.512L67.158,117.518L66.751,117.526L66.352,117.536L65.959,117.546L65.574,117.559L65.195,117.572L64.824,117.587L64.459,117.603L64.102,117.62L63.751,117.639L63.407,117.659L63.07,117.68L62.739,117.703L62.416,117.726L62.099,117.751L61.788,117.777L61.485,117.804L61.188,117.833L60.897,117.862L60.613,117.892L60.335,117.924L60.064,117.956L59.8,117.99L59.541,118.024L59.289,118.059L59.044,118.095L58.805,118.132L58.572,118.17L58.345,118.209L58.124,118.248L57.91,118.288L57.702,118.329L57.5,118.37L57.304,118.412L57.114,118.455L56.93,118.498L56.753,118.541L56.581,118.585L56.415,118.629L56.255,118.673L56.101,118.717L55.953,118.762L55.811,118.807L55.675,118.851L55.544,118.895L55.419,118.94L55.3,118.984L55.186,119.027L55.078,119.071L54.976,119.113L54.878,119.156L54.786,119.197L54.7,119.238L54.618,119.278L54.542,119.317L54.471,119.355L54.404,119.391L54.342,119.427L54.285,119.461L54.232,119.494L54.184,119.526L54.139,119.556L54.099,119.584L54.063,119.611L54.03,119.637L54,119.66L53.974,119.683L53.95,119.703L53.929,119.722L53.911,119.739L53.895,119.755L53.882,119.769L53.87,119.782L53.859,119.794L53.85,119.805L53.843,119.815L53.836,119.824L53.83,119.832L53.824,119.839L53.82,119.847L53.815,119.854L53.81,119.862L53.806,119.87L53.802,119.878L53.797,119.887L53.792,119.897L53.787,119.908L53.782,119.92L53.776,119.934L53.77,119.95L53.764,119.967L53.757,119.987L53.75,120.008L53.743,120.032L53.735,120.058L53.728,120.087L53.72,120.118L53.713,120.151L53.705,120.188L53.697,120.227L53.689,120.269L53.682,120.314L53.674,120.362L53.667,120.412L53.66,120.465L53.654,120.522L53.647,120.581L53.642,120.643L53.636,120.707L53.631,120.775L53.626,120.845L53.622,120.918L53.618,120.994L53.615,121.066L53.609,121.239L53.604,121.414L53.602,121.6L53.6,121.796L53.6,122.004L53.6,134.7L85.8,134.7L85.8,119.013L85.799,118.879L85.799,118.862L85.77,118.85L85.705,118.825L85.634,118.799L85.558,118.771L85.477,118.743L85.391,118.715L85.299,118.685L85.201,118.656L85.098,118.626L84.99,118.595L84.876,118.565L84.757,118.534L84.632,118.503L84.502,118.472L84.366,118.441L84.225,118.41L84.078,118.38L83.926,118.349L83.768,118.319L83.605,118.288L83.436,118.259L83.261,118.229L83.081,118.2L82.895,118.171L82.704,118.142L82.507,118.114L82.305,118.087L82.097,118.06L81.883,118.033L81.664,118.007L81.438,117.981L81.208,117.956L80.971,117.932L80.729,117.908L80.481,117.884L80.227,117.862L79.967,117.839L79.701,117.818L79.43,117.797L79.152,117.777L78.869,117.757L78.579,117.738L78.284,117.72L77.982,117.702L77.675,117.686L77.361,117.669L77.041,117.654L76.715,117.639L76.383,117.625L76.045,117.612L75.7,117.599L75.349,117.587L74.992,117.576L74.628,117.566L74.258,117.556L73.881,117.547L73.498,117.539L73.108,117.532L72.712,117.525L72.309,117.519L71.9,117.514L71.483,117.51L71.06,117.506L70.63,117.504L70.194,117.502L69.75,117.5L69.302,117.5L68.857,117.501Z"/>
54
- </g>
55
- <g id="Layer_17" transform="matrix(1,0,0,1,8.35,0)">
56
- <path d="M42,150L266,150C266,150 273.3,239.2 227.3,252.7C181.3,266.2 242.7,209.4 42,150Z" style="fill:rgb(237,237,237);fill-rule:nonzero;"/>
57
- <path d="M55.4,120.2C55.4,120.2 81.1,125.5 83.9,133C83.9,133 84.4,125 83.2,121.2C82,117.4 56.9,119.5 55.4,120.2Z" style="fill:rgb(237,237,237);fill-rule:nonzero;"/>
58
- <path d="M115.7,40.7C115.7,40.7 119.7,27.4 135.7,23.7C151.7,20 172.4,23.7 180.1,28.4C187.8,33.1 185.7,69.7 185.7,69.7L179.1,69.7C179.1,69.7 180,48.8 177.3,37.4C174.6,26 132.4,18.4 115.7,40.7Z" style="fill:rgb(237,237,237);fill-rule:nonzero;"/>
59
- </g>
60
- <g id="Layer_18" transform="matrix(1,0,0,1,8.35,0)">
61
- <path d="M50.9,224.2C50.9,224.2 63.9,249.2 91.9,254.7C119.9,260.2 195.4,254.7 195.4,254.7C195.4,254.7 77.9,242.2 50.9,224.2Z" style="fill:rgb(102,103,102);fill-rule:nonzero;"/>
62
- </g>
63
- </g>
64
- </svg>
Binary file
Binary file
@@ -1,116 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # Copyright, 2019, by Samuel G. D. Williams. <http://www.codeotaku.com>
4
- #
5
- # Permission is hereby granted, free of charge, to any person obtaining a copy
6
- # of this software and associated documentation files (the "Software"), to deal
7
- # in the Software without restriction, including without limitation the rights
8
- # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- # copies of the Software, and to permit persons to whom the Software is
10
- # furnished to do so, subject to the following conditions:
11
- #
12
- # The above copyright notice and this permission notice shall be included in
13
- # all copies or substantial portions of the Software.
14
- #
15
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
- # THE SOFTWARE.
22
-
23
- require 'async/barrier'
24
- require 'async/clock'
25
- require 'async/rspec'
26
-
27
- require 'async/semaphore'
28
-
29
- require_relative 'chainable_async_examples'
30
-
31
- RSpec.describe Async::Barrier do
32
- include_context Async::RSpec::Reactor
33
-
34
- context '#async' do
35
- let(:repeats) {40}
36
- let(:delay) {0.1}
37
-
38
- it 'should wait for all jobs to complete' do
39
- finished = 0
40
-
41
- repeats.times.map do |i|
42
- subject.async do |task|
43
- task.sleep(delay)
44
- finished += 1
45
-
46
- # This task is a child task but not part of the barrier.
47
- task.async do
48
- task.sleep(delay*3)
49
- end
50
- end
51
- end
52
-
53
- expect(subject).to_not be_empty
54
- expect(finished).to be < repeats
55
-
56
- duration = Async::Clock.measure{subject.wait}
57
-
58
- expect(duration).to be < (delay * 2 * Q)
59
- expect(finished).to be == repeats
60
- expect(subject).to be_empty
61
- end
62
- end
63
-
64
- context '#wait' do
65
- it 'should wait for tasks even after exceptions' do
66
- task1 = subject.async do
67
- raise "Boom"
68
- end
69
-
70
- task2 = subject.async do
71
- end
72
-
73
- expect(task1).to be_failed
74
- expect(task2).to be_finished
75
-
76
- expect{subject.wait}.to raise_exception(/Boom/)
77
-
78
- subject.wait until subject.empty?
79
-
80
- expect(subject).to be_empty
81
- end
82
-
83
- it 'waits for tasks in order' do
84
- order = []
85
-
86
- 5.times do |i|
87
- subject.async do
88
- order << i
89
- end
90
- end
91
-
92
- subject.wait
93
-
94
- expect(order).to be == [0, 1, 2, 3, 4]
95
- end
96
- end
97
-
98
- context 'with semaphore' do
99
- let(:capacity) {2}
100
- let(:semaphore) {Async::Semaphore.new(capacity)}
101
- let(:repeats) {capacity * 2}
102
-
103
- it 'should execute several tasks and wait using a barrier' do
104
- repeats.times do
105
- subject.async(parent: semaphore) do |task|
106
- task.sleep 0.1
107
- end
108
- end
109
-
110
- expect(subject.size).to be == repeats
111
- subject.wait
112
- end
113
- end
114
-
115
- it_behaves_like 'chainable async'
116
- end
@@ -1,13 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.shared_examples 'chainable async' do
4
- let(:parent) {double}
5
- subject {described_class.new(parent: parent)}
6
-
7
- it 'should chain async to parent' do
8
- expect(parent).to receive(:async)
9
-
10
- subject.async do
11
- end
12
- end
13
- end
@@ -1,37 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # Copyright, 2018, by Samuel G. D. Williams. <http://www.codeotaku.com>
4
- #
5
- # Permission is hereby granted, free of charge, to any person obtaining a copy
6
- # of this software and associated documentation files (the "Software"), to deal
7
- # in the Software without restriction, including without limitation the rights
8
- # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- # copies of the Software, and to permit persons to whom the Software is
10
- # furnished to do so, subject to the following conditions:
11
- #
12
- # The above copyright notice and this permission notice shall be included in
13
- # all copies or substantial portions of the Software.
14
- #
15
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
- # THE SOFTWARE.
22
-
23
- require 'async/clock'
24
-
25
- RSpec.describe Async::Clock do
26
- it "can measure durations" do
27
- duration = Async::Clock.measure do
28
- sleep 0.1
29
- end
30
-
31
- expect(duration).to be_within(0.01 * Q).of(0.1)
32
- end
33
-
34
- it "can get current offset" do
35
- expect(Async::Clock.now).to be_kind_of Float
36
- end
37
- end
@@ -1,105 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # Copyright, 2018, by Samuel G. D. Williams. <http://www.codeotaku.com>
4
- #
5
- # Permission is hereby granted, free of charge, to any person obtaining a copy
6
- # of this software and associated documentation files (the "Software"), to deal
7
- # in the Software without restriction, including without limitation the rights
8
- # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- # copies of the Software, and to permit persons to whom the Software is
10
- # furnished to do so, subject to the following conditions:
11
- #
12
- # The above copyright notice and this permission notice shall be included in
13
- # all copies or substantial portions of the Software.
14
- #
15
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
- # THE SOFTWARE.
22
-
23
- RSpec.shared_examples Async::Condition do
24
- it 'can signal waiting task' do
25
- state = nil
26
-
27
- reactor.async do
28
- state = :waiting
29
- subject.wait
30
- state = :resumed
31
- end
32
-
33
- expect(state).to be == :waiting
34
-
35
- subject.signal
36
-
37
- reactor.yield
38
-
39
- expect(state).to be == :resumed
40
- end
41
-
42
- it 'should be able to signal stopped task' do
43
- expect(subject.empty?).to be_truthy
44
-
45
- task = reactor.async do
46
- subject.wait
47
- end
48
-
49
- expect(subject.empty?).to be_falsey
50
-
51
- task.stop
52
-
53
- subject.signal
54
- end
55
-
56
- it 'resumes tasks in order' do
57
- order = []
58
-
59
- 5.times do |i|
60
- task = reactor.async do
61
- subject.wait
62
- order << i
63
- end
64
- end
65
-
66
- subject.signal
67
-
68
- reactor.yield
69
-
70
- expect(order).to be == [0, 1, 2, 3, 4]
71
- end
72
-
73
- context "with timeout" do
74
- before do
75
- @state = nil
76
- end
77
-
78
- let!(:task) do
79
- reactor.async do |task|
80
- task.with_timeout(0.1) do
81
- begin
82
- @state = :waiting
83
- subject.wait
84
- @state = :signalled
85
- rescue Async::TimeoutError
86
- @state = :timeout
87
- end
88
- end
89
- end
90
- end
91
-
92
- it 'can timeout while waiting' do
93
- task.wait
94
-
95
- expect(@state).to be == :timeout
96
- end
97
-
98
- it 'can signal while waiting' do
99
- subject.signal
100
- task.wait
101
-
102
- expect(@state).to be == :signalled
103
- end
104
- end
105
- end