changeset 0:ed565825e76c

hg init
author shoshi<shoshi@cr.ie.u-ryukyu.ac.jp>
date Thu, 10 Mar 2011 18:47:54 +0900
parents
children 423aed897131
files ARC195OS117-23.aux ARC195OS117-23.dvi ARC195OS117-23.log ARC195OS117-23.pdf ARC195OS117-23.tex Makefile bibsample.bib fig/SEDA.pdf fig/arch.pdf fig/benchmark.pdf fig/concurrent_client.pdf fig/desttree.pdf fig/forest.pdf fig/keyspace.pdf fig/monotree.pdf fig/node_nodeid.pdf graffle/Node_NodeID.graffle graffle/desttree.graffle graffle/forest.graffle graffle/monotree.graffle ipsjcommon.sty ipsjdrafts.sty ipsjpapers.cls ipsjpapers.sty ipsjsort-e.bst ipsjsort.bst ipsjunsrt-e.bst ipsjunsrt.bst mediabb.sty missfont.log
diffstat 29 files changed, 2586 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ARC195OS117-23.aux	Thu Mar 10 18:47:54 2011 +0900
@@ -0,0 +1,23 @@
+\relax 
+\citation{DYNAMO}
+\citation{BIGTABLE}
+\citation{SEDA1}
+\citation{SEDA2}
+\citation{SHOSHI1}
+\newlabel{fig:SEDA}{{1}{1235}}
+\newlabel{fig:benchmark}{{2}{1235}}
+\newlabel{fig:arch}{{3}{1236}}
+\newlabel{fig:destree}{{4}{1237}}
+\newlabel{fig:destree}{{5}{1237}}
+\newlabel{fig:node_nodeid}{{6}{1237}}
+\newlabel{fig:forest.pdf}{{7}{1238}}
+\newlabel{fig:defKS}{{8}{1238}}
+\bibstyle{ipsjunsrt}
+\bibcite{SHOSHI1}{1}
+\bibcite{DYNAMO}{2}
+\bibcite{YCSB}{3}
+\bibcite{SEDA1}{4}
+\bibcite{SEDA2}{5}
+\bibcite{BIGTABLE}{6}
+\newlabel{ref:ConPool}{{9}{1239}}
+\gdef\ipsj@lastpage{1239}
Binary file ARC195OS117-23.dvi has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ARC195OS117-23.log	Thu Mar 10 18:47:54 2011 +0900
@@ -0,0 +1,213 @@
+This is pTeX, Version 3.141592-p3.1.10 (utf8.euc) (Web2C 7.5.4) (format=platex-euc 2010.10.19)  10 MAR 2011 18:44
+**ARC195OS117-23
+(./ARC195OS117-23.tex
+pLaTeX2e <2006/11/10>+0 (based on LaTeX2e <2003/12/01> patch level 0)
+(./ipsjpapers.cls
+Document Class: ipsjpapers 2008/12/29 ver 3.01
+(./ipsjpapers.sty
+\old@latex@skip=\skip41
+\@Q=\dimen118
+\jfsize=\count81
+\jspaceskip=\dimen119
+\@mojihaba=\dimen120
+LaTeX Font Info:    External font `cmex10' loaded for size
+(Font)              <9> on input line 584.
+LaTeX Font Info:    External font `cmex10' loaded for size
+(Font)              <6> on input line 584.
+LaTeX Font Info:    External font `cmex10' loaded for size
+(Font)              <5> on input line 584.
+\@abstractbox=\box41
+\@eabstractbox=\box42
+\@titlewidth=\dimen121
+\mkt@prevdepth=\dimen122
+\mkt@titlebox=\box43
+\mkt@cnta=\count82
+\mkt@cntb=\count83
+\mkt@sname=\count84
+\mkt@gname=\count85
+\mkt@boxa=\box44
+\mkt@namewidth=\dimen123
+\InterAuthorSkip=\dimen124
+\c@affi@footnote=\count86
+\c@affi@pfootnote=\count87
+\c@volpageoffset=\count88
+\c@volume=\count89
+\c@number=\count90
+\c@month=\count91
+\c@year=\count92
+\@leftcolumnfootnote=\box45
+\@rightcolumnfootnote=\box46
+\opt@baselineskip=\skip42
+\bio@picbox=\box47
+\bio@colht=\dimen125
+\bio@splitheight=\dimen126
+\bio@maxgap=\dimen127
+\bio@lastgap=\dimen128
+\bio@th=\dimen129
+\bio@lhA=\dimen130
+\bio@hA=\dimen131
+\bio@hB=\dimen132
+\bio@lh=\dimen133
+\bio@rh=\dimen134
+\bio@tempdim=\dimen135
+\bio@pbox=\insert233
+ (./ipsjcommon.sty
+\c@section=\count93
+\c@subsection=\count94
+\c@subsubsection=\count95
+\c@paragraph=\count96
+\c@subparagraph=\count97
+\bib@adjustheight=\dimen136
+\c@figure=\count98
+\c@table=\count99
+\cap@linewidth=\dimen137
+\cap@hsize=\dimen138
+\cap@prevgraf=\count100
+\cap@box=\box48
+\PF@fnotectr=\count101
+\PF@page=\count102
+\adj@boxa=\box49
+\adj@boxb=\box50
+\adj@height=\dimen139
+\adj@deadcycle=\count103
+LaTeX Font Info:    Font shape `JT1/mc/bx/n' in size <10> not available
+(Font)              Font shape `JT1/gt/m/n' tried instead on input line 893.
+LaTeX Font Info:    Font shape `JY1/mc/bx/n' in size <10> not available
+(Font)              Font shape `JY1/gt/m/n' tried instead on input line 893.
+)))
+(/opt/local/share/texmf-dist/tex/latex/graphics/graphicx.sty
+Package: graphicx 1999/02/16 v1.0f Enhanced LaTeX Graphics (DPC,SPQR)
+
+(/opt/local/share/texmf-dist/tex/latex/graphics/keyval.sty
+Package: keyval 1999/03/16 v1.13 key=value parser (DPC)
+\KV@toks@=\toks15
+)
+(/opt/local/share/texmf/tex/latex/graphics/dvipdfmx-contrib-latex/graphics.sty
+Package: graphics 2001/07/07 v1.0n Standard LaTeX Graphics (DPC,SPQR)
+
+(/opt/local/share/texmf-dist/tex/latex/graphics/trig.sty
+Package: trig 1999/03/16 v1.09 sin cos tan (DPC)
+)
+(/opt/local/share/texmf-dist/tex/latex/graphics/graphics.cfg
+File: graphics.cfg 2005/02/03 v1.3 graphics configuration of teTeX/TeXLive
+)
+Package graphics Info: Driver file: dvipdfm.def on input line 81.
+
+(/opt/local/share/texmf-dist/tex/latex/dvipdfm/dvipdfm.def
+File: dvipdfm.def 1999/9/6 vx.x Driver-dependant file
+))
+\Gin@req@height=\dimen140
+\Gin@req@width=\dimen141
+) (./mediabb.sty
+Package: mediabb 2006/10/26 v1.9 iNOUE Koich! <inoue@ma.ns.musashi-tech.ac.jp>
+)
+(/opt/local/share/texmf/ptex/latex/url/url.sty
+\Urlmuskip=\muskip10
+Package: url 2004/03/15  ver 3.1  Verb mode for urls, etc.
+) (./ARC195OS117-23.aux
+
+LaTeX Warning: Label `fig:destree' multiply defined.
+
+)
+\openout1 = `ARC195OS117-23.aux'.
+
+LaTeX Font Info:    Checking defaults for OML/cmm/m/it on input line 37.
+LaTeX Font Info:    ... okay on input line 37.
+LaTeX Font Info:    Checking defaults for T1/cmr/m/n on input line 37.
+LaTeX Font Info:    ... okay on input line 37.
+LaTeX Font Info:    Checking defaults for OT1/cmr/m/n on input line 37.
+LaTeX Font Info:    ... okay on input line 37.
+LaTeX Font Info:    Checking defaults for OMS/cmsy/m/n on input line 37.
+LaTeX Font Info:    ... okay on input line 37.
+LaTeX Font Info:    Checking defaults for OMX/cmex/m/n on input line 37.
+LaTeX Font Info:    ... okay on input line 37.
+LaTeX Font Info:    Checking defaults for U/cmr/m/n on input line 37.
+LaTeX Font Info:    ... okay on input line 37.
+LaTeX Font Info:    Checking defaults for JY1/mc/m/n on input line 37.
+LaTeX Font Info:    ... okay on input line 37.
+LaTeX Font Info:    Checking defaults for JT1/mc/m/n on input line 37.
+LaTeX Font Info:    ... okay on input line 37.
+LaTeX Font Info:    Font shape `JT1/mc/bx/n' in size <14.4> not available
+(Font)              Font shape `JT1/gt/m/n' tried instead on input line 84.
+LaTeX Font Info:    Font shape `JY1/mc/bx/n' in size <14.4> not available
+(Font)              Font shape `JY1/gt/m/n' tried instead on input line 84.
+
+
+Class ipsjpapers Warning: \title is too wide. Break line(s) by \\ on input line
+ 84.
+
+LaTeX Font Info:    External font `cmex10' loaded for size
+(Font)              <10.95> on input line 84.
+LaTeX Font Info:    External font `cmex10' loaded for size
+(Font)              <8> on input line 84.
+LaTeX Font Info:    Font shape `JT1/mc/bx/n' in size <12> not available
+(Font)              Font shape `JT1/gt/m/n' tried instead on input line 84.
+LaTeX Font Info:    Font shape `JY1/mc/bx/n' in size <12> not available
+(Font)              Font shape `JY1/gt/m/n' tried instead on input line 84.
+
+LaTeX Font Warning: Font shape `JT1/mc/m/sc' undefined
+(Font)              using `JT1/mc/m/n' instead on input line 84.
+
+
+LaTeX Font Warning: Font shape `JY1/mc/m/sc' undefined
+(Font)              using `JY1/mc/m/n' instead on input line 84.
+
+LaTeX Font Info:    External font `cmex10' loaded for size
+(Font)              <7> on input line 84.
+LaTeX Font Info:    Font shape `JT1/mc/bx/n' in size <9> not available
+(Font)              Font shape `JT1/gt/m/n' tried instead on input line 100.
+LaTeX Font Info:    Font shape `JY1/mc/bx/n' in size <9> not available
+(Font)              Font shape `JY1/gt/m/n' tried instead on input line 100.
+LaTeX Font Info:    Try loading font information for OMS+cmr on input line 109.
+
+(/opt/local/share/texmf-dist/tex/latex/base/omscmr.fd
+File: omscmr.fd 1999/05/25 v2.5h Standard LaTeX font definitions
+)
+LaTeX Font Info:    Font shape `OMS/cmr/m/n' in size <8> not available
+(Font)              Font shape `OMS/cmsy/m/n' tried instead on input line 109.
+ [1234
+
+]
+File: fig/SEDA.pdf Graphic file (type pdf)
+ <fig/SEDA.pdf>
+LaTeX Font Info:    Font shape `JT1/mc/bx/n' in size <7> not available
+(Font)              Font shape `JT1/gt/m/n' tried instead on input line 114.
+LaTeX Font Info:    Font shape `JY1/mc/bx/n' in size <7> not available
+(Font)              Font shape `JY1/gt/m/n' tried instead on input line 114.
+File: ./fig/benchmark.pdf Graphic file (type pdf)
+
+<./fig/benchmark.pdf> [1235]
+File: ./fig/arch.pdf Graphic file (type pdf)
+ <./fig/arch.pdf>
+File: ./fig/desttree.pdf Graphic file (type pdf)
+ <./fig/desttree.pdf> [1236]
+File: ./fig/monotree.pdf Graphic file (type pdf)
+
+<./fig/monotree.pdf>
+File: ./fig/node_nodeid.pdf Graphic file (type pdf)
+ <./fig/node_nodeid.pdf> [1237]
+File: ./fig/forest.pdf Graphic file (type pdf)
+ <./fig/forest.pdf>
+File: ./fig/keyspace.pdf Graphic file (type pdf)
+
+<./fig/keyspace.pdf>
+File: ./fig/concurrent_client.pdf Graphic file (type pdf)
+ <./fig/concurrent_client.pdf> [1238] [1239]
+(./ARC195OS117-23.aux)
+
+LaTeX Font Warning: Some font shapes were not available, defaults substituted.
+
+
+LaTeX Warning: There were multiply-defined labels.
+
+ ) 
+Here is how much of TeX's memory you used:
+ 1327 strings out of 94682
+ 16121 string characters out of 1177958
+ 70924 words of memory out of 1500000
+ 4632 multiletter control sequences out of 10000+50000
+ 17303 words of font info for 67 fonts, out of 1200000 for 2000
+ 566 hyphenation exceptions out of 8191
+ 29i,9n,34p,1950b,653s stack positions out of 5000i,500n,6000p,200000b,5000s
+
+Output written on ARC195OS117-23.dvi (6 pages, 29068 bytes).
Binary file ARC195OS117-23.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ARC195OS117-23.tex	Thu Mar 10 18:47:54 2011 +0900
@@ -0,0 +1,301 @@
+\documentclass{ipsjpapers}
+\usepackage[dvipdfm]{graphicx}
+\usepackage{mediabb}
+\usepackage{url}
+
+%\input{dummy.tex} %% Font 
+
+% 巻数,号数などの設定
+\setcounter{volume}{51}
+\setcounter{number}{10}
+\setcounter{volpageoffset}{1234}
+\received{22}{7}{17}
+\accepted{22}{9}{17}
+
+% ユーザが定義したマクロなど.
+%\makeatletter
+%\let\@ARRAY\@array \def\@array{\def\<{\inhibitglue}\@ARRAY}
+%\def\<{\(\langle\)\nobreak}
+%\def\>{\nobreak\(\rangle\)}
+%%\def\|{\verb|}
+%\def\Underline{\setbox0\hbox\bgroup\let\\\endUnderline}
+%\def\endUnderline{\vphantom{y}\egroup\smash{\underline{\box0}}\\}
+%\def\LATEX{\iLATEX\Large}
+%\def\LATEx{\iLATEX\normalsize}
+%\def\LATex{\iLATEX\small}
+%\def\iLATEX#1{L\kern-.36em\raise.3ex\hbox{#1\bf A}\kern-.15em
+%    T\kern-.1667em\lower.7ex\hbox{E}\kern-.125emX}
+%\def\LATEXe{\ifx\LaTeXe\undefined \LaTeX 2e\else\LaTeXe\fi}
+%\def\LATExe{\ifx\LaTeXe\undefined \iLATEX\scriptsize 2e\else\LaTeXe\fi}
+%\def\Quote{\list{}{}\item[]}
+%\let\endQuote\endlist
+%\def\TT{\if@LaTeX@e\tt\fi}
+%\def\CS#1{\if@LaTeX@e\tt\expandafter\string\csname#1\endcsname\else
+%	$\backslash$#1\fi}
+
+%\checklines	% 行送りを確認する時に使用
+\begin{document}%{
+% 和文表題
+\title{Cassandraを使ったスケーラビリティのあるCMSの設計}
+%%\title[{\protect\LaTeX} による論文作成のガイド]%{{\protect\LATEX} による論文作成のガイド(第7.1版)}
+% 英文表題
+\etitle{Design of Scalable CMS using Cassandra}
+
+% 所属ラベルの定義
+\affilabel{1}{琉球大学理工学研究科情報工学専攻 \\Interdisciplinary Infomation Engineering, Graduate School of Engineering and Science, University of the Ryukyus.}
+\affilabel{2}{琉球大学工学部情報工学科\\Infomation Engineering, University of the Ryukyus.}
+\affilabel{3}{琉球大学工学部情報工学科\\Infomation Engineering, University of the Ryukyus.}
+
+% 和文著者名
+\author{
+  玉城 将士\affiref{1}\and
+  谷成 雄\affiref{2}\and
+  河野 真治\affiref{3}
+}
+	
+% 英文著者名
+\eauthor{
+  Shoshi TAMAKI\affiref{1}\and
+  Yu TANINARI\affiref{2}\and
+  Shinji KONO\affiref{3}
+}
+
+% 和文概要
+\begin{abstract}
+本研究では,スケーラビリティのあるCMSを開発するために,100台のPCクラスタを使いCassandra
+のスケーラビリティの検証を行った.その結果Cassandraの特徴やスケールする条件の検証,スケ
+ーラビリティの検証環境を構築することが出来た.\\
+今回は,その検証結果を元にスケーラビリティを確保する方法を検討した.その方法に則りCMSを設計し,データ構造として用いる非破壊的木
+構造の実装を行った.
+
+\end{abstract}
+\begin{eabstract}
+To develop scalable CMS , We built scalability verification environment with 100 PC Clusters to
+verify scalabilty of Cassandra. As a result , We confirm a scalability verification method , 
+feature and scale condition in Cassandra. \\
+In this time , We considered how to secure scalabilty confroming to the verification.
+According as the method , designed CMS and implemented Monotonic Tree-Modification to use data structure of CMS???
+
+% 英文概要
+\end{eabstract}
+
+
+% 表題などの出力
+\maketitle
+
+%}{
+
+% 本文はここから始まる
+\section{研究の目的}
+ Cassandraは複数のサーバーで動作を想定した分散データベースである.
+前回は,実際に分散させることによって高価なサーバーを超えることが出来る性能を出すことが出来るのか,
+また,どの様にCassandra上で動くソフトウェアを開発することによって性能を発揮することが出来るのかを,90台のPCクラスタ上でベンチマークを取り検証した.
+結果として,Cassandraの特徴やスケールする条件の検証,スケーラビリティの検証環境を構築することが出来た.\\
+ 本研究では,前回構築したスケーラビリティの検証環境とCassandraの検証結果を用いて,多段キャッシュと非破壊的木構造をデータ構造に用いたCMSの設計・開発を行った.\\
+
+\section{Cassandra}
+Cassandraは, FaceBookが自社のために開発した分散Key-Valueストアデータベースであり,Dynamo\cite{DYNAMO}とBigTable\cite{BIGTABLE}を合わせた特徴を持っている. 2008年にオープンソースとして公開され, 2009年にApache Incubatorのプロジェクトとなった.
+2010年にはApacheのトップレベルプロジェクトとなり, 現在でも頻繁にバージョンアップが行われている. \\
+
+\subsection{ConsistencyLevel}
+Cassandraには, ConsistencyLevelが用意されている. これは, 整合性と応答速度どちらを取るか選ぶためのパラメータであり, リクエストごとに設定することが出来る. \\
+また, ReadとWriteでConsistencyLevelの意味は異なる. 
+このConsistencyLevelを適用するノードの台数をReplicationFactorといい, Cassandraの設定ファイル,またはクライアントより設定することが出来る. \\
+
+\subsection{SEDA}
+SEDA(Staged Event-Driven Architecture)は, Cassandraで使用されているアーキテクチャである\cite{SEDA1}\cite{SEDA2}. 処理を複数のステージに分解しタスクキューとスレッドプールを用意し処理を行う. 処理の様子を図\ref{fig:SEDA}に示す. \\
+タスクが各ステージのタスクキューに入ると, スレッドプールにどれかのスレッドがタスクキューの中からタスクを取り出し処理を行う. 処理が終わるとそのタスクを次のステージのタスクキューに入れる.\\
+このアーキテクチャはマルチスレッドベースなためマルチコアなPCと多数のタスクがある状況で性能を発揮することができる. しかし, あまりにもスレッドプールやタスクが多すぎると, コンテキストに切り替えに時間がかかり性能は低下する. \\
+
+\begin{figure}[!htbp]
+\begin{center}
+	\includegraphics[scale=1.1]{fig/SEDA.pdf}
+\end{center}
+\caption{SEDA}
+\label{fig:SEDA}
+\end{figure}
+
+\subsection{PCクラスタを用いたCassandraの検証結果}
+前回の研究\cite{SHOSHI1}で,PCクラスタを用いたCassandraの検証で行ったMySQLとCassandraの比較から得られた特徴について簡単にまとめる.\\
+クラスタ管理ツールのTorqueを使用し, 使用するノード数を指定してクラスタにジョブを投げてPHPスクリプトを実行させる. このPHPスクリプトは対象のサーバーにリクエストを10000回送信するスクリプトである.実験の概要図を図\ref{fig:benchmark}に示す.\\
+
+\begin{figure}[!htbp]
+\begin{center}
+	\includegraphics[scale=0.4]{./fig/benchmark.pdf}
+\end{center}
+\caption{PCクラスタを用いたCassandraの検証環境}
+\label{fig:benchmark}
+\end{figure}
+
+\subsubsection{2Coreを搭載したコア数の少ないサーバーを用いた検証}
+ReadはCassandra/MySQLともに,同じような推移の仕方をしているが, Cassandraの方が遅い. しかし, WriteはCassandraの方が断然速く動作している. この実験では, Cassandraの動作を基準に考えたため書き込みのコマンドにREPLACEを使用した. REPLACEは置き換えるようなコマンドである. \\
+そのため, INSERTに比べて多少遅くなる. それがこのグラフに出ているのではないかと考えられる. SEDAは複数のスレッドで動作しているためコア数が少ないサーバーでは性能が出にくいことがわかる. \\
+\subsubsection{4Core8Threadsを搭載したコア数の多いサーバーを用いた検証}
+Read/Write共にMySQLの性能を超えることに成功した. Readにおいてはコア数が少ない場合に超えることが出来なかったが, 並列度が70度付近でMySQLを上回る性能がでている.
+Cassandraの平均時間は並列度が増加しても, MySQLよりは平均時間の上昇は少ない. これは, SEDAの特徴である多くのタスクを並列に実行すると性能を発揮することを確認することが出来た. \\
+また, SEDAはマルチスレッド前提であるため, コア数が少ないサーバーでは性能が出ず, コア数の多いサーバーで性能が発揮できるということが分かる.\\
+\subsubsection{クラスタ化したCassandraを用いた検証}
+Read/Writeともに, 今回の場合は分散を行わなかったほうが性能を引き出せてることが分かった. これは, 実験に使用したデータがRead/Write共に1つだけで, 結局は同じノードにリクエストが転送されている. そのため, リクエストは1台のノードに集中する. よって, 性能が出ないのではないかと考えられる. Cassandraをただ増やすだけでは性能は得ることが出来ず, データも分散させて実験を行わなければならない.\\
+\subsubsection{まとめ}
+以上の実験より,Cassandraはコア数の多いサーバーかつREAD/WRITEを並列に行い,なおかつ使用するデータ構造も工夫が必要であるということが分かった.
+
+\section{スケーラビリティのあるCMSの設計}
+Cassandraの検証で得られた結果に基づき,スケーラビリティのあるCMSの設計を行う.
+スケーラビリティがあるということは以下のような特徴がある.
+\begin{enumerate}
+\item{大きな負荷がかかっても性能が低下しない}
+\item{ノードの台数を増やすだけで性能を維持することが出来る}
+\end{enumerate}
+これらの特徴を実現する為に,2つの方法が挙げられる.
+\begin{enumerate}
+\item{データのコピーを複数用意する方法}\\
+ データのコピーを複数用意することにより,データのアクセスが集中することを防ぐ.
+\item{データの更新通知を行わずポーリングを行う方法}\\
+ 複数コピーされたデータを同期するためには更新を通知する必要があるが,実際には全ての更新結果をコピー先が把握する必要はなく,コピー先が必要になったときのみ同期を行えば良い.
+\end{enumerate}
+この2つの方法に則り設計を行った.\\
+
+\subsection{提案するシステムのアーキテクチャ}
+提案するシステムのアーキテクチャを図\ref{fig:arch}に示す.
+\begin{figure}[!htbp]
+\begin{center}
+	\includegraphics[scale=0.3]{./fig/arch.pdf}
+\end{center}
+\caption{提案するシステムの概要}
+\label{fig:arch}
+\end{figure}
+\\
+ Cassandraをバックエンドにその上にCMSのAPIを提供するサーバーを構築し,WebサーバーがAPIサーバーを呼び出す形をとる.
+こうすることで,APIサーバー自体のスケーラビリティをbotなどを用いて計測することが出来るためである.また,クライアントを
+Webと限定せず,デスクトップクライアントなど多様なクライアントに対応することが出来る.\\
+ 提案するシステムでは各ステージ(Cassandra/APIサーバー/Webサーバー)で方法1に則りキャッシュを用意し,アクセスが集中するのを防ぐ.
+また,方法2に則り,各ステージのキャッシュは必要なとき自分より上のステージよりポーリングし更新の有無を確認する.\\
+この方法を用いることでスケーラビリティのあるCMSが構築できるのではないかと考えられる.\\
+
+
+\subsection{スレッドセーフな木構造の開発}
+CMSのデータ構造としは,木構造を採用することが出来る.しかし,スケーラビリティのあるシステムで使用するデータ構造はスケールする必要があるため,
+スケールする木構造を開発する必要がある.そこで,スレッドセーフな木構造である非破壊的木構造について説明する.\\
+
+\subsubsection{破壊的木構造}
+一般的に使用されている木構造はメモリ上の木構造を書き換えて編集する破壊的木構造である.この木構造は編集する際に木にロックを掛ける必要があり,
+編集時には木を走査しようとしているスレッドは書き換えの終了を待つ必要,閲覧者がいる場合は木の操作を終了するのを待つ必要があり,スケールしないと考えられる.\\
+
+\begin{figure}[!htbp]
+\begin{center}
+	\includegraphics[scale=0.3]{./fig/desttree.pdf}
+\end{center}
+\caption{破壊的木構造}
+\label{fig:destree}
+\end{figure}
+
+\newpage
+
+\subsubsection{非破壊的木構造}
+今回設計したCMSではデータ構造として非破壊的木構造を用いる.非破壊的木構造とは,編集時にルートノードから編集する対象となるノードまでのパスをコピーし
+,変更のないノードは古い木構造と共有する.そしてコピーしたルートノードを編集された木とする.
+こうすることで,編集前の木構造は破壊されず,木構造を走査していながら編集することが可能になる.\\
+
+\begin{figure}[!htbp]
+\begin{center}
+	\includegraphics[scale=0.3]{./fig/monotree.pdf}
+\end{center}
+\caption{非破壊的木構造}
+\label{fig:destree}
+\end{figure}
+
+\section{実装}
+本研究では,実装にJavaを使用した.以下に実装した非破壊的木構造について説明する.\\
+\subsection{オンメモリな非破壊的木構造の実装}
+分散リポジトリの考え方を参考にし,非破壊的木構造を実装する上で以下のようなクラスを考えた.
+\begin{itemize}
+\item{Node : データを保持するクラス}
+\item{NodeID : Nodeを識別するID,UUID+Version番号で構成される.}
+\item{Forest : すべてのNodeを含んだマップ}
+\item{Tree : あるNodeをルートとする破壊的な木}
+\item{TreeEditor : 木構造を非破壊的に編集するエディタ}
+\end{itemize}
+それぞれのクラスの役割に付いて説明する.\\
+
+\subsubsection{Node/NodeID}
+Nodeはデータを保持するクラスである.NodeのインスタンスはユニークなNodeIDを持ちUUIDとVersion番号で構成されている.
+NodeID.UUIDが一致するNode同士は木構造上同じ位置に存在するNodeであり,木の特定のNodeを編集する際には木を捜査し同一のUUIDを持つNodeを検索するために使用される.\\
+
+\begin{figure}[!htbp]
+\begin{center}
+	\includegraphics[scale=0.3]{./fig/node_nodeid.pdf}
+\end{center}
+\caption{NodeとNodeIDの関係}
+\label{fig:node_nodeid}
+\end{figure}
+
+\subsubsection{Forest}
+Forestは全Nodeのマップで管理しており,NodeIDをkeyとしてNodeを返す.また,NodeIDのUUIDをkeyとして同じUUIDを持つNodeの中で最新のNodeを返す.
+CMSのコンテンツ全体のTreeとNodeの作成,削除,取得はすべてこのクラスが管理している.\\
+あるデータ構造を用いて非破壊的木構造を実装する場合,このForestが中心となる.よって,他のクラスはある程度使い回すことができ,基本的にForestの実装だけを行えば良い.\\
+
+\subsubsection{Tree}
+あるNodeをルートとする木構造,Forestには全体を表すTreeを持っているが,それとは別に任意のNodeをTreeとすることが出来る.こうすることで全体の木を編集しなくても,部分的に木を編集することが出来るようになる.\\
+
+\subsubsection{TreeEditor}
+TreeEditorはTreeをメンバーとして保持し,木構造を非破壊的に編集する.メソッドにcommit/check/updateを持ち,1回または複数回の編集が完了すると自身のルートをTreeに反映する.\\
+もし,メンバーのTreeがすでに他のTreeEditorにより編集されていた場合commitは失敗しmerge処理を行う.
+
+\begin{figure}[!htbp]
+\begin{center}
+	\includegraphics[scale=0.3]{./fig/forest.pdf}
+\end{center}
+\caption{実装した非破壊的木構造の概要}
+\label{fig:forest.pdf}
+\end{figure}
+
+\subsection{Cassandraを使った非破壊的木構造の実装}
+非破壊的木構造を実装するため,Cassandraに以下のようなKeySpaceを定義した.\\
+
+\begin{figure}[!htbp]
+\begin{center}
+	\includegraphics[scale=0.3]{./fig/keyspace.pdf}
+\end{center}
+\caption{KeySpaceの定義}
+\label{fig:defKS}
+\end{figure}
+
+Node ColumnFamilyはNodeIDをkeyとしてColumnはNodeの保持するデータを格納する.NodeID ColumnFamilyはNodeのUUIDをkeyとしてNodeの最新版のVersionを格納する.Partitionerにはkeyの分散を考慮してRandomPartitionerを使用している.\\
+
+\subsubsection{CassandraForest}
+CassandraForestは初めにCassandraから最新版のノードの情報をすべて取得しメモリ上にキャッシュする.この処理のリクエスト回数は木構造の大きさによらず,iNodeID ColumnFamilyからの最新版NodeIDの全取得,Node ColumnFamilyからの最新版Nodeの取得の2回である.\\
+オンメモリ上の実装と同様に,作成,削除,取得を管理する.そのため,内部にはCassandraClientを保持している.Cassandraの検証より並列に負荷をかけることで,性能を発揮するという結果が得られた.よって,Javaのスレッドプールフレームワーク(java.concurrentパッケージ)を用いてコネクションプールを用意し,Cassandraへの操作を並列に行う.\\
+ Cassandraへのリクエストに対する返り値はすべてFutureでやり取りされ,リクエストの結果は必要となったときにのみ同期され展開される.この様に実装することにより高い並列度が期待できる.\\
+
+\begin{figure}[!htbp]
+\begin{center}
+	\includegraphics[scale=0.4]{./fig/concurrent_client.pdf}
+\end{center}
+\caption{ConnectionPool}
+\label{ref:ConPool}
+\end{figure}
+
+\subsubsection{CassandraTreeEditor}
+TreeEditorでは,編集する際にNodeをそれぞれコピーするため,Cassandraへのリクエストが複数発生する.しかし,実際にはコピーが終わったあとにまとめてコピーを行えば良い.Cassandraには$batch_mutate$という機能があり,複数のColumnFamilyと複数のColumnに1度で変更を加えることができる.\\
+CassandraTreeEditorでは,NodeID ColumnFamilyとNode ColumnFamilyへの操作をまとめてリクエストするため,Cassandraへ発生するリクエストの回数は非破壊的に編集した場合でも1回である.
+
+\section{まとめと今後の課題}
+本研究では,スケーラビリティのあるCMSを開発するため,前回行ったCassandraの検証と検証環境を構築を元に設計を行った.
+スケーラビリティのあるCMSの特徴として,「負荷がかかっても性能が低下しない・ノードの台数を増やすだけで性能を維持できる」と考え,
+実現方法として「データの複製を用意する・更新通知にはポーリングを利用する」を提案した.\\
+この2つの方法を実現したものとして非破壊的木構造に分散リポジトリの要素を組み合わせたデータ構造を開発出来た.\\
+今後は,開発したデータ構造の性能評価と改良を行う.
+
+\section{謝辞}
+
+\bibliographystyle{ipsjunsrt}
+\begin{thebibliography}{99}
+\bibitem{SHOSHI1} Cassandraを用いたCMSのPCクラスタを用いたスケーラビリティの検証
+\bibitem{DYNAMO} Dynamo: Amazon's Highly Avaliable Key-value Store
+\bibitem{YCSB} Benchmarking Cloud Serving Systems with YCSB
+\bibitem{SEDA1} The Staged Event-Driven Architecture for Highly-Concurrent Server Applications
+\bibitem{SEDA2} SEDA : An Architecture for Well-Conditioned , Scalable Internet Services
+\bibitem{BIGTABLE} Bigtable : A Distributed Storege System for Structured Data
+\end{thebibliography}
+
+\end{document}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Makefile	Thu Mar 10 18:47:54 2011 +0900
@@ -0,0 +1,73 @@
+TARGET = ARC195OS117-23
+
+LATEX   = platex-utf8
+#LATEX   = latex
+BIBTEX  = jbibtex
+DVIPS   = dvips
+DVIPDFM = dvipdfmx
+RM      = rm -f
+
+#  Option definitions
+DVIPDFMOPT = -l
+DVIPSOPT   = -D 720 -mode esphi -O 0mm,0mm -N0 
+
+#  Suffixes definitions
+.SUFFIXES: .tex .dvi
+
+#  Recipes
+all: pdf# $(TARGET).ps
+	open $(TARGET).pdf
+dvi:
+	@echo "----------- make dvi file ($(TARGET).dvi) ----------"
+	$(LATEX) $(TARGET)
+	$(LATEX) $(TARGET)
+	$(LATEX) $(TARGET)
+pdf: dvi
+	$(DVIPDFM) $(DVIPDFMOPT) $(TARGET)
+ps: dvi
+	$(DVIPS) $(DVIPSOPT) $(TARGET)
+
+clean:
+	$(RM) *~ \#*
+	@if [ -f $(TARGET).aux ];\
+		then $(RM) $(TARGET).aux;\
+	fi
+	@if [ -f $(TARGET).log ];\
+		then $(RM) $(TARGET).log;\
+	fi
+	@if [ -f $(TARGET).toc ];\
+		then $(RM) $(TARGET).toc;\
+	fi
+	@if [ -f $(TARGET).lof ];\
+		then $(RM) $(TARGET).lof;\
+	fi
+	@if [ -f $(TARGET).lot ];\
+		then $(RM) $(TARGET).lot;\
+	fi
+	@if [ -f $(TARGET).big ];\
+		then $(RM) $(TARGET).big;\
+	fi
+	@if [ -f $(TARGET).ilg ];\
+		then $(RM) $(TARGET).ilg;\
+	fi
+	@if [ -f $(TARGET).idx ];\
+		then $(RM) $(TARGET).idx;\
+	fi
+	@if [ -f $(TARGET).ind ];\
+		then $(RM) $(TARGET).ind;\
+	fi
+	@if [ -f $(TARGET).dvi ];\
+		then $(RM) $(TARGET).dvi;\
+	fi
+	@if [ -f $(TARGET).ps ];\
+		then $(RM) $(TARGET).ps;\
+	fi
+	@if [ -f $(TARGET).pdf ];\
+		then $(RM) $(TARGET).pdf;\
+	fi
+	@if [ -f $(TARGET).out ];\
+		then $(RM) $(TARGET).out;\
+	fi
+	@if [ -f $(TARGET).blg ];\
+		then $(RM) $(TARGET).blg;\
+	fi
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/bibsample.bib	Thu Mar 10 18:47:54 2011 +0900
@@ -0,0 +1,1 @@
+@book{total,
	author =	"ɓ al",
	yomi =		"Kazuto Itoh",
	title =		"{\LaTeX} g[^KCh",
	publisher =	"GaVXeg[fBO",
	year =		1991}
@book{latex,
	author =	"Leslie Lamport",
	title =		"A Document Preparation System {\LaTeX} User's Guide
			 \& Reference Manual",
	publisher = 	"Addison Wesley",
	address = 	"Reading, Massachusetts",
	year =		1986,
	note =		"iCooke, E., et al.FVXe {\LaTeX}C" #
			"AXL[oŋ (1990)j"}
@book{nodera,
	author =	"쎛 u",
	yomi =		"Takashi Nodera",
	title = 	"yX {\LaTeX}", 
	publisher =	"o",
	year =		1990}
@book{okumura,
	author =	" F",
	yomi =		"Haruhiko Okudera",
	title =		"{\LaTeX} 쐬",
	publisher =	"Zp]_",
	year =		1991}
@article{article1,
	author =	" M",
	yomi =		"Sakurai, Takafumi",
	title =		"ώ`_ƌ^_",
	journal =	"񏈗",
	volume =	30,
	number =	6,
	pages =		"626--634",
	year =		1989}
@article{article2,
	author =	" Y and J ^",
	yomi =		"Noguchi, K and Ohtani, M",
	title =		"OSI̎Ƃ̉ۑ",
	journal =	"񏈗",
	volume =	31,
	number =	9,
	pages =		"1235-1244",
	year =		1990}
@article{article3,
	author =	"Ssss Itoh and Nnnn Goto",
	title =		"An Adaptive Noiseless Coding for Sources with Big
			 Alphabet Size",
	journal =	"Trans. IEICE",
	volume =	"E74",
	number =	9,
	pages =		"2495--2503",
	year =		1991,
	month =		sep}
@article{article4,
	author =	"c {} and   and R ",
	yomi =		"Tanaka, S and Muramatsu, S and Yamashita, S",
	title =		"9i7zIRunge-Kutta@̍œKɂ‚",
	journal =	"񏈗w_",
	volume =	33,
	number =	12,
	pages =		"1512--1526",
	year =		1992}
@article{article5,
	author =	"K. Abrahamson and N. Dadoun and " #
			"D. G. Kirkpatrick and T. Przytycka",
	title =		"A Simple Parallel Tree Contraction Algorithm",
	journal =	"J. Algorithms",
	volume =	10,
	number =	2,
	pages =		"287--302",
	year =		1989}
@article{article6,
	author =	"c {} and others",
	title =		"9i7zIRunge-Kutta@̎̉ɂ‚",
	journal =	"񏈗w_",
	volume =	33,
	number =	12,
	pages =		"1506--1511",
	year =		1992}

@book{book1,
	author =	"J. D. Foley and others",
	title =		"Computer Graphics --- Principles and Practice",
	series =	"System Programming Series",
	publisher =	"Addison-Wesley",
	address =	"Reading, Massachusetts",
	edition =	"2nd",
	year =		1990}
@book{book2,
	author =	"t  and  M",
	yomi =		"Chiba, N. and Muraoka, K.",
	title =		"Cg[VOCG",
	series =	"Information {\&} Computing",
	volume =	46,
	publisher =	"TCGX",
	year =		1990}
@book{book3,
	author =	"Chang, C. L. and Lee, R. C. T.",
	title =		"Symbolic Logic and Mechanical Theorem Proving",
	publisher =	"Academic Press",
	address =	"New York",
	year =		1973,
	note =		"i^C҈䏁: " #
			"vZ@ɂ藝̎ؖ, " #
			"{Rs[^ (1983)j"}
@booklet{booklet1,
	author =	"VRs[^ZpJ@\",
	title =		"ܐRs[^vWFNg̊Tv",
	howpublished =	"{FGCS'92}ɂĔzz",
	year =		1992}

@inbook{inbook1,
	author =	"Knuth, D. E.",
	title =		"Fundamental Algorithms",
	series =	"Art of Computer Programming",
	volume =	1,
	chapter =	2,
	pages =		"371--381",
	publisher =	"Addison-Wesley",
	address =	"Reading, Massachusetts",
	edition =	"2nd",
	year =		1973}

@incollection{incollection1,
	author =	"Schwartz, Aaaa Jjjj",
	title =		"Subdividing B{\'e}zier Curves and Surfaces",
	booktitle =	"Geometric Modeling: Algorithms and New Trends",
	editor =	"Farin, G. E.",
	publisher =	"SIAM",
	address =	"Philadelphia",
	pages =		"55--66",
	year =		1987}

@inproceedings{inproceedings1,
	author =	"Baraff, D",
	title =		"Curved Surfaces and Coherence for Non-penetrating
			 Rigid Body Simulation",
	booktitle =	"SIGGRAPH '90 Proceedings",
	pages =		"19--28",
	editor =	"Beach, R. J.",
	address =	"Dallas, Texas",
	organization =	"ACM",
	publisher =	"Addison-Wesley",
	year =		1990}

@manual{manual1,
	organization =	"Adobe Systems Inc.",
	title =		"PostScript Language Reference Manual",
	publisher =	"Addison-Wesley",
	address =	"Reading, Massachusetts",
	year =		1985}

@mastersthesis{mastersthesis1,
	author =	"R `s",
	yomi =		"Yamashita, Y",
	title =		"R@ւ̔ے̓",
	school =	"}gww@Hw",
	year =		1989}


@misc{misc1,
	author =	"ē N and  _",
	title =		"{{\tt ipsjpapers.sty}}",
	note =		"i񏈗w_pX^Ct@CC" #
			"_҂ɔzzj",
	year =		1995}

@phdthesis{phdthesis1,
	author =	"Weihl, W.",
	title =		"Specification and Implementation of
			 Atomic Data Types",
	school =	"MIT",
	address =	"Boston",
	year =		1984}

@proceedings{proceedings1,
	title =		"Proc. Intl. Conf. on Fifth Generation Computer
			 Systems",
	organization =	"Institute for New Generation Computer Technology",
	volume =	1,
	year =		1992}

@techreport{techreport1,
	author =	"Ihsakat Aredon",
	title =		"{\TeX} ƌm",
	type =		"Seminar on Mathematical Sciences",
	number =	13,
	institution =	"Department of Mathematics, Keio University",
	address =	"Yokohama",
	year =		1989}

@unpublished{unpublished,
	author =	"񏈗w_ҏWψ",
	title =		"{\LaTeX}ɂ_쐬̃KChi1Łj",
	note =		"i_҂ɔzzj",
	year =		1995}
\ No newline at end of file
Binary file fig/SEDA.pdf has changed
Binary file fig/arch.pdf has changed
Binary file fig/benchmark.pdf has changed
Binary file fig/concurrent_client.pdf has changed
Binary file fig/desttree.pdf has changed
Binary file fig/forest.pdf has changed
Binary file fig/keyspace.pdf has changed
Binary file fig/monotree.pdf has changed
Binary file fig/node_nodeid.pdf has changed
Binary file graffle/Node_NodeID.graffle has changed
Binary file graffle/desttree.graffle has changed
Binary file graffle/forest.graffle has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/graffle/monotree.graffle	Thu Mar 10 18:47:54 2011 +0900
@@ -0,0 +1,1868 @@
+<?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.OmniGraffle</string>
+		<string>129.22</string>
+	</array>
+	<key>AutoAdjust</key>
+	<true/>
+	<key>CanvasColor</key>
+	<dict>
+		<key>w</key>
+		<string>1</string>
+	</dict>
+	<key>CanvasOrigin</key>
+	<string>{0, 0}</string>
+	<key>CanvasScale</key>
+	<real>1</real>
+	<key>ColumnAlign</key>
+	<integer>1</integer>
+	<key>ColumnSpacing</key>
+	<real>36</real>
+	<key>CreationDate</key>
+	<string>2010-08-28 17:44:20 +0900</string>
+	<key>Creator</key>
+	<string>Shinji KONO</string>
+	<key>DisplayScale</key>
+	<string>1 cm = 1 cm</string>
+	<key>GraphDocumentVersion</key>
+	<integer>5</integer>
+	<key>GraphicsList</key>
+	<array>
+		<dict>
+			<key>Bounds</key>
+			<string>{{348.5, 130.5}, {70, 36}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>FitText</key>
+			<string>YES</string>
+			<key>Flow</key>
+			<string>Resize</string>
+			<key>ID</key>
+			<integer>84</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>Text</key>
+				<string>{\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf350
+{\fonttbl\f0\fnil\fcharset128 HiraKakuProN-W3;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
+
+\f0\fs24 \cf0 \'89\'65\'8b\'bf\'82\'b5\'82\'c8\'82\'a2\
+\'95\'94\'95\'aa\'82\'cd\'8b\'a4\'97\'4c}</string>
+			</dict>
+			<key>Wrap</key>
+			<string>NO</string>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{177.242, 116.5}, {58, 18}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>FitText</key>
+			<string>YES</string>
+			<key>Flow</key>
+			<string>Resize</string>
+			<key>ID</key>
+			<integer>83</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>Text</key>
+				<string>{\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf350
+{\fonttbl\f0\fnil\fcharset128 HiraKakuProN-W3;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
+
+\f0\fs24 \cf0 \'96\'d8\'82\'f0\'91\'96\'8d\'b8}</string>
+			</dict>
+			<key>Wrap</key>
+			<string>NO</string>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{504, 290}, {201, 36}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>FitText</key>
+			<string>YES</string>
+			<key>Flow</key>
+			<string>Resize</string>
+			<key>ID</key>
+			<integer>82</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>Text</key>
+				<string>{\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf350
+{\fonttbl\f0\fnil\fcharset128 HiraKakuProN-W3;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
+
+\f0\fs24 \cf0 \'95\'d2\'8f\'57\'82\'b7\'82\'e9\'95\'94\'95\'aa\'82\'dc\'82\'c5\'82\'cc\'83\'52\'83\'73\'81\'5b\'82\'f0\'8d\'ec\'90\'ac\'81\'41\
+\'91\'bc\'82\'cd\'8c\'c3\'82\'a2\'96\'d8\'82\'c6\'8b\'a4\'97\'4c\'82\'b7\'82\'e9}</string>
+			</dict>
+			<key>Wrap</key>
+			<string>NO</string>
+		</dict>
+		<dict>
+			<key>Class</key>
+			<string>LineGraphic</string>
+			<key>Head</key>
+			<dict>
+				<key>ID</key>
+				<integer>79</integer>
+			</dict>
+			<key>ID</key>
+			<integer>81</integer>
+			<key>Points</key>
+			<array>
+				<string>{612.25, 234.727}</string>
+				<string>{570.228, 213.906}</string>
+			</array>
+			<key>Style</key>
+			<dict>
+				<key>stroke</key>
+				<dict>
+					<key>HeadArrow</key>
+					<string>StickArrow</string>
+					<key>HeadScale</key>
+					<real>2.2142860889434814</real>
+					<key>LineType</key>
+					<integer>1</integer>
+					<key>TailArrow</key>
+					<string>0</string>
+				</dict>
+			</dict>
+			<key>Tail</key>
+			<dict>
+				<key>ID</key>
+				<integer>6</integer>
+			</dict>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{74.25, 193.5}, {106, 36}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>FitText</key>
+			<string>YES</string>
+			<key>Flow</key>
+			<string>Resize</string>
+			<key>ID</key>
+			<integer>80</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>Text</key>
+				<string>{\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf350
+{\fonttbl\f0\fnil\fcharset128 HiraKakuProN-W3;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
+
+\f0\fs24 \cf0 \'89\'7b\'97\'97\'92\'86\'82\'c5\'82\'e0\
+\'90\'ae\'8d\'87\'90\'ab\'82\'cd\'95\'db\'82\'bd\'82\'ea\'82\'e9}</string>
+			</dict>
+			<key>Wrap</key>
+			<string>NO</string>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{467.75, 87}, {58, 18}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>FitText</key>
+			<string>YES</string>
+			<key>Flow</key>
+			<string>Resize</string>
+			<key>FontInfo</key>
+			<dict>
+				<key>Color</key>
+				<dict>
+					<key>b</key>
+					<string>0</string>
+					<key>g</key>
+					<string>0</string>
+					<key>r</key>
+					<string>1</string>
+				</dict>
+			</dict>
+			<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>Text</key>
+				<string>{\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf350
+{\fonttbl\f0\fnil\fcharset128 HiraKakuProN-W3;}
+{\colortbl;\red255\green255\blue255;\red255\green0\blue0;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
+
+\f0\fs24 \cf2 \'90\'56\'82\'b5\'82\'a2\'96\'d8}</string>
+			</dict>
+			<key>Wrap</key>
+			<string>NO</string>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{273.5, 85}, {46, 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>Text</key>
+				<string>{\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf350
+{\fonttbl\f0\fnil\fcharset128 HiraKakuProN-W3;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
+
+\f0\fs24 \cf0 \'8c\'c3\'82\'a2\'96\'d8}</string>
+			</dict>
+			<key>Wrap</key>
+			<string>NO</string>
+		</dict>
+		<dict>
+			<key>Class</key>
+			<string>LineGraphic</string>
+			<key>ID</key>
+			<integer>76</integer>
+			<key>Points</key>
+			<array>
+				<string>{186.016, 261.111}</string>
+				<string>{147.5, 270.964}</string>
+				<string>{158.175, 297.5}</string>
+			</array>
+			<key>Style</key>
+			<dict>
+				<key>stroke</key>
+				<dict>
+					<key>HeadArrow</key>
+					<string>StickArrow</string>
+					<key>HeadScale</key>
+					<real>2.2142860889434814</real>
+					<key>LineType</key>
+					<integer>1</integer>
+					<key>Pattern</key>
+					<integer>1</integer>
+					<key>TailArrow</key>
+					<string>0</string>
+				</dict>
+			</dict>
+		</dict>
+		<dict>
+			<key>Class</key>
+			<string>LineGraphic</string>
+			<key>ID</key>
+			<integer>75</integer>
+			<key>Points</key>
+			<array>
+				<string>{225.5, 193.111}</string>
+				<string>{186.984, 202.964}</string>
+				<string>{197.659, 229.5}</string>
+			</array>
+			<key>Style</key>
+			<dict>
+				<key>stroke</key>
+				<dict>
+					<key>HeadArrow</key>
+					<string>StickArrow</string>
+					<key>HeadScale</key>
+					<real>2.2142860889434814</real>
+					<key>LineType</key>
+					<integer>1</integer>
+					<key>Pattern</key>
+					<integer>1</integer>
+					<key>TailArrow</key>
+					<string>0</string>
+				</dict>
+			</dict>
+		</dict>
+		<dict>
+			<key>Class</key>
+			<string>LineGraphic</string>
+			<key>ID</key>
+			<integer>74</integer>
+			<key>Points</key>
+			<array>
+				<string>{276.016, 133.111}</string>
+				<string>{237.5, 142.964}</string>
+				<string>{248.175, 169.5}</string>
+			</array>
+			<key>Style</key>
+			<dict>
+				<key>stroke</key>
+				<dict>
+					<key>HeadArrow</key>
+					<string>StickArrow</string>
+					<key>HeadScale</key>
+					<real>2.2142860889434814</real>
+					<key>LineType</key>
+					<integer>1</integer>
+					<key>Pattern</key>
+					<integer>1</integer>
+					<key>TailArrow</key>
+					<string>0</string>
+				</dict>
+			</dict>
+		</dict>
+		<dict>
+			<key>Class</key>
+			<string>LineGraphic</string>
+			<key>Head</key>
+			<dict>
+				<key>ID</key>
+				<integer>3</integer>
+			</dict>
+			<key>ID</key>
+			<integer>70</integer>
+			<key>Points</key>
+			<array>
+				<string>{153.5, 145.825}</string>
+				<string>{273.003, 133.649}</string>
+			</array>
+			<key>Style</key>
+			<dict>
+				<key>stroke</key>
+				<dict>
+					<key>HeadArrow</key>
+					<string>StickArrow</string>
+					<key>HeadScale</key>
+					<real>2.2142860889434814</real>
+					<key>LineType</key>
+					<integer>1</integer>
+					<key>Pattern</key>
+					<integer>1</integer>
+					<key>TailArrow</key>
+					<string>0</string>
+				</dict>
+			</dict>
+			<key>Tail</key>
+			<dict>
+				<key>ID</key>
+				<integer>69</integer>
+			</dict>
+		</dict>
+		<dict>
+			<key>Class</key>
+			<string>Group</string>
+			<key>Graphics</key>
+			<array>
+				<dict>
+					<key>Bounds</key>
+					<string>{{101, 169.793}, {52.5, 12.3636}}</string>
+					<key>Class</key>
+					<string>ShapedGraphic</string>
+					<key>ID</key>
+					<integer>61</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>Text</key>
+						<string>{\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf350
+{\fonttbl\f0\fnil\fcharset128 HiraKakuPro-W3;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+
+\f0\b\fs24 \cf0 \'89\'7b\'97\'97\'8e\'d2}</string>
+					</dict>
+				</dict>
+				<dict>
+					<key>Class</key>
+					<string>Group</string>
+					<key>Graphics</key>
+					<array>
+						<dict>
+							<key>Class</key>
+							<string>LineGraphic</string>
+							<key>ID</key>
+							<integer>63</integer>
+							<key>Points</key>
+							<array>
+								<string>{144.75, 139.227}</string>
+								<string>{127.25, 139.227}</string>
+							</array>
+							<key>Style</key>
+							<dict>
+								<key>stroke</key>
+								<dict>
+									<key>HeadArrow</key>
+									<string>0</string>
+									<key>TailArrow</key>
+									<string>0</string>
+								</dict>
+							</dict>
+						</dict>
+						<dict>
+							<key>Class</key>
+							<string>LineGraphic</string>
+							<key>ID</key>
+							<integer>64</integer>
+							<key>Points</key>
+							<array>
+								<string>{127.25, 139.227}</string>
+								<string>{109.75, 139.227}</string>
+							</array>
+							<key>Style</key>
+							<dict>
+								<key>stroke</key>
+								<dict>
+									<key>HeadArrow</key>
+									<string>0</string>
+									<key>TailArrow</key>
+									<string>0</string>
+								</dict>
+							</dict>
+						</dict>
+						<dict>
+							<key>Class</key>
+							<string>LineGraphic</string>
+							<key>ID</key>
+							<integer>65</integer>
+							<key>Points</key>
+							<array>
+								<string>{127.25, 151.591}</string>
+								<string>{136, 170.136}</string>
+							</array>
+							<key>Style</key>
+							<dict>
+								<key>stroke</key>
+								<dict>
+									<key>HeadArrow</key>
+									<string>0</string>
+									<key>TailArrow</key>
+									<string>0</string>
+								</dict>
+							</dict>
+						</dict>
+						<dict>
+							<key>Class</key>
+							<string>LineGraphic</string>
+							<key>ID</key>
+							<integer>66</integer>
+							<key>Points</key>
+							<array>
+								<string>{127.25, 151.591}</string>
+								<string>{118.5, 170.136}</string>
+							</array>
+							<key>Style</key>
+							<dict>
+								<key>stroke</key>
+								<dict>
+									<key>HeadArrow</key>
+									<string>0</string>
+									<key>TailArrow</key>
+									<string>0</string>
+								</dict>
+							</dict>
+						</dict>
+						<dict>
+							<key>AllowConnections</key>
+							<string>NO</string>
+							<key>AllowLabelDrop</key>
+							<false/>
+							<key>AllowToConnect</key>
+							<false/>
+							<key>Class</key>
+							<string>LineGraphic</string>
+							<key>ID</key>
+							<integer>67</integer>
+							<key>Points</key>
+							<array>
+								<string>{127.25, 133.045}</string>
+								<string>{127.25, 151.591}</string>
+							</array>
+							<key>Style</key>
+							<dict>
+								<key>stroke</key>
+								<dict>
+									<key>HeadArrow</key>
+									<string>0</string>
+									<key>TailArrow</key>
+									<string>0</string>
+								</dict>
+							</dict>
+						</dict>
+						<dict>
+							<key>Bounds</key>
+							<string>{{118.5, 120.682}, {17.5, 12.3636}}</string>
+							<key>Class</key>
+							<string>ShapedGraphic</string>
+							<key>ID</key>
+							<integer>68</integer>
+							<key>Shape</key>
+							<string>Circle</string>
+						</dict>
+					</array>
+					<key>ID</key>
+					<integer>62</integer>
+				</dict>
+				<dict>
+					<key>Bounds</key>
+					<string>{{101, 114.5}, {52.5, 68}}</string>
+					<key>Class</key>
+					<string>ShapedGraphic</string>
+					<key>ID</key>
+					<integer>69</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>
+				</dict>
+			</array>
+			<key>ID</key>
+			<integer>60</integer>
+		</dict>
+		<dict>
+			<key>Class</key>
+			<string>Group</string>
+			<key>Graphics</key>
+			<array>
+				<dict>
+					<key>Bounds</key>
+					<string>{{586, 265.293}, {52.5, 12.3636}}</string>
+					<key>Class</key>
+					<string>ShapedGraphic</string>
+					<key>ID</key>
+					<integer>43</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>Text</key>
+						<string>{\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf350
+{\fonttbl\f0\fnil\fcharset128 HiraKakuPro-W3;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+
+\f0\b\fs24 \cf0 \'95\'d2\'8f\'57\'8e\'d2}</string>
+					</dict>
+				</dict>
+				<dict>
+					<key>Class</key>
+					<string>Group</string>
+					<key>Graphics</key>
+					<array>
+						<dict>
+							<key>Class</key>
+							<string>LineGraphic</string>
+							<key>ID</key>
+							<integer>5</integer>
+							<key>Points</key>
+							<array>
+								<string>{629.75, 234.727}</string>
+								<string>{612.25, 234.727}</string>
+							</array>
+							<key>Style</key>
+							<dict>
+								<key>stroke</key>
+								<dict>
+									<key>HeadArrow</key>
+									<string>0</string>
+									<key>TailArrow</key>
+									<string>0</string>
+								</dict>
+							</dict>
+						</dict>
+						<dict>
+							<key>Class</key>
+							<string>LineGraphic</string>
+							<key>ID</key>
+							<integer>6</integer>
+							<key>Points</key>
+							<array>
+								<string>{612.25, 234.727}</string>
+								<string>{594.75, 234.727}</string>
+							</array>
+							<key>Style</key>
+							<dict>
+								<key>stroke</key>
+								<dict>
+									<key>HeadArrow</key>
+									<string>0</string>
+									<key>TailArrow</key>
+									<string>0</string>
+								</dict>
+							</dict>
+						</dict>
+						<dict>
+							<key>Class</key>
+							<string>LineGraphic</string>
+							<key>ID</key>
+							<integer>7</integer>
+							<key>Points</key>
+							<array>
+								<string>{612.25, 247.091}</string>
+								<string>{621, 265.636}</string>
+							</array>
+							<key>Style</key>
+							<dict>
+								<key>stroke</key>
+								<dict>
+									<key>HeadArrow</key>
+									<string>0</string>
+									<key>TailArrow</key>
+									<string>0</string>
+								</dict>
+							</dict>
+						</dict>
+						<dict>
+							<key>Class</key>
+							<string>LineGraphic</string>
+							<key>ID</key>
+							<integer>44</integer>
+							<key>Points</key>
+							<array>
+								<string>{612.25, 247.091}</string>
+								<string>{603.5, 265.636}</string>
+							</array>
+							<key>Style</key>
+							<dict>
+								<key>stroke</key>
+								<dict>
+									<key>HeadArrow</key>
+									<string>0</string>
+									<key>TailArrow</key>
+									<string>0</string>
+								</dict>
+							</dict>
+						</dict>
+						<dict>
+							<key>AllowConnections</key>
+							<string>NO</string>
+							<key>AllowLabelDrop</key>
+							<false/>
+							<key>AllowToConnect</key>
+							<false/>
+							<key>Class</key>
+							<string>LineGraphic</string>
+							<key>ID</key>
+							<integer>45</integer>
+							<key>Points</key>
+							<array>
+								<string>{612.25, 228.545}</string>
+								<string>{612.25, 247.091}</string>
+							</array>
+							<key>Style</key>
+							<dict>
+								<key>stroke</key>
+								<dict>
+									<key>HeadArrow</key>
+									<string>0</string>
+									<key>TailArrow</key>
+									<string>0</string>
+								</dict>
+							</dict>
+						</dict>
+						<dict>
+							<key>Bounds</key>
+							<string>{{603.5, 216.182}, {17.5, 12.3636}}</string>
+							<key>Class</key>
+							<string>ShapedGraphic</string>
+							<key>ID</key>
+							<integer>46</integer>
+							<key>Shape</key>
+							<string>Circle</string>
+						</dict>
+					</array>
+					<key>ID</key>
+					<integer>4</integer>
+				</dict>
+				<dict>
+					<key>Bounds</key>
+					<string>{{586, 210}, {52.5, 68}}</string>
+					<key>Class</key>
+					<string>ShapedGraphic</string>
+					<key>ID</key>
+					<integer>47</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>
+				</dict>
+			</array>
+			<key>ID</key>
+			<integer>2</integer>
+		</dict>
+		<dict>
+			<key>Class</key>
+			<string>LineGraphic</string>
+			<key>Head</key>
+			<dict>
+				<key>ID</key>
+				<integer>15</integer>
+			</dict>
+			<key>ID</key>
+			<integer>40</integer>
+			<key>Points</key>
+			<array>
+				<string>{508.769, 254.002}</string>
+				<string>{378.967, 303.998}</string>
+			</array>
+			<key>Style</key>
+			<dict>
+				<key>stroke</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>b</key>
+						<string>0.0227273</string>
+						<key>g</key>
+						<string>0.0227273</string>
+						<key>r</key>
+						<string>1</string>
+					</dict>
+					<key>HeadArrow</key>
+					<string>FilledArrow</string>
+					<key>TailArrow</key>
+					<string>0</string>
+				</dict>
+			</dict>
+			<key>Tail</key>
+			<dict>
+				<key>ID</key>
+				<integer>32</integer>
+			</dict>
+		</dict>
+		<dict>
+			<key>Class</key>
+			<string>LineGraphic</string>
+			<key>Head</key>
+			<dict>
+				<key>ID</key>
+				<integer>9</integer>
+			</dict>
+			<key>ID</key>
+			<integer>39</integer>
+			<key>Points</key>
+			<array>
+				<string>{430.75, 194.209}</string>
+				<string>{239.986, 239.791}</string>
+			</array>
+			<key>Style</key>
+			<dict>
+				<key>stroke</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>b</key>
+						<string>0.0227273</string>
+						<key>g</key>
+						<string>0.0227273</string>
+						<key>r</key>
+						<string>1</string>
+					</dict>
+					<key>HeadArrow</key>
+					<string>FilledArrow</string>
+					<key>TailArrow</key>
+					<string>0</string>
+				</dict>
+			</dict>
+			<key>Tail</key>
+			<dict>
+				<key>ID</key>
+				<integer>35</integer>
+			</dict>
+		</dict>
+		<dict>
+			<key>Class</key>
+			<string>LineGraphic</string>
+			<key>Head</key>
+			<dict>
+				<key>ID</key>
+				<integer>13</integer>
+			</dict>
+			<key>ID</key>
+			<integer>38</integer>
+			<key>Points</key>
+			<array>
+				<string>{455.774, 143.689}</string>
+				<string>{378.962, 175.311}</string>
+			</array>
+			<key>Style</key>
+			<dict>
+				<key>stroke</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>b</key>
+						<string>0.0227273</string>
+						<key>g</key>
+						<string>0.0227273</string>
+						<key>r</key>
+						<string>1</string>
+					</dict>
+					<key>HeadArrow</key>
+					<string>FilledArrow</string>
+					<key>TailArrow</key>
+					<string>0</string>
+				</dict>
+			</dict>
+			<key>Tail</key>
+			<dict>
+				<key>ID</key>
+				<integer>28</integer>
+			</dict>
+		</dict>
+		<dict>
+			<key>Class</key>
+			<string>LineGraphic</string>
+			<key>Head</key>
+			<dict>
+				<key>ID</key>
+				<integer>32</integer>
+			</dict>
+			<key>ID</key>
+			<integer>37</integer>
+			<key>Points</key>
+			<array>
+				<string>{480.124, 204.792}</string>
+				<string>{511.348, 227.208}</string>
+			</array>
+			<key>Style</key>
+			<dict>
+				<key>stroke</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>b</key>
+						<string>0.0227273</string>
+						<key>g</key>
+						<string>0.0227273</string>
+						<key>r</key>
+						<string>1</string>
+					</dict>
+					<key>HeadArrow</key>
+					<string>FilledArrow</string>
+					<key>TailArrow</key>
+					<string>0</string>
+				</dict>
+			</dict>
+			<key>Tail</key>
+			<dict>
+				<key>ID</key>
+				<integer>35</integer>
+			</dict>
+		</dict>
+		<dict>
+			<key>Class</key>
+			<string>LineGraphic</string>
+			<key>Head</key>
+			<dict>
+				<key>ID</key>
+				<integer>35</integer>
+			</dict>
+			<key>ID</key>
+			<integer>36</integer>
+			<key>Points</key>
+			<array>
+				<string>{474.029, 149.955}</string>
+				<string>{464.443, 171.045}</string>
+			</array>
+			<key>Style</key>
+			<dict>
+				<key>stroke</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>b</key>
+						<string>0.0227273</string>
+						<key>g</key>
+						<string>0.0227273</string>
+						<key>r</key>
+						<string>1</string>
+					</dict>
+					<key>HeadArrow</key>
+					<string>FilledArrow</string>
+					<key>TailArrow</key>
+					<string>0</string>
+				</dict>
+			</dict>
+			<key>Tail</key>
+			<dict>
+				<key>ID</key>
+				<integer>28</integer>
+			</dict>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{431.236, 171.5}, {51, 33}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>ID</key>
+			<integer>35</integer>
+			<key>Shape</key>
+			<string>Rectangle</string>
+			<key>Style</key>
+			<dict>
+				<key>stroke</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>b</key>
+						<string>0.0227273</string>
+						<key>g</key>
+						<string>0.0227273</string>
+						<key>r</key>
+						<string>1</string>
+					</dict>
+				</dict>
+			</dict>
+			<key>Text</key>
+			<dict>
+				<key>Text</key>
+				<string>{\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf350
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
+
+\f0\fs24 \cf0 10}</string>
+			</dict>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{509.236, 227.5}, {51, 33}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>ID</key>
+			<integer>32</integer>
+			<key>Shape</key>
+			<string>Rectangle</string>
+			<key>Style</key>
+			<dict>
+				<key>stroke</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>b</key>
+						<string>0.0227273</string>
+						<key>g</key>
+						<string>0.0227273</string>
+						<key>r</key>
+						<string>1</string>
+					</dict>
+				</dict>
+			</dict>
+			<key>Text</key>
+			<dict>
+				<key>Text</key>
+				<string>{\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf350
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
+
+\f0\fs24 \cf0 11}</string>
+			</dict>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{456.236, 116.5}, {51, 33}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>ID</key>
+			<integer>28</integer>
+			<key>Shape</key>
+			<string>Rectangle</string>
+			<key>Style</key>
+			<dict>
+				<key>stroke</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>b</key>
+						<string>0.0227273</string>
+						<key>g</key>
+						<string>0.0227273</string>
+						<key>r</key>
+						<string>1</string>
+					</dict>
+				</dict>
+			</dict>
+			<key>Text</key>
+			<dict>
+				<key>Text</key>
+				<string>{\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf350
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
+
+\f0\fs24 \cf0 root}</string>
+			</dict>
+		</dict>
+		<dict>
+			<key>Class</key>
+			<string>LineGraphic</string>
+			<key>Head</key>
+			<dict>
+				<key>ID</key>
+				<integer>16</integer>
+			</dict>
+			<key>ID</key>
+			<integer>27</integer>
+			<key>Points</key>
+			<array>
+				<string>{405.429, 262.903}</string>
+				<string>{430.571, 297.097}</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>14</integer>
+			</dict>
+		</dict>
+		<dict>
+			<key>Class</key>
+			<string>LineGraphic</string>
+			<key>Head</key>
+			<dict>
+				<key>ID</key>
+				<integer>14</integer>
+			</dict>
+			<key>ID</key>
+			<integer>26</integer>
+			<key>Points</key>
+			<array>
+				<string>{364.277, 202.916}</string>
+				<string>{381.723, 229.084}</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>13</integer>
+			</dict>
+		</dict>
+		<dict>
+			<key>Class</key>
+			<string>LineGraphic</string>
+			<key>Head</key>
+			<dict>
+				<key>ID</key>
+				<integer>13</integer>
+			</dict>
+			<key>ID</key>
+			<integer>25</integer>
+			<key>Points</key>
+			<array>
+				<string>{315.55, 147.857}</string>
+				<string>{336.45, 169.143}</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>3</integer>
+			</dict>
+		</dict>
+		<dict>
+			<key>Class</key>
+			<string>LineGraphic</string>
+			<key>Head</key>
+			<dict>
+				<key>ID</key>
+				<integer>12</integer>
+			</dict>
+			<key>ID</key>
+			<integer>24</integer>
+			<key>Points</key>
+			<array>
+				<string>{268.409, 202.848}</string>
+				<string>{295.591, 229.152}</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>8</integer>
+			</dict>
+		</dict>
+		<dict>
+			<key>Class</key>
+			<string>LineGraphic</string>
+			<key>Head</key>
+			<dict>
+				<key>ID</key>
+				<integer>15</integer>
+			</dict>
+			<key>ID</key>
+			<integer>23</integer>
+			<key>Points</key>
+			<array>
+				<string>{322.959, 262.931}</string>
+				<string>{343.041, 297.069}</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>12</integer>
+			</dict>
+		</dict>
+		<dict>
+			<key>Class</key>
+			<string>LineGraphic</string>
+			<key>Head</key>
+			<dict>
+				<key>ID</key>
+				<integer>11</integer>
+			</dict>
+			<key>ID</key>
+			<integer>22</integer>
+			<key>Points</key>
+			<array>
+				<string>{226.182, 262.906}</string>
+				<string>{250.818, 297.094}</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>9</integer>
+			</dict>
+		</dict>
+		<dict>
+			<key>Class</key>
+			<string>LineGraphic</string>
+			<key>Head</key>
+			<dict>
+				<key>ID</key>
+				<integer>10</integer>
+			</dict>
+			<key>ID</key>
+			<integer>21</integer>
+			<key>Points</key>
+			<array>
+				<string>{203.793, 262.928}</string>
+				<string>{183.207, 297.072}</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>9</integer>
+			</dict>
+		</dict>
+		<dict>
+			<key>Class</key>
+			<string>LineGraphic</string>
+			<key>Head</key>
+			<dict>
+				<key>ID</key>
+				<integer>9</integer>
+			</dict>
+			<key>ID</key>
+			<integer>20</integer>
+			<key>Points</key>
+			<array>
+				<string>{240.563, 202.926}</string>
+				<string>{224.437, 229.074}</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>8</integer>
+			</dict>
+		</dict>
+		<dict>
+			<key>Class</key>
+			<string>LineGraphic</string>
+			<key>Head</key>
+			<dict>
+				<key>ID</key>
+				<integer>8</integer>
+			</dict>
+			<key>ID</key>
+			<integer>18</integer>
+			<key>Points</key>
+			<array>
+				<string>{284.271, 147.877}</string>
+				<string>{265.729, 169.123}</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>3</integer>
+			</dict>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{417.5, 297.5}, {51, 33}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>ID</key>
+			<integer>16</integer>
+			<key>Shape</key>
+			<string>Rectangle</string>
+			<key>Text</key>
+			<dict>
+				<key>Text</key>
+				<string>{\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf350
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
+
+\f0\fs24 \cf0 9}</string>
+			</dict>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{327.5, 297.5}, {51, 33}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>ID</key>
+			<integer>15</integer>
+			<key>Shape</key>
+			<string>Rectangle</string>
+			<key>Text</key>
+			<dict>
+				<key>Text</key>
+				<string>{\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf350
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
+
+\f0\fs24 \cf0 8}</string>
+			</dict>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{367.5, 229.5}, {51, 33}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>ID</key>
+			<integer>14</integer>
+			<key>Shape</key>
+			<string>Rectangle</string>
+			<key>Text</key>
+			<dict>
+				<key>Text</key>
+				<string>{\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf350
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
+
+\f0\fs24 \cf0 5}</string>
+			</dict>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{327.5, 169.5}, {51, 33}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>ID</key>
+			<integer>13</integer>
+			<key>Shape</key>
+			<string>Rectangle</string>
+			<key>Text</key>
+			<dict>
+				<key>Text</key>
+				<string>{\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf350
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
+
+\f0\fs24 \cf0 2}</string>
+			</dict>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{287.5, 229.5}, {51, 33}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>ID</key>
+			<integer>12</integer>
+			<key>Shape</key>
+			<string>Rectangle</string>
+			<key>Text</key>
+			<dict>
+				<key>Text</key>
+				<string>{\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf350
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
+
+\f0\fs24 \cf0 4}</string>
+			</dict>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{237.5, 297.5}, {51, 33}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>ID</key>
+			<integer>11</integer>
+			<key>Shape</key>
+			<string>Rectangle</string>
+			<key>Text</key>
+			<dict>
+				<key>Text</key>
+				<string>{\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf350
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
+
+\f0\fs24 \cf0 7}</string>
+			</dict>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{147.5, 297.5}, {51, 33}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>ID</key>
+			<integer>10</integer>
+			<key>Shape</key>
+			<string>Rectangle</string>
+			<key>Text</key>
+			<dict>
+				<key>Text</key>
+				<string>{\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf350
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
+
+\f0\fs24 \cf0 6}</string>
+			</dict>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{188.5, 229.5}, {51, 33}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>ID</key>
+			<integer>9</integer>
+			<key>Shape</key>
+			<string>Rectangle</string>
+			<key>Text</key>
+			<dict>
+				<key>Text</key>
+				<string>{\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf350
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
+
+\f0\fs24 \cf0 3}</string>
+			</dict>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{225.5, 169.5}, {51, 33}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>ID</key>
+			<integer>8</integer>
+			<key>Shape</key>
+			<string>Rectangle</string>
+			<key>Text</key>
+			<dict>
+				<key>Text</key>
+				<string>{\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf350
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
+
+\f0\fs24 \cf0 1}</string>
+			</dict>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{273.5, 114.5}, {51, 33}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>ID</key>
+			<integer>3</integer>
+			<key>Shape</key>
+			<string>Rectangle</string>
+			<key>Text</key>
+			<dict>
+				<key>Text</key>
+				<string>{\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf350
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
+
+\f0\fs24 \cf0 root}</string>
+			</dict>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{423.72, 81}, {146.06, 193}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>ID</key>
+			<integer>79</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>
+			</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>IsPalette</key>
+	<string>NO</string>
+	<key>KeepToScale</key>
+	<false/>
+	<key>Layers</key>
+	<array>
+		<dict>
+			<key>Lock</key>
+			<string>NO</string>
+			<key>Name</key>
+			<string>Layer 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>
+	</dict>
+	<key>LinksVisible</key>
+	<string>YES</string>
+	<key>MagnetsVisible</key>
+	<string>NO</string>
+	<key>MasterSheet</key>
+	<string>マスター 1</string>
+	<key>MasterSheets</key>
+	<array>
+		<dict>
+			<key>ActiveLayerIndex</key>
+			<integer>0</integer>
+			<key>AutoAdjust</key>
+			<true/>
+			<key>CanvasColor</key>
+			<dict>
+				<key>w</key>
+				<string>1</string>
+			</dict>
+			<key>CanvasOrigin</key>
+			<string>{0, 0}</string>
+			<key>CanvasScale</key>
+			<real>1</real>
+			<key>ColumnAlign</key>
+			<integer>1</integer>
+			<key>ColumnSpacing</key>
+			<real>36</real>
+			<key>DisplayScale</key>
+			<string>1 cm = 1 cm</string>
+			<key>GraphicsList</key>
+			<array/>
+			<key>GridInfo</key>
+			<dict/>
+			<key>HPages</key>
+			<integer>1</integer>
+			<key>IsPalette</key>
+			<string>NO</string>
+			<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>
+			</dict>
+			<key>Orientation</key>
+			<integer>2</integer>
+			<key>RowAlign</key>
+			<integer>1</integer>
+			<key>RowSpacing</key>
+			<real>36</real>
+			<key>SheetTitle</key>
+			<string>マスター 1</string>
+			<key>UniqueID</key>
+			<integer>1</integer>
+			<key>VPages</key>
+			<integer>1</integer>
+		</dict>
+	</array>
+	<key>ModificationDate</key>
+	<string>2011-03-10 16:20:22 +0900</string>
+	<key>Modifier</key>
+	<string>suika6039</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, 842}</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>ReadOnly</key>
+	<string>NO</string>
+	<key>RowAlign</key>
+	<integer>1</integer>
+	<key>RowSpacing</key>
+	<real>36</real>
+	<key>SheetTitle</key>
+	<string>Canvas 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>DrawerTab</key>
+		<string>Outline</string>
+		<key>DrawerWidth</key>
+		<real>209</real>
+		<key>Frame</key>
+		<string>{{-1603, -85}, {1142, 781}}</string>
+		<key>ShowRuler</key>
+		<true/>
+		<key>VisibleRegion</key>
+		<string>{{0, 0}, {1111, 621}}</string>
+		<key>Zoom</key>
+		<real>1</real>
+	</dict>
+</dict>
+</plist>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ipsjcommon.sty	Thu Mar 10 18:47:54 2011 +0900
@@ -0,0 +1,1 @@
+% Copyright (C) 1995-2008 by Hiroshi Nakashima, Yasuki Saito and
%                            The Editorial Board of the IPSJ Journal
%
% ipsjcommon.sty 29-Dec-08 by Hiroshi Nakashima (ver 3.01)
% (revision history deleted)
% ipsjcommon.sty 24-Apr-95 by Hiroshi Nakashima (ver 1.0)

%%%%%% Sectioning Commands %%%%%%

% \section:	2 rows
% others:	1 row
%
% Note that \paragraph and \subparagraph act as \subsubsubsection and
% \subsubsubsubsection resp.
%
% The form of sectioning header is;
%	<1 Kanji sp> \the<sect-command> [`.' if \section] <1 Kanji sp> <title>
% Nothe that <1 Kanji sp> is that of \normalsize.

\def\section{\@startsection
	{section}{1}{\@mojihaba}{\sec@aboveskip}{\sec@belowskip}{\fs@sec\bf}}
\let\ipsj@section\section					% 2.04(1)
\def\subsection{\@startsection
	{subsection}{2}{\@mojihaba}{\z@}{\z@}{\fs@subsec\bf}}
\def\subsubsection{\@startsection
	{subsubsection}{3}{\@mojihaba}{\z@}{\z@}{\fs@subsec\bf}}
\def\paragraph{\@startsection
	{paragraph}{4}{\@mojihaba}{\z@}{\z@}{\fs@subsec\bf}}
\def\subparagraph{\@startsection
	{subparagraph}{5}{\@mojihaba}{\z@}{\z@}{\fs@subsec\bf}}

\newcounter{section}
\newcounter{subsection}[section]
\newcounter{subsubsection}[subsection]
\newcounter{paragraph}[subsubsection]
\newcounter{subparagraph}[paragraph]

\def\thesection{\arabic{section}}
\def\sec@section@postfix{.}
\def\thesubsection{\thesection.\arabic{subsection}}
\def\thesubsubsection{\thesubsection.\arabic{subsubsection}}
\def\theparagraph{\thesubsubsection.\arabic{paragraph}}
\def\thesubparagraph{\theparagraph.\arabic{subparagraph}}

\setcounter{secnumdepth}{5}

\def\appendix{\let\sec@sec\section
	\def\section{\@startsection
		{section}{1}{\@mojihaba}{\z@}{\z@}{\fs@subsec\bf}}%
	\def\thesection{\appendixprefix\arabic{section}}%
	\def\sec@section@postfix{\appendixpostfix}%
	\stepcounter{section}\setcounter{section}{0}%
	\@ifnextchar[%]
		     {\sec@oappendix}{\sec@xappendix}}
\def\sec@xappendix{\@ifstar{\let\section\sec@sec}%
	{\sec@sec*{\ifDS@english Appendix\else\ipsj@j@app \fi}}}% 2.12(1b)
\def\sec@oappendix[#1]{\sec@sec*{\ifDS@english Appendix: \else
	\ipsj@j@app\hskip\jspaceskip\fi #1}}			% 2.12(1b)
\def\appendixprefix{A.}
\def\appendixpostfix{}

\def\acknowledgment{\par
	{\bf \ifDS@english Acknowledgments \else\ipsj@j@ack\fi}%% 2.12(1b)
	\hskip\@mojihaba \ignorespaces}
\let\endacknowledgment\par

\newif\ifipsj@recommendation \ipsj@recommendationfalse		% 2.04(1) >>
\def\recommendation#1{\global\ipsj@recommendationtrue
	\ifDS@draft\else \ra@putrcvacc\fi
	\ipsj@section*{#1}
}
\def\endrecommendation{\par\vskip\baselineskip\penalty\opt@magicpenalty}
								% 2.04(1) <<

% Modified \@startsection has a trick for "2-row" of \section, which must
% work even if \section appears the top of a page.  The BEFORESKIP must be
% inserted with respect to the previous baseline.  So, we must go back to
% the imaginary previous baseline at the top of a page.  That is, we do;
%	\vskip\baselineskip \vspace*{-\baselineskip}
% which resuls;
% 	<a> do nothing at midpage
%	<b> go to the first baseline by \topskip, then go back to 0th
%	    baseline by \vspace*.
% The trick "\vskip-\prevdepth \prevdepth\z@" will assure exact vertical
% space even when the last line has much depth.
%
% \@startsection {NAME}{LEVEL}{INDENT}{BEFORESKIP}{AFTERSKIP}{STYLE}
\def\@startsection#1#2#3#4#5#6{\if@noskipsec \leavevmode \fi
	\par \@tempskipa #4\relax
	\@afterindenttrue
	\ifdim\@tempskipa<\z@ \@tempskipa-\@tempskipa \@afterindentfalse\fi
	\if@nobreak \everypar{}\else \addpenalty{\@secpenalty}\fi
	\ifdim\@tempskipa>\z@
% Here is the trick for \section.
		\vskip-\prevdepth \prevdepth\z@ \vskip\baselineskip
		\vspace*{-\baselineskip}\vskip\@tempskipa\fi
	\@ifstar
	{\@ssect{#3}{#4}{#5}{#6}}{\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}}

% \@sect is modified to cope with `.' for \section and MOJI-DORI
%
% \@sect{NAME}{LEVEL}{INDENT}{BEFORESKIP}{AFTERSKIP}{STYLE}[TITLE]{TITLE}
\def\@sect#1#2#3#4#5#6[#7]#8{\ifnum #2>\c@secnumdepth
	\def\@svsec{}\else 
	\refstepcounter{#1}
								% 2.00(1)>>
	\let\@@protect\protect \def\protect{\noexpand\protect\noexpand}
	\edef\@svsec{\csname the#1\endcsname \csname sec@#1@postfix\endcsname
		\hskip\@mojihaba} \let\protect\@@protect\fi	% 2.00(1)<<
	\@tempskipa #5\relax
	\ifdim \@tempskipa<\z@ 
        	\def\@svsechd{#6\hskip #3\relax\@svsec #8}	% 2.00(1)
	\else
        	\begingroup #6\relax
		\@hangfrom{\hskip #3\relax\@svsec}%
			{\interlinepenalty\@M \sec@mojidori{#8}\par}%
		\endgroup
	\fi \@xsect{#5}}

% \@ssect is modified to cope with MOJI-DORI
%
% \@sect{INDENT}{BEFORESKIP}{AFTERSKIP}{STYLE}{TITLE}
\def\@ssect#1#2#3#4#5{\@tempskipa #3\relax
	\ifdim \@tempskipa<\z@ \def\@svsechd{#4\hskip #1\relax #5}%
	\else \begingroup #4%
		\@hangfrom{\hskip #1}{\interlinepenalty\@M
			\sec@mojidori{#5}\par}\endgroup
	\fi \@xsect{#3}}

%% Modify \@xsect to avoid (buggy) \clubpenalty=10000. (H.N.)
\def\@xsect#1{\@tempskipa #1\relax
	\ifdim \@tempskipa<\z@
		\glboal\@nobreakfalse \global\@noskipsectrue
		\everypar{\global\@noskipsecfalse \hskip-\parindent
			\begingroup \@svsechd \endgroup \unskip
			\hskip -#1\everypar{}}%
	\else
		\par \nobreak
		\vskip \@tempskipa \global\@nobreaktrue
		\everypar{\global\@nobreakfalse
			\if@afterindent\else {\setbox0\lastbox}\fi \everypar{}}
	\fi\ignorespaces}

% Here is a trick for MOJI-DORI of sectioning tilte.  The rule is;
%	2 - 4 Kanji char -> 5 Kanji char
%	otherwise    -> natural width
%
\def\sec@mojidori#1{\ifDS@english #1\else			% 2.12(1b)
	\setbox0\hbox{#1}\settowidth\@tempdimb{\ipsj@j@a}%	% 2.12(1b)
	\ifdim\wd0>4.5\@tempdimb #1\else
	\ifdim\wd0<1.5\@tempdimb #1\else
	\jintercharskip\fill \jasciikanjiskip\fill \jmathkanjiskip\fill
	\leavevmode\hbox to5\@tempdimb{#1\hfil}\fi\fi\fi}

%%%%%% List-like Environments %%%%%%
%
%		LM	RM	LW	LS	LPI	II
% default	2K	0	0.75K	0.25K	0	0
% \enumerate	3K	0	3K	0	0	0
% \Enumerate	0	0	3K	0	0	3K
% \ENUMERATE	0	0	3K	0	0	4K
% \enumerate*	1K	0	3K	0	0	2K
% \itemize	2K	0	2K	0	0	0
% \Itemize	0	0	2K	0	0	2K
% \ITEMIZE	0	0	2K	0	0	3K
% \itemize*	1K	0	2K	0	0	1K
% \description	2K	0	0	1K	0	-1K
% \Description	0	0	0	1K	0	1K
% \DESCRIPTION	0	0	0	1K	0	2K
% \description*	1K	0	0	1K	0	0
% \verse	3K	2K	0.75K	0.25K	-1K	-1K
% \quotation	2K	2K	0.75K	0.25K	1K	1K
% \quote	2K	2K	0.75K	0.25K	0	0
%
% where LM is \leftmargin, RM is \rightmargin, LW is \labelwidth, LS is
% \labelsep, \LPI is \listparindent, II is \itemindent, and K is Kanji char
% width (\@mojihaba).
%
% All vertical space parameters, \topsep, \partopsep, \itemsep and \parsep,
% are 0pt.

\leftmargini2\@mojihaba
\leftmarginii2\@mojihaba
\leftmarginiii2\@mojihaba
\leftmarginiv2\@mojihaba
\leftmarginv2\@mojihaba
\leftmarginvi2\@mojihaba

\def\lst@listi{\labelsep.75\@mojihaba \labelwidth.25\@mojihaba
	\rightmargin\z@ \listparindent\z@ \itemindent\z@
	\partopsep\z@ \parsep\z@ \topsep\z@ \itemsep\z@}
\def\@listi{\leftmargin\leftmargini \lst@listi}
\def\@listii{\leftmargin\leftmarginii \lst@listi}
\def\@listiii{\leftmargin\leftmarginiii \lst@listi}
\def\@listiv{\leftmargin\leftmarginiv \lst@listi}
\def\@listv{\leftmargin\leftmarginv \lst@listi}
\def\@listvi{\leftmargin\leftmarginvi \lst@listi}

\@listi

\def\labelenumi{(\,\theenumi\,)} 
\def\theenumi{\arabic{enumi}} 
\def\labelenumii{(\,\theenumii\,)}
\def\theenumii{\alph{enumii}}
\def\p@enumii{\theenumi}
\def\labelenumiii{(\,\theenumiii\,)}
\def\theenumiii{\roman{enumiii}}
\def\p@enumiii{\theenumi(\theenumii)}
\def\labelenumiv{(\,\theenumiv\,)}
\def\theenumiv{\Alph{enumiv}}
\def\p@enumiv{\p@enumiii\theenumiii}
\def\enumerate{\ifnum \@enumdepth >3 \@toodeep\else
	\advance\@enumdepth \@ne 
	\edef\@enumctr{enum\romannumeral\the\@enumdepth}
	\list{\csname label\@enumctr\endcsname}{\usecounter
		{\@enumctr}\def\makelabel##1{##1\hss}%
		\leftmargin3\@mojihaba \labelwidth3\@mojihaba \labelsep\z@}\fi}
\let\endenumerate\endlist

\def\labelitemi{$\bullet$}
\def\labelitemii{\bf --}
\def\labelitemiii{$\ast$}
\def\labelitemiv{$\cdot$}
\def\itemize{\ifnum \@itemdepth >3 \@toodeep\else \advance\@itemdepth \@ne
	\edef\@itemitem{labelitem\romannumeral\the\@itemdepth}%
	\list{\csname\@itemitem\endcsname}{\def\makelabel##1{\hss##1\hss}%
		\labelwidth2\@mojihaba \labelsep\z@}\fi}
\let\enditemize\endlist

\def\description{\list{}{\labelwidth\z@ \labelsep\@mojihaba
	\itemindent\labelsep \advance\itemindent-\leftmargin
	\def\makelabel##1{\bf ##1}}}
\let\enddescription\endlist

\let\latex@trivlist\@trivlist
\def\lst@trivlist#1#2{\leftmargin#1\relax
	\itemindent\labelwidth \advance\itemindent\labelsep
	\advance\itemindent#2\relax
	\let\@trivlist\latex@trivlist \@trivlist}

\def\lst@Trivlist{\def\@trivlist{\lst@trivlist\z@\z@}}
\def\Enumerate{\lst@Trivlist \enumerate}
\let\endEnumerate\endlist
\def\Itemize{\lst@Trivlist \itemize}
\let\endItemize\endlist
\def\Description{\lst@Trivlist \description}
\let\endDescription\endlist

\def\lst@TRIVLIST{\def\@trivlist{\lst@trivlist\z@\@mojihaba}}
\def\ENUMERATE{\lst@TRIVLIST \enumerate}
\let\endENUMERATE\endlist
\def\ITEMIZE{\lst@TRIVLIST \itemize}
\let\endITEMIZE\endlist
\def\DESCRIPTION{\lst@TRIVLIST \description}
\let\endDESCRIPTION\endlist

\def\lst@strivlist{\def\@trivlist{\lst@trivlist\@mojihaba{-\@mojihaba}}}
\@namedef{enumerate*}{\lst@strivlist \enumerate}
\@namedef{endenumerate*}{\endlist}
\@namedef{itemize*}{\lst@strivlist \itemize}
\@namedef{enditemize*}{\endlist}
\@namedef{description*}{\lst@strivlist \description}
\@namedef{enddescription*}{\endlist}

\def\verse{\let\\=\@centercr 
	\list{}{\itemindent-\@mojihaba \listparindent\itemindent 
	\rightmargin\leftmargin \advance\leftmargin\@mojihaba}\item[]}
\let\endverse\endlist
\def\quotation{\list{}{\listparindent\@mojihaba	\itemindent\listparindent
	\rightmargin\leftmargin}\item[]}
\let\endquotation\endlist
\def\quote{\list{}{\rightmargin\leftmargin}\item[]}
\let\endquote\endlist

\def\newtheorem{\@ifstar
	{\theo@newtheorem{\theo@it}{\ }}{\theo@newtheorem{}{\theo@sp}}}
\def\theo@newtheorem#1#2#3{\@namedef{theo@it@#3}{#1}\@namedef{theo@sp@#3}{#2}%
	\@ifnextchar[%]
		     {\@othm{#3}}{\@nthm{#3}}}
\def\@begintheorem#1#2{\DESCRIPTION \csname theo@it@\@currenvir\endcsname
	\item[#1\csname theo@sp@\@currenvir\endcsname #2]}
\def\@opargbegintheorem#1#2#3{\DESCRIPTION
	\csname theo@style@\@currenvir\endcsname
	\item[#1\csname theo@sp@\@currenvir\endcsname #2\ (#3)]}
\let\@endtheorem\endlist					% 1.02(2)
\ifDS@english
\let\theo@it\it \let\theo@sp\ %
\else
\let\theo@it\relax \let\theo@sp\relax
\fi

%%%%%% Bibliography %%%%%%
%
% 1. Label format is "<nn>)".
% 2. \leftmargin 24Q (or 2K)
% 3. \labelsep is 6Q (or 0.5K)
% 4. \baselineskip is 16Q(j)/15Q(e)/normal(d)
% 5. ~ and \ is null but stretchable and (hardly) breakable.	% 2.09(1)

\def\thebibliography#1{%
	\section*{\hskip-\@mojihaba\hfill\hbox{\bib@refname}\hfill\hskip\z@}
	\ifDS@draft \@tempdima\@mojihaba \else\@tempdima12\@Q\fi
	\list{\arabic{enumi}\rlap{%(
			   	  )}}%
	     {\fs@bibliography \leftmargin2\@tempdima \labelwidth\z@
		\labelsep\@tempdima \itemindent.5\@tempdima
		\usecounter{enumi}\def\makelabel##1{\hss\llap{##1}}}
	\def\newblock{\hskip .11em plus .33em minus .07em}
	\sloppy \frenchspacing
	\def\ {\hskip\z@ plus\fontdimen\thr@@\font \penalty5000\relax}
								% 2.09(1)
	\ifDS@english\else \ipsj@defcolonforbib \fi}		% 2.12(1b)(2)

% (removal of \bib@refname)					% 2.12(1a)

\newdimen\bib@adjustheight \bib@adjustheight-\maxdimen
\def\endthebibliography{\endlist \par \@normalsize
	\@tempdima\@colht \advance\@tempdima-\@colroom
	\advance\@tempdima\pagetotal \advance\@tempdima-\prevdepth
	\advance\@tempdima-\topskip
	\@tempdimb\@tempdima \divide\@tempdima\baselineskip
	\@tempcnta\@tempdima \@tempdima\@tempcnta\baselineskip
	\advance\@tempdima-\@tempdimb
	\ifdim\@tempdima<\z@ \advance\@tempdima\baselineskip \fi
	\vskip-\prevdepth \vskip\@tempdima \prevdepth\z@
	\bib@adjustheight\@tempdimb \advance\bib@adjustheight\@tempdima
	\global\advance\bib@adjustheight\topskip
	\if@firstcolumn\else\global\advance\bib@adjustheight\@M pt\fi}


%%%%%% Floats %%%%%%

% You may need to change following parameters
\setcounter{topnumber}{4}
\setcounter{bottomnumber}{4}
\setcounter{totalnumber}{8}
\setcounter{dbltopnumber}{4}
\def\topfraction{.9}
\def\bottomfraction{.9}
\def\textfraction{.1}
\def\dbltopfraction{.9}
\def\floatpagefraction{.6}					% 3.00(1)
\def\dblfloatpagefraction{.6}					% 3.00(1)

\newcounter{figure}
\newcounter{table}
\def\thefigure{\@arabic\c@figure}
\def\thetable{\@arabic\c@table}
\def\fps@figure{tbp}
\def\fps@table{tbp}
\def\ftype@figure{1}
\def\ftype@table{2}
\def\fnum@figure{\fname@figure\thefigure}
\def\fnum@table{\fname@table\thetable}
\ifDS@english
\def\fname@figure{Fig.\,}					% 2.06(1)
\def\fname@Figure{Figure~}
\def\fname@table{Table~}
\def\fname@figures{Figs.\,}					% 2.12(8)>>
\def\fname@Figures{Figures~}
\def\fname@tables{Tables~}					% 2.12(8)<<
\else
\def\fname@figure{\ipsj@j@fig\fref@nobreak}		% 1.06(1), 2.12(1b)
\let\fname@Figure\fname@figure
\def\fname@table{\ipsj@j@tab\fref@nobreak}		% 1.06(1), 2.12(1b)
\let\fname@figures\fname@figure					% 2.12(8)>>
\let\fname@Figures\fname@figure
\let\fname@tables\fname@table					% 2.12(8)<<
\fi
\def\fnum@efigure{Fig.\,\thefigure}				% 2.06(1)
\def\fnum@etable{Table~\thetable}

% 1.06(3) >>
\def\figure{\let\cap@afterskip\relax \let\flt@fontsize\relax \@float{figure}}
\def\endfigure{\end@float}
\@namedef{figure*}{\let\cap@afterskip\relax \let\flt@fontsize\relax
	\@dblfloat{figure}}
\@namedef{endfigure*}{\end@dblfloat}

%% Default font for table env. is \footnotesize (H.N.)
\def\table{\let\cap@beforeskip\relax \let\flt@fontsize\fs@table
	\@float{table}}
\def\endtable{\end@float}
\@namedef{table*}{\let\cap@beforeskip\relax \let\flt@fontsize\fs@table
	\@dblfloat{table}}					% 2.01(2)
\@namedef{endtable*}{\end@dblfloat}
% 1.06(3) <<

\let\latex@float\@float
\let\latex@dbflt\@dbflt
\def\@float{\cap@linewidth\hsize \cap@hsize\hsize \latex@float}
\def\@dbflt{\cap@linewidth.8\textwidth \cap@hsize.667\textwidth \latex@dbflt}
\let\latex@xfloat\@xfloat					% 1.06(3)
\def\@xfloat#1[#2]{\latex@xfloat#1[#2]\flt@fontsize}
								% 1.06(3)
\def\end@float{\flt@endfloat
	\ifdim\bib@adjustheight=-\maxdimen\else
		\advance\bib@adjustheight\@tempdima
		\global\advance\bib@adjustheight\baselineskip \fi
	\ifnum\@floatpenalty <\z@
		\@nameuse{@largefloatcheck}%			% 2.00(2)
		\@cons\@currlist\@currbox
	\ifdim \ht\@currbox >\textheight 
		\ht\@currbox\textheight \fi
	\ifnum\@floatpenalty < -\@Mii 
        	\penalty -\@Miv 
		\@tempdima\prevdepth \vbox{} \prevdepth\@tempdima
		\penalty\@floatpenalty
	\else \vadjust{\penalty -\@Miv \vbox{}\penalty\@floatpenalty}\@esphack
	\fi\fi}
\def\end@dblfloat{\if@twocolumn \flt@endfloat
	\ifnum\@floatpenalty <\z@ \@cons\@dbldeferlist\@currbox\fi
	\ifnum \@floatpenalty =-\@Mii \@esphack\fi\else\end@float\fi}
\def\flt@endfloat{\par \boxmaxdepth\dp\strutbox			% 2.12(7c)
	\global\@minipagefalse \@nameuse{outer@nobreak}\egroup	% 2.00(2)
	\@nameuse{color@endbox}\@normalsize			% 2.00(2)
	\@tempdima\ht\@currbox \advance\@tempdima\dp\@currbox
	\divide\@tempdima\baselineskip \@tempcnta\@tempdima
	\advance\@tempcnta\@ne \@tempdima\@tempcnta\baselineskip
	\global\setbox\@currbox\vbox to\@tempdima{\box\@currbox\vfil}}
								% 2.10(1)
% 2.12(7a,b)>>
\let\ipsj@cflb\@cflb
\let\ipsj@comflelt\@comflelt
\def\@cflb{\let\ipsj@botfigrule\botfigrule \let\botfigrule\vfil 
	\let\@comflelt\ipsj@comfleltbot \ipsj@cflb
	\let\@comflelt\ipsj@comflelt \let\botfigrule\ipsj@botfigrule}
\def\ipsj@comfleltbot#1{%
	\setbox#1\vbox to\ht#1{\vfil\unvbox#1\unskip}%
	\setbox#1\vbox to\ht#1{\@tempdima\dp#1\unvbox#1\vskip-\@tempdima}%
								% 3.00(4)
	\ipsj@comflelt{#1}}
% 2.12(7a,b)<<

\def\cap@beforeskip{\nointerlineskip\vskip5pt}
\def\cap@afterskip{\nointerlineskip\vskip5pt}
\long\def\@caption#1[#2]#3{\par\begingroup
	\fs@caption \cap@beforeskip
	\@makecaption{{\bf \csname fnum@#1\endcsname}}{\ignorespaces#3}\par
	\ifDS@english \cap@afterskip \fi
	\endgroup}
\def\ecaption{\@dblarg{\@ecaption\@captype}}
\long\def\@ecaption#1[#2]#3{\par
	\begingroup \fs@caption
	\@makecaption{\csname fnum@e#1\endcsname}{\ignorespaces #3}\par
	\cap@afterskip
	\endgroup}

\newif\ifcap@sw
\newdimen\cap@linewidth
\newdimen\cap@hsize
\newcount\cap@prevgraf
\newbox\cap@box
\let\latex@label\label
\long\def\@makecaption#1#2{\begingroup \gdef\cap@label{}\let\label\@gobble
	\setbox0\hbox{#1\hskip\jspaceskip}
	\advance\cap@linewidth-\wd0 \advance\cap@hsize-\wd0
	\cap@makepar\cap@linewidth{#2}{\def\label##1{{%		    %1.03(1)
		\def\protect{\noexpand\protect\noexpand}	    %1.03(1)
		\xdef\cap@label{\cap@label\protect\label{##1}}}}}   %1.03(1)
	\cap@swtrue
	\ifnum\cap@prevgraf=\@ne
		\setbox1\vbox{\unvcopy1\cap@getbox1
			\ifhbox1 \global\setbox\cap@box\hbox{\unhbox1}
			\ifdim\wd\cap@box>\cap@linewidth\else
				\global\cap@swfalse \fi\fi}
		\ifcap@sw\else
			\cap@put{\vtop{\box\cap@box\hbox{}}}
		\fi\fi
	\ifcap@sw \cap@makepar\cap@hsize{#2}\relax
	\ifnum\cap@prevgraf=\tw@
		\setbox1\vbox{\unvcopy1\cap@getbox2\cap@getbox3
			\ifhbox2\ifhbox3
				\setbox2\hbox{\unhbox2}\setbox3\hbox{\unhbox3}
				\ifdim\wd2>\cap@hsize\else
				\ifdim\wd3>\cap@hsize\else
				\global\cap@swfalse
				\global\setbox\cap@box\vtop{\box3\box2\hbox{}}
				\fi\fi\fi\fi}\fi
	\ifcap@sw \setbox1\vtop{\hsize\cap@hsize
		\@parboxrestore #2\par\hbox{}}\cap@put{\box1}
	\else\cap@put{\box\cap@box}\fi
	\fi
	\endgroup \cap@label}
\long\def\cap@makepar#1#2#3{\setbox1\vbox{\hsize#1\@parboxrestore
	\rightskip\@flushglue \hfuzz\maxdimen
	\exhyphenpenalty\z@ \finalhyphendemerits\z@
	\let\@@par\cap@par \let\par\cap@par \global\cap@prevgraf\z@
	#3#2\cap@par}}
\let\cap@@par\@@par
\def\cap@par{\cap@@par\global\advance\cap@prevgraf\prevgraf \prevgraf\z@}
\def\cap@put#1{\hbox to\hsize{\hss\box0#1\hss}
	\vskip-\baselineskip\prevdepth\z@}
\def\cap@getbox#1{\@tempcnta10\relax\@whilenum\@tempcnta>0\do{%
	\unskip\unkern\unpenalty\advance\@tempcnta\m@ne}\setbox#1\lastbox}

\let\ipsj@iiiminipage\@iiiminipage				% 3.01(2)>>
\def\@iiiminipage#1#2[#3]#4{\ipsj@iiiminipage{#1}{#2}[#3]{#4}%
	\cap@linewidth\hsize \cap@hsize\hsize}
\def\CaptionType{\def\@captype}					% 3.01(2)<<

\def\figref{\fref@ref\fname@figure}
\def\Figref{\fref@ref\fname@Figure}
\def\tabref{\fref@ref\fname@table}
\let\Tabref\tabref
\def\fref@ref#1{\@ifstar{\fref@sref{#1}}{\fref@iref\bf{#1}}}
\def\fref@iref#1#2#3{{\@ifundefined{fref@r@#3}%
	{#1#2\fref@doref{#3}\global\@namedef{fref@r@#3}{}}{#2\fref@doref{#3}}}}
\def\fref@sref#1#2{#1\fref@doref{#2}}
\def\fref@doref#1{{\let\null\relax\ref{#1}}}			% 1.06(2)
\def\fref@nobreak{\nobreak\ifASCII\else\hskip\@@jasciikanjiskip\fi}
								% 1.06(1)
\def\figsref{\fref@refs\fname@figures}				% 2.12(8)>>
\def\Figsref{\fref@refs\fname@Figures}
\def\tabsref{\fref@refs\fname@tables}
\let\Tabsref\tabsref
\def\fref@refs#1{\@ifstar{\fref@irefs\relax{#1}}{\fref@irefs\bf{#1}}}
\def\fref@irefs#1#2#3{\def\fref@list{#3}\@tempswafalse \@tempcnta\z@
	\@for\fref@elem:=\fref@list\do{%
		\@ifundefined{fref@r@\fref@elem}{\@tempswatrue}{}%
		\advance\@tempcnta\@ne}%
	\ifx#1\relax \@tempswafalse\fi
	\ifDS@english {\if@tempswa #1\fi #2}\let\fref@temp\relax
	\else \def\fref@temp{#2}\fi
	\@for\fref@elem:=\fref@list\do{%
		\if@tempswa \fref@iref{#1}{\fref@temp}{\fref@elem}%
		\else \fref@temp\fref@doref{\fref@elem}\fi
		\advance\@tempcnta\m@ne
		\ifnum\@tempcnta=\@ne \fref@and
		\else\ifnum\@tempcnta>\@ne \fref@comma \fi\fi}}
\ifDS@english
\def\fref@and{ and~}
\def\fref@comma{, }
\else
\def\fref@and{\ipsj@j@comma}
\let\fref@comma\fref@and
\fi

\ifDS@printer
\def\figures{{\bf\fname@figures}}
\def\Figures{{\bf\fname@Figures}}
\def\tables{{\bf\fname@tables}}
\let\Tables\tables
\def\Ref{\fref@iref\bf\relax}
\fi								% 2.12(8)<<

\def\fig@extraspace{3mm}					%1.04(4)
\def\figspace#1{\vskip#1\vskip\fig@extraspace}			%1.04(4)

%%%%%% Footnote %%%%%%

%% The following codes are from pfnote.sty, by H. Nakashima of Kyoto Univ.,
%% to reset footnote counter at the begining of every page. (H.N.)

% 1.04(2c)>>
\def\footnote{\@ifnextchar[%]
	{\@xfootnote}{{\PF@adjustfnote \stepcounter{\@mpfn}%
		\def\protect{\noexpand\protect\noexpand}%
		\xdef\@thefnmark{\thempfn}}\@footnotemark\@footnotetext}}
\def\footnotemark{\@ifnextchar[%]
	{\@xfootnotemark}{{\PF@adjustfnote \stepcounter{footnote}%
		\def\protect{\noexpand\protect\noexpand}%
		\xdef\@thefnmark{\thefootnote}}\@footnotemark}}
% 1.04(2c)<<

\newcount\PF@fnotectr\global\PF@fnotectr=\z@
\newcount\PF@page\global\PF@page=-\@M
\def\PF@thepage{\number\c@page}
\def\PF@adjustfnote{\global\advance\PF@fnotectr\@ne
	\expandafter\ifx\csname PF@fn\number\PF@fnotectr\endcsname\relax
		\global\c@footnote\z@\else
	\expandafter\@tempcnta\csname PF@fn\number\PF@fnotectr\endcsname\relax
	\ifnum\@tempcnta=\PF@page\else
		\global\PF@page\@tempcnta \global\c@footnote\z@ \fi\fi
	\@tempcnta\c@footnote \multiply\@tempcnta\@M
	\advance\@tempcnta\PF@fnotectr
	\if@filesw{\let\PF@thepage\relax
		\xdef\@gtempa{\write\@auxout{\string\PF@fnpage
		{\number\@tempcnta}{\PF@thepage}}}}%
		\@gtempa\fi}
% 1.04(2a)<<

% 1.04(2a)>>
\def\PF@fnpage#1#2{\@tempcnta#1\relax \@tempcntb\@tempcnta \divide\@tempcnta\@M
	\expandafter\xdef\csname PF@fnpage#2\endcsname{\number\@tempcnta}
	\multiply\@tempcnta\@M \advance\@tempcntb-\@tempcnta	
	\global\@namedef{PF@fn\number\@tempcntb}{#2}}
% 1.04(2a)<<
%% End of quote from pfnote.sty. (H.N.)

\long\def\@makefntext#1{\leftskip20\@Q
	\noindent\llap{\@makefnmarkforfn\hskip-\scriptspace\hskip5\@Q}#1}
								% 1.04(2e)
\def\@makefnmarkstar{$\@thefnmark$}				% 2.12(3)
\def\@makefnmarkdagger{$\@thefnmark$}
\def\@makefnmarkast{$\@thefnmark$}				% 2.12(3)
\let\@makefnmarkforfn\@makefnmarkstar

\def\@makefnmark{\smash{$^{\@thefnmark}$}}			% 2.12(3)
								% 1.04(2d)
						% smashed to make it
						% zero height

\def\thefootnote{\ifnum\c@footnote>0\relax{\star}\number\c@footnote\fi}
								% 2.12(3)

%%%%%% Citation %%%%%%

%% The following codes for \cite are from overcite.sty by D. Arseneau, but
%% modified for Trans. IPSJ (H.N.)
%     O V E R C I T E . S T Y
%
%     version 3.2  (Mar 1993)
%
%     Compressed, sorted lists of superscript numerical citations.
%     see also CITE.STY and DRFTCITE.STY
%
%     Copyright (C) 1989-1993 by Donald Arseneau
%     These macros may be freely transmitted, reproduced, or modified for
%     non-commercial purposes provided that this notice is left intact.
%
\def\cite{\protect\@p@cite}
\def\@p@cite{\let\@citeY\@citey \@p@@cite}
\def\Cite{\protect\@p@Cite}
\def\@p@Cite{\let\@citeY\@Citey \@p@@cite}
\def\@p@@cite{\@ifnextchar[%]
		          {\@tempswatrue\@citex}{\@tempswafalse\@citex[]}}
\def\@citex[#1]#2{\@citeY{\@p@citen{#2}}\if@tempswa\space[#1]\fi}
\def\@citey#1{\leavevmode\unskip\kern\z@$\let\@cite@tiestyle\ipsj@j@citescript
%     								% 2.06(2)
								% 2.12(4)
	\def\@cite@punct{,}\m@th^{\hbox{\scriptsize#1}}$\spacefactor\@m}
\def\@Citey#1{\let\@cite@tiestyle\ipsj@j@citetext		% 2.12(4)
								% 1.04(1)>>
	\ifDS@english \def\@cite@punct{,\space\penalty\@highpenalty}%
								% 2.13(1)
	\else\def\@cite@punct{\ipsj@j@comma}\fi#1\spacefactor\@m}
								% 1.04(1)<<
								% 2.12(1b)
\def\@p@citen#1{%
	\edef\@tempa{\@ignspaftercomma,#1, \@end, }%
	\edef\@tempa{\expandafter\@ignendcommas\@tempa\@end}%
	\if@filesw \immediate\write\@auxout{\string\citation{\@tempa}}\fi
	\@tempcntb\m@ne \let\@h@ld\relax \let\@citea\@empty
	\let\@celt\relax \def\@cite@list{}%			% 2.06(3)
	\@for\@citeb:=\@tempa\do{\@make@cite@list}%
	\def\protect{\noexpand\protect\noexpand}%
	\@tempcnta\m@ne \let\@celt\@compress@cite \@cite@list
	\let\protect\relax \@h@ld}
\def\@ignspaftercomma#1, {\ifx\@end#1\@empty\else
	#1,\expandafter\@ignspaftercomma\fi}
\def\@ignendcommas,#1,\@end{#1}

%(
\let\@cite@rp)
\chardef\@cite@escape`\\
\def\@make@cite@list{%
    \expandafter\let\expandafter\@B@citeB\csname b@\@citeb\endcsname
    \ifx\@B@citeB\relax
	\@citea {\bf ?}\@cite@rp \let\@citea\@cite@punct
	\@latex@warning{Citation `\@citeb' on page \thepage\space undefined}%
								% 2.00(3)
	\global\@namedef{b@\@citeb}{{\bf ?}}%
    \else
	\ifcat \@cite@escape\ifnum\z@<0\@B@citeB \@cite@escape\else A\fi
	    \@tempcnta\@B@citeB \relax
	    \ifnum \@tempcnta>\@tempcntb
		\edef\@cite@list{\@cite@list \@celt{\@B@citeB}}%
		\@tempcntb\@tempcnta
	     \else
		\edef\@cite@list{\expandafter\@sort@celt\@cite@list\@gobble @}%
		\fi
	\else \@citea \@B@citeB \@cite@rp \let\@citea\@cite@punct
    \fi\fi}

\def\@sort@celt#1#2{\ifx \@celt #1% parameters are \@celt {num}
	\ifnum #2<\@tempcnta % number goes later in list
	    \@celt{#2}\expandafter\expandafter\expandafter\@sort@celt
	\else \@celt{\number\@tempcnta}\@celt{#2}\fi\fi}

\def\@compress@cite#1{\advance\@tempcnta\@ne
	\ifnum #1=\@tempcnta
		\ifx\@h@ld\relax \edef\@h@ld{\@citea #1\@cite@rp}%
		\else \edef\@h@ld{\@cite@tie{\protect\@cite@tiestyle}%
								% 2.12(4)
			\penalty\@highpenalty #1\@cite@rp}\fi
	\else \@h@ld \@citea #1\@cite@rp
		\let\@h@ld\relax
	\fi \@tempcnta#1\relax \let\@citea\@cite@punct}

%% End of quote from overcite.sty. (H.N.)

\def\multicite{\protect\@p@multicite}
\def\@p@multicite#1#2{\@citey{\@p@citen{#1}%
	\@cite@tie\ipsj@j@citescript \@p@citen{#2}}}		% 2.12(4)
\def\multiCite{\protect\@p@multiCite}
\def\@p@multiCite#1#2{\@Citey{\@p@citen{#1}\@cite@tie\relax	% 2.12(4)
	\penalty\@highpenalty \@p@citen{#2}}}


%%%%%% Box Height Adjustment and Displayed Math %%%%%%

\newbox\adj@boxa \newbox\adj@boxb
\newdimen\adj@height
\@tempdima\baselineskip \advance\@tempdima-\topskip
\edef\adj@minaboveclearance{\the\@tempdima}
\@tempdima\baselineskip \advance\@tempdima-1ex
\edef\adj@maxaboveclearance{\the\@tempdima}

\def\adj@setbhd#1{\setbox0\hbox{#1}				% 2.12(1c)>>
	\@tempdima\baselineskip \advance\@tempdima-\ht0 \advance\@tempdima\dp0
	\edef\adj@bhd{\the\@tempdima}}				% 2.12(1c)<<

% 2.01(1) >>
\def\adjustvboxheight{\ifinner \let\@tempa\relax
	\let\endadjustvboxheight\relax \let\@endadjustvboxheight\relax
	\else \let\@tempa\@adjustvboxheight \fi \@tempa}
\def\@adjustvboxheight{\par\penalty\z@
	\global\setbox\adj@boxa\vbox\bgroup\relax		% 1.01(3)
	\let\@footnotetext\@mpfootnotetext			% 2.02(1)
%								% 2.05(1)
	\hsize\columnwidth}
% 2.01(1) <<
\def\endadjustvboxheight{\adj@closebox \adj@putbox
	\ifvoid\@mpfootins\else\insert\footins{\unvbox\@mpfootins}\fi
%								% 2.02(1)
	\global\@ignoretrue\@endparenv}
\def\adj@closebox{\egroup \normalsize
	\boxmaxdepth\dp\strutbox			% 1.01(1,3), 2.13(2)
	\advance\boxmaxdepth-1pt				% 2.13(2)
	\setbox\adj@boxa\vbox{\unvbox\adj@boxa}			% 1.01(3)
	\adj@height\ht\adj@boxa
	\advance\adj@height\adj@minaboveclearance\relax
	\@tempdima\adj@height \divide\adj@height\baselineskip
	\@tempcnta\adj@height \adj@height\@tempcnta\baselineskip
	\ifdim\adj@height<\@tempdima \advance\adj@height\baselineskip\fi}
\def\adj@putbox{\vskip-\prevdepth \prevdepth\z@ \vskip\baselineskip
	\vspace*{-\baselineskip}\advance\@tempdima-\adj@height
	\@tempdima-\@tempdima \advance\@tempdima\adj@minaboveclearance\relax
	\@tempdimb\dp\adj@boxa
	\ifdim\@tempdima>\adj@maxaboveclearance\relax
		\advance\@tempdima-\@tempdimb \advance\@tempdima\adj@bhd\relax
		\divide\@tempdima\tw@
		\vbox to\adj@height{\vskip\@tempdima \box\adj@boxa \vss}
	\else	\vbox to\adj@height{\vfil\box\adj@boxa\vskip-\@tempdimb}\fi}

\newcount\adj@deadcycle
\@namedef{adjustvboxheight*}{\adjustvboxheight}
\@namedef{endadjustvboxheight*}{\@endadjustvboxheight}
\def\@endadjustvboxheight{\global\adj@deadcycle10\relax
	\@iendadjustvboxheight
	\ifvoid\@mpfootins\else\insert\footins{\unvbox\@mpfootins}\fi
%								% 2.05(2)
	\global\@ignoretrue\@endparenv}
\def\@iendadjustvboxheight{\adj@closebox
	\ifnum\adj@deadcycle<\@ne
	\ipsj@error{I cannot adjust too tall/deep box}{\@ehd}\fi    % 2.00(3)
	\global\advance\adj@deadcycle\m@ne
	\ifdim\pagegoal=\maxdimen
		\@tempdimb\@colht \advance\@tempdimb-\topskip
		\advance\@tempdimb\baselineskip
	\else \@tempdimb\pagegoal
		\advance\@tempdimb-\pagetotal \advance\@tempdimb-\pagedepth
		\advance\@tempdimb\prevdepth \fi		% 1.01(4a)
	\let\next\relax
	\ifdim\adj@height<\@tempdimb \adj@putbox \else
	\ifdim\adj@height=\@tempdimb \adj@putbox \else
	\divide\@tempdimb\baselineskip \@tempcnta\@tempdimb	% 1.01(4b)>>
	\@tempdimb\@tempcnta\baselineskip
	\advance\@tempdimb-\adj@minaboveclearance\relax		% 1.01(4b)<<
	\setbox\adj@boxa\vbox{\allowbreak\unvbox\adj@boxa}
	\vbadness\@M \splittopskip\z@ \splitmaxdepth\@maxdepth	%1.01(1)
	\setbox\@tempboxa\vsplit\adj@boxa to\@tempdimb
	\setbox\adj@boxb\copy\adj@boxa
	\setbox\@tempboxa\vbox{\unvbox\@tempboxa}
	\@tempdimb\ht\@tempboxa \advance\@tempdimb\dp\@tempboxa
	\ifdim\@tempdimb>\z@
		\setbox\adj@boxa\vbox\bgroup\unvbox\@tempboxa
		\adj@closebox \adj@putbox \newpage
	\else \newpage \fi
	\setbox\adj@boxa\vbox\bgroup\unvbox\adj@boxb
	\let\next\@iendadjustvboxheight \fi\fi \next}

\def\adj@eqindent{2\@mojihaba}
\def\[{\adjustvboxheight\advance\@totalleftmargin\adj@eqindent\relax
	\hbox to\hsize\bgroup\hskip\@totalleftmargin$\displaystyle}
\def\]{$\hfill\egroup\endadjustvboxheight\@doendpe\ignorespaces} % 2.03(1)
\def\equation{\refstepcounter{equation}\[}
\def\endequation{\hfill\@eqnnum$\egroup\endadjustvboxheight}
\def\theequation{\arabic{equation}}
\def\@eqnnum{{\rm (\theequation)\hskip\@mojihaba}} 

\def\adj@eqnlineskip{3pt}
\def\adj@eqnlineskiplimit{2pt}
\def\eqnarray{\futurelet\@tempa\adj@eqnarray}
\def\adj@eqnarray{\ifx\@tempa[%]
	\let\next\adj@ieqnarray\else\let\next\adj@xeqnarray\fi\next}
\def\adj@ieqnarray[#1]{\@ifundefined{adj@xeqnarray#1}%
	{\ipsj@warning{Unknown eqnarray option `#1'}\adj@xeqnarray}% 2.00(3)
	{\@nameuse{adj@xeqnarray#1}}}
\def\adj@xeqnarray{\adjustvboxheight
	\advance\@totalleftmargin\adj@eqindent\relax
	\stepcounter{equation}\let\@currentlabel=\theequation
	\global\@eqnswtrue
	\global\@eqcnt\z@\tabskip\z@\let\\=\@eqncr
	\lineskip\adj@eqnlineskip \lineskiplimit\adj@eqnlineskiplimit \jot\z@
	\halign to \hsize\bgroup\@eqnsel\hskip\@totalleftmargin
		\hfil$\displaystyle{##}$&\global\@eqcnt\@ne	% 1.01(2)
		\hfil$\displaystyle{}\mathrel{##}{}$\hfil
		&\global\@eqcnt\tw@ $\displaystyle{##}$\hfil
		\tabskip\@centering&\llap{##}\tabskip\z@\cr}
\def\adj@xeqnarrays{\let\endadjustvboxheight\@endadjustvboxheight
	\adj@xeqnarray}
\@namedef{adj@xeqnarrays!}{\par\let\adjustvboxheight\relax
	\let\endadjustvboxheight\relax \adj@xeqnarray}
\def\endeqnarray{\@@eqncr \egroup \global\advance\c@equation\m@ne
	\endadjustvboxheight}


%%%%%% Miscellaneous %%%%%%

%% \doublerulesep is 1pt (H.N.)
\arraycolsep5pt \tabcolsep6pt \arrayrulewidth.4pt \doublerulesep1pt 
\tabbingsep.5\@mojihaba

\skip\@mpfootins\skip\footins
\fboxsep3pt \fboxrule.4pt 

%% We simply allow (not encourage) club and widow lines. (H.N.)
\clubpenalty\z@ \widowpenalty\z@ \displaywidowpenalty\z@

% The following redefinition influences \linebreak etc.
\def\sloppy{\tolerance9999\hbadness9999\hfuzz.5\p@ \vfuzz.5\p@}

%% For heading of TBIO papers
\ifDS@TBIO							% 2.11(1)>>
\def\TBIOpapercategory#1{\def\ipsj@TBIO@pcat{#1}\ignorespaces}
\def\ipsj@TBIO@pcat{original}
\def\ipsj@TBIO@pcat@original{Original Paper}
\def\ipsj@TBIO@pcat@survey{Survey Paper}
\def\ipsj@TBIO@pcat@database{Database/Software Paper}
\def\ipsj@TBIO@pcatref{\@ifundefined{ipsj@TBIO@pcat@\ipsj@TBIO@pcat}%
    {\ipsj@warning{TBIO paper category \ipsj@TBIO@pcat\space is undefined.}}%
    \relax
  \@nameuse{ipsj@TBIO@pcat@\ipsj@TBIO@pcat}}
\fi								% 2.11(1)<<


% 2.12(1a)>>
\let\ipsj@j@citescript\scriptsize				% 2.12(4)>>
\let\ipsj@j@citetext\normalsize
\def\@cite@tie#1{\hbox{#1--}}					% 2.12(4)<<
\def\bib@refname{References}
\adj@setbhd{A}

\ifipsj@nonjp \let\next\endinput \else \let\next\relax \fi
\next

\def\ipsj@j@a{あ}
\def\ipsj@j@app{付録}
\def\ipsj@j@ack{謝辞}
\def\ipsj@j@bib{参考文献}
\def\ipsj@j@fig{図}
\def\ipsj@j@tab{表}
\def\ipsj@j@comma{,}
\def\ipsj@j@technote{テクニカルノート}
\def\ipsj@j@invited{招待論文}
\def\ipsj@j@sigrec{推薦論文}					% 2.13 (3)
\def\ipsj@j@talkabst{発表概要}
\def\ipsj@j@presently{現在,}
\def\ipsj@j@jipsj{情報処理学会論文誌}
\def\ipsj@j@regpaper{論文}
\def\ipsj@j@contactto{連絡先}
\def\ipsj@j@abstract{概要}
\def\ipsj@j@colon{:}
\def\ipsj@j@year{年}
\def\ipsj@j@month{月}
\def\ipsj@j@day{日}
\def\ipsj@j@lp{(}
\def\ipsj@j@rp{)}
\def\ipsj@j@edinch{担当編集委員}
\def\ipsj@j@rerec{再受付}
\def\ipsj@j@received{受付}
\def\ipsj@j@accepted{採録}
\def\ipsj@j@released{掲載}					% 3.00(3)
\def\ipsj@j@presented{発表}
\def\ipsj@j@member{正会員}
\def\ipsj@j@stmember{学生会員}
\def\ipsj@j@nomember{非会員}
\def\ipsj@j@techrep{情報処理学会研究報告}			% 3.01(1)

\ifDS@english\else \ifDS@draft\else
\sec@setskips{\ipsj@j@a}
\fi\fi

\expandafter\let\csname c@巻数\endcsname\c@volume
\expandafter\let\csname c@号数\endcsname\c@number
\expandafter\let\csname c@月数\endcsname\c@month		% 3.00(2)
\expandafter\let\csname c@年数\endcsname\c@year

\def\ipsj@sig@PRO@j{プログラミング}
\def\ipsj@sig@TOM@j{数理モデル化と応用}
\def\ipsj@sig@TOD@j{データベース}
\def\ipsj@sig@HPS@j{ハイパフォーマンスコンピューティングシステム}
\def\ipsj@sig@CVIM@j{コンピュータビジョンとイメージメディア}
\def\ipsj@sig@ACS@j{コンピューティングシステム}			% 2.09(2)

\def\ra@nengo{平成}	%% Change here when ...
\let\受付\received
\let\採録\accepted
\let\発表\presented						% 2.07(7)
\let\再受付\rereceived

\def\々{\hskip\jintercharskip\hbox to\jspaceskip{\hfil 々\hfil}%% 2.12(5)
	\hskip\jintercharskip}

\ifDS@english\else \ifDS@draft\else
{\fs@sec \@tempdima7\jspaceskip
\xdef\bib@refname{\hbox to\the\@tempdima{\jintercharskip\fill\ipsj@j@bib}}}
\adj@setbhd\ipsj@j@a
\fi\fi

\def\ipsj@j@colon@command{{\nobreak				% 2.12(2)>>
	\hbox to.7\jspaceskip{:\hss}\allowbreak
	\@tempdima.3\jspaceskip \hskip\@tempdima minus\@tempdima
	\allowbreak
	\hskip\z@ minus-\@tempdima}\ignorespaces}
\def\ipsj@defcolonforbib{\let\:\ipsj@j@colon@command}
\ifDS@printer \ipsj@defcolonforbib \fi				% 2.12(2)<<


%%%%%% Kinsoku Parameters %%%%%%

% 1.04(3)>>
\ifASCII
\postbreakpenalty`\`=\@M
\prebreakpenalty`'=\@M
\prebreakpenalty`)=\@M
\postbreakpenalty`(=\@M
\prebreakpenalty`]=\@M
\postbreakpenalty`[=\@M
\prebreakpenalty`\}=\@M
\postbreakpenalty`\{=\@M

\prebreakpenalty`・=\@M
\prebreakpenalty`:=\@M
\prebreakpenalty`;=\@M
\prebreakpenalty`?=\@M
\prebreakpenalty`!=\@M

\prebreakpenalty\jis"212D=\@M		% ´
\postbreakpenalty\jis"212E=\@M		% `
\postbreakpenalty\jis"2146=\@M		% ‘
\prebreakpenalty\jis"2147=\@M		% ’
\postbreakpenalty\jis"2148=\@M		% “
\prebreakpenalty\jis"2149=\@M		% ”

\prebreakpenalty`)=\@M
\postbreakpenalty`(=\@M
\prebreakpenalty`}=\@M
\postbreakpenalty`{=\@M
\prebreakpenalty`]=\@M
\postbreakpenalty`[=\@M
\postbreakpenalty`‘=\@M
\prebreakpenalty`’=\@M

\postbreakpenalty\jis"214C=\@M		%〔
\prebreakpenalty\jis"214D=\@M		% 〕
\postbreakpenalty\jis"2152=\@M		% 〈
\prebreakpenalty\jis"2153=\@M		% 〉
\postbreakpenalty\jis"2154=\@M		% 《
\prebreakpenalty\jis"2155=\@M		% 》
\postbreakpenalty\jis"2156=\@M		% 「
\prebreakpenalty\jis"2157=\@M		% 」
\postbreakpenalty\jis"2158=\@M		% 『
\prebreakpenalty\jis"2159=\@M		% 』
\postbreakpenalty\jis"215A=\@M		% 【
\prebreakpenalty\jis"215B=\@M		% 】

\prebreakpenalty`ー=\@M						% 2.12(6)
\prebreakpenalty`〜=\@M						% 2.12(6)

\prebreakpenalty`ぁ=\@M
\prebreakpenalty`ぃ=\@M
\prebreakpenalty`ぅ=\@M
\prebreakpenalty`ぇ=\@M
\prebreakpenalty`ぉ=\@M
\prebreakpenalty`っ=\@M
\prebreakpenalty`ゃ=\@M
\prebreakpenalty`ゅ=\@M
\prebreakpenalty`ょ=\@M
\prebreakpenalty\jis"246E=\@M		% ゎ
\prebreakpenalty`ァ=\@M
\prebreakpenalty`ィ=\@M
\prebreakpenalty`ゥ=\@M
\prebreakpenalty`ェ=\@M
\prebreakpenalty`ォ=\@M
\prebreakpenalty`ッ=\@M
\prebreakpenalty`ャ=\@M
\prebreakpenalty`ュ=\@M
\prebreakpenalty`ョ=\@M
\prebreakpenalty\jis"256E=\@M		% ヮ
\prebreakpenalty\jis"2575=\@M		% ヵ
\prebreakpenalty\jis"2576=\@M		% ヶ

\fi
% 1.04(3)<<
% 2.12(1a)<<
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ipsjdrafts.sty	Thu Mar 10 18:47:54 2011 +0900
@@ -0,0 +1,1 @@
+% Copyright (C) 1995-2007 by Hiroshi Nakashima, Yasuki Saito and
%                            The Editorial Board of the IPSJ Journal
%
% ipsjdrafts.sty 15-Jun-07 by Hiroshi Nakashima (ver 2.12)
% (revision history deleted)
% ipsjdrafts.sty 24-Apr-95 by Hiroshi Nakashima (ver 1.0)

%%%%%% Fonts %%%%%%
% All font loading are removed.

\ifipsj@nonjp\else						% 2.12(1a)
\ifASCII
\let\latex@setsize\@setsize
\def\@setsize#1#2#3#4{\latex@setsize{#1}{#2}{#3}{#4}\jspaceskip1zw}

\newcount\jfsize
\let\setjglues\relax
\let\jintercharskip\kanjiskip
\let\jasciikanjiskip\xkanjiskip
\let\jmathkanjiskip\xkanjiskip
\newdimen\jspaceskip

\def\defjintercharskip#1#2#3#4{\@asciiwarning{\defjintercharskip}}
\def\defjasciikanjiskip#1#2#3#4{\@asciiwarning{\defjasciicharskip}}
\def\defmathkanjiskip#1#2#3#4{\@asciiwarning{\defmathcharskip}}
\def\defjspaceskip#1#2#3#4{\@asciiwarning{\defjspaceskip}}

\def\@asciiwarning#1{\ipsj@warning{\string#1\space		% 2.00(1)
	is not supported in ASCII version}}

\if@LaTeX@eN							% 2.00(2)>>
\DeclareOldFontCommand{\mc}{\normalfont\mcfamily}{\mathmc}
\DeclareOldFontCommand{\gt}{\normalfont\gtfamily}{\mathgt}
\fi								% 2.00(2)<<

\def\dg{\gt}							% 1.06(1)
\def\dm{\mc}							% 1.06(1)

\else	% This is necessary even in 2e.
\ifx\sixdm\undefined \jfont\sixdm=dm6 \fi			% 1.01(1)
								% 1.06(2)
\fi \fi

\if@LaTeX@eN							% 2.00(2)>>
\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}
\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}
\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}
\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}
\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}
\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl}
\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc}
\DeclareRobustCommand*{\cal}{\@fontswitch{\relax}{\mathcal}}
\DeclareRobustCommand*{\mit}{\@fontswitch{\relax}{\mathnormal}}
\fi								% 2.00(2)<<

%%%%%% Basic Font Size Macros %%%%%%
% Nothing at all.


%%%%%% Font Size Macros %%%%%%

\def\fs@setsize#1#2#3#4{\normalsize\dimen@\normalbaselineskip
	\@ifstar{\@setsize{#1}{\dimen@}{#3}{#4}}%
		{\@setsize{#1}{#2}{#3}{#4}}}

% \baselineskip's are almost 1.25 times those defined in NTT jart12.

\def\@normalsize{\@setsize\normalsize{20pt}\xiipt\@xiipt}
\def\small{\fs@setsize\small{17pt}\xipt\@xipt}
\def\footnotesize{\fs@setsize\footnotesize{14pt}\xpt\@xpt}
\def\scriptsize{\@setsize\scriptsize{11.875pt}\viiipt\@viiipt}
\def\tiny{\@setsize\tiny{8.75pt}\vipt\@vipt}
\def\large{\@setsize\large{20pt}\xivpt\@xivpt}			% 1.06(3)
\def\Large{\@setsize\Large{25pt}\xviipt\@xviipt}
\def\LARGE{\@setsize\LARGE{25pt}\xxpt\@xxpt}
\let\huge\LARGE
\let\Huge\LARGE

\if@LaTeX@e							% 2.00(3)>>
\let\normalsize\@normalsize
\fi								% 2.00(3)<<

\let\fs@sec\large
\let\fs@subsec\normalsize
\let\fs@bibliography\normalsize
\let\fs@caption\normalsize
\let\fs@table\normalsize
\let\fs@footnote\footnotesize
{\tiny \xdef\fn@fontv{\ifipsj@nonjp \the\font \else		% 2.12(1a)
	\ifASCII \the\jfont \else \sixdm \fi\fi}}
\let\fn@fontvi\fn@fontv

\@normalsize 

\ifipsj@nonjp\else						% 2.12(1a)
\ifASCII\else							% 1.06(2) >>
\ifx\setjglue\undefined\else					% 2.04(1)
\def\@tempc{\edef\@tempa{\the\ja}
	\edef\@tempa{\expandafter\string\@tempa}
	\expandafter\@tempb\@tempa\@nil
	\expandafter\defjintercharskip\csname\@tempa\endcsname}
\let\@tempd\@namedef
{\catcode`j=12\catcode`a=12\gdef\@tempb#1#2ja\@nil{\@tempd{@tempa}{#2}}}
\dg\@tempc{0pt}{1.4pt}{0.14pt}
\dm\@tempc{0pt}{1.4pt}{0.14pt}
\setjglues
\fi\fi\fi							% 1.06(2) <<

\@tempdima.55\baselineskip
\edef\sec@aboveskip{\the\@tempdima}
\@tempdima.45\baselineskip
\edef\sec@belowskip{\the\@tempdima}

\ifipsj@nonjp\else						% 2.12(1a)
\if@LaTeX@e\else						% 2.04(2)
\let\latex@bf\bf						% 1.06(1)
\def\bf{\dg\latex@bf}						% 1.06(1)
\fi\fi								% 2.04(2)


%%%%%% Page Layout Parameters %%%%%%

\newdimen\@mojihaba
\ifipsj@nonjp							% 2.12(1a)>>
	\@mojihaba11.54659pt
	\let\jspaceskip\@mojihaba
\else
	\@mojihaba\jspaceskip
\fi								% 2.12(1a)<<

% No heads
\headheight\z@
\headsep\z@

\setbox0\hbox{$\displaystyle X^X$}
\topskip\ht0

% 1 page = 32 lines
\textheight31\baselineskip \advance\textheight\topskip \advance\textheight100sp

% \topmargin is (A4height-\textheight)/2 - 1in
\topmargin296mm \advance\topmargin-\textheight \divide\topmargin\tw@
\advance\topmargin-1in
\ifASCII\if@LaTeX@e\ifipsj@nonjp\else
	\@@topmargin\topmargin \fi\fi\fi		% 2.00(4),2.12(1a)

\footskip 1.5\baselineskip

% 1 page = 35 Kanji chars
\ifDS@english							% 1.06(4) >>
\textwidth404.13048pt
\else
\textwidth35\@mojihaba
\fi								% 1.06(4) <<

% \oddsidemargin is (A4width-\textwidth)/2 - 1in
\oddsidemargin210mm \advance\oddsidemargin-\textwidth \divide\oddsidemargin\tw@
\advance\oddsidemargin-1in

% As jart12
\footnotesep10pt
\skip\footins 10.8pt plus 4pt minus 2pt 
\def\footnoterule{\kern-3\p@ \hrule width.4\columnwidth \kern2.6\p@}

\floatsep \baselineskip \textfloatsep \baselineskip 
\intextsep \baselineskip \@maxsep \baselineskip
\dblfloatsep \baselineskip \dbltextfloatsep \baselineskip
\@dblmaxsep \baselineskip
\@fptop 0pt plus 1fil \@fpsep 0pt plus 2fil \@fpbot 0pt plus 1fil 
\@dblfptop 0pt plus 1fil \@dblfpsep 0pt plus 2fil \@dblfpbot 0pt plus 1fil

\parskip\z@ \parindent \@mojihaba
\@lowpenalty 51 \@medpenalty 151 \@highpenalty 301 
\@beginparpenalty -\@lowpenalty \@endparpenalty -\@lowpenalty
\@itempenalty -\@lowpenalty 


%%%%%% Title and Authors %%%%%%
%
% Format of title, author names and abstract.
%
%	\leftline{\LARGE <<paper-category>>}
%	\vfill
%	\beign{center}\LARGE\bf <Japanese title>\end{center}
%	\vfill
%	\begin{center}\LARGE\bf <Engilish title>\end{center}
%	\vfill\vfill
%	\newpage
%	\large <Japanese author names>
%	\vfill
%	<<contact info>>
%	\begin{itemize}\item[]\large <Contact address>\end{itemize}
%	\vfill\vfill
%	\newpage
%	\normalsize <Japanese abstract>
%	\normalsize <English abstract>

\def\maketitle{\@maketitle}

% default title header

\def\title{\@dblarg{\@xtitle}}
\def\@xtitle[#1]#2{\gdef\@title{#2}}
\def\@title{\leavevmode\mkt@warning\title}
\long\def\author#1{\long\gdef\@author{#1}}
\def\@author{\mkt@warning\author}

\newbox\@abstractbox

\def\abstract{\global\let\@abstract\relax
	\global\setbox\@abstractbox\vtop\bgroup}
\def\endabstract{\par\hbox{}\egroup}
\def\@abstract{\mkt@warning{abstract env}}

%% We need English title, author name(s) and abstract. (H.N.)
%% English author names are simply ignored.
\def\etitle#1{\gdef\@etitle{#1}}
\def\@etitle{\leavevmode\mkt@warning\etitle}
\long\def\eauthor#1{}

\newbox\@eabstractbox
\def\eabstract{\global\let\@eabstract\relax
	\global\setbox\@eabstractbox\vtop\bgroup}
\let\endeabstract\endabstract
\def\@eabstract{\mkt@warning{eabstract env}}

\ifDS@english \let\abstract\eabstract \let\@eabstract\@abstract \fi

% Contact address is no longer required even in draft.
\def\contact{\long\def\mkt@contact}
\def\mkt@contact{}						% 2.12(4)

\def\@maketitle{\newpage\thispagestyle{empty}
	\leftline{\LARGE
		\ifDS@TBIO \ipsj@TBIO@pcatref			% 2.11(1)
		\else\ifDS@english \ifDS@technote Technical Note\else
			Regular Paper\fi
		\else \ifDS@technote \ipsj@j@technote		% 2.12(1b)
			       \else \ipsj@j@regpaper\fi\fi\fi}
	\vfill
	\begin{center}\LARGE\bf\@title\end{center}
	\ifDS@english\else 
		\vfill
		\begin{center}\LARGE\bf\@etitle\end{center}\fi
	\@thanks
	\vfill\vfill
%								% 2.12(4)>>
%	\ifDS@anonymous\else					% 2.10(1)>>
%	    \newpage\thispagestyle{empty}
%	    \begingroup\large\vspace*{\fill}\rightskip0pt plus1fil
%	    \parindent\z@\parskip.5\baselineskip\hangindent2em\hangafter\@ne
%	    \def\par{{\@@par}}
%	    \mkt@makeauthor
%	    \par\vfill
%	    \noindent
%	    \ifDS@english Contact To:\else \ipsj@j@contactto \fi% 2.12(1b)
%	    \endgroup
%	    \begin{itemize}\large\item[]\mkt@contact\end{itemize}
%	    \vfill\vfill
%	\fi							% 2.10(1)<<
%								% 2.12(4)<<
	\newpage \setcounter{page}{1}\def\thepage{\roman{page}}
	\ifDS@english\else \@abstract \centerline{\bf \ipsj@j@abstract}
%								% 2.12(1b)
		\vskip-\prevdepth\vskip\baselineskip\vskip-\ht\@abstractbox
		\unvbox\@abstractbox\prevdepth\z@ \fi
	\centerline{\bf Abstract}
	\vskip-\prevdepth \vskip\baselineskip\vskip-\ht\@eabstractbox
	\@eabstract \unvbox\@eabstractbox
	\newpage \def\thepage{\arabic{page}}\setcounter{page}{1}}

\def\mkt@makeauthor{\let\member\mkt@member \let\nomember\mkt@nomember
	\let\stmember\mkt@stmember
	\expandafter\mkt@imakeauthor\@author\and\@nil\and}
\def\mkt@imakeauthor#1\and{\def\@tempa{#1}\ifx\@tempa\@nnil\let\next\relax
	\else #1\par\let\next\mkt@imakeauthor\fi\next}

% Macros to specify author's affiliation easily.
\ifDS@english
\def\paffilabel#1#2{\affilabel{#1}{Presently with #2}}
\else
\def\paffilabel#1#2{\affilabel{#1}{\ipsj@j@presently #2}}
\fi
% Ignore English affiliation even if given.
\def\affilabel#1#2{\@ifundefined{affi@r@#1}%
		{\expandafter\xdef\csname affi@r@#1\endcsname
			{\affi@cuteng#2\\\@nil}}
		{\ipsj@warning{Affiliation label `#1' multiply defined}}}
								% 2.00(1)
\def\affiref#1{\@ifundefined{affi@r@#1}%
		{\ipsj@warning{%				% 2.00(1)
			Affiliation reference `#1' undefined}\hbox{(???)}}
		{\setbox\@tempboxa\hbox{(\csname affi@r@#1\endcsname)}%
			\@tempdima\wd\@tempboxa \advance\@tempdima2em\relax
			\ifdim\@tempdima>\hsize
				\newline\unhbox\@tempboxa
			\else\ \box\@tempboxa\fi}}
\def\affi@cuteng#1\\#2\@nil{#1}

% Membership of aurthor is required in draft.
\ifDS@english
\def\mkt@member#1{\ \hbox{[Regular Member\##1]}}
\def\mkt@nomember{\ \hbox{[Non Member]}}
\def\mkt@stmember#1{\ \hbox{[Student Member\##1]}}
\else
\def\mkt@member#1{\ \hbox{[\ipsj@j@member\##1]}}
\def\mkt@nomember{\ \hbox{[\ipsj@j@nomember]}}
\def\mkt@stmember#1{\ \hbox{[\ipsj@j@stmember\##1]}}
\fi

%%%%%% Page Header and Footer %%%%%% 

\mark{{}{}} 

% The following counters are not used, but may appear.
\let\c@volpage\c@page						% 2.00(5)
\def\thevolpage{\thepage}					% 2.00(5)
\newcounter{volpageoffset} % You must set this to appropriate value
\newcounter{volume}						% 2.12(1b)>>
\newcounter{number}
\newcounter{year}						% 2.12(1b)<<

\def\ps@plain{\let\@mkboth\@gobbletwo
	\def\@oddhead{\@checklines}\let\@evenhead\@oddhead
	\def\@oddfoot{\rm \hfil\thepage\hfil}\let\@evenfoot\@oddfoot}

\def\transaction#1#2#3{}					% 2.11(2)
\long\def\copyrightnotice#1{}					% 2.11(2)

% \checklines enables to draw a horizontal rule onto each baselines.

\newif\if@checklines \@checklinesfalse
\def\checklines{\@checklinestrue}
\def\@checklines{\if@checklines \rlap{\smash{\vtop{
	\hbox{} \vskip\headsep \hrule width\textwidth\vskip-.4pt \vskip\topskip
	\hrule\vskip-.4pt
	\@tempcnta31\relax\@@checklines}}}\hfil\fi}
\def\@@checklines{\ifnum\@tempcnta>\z@
	\vskip\normalbaselineskip \hrule\vskip-.4pt \advance\@tempcnta\m@ne
	\let\next\@@checklines\else\let\next\relax\fi\next}

\pagestyle{plain}
\pagenumbering{arabic}

\ifDS@english\else
\def\today{\the\year\ipsj@j@year \the\month\ipsj@j@month \the\day\ipsj@j@day}
								% 2.12(1b)
\fi


%%%%%% Output Routine %%%%%%
% Nothing at all.


%%%%%% Biography %%%%%%
% Almost nothing.

\def\received#1#2#3{}						% 2.12(1b)>>
\def\accepted#1#2#3{}
\def\rereceived#1#2#3{}						% 2.11(2)>>
% definition of \released is removed				% 2.12(2)
\def\edInCharge#1{}						% 2.11(2)<<
%								% 2.12(1b)<<

\def\biography{\let\member\@gobble \let\nomember\@gobble \let\stmember\@gobble
	\ifDS@english \let\author\@gobble \fi			% 2.12(3)
	\let\adjust\@gobble \setbox0\vbox\bgroup
	\tolerance\@M \hbadness\@M \hfuzz\maxdimen}
\def\endbiography{\egroup\setbox0\hbox{}}


%%%%%% Miscellaneous %%%%%%

\raggedbottom

\input{ipsjcommon.sty}

% Redefine \acknowledgment to put it separately.
\newbox\ack@box
\let\@acknowledgment\acknowledgment

\def\acknowledgment{\global\setbox\ack@box\vtop\bgroup\@acknowledgment}
\def\endacknowledgment{\par\egroup}

%								% 2.12(4)>>
%\let\id@enddocument\enddocument
%\def\enddocument{\clearpage
%	\ifDS@anonymous\else \unvbox\ack@box \fi		% 2.10(1)
%	\id@enddocument}
%								% 2.12(4)<<

\endinput
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ipsjpapers.cls	Thu Mar 10 18:47:54 2011 +0900
@@ -0,0 +1,1 @@
+% Copyright (C) 1995-2008 by Hiroshi Nakashima, Yasuki Saito and
%                            The Editorial Board of the IPSJ Journal
%
% ipsjpapers.cls 29-Dec-08 by Hiroshi Nakashima (ver 3.01)
% (revision history deleted)
% ipsjpapers.cls  1-Apr-96 by Hiroshi Nakashima (ver 2.00)

\ifx\pfmtname\undefined
\NeedsTeXFormat{LaTeX2e}
\else
\NeedsTeXFormat{pLaTeX2e}
\fi

\ProvidesClass{ipsjpapers}[2008/12/29 ver 3.01]
\input{ipsjpapers.sty}
\endinput
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ipsjpapers.sty	Thu Mar 10 18:47:54 2011 +0900
@@ -0,0 +1,1 @@
+% Copyright (C) 1995-2008 by Hiroshi Nakashima, Yasuki Saito and
%                            The Editorial Board of the IPSJ Journal
%
% ipsjpapers.sty 29-Dec-08 by Hiroshi Nakashima (ver 3.01)
% (revision history deleted)
% ipsjpapers.sty 24-Apr-95 by Hiroshi Nakashima (ver 1.0)
% ipsjpapers.sty 30-Nov-93 by Hiroshi Nakashima
% ipsjpapers.sty 3-Feb-93 by Yaski Saito
% compsoft.sty 22-April-92 by Yaski Saito
% compsoft.sty 18-July-90 by Hideki Isozaki 
% j-article.sty 10-Feb-89 from report.sty 16-Mar-88

%%%%%% LaTeX Version %%%%%%

% 2.00(1) >>
%% \ifASCII is true if ASCII version Japanese TeX, which doesn't have
%% \jintercharskip (H.N.)
\newif\ifipsj@nonjp \ipsj@nonjpfalse				% 2.12(1a)
\newif\ifASCII \ASCIIfalse
\ifx\jintercharskip\undefined \ASCIItrue
\ifx\kanjiskip\undefined \ipsj@nonjptrue			% 2.12(1a)
\fi\fi
\newif\if@LaTeX@e \@LaTeX@efalse				% 1.06(1)
\newif\if@LaTeX@eN \@LaTeX@eNfalse				% 2.00(1)
\def\@tempa{LaTeX2e}						% 1.06(1)
\ifx\fmtname\@tempa \@LaTeX@etrue				% 1.06(1)
\ifx\xpt\undefined \@LaTeX@eNtrue \fi\fi			% 2.00(1)
% 2.00(1) <<



%%%%%% Document Styles %%%%%%

% 2.00(2) >>
\newif\ifDS@printer \DS@printerfalse
\newif\ifDS@english \DS@englishfalse
\newif\ifDS@technote \DS@technotefalse
\newif\ifDS@preface \DS@prefacefalse
\newif\ifDS@draft \DS@draftfalse
\newif\ifDS@techrep \DS@techrepfalse				% 1.05(2)
\newif\ifDS@sigrecommended \DS@sigrecommendedfalse		% 2.04(1)
\newif\ifDS@invited \DS@invitedfalse				% 2.06(1)
\newif\ifDS@abstract \DS@abstractfalse				% 2.07(7)
\newif\ifDS@private \DS@privatefalse				% 2.07(8)
\newif\ifDS@anonymous \DS@anonymousfalse			% 2.10(1)
\newif\ifDS@TBIO \DS@TBIOfalse					% 2.11(1)
\newif\ifDS@online \DS@onlinefalse				% 2.12(4a)
\newif\ifDS@landscape \DS@landscapetrue				% 3.00(1)
								% 3.01(1)

\if@LaTeX@eN
\DeclareOption{printer}{\DS@printertrue}			% 2.09(1)
								% 2.12(2)
\DeclareOption{english}{\DS@englishtrue}
\DeclareOption{technote}{\DS@technotetrue}
\DeclareOption{preface}{\DS@prefacetrue}
\DeclareOption{draft}{\DS@drafttrue}
\DeclareOption{techrep}{\DS@techreptrue}
\DeclareOption{sigrecommended}{\DS@sigrecommendedtrue}		% 2.04(1)
\DeclareOption{invited}{\DS@invitedtrue}			% 2.06(1)
\DeclareOption{abstract}{\DS@abstracttrue}			% 2.07(7)
\DeclareOption{private}{\DS@privatetrue}			% 2.07(8)
\DeclareOption{anonymous}{\DS@anonymoustrue}			% 2.10(1)
\DeclareOption{TBIO}{\DS@TBIOtrue \DS@englishtrue}		% 2.11(1)
\DeclareOption{online}{\DS@onlinetrue \DS@printertrue \DS@englishtrue}
								% 2.12(4a)
\DeclareOption{landscape}{\DS@landscapetrue}			% 3.00(1)
\DeclareOption{portrait}{\DS@landscapefalse}			% 3.00(1)
\DeclareOption{10pt}{\def\@ptsize{0}}
\DeclareOption{11pt}{\def\@ptsize{1}}
\DeclareOption{12pt}{\def\@ptsize{2}}
\ExecuteOptions{10pt}
\ProcessOptions
\def\ipsj@warning{\ClassWarning{ipsjpapers}}			% 2.00(3)
\def\ipsj@error{\ClassError{ipsjpapers}}			% 2.00(3)
\newskip \old@latex@skip					% 2.00(14)
\let\@maxsep\old@latex@skip					% 2.00(14)
\let\@dblmaxsep\old@latex@skip					% 2.00(14)

\else
\expandafter\ifx\csname ver@ipsjpapers.cls\endcsname\relax
\typeout{Document Style `ipsjpapers' (ver 3.01) <29 Dec 2008>.}	% 2.05(1)
\fi % \ifx

\def\ds@printer{\relax}						% 2.09(1)
\def\ds@english{\DS@englishtrue}
\def\ds@technote{\DS@technotetrue}
\def\ds@preface{\DS@prefacetrue}
\def\ds@draft{\DS@drafttrue}
\def\ds@techrep{\DS@techreptrue}				% 1.05(2)
\def\ds@sigrecommended{\DS@sigrecommendedtrue}			% 2.04(1)
\def\ds@invited{\DS@invitedtrue}				% 2.06(1)
\def\ds@abstract{\DS@abstracttrue}				% 2.07(7)
\def\ds@private{\DS@privatetrue}				% 2.07(8)
\def\ds@anonymous{\DS@anonymoustrue}				% 2.10(1)
\def\ds@TBIO{\DS@TBIOtrue \DS@englishtrue}			% 2.11(1)
\def\ds@online{\DS@onlinetrue \DS@printertrue \DS@englishtrue}	% 2.12(4a)
\def\ds@landscape{\DS@landscapetrue}				% 3.00(1)
\def\ds@portrait{\DS@landscapefalse}				% 3.00(1)

% 1.04(3)>>
\def\@ptsize{0}
\@namedef{ds@11pt}{\def\@ptsize{1}}
\@namedef{ds@12pt}{\def\@ptsize{2}} 
% 1.04(3)<<

\@options
\let\ipsj@warning\@warning					% 2.00(3)
\let\@latex@warning\@warning					% 2.00(3)
\def\ipsj@error#1#2{\errhlp{#2}\errmessge{#1}}			% 2.00(3)
\fi % \if@LaTeX@eN
% 2.00(2) <<

\ifx\@classoptionslist\undefined\else				% 2.03(1) >>
\def\ipsj@draft@option{draft}
\def\ipsj@remove@draft@option{\def\@tempb{}%
	\@for\@tempa:=\@classoptionslist\do{%
		\ifx\@tempa\ipsj@draft@option\else
		\edef\@tempb{\@tempb,\@tempa}\fi}%
	\ifx\@tempb\@empty \def\@classoptionslist{}\else
	\expandafter\ipsj@remove@draft@ption\@tempb\@nil\fi}
\def\ipsj@remove@draft@ption,#1\@nil{%
	\def\@classoptionslist{#1}}
\ipsj@remove@draft@option
\fi % \ifx							% 2.03(1) <<

\ifipsj@nonjp \DS@englishtrue \fi				% 2.12(1a)

%%%%%% Basics %%%%%%

\newdimen\@Q \@Q=0.25mm

\lineskip\z@ \normallineskip\z@ 
\lineskiplimit\z@ \normallineskiplimit\z@
\abovedisplayskip\z@ \belowdisplayskip\z@
\abovedisplayshortskip\z@ \belowdisplayshortskip\z@

\def\baselinestretch{1}
\jot\z@ 

\ifDS@draft\def\next{\input{ipsjdrafts.sty}\endinput}\else\let\next\relax\fi
\next

\@twosidetrue

%%%%%% Fonts %%%%%%
% \finvedm(dg)		dm5		\vpt	\tiny		fn-mark
% \sixdm(dg)		dm6		\vipt	\scriptsize
% \sevendm(dg)		dm7		\vipt	\footnotesize	f-note, capt
%	10Q = 7.11304pt -> w(min7) = 6.73550pt
% \eightdm(dg)		dm8		\viiipt	\small		abst, header
%	11Q = 7.82434pt -> w(min8) = 7.69772pt
% \eightdm(dg)half	dm9		\ixpt	\normalsize	main text
%	12Q = 8.53564pt -> w(min9) = 8.65994
% \tendm(dg)		dm10		\xpt	\large		sec title
%	13Q = 9.24695pt -> w(min10) = 9.62216pt
% \tendm(dg)half	dm10*1095	\xipt	\Large		author names
%	15Q =10.66956pt -> w(min10*1095) = 10.53625pt
% (\twlvdm)		(dm12)		\xiipt	\LARGE		e-title
% \twelvedm(dg)half	dm12*1095	\xivpt	\huge		title
%			min10*1440
%	18Q =12.80347pt -> w(min10*1440) = 13.8559pt
%
% Note that cm fonts follows LaTeX standard. (e.g. \viiipt -> cmr8, etc.)

% 2.00(4)>>
\if@LaTeX@e
\ifASCII
\def\ipsj@declare@font#1#2#3{{\fontsize{#3}{\z@}#2\selectfont	    % 2.00(5)>>
	\edef\@tempa{\ifipsj@nonjp \the\font \else \the\jfont \fi}  % 2.12(1b)
	\expandafter\global\expandafter\let\expandafter#1\@tempa}}  % 2.00(5)<<

\iffalse	% ASCII LaTeX2e printer settings is removed	% 2.12(2a)
\else		% ASCII LaTeX2e non-printer
\ifipsj@nonjp							% 2.12(1b)>>
\ipsj@declare@font\fn@fontv\rmfamily\@vpt
\ipsj@declare@font\fn@fontvi\rmfamily\@vpt
\ipsj@declare@font\fn@fontvii\rmfamily\@vpt
% no declaration for \fn@fontxv					% 2.12(1b)<<
\else % \ifipsj@nonjp
\ipsj@declare@font\fn@fontv\mcfamily\@vpt
\ipsj@declare@font\fn@fontvi\mcfamily\@vpt
\ipsj@declare@font\fn@fontvii\mcfamily\@vpt
\ipsj@declare@font\fn@fontxv\gtfamily\@xipt
\fi\fi %\ifipsj@nonjp\iffalse

\else % \ifASCII = NTT LaTeX2e
\def\ipsj@declare@font#1#2#3{{\fontsize{#3}{\z@}#2\selectfont	    % 2.00(5)
	\xdef#1{\expandafter\noexpand\csname\jf@ntn@me\endcsname}}} % 2.00(5)
\ipsj@declare@font\fn@fontv\dm\@vpt
\ipsj@declare@font\fn@fontvi\dm\@vpt
\ipsj@declare@font\fn@fontvii\dm\@vpt
\ipsj@declare@font\fn@fontxv\dg\@xipt
\fi % \ifASCII
% 2.00(4) <<

\else % \if@LaTeX@e = LaTeX 2.09				% 2.00(4)
%% Fonts for ASCII TeX. (H.N.)
\ifASCII
\iffalse	% ASCII LaTeX 2.09 printer settings is removed	% 2.12(2a)
\else \ifipsj@nonjp\else					% 2.12(1b)
\font\fivedm		min5
\font\fivedg		goth5
\font\sixdm		min6
\font\sixdg		goth6
\font\sevendm		min7
\font\sevendg		goth7
\font\eightdm		min8
\font\eightdg		goth8
\font\eightdmhalf	min9
\font\eightdghalf	goth9
\font\tendm		min10
\font\tendg		goth10
\font\tendmhalf		min10 scaled\magstephalf
\font\tendghalf		goth10 scaled\magstephalf
\font\twelvedm		min10 scaled\magstep1
\font\twelvedg		goth10 scaled\magstep1
\font\twelvedmhalf	min10 scaled\magstep2
\font\twelvedghalf	goth10 scaled\magstep2
\let\fn@fontv\fivedm
\let\fn@fontvi\fivedm
\let\fn@fontvii\fivedm
\let\fn@fontxv\tendghalf

\fi\fi % \ifipsj@nonjp\iffalse

%% ASCII doesn't have \old@Npt. (H.N.)
\let\old@@vpt\vpt
\let\old@@vipt\vipt
\let\old@@viipt\viipt
\let\old@@viiipt\viiipt
\let\old@@ixpt\ixpt
\let\old@@xpt\xpt
\let\old@@xipt\xipt
\let\old@@xiipt\xiipt
\let\old@@xivpt\xivpt

\ifipsj@nonjp							% 2.12(1b)>>
\def\old@vpt{\old@@vpt}
\def\old@vipt{\old@@vipt}
\def\old@viipt{\old@@viipt}
\def\old@viiipt{\old@@viiipt}
\def\old@ixpt{\old@@ixpt}
\def\old@xpt{\old@@xpt}
\def\old@xipt{\old@@xipt}
\def\old@xiipt{\old@@xiipt}
\def\old@xivpt{\old@@xivpt}					% 2.12(1b)<<
\else % \ifipsj@nonjp
\def\old@vpt{\old@@vpt\jspaceskip1zw\relax}
\def\old@vipt{\old@@vipt\jspaceskip1zw\relax}
\def\old@viipt{\old@@viipt\jspaceskip1zw\relax}
\def\old@viiipt{\old@@viiipt\jspaceskip1zw\relax}
\def\old@ixpt{\old@@ixpt\jspaceskip1zw\relax}
\def\old@xpt{\old@@xpt\jspaceskip1zw\relax}
\def\old@xipt{\old@@xipt\jspaceskip1zw\relax}
\def\old@xiipt{\old@@xiipt\jspaceskip1zw\relax}
\def\old@xivpt{\old@@xivpt\jspaceskip1zw\relax}
\fi % \ifipsj@nonjp
								% 2.00(6)
								% 1.06(2)

%% ASCII doesn't have \dg nor \dm. (H.N.)
\ifipsj@nonjp\else						% 2.12(1b)
\def\dg{\protect\pdg}
\def\dm{\protect\pdm}
%% Redefine \gt and \mc
\def\gt{\protect\pdg}
\def\mc{\protect\pdm}
\let\pdm\relax
\fi % \ifipsj@nonjp

\else % \ifASCII
%% Fonts for NTT jTeX
%% \magstephalf and \magstep1 may cause trouble in older versions.

\jfont\fivedm=dm5
\jfont\fivedg=dg5
\jfont\sixdm=dm6
\jfont\sixdg=dg6
\jfont\sevendm=dm7
\jfont\sevendg=dg7
\jfont\eightdm=dm8
\jfont\eightdg=dg8
\jfont\eightdmhalf=dm9
\jfont\eightdghalf=dg9
\jfont\tendm=dm10
\jfont\tendg=dg10
\jfont\tendmhalf=dm10 scaled 1095
\jfont\tendghalf=dg10 scaled 1095
\jfont\twelvedm=dm12
\jfont\twelvedg=dg12
\jfont\twelvedmhalf=dm12 scaled 1095
\jfont\twelvedghalf=dg12 scaled 1095
\let\fn@fontv\fivedm
\let\fn@fontvi\fivedm
\let\fn@fontvii\fivedm
\let\fn@fontxv\tendghalf
								% 1.06(3)
\fi % \ifASCII
\fi % \if@LaTeX@e

\ifx\jfsize\undefined \newcount\jfsize \fi			% 1.06(2)

\ifASCII						% 1.06(3),2.00(6)>>
\ifipsj@nonjp\else						% 2.12(1b)
\let\setjglues\relax
\let\jintercharskip\kanjiskip
\let\jasciikanjiskip\xkanjiskip
\let\jmathkanjiskip\xkanjiskip
\newdimen\jspaceskip

\def\defjintercharskip#1#2#3#4{\@asciiwarning{\defjintercharskip}}
\def\defjasciikanjiskip#1#2#3#4{\@asciiwarning{\defjasciicharskip}}
\def\defmathkanjiskip#1#2#3#4{\@asciiwarning{\defmathcharskip}}
\def\defjspaceskip#1#2#3#4{\@asciiwarning{\defjspaceskip}}
							
\def\@asciiwarning#1{\ipsj@warning{\string#1\space		% 2.00(3)
	is not supported in ASCII version}}
							% 1.06(3),2.00(6)<<
\fi % \ifipsj@nonjp
\else % \ifASCII						% 2.00(7)>>
\if@LaTeX@e
\ipsj@declare@font\fn@eightdmhalf\dm\@ixpt
\ipsj@declare@font\fn@eightdghalf\dg\@ixpt
\else
\def\fn@eightdmhalf{\eightdmhalf}
\def\fn@eightdghalf{\eightdghalf}
\fi % \if@LaTeX@e
\ifx\setjglues\undefined\else
\expandafter\defjintercharskip\fn@eightdmhalf{0pt}{1.4pt}{0.5pt}
\expandafter\defjintercharskip\fn@eightdghalf{0pt}{1.4pt}{0.5pt}
\expandafter\defjasciikanjiskip\fn@eightdmhalf{2pt}{1pt}{1pt}
\expandafter\defjasciikanjiskip\fn@eightdghalf{2pt}{1pt}{1pt}
\expandafter\defjmathkanjiskip\fn@eightdmhalf{2pt}{1pt}{1pt}
\expandafter\defjmathkanjiskip\fn@eightdghalf{2pt}{1pt}{1pt}
\fi % \if@LaTeX@e						% 2.00(7)<<
\fi % \ifASCII							% 2.00(4)

\if@LaTeX@e							% 2.00(8)>>
\if@LaTeX@eN
\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}
\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}
\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}
\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}
\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}
\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl}
\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc}
\DeclareRobustCommand*{\cal}{\@fontswitch{\relax}{\mathcal}}
\DeclareRobustCommand*{\mit}{\@fontswitch{\relax}{\mathnormal}}
\ifASCII \ifipsj@nonjp\else					% 2.12(1b)
\DeclareOldFontCommand{\mc}{\normalfont\mcfamily}{\mathmc}
\DeclareOldFontCommand{\gt}{\normalfont\gtfamily}{\mathgt}
\fi\fi\fi % \ifipsj@nonjp\ifASCII\if@LaTeX@eN

\ifASCII \ifipsj@nonjp\else					% 2.12(1b)
\def\dm{\mc}
\def\dg{\gt}
\fi\fi\fi % \ifipsj@nonjp\ifASCII\if@LaTeX@e			% 2.00(8)<<

%%%%%% Basic Font Size Macros %%%%%%

\if@LaTeX@e					% 1.06(4),2.00(9),2.04(3)>>
\def\@setsize#1#2#3#4{\@setfontsize#1{#4}{#2}\ipsj@setjspaceskip}
\let\ipsj@setjspaceskip\relax			% 2.12(1b)>>
\ifASCII \ifipsj@nonjp\else
\def\ipsj@setjspaceskip{\jspaceskip1zw\relax}
\fi\fi % \ifipsj@nonjp\ifASCII			% 2.12(1b)<<
						% 1.06(4),2.00(9),2.04(3)<<

%% \vipt etc. are redefined to use appropriate Japanese fonts.
\else % \if@LaTeX@e						% 2.00(9)
\ifipsj@nonjp\else						% 2.12(1b)
\def\vpt{\old@vpt\fivedm\let\pdg\fivedg\let\pdm\fivedm\jfsize=5\relax}
\def\vipt{\old@vipt\sixdm\let\pdg\sixdg\let\pdm\sixdm\jfsize=6\relax}
\def\viipt{\old@viipt\sevendm\let\pdg\sevendg\let\pdm\sevendm\jfsize=7\relax}
\def\viiipt{\old@viiipt\eightdm\let\pdg\eightdg\let\pdm\eightdm\jfsize=8\relax}
\def\ixpt{\old@ixpt\eightdmhalf\let\pdg\eightdghalf\let\pdm\eightdmhalf
	\jfsize=9\relax \@ixptboldmath}				% 1.02(2)
\def\xpt{\old@xpt\tendm\let\pdg\tendg\let\pdm\tendm\jfsize=10\relax}
\def\xipt{\old@xipt\tendmhalf\let\pdg\tendghalf\let\pdm\tendmhalf\jfsize=11
	\relax}
\def\xiipt{\old@xiipt\twelvedm\let\pdg\twelvedg\let\pdm\twelvedm
	\jfsize=12\relax}
\def\xivpt{\old@xivpt\twelvedmhalf\let\pdg\twelvedghalf\let\pdm\twelvedmhalf
	\jfsize=14\relax}
\fi\fi % \ifipsj@nonjp\if@LaTeX@e				% 2.00(9)

\if@LaTeX@e							% 1.06(5)
\let\@ixptboldmath\relax					% 1.06(5)
\else								% 1.06(5)
% 1.02(2) >>
\iffalse	% printer setting removed			% 2.12(2a)
\else
\def\@ixptboldmath{%
	\def\unboldmath{\everymath{}\everydisplay{}\@nomath\unboldmath
		\textfont\@ne\ninmi 
		\textfont\tw@\ninsy \textfont\lyfam\ninly
		\@boldfalse}\@boldfalse
% 1.03(1) >>
	\def\boldmath{\@ifundefined{ninmib}{\global\font\ninmib\@mbi 
		\global\font\ninsyb\@mbsy\relax
		\global\font\ninlyb\@lasyb\relax
		\@addfontinfo\@ixpt
			{\def\boldmath{\everymath{\mit}\everydisplay{\mit}%
				\@prtct\@nomathbold
				\textfont\@ne\ninmib \textfont\tw@\ninsyb 
				\textfont\lyfam\ninlyb \@prtct\@boldtrue}}}{}%
	\@ixpt\boldmath}}
% 1.03(1) <<
\fi % \iffalse
% 1.02(2) <<
\fi % \if@LaTeX@e						% 1.06(5)


%%%%%% Font Size Macros %%%%%%

\def\fs@setsize#1#2#3#4{\normalsize\dimen@\normalbaselineskip
	\@ifstar{\@setsize{#1}{\dimen@}{#3}{#4}}%
		{\@setsize{#1}{#2}{#3}{#4}}}

% s = (3*b - (h' + d') - (h + d))/2
% s_a = s + h' + d - b
% s_b = s + h + d' - b
\def\sec@setskips#1{\setbox0\hbox{\fs@sec\bf#1}\setbox1\hbox{#1}
	\@tempdima3\baselineskip
	\advance\@tempdima-\ht0 \advance\@tempdima-\dp0
	\advance\@tempdima-\ht1 \advance\@tempdima-\dp1
	\divide\@tempdima\tw@ \advance\@tempdima-\baselineskip
	\@tempdimb\@tempdima
	\advance\@tempdima\ht0 \advance\@tempdima\dp1
	\advance\@tempdimb\ht1 \advance\@tempdimb\dp0
	\edef\sec@aboveskip{\the\@tempdima}
	\edef\sec@belowskip{\the\@tempdimb}}

\ifDS@english
% size		pt	\baselineskip	  size		\?pt	\baselineskip
% \normalsize	10	19/16Q		  \large	11	19/18Q (*)
% \small	 9	15Q		  \Large	12	22Q
% \footnotesize	 8	13Q		  \LARGE	14	26Q (*)
% \scriptsize	 6/7	8pt (*)		  \huge		18	30Q (*)
% \tiny		 5	6pt (*)		  \Huge		18	30Q (*)
% * : not measured

\ifDS@landscape							% 3.00(2)>>
\def\@normalsize{\@setsize\normalsize{19\@Q}\xpt\@xpt}
\def\small{\fs@setsize\small{15\@Q}\ixpt\@ixpt}
\def\footnotesize{\fs@setsize\footnotesize{13\@Q}\viiipt\@viiipt}
\def\scriptsize{\@setsize\scriptsize{8pt}\vipt\@vipt}
\def\tiny{\@setsize\tiny{6pt}\vpt\@vpt}
\def\large{\@setsize\large{19\@Q}\xipt\@xipt}
\def\Large{\@setsize\Large{22\@Q}\xiipt\@xiipt}
\def\LARGE{\@setsize\LARGE{26\@Q}\xivpt\@xivpt}
\def\huge{\@setsize\Huge{30\@Q}\xviipt\@xviipt}
\let\Huge\huge

\else % \ifDS@landscape						% 3.00(2)<<
\def\@normalsize{\@setsize\normalsize{16\@Q}\xpt\@xpt}
\def\small{\fs@setsize\small{15\@Q}\ixpt\@ixpt}
\def\footnotesize{\fs@setsize\footnotesize{13\@Q}\viiipt\@viiipt}
\def\scriptsize{\@setsize\scriptsize{8pt}\viipt\@viipt}
\def\tiny{\@setsize\tiny{6pt}\vpt\@vpt}
\def\large{\@setsize\large{18\@Q}\xipt\@xipt}			% 3.00(3)
\def\Large{\@setsize\Large{22\@Q}\xiipt\@xiipt}			% 3.00(3)
\def\LARGE{\@setsize\LARGE{26\@Q}\xivpt\@xivpt}
\def\huge{\@setsize\Huge{30\@Q}\xviipt\@xviipt}
\let\Huge\huge

\ifDS@techrep							% 1.05(2)>>
\def\@normalsize{\@setsize\normalsize{17\@Q}\xpt\@xpt}
\fi								% 1.05(2)<<
\fi % \ifDS@landscape						% 3.00(2)

\if@LaTeX@e							% 2.00(10)>>
\let\normalsize\@normalsize
\fi								% 2.00(10)<<

\let\fs@footnote\footnotesize
\let\fs@caption\footnotesize
\let\fs@table\footnotesize
\let\fs@eabst\footnotesize
\let\fs@header\footnotesize
\let\fs@footer\footnotesize
\let\fs@bibliography\small
\let\fs@subsec\normalsize
\let\fs@sec\normalsize
\let\fs@type\large
\let\fs@eauthor\large
\let\fs@title\Large

\@normalsize

\sec@setskips{A}

\else % \ifDS@english
% size		pt	\baselineskip	  size		\?pt	\baselineskip
% \normalsize	 9	20/19Q		  \large	10	20/19Q
% \small	 8	15/14Q		  \Large	11	22Q
% \footnotesize	 7	14Q		  \LARGE	12	20/18Q
% \scriptsize	 6	8pt (*)		  \huge		14	26Q
% \tiny		 5	6pt (*)		  \Huge		14	26Q
% * : not measured

\ifDS@landscape							% 3.00(2)>>
\def\@normalsize{\@setsize\normalsize{20\@Q}\ixpt\@ixpt}
\def\small{\fs@setsize\small{15\@Q}\viiipt\@viiipt}
\def\footnotesize{\fs@setsize\footnotesize{14\@Q}\viipt\@viipt}
\def\scriptsize{\@setsize\scriptsize{8pt}\vipt\@vipt}
\def\tiny{\@setsize\tiny{6pt}\vpt\@vpt}
\def\large{\@setsize\large{20\@Q}\xpt\@xpt}
\def\Large{\@setsize\Large{22\@Q}\xipt\@xipt}
\def\LARGE{\@setsize\LARGE{20\@Q}\xiipt\@xiipt}
\def\huge{\@setsize\Huge{26\@Q}\xivpt\@xivpt}
\let\Huge\huge

\else % \ifDS@landscape						% 3.00(2)<<
\def\@normalsize{\@setsize\normalsize{19\@Q}\ixpt\@ixpt}
\def\small{\fs@setsize\small{14\@Q}\viiipt\@viiipt}
\def\footnotesize{\fs@setsize\footnotesize{14\@Q}\viipt\@viipt}
\def\scriptsize{\@setsize\scriptsize{8pt}\vipt\@vipt}
\def\tiny{\@setsize\tiny{6pt}\vpt\@vpt}
\def\large{\@setsize\large{19\@Q}\xpt\@xpt}
\def\Large{\@setsize\Large{22\@Q}\xipt\@xipt}
\def\LARGE{\@setsize\LARGE{18\@Q}\xiipt\@xiipt}
\def\huge{\@setsize\Huge{26\@Q}\xivpt\@xivpt}
\let\Huge\huge

\ifDS@techrep							% 1.05(2)>>
\def\@normalsize{\@setsize\normalsize{17\@Q}\ixpt\@ixpt}
\fi								% 1.05(2)<<
\fi % \ifDS@landscape						% 3.00(2)

\if@LaTeX@e							% 2.00(10)>>
\let\normalsize\@normalsize
\fi								% 2.00(10)<<

\let\fs@footnote\footnotesize
\let\fs@caption\footnotesize
\let\fs@table\footnotesize
\let\fs@abst\small
\def\fs@eabst{\small\baselineskip13\@Q}
\let\fs@header\small
\let\fs@footer\small
\let\fs@subsec\normalsize
\def\fs@bibliography{\normalsize\baselineskip16\@Q}
\let\fs@sec\large
\let\fs@type\fn@fontxv
\let\fs@author\Large
\def\fs@eauthor{\Large\baselineskip20\@Q}			% 2.12(7)
\let\fs@etitle\LARGE
\let\fs@title\huge

\@normalsize 
								% 2.00(7)
\ifx\setjglues\undefined\else
\setjglues
\fi

% \sec@setskips{<A of hiragana>} is moved to ipsjcommon		% 2.12(1c)
\fi % \ifDS@englisth

\if@LaTeX@e\else \ifipsj@nonjp\else			% 2.00(11),2.12(1b)
\let\latex@bf\bf						% 1.06(6)
\def\bf{\latex@bf \dg}						% 1.06(6)
\fi\fi								% 2.00(11)


%%%%%% Page Layout Parameters %%%%%%

\newdimen\@mojihaba
\ifipsj@nonjp \let\jspaceskip\@mojihaba	\fi			% 2.12(1b)

\ifDS@printer							% 2.12(2b) >>
\ifDS@landscape							% 3.00(4)>>
\voffset=0mm
\hoffset=0mm
\else								% 3.00(4)<<
\voffset=-20mm
\hoffset=-14mm
\fi\fi								% 2.12(2b) <<
								% 3.00(4)
\headheight 12\@Q

% We want to allow a line containing $\displaystyle X^X$ to be a first line.
\setbox0\hbox{$\displaystyle X^X$}
\topskip\ht0

\ifdim\maxdepth<\dp\strutbox \maxdepth\dp\strutbox \@maxdepth\maxdepth\fi

% \headsep = 28Q - \topskip
\headsep28\@Q \advance\headsep-\topskip				% 2.02(2)
								% 3.00(5)
\columnseprule0pt						% 3.00(5)

\ifDS@landscape							% 3.00(6)>>
\ifDS@english
\textheight32\baselineskip \advance\textheight\topskip \advance\textheight100sp
\else
\textheight30\baselineskip \advance\textheight\topskip \advance\textheight100sp
\fi
\@mojihaba12\@Q
\topmargin 80\@Q \advance\topmargin-1in

\textwidth296mm \advance\textwidth-160\@Q
\oddsidemargin296mm \advance\oddsidemargin-\textwidth \divide\oddsidemargin\tw@
\advance\oddsidemargin-1in \evensidemargin\oddsidemargin
\columnsep40\@Q
\footskip50\@Q

\else % \DS@landscape						% 3.00(6)<<
\@tempswafalse							% 1.05(2)>>
\ifDS@english \ifDS@techrep \else \@tempswatrue \fi\fi
\if@tempswa							% 1.05(2)<<
\topmargin 138\@Q \advance\topmargin-1in

% \textheight = 53\baselineskip + \topskip + epsilon(100sp)
\textheight53\baselineskip \advance\textheight\topskip \advance\textheight100sp

% Only first page has page number (footer) at the bottom
\footskip 27\@Q

\@mojihaba13\@Q

\else % \if@tempswa
\topmargin 131\@Q \advance\topmargin-1in

% \textheight = 45\baselineskip + \topskip + epsilon(100sp)
\textheight45\baselineskip \advance\textheight\topskip \advance\textheight100sp

\ifDS@techrep							% 1.05(2)>>
\textheight50\baselineskip \advance\textheight\topskip \advance\textheight100sp
\fi % \ifDS@techrep						% 1.05(2)<<

% Only first page has page number (footer) at the bottom
\footskip24\@Q

\@mojihaba12\@Q
\fi % \if@tempswa

\columnsep30\@Q

% \textwidth - \columnwidth = 24 * 12Q * 2 + \columnsep = 606Q
\textwidth606\@Q

\oddsidemargin210mm \advance\oddsidemargin-\textwidth \divide\oddsidemargin\tw@
\advance\oddsidemargin-1in \evensidemargin\oddsidemargin
\fi % \ifDS@landscape						% 3.00(6)

\skip\footins\baselineskip \advance\skip\footins-.5\@mojihaba
% \footnotesep = \baselineskip - depth(\strutbox)
{\fs@footnote
	\footnotesep\baselineskip
	\global\advance\footnotesep-\dp\strutbox}

\def\footnoterule{{\fs@footnote\kern-\dp\strutbox \hrule \kern-.4\p@
	\kern\dp\strutbox}}

\floatsep \baselineskip \textfloatsep \baselineskip 
\intextsep \baselineskip \@maxsep \baselineskip
\dblfloatsep \baselineskip \dbltextfloatsep \baselineskip
\@dblmaxsep \baselineskip
\@fptop 0pt plus 1fil \@fpsep 0pt plus 2fil \@fpbot 0pt plus 1fil 
\@dblfptop 0pt plus 1fil \@dblfpsep 0pt plus 2fil \@dblfpbot 0pt plus 1fil

\parskip\z@ \parindent\@mojihaba
\@lowpenalty 51 \@medpenalty 151 \@highpenalty 301 
\@beginparpenalty -\@lowpenalty \@endparpenalty -\@lowpenalty
\@itempenalty -\@lowpenalty 


%%%%%% Title and Authors %%%%%%
%
% Format of title, author names and abstract.
%
%	\huge\bf <Japanese title>
%	\vskip 32Q
%	\Large <Japanese author names>
%	\vskip 32Q
%	\small <Japanese abstract>
%	\vskip 34Q
%	\LARGE\bf <English title>
%	\vskip 28Q
%	\Large\sc <English author names>
%	\vskip 28Q
%	\small <English abstract>
%	\vskip 25Q

% 2.07(3)>>
\def\ipsj@ohcheck#1#2#3{\fs@header\hskip12\@Q#1\qquad#2\qquad#3\hskip12\@Q}
\def\ipsj@ohcvolno{Vol.~00\hskip12\@Q No.~SIG\ 00(\ipsj@sig@code\ 00)}

\newif\ifipsj@trans \ipsj@transfalse				% 2.12(4f)
\def\maketitle{\let\ipsj@oddhead@t\ipsj@oddhead@a
	\ifDS@landscape						% 3.00(8h)>>
	    \settowidth\@tempdima{\fs@header
		\hskip12\@Q 0000\hskip12\@Q\@titlestring\hskip12\@Q}
	    \ifdim\@tempdima>\textwidth
		\ipsj@warning{%					% 2.00(3)
		\string\title\space for headding is too wide}%
	    \fi
	\else\ifipsj@trans					% 3.00(8h)<<
	    \settowidth\@tempdima{%
		\ipsj@ohcheck\ipsj@ohcvolno\@titlestring\ipsj@ohcvolno}%
	    \ifdim\@tempdima>\textwidth
		\let\ipsj@oddhead@t\ipsj@oddhead@b
		\settowidth\@tempdima{%
		    \ipsj@ohcheck\ipsj@ohcvolno\@titlestring{000}}%
		\ifdim\@tempdima>\textwidth
			\ipsj@warning{%				% 2.00(3)
			\string\title\space for headding is too wide}%
	    \fi \fi
	\else
	    \settowidth\@tempdima{\fs@header
		\hskip12\@Q Vol.~00\hskip12\@Q No.~00\qquad\@titlestring\qquad
		Vol.~00\hskip12\@Q No.~00\hskip12\@Q}
	    \ifdim\@tempdima>\textwidth
		\ipsj@warning{%					% 2.00(3)
		\string\title\space for headding is too wide}%
	\fi \fi \fi						% 3.00(8h)
	\par
	\ifDS@landscape \@maketitle \else \twocolumn[\@maketitle]\fi
								% 3.00(7b)
	\thispagestyle{myheadings}\@thanks}
% 2.07(3)<<

% default title header

\def\title{\@dblarg{\@xtitle}}
\def\@xtitle[#1]#2{\gdef\@title{#2}%
	{\def\protect{\noexpand\protect\noexpand}%
		\ifDS@english\def\\{\unskip\ \ignorespaces}%
		\else\def\\{\unskip\ignorespaces}\fi
		\xdef\@titlestring{#1}}}			% 2.07(3)

\def\@title{\mkt@warning\title}\def\@titlestring{}
\long\def\author#1{\long\gdef\@author{#1}}
\def\@author{\mkt@warning\author}

%% We need English title, author name(s). (H.N.)
\def\etitle#1{\gdef\@etitle{#1}}
\def\@etitle{\mkt@warning\etitle}
\long\def\eauthor#1{\long\gdef\@eauthor{#1}}
\def\@eauthor{\mkt@warning\eauthor}

\newbox\@abstractbox						% 3.00(7a)>>
\newbox\@eabstractbox
%% Introduce \@titlewidth because we now use this dimen repeatedly. (H.N.)
%% \@titlewidth = landscape ? .4 * \textwidth : 44 * 11Q = 484Q
\newdimen\@titlewidth
\@titlewidth\ifDS@landscape.4\textwidth\else 484\@Q\fi

\def\ipsj@abstract#1#2#3{\global\let#1\relax
	\global\setbox#2\hbox\bgroup
		\unitlength\ifDS@landscape\columnwidth\else\textwidth\fi
		\advance\unitlength-\@titlewidth
		\divide\unitlength\tw@ \advance\@titlewidth\unitlength
		\begin{minipage}[b]{\@titlewidth}#3\parindent11\@Q
			\leftskip\unitlength}
\def\ipsj@endabstract#1{\end{minipage}\egroup
	\setbox0\vbox{\unhbox#1\global\setbox#1\lastbox}}

\def\abstract{\ipsj@abstract\@abstract\@abstractbox\fs@abst}
\def\eabstract{\ipsj@abstract\@eabstract\@eabstractbox\fs@eabst}
\def\endabstract{\ipsj@endabstract\@abstractbox}
\def\endeabstract{\ipsj@endabstract\@eabstractbox}

\def\@abstract{\mkt@warning{abstract env}}
\def\@eabstract{\mkt@warning{eabstract env}}

\ifDS@english
\let\author\eauthor \let\abstract\eabstract \let\endabstract\endeabstract
\let\@eauthor\@author \let\@eabstract\@abstract
\fi								% 3.00(7a)<<

\def\mkt@warning#1{\ipsj@warning{Missing \string#1}}		% 2.00(3)

\newdimen\mkt@prevdepth
\newbox\mkt@titlebox
\def\@maketitle{\begin{adjustvboxheight*}			% 3.00(7c)
	\ifDS@english \ifDS@preface
		\hbox{}\vskip60\@Q \vskip-\headsep \vskip-\baselineskip
	\else
		\hbox{}\vskip26\@Q \vskip-\headsep \vskip-\baselineskip
		\leftline{\fs@type\it
		  	\ifDS@TBIO \ipsj@TBIO@pcatref		% 2.11(2)
			\else\ifDS@technote Technical Note
                        \else\ifDS@invited Invited Paper        % 2.06(1)
			\else\ifDS@sigrecommended		% 2.04(1)
				Recommended Paper		% 2.04(1)
			\else\ifDS@abstract			% 2.07(7)
				Abstract			% 2.07(7)
			\else\ifDS@techrep\else			% 2.02(1)
				Regular Paper\fi\fi\fi\fi\fi\fi}% 2.06(1)
%								% 2.04(1)
		\vskip32\@Q \vskip-\baselineskip \fi
	\else							% 2.04(1) >>
	\@tempswafalse	\ifDS@technote\@tempswatrue\fi
			\ifDS@sigrecommended\@tempswatrue\fi
                        \ifDS@invited\@tempswatrue\fi           % 2.06(1)
			\ifDS@abstract\@tempswatrue\fi		% 2.07(7)
	\if@tempswa
		\vskip18\@Q \vskip-\headsep
		\leftline{\vbox to28\@Q{\hrule height.8pt\vss
			\hbox{\hskip7\@Q \fs@type
				\ifDS@technote \ipsj@j@technote	% 2.12(1c)>>
                                \else\ifDS@invited
					\ipsj@j@invited		% 2.06(1)
				\else\ifDS@sigrecommended
					\ipsj@j@sigrec		% 2.06(1)
				\else \ipsj@j@talkabst		% 2.07(7)
				\fi\fi\fi			% 2.12(1c)<<
				\hskip7\@Q}\vss\hrule height.8pt}}
%								% 2.04(1) <<
		\vskip40\@Q \vskip-\baselineskip
	\else
		\hbox{}\vskip60\@Q \vskip-\headsep \vskip-\baselineskip
	\fi\fi
	\@tempswafalse \ifDS@english\else\ifDS@preface\@tempswatrue\fi\fi
	\mkt@maketitle{\fs@title\bf}\@title\title \nobreak	% 3.00(7e)
	\affi@labels
	\ifDS@english\else
	\vskip-\mkt@prevdepth \nointerlineskip\vskip32\@Q
	\centerline{\vbox{\centering\hsize\@titlewidth\fs@author
		\mkt@makeauthor}}\nobreak			% 3.00(7e)
	\ifDS@preface\else
	\vskip-\prevdepth \nointerlineskip\vskip32\@Q
	\@tempdima\dp\@abstractbox				% 3.00(7d)>>
	\@abstract \unvbox\@abstractbox
	\vskip-\@tempdima \nointerlineskip\vskip34\@Q
	\mkt@maketitle{\fs@etitle\bf}\@etitle\etitle \nobreak	% 3.00(7e)<<
	\fi\fi
	\if@tempswa\else
	\vskip-\mkt@prevdepth \nointerlineskip\vskip28\@Q
	\centerline{\vbox{\centering\hsize\@titlewidth\fs@eauthor\sc
		\mkt@makeeauthor}}\nobreak			% 3.00(7e)
	\fi
	\vskip-\prevdepth					% 3.00(7d)>>
	\ifDS@preface\else
	\nointerlineskip\vskip28\@Q
	\@tempdima\dp\@eabstractbox
	\@eabstract\unvbox\@eabstractbox
	\vskip-\@tempdima
	\fi
	\nointerlineskip\vskip25\@Q
	\end{adjustvboxheight*}}				% 3.00(7c)<<

%% \mkt@maketitle puts Japanese/English title, whose lines should be
%% properly broken with \\ by the user.  The result is flushed to left, then
%% centered with respect to the longest line. (H.N.)
\def\mkt@maketitle#1#2#3{\setbox\@tempboxa\vtop{
	\def\\{\unskip\egroup\hbox\bgroup\ignorespaces}
		#1\hbox\bgroup#2\unskip\egroup
		\global\mkt@prevdepth\prevdepth}
	\@tempdima\ifDS@landscape\columnwidth\else\textwidth\fi
	\advance\@tempdima-4\@mojihaba
	\ifdim\wd\@tempboxa>\@tempdima
		\ipsj@warning{%					% 2.00(3)
			\string#3 is too wide. Break line(s) by \string\\}\fi
	\centerline{\box\@tempboxa}}

% Assignment of Japanese author names to lines:
% 1 -> 1, 2 -> 2, 3 -> 3, 4 -> 2+2, 5 -> 3+2, 6 -> 3+3, 7 -> 3+2+2, 8 -> 3+3+2,
% ...
% Rule for N authors (N > 2, q := N div 3)
%	N mod 3 = 0 -> 3 * q
%	N mod 3 = 1 -> 3 * (q - 2) + 2 + 2
%	N mod 3 = 2 -> 3 * (q - 1) + 2

\newcount\mkt@cnta\newcount\mkt@cntb
\newcount\mkt@sname\newcount\mkt@gname
\newbox\mkt@boxa
\newdimen\mkt@namewidth
\def\mkt@makeauthor{\let\member\@gobble \let\nomember\relax
	\let\stmember\@gobble	% Those are not necessary in final manuscript.
	\def\@makefnmark{\smash{\rlap{$^{\affi@thefnmark}$}}}%	% 2.12(7)
	\gdef\affi@thefnmark{}\leavevmode\let\+\ignorespaces
	\settowidth\@tempdima{\ifipsj@nonjp x\else\ipsj@j@a \fi}% 2.12(1c)
	\mkt@namewidth7\@tempdima\@tempcnta\z@
	\expandafter\mkt@countauthor\@author\and\@nil\and
	\ifnum\@tempcnta=\@ne\let\mkt@anhbox\mkt@anhboxc\mkt@makesingleauthor
	\else
		\@tempcntb\@tempcnta \divide\@tempcntb\thr@@
		\multiply\@tempcntb\thr@@ \advance\@tempcntb-\@tempcnta
		\ifnum\@tempcntb=\m@ne\relax\@tempcntb\tw@\else\@tempcntb\z@\fi
		\mkt@cnta\thr@@
		\let\mkt@anhbox\mkt@anhboxl
		\expandafter\mkt@makemultiauthor\@author\and\and\fi}
\def\mkt@countauthor#1\and{\def\@tempa{#1}\ifx\@tempa\@nnil\let\next\relax
	\else\advance\@tempcnta\@ne \let\next\mkt@countauthor\fi\next}

% If single author, author name has 9 KC width instead of 7.
\def\mkt@makesingleauthor{\divide\mkt@namewidth7\multiply\mkt@namewidth9\relax
	\expandafter\mkt@putauthor\@author\+ \@nil}

\def\mkt@makemultiauthor#1\and{\ifnum\@tempcnta=\z@\unskip\let\next\relax\else
	\leavevmode
	\advance\mkt@cnta\m@ne \advance\@tempcnta\m@ne
	\ifnum\mkt@cnta=\z@\mkt@maleft{#1}\mkt@cnta\thr@@\else
	\ifnum\@tempcnta=\@tempcntb\mkt@maleft{#1}\mkt@cnta\tw@\else
	\mkt@putauthor#1\+ \@nil\let\mkt@anhbox\mkt@anhboxc\fi\fi
	\let\next\mkt@makemultiauthor\fi\next}
\def\mkt@maleft#1{\let\mkt@anhbox\mkt@anhboxr\mkt@putauthor#1\+ \@nil
	\par\let\mkt@anhbox\mkt@anhboxl}

% Japanese author name format:
%	Non Japanese : As is.
%	Japanese w/o s/g delimitor : As is with warning.
%	Japanese (s+g>6) : As is.
%	Japanese (s+g<7) : Give 1-KC space to s/g delimitor, then insert
%		infinit stretch between each character pair, assuming the
%		s/g delimitor as a charcter, to make the name have 7-KC
%		width.   An exception is 2s + 2g case, in which s/g
%		delimitor has 0 width in order to have the result
%		"S_S_G_G".

\newdimen\InterAuthorSkip \InterAuthorSkip\columnsep		% 2.13(1)
\def\mkt@putauthor#1 #2\@nil{%
	\ifipsj@nonjp \mkt@anhbox{#1 #2}\else
	\setbox\@tempboxa\hbox{\let\affiref\@gobble \let\mkt@warning\@gobble
		\jintercharskip\z@#1#2}%
	\setbox\mkt@boxa\hbox{\let\affiref\@gobble \let\mkt@warning\@gobble
		\jintercharskip1cm#1#2}%
	\ifdim\wd\@tempboxa=\wd\mkt@boxa \mkt@anhbox{#1 #2}\else
						% probably no Kanjis
	\def\@tempa{#2}\ifx\@tempa\empty	% without space btwn s/g-name
		{\let\affiref\@gobble \def\+{}%
			\ipsj@warning{Author name #1 doesn't have a space}}%
								% 2.00(3)
		\mkt@anhbox{#1}\else
	\mkt@getnamewidth\mkt@sname{#1}\mkt@getnamewidth\mkt@gname{#2}%
	\mkt@cntb\mkt@sname \advance\mkt@cntb\mkt@gname
	\ifnum\mkt@cntb>6\relax\mkt@anhbox{#1\ #2}\else
	\jintercharskip\fill%
	\@tempskipa\@tempdima plus2fill\relax
	\ifnum\mkt@sname=\tw@ \ifnum\mkt@gname=\tw@ \@tempskipa\fill\fi\fi
	\hbox to\mkt@namewidth{#1\hskip-\lastskip
		\hskip\@tempskipa#2\hskip-\lastskip\@makefnmark}\fi\fi\fi
	\fi
	\gdef\affi@thefnmark{}\hskip\InterAuthorSkip}		% 2.13(1)

% When an author name is formatted "as is", the following macros are used
% according to their position (left, right, or center).
\def\mkt@anhboxl#1{\hbox to\mkt@namewidth{\hss#1\@makefnmark}}
\def\mkt@anhboxr#1{\hbox to\mkt@namewidth{#1\@makefnmark\hss}}
\def\mkt@anhboxc#1{\setbox\@tempboxa\hbox{#1\@makefnmark}%
	\ifdim\wd\@tempboxa>\mkt@namewidth\box\@tempboxa
	\else\hbox to\mkt@namewidth{\hss\box\@tempboxa\hss}\fi}	% 2.08(1)

\def\mkt@getnamewidth#1#2{\setbox\@tempboxa\hbox{\let\affiref\@gobble#2}%
	\@tempdimb\wd\@tempboxa
	\advance\@tempdimb.5\@tempdima #1\@tempdimb \mkt@cntb\@tempdima
	\divide#1\mkt@cntb}

% English author name format
%	1 -> <name-1>^*
%	2 -> <name-1>^* and~<name-2>^*
%	3 or more -> <name-1>,^* <name-2>,^* ... <name-n-1>^* and~<name-n>^*
% (be careful the position of comma).
%
% No special tricks for assignment names to line.  Names are simply put in a
% \centering paragraph.

\def\mkt@makeeauthor{\let\member\@gobble \let\nomember\relax
	\let\stmember\@gobble	% Those are not necessary in final manuscript.
	\leavevmode\let\mkt@and\relax\gdef\affi@thefnmark{}%
	\def\@thefnmark{\affi@thefnmark}%
	\expandafter\mkt@imakeeauthor\@eauthor\and\@nil\and}
\def\mkt@imakeeauthor#1\and#2\and{\def\@tempa{#2}\ifx\@tempa\@nnil
		#1\@makefnmark\let\next\relax
	\else
		\def\@tempb{#1}\def\next{\mkt@iimakeeauthor#2\and}%
	\fi\next}
\def\mkt@iimakeeauthor#1\and{\def\@tempa{#1}\ifx\@tempa\@nnil
		\@makefnmark\ {\rm{and}~}\gdef\affi@thefnmark{}\hbox{\@tempb}%
		\@makefnmark\let\next\relax
	\else
		\mkt@and\hbox{\@tempb}\let\mkt@and\mkt@andmid
		\let\next\mkt@iimakeeauthor
	\fi\def\@tempb{#1}\next}
\def\mkt@andmid{,\@makefnmark\ \gdef\affi@thefnmark{}}

% Macros to specify author's affiliation easily.
% 2.12(7)>>
\newcounter{affi@footnote} \c@affi@footnote\z@
\newcounter{affi@pfootnote} \c@affi@pfootnote\z@
\def\affilabel{\affi@deflabels\affi@affilabel}
\def\paffilabel{\affi@deflabels\affi@paffilabel}
\def\affi@deflabels#1#2#3{{\def\protect{\noexpand\protect\noexpand}%
	\let\affi@affilabel\relax \let\affi@paffilabel\relax \let\\\relax
	\xdef\affi@labels{\affi@labels#1{#2}{#3}}}}
\def\affi@labels{}
\def\affi@affilabel{\begingroup \affi@label{affi@footnote}\@makefnmarkdagger}
\def\affi@paffilabel#1#2{\begingroup
	\def\protect{\noexpand\protect\noexpand}%
	\def\\{\noexpand\\Presently with \ignorespaces}%
	\edef\@tempa{\ifDS@english Presently with \else		% 1.04(1d)
		\ipsj@j@presently\fi#2}%			% 2.12(1c)
	\affi@label{affi@pfootnote}\@makefnmarkast{#1}\@tempa}
\def\affi@label#1#2#3#4{\stepcounter{#1}%
	\@ifundefined{affi@r@#3}%
		{\expandafter\xdef\csname affi@r@#3\endcsname{%
			\csname the#1\endcsname}}%
		{\ipsj@warning{Affiliation label `#3' multiply defined}}%
								% 2.00(3)
	\let\affi@footnotetext\relax\let\\\relax
	\def\protect{\noexpand\protect\noexpand}%
	\xdef\@thanks{\@thanks
		\affi@footnotetext
			{\csname the#1\endcsname}{\protect#2}{#4}}\endgroup}

\def\affiref#1{\@ifundefined{affi@r@#1}%
		{\ipsj@warning{Affiliation reference `#1' undefined}% 2.00(3)
			\def\@tempa{?}}%
		{\def\@tempa{\csname affi@r@#1\endcsname}}%
	{\def\protect{\noexpand\protect\noexpand}%
	\ifx\affi@thefnmark\empty \xdef\affi@thefnmark{\@tempa}\else
	\xdef\affi@thefnmark{\affi@thefnmark,\hskip\z@\@tempa}\fi}}
\def\affi@footnotetext#1#2#3{{\def\@thefnmark{#1}%
	\def\@makefnmarkforfn{#2}\@footnotetext{#3}}}

\def\theaffi@footnote{{\dagger}\number\c@affi@footnote}
\def\theaffi@pfootnote{{\ast}\number\c@affi@pfootnote}

\def\thanks#1{\begingroup
	\stepcounter{affi@pfootnote}\let\thempfn\theaffi@pfootnote
	\let\@thefnmark\thempfn \@makefnmark
	\let\affi@footnotetext\relax\let\\\relax
	\def\protect{\noexpand\protect\noexpand}%
	\xdef\@thanks{\@thanks
		\affi@footnotetext{\thempfn}{\protect\@makefnmarkast}{#1}}%
	\endgroup}
% 2.12(7)<<

% \contact is necessary only for drafts.
\long\def\contact#1{}


%%%%%% Page Header and Footer %%%%%% 

\mark{{}{}} 

\newcounter{volpageoffset} % You must set this to appropriate value
\setcounter{volpageoffset}{1} % for each issue!
\ifDS@printer							% 2.12(4d)>>
\def\LastPageNumber{\gdef\ipsj@last@page}
\fi								% 2.12(4d)<<

% 2.00(16)>>
\let\latex@document\document
\def\document{\latex@document
	\ifDS@landscape\ifDS@techrep\ifnum\c@year<\z@		% 3.01(5c)<<
		\ipsj@warning{Publication year should be given by \string
			\setcounter{year}{<yyyy>}}%
		\c@year\year \fi\fi\fi				% 3.01(5c)>>
	\ifDS@private\else
	\ifDS@online \global\c@page\ipsj@olh@page		% 2.12(4)
	\else \global\c@page\c@volpageoffset \fi \fi}		% 2.07(8)
\let\c@volpage\c@page		% for backward compatibility
\def\thevolpage{\thepage}	% for backward compatibility
% 2.00(16)<<

								% 2.12(1c)>>
\newcounter{volume} \c@volume\z@				% 3.00(8a)>>
\newcounter{number} \c@number\z@
\newcounter{month} \c@month\m@ne
\newcounter{year} \c@year\m@ne					% 3.00(8a)<<
								% 2.12(1c)<<

\ifDS@printer							% 2.12(4b)>>
\def\SetOnlineHeaderInfo#1#2#3#4{%	% <vol><year><month><page>[<lastpage>]
	\def\ipsj@olh@vol{#1}%
	\def\ipsj@olh@year{#2}%
	\def\ipsj@olh@month{#3}%
	\def\ipsj@olh@page{#4}%
	\@ifnextchar[%]
		\ipsj@olh@setlastpage\relax}
\def\ipsj@olh@setlastpage[#1]{\def\ipsj@olh@lastpage{#1}}
\fi								% 2.12(4b)<<

% 2.07(4)>>
\ifDS@online							% 2.12(4b)
\def\@thevolno{Vol.~\ipsj@olh@vol}				% 2.12(4b)
\else\ifDS@landscape						% 3.00(8b)>>
\def\@thevolno{Vol.~\arabic{volume}%
	\ifnum\c@number>\z@ \hskip\@mojihaba No.~\arabic{number}\fi}
\else								% 3.00(8b)<<
\def\@thevolno{Vol.~\arabic{volume}\hskip\@mojihaba No.~%	% 2.12(1c)>>
	\ifipsj@trans SIG\ \ipsj@sig@numa(\ipsj@sig@code\ \ipsj@sig@numb)%
	\else \arabic{number}\fi}				% 2.12(1c)<<
\fi \fi								% 3.00(8b)
% 2.07(4)<<
% 2.00(15)>>
% 2.12(1c)(4b)>>
% 3.00(8c)>>
\def\ipsj@year{%
	\ifDS@online \ipsj@olh@year
	\else \ifnum\c@year<\z@
		\c@year1959 \advance\c@year\c@volume \fi
	\number\c@year
	\fi}
\def\ipsj@month{{%
	\@tempcnta\ifDS@online\ipsj@olh@month \else
		\ifnum\c@month<\z@ \c@number \else \c@month \fi \fi \relax
	\ifcase\@tempcnta???\or Jan.\or Feb.\or Mar.\or Apr.\or May\or
		June\or July\or Aug.\or Sep.\or Oct.\or Nov.\or Dec.\else
		???\fi}}
\def\@monthyear{\ipsj@month \hskip.5\@mojihaba \ipsj@year}
% 2.12(1c)(4b)<<
% 2.00(15)<<
% 3.00(8c)<<

% 2.07(2)>>
\newif\ifipsj@etrans \ipsj@etransfalse				% 3.00(10)
\ifDS@landscape							% 3.00(8d)>>
\def\ipsj@setcounter#1#2{\afterassignment\ipsj@isetcounter #1=0#2\relax}
\def\ipsj@isetcounter#1\relax{}
\def\transaction#1#2#3{\ipsj@transtrue
	\def\ipsj@sig@code{#1}
	\ipsj@setcounter\c@volume{#2}\ipsj@setcounter\c@number{#3}%
	\expandafter\let\expandafter\ipsj@sig@title
		\csname ipsj@sig@#1@\ifDS@english e\else j\fi\endcsname
	\ifx\ipsj@sig@title\relax
		\ipsj@warning{Transaction code #1 is unknown}%
	\else \@ifundefined{ipsj@sig@#1@j}{\ipsj@etranstrue}{}%	% 3.00(10)
	\fi
	\ifnum\c@year<\z@
		\expandafter\c@year\expandafter0\csname
			ipsj@sig@#1@baseyear\endcsname\relax
		\ifnum\c@year=\z@ \c@year2008\fi
		\advance\c@year\c@volume \advance\c@year\m@ne
	\fi}
\else								% 3.00(8d)<<
\def\transaction#1#2#3{\ipsj@transtrue
	\def\ipsj@sig@code{#1}\def\ipsj@sig@numa{#2}\def\ipsj@sig@numb{#3}%
	\expandafter\let\expandafter\ipsj@sig@title
		\csname ipsj@sig@#1@\ifDS@english e\else j\fi\endcsname
	\ifx\ipsj@sig@title\relax
		\ipsj@warning{Transaction code #1 is unknown}\fi
	\let\ipsj@oddhead@s\ipsj@oddhead@a
	\ifDS@online\else					% 2.12(4c)
	\settowidth\@tempdima{%
	    \ipsj@ohcheck\ipsj@ohcvolno\hdr@tipsj\ipsj@ohcvolno}%
	\ifdim\@tempdima>\textwidth
	    \let\ipsj@oddhead@s\ipsj@oddhead@b
	    \settowidth\@tempdima{\c@month3\relax	% "Mar." is longest
		\ipsj@ohcheck\ipsj@ohcvolno\hdr@tipsj\@monthyear}%
	    \ifdim\@tempdima>\textwidth
		\let\ipsj@oddhead@s\ipsj@oddhead@c
	\fi \fi \fi}
\fi								% 3.00(8d)
\def\ipsj@sig@PRO@e{Programming}
\def\ipsj@sig@TOM@e{Mathematical Modeling and Its Applications}
\def\ipsj@sig@TOD@e{Databases}
\def\ipsj@sig@HPS@e{High Performance Computing Systems}
\def\ipsj@sig@CVIM@e{Computer Vision and Image Media}
\def\ipsj@sig@ACS@e{Advanced Computing Systems}			% 2.09(2)
\def\ipsj@sig@TBIO@e{Bioinformatics}				% 2.11(3)
\def\ipsj@sig@SLDM@e{System LSI Design Methodology}		% 2.12(8)
\def\ipsj@sig@CVA@e{Computer Vision and Applications}		% 3.00(9)
% if Vol.1 of CVA is published in 2009 (rather than 2008) do the following.
%\def\ipsj@sig@CVA@baseyear{2009}
% 2.07(2)<<

\def\copyrightnotice{\long\def\ipsj@cnotice}
\def\ipsj@rightfoot{\copyright\space\ipsj@year\space		% 3.01(5b)>>
	Information Processing Society of Japan\hskip12\@Q}	% 3.01(2)
								% 3.01(5b)<<

% 1.05(2)>>
\let\ipsj@ordspace\ %						% 3.00(8i)
\ifDS@techrep
\ifDS@landscape							% 3.01(5a)>>
\def\TechrepVolNoDate#1#2#3{\def\ipsj@techrep@volno{#1\ No.\ #2}%
	\def\ipsj@techrep@date{#3}}
\def\ps@headings{\let\@mkboth\markboth
	\def\@oddhead{\fs@header \@checklines \let\ \ipsj@ordspace
		\hskip12\@Q
		\smash{\vbox{\normalbaselines
		  	\ifDS@english\else \hbox{\ipsj@j@techrep} \fi
			\hbox{IPSJ SIG Technical Report}}}%
		\hss
		\smash{\vbox{\normalbaselines
			\llap{\@nameuse{ipsj@techrep@volno}}
			\llap{\@nameuse{ipsj@techrep@date}}}}%
		\hskip12\@Q}%
	\let\@evenhead\@oddhead
	\def\@oddfoot{\fs@header \hss \thepage \hss \llap{\ipsj@rightfoot}}%
	\let\@evenfoot\@oddfoot}
\let\ps@myheadings\ps@headings
\else								% 3.01(5a)<<
\def\ps@headings{\let\@mkboth\markboth
	\def\@oddhead{\@checklines\hss}\let\@evenhead\@oddhead
	\def\@oddfoot{}\def\@evenfoot{}}
\let\ps@myheadings\ps@headings
\fi % \ifDS@landscape						% 3.01(5a)

\else\ifDS@private						% 2.07(8)>>
\def\ps@headings{\let\@mkboth\markboth
	\def\@oddhead{\@checklines\hfil\thepage\hskip12\@Q}%
	\def\@evenhead{\@checklines\hskip12\@Q\thepage\hfil}
	\def\@oddfoot{}\def\@evenfoot{}}
\def\ps@myheadings{\ps@headings
	\def\@oddhead{\@checklines
		\smash{\parbox[b]{.75\textwidth}{\@nameuse{ipsj@cnotice}}}%
		\hfil\thepage\hskip12\@Q}%
	\let\@evenhead\@oddhead}
								% 2.07(8)<<
\else\ifDS@landscape						% 3.00(8)>>
\def\ipsj@leftfoot{\let\ \ipsj@ordspace
	\hskip12\@Q
	\hdr@tipsj \hskip12\@Q
	\@thevolno \hskip12\@Q
	\@tempcnta\ifDS@online\ipsj@olh@page\else\c@volpageoffset\fi\relax
	\ipsj@thelastpage\@tempcnta\ipsj@last@page		% 3.00(11)
	\ (\@monthyear)}
\def\ps@headings{\let\@mkboth\markboth
	\def\@oddfoot{\fs@header \ipsj@leftfoot \hss \ipsj@rightfoot}
	\def\@oddhead{\fs@header \@checklines
		\hskip12\@Q\phantom{0000}\llap{\thepage}%
		\hskip12\@Q\@titlestring\hss}
	\let\@evenfoot\@oddfoot
	\let\@evenhead\@oddhead
	\def\sectionmark##1{}\def\subsectionmark##1{}}
\def\ps@myheadings{\let\@mkboth\@gobbletwo
	\def\@oddhead{\fs@header \@checklines \ipsj@leftfoot \hss}
	\def\@oddfoot{\fs@header \hskip12\@Q \phantom{0000}\llap{\thepage}\hss
		\ipsj@rightfoot}
	\let\@evenhead\@oddhead
	\let\@evenfoot\@oddfoot
	\def\sectionmark##1{}\def\subsectionmark##1{}}
\else								% 3.00(8)<<
% 1.05(2)<<
\def\ps@headings{\let\@mkboth\markboth
	\def\@oddfoot{}
	\def\@evenfoot{}
	\def\@evenhead{\fs@header \@checklines
		\let\ipsj@ordspace\ %				% 3.00(8i)
		\hskip12\@Q\rlap{\thepage}\hss			% 2.07(3)
		\hdr@tipsj\hss\llap{\@monthyear}\hskip12\@Q}
	\def\@oddhead{\fs@header \@checklines
		\let\ipsj@ordspace\ %				% 3.00(8i)
		\ipsj@oddhead@t\@titlestring\thepage}		% 2.07(3)
	\def\sectionmark##1{}\def\subsectionmark##1{}}

\def\ps@myheadings{\let\@mkboth\@gobbletwo
	\def\@oddhead{\fs@header \@checklines
		\let\ipsj@ordspace\ %				% 3.00(8i)
		\ipsj@oddhead@s\hdr@tipsj\@monthyear}		% 2.07(3)
	\def\@oddfoot{\fs@footer\hfil\thepage\hfil}
	\let\@evenhead\@oddhead
	\let\@evenfoot\@oddfoot
	\def\sectionmark##1{}\def\subsectionmark##1{}}
\fi\fi\fi							% 1.05(2)
								% 2.07(8)
								% 3.00(8)

% 2.12(9)>>
\def\ipsj@lc@Rtop{\rlap{\smash{\rule[-\headsep]{0.05mm}{10mm}%
	\rule[-\headsep]{10mm}{0.05mm}}}}
\def\ipsj@lc@Ltop{\llap{\smash{\rule[-\headsep]{10mm}{0.05mm}%
	\rule[-\headsep]{0.05mm}{10mm}}}}
\def\ipsj@lc@Lbot{\llap{\smash{\raisebox{-\textheight}{%
	\raisebox{-\headsep}{\rule{10mm}{0.05mm}\rule[-10mm]{0.05mm}{10mm}}}}}}
\def\ipsj@lc@Rbot{\rlap{\smash{\raisebox{-\textheight}{%
	\raisebox{-\headsep}{\rule[-10mm]{0.05mm}{10mm}\rule{10mm}{0.05mm}}}}}}

\def\ps@layoutcheck{\ps@headings
	\let\ipsj@lc@evenhead\@evenhead
	\def\@evenhead{\ipsj@lc@Lbot \ipsj@lc@Ltop
		\ipsj@lc@evenhead
		\ipsj@lc@Rtop \ipsj@lc@Rbot}%
	\let\ipsj@lc@oddhead\@oddhead
	\def\@oddhead{\ipsj@lc@Lbot \ipsj@lc@Ltop
		\ipsj@lc@oddhead
		\ipsj@lc@Rtop \ipsj@lc@Rbot}%
	\let\ipsj@lc@myheadings\ps@myheadings
	\def\ps@myheadings{\ipsj@lc@myheadings
		\let\ipsj@lc@fpoddhead\@oddhead
		\def\@oddhead{\ipsj@lc@Lbot \ipsj@lc@Ltop
			\ipsj@lc@fpoddhead
			\ipsj@lc@Rtop \ipsj@lc@Rbot}%
		\let\@evenhead\@oddhead}}
% 2.12(9)<<

% 2.07(3)>>
\def\ipsj@oddhead@a#1#2{\hskip12\@Q \rlap{\@thevolno}\hss#1\hss
	\llap{#2}\hskip12\@Q}
\def\ipsj@oddhead@b#1#2{\hskip12\@Q \@thevolno\qquad#1\hss
	\llap{#2}\hskip12\@Q}
\def\ipsj@oddhead@c#1#2{\hskip12\@Q \@thevolno\hss#1\hss#2\hskip12\@Q}
\let\ipsj@oddhead@t\ipsj@oddhead@a
\let\ipsj@oddhead@s\ipsj@oddhead@a
% 2.07(3)<<

\ifDS@landscape							% 3.00(8e)>>
\def\ipsj@online@trans{IPSJ Online Transactions}
\def\ipsj@online@journal{Journal of Information Processing}
\else								% 3.00(8e)<<
\def\ipsj@online@trans{IPSJ Digital Courier}			% 2.12(4c)
\def\ipsj@online@journal{IPSJ Digital Courier}			% 2.12(4c)
\fi								% 3.00(8e)
% 2.02(2),2.07(4)>>
\ifDS@english
\def\hdr@tipsj{\smash{%
	\ifDS@online						% 2.12(4c)>>
		\ifipsj@trans
			\ipsj@online@trans
		\else
			\ipsj@online@journal\fi			% 2.12(4c)<<
	\else
		\ifipsj@trans
			IPSJ Transactions on \ipsj@sig@title
		\else
			IPSJ Journal\fi
	\fi}}
\else
\def\ipsj@trans@delimitor{%					% 3.00(8f)
	\ifDS@landscape\hskip\jspaceskip\else\ipsj@j@colon\fi}	% 3.00(8f)
\def\hdr@tipsj{\smash{\ipsj@j@jipsj				% 2.12(1c)>>
	\ifipsj@trans\ipsj@trans@delimitor\ipsj@sig@title\fi}}	% 3.00(8f)
\fi								% 2.12(1c)<<
% 2.02(2),2.07(4)<<

% \checklines enables to draw a horizontal rule onto each baselines.

\newif\if@checklines \@checklinesfalse
\def\checklines{\@checklinestrue}
\def\@checklines{\if@checklines \rlap{\smash{\vtop{\normalsize
	\hbox{} \vskip\headsep \hrule width\textwidth\vskip-.4pt \vskip\topskip
	\hrule\vskip-.4pt
	\ifDS@landscape						% 3.00(6)>>
	\ifDS@english\@tempcnta32\else\@tempcnta30\fi		
	\else
	\ifDS@techrep\@tempcnta50\else				% 1.05(2)
	\ifDS@english\@tempcnta53\else\@tempcnta45\fi\fi	% 1.05(2)
	\fi							% 3.00(6)<<
	\relax\@@checklines}}}\fi
% 1.05(2)>>
	% register marks are removed				% 2.12(2d)
% 1.05(2)<<
	}
\def\@@checklines{\ifnum\@tempcnta>\z@
	\vskip\normalbaselineskip \hrule\vskip-.4pt \advance\@tempcnta\m@ne
	\let\next\@@checklines\else\let\next\relax\fi\next}

\pagestyle{headings}
\pagenumbering{arabic}

\ifDS@english\else
\def\today{\the\year\ipsj@j@year \the\month\ipsj@j@month \the\day\ipsj@j@day}
								% 2.12(1c)
\fi


%%%%%% Output Routine %%%%%%

% To balance the final page,
% following code is borrowed from nicetwocolumn style

% you can refrain from balancing by falsifying following switch!
%% Initial value of \if@lastpagebalancing is false.  It may be turned true by
%% biography processing macros. (H.N.)

\newif\ifipsj@lastpagebalancing \ipsj@lastpagebalancingtrue	% 3.00(12)>>
\def\LastPageBalancing{\ipsj@lastpagebalancingtrue}
\def\LastPageUnbalancing{\ipsj@lastpagebalancingfalse \verbbiography}
								% 3.00(12)<<
\newif\if@lastpagebalancing \@lastpagebalancingfalse
\newif\if@finalpageoutput \@finalpageoutputfalse
% incorporate balanced output to \enddocument
\let\latex@enddocument\enddocument
\def\enddocument{\@finalpageoutputtrue
	\ifipsj@lastpagebalancing				% 3.00(12)
	\if@lastpagebalancing
		\global\let\@outputdblcol\opt@balanceoutputdblcol\fi
	\ifDS@preface
		\global\let\@outputdblcol\opt@balanceoutputdblcol\fi
	\fi							% 3.00(12)
	\ifDS@abstract						% 2.07(7)>>
		\ifDS@landscape\else \hbox{}\newpage \fi	% 3.01(3a)
		\ifDS@english	\rightline{(Presented \ra@presented)}
		\else		\expandafter\ra@putpresented\ra@presented \fi
		\fi						% 2.07(7)<<
%								% 2.12(4d)>>
	\if@filesw \write\@auxout{\string\gdef\string\ipsj@lastpage
		{\number\c@page}}\fi				% 2.12(4d)<<
	\latex@enddocument}

\newbox\@leftcolumnfootnote \newbox\@rightcolumnfootnote
\newif\if@leftfootnoteexist \@leftfootnoteexistfalse 
\newif\if@rightfootnoteexist \@rightfootnoteexistfalse
\newif\ifopt@floatexist \opt@floatexistfalse

% 2.00(12) \color@{begin/end}group ignored
\def\enlargethispage{\ipsj@warning{\string\enlargepage is ignored}}
								% 2.00(3,12)
\def\@makecol{\vbadness10000 \lineskiplimit\normallineskiplimit	% 1.05(1)
	\setbox\@outputbox\box\@cclv
	\if@firstcolumn
		\ifvoid\footins \global\@leftfootnoteexistfalse
		\else
			\global\@leftfootnoteexisttrue
			\@tempdima\dp\footins
			\global\setbox\@leftcolumnfootnote\vbox{
				\unvbox\footins\vskip-\@tempdima}
		\fi
		\ifx\@botlist\@empty\else\global\opt@floatexisttrue\fi
	\else
		\ifvoid\footins \global\@rightfootnoteexistfalse
		\else
			\global\@rightfootnoteexisttrue
			\@tempdima\dp\footins
			\global\setbox\@rightcolumnfootnote\vbox{
				\unvbox\footins	\vskip-\@tempdima}
		\ifx\@toplist\@empty\else\global\opt@floatexisttrue\fi
		\fi
	\fi
	\xdef\@freelist{\@freelist\@midlist}\gdef\@midlist{}\@combinefloats
	\global\maxdepth\@maxdepth}

% 2.01(1) >>
\let\latex@vtryfc\@vtryfc
\def\@vtryfc{\if@firstcolumn \global\@leftfootnoteexistfalse
	\else \global\@rightfootnoteexistfalse \fi \latex@vtryfc}
% 2.01(1) <<

% 1.01(1,2) >>
\let\latex@addtobot\@addtobot
\def\@addtobot{\latex@addtobot\global\maxdepth\@maxdepth}
\let\latex@combinefloats\@combinefloats
\def\@combinefloats{\ifx\@botlist\@empty\else \dimen@\dp\@outputbox
	\setbox\@outputbox\vbox{\unvbox\@outputbox \vskip-\dimen@}\fi
	\latex@combinefloats}
% 1.01(1,2) <<

\newskip\opt@baselineskip
\def\@outputdblcol{
	\if@firstcolumn \global\@firstcolumnfalse
		\global\setbox\@leftcolumn\box\@outputbox
		\global\opt@baselineskip\baselineskip
	\else \global\@firstcolumntrue \global\opt@floatexistfalse
	\global\bib@adjustheight-\maxdimen
	\setbox\@leftcolumn\vbox to\@colht{\boxmaxdepth\@maxdepth   % 1.01(3)
		\unvbox\@leftcolumn
		\if@leftfootnoteexist\vfil
			\footnoterule\box\@leftcolumnfootnote\fi}
	\setbox\@outputbox\vbox to\@colht{\boxmaxdepth\@maxdepth    % 1.01(3)
		\unvbox\@outputbox
		\if@rightfootnoteexist\vfil
			\footnoterule\box\@rightcolumnfootnote\fi}
	\global\maxdepth\@maxdepth
	\if@finalpageoutput
	\if@leftfootnoteexist\else\if@rightfootnoteexist\else
		\setbox\@leftcolumn\vbox{\unvbox\@leftcolumn}%
		\setbox\@outputbox\vbox{\unvbox\@outputbox}
		\ifdim\ht\@leftcolumn<\ht\@outputbox
			\setbox\@leftcolumn\vbox to\ht\@outputbox{
				\unvbox\@leftcolumn}%
		\else
			\setbox\@outputbox\vbox to\ht\@leftcolumn{
				\unvbox\@outputbox}%
		\fi
	\fi\fi\fi
	\setbox\@outputbox\vbox{\hbox to\textwidth{\hbox to\columnwidth
		{\box\@leftcolumn \hss}\hfil \vrule width\columnseprule\hfil
		\hbox to\columnwidth{\box\@outputbox \hss}}}
	\@combinedblfloats
	\@outputpage \begingroup \@dblfloatplacement \@startdblcolumn
	\@whilesw\if@fcolmade \fi{\@outputpage\@startdblcolumn}%
	\endgroup
	\fi}

\let\opt@outputdblcol\@outputdblcol
\chardef\opt@boxa\z@
\chardef\opt@boxb\@ne
\chardef\opt@boxc\tw@
\def\opt@magicpenalty{1234}
\def\opt@balanceoutputdblcol{\let\next\opt@ibalanceoutputdblcol
	\if@firstcolumn \let\next\opt@outputdblcol
	\else	\ifopt@floatexist \opt@warning \let\next\opt@outputdblcol
		\else\ifx\@deferlist\@empty\else
			\opt@warning \let\next\opt@outputdblcol\fi\fi\fi
	\next}
\def\opt@ibalanceoutputdblcol{%
	\setbox\@leftcolumn\vbox{\unvbox\@leftcolumn
		\ifnum\lastpenalty=\opt@magicpenalty\relax\else
		\@tempcnta10\relax\@whilenum\@tempcnta>0\do{%
			\unskip\unskip\unkern\unpenalty
			\advance\@tempcnta\m@ne}\fi}
	\advance\opt@baselineskip-\dp\@leftcolumn
	\ifdim\dp\@leftcolumn=\z@ \ifdim\opt@baselineskip=\baselineskip
		\@tempdima\ht\@leftcolumn \advance\@tempdima-\topskip
		\divide\@tempdima\baselineskip
		\@tempcnta\@tempdima \@tempdima\@tempcnta\baselineskip
		\advance\@tempdima\topskip
		\advance\@tempdima-\ht\@leftcolumn
		\advance\opt@baselineskip\@tempdima \fi\fi
	\advance\opt@baselineskip-\topskip
	\setbox\@outputbox\vbox{\unvbox\@outputbox}
	\ifdim\ht\@outputbox=\topskip \ifdim\dp\@outputbox=\z@
	\setbox\opt@boxa\vbox{\unvcopy\@outputbox\unskip
		\global\setbox\opt@boxb\lastbox
		\global\dimen@\lastskip}
	\ifvoid\opt@boxb\else\ifdim\ht\opt@boxb=\z@
		\ifdim\dp\opt@boxb=\z@\ifdim\dimen@=\topskip
		\@firstcolumntrue\fi\fi\fi\fi\fi\fi
	\setbox\opt@boxa\copy\@outputbox
	\setbox\@outputbox\vbox{\unvcopy\@leftcolumn
		\if@firstcolumn\else
		\vskip\opt@baselineskip
		\penalty\interlinepenalty\unvbox\@outputbox\fi}
	\@tempdima\ht\@outputbox \advance\@tempdima\topskip
	\divide\@tempdima\tw@ \advance\@tempdima100sp
	\splittopskip\topskip \splitmaxdepth\@maxdepth
	\ifdim\bib@adjustheight<\@M pt
		\opt@split\@outputbox\opt@boxb\@tempdima
		\ifdim\ht\opt@boxb<\bib@adjustheight
			\opt@split\@leftcolumn\opt@boxc\bib@adjustheight
			\opt@split\opt@boxc\opt@boxb\@tempdima
			\if@firstcolumn
				\opt@adjust\opt@boxc{\unvbox\@leftcolumn}
			\else\opt@adjust\opt@boxc{\ifvoid\@leftcolumn\else
				\unvbox\@leftcolumn\vskip\opt@baselineskip\fi
				\unvbox\opt@boxa}\fi\fi
	\else
		\advance\bib@adjustheight-\@M pt
		\opt@split\opt@boxa\opt@boxc\bib@adjustheight
		\setbox\@outputbox\vbox{\unvbox\@leftcolumn
			\vskip\opt@baselineskip\unvbox\opt@boxc}
		\opt@split\@outputbox\opt@boxb\@tempdima
		\opt@adjust\@outputbox{\unvbox\opt@boxa}
	\fi
	\if@leftfootnoteexist
		\setbox\opt@boxb\vbox to\@colht{\box\opt@boxb\vfill
			\footnoterule\box\@leftcolumnfootnote}\fi
	\if@rightfootnoteexist
		\setbox\@outputbox\vbox to\@colht{\box\@outputbox\vfill
			\footnoterule\box\@rightcolumnfootnote}\fi
	\ifdim\ht\@outputbox>\ht\opt@boxb
		\setbox\opt@boxb\vbox to\ht\@outputbox{\unvbox\opt@boxb}
	\else
		\setbox\@outputbox\vbox to\ht\opt@boxb{\unvbox\@outputbox}
	\fi
	\setbox\@outputbox\vbox{\hbox to\textwidth{\hbox to\columnwidth
		{\box\opt@boxb \hss}\hfil \vrule width\columnseprule\hfil
		\hbox to\columnwidth{\box\@outputbox \hss}}}
	\global\@firstcolumntrue \@combinedblfloats
	\@outputpage \begingroup \@dblfloatplacement \@startdblcolumn
	\@whilesw\if@fcolmade \fi{\@outputpage\@startdblcolumn}\endgroup}

\if@LaTeX@eN							% 2.00(3)>>
\def\opt@warning{\ClassWarning{ipsjpapers}{%
	Single column floats still remain on biography\MessageBreak
	processing.\MessageBreak
	Do \string\verbbiography\space for manual balcing}}
\else
\def\opt@warning{\@warning{Single column floats still remain on biography
	processing.^^J\space\space\space\space\space
	\space\space\space\space\space\space\space\space\space\space
	Do \string\verbbiography\space for manual balancing}}
\fi								% 2.00(3)<<
\def\opt@split#1#2#3{\setbox#2\vsplit#1to#3\setbox#2\vbox{\unvbox#2}}
\def\opt@adjust#1#2{\@tempdima\ht#1 \advance\@tempdima-\topskip
	\@tempdimb\@tempdima \divide\@tempdima\baselineskip
	\@tempcnta\@tempdima \@tempdima\@tempcnta\baselineskip
	\advance\@tempdima-\@tempdimb
	\ifdim\@tempdima<\z@ \advance\@tempdima\baselineskip \fi
	\advance\@tempdima\baselineskip \advance\@tempdima-\dp#1 
	\advance\@tempdima-\topskip
	\setbox\@outputbox\vbox{\ifvoid#1\else\unvbox#1\vskip\@tempdima\fi#2}}

\let\latex@outputpage\@outputpage
% \opt@finalgap:	vertical space above the \hrule at the end of paper.
% \opt@finallinewidth:	width of the \hrule at the end of paper.
\@tempdima2\baselineskip		% This might be changed
\edef\opt@finalgap{\the\@tempdima}
\def\opt@finallinewidth{220\@Q}		% This might be changed
\ifDS@techrep \let\opt@finallinewidth\z@ \fi			% 1.05(2)

\def\@outputpage{\if@finalpageoutput
	\setbox\@outputbox\vbox{\unvbox\@outputbox}
	\@tempdima\dp\@outputbox
	\@tempdimb\ht\@outputbox \advance\@tempdimb\opt@finalgap\relax
	\ifdim\@tempdimb>\textheight\else
	\setbox\@outputbox\vbox to\textheight{
		\unvbox\@outputbox\vskip-\@tempdima
		\nointerlineskip\vbox to\z@{\vskip\opt@finalgap
			\hbox to\textwidth{\hss
			\vrule height0.4pt width\opt@finallinewidth\hss}
		\vss}\vfil}\fi\fi
	\ifASCII\if@LaTeX@e\ifipsj@nonjp\else
		\@@topmargin\topmargin \fi\fi\fi	    % 2.00(13),2.12(1b)
	\latex@outputpage}

%%%%%% Biography %%%%%%

% If you want to control the allocation of biographies manually, do
% \verbbiography and insert \adjust{<vertical materials>} just before
% \member (or its relatives).  For example;
% 	\verbbiography
%	\begin{biography}
%	\member{...} ...
%	\adjust{\protect\newpage}
%	\member{...} ...
%	\adjust{\protect\vspace{1.3cm}}
%	\member{...} ...
%	\end{biography}
% will make page break just after the biography of the 1st author, and will
% insert a vertical space of 1.3cm just after that of the 2nd.  It is
% strongly recommended to \protect any control sequence in the argument of
% \adjust.

% \received and \accepted define the dates of receipt/acceptance.
% They are put at the end of manuscript (just before biographies) by
% \ra@putrcvacc.

% 2.12(1c)>>
% \def\ra@nengo is moved to the tail				% 2.12(1c)
\ifDS@english
\def\received#1#2#3{\def\ra@received{\ra@date{#1}{#2}{#3}}\ignorespaces}
\def\accepted#1#2#3{\def\ra@accepted{\ra@date{#1}{#2}{#3}}\ignorespaces}
								% 2.07(5)
% \rereceived is moved below					% 2.12(5)
\def\presented#1#2#3{\def\ra@presented{\ra@date{#1}{#2}{#3}}\ignorespaces}
								% 2.07(7)
\def\ra@received{??? ??, ????}
\def\ra@accepted{??? ??, ????}
\def\ra@presented{??? ??, ????}					% 2.07(7)
\def\ipsj@TOD@editor{(Editor in Charge:\quad{\it\ipsj@TOD@ename\/})}
								% 2.07(6)
								% 2.12(6)

\ifDS@TBIO							% 2.11(4)>>
\def\ipsj@TOD@editor{(Communicated by\quad{\it\ipsj@TOD@ename\/})}% 2.12(6)
\fi								% 2.11(4)<<
\else
\def\received#1#2#3{\def\ra@received{#1&#2&#3&}\ignorespaces}
\def\accepted#1#2#3{\def\ra@accepted{#1&#2&#3&}\ignorespaces}
								% 2.07(5)
% \rereceived is moved below					% 2.12(5)
\def\presented#1#2#3{\def\ra@presented{#1&#2&#3&}\ignorespaces}	% 2.07(7)
\def\ra@received{?&?&?&}
\def\ra@accepted{?&?&?&}
\def\ra@presented{?&?&?&}					% 2.07(7)
\def\ipsj@TOD@editor{\ipsj@j@lp\ipsj@j@edinch
	\quad\ipsj@TOD@ename\ipsj@j@rp}				% 2.07(6)
								% 2.08(2)
								% 2.12(6)
\fi

\ifDS@printer							% 2.12(4e)>>
\def\ReleasedToOnline{\@tempswafalse				% 3.00(10)>>
	\@ifstar{\@tempswatrue\ipsj@reltool}{\ipsj@reltool}}
\def\ipsj@reltool#1#2#3{
	\ifDS@online \@tempswatrue \fi
	\ifipsj@etrans \@tempswatrue \fi
	\if@tempswa
		\ifDS@english \def\ra@released{\ra@date{#1}{#2}{#3}}
		\else \def\ra@released{#1&#2&#3&}
	\fi\fi}							% 3.00(10)<<
\fi								% 2.12(4e)<<
% aliasing of \received etc. is moved to the tail.

% 2.12(1c)<<

\let\ra@elt\relax						% 2.12(5)>>
\def\rereceived#1#2#3{\ifx\ra@rereceived\undefined
		\def\ra@rereceived{\ra@elt{}{#1}{#2}{#3}}\def\ra@rerecnum{1}%
	\else
		\@tempcnta\ra@rerecnum \advance\@tempcnta\@ne
		\edef\ra@rerecnum{\number\@tempcnta}%
		\edef\ra@rereceived{\ra@rereceived
			\ra@elt{(\ra@rerecnum)}{#1}{#2}{#3}}%
	\fi \ignorespaces}					% 2.12(5)<<

\def\edInCharge#1{\def\ipsj@TOD@ename{#1}\ignorespaces}		% 2.07(6)

\def\ra@putrcvacc{\rightline{\vtop{\normalsize\tabskip\z@
	\ifDS@english
	    \llap{(Received \ra@received)}
	    \def\ra@elt##1##2##3##4{%				% 2.12(5)>>
		\llap{(Revised##1 \ra@date{##2}{##3}{##4})}}
	    \ifx\ra@rereceived\undefined \else \ra@rereceived \fi
								% 2.12(5)<<    
	    \llap{(Accepted \ra@accepted)}
	    \ifx\ra@released\undefined\else			% 2.12(4e)
		\llap{(Released \ra@released)}\fi		% 2.12(4e)
	    \hbox{}
	\else							% 2.12(1c)>>
	    \def\ra@elt##1##2##3##4{##2&##3&##4&\ipsj@j@rerec##1)\cr}%
								% 2.12(5)
	    \halign{(\ra@nengo\hskip\jasciikanjiskip
		\hfil##\hfil\hskip\jasciikanjiskip \ipsj@j@year
			\hskip\jasciikanjiskip&
		\hfil##\hfil\hskip\jasciikanjiskip \ipsj@j@month
			\hskip\jasciikanjiskip&
		\hfil##\hfil\hskip\jasciikanjiskip \ipsj@j@day
			&##\hfil\cr				% 2.07(5)>>
		\ra@received \ipsj@j@received)\cr
		\ifx\ra@rereceived\undefined \else \ra@rereceived \fi
								% 2.12(5)
		\ra@accepted \ipsj@j@accepted)\cr
		\ifx\ra@released\undefined\else			% 3.00(10)
			\ra@released \ipsj@j@released)\cr \fi	% 3.00(10)
		\multispan3\cr}\fi}%
								% 2.07(5)<<
								% 2.12(1c)<<
	\hskip\@mojihaba}
	\nobreak\vskip-2\baselineskip\prevdepth\z@\hbox{}
	\ifDS@printer \ifDS@english				% 2.12(4d)>>
		\ifipsj@trans
			\ifDS@online \noindent \ipsj@refer@trans \par \fi
		\else
			\ifDS@online\else \noindent \ipsj@refer@online \par \fi
	\fi \fi \fi						% 2.12(4d)<<
	\ifipsj@recommendation\else				% 2.04(2)
		\ifx\ipsj@TOD@ename\undefined\else		% 2.07(6)>>
			\nobreak\vskip\baselineskip
			\hbox{\ipsj@TOD@editor}\fi		% 2.07(6)<<
		\vskip\baselineskip\penalty\opt@magicpenalty\fi}% 2.04(2)
\def\ra@date#1#2#3{\ifcase#2\or
	January\or February\or March\or April\or May\or June\or
	July\or August\or September\or October\or November\or December\fi
	\space#3, #1}
\def\ra@jdate#1#2#3{#1&#2&#3&}
\def\ra@putpresented#1&#2&#3&{\rightline{%			% 2.12(1c)>>
	\ipsj@j@lp\ra@nengo\hskip\jasciikanjiskip		% 2.07(7)>>
								% 2.13(3)
	#1\hskip\jasciikanjiskip \ipsj@j@year \hskip\jasciikanjiskip
	#2\hskip\jasciikanjiskip \ipsj@j@month \hskip\jasciikanjiskip
	#3\hskip\jasciikanjiskip \ipsj@j@day\ipsj@j@presented\ipsj@j@rp}}
								% 3.01(3b)
								% 2.07(7)<<
								% 2.13(3)
								% 2.12(1c)<<

% 2.12(4d)>>
\def\ipsj@space{\hskip\z@ plus\fontdimen\thr@@\font \penalty5000\relax}
\ifDS@landscape							% 3.00(8b,g)>>
\def\ipsj@refer@trans{%
	(Original version of this article can be found in the IPSJ
	Transactions on
	\csname ipsj@sig@\ipsj@sig@code @e\endcsname,
	Vol.\ipsj@space \number\c@volume,
	No.\ipsj@space \number\c@number,
	pp.\ipsj@space
	\ipsj@thelastpage\c@volpageoffset\ipsj@last@page.)}	% 3.00(11)
\else								% 3.00(8b,g)<<
\def\ipsj@refer@trans{%
	(Paper version of this article can be found in the IPSJ Transactions on
	\csname ipsj@sig@\ipsj@sig@code @e\endcsname,
	Vol.\ipsj@space\number\c@volume,
	No.\ipsj@space SIG\ipsj@sig@numa\ipsj@space
	(\ipsj@sig@code\ipsj@space\ipsj@sig@numb),
	pp.\ipsj@space
	\ipsj@thelastpage\c@volpageoffset\ipsj@last@page.)}	% 3.00(11)
\fi
\def\ipsj@refer@online{%
	(\ifDS@landscape Original\else Online\fi\space		% 3.00(8g)>>
	version of this article can be found in the
	\ipsj@online@journal\space				% 3.00(8g)<<
	Vol.\ipsj@space\ipsj@olh@vol,
	pp.\ipsj@space
	\ipsj@thelastpage\ipsj@olh@page\ipsj@olh@lastpage.)}	% 3.00(11)
\def\ipsj@thelastpage#1#2{\begingroup
	\@tempcnta#1\relax \edef\@tempb{\number#1}%		% 3.00(11)
	\ifDS@online \@tempcntb\ipsj@olh@page
	\else \@tempcntb\c@volpageoffset\fi
	\ifx#2\undefined
		\ifx\ipsj@lastpage\undefined \def\@tempa{0}%	% 3.00(11)
		\else \advance\@tempcntb-\ipsj@lastpage
			\advance\@tempcnta-\@tempcntb
			\def\@tempa{\number\@tempcnta}%
		\fi
	\else \def\@tempa{#2}%
	\fi
							% 3.00(11),3.01(4)>>
	\ifnum\@tempa=\z@ \def\@tempc{\ipsj@thepage\@tempb--\penalty5000???}%
	\else\ifnum\@tempa=\@tempb \def\@tempc{\ipsj@thepage\@tempa}\relax
	\else \def\@tempc{\ipsj@thepage\@tempb--\penalty5000\relax
		\ipsj@thepage\@tempa}%
	\fi\fi
	\@tempc \endgroup}				% 3.00(11),3.01(4)<<
% 2.12(4d)<<
\def\ipsj@thepage#1{{\c@page#1\relax \xdef\ipsj@thep{\thepage}}\ipsj@thep}
								% 3.01(4)
\newbox\bio@picbox
% The following define the height and width of a picture for biography, and
% the indentation of the first 6 lines.  They might be changed.
\def\bio@picheight{100\@Q}
\def\bio@picwidth{80\@Q}

\newif\ifbio@showpicbox
\bio@showpicboxtrue
% Do \bio@showpicboxfalse if you don't want to put a frame box at the
% position for picture.
\ifDS@english
\def\bio@lineheight{9\@Q}
\def\bio@piclines{7}
\def\bio@indent{91\@Q}
\def\bio@hangafter{7}
\else
\def\bio@lineheight{8\@Q}
\def\bio@piclines{6}
\def\bio@indent{96\@Q}
\def\bio@hangafter{5}
\fi

% \verbbiography forces verbatim output of biography (i.e. not ballanced).
\newif\ifbio@verb \bio@verbfalse
\def\verbbiography{\global\bio@verbtrue}
% The environment biography saves texts for biographies into the list of
% \inserts (for floats).
\def\biography{\ifipsj@recommendation\else\par\ra@putrcvacc\fi	% 2.04(2)
	\def\member{\bio@member{}{\ipsj@j@member}}%		%2.12(3a)(1c)>>
	\def\nomember{\bio@member{}{}}%
	\def\stmember{\bio@member{}{\ipsj@j@stmember}}%
	\def\xmember{\bio@member{}}%
	\ifDS@printer
		\def\Kmember{\bio@Kmember{\ipsj@j@member}}%
		\def\Knomember{\bio@Kmember{}}%
		\def\Kstmember{\bio@Kmember{\ipsj@j@stmember}}%
		\let\Kxmember\bio@Kmember
	\fi							%2.12(3a)(1c)<<
	\ifDS@english \let\author\nomember			% 2.12(3d)>>
		\ifDS@printer \let\Kauthor\Knomember \fi
	\fi							% 2.12(3d)<<
	\let\adjust\bio@adjust
	\ifbio@showpicbox
	\setbox\bio@picbox\hbox{\hbox to\z@{\vrule\hskip-0.4pt%
		\vtop to\bio@picheight{\vskip\z@\hrule width\bio@picwidth
			\vfil\hrule}\hskip-0.4pt\vrule\hss}}%
	\else
	\setbox\bio@picbox\hbox{}%
	\fi
	\@tempdima\bio@piclines\baselineskip \advance\@tempdima\bio@lineheight
	\dp\bio@picbox\@tempdima
	\let\bio@egroup\relax\let\+\ignorespaces\let\@elt\relax
	\def\bio@list{}\global\bio@th\z@}

\def\bio@Kmember#1#2#3{\bio@member{#3}{#1}{#2}}			% 2.12(3a)
\def\bio@member#1#2#3{\bio@egroup\let\bio@egroup\bio@@egroup	% 2.12(3b)>>
	\@next\@currbox\@freelist\relax
		{\@latexerr{Too many unprocessed floats and biographies}\@ehb}%
	\def\@tempa{#3}\def\@tempb{#1}%
	\global\setbox\@currbox\hbox\bgroup
	    \@tempswatrue
	    \ifx\@tempb\@empty
		\ifDS@printer \@tempswafalse
		\else \raise\bio@lineheight\copy\bio@picbox
		\fi
	    \else
		\setbox\@tempboxa\hbox to\z@{\vtop{\vskip\z@
		    \hbox{\includegraphics
			[width=\bio@picwidth,height=\bio@picheight]{#1.eps}}}%
		    \hss}%					% 2.13(2)
		\dp\@tempboxa\dp\bio@picbox
		\raise\bio@lineheight\box\@tempboxa
	    \fi							% 2.12(3b)<<
	    \vtop\bgroup
		\let\par\\
		\if@tempswa \hangindent\bio@indent\hangafter-\bio@hangafter \fi
		\ifDS@english {\bf #3\ }%
		\else {\bf\bio@putauthor#3\+ \@nil}%
			\def\@tempb{#2}\ifx\@tempb\@empty\else	% 2.12(3c)
			\ipsj@j@lp#2\ipsj@j@rp\fi{\@@par}\fi	% 2.12(3c)(1c)
	\ignorespaces}

% Author name format:
%	S + G < 5 -> fill space between S/G (like SS__G)
%	otherwise -> 1 KC space between S/G (like SS_GG)
\def\bio@putauthor#1 #2\@nil{%
	\ifipsj@nonjp#1 #2\else
	\setbox\@tempboxa\hbox{\jintercharskip\z@#1#2}%
	\setbox\mkt@boxa\hbox{\jintercharskip1cm#1#2}%
	\ifdim\wd\@tempboxa=\wd\mkt@boxa #1 #2\else
	\def\@tempa{#2}\ifx\@tempa\empty
		{\def\+{}\ipsj@warning{Author name #1 doesn't have a space}}%
								% 2.00(3)
		#1\else
	\@tempdima\@mojihaba
	\mkt@getnamewidth\mkt@sname{#1}\mkt@getnamewidth\mkt@gname{#2}%
	\advance\mkt@sname\mkt@gname
	\ifnum\mkt@sname<5\leavevmode\hbox to5\@mojihaba{#1\hfil#2}\else
		#1#2\fi\fi\fi\fi}
\def\bio@@egroup{\@@par\hbox{}\egroup\egroup\@tempdima\dp\@currbox
	\ifdim\@tempdima>\textheight
		\ipsj@warning{Biography of \@tempa\space is too long}% 2.00(3)
		\bio@verbtrue \fi
	\advance\@tempdima\baselineskip\global\advance\bio@th\@tempdima
	\global\dimen\@currbox\@tempdima \global\count\@currbox\z@
	{\let\protect\bio@protect\xdef\bio@list{\bio@list\@elt\@currbox}}}
\def\bio@adjust#1{\bio@egroup\let\bio@egroup\relax
	\ifbio@verb {\let\protect\bio@protect\xdef\bio@list{\bio@list#1}\fi}}
\def\bio@protect{\noexpand\protect\noexpand}

\def\endbiography{\bio@egroup \@tempswatrue
	\ifx\@botlist\@empty\ifx\@deferlist\@empty \@tempswafalse \fi\fi
	\ifbio@verb\else\if@tempswa \bio@verbtrue \opt@warning\fi\fi
	\ifbio@verb{\let\@elt\bio@putelt \let\protect\relax \bio@list}%
	\else\bio@putbio\fi}

\newdimen\bio@colht \newdimen\bio@splitheight
\newdimen\bio@maxgap \newdimen\bio@lastgap
\newdimen\bio@th \newdimen\bio@lhA \newdimen\bio@hA \newdimen\bio@hB
\newdimen\bio@lh \newdimen\bio@rh
\newdimen\bio@tempdim
\newif\ifbio@awful
\newinsert\bio@pbox \count\bio@pbox\@ne

\def\bio@putbio{\let\@elt\relax \let\bio@vskip\relax \allowbreak
	\bio@colht\@colht \advance\bio@colht-\topskip
	\advance\bio@colht\baselineskip
	\@tempdima\bio@colht \advance\@tempdima-\@colroom
	\advance\@tempdima\pagetotal
	\if@firstcolumn
	    \ifdim\@tempdima>\bio@th
		\global\@lastpagebalancingtrue
		{\let\@elt\bio@putelt\bio@list}\vskip-\baselineskip
	    \else
		\ifdim\pagetotal=\z@\else
			\dimen\bio@pbox\@tempdima \advance\bio@th\@tempdima
			\edef\bio@list{\@elt\bio@pbox\bio@list}\fi
		\bio@splitheight\bio@colht \bio@splitpage
		\bio@splitheight.5\bio@th
		\let\bio@awfulput\bio@specialawfulput
		\bio@trybalance\fi
	\else \advance\@tempdima\bio@th
	    \ifdim\@tempdima<\bio@colht
		\global\@lastpagebalancingtrue
		\ifdim\pagetotal=\z@ \global\opt@baselineskip2\baselineskip\fi
		{\let\@elt\bio@putelt\bio@list}\vskip-\baselineskip
	    \else
		\let\bio@awfulput\bio@normalawfulput
		\bio@splitheight\z@ \advance\@tempdima-\bio@th
		\advance\bio@colht-\@tempdima \bio@splitpage
		{\let\@elt\bio@putelt\bio@list}\bio@nextpage
		\bio@trybalance\fi
	\fi}

\def\bio@trybalance{\bio@split 
	\let\bio@right\bio@rightA \let\bio@left\bio@leftA
		\def\bio@rightx{}\def\bio@leftx{}%
		\let\bio@hX\bio@hA \bio@balance
		\let\bio@rightxA\bio@rightx \let\bio@leftxA\bio@leftx
	\ifbio@awful\@tempcnta\tw@\else\@tempcnta\z@\fi
	\let\bio@right\bio@rightB \let\bio@left\bio@leftB
		\def\bio@rightx{}\def\bio@leftx{}%
		\let\bio@hX\bio@hB \bio@balance
		\let\bio@rightxB\bio@rightx \let\bio@leftxB\bio@leftx
	\ifbio@awful\advance\@tempcnta\@ne\fi
	\ifcase\@tempcnta
		\ifdim\bio@hA<\bio@hB \bio@balanceput\bio@leftxA\bio@rightxA
		\else \bio@balanceput\bio@leftxB\bio@rightxB\fi
	\or \bio@balanceput\bio@leftxA\bio@rightxA
	\or \bio@balanceput\bio@leftxB\bio@rightxB
	\else \bio@awfulput\fi
	\ifx\bio@deferred\empty\vskip-\baselineskip\let\next\relax
	\else\bio@nextpage\let\next\bio@trybalance\fi\next}

\def\bio@split{\def\bio@leftA{}\def\bio@leftB{}%
	\def\bio@rightA{}\def\bio@rightB{}%
	\bio@lhA\z@\@tempdimb\z@ \bio@isplit}
\def\bio@isplit{\ifx\bio@list\empty\let\next\relax\else
	\bio@car\@tempdima\@currbox\bio@list
	\bio@lhA\@tempdimb\advance\@tempdimb\@tempdima
	\edef\bio@leftB{\bio@leftB\@elt\@currbox}%
	\ifdim\@tempdimb>\bio@splitheight
		\edef\bio@rightA{\@elt\@currbox\bio@list}%
		\let\bio@rightB\bio@list \let\next\relax
	\else\edef\bio@leftA{\bio@leftA\@elt\@currbox}\let\next\bio@isplit
	\fi\fi\next}

\def\bio@balanceput#1#2{{\let\@elt\bio@putelt\let\bio@vskip\bio@xvskip
	#1\bio@newpage#2}}
\def\bio@normalawfulput{{\let\bio@vskip\@gobble \@tempcnta\z@ 
	\@tempdima\z@ \bio@addheight\@tempdima\bio@leftxB
	\ifdim\@tempdima<\bio@colht
		\@tempdima\z@ \bio@addheight\@tempdima\bio@rightxB
		\ifdim\@tempdima<\bio@colht \@tempcnta\@ne
			\let\@elt\bio@putelt
			\bio@leftxB\bio@newpage\bio@rightxB\fi\fi
	\ifnum\@tempcnta=\z@
		\@tempdima\z@ \bio@addheight\@tempdima\bio@leftxA
		\ifdim\@tempdima<\bio@colht
			\@tempdima\z@\bio@addheight\@tempdima\bio@rightxA
			\ifdim\@tempdima<\bio@colht \@tempcnta\@ne
				\let\@elt\bio@putelt
				\bio@leftxA\bio@newpage\bio@rightxA\fi\fi\fi
% The following may be redundant.
	\ifnum\@tempcnta=\z@
		\let\@elt\bio@putelt\bio@listsave\fi}}
\def\bio@specialawfulput{{\advance\bio@th-\dimen\bio@pbox
	\ifdim\bio@th<\bio@colht\bio@newpage
	\let\bio@newpage\relax\fi\bio@normalawfulput}}

\def\bio@putelt#1{\ifnum\count#1>\z@\else\box#1
	\nobreak\vskip-2\baselineskip\prevdepth\z@\hbox{}
	\vskip\baselineskip\fi}
\def\bio@xvskip#1{\vskip#1\prevdepth\z@}
\def\bio@newpage{\vskip-\baselineskip\newpage}

\def\bio@nextpage{\bio@newpage \let\bio@list\bio@deferred
	\bio@th\z@ \bio@addheight\bio@th\bio@list
	\bio@colht\@colht \advance\bio@colht-\topskip
	\advance\bio@colht\baselineskip
	\bio@splitheight\bio@colht \bio@splitpage
	\bio@splitheight.5\bio@th
	\let\bio@awfulput\bio@normalawfulput}
\def\bio@splitpage{\let\bio@listsave\bio@list \bio@split
	\@tempdima\bio@th \advance\@tempdima-\bio@lhA
	\ifdim\@tempdima>\bio@colht
		\let\bio@leftAsave\bio@leftA \bio@th\bio@lhA
		\let\bio@list\bio@rightA \bio@splitheight\bio@colht
		\bio@split \edef\bio@list{\bio@leftAsave\bio@leftA}%
		\advance\bio@th\bio@lhA
		\let\bio@deferred\bio@rightA
	\else\def\bio@deferred{}\let\bio@list\bio@listsave\fi}

% \bio@tolerablegap:	maximum tolerable gap between adjacent bio's.
% \bio@tolerablestretch:maximum stretch of a column.

\@tempdima10\baselineskip		% This might be changed
\edef\bio@tolerablegap{\the\@tempdima}
\@tempdima15\baselineskip
\edef\bio@tolerablelastgap{\the\@tempdima}
\def\bio@tolerablestretch{2}		% This might be changed

\def\bio@balance{\let\@elt\relax \edef\bio@bstack{%
		\@elt{{\bio@left}{\bio@right}{}{}{0pt}}}
	\bio@xbalance}
\def\bio@xbalance{%
	\expandafter\bio@popstack\bio@bstack\@nil
	\let\bio@nextA\bio@xbalance \@tempdima\z@
	\ifx\bio@left\empty \ifx\bio@right\empty
		\let\bio@nextA\bio@balanceend
	\else
		\bio@addheight\@tempdima\bio@right
		\edef\bio@leftx{\bio@leftx\bio@vskip{\the\@tempdima}}%
		\advance\bio@hX\@tempdima
		\edef\bio@rightx{\bio@rightx\bio@right}\def\bio@right{}%
		\bio@pushstack \fi\else
	\ifx\bio@right\empty
		\bio@addheight\@tempdima\bio@left
		\edef\bio@rightx{\bio@rightx\bio@vskip{\the\@tempdima}}%
		\advance\bio@hX\@tempdima
		\edef\bio@leftx{\bio@leftx\bio@left}\def\bio@left{}%
		\bio@pushstack \else
	\bio@car\@tempdima\bio@leftbox\bio@left
	\bio@car\@tempdimb\bio@rightbox\bio@right
	\edef\bio@leftx{\bio@leftx\@elt\bio@leftbox}%
	\edef\bio@rightx{\bio@rightx\@elt\bio@rightbox}%
	\ifdim\@tempdima>\@tempdimb
		\advance\bio@hX\@tempdima
		\let\bio@da\@tempdima\let\bio@db\@tempdimb
		\bio@ibalance\bio@left\bio@right\bio@leftx\bio@rightx
	\else	\advance\bio@hX\@tempdimb
		\let\bio@da\@tempdimb\let\bio@db\@tempdima
		\bio@ibalance\bio@right\bio@left\bio@rightx\bio@leftx\fi
	\fi\fi\bio@nextA}
\def\bio@ibalance#1#2#3#4{\let\bio@nextB\relax
	\ifx#2\empty 
		\advance\bio@da-\bio@db
		\edef#4{#4\bio@vskip{\the\bio@da}}\bio@pushstack\else
	\bio@car\bio@tempdim\@currbox#2 \advance\bio@db\bio@tempdim
	\ifdim\bio@da<\bio@db
		\advance\bio@db-\bio@da
		\let\@tempa#3\edef#3{#3\bio@vskip{\the\bio@db}}%
		\let\@tempb#4\edef#4{#4\@elt\@currbox}%
		\advance\bio@hX\bio@db \bio@pushstack
		\advance\bio@hX-\bio@db
		\edef#2{\@elt\@currbox#2}%
		\advance\bio@tempdim-\bio@db
		\let#3\@tempa \edef#4{\@tempb\bio@vskip{\the\bio@tempdim}}%
		\bio@pushstack
	\else \edef#4{#4\@elt\@currbox}\def\bio@nextB{\bio@ibalance#1#2#3#4}%
	\fi\fi\bio@nextB}
\def\bio@balanceend{\bio@awfulfalse \def\bio@bstack{}%
	\bio@maxgap\z@ \bio@lastgap\z@
	\bio@checkgap\bio@leftx \bio@checkgap\bio@rightx
	\ifdim\bio@maxgap>\bio@tolerablegap\relax\bio@awfultrue\fi
	\ifdim\bio@lastgap>\bio@tolerablelastgap\relax\bio@awfultrue\fi
	\ifdim\bio@hX>\bio@tolerablestretch\bio@splitheight\bio@awfultrue\fi
	\ifdim\bio@hX>\bio@colht\bio@awfultrue\fi}
\def\bio@checkgap#1{{\@tempdima\z@ \@tempdimb\z@ \bio@tempdim\z@
	\let\@elt\bio@cgelt \let\bio@vskip\bio@cgvskip #1\relax
	\ifdim\@tempdima>\bio@maxgap \global\bio@maxgap\@tempdima \fi
	\ifdim\bio@tempdim>\bio@lastgap \global\bio@lastgap\bio@tempdim \fi}}
\def\bio@cgvskip#1{\advance\bio@tempdim#1\relax
	\ifdim\bio@tempdim>\@tempdimb \@tempdimb\bio@tempdim\fi}
\def\bio@cgelt#1{\@tempdima\@tempdimb \bio@tempdim\z@}
\def\bio@popstack\@elt#1#2\@nil{\edef\bio@bstack{#2}\bio@ipopstack#1}
\def\bio@ipopstack#1#2#3#4#5{\def\bio@left{#1}\def\bio@right{#2}%
	\def\bio@leftx{#3}\def\bio@rightx{#4}\bio@hX#5\relax}
\def\bio@pushstack{\def\bio@bstackx{}%
	\expandafter\bio@ipushstack\bio@bstack\@elt\@nil}
\def\bio@ipushstack\@elt#1{\def\@tempc{#1}%
	\ifx\@tempc\@nnil \edef\bio@bstack{\bio@bstackx\bio@stackelt}%
		\let\bio@nextC\relax \else
	\bio@iipushstack#1\fi\bio@nextC}
\def\bio@iipushstack#1#2#3#4#5{\ifdim#5>\bio@hX
	\edef\bio@bstackx{\bio@bstackx\bio@stackelt
		\@elt{{#1}{#2}{#3}{#4}{#5}}}%
		\let\bio@nextC\bio@pushstackend\else
	\edef\bio@bstackx{\bio@bstackx
		\@elt{{#1}{#2}{#3}{#4}{#5}}}%
		\let\bio@nextC\bio@ipushstack\fi}
\def\bio@pushstackend#1\@elt\@nil{\edef\bio@bstack{\bio@bstackx#1}}
\def\bio@stackelt{\@elt{{\bio@left}{\bio@right}{\bio@leftx}{\bio@rightx}%
	{\the\bio@hX}}}
\def\bio@addheight#1#2{\def\@elt##1{\advance#1\dimen##1}#2\let\@elt\relax}
\def\bio@car#1#2#3{\expandafter\bio@icar#3\@nil#1#2#3}
\def\bio@icar\@elt#1#2\@nil#3#4#5{#3=\dimen#1\relax\def#4{#1}\def#5{#2}}


%%%%%% Miscellaneous %%%%%%

\flushbottom

\ifDS@english
\hbadness9999 \tolerance9999
\else
\hbadness5000 \tolerance5000
\pretolerance\m@ne
\fi

\input{ipsjcommon.sty}

\twocolumn

\endinput
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ipsjsort-e.bst	Thu Mar 10 18:47:54 2011 +0900
@@ -0,0 +1,1 @@
+% ipsjsort-e.bst 15-Jun-07 by Hiroshi Nakashima (ver 2.12)
% ipsjsort.bst 30-Jan-02 by Hiroshi Nakashima (ver 2.00)
% ipsjsort.bst 28-Dec-93 by Hiroshi Nakashima (ver 1.00)
% jssst.bst tomura@etl.go.jp (Satoru Tomura)
% BibTeX standard bibliography style `jplain'
	% version 0.10 for JBibTeX versions 0.10 or later, JLaTeX version 2.09.
	% by Shouichi Matsui, matsui@denken.junet

ENTRY
  { address
    author
    booktitle
    chapter
    edition
    editor
    howpublished
    institution
    journal
    key
    month
    note
    number
    organization
    pages
    publisher
    school
    series
    title
    type
    volume
    year
  }
  {}
  { label }

INTEGERS { output.state before.all mid.sentence after.sentence after.block }

INTEGERS { before.year }

FUNCTION {init.state.consts}
{ #0 'before.all :=
  #1 'mid.sentence :=
  #2 'after.sentence :=
  #3 'after.block :=
  #4 'before.year :=					% 1.00(1)
}

STRINGS { s t }

FUNCTION {output.nonnull}
{ 's :=
  output.state mid.sentence =
    { ", " * write$ }
    { output.state after.block =
	{ add.period$ write$
	  newline$
	  "\newblock " write$
	}
	{ output.state before.all =
	    'write$
	    { output.state before.year =		% 1.00(1)
		{ " " * write$ }
		{ add.period$ " " * write$ }
	      if$
	    }
	  if$
	}
      if$
      mid.sentence 'output.state :=
    }
  if$
  s
}

FUNCTION {output}
{ duplicate$ empty$
    'pop$
    'output.nonnull
  if$
}

FUNCTION {required.argument}
{ 't :=
  empty$
    {"Missing required argument " t * " in " * cite$ * warning$}
    'skip$
  if$
}

FUNCTION {required.exclusive.or.argument}
{ 't :=
  empty$
    { 's := 
      empty$
        { t " or " * s * " is missing in " * cite$ * warning$}
        'skip$
      if$
    }
    { 's :=
      empty$
        'skip$
        { "You can use only one of " t * " and " * s * " in " * cite$ * warning$}
      if$
    }
  if$
}

FUNCTION {required.and.or.argument}
{ 't := empty$
     { 's := empty$
         { "there's no " t * " and/or " * s * cite$ * warning$ }
         'skip$
       if$
     }
     { pop$ pop$ }
  if$
}

FUNCTION {optional.series.volume.number.argument}
{ series empty$
    { volume empty$
        { number empty$
            'skip$
            { "there's a number but no series in " cite$ * warning$ }
          if$
        }
        { number empty$
            { "there's a volume but no series in " cite$ * warning$ }
            { "you can use only one of volume and number in " cite$ * warning$}
          if$
        }
     if$
    }
    { volume empty$
        { number empty$
            { "there's a series but neither volume nor number in " cite$ * warning$ }
            'skip$
          if$
        }
        { number empty$
            'skip$
            { "you can use only one of volume and number in " cite$ * warning$ }
          if$
        }
     if$
   }
   if$
}            

FUNCTION {output.bibitem}
{ newline$
  "\bibitem{" write$
  cite$ write$
  "}" write$
  newline$
  before.all 'output.state :=
}

FUNCTION {fin.entry}
{ add.period$
  write$
  newline$
}

FUNCTION {new.block}
{ output.state before.all =
    'skip$
    { after.block 'output.state := }
  if$
}

FUNCTION {new.sentence}
{ output.state after.block =
    'skip$
    { output.state before.all =
	'skip$
	{ after.sentence 'output.state := }
      if$
    }
  if$
}

FUNCTION {not}
{   { #0 }
    { #1 }
  if$
}

FUNCTION {and}
{   'skip$
    { pop$ #0 }
  if$
}

FUNCTION {or}
{   { pop$ #1 }
    'skip$
  if$
}

FUNCTION {new.block.checka}
{ empty$
    'skip$
    'new.block
  if$
}

FUNCTION {new.block.checkb}
{ empty$
  swap$ empty$
  and
    'skip$
    'new.block
  if$
}

FUNCTION {new.sentence.checka}
{ empty$
    'skip$
    'new.sentence
  if$
}

FUNCTION {new.sentence.checkb}
{ empty$
  swap$ empty$
  and
    'skip$
    'new.sentence
  if$
}

FUNCTION {field.or.null}
{ duplicate$ empty$
    { pop$ "" }
    'skip$
  if$
}

FUNCTION {emphasize}
{ duplicate$ empty$
    { pop$ "" }
    { "{\em " swap$ * "}" * }
  if$
}

INTEGERS { nameptr namesleft numnames }

FUNCTION {format.names}					% 1.00(4), 2.00(4)
{ 's :=
  #1 'nameptr :=
  s num.names$ 'numnames :=
  numnames 'namesleft :=
    { namesleft #0 > }
    { s nameptr "{vv }{ll}{, jj}{, f.}" format.name$ 't :=
      nameptr #1 >
	{ namesleft #1 >
	    { ", " * t * }
	    { t "others" =
		{" et al." * }
		{" and " * t * }
	      if$
	    }
	  if$
	}
	't
      if$
      nameptr #1 + 'nameptr :=
      namesleft #1 - 'namesleft :=
    }
  while$
}

FUNCTION {format.authors}
{ author empty$
    { "" }
    { author format.names }
  if$
}

FUNCTION {add.colon}					% 2.00(5)
{ ": " *
}

FUNCTION {format.editors.inparen}			% 2.00(6)
{ editor empty$
    { "" }
    { editor format.names
      editor num.names$ #1 >
	{", eds." *}
	{", ed." *}
      if$
    }
  if$
}

FUNCTION {format.editors}
{ editor empty$
    { "" }
    { editor format.names
      editor num.names$ #1 >
	{"(eds.)" *}
	{"(ed.)" *}
      if$
    }
  if$
}

FUNCTION {n.dashify}
{ 't :=
  ""
    { t empty$ not }
    { t #1 #1 substring$ "-" =
	{ t #1 #2 substring$ "--" = not
	    { "--" *
	      t #2 global.max$ substring$ 't :=
	    }
	    {   { t #1 #1 substring$ "-" = }
		{ "-" *
		  t #2 global.max$ substring$ 't :=
		}
	      while$
	    }
	  if$
	}
	{ t #1 #1 substring$ *
	  t #2 global.max$ substring$ 't :=
	}
      if$
    }
  while$
}

FUNCTION {format.date}
{ before.year 'output.state :=				% 1.00(1)
  year empty$
    { month empty$
	{ "" }
	{ "there's a month but no year in " cite$ * warning$
          ""						% 1.00(5)
	}
      if$
    }
    { "(" year ")" * * }				% 1.00(5)
  if$
}

FUNCTION {tie.or.space.connect}
{ duplicate$ text.length$ #3 <
    { "~" }
    { "\ " }						% 1.00(6)
  if$
  swap$ * *
}

FUNCTION {output.volume}
{ 
  volume empty$
    'skip$
    { "Vol.~" volume * output}
  if$

}

FUNCTION {output.number}
{
  number empty$
    'skip$
    { "No.~" number * output}
  if$
}

FUNCTION {output.series.volume.number}
{ series empty$
    { output.volume
      output.number }
    { series output
      output.volume
      output.number }
 if$
}

FUNCTION {format.edition}
{ edition empty$
    { "" }
    { output.state mid.sentence =
	{ edition "l" change.case$ " edition" * }
	{ edition "t" change.case$ " edition" * }
      if$
    }
  if$
}

INTEGERS { multiresult }

FUNCTION {multi.page.check}
{ 't :=
  #0 'multiresult :=
    { multiresult not
      t empty$ not
      and
    }
    { t #1 #1 substring$
      duplicate$ "-" =
      swap$ duplicate$ "," =
      swap$ "+" =
      or or
	{ #1 'multiresult := }
	{ t #2 global.max$ substring$ 't := }
      if$
    }
  while$
  multiresult
}

FUNCTION {format.pages}					% 1.00(7)
{ pages empty$
    { "" }
    { pages multi.page.check
	{ "pp." pages n.dashify tie.or.space.connect }
	{ "p." pages tie.or.space.connect }
      if$
    }
  if$
}

FUNCTION {format.vol.num.pages}				% 1.00(8)
{ volume empty$
  { ""}
  { " Vol.~" volume * }
  if$ 
  number empty$
    'skip$
    { volume empty$
	{ "there's a number but no volume in " cite$ * warning$ }
	{ "," *}
      if$
      " No.~" number * *
    }
  if$
  pages empty$
    'skip$
    { duplicate$ empty$
	{ pop$ format.pages }
	{ ", " * format.pages * }
      if$
    }
  if$
}

FUNCTION {format.chapter.pages}
{ chapter empty$
    'format.pages
    { type empty$
	{ "chapter" chapter tie.or.space.connect }
        { type "l" change.case$ chapter tie.or.space.connect }
      if$
      pages empty$
	'skip$
	{ ", " * format.pages * }
      if$
    }
  if$
}

FUNCTION {format.in.ed.booktitle}
{ booktitle empty$
    { "" }
    { booktitle emphasize
      editor empty$
	'skip$
	{ " (" * format.editors.inparen * ")" *}	% 1.00(9), 2.00(6)
      if$
    }
  if$
}

FUNCTION {empty.misc.check}
{ author empty$ title empty$ howpublished empty$
  month empty$ year empty$ note empty$
  and and and and and
  key empty$ not and
    { "all relevant fields are empty in " cite$ * warning$ }
    'skip$
  if$
}

FUNCTION {format.thesis.type}
{ type empty$
    'skip$
    { pop$
      type "t" change.case$
    }
  if$
}

FUNCTION {format.tr.number}
{ type empty$
    { "Technical Report" }
    {type}
  if$
  number empty$
    { "t" change.case$ }
    { " " number * * }
  if$
}

FUNCTION {format.article.crossref}			% 2.00(8)
{ key empty$
    { journal empty$
	{ "need key or journal for " cite$ * " to crossref " * crossref *
	  warning$
	  ""
	}
	{ journal emphasize }				% 1.00(10)
      if$
    }
    { "In " key * }
  if$
  " \cite{" * crossref * "}" *
}

FUNCTION {format.crossref.editor}			% 1.00(11)
{ editor #1 "{vv }{ll}" format.name$
  editor num.names$ duplicate$
  #2 >
    {pop$ " et al." * }
    { #2 <
	'skip$
	{ editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
	    {" et al." * }
	    {" and " * editor #2 "{vv }{ll}" format.name$ * }
	  if$
	}
      if$
    }
  if$
}

FUNCTION {format.book.crossref}				% 2.00(8)
{ editor empty$
  editor field.or.null author field.or.null =
  or
    { key empty$
	{ series empty$
	    { "need editor, key, or series for " cite$ * " to crossref " *
	      crossref * warning$
	      ""
	    }
	    { series emphasize }			% 1.00(10)
	  if$
	}
	{ "In " key * }
      if$
    }
    { format.crossref.editor }
  if$
  " \cite{" * crossref * "}" *
  volume empty$
    { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ }
    { * "Vol." * volume tie.or.space.connect }
  if$
}

FUNCTION {format.incoll.inproc.crossref}		% 2.00(8)
{ editor empty$
  editor field.or.null author field.or.null =
  or
    { key empty$
	{ booktitle empty$
	    { "need editor, key, or booktitle for " cite$ * " to crossref " *
	      crossref * warning$
	      ""
	    }
	    { booktitle emphasize }			% 1.00(10)
	  if$
	}
	{ "In " key * }
      if$
    }
    { format.crossref.editor }
  if$
  " \cite{" * crossref * "}" *
}

FUNCTION {article}
{ 
%%%%
  author  "author"  required.argument
  title   "title"   required.argument
  journal "journal" required.argument
  year    "year"    required.argument
%%%% jssst
  volume  "volume"  
  number  "number"  
     required.and.or.argument
  pages   "pages"   required.argument
%%%%
  output.bibitem 
  format.authors add.colon				% 2.00(5)
  title output
  crossref missing$
    { journal emphasize output
      format.vol.num.pages output			% 1.00(12)
      format.date output
    }
    { format.article.crossref output.nonnull
      format.pages output
    }
  if$
  new.block
  note output
  fin.entry
}

FUNCTION {book}
{ 
%%%%
  author  "author"
  editor  "editor"
    required.exclusive.or.argument
  title   "title"  required.argument
  publisher "publisher" required.argument
  year    "year" required.argument
  optional.series.volume.number.argument
%%%%
  output.bibitem
  author empty$
    { format.editors}
    { format.authors}
  if$
  add.colon						% 2.00(5)
  title emphasize output
  crossref missing$
    { output.series.volume.number
      publisher output
      address output
    }
    { new.block
      format.book.crossref output.nonnull
    }
  if$
  format.edition output
  format.date output
  new.block
  note output
  fin.entry
}

FUNCTION {booklet}
{
%%%%
  title   "title"   required.argument
%%%% jssst
  author  "author"  required.argument
%%%%
  output.bibitem
  format.authors add.colon				% 2.00(5)
  title output
  howpublished output
  address output
  format.date output
  new.block
  note output
  fin.entry
}

FUNCTION {inbook}
{ 
%%%%
  author  "author"
  editor  "editor"
     required.exclusive.or.argument
  title   "title"  required.argument
  chapter "chapter"
  pages   "pages"
     required.and.or.argument
  publisher  "publisher" required.argument
  year       "year"      required.argument

  optional.series.volume.number.argument
%%%%
  output.bibitem 
  author empty$
    { format.editors}
    { format.authors}
  if$
  add.colon						% 2.00(5)
  title emphasize output
  crossref missing$
    { output.series.volume.number
      format.chapter.pages output
      publisher output
    }
    { format.chapter.pages output
      new.block
      format.book.crossref output.nonnull
    }
  if$
  format.edition output
  format.date output					% 1.00(13)
  new.block
  note output
  fin.entry
}

FUNCTION {incollection}
{
%%%%
  author    "author"    required.argument
  title     "title"     required.argument
  booktitle "booktitle" required.argument
  publisher "publisher" required.argument
  year      "year"      required.argument

  optional.series.volume.number.argument
%%%%
  output.bibitem
  format.authors add.colon				% 2.00(5)
  title output
  crossref missing$
    { format.in.ed.booktitle output
      output.series.volume.number
      publisher output
      address output
      format.edition output
      format.chapter.pages output			% 1.00(13)
      format.date output
    }
    { format.incoll.inproc.crossref output.nonnull
      format.chapter.pages output
    }
  if$
  new.block
  note output
  fin.entry
}

FUNCTION {inproceedings}
{
%%%%
  author    "author"    required.argument
  title     "title"     required.argument
  year      "year"      required.argument

  optional.series.volume.number.argument
%%%%
  output.bibitem 
  format.authors add.colon				% 2.00(5)
  title output
  crossref missing$
    { format.in.ed.booktitle output
      booktitle "booktitle" required.argument
      output.series.volume.number
      address output
      organization output
      publisher output
      format.pages output
      format.date output				% 1.00(13)
    }
    { format.incoll.inproc.crossref output.nonnull
      format.pages output
    }
  if$
  new.block
  note output
  fin.entry
}

FUNCTION {conference} { inproceedings }

FUNCTION {manual}
{	
%%%%
  title   "title"    required.argument
%%%% jssst
  author   "author"
  organization "organazaion"
     required.exclusive.or.argument
%%%%
  output.bibitem
  author empty$
    { organization}
    { format.authors}
  if$
  add.colon						% 2.00(5)
  title emphasize output
  author empty$
    'skip$
    { organization output }
  if$
  address output
  format.edition output
  format.date output
  new.block
  note output
  fin.entry
}

FUNCTION {mastersthesis}
{
%%%%
  author   "author"  required.argument
  title    "title"   required.argument
  school   "school"  required.argument
  year     "year"    required.argument
%%%%
  output.bibitem
  format.authors add.colon				% 2.00(5)
  title output
  "Master's thesis"
  format.thesis.type output.nonnull
  school output
  address output
  format.date output
  new.block
  note output
  fin.entry
}

FUNCTION {misc}
{
%%%%
%%%% jssst
  author "author" required.argument
  title  "title"  required.argument
%%%%
  output.bibitem
  format.authors add.colon				% 2.00(5)
  title output
  howpublished output
  format.date output
  new.block
  note output
  fin.entry
  empty.misc.check
}

FUNCTION {phdthesis}
{
%%%%
  author   "author"  required.argument
  title    "title"   required.argument
  school   "school"  required.argument
  year     "year"    required.argument
%%%%
  output.bibitem 
  format.authors add.colon				% 2.00(5)
  title output						% 2.00(9)
  "PhD Thesis"
  format.thesis.type output.nonnull
  school output
  address output
  format.date output
  new.block
  note output
  fin.entry
}

FUNCTION {proceedings}
{
%%%%
  title  "title"  required.argument
  year   "year"   required.argument

  optional.series.volume.number.argument
%%%% jssst
  editor  "editor"
  organization "organization"
      required.exclusive.or.argument 
%%%%
  output.bibitem 
  editor empty$
    { organization }
    { format.editors }
  if$
  add.colon						% 2.00(5)
  title emphasize output
  output.series.volume.number
  address output
  editor empty$
    'skip$
    { organization output }
  if$
  publisher output
  format.date output
  new.block
  note output
  fin.entry
}

FUNCTION {techreport}
{
%%%%
  author   "author"   required.argument
  title    "title"    required.argument
  institution "institution" required.argument
  year     "year"     required.argument
%%%%
  output.bibitem
  format.authors add.colon				% 2.00(5)
  title output
  format.tr.number output.nonnull
  institution output
  address output
  format.date output
  new.block
  note output
  fin.entry
}

FUNCTION {unpublished}
{
%%%%
  author   "author"   required.argument
  title    "title"    required.argument
  note     "note"     required.argument
%%%%
  output.bibitem
  format.authors add.colon				% 2.00(5)
  title output
  format.date output
  new.block
  note output
  fin.entry
}

FUNCTION {default.type} { misc }

MACRO {jan} {"January"}

MACRO {feb} {"February"}

MACRO {mar} {"March"}

MACRO {apr} {"April"}

MACRO {may} {"May"}

MACRO {jun} {"June"}

MACRO {jul} {"July"}

MACRO {aug} {"August"}

MACRO {sep} {"September"}

MACRO {oct} {"October"}

MACRO {nov} {"November"}

MACRO {dec} {"December"}

MACRO {acmcs} {"ACM Computing Surveys"}

MACRO {acta} {"Acta Informatica"}

MACRO {cacm} {"Communications of the ACM"}

MACRO {ibmjrd} {"IBM Journal of Research and Development"}

MACRO {ibmsj} {"IBM Systems Journal"}

MACRO {ieeese} {"IEEE Transactions on Software Engineering"}

MACRO {ieeetc} {"IEEE Transactions on Computers"}

MACRO {ieeetcad}
 {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"}

MACRO {ipl} {"Information Processing Letters"}

MACRO {jacm} {"Journal of the ACM"}

MACRO {jcss} {"Journal of Computer and System Sciences"}

MACRO {scp} {"Science of Computer Programming"}

MACRO {sicomp} {"SIAM Journal on Computing"}

MACRO {tocs} {"ACM Transactions on Computer Systems"}

MACRO {tods} {"ACM Transactions on Database Systems"}

MACRO {tog} {"ACM Transactions on Graphics"}

MACRO {toms} {"ACM Transactions on Mathematical Software"}

MACRO {toois} {"ACM Transactions on Office Information Systems"}

MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"}

MACRO {tcs} {"Theoretical Computer Science"}

READ

FUNCTION {sortify}
{ purify$
  "l" change.case$
}

INTEGERS { len }

FUNCTION {chop.word}
{ 's :=
  'len :=
  s #1 len substring$ =
    { s len #1 + global.max$ substring$ }
    's
  if$
}

FUNCTION {sort.format.names}
{ 's :=
  #1 'nameptr :=
  ""
  s num.names$ 'numnames :=
  numnames 'namesleft :=
    { namesleft #0 > }
    { nameptr #1 >
	{ "   " * }
	'skip$
      if$
      s nameptr "{vv{ } }{ll{ }}{  ff{ }}{  jj{ }}" format.name$ 't :=
      nameptr numnames = t "others" = and
	{ "et al" * }
	{ t sortify * }
      if$
      nameptr #1 + 'nameptr :=
      namesleft #1 - 'namesleft :=
    }
  while$
}

FUNCTION {sort.format.title}
{ 't :=
  "A " #2
    "An " #3
      "The " #4 t chop.word
    chop.word
  chop.word
  sortify
  #1 global.max$ substring$
}

FUNCTION {author.sort}
{ author empty$
    { key empty$
	{ "to sort, need author or key in " cite$ * warning$
	  ""
	}
	{ key sortify }
      if$
    }
    { author sort.format.names }
  if$
}

FUNCTION {author.editor.sort}
{ author empty$
    { editor empty$
	{ key empty$
	    { "to sort, need author, editor, or key in " cite$ * warning$
	      ""
	    }
	    { key sortify }
	  if$
	}
	{ editor sort.format.names }
      if$
    }
    { author sort.format.names }
  if$
}

FUNCTION {author.organization.sort}
{ author empty$
    { organization empty$
	{ key empty$
	    { "to sort, need author, organization, or key in " cite$ * warning$
	      ""
	    }
	    { key sortify }
	  if$
	}
	{ "The " #4 organization chop.word sortify }
      if$
    }
    { author sort.format.names }
  if$
}

FUNCTION {editor.organization.sort}
{ editor empty$
    { organization empty$
	{ key empty$
	    { "to sort, need editor, organization, or key in " cite$ * warning$
	      ""
	    }
	    { key sortify }
	  if$
	}
	{ "The " #4 organization chop.word sortify }
      if$
    }
    { editor sort.format.names }
  if$
}

FUNCTION {presort}
{ type$ "book" =
  type$ "inbook" =
  or
    'author.editor.sort
    { type$ "proceedings" =
	'editor.organization.sort
	{ type$ "manual" =
	    'author.organization.sort
	    'author.sort
	  if$
	}
      if$
    }
  if$
  "    "
  *
  year field.or.null sortify
  *
  "    "
  *
  title field.or.null
  sort.format.title
  *
  #1 entry.max$ substring$
  'sort.key$ :=
}

ITERATE {presort}

SORT

STRINGS { longest.label }

INTEGERS { number.label longest.label.width }

FUNCTION {initialize.longest.label}
{ "" 'longest.label :=
  #1 'number.label :=
  #0 'longest.label.width :=
}

FUNCTION {longest.label.pass}
{ number.label int.to.str$ 'label :=
  number.label #1 + 'number.label :=
  label width$ longest.label.width >
    { label 'longest.label :=
      label width$ 'longest.label.width :=
    }
    'skip$
  if$
}

EXECUTE {initialize.longest.label}

ITERATE {longest.label.pass}

FUNCTION {begin.bib}
{ preamble$ empty$
    'skip$
    { preamble$ write$ newline$ }
  if$
  "\begin{thebibliography}{"  longest.label  * "}" * write$ newline$
}

EXECUTE {begin.bib}

EXECUTE {init.state.consts}

ITERATE {call.type$}

FUNCTION {end.bib}
{ newline$
  "\end{thebibliography}" write$ newline$
}

EXECUTE {end.bib}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ipsjsort.bst	Thu Mar 10 18:47:54 2011 +0900
@@ -0,0 +1,1 @@
+% ipsjsort.bst 15-Jun-07 by Hiroshi Nakashima (ver 2.12)
% ipsjsort.bst 30-Jan-02 by Hiroshi Nakashima (ver 2.00)
% ipsjsort.bst 28-Dec-93 by Hiroshi Nakashima (ver 1.00)
% jssst.bst tomura@etl.go.jp (Satoru Tomura)
% BibTeX standard bibliography style `jplain'
	% version 0.10 for JBibTeX versions 0.10 or later, JLaTeX version 2.09.
	% by Shouichi Matsui, matsui@denken.junet

ENTRY
  { address
    author
    booktitle
    chapter
    edition
    editor
    howpublished
    institution
    journal
    key
    month
    note
    number
    organization
    pages
    publisher
    school
    series
    title
    type
    volume
    year
    yomi
  }
  {}
  { label }

INTEGERS { output.state before.all mid.sentence after.sentence after.block }

INTEGERS { before.year }

FUNCTION {init.state.consts}
{ #0 'before.all :=
  #1 'mid.sentence :=
  #2 'after.sentence :=
  #3 'after.block :=
  #4 'before.year :=					% 1.00(1)
}

STRINGS { s t }

FUNCTION {is.kanji}
{ is.kanji.str$ }					% 1.00(2), 2.00(1)

FUNCTION {output.nonnull}
{ 's :=
  output.state mid.sentence =
    { duplicate$ is.kanji				% 2.00(2)
	{ "C" * write$ }
	{ ", " * write$ }
      if$
    }
    { output.state after.block =
	{ add.period$ write$
	  newline$
	  "\newblock " write$
	}
	{ output.state before.all =
	    'write$
	    { output.state before.year =		% 1.00(1)
		{ " " * write$ }
		{ add.period$ " " * write$ }
	      if$
	    }
	  if$
	}
      if$
      mid.sentence 'output.state :=
    }
  if$
  s
}

FUNCTION {output}
{ duplicate$ empty$
    'pop$
    'output.nonnull
  if$
}

FUNCTION {required.argument}
{ 't :=
  empty$
    {"Missing required argument " t * " in " * cite$ * warning$}
    'skip$
  if$
}

FUNCTION {required.exclusive.or.argument}
{ 't :=
  empty$
    { 's := 
      empty$
        { t " or " * s * " is missing in " * cite$ * warning$}
        'skip$
      if$
    }
    { 's :=
      empty$
        'skip$
        { "You can use only one of " t * " and " * s * " in " * cite$ * warning$}
      if$
    }
  if$
}

FUNCTION {required.and.or.argument}
{ 't := empty$
     { 's := empty$
         { "there's no " t * " and/or " * s * cite$ * warning$ }
         'skip$
       if$
     }
     { pop$ pop$ }
  if$
}

FUNCTION {optional.series.volume.number.argument}
{ series empty$
    { volume empty$
        { number empty$
            'skip$
            { "there's a number but no series in " cite$ * warning$ }
          if$
        }
        { number empty$
            { "there's a volume but no series in " cite$ * warning$ }
            { "you can use only one of volume and number in " cite$ * warning$}
          if$
        }
     if$
    }
    { volume empty$
        { number empty$
            { "there's a series but neither volume nor number in " cite$ * warning$ }
            'skip$
          if$
        }
        { number empty$
            'skip$
            { "you can use only one of volume and number in " cite$ * warning$ }
          if$
        }
     if$
   }
   if$
}            

FUNCTION {output.bibitem}
{ newline$
  "\bibitem{" write$
  cite$ write$
  "}" write$
  newline$
  before.all 'output.state :=
}

FUNCTION {fin.entry}
{ add.period$
  write$
  newline$
}

FUNCTION {new.block}
{ output.state before.all =
    'skip$
    { after.block 'output.state := }
  if$
}

FUNCTION {new.sentence}
{ output.state after.block =
    'skip$
    { output.state before.all =
	'skip$
	{ after.sentence 'output.state := }
      if$
    }
  if$
}

FUNCTION {not}
{   { #0 }
    { #1 }
  if$
}

FUNCTION {and}
{   'skip$
    { pop$ #0 }
  if$
}

FUNCTION {or}
{   { pop$ #1 }
    'skip$
  if$
}

FUNCTION {new.block.checka}
{ empty$
    'skip$
    'new.block
  if$
}

FUNCTION {new.block.checkb}
{ empty$
  swap$ empty$
  and
    'skip$
    'new.block
  if$
}

FUNCTION {new.sentence.checka}
{ empty$
    'skip$
    'new.sentence
  if$
}

FUNCTION {new.sentence.checkb}
{ empty$
  swap$ empty$
  and
    'skip$
    'new.sentence
  if$
}

FUNCTION {field.or.null}
{ duplicate$ empty$
    { pop$ "" }
    'skip$
  if$
}

FUNCTION {emphasize}
{ duplicate$ empty$
    { pop$ "" }
    { duplicate$ is.kanji
        'skip$						% 1.00(3)
        { "{\em " swap$ * "}" * }			% 2.00(3)
      if$
    }
  if$
}

INTEGERS { nameptr namesleft numnames }

FUNCTION {format.names}					% 1.00(4), 2.00(4)
{ 's :=
  #1 'nameptr :=
  s num.names$ 'numnames :=
  numnames 'namesleft :=
    { namesleft #0 > }
    { s nameptr "{ff}{ll}" format.name$ duplicate$ is.kanji
	{ duplicate$ text.length$ #6 >
	    { 't := }
	    { pop$ s nameptr "{ff}@{ll}" format.name$ 't := }
	  if$
	}
        { pop$ s nameptr "{vv }{ll}{, jj}{, f.}" format.name$ 't := }
      if$
      nameptr #1 >
	{ namesleft #1 >
	    { s is.kanji
		{ "C" }
		{ ", " }
	      if$
	      * t * }
	    { t "others" =
		{ s is.kanji
			{"ق" * }
			{" et al." * }
		      if$
                }
		{ s is.kanji
			{"C" * t * }	% put "," here for Kanji (H.N.)
			{" and " * t * }
	     	      if$
		}
	      if$
	    }
	  if$
	}
	't
      if$
      nameptr #1 + 'nameptr :=
      namesleft #1 - 'namesleft :=
    }
  while$
}

FUNCTION {format.authors}
{ author empty$
    { "" }
    { author format.names }
  if$
}

FUNCTION {add.colon}					% 2.00(5)
{ duplicate$ is.kanji
    { "\F" * }						% 2.12(1)
    { ": " * }
  if$
}

FUNCTION {format.editors.inparen}			% 2.00(6)
{ editor empty$
    { "" }
    { editor format.names
      editor num.names$ #1 >
	{ editor is.kanji
		{"C" * } {", eds." *} if$
	}
	{ editor is.kanji
		{"C" *}  {", ed." *} if$
	}
      if$
    }
  if$
}

FUNCTION {format.editors}
{ editor empty$
    { "" }
    { editor format.names
      editor num.names$ #1 >
	{ editor is.kanji
		{"iҁj" * } {"(eds.)" *} if$		% 2.00(7)
	}
	{ editor is.kanji
		{"iҁj" *}  {"(ed.)" *} if$		% 2.00(7)
	}
      if$
    }
  if$
}

FUNCTION {n.dashify}
{ 't :=
  ""
    { t empty$ not }
    { t #1 #1 substring$ "-" =
	{ t #1 #2 substring$ "--" = not
	    { "--" *
	      t #2 global.max$ substring$ 't :=
	    }
	    {   { t #1 #1 substring$ "-" = }
		{ "-" *
		  t #2 global.max$ substring$ 't :=
		}
	      while$
	    }
	  if$
	}
	{ t #1 #1 substring$ *
	  t #2 global.max$ substring$ 't :=
	}
      if$
    }
  while$
}

FUNCTION {format.date}
{ before.year 'output.state :=				% 1.00(1)
  year empty$
    { month empty$
	{ "" }
	{ "there's a month but no year in " cite$ * warning$
          ""						% 1.00(5)
	}
      if$
    }
    { "(" year ")" * * }				% 1.00(5)
  if$
}

FUNCTION {tie.or.space.connect}
{ duplicate$ text.length$ #3 <
    { "~" }
    { "\ " }						% 1.00(6)
  if$
  swap$ * *
}

FUNCTION {output.volume}
{ 
  volume empty$
    'skip$
    { "Vol.~" volume * output}
  if$

}

FUNCTION {output.number}
{
  number empty$
    'skip$
    { "No.~" number * output}
  if$
}

FUNCTION {output.series.volume.number}
{ series empty$
    { output.volume
      output.number }
    { series is.kanji
      volume empty$
      number empty$
      or
      and
        { series " " * volume * number * output}
        { series output
          output.volume
          output.number}
      if$
   }
 if$
}

FUNCTION {format.edition}
{ edition empty$
    { "" }
    { output.state mid.sentence =
	{ edition "l" change.case$ " edition" * }
	{ edition "t" change.case$ " edition" * }
      if$
    }
  if$
}

INTEGERS { multiresult }

FUNCTION {multi.page.check}
{ 't :=
  #0 'multiresult :=
    { multiresult not
      t empty$ not
      and
    }
    { t #1 #1 substring$
      duplicate$ "-" =
      swap$ duplicate$ "," =
      swap$ "+" =
      or or
	{ #1 'multiresult := }
	{ t #2 global.max$ substring$ 't := }
      if$
    }
  while$
  multiresult
}

FUNCTION {format.pages}					% 1.00(7)
{ pages empty$
    { "" }
    { pages multi.page.check
	{ "pp." pages n.dashify tie.or.space.connect }
	{ "p." pages tie.or.space.connect }
      if$
    }
  if$
}

FUNCTION {format.vol.num.pages}				% 1.00(8)
{ volume empty$
  { ""}
  { " Vol.~" volume * }
  if$ 
  number empty$
    'skip$
    { volume empty$
	{ "there's a number but no volume in " cite$ * warning$ }
	{ "," *}
      if$
      " No.~" number * *
    }
  if$
  pages empty$
    'skip$
    { duplicate$ empty$
	{ pop$ format.pages }
	{ ", " * format.pages * }
      if$
    }
  if$
}

FUNCTION {format.chapter.pages}
{ chapter empty$
    'format.pages
    { type empty$
	{ "chapter" chapter tie.or.space.connect }
        { type is.kanji 
             { chapter type tie.or.space.connect }
             { type "l" change.case$ chapter tie.or.space.connect }
          if$
        }
      if$
      pages empty$
	'skip$
	{ ", " * format.pages * }
      if$
    }
  if$
}

FUNCTION {format.in.ed.booktitle}
{ booktitle empty$
    { "" }
    { booktitle emphasize
      editor empty$
	'skip$
	{ booktitle is.kanji
	    { "i" * format.editors.inparen * "j" *}	% 2.00(6,7)
	    { " (" * format.editors.inparen * ")" *}	% 1.00(9), 2.00(6)
	  if$
	}
      if$
    }
  if$
}

FUNCTION {empty.misc.check}
{ author empty$ title empty$ howpublished empty$
  month empty$ year empty$ note empty$
  and and and and and
  key empty$ not and
    { "all relevant fields are empty in " cite$ * warning$ }
    'skip$
  if$
}

FUNCTION {format.thesis.type}
{ type empty$
    'skip$
    { pop$
      type "t" change.case$
    }
  if$
}

FUNCTION {format.tr.number}
{ type empty$
    { title empty$
        { "Technical Report" }
        { title is.kanji
            { "Zp" }
            { "Technical Report" }
          if$
        }
      if$
    }
    {type}
  if$
  number empty$
    { "t" change.case$ }
    { " " number * * }
  if$
}

FUNCTION {format.article.crossref}			% 2.00(8)
{ key empty$
    { journal empty$
	{ "need key or journal for " cite$ * " to crossref " * crossref *
	  warning$
	  ""
	}
	{ journal emphasize }				% 1.00(10)
      if$
    }
    { "In " key * }
  if$
  " \cite{" * crossref * "}" *
}

FUNCTION {format.crossref.editor}			% 1.00(11)
{ editor #1
  editor is.kanji { "{ff}" } { "{vv }{ll}" } if$
  format.name$
  editor num.names$ duplicate$
  #2 >
    { editor is.kanji
	  {pop$ "ق" *} {pop$ " et al." * } if$
    }
    { #2 <
	'skip$
	{ editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
	    { editor is.kanji
		{"ق" *} {" et al." * } if$
	    }
	    { editor is.kanji
		{"E" * editor #2 "{ff}" format.name$ * }
		{" and " * editor #2 "{vv }{ll}" format.name$ * }
	      if$
	    }
	  if$
	}
      if$
    }
  if$
}

FUNCTION {format.book.crossref}				% 2.00(8)
{ editor empty$
  editor field.or.null author field.or.null =
  or
    { key empty$
	{ series empty$
	    { "need editor, key, or series for " cite$ * " to crossref " *
	      crossref * warning$
	      ""
	    }
	    { series emphasize }			% 1.00(10)
	  if$
	}
	{ "In " key * }
      if$
    }
    { format.crossref.editor }
  if$
  " \cite{" * crossref * "}" *
  volume empty$
    { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ }
    { duplicate$ is.kanji { "C" } { ", "} if$ *
      "Vol." * volume tie.or.space.connect
    }
  if$
}

FUNCTION {format.incoll.inproc.crossref}		% 2.00(8)
{ editor empty$
  editor field.or.null author field.or.null =
  or
    { key empty$
	{ booktitle empty$
	    { "need editor, key, or booktitle for " cite$ * " to crossref " *
	      crossref * warning$
	      ""
	    }
	    { booktitle emphasize }			% 1.00(10)
	  if$
	}
	{ "In " key * }
      if$
    }
    { format.crossref.editor }
  if$
  " \cite{" * crossref * "}" *
}

FUNCTION {article}
{ 
%%%%
  author  "author"  required.argument
  title   "title"   required.argument
  journal "journal" required.argument
  year    "year"    required.argument
%%%% jssst
  volume  "volume"  
  number  "number"  
     required.and.or.argument
  pages   "pages"   required.argument
%%%%
  output.bibitem 
  format.authors add.colon				% 2.00(5)
  title output
  crossref missing$
    { journal emphasize output
      format.vol.num.pages output			% 1.00(12)
      format.date output
    }
    { format.article.crossref output.nonnull
      format.pages output
    }
  if$
  new.block
  note output
  fin.entry
}

FUNCTION {book}
{ 
%%%%
  author  "author"
  editor  "editor"
    required.exclusive.or.argument
  title   "title"  required.argument
  publisher "publisher" required.argument
  year    "year" required.argument
  optional.series.volume.number.argument
%%%%
  output.bibitem
  author empty$
    { format.editors}
    { format.authors}
  if$
  add.colon						% 2.00(5)
  title emphasize output
  crossref missing$
    { output.series.volume.number
      publisher output
      address output
    }
    { new.block
      format.book.crossref output.nonnull
    }
  if$
  format.edition output
  format.date output
  new.block
  note output
  fin.entry
}

FUNCTION {booklet}
{
%%%%
  title   "title"   required.argument
%%%% jssst
  author  "author"  required.argument
%%%%
  output.bibitem
  format.authors add.colon				% 2.00(5)
  title output
  howpublished output
  address output
  format.date output
  new.block
  note output
  fin.entry
}

FUNCTION {inbook}
{ 
%%%%
  author  "author"
  editor  "editor"
     required.exclusive.or.argument
  title   "title"  required.argument
  chapter "chapter"
  pages   "pages"
     required.and.or.argument
  publisher  "publisher" required.argument
  year       "year"      required.argument

  optional.series.volume.number.argument
%%%%
  output.bibitem 
  author empty$
    { format.editors}
    { format.authors}
  if$
  add.colon						% 2.00(5)
  title emphasize output
  crossref missing$
    { output.series.volume.number
      format.chapter.pages output
      publisher output
    }
    { format.chapter.pages output
      new.block
      format.book.crossref output.nonnull
    }
  if$
  format.edition output
  format.date output					% 1.00(13)
  new.block
  note output
  fin.entry
}

FUNCTION {incollection}
{
%%%%
  author    "author"    required.argument
  title     "title"     required.argument
  booktitle "booktitle" required.argument
  publisher "publisher" required.argument
  year      "year"      required.argument

  optional.series.volume.number.argument
%%%%
  output.bibitem
  format.authors add.colon				% 2.00(5)
  title output
  crossref missing$
    { format.in.ed.booktitle output
      output.series.volume.number
      publisher output
      address output
      format.edition output
      format.chapter.pages output			% 1.00(13)
      format.date output
    }
    { format.incoll.inproc.crossref output.nonnull
      format.chapter.pages output
    }
  if$
  new.block
  note output
  fin.entry
}

FUNCTION {inproceedings}
{
%%%%
  author    "author"    required.argument
  title     "title"     required.argument
  year      "year"      required.argument

  optional.series.volume.number.argument
%%%%
  output.bibitem 
  format.authors add.colon				% 2.00(5)
  title output
  crossref missing$
    { format.in.ed.booktitle output
      booktitle "booktitle" required.argument
      output.series.volume.number
      address output
      organization output
      publisher output
      format.pages output
      format.date output				% 1.00(13)
    }
    { format.incoll.inproc.crossref output.nonnull
      format.pages output
    }
  if$
  new.block
  note output
  fin.entry
}

FUNCTION {conference} { inproceedings }

FUNCTION {manual}
{	
%%%%
  title   "title"    required.argument
%%%% jssst
  author   "author"
  organization "organazaion"
     required.exclusive.or.argument
%%%%
  output.bibitem
  author empty$
    { organization}
    { format.authors}
  if$
  add.colon						% 2.00(5)
  title emphasize output
  author empty$
    'skip$
    { organization output }
  if$
  address output
  format.edition output
  format.date output
  new.block
  note output
  fin.entry
}

FUNCTION {mastersthesis}
{
%%%%
  author   "author"  required.argument
  title    "title"   required.argument
  school   "school"  required.argument
  year     "year"    required.argument
%%%%
  output.bibitem
  format.authors add.colon				% 2.00(5)
  title output
  author empty$
    { "Master's thesis" }
    { author is.kanji
        { "Cm_" }  
        { "Master's thesis" }
      if$
    }
  if$
  format.thesis.type output.nonnull
  school output
  address output
  format.date output
  new.block
  note output
  fin.entry
}

FUNCTION {misc}
{
%%%%
%%%% jssst
  author "author" required.argument
  title  "title"  required.argument
%%%%
  output.bibitem
  format.authors add.colon				% 2.00(5)
  title output
  howpublished output
  format.date output
  new.block
  note output
  fin.entry
  empty.misc.check
}

FUNCTION {phdthesis}
{
%%%%
  author   "author"  required.argument
  title    "title"   required.argument
  school   "school"  required.argument
  year     "year"    required.argument
%%%%
  output.bibitem 
  format.authors add.colon				% 2.00(5)
  title output						% 2.00(9)
  author empty$
    { "PhD Thesis" }
    { author is.kanji
        { "m_" }
        { "PhD Thesis" }
      if$
    }
  if$
  format.thesis.type output.nonnull
  school output
  address output
  format.date output
  new.block
  note output
  fin.entry
}

FUNCTION {proceedings}
{
%%%%
  title  "title"  required.argument
  year   "year"   required.argument

  optional.series.volume.number.argument
%%%% jssst
  editor  "editor"
  organization "organization"
      required.exclusive.or.argument 
%%%%
  output.bibitem 
  editor empty$
    { organization }
    { format.editors }
  if$
  add.colon						% 2.00(5)
  title emphasize output
  output.series.volume.number
  address output
  editor empty$
    'skip$
    { organization output }
  if$
  publisher output
  format.date output
  new.block
  note output
  fin.entry
}

FUNCTION {techreport}
{
%%%%
  author   "author"   required.argument
  title    "title"    required.argument
  institution "institution" required.argument
  year     "year"     required.argument
%%%%
  output.bibitem
  format.authors add.colon				% 2.00(5)
  title output
  format.tr.number output.nonnull
  institution output
  address output
  format.date output
  new.block
  note output
  fin.entry
}

FUNCTION {unpublished}
{
%%%%
  author   "author"   required.argument
  title    "title"    required.argument
  note     "note"     required.argument
%%%%
  output.bibitem
  format.authors add.colon				% 2.00(5)
  title output
  format.date output
  new.block
  note output
  fin.entry
}

FUNCTION {default.type} { misc }

MACRO {jan} {"January"}

MACRO {feb} {"February"}

MACRO {mar} {"March"}

MACRO {apr} {"April"}

MACRO {may} {"May"}

MACRO {jun} {"June"}

MACRO {jul} {"July"}

MACRO {aug} {"August"}

MACRO {sep} {"September"}

MACRO {oct} {"October"}

MACRO {nov} {"November"}

MACRO {dec} {"December"}

MACRO {acmcs} {"ACM Computing Surveys"}

MACRO {acta} {"Acta Informatica"}

MACRO {cacm} {"Communications of the ACM"}

MACRO {ibmjrd} {"IBM Journal of Research and Development"}

MACRO {ibmsj} {"IBM Systems Journal"}

MACRO {ieeese} {"IEEE Transactions on Software Engineering"}

MACRO {ieeetc} {"IEEE Transactions on Computers"}

MACRO {ieeetcad}
 {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"}

MACRO {ipl} {"Information Processing Letters"}

MACRO {jacm} {"Journal of the ACM"}

MACRO {jcss} {"Journal of Computer and System Sciences"}

MACRO {scp} {"Science of Computer Programming"}

MACRO {sicomp} {"SIAM Journal on Computing"}

MACRO {tocs} {"ACM Transactions on Computer Systems"}

MACRO {tods} {"ACM Transactions on Database Systems"}

MACRO {tog} {"ACM Transactions on Graphics"}

MACRO {toms} {"ACM Transactions on Mathematical Software"}

MACRO {toois} {"ACM Transactions on Office Information Systems"}

MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"}

MACRO {tcs} {"Theoretical Computer Science"}

READ

FUNCTION {sortify}
{ purify$
  "l" change.case$
}

INTEGERS { len }

FUNCTION {chop.word}
{ 's :=
  'len :=
  s #1 len substring$ =
    { s len #1 + global.max$ substring$ }
    's
  if$
}

FUNCTION {sort.format.names}
{ 's :=
  yomi empty$
     'skip$
     { yomi 's := }
  if$

  #1 'nameptr :=
  ""
  s num.names$ 'numnames :=
  numnames 'namesleft :=
    { namesleft #0 > }
    { nameptr #1 >
	{ "   " * }
	'skip$
      if$
      s nameptr "{vv{ } }{ll{ }}{  ff{ }}{  jj{ }}" format.name$ 't :=
      nameptr numnames = t "others" = and
	{ "et al" * }
	{ t sortify * }
      if$
      nameptr #1 + 'nameptr :=
      namesleft #1 - 'namesleft :=
    }
  while$
}

FUNCTION {sort.format.title}
{ 't :=
  "A " #2
    "An " #3
      "The " #4 t chop.word
    chop.word
  chop.word
  sortify
  #1 global.max$ substring$
}

FUNCTION {author.sort}
{ author empty$
    { key empty$
	{ "to sort, need author or key in " cite$ * warning$
	  ""
	}
	{ key sortify }
      if$
    }
    { author sort.format.names }
  if$
}

FUNCTION {author.editor.sort}
{ author empty$
    { editor empty$
	{ key empty$
	    { "to sort, need author, editor, or key in " cite$ * warning$
	      ""
	    }
	    { key sortify }
	  if$
	}
	{ editor sort.format.names }
      if$
    }
    { author sort.format.names }
  if$
}

FUNCTION {author.organization.sort}
{ author empty$
    { organization empty$
	{ key empty$
	    { "to sort, need author, organization, or key in " cite$ * warning$
	      ""
	    }
	    { key sortify }
	  if$
	}
	{ "The " #4 organization chop.word sortify }
      if$
    }
    { author sort.format.names }
  if$
}

FUNCTION {editor.organization.sort}
{ editor empty$
    { organization empty$
	{ key empty$
	    { "to sort, need editor, organization, or key in " cite$ * warning$
	      ""
	    }
	    { key sortify }
	  if$
	}
	{ "The " #4 organization chop.word sortify }
      if$
    }
    { editor sort.format.names }
  if$
}

FUNCTION {presort}
{ type$ "book" =
  type$ "inbook" =
  or
    'author.editor.sort
    { type$ "proceedings" =
	'editor.organization.sort
	{ type$ "manual" =
	    'author.organization.sort
	    'author.sort
	  if$
	}
      if$
    }
  if$
  "    "
  *
  year field.or.null sortify
  *
  "    "
  *
  title field.or.null
  sort.format.title
  *
  #1 entry.max$ substring$
  'sort.key$ :=
}

ITERATE {presort}

SORT

STRINGS { longest.label }

INTEGERS { number.label longest.label.width }

FUNCTION {initialize.longest.label}
{ "" 'longest.label :=
  #1 'number.label :=
  #0 'longest.label.width :=
}

FUNCTION {longest.label.pass}
{ number.label int.to.str$ 'label :=
  number.label #1 + 'number.label :=
  label width$ longest.label.width >
    { label 'longest.label :=
      label width$ 'longest.label.width :=
    }
    'skip$
  if$
}

EXECUTE {initialize.longest.label}

ITERATE {longest.label.pass}

FUNCTION {begin.bib}
{ preamble$ empty$
    'skip$
    { preamble$ write$ newline$ }
  if$
  "\begin{thebibliography}{"  longest.label  * "}" * write$ newline$
}

EXECUTE {begin.bib}

EXECUTE {init.state.consts}

ITERATE {call.type$}

FUNCTION {end.bib}
{ newline$
  "\end{thebibliography}" write$ newline$
}

EXECUTE {end.bib}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ipsjunsrt-e.bst	Thu Mar 10 18:47:54 2011 +0900
@@ -0,0 +1,1 @@
+% ipsjsort-e.bst 15-Jun-07 by Hiroshi Nakashima (ver 2.12)
% ipsjsort.bst 30-Jan-02 by Hiroshi Nakashima (ver 2.00)
% ipsjsort.bst 28-Dec-93 by Hiroshi Nakashima (ver 1.00)
% jssst.bst tomura@etl.go.jp (Satoru Tomura)
% BibTeX standard bibliography style `jplain'
	% version 0.10 for JBibTeX versions 0.10 or later, JLaTeX version 2.09.
	% by Shouichi Matsui, matsui@denken.junet

ENTRY
  { address
    author
    booktitle
    chapter
    edition
    editor
    howpublished
    institution
    journal
    key
    month
    note
    number
    organization
    pages
    publisher
    school
    series
    title
    type
    volume
    year
  }
  {}
  { label }

INTEGERS { output.state before.all mid.sentence after.sentence after.block }

INTEGERS { before.year }

FUNCTION {init.state.consts}
{ #0 'before.all :=
  #1 'mid.sentence :=
  #2 'after.sentence :=
  #3 'after.block :=
  #4 'before.year :=					% 1.00(1)
}

STRINGS { s t }

FUNCTION {output.nonnull}
{ 's :=
  output.state mid.sentence =
    { ", " * write$ }
    { output.state after.block =
	{ add.period$ write$
	  newline$
	  "\newblock " write$
	}
	{ output.state before.all =
	    'write$
	    { output.state before.year =		% 1.00(1)
		{ " " * write$ }
		{ add.period$ " " * write$ }
	      if$
	    }
	  if$
	}
      if$
      mid.sentence 'output.state :=
    }
  if$
  s
}

FUNCTION {output}
{ duplicate$ empty$
    'pop$
    'output.nonnull
  if$
}

FUNCTION {required.argument}
{ 't :=
  empty$
    {"Missing required argument " t * " in " * cite$ * warning$}
    'skip$
  if$
}

FUNCTION {required.exclusive.or.argument}
{ 't :=
  empty$
    { 's := 
      empty$
        { t " or " * s * " is missing in " * cite$ * warning$}
        'skip$
      if$
    }
    { 's :=
      empty$
        'skip$
        { "You can use only one of " t * " and " * s * " in " * cite$ * warning$}
      if$
    }
  if$
}

FUNCTION {required.and.or.argument}
{ 't := empty$
     { 's := empty$
         { "there's no " t * " and/or " * s * cite$ * warning$ }
         'skip$
       if$
     }
     { pop$ pop$ }
  if$
}

FUNCTION {optional.series.volume.number.argument}
{ series empty$
    { volume empty$
        { number empty$
            'skip$
            { "there's a number but no series in " cite$ * warning$ }
          if$
        }
        { number empty$
            { "there's a volume but no series in " cite$ * warning$ }
            { "you can use only one of volume and number in " cite$ * warning$}
          if$
        }
     if$
    }
    { volume empty$
        { number empty$
            { "there's a series but neither volume nor number in " cite$ * warning$ }
            'skip$
          if$
        }
        { number empty$
            'skip$
            { "you can use only one of volume and number in " cite$ * warning$ }
          if$
        }
     if$
   }
   if$
}            

FUNCTION {output.bibitem}
{ newline$
  "\bibitem{" write$
  cite$ write$
  "}" write$
  newline$
  before.all 'output.state :=
}

FUNCTION {fin.entry}
{ add.period$
  write$
  newline$
}

FUNCTION {new.block}
{ output.state before.all =
    'skip$
    { after.block 'output.state := }
  if$
}

FUNCTION {new.sentence}
{ output.state after.block =
    'skip$
    { output.state before.all =
	'skip$
	{ after.sentence 'output.state := }
      if$
    }
  if$
}

FUNCTION {not}
{   { #0 }
    { #1 }
  if$
}

FUNCTION {and}
{   'skip$
    { pop$ #0 }
  if$
}

FUNCTION {or}
{   { pop$ #1 }
    'skip$
  if$
}

FUNCTION {new.block.checka}
{ empty$
    'skip$
    'new.block
  if$
}

FUNCTION {new.block.checkb}
{ empty$
  swap$ empty$
  and
    'skip$
    'new.block
  if$
}

FUNCTION {new.sentence.checka}
{ empty$
    'skip$
    'new.sentence
  if$
}

FUNCTION {new.sentence.checkb}
{ empty$
  swap$ empty$
  and
    'skip$
    'new.sentence
  if$
}

FUNCTION {field.or.null}
{ duplicate$ empty$
    { pop$ "" }
    'skip$
  if$
}

FUNCTION {emphasize}
{ duplicate$ empty$
    { pop$ "" }
    { "{\em " swap$ * "}" * }
  if$
}

INTEGERS { nameptr namesleft numnames }

FUNCTION {format.names}					% 1.00(4), 2.00(4)
{ 's :=
  #1 'nameptr :=
  s num.names$ 'numnames :=
  numnames 'namesleft :=
    { namesleft #0 > }
    { s nameptr "{vv }{ll}{, jj}{, f.}" format.name$ 't :=
      nameptr #1 >
	{ namesleft #1 >
	    { ", " * t * }
	    { t "others" =
		{" et al." * }
		{" and " * t * }
	      if$
	    }
	  if$
	}
	't
      if$
      nameptr #1 + 'nameptr :=
      namesleft #1 - 'namesleft :=
    }
  while$
}

FUNCTION {format.authors}
{ author empty$
    { "" }
    { author format.names }
  if$
}

FUNCTION {add.colon}					% 2.00(5)
{ ": " *
}

FUNCTION {format.editors.inparen}			% 2.00(6)
{ editor empty$
    { "" }
    { editor format.names
      editor num.names$ #1 >
	{", eds." *}
	{", ed." *}
      if$
    }
  if$
}

FUNCTION {format.editors}
{ editor empty$
    { "" }
    { editor format.names
      editor num.names$ #1 >
	{"(eds.)" *}
	{"(ed.)" *}
      if$
    }
  if$
}

FUNCTION {n.dashify}
{ 't :=
  ""
    { t empty$ not }
    { t #1 #1 substring$ "-" =
	{ t #1 #2 substring$ "--" = not
	    { "--" *
	      t #2 global.max$ substring$ 't :=
	    }
	    {   { t #1 #1 substring$ "-" = }
		{ "-" *
		  t #2 global.max$ substring$ 't :=
		}
	      while$
	    }
	  if$
	}
	{ t #1 #1 substring$ *
	  t #2 global.max$ substring$ 't :=
	}
      if$
    }
  while$
}

FUNCTION {format.date}
{ before.year 'output.state :=				% 1.00(1)
  year empty$
    { month empty$
	{ "" }
	{ "there's a month but no year in " cite$ * warning$
          ""						% 1.00(5)
	}
      if$
    }
    { "(" year ")" * * }				% 1.00(5)
  if$
}

FUNCTION {tie.or.space.connect}
{ duplicate$ text.length$ #3 <
    { "~" }
    { "\ " }						% 1.00(6)
  if$
  swap$ * *
}

FUNCTION {output.volume}
{ 
  volume empty$
    'skip$
    { "Vol.~" volume * output}
  if$

}

FUNCTION {output.number}
{
  number empty$
    'skip$
    { "No.~" number * output}
  if$
}

FUNCTION {output.series.volume.number}
{ series empty$
    { output.volume
      output.number }
    { series output
      output.volume
      output.number }
 if$
}

FUNCTION {format.edition}
{ edition empty$
    { "" }
    { output.state mid.sentence =
	{ edition "l" change.case$ " edition" * }
	{ edition "t" change.case$ " edition" * }
      if$
    }
  if$
}

INTEGERS { multiresult }

FUNCTION {multi.page.check}
{ 't :=
  #0 'multiresult :=
    { multiresult not
      t empty$ not
      and
    }
    { t #1 #1 substring$
      duplicate$ "-" =
      swap$ duplicate$ "," =
      swap$ "+" =
      or or
	{ #1 'multiresult := }
	{ t #2 global.max$ substring$ 't := }
      if$
    }
  while$
  multiresult
}

FUNCTION {format.pages}					% 1.00(7)
{ pages empty$
    { "" }
    { pages multi.page.check
	{ "pp." pages n.dashify tie.or.space.connect }
	{ "p." pages tie.or.space.connect }
      if$
    }
  if$
}

FUNCTION {format.vol.num.pages}				% 1.00(8)
{ volume empty$
  { ""}
  { " Vol.~" volume * }
  if$ 
  number empty$
    'skip$
    { volume empty$
	{ "there's a number but no volume in " cite$ * warning$ }
	{ "," *}
      if$
      " No.~" number * *
    }
  if$
  pages empty$
    'skip$
    { duplicate$ empty$
	{ pop$ format.pages }
	{ ", " * format.pages * }
      if$
    }
  if$
}

FUNCTION {format.chapter.pages}
{ chapter empty$
    'format.pages
    { type empty$
	{ "chapter" chapter tie.or.space.connect }
        { type "l" change.case$ chapter tie.or.space.connect }
      if$
      pages empty$
	'skip$
	{ ", " * format.pages * }
      if$
    }
  if$
}

FUNCTION {format.in.ed.booktitle}
{ booktitle empty$
    { "" }
    { booktitle emphasize
      editor empty$
	'skip$
	{ " (" * format.editors.inparen * ")" *}	% 1.00(9), 2.00(6)
      if$
    }
  if$
}

FUNCTION {empty.misc.check}
{ author empty$ title empty$ howpublished empty$
  month empty$ year empty$ note empty$
  and and and and and
  key empty$ not and
    { "all relevant fields are empty in " cite$ * warning$ }
    'skip$
  if$
}

FUNCTION {format.thesis.type}
{ type empty$
    'skip$
    { pop$
      type "t" change.case$
    }
  if$
}

FUNCTION {format.tr.number}
{ type empty$
    { "Technical Report" }
    {type}
  if$
  number empty$
    { "t" change.case$ }
    { " " number * * }
  if$
}

FUNCTION {format.article.crossref}			% 2.00(8)
{ key empty$
    { journal empty$
	{ "need key or journal for " cite$ * " to crossref " * crossref *
	  warning$
	  ""
	}
	{ journal emphasize }				% 1.00(10)
      if$
    }
    { "In " key * }
  if$
  " \cite{" * crossref * "}" *
}

FUNCTION {format.crossref.editor}			% 1.00(11)
{ editor #1 "{vv }{ll}" format.name$
  editor num.names$ duplicate$
  #2 >
    {pop$ " et al." * }
    { #2 <
	'skip$
	{ editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
	    {" et al." * }
	    {" and " * editor #2 "{vv }{ll}" format.name$ * }
	  if$
	}
      if$
    }
  if$
}

FUNCTION {format.book.crossref}				% 2.00(8)
{ editor empty$
  editor field.or.null author field.or.null =
  or
    { key empty$
	{ series empty$
	    { "need editor, key, or series for " cite$ * " to crossref " *
	      crossref * warning$
	      ""
	    }
	    { series emphasize }			% 1.00(10)
	  if$
	}
	{ "In " key * }
      if$
    }
    { format.crossref.editor }
  if$
  " \cite{" * crossref * "}" *
  volume empty$
    { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ }
    { * "Vol." * volume tie.or.space.connect }
  if$
}

FUNCTION {format.incoll.inproc.crossref}		% 2.00(8)
{ editor empty$
  editor field.or.null author field.or.null =
  or
    { key empty$
	{ booktitle empty$
	    { "need editor, key, or booktitle for " cite$ * " to crossref " *
	      crossref * warning$
	      ""
	    }
	    { booktitle emphasize }			% 1.00(10)
	  if$
	}
	{ "In " key * }
      if$
    }
    { format.crossref.editor }
  if$
  " \cite{" * crossref * "}" *
}

FUNCTION {article}
{ 
%%%%
  author  "author"  required.argument
  title   "title"   required.argument
  journal "journal" required.argument
  year    "year"    required.argument
%%%% jssst
  volume  "volume"  
  number  "number"  
     required.and.or.argument
  pages   "pages"   required.argument
%%%%
  output.bibitem 
  format.authors add.colon				% 2.00(5)
  title output
  crossref missing$
    { journal emphasize output
      format.vol.num.pages output			% 1.00(12)
      format.date output
    }
    { format.article.crossref output.nonnull
      format.pages output
    }
  if$
  new.block
  note output
  fin.entry
}

FUNCTION {book}
{ 
%%%%
  author  "author"
  editor  "editor"
    required.exclusive.or.argument
  title   "title"  required.argument
  publisher "publisher" required.argument
  year    "year" required.argument
  optional.series.volume.number.argument
%%%%
  output.bibitem
  author empty$
    { format.editors}
    { format.authors}
  if$
  add.colon						% 2.00(5)
  title emphasize output
  crossref missing$
    { output.series.volume.number
      publisher output
      address output
    }
    { new.block
      format.book.crossref output.nonnull
    }
  if$
  format.edition output
  format.date output
  new.block
  note output
  fin.entry
}

FUNCTION {booklet}
{
%%%%
  title   "title"   required.argument
%%%% jssst
  author  "author"  required.argument
%%%%
  output.bibitem
  format.authors add.colon				% 2.00(5)
  title output
  howpublished output
  address output
  format.date output
  new.block
  note output
  fin.entry
}

FUNCTION {inbook}
{ 
%%%%
  author  "author"
  editor  "editor"
     required.exclusive.or.argument
  title   "title"  required.argument
  chapter "chapter"
  pages   "pages"
     required.and.or.argument
  publisher  "publisher" required.argument
  year       "year"      required.argument

  optional.series.volume.number.argument
%%%%
  output.bibitem 
  author empty$
    { format.editors}
    { format.authors}
  if$
  add.colon						% 2.00(5)
  title emphasize output
  crossref missing$
    { output.series.volume.number
      format.chapter.pages output
      publisher output
    }
    { format.chapter.pages output
      new.block
      format.book.crossref output.nonnull
    }
  if$
  format.edition output
  format.date output					% 1.00(13)
  new.block
  note output
  fin.entry
}

FUNCTION {incollection}
{
%%%%
  author    "author"    required.argument
  title     "title"     required.argument
  booktitle "booktitle" required.argument
  publisher "publisher" required.argument
  year      "year"      required.argument

  optional.series.volume.number.argument
%%%%
  output.bibitem
  format.authors add.colon				% 2.00(5)
  title output
  crossref missing$
    { format.in.ed.booktitle output
      output.series.volume.number
      publisher output
      address output
      format.edition output
      format.chapter.pages output			% 1.00(13)
      format.date output
    }
    { format.incoll.inproc.crossref output.nonnull
      format.chapter.pages output
    }
  if$
  new.block
  note output
  fin.entry
}

FUNCTION {inproceedings}
{
%%%%
  author    "author"    required.argument
  title     "title"     required.argument
  year      "year"      required.argument

  optional.series.volume.number.argument
%%%%
  output.bibitem 
  format.authors add.colon				% 2.00(5)
  title output
  crossref missing$
    { format.in.ed.booktitle output
      booktitle "booktitle" required.argument
      output.series.volume.number
      address output
      organization output
      publisher output
      format.pages output
      format.date output				% 1.00(13)
    }
    { format.incoll.inproc.crossref output.nonnull
      format.pages output
    }
  if$
  new.block
  note output
  fin.entry
}

FUNCTION {conference} { inproceedings }

FUNCTION {manual}
{	
%%%%
  title   "title"    required.argument
%%%% jssst
  author   "author"
  organization "organazaion"
     required.exclusive.or.argument
%%%%
  output.bibitem
  author empty$
    { organization}
    { format.authors}
  if$
  add.colon						% 2.00(5)
  title emphasize output
  author empty$
    'skip$
    { organization output }
  if$
  address output
  format.edition output
  format.date output
  new.block
  note output
  fin.entry
}

FUNCTION {mastersthesis}
{
%%%%
  author   "author"  required.argument
  title    "title"   required.argument
  school   "school"  required.argument
  year     "year"    required.argument
%%%%
  output.bibitem
  format.authors add.colon				% 2.00(5)
  title output
  "Master's thesis"
  format.thesis.type output.nonnull
  school output
  address output
  format.date output
  new.block
  note output
  fin.entry
}

FUNCTION {misc}
{
%%%%
%%%% jssst
  author "author" required.argument
  title  "title"  required.argument
%%%%
  output.bibitem
  format.authors add.colon				% 2.00(5)
  title output
  howpublished output
  format.date output
  new.block
  note output
  fin.entry
  empty.misc.check
}

FUNCTION {phdthesis}
{
%%%%
  author   "author"  required.argument
  title    "title"   required.argument
  school   "school"  required.argument
  year     "year"    required.argument
%%%%
  output.bibitem 
  format.authors add.colon				% 2.00(5)
  title output						% 2.00(9)
  "PhD Thesis"
  format.thesis.type output.nonnull
  school output
  address output
  format.date output
  new.block
  note output
  fin.entry
}

FUNCTION {proceedings}
{
%%%%
  title  "title"  required.argument
  year   "year"   required.argument

  optional.series.volume.number.argument
%%%% jssst
  editor  "editor"
  organization "organization"
      required.exclusive.or.argument 
%%%%
  output.bibitem 
  editor empty$
    { organization }
    { format.editors }
  if$
  add.colon						% 2.00(5)
  title emphasize output
  output.series.volume.number
  address output
  editor empty$
    'skip$
    { organization output }
  if$
  publisher output
  format.date output
  new.block
  note output
  fin.entry
}

FUNCTION {techreport}
{
%%%%
  author   "author"   required.argument
  title    "title"    required.argument
  institution "institution" required.argument
  year     "year"     required.argument
%%%%
  output.bibitem
  format.authors add.colon				% 2.00(5)
  title output
  format.tr.number output.nonnull
  institution output
  address output
  format.date output
  new.block
  note output
  fin.entry
}

FUNCTION {unpublished}
{
%%%%
  author   "author"   required.argument
  title    "title"    required.argument
  note     "note"     required.argument
%%%%
  output.bibitem
  format.authors add.colon				% 2.00(5)
  title output
  format.date output
  new.block
  note output
  fin.entry
}

FUNCTION {default.type} { misc }

MACRO {jan} {"January"}

MACRO {feb} {"February"}

MACRO {mar} {"March"}

MACRO {apr} {"April"}

MACRO {may} {"May"}

MACRO {jun} {"June"}

MACRO {jul} {"July"}

MACRO {aug} {"August"}

MACRO {sep} {"September"}

MACRO {oct} {"October"}

MACRO {nov} {"November"}

MACRO {dec} {"December"}

MACRO {acmcs} {"ACM Computing Surveys"}

MACRO {acta} {"Acta Informatica"}

MACRO {cacm} {"Communications of the ACM"}

MACRO {ibmjrd} {"IBM Journal of Research and Development"}

MACRO {ibmsj} {"IBM Systems Journal"}

MACRO {ieeese} {"IEEE Transactions on Software Engineering"}

MACRO {ieeetc} {"IEEE Transactions on Computers"}

MACRO {ieeetcad}
 {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"}

MACRO {ipl} {"Information Processing Letters"}

MACRO {jacm} {"Journal of the ACM"}

MACRO {jcss} {"Journal of Computer and System Sciences"}

MACRO {scp} {"Science of Computer Programming"}

MACRO {sicomp} {"SIAM Journal on Computing"}

MACRO {tocs} {"ACM Transactions on Computer Systems"}

MACRO {tods} {"ACM Transactions on Database Systems"}

MACRO {tog} {"ACM Transactions on Graphics"}

MACRO {toms} {"ACM Transactions on Mathematical Software"}

MACRO {toois} {"ACM Transactions on Office Information Systems"}

MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"}

MACRO {tcs} {"Theoretical Computer Science"}

READ

STRINGS { longest.label }

INTEGERS { number.label longest.label.width }

FUNCTION {initialize.longest.label}
{ "" 'longest.label :=
  #1 'number.label :=
  #0 'longest.label.width :=
}

FUNCTION {longest.label.pass}
{ number.label int.to.str$ 'label :=
  number.label #1 + 'number.label :=
  label width$ longest.label.width >
    { label 'longest.label :=
      label width$ 'longest.label.width :=
    }
    'skip$
  if$
}

EXECUTE {initialize.longest.label}

ITERATE {longest.label.pass}

FUNCTION {begin.bib}
{ preamble$ empty$
    'skip$
    { preamble$ write$ newline$ }
  if$
  "\begin{thebibliography}{"  longest.label  * "}" * write$ newline$
}

EXECUTE {begin.bib}

EXECUTE {init.state.consts}

ITERATE {call.type$}

FUNCTION {end.bib}
{ newline$
  "\end{thebibliography}" write$ newline$
}

EXECUTE {end.bib}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ipsjunsrt.bst	Thu Mar 10 18:47:54 2011 +0900
@@ -0,0 +1,1 @@
+% ipsjunsrt.bst 15-Jun-07 by Hiroshi Nakashima (ver 2.12)
% ipsjunsrt.bst 30-Jan-02 by Hiroshi Nakashima (ver 2.00)
% ipsjunsrt.bst 28-Dec-93 by Hiroshi Nakashima (ver 1.00)
% jssst.bst tomura@etl.go.jp (Satoru Tomura)
% BibTeX standard bibliography style `jplain'
	% version 0.10 for JBibTeX versions 0.10 or later, JLaTeX version 2.09.
	% by Shouichi Matsui, matsui@denken.junet

ENTRY
  { address
    author
    booktitle
    chapter
    edition
    editor
    howpublished
    institution
    journal
    key
    month
    note
    number
    organization
    pages
    publisher
    school
    series
    title
    type
    volume
    year
    yomi
  }
  {}
  { label }

INTEGERS { output.state before.all mid.sentence after.sentence after.block }

INTEGERS { before.year }

FUNCTION {init.state.consts}
{ #0 'before.all :=
  #1 'mid.sentence :=
  #2 'after.sentence :=
  #3 'after.block :=
  #4 'before.year :=					% 1.00(1)
}

STRINGS { s t }

FUNCTION {is.kanji}
{ is.kanji.str$ }					% 1.00(2), 2.00(1)

FUNCTION {output.nonnull}
{ 's :=
  output.state mid.sentence =
    { duplicate$ is.kanji				% 2.00(2)
	{ "C" * write$ }
	{ ", " * write$ }
      if$
    }
    { output.state after.block =
	{ add.period$ write$
	  newline$
	  "\newblock " write$
	}
	{ output.state before.all =
	    'write$
	    { output.state before.year =		% 1.00(1)
		{ " " * write$ }
		{ add.period$ " " * write$ }
	      if$
	    }
	  if$
	}
      if$
      mid.sentence 'output.state :=
    }
  if$
  s
}

FUNCTION {output}
{ duplicate$ empty$
    'pop$
    'output.nonnull
  if$
}

FUNCTION {required.argument}
{ 't :=
  empty$
    {"Missing required argument " t * " in " * cite$ * warning$}
    'skip$
  if$
}

FUNCTION {required.exclusive.or.argument}
{ 't :=
  empty$
    { 's := 
      empty$
        { t " or " * s * " is missing in " * cite$ * warning$}
        'skip$
      if$
    }
    { 's :=
      empty$
        'skip$
        { "You can use only one of " t * " and " * s * " in " * cite$ * warning$}
      if$
    }
  if$
}

FUNCTION {required.and.or.argument}
{ 't := empty$
     { 's := empty$
         { "there's no " t * " and/or " * s * cite$ * warning$ }
         'skip$
       if$
     }
     { pop$ pop$ }
  if$
}

FUNCTION {optional.series.volume.number.argument}
{ series empty$
    { volume empty$
        { number empty$
            'skip$
            { "there's a number but no series in " cite$ * warning$ }
          if$
        }
        { number empty$
            { "there's a volume but no series in " cite$ * warning$ }
            { "you can use only one of volume and number in " cite$ * warning$}
          if$
        }
     if$
    }
    { volume empty$
        { number empty$
            { "there's a series but neither volume nor number in " cite$ * warning$ }
            'skip$
          if$
        }
        { number empty$
            'skip$
            { "you can use only one of volume and number in " cite$ * warning$ }
          if$
        }
     if$
   }
   if$
}            

FUNCTION {output.bibitem}
{ newline$
  "\bibitem{" write$
  cite$ write$
  "}" write$
  newline$
  before.all 'output.state :=
}

FUNCTION {fin.entry}
{ add.period$
  write$
  newline$
}

FUNCTION {new.block}
{ output.state before.all =
    'skip$
    { after.block 'output.state := }
  if$
}

FUNCTION {new.sentence}
{ output.state after.block =
    'skip$
    { output.state before.all =
	'skip$
	{ after.sentence 'output.state := }
      if$
    }
  if$
}

FUNCTION {not}
{   { #0 }
    { #1 }
  if$
}

FUNCTION {and}
{   'skip$
    { pop$ #0 }
  if$
}

FUNCTION {or}
{   { pop$ #1 }
    'skip$
  if$
}

FUNCTION {new.block.checka}
{ empty$
    'skip$
    'new.block
  if$
}

FUNCTION {new.block.checkb}
{ empty$
  swap$ empty$
  and
    'skip$
    'new.block
  if$
}

FUNCTION {new.sentence.checka}
{ empty$
    'skip$
    'new.sentence
  if$
}

FUNCTION {new.sentence.checkb}
{ empty$
  swap$ empty$
  and
    'skip$
    'new.sentence
  if$
}

FUNCTION {field.or.null}
{ duplicate$ empty$
    { pop$ "" }
    'skip$
  if$
}

FUNCTION {emphasize}
{ duplicate$ empty$
    { pop$ "" }
    { duplicate$ is.kanji
        'skip$						% 1.00(3)
        { "{\em " swap$ * "}" * }			% 2.00(3)
      if$
    }
  if$
}

INTEGERS { nameptr namesleft numnames }

FUNCTION {format.names}					% 1.00(4), 2.00(4)
{ 's :=
  #1 'nameptr :=
  s num.names$ 'numnames :=
  numnames 'namesleft :=
    { namesleft #0 > }
    { s nameptr "{ff}{ll}" format.name$ duplicate$ is.kanji
	{ duplicate$ text.length$ #6 >
	    { 't := }
	    { pop$ s nameptr "{ff}@{ll}" format.name$ 't := }
	  if$
	}
        { pop$ s nameptr "{vv }{ll}{, jj}{, f.}" format.name$ 't := }
      if$
      nameptr #1 >
	{ namesleft #1 >
	    { s is.kanji
		{ "C" }
		{ ", " }
	      if$
	      * t * }
	    { t "others" =
		{ s is.kanji
			{"ق" * }
			{" et al." * }
		      if$
                }
		{ s is.kanji
			{"C" * t * }	% put "," here for Kanji (H.N.)
			{" and " * t * }
	     	      if$
		}
	      if$
	    }
	  if$
	}
	't
      if$
      nameptr #1 + 'nameptr :=
      namesleft #1 - 'namesleft :=
    }
  while$
}

FUNCTION {format.authors}
{ author empty$
    { "" }
    { author format.names }
  if$
}

FUNCTION {add.colon}					% 2.00(5)
{ duplicate$ is.kanji
    { "\F" * }						% 2.12(1)
    { ": " * }
  if$
}

FUNCTION {format.editors.inparen}			% 2.00(6)
{ editor empty$
    { "" }
    { editor format.names
      editor num.names$ #1 >
	{ editor is.kanji
		{"C" * } {", eds." *} if$
	}
	{ editor is.kanji
		{"C" *}  {", ed." *} if$
	}
      if$
    }
  if$
}

FUNCTION {format.editors}
{ editor empty$
    { "" }
    { editor format.names
      editor num.names$ #1 >
	{ editor is.kanji
		{"iҁj" * } {"(eds.)" *} if$		% 2.00(7)
	}
	{ editor is.kanji
		{"iҁj" *}  {"(ed.)" *} if$		% 2.00(7)
	}
      if$
    }
  if$
}

FUNCTION {n.dashify}
{ 't :=
  ""
    { t empty$ not }
    { t #1 #1 substring$ "-" =
	{ t #1 #2 substring$ "--" = not
	    { "--" *
	      t #2 global.max$ substring$ 't :=
	    }
	    {   { t #1 #1 substring$ "-" = }
		{ "-" *
		  t #2 global.max$ substring$ 't :=
		}
	      while$
	    }
	  if$
	}
	{ t #1 #1 substring$ *
	  t #2 global.max$ substring$ 't :=
	}
      if$
    }
  while$
}

FUNCTION {format.date}
{ before.year 'output.state :=				% 1.00(1)
  year empty$
    { month empty$
	{ "" }
	{ "there's a month but no year in " cite$ * warning$
          ""						% 1.00(5)
	}
      if$
    }
    { "(" year ")" * * }				% 1.00(5)
  if$
}

FUNCTION {tie.or.space.connect}
{ duplicate$ text.length$ #3 <
    { "~" }
    { "\ " }						% 1.00(6)
  if$
  swap$ * *
}

FUNCTION {output.volume}
{ 
  volume empty$
    'skip$
    { "Vol.~" volume * output}
  if$

}

FUNCTION {output.number}
{
  number empty$
    'skip$
    { "No.~" number * output}
  if$
}

FUNCTION {output.series.volume.number}
{ series empty$
    { output.volume
      output.number }
    { series is.kanji
      volume empty$
      number empty$
      or
      and
        { series " " * volume * number * output}
        { series output
          output.volume
          output.number}
      if$
   }
 if$
}

FUNCTION {format.edition}
{ edition empty$
    { "" }
    { output.state mid.sentence =
	{ edition "l" change.case$ " edition" * }
	{ edition "t" change.case$ " edition" * }
      if$
    }
  if$
}

INTEGERS { multiresult }

FUNCTION {multi.page.check}
{ 't :=
  #0 'multiresult :=
    { multiresult not
      t empty$ not
      and
    }
    { t #1 #1 substring$
      duplicate$ "-" =
      swap$ duplicate$ "," =
      swap$ "+" =
      or or
	{ #1 'multiresult := }
	{ t #2 global.max$ substring$ 't := }
      if$
    }
  while$
  multiresult
}

FUNCTION {format.pages}					% 1.00(7)
{ pages empty$
    { "" }
    { pages multi.page.check
	{ "pp." pages n.dashify tie.or.space.connect }
	{ "p." pages tie.or.space.connect }
      if$
    }
  if$
}

FUNCTION {format.vol.num.pages}				% 1.00(8)
{ volume empty$
  { ""}
  { " Vol.~" volume * }
  if$ 
  number empty$
    'skip$
    { volume empty$
	{ "there's a number but no volume in " cite$ * warning$ }
	{ "," *}
      if$
      " No.~" number * *
    }
  if$
  pages empty$
    'skip$
    { duplicate$ empty$
	{ pop$ format.pages }
	{ ", " * format.pages * }
      if$
    }
  if$
}

FUNCTION {format.chapter.pages}
{ chapter empty$
    'format.pages
    { type empty$
	{ "chapter" chapter tie.or.space.connect }
        { type is.kanji 
             { chapter type tie.or.space.connect }
             { type "l" change.case$ chapter tie.or.space.connect }
          if$
        }
      if$
      pages empty$
	'skip$
	{ ", " * format.pages * }
      if$
    }
  if$
}

FUNCTION {format.in.ed.booktitle}
{ booktitle empty$
    { "" }
    { booktitle emphasize
      editor empty$
	'skip$
	{ booktitle is.kanji
	    { "i" * format.editors.inparen * "j" *}	% 2.00(6,7)
	    { " (" * format.editors.inparen * ")" *}	% 1.00(9), 2.00(6)
	  if$
	}
      if$
    }
  if$
}

FUNCTION {empty.misc.check}
{ author empty$ title empty$ howpublished empty$
  month empty$ year empty$ note empty$
  and and and and and
  key empty$ not and
    { "all relevant fields are empty in " cite$ * warning$ }
    'skip$
  if$
}

FUNCTION {format.thesis.type}
{ type empty$
    'skip$
    { pop$
      type "t" change.case$
    }
  if$
}

FUNCTION {format.tr.number}
{ type empty$
    { title empty$
        { "Technical Report" }
        { title is.kanji
            { "Zp" }
            { "Technical Report" }
          if$
        }
      if$
    }
    {type}
  if$
  number empty$
    { "t" change.case$ }
    { " " number * * }
  if$
}

FUNCTION {format.article.crossref}			% 2.00(8)
{ key empty$
    { journal empty$
	{ "need key or journal for " cite$ * " to crossref " * crossref *
	  warning$
	  ""
	}
	{ journal emphasize }				% 1.00(10)
      if$
    }
    { "In " key * }
  if$
  " \cite{" * crossref * "}" *
}

FUNCTION {format.crossref.editor}			% 1.00(11)
{ editor #1
  editor is.kanji { "{ff}" } { "{vv }{ll}" } if$
  format.name$
  editor num.names$ duplicate$
  #2 >
    { editor is.kanji
	  {pop$ "ق" *} {pop$ " et al." * } if$
    }
    { #2 <
	'skip$
	{ editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
	    { editor is.kanji
		{"ق" *} {" et al." * } if$
	    }
	    { editor is.kanji
		{"E" * editor #2 "{ff}" format.name$ * }
		{" and " * editor #2 "{vv }{ll}" format.name$ * }
	      if$
	    }
	  if$
	}
      if$
    }
  if$
}

FUNCTION {format.book.crossref}				% 2.00(8)
{ editor empty$
  editor field.or.null author field.or.null =
  or
    { key empty$
	{ series empty$
	    { "need editor, key, or series for " cite$ * " to crossref " *
	      crossref * warning$
	      ""
	    }
	    { series emphasize }			% 1.00(10)
	  if$
	}
	{ "In " key * }
      if$
    }
    { format.crossref.editor }
  if$
  " \cite{" * crossref * "}" *
  volume empty$
    { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ }
    { duplicate$ is.kanji { "C" } { ", "} if$ *
      "Vol." * volume tie.or.space.connect
    }
  if$
}

FUNCTION {format.incoll.inproc.crossref}		% 2.00(8)
{ editor empty$
  editor field.or.null author field.or.null =
  or
    { key empty$
	{ booktitle empty$
	    { "need editor, key, or booktitle for " cite$ * " to crossref " *
	      crossref * warning$
	      ""
	    }
	    { booktitle emphasize }			% 1.00(10)
	  if$
	}
	{ "In " key * }
      if$
    }
    { format.crossref.editor }
  if$
  " \cite{" * crossref * "}" *
}

FUNCTION {article}
{ 
%%%%
  author  "author"  required.argument
  title   "title"   required.argument
  journal "journal" required.argument
  year    "year"    required.argument
%%%% jssst
  volume  "volume"  
  number  "number"  
     required.and.or.argument
  pages   "pages"   required.argument
%%%%
  output.bibitem 
  format.authors add.colon				% 2.00(5)
  title output
  crossref missing$
    { journal emphasize output
      format.vol.num.pages output			% 1.00(12)
      format.date output
    }
    { format.article.crossref output.nonnull
      format.pages output
    }
  if$
  new.block
  note output
  fin.entry
}

FUNCTION {book}
{ 
%%%%
  author  "author"
  editor  "editor"
    required.exclusive.or.argument
  title   "title"  required.argument
  publisher "publisher" required.argument
  year    "year" required.argument
  optional.series.volume.number.argument
%%%%
  output.bibitem
  author empty$
    { format.editors}
    { format.authors}
  if$
  add.colon						% 2.00(5)
  title emphasize output
  crossref missing$
    { output.series.volume.number
      publisher output
      address output
    }
    { new.block
      format.book.crossref output.nonnull
    }
  if$
  format.edition output
  format.date output
  new.block
  note output
  fin.entry
}

FUNCTION {booklet}
{
%%%%
  title   "title"   required.argument
%%%% jssst
  author  "author"  required.argument
%%%%
  output.bibitem
  format.authors add.colon				% 2.00(5)
  title output
  howpublished output
  address output
  format.date output
  new.block
  note output
  fin.entry
}

FUNCTION {inbook}
{ 
%%%%
  author  "author"
  editor  "editor"
     required.exclusive.or.argument
  title   "title"  required.argument
  chapter "chapter"
  pages   "pages"
     required.and.or.argument
  publisher  "publisher" required.argument
  year       "year"      required.argument

  optional.series.volume.number.argument
%%%%
  output.bibitem 
  author empty$
    { format.editors}
    { format.authors}
  if$
  add.colon						% 2.00(5)
  title emphasize output
  crossref missing$
    { output.series.volume.number
      format.chapter.pages output
      publisher output
    }
    { format.chapter.pages output
      new.block
      format.book.crossref output.nonnull
    }
  if$
  format.edition output
  format.date output					% 1.00(13)
  new.block
  note output
  fin.entry
}

FUNCTION {incollection}
{
%%%%
  author    "author"    required.argument
  title     "title"     required.argument
  booktitle "booktitle" required.argument
  publisher "publisher" required.argument
  year      "year"      required.argument

  optional.series.volume.number.argument
%%%%
  output.bibitem
  format.authors add.colon				% 2.00(5)
  title output
  crossref missing$
    { format.in.ed.booktitle output
      output.series.volume.number
      publisher output
      address output
      format.edition output
      format.chapter.pages output			% 1.00(13)
      format.date output
    }
    { format.incoll.inproc.crossref output.nonnull
      format.chapter.pages output
    }
  if$
  new.block
  note output
  fin.entry
}

FUNCTION {inproceedings}
{
%%%%
  author    "author"    required.argument
  title     "title"     required.argument
  year      "year"      required.argument

  optional.series.volume.number.argument
%%%%
  output.bibitem 
  format.authors add.colon				% 2.00(5)
  title output
  crossref missing$
    { format.in.ed.booktitle output
      booktitle "booktitle" required.argument
      output.series.volume.number
      address output
      organization output
      publisher output
      format.pages output
      format.date output				% 1.00(13)
    }
    { format.incoll.inproc.crossref output.nonnull
      format.pages output
    }
  if$
  new.block
  note output
  fin.entry
}

FUNCTION {conference} { inproceedings }

FUNCTION {manual}
{	
%%%%
  title   "title"    required.argument
%%%% jssst
  author   "author"
  organization "organazaion"
     required.exclusive.or.argument
%%%%
  output.bibitem
  author empty$
    { organization}
    { format.authors}
  if$
  add.colon						% 2.00(5)
  title emphasize output
  author empty$
    'skip$
    { organization output }
  if$
  address output
  format.edition output
  format.date output
  new.block
  note output
  fin.entry
}

FUNCTION {mastersthesis}
{
%%%%
  author   "author"  required.argument
  title    "title"   required.argument
  school   "school"  required.argument
  year     "year"    required.argument
%%%%
  output.bibitem
  format.authors add.colon				% 2.00(5)
  title output
  author empty$
    { "Master's thesis" }
    { author is.kanji
        { "Cm_" }  
        { "Master's thesis" }
      if$
    }
  if$
  format.thesis.type output.nonnull
  school output
  address output
  format.date output
  new.block
  note output
  fin.entry
}

FUNCTION {misc}
{
%%%%
%%%% jssst
  author "author" required.argument
  title  "title"  required.argument
%%%%
  output.bibitem
  format.authors add.colon				% 2.00(5)
  title output
  howpublished output
  format.date output
  new.block
  note output
  fin.entry
  empty.misc.check
}

FUNCTION {phdthesis}
{
%%%%
  author   "author"  required.argument
  title    "title"   required.argument
  school   "school"  required.argument
  year     "year"    required.argument
%%%%
  output.bibitem 
  format.authors add.colon				% 2.00(5)
  title output						% 2.00(9)
  author empty$
    { "PhD Thesis" }
    { author is.kanji
        { "m_" }
        { "PhD Thesis" }
      if$
    }
  if$
  format.thesis.type output.nonnull
  school output
  address output
  format.date output
  new.block
  note output
  fin.entry
}

FUNCTION {proceedings}
{
%%%%
  title  "title"  required.argument
  year   "year"   required.argument

  optional.series.volume.number.argument
%%%% jssst
  editor  "editor"
  organization "organization"
      required.exclusive.or.argument 
%%%%
  output.bibitem 
  editor empty$
    { organization }
    { format.editors }
  if$
  add.colon						% 2.00(5)
  title emphasize output
  output.series.volume.number
  address output
  editor empty$
    'skip$
    { organization output }
  if$
  publisher output
  format.date output
  new.block
  note output
  fin.entry
}

FUNCTION {techreport}
{
%%%%
  author   "author"   required.argument
  title    "title"    required.argument
  institution "institution" required.argument
  year     "year"     required.argument
%%%%
  output.bibitem
  format.authors add.colon				% 2.00(5)
  title output
  format.tr.number output.nonnull
  institution output
  address output
  format.date output
  new.block
  note output
  fin.entry
}

FUNCTION {unpublished}
{
%%%%
  author   "author"   required.argument
  title    "title"    required.argument
  note     "note"     required.argument
%%%%
  output.bibitem
  format.authors add.colon				% 2.00(5)
  title output
  format.date output
  new.block
  note output
  fin.entry
}

FUNCTION {default.type} { misc }

MACRO {jan} {"January"}

MACRO {feb} {"February"}

MACRO {mar} {"March"}

MACRO {apr} {"April"}

MACRO {may} {"May"}

MACRO {jun} {"June"}

MACRO {jul} {"July"}

MACRO {aug} {"August"}

MACRO {sep} {"September"}

MACRO {oct} {"October"}

MACRO {nov} {"November"}

MACRO {dec} {"December"}

MACRO {acmcs} {"ACM Computing Surveys"}

MACRO {acta} {"Acta Informatica"}

MACRO {cacm} {"Communications of the ACM"}

MACRO {ibmjrd} {"IBM Journal of Research and Development"}

MACRO {ibmsj} {"IBM Systems Journal"}

MACRO {ieeese} {"IEEE Transactions on Software Engineering"}

MACRO {ieeetc} {"IEEE Transactions on Computers"}

MACRO {ieeetcad}
 {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"}

MACRO {ipl} {"Information Processing Letters"}

MACRO {jacm} {"Journal of the ACM"}

MACRO {jcss} {"Journal of Computer and System Sciences"}

MACRO {scp} {"Science of Computer Programming"}

MACRO {sicomp} {"SIAM Journal on Computing"}

MACRO {tocs} {"ACM Transactions on Computer Systems"}

MACRO {tods} {"ACM Transactions on Database Systems"}

MACRO {tog} {"ACM Transactions on Graphics"}

MACRO {toms} {"ACM Transactions on Mathematical Software"}

MACRO {toois} {"ACM Transactions on Office Information Systems"}

MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"}

MACRO {tcs} {"Theoretical Computer Science"}

READ

STRINGS { longest.label }

INTEGERS { number.label longest.label.width }

FUNCTION {initialize.longest.label}
{ "" 'longest.label :=
  #1 'number.label :=
  #0 'longest.label.width :=
}

FUNCTION {longest.label.pass}
{ number.label int.to.str$ 'label :=
  number.label #1 + 'number.label :=
  label width$ longest.label.width >
    { label 'longest.label :=
      label width$ 'longest.label.width :=
    }
    'skip$
  if$
}

EXECUTE {initialize.longest.label}

ITERATE {longest.label.pass}

FUNCTION {begin.bib}
{ preamble$ empty$
    'skip$
    { preamble$ write$ newline$ }
  if$
  "\begin{thebibliography}{"  longest.label  * "}" * write$ newline$
}

EXECUTE {begin.bib}

EXECUTE {init.state.consts}

ITERATE {call.type$}

FUNCTION {end.bib}
{ newline$
  "\end{thebibliography}" write$ newline$
}

EXECUTE {end.bib}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mediabb.sty	Thu Mar 10 18:47:54 2011 +0900
@@ -0,0 +1,99 @@
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{mediabb}[2006/10/26 v1.9 iNOUE Koich! <inoue@ma.ns.musashi-tech.ac.jp>]
+\@ifpackageloaded{graphics}{}{\RequirePackage[dvipdfm]{graphicx}}
+\define@key{Gin}{usebb}[true]{\expandafter\let\expandafter\if@usebb\csname if#1\endcsname}
+\let\if@usebb\iffalse
+\define@key{Gin}{mediaboxonly}[/MediaBox]{\@ifundefined{Gread@find@#1}%
+  {\def\Gread@rect@box{/MediaBox}\expandafter\let\expandafter\if@Gread@find@only\csname if#1\endcsname}%
+  {\def\Gread@rect@box{#1}\let\if@Gread@find@only\iftrue}}
+\let\if@Gread@find@only\iffalse
+\def\Gread@rect@box{/MediaBox}
+\define@key{Gin}{autoebb}[always]{\csname Gread@ebb@#1\endcsname}
+\def\Gread@ebb@always{\let\if@Gread@ebb@always\iftrue}
+\let\if@Gread@ebb@always\iffalse
+\let\Gread@ebb@true\Gread@ebb@always
+\def\Gread@ebb@never{\let\if@Gread@ebb@never\iftrue}
+\let\Gread@ebb@false\Gread@ebb@never
+\let\if@Gread@ebb@never\iffalse
+\let\Ginclude@pdf\Ginclude@eps
+\def\Gread@pdf#1{%
+  \begingroup
+    \if@usebb\else
+      \@tempcnta\z@
+      \loop
+      \ifnum\@tempcnta<\@xxxii
+        \catcode\@tempcnta14
+        \advance\@tempcnta\@ne
+      \repeat
+	  \@tempcnta127
+      \loop
+      \ifnum\@tempcnta<\@cclvi
+        \catcode\@tempcnta14
+        \advance\@tempcnta\@ne
+      \repeat
+      \let\do\@makeother\dospecials\catcode`\ 10
+      \catcode\endlinechar10
+      \immediate\openin\@inputcheck#1
+      \ifeof\@inputcheck
+        \@latex@error{File `#1' not found}\@ehc
+      \else
+        \Gread@true
+        \let\@tempa\@empty
+        \let\@tempb\@empty
+        \loop
+          \read\@inputcheck to\@tempc
+          \ifeof\@inputcheck
+            \Gread@false
+          \else
+            \edef\@tempa{\@tempb\@tempc}\let\@tempb\@tempc
+            \edef\@tempc{\@tempa\Gread@rect@box}%
+            \csname Gread@find@\Gread@rect@box\expandafter\endcsname\@tempc[\@nnil]\\%
+          \fi
+        \ifGread@
+        \repeat
+        \immediate\closein\@inputcheck
+      \fi
+    \fi
+    \ifGin@bbox
+    \else
+      \Gread@bmp{\Gin@base.bb}%
+    \fi
+  \endgroup
+  \expandafter\Gread@parse@bb\@gtempa\\}
+\def\def@Gread@find#1#2{\ifx\@nnil#2\expandafter\@gobble\else
+    \@namedef{Gread@find@#1}##1#1##2[##3##4]##5\\{%
+      \ifx\@nnil##3\else
+        \gdef\@gtempa{##3##4 }%
+        \if@Gread@find@only
+          \Gread@false
+        \else
+          \def\Gread@rect@box{#1}%
+        \fi
+        \Gin@bboxtrue
+      \fi
+      \if@Gread@find@only\else
+        \csname Gread@find@#2\expandafter\endcsname\@tempa#2[\@nnil]\\%
+      \fi}%
+    \expandafter\def@Gread@find\fi{#2}}
+\def@Gread@find{/MediaBox}{/CropBox}{/BleedBox}{/TrimBox}{/ArtBox}\@nnil
+\@namedef{Gread@find@/ArtBox}#1/ArtBox#2[#3#4]#5\\{%
+  \ifx\@nnil#3\else
+    \gdef\@gtempa{#3#4 }%
+    \Gread@false
+    \Gin@bboxtrue
+  \fi}
+\def\Gread@bmp#1{%
+  \if@Gread@ebb@never\else
+    \if@Gread@ebb@always\else
+      \immediate\openin\@inputcheck#1 %
+      \ifeof\@inputcheck
+        \Gread@ebb@always
+      \else
+        \immediate\closein\@inputcheck
+      \fi
+    \fi
+    \immediate\write18{\if@Gread@ebb@always\else[ '\Gin@base\Gin@ext' -nt '\Gin@base.bb' ] && \fi
+      \ifx\@nnil\filename@area\@nnil\else cd '\filename@area' && \fi ebb '\filename@base\Gin@ext'}%
+  \fi
+  \Gread@eps{#1}}
+\DeclareGraphicsRule{.pdf}{pdf}{*}{}