Mercurial > hg > Papers > 2013 > yuhi-thesis
changeset 0:bfb53e7aa3e3
first commit
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/presen/images/ex_2workitem.graffle Tue Feb 19 17:04:47 2013 +0900 @@ -0,0 +1,3243 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>ActiveLayerIndex</key> + <integer>0</integer> + <key>ApplicationVersion</key> + <array> + <string>com.omnigroup.OmniGrafflePro</string> + <string>138.17.0.133677</string> + </array> + <key>AutoAdjust</key> + <true/> + <key>BackgroundGraphic</key> + <dict> + <key>Bounds</key> + <string>{{0, 0}, {1118.5601, 782.89001}}</string> + <key>Class</key> + <string>SolidGraphic</string> + <key>ID</key> + <integer>2</integer> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + </dict> + <key>CanvasOrigin</key> + <string>{0, 0}</string> + <key>ColumnAlign</key> + <integer>1</integer> + <key>ColumnSpacing</key> + <real>36</real> + <key>CreationDate</key> + <string>2012-07-20 05:13:08 +0000</string> + <key>Creator</key> + <string>渡真利 勇飛</string> + <key>DisplayScale</key> + <string>1 0/72 in = 1.0000 in</string> + <key>FileType</key> + <string>auto</string> + <key>GraphDocumentVersion</key> + <integer>6</integer> + <key>GraphicsList</key> + <array> + <dict> + <key>Bounds</key> + <string>{{89, 420.20312}, {726, 36}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>87</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Width</key> + <real>2</real> + </dict> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{769.5, 420.20312}, {44, 36}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>141</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Pattern</key> + <integer>1</integer> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1138\cocoasubrtf510 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 30}</string> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{725.5, 420.20312}, {44, 36}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>140</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Pattern</key> + <integer>1</integer> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1138\cocoasubrtf510 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 28}</string> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{681.5, 420.20312}, {44, 36}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>139</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Pattern</key> + <integer>1</integer> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1138\cocoasubrtf510 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 26}</string> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{637.5, 420.20312}, {44, 36}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>138</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Pattern</key> + <integer>1</integer> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1138\cocoasubrtf510 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 24}</string> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>Head</key> + <dict> + <key>ID</key> + <integer>113</integer> + </dict> + <key>ID</key> + <integer>137</integer> + <key>Points</key> + <array> + <string>{377, 51}</string> + <string>{376.76086, 106.70313}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>FilledArrow</string> + <key>TailArrow</key> + <string>0</string> + </dict> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{302, 145.25}, {87.5, 72}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>136</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Width</key> + <real>2</real> + </dict> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{302.5, 217.25}, {88, 65}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>135</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Width</key> + <real>2</real> + </dict> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{214, 145.25}, {88, 72}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>134</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Width</key> + <real>2</real> + </dict> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{214, 217.25}, {88, 65}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>52</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Width</key> + <real>2</real> + </dict> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{301.5, 145.25}, {44, 36}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>133</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Pattern</key> + <integer>1</integer> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1138\cocoasubrtf510 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 14}</string> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{345.5, 145.25}, {44, 36}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>132</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Pattern</key> + <integer>1</integer> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1138\cocoasubrtf510 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 15}</string> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{214, 145.25}, {44, 36}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>131</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Pattern</key> + <integer>1</integer> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1138\cocoasubrtf510 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 12}</string> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{258, 145.25}, {44, 36}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>130</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Pattern</key> + <integer>1</integer> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1138\cocoasubrtf510 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 13}</string> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{193.28003, 107.70312}, {366, 222}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>113</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Color</key> + <dict> + <key>b</key> + <string>0</string> + <key>g</key> + <string>1</string> + <key>r</key> + <string>0.0100658</string> + </dict> + <key>Width</key> + <real>2</real> + </dict> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{11, 424.20312}, {59, 28}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>YES</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>112</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Pad</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1138\cocoasubrtf510 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 host\ +outputData}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + <key>Wrap</key> + <string>NO</string> + </dict> + <dict> + <key>Bounds</key> + <string>{{155, 203.25}, {33, 14}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>YES</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>111</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Pad</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1138\cocoasubrtf510 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 kernel}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + <key>Wrap</key> + <string>NO</string> + </dict> + <dict> + <key>Bounds</key> + <string>{{11, 14}, {64, 28}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>YES</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>110</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Pad</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1138\cocoasubrtf510 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 host\ +(Input Data)}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + <key>Wrap</key> + <string>NO</string> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>ID</key> + <integer>109</integer> + <key>Points</key> + <array> + <string>{377.95905, 330.703}</string> + <string>{379.30078, 420.20312}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>FilledArrow</string> + <key>TailArrow</key> + <string>0</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>113</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{555.5, 431.20312}, {33, 14}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>96</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Pad</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1138\cocoasubrtf510 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 20}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{461, 431.20312}, {33, 14}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>95</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Pad</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1138\cocoasubrtf510 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 16}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{369, 431.20312}, {33, 14}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>94</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Pad</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1138\cocoasubrtf510 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 12}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{320.25, 431.20312}, {33, 14}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>93</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Pad</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1138\cocoasubrtf510 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 10}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{279.5, 431.20312}, {33, 14}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>92</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Pad</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1138\cocoasubrtf510 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 8}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{231, 431.20312}, {33, 14}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>91</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Pad</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1138\cocoasubrtf510 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 6}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{187.5, 431.20312}, {28, 14}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>90</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Pad</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1138\cocoasubrtf510 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 4}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{152, 431.20312}, {7, 14}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>YES</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>89</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Pad</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1138\cocoasubrtf510 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 2}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + <key>Wrap</key> + <string>NO</string> + </dict> + <dict> + <key>Bounds</key> + <string>{{106.5, 431.20312}, {7, 14}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>YES</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>88</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Pad</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1138\cocoasubrtf510 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 0}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + <key>Wrap</key> + <string>NO</string> + </dict> + <dict> + <key>Bounds</key> + <string>{{409.5, 420.20312}, {44, 36}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>86</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Pattern</key> + <integer>1</integer> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1138\cocoasubrtf510 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 14}</string> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{225.5, 420.20312}, {44, 36}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>85</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Pattern</key> + <integer>1</integer> + </dict> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{317.5, 420.20312}, {44, 36}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>84</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Pattern</key> + <integer>1</integer> + </dict> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{133.5, 420.20312}, {44, 36}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>83</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Pattern</key> + <integer>1</integer> + </dict> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{501.5, 420.20312}, {44, 36}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>82</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Pattern</key> + <integer>1</integer> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1138\cocoasubrtf510 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 18}</string> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{593.5, 420.20312}, {44, 36}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>81</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Pattern</key> + <integer>1</integer> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1138\cocoasubrtf510 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 22}</string> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{305.5, 127.25}, {90, 18}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>YES</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>78</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Pad</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1138\cocoasubrtf510 +{\fonttbl\f0\fnil\fcharset128 HiraKakuProN-W3;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 \'83\'8f\'81\'5b\'83\'4e\'83\'4f\'83\'8b\'81\'5b\'83\'764}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + <key>Wrap</key> + <string>NO</string> + </dict> + <dict> + <key>Bounds</key> + <string>{{209, 127.25}, {90, 18}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>YES</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>77</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Pad</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1138\cocoasubrtf510 +{\fonttbl\f0\fnil\fcharset128 HiraKakuProN-W3;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 \'83\'8f\'81\'5b\'83\'4e\'83\'4f\'83\'8b\'81\'5b\'83\'763}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + <key>Wrap</key> + <string>NO</string> + </dict> + <dict> + <key>Bounds</key> + <string>{{301.5, 297.75}, {90, 18}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>YES</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>76</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Pad</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1138\cocoasubrtf510 +{\fonttbl\f0\fnil\fcharset128 HiraKakuProN-W3;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 \'83\'8f\'81\'5b\'83\'4e\'83\'4f\'83\'8b\'81\'5b\'83\'762}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + <key>Wrap</key> + <string>NO</string> + </dict> + <dict> + <key>Bounds</key> + <string>{{209, 297.75}, {90, 18}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>YES</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>75</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Pad</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1138\cocoasubrtf510 +{\fonttbl\f0\fnil\fcharset128 HiraKakuProN-W3;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 \'83\'8f\'81\'5b\'83\'4e\'83\'4f\'83\'8b\'81\'5b\'83\'761}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + <key>Wrap</key> + <string>NO</string> + </dict> + <dict> + <key>Bounds</key> + <string>{{345.5, 181.25}, {44, 36}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>64</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Pattern</key> + <integer>1</integer> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1138\cocoasubrtf510 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 11}</string> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{301.5, 181.25}, {44, 36}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>63</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Pattern</key> + <integer>1</integer> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1138\cocoasubrtf510 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 10}</string> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{258, 181.25}, {44, 36}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>62</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Pattern</key> + <integer>1</integer> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1138\cocoasubrtf510 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 9}</string> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{214, 181.25}, {44, 36}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>61</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Pattern</key> + <integer>1</integer> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1138\cocoasubrtf510 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 8}</string> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{346.5, 210.25}, {44, 36}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>60</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Pattern</key> + <integer>1</integer> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1138\cocoasubrtf510 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 7}</string> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{302.5, 210.25}, {44, 36}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>59</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Pattern</key> + <integer>1</integer> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1138\cocoasubrtf510 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 6}</string> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{258, 210.25}, {44, 36}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>58</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Pattern</key> + <integer>1</integer> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1138\cocoasubrtf510 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 5}</string> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{214, 210.25}, {44, 36}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>57</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Pattern</key> + <integer>1</integer> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1138\cocoasubrtf510 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 4}</string> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{346, 246.25}, {44, 36}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>56</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Pattern</key> + <integer>1</integer> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1138\cocoasubrtf510 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 3}</string> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{302, 246.25}, {44, 36}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>55</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Pattern</key> + <integer>1</integer> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1138\cocoasubrtf510 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 2}</string> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{258, 246.25}, {44, 36}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>54</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Pattern</key> + <integer>1</integer> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1138\cocoasubrtf510 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 1}</string> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{214, 246.25}, {44, 36}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>53</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Pattern</key> + <integer>1</integer> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1138\cocoasubrtf510 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 0}</string> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{553.5, 19}, {33, 14}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>22</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Pad</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1138\cocoasubrtf510 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 10}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{459, 19}, {33, 14}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>21</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Pad</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1138\cocoasubrtf510 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 8}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{367, 19}, {33, 14}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>20</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Pad</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1138\cocoasubrtf510 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 6}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{318.25, 19}, {33, 14}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>19</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Pad</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1138\cocoasubrtf510 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 5}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{277.5, 19}, {33, 14}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>18</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Pad</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1138\cocoasubrtf510 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 4}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{229, 19}, {33, 14}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>17</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Pad</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1138\cocoasubrtf510 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 3}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{185.5, 19}, {28, 14}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>16</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Pad</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1138\cocoasubrtf510 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 2}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{150, 19}, {7, 14}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>YES</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>15</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Pad</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1138\cocoasubrtf510 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 1}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + <key>Wrap</key> + <string>NO</string> + </dict> + <dict> + <key>Bounds</key> + <string>{{104.5, 19}, {7, 14}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>YES</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>14</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Pad</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1138\cocoasubrtf510 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 0}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + <key>Wrap</key> + <string>NO</string> + </dict> + <dict> + <key>Bounds</key> + <string>{{85.5, 8}, {726, 36}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>1</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Width</key> + <real>2</real> + </dict> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{407.5, 8}, {44, 36}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>11</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Pattern</key> + <integer>1</integer> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1138\cocoasubrtf510 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 7}</string> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{223.5, 8}, {44, 36}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>9</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Pattern</key> + <integer>1</integer> + </dict> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{315.5, 8}, {44, 36}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>10</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Pattern</key> + <integer>1</integer> + </dict> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{131.5, 8}, {44, 36}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>8</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Pattern</key> + <integer>1</integer> + </dict> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{499.5, 8}, {44, 36}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>13</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Pattern</key> + <integer>1</integer> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1138\cocoasubrtf510 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 9}</string> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{591.5, 8}, {44, 36}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>12</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Pattern</key> + <integer>1</integer> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1138\cocoasubrtf510 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 11}</string> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{635.5, 8}, {44, 36}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>126</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Pattern</key> + <integer>1</integer> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1138\cocoasubrtf510 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 12}</string> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{679.5, 8}, {44, 36}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>127</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Pattern</key> + <integer>1</integer> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1138\cocoasubrtf510 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 13}</string> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{723.5, 8}, {44, 36}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>129</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Pattern</key> + <integer>1</integer> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1138\cocoasubrtf510 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 14}</string> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{767.5, 8}, {44, 36}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>128</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Pattern</key> + <integer>1</integer> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1138\cocoasubrtf510 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 15}</string> + </dict> + </dict> + </array> + <key>GridInfo</key> + <dict/> + <key>GuidesLocked</key> + <string>NO</string> + <key>GuidesVisible</key> + <string>YES</string> + <key>HPages</key> + <integer>2</integer> + <key>ImageCounter</key> + <integer>1</integer> + <key>KeepToScale</key> + <false/> + <key>Layers</key> + <array> + <dict> + <key>Lock</key> + <string>NO</string> + <key>Name</key> + <string>レイヤー 1</string> + <key>Print</key> + <string>YES</string> + <key>View</key> + <string>YES</string> + </dict> + </array> + <key>LayoutInfo</key> + <dict> + <key>Animate</key> + <string>NO</string> + <key>circoMinDist</key> + <real>18</real> + <key>circoSeparation</key> + <real>0.0</real> + <key>layoutEngine</key> + <string>dot</string> + <key>neatoSeparation</key> + <real>0.0</real> + <key>twopiSeparation</key> + <real>0.0</real> + </dict> + <key>LinksVisible</key> + <string>NO</string> + <key>MagnetsVisible</key> + <string>NO</string> + <key>MasterSheets</key> + <array/> + <key>ModificationDate</key> + <string>2012-10-02 08:48:26 +0000</string> + <key>Modifier</key> + <string>yuhi</string> + <key>NotesVisible</key> + <string>NO</string> + <key>Orientation</key> + <integer>2</integer> + <key>OriginVisible</key> + <string>NO</string> + <key>PageBreaks</key> + <string>YES</string> + <key>PrintInfo</key> + <dict> + <key>NSBottomMargin</key> + <array> + <string>float</string> + <string>41</string> + </array> + <key>NSLeftMargin</key> + <array> + <string>float</string> + <string>18</string> + </array> + <key>NSPaperSize</key> + <array> + <string>size</string> + <string>{595.28003, 841.89001}</string> + </array> + <key>NSRightMargin</key> + <array> + <string>float</string> + <string>18</string> + </array> + <key>NSTopMargin</key> + <array> + <string>float</string> + <string>18</string> + </array> + </dict> + <key>PrintOnePage</key> + <false/> + <key>QuickLookPreview</key> + <data> + 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 + /NDT339x0OOcgnf3PO7+sSDprNHjrQszgjWVRiIM4jko+YTLjKDEqyTZdeyBFb+rRA0i + Oi1xy457VEJgIdmGFU/DPsX9u9SjUq57SFpeM0qW2PeSpHmcNvi+kZtXQqCRajtZPE1a + ftokz1xHi5eaV4OfSy/vUnaunqevb1PgJP2hB8RdTnXe4CddztygMc1Qtp56o8yF1LNZ + fVFNTEzZRwOTyM5tGZ7GyHDNveA6RAY3sYJM6pNcQmade2682RSrg3nqOSk2qWMlJJ7t + qoHFx80Ml/aScjDuYsRamoxS6lilCEptsoyUmJRJ1ZK5gdbuvXXkjtUL8Tq+eaGsmj1e + wAe8lgAtGqC8p3HdmLn38aJ5Bi8WmwDAMhdSl9miAVq0PA0vPm6/EC9T0V5+hYgCP3Uj + H+WCDadBfleBEkm+fuVp5S7WcnEVYEpHW3EslpVNU6seezFCF/oCrg3pfPyVOy4xGOVN + uutR+4VUo6EdzzA7hDBectOi39dTUopdLFSerdq7BJoiyDoKJ2mgPL+tpUEpiWtrKslQ + f01t7NzM/4eDChJHADTnhhEv+0sfj6o08MYGTS9675Q6d3GMIo/H5nlM9VzF/IQCUnh8 + i8KujYGNFYVsrB+81Qf7x5kc4VUAr8hY5U3lo9c9gVah6S+gJYkFZQbQIpSBcihPLGmA + 83glpfoVAoqH3ffphFsP6rBQVOoA/EgD5aCeWMoAvUNNnmQmlMnN/q8SBn4ldFWnXb2n + BLPmqz1lBSR+OLDoygC3NGCQXUMNr5aPY2cHpmPGCjTVlwFRfab/UcGa9D21/4EqjmLl + hSfKYE6UFYpL0BD5CGYTn4SiDBQUK1jpVx62rQYpm3sOoSgzM2iqLw+oPoNiYrGxyENP + RnGr6XF9LJp+RY3iAjT4P/Eb89pWBIppwKC4hpV+8GOhP0SRZ2bQVF8eUH0WRWFZoEhD + T0aRf7vw0liMpgVxeRfHb6bUJWStyZv0Qx4ueo001zpneIEkbVK//B/cA0agCmVuZHN0 + cmVhbQplbmRvYmoKNiAwIG9iagozMjgyCmVuZG9iagozIDAgb2JqCjw8IC9UeXBlIC9Q + YWdlIC9QYXJlbnQgNCAwIFIgL1Jlc291cmNlcyA3IDAgUiAvQ29udGVudHMgNSAwIFIg + L01lZGlhQm94IFswIDAgMTExOC41NiA3ODIuODldCi9Dcm9wQm94IFswIDAgMTExOC41 + NiA3ODIuODldID4+CmVuZG9iago3IDAgb2JqCjw8IC9Qcm9jU2V0IFsgL1BERiAvVGV4 + dCBdIC9Db2xvclNwYWNlIDw8IC9DczIgOSAwIFIgL0NzMSA4IDAgUiA+PiAvRm9udCA8 + PAovVFQxLjAgMTAgMCBSIC9DMiAxMSAwIFIgPj4gPj4KZW5kb2JqCjEyIDAgb2JqCjw8 + IC9MZW5ndGggMTMgMCBSIC9OIDEgL0FsdGVybmF0ZSAvRGV2aWNlR3JheSAvRmlsdGVy + IC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAGFVU1sG1UQHmfXDqrCigO0VSuVJ/5aRWm0 + CRQSKqCunTppItfND5BSFW3Xz/HWm91ld+02UU+5kBNUAiGuIIR6A4GoWn7U5tJeiqhU + BVTIBalIrQAJAao4AOKb9dpZh0PWevb35s3Mm/lmxkvUfdHwPLtLEM07oV+YzM6+PHtM + dN+gLtKoh/AYZuBlS6UJxo7rSP7tfO59SymW3NzLvjrPNt2lyzIwoXUFyy0H5jxRSifK + 9JmeHxJ1H4d86HToMX4b+MHa9GQO+DywFtsC0kMF6UjfMkXBNxZEyXcrlp2MdbNz9rHp + M2/XOVZ+dmH1BLWpcfz2IuYzVX90EvhZ4PdNY2QKuA94zQsPshw6XffVazPZprxrsOIf + monlJxar0y8BPwCdZSscmwbuB37XOVk8Eutfrbnj7Gc75L+bQe4Y8GNEypaqHOPaCOD+ + ssyPACMGpVitj7J/+FGWg8YUyxlfWKzmisC4S7l9yjhcAt4K/KfvTvJdjxCpW6Rd4Lvg + X+3zwhLLh4BLjl3ku5CLuiyDKMc9wJ+E1enRWP/70J9mW/bzb8U6NAYMHtLCs6Meehp4 + wq9PcmxPAC8Z/kgBGH7S56Uzw7wxvlE28sztU8B/0YspgyS5dBLfJjn0D/INyKJGhDzy + cVbB3qYCNBwsn6zU/VSDTFDyvGVnURUnIewcrAYZVIqsml4ElbETNMd+cBMj9nsn2psb + dHPQcWgRPkR8/91Yz1W3qbr6JNZ+dUJ9Th1Sh0moL6gH1OfVPKTD6v7IxoftAryu58E3 + 3oXXpqfXqJ6M59yO+h7Pe+eNJf9Vy/zmzd86LN123HOIq7lrcwL23CRHyK0W6/8UsyGT + fF07++X2RIRiVb14/GbPtbN0JFmLqDrljbVI307fSa/i+1Z6Lekj/UN6DZ9blEW97IjZ + eWTHHMqI6wJ4MJBxgIjqqCtHv7cjxxXYhdCx6UecuZFVgAr8DctaxFSy5ome6MiXc2cf + HRlXnHM7PO/Eh8yrfL14r0hLffrH+i/6B/p3+q/6qv4e0M8d0bT6pNUlUfcpbymfKV8p + l5TPlesklCvKinJZuap8pHyB3aeQriiX4IV1Wz3X7LF274CzZheacX8xD9yxQcQcazNv + LG1FcApn65lL5Lbxhs5+bt+lHdR2ao9qee1h7XFtQuvV9mkHtG3aINaANqrtxsnOdt/Y + cTV5tpI9a9FsxGazkhxVFfz6iNLAZz0unlOLZhC3RacjBoKoDg5m4P/TynOFuUi9gt61 + 1F3qgDoWz1FW3YdJGu+YqSGetMxIJp/Jksj0ZoYzA5nDjBF9c8pEZjdOh/E90s6IWTGT + Oh15yYQec9pke31e+F+Je4m9NIBt7GQoz+CdRZRzvQXfmquGYlDXnxFZvCKlGHPM/j5h + 2LaIjgLhy0D6DVnuJ37/sh3RH0ej92pq63Wz7jeaMkqlvib6DyJqiOoKZW5kc3RyZWFt + CmVuZG9iagoxMyAwIG9iagoxMDg4CmVuZG9iago5IDAgb2JqClsgL0lDQ0Jhc2VkIDEy + IDAgUiBdCmVuZG9iagoxNCAwIG9iago8PCAvTGVuZ3RoIDE1IDAgUiAvTiAzIC9BbHRl + cm5hdGUgL0RldmljZVJHQiAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAGF + Vd9v21QUPolvUqQWPyBYR4eKxa9VU1u5GxqtxgZJk6XtShal6dgqJOQ6N4mpGwfb6baq + T3uBNwb8AUDZAw9IPCENBmJ72fbAtElThyqqSUh76MQPISbtBVXhu3ZiJ1PEXPX6yznf + Oec7517bRD1fabWaGVWIlquunc8klZOnFpSeTYrSs9RLA9Sr6U4tkcvNEi7BFffO6+Ed + igjL7ZHu/k72I796i9zRiSJPwG4VHX0Z+AxRzNRrtksUvwf7+Gm3BtzzHPDTNgQCqwKX + fZwSeNHHJz1OIT8JjtAq6xWtCLwGPLzYZi+3YV8DGMiT4VVuG7oiZpGzrZJhcs/hL49x + tzH/Dy6bdfTsXYNY+5yluWO4D4neK/ZUvok/17X0HPBLsF+vuUlhfwX4j/rSfAJ4H1H0 + qZJ9dN7nR19frRTeBt4Fe9FwpwtN+2p1MXscGLHR9SXrmMgjONd1ZxKzpBeA71b4tNhj + 6JGoyFNp4GHgwUp9qplfmnFW5oTdy7NamcwCI49kv6fN5IAHgD+0rbyoBc3SOjczohby + S1drbq6pQdqumllRC/0ymTtej8gpbbuVwpQfyw66dqEZyxZKxtHpJn+tZnpnEdrYBbue + F9qQn93S7HQGGHnYP7w6L+YGHNtd1FJitqPAR+hERCNOFi1i1alKO6RQnjKUxL1GNjwl + MsiEhcPLYTEiT9ISbN15OY/jx4SMshe9LaJRpTvHr3C/ybFYP1PZAfwfYrPsMBtnE6Sw + N9ib7AhLwTrBDgUKcm06FSrTfSj187xPdVQWOk5Q8vxAfSiIUc7Z7xr6zY/+hpqwSyv0 + I0/QMTRb7RMgBxNodTfSPqdraz/sDjzKBrv4zu2+a2t0/HHzjd2Lbcc2sG7GtsL42K+x + LfxtUgI7YHqKlqHK8HbCCXgjHT1cAdMlDetv4FnQ2lLasaOl6vmB0CMmwT/IPszSueHQ + qv6i/qluqF+oF9TfO2qEGTumJH0qfSv9KH0nfS/9TIp0Wboi/SRdlb6RLgU5u++9nyXY + e69fYRPdil1o1WufNSdTTsp75BfllPy8/LI8G7AUuV8ek6fkvfDsCfbNDP0dvRh0CrNq + TbV7LfEEGDQPJQadBtfGVMWEq3QWWdufk6ZSNsjG2PQjp3ZcnOWWing6noonSInvi0/E + x+IzAreevPhe+CawpgP1/pMTMDo64G0sTCXIM+KdOnFWRfQKdJvQzV1+Bt8OokmrdtY2 + yhVX2a+qrykJfMq4Ml3VR4cVzTQVz+UoNne4vcKLoyS+gyKO6EHe+75Fdt0Mbe5bRIf/ + wjvrVmhbqBN97RD1vxrahvBOfOYzoosH9bq94uejSOQGkVM6sN/7HelL4t10t9F4gPdV + zydEOx83Gv+uNxo7XyL/FtFl8z9ZAHF4CmVuZHN0cmVhbQplbmRvYmoKMTUgMCBvYmoK + MTA0NwplbmRvYmoKOCAwIG9iagpbIC9JQ0NCYXNlZCAxNCAwIFIgXQplbmRvYmoKNCAw + IG9iago8PCAvVHlwZSAvUGFnZXMgL01lZGlhQm94IFswIDAgNjEyIDc5Ml0gL0NvdW50 + IDEgL0tpZHMgWyAzIDAgUiBdID4+CmVuZG9iagoxNiAwIG9iago8PCAvVHlwZSAvQ2F0 + YWxvZyAvT3V0bGluZXMgMiAwIFIgL1BhZ2VzIDQgMCBSID4+CmVuZG9iagoyIDAgb2Jq + Cjw8IC9MYXN0IDE3IDAgUiAvRmlyc3QgMTggMCBSID4+CmVuZG9iagoxOCAwIG9iago8 + PCAvUGFyZW50IDE5IDAgUiAvQ291bnQgMCAvRGVzdCBbIDMgMCBSIC9YWVogMCA3ODIu + ODkgbnVsbCBdIC9UaXRsZSAo/v8wrTDjMPMw0DC5XDAwMCBcMDAwMSkKPj4KZW5kb2Jq + CjE5IDAgb2JqCjw8ID4+CmVuZG9iagoxNyAwIG9iago8PCAvUGFyZW50IDE5IDAgUiAv + Q291bnQgMCAvRGVzdCBbIDMgMCBSIC9YWVogMCA3ODIuODkgbnVsbCBdIC9UaXRsZSAo + /v8wrTDjMPMw0DC5XDAwMCBcMDAwMSkKPj4KZW5kb2JqCjEwIDAgb2JqCjw8IC9UeXBl + IC9Gb250IC9TdWJ0eXBlIC9UcnVlVHlwZSAvQmFzZUZvbnQgL1RHUlZKTitIZWx2ZXRp + Y2EgL0ZvbnREZXNjcmlwdG9yCjIwIDAgUiAvRW5jb2RpbmcgL01hY1JvbWFuRW5jb2Rp + bmcgL0ZpcnN0Q2hhciAzMiAvTGFzdENoYXIgMTE3IC9XaWR0aHMgWyAyNzgKMCAwIDAg + MCAwIDAgMCAzMzMgMzMzIDAgMCAwIDAgMCAwIDU1NiA1NTYgNTU2IDU1NiA1NTYgNTU2 + IDU1NiA1NTYgNTU2IDU1NgowIDAgMCAwIDAgMCAwIDAgMCAwIDcyMiAwIDAgMCAwIDI3 + OCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwCjAgMCAwIDAgNTU2 + IDAgMCAwIDU1NiAwIDAgNTU2IDAgMCA1MDAgMjIyIDAgNTU2IDU1NiA1NTYgMCAzMzMg + NTAwIDI3OCA1NTYKXSA+PgplbmRvYmoKMjAgMCBvYmoKPDwgL1R5cGUgL0ZvbnREZXNj + cmlwdG9yIC9Gb250TmFtZSAvVEdSVkpOK0hlbHZldGljYSAvRmxhZ3MgMzIgL0ZvbnRC + Qm94IFstOTUxIC00ODEgMTQ0NSAxMTIyXQovSXRhbGljQW5nbGUgMCAvQXNjZW50IDc3 + MCAvRGVzY2VudCAtMjMwIC9DYXBIZWlnaHQgNzE3IC9TdGVtViAwIC9YSGVpZ2h0CjYz + NyAvTWF4V2lkdGggMTUwMCAvRm9udEZpbGUyIDIxIDAgUiA+PgplbmRvYmoKMjEgMCBv + YmoKPDwgL0xlbmd0aCAyMiAwIFIgL0xlbmd0aDEgMTE3ODggL0ZpbHRlciAvRmxhdGVE + ZWNvZGUgPj4Kc3RyZWFtCngBvTp5fBRF1lV9TPfc95mZzEwmc+W+JgeJpAm5OA0JR4IE + k0AgXIIYoiBgUM6grAqECCqeiCAyhAgTWFxUXORz1/vAc3UFlvXbrO5+eDM93+ueECG/ + 3f35h7/t/r2qelXV1a/eVa+qu33pslakRJ2IRDXTm5fMQeKVehYhIm/WouYlcVyfDPmp + WR3trjhOBxAiF85ZMndRHGe3ISRzzF24fPB5A/Q357W1Ns+Ot6PLkOe3QUUcx3mQJ7ct + ar8tjuv6IF+ycPGswXb9RcBHLGq+bfD96GPAXTc1L2qN908V+icvWXxL+yBeD/mMJUtb + B/tjwMnXEYZaO7ofSdECxCACaeBuRIi5KHMgClqFdrgWbB5ouVFd8g3SsiJ+44TfiPmZ + F0q++771sl9+H/sDVEiv9BdySZAPIqTA0D4gv2+oRXwOEnsE1aVG0BiAUoAQQGrqKAvq + xHvQvQCPAJBoHt6MlgNsAngAgBoqPQ1YP97cS7HcMbwc2fBYTk45JxusTotM7nwrgiV9 + Dzs/sHxxHFtBep9ja68SSUfJ8CN4N5qNnPhJ5MUrUDUK4J2HgwudTdD0NFoC0AlAiinG + T/cm5jifx2nIS2F4xocSKXzE+ZfsdOf57AiBe50v+iMUZC8kAsapnScdDzt/55jrfB5g + f7xpXxB6HHE+7Vjo3JoYwTt7nfc7IhieuS+eLXPAo0eci4LdztnZYvv47gixv9dZBO1T + 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 + u4l7e95+G46nNkVv5Wk8M0xuuXzjQ/xjAm0YlcU+Bp/RCevUcS61WrfRSRQpKvXT9HP1 + 1AhWoWSQQqZWqZbp9HqdSu3S6RmkN8vMISAsibMp71CpHLoRaooKuU47lFqm0LYYFbqS + qtxxiX8zcAq8zEBpFKR97tIVSQtmADQDySguepC9BdxQwOLEUsJHJsJBIXxmcNF2sAmp + BRLspAJIkgAJa43bhuB6NCWCuAVZN4L3v0rOfj0YBAlGkptDGQ2EOynZH9Wt4iY/svNo + Z+O6zAcXEReju6/LSa+Z9zLW/cQPHOT/T4MX7SxO/MPK7ieqOSlJPssv9end/Euv8v/z + 8h9EGU6IfUR56IdhhfSjp7miW23YzHpZv7Xeuh5twBulTBUrc/vdIZXKQJ5mQgm0PwS2 + EiTWJBZqF5tlRIksOdscrAqIjIkWrRxXe9uKTAu4iUF7GAAWCQyKO2Svz+5Sm5CE9rnU + iQHsMyYHkF0PJcEmMEU6Ne4A9pr8AeTQQSLYhOgrcNwABAtYgxvBJ5uMHljTwAv/zA5P + EtJqRP8s+hOJ0QDuuepEr8Yzau2OXtnImVPn92EF/79n+I9HrcLj19yzek/7wd330A// + sHZK1nT+r/zlG9IDF869xL+Ns+HYUX4Mz/7xk9/dedPpnbs2CufZGM5kBX3vhHWojsun + 5VaiUD5CUaQcq5xCTKVaiKOMbKWyT/mykiSkWKkagdSUVEEo4ZPaYhVbKH1Gpa3SiGwC + N3peUHBQedB4UBsMjrMRGyWwZAtuUKfPL3CHqMyK8/XT0h0Zp8svbtpx+SLd+dBovu/k + 8Z2zPsY7cfffDzwHn/hAz98H3/YgRFdmOJV8lauaiqdJp6sb9LNxq3SBep7+Vq90jOZ2 + a4dnqfcW/8rslTkbrRtcG/wbMzZm91iVVWwO61UR3hx5SKtNo0OJtDmUpiQK4YBg/VFV + YXBxJluYAOXnDIWZeVW5cfUXl4Gf/d1A3GQHZRxKybC7dCZSaUo3BJAiVRXAMh0Lau6A + hHISAWzMMAeQMgUSxk4HMOmCZMjTiV4uLuNB9ybIUXdVGUEskwcmEHdwYCBgCp6kZKgr + IJ5Y33nXne3dczY+uW/dmse3P8g/l3L9xXdf+7LcV9OQeyN/8U3+TytXkNy6GTXr109v + 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 + VvJ9WHQQrZIhiVJGg++yMBaL3AQzCSrkNhsOCsS+dcXFTxCcl2DiIP64/yotERRCWEZx + IxZPNoUDJS04/wIxNgCpaL240JZ112/LvX37CE/e3K3n69LxQSozWlSb17R3+kOE6qc3 + H74uZfIDtZuIszaBZvGKtcI/TP/qskMlqDx4ZOHEPn5ef+W03g47rTRUDn9JjYP/h66H + v7Rq4c+rKfDNYRqqFwfD8AeXEJbDj6jwTyuaXFU7dezE1OrWhR2t7fNmNUN9vFXocRsA + rFtoG8ATAPC7onDuit4BOAdwCTpTAAaAZIA8gHKAyQCzAdoB1gJsA3gCoA/gFMA7AOcA + LsFkKQADQHJs8IJx0VAZI9cwPDAMDw7Ds4bhsBG9ZrycYXjuMDxvGB4ahucPwwuG4YXD + cPjadM37y4fhsMhe0y5I4Or5izpwFT/ahrUvGIYL/0dd/bwQwVyNLx6GLxmGLx2G3zIM + bx+GLxPw/welRh+xCmVuZHN0cmVhbQplbmRvYmoKMjIgMCBvYmoKNzg1MAplbmRvYmoK + MTEgMCBvYmoKPDwgL1R5cGUgL0ZvbnQgL1N1YnR5cGUgL1R5cGUwIC9FbmNvZGluZyAv + SWRlbnRpdHktSCAvRGVzY2VuZGFudEZvbnRzIFsyMyAwIFJdCi9CYXNlRm9udCAvQ05K + TklFK0hpcmFLYWt1UHJvTi1XMyA+PgplbmRvYmoKMjMgMCBvYmoKPDwgL1R5cGUgL0Zv + bnQgL1N1YnR5cGUgL0NJREZvbnRUeXBlMCAvQmFzZUZvbnQgL0NOSk5JRStIaXJhS2Fr + dVByb04tVzMgL0NJRFN5c3RlbUluZm8KPDwgL1JlZ2lzdHJ5IChBZG9iZSkgL09yZGVy + aW5nIChKYXBhbjEpIC9TdXBwbGVtZW50IDYgPj4gL1cgMjQgMCBSIC9EVyAxMDAwCi9G + b250RGVzY3JpcHRvciAyNSAwIFIgPj4KZW5kb2JqCjI0IDAgb2JqClsgMTggWyA2NTcg + NjU3IDY1NyA2NjEgXSBdCmVuZG9iagoyNSAwIG9iago8PCAvVHlwZSAvRm9udERlc2Ny + aXB0b3IgL0ZvbnROYW1lIC9DTkpOSUUrSGlyYUtha3VQcm9OLVczIC9GbGFncyAzMiAv + Rm9udEJCb3gKWy00MTggLTQwNSAxMjY0IDEyOThdIC9JdGFsaWNBbmdsZSAwIC9Bc2Nl + bnQgMTI2NiAvRGVzY2VudCAtMzczIC9DYXBIZWlnaHQKMTEyNSAvU3RlbVYgNDAgL1hI + ZWlnaHQgODQ0IC9TdGVtSCA0MCAvQXZnV2lkdGggMTAwMCAvTWF4V2lkdGggMTY4MCAv + Rm9udEZpbGUzCjI2IDAgUiA+PgplbmRvYmoKMjYgMCBvYmoKPDwgL0xlbmd0aCAyNyAw + IFIgL1N1YnR5cGUgL0NJREZvbnRUeXBlMEMgL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4K + c3RyZWFtCngBdZULUFNXGsfz4ibiNR1zeyXkpsnFrl0VRV0fq60rS7GCFsXlIWm3qEEC + CUQSkshDsBVYIMlNICEpFAEFTQLhsbCmUSlFassiY5fHVi2WIrbutrrrWuluZ86NN+7s + pU5nHd39Zs7MOf9zzvf7zn/mnMNkcFgMJpMZlrYnLikpMTJepZO/Ls89slen2bM6bf38 + VDyJkWI7LCFfYJISViLMvgJzgkuCC8ScSTHnnyFA7niBcfuPEXwHLP2xA7/48Di8VAxl + wT8TMw2LxUwlvEzMTH6OwWUyIZg40TcyE5OpyVDskmvleetiNdpinSpbacDfWn7orRX4 + ui1b1q/+xdq1v8S3y1V5Kq1Wk4cnH9IpFHn47qzsKDxWE7UKTzBkRuExajWeNL9Tjycp + 9ApdgSIzar78bFWeBlfpcTlu0MkzFYflulxck/V/0j113pj5eO1pF35Ud/9P9fWnVQYd + AgbCeJ6BspzsLnY3+yr7Dvseg8Gig3aTDsZC2nLGbkYDE2deZG1lKVh/ZivZ33PyOTd+ + PhT4xxDzwVAgYYj9IDCH/jsl8P7DFO6mNJQaD4ZRE2RYSGDlo2F6RIYBuoU8WvHoY5Tu + LQFjwSUhj1aeRQMtXDARDA/hB5Z5CgLxE7ZCAfh4GpkEGwPxaG2H29qFXQpOQemm3Eql + 5O9QZZ+p4wMReZSLrL1Uc9E+KkH2VueUmFVYAoSsVRRZavOldKbWAvtngecmBSRxE9lL + HrajiG2w21Ttk97iItoqhcr0BkZdhRoGGj2d73f7u9qnPwLQlPukt4d39typgYsiELpy + iopcH5cv2y/JySpVlsbeOiasG3SeOenhnfN+2DaGff/pm9F7cg4sj5dSvK0ms/JwQqo8 + RZdQqjCWHt/Kq+06YbmC0YWUT4LRCdA1LiCLZpJmkbsXwDa0RdZwpFXPSx34XDOHgVf+ + dQtgnxo+OtAjVbnV9b+x9zvbHO6TPGTufKf70qgIwGumqGUb4nS/PSDR5b9jOCqbLRbW + 99U1NbbwetvPN49ic5ff2JhdmqXTS9XqN0t3Ylq9tdYg3cqt8bis7RhyF4R/lrp81auJ + FE92oOGMSqpuO9ZaMsTjB1Z4CsC+ibhJsrJQQG76POY60tEJZGhNt9fyCQZaN0L7TRra + 9G8hZDtt++kB0dd93HMuU1WfdJaLbK7KzjfJMQWYgaYtnbYRya8hg5K+GnLKTk0KC3QG + TYGeh2wnhUaUGoLAUXCuo8/V3eoNr5KZc/eJ+ODBVeZtcA+t8bZarmHkDWj8tNnYJZ3h + VqtLzDFY8AsoTmux5Un55K8Cn6BVysL9ip07KH705ogdHcXvljfr7l//8i+j98E3dqGS + WpxILdgWFUlxI6KpyN3uQkdZUx54aQywpu/88NV314DYDyLqewmLs+GgX1h5zGhWYpS/ + iiDeNta3OJvdl95rJwjnezw+uTQwiFapCtMVux6zXqNZFTTrGs36Dnxj+4m1JpLizbP2 + uAsc5fOsPwHWl3d+uHXvKsB8QPSYlTokfLvSSCjNlK1aWFxhNpVJ65ufwJEcF+qXuTJc + +wY9wtzRoo6MIR4VEY/601yHHmuXi7y0xicf+nUT035BoNoP+H5EFigJJKLB41BKocWm + kL7CtXW3Wy5ipB1KpgyrqBepzRRrm2yvZp3Wne84fiL3ZueFtuHe+6N/nR35anjmA8D8 + PVjCQy6YnHZzHTbc3z88nN6flJSenixFiiotVZYKydw02uPRqqTIBfpFU+Vo2rt7PJ4e + CR+0BWrQGoPlnWwRlX2MClNvkOREpcZu2eUterf8VP63twfGe+7+Yc5x3QHOWEcJotbF + Ay83oLV6gtglqgzeJA6aKyqPhvvSnTarpcEW3mgjiJa6kdO+U+e9X4+MzX4IuNq2CmeB + R78tc2dKUto+We5mtZ2cE/ZbWmxnJPxAxBgTvDzFBiYSR41NBDEuAq+SndxCKkazPHnD + doqDR1Obkl26urKmXMA7/7fLU9OAATiDYLEXFNd2WR3Opoyzwt8VlpkzsGAjpFdbrUek + Vi1RbsnkUdFcubnEaJDwGWz6h1kdS0rhl4hFT/wdfjHUKyAjnlW/EJD4U6pPzGULqBpC + HLKDgCShIcalh9bAC3yhvoU+GPbBiyzwYlptbEg9BQselj7/zMqR0LGFIzA89szKsiay + txkcbPpv0iuhNxZegeEb8KInM/4HlLMu3QplbmRzdHJlYW0KZW5kb2JqCjI3IDAgb2Jq + CjE2NTAKZW5kb2JqCjI4IDAgb2JqCihNYWMgT1MgWCAxMC43LjUgUXVhcnR6IFBERkNv + bnRleHQpCmVuZG9iagoyOSAwIG9iagooRDoyMDEyMTAwMjA4NDk0OFowMCcwMCcpCmVu + ZG9iagoxIDAgb2JqCjw8IC9Qcm9kdWNlciAyOCAwIFIgL0NyZWF0aW9uRGF0ZSAyOSAw + IFIgL01vZERhdGUgMjkgMCBSID4+CmVuZG9iagp4cmVmCjAgMzAKMDAwMDAwMDAwMCA2 + NTUzNSBmIAowMDAwMDE3NjUxIDAwMDAwIG4gCjAwMDAwMDYyNjYgMDAwMDAgbiAKMDAw + MDAwMzM5OCAwMDAwMCBuIAowMDAwMDA2MTE3IDAwMDAwIG4gCjAwMDAwMDAwMjIgMDAw + MDAgbiAKMDAwMDAwMzM3OCAwMDAwMCBuIAowMDAwMDAzNTM5IDAwMDAwIG4gCjAwMDAw + MDYwODEgMDAwMDAgbiAKMDAwMDAwNDg3NCAwMDAwMCBuIAowMDAwMDA2NTYyIDAwMDAw + IG4gCjAwMDAwMTUxNDcgMDAwMDAgbiAKMDAwMDAwMzY2MSAwMDAwMCBuIAowMDAwMDA0 + ODUzIDAwMDAwIG4gCjAwMDAwMDQ5MTAgMDAwMDAgbiAKMDAwMDAwNjA2MCAwMDAwMCBu + IAowMDAwMDA2MjAwIDAwMDAwIG4gCjAwMDAwMDY0NDkgMDAwMDAgbiAKMDAwMDAwNjMx + NCAwMDAwMCBuIAowMDAwMDA2NDI3IDAwMDAwIG4gCjAwMDAwMDY5NjAgMDAwMDAgbiAK + MDAwMDAwNzE4NSAwMDAwMCBuIAowMDAwMDE1MTI2IDAwMDAwIG4gCjAwMDAwMTUyNzkg + MDAwMDAgbiAKMDAwMDAxNTQ4NCAwMDAwMCBuIAowMDAwMDE1NTI3IDAwMDAwIG4gCjAw + MDAwMTU3ODYgMDAwMDAgbiAKMDAwMDAxNzUzNiAwMDAwMCBuIAowMDAwMDE3NTU3IDAw + MDAwIG4gCjAwMDAwMTc2MDkgMDAwMDAgbiAKdHJhaWxlcgo8PCAvU2l6ZSAzMCAvUm9v + dCAxNiAwIFIgL0luZm8gMSAwIFIgL0lEIFsgPGJmYTViMWU1YjBkYjllMTA5MmRiYmFh + NTA0ZWYxZDI1Pgo8YmZhNWIxZTViMGRiOWUxMDkyZGJiYWE1MDRlZjFkMjU+IF0gPj4K + c3RhcnR4cmVmCjE3NzI2CiUlRU9GCjEgMCBvYmoKPDwvQXV0aG9yIDxmZWZmNmUyMTc3 + MWY1MjI5MDAyMDUyYzc5OGRiMDAwYTAwNzkwMDc1MDA2ODAwNjk+IC9DcmVhdGlvbkRh + dGUgKEQ6MjAxMjA3MjAwNTEzMDBaKS9DcmVhdG9yIChPbW5pR3JhZmZsZSBQcm9mZXNz + aW9uYWwgNS4yLjMpL01vZERhdGUgKEQ6MjAxMjEwMDIwODQ4MDBaKS9Qcm9kdWNlciAy + OCAwIFIgL1RpdGxlICh3b3JraXRlbSk+PgplbmRvYmoKeHJlZgoxIDEKMDAwMDAxODQ4 + NCAwMDAwMCBuIAp0cmFpbGVyCjw8L0lEIFs8YmZhNWIxZTViMGRiOWUxMDkyZGJiYWE1 + MDRlZjFkMjU+IDxiZmE1YjFlNWIwZGI5ZTEwOTJkYmJhYTUwNGVmMWQyNT5dIC9JbmZv + IDEgMCBSIC9QcmV2IDE3NzI2IC9Sb290IDE2IDAgUiAvU2l6ZSAzMD4+CnN0YXJ0eHJl + ZgoxODY5OQolJUVPRgo= + </data> + <key>QuickLookThumbnail</key> + <data> + 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 + AIsAkACVAJoAnwCjAKgArQCyALcAvADBAMYAywDQANUA2wDgAOUA6wDwAPYA+wEBAQcB + DQETARkBHwElASsBMgE4AT4BRQFMAVIBWQFgAWcBbgF1AXwBgwGLAZIBmgGhAakBsQG5 + AcEByQHRAdkB4QHpAfIB+gIDAgwCFAIdAiYCLwI4AkECSwJUAl0CZwJxAnoChAKOApgC + ogKsArYCwQLLAtUC4ALrAvUDAAMLAxYDIQMtAzgDQwNPA1oDZgNyA34DigOWA6IDrgO6 + A8cD0wPgA+wD+QQGBBMEIAQtBDsESARVBGMEcQR+BIwEmgSoBLYExATTBOEE8AT+BQ0F + HAUrBToFSQVYBWcFdwWGBZYFpgW1BcUF1QXlBfYGBgYWBicGNwZIBlkGagZ7BowGnQav + BsAG0QbjBvUHBwcZBysHPQdPB2EHdAeGB5kHrAe/B9IH5Qf4CAsIHwgyCEYIWghuCIII + lgiqCL4I0gjnCPsJEAklCToJTwlkCXkJjwmkCboJzwnlCfsKEQonCj0KVApqCoEKmAqu + CsUK3ArzCwsLIgs5C1ELaQuAC5gLsAvIC+EL+QwSDCoMQwxcDHUMjgynDMAM2QzzDQ0N + Jg1ADVoNdA2ODakNww3eDfgOEw4uDkkOZA5/DpsOtg7SDu4PCQ8lD0EPXg96D5YPsw/P + D+wQCRAmEEMQYRB+EJsQuRDXEPURExExEU8RbRGMEaoRyRHoEgcSJhJFEmQShBKjEsMS + 4xMDEyMTQxNjE4MTpBPFE+UUBhQnFEkUahSLFK0UzhTwFRIVNBVWFXgVmxW9FeAWAxYm + FkkWbBaPFrIW1hb6Fx0XQRdlF4kXrhfSF/cYGxhAGGUYihivGNUY+hkgGUUZaxmRGbcZ + 3RoEGioaURp3Gp4axRrsGxQbOxtjG4obshvaHAIcKhxSHHscoxzMHPUdHh1HHXAdmR3D + HeweFh5AHmoelB6+HukfEx8+H2kflB+/H+ogFSBBIGwgmCDEIPAhHCFIIXUhoSHOIfsi + JyJVIoIiryLdIwojOCNmI5QjwiPwJB8kTSR8JKsk2iUJJTglaCWXJccl9yYnJlcmhya3 + JugnGCdJJ3onqyfcKA0oPyhxKKIo1CkGKTgpaymdKdAqAio1KmgqmyrPKwIrNitpK50r + 0SwFLDksbiyiLNctDC1BLXYtqy3hLhYuTC6CLrcu7i8kL1ovkS/HL/4wNTBsMKQw2zES + MUoxgjG6MfIyKjJjMpsy1DMNM0YzfzO4M/E0KzRlNJ402DUTNU01hzXCNf02NzZyNq42 + 6TckN2A3nDfXOBQ4UDiMOMg5BTlCOX85vDn5OjY6dDqyOu87LTtrO6o76DwnPGU8pDzj + PSI9YT2hPeA+ID5gPqA+4D8hP2E/oj/iQCNAZECmQOdBKUFqQaxB7kIwQnJCtUL3QzpD + fUPARANER0SKRM5FEkVVRZpF3kYiRmdGq0bwRzVHe0fASAVIS0iRSNdJHUljSalJ8Eo3 + Sn1KxEsMS1NLmkviTCpMcky6TQJNSk2TTdxOJU5uTrdPAE9JT5NP3VAnUHFQu1EGUVBR + m1HmUjFSfFLHUxNTX1OqU/ZUQlSPVNtVKFV1VcJWD1ZcVqlW91dEV5JX4FgvWH1Yy1ka + WWlZuFoHWlZaplr1W0VblVvlXDVchlzWXSddeF3JXhpebF69Xw9fYV+zYAVgV2CqYPxh + T2GiYfViSWKcYvBjQ2OXY+tkQGSUZOllPWWSZedmPWaSZuhnPWeTZ+loP2iWaOxpQ2ma + afFqSGqfavdrT2una/9sV2yvbQhtYG25bhJua27Ebx5veG/RcCtwhnDgcTpxlXHwckty + pnMBc11zuHQUdHB0zHUodYV14XY+dpt2+HdWd7N4EXhueMx5KnmJeed6RnqlewR7Y3vC + fCF8gXzhfUF9oX4BfmJ+wn8jf4R/5YBHgKiBCoFrgc2CMIKSgvSDV4O6hB2EgITjhUeF + q4YOhnKG14c7h5+IBIhpiM6JM4mZif6KZIrKizCLlov8jGOMyo0xjZiN/45mjs6PNo+e + kAaQbpDWkT+RqJIRknqS45NNk7aUIJSKlPSVX5XJljSWn5cKl3WX4JhMmLiZJJmQmfya + aJrVm0Kbr5wcnImc951kndKeQJ6unx2fi5/6oGmg2KFHobaiJqKWowajdqPmpFakx6U4 + pammGqaLpv2nbqfgqFKoxKk3qamqHKqPqwKrdavprFys0K1ErbiuLa6hrxavi7AAsHWw + 6rFgsdayS7LCszizrrQltJy1E7WKtgG2ebbwt2i34LhZuNG5SrnCuju6tbsuu6e8Ibyb + vRW9j74KvoS+/796v/XAcMDswWfB48JfwtvDWMPUxFHEzsVLxcjGRsbDx0HHv8g9yLzJ + Osm5yjjKt8s2y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR + 1lXW2Ndc1+DYZNjo2WzZ8dp22vvbgNwF3IrdEN2W3hzeot8p36/gNuC94UThzOJT4tvj + Y+Pr5HPk/OWE5g3mlucf56noMui86Ubp0Opb6uXrcOv77IbtEe2c7ijutO9A78zwWPDl + 8XLx//KM8xnzp/Q09ML1UPXe9m32+/eK+Bn4qPk4+cf6V/rn+3f8B/yY/Sn9uv5L/tz/ + bf//cGFyYQAAAAAAAwAAAAJmZgAA8qcAAA1ZAAAT0AAACg52Y2d0AAAAAAAAAAEAAQAA + AAAAAAABAAAAAQAAAAAAAAABAAAAAQAAAAAAAAABAABuZGluAAAAAAAAADYAAKlAAABR + gAAANQAAAKsAAAAkwAAAEYAAAFBAAABUQAACMzMAAjMzAAIzMwAAAAAAAAAAc2YzMgAA + AAAAAQu3AAAFlv//81cAAAcpAAD91///+7f///2mAAAD2gAAwPZtbW9kAAAAAAAAHm0A + AFeUAANxm8XnO4AAAAAAAAAAAAAAAAAAAAAA + </data> + <key>ReadOnly</key> + <string>NO</string> + <key>RowAlign</key> + <integer>1</integer> + <key>RowSpacing</key> + <real>36</real> + <key>SheetTitle</key> + <string>キャンバス 1</string> + <key>SmartAlignmentGuidesActive</key> + <string>YES</string> + <key>SmartDistanceGuidesActive</key> + <string>YES</string> + <key>UniqueID</key> + <integer>1</integer> + <key>UseEntirePage</key> + <false/> + <key>VPages</key> + <integer>1</integer> + <key>WindowInfo</key> + <dict> + <key>CurrentSheet</key> + <integer>0</integer> + <key>ExpandedCanvases</key> + <array/> + <key>ListView</key> + <true/> + <key>OutlineWidth</key> + <integer>142</integer> + <key>RightSidebar</key> + <false/> + <key>ShowRuler</key> + <true/> + <key>Sidebar</key> + <true/> + <key>SidebarWidth</key> + <integer>120</integer> + <key>VisibleRegion</key> + <string>{{0, 0}, {932, 623}}</string> + <key>Zoom</key> + <real>1</real> + <key>ZoomValues</key> + <array> + <array> + <string>キャンバス 1</string> + <real>1</real> + <real>1</real> + </array> + </array> + </dict> + <key>saveQuickLookFiles</key> + <string>YES</string> +</dict> +</plist>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/presen/index.html Tue Feb 19 17:04:47 2013 +0900 @@ -0,0 +1,65 @@ +<!DOCTYPE html> + +<html> + <head> + <title>Presentation</title> + + <meta charset='utf-8'> + <script + src='./slides.js'></script> + </head> + + <style> + /* Your individual styles here, or just use inline styles if that’s + what you want. */ + + </style> + + <body style='display: none'> + <section class='slides layout-regular template-default'> + + <!-- + Your slides (<article>s) go here. Delete or comment out the + slides below. + --> + <article class='nobackground'> + <h1>Cerium TaskManagerのGPGPUのサポート</h1> + <p>Yuhi TOMARI</p> + <p>Feb 21,2013</p> + </article> + <article class='nobackground'> + <h3>研究目的</h3> + <p> + 当研究室ではプログラムの並列度と信頼性の向上を目指す。 + その一環としてCellおよびLinux、Mac OSX上で動く並列プログラミングフレームワーク、 + Ceriumの開発・改良を行っている。 + </p> + <p> + CeriumにOpenCLを組み込む事でGpu上での並列実行にも対応すると、 + CPU・GPUそれぞれにtaskを割り振ることが可能となる。</p> + <p> + これにより、ヘテロジニアス(異種混合)な環境で + それぞれのアーキテクチャに適したプログラミングをサポートする。</p> + </article> + <article> + <h3>GPGPU</h3> + <p> + GPUは画像処理を専門とする演算装置であり、主な用途がゲームや動画再生のため、 + 演算資源は余りがちになる。 + </p> + <p> + GPGPU(General-Purpose computing on Graphics Processing Units)とは、 + GPUを演算資源として画像処理以外に応用する技術の事である。 + </p> + </article> + <article> + <h3>OpenCL</h3> + <p> + OpenCLはGPGPUのようなヘテロジニアス環境を利用した並列計算を支援するフレームワークである。 + </p> + </article> + <!--- <img src='images/flow_chart.jpg' width="300" height="500"> --> + + </body> +</html> +es
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/presen/prettify.js Tue Feb 19 17:04:47 2013 +0900 @@ -0,0 +1,1391 @@ +// Copyright (C) 2006 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + + +/** + * @fileoverview + * some functions for browser-side pretty printing of code contained in html. + * + * <p> + * For a fairly comprehensive set of languages see the + * <a href="http://google-code-prettify.googlecode.com/svn/trunk/README.html#langs">README</a> + * file that came with this source. At a minimum, the lexer should work on a + * number of languages including C and friends, Java, Python, Bash, SQL, HTML, + * XML, CSS, Javascript, and Makefiles. It works passably on Ruby, PHP and Awk + * and a subset of Perl, but, because of commenting conventions, doesn't work on + * Smalltalk, Lisp-like, or CAML-like languages without an explicit lang class. + * <p> + * Usage: <ol> + * <li> include this source file in an html page via + * {@code <script type="text/javascript" src="/path/to/prettify.js"></script>} + * <li> define style rules. See the example page for examples. + * <li> mark the {@code <pre>} and {@code <code>} tags in your source with + * {@code class=prettyprint.} + * You can also use the (html deprecated) {@code <xmp>} tag, but the pretty + * printer needs to do more substantial DOM manipulations to support that, so + * some css styles may not be preserved. + * </ol> + * That's it. I wanted to keep the API as simple as possible, so there's no + * need to specify which language the code is in, but if you wish, you can add + * another class to the {@code <pre>} or {@code <code>} element to specify the + * language, as in {@code <pre class="prettyprint lang-java">}. Any class that + * starts with "lang-" followed by a file extension, specifies the file type. + * See the "lang-*.js" files in this directory for code that implements + * per-language file handlers. + * <p> + * Change log:<br> + * cbeust, 2006/08/22 + * <blockquote> + * Java annotations (start with "@") are now captured as literals ("lit") + * </blockquote> + * @requires console + */ + +// JSLint declarations +/*global console, document, navigator, setTimeout, window */ + +/** + * Split {@code prettyPrint} into multiple timeouts so as not to interfere with + * UI events. + * If set to {@code false}, {@code prettyPrint()} is synchronous. + */ +window['PR_SHOULD_USE_CONTINUATION'] = true; + +/** the number of characters between tab columns */ +window['PR_TAB_WIDTH'] = 8; + +/** Contains functions for creating and registering new language handlers. + * @type {Object} + */ +window['PR'] + +/** Pretty print a chunk of code. + * + * @param {string} sourceCodeHtml code as html + * @return {string} code as html, but prettier + */ + = window['prettyPrintOne'] +/** Find all the {@code <pre>} and {@code <code>} tags in the DOM with + * {@code class=prettyprint} and prettify them. + * @param {Function?} opt_whenDone if specified, called when the last entry + * has been finished. + */ + = window['prettyPrint'] = void 0; + + +(function () { + // Keyword lists for various languages. + var FLOW_CONTROL_KEYWORDS = + "break continue do else for if return while "; + var C_KEYWORDS = FLOW_CONTROL_KEYWORDS + "auto case char const default " + + "double enum extern float goto int long register short signed sizeof " + + "static struct switch typedef union unsigned void volatile "; + var COMMON_KEYWORDS = C_KEYWORDS + "catch class delete false import " + + "new operator private protected public this throw true try typeof "; + var CPP_KEYWORDS = COMMON_KEYWORDS + "alignof align_union asm axiom bool " + + "concept concept_map const_cast constexpr decltype " + + "dynamic_cast explicit export friend inline late_check " + + "mutable namespace nullptr reinterpret_cast static_assert static_cast " + + "template typeid typename using virtual wchar_t where "; + var JAVA_KEYWORDS = COMMON_KEYWORDS + + "abstract boolean byte extends final finally implements import " + + "instanceof null native package strictfp super synchronized throws " + + "transient "; + var CSHARP_KEYWORDS = JAVA_KEYWORDS + + "as base by checked decimal delegate descending dynamic event " + + "fixed foreach from group implicit in interface internal into is lock " + + "object out override orderby params partial readonly ref sbyte sealed " + + "stackalloc string select uint ulong unchecked unsafe ushort var "; + var COFFEE_KEYWORDS = "all and by catch class else extends false finally " + + "for if in is isnt loop new no not null of off on or return super then " + + "true try unless until when while yes "; + var JSCRIPT_KEYWORDS = COMMON_KEYWORDS + + "debugger eval export function get null set undefined var with " + + "Infinity NaN "; + var PERL_KEYWORDS = "caller delete die do dump elsif eval exit foreach for " + + "goto if import last local my next no our print package redo require " + + "sub undef unless until use wantarray while BEGIN END "; + var PYTHON_KEYWORDS = FLOW_CONTROL_KEYWORDS + "and as assert class def del " + + "elif except exec finally from global import in is lambda " + + "nonlocal not or pass print raise try with yield " + + "False True None "; + var RUBY_KEYWORDS = FLOW_CONTROL_KEYWORDS + "alias and begin case class def" + + " defined elsif end ensure false in module next nil not or redo rescue " + + "retry self super then true undef unless until when yield BEGIN END "; + var SH_KEYWORDS = FLOW_CONTROL_KEYWORDS + "case done elif esac eval fi " + + "function in local set then until "; + var ALL_KEYWORDS = ( + CPP_KEYWORDS + CSHARP_KEYWORDS + JSCRIPT_KEYWORDS + PERL_KEYWORDS + + PYTHON_KEYWORDS + RUBY_KEYWORDS + SH_KEYWORDS); + + // token style names. correspond to css classes + /** token style for a string literal */ + var PR_STRING = 'str'; + /** token style for a keyword */ + var PR_KEYWORD = 'kwd'; + /** token style for a comment */ + var PR_COMMENT = 'com'; + /** token style for a type */ + var PR_TYPE = 'typ'; + /** token style for a literal value. e.g. 1, null, true. */ + var PR_LITERAL = 'lit'; + /** token style for a punctuation string. */ + var PR_PUNCTUATION = 'pun'; + /** token style for a punctuation string. */ + var PR_PLAIN = 'pln'; + + /** token style for an sgml tag. */ + var PR_TAG = 'tag'; + /** token style for a markup declaration such as a DOCTYPE. */ + var PR_DECLARATION = 'dec'; + /** token style for embedded source. */ + var PR_SOURCE = 'src'; + /** token style for an sgml attribute name. */ + var PR_ATTRIB_NAME = 'atn'; + /** token style for an sgml attribute value. */ + var PR_ATTRIB_VALUE = 'atv'; + + /** + * A class that indicates a section of markup that is not code, e.g. to allow + * embedding of line numbers within code listings. + */ + var PR_NOCODE = 'nocode'; + + /** A set of tokens that can precede a regular expression literal in + * javascript. + * http://www.mozilla.org/js/language/js20/rationale/syntax.html has the full + * list, but I've removed ones that might be problematic when seen in + * languages that don't support regular expression literals. + * + * <p>Specifically, I've removed any keywords that can't precede a regexp + * literal in a syntactically legal javascript program, and I've removed the + * "in" keyword since it's not a keyword in many languages, and might be used + * as a count of inches. + * + * <p>The link a above does not accurately describe EcmaScript rules since + * it fails to distinguish between (a=++/b/i) and (a++/b/i) but it works + * very well in practice. + * + * @private + */ + var REGEXP_PRECEDER_PATTERN = function () { + var preceders = [ + "!", "!=", "!==", "#", "%", "%=", "&", "&&", "&&=", + "&=", "(", "*", "*=", /* "+", */ "+=", ",", /* "-", */ "-=", + "->", /*".", "..", "...", handled below */ "/", "/=", ":", "::", ";", + "<", "<<", "<<=", "<=", "=", "==", "===", ">", + ">=", ">>", ">>=", ">>>", ">>>=", "?", "@", "[", + "^", "^=", "^^", "^^=", "{", "|", "|=", "||", + "||=", "~" /* handles =~ and !~ */, + "break", "case", "continue", "delete", + "do", "else", "finally", "instanceof", + "return", "throw", "try", "typeof" + ]; + var pattern = '(?:^^|[+-]'; + for (var i = 0; i < preceders.length; ++i) { + pattern += '|' + preceders[i].replace(/([^=<>:&a-z])/g, '\\$1'); + } + pattern += ')\\s*'; // matches at end, and matches empty string + return pattern; + // CAVEAT: this does not properly handle the case where a regular + // expression immediately follows another since a regular expression may + // have flags for case-sensitivity and the like. Having regexp tokens + // adjacent is not valid in any language I'm aware of, so I'm punting. + // TODO: maybe style special characters inside a regexp as punctuation. + }(); + + + /** + * Given a group of {@link RegExp}s, returns a {@code RegExp} that globally + * matches the union of the sets of strings matched by the input RegExp. + * Since it matches globally, if the input strings have a start-of-input + * anchor (/^.../), it is ignored for the purposes of unioning. + * @param {Array.<RegExp>} regexs non multiline, non-global regexs. + * @return {RegExp} a global regex. + */ + function combinePrefixPatterns(regexs) { + var capturedGroupIndex = 0; + + var needToFoldCase = false; + var ignoreCase = false; + for (var i = 0, n = regexs.length; i < n; ++i) { + var regex = regexs[i]; + if (regex.ignoreCase) { + ignoreCase = true; + } else if (/[a-z]/i.test(regex.source.replace( + /\\u[0-9a-f]{4}|\\x[0-9a-f]{2}|\\[^ux]/gi, ''))) { + needToFoldCase = true; + ignoreCase = false; + break; + } + } + + function decodeEscape(charsetPart) { + if (charsetPart.charAt(0) !== '\\') { return charsetPart.charCodeAt(0); } + switch (charsetPart.charAt(1)) { + case 'b': return 8; + case 't': return 9; + case 'n': return 0xa; + case 'v': return 0xb; + case 'f': return 0xc; + case 'r': return 0xd; + case 'u': case 'x': + return parseInt(charsetPart.substring(2), 16) + || charsetPart.charCodeAt(1); + case '0': case '1': case '2': case '3': case '4': + case '5': case '6': case '7': + return parseInt(charsetPart.substring(1), 8); + default: return charsetPart.charCodeAt(1); + } + } + + function encodeEscape(charCode) { + if (charCode < 0x20) { + return (charCode < 0x10 ? '\\x0' : '\\x') + charCode.toString(16); + } + var ch = String.fromCharCode(charCode); + if (ch === '\\' || ch === '-' || ch === '[' || ch === ']') { + ch = '\\' + ch; + } + return ch; + } + + function caseFoldCharset(charSet) { + var charsetParts = charSet.substring(1, charSet.length - 1).match( + new RegExp( + '\\\\u[0-9A-Fa-f]{4}' + + '|\\\\x[0-9A-Fa-f]{2}' + + '|\\\\[0-3][0-7]{0,2}' + + '|\\\\[0-7]{1,2}' + + '|\\\\[\\s\\S]' + + '|-' + + '|[^-\\\\]', + 'g')); + var groups = []; + var ranges = []; + var inverse = charsetParts[0] === '^'; + for (var i = inverse ? 1 : 0, n = charsetParts.length; i < n; ++i) { + var p = charsetParts[i]; + switch (p) { + case '\\B': case '\\b': + case '\\D': case '\\d': + case '\\S': case '\\s': + case '\\W': case '\\w': + groups.push(p); + continue; + } + var start = decodeEscape(p); + var end; + if (i + 2 < n && '-' === charsetParts[i + 1]) { + end = decodeEscape(charsetParts[i + 2]); + i += 2; + } else { + end = start; + } + ranges.push([start, end]); + // If the range might intersect letters, then expand it. + if (!(end < 65 || start > 122)) { + if (!(end < 65 || start > 90)) { + ranges.push([Math.max(65, start) | 32, Math.min(end, 90) | 32]); + } + if (!(end < 97 || start > 122)) { + ranges.push([Math.max(97, start) & ~32, Math.min(end, 122) & ~32]); + } + } + } + + // [[1, 10], [3, 4], [8, 12], [14, 14], [16, 16], [17, 17]] + // -> [[1, 12], [14, 14], [16, 17]] + ranges.sort(function (a, b) { return (a[0] - b[0]) || (b[1] - a[1]); }); + var consolidatedRanges = []; + var lastRange = [NaN, NaN]; + for (var i = 0; i < ranges.length; ++i) { + var range = ranges[i]; + if (range[0] <= lastRange[1] + 1) { + lastRange[1] = Math.max(lastRange[1], range[1]); + } else { + consolidatedRanges.push(lastRange = range); + } + } + + var out = ['[']; + if (inverse) { out.push('^'); } + out.push.apply(out, groups); + for (var i = 0; i < consolidatedRanges.length; ++i) { + var range = consolidatedRanges[i]; + out.push(encodeEscape(range[0])); + if (range[1] > range[0]) { + if (range[1] + 1 > range[0]) { out.push('-'); } + out.push(encodeEscape(range[1])); + } + } + out.push(']'); + return out.join(''); + } + + function allowAnywhereFoldCaseAndRenumberGroups(regex) { + // Split into character sets, escape sequences, punctuation strings + // like ('(', '(?:', ')', '^'), and runs of characters that do not + // include any of the above. + var parts = regex.source.match( + new RegExp( + '(?:' + + '\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]' // a character set + + '|\\\\u[A-Fa-f0-9]{4}' // a unicode escape + + '|\\\\x[A-Fa-f0-9]{2}' // a hex escape + + '|\\\\[0-9]+' // a back-reference or octal escape + + '|\\\\[^ux0-9]' // other escape sequence + + '|\\(\\?[:!=]' // start of a non-capturing group + + '|[\\(\\)\\^]' // start/emd of a group, or line start + + '|[^\\x5B\\x5C\\(\\)\\^]+' // run of other characters + + ')', + 'g')); + var n = parts.length; + + // Maps captured group numbers to the number they will occupy in + // the output or to -1 if that has not been determined, or to + // undefined if they need not be capturing in the output. + var capturedGroups = []; + + // Walk over and identify back references to build the capturedGroups + // mapping. + for (var i = 0, groupIndex = 0; i < n; ++i) { + var p = parts[i]; + if (p === '(') { + // groups are 1-indexed, so max group index is count of '(' + ++groupIndex; + } else if ('\\' === p.charAt(0)) { + var decimalValue = +p.substring(1); + if (decimalValue && decimalValue <= groupIndex) { + capturedGroups[decimalValue] = -1; + } + } + } + + // Renumber groups and reduce capturing groups to non-capturing groups + // where possible. + for (var i = 1; i < capturedGroups.length; ++i) { + if (-1 === capturedGroups[i]) { + capturedGroups[i] = ++capturedGroupIndex; + } + } + for (var i = 0, groupIndex = 0; i < n; ++i) { + var p = parts[i]; + if (p === '(') { + ++groupIndex; + if (capturedGroups[groupIndex] === undefined) { + parts[i] = '(?:'; + } + } else if ('\\' === p.charAt(0)) { + var decimalValue = +p.substring(1); + if (decimalValue && decimalValue <= groupIndex) { + parts[i] = '\\' + capturedGroups[groupIndex]; + } + } + } + + // Remove any prefix anchors so that the output will match anywhere. + // ^^ really does mean an anchored match though. + for (var i = 0, groupIndex = 0; i < n; ++i) { + if ('^' === parts[i] && '^' !== parts[i + 1]) { parts[i] = ''; } + } + + // Expand letters to groups to handle mixing of case-sensitive and + // case-insensitive patterns if necessary. + if (regex.ignoreCase && needToFoldCase) { + for (var i = 0; i < n; ++i) { + var p = parts[i]; + var ch0 = p.charAt(0); + if (p.length >= 2 && ch0 === '[') { + parts[i] = caseFoldCharset(p); + } else if (ch0 !== '\\') { + // TODO: handle letters in numeric escapes. + parts[i] = p.replace( + /[a-zA-Z]/g, + function (ch) { + var cc = ch.charCodeAt(0); + return '[' + String.fromCharCode(cc & ~32, cc | 32) + ']'; + }); + } + } + } + + return parts.join(''); + } + + var rewritten = []; + for (var i = 0, n = regexs.length; i < n; ++i) { + var regex = regexs[i]; + if (regex.global || regex.multiline) { throw new Error('' + regex); } + rewritten.push( + '(?:' + allowAnywhereFoldCaseAndRenumberGroups(regex) + ')'); + } + + return new RegExp(rewritten.join('|'), ignoreCase ? 'gi' : 'g'); + } + + + /** + * Split markup into a string of source code and an array mapping ranges in + * that string to the text nodes in which they appear. + * + * <p> + * The HTML DOM structure:</p> + * <pre> + * (Element "p" + * (Element "b" + * (Text "print ")) ; #1 + * (Text "'Hello '") ; #2 + * (Element "br") ; #3 + * (Text " + 'World';")) ; #4 + * </pre> + * <p> + * corresponds to the HTML + * {@code <p><b>print </b>'Hello '<br> + 'World';</p>}.</p> + * + * <p> + * It will produce the output:</p> + * <pre> + * { + * source: "print 'Hello '\n + 'World';", + * // 1 2 + * // 012345678901234 5678901234567 + * spans: [0, #1, 6, #2, 14, #3, 15, #4] + * } + * </pre> + * <p> + * where #1 is a reference to the {@code "print "} text node above, and so + * on for the other text nodes. + * </p> + * + * <p> + * The {@code} spans array is an array of pairs. Even elements are the start + * indices of substrings, and odd elements are the text nodes (or BR elements) + * that contain the text for those substrings. + * Substrings continue until the next index or the end of the source. + * </p> + * + * @param {Node} node an HTML DOM subtree containing source-code. + * @return {Object} source code and the text nodes in which they occur. + */ + function extractSourceSpans(node) { + var nocode = /(?:^|\s)nocode(?:\s|$)/; + + var chunks = []; + var length = 0; + var spans = []; + var k = 0; + + var whitespace; + if (node.currentStyle) { + whitespace = node.currentStyle.whiteSpace; + } else if (window.getComputedStyle) { + whitespace = document.defaultView.getComputedStyle(node, null) + .getPropertyValue('white-space'); + } + var isPreformatted = whitespace && 'pre' === whitespace.substring(0, 3); + + function walk(node) { + switch (node.nodeType) { + case 1: // Element + if (nocode.test(node.className)) { return; } + for (var child = node.firstChild; child; child = child.nextSibling) { + walk(child); + } + var nodeName = node.nodeName; + if ('BR' === nodeName || 'LI' === nodeName) { + chunks[k] = '\n'; + spans[k << 1] = length++; + spans[(k++ << 1) | 1] = node; + } + break; + case 3: case 4: // Text + var text = node.nodeValue; + if (text.length) { + if (!isPreformatted) { + text = text.replace(/[ \t\r\n]+/g, ' '); + } else { + text = text.replace(/\r\n?/g, '\n'); // Normalize newlines. + } + // TODO: handle tabs here? + chunks[k] = text; + spans[k << 1] = length; + length += text.length; + spans[(k++ << 1) | 1] = node; + } + break; + } + } + + walk(node); + + return { + source: chunks.join('').replace(/\n$/, ''), + spans: spans + }; + } + + + /** + * Apply the given language handler to sourceCode and add the resulting + * decorations to out. + * @param {number} basePos the index of sourceCode within the chunk of source + * whose decorations are already present on out. + */ + function appendDecorations(basePos, sourceCode, langHandler, out) { + if (!sourceCode) { return; } + var job = { + source: sourceCode, + basePos: basePos + }; + langHandler(job); + out.push.apply(out, job.decorations); + } + + /** Given triples of [style, pattern, context] returns a lexing function, + * The lexing function interprets the patterns to find token boundaries and + * returns a decoration list of the form + * [index_0, style_0, index_1, style_1, ..., index_n, style_n] + * where index_n is an index into the sourceCode, and style_n is a style + * constant like PR_PLAIN. index_n-1 <= index_n, and style_n-1 applies to + * all characters in sourceCode[index_n-1:index_n]. + * + * The stylePatterns is a list whose elements have the form + * [style : string, pattern : RegExp, DEPRECATED, shortcut : string]. + * + * Style is a style constant like PR_PLAIN, or can be a string of the + * form 'lang-FOO', where FOO is a language extension describing the + * language of the portion of the token in $1 after pattern executes. + * E.g., if style is 'lang-lisp', and group 1 contains the text + * '(hello (world))', then that portion of the token will be passed to the + * registered lisp handler for formatting. + * The text before and after group 1 will be restyled using this decorator + * so decorators should take care that this doesn't result in infinite + * recursion. For example, the HTML lexer rule for SCRIPT elements looks + * something like ['lang-js', /<[s]cript>(.+?)<\/script>/]. This may match + * '<script>foo()<\/script>', which would cause the current decorator to + * be called with '<script>' which would not match the same rule since + * group 1 must not be empty, so it would be instead styled as PR_TAG by + * the generic tag rule. The handler registered for the 'js' extension would + * then be called with 'foo()', and finally, the current decorator would + * be called with '<\/script>' which would not match the original rule and + * so the generic tag rule would identify it as a tag. + * + * Pattern must only match prefixes, and if it matches a prefix, then that + * match is considered a token with the same style. + * + * Context is applied to the last non-whitespace, non-comment token + * recognized. + * + * Shortcut is an optional string of characters, any of which, if the first + * character, gurantee that this pattern and only this pattern matches. + * + * @param {Array} shortcutStylePatterns patterns that always start with + * a known character. Must have a shortcut string. + * @param {Array} fallthroughStylePatterns patterns that will be tried in + * order if the shortcut ones fail. May have shortcuts. + * + * @return {function (Object)} a + * function that takes source code and returns a list of decorations. + */ + function createSimpleLexer(shortcutStylePatterns, fallthroughStylePatterns) { + var shortcuts = {}; + var tokenizer; + (function () { + var allPatterns = shortcutStylePatterns.concat(fallthroughStylePatterns); + var allRegexs = []; + var regexKeys = {}; + for (var i = 0, n = allPatterns.length; i < n; ++i) { + var patternParts = allPatterns[i]; + var shortcutChars = patternParts[3]; + if (shortcutChars) { + for (var c = shortcutChars.length; --c >= 0;) { + shortcuts[shortcutChars.charAt(c)] = patternParts; + } + } + var regex = patternParts[1]; + var k = '' + regex; + if (!regexKeys.hasOwnProperty(k)) { + allRegexs.push(regex); + regexKeys[k] = null; + } + } + allRegexs.push(/[\0-\uffff]/); + tokenizer = combinePrefixPatterns(allRegexs); + })(); + + var nPatterns = fallthroughStylePatterns.length; + var notWs = /\S/; + + /** + * Lexes job.source and produces an output array job.decorations of style + * classes preceded by the position at which they start in job.source in + * order. + * + * @param {Object} job an object like {@code + * source: {string} sourceText plain text, + * basePos: {int} position of job.source in the larger chunk of + * sourceCode. + * } + */ + var decorate = function (job) { + var sourceCode = job.source, basePos = job.basePos; + /** Even entries are positions in source in ascending order. Odd enties + * are style markers (e.g., PR_COMMENT) that run from that position until + * the end. + * @type {Array.<number|string>} + */ + var decorations = [basePos, PR_PLAIN]; + var pos = 0; // index into sourceCode + var tokens = sourceCode.match(tokenizer) || []; + var styleCache = {}; + + for (var ti = 0, nTokens = tokens.length; ti < nTokens; ++ti) { + var token = tokens[ti]; + var style = styleCache[token]; + var match = void 0; + + var isEmbedded; + if (typeof style === 'string') { + isEmbedded = false; + } else { + var patternParts = shortcuts[token.charAt(0)]; + if (patternParts) { + match = token.match(patternParts[1]); + style = patternParts[0]; + } else { + for (var i = 0; i < nPatterns; ++i) { + patternParts = fallthroughStylePatterns[i]; + match = token.match(patternParts[1]); + if (match) { + style = patternParts[0]; + break; + } + } + + if (!match) { // make sure that we make progress + style = PR_PLAIN; + } + } + + isEmbedded = style.length >= 5 && 'lang-' === style.substring(0, 5); + if (isEmbedded && !(match && typeof match[1] === 'string')) { + isEmbedded = false; + style = PR_SOURCE; + } + + if (!isEmbedded) { styleCache[token] = style; } + } + + var tokenStart = pos; + pos += token.length; + + if (!isEmbedded) { + decorations.push(basePos + tokenStart, style); + } else { // Treat group 1 as an embedded block of source code. + var embeddedSource = match[1]; + var embeddedSourceStart = token.indexOf(embeddedSource); + var embeddedSourceEnd = embeddedSourceStart + embeddedSource.length; + if (match[2]) { + // If embeddedSource can be blank, then it would match at the + // beginning which would cause us to infinitely recurse on the + // entire token, so we catch the right context in match[2]. + embeddedSourceEnd = token.length - match[2].length; + embeddedSourceStart = embeddedSourceEnd - embeddedSource.length; + } + var lang = style.substring(5); + // Decorate the left of the embedded source + appendDecorations( + basePos + tokenStart, + token.substring(0, embeddedSourceStart), + decorate, decorations); + // Decorate the embedded source + appendDecorations( + basePos + tokenStart + embeddedSourceStart, + embeddedSource, + langHandlerForExtension(lang, embeddedSource), + decorations); + // Decorate the right of the embedded section + appendDecorations( + basePos + tokenStart + embeddedSourceEnd, + token.substring(embeddedSourceEnd), + decorate, decorations); + } + } + job.decorations = decorations; + }; + return decorate; + } + + /** returns a function that produces a list of decorations from source text. + * + * This code treats ", ', and ` as string delimiters, and \ as a string + * escape. It does not recognize perl's qq() style strings. + * It has no special handling for double delimiter escapes as in basic, or + * the tripled delimiters used in python, but should work on those regardless + * although in those cases a single string literal may be broken up into + * multiple adjacent string literals. + * + * It recognizes C, C++, and shell style comments. + * + * @param {Object} options a set of optional parameters. + * @return {function (Object)} a function that examines the source code + * in the input job and builds the decoration list. + */ + function sourceDecorator(options) { + var shortcutStylePatterns = [], fallthroughStylePatterns = []; + if (options['tripleQuotedStrings']) { + // '''multi-line-string''', 'single-line-string', and double-quoted + shortcutStylePatterns.push( + [PR_STRING, /^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/, + null, '\'"']); + } else if (options['multiLineStrings']) { + // 'multi-line-string', "multi-line-string" + shortcutStylePatterns.push( + [PR_STRING, /^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/, + null, '\'"`']); + } else { + // 'single-line-string', "single-line-string" + shortcutStylePatterns.push( + [PR_STRING, + /^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/, + null, '"\'']); + } + if (options['verbatimStrings']) { + // verbatim-string-literal production from the C# grammar. See issue 93. + fallthroughStylePatterns.push( + [PR_STRING, /^@\"(?:[^\"]|\"\")*(?:\"|$)/, null]); + } + var hc = options['hashComments']; + if (hc) { + if (options['cStyleComments']) { + if (hc > 1) { // multiline hash comments + shortcutStylePatterns.push( + [PR_COMMENT, /^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/, null, '#']); + } else { + // Stop C preprocessor declarations at an unclosed open comment + shortcutStylePatterns.push( + [PR_COMMENT, /^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/, + null, '#']); + } + fallthroughStylePatterns.push( + [PR_STRING, + /^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/, + null]); + } else { + shortcutStylePatterns.push([PR_COMMENT, /^#[^\r\n]*/, null, '#']); + } + } + if (options['cStyleComments']) { + fallthroughStylePatterns.push([PR_COMMENT, /^\/\/[^\r\n]*/, null]); + fallthroughStylePatterns.push( + [PR_COMMENT, /^\/\*[\s\S]*?(?:\*\/|$)/, null]); + } + if (options['regexLiterals']) { + var REGEX_LITERAL = ( + // A regular expression literal starts with a slash that is + // not followed by * or / so that it is not confused with + // comments. + '/(?=[^/*])' + // and then contains any number of raw characters, + + '(?:[^/\\x5B\\x5C]' + // escape sequences (\x5C), + + '|\\x5C[\\s\\S]' + // or non-nesting character sets (\x5B\x5D); + + '|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+' + // finally closed by a /. + + '/'); + fallthroughStylePatterns.push( + ['lang-regex', + new RegExp('^' + REGEXP_PRECEDER_PATTERN + '(' + REGEX_LITERAL + ')') + ]); + } + + var keywords = options['keywords'].replace(/^\s+|\s+$/g, ''); + if (keywords.length) { + fallthroughStylePatterns.push( + [PR_KEYWORD, + new RegExp('^(?:' + keywords.replace(/\s+/g, '|') + ')\\b'), null]); + } + + shortcutStylePatterns.push([PR_PLAIN, /^\s+/, null, ' \r\n\t\xA0']); + fallthroughStylePatterns.push( + // TODO(mikesamuel): recognize non-latin letters and numerals in idents + [PR_LITERAL, /^@[a-z_$][a-z_$@0-9]*/i, null], + [PR_TYPE, /^@?[A-Z]+[a-z][A-Za-z_$@0-9]*/, null], + [PR_PLAIN, /^[a-z_$][a-z_$@0-9]*/i, null], + [PR_LITERAL, + new RegExp( + '^(?:' + // A hex number + + '0x[a-f0-9]+' + // or an octal or decimal number, + + '|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)' + // possibly in scientific notation + + '(?:e[+\\-]?\\d+)?' + + ')' + // with an optional modifier like UL for unsigned long + + '[a-z]*', 'i'), + null, '0123456789'], + // Don't treat escaped quotes in bash as starting strings. See issue 144. + [PR_PLAIN, /^\\[\s\S]?/, null], + [PR_PUNCTUATION, /^.[^\s\w\.$@\'\"\`\/\#\\]*/, null]); + + return createSimpleLexer(shortcutStylePatterns, fallthroughStylePatterns); + } + + var decorateSource = sourceDecorator({ + 'keywords': ALL_KEYWORDS, + 'hashComments': true, + 'cStyleComments': true, + 'multiLineStrings': true, + 'regexLiterals': true + }); + + /** + * Given a DOM subtree, wraps it in a list, and puts each line into its own + * list item. + * + * @param {Node} node modified in place. Its content is pulled into an + * HTMLOListElement, and each line is moved into a separate list item. + * This requires cloning elements, so the input might not have unique + * IDs after numbering. + */ + function numberLines(node, opt_startLineNum) { + var nocode = /(?:^|\s)nocode(?:\s|$)/; + var lineBreak = /\r\n?|\n/; + + var document = node.ownerDocument; + + var whitespace; + if (node.currentStyle) { + whitespace = node.currentStyle.whiteSpace; + } else if (window.getComputedStyle) { + whitespace = document.defaultView.getComputedStyle(node, null) + .getPropertyValue('white-space'); + } + // If it's preformatted, then we need to split lines on line breaks + // in addition to <BR>s. + var isPreformatted = whitespace && 'pre' === whitespace.substring(0, 3); + + var li = document.createElement('LI'); + while (node.firstChild) { + li.appendChild(node.firstChild); + } + // An array of lines. We split below, so this is initialized to one + // un-split line. + var listItems = [li]; + + function walk(node) { + switch (node.nodeType) { + case 1: // Element + if (nocode.test(node.className)) { break; } + if ('BR' === node.nodeName) { + breakAfter(node); + // Discard the <BR> since it is now flush against a </LI>. + if (node.parentNode) { + node.parentNode.removeChild(node); + } + } else { + for (var child = node.firstChild; child; child = child.nextSibling) { + walk(child); + } + } + break; + case 3: case 4: // Text + if (isPreformatted) { + var text = node.nodeValue; + var match = text.match(lineBreak); + if (match) { + var firstLine = text.substring(0, match.index); + node.nodeValue = firstLine; + var tail = text.substring(match.index + match[0].length); + if (tail) { + var parent = node.parentNode; + parent.insertBefore( + document.createTextNode(tail), node.nextSibling); + } + breakAfter(node); + if (!firstLine) { + // Don't leave blank text nodes in the DOM. + node.parentNode.removeChild(node); + } + } + } + break; + } + } + + // Split a line after the given node. + function breakAfter(lineEndNode) { + // If there's nothing to the right, then we can skip ending the line + // here, and move root-wards since splitting just before an end-tag + // would require us to create a bunch of empty copies. + while (!lineEndNode.nextSibling) { + lineEndNode = lineEndNode.parentNode; + if (!lineEndNode) { return; } + } + + function breakLeftOf(limit, copy) { + // Clone shallowly if this node needs to be on both sides of the break. + var rightSide = copy ? limit.cloneNode(false) : limit; + var parent = limit.parentNode; + if (parent) { + // We clone the parent chain. + // This helps us resurrect important styling elements that cross lines. + // E.g. in <i>Foo<br>Bar</i> + // should be rewritten to <li><i>Foo</i></li><li><i>Bar</i></li>. + var parentClone = breakLeftOf(parent, 1); + // Move the clone and everything to the right of the original + // onto the cloned parent. + var next = limit.nextSibling; + parentClone.appendChild(rightSide); + for (var sibling = next; sibling; sibling = next) { + next = sibling.nextSibling; + parentClone.appendChild(sibling); + } + } + return rightSide; + } + + var copiedListItem = breakLeftOf(lineEndNode.nextSibling, 0); + + // Walk the parent chain until we reach an unattached LI. + for (var parent; + // Check nodeType since IE invents document fragments. + (parent = copiedListItem.parentNode) && parent.nodeType === 1;) { + copiedListItem = parent; + } + // Put it on the list of lines for later processing. + listItems.push(copiedListItem); + } + + // Split lines while there are lines left to split. + for (var i = 0; // Number of lines that have been split so far. + i < listItems.length; // length updated by breakAfter calls. + ++i) { + walk(listItems[i]); + } + + // Make sure numeric indices show correctly. + if (opt_startLineNum === (opt_startLineNum|0)) { + listItems[0].setAttribute('value', opt_startLineNum); + } + + var ol = document.createElement('OL'); + ol.className = 'linenums'; + var offset = Math.max(0, ((opt_startLineNum - 1 /* zero index */)) | 0) || 0; + for (var i = 0, n = listItems.length; i < n; ++i) { + li = listItems[i]; + // Stick a class on the LIs so that stylesheets can + // color odd/even rows, or any other row pattern that + // is co-prime with 10. + li.className = 'L' + ((i + offset) % 10); + if (!li.firstChild) { + li.appendChild(document.createTextNode('\xA0')); + } + ol.appendChild(li); + } + + node.appendChild(ol); + } + + /** + * Breaks {@code job.source} around style boundaries in {@code job.decorations} + * and modifies {@code job.sourceNode} in place. + * @param {Object} job like <pre>{ + * source: {string} source as plain text, + * spans: {Array.<number|Node>} alternating span start indices into source + * and the text node or element (e.g. {@code <BR>}) corresponding to that + * span. + * decorations: {Array.<number|string} an array of style classes preceded + * by the position at which they start in job.source in order + * }</pre> + * @private + */ + function recombineTagsAndDecorations(job) { + var isIE = /\bMSIE\b/.test(navigator.userAgent); + var newlineRe = /\n/g; + + var source = job.source; + var sourceLength = source.length; + // Index into source after the last code-unit recombined. + var sourceIndex = 0; + + var spans = job.spans; + var nSpans = spans.length; + // Index into spans after the last span which ends at or before sourceIndex. + var spanIndex = 0; + + var decorations = job.decorations; + var nDecorations = decorations.length; + // Index into decorations after the last decoration which ends at or before sourceIndex. + var decorationIndex = 0; + + // Simplify decorations. + var decPos = 0; + for (var i = 0; i < nDecorations;) { + // Skip over any zero-length decorations. + var startPos = decorations[i]; + var start = i; + while (start + 2 < nDecorations && decorations[start + 2] === startPos) { + start += 2; + } + // Conflate all adjacent decorations that use the same style. + var startDec = decorations[start + 1]; + var end = start + 2; + while (end + 2 <= nDecorations + && (decorations[end + 1] === startDec + || decorations[end] === decorations[end + 2])) { + end += 2; + } + decorations[decPos++] = startPos; + decorations[decPos++] = startDec; + i = end; + } + + // Strip any zero-length decoration at the end. + if (decPos && decorations[decPos - 2] === sourceLength) { decPos -= 2; } + nDecorations = decorations.length = decPos; + + var decoration = null; + while (spanIndex < nSpans) { + var spanStart = spans[spanIndex]; + var spanEnd = spans[spanIndex + 2] || sourceLength; + + var decStart = decorations[decorationIndex]; + var decEnd = decorations[decorationIndex + 2] || sourceLength; + + var end = Math.min(spanEnd, decEnd); + + var textNode = spans[spanIndex + 1]; + if (textNode.nodeType !== 1) { // Don't muck with <BR>s or <LI>s + var styledText = source.substring(sourceIndex, end); + // This may seem bizarre, and it is. Emitting LF on IE causes the + // code to display with spaces instead of line breaks. + // Emitting Windows standard issue linebreaks (CRLF) causes a blank + // space to appear at the beginning of every line but the first. + // Emitting an old Mac OS 9 line separator makes everything spiffy. + if (isIE) { styledText = styledText.replace(newlineRe, '\r'); } + textNode.nodeValue = styledText; + var document = textNode.ownerDocument; + var span = document.createElement('SPAN'); + span.className = decorations[decorationIndex + 1]; + var parentNode = textNode.parentNode; + parentNode.replaceChild(span, textNode); + span.appendChild(textNode); + if (sourceIndex < spanEnd) { // Split off a text node. + spans[spanIndex + 1] = textNode + // TODO: Possibly optimize by using '' if there's no flicker. + = document.createTextNode(source.substring(end, spanEnd)); + parentNode.insertBefore(textNode, span.nextSibling); + } + } + + sourceIndex = end; + + if (sourceIndex >= spanEnd) { + spanIndex += 2; + } + if (sourceIndex >= decEnd) { + decorationIndex += 2; + } + } + } + + + /** Maps language-specific file extensions to handlers. */ + var langHandlerRegistry = {}; + /** Register a language handler for the given file extensions. + * @param {function (Object)} handler a function from source code to a list + * of decorations. Takes a single argument job which describes the + * state of the computation. The single parameter has the form + * {@code { + * source: {string} as plain text. + * decorations: {Array.<number|string>} an array of style classes + * preceded by the position at which they start in + * job.source in order. + * The language handler should assigned this field. + * basePos: {int} the position of source in the larger source chunk. + * All positions in the output decorations array are relative + * to the larger source chunk. + * } } + * @param {Array.<string>} fileExtensions + */ + function registerLangHandler(handler, fileExtensions) { + for (var i = fileExtensions.length; --i >= 0;) { + var ext = fileExtensions[i]; + if (!langHandlerRegistry.hasOwnProperty(ext)) { + langHandlerRegistry[ext] = handler; + } else if ('console' in window) { + console['warn']('cannot override language handler %s', ext); + } + } + } + function langHandlerForExtension(extension, source) { + if (!(extension && langHandlerRegistry.hasOwnProperty(extension))) { + // Treat it as markup if the first non whitespace character is a < and + // the last non-whitespace character is a >. + extension = /^\s*</.test(source) + ? 'default-markup' + : 'default-code'; + } + return langHandlerRegistry[extension]; + } + registerLangHandler(decorateSource, ['default-code']); + registerLangHandler( + createSimpleLexer( + [], + [ + [PR_PLAIN, /^[^<?]+/], + [PR_DECLARATION, /^<!\w[^>]*(?:>|$)/], + [PR_COMMENT, /^<\!--[\s\S]*?(?:-\->|$)/], + // Unescaped content in an unknown language + ['lang-', /^<\?([\s\S]+?)(?:\?>|$)/], + ['lang-', /^<%([\s\S]+?)(?:%>|$)/], + [PR_PUNCTUATION, /^(?:<[%?]|[%?]>)/], + ['lang-', /^<xmp\b[^>]*>([\s\S]+?)<\/xmp\b[^>]*>/i], + // Unescaped content in javascript. (Or possibly vbscript). + ['lang-js', /^<script\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i], + // Contains unescaped stylesheet content + ['lang-css', /^<style\b[^>]*>([\s\S]*?)(<\/style\b[^>]*>)/i], + ['lang-in.tag', /^(<\/?[a-z][^<>]*>)/i] + ]), + ['default-markup', 'htm', 'html', 'mxml', 'xhtml', 'xml', 'xsl']); + registerLangHandler( + createSimpleLexer( + [ + [PR_PLAIN, /^[\s]+/, null, ' \t\r\n'], + [PR_ATTRIB_VALUE, /^(?:\"[^\"]*\"?|\'[^\']*\'?)/, null, '\"\''] + ], + [ + [PR_TAG, /^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i], + [PR_ATTRIB_NAME, /^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i], + ['lang-uq.val', /^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/], + [PR_PUNCTUATION, /^[=<>\/]+/], + ['lang-js', /^on\w+\s*=\s*\"([^\"]+)\"/i], + ['lang-js', /^on\w+\s*=\s*\'([^\']+)\'/i], + ['lang-js', /^on\w+\s*=\s*([^\"\'>\s]+)/i], + ['lang-css', /^style\s*=\s*\"([^\"]+)\"/i], + ['lang-css', /^style\s*=\s*\'([^\']+)\'/i], + ['lang-css', /^style\s*=\s*([^\"\'>\s]+)/i] + ]), + ['in.tag']); + registerLangHandler( + createSimpleLexer([], [[PR_ATTRIB_VALUE, /^[\s\S]+/]]), ['uq.val']); + registerLangHandler(sourceDecorator({ + 'keywords': CPP_KEYWORDS, + 'hashComments': true, + 'cStyleComments': true + }), ['c', 'cc', 'cpp', 'cxx', 'cyc', 'm']); + registerLangHandler(sourceDecorator({ + 'keywords': 'null true false' + }), ['json']); + registerLangHandler(sourceDecorator({ + 'keywords': CSHARP_KEYWORDS, + 'hashComments': true, + 'cStyleComments': true, + 'verbatimStrings': true + }), ['cs']); + registerLangHandler(sourceDecorator({ + 'keywords': JAVA_KEYWORDS, + 'cStyleComments': true + }), ['java']); + registerLangHandler(sourceDecorator({ + 'keywords': SH_KEYWORDS, + 'hashComments': true, + 'multiLineStrings': true + }), ['bsh', 'csh', 'sh']); + registerLangHandler(sourceDecorator({ + 'keywords': PYTHON_KEYWORDS, + 'hashComments': true, + 'multiLineStrings': true, + 'tripleQuotedStrings': true + }), ['cv', 'py']); + registerLangHandler(sourceDecorator({ + 'keywords': PERL_KEYWORDS, + 'hashComments': true, + 'multiLineStrings': true, + 'regexLiterals': true + }), ['perl', 'pl', 'pm']); + registerLangHandler(sourceDecorator({ + 'keywords': RUBY_KEYWORDS, + 'hashComments': true, + 'multiLineStrings': true, + 'regexLiterals': true + }), ['rb']); + registerLangHandler(sourceDecorator({ + 'keywords': JSCRIPT_KEYWORDS, + 'cStyleComments': true, + 'regexLiterals': true + }), ['js']); + registerLangHandler(sourceDecorator({ + 'keywords': COFFEE_KEYWORDS, + 'hashComments': 3, // ### style block comments + 'cStyleComments': true, + 'multilineStrings': true, + 'tripleQuotedStrings': true, + 'regexLiterals': true + }), ['coffee']); + registerLangHandler(createSimpleLexer([], [[PR_STRING, /^[\s\S]+/]]), ['regex']); + + function applyDecorator(job) { + var opt_langExtension = job.langExtension; + + try { + // Extract tags, and convert the source code to plain text. + var sourceAndSpans = extractSourceSpans(job.sourceNode); + /** Plain text. @type {string} */ + var source = sourceAndSpans.source; + job.source = source; + job.spans = sourceAndSpans.spans; + job.basePos = 0; + + // Apply the appropriate language handler + langHandlerForExtension(opt_langExtension, source)(job); + + // Integrate the decorations and tags back into the source code, + // modifying the sourceNode in place. + recombineTagsAndDecorations(job); + } catch (e) { + if ('console' in window) { + console['log'](e && e['stack'] ? e['stack'] : e); + } + } + } + + /** + * @param sourceCodeHtml {string} The HTML to pretty print. + * @param opt_langExtension {string} The language name to use. + * Typically, a filename extension like 'cpp' or 'java'. + * @param opt_numberLines {number|boolean} True to number lines, + * or the 1-indexed number of the first line in sourceCodeHtml. + */ + function prettyPrintOne(sourceCodeHtml, opt_langExtension, opt_numberLines) { + var container = document.createElement('PRE'); + // This could cause images to load and onload listeners to fire. + // E.g. <img onerror="alert(1337)" src="nosuchimage.png">. + // We assume that the inner HTML is from a trusted source. + container.innerHTML = sourceCodeHtml; + if (opt_numberLines) { + numberLines(container, opt_numberLines); + } + + var job = { + langExtension: opt_langExtension, + numberLines: opt_numberLines, + sourceNode: container + }; + applyDecorator(job); + return container.innerHTML; + } + + function prettyPrint(opt_whenDone) { + function byTagName(tn) { return document.getElementsByTagName(tn); } + // fetch a list of nodes to rewrite + var codeSegments = [byTagName('pre'), byTagName('code'), byTagName('xmp')]; + var elements = []; + for (var i = 0; i < codeSegments.length; ++i) { + for (var j = 0, n = codeSegments[i].length; j < n; ++j) { + elements.push(codeSegments[i][j]); + } + } + codeSegments = null; + + var clock = Date; + if (!clock['now']) { + clock = { 'now': function () { return (new Date).getTime(); } }; + } + + // The loop is broken into a series of continuations to make sure that we + // don't make the browser unresponsive when rewriting a large page. + var k = 0; + var prettyPrintingJob; + + function doWork() { + var endTime = (window['PR_SHOULD_USE_CONTINUATION'] ? + clock.now() + 250 /* ms */ : + Infinity); + for (; k < elements.length && clock.now() < endTime; k++) { + var cs = elements[k]; + if (cs.className && cs.className.indexOf('prettyprint') >= 0) { + // If the classes includes a language extensions, use it. + // Language extensions can be specified like + // <pre class="prettyprint lang-cpp"> + // the language extension "cpp" is used to find a language handler as + // passed to PR.registerLangHandler. + var langExtension = cs.className.match(/\blang-(\w+)\b/); + if (langExtension) { langExtension = langExtension[1]; } + + // make sure this is not nested in an already prettified element + var nested = false; + for (var p = cs.parentNode; p; p = p.parentNode) { + if ((p.tagName === 'pre' || p.tagName === 'code' || + p.tagName === 'xmp') && + p.className && p.className.indexOf('prettyprint') >= 0) { + nested = true; + break; + } + } + if (!nested) { + // Look for a class like linenums or linenums:<n> where <n> is the + // 1-indexed number of the first line. + var lineNums = cs.className.match(/\blinenums\b(?::(\d+))?/); + lineNums = lineNums + ? lineNums[1] && lineNums[1].length ? +lineNums[1] : true + : false; + if (lineNums) { numberLines(cs, lineNums); } + + // do the pretty printing + prettyPrintingJob = { + langExtension: langExtension, + sourceNode: cs, + numberLines: lineNums + }; + applyDecorator(prettyPrintingJob); + } + } + } + if (k < elements.length) { + // finish up in a continuation + setTimeout(doWork, 250); + } else if (opt_whenDone) { + opt_whenDone(); + } + } + + doWork(); + } + + window['prettyPrintOne'] = prettyPrintOne; + window['prettyPrint'] = prettyPrint; + window['PR'] = { + 'createSimpleLexer': createSimpleLexer, + 'registerLangHandler': registerLangHandler, + 'sourceDecorator': sourceDecorator, + 'PR_ATTRIB_NAME': PR_ATTRIB_NAME, + 'PR_ATTRIB_VALUE': PR_ATTRIB_VALUE, + 'PR_COMMENT': PR_COMMENT, + 'PR_DECLARATION': PR_DECLARATION, + 'PR_KEYWORD': PR_KEYWORD, + 'PR_LITERAL': PR_LITERAL, + 'PR_NOCODE': PR_NOCODE, + 'PR_PLAIN': PR_PLAIN, + 'PR_PUNCTUATION': PR_PUNCTUATION, + 'PR_SOURCE': PR_SOURCE, + 'PR_STRING': PR_STRING, + 'PR_TAG': PR_TAG, + 'PR_TYPE': PR_TYPE + }; +})();
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/presen/slides.js Tue Feb 19 17:04:47 2013 +0900 @@ -0,0 +1,634 @@ +/* + Google HTML5 slides template + + Authors: Luke Mahé (code) + Marcin Wichary (code and design) + + Dominic Mazzoni (browser compatibility) + Charles Chen (ChromeVox support) + + URL: http://code.google.com/p/html5slides/ +*/ + +var PERMANENT_URL_PREFIX = './' + +var SLIDE_CLASSES = ['far-past', 'past', 'current', 'next', 'far-next']; + +var PM_TOUCH_SENSITIVITY = 15; + +var curSlide; + +/* ---------------------------------------------------------------------- */ +/* classList polyfill by Eli Grey + * (http://purl.eligrey.com/github/classList.js/blob/master/classList.js) */ + +if (typeof document !== "undefined" && !("classList" in document.createElement("a"))) { + +(function (view) { + +var + classListProp = "classList" + , protoProp = "prototype" + , elemCtrProto = (view.HTMLElement || view.Element)[protoProp] + , objCtr = Object + strTrim = String[protoProp].trim || function () { + return this.replace(/^\s+|\s+$/g, ""); + } + , arrIndexOf = Array[protoProp].indexOf || function (item) { + for (var i = 0, len = this.length; i < len; i++) { + if (i in this && this[i] === item) { + return i; + } + } + return -1; + } + // Vendors: please allow content code to instantiate DOMExceptions + , DOMEx = function (type, message) { + this.name = type; + this.code = DOMException[type]; + this.message = message; + } + , checkTokenAndGetIndex = function (classList, token) { + if (token === "") { + throw new DOMEx( + "SYNTAX_ERR" + , "An invalid or illegal string was specified" + ); + } + if (/\s/.test(token)) { + throw new DOMEx( + "INVALID_CHARACTER_ERR" + , "String contains an invalid character" + ); + } + return arrIndexOf.call(classList, token); + } + , ClassList = function (elem) { + var + trimmedClasses = strTrim.call(elem.className) + , classes = trimmedClasses ? trimmedClasses.split(/\s+/) : [] + ; + for (var i = 0, len = classes.length; i < len; i++) { + this.push(classes[i]); + } + this._updateClassName = function () { + elem.className = this.toString(); + }; + } + , classListProto = ClassList[protoProp] = [] + , classListGetter = function () { + return new ClassList(this); + } +; +// Most DOMException implementations don't allow calling DOMException's toString() +// on non-DOMExceptions. Error's toString() is sufficient here. +DOMEx[protoProp] = Error[protoProp]; +classListProto.item = function (i) { + return this[i] || null; +}; +classListProto.contains = function (token) { + token += ""; + return checkTokenAndGetIndex(this, token) !== -1; +}; +classListProto.add = function (token) { + token += ""; + if (checkTokenAndGetIndex(this, token) === -1) { + this.push(token); + this._updateClassName(); + } +}; +classListProto.remove = function (token) { + token += ""; + var index = checkTokenAndGetIndex(this, token); + if (index !== -1) { + this.splice(index, 1); + this._updateClassName(); + } +}; +classListProto.toggle = function (token) { + token += ""; + if (checkTokenAndGetIndex(this, token) === -1) { + this.add(token); + } else { + this.remove(token); + } +}; +classListProto.toString = function () { + return this.join(" "); +}; + +if (objCtr.defineProperty) { + var classListPropDesc = { + get: classListGetter + , enumerable: true + , configurable: true + }; + try { + objCtr.defineProperty(elemCtrProto, classListProp, classListPropDesc); + } catch (ex) { // IE 8 doesn't support enumerable:true + if (ex.number === -0x7FF5EC54) { + classListPropDesc.enumerable = false; + objCtr.defineProperty(elemCtrProto, classListProp, classListPropDesc); + } + } +} else if (objCtr[protoProp].__defineGetter__) { + elemCtrProto.__defineGetter__(classListProp, classListGetter); +} + +}(self)); + +} +/* ---------------------------------------------------------------------- */ + +/* Slide movement */ + +function getSlideEl(no) { + if ((no < 0) || (no >= slideEls.length)) { + return null; + } else { + return slideEls[no]; + } +}; + +function updateSlideClass(slideNo, className) { + var el = getSlideEl(slideNo); + + if (!el) { + return; + } + + if (className) { + el.classList.add(className); + } + + for (var i in SLIDE_CLASSES) { + if (className != SLIDE_CLASSES[i]) { + el.classList.remove(SLIDE_CLASSES[i]); + } + } +}; + +function updateSlides() { + for (var i = 0; i < slideEls.length; i++) { + switch (i) { + case curSlide - 2: + updateSlideClass(i, 'far-past'); + break; + case curSlide - 1: + updateSlideClass(i, 'past'); + break; + case curSlide: + updateSlideClass(i, 'current'); + break; + case curSlide + 1: + updateSlideClass(i, 'next'); + break; + case curSlide + 2: + updateSlideClass(i, 'far-next'); + break; + default: + updateSlideClass(i); + break; + } + } + + triggerLeaveEvent(curSlide - 1); + triggerEnterEvent(curSlide); + + window.setTimeout(function() { + // Hide after the slide + disableSlideFrames(curSlide - 2); + }, 301); + + enableSlideFrames(curSlide - 1); + enableSlideFrames(curSlide + 2); + + if (isChromeVoxActive()) { + speakAndSyncToNode(slideEls[curSlide]); + } + + updateHash(); +}; + +function buildNextItem() { + var toBuild = slideEls[curSlide].querySelectorAll('.to-build'); + + if (!toBuild.length) { + return false; + } + + toBuild[0].classList.remove('to-build', ''); + + if (isChromeVoxActive()) { + speakAndSyncToNode(toBuild[0]); + } + + return true; +}; + +function prevSlide() { + if (curSlide > 0) { + curSlide--; + + updateSlides(); + } +}; + +function nextSlide() { + if (buildNextItem()) { + return; + } + + if (curSlide < slideEls.length - 1) { + curSlide++; + + updateSlides(); + } +}; + +/* Slide events */ + +function triggerEnterEvent(no) { + var el = getSlideEl(no); + if (!el) { + return; + } + + var onEnter = el.getAttribute('onslideenter'); + if (onEnter) { + new Function(onEnter).call(el); + } + + var evt = document.createEvent('Event'); + evt.initEvent('slideenter', true, true); + evt.slideNumber = no + 1; // Make it readable + + el.dispatchEvent(evt); +}; + +function triggerLeaveEvent(no) { + var el = getSlideEl(no); + if (!el) { + return; + } + + var onLeave = el.getAttribute('onslideleave'); + if (onLeave) { + new Function(onLeave).call(el); + } + + var evt = document.createEvent('Event'); + evt.initEvent('slideleave', true, true); + evt.slideNumber = no + 1; // Make it readable + + el.dispatchEvent(evt); +}; + +/* Touch events */ + +function handleTouchStart(event) { + if (event.touches.length == 1) { + touchDX = 0; + touchDY = 0; + + touchStartX = event.touches[0].pageX; + touchStartY = event.touches[0].pageY; + + document.body.addEventListener('touchmove', handleTouchMove, true); + document.body.addEventListener('touchend', handleTouchEnd, true); + } +}; + +function handleTouchMove(event) { + if (event.touches.length > 1) { + cancelTouch(); + } else { + touchDX = event.touches[0].pageX - touchStartX; + touchDY = event.touches[0].pageY - touchStartY; + } +}; + +function handleTouchEnd(event) { + var dx = Math.abs(touchDX); + var dy = Math.abs(touchDY); + + if ((dx > PM_TOUCH_SENSITIVITY) && (dy < (dx * 2 / 3))) { + if (touchDX > 0) { + prevSlide(); + } else { + nextSlide(); + } + } + + cancelTouch(); +}; + +function cancelTouch() { + document.body.removeEventListener('touchmove', handleTouchMove, true); + document.body.removeEventListener('touchend', handleTouchEnd, true); +}; + +/* Preloading frames */ + +function disableSlideFrames(no) { + var el = getSlideEl(no); + if (!el) { + return; + } + + var frames = el.getElementsByTagName('iframe'); + for (var i = 0, frame; frame = frames[i]; i++) { + disableFrame(frame); + } +}; + +function enableSlideFrames(no) { + var el = getSlideEl(no); + if (!el) { + return; + } + + var frames = el.getElementsByTagName('iframe'); + for (var i = 0, frame; frame = frames[i]; i++) { + enableFrame(frame); + } +}; + +function disableFrame(frame) { + frame.src = 'about:blank'; +}; + +function enableFrame(frame) { + var src = frame._src; + + if (frame.src != src && src != 'about:blank') { + frame.src = src; + } +}; + +function setupFrames() { + var frames = document.querySelectorAll('iframe'); + for (var i = 0, frame; frame = frames[i]; i++) { + frame._src = frame.src; + disableFrame(frame); + } + + enableSlideFrames(curSlide); + enableSlideFrames(curSlide + 1); + enableSlideFrames(curSlide + 2); +}; + +function setupInteraction() { + /* Clicking and tapping */ + + var el = document.createElement('div'); + el.className = 'slide-area'; + el.id = 'prev-slide-area'; + el.addEventListener('click', prevSlide, false); + document.querySelector('section.slides').appendChild(el); + + var el = document.createElement('div'); + el.className = 'slide-area'; + el.id = 'next-slide-area'; + el.addEventListener('click', nextSlide, false); + document.querySelector('section.slides').appendChild(el); + + /* Swiping */ + + document.body.addEventListener('touchstart', handleTouchStart, false); +} + +/* ChromeVox support */ + +function isChromeVoxActive() { + if (typeof(cvox) == 'undefined') { + return false; + } else { + return true; + } +}; + +function speakAndSyncToNode(node) { + if (!isChromeVoxActive()) { + return; + } + + cvox.ChromeVox.navigationManager.switchToStrategy( + cvox.ChromeVoxNavigationManager.STRATEGIES.LINEARDOM, 0, true); + cvox.ChromeVox.navigationManager.syncToNode(node); + cvox.ChromeVoxUserCommands.finishNavCommand(''); + var target = node; + while (target.firstChild) { + target = target.firstChild; + } + cvox.ChromeVox.navigationManager.syncToNode(target); +}; + +function speakNextItem() { + if (!isChromeVoxActive()) { + return; + } + + cvox.ChromeVox.navigationManager.switchToStrategy( + cvox.ChromeVoxNavigationManager.STRATEGIES.LINEARDOM, 0, true); + cvox.ChromeVox.navigationManager.next(true); + if (!cvox.DomUtil.isDescendantOfNode( + cvox.ChromeVox.navigationManager.getCurrentNode(), slideEls[curSlide])){ + var target = slideEls[curSlide]; + while (target.firstChild) { + target = target.firstChild; + } + cvox.ChromeVox.navigationManager.syncToNode(target); + cvox.ChromeVox.navigationManager.next(true); + } + cvox.ChromeVoxUserCommands.finishNavCommand(''); +}; + +function speakPrevItem() { + if (!isChromeVoxActive()) { + return; + } + + cvox.ChromeVox.navigationManager.switchToStrategy( + cvox.ChromeVoxNavigationManager.STRATEGIES.LINEARDOM, 0, true); + cvox.ChromeVox.navigationManager.previous(true); + if (!cvox.DomUtil.isDescendantOfNode( + cvox.ChromeVox.navigationManager.getCurrentNode(), slideEls[curSlide])){ + var target = slideEls[curSlide]; + while (target.lastChild){ + target = target.lastChild; + } + cvox.ChromeVox.navigationManager.syncToNode(target); + cvox.ChromeVox.navigationManager.previous(true); + } + cvox.ChromeVoxUserCommands.finishNavCommand(''); +}; + +/* Hash functions */ + +function getCurSlideFromHash() { + var slideNo = parseInt(location.hash.substr(1)); + + if (slideNo) { + curSlide = slideNo - 1; + } else { + curSlide = 0; + } +}; + +function updateHash() { + location.replace('#' + (curSlide + 1)); +}; + +/* Event listeners */ + +function handleBodyKeyDown(event) { + switch (event.keyCode) { + case 39: // right arrow + case 13: // Enter + case 32: // space + case 34: // PgDn + nextSlide(); + event.preventDefault(); + break; + + case 37: // left arrow + case 8: // Backspace + case 33: // PgUp + prevSlide(); + event.preventDefault(); + break; + + case 40: // down arrow + if (isChromeVoxActive()) { + speakNextItem(); + } else { + nextSlide(); + } + event.preventDefault(); + break; + + case 38: // up arrow + if (isChromeVoxActive()) { + speakPrevItem(); + } else { + prevSlide(); + } + event.preventDefault(); + break; + } +}; + +function addEventListeners() { + document.addEventListener('keydown', handleBodyKeyDown, false); +}; + +/* Initialization */ + +function addPrettify() { + var els = document.querySelectorAll('pre'); + for (var i = 0, el; el = els[i]; i++) { + if (!el.classList.contains('noprettyprint')) { + el.classList.add('prettyprint'); + } + } + + var el = document.createElement('script'); + el.type = 'text/javascript'; + el.src = PERMANENT_URL_PREFIX + 'prettify.js'; + el.onload = function() { + prettyPrint(); + } + document.body.appendChild(el); +}; + +function addFontStyle() { + var el = document.createElement('link'); + el.rel = 'stylesheet'; + el.type = 'text/css'; + el.href = 'http://fonts.googleapis.com/css?family=' + + 'Open+Sans:regular,semibold,italic,italicsemibold|Droid+Sans+Mono'; + + document.body.appendChild(el); +}; + +function addGeneralStyle() { + var el = document.createElement('link'); + el.rel = 'stylesheet'; + el.type = 'text/css'; + el.href = PERMANENT_URL_PREFIX + 'styles.css'; + document.body.appendChild(el); + + var el = document.createElement('meta'); + el.name = 'viewport'; + el.content = 'width=1100,height=750'; + document.querySelector('head').appendChild(el); + + var el = document.createElement('meta'); + el.name = 'apple-mobile-web-app-capable'; + el.content = 'yes'; + document.querySelector('head').appendChild(el); +}; + +function makeBuildLists() { + for (var i = curSlide, slide; slide = slideEls[i]; i++) { + var items = slide.querySelectorAll('.build > *'); + for (var j = 0, item; item = items[j]; j++) { + if (item.classList) { + item.classList.add('to-build'); + } + } + } +}; + +function handleDomLoaded() { + slideEls = document.querySelectorAll('section.slides > article'); + + setupFrames(); + + addFontStyle(); + addGeneralStyle(); + addPrettify(); + addEventListeners(); + + updateSlides(); + + setupInteraction(); + makeBuildLists(); + + document.body.classList.add('loaded'); +}; + +function initialize() { + getCurSlideFromHash(); + + if (window['_DEBUG']) { + PERMANENT_URL_PREFIX = '../'; + } + + if (window['_DCL']) { + handleDomLoaded(); + } else { + document.addEventListener('DOMContentLoaded', handleDomLoaded, false); + } +} + +// If ?debug exists then load the script relative instead of absolute +if (!window['_DEBUG'] && document.location.href.indexOf('?debug') !== -1) { + document.addEventListener('DOMContentLoaded', function() { + // Avoid missing the DomContentLoaded event + window['_DCL'] = true + }, false); + + window['_DEBUG'] = true; + var script = document.createElement('script'); + script.type = 'text/javascript'; + script.src = '../slides.js'; + var s = document.getElementsByTagName('script')[0]; + s.parentNode.insertBefore(script, s); + + // Remove this script + s.parentNode.removeChild(s); +} else { + initialize(); +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/presen/styles.css Tue Feb 19 17:04:47 2013 +0900 @@ -0,0 +1,613 @@ +/* + Google HTML5 slides template + + Authors: Luke Mahé (code) + Marcin Wichary (code and design) + + Dominic Mazzoni (browser compatibility) + Charles Chen (ChromeVox support) + + URL: http://code.google.com/p/html5slides/ +*/ + +/* Framework */ + +html { + height: 100%; +} +p.sample { color : blue;background-image : url(./intro/os.jpg);padding : 3px;} + +body { + margin: 0; + padding: 0; + + display: block !important; + + height: 100%; + min-height: 740px; + + overflow-x: hidden; + overflow-y: auto; + + background: rgb(215, 215, 215); + background: -o-radial-gradient(rgb(240, 240, 240), rgb(190, 190, 190)); + background: -moz-radial-gradient(rgb(240, 240, 240), rgb(190, 190, 190)); + background: -webkit-radial-gradient(rgb(240, 240, 240), rgb(190, 190, 190)); + background: -webkit-gradient(radial, 50% 50%, 0, 50% 50%, 500, from(rgb(240, 240, 240)), to(rgb(190, 190, 190))); + + -webkit-font-smoothing: antialiased; +} + +.slides { + width: 100%; + height: 100%; + left: 0; + top: 0; + + position: absolute; + + -webkit-transform: translate3d(0, 0, 0); +} + +.slides > article { + display: block; + + position: absolute; + overflow: hidden; + + width: 900px; + height: 700px; + + left: 50%; + top: 50%; + + margin-left: -450px; + margin-top: -350px; + + padding: 40px 60px; + + box-sizing: border-box; + -o-box-sizing: border-box; + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; + + border-radius: 10px; + -o-border-radius: 10px; + -moz-border-radius: 10px; + -webkit-border-radius: 10px; + + background-color: white; + + box-shadow: 0 2px 6px rgba(0, 0, 0, .1); + border: 1px solid rgba(0, 0, 0, .3); + + transition: transform .3s ease-out; + -o-transition: -o-transform .3s ease-out; + -moz-transition: -moz-transform .3s ease-out; + -webkit-transition: -webkit-transform .3s ease-out; +} +.slides.layout-widescreen > article { + margin-left: -550px; + width: 1100px; +} +.slides.layout-faux-widescreen > article { + margin-left: -550px; + width: 1100px; + + padding: 40px 160px; +} + +.slides.template-default > article:not(.nobackground):not(.biglogo) { + background: url(images/google-logo-small.png) 710px 625px no-repeat; + + background-color: white; +} + +.slides.template-io2011 > article:not(.nobackground):not(.biglogo) { + background: url(images/colorbar.png) 0 600px repeat-x, + url(images/googleio-logo.png) 640px 625px no-repeat; + + background-size: 100%, 225px; + + background-color: white; +} +.slides.layout-widescreen > article:not(.nobackground):not(.biglogo), +.slides.layout-faux-widescreen > article:not(.nobackground):not(.biglogo) { + background-position-x: 0, 840px; +} + +/* Clickable/tappable areas */ + +.slide-area { + z-index: 1000; + + position: absolute; + left: 0; + top: 0; + width: 150px; + height: 700px; + + left: 50%; + top: 50%; + + cursor: pointer; + margin-top: -350px; + + tap-highlight-color: transparent; + -o-tap-highlight-color: transparent; + -moz-tap-highlight-color: transparent; + -webkit-tap-highlight-color: transparent; +} +#prev-slide-area { + margin-left: -550px; +} +#next-slide-area { + margin-left: 400px; +} +.slides.layout-widescreen #prev-slide-area, +.slides.layout-faux-widescreen #prev-slide-area { + margin-left: -650px; +} +.slides.layout-widescreen #next-slide-area, +.slides.layout-faux-widescreen #next-slide-area { + margin-left: 500px; +} + +/* Slide styles */ + +.slides.template-default article.biglogo { + background: white url(images/api.jpg) 50% 50% no-repeat; +} + +.slides.template-io2011 article.biglogo { + background: white url(images/api.jpg) 50% 50% no-repeat; + + background-size: 600px; +} + +/* Slides */ + +.slides > article { + display: none; +} +.slides > article.far-past { + display: block; + transform: translate(-2040px); + -o-transform: translate(-2040px); + -moz-transform: translate(-2040px); + -webkit-transform: translate3d(-2040px, 0, 0); +} +.slides > article.past { + display: block; + transform: translate(-1020px); + -o-transform: translate(-1020px); + -moz-transform: translate(-1020px); + -webkit-transform: translate3d(-1020px, 0, 0); +} +.slides > article.current { + display: block; + transform: translate(0); + -o-transform: translate(0); + -moz-transform: translate(0); + -webkit-transform: translate3d(0, 0, 0); +} +.slides > article.next { + display: block; + transform: translate(1020px); + -o-transform: translate(1020px); + -moz-transform: translate(1020px); + -webkit-transform: translate3d(1020px, 0, 0); +} +.slides > article.far-next { + display: block; + transform: translate(2040px); + -o-transform: translate(2040px); + -moz-transform: translate(2040px); + -webkit-transform: translate3d(2040px, 0, 0); +} + +.slides.layout-widescreen > article.far-past, +.slides.layout-faux-widescreen > article.far-past { + display: block; + transform: translate(-2260px); + -o-transform: translate(-2260px); + -moz-transform: translate(-2260px); + -webkit-transform: translate3d(-2260px, 0, 0); +} +.slides.layout-widescreen > article.past, +.slides.layout-faux-widescreen > article.past { + display: block; + transform: translate(-1130px); + -o-transform: translate(-1130px); + -moz-transform: translate(-1130px); + -webkit-transform: translate3d(-1130px, 0, 0); +} +.slides.layout-widescreen > article.current, +.slides.layout-faux-widescreen > article.current { + display: block; + transform: translate(0); + -o-transform: translate(0); + -moz-transform: translate(0); + -webkit-transform: translate3d(0, 0, 0); +} +.slides.layout-widescreen > article.next, +.slides.layout-faux-widescreen > article.next { + display: block; + transform: translate(1130px); + -o-transform: translate(1130px); + -moz-transform: translate(1130px); + -webkit-transform: translate3d(1130px, 0, 0); +} +.slides.layout-widescreen > article.far-next, +.slides.layout-faux-widescreen > article.far-next { + display: block; + transform: translate(2260px); + -o-transform: translate(2260px); + -moz-transform: translate(2260px); + -webkit-transform: translate3d(2260px, 0, 0); +} + +/* Styles for slides */ + +.slides > article { + font-family: 'Open Sans', Arial, sans-serif; + + color: rgb(102, 102, 102); + text-shadow: 0 1px 1px rgba(0, 0, 0, .1); + + font-size: 30px; + line-height: 36px; + + letter-spacing: -1px; +} + +b { + font-weight: 600; +} + +.blue { + color: rgb(0, 102, 204); +} +.yellow { + color: rgb(255, 211, 25); +} +.green { + color: rgb(0, 138, 53); +} +.red { + color: rgb(255, 0, 0); +} +.black { + color: black; +} +.white { + color: white; +} + +a { + color: rgb(0, 102, 204); +} +a:visited { + color: rgba(0, 102, 204, .75); +} +a:hover { + color: black; +} + +p { + margin: 0; + padding: 0; + + margin-top: 20px; +} +p:first-child { + margin-top: 0; +} + +h1 { + font-size: 60px; + line-height: 60px; + + padding: 0; + margin: 0; + margin-top: 200px; + padding-right: 40px; + + font-weight: 600; + + letter-spacing: -3px; + + color: rgb(51, 51, 51); +} + +h2 { + font-size: 45px; + line-height: 45px; + + position: absolute; + bottom: 150px; + + padding: 0; + margin: 0; + padding-right: 40px; + + font-weight: 600; + + letter-spacing: -2px; + + color: rgb(51, 51, 51); +} + +h3 { + font-size: 30px; + line-height: 36px; + + padding: 0; + margin: 0; + padding-right: 40px; + + font-weight: 600; + + letter-spacing: -1px; + + color: rgb(51, 51, 51); +} + +article.fill h3 { + background: rgba(255, 255, 255, .75); + padding-top: .2em; + padding-bottom: .3em; + margin-top: -.2em; + margin-left: -60px; + padding-left: 60px; + margin-right: -60px; + padding-right: 60px; +} + +ul { + list-style: none; + margin: 0; + padding: 0; + + margin-top: 40px; + + margin-left: .75em; +} +ul:first-child { + margin-top: 0; +} +ul ul { + margin-top: .5em; +} +li { + padding: 0; + margin: 0; + + margin-bottom: .5em; +} +li::before { + content: '·'; + + width: .75em; + margin-left: -.75em; + + position: absolute; +} + +pre { + font-family: 'Droid Sans Mono', 'Courier New', monospace; + + font-size: 20px; + line-height: 28px; + padding: 5px 10px; + + letter-spacing: -1px; + + margin-top: 40px; + margin-bottom: 40px; + + color: black; + background: rgb(240, 240, 240); + border: 1px solid rgb(224, 224, 224); + box-shadow: inset 0 2px 6px rgba(0, 0, 0, .1); + + overflow: hidden; +} + +code { + font-size: 95%; + font-family: 'Droid Sans Mono', 'Courier New', monospace; + + color: black; +} + +iframe { + width: 100%; + + height: 620px; + + background: white; + border: 1px solid rgb(192, 192, 192); + margin: -1px; + /*box-shadow: inset 0 2px 6px rgba(0, 0, 0, .1);*/ +} + +h3 + iframe { + margin-top: 40px; + height: 540px; +} + +article.fill iframe { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + + border: 0; + margin: 0; + + border-radius: 10px; + -o-border-radius: 10px; + -moz-border-radius: 10px; + -webkit-border-radius: 10px; + + z-index: -1; +} + +article.fill img { + position: absolute; + left: 0; + top: 0; + min-width: 100%; + min-height: 100%; + + border-radius: 10px; + -o-border-radius: 10px; + -moz-border-radius: 10px; + -webkit-border-radius: 10px; + + z-index: -1; +} +img.centered { + margin: 0 auto; + display: block; +} + +table { + width: 100%; + border-collapse: collapse; + margin-top: 40px; +} +th { + font-weight: 600; + text-align: left; +} +td, +th { + border: 1px solid rgb(224, 224, 224); + padding: 5px 10px; + vertical-align: top; +} + +.source { + position: absolute; + left: 60px; + top: 644px; + padding-right: 175px; + + font-size: 15px; + letter-spacing: 0; + line-height: 18px; +} + +q { + display: block; + font-size: 60px; + line-height: 72px; + + margin-left: 20px; + + margin-top: 100px; + margin-right: 150px; +} +q::before { + content: '“'; + + position: absolute; + display: inline-block; + margin-left: -2.1em; + width: 2em; + text-align: right; + + font-size: 90px; + color: rgb(192, 192, 192); +} +q::after { + content: '”'; + + position: absolute; + margin-left: .1em; + + font-size: 90px; + color: rgb(192, 192, 192); +} +div.author { + text-align: right; + font-size: 40px; + + margin-top: 20px; + margin-right: 150px; +} +div.author::before { + content: '—'; +} + +/* Size variants */ + +article.smaller p, +article.smaller ul { + font-size: 20px; + line-height: 24px; + letter-spacing: 0; +} +article.smaller table { + font-size: 20px; + line-height: 24px; + letter-spacing: 0; +} +article.smaller pre { + font-size: 15px; + line-height: 20px; + letter-spacing: 0; +} +article.smaller q { + font-size: 40px; + line-height: 48px; +} +article.smaller q::before, +article.smaller q::after { + font-size: 60px; +} + +/* Builds */ + +.build > * { + transition: opacity 0.5s ease-in-out 0.2s; + -o-transition: opacity 0.5s ease-in-out 0.2s; + -moz-transition: opacity 0.5s ease-in-out 0.2s; + -webkit-transition: opacity 0.5s ease-in-out 0.2s; +} + +.to-build { + opacity: 0; +} + +/* Pretty print */ + +.prettyprint .str, /* string content */ +.prettyprint .atv { /* a markup attribute value */ + color: rgb(0, 138, 53); +} +.prettyprint .kwd, /* a keyword */ +.prettyprint .tag { /* a markup tag name */ + color: rgb(0, 102, 204); +} +.prettyprint .com { /* a comment */ + color: rgb(127, 127, 127); + font-style: italic; +} +.prettyprint .lit { /* a literal value */ + color: rgb(127, 0, 0); +} +.prettyprint .pun, /* punctuation, lisp open bracket, lisp close bracket */ +.prettyprint .opn, +.prettyprint .clo { + color: rgb(127, 127, 127); +} +.prettyprint .typ, /* a type name */ +.prettyprint .atn, /* a markup attribute name */ +.prettyprint .dec, +.prettyprint .var { /* a declaration; a variable name */ + color: rgb(127, 0, 127); +}