changeset 6:2522f70375d5

add bibtex
author Daichi Toma <toma@cr.ie.u-ryukyu.ac.jp>
date Thu, 17 Nov 2011 18:02:24 +0900
parents e284dc62f608
children f12135af6731
files Paper/Makefile Paper/cerium.bib Paper/pic/Mailbox.eps Paper/prosym.tex
diffstat 4 files changed, 1801 insertions(+), 128 deletions(-) [+]
line wrap: on
line diff
--- a/Paper/Makefile	Thu Nov 17 10:29:29 2011 +0900
+++ b/Paper/Makefile	Thu Nov 17 18:02:24 2011 +0900
@@ -3,6 +3,7 @@
 TARGET=prosym
 
 LATEX=platex
+BIBTEX=pbibtex
 DVIPDF=dvipdfmx
 #You need setting "-l" option if You think You get a landscape PDF
 #DVIPDF_OPT=-l
@@ -11,6 +12,8 @@
 
 .tex.dvi:
 	$(LATEX) $<
+	$(BIBTEX) $(TARGET)
+	$(LATEX) $<
 	$(LATEX) $<
 
 .dvi.pdf:
@@ -26,5 +29,5 @@
 
 
 clean:
-	rm -f *.dvi *.aux *.log *.pdf *.ps *.gz *~ *.core
+	rm -f *.dvi *.aux *.log *.pdf *.ps *.gz *.bbl *.blg *~ *.core
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/cerium.bib	Thu Nov 17 18:02:24 2011 +0900
@@ -0,0 +1,290 @@
+@manual{cell_abi,
+author = "{International Business Machines Corporation, Sony Computer Entertainment Incorporated, Toshiba Corporation}",
+title ="{Cell Broadband Engine Linux Reference Implementation Application Binary Interface Specification}",
+year = 2007
+}
+
+@manual{cell_cpp,
+author = "{International Business Machines Corporation, Sony Computer Entertainment Incorporated, Toshiba Corporation}",
+title = "{C/C++ Language Extensions for Cell Broadband Engine Architecture Version 2.6}",
+year = 2008
+}
+
+@misc{osmesa,
+author = "",
+title = "{The Mesa 3D Graphics Library}",
+howpublished = "{http://www.mesa3d.org/}"
+}
+
+@misc{fedora,
+author = "",
+title = "{Fedora Project}",
+howpublished = "{http://fedoraproject.org/}"
+}
+
+@misc{ydl,
+author = "",
+title = "{Yellow Dog Linux for PowerPC Computers}",
+howpublished = "{http://us.fixstars.com/products/ydl/}"
+}
+
+@book{amdahl,
+author = "{Brian Goetz, Tim Peierls, Joshua Bloch, Joseph Bowbeer, David Holmes, and Doug Lea}",
+title = "{Java Concurrency in Prac-tice}",
+publisher = "{Addison-Wesley Professional}",
+year = "2005"
+}
+
+@misc{cerium,
+author = "",
+title = "{SourceForge.JP: Cerium Rendering Engine}",
+howpublished = "{https//sourceforge.jp/projects/cerium/}"
+}
+
+@misc{spurs,
+author = "{Keisuke Inoue}",
+title = "{SPU Centric Execution Model}",
+text = "SACSIS 2006",
+year = 2006
+}
+
+@manual{cell,
+author = "{Sony Corporation}",
+title = "{Cell BroadbandEngine \texttrademark アーキテクチャ}",
+year = 2006
+}
+
+@manual{cell_sdk,
+author = "{International Business Machines Corporation}",
+title = "{Software Development Kit for Multicore Acceleration Version 3.1}",
+year = 2008
+}
+
+@manual{libspe2,
+author = "{International Business Machines Corporation, Sony Computer Entertainment Incorporated, Toshiba Corporation}",
+title = "{SPE Runtime Management Library Version 2.3}",
+year = 2008
+}
+
+
+@misc{blender,
+title = "{blender.org}",
+howpublished = "{http://blender.org/}"
+}
+
+@article{spufs,
+author = "{Toshiyuki SANUKI}",
+title = "{Cell Broadband Engine \texttrademark を用いたブレード・サーバーの設計と実装}",
+journal = "{IBM PROVISION No.48}",
+year = 2006
+}
+
+@misc{sdl,
+author = "",
+title = "{Simple DirectMedia Layer}",
+howpublished = "{http://www.libsdl.org/}"
+}
+
+@misc{sdl_image,
+author = "",
+title = "{SDL\_image}",
+howpublished = "{http://www.libsdl.org/projects/SDL\_image/}"
+}
+
+@manual{opencl,
+author = "{Aaftab Munshi, Khronos OpenCL Working Group}",
+title ="{The OpenCL Specification Version 1.0}",
+year = 2007
+}
+
+@misc{gallium,
+author = "",
+title = "{Gallium3D}",
+howpublished = "{http://www.tungstengraphics.com/wiki/index.php/Gallium3D}"
+}
+
+@inproceedings{cellbe-overview-conference,
+author = {Pham, D. and Asano, S. and Bolliger, M.and Day, M. N. and Hofstee, H. P. and Johns, C. and Kahle, J. and Kameyama, A. and Keaty, J. and Masubuchi, Y. and Riley, M. and Shippy, D. and Stasiak, D. and Suzuoki, M. and Wang, M. and Warnock, J. and Weitzel, S. and Wendel, D. and Yamazaki, T. and Yazawa, K. },
+booktitle = {Solid-State Circuits Conference, 2005. Digest of Technical Papers. ISSCC. 2005 IEEE International},
+pages = {184--592 Vol. 1},
+title = {The design and implementation of a first-generation CELL processor},
+year = {2005}
+}
+
+@INPROCEEDINGS{KOKKEVIS06high-performancephysics,
+author = {V KOKKEVIS and S OSMAN and E L},
+title = {High-performance physics solver design for next generation consoles},
+booktitle = {In Game Developers Conference},
+year = {2006}
+}
+
+@misc{Cellteto,
+author = "{Williams, J. Carter, L. Oliker, J. Shalf, K. Yelick}",
+title = "{3D Lattice Boltzmann Magneto-hydrodynamics (LBMHD3D)}",
+howpublished = "{UTK Summit on Software and Algorithms for the Cell Processor}",
+year = {2006}
+}
+
+@inproceedings{cellbe-spe-overview-conference,
+uthor = {Flachs, B.  and Asano, S.  and Dhong, S. H.  and Hotstee, P.  and Gervais, G.  and Kim, R.  and Le, T.  and Liu, P.  and Leenstra, J.  and Liberty, J.  and Michael, B.  and Oh, H.  and Mueller, S. M.  and Takahashi, O.  and Hatakeyama, A.  and Watanabe, Y.  and Yano, N. },
+journal = {Solid-State Circuits Conference, 2005. Digest of Technical Papers. ISSCC. 2005 IEEE International},
+pages = {134--135 Vol. 1},
+title = {A streaming processing unit for a CELL processor},
+year = {2005}
+}
+
+@article{Cellteto2,
+  author = {A. E. Eichenberger},
+  title =  {Using advanced compiler technology to exploit the performance of the Cell Broadband Engine \texttrademark architecture},
+  journal = {IBM System Journal Vol 45, No.1},
+  year =  {2006},
+}
+
+
+@INPROCEEDINGS{Benthin06raytracing,
+    author = {Carsten Benthin and Ingo Wald and Michael Scherbaum and Heiko Friedrich},
+    title = {Ray Tracing on the CELL Processor},
+    booktitle = {In Proceedings of the 2006 IEEE Symposium on Interactive Ray Tracing},
+    year = {2006},
+    pages = {15--23}
+}
+
+@inproceedings{citeulike:1905188,
+author = {Blagojevic, Filip   and Nikolopoulos, Dimitris  S.  and Stamatakis, Alexandros   and Antonopoulos, Christos  D. },
+booktitle = {PPoPP '07: Proceedings of the 12th ACM SIGPLAN symposium on Principles and practice of parallel programming},
+pages = {90--100},
+publisher = {ACM},
+title = {Dynamic multigrain parallelization on the cell broadband engine},
+year = {2007}
+}
+
+@article{DBLP:journals/cphysics/Fabritiis07,
+  author    = {G. De Fabritiis},
+  title     = {Performance of the Cell processor for biomolecular simulations},
+  journal   = {Computer Physics Communications},
+  volume    = {176},
+  number    = {11-12},
+  year      = {2007},
+  pages     = {660-664},
+  ee        = {http://dx.doi.org/10.1016/j.cpc.2007.02.107},
+  bibsource = {DBLP, http://dblp.uni-trier.de}
+}
+
+@article{1272431,
+ author = {Kurzak,, Jakub and Dongarra,, Jack},
+ title = {Implementation of mixed precision in solving systems of linear equations on the Cell processor: Research Articles},
+ journal = {Concurr. Comput. : Pract. Exper.},
+ volume = {19},
+ number = {10},
+ year = {2007},
+ issn = {1532-0626},
+ pages = {1371--1385},
+ publisher = {John Wiley and Sons Ltd.},
+}
+
+@inproceedings{1128027,
+ author = {Williams,, Samuel and Shalf,, John and Oliker,, Leonid and Kamil,, Shoaib and Husbands,, Parry and Yelick,, Katherine},
+ title = {The potential of the cell processor for scientific computing},
+ booktitle = {CF '06: Proceedings of the 3rd conference on Computing frontiers},
+ year = {2006},
+ isbn = {1-59593-302-6},
+ pages = {9--20},
+ publisher = {ACM}
+}
+@Comment LocalWords:  SACSIS BroadbandEngine sdk Multicore
+
+@article{kono_list1,
+author = "{河野真治}",
+title = "{検証を自身で表現できるハードウェア、ソフトウェア記述言語 Continuation based C と、そのCell への応用}",
+journal = "{電子情報通信学会VLSI設計技術研究会}",
+month = "{March}",
+year = 2008
+}
+
+@article{kono_list2,
+author = "{神里晃 and 宮國渡 and 杉山千秋 and 河野真治}",
+title = "{CからCellアーキテクチャを利用したCbCへの変換}",
+journal = "{電子情報通信学会VLSI設計技術研究会}",
+month = "{March}",
+year = 2008
+}
+
+@article{kono_list3,
+author = "{神里晃 and 河野真治}",
+title = "{Continuation based CによるPS3 Cell のシミュレーション}",
+journal = "{情報処理学会システムソフトウェアとオペレーティング・システム研究会}",
+month = "{May}",
+year = 2006
+}
+
+@article{akira,
+author = "{Akira KAMIZATO}",
+title = "{Cell を用いたゲームフレームワークの提案}",
+journal = "{琉球大学理工学研究科情報工学専攻 平成19年度学位論文}",
+year = 2008
+}
+
+
+@article{gongo2,
+author = "{宮國渡}",
+title = "{Cell用の Fine-Grain Task Manager の実装}",
+journal = "{琉球大学理工学研究科情報工学専攻 平成20年度学位論文}",
+month = "{Feb}",
+year = 2009
+}
+
+@article{gongo:2008:os,
+author = "宮國渡 and 河野真治 and 神里 晃 and 杉山 千秋",
+title = "Cell 用の Fine-grain Task Manager の実装",
+journal = "情報処理学会 システムソフトウェアとオペレーティング・システム研究会",
+month = "April",
+year = 2008
+}
+
+@article{chiaki:thesis,
+author = "{Chiaki SUGIYAMA}",
+title = "{SceneGraph と StatePattern を用いたゲームフレームワークの設計と実装}",
+journal = "{琉球大学工学部情報工学科 平成19年度卒業論文}",
+year = 2008
+}
+
+@article{akamine,
+author = "{赤嶺一樹 and 河野真治}",
+title = "{Meta Engine を用いた Federated Linda の実験}",
+journal = "{日本ソフトウェア科学会第 27 会大会(2010 年度)}",
+month = "{Sep}",
+year = 2010
+}
+
+@mastersthesis{kaito:master,
+	author = "多賀野海人",
+	title = "Cell Task Manager Cerium における Task を用いたパイプラインの改良",
+	school = "琉球大学理工学研究科情報工学専攻",
+	month = "Feb",
+	year = 2011
+}
+
+
+@article{yutaka:2010:jssst,
+author = "{金城裕 and 河野真治}",
+title = "{Fine Grain Task Manager Cerium  のチューニング}",
+journal = "{日本ソフトウェア科学会第 27 会大会(2010 年度)}",
+month = "{Sep}",
+year = 2010
+}
+
+@article{yutaka:2011:os,
+author = "{金城裕 and 河野真治}",
+title = "{ゲームフレームワーク Cerium TaskManager の改良}",
+journal = "{情報処理学会システムソフトウェアとオペレーティング・システム研究会}",
+month = "{Apr}",
+year = 2011
+}
+
+@article{yutaka:2011:jssst,
+author = "{金城裕 and 河野真治}",
+title = "{Cerium におけるDataSegment APIの設計}",
+journal = "{日本ソフトウェア科学会第 27 会大会(2010 年度)}",
+month = "{Sep}",
+year = 2011
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/pic/Mailbox.eps	Thu Nov 17 18:02:24 2011 +0900
@@ -0,0 +1,1431 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%HiResBoundingBox: 0.000000 0.000000 496.000000 325.000000
+%APL_DSC_Encoding: UTF8
+%APLProducer: (Version 10.7.2 (Build 11C74) Quartz PS Context)
+%%Title: (Unknown)
+%%Creator: (Unknown)
+%%CreationDate: (Unknown)
+%%For: (Unknown)
+%%DocumentData: Clean7Bit
+%%LanguageLevel: 2
+%%Pages: 1
+%%BoundingBox: 0 0 496 325
+%%EndComments
+%%BeginProlog
+%%BeginFile: cg-pdf.ps
+%%Copyright: Copyright 2000-2004 Apple Computer Incorporated.
+%%Copyright: All Rights Reserved.
+currentpacking true setpacking
+/cg_md 141 dict def
+cg_md begin
+/L3? languagelevel 3 ge def
+/bd{bind def}bind def
+/ld{load def}bd
+/xs{exch store}bd
+/xd{exch def}bd
+/cmmtx matrix def
+mark
+/sc/setcolor
+/scs/setcolorspace
+/dr/defineresource
+/fr/findresource
+/T/true
+/F/false
+/d/setdash
+/w/setlinewidth
+/J/setlinecap
+/j/setlinejoin
+/M/setmiterlimit
+/i/setflat
+/rc/rectclip
+/rf/rectfill
+/rs/rectstroke
+/f/fill
+/f*/eofill
+/sf/selectfont
+/s/show
+/xS/xshow
+/yS/yshow
+/xyS/xyshow
+/S/stroke
+/m/moveto
+/l/lineto
+/c/curveto
+/h/closepath
+/n/newpath
+/q/gsave
+/Q/grestore
+counttomark 2 idiv
+{ld}repeat pop
+/SC{	
+    /ColorSpace fr scs
+}bd
+/sopr /setoverprint where{pop/setoverprint}{/pop}ifelse ld
+/soprm /setoverprintmode where{pop/setoverprintmode}{/pop}ifelse ld
+/cgmtx matrix def
+/sdmtx{cgmtx currentmatrix pop}bd
+/CM {cgmtx setmatrix}bd		
+/cm {cmmtx astore CM concat}bd	
+/W{clip newpath}bd
+/W*{eoclip newpath}bd
+statusdict begin product end dup (HP) anchorsearch{
+    pop pop pop	
+    true
+}{
+    pop	
+   (hp) anchorsearch{
+	pop pop true
+    }{
+	pop false
+    }ifelse
+}ifelse
+{	
+    { 
+	{ 
+	    pop pop 
+	    (0)dup 0 4 -1 roll put
+	    F charpath
+	}cshow
+    }
+}{
+    {F charpath}
+}ifelse
+/cply exch bd
+/cps {cply stroke}bd
+/pgsave 0 def
+/bp{/pgsave save store}bd
+/ep{pgsave restore showpage}def		
+/re{4 2 roll m 1 index 0 rlineto 0 exch rlineto neg 0 rlineto h}bd
+/scrdict 10 dict def
+/scrmtx matrix def
+/patarray 0 def
+/createpat{patarray 3 1 roll put}bd
+/makepat{
+scrmtx astore pop
+gsave
+initgraphics
+CM 
+patarray exch get
+scrmtx
+makepattern
+grestore
+setpattern
+}bd
+/cg_BeginEPSF{
+    userdict save/cg_b4_Inc_state exch put
+    userdict/cg_endepsf/cg_EndEPSF load put
+    count userdict/cg_op_count 3 -1 roll put 
+    countdictstack dup array dictstack userdict/cg_dict_array 3 -1 roll put
+    3 sub{end}repeat
+    /showpage {} def
+    0 setgray 0 setlinecap 1 setlinewidth 0 setlinejoin
+    10 setmiterlimit [] 0 setdash newpath
+    false setstrokeadjust false setoverprint	
+}bd
+/cg_EndEPSF{
+  countdictstack 3 sub { end } repeat
+  cg_dict_array 3 1 index length 3 sub getinterval
+  {begin}forall
+  count userdict/cg_op_count get sub{pop}repeat
+  userdict/cg_b4_Inc_state get restore
+  F setpacking
+}bd
+/cg_biproc{currentfile/RunLengthDecode filter}bd
+/cg_aiproc{currentfile/ASCII85Decode filter/RunLengthDecode filter}bd
+/ImageDataSource 0 def
+L3?{
+    /cg_mibiproc{pop pop/ImageDataSource{cg_biproc}def}bd
+    /cg_miaiproc{pop pop/ImageDataSource{cg_aiproc}def}bd
+}{
+    /ImageBandMask 0 def
+    /ImageBandData 0 def
+    /cg_mibiproc{
+	string/ImageBandMask xs
+	string/ImageBandData xs
+	/ImageDataSource{[currentfile/RunLengthDecode filter dup ImageBandMask/readstring cvx
+	    /pop cvx dup ImageBandData/readstring cvx/pop cvx]cvx bind}bd
+    }bd
+    /cg_miaiproc{	
+	string/ImageBandMask xs
+	string/ImageBandData xs
+	/ImageDataSource{[currentfile/ASCII85Decode filter/RunLengthDecode filter
+	    dup ImageBandMask/readstring cvx
+	    /pop cvx dup ImageBandData/readstring cvx/pop cvx]cvx bind}bd
+    }bd
+}ifelse
+/imsave 0 def
+/BI{save/imsave xd mark}bd
+/EI{imsave restore}bd
+/ID{
+counttomark 2 idiv
+dup 2 add	
+dict begin
+{def} repeat
+pop		
+/ImageType 1 def
+/ImageMatrix[Width 0 0 Height neg 0 Height]def
+currentdict dup/ImageMask known{ImageMask}{F}ifelse exch
+L3?{
+    dup/MaskedImage known
+    { 
+	pop
+	<<
+	    /ImageType 3
+	    /InterleaveType 2
+	    /DataDict currentdict
+	    /MaskDict
+	    <<  /ImageType 1
+		/Width Width
+		/Height Height
+		/ImageMatrix ImageMatrix
+		/BitsPerComponent 1
+		/Decode [0 1]
+		currentdict/Interpolate known
+		{/Interpolate Interpolate}if
+	    >>
+	>>
+    }if
+}if
+exch
+{imagemask}{image}ifelse	
+end	
+}bd
+/cguidfix{statusdict begin mark version end
+{cvr}stopped{cleartomark 0}{exch pop}ifelse
+2012 lt{dup findfont dup length dict begin
+{1 index/FID ne 2 index/UniqueID ne and
+{def} {pop pop} ifelse}forall
+currentdict end definefont pop
+}{pop}ifelse
+}bd
+/t_array 0 def
+/t_i 0 def
+/t_c 1 string def
+/x_proc{ 
+    exch t_array t_i get add exch moveto
+    /t_i t_i 1 add store
+}bd
+/y_proc{ 
+    t_array t_i get add moveto
+    /t_i t_i 1 add store
+}bd
+/xy_proc{
+        
+	t_array t_i 2 copy 1 add get 3 1 roll get 
+	4 -1 roll add 3 1 roll add moveto
+	/t_i t_i 2 add store
+}bd
+/sop 0 def		
+/cp_proc/x_proc ld 	
+/base_charpath		
+{
+    /t_array xs
+    /t_i 0 def
+    { 
+	t_c 0 3 -1 roll put
+        currentpoint
+	t_c cply sop
+        cp_proc
+    }forall
+    /t_array 0 def
+}bd
+/sop/stroke ld		
+/nop{}def
+/xsp/base_charpath ld
+/ysp{/cp_proc/y_proc ld base_charpath/cp_proc/x_proc ld}bd
+/xysp{/cp_proc/xy_proc ld base_charpath/cp_proc/x_proc ld}bd
+/xmp{/sop/nop ld /cp_proc/x_proc ld base_charpath/sop/stroke ld}bd
+/ymp{/sop/nop ld /cp_proc/y_proc ld base_charpath/sop/stroke ld}bd
+/xymp{/sop/nop ld /cp_proc/xy_proc ld base_charpath/sop/stroke ld}bd
+/refnt{ 
+findfont dup length dict copy dup
+/Encoding 4 -1 roll put 
+definefont pop
+}bd
+/renmfont{ 
+findfont dup length dict copy definefont pop
+}bd
+L3? dup dup{save exch}if
+/Range 0 def
+/DataSource 0 def
+/val 0 def
+/nRange 0 def
+/mulRange 0 def
+/d0 0 def
+/r0 0 def
+/di 0 def
+/ri 0 def
+/a0 0 def
+/a1 0 def
+/r1 0 def
+/r2 0 def
+/dx 0 def
+/Nsteps 0 def
+/sh3tp 0 def
+/ymax 0 def
+/ymin 0 def
+/xmax 0 def
+/xmin 0 def
+/setupFunEval 
+{
+    begin
+	/nRange Range length 2 idiv store
+	/mulRange   
+		    
+	[ 
+	    0 1 nRange 1 sub
+	    { 
+		    2 mul/nDim2 xd		
+		    Range nDim2 get		
+		    Range nDim2 1 add get	
+		    1 index sub			
+						
+		    255 div			
+		    exch			
+	    }for
+	]store
+    end
+}bd
+/FunEval 
+{
+    begin
+	
+	nRange mul /val xd	
+				
+	0 1 nRange 1 sub
+	{
+	    dup 2 mul/nDim2 xd 
+	    val	
+	    add DataSource exch get 
+	    mulRange nDim2 get mul 	
+	    mulRange nDim2 1 add get 
+	    add 
+	}for	
+    end
+}bd
+/max 
+{
+	2 copy lt
+	{exch pop}{pop}ifelse
+}bd
+/sh2
+{	
+	/Coords load aload pop 	
+	3 index 3 index translate	
+					
+	3 -1 roll sub	
+	3 1 roll exch 	
+	sub				
+	2 copy
+	dup mul exch dup mul add sqrt	
+	dup
+	scale  
+	atan	
+	
+	rotate		
+	
+	/Function load setupFunEval	
+	
+	
+	clippath {pathbbox}stopped {0 0 0 0}if newpath 	
+	/ymax xs
+	/xmax xs
+	/ymin xs
+	/xmin xs
+	currentdict/Extend known
+	{
+		/Extend load 0 get
+		{	
+			0/Function load FunEval sc	
+			xmin ymin xmin abs ymax ymin sub rectfill
+		}if
+	}if
+	
+	/Nsteps/Function load/Size get 0 get 1 sub store
+	/dx 1 Nsteps div store
+	gsave
+		/di ymax ymin sub store
+		/Function load
+		
+		0 1 Nsteps
+		{
+			1 index FunEval sc
+			0 ymin dx di rectfill
+			dx 0 translate
+		}for
+		pop	
+	grestore	
+	currentdict/Extend known
+	{
+		/Extend load 1 get
+		{	
+			Nsteps/Function load FunEval sc	
+			1 ymin xmax 1 sub abs ymax ymin sub rectfill
+		}if
+	}if
+}bd
+/shp	
+{	
+	4 copy
+	
+	dup 0 gt{
+		0 exch a1 a0 arc
+	}{
+		pop 0 moveto
+	}ifelse
+	dup 0 gt{
+		0 exch a0 a1 arcn
+	}{
+		pop 0 lineto
+	}ifelse
+	
+	fill
+	
+	dup 0 gt{
+		0 exch a0 a1 arc
+	}{
+		pop 0 moveto
+	}ifelse
+	dup 0 gt{
+		0 exch a1 a0 arcn
+	}{
+		pop 0 lineto
+	}ifelse
+	
+	fill
+}bd
+/calcmaxs
+{	
+	
+	xmin dup mul ymin dup mul add sqrt		
+	xmax dup mul ymin dup mul add sqrt		
+	xmin dup mul ymax dup mul add sqrt		
+	xmax dup mul ymax dup mul add sqrt		
+	max max max								
+}bd
+/sh3
+{	
+	/Coords load aload pop 	
+	5 index 5 index translate	
+	3 -1 roll 6 -1 roll sub		
+	3 -1 roll 5 -1 roll sub		
+	2 copy dup mul exch dup mul add sqrt
+	/dx xs						
+	2 copy 0 ne exch 0 ne or
+	{
+		
+		exch atan rotate	
+	}{
+		pop pop
+	}ifelse
+	
+	/r2 xs
+	/r1 xs
+	/Function load 
+	dup/Size get 0 get 1 sub	
+	/Nsteps xs		
+	setupFunEval		
+	
+	
+	
+	
+	
+	dx r2 add r1 lt{
+		
+		0 
+	}{
+		dx r1 add r2 le
+		{ 
+			1
+		}{ 
+			r1 r2 eq
+			{	
+				2
+			}{ 
+				3
+			}ifelse		
+		}ifelse
+	}ifelse
+	/sh3tp xs		
+	clippath {pathbbox}stopped {0 0 0 0}if 
+	newpath 	
+	/ymax xs
+	/xmax xs
+	/ymin xs
+	/xmin xs
+	
+	dx dup mul r2 r1 sub dup mul sub dup 0 gt
+	{
+		sqrt r2 r1 sub atan
+		/a0 exch 180 exch sub store 
+		/a1 a0 neg store 
+	}{
+		pop
+		/a0 0 store
+		/a1 360 store		
+	}ifelse		
+	currentdict/Extend known
+	{
+		/Extend load 0 get r1 0 gt and	
+		{	
+			0/Function load FunEval sc	
+			
+			
+			
+			
+			{ 
+				{	
+					dx 0 r1 360 0 arcn
+					xmin ymin moveto
+					xmax ymin lineto
+					xmax ymax lineto
+					xmin ymax lineto
+					xmin ymin lineto
+					eofill		
+				}
+				{	
+					r1 0 gt{0 0 r1 0 360 arc fill}if
+				}
+				{	
+					
+					
+				
+					
+					0 r1 xmin abs r1 add neg r1 shp
+				}
+				{	
+					
+				
+					r2 r1 gt{	
+						
+						0 r1
+						r1 neg r2 r1 sub div dx mul	
+						0	
+						shp	
+					}{	
+						
+						
+						
+						0 r1 calcmaxs	
+						dup
+						
+						r2 add dx mul dx r1 r2 sub sub div
+						neg				
+						exch 1 index	
+						abs exch sub
+						shp
+					}ifelse
+				} 
+			}sh3tp get exec	
+		}if
+	}if
+	
+	/d0 0 store
+	/r0 r1 store
+	/di dx Nsteps div store
+	/ri r2 r1 sub Nsteps div store 
+	/Function load 
+	0 1 Nsteps
+	{	
+		1 index FunEval sc
+		d0 di add r0 ri add d0 r0 shp
+		{
+		
+		d0 0 r0 a1 a0 arc
+		d0 di add 0 r0 ri add a0 a1 arcn
+		fill
+		
+		
+		d0 0 r0 a0 a1 arc
+		d0 di add 0 r0 ri add a1 a0 arcn
+		fill
+		}pop
+		
+		
+		/d0 d0 di add store
+		/r0 r0 ri add store
+	}for
+	pop	
+	
+	currentdict/Extend known
+	{
+		/Extend load 1 get r2 0 gt and	
+		{	
+			Nsteps/Function load FunEval sc	
+			
+			
+			
+			
+			{ 
+				{
+					dx 0 r2 0 360 arc fill
+				} 
+				{
+					dx 0 r2 360 0 arcn
+					xmin ymin moveto
+					xmax ymin lineto
+					xmax ymax lineto
+					xmin ymax lineto
+					xmin ymin lineto
+					eofill		
+				} 
+				{	
+					
+					
+					xmax abs r1 add r1 dx r1 shp
+				}	
+				{	
+			
+					r2 r1 gt{
+						
+						
+						
+						calcmaxs dup	
+						
+						r1 add dx mul dx r2 r1 sub sub div	
+						exch 1 index	
+						exch sub
+						dx r2
+						shp
+					}{	
+						
+						r1 neg r2 r1 sub div dx mul	
+						0		
+						dx 		
+						r2		
+						shp
+					}ifelse
+				}
+			}			
+			sh3tp get exec	
+		}if
+	}if
+}bd
+/sh		
+{	
+	begin
+		/ShadingType load dup dup 2 eq exch 3 eq or
+		{	
+			gsave
+				newpath
+				/ColorSpace load scs
+				currentdict/BBox known
+				{
+					/BBox load aload pop	
+					2 index sub				
+					3 index					
+					3 -1 roll exch sub 
+					exch rectclip
+				}if
+				2 eq
+				{sh2}{sh3}ifelse
+			grestore
+		}{
+			
+			pop 
+			(DEBUG: shading type unimplemented\n)print flush
+		}ifelse
+	end
+}bd
+{restore}if not dup{save exch}if
+	L3?{	
+		/sh/shfill ld
+		/csq/clipsave ld
+		/csQ/cliprestore ld
+	}if
+{restore}if
+end
+setpacking
+%%EndFile
+%%EndProlog
+%%BeginSetup
+%%EndSetup
+%%Page: 1 1
+%%PageBoundingBox: 0 0 496 325
+%%BeginPageSetup
+cg_md begin
+bp
+sdmtx
+%RBIBeginFontSubset: Helvetica
+%!FontType1-1.0: Helvetica 1.0000.0.0000
+
14 dict begin/FontName /Helvetica def
+
/PaintType 0 def
+
/Encoding 256 array 0 1 255{1 index exch/.notdef put}for
+
dup 33 /S put
+
dup 34 /P put
+
dup 35 /E put
+
dup 36 /U put
+
dup 37 /M put
+
dup 38 /F put
+
dup 39 /C put
+
dup 40 /I put
+
dup 41 /n put
+
dup 42 /b put
+
dup 43 /o put
+
dup 44 /u put
+
dup 45 /d put
+
dup 46 /space put
+
dup 47 /a put
+
dup 48 /i put
+
dup 49 /l put
+
dup 50 /x put
+
dup 51 /O put
+
dup 52 /t put
+
dup 53 /e put
+
dup 54 /r put
+
dup 55 /p put
+
dup 56 /c put
+
dup 57 /h put
+
dup 58 /B put
+
readonly def
+
42/FontType resourcestatus{pop pop false}{true}ifelse
+
%APLsfntBegin
+
{currentfile 0(%APLsfntEnd\n)/SubFileDecode filter flushfile}if
+
/FontType 42 def
+
/FontMatrix matrix def
+
/FontBBox[2048 -1947 1 index div -985 2 index div 2961 3 index div 2297 5 -1 roll div]cvx def
+
/sfnts [<
+
74727565000900000000000063767420000000000000009C0000036C6670676D000000000000040800000A1D676C79660000000000000E280000148C6865616400000000000022B4000000366868656100000000000022EC00000024686D747800000000000023100000006C6C6F6361000000000000237C000000386D61787000000000000023B4000000207072657000000000000023D4000003CF05C0001005BD00280580001A042F001F0000FFD90000FFDA0000FFD9FE55FFE605C70010FE6DFFF1033B000000B9000000B902FE3F3C00C0008D009B00AF000600A800C00028005E009800C9016A00B9015C00B400D6011E002E0080000400B8004C00CC01FFFFD1006600A400AF007400C2009500B1000C0028006D0015004C008E0125FF7A000C0040004C00620084FFA200240038008600BD0039005E008E00EDFFA9FFB300400052005500AA00AB00C200CB012302B10413FFAEFFE4000800510074008400AA00D1FF4CFFAF0012002C004200500051008400BE012503DAFF680018003B0098009C009F00A100C100EC018201B4FF68FF76FFD0FFE100020018001C00530053007D01B401E103AF0486FF9CFFEAFFFE001F0028002A00520060009300A300AA00AF00AF00C001000145016B0174019301950240028202B404850517FEFD00060029004700470048006F008800B400B900C400F200F901EF02180310037403C5FF35FFF3000B004B004C0052005500650076007600870087008E00AB00BB0106013001430150017D0194019501D3022A025502580277027802E6034E035C037903D3047304B2058C0598060BFEF5FFBBFFC7FFD50017001D005B0072007E009C00C200D000F400FA01030106011C0125013B0142015E015E0180019B02B901A101B9025001C001D002AA01DF01E301EF01FB0205020C0215022B0274029302AB02C202CE03690395039903DF03F5043E050205A105E5062507DBFE62FE89FECEFF3BFFE1FFF800030008002100390042004E005F0061006F00700034007F008E00AD00AD00AF00BD00C400C500C900C900C900E3011C00ED00F800F901000112011A0132014D014D014E014F01660169019E01BA01BA01BE01E301EF01F602000200020902110217021C02530262026D028002D50280031B032A034A035A03AF03AF03C803D603FB03FB04050413041504470449008C046D049A049A04A604A804B204CF0539053E054E055605800589058C036305D105D6067E068E06B206EF06F00728074C076F078C00B400C900C000C10000000000000000000000000004012400AF0032006E0063014401620096014301A10161008A00740064018801EF01700028FF5D037E0347023000AA00BE007B0062009A007D0089035C00A1FFD803AA00D70093006C0000008000A70442001D0597001D00820030002A
+
002A002A002A002A40292A292827262524232221201F1E1D1C1B1A191817161514131211100D0C0B0A090807060504030201002C4523466020B02660B004262348482D2C452346236120B02661B004262348482D2C45234660B0206120B04660B004262348482D2C4523462361B0206020B02661B02061B004262348482D2C45234660B0406120B06660B004262348482D2C4523462361B0406020B02661B04061B004262348482D2C0110203C003C2D2C20452320B0CD442320B8015A51582320B08D44235920B0ED51582320B04D44235920B09051582320B00D44235921212D2C20204518684420B001602045B04676688A4560442D2C01B9400000000A2D2C00B9000040000B2D2C2045B00043617D6818B0004360442D2C45B01A234445B01923442D2C2045B00325456164B050515845441B2121592D2C20B0032552582359212D2C69B04061B0008B0C6423648BB8400062600C642364615C58B0036159B002602D2C45B0112BB0172344B0177AE5182D2C45B0112BB01723442D2C45B0112BB017458CB0172344B0177AE5182D2CB002254661658A46B040608B482D2CB0022546608A46B040618C482D2C4B53205C58B002855958B00185592D2C20B0032545B019236A4445B01A23444565234520B00325606A20B009234223688A6A606120B0005258B21A401A4523614459B0005058B219401945236144592D2CB9187E3B210B2D2CB92D412D410B2D2CB93B21187E0B2D2CB93B21E7830B2D2CB92D41D2C00B2D2CB9187EC4E00B2D2C4B525845441B2121592D2C0120B003252349B04060B0206320B000525823B002253823B002256538008A63381B212121212159012D2C456920B00943B0022660B00325B005254961B0805358B21940194523616844B21A401A4523606A44B209191A45652345604259B00943608A103A2D2C01B005251023208AF500B0016023EDEC2D2C01B005251023208AF500B0016123EDEC2D2C01B0062510F500EDEC2D2C20B001600110203C003C2D2C20B001610110203C003C2D2C764520B003254523616818236860442D2C7645B00325452361682318456860442D2C7645B0032545616823452361442D2C4569B014B0324B505821B0205961442DB8002B2C4BB800095058B101018E59B801FF85B800441DB9000900035F5E2DB8002C2C2020456944B001602DB8002D2CB8002C2A212DB8002E2C2046B003254652582359208A208A49648A204620686164B004254620686164525823658A592F20B00053586920B000545821B040591B6920B000545821B0406559593A2DB8002F2C2046B00425465258238A592046206A6164B0042546206A61645258238A592FFD2DB800302C4B20B0032650585158B080441BB04044591B21212045B0C05058B0C0441B2159592DB800312C2020456944B0016020
+
20457D691844B001602DB800322CB800312A2DB800332C4B20B003265358B0801BB040598A8A20B0032653582321B0C08A8A1B8A235920B0032653582321B801008A8A1B8A235920B0032653582321B801408A8A1B8A235920B80003265358B0032545B8018050582321B8018023211BB003254523212321591B2159442DB800342C4B535845441B2121592DB800352C4BB800095058B101018E59B801FF85B800441DB9000900035F5E2DB800362C2020456944B001602DB800372CB800362A212DB800382C2046B003254652582359208A208A49648A204620686164B004254620686164525823658A592F20B00053586920B000545821B040591B6920B000545821B0406559593A2DB800392C2046B00425465258238A592046206A6164B0042546206A61645258238A592FFD2DB8003A2C4B20B0032650585158B080441BB04044591B21212045B0C05058B0C0441B2159592DB8003B2C2020456944B001602020457D691844B001602DB8003C2CB8003B2A2DB8003D2C4B20B003265358B0801BB040598A8A20B0032653582321B0C08A8A1B8A235920B0032653582321B801008A8A1B8A235920B0032653582321B801408A8A1B8A235920B80003265358B0032545B8018050582321B8018023211BB003254523212321591B2159442DB8003E2C4B535845441B2121592DB8003F2C4BB800095058B101018E59B801FF85B800441DB9000900035F5E2DB800402C2020456944B001602DB800412CB800402A212DB800422C2046B003254652582359208A208A49648A204620686164B004254620686164525823658A592F20B00053586920B000545821B040591B6920B000545821B0406559593A2DB800432C2046B00425465258238A592046206A6164B0042546206A61645258238A592FFD2DB800442C4B20B0032650585158B080441BB04044591B21212045B0C05058B0C0441B2159592DB800452C2020456944B001602020457D691844B001602DB800462CB800452A2DB800472C4B20B003265358B0801BB040598A8A20B0032653582321B0C08A8A1B8A235920B0032653582321B801008A8A1B8A235920B0032653582321B801408A8A1B8A235920B80003265358B0032545B8018050582321B8018023211BB003254523212321591B2159442DB800482C4B535845441B2121592DB800492C4BB800095058B101018E59B801FF85B800441DB9000900035F5E2DB8004A2C2020456944B001602DB8004B2CB8004A2A212DB8004C2C2046B003254652582359208A208A49648A204620686164B004254620686164525823658A592F20B00053586920B000545821B040591B6920B000545821B0406559593A2DB8004D2C2046B00425465258238A592046206A6164B0042546206A61645258238A592FFD2DB8004E2C4B20B0032650585158
+
B080441BB04044591B21212045B0C05058B0C0441B2159592DB8004F2C2020456944B001602020457D691844B001602DB800502CB8004F2A2DB800512C4B20B003265358B0801BB040598A8A20B0032653582321B0C08A8A1B8A235920B0032653582321B801008A8A1B8A235920B0032653582321B801408A8A1B8A235920B80003265358B0032545B8018050582321B8018023211BB003254523212321591B2159442DB800522C4B535845441B2121592DB800532C4BB800095058B101018E59B801FF85B800441DB9000900035F5E2DB800542C2020456944B001602DB800552CB800542A212DB800562C2046B003254652582359208A208A49648A204620686164B004254620686164525823658A592F20B00053586920B000545821B040591B6920B000545821B0406559593A2DB800572C2046B00425465258238A592046206A6164B0042546206A61645258238A592FFD2DB800582C4B20B0032650585158B080441BB04044591B21212045B0C05058B0C0441B2159592DB800592C2020456944B001602020457D691844B001602DB8005A2CB800592A2DB8005B2C4B20B003265358B0401BB000598A8A20B0032653582321B0808A8A1B8A235920B0032653582321B800C08A8A1B8A235920B0032653582321B801008A8A1B8A235920B0032653582321B801408A8A1B8A235920B80003265358B0032545B8018050582321B8018023211BB003254523212321591B2159442DB8005C2C4B535845441B2121592D00000000020042000004D005BD00030007003FB800532BB800082FB800092FB8000810B80000D0B800002FB8000910B80003DCB80004DCB8000010B80007DC00BA0007000000562BBA0002000500562B3031331121112711211142048EB8FCE205BDFA43B8044DFBB30000000300970000050405BD000A00150028008240385A0D5A116A026A0D6A117A02772107490D4811021D081F0F041F131E000027081E17020B1E270804311B690F31231A2A091525281619292AB8015FB3217666182B2B4EF43C4DFD3C4E10F64DEDF4ED003FFD3FED12392FFD3901111239313043794012181A0508192506260718042B01051A082B01002B012B2B2B8181015D5D013237363534272623211101323736353427262321110321201716151407060716171615140706290102C47E466E754282FE9D01ADB74E318F4C7DFE75C3027701026D404F294D7138635985FEDEFD93035023378F90321CFE39FD5A6A435FA03A1FFDFB05139A5B778B592F272B3660A98E73AC0002005AFFDA057105E5001D001E00B1403B1B0597019605031F011F0482018705891305530803861D111115063A1D030C3A15091E021E1E190331023B1031111A20093119191F20A1216A66182B2B4EF44DED4E10F64DEDF4ED12392F003F3FED3FED12392F10ED
+
31304379403A001C172513260E251B260B160932000D1410320112110F10071C0932000500033201010204030A180C32000F120C3200081A06320104010632012B2B2B2B01103C103C2B2B103C103C2B2B2B2B2B2B815D015D080117232E0123220011101233323736373306070621202726111037362123041E013411C221C5B2D9FEF5F1EFDC733D1EC21A92AFFED7FF00AEE5ACBA01472805E5FEDABB8EA6FECFFEC5FEFEFEBFA95991E89DBD9BCD01AC0145D0E20000000200AF000004ED05BD000B000C004E4024071E04040B031E01000209081E0A0B080C020C0C02000669023B091A0E03082500190D0EB8010BB3219589182B2B4EF44DFD3C4E10F64DF4E41112392F003F3F3CFD3C3F3CED12392FFD313013211521112115211121152101AF042FFC93032BFCD5037CFBC2021F05BDB4FE42AAFE0EAF05BD000000000100AF000004AA05BD000900394018071E040409031E0100020908066B011A0B03082500190A0BB80157B32195DC182B2B4EF44DFD3C4E10F64DE4003F3F3CED12392FFD313013211521112115211123AF03FBFCCC02D1FD2FC705BDB4FE42AFFD6400000100C90000019205BD00030017B8002B2BBA00010000002E2B00B800002FB800022F303113331123C9C9C905BDFA43000100970000061705BD001300CB405944014B03020601090316011903D7010513011C03140B1B0C57015803D401DB03D40BDB0C0A040A040D45028602045102970202290A280D380A380D4702570276020725640D0A0203120301020B0C120306081517171A040405B8019B400D0A1F030B06FD0C0102FD0D1F12B8019BB6130019147670182B4E10F43C4DFDE419F43939F4393918E4FD3C4E10456544E6003F173C3F3C1217394B5279B10D0CB801AAB40201020A0BB801AAB202020387054D2E7AFD047DC487052E7AFD047DC43130005D727101725D71132109012111231134363501230115141615112397011D01A601A3011ABD04FE5DC5FE5A05BE05BDFB2604DAFA4303632DD077FB2904D72D36DD34FC9D000000030050FFD505E805E5000F001B001C008A402C8705C700C701C302C808C90A064308153A0F031B3A07091C021C1C0B1231031A1E18310B191D1ED8216A66182B2B4EF44DED4E10F64DED12392F003F3FED3FED313043794032001A0D26012509250526160E18320014001232011A081832001006123201170C1532011302153201190A1B320011041B32002B2B2B2B012B2B2B2B2B2B2B2B81005D0017161110070221202726111037122100123510002322001114122103049BBB92A7C4FE95FEADC2AD94BE0174011BEBFEF1EBE4FEE0F701150E05E5FAC3FED0FEB7DAFF00E0D8014A012AD40110FAA20179F50103013CFEC7FECFF4FEB1055E000200AF000004F805BD000A001400614035690C6912790C
+
7A12044814581468147A140407081E1110100A010E0F1E0100020A080206120C0409141431041A160F092500191516B8010BB3219589182B2B4EF44DFD3C4E10F64DFD11121739003F3F3CFD3C1012392F3CFD3C015D31305D132132161514062321112300272623211121323635AF0295C4F0D6DEFE32C70380784273FE74018C86A705BDDDC8ACFFFD9304B93A1FFE0372900000020060FFD504F605E5002F003000FE405E290F27232626360E3521472662267A0E7724096B08180E172502590E680EAA22030A0E3A2224220A03041C1886142F2F2B1C3A1403043A2B0930020A0E081124221F28303011182517490825281A321F25114900252F193132A0216A89182B2B4EF44DEDF4ED4E10F64DEDF4ED12392F1211393912113939003F3FED3FED12392F10ED111217392EFD335D7131304379404D282E111F0008022602262D2506251A26032C002B002D2E032C002B00052A082B011D131F2B001B15182B011918012D042B0009270B2B01250B012E042B000729042B001E121C2B0119161C2B01002B2B2B2B10102B2B01103C2B2B2B2B103C2B2B2B2B2B2B818181005D0116171633323736353427262F012627263534243332041523262726232206151417161F01161716151404232027263701011E073463FA705CB24B4CA2C7C3518C0112FBE70143BB0F315BDAB09A5A3BD0CE95518CFE9DEBFEEE9B9B03024D01DA7D4E92203EA0783332252D2C355CB7C6FEDFF5763F7394626C3220302F223B67C4F4D28C8BEE040B00000200AAFFD9052F05BD00150016003C4023170527053810030A0002053A1009160316161409250C1A18012514191718A0219570182B2B4EF44DED4E10F64DED12392F003F3FED3F3C5D3130011114171633323736351133111007022120032619012101743C59D3FD5B31CA4986FE8CFE8C8549024305BDFC74A06AA0AD5E9F038CFCC7FEF192FEF6010A92010F033900030052FFDC04470449000F003B003C00DD40382A30010A100B1B0C1C2733481069096A10073908120C09031B320724091D100C1D3B2B022E293BB73B023B322A2512100705081C2722171CB8018A4023171D1F07271D2E0B021D350B3C073C3C1C1407292AA8241A3E1B291C4A0F2738193D3EBC0197002100B9019600182B2B4EF44DEDF4ED4E10F64DE4FDC412392F003F3FED3FED3FEDED1239111217395D1112392EED2EED01111239111739313043794028363715220001192501360F2100181E1B21001620142101212200370221001A1D1721011521172101002B2B2B01103C2B2B2B2B818181005D015D2416333237363D010E010F0106070615013637363534262322070607233E01333217161511141633323637150E0123222726270E012322263534363713010E724E5F59962168326D62315301B43E150C837A8D3B21
+
0AA805F7A3BD767517250C1E112A2C265D2A160937CE7C95BDBA978ACF5A2C49A691151C060E0D1C2F67016C082C182D5C534C2A53C69B484898FD971C220303850C06422340486AB58895A41301E40000020076FFDE042505C20011001E0070402EA607A71CD71C0322080F1E02050000171D0507110A1E1D0B0B1427081A201A2E102E01290011191F208721BD5D182B2B4EF43C4DFDE4E44E10F64DED003FED3F3FED3F113911393130437940181216060A1606142601120A142601150717260113091E26002B2B012B2B8181005D1333113E01333212111402232227262715232436353426232206151417163376AF3BA460C8F9F6DA7A543239A6026691918D7BB92647C205C2FDEB4D51FEEDFEF4FEFEB03B234D897DE8BEA9DEB6D1975EB100000002003BFFE103D0044E001A001B00A7402FA719019818A808AA18034A08119B14030314061D1A070D1D140B1B071B1B1710271201032702111A1D0A2717191C1DB80107B321727D182B2B4EF44DED4E10F63C4DED3939ED12392F003F3FED3FED12392F10ED313043794034001908250C150A26000E1310260112110F1007190A26000500032101010204030B160D26000F120D2600091806260104010621012B2B2B2B01103C103C2B2B103C103C2B2B2B81005D015D001617232E012322070615141633323637330E01232202351000330702D6E317AF10727EAC4A308892708319AF1EF0BBD2FA0112D41C044EB0D76383A86DA0A1DC8977D5C50133E6011A013A0500020038FFDA03ED05C2000B001D00774032370E470E570EA704A91B05250814020F1D1000081D1D07130A021D170B052E132E102911121A1F0B271A191E1F87217242182B2B4EF44DED4E10F63C4DFDE4E4003FED3F3FED3F1139113931304379401A181C090A000101180B2600091C0B260000190226000A1B0826012B2B012B2B818181005D1216333236353426232206150017161711331123350E0123220035341233F692A17DA1A67A88A9018A53303DADA23FAC6FB3FEFAEFDE015FE8D7C9CBC3D0CA0237341E4B021DFA3E956358012DFAEA015700030048FFDA041A0449001C00240025010C40799708991AA71F03050E020F0514150E120F1514400C401408291A014B0BB603C701C603C71BD808D909D61FD823E817E8230BC711C712025C080521240F9A161D243906070716211D1C070A1D160B2507971CA71CB71CD71C0425160F251C05190A0C07110E270F1D27051A27242E072719192627D421A65D182B2B4EF44DFDE44E10F64DEDD4FD391239391112393912392F5D003F3FED3FED12392F3CFD3C10ED1112393130437940460023040503050205010504061F26111012101310141004060C25221B24260020001D26011E1D09170726000B150E26010D0E231A2126011E0521260108180A26000D
+
100A2600002B2B2B2B01103C2B2B103C2B2B2B2A2B2A8101715D00715D5D00161716171615211E013332373637330E01070607062322001110003301262726232206070102B4D638361210FCEF0590978D543014B1074F3152794152C8FEEA0118E2011F0B284AAD7CA805012304476B55516C4AA2A3C55D36473B912E501C100123010601020142FE26754682B38A01DC00000000010084000003ED05C200160053402C0607070817071708270427137507750808130D0213150000111D0607150C0A0D290A1A180115290016191718B80106B3216242182B2B4EF43C4DFD3C4E10F64DED003F3C3FED3F1139390112393130005D133311363736333217161511231134272623220615112384B440335782E9532DB91E318770B6B405C2FDDC512139A3599EFD5102A37637589AD6FDC8000000000200840000013B05BD000300070036401C07E50400010006030A0917171A06010229070300190809AA216242182B2B4EF43C4DC4FD3CC44E456544E6003F3F3C3F4DED3130133311231133152384B7B7B7B7042AFBD605BDCC0000000100890000013D05BD0003002940150000030A0517171A0102290003190405AA216242182B2B4EF43C4DFD3C4E456544E6003F3F31301333112389B4B405BDFA43000000020084000003ED04490019001A005E4031B706C706020406140627147606740705140C021418101D05070006180B0A1A071A1A000C29091A1C012E18291900191B1CB80106B3216242182B2B4EF43C4DFDE44E10F64DED12392F003F3F3C3F3FED1139390112393130005D015D1333153E01333217161511231134272623220706070E011511230184AB4CAA68E4502CB71D307E40294A382D1BB401A7042F985E529F57A2FD5102A3623C640D1642357169FDCF0449000003003BFFD90421044E000C0018001900904033980896109916A504A808A610A916B808C808D704E50EE9140C3A08061D18070C1D120B190719191502270F1A1B092715191A1BB80109B321725D182B2B4EF44DED4E10F64DED12392F003F3FED3FED31304379402C001704260B1309260000110226010717092600050D0226010A140C260001100C26000816062601030E0626012B2B2B2B012B2B2B2B2B81005D241235342726232206151416331200111002212200351000330702E085304CBAA59696A3D6011EFCFEF7DDFEFC0112E70674010FA6965E94FCB2ABE403DAFEECFEF4FEFDFEAE012BFC010E01400500020076FE5504250449000E00220074402CA908A717022808201C110E061D15070F060E1D1C0B220E0227181A240A2E102E2129220F1923248721BD5D182B2B4EF43C4DFDE4E44E10F64DED003F3FED3F3FED1139123931304379401C161B00051A260426001B022601051602260101190E260003170626012B2B012B2B2B2B8181005D
+
243635342726232207061514171633013315363736333212111007062322272627112302C6A72546BABB45252546BAFE2EAF36405B7BB6FEB7749A7952303BB479D3D2805CB1BB649A7C57A603B18E49283CFEE9FEFDFEA2965F351E49FDDD00000100890000029204470011004F40262703260D37034704040E0810020E0911090C270805070006110A081A13012E10291100191213B80145B321627E182B2B4EF43C4DFDE44E10E6003F3F4D3FC4FDC411123939011112393130005D1333153E0133321617152E0123220615112389AB15A46B05181D101B108892B4042FB9369B0203BE0302AF72FD980000010017FFEF0209055A00180052B50D2E0AC00E01B8013F40250416391703060E0A111A17171A0301062900150E150F031F030203FC1619191AFC21677D182B2B4EF44DFD5D39C42F3CFD3C104E456544E6002F3F3F3C4DFD3CED10FDE431301333113315231114171633323637150E012322263511233533A8B6ABAB2615310D1E141F43277E5A9191055AFED593FD4538130B01028E0908816702C593000000020080FFE303DE044900170018005E403AB814C81402091308141913191428067703D707070800050E0A00060D0A051D120B180718180B160D2E0A290C0B1A1A01291619191AD2216242182B2B4EF44DED4E10F63C4DFDE41112392F003F3FED3F3F3C391112393130005D015D0111141716333237363511331123370607062322272635112501381A3083BC4425B4AA0223346793E5532D01AF042FFD39523460A85A9D020EFBD19E3D2A5499528902D81A000001000B000003E1042F000B0035B800532B00B800002FB800032FB800062FB800092FBA000200060000111239BA000400060000111239BA000800060000111239303113331B0117090123090123011EE9F6F9DBFE970179E6FEF6FEFEE40179042FFE87017905FDFBFDDB0192FE6E022500000000010000000000006B8BED625F0F3CF500110800000000005F4D8F0000000000C9C13CF7F865FC270B9108F9000000090001000000000000000100000629FE2900000C01F865FCED0B9100010000000000000000000000000000001B05120042023900000556009705C7005A055600AF04E300AF023900C906AA009706390050055600AF0556006005C700AA04730052047300760400003B04730038047300480473008401C7008401C70089047300840473003B0473007602AA008902390017047300800400000B00000034003400B80148018C01BE01D6026202E003360402044A0514057E0600066C0736078607B407D6083208AA091C096209B20A0C0A4600010000001B00920009006B0007000200100010005D000007E80A1D00040001B800532BB800492BB8003F2BB800352BB8002B2B4118008001A6009001A600A001A600030069018B0079018B
+
0089018B0099018B00040089018B0099018B00A9018B00B9018BB2040840BA0179001A014A400B041F5414191F180A0B1FD2B80106B49E1FD918E3BB0119000D00E10119B20D0009410A01A0019F0064001F01A50025017A00480028019AB3296C1F60410A01A9007001A9008001A90003008001A9000101A9B21E321FBE012C00250401001F0126001E0401B61FE7312D1FE531B80201B21FC227B80401B21FC11EB80201400F1FC01D9E1FBF1D671FBE1D671FAB27B80401B21FAA29B80401B61FA91D6C1F931EB8019AB21F921DB80101B21F911DB80101B21F751DB80201B61F6D29961F6431B8019AB21F4C96B802ABB21F391DB80156400B1F3638211F351DE41F2F27B80801400B1F2D1D4C1F2A31CD1F241DB802ABB21F201EB8012540111F1C1D931F3A1D4C1F1E1D45273A1D4527BB01AA019B002A019BB2254A1FBA019B0025017AB349293896B8017BB348283125B8017A403648289629482725294C1F252946272729482756C80784075B07410732072B072807260721071B071408120810080E080C080A08080807B801ACB23F1F06BB01AB003F001F01ABB308060805B801AEB23F1F04BB01AD003F001F01ADB70804080208000814B8FFE0B40000010014B801ABB41000000100B801ABB606100000010006B801ADB300000100B801AD401F04000001000410000001001002000001000200000001000002010802004A00B0018DB806008516763F183F123E113946443E113946443E113946443E113946443E113946443E11394660443E11394660443E11394660442B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B18011DB0964B5358B0AA1D59B0324B5358B0FF1D592B2B2B2B2B2B2B2B182B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B74752B2B2B65422B2B4B5279B376706A66456523456023456560234560B08B766818B080622020B16A704565234520B003266062636820B003266165B070236544B06A234420B176664565234520B003266062636820B003266165B066236544B0762344B10066455458B166406544B27640764523614459B36242725D456523456023456560234560B089766818B080622020B172424565234520B003266062636820B003266165B042236544B072234420B1625D4565234520B003266062636820B003266165B05D236544B0622344B1005D455458B15D406544B262406245236144592B2B2B2B456953427374B8019A2045694B20B02853B049515A58B020615944B801A6204569447500
+
00>] def
+
/CharStrings 27 dict dup begin
+
/.notdef 0 def
+/space 1 def
+/B 2 def
+/C 3 def
+/E 4 def
+/F 5 def
+/I 6 def
+/M 7 def
+/O 8 def
+/P 9 def
+/S 10 def
+/U 11 def
+/a 12 def
+/b 13 def
+/c 14 def
+/d 15 def
+/e 16 def
+/h 17 def
+/i 18 def
+/l 19 def
+/n 20 def
+/o 21 def
+/p 22 def
+/r 23 def
+/t 24 def
+/u 25 def
+/x 26 def
+ end readonly def
+
currentdict dup/FontName get exch definefont pop end
+
%APLsfntEnd
+
42/FontType resourcestatus{pop pop true}{false}ifelse
+
{currentfile 0(%APLT1End\n)/SubFileDecode filter flushfile}if
+
/FontType 1 def
+
/FontMatrix [ 0.00048828125 0 0 0.00048828125 0 0 ] def
+
/FontBBox{-1947 -985 2961 2297}def
+
/UniqueID 4257378 def
+
currentdict currentfile eexec
+
54544758EC884CF30C3CD503CEDBFF3839C47C3C3333173232E3FDBFF439491DB843E1924E63AA7726BBB0485AB56D93D8C0906F647A47162891E73FFC2A9873C4B1EAC5EEBDFFC4D06084FBD84139DF4583C6E259D10699944D1068C9C45667DCCCFB9B7EA01B606435EDCBD273ABAC093D14085CCBAC149BD7382E842CFE0D7FE4FD2EF589A2471F6074A80A8B675C2F7A50D63AC1EF90D787BADD11633CB01CF6EE3B37AAF9078A69AC4740E9B6525D78BBD839551A1CB80DB8682FA5E87591BBD6EE8B946063A2A58D9CA3685AB305495DC5FB5747EB8A9A059C4976C0FE4EEAB1D56FF47F1E9664ED9F4A7DAB763AF92B2F6CF2FA7DEC24710E0B9096E30F772BA7FEA9BDBE496C42ED2CEB58F54E80BDF57CE7B4DB6CCFE7182F43BF93CCA0767AF95D62C5D2C3DC6AE1E6D139F51A2C63432117F1714C5566572EE9967A715420ABDCD1D7BD74F8450B89965FCC81C6ACA565C5F3CCF91D430D1F953E4F1A645300A98DD8C47CD64555F08F422340A85404EAE0D3229C4F9336B9470CACBD6BBF3395104750A915CC6EAAC197668267B8C62D2764C8CD69FD937CA3C924D997A0EDE7964BEB9EA2F92EF70C5E5DA0AA5567765E71F2B911B3C5586B741EEB93F3C73016EC16BFF283758900903D203992EFC8BAFAF13579C602F38C926597C1DAC1BA3798797E796C89ECAEC4435602C69EF8DE4A69515109638DF86B62BEC4457DD235B018F13E50EF61B04CEB8E3062CDF2AFC8BADD47299D478A46B2E1E6448B7A26CF42AB37E06DC278FC1822864D5079D7823450BD66FA46070696AE612902D7110D04B8B5EE1B8A98821C9DD334B636A02B5BFD2C6501058034B24146B36D138AD028F43FC1155088AD80D1A7972E373240B0BE173728E4650F354743425E325CA93D97AD5D56EF3B00B546CAA18F2B3BE9E09F50602A0C419304BB6DA2D9D3F73E226DD2C697100DFB52B56B42BA63B3DF0037BA7FBF848CA880308E8E165ECE250A6C056C999D17C080E660E6FA0A953F0A4B6002AD8DCE7E2C3F89CEC0EA4E1D3BEC5751CA010A9EC6D3F7DC4A34F283C58BE5EE021488C54EA2AA6A2557C46D530D3DB24CF51E77FB40476AD68FAB792D3EE2568E4C0CA39AF599471A9F26D16ED13774EB31623760FE29BAF6345BC52E8406792F56A2039F39EDB09A5C1AD1DB825F891A1785A76F5C311FC1D53C62368D5E40C9363D9774A16EB11FA859AFD1C20C0A6756548C9970F1651419A12B7BD74E9C27B465C4B5441EB80885B61BFC5470AEADFBDD287872315681E13F300F18D31F48482BCFE1A250B9563FB655E753499C75D9E162BCA51BD726B44FEFD068FC34BE49E022681913F7418D6E93D235E4AB71005AD05C275E75FE3CC180963AA988E2888A68163914CF6A2756E8D9AB6F08A8D7805C5A0B3922BC2A76E26A10EEA93F1F09F4
+
59022907305D78480E435FA390B200AEC41FD4DBC0F52CC42C24C8D0A958F9B431402B36A67D44B01EF21BB7E2460C46E3719B66A6117A899242B7E520D6ADE930A283113296A64D1206C3AF72BC86358D8BFF0EDA828C413FD8B9B80EBA09E1472DC8E2D43CD2F6326E84358F15196F96532CA6DE5381D9DF1504B85C47813C4F156174F751E76299D2C1A44DE3A9C7B82107329BE0E97124F5C5DEAE580459DAE89AC67E7B2F93DBDB1EAD5564D5E728977C704E1B366D6746C3771DD9DDA78D6715377D5DE6C48986A00D141F1ECCB1AFD34C1DA201B048CFCD890AD169970B0A7A06F81E11213065FBBE6E504F81F30C3FC7572A7238210684361654F4B87F74C20992CF57CB3F7E5BEF22DC622163248F50AC413D5A0DF884960AC0EC6ACA1C8E12D0266A75C0FDC5EA1C35662968A40C6DE2BAC9AF1A4E1302C3F3873DF5473D31E8BCB0D1F20551E2D72D4F22608E5E8F3AE3A74197EEF93D7141B0B97412C689117EE399B03D6134400A478D3F87E5CA6143D10EAED1F4B5F57E44331684F38580CCB3DCEC3F17D453D4EA1D8D808047567D75A979604BE5049661580650EEE3D9BC1775545F8399263843A7B97ADE276678337BDE7B8186971A9E64F21F0E63FE40D3A0638BAB8DC23B4D71782102EFB10363E5336183030D92BE7F22105EE2294E4D883FC22E9E2133D7C94E9ACE69F399A4DD8D748C86AEACB2CA974797D9D25A617BB36FF85CAB5BD87B6AEEC216402B2E2456251EE27BA7712801C4064C35BE521903EAC4ABF756424C0B5177C8F25EE8F74566FD5CB51F9474E49C283113A17010ECD41A2C772F8173E056EDDC6FE7A06FB61AD2B0A1C1831974CEC94B200F5FADC4A8680B40FFB63CD679EE22AA8F553FE91F54BA56E9689561A2BC5B833DD3B3B853494A3C25CFA060FE56B41929E2C52D187124F8B1537E0C16BC82825E7E09B98C6E93F61DE210CC3A21B36037E0BB34BF7032978F12599FDD49D4CDDA9E7B212359A13C7D1CA49AB209050F1CEFD39E2EF8B599544C5020979BE5A975F43AF8482DB2121983CF455D6A71984DF311AABBE5EDD6C547DCCD108718DB627CC7DB34632E300D9665584F5705EBC8FAE438A57983D50911DFF84E11CAB9DC29A3CA40DD575843BF9C92A4C8D325EB94BEDAF73CED9FA473F0B6CB96DCE7CD0E5DD7AF7FA11119100E91E44E02A359B5D5001FFA6836294B8C68C60DC59970006BECE1D30DB063B92DCB0FA50CB7855C14A44CCC2A888D45DB7508A0D458C4F98C229E18547A90C9D838E6AA50E1353E11E7B60293BE419A985BACA01D5EFD1F113A325F229EA199D76D7B42CAA226D22CC517B94E9D3678885E25820E163B89DD923A7779C4EEFE711D4DCE5EF85DBA160C5781DE225B37A34CFF730B46320823C9C4E12BA03F7E2DD41160B25F8976213B463316F4DCFE63
+
6C4B43065A84561651F3E89C0BC375844AE2E5889F0515B9B4196C570EBE8CA7FC80A6AECE531DE949C4D3A350CC5F3E8E0141193CAB44C156D731E103A052AE2E533D467D0E4F73D803892492ECDA025F9935B495678D95E33D44E3E0112C0661BF05CA3CD685855F9959B8A5956A9A2E4529A1BCCED44A6947C0CA0D9D890EF14680B3BA8A403F21DACDE93E0ACAE0EEB33B553755744A4AE3B4AD08588E1E7DFA80673E4E33FEC013C9F61C778ED3B747B9909C265E50C9ABFC0633B62DE405F5F7817B12463A7592E4AB92F926A5FACD141677FA0CAB45C9731CC2F1E5B09A6C43BCA16551B78CFF783EE562BAA130275F1A85A5D99F2196BDBFD361724805F4CD7E0E3976081A920137DFCFA97A45824BA207ED79F2A210335D23F6E3405968DE82F5B7A58F71D4F70FC3BB98F1B578DAFB7854BB1213294A940B87C418F93D10CD0FB24433BED32F85FD508E39F6F18182B8355D12A9848EF53EE8E47B74CE440C42D9ADE0162B3A2441771E27F41F4B2E5C3579DCA85C557D8032DD4A41D04819FA0C326909572CE7D5019DE631875D46B5CC834572B2A6C43F7EBB43A8B6FD70F4A4D0A78BA1358FB4C4C7637C0293285064B1F4DECDDFFF43E091E11C42D0D8FEDF1DDE809B9AB2698279677F2C352408858004D531D777476F1BB9EC93C3293B05B26D959486F466495A37C62D14AFF05F7B22335D516AF4893C641DCB1176A10C5F8A075354F78DFBF4C3A7D53F5D2EBD0A70360F86F2FBCE9E4EB65E7C0260AB07BF7944D9E77982AE703AAFDCAB49A39539FA8E53125319BF8BE9A3B7D36C0B72151C27C5159776FB4B673EA15E96BA82C6DCDF7E56FD5A19B954C1337A46F4A627F9A1CC684BCDC5995AB1B47AECF3976C53827883FADC8CF23D9DD22182C4F3EB371F5BBA40BAC5D5E99DCD9DA6E0DC65685FAD96E45D5D6D4895F37F5AA1E552B5106638C4D28DD1CC2C65CA1EF4CCE5C12A452BBBDA59C824B9645AA507DE785948341AC51191DD15CC1CF0665A9BC12C238EF9440E0946765100B9E7B0BF3E96CD276992EF74D9FA22D4D5E185EF5C00A90BC93CEB41D24BE3589295B776B739C428B7B90B9AB5F31991A4AEBE332F5B1B21CD908D8041A9E608321E9DC96C2E252BCAF9B6D9A38632E64476A1E653D29FBA277363AA0FB795C1C1F8BDE2FF9B96626DB6CC538BE7058EB3B14E30C7CFA584C1165C0FCC4D358EA75A8FD02BDB8F48114A1F4E374873EEB387594038CC73C4660EFC4DC9B2AE9CE723D400AA8DDED28742D99E600C3CC4CB7D596BD516DD4869B35D9270A2FA483A9C4AF58FE877CD10A2AF6053E99A8A67CD39E92FA79F8BFC1698D30EADF96F1B1EDD0435B9F9B5645C1BC00D9F46579E835BC425D691A03AA3A6E2B2592E1FC36EFC950F4E393D3D182034E69F3AC37BD42F914F1864ABD478695401
+
6E9F0D2EA6B7985613653F1D429CF15DD654985D1D85547718DA2DE85B1E1E9D968E291AA646DCCDAFFD1F66475C314485ACB0808D7028660AE81524DABB9E888B655F778F97BFE6677A52EFE20E529827D78D5D54ADF9A64B0565436F614D4D9A2111E707F2D6AB21D78D23878182C2DAAEC5CAB78DD59F04F3B231DAC428F890E7054304FC94F53BF68219068A5206557AFA8D3DCFBF8D5D4F020157AA487F39FAA8C47FBB82E130FE59BFF018D56899EFD62D798EEA41329C397A54F8E81152FF8AE1F882E7978ABDA776DE0B894170756330880D471C743ECF30DF6675AC41CD9BFD653A8836A84BF05A0030E631C5AAEDDE082B9D9F4DF3264CDE434ABA59CF497DDBFFF8A47A998596647E55611DD93E5E7063B4DF02C704CB0F2375012EE8B25880429130970F4A18A2B87B5BF70F04038A00499B9FA7F39FAB1299B7FD4DBCF387EC383D3B5AB13CF9F20F75652CDF6B05668678F1D9BD19A26AB7924A608E41C25F1716CC3948451C445B95A4FC10278D97BE8B9792DF40345CC5EFF3E45E17FDAE91FE52CB00796CF34B3409FE853EF6A165E9344844DC1FF6658D88C32B1FC62962A06F9CA427169D74D1ECB1F56F91D89BF2A3CCB286EFB08AF24AD4FA5E2B0CA4D9774D023E5F9DBEAC0A5047E50C5E38310E4803CEDAA598A8FEBCBA803B4252D4E50876A5D3C31B0BFC6B1762F6402C1EB020FFDE7806891F7DBFBC7781C7D7BDC9B2B8BCAE1E460BC54FCE87308C14F9EAA4D0CCAAD987FBB07F93C1AC04E89B6054600456C8CA5EDB8E3F9F554E08F63D5864C0E4D6EF50B1D74BECA9132C4B6356DE30414957E7066E1E8B2631384FC0C3F1A48C1D1C37B1B161DB6AF6021D45E84148EE4A0DF666713D2D5F48C5FD8A9D4D7EB46C5CBCEF99CCE86D122D8D71099D996B92C2A0528007BC54AB368488963EC2AC41BF32D2C4ED7DDEF54908F050964CB0332E39FE180C7198FF94ADDFB56079744F5066BB4C59124FDE2A1FC695D1F5F99A8A8565F33100E51FCB1BE92E3AADA94ED8A15E1E86A3B1DBF2580A5841801B8A9C21FF628A8DB38521275A2E33161DB2947EFF42A86FEDF8D412CA35021CB83CBB772DB98D624AC94EB1CBBC205E32E5D58384952CA604A42455485BA848BACF556AC90A58D48A0B01DBAE479283CDA8156C366CEC7FA34E0EBD2BABD606B1D69F918A8E94BBD6EA2816CCC9DC7F2785C12B55A70BC00FBE09F45FF162389D0A43E067120A8C10A1E806AA1BA69C32C39A8ED086CDE9F299E9868B85A17B38DAE6BDD9AF8941648A9A103F4F5778F345A740D378A6CDE45BDFA0E748D99B8E37B60B65D0EEA0D93033D0C6B747B4936D20753571D8A589B644671A35BE3256AD63572F9E4D96D56E4B679DD5C12BAABE865BE9C2C1249BBC135D18E71486695772F68802F721F7B164E9E8DB264F7D7CA330
+
48
+
0000000000000000000000000000000000000000000000000000000000000000
+
0000000000000000000000000000000000000000000000000000000000000000
+
0000000000000000000000000000000000000000000000000000000000000000
+
0000000000000000000000000000000000000000000000000000000000000000
+
0000000000000000000000000000000000000000000000000000000000000000
+
0000000000000000000000000000000000000000000000000000000000000000
+
0000000000000000000000000000000000000000000000000000000000000000
+
0000000000000000000000000000000000000000000000000000000000000000
+
cleartomark end
+
%APLT1End
+
%RBIEndFontSubset
+/Helvetica cguidfix
+/F1.1/Helvetica renmfont
+[ /CIEBasedABC 4 dict dup begin 
+/WhitePoint [ 0.9505 1.0000 1.0891 ] def 
+/DecodeABC [ { 1.8008  exp } bind { 1.8008  exp } bind { 1.8008  exp } bind ] def 
+/MatrixABC [ 0.4295 0.2318 0.0204 0.3278 0.6722 0.1111 0.1933 0.0960 0.9578 ] def 
+/RangeLMN [ 0.0 0.9505 0.0 1.0000 0.0 1.0891 ] def 
+end ] /Cs1 exch/ColorSpace dr pop
+[ /CIEBasedA 5 dict dup begin /WhitePoint [ 0.9505 1.0000 1.0891 ] def 
+/DecodeA { { 1.8008  exp } bind  exec} bind 
+def 
+/MatrixA [ 0.9642 1.0000 0.8249 ] def 
+/RangeLMN [ 0.0 2.0000 0.0 2.0000 0.0 2.0000 ] def 
+/DecodeLMN [ { 0.9857  mul} bind { 1.0000  mul} bind { 1.3202  mul} bind ] def 
+end ] /Cs2 exch/ColorSpace dr pop
+%%EndPageSetup
+0.60000002 i
+/Cs1 SC
+1 1 1 sc
+q
+0 0 496 325 rc
+-33.5 375.5 m
+545.30005 375.5 l
+545.30005 -379.30005 l
+-33.5 -379.30005 l
+h
+-33.5 375.5 m
+f
+2 321 m
+346 321 l
+346 2 l
+2 2 l
+h
+2 321 m
+f
+1 J
+1 j
+0 0 0 sc
+1 0 0 -1 -33 375 cm
+35 54 m
+379 54 l
+379 373 l
+35 373 l
+h
+35 54 m
+S
+/Cs2 SC
+0 sc
+0 i
+1 0 0 -1 174 161.5 cm
+/F1.1[ 21 0 0 -21 0 0]sf
+-21.010254 -139.5 m
+(!"#)[ 14.006836 14.006836 0.000000 ] xS
+0.60000002 i
+/Cs1 SC
+1 1 1 sc
+CM
+24 223 m
+78 223 l
+78 69 l
+24 69 l
+h
+24 223 m
+f
+0 0 0 sc
+1 0 0 -1 -33 375 cm
+57 152 m
+111 152 l
+111 306 l
+57 306 l
+h
+57 152 m
+S
+/Cs2 SC
+0 sc
+0 i
+1 0 0 -1 51 146 cm
+/F1.1[ 18 0 0 -18 0 0]sf
+-18.505371 -59 m
+(!"$)[ 12.005859 12.005859 0.000000 ] xS
+[
+4
+4
+] 0 d
+0.60000002 i
+/Cs1 SC
+0 0 0 sc
+1 0 0 -1 -33 375 cm
+120.9 199 m
+155.10001 199 l
+S
+CM
+130.10001 176 m
+122.10001 179 l
+122.10001 173 l
+h
+130.10001 176 m
+f
+0 J
+0 j
+[] 0 d
+1 0 0 -1 -33 375 cm
+163.10001 199 m
+155.10001 196 l
+155.10001 202 l
+h
+163.10001 199 m
+S
+CM
+79.900002 176 m
+87.900002 173 l
+87.900002 179 l
+h
+79.900002 176 m
+f
+1 0 0 -1 -33 375 cm
+112.9 199 m
+120.9 202 l
+120.9 196 l
+h
+112.9 199 m
+S
+1 J
+1 j
+[
+4
+4
+] 0 d
+120.9 210 m
+155.10001 210 l
+S
+CM
+130.10001 165 m
+122.10001 168 l
+122.10001 162 l
+h
+130.10001 165 m
+f
+0 J
+0 j
+[] 0 d
+1 0 0 -1 -33 375 cm
+163.10001 210 m
+155.10001 207 l
+155.10001 213 l
+h
+163.10001 210 m
+S
+CM
+79.900002 165 m
+87.900002 162 l
+87.900002 168 l
+h
+79.900002 165 m
+f
+1 0 0 -1 -33 375 cm
+112.9 210 m
+120.9 213 l
+120.9 207 l
+h
+112.9 210 m
+S
+1 J
+1 j
+[
+4
+4
+] 0 d
+120.9 221 m
+155.10001 221 l
+S
+CM
+130.10001 154 m
+122.10001 157 l
+122.10001 151 l
+h
+130.10001 154 m
+f
+0 J
+0 j
+[] 0 d
+1 0 0 -1 -33 375 cm
+163.10001 221 m
+155.10001 218 l
+155.10001 224 l
+h
+163.10001 221 m
+S
+CM
+79.900002 154 m
+87.900002 151 l
+87.900002 157 l
+h
+79.900002 154 m
+f
+1 0 0 -1 -33 375 cm
+112.9 221 m
+120.9 224 l
+120.9 218 l
+h
+112.9 221 m
+S
+1 J
+1 j
+[
+4
+4
+] 0 d
+120.9 232 m
+155.10001 232 l
+S
+CM
+130.10001 143 m
+122.10001 146 l
+122.10001 140 l
+h
+130.10001 143 m
+f
+0 J
+0 j
+[] 0 d
+1 0 0 -1 -33 375 cm
+163.10001 232 m
+155.10001 229 l
+155.10001 235 l
+h
+163.10001 232 m
+S
+CM
+79.900002 143 m
+87.900002 140 l
+87.900002 146 l
+h
+79.900002 143 m
+f
+1 0 0 -1 -33 375 cm
+112.9 232 m
+120.9 235 l
+120.9 229 l
+h
+112.9 232 m
+S
+1 J
+1 j
+[
+4
+4
+] 0 d
+120.9 243 m
+155.10001 243 l
+S
+CM
+130.10001 132 m
+122.10001 135 l
+122.10001 129 l
+h
+130.10001 132 m
+f
+0 J
+0 j
+[] 0 d
+1 0 0 -1 -33 375 cm
+163.10001 243 m
+155.10001 240 l
+155.10001 246 l
+h
+163.10001 243 m
+S
+CM
+79.900002 132 m
+87.900002 129 l
+87.900002 135 l
+h
+79.900002 132 m
+f
+1 0 0 -1 -33 375 cm
+112.9 243 m
+120.9 246 l
+120.9 240 l
+h
+112.9 243 m
+S
+1 J
+1 j
+[
+4
+4
+] 0 d
+120.9 254 m
+155.10001 254 l
+S
+CM
+130.10001 121 m
+122.10001 124 l
+122.10001 118 l
+h
+130.10001 121 m
+f
+0 J
+0 j
+[] 0 d
+1 0 0 -1 -33 375 cm
+163.10001 254 m
+155.10001 251 l
+155.10001 257 l
+h
+163.10001 254 m
+S
+CM
+79.900002 121 m
+87.900002 118 l
+87.900002 124 l
+h
+79.900002 121 m
+f
+1 0 0 -1 -33 375 cm
+112.9 254 m
+120.9 257 l
+120.9 251 l
+h
+112.9 254 m
+S
+1 1 1 sc
+CM
+132 274 m
+313 274 l
+313 18 l
+132 18 l
+h
+132 274 m
+f
+1 J
+1 j
+0 0 0 sc
+1 0 0 -1 -33 375 cm
+165 101 m
+346 101 l
+346 357 l
+165 357 l
+h
+165 101 m
+S
+/Cs2 SC
+0 sc
+0 i
+1 0 0 -1 222.5 146 cm
+-19.494141 -110 m
+(%&')[ 14.994141 10.995117 0.000000 ] xS
+0.60000002 i
+/Cs1 SC
+1 1 1 sc
+CM
+166.5 224 m
+194.5 224 l
+194.5 196 l
+166.5 196 l
+h
+166.5 224 m
+f
+0 0 0 sc
+1 0 0 -1 -33 375 cm
+199.5 151 m
+227.5 151 l
+227.5 179 l
+199.5 179 l
+h
+199.5 151 m
+S
+1 1 1 sc
+CM
+194.5 224 m
+222.5 224 l
+222.5 196 l
+194.5 196 l
+h
+194.5 224 m
+f
+0 0 0 sc
+1 0 0 -1 -33 375 cm
+227.5 151 m
+255.5 151 l
+255.5 179 l
+227.5 179 l
+h
+227.5 151 m
+S
+1 1 1 sc
+CM
+222.5 224 m
+250.5 224 l
+250.5 196 l
+222.5 196 l
+h
+222.5 224 m
+f
+0 0 0 sc
+1 0 0 -1 -33 375 cm
+255.5 151 m
+283.5 151 l
+283.5 179 l
+255.5 179 l
+h
+255.5 151 m
+S
+1 1 1 sc
+CM
+250.5 224 m
+278.5 224 l
+278.5 196 l
+250.5 196 l
+h
+250.5 224 m
+f
+0 0 0 sc
+1 0 0 -1 -33 375 cm
+283.5 151 m
+311.5 151 l
+311.5 179 l
+283.5 179 l
+h
+283.5 151 m
+S
+/Cs2 SC
+0 sc
+0 i
+1 0 0 -1 222.5 236 cm
+/F1.1[ 13 0 0 -13 0 0]sf
+-47.699463 5 m
+(\(\)*+,\)-.%/01*+2)[ 3.611816 7.229980 7.229980 7.229980 7.229980 7.229980 7.229980 3.611816 10.829102 7.229980 2.888184 2.888184 7.229980 7.229980 0.000000 ] xS
+0.60000002 i
+/Cs1 SC
+1 1 1 sc
+CM
+208.5 160.5 m
+236.5 160.5 l
+236.5 132.5 l
+208.5 132.5 l
+h
+208.5 160.5 m
+f
+0 0 0 sc
+1 0 0 -1 -33 375 cm
+241.5 214.5 m
+269.5 214.5 l
+269.5 242.5 l
+241.5 242.5 l
+h
+241.5 214.5 m
+S
+1 1 1 sc
+CM
+208.5 97 m
+236.5 97 l
+236.5 69 l
+208.5 69 l
+h
+208.5 97 m
+f
+0 0 0 sc
+1 0 0 -1 -33 375 cm
+241.5 278 m
+269.5 278 l
+269.5 306 l
+241.5 306 l
+h
+241.5 278 m
+S
+/Cs2 SC
+0 sc
+0 i
+1 0 0 -1 222.5 172 cm
+-52.755371 5 m
+(3,4*+,\)-.%/01*+2)[ 10.111816 7.229980 3.611816 7.229980 7.229980 7.229980 7.229980 7.229980 3.611816 10.829102 7.229980 2.888184 2.888184 7.229980 7.229980 0.000000 ] xS
+1 0 0 -1 222.5 57 cm
+-78.768066 5 m
+(3,4*+,\)-.\(\)4566,74.%/01*+2)[ 10.111816 7.229980 3.611816 7.229980 7.229980 7.229980 7.229980 7.229980 3.611816 3.611816 7.229980 3.611816 7.229980 4.329102 4.329102 7.229980 7.229980 3.611816 3.611816 10.829102 7.229980 2.888184 2.888184 7.229980 7.229980 0.000000 ] xS
+0.60000002 i
+/Cs1 SC
+0 0 0 sc
+1 0 0 -1 -33 375 cm
+140 204.5 m
+199.05957 172.7605 l
+S
+/Cs2 SC
+0 sc
+0 i
+1 0 0 -1 104 198 cm
+-22.769043 5 m
+(89/\)\)51)[ 6.500000 7.229980 7.229980 7.229980 7.229980 7.229980 0.000000 ] xS
+0.60000002 i
+/Cs1 SC
+0 0 0 sc
+1 0 0 -1 -33 375 cm
+86 227 m
+231.60001 227 l
+S
+CM
+206.60001 148 m
+198.60001 151 l
+198.60001 145 l
+h
+206.60001 148 m
+f
+0 J
+0 j
+1 0 0 -1 -33 375 cm
+239.60001 227 m
+231.60001 224 l
+231.60001 230 l
+h
+239.60001 227 m
+S
+1 J
+1 j
+140 248 m
+232.40045 287.60019 l
+S
+CM
+206.75363 84.248444 m
+200.58223 90.157227 l
+198.21872 84.642365 l
+h
+206.75363 84.248444 m
+f
+0 J
+0 j
+1 0 0 -1 -33 375 cm
+239.75363 290.75156 m
+233.58223 284.84277 l
+231.21872 290.35764 l
+h
+239.75363 290.75156 m
+S
+1 J
+1 j
+86 248 m
+140 248 l
+S
+95.900002 204.5 m
+140 204.5 l
+S
+CM
+54.900002 170.5 m
+62.900002 167.5 l
+62.900002 173.5 l
+h
+54.900002 170.5 m
+f
+0 J
+0 j
+1 0 0 -1 -33 375 cm
+87.900002 204.5 m
+95.900002 207.5 l
+95.900002 201.5 l
+h
+87.900002 204.5 m
+S
+1 1 1 sc
+CM
+371 322.5 m
+413 322.5 l
+413 3.5 l
+371 3.5 l
+h
+371 322.5 m
+f
+1 J
+1 j
+0 0 0 sc
+1 0 0 -1 -33 375 cm
+404 52.5 m
+446 52.5 l
+446 371.5 l
+404 371.5 l
+h
+404 52.5 m
+S
+/Cs2 SC
+0 sc
+0 i
+1 0 0 -1 392 163 cm
+/F1.1[ 15 0 0 -15 0 0]sf
+-12.088623 6 m
+(#\(:)[ 10.004884 4.167480 0.000000 ] xS
+0.60000002 i
+/Cs1 SC
+0 0 0 sc
+1 0 0 -1 -33 375 cm
+321.89999 165 m
+464 165 l
+S
+CM
+280.89999 210 m
+288.89999 207 l
+288.89999 213 l
+h
+280.89999 210 m
+f
+0 J
+0 j
+1 0 0 -1 -33 375 cm
+313.89999 165 m
+321.89999 168 l
+321.89999 162 l
+h
+313.89999 165 m
+S
+1 J
+1 j
+270 292 m
+455.10001 292 l
+S
+CM
+430.10001 83 m
+422.10001 86 l
+422.10001 80 l
+h
+430.10001 83 m
+f
+0 J
+0 j
+1 0 0 -1 -33 375 cm
+463.10001 292 m
+455.10001 289 l
+455.10001 295 l
+h
+463.10001 292 m
+S
+1 J
+1 j
+270 228.5 m
+455.10001 228.5 l
+S
+CM
+430.10001 146.5 m
+422.10001 149.5 l
+422.10001 143.5 l
+h
+430.10001 146.5 m
+f
+0 J
+0 j
+1 0 0 -1 -33 375 cm
+463.10001 228.5 m
+455.10001 225.5 l
+455.10001 231.5 l
+h
+463.10001 228.5 m
+S
+1 1 1 sc
+CM
+438 321 m
+494 321 l
+494 2 l
+438 2 l
+h
+438 321 m
+f
+1 J
+1 j
+0 0 0 sc
+1 0 0 -1 -33 375 cm
+471 54 m
+527 54 l
+527 373 l
+471 373 l
+h
+471 54 m
+S
+/Cs2 SC
+0 sc
+0 i
+1 0 0 -1 466 161.5 cm
+-15.007324 6 m
+(""#)[ 10.004884 10.004884 0.000000 ] xS
+ep
+end
+%%Trailer
+%%EOF
--- a/Paper/prosym.tex	Thu Nov 17 10:29:29 2011 +0900
+++ b/Paper/prosym.tex	Thu Nov 17 18:02:24 2011 +0900
@@ -9,6 +9,7 @@
 % \受付{2011}{11}{18}
 % \採録{0}{0}{0}
 
+% ページ番号を表示しない
 \pagestyle{empty}
 
 % ユーザが定義したマクロなど.
@@ -64,20 +65,20 @@
 
 % 和文概要
 \begin{abstract}
-本研究室で作成した Cerium Task Manager\cite{kono10c,kono08d} は, Task 単位で記述するゲームフレームワークである.
+本研究室で作成した Cerium Task Manager\cite{gongo:2008:os}は, Task 単位で記述するゲームフレームワークである.
 % Cerium Task Manager では, Task に input データ, output データ及び依存関係を設定し, 
 % Task Manager としてそれらの Task を管理し, 実行する.
 今までは, PlayStation 3/Cell\cite{cell} 上でのみ, 並列実行を可能にしていたが, 
 今回新たに Mac OS X, Linux 上での並列実行に対応した.
 % 今回のポスター発表では, 既存の Cerium Task Manager の実装の説明, 
 % 新しい並列実行の機構についての説明及び実際に Cerium Task Manager を利用して, 並列実行のデモを行う.
-本論文では, 既存の Cerium Task Manager の実装と新しい並列実行の機構について説明する.
+本論文では, 既存の Cerium Task Manager の実装と新たに実装した並列実行の機構について説明する.
 
 \end{abstract}
 % 英文概要
 \begin{eabstract}
-We have developed Cerium Task Manager of Game Framework.
-Until now, Cerium Task Manager was able to enable parallel execution only on the PlayStation 3/Cell,
+We have developed Cerium Task Manager\cite{gongo:2008:os} of Game Framework.
+Until now, Cerium Task Manager was able to enable parallel execution only on the PlayStation 3/Cell\cite{cell} ,
 It new supporting parallel executation on Mac OS X and Linux. 
 In this paper, we described implementation of existing Cerium Task Manager and a new parallel execution. 
 \end{eabstract}
@@ -86,29 +87,29 @@
 \maketitle
 
 % ページ番号を表示しない
-% maketitleの定義が邪魔するので、1ページ目だけはthispagestyleを使う必要がある
+% maketitleの定義が邪魔するので, 1ページ目だけはthispagestyleを使う必要がある
 \thispagestyle{empty}
 
 % 本文はここから始まる
 
 \section{はじめに}
-プロセッサメーカは、消費電力、発熱及びクロックの限界という観点から、
-マルチコア構成の路線を打ち出しており、今後ますますマルチコアプロセッサが主流になると想像できる。
+プロセッサメーカは, 消費電力, 発熱及びクロックの限界という観点から, 
+マルチコア構成の路線を打ち出しており, 今後ますますマルチコアプロセッサが主流になると想像できる.
 
-マルチコアプロセッサ上で、リソースを有効活用するためには、並列プログラミングを行う必要があるが、
-効率の良い並列プログラミングを書くことは難しい。
+マルチコアプロセッサ上で, リソースを有効活用するためには, 並列プログラムを行う必要があるが, 
+効率の良い並列プログラムを書くことは難しい.
 
-そこで, 本研究室で作成した Cerium Task Manager をマルチコアプロセッサに対応させることで,
+そこで, 本研究室で作成した Cerium Task Manager\cite{gongo:2008:os} をマルチコアプロセッサに対応させることで,
 マルチコアプロセッサ上での Task 単位による並列プログラミングをサポートする.
 
-今まで, Cerium Task Manager は, PlayStation 3/Cell 上でのみ, 並列実行を可能にしていたが,
+今まで, Cerium Task Manager は, PlayStation 3/Cell\cite{cell} 上でのみ, 並列実行を可能にしていたが,
 今回新たに Mac OS X, Linux 上での並列実行に対応した.
 
-本論文では, まず既存の Cerium Task Manager の実装について説明する( \ref{section:cerium}節 ). 
-その後, 新たに実装した並列実行の機構について説明する( \ref{section:impl}節 ).
+本論文では, まず既存の Cerium Task Manager の実装について説明する. 
+その後, 新たに実装した並列実行の機構について説明する.
 
 \section{Cerium Task Manager}\label{section:cerium}
-Cerium Task Manager は, Cell用に開発されたゲームフレームワークであり、
+Cerium Task Manager は, Cell用に開発されたゲームフレームワークであり, 
 Rendering Engine を含む.
 
 Cerium Task Manager では, 並列処理を Task 単位で記述する.
@@ -120,15 +121,15 @@
 それぞれのプラットフォームで同じプログラムを動作させることができる.
 これにより, アーキテクチャに依存しないプログラムを記述することが可能である.
 
-\subsection{Cerium Task Managerの特長}
-Cerium Task Managerでは、プログラムの様々なレベルでパイプラインが構成されるので,
-プログラムの性能向上が見込める.
+\subsection{Cerium Task Manager の特長}
+Cerium Task Manager では, プログラムの様々なレベルでパイプラインが構成されるので,
+プログラムの性能向上が見込める\cite{kaito:master}.
 
 また, Task 自体は入力データから, 出力データを計算するだけなので非常に単純だが,
 その入出力データをダブルバッファリングとして切り替えたり, 
-適切な並列度が得られるように徐々に生成するのは非常に煩雑となる。
-さらに、これらのデータ管理は, 並列実行を行うアーキテクチャに特化した処理が必要となる.
-Cerium Task Managerを利用することで、このような煩わしいことから解放され, 
+適切な並列度が得られるように徐々に生成するのは非常に煩雑となる.
+さらに, これらのデータ管理は, 並列実行を行うアーキテクチャに特化した処理が必要となる.
+Cerium Task Manager を利用することで, このような煩わしいことから解放され, 
 並列計算の実装に集中することができる.
 
 
@@ -138,114 +139,62 @@
 
 今回新たに, Mac OS X, Linux 上でも並列に実行させることを可能にした.
 これは, PlayStation 3/Cell の Mailbox に対応させる形で, 
-Synchronized Queue を用いてMac OS X, Linux 側の Cerium Task Manager の設計をし直したものである.
-\begin{thebibliography}{99}
+Synchronized Queue を用いて Mac OS X, Linux 側の Cerium Task Manager の設計をし直したものである.
+
+\subsection{Mailbox}
+Mailbox は, Cell の機能の1つである.
+Mailbox は, PPE と SPE の間を双方向で, 32 bit メッセージの受け渡しが可能であり,
+FIFO キュー構造になっている.
+
+\begin{figure}[h]
+\begin{center}
+\includegraphics[scale=0.4]{./pic/Mailbox.eps}
+\end{center}
+\caption{Mailbox}
+\label{fig:mailbox}
+\end{figure}
+
+\subsection{Synchronized Queue}
+Maiilbox に対応させる形で作成した, Linux 上で動作する同期キューである.
+キューを操作しているスレッドが常に1つになるよう, バイナリセマフォで管理されている.
+各スレッドは, input 用と output 用として Synchronized Queue を2つ持っており, 
+管理スレッドからタスクを受けて並列に実行するようになっている.
+
+\subsection{ベンチマーク}
+0からnまでに含まれる素数の探索を行う例題を用いた.
+表\ref{table:benchmark}に結果を示す.
+
+{\bf 実験環境}
+\begin{itemize}
+\item OS : CentOS 6.0
+\item CPU : Intel(R) Xeon(R) CPU X5650 @2.67GHz (仮想環境で 4 コアのみ使用)
+\item Memory : 8GB
+\end{itemize}
+
+\begin{table}[h]
+\begin{center}
+\caption{ベンチマーク}
+\label{table:benchmark}
+\begin{tabular}[t]{l||l|l}
+\hline
+スレッド数 & $\displaystyle n =10^6$ & $\displaystyle n =10^7 $\\
+\hline\hline
+1 スレッド & 239 ms & 2641 ms\\
+\hline
+4 スレッド & 104 ms & 1010 ms\\
+\hline
+\end{tabular}
+\end{center}
+\end{table}
+
+表\ref{table:benchmark}から, 台数効果が出ていることが確認できる.
+
+\section{まとめ}
+本稿では, 既存の Cerium Task Manager の実装と新しい並列実行の機構について説明した.
+新しく実装した並列実行の機構を用いることによって, Mac OS X, Linux 上でのマルチプロセッサ環境に対応できる. 
 
 
-\bibitem{pipeline}
-{多賀野海人}.
-\newblock {Cell Task Manager Cerium における Task を用いたパイプラインの改良}.
-\newblock {琉球大学理工学研究科情報工学専攻 平成22年度学位論文}, {Feb} 2011.
-
-\bibitem{gongo}
-{宮國渡}.
-\newblock {Cell用の Fine-Grain Task Manager の実装}.
-\newblock {琉球大学理工学研究科情報工学専攻 平成20年度学位論文}, {Feb} 2009.
-
-\bibitem{amdahl}
-{Brian Goetz, Tim Peierls, Joshua Bloch, Joseph Bowbeer, David Holmes, and Doug
-  Lea}.
-\newblock {\em {Java Concurrency in Prac-tice}}.
-\newblock {Addison-Wesley Professional}, 2005.
-
-\bibitem{cell}
-{Sony Corporation}.
-\newblock {Cell BroadbandEngine \texttrademark アーキテクチャ}, 2006.
-
-\bibitem{libspe2}
-{International Business Machines Corporation, Sony Computer Entertainment
-  Incorporated, Toshiba Corporation}.
-\newblock {\em {SPE Runtime Management Library Version 2.3}}, 2008.
-
-\bibitem{cell_cpp}
-{International Business Machines Corporation, Sony Computer Entertainment
-  Incorporated, Toshiba Corporation}.
-\newblock {\em {C/C++ Language Extensions for Cell Broadband Engine
-  Architecture Version 2.6}}, 2008.
-
-\bibitem{spurs}
-{Keisuke Inoue}.
-\newblock {SPU Centric Execution Model}, 2006.
-
-\bibitem{chiaki}
-{Chiaki SUGIYAMA}.
-\newblock {SceneGraph と StatePattern
-  を用いたゲームフレームワークの設計と実装}.
-\newblock {琉球大学工学部情報工学科 平成19年度卒業論文}, 2008.
-
-\bibitem{blender}
-{blender.org}.
-\newblock {http://blender.org/}.
-
-\bibitem{akamine}
-{赤嶺一樹, 河野真治}.
-\newblock {Meta Engine を用いた Federated Linda の実験}.
-\newblock {日本ソフトウェア科学会第 27 会大会(2010 年度)}, {Sep} 2010.
-
-\bibitem{akira}
-{Akira KAMIZATO}.
-\newblock {Cell を用いたゲームフレームワークの提案}.
-\newblock {琉球大学理工学研究科情報工学専攻 平成19年度学位論文}, 2008.
-
-\bibitem{cell_abi}
-{International Business Machines Corporation, Sony Computer Entertainment
-  Incorporated, Toshiba Corporation}.
-\newblock {\em {Cell Broadband Engine Linux Reference Implementation 
-  Application Binary Interface Specification}},
-
-\bibitem{webpage1}
-{SourceForge.JP: Cerium Rendering Engine}.
-\newblock {https//sourceforge.jp/projects/cerium/}.
-
-bibitem{osmesa}
-{The Mesa 3D Graphics Library}.
-\newblock {http://www.mesa3d.org/}.
-
-\bibitem{fedora}
-{Fedora Project}.
-\newblock {http://fedoraproject.org/}.
-
-\bibitem{ydl}
-{Yellow Dog Linux for PowerPC Computers}.
-\newblock {http://us.fixstars.com/products/ydl/}.
-
-\bibitem{cerium}
-{SourceForge.JP: Cerium Rendering Engine}.
-\newblock {https//sourceforge.jp/projects/cerium/}.
-
-\bibitem{cell_sdk}
-{International Business Machines Corporation}.
-\newblock {\em {Software Development Kit for Multicore Acceleration Version 
-  3.1}}, 2008.
-
-\bibitem{gongo2}
-{Wataru MIYAGUNI}.
-\newblock {Cell 用の Fine-grain Task Manager の実装}.
-\newblock {情報処理学会
-  システムソフトウェアとオペレーティング・システム研究会}, April 2008.
-
-\bibitem{sdl}
-{Simple DirectMedia Layer}.
-\newblock {http://www.libsdl.org/}.
-
-\bibitem{opencl}
-{Aaftab Munshi, Khronos OpenCL Working Group}.
-\newblock {\em {The OpenCL Specification Version 1.0}}, 2007.
-
-\bibitem{gallium}
-{Gallium3D}.
-\newblock {http://www.tungstengraphics.com/wiki/index.php/Gallium3D}.
-
-\end{thebibliography}
+\bibliographystyle{junsrt}
+\bibliography{cerium}
 
 \end{document}