neptune 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (79) hide show
  1. data/LICENSE +39 -0
  2. data/README +50 -0
  3. data/bin/neptune +16 -0
  4. data/doc/AppControllerClient.html +468 -0
  5. data/doc/CommonFunctions.html +368 -0
  6. data/doc/LICENSE.html +131 -0
  7. data/doc/Object.html +431 -0
  8. data/doc/README.html +135 -0
  9. data/doc/bin/neptune.html +58 -0
  10. data/doc/created.rid +7 -0
  11. data/doc/images/brick.png +0 -0
  12. data/doc/images/brick_link.png +0 -0
  13. data/doc/images/bug.png +0 -0
  14. data/doc/images/bullet_black.png +0 -0
  15. data/doc/images/bullet_toggle_minus.png +0 -0
  16. data/doc/images/bullet_toggle_plus.png +0 -0
  17. data/doc/images/date.png +0 -0
  18. data/doc/images/find.png +0 -0
  19. data/doc/images/loadingAnimation.gif +0 -0
  20. data/doc/images/macFFBgHack.png +0 -0
  21. data/doc/images/package.png +0 -0
  22. data/doc/images/page_green.png +0 -0
  23. data/doc/images/page_white_text.png +0 -0
  24. data/doc/images/page_white_width.png +0 -0
  25. data/doc/images/plugin.png +0 -0
  26. data/doc/images/ruby.png +0 -0
  27. data/doc/images/tag_green.png +0 -0
  28. data/doc/images/wrench.png +0 -0
  29. data/doc/images/wrench_orange.png +0 -0
  30. data/doc/images/zoom.png +0 -0
  31. data/doc/index.html +90 -0
  32. data/doc/js/darkfish.js +116 -0
  33. data/doc/js/jquery.js +32 -0
  34. data/doc/js/quicksearch.js +114 -0
  35. data/doc/js/thickbox-compressed.js +10 -0
  36. data/doc/lib/app_controller_client_rb.html +60 -0
  37. data/doc/lib/common_functions_rb.html +68 -0
  38. data/doc/lib/job_rb.html +55 -0
  39. data/doc/scripts/appscale/add_appserver_rb.html +52 -0
  40. data/doc/scripts/appscale/add_database_rb.html +52 -0
  41. data/doc/scripts/appscale/add_loadbalancer_rb.html +52 -0
  42. data/doc/scripts/appscale/add_slave_rb.html +52 -0
  43. data/doc/scripts/cewssa/cewssa-output.html +104 -0
  44. data/doc/scripts/cewssa/get_cewssa_output_rb.html +52 -0
  45. data/doc/scripts/cewssa/run_cewssa_rb.html +52 -0
  46. data/doc/scripts/cewssa/test_dfsp_rb.html +52 -0
  47. data/doc/scripts/dfsp/get_dfsp_output_rb.html +52 -0
  48. data/doc/scripts/dfsp/make_output_public_rb.html +52 -0
  49. data/doc/scripts/dfsp/run_dfsp_rb.html +52 -0
  50. data/doc/scripts/dfsp/see_acl_rb.html +52 -0
  51. data/doc/scripts/dfsp/test_dfsp_rb.html +52 -0
  52. data/doc/scripts/mapreduce/get_mapreduce_output_rb.html +52 -0
  53. data/doc/scripts/mapreduce/input-10.html +114 -0
  54. data/doc/scripts/mapreduce/input-30.html +114 -0
  55. data/doc/scripts/mapreduce/input-7.html +104 -0
  56. data/doc/scripts/mapreduce/map_rb.html +56 -0
  57. data/doc/scripts/mapreduce/reduce_rb.html +56 -0
  58. data/doc/scripts/mapreduce/run_java_mr_rb.html +52 -0
  59. data/doc/scripts/mapreduce/run_mapreduce_rb.html +52 -0
  60. data/doc/scripts/mpi/Makefile.html +125 -0
  61. data/doc/scripts/mpi/get_mpi_output_rb.html +52 -0
  62. data/doc/scripts/mpi/hw2_c.html +52 -0
  63. data/doc/scripts/mpi/hw2harness_c.html +52 -0
  64. data/doc/scripts/mpi/hw2harness_h.html +52 -0
  65. data/doc/scripts/mpi/run_mpi_cpi_rb.html +52 -0
  66. data/doc/scripts/mpi/run_mpi_powermethod_rb.html +52 -0
  67. data/doc/scripts/mpi/test_rb.html +52 -0
  68. data/doc/scripts/x10/Makefile.html +106 -0
  69. data/doc/scripts/x10/get_x10_output_rb.html +52 -0
  70. data/doc/scripts/x10/run_x10_kmeans_rb.html +52 -0
  71. data/doc/scripts/x10/run_x10_montypi_rb.html +52 -0
  72. data/doc/scripts/x10/run_x10_nqueens_rb.html +52 -0
  73. data/doc/scripts/x10/run_x10_powermethod_rb.html +52 -0
  74. data/doc/scripts/x10/run_x10_qsort_rb.html +52 -0
  75. data/doc/scripts/x10/test_rb.html +52 -0
  76. data/lib/app_controller_client.rb +135 -0
  77. data/lib/common_functions.rb +107 -0
  78. data/lib/job.rb +161 -0
  79. metadata +145 -0
@@ -0,0 +1,368 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
3
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
4
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
5
+ <head>
6
+ <meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
7
+
8
+ <title>Module: CommonFunctions</title>
9
+
10
+ <link rel="stylesheet" href="./rdoc.css" type="text/css" media="screen" />
11
+
12
+ <script src="./js/jquery.js" type="text/javascript"
13
+ charset="utf-8"></script>
14
+ <script src="./js/thickbox-compressed.js" type="text/javascript"
15
+ charset="utf-8"></script>
16
+ <script src="./js/quicksearch.js" type="text/javascript"
17
+ charset="utf-8"></script>
18
+ <script src="./js/darkfish.js" type="text/javascript"
19
+ charset="utf-8"></script>
20
+
21
+ </head>
22
+ <body class="module">
23
+
24
+ <div id="metadata">
25
+ <div id="home-metadata">
26
+ <div id="home-section" class="section">
27
+ <h3 class="section-header">
28
+ <a href="./index.html">Home</a>
29
+ <a href="./index.html#classes">Classes</a>
30
+ <a href="./index.html#methods">Methods</a>
31
+ </h3>
32
+ </div>
33
+ </div>
34
+
35
+ <div id="file-metadata">
36
+ <div id="file-list-section" class="section">
37
+ <h3 class="section-header">In Files</h3>
38
+ <div class="section-body">
39
+ <ul>
40
+
41
+ <li><a href="./lib/common_functions_rb.html?TB_iframe=true&amp;height=550&amp;width=785"
42
+ class="thickbox" title="lib/common_functions.rb">lib/common_functions.rb</a></li>
43
+
44
+ </ul>
45
+ </div>
46
+ </div>
47
+
48
+
49
+ </div>
50
+
51
+ <div id="class-metadata">
52
+
53
+ <!-- Parent Class -->
54
+
55
+
56
+ <!-- Namespace Contents -->
57
+
58
+
59
+ <!-- Method Quickref -->
60
+
61
+ <div id="method-list-section" class="section">
62
+ <h3 class="section-header">Methods</h3>
63
+ <ul class="link-list">
64
+
65
+ <li><a href="#method-c-get_from_yaml">::get_from_yaml</a></li>
66
+
67
+ <li><a href="#method-c-get_secret_key">::get_secret_key</a></li>
68
+
69
+ <li><a href="#method-c-scp_file">::scp_file</a></li>
70
+
71
+ <li><a href="#method-c-scp_to_shadow">::scp_to_shadow</a></li>
72
+
73
+ </ul>
74
+ </div>
75
+
76
+
77
+ <!-- Included Modules -->
78
+
79
+ </div>
80
+
81
+ <div id="project-metadata">
82
+
83
+
84
+ <div id="fileindex-section" class="section project-section">
85
+ <h3 class="section-header">Files</h3>
86
+ <ul>
87
+
88
+ <li class="file"><a href="./LICENSE.html">LICENSE</a></li>
89
+
90
+ <li class="file"><a href="./README.html">README</a></li>
91
+
92
+ </ul>
93
+ </div>
94
+
95
+
96
+ <div id="classindex-section" class="section project-section">
97
+ <h3 class="section-header">Class/Module Index
98
+ <span class="search-toggle"><img src="./images/find.png"
99
+ height="16" width="16" alt="[+]"
100
+ title="show/hide quicksearch" /></span></h3>
101
+ <form action="#" method="get" accept-charset="utf-8" class="initially-hidden">
102
+ <fieldset>
103
+ <legend>Quicksearch</legend>
104
+ <input type="text" name="quicksearch" value=""
105
+ class="quicksearch-field" />
106
+ </fieldset>
107
+ </form>
108
+
109
+ <ul class="link-list">
110
+
111
+ <li><a href="./AppControllerClient.html">AppControllerClient</a></li>
112
+
113
+ <li><a href="./CommonFunctions.html">CommonFunctions</a></li>
114
+
115
+ <li><a href="./Object.html">Object</a></li>
116
+
117
+ </ul>
118
+ <div id="no-class-search-results" style="display: none;">No matching classes.</div>
119
+ </div>
120
+
121
+
122
+ </div>
123
+ </div>
124
+
125
+ <div id="documentation">
126
+ <h1 class="module">CommonFunctions</h1>
127
+
128
+ <div id="description">
129
+
130
+ <p>A helper module that aggregates functions that are not part of Neptune’s
131
+ core functionality. Specifically, this module contains methods to scp files
132
+ to other machines and the ability to read YAML files, which are often
133
+ needed to determine which machine should be used for computation or to copy
134
+ over code and input files.</p>
135
+
136
+ </div>
137
+
138
+ <!-- Constants -->
139
+
140
+
141
+ <!-- Attributes -->
142
+
143
+
144
+ <!-- Methods -->
145
+
146
+ <div id="public-class-method-details" class="method-section section">
147
+ <h3 class="section-header">Public Class Methods</h3>
148
+
149
+
150
+ <div id="get_from_yaml-method" class="method-detail ">
151
+ <a name="method-c-get_from_yaml"></a>
152
+
153
+
154
+ <div class="method-heading">
155
+ <span class="method-name">get_from_yaml</span><span
156
+ class="method-args">(keyname, tag, required=true)</span>
157
+ <span class="method-click-advice">click to toggle source</span>
158
+ </div>
159
+
160
+
161
+ <div class="method-description">
162
+
163
+ <p>Given the AppScale keyname, reads the associated YAML file and returns the
164
+ contents of the given tag. The required flag (default value is true)
165
+ indicates whether a value must exist for this tag: if set to true, this
166
+ method aborts if the value doesn’t exist or the YAML file is malformed.
167
+ If the required flag is set to false, it returns nil in either scenario
168
+ instead.</p>
169
+
170
+
171
+
172
+ <div class="method-source-code"
173
+ id="get_from_yaml-source">
174
+ <pre>
175
+ <span class="ruby-comment"># File lib/common_functions.rb, line 79</span>
176
+ def self.get_from_yaml(keyname, tag, required=true)
177
+ location_file = <span class="ruby-constant">File</span>.expand_path(&quot;~/.appscale/locations-#{keyname}.yaml&quot;)
178
+
179
+ abort(&quot;An AppScale instance is not currently running with the provided keyname, \&quot;#{keyname}\&quot;.&quot;) unless <span class="ruby-constant">File</span>.exists?(location_file)
180
+
181
+ begin
182
+ tree = <span class="ruby-constant">YAML</span>.load_file(location_file)
183
+ rescue <span class="ruby-constant">ArgumentError</span>
184
+ if required
185
+ abort(<span class="ruby-string">&quot;The yaml file you provided was malformed. Please correct any errors in it and try again.&quot;</span>)
186
+ else
187
+ return nil
188
+ end
189
+ end
190
+
191
+ value = tree[tag]
192
+
193
+ bad_yaml_format_msg = &quot;The file #{location_file} is in the wrong format and doesn't contain a #{tag} tag. Please make sure the file is in the correct format and try again&quot;
194
+ abort(bad_yaml_format_msg) if value.nil? and required
195
+ return value
196
+ end</pre>
197
+ </div>
198
+
199
+ </div>
200
+
201
+
202
+
203
+
204
+ </div>
205
+
206
+
207
+ <div id="get_secret_key-method" class="method-detail ">
208
+ <a name="method-c-get_secret_key"></a>
209
+
210
+
211
+ <div class="method-heading">
212
+ <span class="method-name">get_secret_key</span><span
213
+ class="method-args">(keyname, required=true)</span>
214
+ <span class="method-click-advice">click to toggle source</span>
215
+ </div>
216
+
217
+
218
+ <div class="method-description">
219
+
220
+ <p>Returns the secret key needed for communication with AppScale’s Shadow
221
+ node. This method is a nice frontend to the <a
222
+ href="CommonFunctions.html#method-c-get_from_yaml">get_from_yaml</a>
223
+ function, as the secret is stored in a YAML file.</p>
224
+
225
+
226
+
227
+ <div class="method-source-code"
228
+ id="get_secret_key-source">
229
+ <pre>
230
+ <span class="ruby-comment"># File lib/common_functions.rb, line 104</span>
231
+ def self.get_secret_key(keyname, required=true)
232
+ return <span class="ruby-constant">CommonFunctions</span>.get_from_yaml(keyname, :secret)
233
+ end</pre>
234
+ </div>
235
+
236
+ </div>
237
+
238
+
239
+
240
+
241
+ </div>
242
+
243
+
244
+ <div id="scp_file-method" class="method-detail ">
245
+ <a name="method-c-scp_file"></a>
246
+
247
+
248
+ <div class="method-heading">
249
+ <span class="method-name">scp_file</span><span
250
+ class="method-args">(local_file_loc, remote_file_loc, target_ip, public_key_loc)</span>
251
+ <span class="method-click-advice">click to toggle source</span>
252
+ </div>
253
+
254
+
255
+ <div class="method-description">
256
+
257
+ <p>Performs the actual remote copying of files: given the IP address and other
258
+ information from <a
259
+ href="CommonFunctions.html#method-c-scp_to_shadow">scp_to_shadow</a>,
260
+ attempts to use scp to copy the file over. Aborts if the scp fails, which
261
+ can occur if the network is down, if a bad keyname is provided, or if the
262
+ wrong IP is given.</p>
263
+
264
+
265
+
266
+ <div class="method-source-code"
267
+ id="scp_file-source">
268
+ <pre>
269
+ <span class="ruby-comment"># File lib/common_functions.rb, line 37</span>
270
+ def self.scp_file(local_file_loc, remote_file_loc, target_ip, public_key_loc)
271
+ cmd = <span class="ruby-string">&quot;&quot;</span>
272
+ local_file_loc = <span class="ruby-constant">File</span>.expand_path(local_file_loc)
273
+
274
+ if public_key_loc.class == <span class="ruby-constant">Array</span>
275
+ public_key_loc.each { |key|
276
+ key = <span class="ruby-constant">File</span>.expand_path(key)
277
+ }
278
+
279
+ cmd = &quot;scp -i #{public_key_loc.join(' -i ')} -o StrictHostkeyChecking=no 2&gt;&amp;1 #{local_file_loc} root@#{target_ip}:#{remote_file_loc}&quot;
280
+ else
281
+ public_key_loc = <span class="ruby-constant">File</span>.expand_path(public_key_loc)
282
+ cmd = &quot;scp -i #{public_key_loc} -o StrictHostkeyChecking=no 2&gt;&amp;1 #{local_file_loc} root@#{target_ip}:#{remote_file_loc}&quot;
283
+ end
284
+
285
+ cmd &lt;&lt; <span class="ruby-string">&quot;; echo $? &gt;&gt; ~/.appscale/retval&quot;</span>
286
+
287
+ retval_loc = <span class="ruby-constant">File</span>.expand_path(<span class="ruby-string">&quot;~/.appscale/retval&quot;</span>)
288
+ <span class="ruby-constant">FileUtils</span>.rm_f(retval_loc)
289
+
290
+ begin
291
+ <span class="ruby-constant">Timeout</span>::timeout(-1) { `#{cmd}` }
292
+ rescue <span class="ruby-constant">Timeout</span>::<span class="ruby-constant">Error</span>
293
+ abort(&quot;Remotely copying over files failed. Is the destination machine on and reachable from this computer? We tried the following command:\n\n#{cmd}&quot;)
294
+ end
295
+
296
+ loop {
297
+ break if <span class="ruby-constant">File</span>.exists?(retval_loc)
298
+ sleep(5)
299
+ }
300
+
301
+ retval = (<span class="ruby-constant">File</span>.open(retval_loc) { |f| f.read }).chomp
302
+ abort(&quot;\n\n[#{cmd}] returned #{retval} instead of 0 as expected. Is your environment set up properly?&quot;) if retval != <span class="ruby-string">&quot;0&quot;</span>
303
+ return cmd
304
+ end</pre>
305
+ </div>
306
+
307
+ </div>
308
+
309
+
310
+
311
+
312
+ </div>
313
+
314
+
315
+ <div id="scp_to_shadow-method" class="method-detail ">
316
+ <a name="method-c-scp_to_shadow"></a>
317
+
318
+
319
+ <div class="method-heading">
320
+ <span class="method-name">scp_to_shadow</span><span
321
+ class="method-args">(local_file_loc, remote_file_loc, keyname)</span>
322
+ <span class="method-click-advice">click to toggle source</span>
323
+ </div>
324
+
325
+
326
+ <div class="method-description">
327
+
328
+ <p>Copies a file to the Shadow node (head node) within AppScale. The caller
329
+ specifies the local file location, the destination where the file should be
330
+ placed, and the name of the key to use. The keyname is typically specified
331
+ by the Neptune job given, but defaults to ”appscale” if not provided.</p>
332
+
333
+
334
+
335
+ <div class="method-source-code"
336
+ id="scp_to_shadow-source">
337
+ <pre>
338
+ <span class="ruby-comment"># File lib/common_functions.rb, line 25</span>
339
+ def self.scp_to_shadow(local_file_loc, remote_file_loc, keyname)
340
+ shadow_ip = <span class="ruby-constant">CommonFunctions</span>.get_from_yaml(keyname, :shadow)
341
+ ssh_key = <span class="ruby-constant">File</span>.expand_path(&quot;~/.appscale/#{keyname}.key&quot;)
342
+
343
+ self.scp_file(local_file_loc, remote_file_loc, shadow_ip, ssh_key)
344
+ end</pre>
345
+ </div>
346
+
347
+ </div>
348
+
349
+
350
+
351
+
352
+ </div>
353
+
354
+
355
+ </div>
356
+
357
+
358
+ </div>
359
+
360
+ <div id="validator-badges">
361
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
362
+ <p><small>Generated with the <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish
363
+ Rdoc Generator</a> 2</small>.</p>
364
+ </div>
365
+
366
+ </body>
367
+ </html>
368
+
data/doc/LICENSE.html ADDED
@@ -0,0 +1,131 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
3
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
4
+
5
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
6
+ <head>
7
+ <meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
8
+
9
+ <title>File: LICENSE [RDoc Documentation]</title>
10
+
11
+ <link type="text/css" media="screen" href="./rdoc.css" rel="stylesheet" />
12
+
13
+ <script src="./js/jquery.js" type="text/javascript"
14
+ charset="utf-8"></script>
15
+ <script src="./js/thickbox-compressed.js" type="text/javascript"
16
+ charset="utf-8"></script>
17
+ <script src="./js/quicksearch.js" type="text/javascript"
18
+ charset="utf-8"></script>
19
+ <script src="./js/darkfish.js" type="text/javascript"
20
+ charset="utf-8"></script>
21
+ </head>
22
+
23
+ <body class="file">
24
+ <div id="metadata">
25
+ <div id="home-metadata">
26
+ <div id="home-section" class="section">
27
+ <h3 class="section-header">
28
+ <a href="./index.html">Home</a>
29
+ <a href="./index.html#classes">Classes</a>
30
+ <a href="./index.html#methods">Methods</a>
31
+ </h3>
32
+ </div>
33
+ </div>
34
+
35
+ <div id="project-metadata">
36
+
37
+
38
+ <div id="fileindex-section" class="section project-section">
39
+ <h3 class="section-header">Files</h3>
40
+ <ul>
41
+
42
+ <li class="file"><a href="./LICENSE.html">LICENSE</a></li>
43
+
44
+ <li class="file"><a href="./README.html">README</a></li>
45
+
46
+ </ul>
47
+ </div>
48
+
49
+
50
+ <div id="classindex-section" class="section project-section">
51
+ <h3 class="section-header">Class Index
52
+ <span class="search-toggle"><img src="./images/find.png"
53
+ height="16" width="16" alt="[+]"
54
+ title="show/hide quicksearch" /></span></h3>
55
+ <form action="#" method="get" accept-charset="utf-8" class="initially-hidden">
56
+ <fieldset>
57
+ <legend>Quicksearch</legend>
58
+ <input type="text" name="quicksearch" value=""
59
+ class="quicksearch-field" />
60
+ </fieldset>
61
+ </form>
62
+
63
+ <ul class="link-list">
64
+
65
+ <li><a href="./AppControllerClient.html">AppControllerClient</a></li>
66
+
67
+ <li><a href="./CommonFunctions.html">CommonFunctions</a></li>
68
+
69
+ <li><a href="./Object.html">Object</a></li>
70
+
71
+ </ul>
72
+ <div id="no-class-search-results" style="display: none;">No matching classes.</div>
73
+ </div>
74
+
75
+
76
+ </div>
77
+ </div>
78
+
79
+ <div id="documentation">
80
+
81
+ <h1>begin rdoc</h1>
82
+
83
+ <p>Software License Agreement (BSD License)</p>
84
+
85
+ <p>Copyright © 2008, Regents of the University of California All rights
86
+ reserved.</p>
87
+
88
+ <p>Redistribution and use of this software in source and binary forms, with or
89
+ without modification, are permitted provided that the following conditions
90
+ are met:</p>
91
+ <ul><li>
92
+ <p>Redistributions of source code must retain the above copyright notice, this
93
+ list of conditions and the following disclaimer.</p>
94
+ </li><li>
95
+ <p>Redistributions in binary form must reproduce the above copyright notice,
96
+ this list of conditions and the following disclaimer in the documentation
97
+ and/or other materials provided with the distribution.</p>
98
+ </li></ul>
99
+
100
+ <p>THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS
101
+ IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
102
+ THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
103
+ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
104
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
105
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
106
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
107
+ OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
108
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
109
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
110
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. USERS OF THIS SOFTWARE
111
+ ACKNOWLEDGE THE POSSIBLE PRESENCE OF OTHER OPEN SOURCE LICENSED MATERIAL,
112
+ COPYRIGHTED MATERIAL OR PATENTED MATERIAL IN THIS SOFTWARE, AND IF ANY SUCH
113
+ MATERIAL IS DISCOVERED THE PARTY DISCOVERING IT MAY INFORM DR. CHANDRA
114
+ KRINTZ AT THE UNIVERSITY OF CALIFORNIA, SANTA BARBARA WHO WILL THEN
115
+ ASCERTAIN THE MOST APPROPRIATE REMEDY, WHICH IN THE REGENTS’ DISCRETION
116
+ MAY INCLUDE, WITHOUT LIMITATION, REPLACEMENT OF THE CODE SO IDENTIFIED,
117
+ LICENSING OF THE CODE SO IDENTIFIED, OR WITHDRAWAL OF THE CODE CAPABILITY
118
+ TO THE EXTENT NEEDED TO COMPLY WITH ANY SUCH LICENSES OR RIGHTS.</p>
119
+
120
+ <h1>end</h1>
121
+
122
+ </div>
123
+
124
+ <div id="validator-badges">
125
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
126
+ <p><small>Generated with the <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish
127
+ Rdoc Generator</a> 2</small>.</p>
128
+ </div>
129
+ </body>
130
+ </html>
131
+