ruote-beanstalk 2.1.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG.txt +8 -0
- data/LICENSE.txt +21 -0
- data/README.md +140 -0
- data/Rakefile +90 -0
- data/TODO.txt +20 -0
- data/doc/storages.graffle/QuickLook/Preview.pdf +0 -0
- data/doc/storages.graffle/QuickLook/Thumbnail.tiff +0 -0
- data/doc/storages.graffle/data.plist +809 -0
- data/doc/storages.graffle/image1.png +0 -0
- data/doc/storages.graffle/image2.png +0 -0
- data/doc/storages.png +0 -0
- data/lib/ruote-beanstalk.rb +3 -0
- data/lib/ruote/beanstalk.rb +8 -0
- data/lib/ruote/beanstalk/fork.rb +56 -0
- data/lib/ruote/beanstalk/participant.rb +147 -0
- data/lib/ruote/beanstalk/receiver.rb +149 -0
- data/lib/ruote/beanstalk/storage.rb +308 -0
- data/lib/ruote/beanstalk/version.rb +7 -0
- data/ruote-beanstalk.gemspec +85 -0
- data/serve.rb +11 -0
- data/test/functional/base.rb +17 -0
- data/test/functional/ft_0_participant.rb +102 -0
- data/test/functional/ft_1_receiver.rb +112 -0
- data/test/functional/test.rb +9 -0
- data/test/functional_connection.rb +19 -0
- data/test/test.rb +9 -0
- metadata +165 -0
data/CHANGELOG.txt
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
|
2
|
+
Copyright (c) 2010-2010, John Mettraux, jmettraux@gmail.com
|
3
|
+
|
4
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
5
|
+
of this software and associated documentation files (the "Software"), to deal
|
6
|
+
in the Software without restriction, including without limitation the rights
|
7
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
8
|
+
copies of the Software, and to permit persons to whom the Software is
|
9
|
+
furnished to do so, subject to the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be included in
|
12
|
+
all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
15
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
16
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
17
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
18
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
19
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
20
|
+
THE SOFTWARE.
|
21
|
+
|
data/README.md
ADDED
@@ -0,0 +1,140 @@
|
|
1
|
+
|
2
|
+
# ruote-beanstalk
|
3
|
+
|
4
|
+
Beanstalk extensions for ruote 2.1 (a Ruby workflow engine).
|
5
|
+
|
6
|
+
"Beanstalk is a simple, fast workqueue service" (http://kr.github.com/beanstalkd/).
|
7
|
+
|
8
|
+
ruote-beanstalk provides a participant/receiver pair. Emitting workitems to a Beanstalk queue/tube and listening/receiving them back. Workers can connect to the Beanstalk queue, receive workitems, do some work and then (optionally) send the updated workitem back to the ruote system.
|
9
|
+
|
10
|
+
There is a bonus : Ruote::Beanstalk::BsStorage, a storage implementation for ruote. Workers and engines can connect over Beanstalk to a shared storage.
|
11
|
+
|
12
|
+
BsStorage listens to a Beanstalk queue where it receives storage orders that it conveys to a FsStorage instance.
|
13
|
+
|
14
|
+
(Initially I tried to use Beanstalk for msgs and schedules as well, but since you can't delete a delayed message in Beanstalk (as of now), I fell back to using Beanstalk as middleware, it's slightly slower, but much simpler and robust).
|
15
|
+
|
16
|
+
RDOC : http://ruote.rubyforge.org/ruote-beanstalk_rdoc/
|
17
|
+
|
18
|
+
|
19
|
+
## usage
|
20
|
+
|
21
|
+
### Ruote::Beanstalk::BsParticipant and BsReceiver
|
22
|
+
|
23
|
+
Registering a Beanstalk participant :
|
24
|
+
|
25
|
+
@engine.register_participant(
|
26
|
+
'alpha',
|
27
|
+
Ruote::Beanstalk::BsParticipant,
|
28
|
+
'beanstalk' => '127.0.0.1:11300',
|
29
|
+
'tube' => 'ruote-workitems')
|
30
|
+
|
31
|
+
|
32
|
+
Binding a listener to a storage or an engine :
|
33
|
+
|
34
|
+
Ruote::Beanstalk::BsReceiver.new(
|
35
|
+
engine, '127.0.0.1:11300', 'tube' => 'ruote-incoming')
|
36
|
+
|
37
|
+
# or
|
38
|
+
|
39
|
+
Ruote::Beanstalk::BsReceiver.new(
|
40
|
+
storage, '127.0.0.1:11300', 'tube' => 'ruote-incoming')
|
41
|
+
|
42
|
+
The receiver manages a thread that listens to incoming messages and feeds them to ruote via the engine or directly via a storage.
|
43
|
+
|
44
|
+
|
45
|
+
### Ruote::Beanstalk::BsStorage
|
46
|
+
|
47
|
+
There are two modes in which BsStorage can be used :
|
48
|
+
|
49
|
+
* bound to a remote storage (client)
|
50
|
+
* bound to the physical storage (server)
|
51
|
+
|
52
|
+
There should always be at least 1 server and 1 client.
|
53
|
+
|
54
|
+
<a href="http://github.com/jmettraux/ruote-beanstalk/raw/ruote2.1/doc/storages.png"><img src="http://github.com/jmettraux/ruote-beanstalk/raw/ruote2.1/doc/storages.png" /></a>
|
55
|
+
|
56
|
+
Beanstalk is the intermediary.
|
57
|
+
|
58
|
+
|
59
|
+
#### client
|
60
|
+
|
61
|
+
Pass a string of the form host:port and a hash of options :
|
62
|
+
|
63
|
+
Ruote::Beanstalk::BsStorage.new('127.0.0.1:11300', opts)
|
64
|
+
|
65
|
+
Wrapped in an engine + worker :
|
66
|
+
|
67
|
+
engine = Ruote::Engine.new(
|
68
|
+
Ruote::Worker.new(
|
69
|
+
Ruote::Beanstalk::BsStorage.new('127.0.0.1:11300', opts)))
|
70
|
+
|
71
|
+
#### server
|
72
|
+
|
73
|
+
This piece of ruby starts a Beanstalk instance (:fork => true) and starts a BsStorage 'server' coupled to an embedded FsStorage :
|
74
|
+
|
75
|
+
require 'ruote/beanstalk'
|
76
|
+
|
77
|
+
Ruote::Beanstalk::BsStorage.new(':11300', 'ruote_work', :fork => true)
|
78
|
+
|
79
|
+
|
80
|
+
## running tests
|
81
|
+
|
82
|
+
### Ruote::Beanstalk::BsParticipant and BsReceiver
|
83
|
+
|
84
|
+
Simply do
|
85
|
+
|
86
|
+
ruby test/test.rb
|
87
|
+
|
88
|
+
in your ruote-beanstalk/ directory.
|
89
|
+
|
90
|
+
|
91
|
+
### Ruote::Beanstalk::BsStorage
|
92
|
+
|
93
|
+
assuming you have
|
94
|
+
|
95
|
+
ruote/
|
96
|
+
ruote-beanstalk/
|
97
|
+
|
98
|
+
In a separate terminal, go to ruote-beanstalk/ and launch
|
99
|
+
|
100
|
+
ruby serve.rb
|
101
|
+
|
102
|
+
To launch a beanstalkd + fs storage couple, then run unit or functional tests
|
103
|
+
|
104
|
+
|
105
|
+
* unit tests :
|
106
|
+
|
107
|
+
get into ruote/ and do
|
108
|
+
|
109
|
+
ruby test/unit/storage.rb --beanstalk
|
110
|
+
|
111
|
+
* functional tests :
|
112
|
+
|
113
|
+
get into ruote/ and do
|
114
|
+
|
115
|
+
ruby test/functional/test.rb --beanstalk
|
116
|
+
|
117
|
+
|
118
|
+
## license
|
119
|
+
|
120
|
+
MIT
|
121
|
+
|
122
|
+
|
123
|
+
## links
|
124
|
+
|
125
|
+
* http://kr.github.com/beanstalkd/
|
126
|
+
|
127
|
+
* http://ruote.rubyforge.org/
|
128
|
+
* http://github.com/jmettraux/ruote-beanstalk
|
129
|
+
|
130
|
+
|
131
|
+
## feedback
|
132
|
+
|
133
|
+
mailing list : http://groups.google.com/group/openwferu-users
|
134
|
+
irc : irc.freenode.net #ruote
|
135
|
+
|
136
|
+
|
137
|
+
## many thanks to
|
138
|
+
|
139
|
+
- the beanstalk authors and contributors
|
140
|
+
|
data/Rakefile
ADDED
@@ -0,0 +1,90 @@
|
|
1
|
+
|
2
|
+
require 'rubygems'
|
3
|
+
require 'rake'
|
4
|
+
|
5
|
+
require 'lib/ruote/beanstalk/version.rb'
|
6
|
+
|
7
|
+
#
|
8
|
+
# CLEAN
|
9
|
+
|
10
|
+
require 'rake/clean'
|
11
|
+
CLEAN.include('pkg', 'tmp', 'html', 'rdoc')
|
12
|
+
task :default => [ :clean ]
|
13
|
+
|
14
|
+
|
15
|
+
#
|
16
|
+
# GEM
|
17
|
+
|
18
|
+
require 'jeweler'
|
19
|
+
|
20
|
+
Jeweler::Tasks.new do |gem|
|
21
|
+
|
22
|
+
gem.version = Ruote::Beanstalk::VERSION
|
23
|
+
gem.name = 'ruote-beanstalk'
|
24
|
+
gem.summary = 'Beanstalk participant/receiver/storage for ruote (a Ruby workflow engine)'
|
25
|
+
gem.description = %{
|
26
|
+
Beanstalk participant/receiver/storage for ruote (a Ruby workflow engine)
|
27
|
+
}.strip
|
28
|
+
gem.email = 'jmettraux@gmail.com'
|
29
|
+
gem.homepage = 'http://github.com/jmettraux/ruote-beanstalk'
|
30
|
+
gem.authors = [ 'John Mettraux' ]
|
31
|
+
gem.rubyforge_project = 'ruote'
|
32
|
+
|
33
|
+
gem.test_file = 'test/test.rb'
|
34
|
+
|
35
|
+
gem.add_dependency 'ruote', ">= #{Ruote::Beanstalk::VERSION}"
|
36
|
+
gem.add_dependency 'rufus-cloche', '>= 0.1.17'
|
37
|
+
gem.add_dependency 'beanstalk-client', '>= 1.0.2'
|
38
|
+
gem.add_development_dependency 'yard'
|
39
|
+
gem.add_development_dependency 'rake'
|
40
|
+
gem.add_development_dependency 'jeweler'
|
41
|
+
|
42
|
+
# gemspec spec : http://www.rubygems.org/read/chapter/20
|
43
|
+
end
|
44
|
+
Jeweler::GemcutterTasks.new
|
45
|
+
|
46
|
+
|
47
|
+
#
|
48
|
+
# DOC
|
49
|
+
|
50
|
+
#begin
|
51
|
+
#
|
52
|
+
# require 'yard'
|
53
|
+
#
|
54
|
+
# YARD::Rake::YardocTask.new do |doc|
|
55
|
+
# doc.options = [
|
56
|
+
# '-o', 'html/ruote-beanstalk', '--title',
|
57
|
+
# "ruote-beanstalk #{Ruote::Beanstalk::VERSION}"
|
58
|
+
# ]
|
59
|
+
# end
|
60
|
+
#
|
61
|
+
#rescue LoadError
|
62
|
+
#
|
63
|
+
# task :yard do
|
64
|
+
# abort "YARD is not available : sudo gem install yard"
|
65
|
+
# end
|
66
|
+
#end
|
67
|
+
|
68
|
+
#
|
69
|
+
# make sure to have rdoc 2.5.x to run that
|
70
|
+
#
|
71
|
+
require 'rake/rdoctask'
|
72
|
+
Rake::RDocTask.new do |rd|
|
73
|
+
rd.main = 'README.rdoc'
|
74
|
+
rd.rdoc_dir = 'rdoc/ruote-beanstalk_rdoc'
|
75
|
+
rd.rdoc_files.include('README.rdoc', 'CHANGELOG.txt', 'lib/**/*.rb')
|
76
|
+
rd.title = "ruote-beanstalk #{Ruote::Beanstalk::VERSION}"
|
77
|
+
end
|
78
|
+
|
79
|
+
|
80
|
+
#
|
81
|
+
# TO THE WEB
|
82
|
+
|
83
|
+
task :upload_website => [ :clean, :rdoc ] do
|
84
|
+
|
85
|
+
account = 'jmettraux@rubyforge.org'
|
86
|
+
webdir = '/var/www/gforge-projects/ruote'
|
87
|
+
|
88
|
+
sh "rsync -azv -e ssh rdoc/ruote-beanstalk_rdoc #{account}:#{webdir}/"
|
89
|
+
end
|
90
|
+
|
data/TODO.txt
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
|
2
|
+
[o] scheduled jobs : do not use delayed jobs
|
3
|
+
[x] put_back in the operate loop ?
|
4
|
+
[x] test with beanstalk -b ruote_work/beanstalk/ or something
|
5
|
+
no need for beanstalk binlog
|
6
|
+
[o] drop the msgs idiosyncrasies ?
|
7
|
+
at first try to go all the way with msgs vs commands
|
8
|
+
|
|
9
|
+
one of the disadvantages of msgs + commands is that
|
10
|
+
schedules are not stored at the same place as the exps/workitems/...
|
11
|
+
[o] fork beanstalk S(d, 'iface:port', :fork => true)
|
12
|
+
[o] operate : sign messages (tube AND timestamp)
|
13
|
+
[o] security issue in #serve (send)
|
14
|
+
[o] receiver : launchitem ?
|
15
|
+
[o] 'commands' channel : better name ?
|
16
|
+
|
17
|
+
[ ] operate : better name ?
|
18
|
+
|
19
|
+
[ ] rw : document participant / receiver (use bs as an example)
|
20
|
+
|
Binary file
|
Binary file
|
@@ -0,0 +1,809 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
3
|
+
<plist version="1.0">
|
4
|
+
<dict>
|
5
|
+
<key>ActiveLayerIndex</key>
|
6
|
+
<integer>0</integer>
|
7
|
+
<key>ApplicationVersion</key>
|
8
|
+
<array>
|
9
|
+
<string>com.omnigroup.OmniGraffle</string>
|
10
|
+
<string>138.14.0.129428</string>
|
11
|
+
</array>
|
12
|
+
<key>AutoAdjust</key>
|
13
|
+
<true/>
|
14
|
+
<key>BackgroundGraphic</key>
|
15
|
+
<dict>
|
16
|
+
<key>Bounds</key>
|
17
|
+
<string>{{0, 0}, {1118, 783}}</string>
|
18
|
+
<key>Class</key>
|
19
|
+
<string>SolidGraphic</string>
|
20
|
+
<key>ID</key>
|
21
|
+
<integer>2</integer>
|
22
|
+
<key>Style</key>
|
23
|
+
<dict>
|
24
|
+
<key>shadow</key>
|
25
|
+
<dict>
|
26
|
+
<key>Draws</key>
|
27
|
+
<string>NO</string>
|
28
|
+
</dict>
|
29
|
+
<key>stroke</key>
|
30
|
+
<dict>
|
31
|
+
<key>Draws</key>
|
32
|
+
<string>NO</string>
|
33
|
+
</dict>
|
34
|
+
</dict>
|
35
|
+
</dict>
|
36
|
+
<key>CanvasOrigin</key>
|
37
|
+
<string>{0, 0}</string>
|
38
|
+
<key>ColumnAlign</key>
|
39
|
+
<integer>1</integer>
|
40
|
+
<key>ColumnSpacing</key>
|
41
|
+
<real>36</real>
|
42
|
+
<key>CreationDate</key>
|
43
|
+
<string>2010-06-14 14:29:55 +0900</string>
|
44
|
+
<key>Creator</key>
|
45
|
+
<string>John Mettraux</string>
|
46
|
+
<key>DisplayScale</key>
|
47
|
+
<string>1 0/72 in = 1 0/72 in</string>
|
48
|
+
<key>GraphDocumentVersion</key>
|
49
|
+
<integer>6</integer>
|
50
|
+
<key>GraphicsList</key>
|
51
|
+
<array>
|
52
|
+
<dict>
|
53
|
+
<key>Bounds</key>
|
54
|
+
<string>{{13, 307}, {541, 96}}</string>
|
55
|
+
<key>Class</key>
|
56
|
+
<string>ShapedGraphic</string>
|
57
|
+
<key>ID</key>
|
58
|
+
<integer>13</integer>
|
59
|
+
<key>ImageID</key>
|
60
|
+
<integer>2</integer>
|
61
|
+
<key>Shape</key>
|
62
|
+
<string>Rectangle</string>
|
63
|
+
<key>Style</key>
|
64
|
+
<dict>
|
65
|
+
<key>fill</key>
|
66
|
+
<dict>
|
67
|
+
<key>Draws</key>
|
68
|
+
<string>NO</string>
|
69
|
+
</dict>
|
70
|
+
<key>stroke</key>
|
71
|
+
<dict>
|
72
|
+
<key>Draws</key>
|
73
|
+
<string>NO</string>
|
74
|
+
</dict>
|
75
|
+
</dict>
|
76
|
+
</dict>
|
77
|
+
<dict>
|
78
|
+
<key>Bounds</key>
|
79
|
+
<string>{{64, 93}, {195, 218}}</string>
|
80
|
+
<key>Class</key>
|
81
|
+
<string>ShapedGraphic</string>
|
82
|
+
<key>FontInfo</key>
|
83
|
+
<dict>
|
84
|
+
<key>Color</key>
|
85
|
+
<dict>
|
86
|
+
<key>w</key>
|
87
|
+
<string>0</string>
|
88
|
+
</dict>
|
89
|
+
<key>Font</key>
|
90
|
+
<string>HelveticaNeue</string>
|
91
|
+
<key>NSKern</key>
|
92
|
+
<real>0.0</real>
|
93
|
+
<key>Size</key>
|
94
|
+
<real>12</real>
|
95
|
+
</dict>
|
96
|
+
<key>ID</key>
|
97
|
+
<integer>12</integer>
|
98
|
+
<key>Shape</key>
|
99
|
+
<string>Rectangle</string>
|
100
|
+
<key>Style</key>
|
101
|
+
<dict>
|
102
|
+
<key>fill</key>
|
103
|
+
<dict>
|
104
|
+
<key>Draws</key>
|
105
|
+
<string>NO</string>
|
106
|
+
<key>GradientColor</key>
|
107
|
+
<dict>
|
108
|
+
<key>w</key>
|
109
|
+
<string>1</string>
|
110
|
+
</dict>
|
111
|
+
<key>MiddleFraction</key>
|
112
|
+
<real>0.13492070138454437</real>
|
113
|
+
</dict>
|
114
|
+
<key>stroke</key>
|
115
|
+
<dict>
|
116
|
+
<key>Cap</key>
|
117
|
+
<integer>0</integer>
|
118
|
+
<key>Color</key>
|
119
|
+
<dict>
|
120
|
+
<key>b</key>
|
121
|
+
<string>0.494118</string>
|
122
|
+
<key>g</key>
|
123
|
+
<string>0.494118</string>
|
124
|
+
<key>r</key>
|
125
|
+
<string>0.494118</string>
|
126
|
+
</dict>
|
127
|
+
<key>Join</key>
|
128
|
+
<integer>0</integer>
|
129
|
+
</dict>
|
130
|
+
</dict>
|
131
|
+
<key>Text</key>
|
132
|
+
<dict>
|
133
|
+
<key>Align</key>
|
134
|
+
<integer>0</integer>
|
135
|
+
<key>VerticalPad</key>
|
136
|
+
<integer>0</integer>
|
137
|
+
</dict>
|
138
|
+
</dict>
|
139
|
+
<dict>
|
140
|
+
<key>Bounds</key>
|
141
|
+
<string>{{13, 25}, {498, 50}}</string>
|
142
|
+
<key>Class</key>
|
143
|
+
<string>ShapedGraphic</string>
|
144
|
+
<key>ID</key>
|
145
|
+
<integer>10</integer>
|
146
|
+
<key>ImageID</key>
|
147
|
+
<integer>1</integer>
|
148
|
+
<key>Shape</key>
|
149
|
+
<string>Rectangle</string>
|
150
|
+
<key>Style</key>
|
151
|
+
<dict>
|
152
|
+
<key>fill</key>
|
153
|
+
<dict>
|
154
|
+
<key>Draws</key>
|
155
|
+
<string>NO</string>
|
156
|
+
</dict>
|
157
|
+
<key>stroke</key>
|
158
|
+
<dict>
|
159
|
+
<key>Draws</key>
|
160
|
+
<string>NO</string>
|
161
|
+
</dict>
|
162
|
+
</dict>
|
163
|
+
</dict>
|
164
|
+
<dict>
|
165
|
+
<key>Class</key>
|
166
|
+
<string>LineGraphic</string>
|
167
|
+
<key>FontInfo</key>
|
168
|
+
<dict>
|
169
|
+
<key>Font</key>
|
170
|
+
<string>Helvetica</string>
|
171
|
+
<key>Size</key>
|
172
|
+
<real>12</real>
|
173
|
+
</dict>
|
174
|
+
<key>Head</key>
|
175
|
+
<dict>
|
176
|
+
<key>ID</key>
|
177
|
+
<integer>3</integer>
|
178
|
+
</dict>
|
179
|
+
<key>ID</key>
|
180
|
+
<integer>9</integer>
|
181
|
+
<key>Points</key>
|
182
|
+
<array>
|
183
|
+
<string>{360.316, 183.523}</string>
|
184
|
+
<string>{342.116, 151.865}</string>
|
185
|
+
</array>
|
186
|
+
<key>Style</key>
|
187
|
+
<dict>
|
188
|
+
<key>shadow</key>
|
189
|
+
<dict>
|
190
|
+
<key>Draws</key>
|
191
|
+
<string>YES</string>
|
192
|
+
</dict>
|
193
|
+
<key>stroke</key>
|
194
|
+
<dict>
|
195
|
+
<key>HeadArrow</key>
|
196
|
+
<string>FilledArrow</string>
|
197
|
+
<key>LineType</key>
|
198
|
+
<integer>1</integer>
|
199
|
+
<key>TailArrow</key>
|
200
|
+
<string>0</string>
|
201
|
+
</dict>
|
202
|
+
</dict>
|
203
|
+
<key>Tail</key>
|
204
|
+
<dict>
|
205
|
+
<key>ID</key>
|
206
|
+
<integer>4</integer>
|
207
|
+
</dict>
|
208
|
+
</dict>
|
209
|
+
<dict>
|
210
|
+
<key>Class</key>
|
211
|
+
<string>LineGraphic</string>
|
212
|
+
<key>FontInfo</key>
|
213
|
+
<dict>
|
214
|
+
<key>Font</key>
|
215
|
+
<string>Helvetica</string>
|
216
|
+
<key>Size</key>
|
217
|
+
<real>12</real>
|
218
|
+
</dict>
|
219
|
+
<key>Head</key>
|
220
|
+
<dict>
|
221
|
+
<key>ID</key>
|
222
|
+
<integer>3</integer>
|
223
|
+
</dict>
|
224
|
+
<key>ID</key>
|
225
|
+
<integer>8</integer>
|
226
|
+
<key>Points</key>
|
227
|
+
<array>
|
228
|
+
<string>{230.557, 150.304}</string>
|
229
|
+
<string>{287.04, 137.081}</string>
|
230
|
+
</array>
|
231
|
+
<key>Style</key>
|
232
|
+
<dict>
|
233
|
+
<key>shadow</key>
|
234
|
+
<dict>
|
235
|
+
<key>Draws</key>
|
236
|
+
<string>YES</string>
|
237
|
+
</dict>
|
238
|
+
<key>stroke</key>
|
239
|
+
<dict>
|
240
|
+
<key>HeadArrow</key>
|
241
|
+
<string>FilledArrow</string>
|
242
|
+
<key>LineType</key>
|
243
|
+
<integer>1</integer>
|
244
|
+
<key>TailArrow</key>
|
245
|
+
<string>0</string>
|
246
|
+
</dict>
|
247
|
+
</dict>
|
248
|
+
<key>Tail</key>
|
249
|
+
<dict>
|
250
|
+
<key>ID</key>
|
251
|
+
<integer>5</integer>
|
252
|
+
</dict>
|
253
|
+
</dict>
|
254
|
+
<dict>
|
255
|
+
<key>Bounds</key>
|
256
|
+
<string>{{149, 214}, {88, 79}}</string>
|
257
|
+
<key>Class</key>
|
258
|
+
<string>ShapedGraphic</string>
|
259
|
+
<key>FontInfo</key>
|
260
|
+
<dict>
|
261
|
+
<key>Color</key>
|
262
|
+
<dict>
|
263
|
+
<key>w</key>
|
264
|
+
<string>0</string>
|
265
|
+
</dict>
|
266
|
+
<key>Font</key>
|
267
|
+
<string>HelveticaNeue</string>
|
268
|
+
<key>NSKern</key>
|
269
|
+
<real>0.0</real>
|
270
|
+
<key>Size</key>
|
271
|
+
<real>12</real>
|
272
|
+
</dict>
|
273
|
+
<key>ID</key>
|
274
|
+
<integer>7</integer>
|
275
|
+
<key>Shape</key>
|
276
|
+
<string>Circle</string>
|
277
|
+
<key>Style</key>
|
278
|
+
<dict>
|
279
|
+
<key>fill</key>
|
280
|
+
<dict>
|
281
|
+
<key>GradientColor</key>
|
282
|
+
<dict>
|
283
|
+
<key>w</key>
|
284
|
+
<string>1</string>
|
285
|
+
</dict>
|
286
|
+
<key>MiddleFraction</key>
|
287
|
+
<real>0.13492070138454437</real>
|
288
|
+
</dict>
|
289
|
+
<key>stroke</key>
|
290
|
+
<dict>
|
291
|
+
<key>Cap</key>
|
292
|
+
<integer>0</integer>
|
293
|
+
<key>Color</key>
|
294
|
+
<dict>
|
295
|
+
<key>b</key>
|
296
|
+
<string>0.494118</string>
|
297
|
+
<key>g</key>
|
298
|
+
<string>0.494118</string>
|
299
|
+
<key>r</key>
|
300
|
+
<string>0.494118</string>
|
301
|
+
</dict>
|
302
|
+
<key>Join</key>
|
303
|
+
<integer>0</integer>
|
304
|
+
<key>Width</key>
|
305
|
+
<real>2</real>
|
306
|
+
</dict>
|
307
|
+
</dict>
|
308
|
+
<key>Text</key>
|
309
|
+
<dict>
|
310
|
+
<key>Text</key>
|
311
|
+
<string>{\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf290
|
312
|
+
{\fonttbl\f0\fnil\fcharset0 HelveticaNeue;}
|
313
|
+
{\colortbl;\red255\green255\blue255;}
|
314
|
+
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
|
315
|
+
|
316
|
+
\f0\fs24 \cf0 Engine}</string>
|
317
|
+
<key>VerticalPad</key>
|
318
|
+
<integer>0</integer>
|
319
|
+
</dict>
|
320
|
+
</dict>
|
321
|
+
<dict>
|
322
|
+
<key>Bounds</key>
|
323
|
+
<string>{{100, 174}, {88, 79}}</string>
|
324
|
+
<key>Class</key>
|
325
|
+
<string>ShapedGraphic</string>
|
326
|
+
<key>FontInfo</key>
|
327
|
+
<dict>
|
328
|
+
<key>Color</key>
|
329
|
+
<dict>
|
330
|
+
<key>w</key>
|
331
|
+
<string>0</string>
|
332
|
+
</dict>
|
333
|
+
<key>Font</key>
|
334
|
+
<string>HelveticaNeue</string>
|
335
|
+
<key>NSKern</key>
|
336
|
+
<real>0.0</real>
|
337
|
+
<key>Size</key>
|
338
|
+
<real>12</real>
|
339
|
+
</dict>
|
340
|
+
<key>ID</key>
|
341
|
+
<integer>6</integer>
|
342
|
+
<key>Shape</key>
|
343
|
+
<string>Circle</string>
|
344
|
+
<key>Style</key>
|
345
|
+
<dict>
|
346
|
+
<key>fill</key>
|
347
|
+
<dict>
|
348
|
+
<key>GradientColor</key>
|
349
|
+
<dict>
|
350
|
+
<key>w</key>
|
351
|
+
<string>1</string>
|
352
|
+
</dict>
|
353
|
+
<key>MiddleFraction</key>
|
354
|
+
<real>0.13492070138454437</real>
|
355
|
+
</dict>
|
356
|
+
<key>stroke</key>
|
357
|
+
<dict>
|
358
|
+
<key>Cap</key>
|
359
|
+
<integer>0</integer>
|
360
|
+
<key>Color</key>
|
361
|
+
<dict>
|
362
|
+
<key>b</key>
|
363
|
+
<string>0.494118</string>
|
364
|
+
<key>g</key>
|
365
|
+
<string>0.494118</string>
|
366
|
+
<key>r</key>
|
367
|
+
<string>0.494118</string>
|
368
|
+
</dict>
|
369
|
+
<key>Join</key>
|
370
|
+
<integer>0</integer>
|
371
|
+
<key>Width</key>
|
372
|
+
<real>2</real>
|
373
|
+
</dict>
|
374
|
+
</dict>
|
375
|
+
<key>Text</key>
|
376
|
+
<dict>
|
377
|
+
<key>Text</key>
|
378
|
+
<string>{\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf290
|
379
|
+
{\fonttbl\f0\fnil\fcharset0 HelveticaNeue;}
|
380
|
+
{\colortbl;\red255\green255\blue255;}
|
381
|
+
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
|
382
|
+
|
383
|
+
\f0\fs24 \cf0 Worker}</string>
|
384
|
+
<key>VerticalPad</key>
|
385
|
+
<integer>0</integer>
|
386
|
+
</dict>
|
387
|
+
</dict>
|
388
|
+
<dict>
|
389
|
+
<key>Bounds</key>
|
390
|
+
<string>{{143, 121}, {88, 79}}</string>
|
391
|
+
<key>Class</key>
|
392
|
+
<string>ShapedGraphic</string>
|
393
|
+
<key>FontInfo</key>
|
394
|
+
<dict>
|
395
|
+
<key>Color</key>
|
396
|
+
<dict>
|
397
|
+
<key>w</key>
|
398
|
+
<string>0</string>
|
399
|
+
</dict>
|
400
|
+
<key>Font</key>
|
401
|
+
<string>HelveticaNeue</string>
|
402
|
+
<key>NSKern</key>
|
403
|
+
<real>0.0</real>
|
404
|
+
<key>Size</key>
|
405
|
+
<real>12</real>
|
406
|
+
</dict>
|
407
|
+
<key>ID</key>
|
408
|
+
<integer>5</integer>
|
409
|
+
<key>Shape</key>
|
410
|
+
<string>Circle</string>
|
411
|
+
<key>Style</key>
|
412
|
+
<dict>
|
413
|
+
<key>fill</key>
|
414
|
+
<dict>
|
415
|
+
<key>GradientColor</key>
|
416
|
+
<dict>
|
417
|
+
<key>w</key>
|
418
|
+
<string>1</string>
|
419
|
+
</dict>
|
420
|
+
<key>MiddleFraction</key>
|
421
|
+
<real>0.13492070138454437</real>
|
422
|
+
</dict>
|
423
|
+
<key>stroke</key>
|
424
|
+
<dict>
|
425
|
+
<key>Cap</key>
|
426
|
+
<integer>0</integer>
|
427
|
+
<key>Color</key>
|
428
|
+
<dict>
|
429
|
+
<key>b</key>
|
430
|
+
<string>0.494118</string>
|
431
|
+
<key>g</key>
|
432
|
+
<string>0.494118</string>
|
433
|
+
<key>r</key>
|
434
|
+
<string>0.494118</string>
|
435
|
+
</dict>
|
436
|
+
<key>Join</key>
|
437
|
+
<integer>0</integer>
|
438
|
+
<key>Width</key>
|
439
|
+
<real>2</real>
|
440
|
+
</dict>
|
441
|
+
</dict>
|
442
|
+
<key>Text</key>
|
443
|
+
<dict>
|
444
|
+
<key>Text</key>
|
445
|
+
<string>{\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf290
|
446
|
+
{\fonttbl\f0\fnil\fcharset0 HelveticaNeue;}
|
447
|
+
{\colortbl;\red255\green255\blue255;}
|
448
|
+
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
|
449
|
+
|
450
|
+
\f0\fs24 \cf0 BsStorage}</string>
|
451
|
+
<key>VerticalPad</key>
|
452
|
+
<integer>0</integer>
|
453
|
+
</dict>
|
454
|
+
</dict>
|
455
|
+
<dict>
|
456
|
+
<key>Bounds</key>
|
457
|
+
<string>{{337, 180}, {88, 79}}</string>
|
458
|
+
<key>Class</key>
|
459
|
+
<string>ShapedGraphic</string>
|
460
|
+
<key>FontInfo</key>
|
461
|
+
<dict>
|
462
|
+
<key>Color</key>
|
463
|
+
<dict>
|
464
|
+
<key>w</key>
|
465
|
+
<string>0</string>
|
466
|
+
</dict>
|
467
|
+
<key>Font</key>
|
468
|
+
<string>HelveticaNeue</string>
|
469
|
+
<key>NSKern</key>
|
470
|
+
<real>0.0</real>
|
471
|
+
<key>Size</key>
|
472
|
+
<real>12</real>
|
473
|
+
</dict>
|
474
|
+
<key>ID</key>
|
475
|
+
<integer>4</integer>
|
476
|
+
<key>Shape</key>
|
477
|
+
<string>Circle</string>
|
478
|
+
<key>Style</key>
|
479
|
+
<dict>
|
480
|
+
<key>fill</key>
|
481
|
+
<dict>
|
482
|
+
<key>GradientColor</key>
|
483
|
+
<dict>
|
484
|
+
<key>w</key>
|
485
|
+
<string>1</string>
|
486
|
+
</dict>
|
487
|
+
<key>MiddleFraction</key>
|
488
|
+
<real>0.13492070138454437</real>
|
489
|
+
</dict>
|
490
|
+
<key>stroke</key>
|
491
|
+
<dict>
|
492
|
+
<key>Cap</key>
|
493
|
+
<integer>0</integer>
|
494
|
+
<key>Color</key>
|
495
|
+
<dict>
|
496
|
+
<key>b</key>
|
497
|
+
<string>0.494118</string>
|
498
|
+
<key>g</key>
|
499
|
+
<string>0.494118</string>
|
500
|
+
<key>r</key>
|
501
|
+
<string>0.494118</string>
|
502
|
+
</dict>
|
503
|
+
<key>Join</key>
|
504
|
+
<integer>0</integer>
|
505
|
+
<key>Width</key>
|
506
|
+
<real>2</real>
|
507
|
+
</dict>
|
508
|
+
</dict>
|
509
|
+
<key>Text</key>
|
510
|
+
<dict>
|
511
|
+
<key>Text</key>
|
512
|
+
<string>{\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf290
|
513
|
+
{\fonttbl\f0\fnil\fcharset0 HelveticaNeue;}
|
514
|
+
{\colortbl;\red255\green255\blue255;}
|
515
|
+
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
|
516
|
+
|
517
|
+
\f0\fs24 \cf0 BsStorage}</string>
|
518
|
+
<key>VerticalPad</key>
|
519
|
+
<integer>0</integer>
|
520
|
+
</dict>
|
521
|
+
</dict>
|
522
|
+
<dict>
|
523
|
+
<key>Bounds</key>
|
524
|
+
<string>{{287, 104}, {82, 47}}</string>
|
525
|
+
<key>Class</key>
|
526
|
+
<string>ShapedGraphic</string>
|
527
|
+
<key>FontInfo</key>
|
528
|
+
<dict>
|
529
|
+
<key>Color</key>
|
530
|
+
<dict>
|
531
|
+
<key>w</key>
|
532
|
+
<string>0</string>
|
533
|
+
</dict>
|
534
|
+
<key>Font</key>
|
535
|
+
<string>HelveticaNeue</string>
|
536
|
+
<key>NSKern</key>
|
537
|
+
<real>0.0</real>
|
538
|
+
<key>Size</key>
|
539
|
+
<real>12</real>
|
540
|
+
</dict>
|
541
|
+
<key>ID</key>
|
542
|
+
<integer>3</integer>
|
543
|
+
<key>Shape</key>
|
544
|
+
<string>RoundRect</string>
|
545
|
+
<key>Style</key>
|
546
|
+
<dict>
|
547
|
+
<key>fill</key>
|
548
|
+
<dict>
|
549
|
+
<key>GradientColor</key>
|
550
|
+
<dict>
|
551
|
+
<key>w</key>
|
552
|
+
<string>1</string>
|
553
|
+
</dict>
|
554
|
+
<key>MiddleFraction</key>
|
555
|
+
<real>0.13492070138454437</real>
|
556
|
+
</dict>
|
557
|
+
<key>stroke</key>
|
558
|
+
<dict>
|
559
|
+
<key>Cap</key>
|
560
|
+
<integer>0</integer>
|
561
|
+
<key>Color</key>
|
562
|
+
<dict>
|
563
|
+
<key>b</key>
|
564
|
+
<string>0.494118</string>
|
565
|
+
<key>g</key>
|
566
|
+
<string>0.494118</string>
|
567
|
+
<key>r</key>
|
568
|
+
<string>0.494118</string>
|
569
|
+
</dict>
|
570
|
+
<key>Join</key>
|
571
|
+
<integer>0</integer>
|
572
|
+
<key>Width</key>
|
573
|
+
<real>2</real>
|
574
|
+
</dict>
|
575
|
+
</dict>
|
576
|
+
<key>Text</key>
|
577
|
+
<dict>
|
578
|
+
<key>Text</key>
|
579
|
+
<string>{\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf290
|
580
|
+
{\fonttbl\f0\fnil\fcharset0 HelveticaNeue;}
|
581
|
+
{\colortbl;\red255\green255\blue255;}
|
582
|
+
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
|
583
|
+
|
584
|
+
\f0\fs24 \cf0 beanstalk}</string>
|
585
|
+
<key>VerticalPad</key>
|
586
|
+
<integer>0</integer>
|
587
|
+
</dict>
|
588
|
+
</dict>
|
589
|
+
<dict>
|
590
|
+
<key>Bounds</key>
|
591
|
+
<string>{{293, 71}, {149, 218}}</string>
|
592
|
+
<key>Class</key>
|
593
|
+
<string>ShapedGraphic</string>
|
594
|
+
<key>FontInfo</key>
|
595
|
+
<dict>
|
596
|
+
<key>Color</key>
|
597
|
+
<dict>
|
598
|
+
<key>w</key>
|
599
|
+
<string>0</string>
|
600
|
+
</dict>
|
601
|
+
<key>Font</key>
|
602
|
+
<string>HelveticaNeue</string>
|
603
|
+
<key>NSKern</key>
|
604
|
+
<real>0.0</real>
|
605
|
+
<key>Size</key>
|
606
|
+
<real>12</real>
|
607
|
+
</dict>
|
608
|
+
<key>ID</key>
|
609
|
+
<integer>11</integer>
|
610
|
+
<key>Shape</key>
|
611
|
+
<string>Rectangle</string>
|
612
|
+
<key>Style</key>
|
613
|
+
<dict>
|
614
|
+
<key>fill</key>
|
615
|
+
<dict>
|
616
|
+
<key>Draws</key>
|
617
|
+
<string>NO</string>
|
618
|
+
<key>GradientColor</key>
|
619
|
+
<dict>
|
620
|
+
<key>w</key>
|
621
|
+
<string>1</string>
|
622
|
+
</dict>
|
623
|
+
<key>MiddleFraction</key>
|
624
|
+
<real>0.13492070138454437</real>
|
625
|
+
</dict>
|
626
|
+
<key>stroke</key>
|
627
|
+
<dict>
|
628
|
+
<key>Cap</key>
|
629
|
+
<integer>0</integer>
|
630
|
+
<key>Color</key>
|
631
|
+
<dict>
|
632
|
+
<key>b</key>
|
633
|
+
<string>0.494118</string>
|
634
|
+
<key>g</key>
|
635
|
+
<string>0.494118</string>
|
636
|
+
<key>r</key>
|
637
|
+
<string>0.494118</string>
|
638
|
+
</dict>
|
639
|
+
<key>Join</key>
|
640
|
+
<integer>0</integer>
|
641
|
+
</dict>
|
642
|
+
</dict>
|
643
|
+
<key>Text</key>
|
644
|
+
<dict>
|
645
|
+
<key>Align</key>
|
646
|
+
<integer>0</integer>
|
647
|
+
<key>VerticalPad</key>
|
648
|
+
<integer>0</integer>
|
649
|
+
</dict>
|
650
|
+
</dict>
|
651
|
+
</array>
|
652
|
+
<key>GridInfo</key>
|
653
|
+
<dict/>
|
654
|
+
<key>GuidesLocked</key>
|
655
|
+
<string>NO</string>
|
656
|
+
<key>GuidesVisible</key>
|
657
|
+
<string>YES</string>
|
658
|
+
<key>HPages</key>
|
659
|
+
<integer>2</integer>
|
660
|
+
<key>ImageCounter</key>
|
661
|
+
<integer>3</integer>
|
662
|
+
<key>ImageLinkBack</key>
|
663
|
+
<array>
|
664
|
+
<dict/>
|
665
|
+
<dict/>
|
666
|
+
</array>
|
667
|
+
<key>ImageList</key>
|
668
|
+
<array>
|
669
|
+
<string>image2.png</string>
|
670
|
+
<string>image1.png</string>
|
671
|
+
</array>
|
672
|
+
<key>KeepToScale</key>
|
673
|
+
<false/>
|
674
|
+
<key>Layers</key>
|
675
|
+
<array>
|
676
|
+
<dict>
|
677
|
+
<key>Lock</key>
|
678
|
+
<string>NO</string>
|
679
|
+
<key>Name</key>
|
680
|
+
<string>Layer 1</string>
|
681
|
+
<key>Print</key>
|
682
|
+
<string>YES</string>
|
683
|
+
<key>View</key>
|
684
|
+
<string>YES</string>
|
685
|
+
</dict>
|
686
|
+
</array>
|
687
|
+
<key>LayoutInfo</key>
|
688
|
+
<dict>
|
689
|
+
<key>Animate</key>
|
690
|
+
<string>NO</string>
|
691
|
+
<key>circoMinDist</key>
|
692
|
+
<real>18</real>
|
693
|
+
<key>circoSeparation</key>
|
694
|
+
<real>0.0</real>
|
695
|
+
<key>layoutEngine</key>
|
696
|
+
<string>dot</string>
|
697
|
+
<key>neatoSeparation</key>
|
698
|
+
<real>0.0</real>
|
699
|
+
<key>twopiSeparation</key>
|
700
|
+
<real>0.0</real>
|
701
|
+
</dict>
|
702
|
+
<key>LinksVisible</key>
|
703
|
+
<string>NO</string>
|
704
|
+
<key>MagnetsVisible</key>
|
705
|
+
<string>NO</string>
|
706
|
+
<key>MasterSheets</key>
|
707
|
+
<array/>
|
708
|
+
<key>ModificationDate</key>
|
709
|
+
<string>2010-06-14 14:38:47 +0900</string>
|
710
|
+
<key>Modifier</key>
|
711
|
+
<string>John Mettraux</string>
|
712
|
+
<key>NotesVisible</key>
|
713
|
+
<string>NO</string>
|
714
|
+
<key>Orientation</key>
|
715
|
+
<integer>2</integer>
|
716
|
+
<key>OriginVisible</key>
|
717
|
+
<string>NO</string>
|
718
|
+
<key>PageBreaks</key>
|
719
|
+
<string>YES</string>
|
720
|
+
<key>PrintInfo</key>
|
721
|
+
<dict>
|
722
|
+
<key>NSBottomMargin</key>
|
723
|
+
<array>
|
724
|
+
<string>float</string>
|
725
|
+
<string>41</string>
|
726
|
+
</array>
|
727
|
+
<key>NSLeftMargin</key>
|
728
|
+
<array>
|
729
|
+
<string>float</string>
|
730
|
+
<string>18</string>
|
731
|
+
</array>
|
732
|
+
<key>NSPaperSize</key>
|
733
|
+
<array>
|
734
|
+
<string>size</string>
|
735
|
+
<string>{595, 842}</string>
|
736
|
+
</array>
|
737
|
+
<key>NSRightMargin</key>
|
738
|
+
<array>
|
739
|
+
<string>float</string>
|
740
|
+
<string>18</string>
|
741
|
+
</array>
|
742
|
+
<key>NSTopMargin</key>
|
743
|
+
<array>
|
744
|
+
<string>float</string>
|
745
|
+
<string>18</string>
|
746
|
+
</array>
|
747
|
+
</dict>
|
748
|
+
<key>PrintOnePage</key>
|
749
|
+
<false/>
|
750
|
+
<key>ReadOnly</key>
|
751
|
+
<string>NO</string>
|
752
|
+
<key>RowAlign</key>
|
753
|
+
<integer>1</integer>
|
754
|
+
<key>RowSpacing</key>
|
755
|
+
<real>36</real>
|
756
|
+
<key>SheetTitle</key>
|
757
|
+
<string>Canvas 1</string>
|
758
|
+
<key>SmartAlignmentGuidesActive</key>
|
759
|
+
<string>YES</string>
|
760
|
+
<key>SmartDistanceGuidesActive</key>
|
761
|
+
<string>YES</string>
|
762
|
+
<key>UniqueID</key>
|
763
|
+
<integer>1</integer>
|
764
|
+
<key>UseEntirePage</key>
|
765
|
+
<false/>
|
766
|
+
<key>VPages</key>
|
767
|
+
<integer>1</integer>
|
768
|
+
<key>WindowInfo</key>
|
769
|
+
<dict>
|
770
|
+
<key>CurrentSheet</key>
|
771
|
+
<integer>0</integer>
|
772
|
+
<key>ExpandedCanvases</key>
|
773
|
+
<array>
|
774
|
+
<dict>
|
775
|
+
<key>name</key>
|
776
|
+
<string>Canvas 1</string>
|
777
|
+
</dict>
|
778
|
+
</array>
|
779
|
+
<key>Frame</key>
|
780
|
+
<string>{{633, 88}, {1140, 1070}}</string>
|
781
|
+
<key>ListView</key>
|
782
|
+
<true/>
|
783
|
+
<key>OutlineWidth</key>
|
784
|
+
<integer>142</integer>
|
785
|
+
<key>RightSidebar</key>
|
786
|
+
<false/>
|
787
|
+
<key>ShowRuler</key>
|
788
|
+
<true/>
|
789
|
+
<key>Sidebar</key>
|
790
|
+
<true/>
|
791
|
+
<key>SidebarWidth</key>
|
792
|
+
<integer>120</integer>
|
793
|
+
<key>VisibleRegion</key>
|
794
|
+
<string>{{0, -59}, {1005, 901}}</string>
|
795
|
+
<key>Zoom</key>
|
796
|
+
<real>1</real>
|
797
|
+
<key>ZoomValues</key>
|
798
|
+
<array>
|
799
|
+
<array>
|
800
|
+
<string>Canvas 1</string>
|
801
|
+
<real>1</real>
|
802
|
+
<real>1</real>
|
803
|
+
</array>
|
804
|
+
</array>
|
805
|
+
</dict>
|
806
|
+
<key>saveQuickLookFiles</key>
|
807
|
+
<string>YES</string>
|
808
|
+
</dict>
|
809
|
+
</plist>
|