From: yfr Date: Mon, 19 Jul 2004 16:00:04 +0000 (+0000) Subject: DCQ:prepare 2.0.0 X-Git-Tag: V2_0_0~4 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=1b19d95e647335f4bec1c00d3f979e3e669d81eb;p=modules%2Fkernel.git DCQ:prepare 2.0.0 --- diff --git a/doc/DevelopersGuide/DevelopersGuide.tex.in b/doc/DevelopersGuide/DevelopersGuide.tex.in deleted file mode 100644 index ae8a400fe..000000000 --- a/doc/DevelopersGuide/DevelopersGuide.tex.in +++ /dev/null @@ -1,1056 +0,0 @@ -\documentclass[11pt,a4paper]{article} -\usepackage{isolatin1} -\usepackage{psfig} -\usepackage{graphicx} -\usepackage{fancyheadings} -\usepackage{lastpage} -\usepackage{epic} -\usepackage{longtable} -\usepackage{times} -\usepackage{verbatim} - -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% mise en page du document % -%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \voffset -20pt - \topmargin 0 cm - \headheight 15pt - \headsep 0 cm - \textheight 670 pt - \footskip 1 cm - \marginparwidth 0 cm - \oddsidemargin 0 cm - \evensidemargin 0 cm - \textwidth 16.2 cm - \parindent 0 cm - -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% test si on passe par pdflatex % -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\newif\ifpdf - \ifx\pdfoutput\undefined - \pdffalse % we are not running pdflatex - \else - \pdfoutput=1 % we are running pdflatex - \pdfcompresslevel=9 % compression level for text and image; - \pdftrue - \fi - -\ifpdf -\usepackage{thumbpdf} -\usepackage[pdftex, - colorlinks=true, - urlcolor=rltblue, % \href{...}{...} external (URL) - filecolor=rltgreen, % \href{...} local file - linkcolor=rltred, % \ref{...} and \pageref{...} - pdftitle={Adding a new module or unit development}, - pdfauthor={Patrick Goldbronn, Marc Tajchman}, - pdfsubject={}, - pdfkeywords={}, - pagebackref, - pdfpagemode=None, - bookmarksopen=true]{hyperref} -\usepackage{color} -\definecolor{rltred}{rgb}{0.75,0,0} -\definecolor{rltgreen}{rgb}{0,0.5,0} -\definecolor{rltblue}{rgb}{0,0,0.75} -\else -\usepackage{color} -\fi - -%% -%%%%%%%%%%%%%%%%%%%%%%%%% -%% epaisseur des traits % -%%%%%%%%%%%%%%%%%%%%%%%%% -\linethickness{1pt} -%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% mise en page des environnement array % -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \arraycolsep 2pt - \renewcommand{\arraystretch}{1.6} -%% -%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% interligne du document % -%%%%%%%%%%%%%%%%%%%%%%%%%%% -\renewcommand{\baselinestretch}{1.2} -%% -%%%%%%%%%%%%%%%%%%%%%%%% -%% haut et bas de page % -%%%%%%%%%%%%%%%%%%%%%%%% -\newcommand{\version}{0.3} - -\pagestyle{fancy} -% - \chead{} - \lhead{} - \rhead{} -% - \lfoot{ - SALOME - } - \cfoot{ - Using the SALOME configuration and building system V. \version - } - \rfoot{ - \thepage/\pageref{LastPage} - } -%% - \setlength{\headrulewidth}{0pt} - \setlength{\footrulewidth}{1pt} -% -%----------------------------------------------------------- -% Les racourcis : -\newcommand{\fsc}{\sc} - - -%%----------------------------------------------------------- -%%----------------------------------------------------------- -%%----------------------------------------------------------- - - -%% Bring items closer together in list environments -% Prevent infinite loops -\let\Itemize =\itemize -\let\Enumerate =\enumerate -\let\Description =\description -% Zero the vertical spacing parameters -\def\Nospacing{\itemsep=4pt\topsep=-5pt\partopsep=-5pt% -\parskip=0pt\parsep=0pt} -% Redefinition de art12.sty pour commencer a la marge de gauche -%\leftmargini 1.2em % 2.5em - -\def\noitemsep{ -% Redefine the environments in terms of the original values -\renewenvironment{itemize}{\Itemize\Nospacing}{\endlist} -\renewenvironment{enumerate}{\Enumerate\Nospacing}{\endlist} -\renewenvironment{description}{\Description\Nospacing}% -{\endlist} -} - -\def\doitemsep{ -% Redefine the environments to the original values -\renewenvironment{itemize}{\Itemize}{\endlist} -\renewenvironment{enumerate}{\Enumerate}{\endlist} -\renewenvironment{description}{\Description}{\endlist} -} - -%%%% fin macro %%%% - -\begin{document} -\noitemsep - -%%%%%%%%%%%%%%%%%%%% -%% TITRE AUTEUR(S) % -%%%%%%%%%%%%%%%%%%%% - -\textcolor{white}{.} -\vfill\vfill -\begin{figure}[!h] -\begin{center} -\ifpdf - \includegraphics[width=11.88cm, height=5.11cm]{@srcdir@/SALOME.png} -\else - \includegraphics[width=11.88cm, height=5.11cm]{@srcdir@/SALOME.ps} -\fi -\end{center} -\end{figure} - -\bigskip -\bigskip - -\begin{center} -{\usefont{T1}{phv}{bx}{n} -\huge Using the SALOME configuration and building system -environment -} -\bigskip -\medskip - -{\LARGE Version \version} -\end{center} - -\vfill - -{ -\large -\renewcommand{\arraystretch}{0.85} -\begin{tabular}{lll} -Patrick & Goldbronn & C.E.A. \\ -Marc & Tajchman & C.E.A. -\end{tabular} -} - - -\def\Mkin{{\tt Makefile.in }} - -\thispagestyle{empty} - -\newpage -%----------------------------------------------------------- -\section*{Successive versions} - -\vfill -\begin{tabular}{|p{2cm}|p{1.5cm}|p{8cm}|p{2cm}|} -\hline -\textbf{Date} & \textbf{Version} & \textbf{Description} & \textbf{Author(s)}\\ -\hline -10/07/2001& 0.0 & Initial version & PG \\ -\hline -25/07/2001 & 0.1 & English traduction, rewriting & MT \\ -\hline -29/08/2001 & 0.2 & Add source creation, some precision & PG \\ -\hline -24/05/2002 & 0.3 & Add instruction to do installation correctly & PG \\ -\hline -\end{tabular} -\vfill -\vfill - -%\thispagestyle{empty} -\newpage -%----------------------------------------------------------- - \begin{abstract} - This document contains rules and advices to configure, - build and extend the SALOME platform. - \end{abstract} - - \newpage -%----------------------------------------------------------- - \tableofcontents - \newpage - \parskip 0.2 cm -%----------------------------------------------------------- -\newpage - -\section{SALOME Configuration} - -\subsection{Directories organisation} - -We suppose here that you unpack the SALOME distribution from scratch. -The path to the SALOME sources will be named ``top source directory'' -or {\tt SALOME\_ROOT}. - -It is possible, but not advised, to build the set of binaries and libraries -in the same subtree. Instead, we suppose you have choosen a different subtree -where to put builded files (you can so build to multiples architectures from the same source tree). The root of the build subtree will be named -``top build directory''. - -At the end of configuration and compilation processs, you may install -builded files in a separate subtree, name ``installation subtree''. -The root of the installation subtree will be named ``top installation directory''. - -The figure \ref{FigDirs} shows subtrees organisation. - -\begin{figure}[h] -\ifpdf - \includegraphics{@srcdir@/subtrees.pdf} -\else - \includegraphics{@srcdir@/subtrees.eps} -\fi -\caption{\label{FigDirs} Subtrees organisation} -\end{figure} - -\subsection{PreConfiguration step} - -SALOME needs some environment variables (to be defined for example in -a .cshrc or .bashrc file in your home directory)~: - -\begin{tabular}{|p{3.5cm}|p{11cm}|} -\hline -\it variable & \it set value and check \\ -\hline -{\tt QTDIR} & root directory of qt distribution ({\tt \$QTDIR/lib} must contain libqt.so) \\ -\hline -{\tt HDF5HOME} & root directory of hdf5 distribution ({\tt \$HDF5HOME/lib} must contain libhdf5.so) \\ -\hline -{\tt VTKHOME} & root directory of vtk distribution ({\tt \$VTKHOME/common} must contain libVTKCommon.so) \\ -\hline -{\tt CASROOT} & root directory of OpenCascade distribution ({\tt \$CASROOT/Linux/lib} must contain libTKernel.so) \\ -\hline -{\tt PYTHONHOME} & root directory of python distribution ({\tt \$PYTHONHOME/lib/pythonXXX/config} must contain libpythonXXX.a) \\ -\hline -{\tt OMNIORB\_CONFIG } & path to the omniORB.cfg file (this file contains default -options to omniORB, see below) \\ -\hline -\end{tabular} - -\bigskip -Create a file named omniORB.cfg in your root tree, containing default -options to omniORB. Put in this file, the following line~: -\begin{verbatim} -ORBInitRef NameService=corbaname::localhost -\end{verbatim} - -(tells omniORB that the CORBA name service is local). - -\subsection{Configuration step} - -\begin{enumerate} -\item There are two cases~: -\begin{itemize} -\item There is a {\tt configure} file in the top source directory, -and you didn't change the SALOME structure (adding a module or unit, -see sections \ref{sec_module} or \ref{sec_unit} below). -Go to point \ref{pConf}. -\item You don't have a {\tt configure} file or you add a module/unit -in the SALOME system. -Go to point \ref{pReConf} -\end{itemize} - -\item \label{pReConf} -Go to the top source directory and type~: -\begin{verbatim} -./reconfigure -\end{verbatim} -This script find all file with suffix {\tt .in} (which will be generate by {\tt configure} script) and add them in {\tt configure.in} file, launch {\tt aclocal} and {\tt autoconf} to generete {\tt configure} script. - -Continue with point \ref{pConf} - -\item \label{pConf} -Go to the top build directory you choose. - -If you plan to install SALOME files after building in a non-standard -location (i.e. different from /usr/local), type~: - -\begin{verbatim} -/configure \ - --prefix= -\end{verbatim} - -otherwise, type~: -\begin{verbatim} -/configure -\end{verbatim} - -where ``path to the top source directory'' is to be replaced by the path -to the SALOME sources. - -For other options to the configure command, type~: -\begin{verbatim} -/configure --help -\end{verbatim} - -This will create a mirror subtree of the sources into the top build directory -where object files, binaries and libraries will be builded. Also a makefile -system will be created into the build tree. - -\end{enumerate} - -\subsection{PostConfiguration step} - -This phase is optional, to be used only if the compilation process -(see next section) fails to use {\tt libtool} script. - -On some systems, the {\tt libtool} script generated by the configure -command will not operate correctly during compilation -(see next section). If you encounter this situation, -copy the local libtool script in your system (e.g. in the /usr/bin -directory) to the top build directory after configuration and before -compilation phases. - -Check the following line in libtool script : -\begin{verbatim} -deplibs_check_method=... -\end{verbatim} - -If needed, replace this line by -\begin{verbatim} -deplibs_check_method="pass_all" -\end{verbatim} - -\section{SALOME compilation} - -From the top build directory, type -\begin{verbatim} -make -\end{verbatim} - -After some time (be patient ...), it will create various binaries. -Building SALOME is split in several phases~: - -\begin{itemize} -\item {\tt make inc} : copy/update header files exported by development units -in the directory {\tt inc} of the build tree ; -\item {\tt make depend\_idl} : determine dependencies between idl files (useful when recompiling SALOME after idl modification); -\item {\tt make depend (make dep)} : determine dependencies between source files and header files (useful when recompiling SALOME after source modification); -\item {\tt make lib} : generate libraries, put a copy/link into the {\tt lib} directory of the build tree; -\item {\tt make bin} : generate binaries; -\item {\tt make tests (make check)} : build and run tests (not yet implemented). -\end{itemize} - -After building, testing, the user may install the system in a choosen directory -(different from and not included in the top source directory and the top build directory). - -From the top build directory, type~: -\begin{quotation}\noindent% - {\tt make install} : install libraries, header and idl files, binaries, -resource files in the installation directory -\end{quotation} - -\section{\label{sec_module}Module creation} - -In this section, the new module will be named {\tt }. Replace -each occurence with the real name of your module. - -\begin{enumerate} -\item In the source tree root {\tt SALOME\_ROOT}, create a new directory -{\tt } : - -\begin{verbatim} -cd SALOME_ROOT -mkdir -\end{verbatim} - -\item Modify the \Mkin file in the {\tt SALOME\_ROOT} directory to add the new module~: - -Append to the line beginning with -\begin{verbatim} -SUBDIRS = -\end{verbatim} - -the name of the new module. - -\item In the module root directory, create two subdirectories {\tt src} and {\tt resources} and create a file \Mkin - (e.g. copy the corresponding file in {\tt GEOM} module for example)~: - -\begin{verbatim} -cd -mkdir src -mkdir resources -cp ../GEOM/Makefile.in . -\end{verbatim} - -\item In the {\tt src} subdirectory, copy a \Mkin file (e.g. from the corresponding file in {\tt GEOM/src} subdirectory for example)~: - -\begin{verbatim} -cd src -cp ../../GEOM/src/Makefile.in . -\end{verbatim} - -\item Edit this file and replace the line -\begin{verbatim} -MODULE = GEOM -\end{verbatim} - -with -\begin{verbatim} -MODULE = -\end{verbatim} - -\item Edit this file and replace the line -\begin{verbatim} -SUBDIRS = GEOMDS GEOM GEOMGUI -\end{verbatim} - -with -\begin{verbatim} -SUBDIRS = -\end{verbatim} - -(empty list of development units in this module). - -\item Edit this file and replace the line -\begin{verbatim} -RESOURCES_FILES = arc.png \ -... -\end{verbatim} - -with -\begin{verbatim} -RESOURCES_FILES = -\end{verbatim} - -(list of all ressources for this module). - -\item Add the new \Mkin files in the global list of .in files. - -In the root directory of the source tree, execute the {\tt reconfigure} -script or manually : - -\begin{enumerate} -\item edit the configure.in file in the source tree root, -add \Mkin files into the {\tt AC\_OUTPUT} list, -\item from the source tree root directory, run the {\tt genconf} script which launch {\tt aclocal} and {\tt autoconf}. -\end{enumerate} - -\end{enumerate} - -Figure \ref{srctree_module} summarize these changes. - -\begin{figure}[h] -\ifpdf - \includegraphics{@srcdir@/srctree_module.pdf} -\else - \includegraphics{@srcdir@/srctree_module.eps} -\fi -\caption{\label{srctree_module} Source tree : modification when adding an new module} - -\end{figure} - -\section{\label{sec_unit}Development unit creation} - -Here we want to add a development unit named {\tt } -in the existing module {\tt } (replace the names {\tt } -and {\tt } with real ones). - -\begin{enumerate} - -\item In the {\tt src} subdirectory of {\tt }, create a -subdirectory named {\tt }~: - -\begin{verbatim} -cd >/src -mkdir -\end{verbatim} - -Modify then \Mkin file in the {\tt src} directory to add -the new unit -to the compilation process~: - -Complete the line beginning with -\begin{verbatim} -SUBDIRS = ... -\end{verbatim} - -with the name of the new directory - -\begin{verbatim} -SUBDIRS = ... -\end{verbatim} - -\item Create a \Mkin file in the new {\tt } directory (you can copy a \Mkin file from the corresponding subdirectory in {\tt GEOM} module : {\tt GEOM/src/GEOMGUI} subdirectory for example, and modify as you need) - - -\begin{verbatim} -cd -... create Makefile.in -\end{verbatim} - -The details of \Mkin creation is detailed in the next section. -\end{enumerate} - - -The different files of your unit must be located in several directories -(see figure \ref{srctree_unit} and the list below). - -\begin{figure}[!h] -\ifpdf - \includegraphics{@srcdir@/srctree_unit.pdf} -\else - \includegraphics{@srcdir@/srctree_unit.eps} -\fi -\caption{\label{srctree_unit}Source tree : modification when adding an new unit in an existing module} -\end{figure} - -\begin{itemize} -\item Private source and header files of your unit - -Place the only copy of these files in your unit. If you use -the proposed makefile system, dont put them in subdirectories -of your unit. - -Note -\begin{quotation}\noindent% -Using a non-flat directory structure for an unit, has not been -tested but it should work. You must write your makefile to take care -of subdirectories. -\end{quotation} - -\item Exported idl files from a unit - -These files are provided by the unit for CORBA communication -with other units. - -Place the only copy of these files into the idl subdirectory of the -root source tree. - -\item Exported header files from a unit - -These files are provided by the unit for direct communication -from other units (using the unit's library). - -Place the master copy of these files in your unit subtree. - -Assure that these files are automatically or manually copied in -the inc subdirectory of the root build tree. - -\end{itemize} - -\section{Creating a \Mkin file in a new unit} - -\subsection{Using predefined make rules} - -Copy the following \Mkin \ skeleton in the unit directory~: - -\verbatiminput{@srcdir@/makefile.skel} - -Adapt this \Mkin skeleton to your particular needs~: -\begin{itemize} -\item if you have to compile a library - -\begin{enumerate} -\item Complete the line -\begin{verbatim} -LIB = -\end{verbatim} - -as -\begin{verbatim} -LIB = lib.la -\end{verbatim} - -Example~: -\begin{verbatim} -LIB = libGeometryGui.la -\end{verbatim} - -Notes -\begin{enumerate} -\item the library name {\bf must} begin with {\tt lib} and end with -{\tt .la} (this allows automatic creation of shared libraries with libtool). -\item there must be only one library by development unit -\end{enumerate} - -\item Also add to the line~: -\begin{verbatim} -LIB_SRC = -\end{verbatim} -the list of sources files (in this unit) needed to build the library - -\item If your library uses QT MOC file, add to the line~: -\begin{verbatim} -LIB_MOC = -\end{verbatim} -the list of headers files to transform with moc. - -\item If your library uses CORBA functionnalities from other units (i.e. -uses idl files exported from other units), add to the line~: -\begin{verbatim} -LIB_CLIENT_IDL = -\end{verbatim} -the list of idl files. - -\item If your unit provides CORBA functionnalities (i.e. exports idl -files to the other units), add to the line~: -\begin{verbatim} -LIB_SERVER_IDL = -\end{verbatim} -the list of idl files. -\end{enumerate} - -\item if you want to build one or more executables~: - -\begin{enumerate} -\item Complete the line -\begin{verbatim} -BIN = -\end{verbatim} - -as -\begin{verbatim} -BIN = .. -. -\end{verbatim} - -Note -\begin{quotation}\noindent% -For each executable in the {\tt BIN} list, say {\tt MyBin1}, the main -function {\bf must} be in a file named accordingly, in this example~: -{\tt MyBin1.cxx} and {\tt MyBin2.cxx}. -\end{quotation} - -\item Also add to the line~: -\begin{verbatim} -BIN_SRC = -\end{verbatim} -the list of source files (in this unit) needed to build {\bf all} the executables, -{\bf excluding files containing main function(s)}. - -Notes~: -\begin{enumerate} -\item The makefile system will automatically add to each executable, its -main function file. That's why these files must not be included in the -{\tt BIN\_SRC} list -\item The object files (compiled from the source files in the {\tt BIN\_SRC} -list) will be properly dispatched between the executables by the linker. -\end{enumerate} - -\item If your binaries uses QT MOC file, add to the line~: -\begin{verbatim} -BIN_MOC = -\end{verbatim} -the list of headers files to transform with moc. - -\item If your binaries uses CORBA functionnalities from other units (i.e. -uses idl files exported from other units), add to the line~: -\begin{verbatim} -BIN_CLIENT_IDL = -\end{verbatim} -the list of idl files. - -\item If your unit provides CORBA functionnalities (i.e. exports idl -files to the other units), add to the line~: -\begin{verbatim} -BIN_SERVER_IDL = -\end{verbatim} -the list of idl files. - -\end{enumerate} - -\item List the exported header files that your unit provides -to other developments units~: - -Complete the line -\begin{verbatim} -EXPORT_HEADERS = -\end{verbatim} -with the list header files. - -Note -\begin{quotation}\noindent% -The makefile system will automatically copy these files in a -subdirectory {\tt inc} in the top build directory, and maintain -coherence with your private copy inside your unit subtree. -This is to assure name uniqueness of differents exported header -files from different units and to write easier makefiles. -\end{quotation} - -\item List the python scripts files that your unit export~: - -Complete the line -\begin{verbatim} -EXPORT_PYSCRIPTS = -\end{verbatim} - -\item To generate qm file from po file (use by QT), list po files in~: - -\begin{verbatim} -PO_FILES = -\end{verbatim} -Note -\begin{quotation}\noindent% -The resulting qm files will ge generated directory which contain Makefile. -It will be copied in resources directory when do {\tt 'make install'}. -\end{quotation} - -\end{itemize} - - -\subsection{Using your own makefiles in an unit} - -If the proposed makefile system don't suit your needs (several libraries, -non flat unit subtree structure, ...). It's possible -to write your own makefiles. - -\begin{enumerate} -\item Create a file \Mkin - -This file must begin with the lines - -\verbatiminput{@srcdir@/makefile_own.skel} - -\bigskip - -The rest of the file has the standard GNU make format. - -You must define the following targets~: - -\begin{enumerate} -\item {\tt inc} : copy/update the exported header files to the {\tt \$top\_builddir/inc} directory -\item {\tt dep} : update dependencies -\item {\tt lib} : build libraries and link them into the {\tt \$top\_builddir/lib} directory -\item {\tt bin} : build executables and link them into the {\tt \$top\_builddir/bin} directory -\end{enumerate} - -Some of these targets may be empty, if not applicable. - -\end{enumerate} - -The line -\begin{verbatim} -@\texttt{COMMENCE}@ -\end{verbatim} -provides a number of predefined variables that you can use in your makefile -rules (defining standard libraries locations, compiler options, ..., see next section). - - -\section{Add or remove a script} - -If you want to add a new shell script in {\tt SALOME\_ROOT/bin}, you must edit {\tt SALOME\_ROOT/Makefile.in} to add it in {\tt BIN\_SCRIPT}. - -If this script have some package dependent variable, you must create a ".in" file and add this reference to {\tt configure.in} file. - -To remove an existing script, you must of course remove it from CVS archive and also remove it from {\tt SALOME\_ROOT/Makefile.in} and if any, from {\tt configure.in}. - -If you want to add a new python script, put it in {\tt EXPORT\_PYSCRIPTS} variable. It will be copied at same place than others executables. - - -\section{Add or remove an IDL file} - -If you want to add a new IDL file in {\tt SALOME\_ROOT/idl}, you must edit {\tt SALOME\_ROOT/idl/Makefile.in} and add its in {\tt IDL\_FILES}. - -To remove an existing IDL file, you must of course remove it from CVS archive and also remove it from {\tt SALOME\_ROOT/idl/Makefile.in}. - - -\section{Predefined symbols used in {\tt Makefile.in}} - -You can use predefined symbols in you {\tt Makefile.in} files. -These symbols define -\begin{itemize} -\item compilation flags for source compiling, -\item header files location in your local system, -\item libraries needed for binaries linking. -\end{itemize} - -For example to use the OpenCascade libraries in your unit, you will add the -\begin{itemize} -\item {\tt \$OCC\_INCLUDES} symbol to the included header file locations, -\item {\tt \$OCC\_CXXFLAGS} symbol to the compilation flags, -\item {\tt \$OCC\_LIBS} symbol to the linker's flags -\end{itemize} - -If you use the predefined make rules, add the lines -\begin{verbatim} -CPPFLAGS+=$(OCC_INCLUDES) -CXXFLAGS+=$(OCC_CXXFLAGS) -LDFLAGS+=$(OCC_LIBS) -\end{verbatim} -in your {\tt Makefile.in} file after the @{\tt COMMENCE}@ line. - -For each standard tool you need in SALOME (QT, python, OpenCascade, CORBA, VTK, \ldots), main symbols listed below. - -\begin{enumerate} -\bigskip - -\item {\it Corba} -\smallskip - -\begin{longtable}{|p{3.2cm}|p{9.1cm}|} -\hline -\it variable & \it value \\ -\hline -{\tt CORBA\_ROOT } & CORBA home base \\ -\hline -{\tt CORBA\_INCLUDES} & compiler options to include CORBA headers \\ -\hline -{\tt CORBA\_LIBS } & libraries needed to link with CORBA \\ -\hline -{\tt CORBA\_CXXFLAGS } & C++ compiler options to use with CORBA \\ -\hline -{\tt IDL} & idl compiler \\ -\hline -{\tt IDLCXXFLAGS} & options to the idl compiler to generate C++ -stub or skeleton code \\ -\hline -{\tt IDLPYFLAGS} & options to the idl compiler to generate python -stub or skeleton code \\ -\hline -{\tt IDL\_CLN\_H} & extension of generated CORBA header files (client side) \\ -\hline -{\tt IDL\_CLN\_CXX} & extension of generated CORBA source files (client side) \\ -\hline -{\tt IDL\_CLN\_OBJ} & extension of generated CORBA object files (client side) \\ -\hline -{\tt IDL\_SRV\_H} & extension of generated CORBA header files (server side) \\ -\hline -{\tt IDL\_SRV\_CXX} & extension of generated CORBA source files (server side) \\ -\hline -{\tt IDL\_SRV\_OBJ} & extension of generated CORBA object files (server side) \\ -\hline -\end{longtable} - -\item {\it python} -\smallskip - -\begin{longtable}{|p{3.2cm}|p{9.1cm}|} -\hline -\it variable & \it value \\ -\hline -{\tt PYTHON} & python interpreter (absolute path to) \\ -\hline -{\tt PYTHON\_VERSION} & python version \\ -\hline -{\tt PYTHONHOME} & python home base (sometimes needed - to run python) \\ -\hline -{\tt PYTHON\_INCLUDES} & compiler options to include python header files \\ -\hline -{\tt PYTHON\_LIBS} & libraries needed to link with python \\ -\hline -\end{longtable} - -\bigskip -\item {\it QT} -\smallskip - -\begin{longtable}{|p{3.2cm}|p{9.1cm}|} -\hline -\it variable & \it value \\ -\hline -{\tt MOC} & moc compiler \\ -\hline -{\tt UIC} & uic graphical compiler \\ -\hline -{\tt QTDIR} & QT home base \\ -\hline -{\tt QT\_ROOT} & QT home base \\ -\hline -{\tt QT\_INCLUDES} & compiler options to include QT headers \\ -\hline -{\tt QT\_MT\_INCLUDES} & same as above, for multithreaded applications \\ -\hline -{\tt QT\_LIBS} & libraries needed to link with QT (single threaded) \\ -\hline -{\tt QT\_MT\_LIBS} & same as above, for multithreaded applications \\ -\hline -\end{longtable} - -For SALOME developments, multithreaded versions of qt options and libraries -are needed. - -\bigskip -\item {\it OpenGL} -\smallskip - -\begin{longtable}{|p{3.2cm}|p{9.1cm}|} -\hline -\it variable & \it value \\ -\hline -{\tt OGL\_INCLUDES} & compiler options to include OpenGL headers \\ -\hline -{\tt OGL\_LIBS} & libraries needed to link with OpenGL \\ -\hline -\end{longtable} - -\bigskip -\item {\it VTK} -\smallskip - -\begin{longtable}{|p{3.2cm}|p{9.1cm}|} -\hline -\it variable & \it value \\ -\hline -{\tt VTK\_INCLUDES} & compiler options to include VTK headers \\ -\hline -{\tt VTK\_LIBS} & libraries needed to link with VTK \\ -\hline -\end{longtable} - -\bigskip -\item {\it HDF (v5)} -\smallskip - -\begin{longtable}{|p{3.2cm}|p{9.1cm}|} -\hline -\it variable & \it value \\ -\hline -{\tt HDF5\_INCLUDES} & compiler options to include HDF headers \\ -\hline -{\tt HDF5\_LIBS} & libraries needed to link with HDF \\ -\hline -{\tt HDF5\_MT\_LIBS} & libraries needed to link with HDF - (multithreaded version) \\ -\hline -\end{longtable} - -\bigskip -\item {\it OpenCascade} -\smallskip - -\begin{longtable}{|p{3.2cm}|p{9.1cm}|} -\hline -\it variable & \it value \\ -\hline -{\tt OCC\_INCLUDES} & compiler options to include OpenCascade headers \\ -\hline -{\tt OCC\_LIBS} & libraries needed to link with OpenCascade \\ -\hline -{\tt OCC\_CXXFLAGS} & C++ compiler options to use with OpenCascade \\ -\hline -\end{longtable} - -\end{enumerate} - -\section{Location of generated files in the build tree} - -A partial view of the build tree shows the location of files generated -during the compilation process. - -\begin{figure}[h] -\ifpdf - \includegraphics{@srcdir@/bldtree.pdf} -\else - \includegraphics{@srcdir@/bldtree.eps} -\fi -\caption{Partial view of the build tree : generated files during compilation} -\end{figure} - -\section{What's matter when launch {\tt make install}} - -When all libraries and binaries files are generated, make copies all identified files as {\tt configure} parameters {\tt --prefix}, {\tt bindir}, {\tt datadir}, ... (see {\tt configure --help} for details). - -If you specify nothing, all are installed in {\tt =/usr/local}. - -All executables (binaries and scripts) are placed in {\tt /bin} (see BIN and BIN\_SCRIPT variables in {\tt Makefile}). - -All libraries are placed in {\tt /lib} (see LIB variable in {\tt Makefile}). - -All includes are placed in {\tt /include} (see EXPORT\_HEADERS variable in {\tt Makefile}). - -All idls are placed in {\tt /idl} (see IDL\_FILES variable in {\tt Makefile}). - -All python srcipts are placed in {\tt /lib/pythonX.X/...} (see {\tt EXPORT\_PYSCRIPTS} variable in {\tt Makefile}). - -All ressources files (icons, messages, configuration, ...) are placed in {\tt /share/salome/ressources} (see RESOURCES\_FILES variable in {\tt Makefile}). - - -\section{Creating source files according to SALOME building system} - -Building system use dependencies between files writing in Makefile rules. We use {\tt C} or {\tt C++} preprocessor to automatically generate this dependencies rules. - -There are some configuration and useful macro defined in header file {\tt SALOMEconfig.h}. \textbf{All files should be included this header !} -You must include it ussing {\tt <>} delimiter because {\tt SALOMEconfig.h} must not appear in dependencies rules (see below \ref{include}). - -When a {\tt Makefile} is regenerate with {\tt config.status} script, all files are regenerates (in particular {\tt SALOMEconfig.h}).It is a restriction of {\tt autoconf 2.13} which could not regenerate only one particular file. -So, all files which depend of {\tt SALOMEconfig.h} are rebuild even if it does not change. If you effectively change {\tt SALOMEconfig.h} file, you must clean all and rebuild. - -\subsection{{\tt C} or {\tt C++} source files} - -\textbf{You must name your {\tt C} file {\tt .c} and header file {\tt .h}} - -\textbf{You must name your {\tt C++} file {\tt .cxx} and header file {\tt .hxx}} - -To have right dependencies rules, you must correctly write the include statement in your source files. We only take care about SALOME package header files to generate dependencies. We suppose that other header files (qt, vtk, OpenCascade, ...) are stables and are not modified when we build some SALOME modules. - -According to cpp documentation, local header files must be included with {\tt ""} statement and system or tools headers files must be included with {\tt <>} statement. -\label{include} - -If you do not respect this notation, dependencies would not be true and some rebuilding trouble can appear~ ! - -\subsection{idl files} - -We use {\tt C} preprocessor to build dependencies between idl files. The same convention must be applied as {\tt C} or {\tt C++} source files. - -If included file is an external files, you must use statement {\tt <>} because this file will not be modified during SALOME devloppement and/or building. -If included file is part of SALOME files, you must use statement {\tt ""}. - -If you do not respect this notation, dependencies would not be true and some building or rebuilding trouble can appear~ ! - -\subsection{Included header file generated from idl file} - -To include header file generated from idl file, you must use macro {\tt CORBA\_CLIENT\_HEADER} or \\ -{\tt CORBA\_SERVER\_HEADER} defined in {\tt SALOMEconfig.h}. - -These two macros replace idl prefix into corresponding header name generated (take care if you use client part or server part) - -{\bf Example :} -\begin{verbatim} -#include CORBA_CLIENT_HEADER(geom) -#include CORBA_SERVER_HEADER(mesh) -\end{verbatim} - - -\end{document} diff --git a/doc/DevelopersGuide/Makefile.in b/doc/DevelopersGuide/Makefile.in deleted file mode 100644 index fc731be0a..000000000 --- a/doc/DevelopersGuide/Makefile.in +++ /dev/null @@ -1,61 +0,0 @@ -# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -# -# See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -# -# -# -# File : Makefile.in -# Author : Patrick GOLDBRONN (CEA) -# Module : doc -# $Header$ - -top_srcdir=@top_srcdir@ -top_builddir=../.. -srcdir=@srcdir@ -VPATH=.:@srcdir@ - - -TEX=DevelopersGuide.tex -TEX_PS=$(TEX:%.tex=%.ps) -TEX_PDF=$(TEX:%.tex=%.pdf) - -.SUFFIXES: .tex .dvi .ps .pdf - -doc: $(TEX_PS) clean $(TEX_PDF) clean - -clean: - \rm -f *~ *.bak *.aux *.log *.dvi *.toc $(TEX:%.tex=%.out) - \rm -f dummy thumb* - -distclean: clean - \rm -f $(TEX_PS) $(TEX_PDF) - -install: - -#implicits rules -.tex.dvi: clean - latex $< - latex $< -.dvi.ps: - dvips $< -o $@ - - -.tex.pdf: clean - pdflatex $< - pdflatex $< - diff --git a/doc/DevelopersGuide/SALOME.png b/doc/DevelopersGuide/SALOME.png deleted file mode 100644 index e6d626c55..000000000 Binary files a/doc/DevelopersGuide/SALOME.png and /dev/null differ diff --git a/doc/DevelopersGuide/SALOME.ps b/doc/DevelopersGuide/SALOME.ps deleted file mode 100644 index 0e74fda15..000000000 --- a/doc/DevelopersGuide/SALOME.ps +++ /dev/null @@ -1,4601 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: /home/tajchman/superv/GRAPHIQUES/SALOME.ps -%%Creator: XV Version 3.10a Rev: 12/29/94 (PNG patch 1.2) - by John Bradley -%%BoundingBox: 131 321 481 471 -%%Pages: 1 -%%DocumentFonts: -%%EndComments -%%EndProlog - -%%Page: 1 1 - -% remember original state -/origstate save def - -% build a temporary dictionary -20 dict begin - -% define string to hold a scanline's worth of data -/pix 1050 string def - -% define space for color conversions -/grays 350 string def % space for gray scale line -/npixls 0 def -/rgbindx 0 def - -% lower left corner -131 321 translate - -% size of image (on paper, in 1/72inch coords) -349.99200 149.97600 scale - -% define 'colorimage' if it isn't defined -% ('colortogray' and 'mergeprocs' come from xwd2ps -% via xgrab) -/colorimage where % do we know about 'colorimage'? - { pop } % yes: pop off the 'dict' returned - { % no: define one - /colortogray { % define an RGB->I function - /rgbdata exch store % call input 'rgbdata' - rgbdata length 3 idiv - /npixls exch store - /rgbindx 0 store - 0 1 npixls 1 sub { - grays exch - rgbdata rgbindx get 20 mul % Red - rgbdata rgbindx 1 add get 32 mul % Green - rgbdata rgbindx 2 add get 12 mul % Blue - add add 64 idiv % I = .5G + .31R + .18B - put - /rgbindx rgbindx 3 add store - } for - grays 0 npixls getinterval - } bind def - - % Utility procedure for colorimage operator. - % This procedure takes two procedures off the - % stack and merges them into a single procedure. - - /mergeprocs { % def - dup length - 3 -1 roll - dup - length - dup - 5 1 roll - 3 -1 roll - add - array cvx - dup - 3 -1 roll - 0 exch - putinterval - dup - 4 2 roll - putinterval - } bind def - - /colorimage { % def - pop pop % remove 'false 3' operands - {colortogray} mergeprocs - image - } bind def - } ifelse % end of 'false' case - - - -350 150 8 % dimensions of data -[350 0 0 -150 0 150] % mapping matrix -{currentfile pix readhexstring pop} -false 3 colorimage - -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfdfdfdfdfdfdfdfdfdfdfd -fefdfdfefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfe -fefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefdfdfdfdfdfdfdfdfd -fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd -fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd -fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfefdfefefdfe -fefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfe -fefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfe -fefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfe -fefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfe -fefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfe -fefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfe -fefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfe -fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfefdfefefefefefefefefefefefefe -fffefeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefefefefefefe -fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe -fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe -fefefefefefefefefefefefefefefefefefefefefefefefefefefeffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fefefefefefefefefefefefefefefefdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfdfdfefdfefefdfefefdfefefdfe -fefefeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffefefefefefefefefefefefefefdfd -fefdfdfefdfdfefdfdfefdfdfefdfdfefdfdfefdfdfefdfdfefdfdfefdfdfefdfdfefdfd -fefdfdfefdfdfefdfdfefdfdfefdfdfefdfdfefdfdfefdfdfefdfdfefdfdfefdfdfefdfd -fefdfdfefdfdfefdfdfefdfdfefdfdfefdfdfefdfdfefdfdfdfdfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefdfeffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffefefefefefefefefefefefefefefefefefe -fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe -fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe -fefefefefefefefefefefefefefefefefefefefefefefefefefefefefdfefdfdfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffefefefefefefefefefefefefefefefefefefefefe -fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe -fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe -fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefdfe -fefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefdfdfdfdfdfdfefdfefdfdfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffefefefefefefefefefefefefefefefefefefefefefefefefefefe -fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe -fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe -fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe -fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe -fefdfefdfdfefdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffefefeffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe -fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe -fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe -fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe -fefefefefefefefefefefefefefefefefefefefefefefefefefefeffffffffffffffffff -fefefefefefefdfdfdfdfdfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffefefefefefeffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefe -fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe -fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe -fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefdfdfd -fdfdfdfdfdfdfdfdfdfdfdfdfefefefefefefefefefefefefefefefefefefefefefefefe -fefefefefefefefefefefefefefefefefefeffffffffffffffffffffffffffffffffffff -fffffffefefefefefefefefefefefefefdfdfefdfdfefdfdfefdfdfefdfdfdfdfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffefefefefefefefefefefefeffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefe -fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe -fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe -fefefefefefefefefefdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd -fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfefefefefefefefefe -fefefefefefefefefefefefefefefefefefeffffffffffffffffffffffffffffffffffff -fefefefefefefefefefdfefefefefefefefefefefefefefefefefefefefefdfdfdfdfdfd -fdfdfdfdfcfcfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fefefeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffefefefefefefefefefefefefefefefefefeffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefefefe -fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe -fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefdfdfd -fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd -fdfdfdfdfdfdfcfcfcfcfcfcfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfefefe -fefefefefefefefefefefefefefefefefefefffffffffffffffffffefefefefefefefefe -fefefefefefefcfcfcfdfdfdfdfdfdfdfefefdfcfcfdfdfdfcfdfdfcfdfdfdfdfdfdfdfd -fdfdfdfdfdfdfcfcfcfcfcfcfcfcfcfdfdfdfdfdfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffbfcfdf4f6fbeef1f8 -e9edf6e5eaf4e4eaf4e2e8f4e0e7f2e3e9f4e4eaf4e5ebf5eaeef6eff2f9f9fafcfefeff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefe -fefefefefefefefefefffffffffffffffffffffffffffffffffffffffffffffffffefefe -fefefefefefefffffffffffffefefffafafdfdfefeffffffffffffffffffffffffffffff -fffffffffffffffffffefefefefefefefefefefefefefefefefefeffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffefefefefefefefefefefefefefefe -fefefeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffefefff8f9fceff2f9e8ecf5e3e9f3dfe6f2 -dfe6f1dfe6f1e0e7f2e4eaf3e8ecf5eff1f7f8f9fbfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd -fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfcfcfcfcfcfcfdfdfd -fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfcfcfcfcfcfcfcfcfcfafafbf7f8faf6f7fa -fbfbfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfdfdfd -fdfdfdfefefefefefefefefefefefefefefefffffffffefefefdfcfdfdfcfdfcfbfcfcfb -fcfcfbfdfdfcfcfcfbfcfcfbfcfcfcfcfcfbfcfcfbfcfcfbfdfdfdfdfdfdfcfcfcfcfcfc -fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfdfcfcfdfdfdfdfdfdfdfdfdfdfdfd -fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd -fdfdfdfdfdfdfdfdfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffbfcfeecf0f8dbe3f1cad9eaadc6e08faed4779bca -668dc35481bc5280bb4a79b84172b44c7bb95280bb5783bd678fc47fa1cea3bfdcc8d7e9 -dde4f2f2f5fafefeffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefe -fefefefefefefefefefefefefefefefffffffffffffffffffffffffffffffbfcfdf1f3f9 -e7ecf5dee5f2d7dfefccdaebbbd1e5a7c1dec6d5e8ffffffffffffffffffffffffffffff -fffffffffffffffffffffffffefefefefefefefefefefefefefefefefefefefefefefefe -fffffffffffffffffffffffffffffffffffff0f3f9dde4f1dae2f0dae2f0dae2f0dae2f0 -dae2f0dae2f0dae2f0dae2f0eaeef6fbfbfdfefefefefefefefefefefefefefefefefefe -fefefefefefefefefefefefeffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffdfdfeeff2f9dae2f0c4d5e8a1bcdb7c9fcc628cc2517fba4172b3 -3f71b33f71b34476b55582bc668fc382a4cea7c1ddc7d6e8dbe2efeff2f7fbfbfbfcfcfc -fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc -fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf4f5f9dde3f0c8d7e8b3cae1a5bfdca4bfdb -b6cde2c8d7e8d9e1eef0f3f8fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc -fcfcfcfdfdfdfdfdfdfdfdfdfdfdfdfefefefefefefefefefefefefdfdfdfdfcfcfcfcfb -fcfcfbfcfcfbfcfcfbfcfcfbfcfcfbfcfcfbfcfcfcfdfdfdf7f8fae1e7f2d7dfedd7dfed -d7dfedd7dfedd7dfeddce2eff4f6f9fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc -fcfcfcfcfcfcfbfcfceef0f7dee4f0d8e0eed7dfedd7dfedd7dfedd7dfedd7dfedd7dfed -d7e0eed8e0eed8e0eed8e0eed8e0eed8e0eed8e0eed8e0eed8e0eed8e0eed8e0eed8e0ee -d8e0eed8e0eed8e0eed8e0eed8e0eed8e0eed8e0eedce3f0f9f9fbfdfdfdfdfdfdfdfdfd -fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfdfdfdfdfdfdfdfdfdfdfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffff8f9fcd6dfefaec5df7aa0cc4d7eba2165a90459a000579e00579e -00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e01589f2366aa -5282bc8aadd3c8d5eaf8fafcffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefe -fefefefefefefefefefefefefefefefefefefffffffffffffffffff1f4f9b9cbe487aad1 -6f97c75886be4376b52667ab0659a000579e2769abe9eef7ffffffffffffffffffffffff -fffffffffffffffffffffffffefefefefefefefefefefefefefefefefefefefefefefefe -fefefefefefeffffffffffffffffffffffff99b5d85281bc4a7cb84a7cb84a7cb84a7cb8 -4a7cb84a7cb84a7cb84d7db989a6d1e4e9f4fefefefefefefefefefefefefefefefefefe -fefefefefefefefefefefefefefefeffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffbfcfde0e6f3b9cbe481a6cf4c7db91a62a701589f00579e00579e00579e00579e -00579e00579e00579e00579e00579e00579e02589f2266a95483bb88abd1bdcde4e1e7f2 -fafafbfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc -fcfcfcfcfcfcfcfcfcfcfcfcfcfcfceff2f7aabfdc5885bd2265aa0459a000579e00579e -02589f2366a94e7fba8daed2dae1effcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfbfbfbfbfbfb -fcfcfcfcfcfcfcfcfcfcfcfcfdfdfdfcfcfcfdfdfdfdfdfdfefefefefefefefefdfdfdfc -fcfcfbfcfcfbfcfcfbfcfcfbfcfcfbfcfcfbfdfdfdf5f7fabacae3638ec2497bb7497bb7 -497bb7497bb7497bb75583bbb9c8e1f8f8fafcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc -fcfcfcfafafbd4deec8baad15a87bf4b7cb8497bb7497bb7497bb7497bb7497bb7497bb7 -497bb7497bb7497bb7497bb7497bb7497bb7497bb7497bb7497bb7497bb7497bb7497bb7 -497bb7497bb7497bb7497bb7497bb7497bb7497bb75383bce0e6f2fdfdfdfdfdfdfdfdfd -fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd -fefefefefefefefefefffffffefefefefdfefefdfefdfdfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffd5deef95b4d64e82bb1861a600579e00579e00579e00579e00579e00579e -00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e -00579e01589f3a74b3c5d2e8ffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefe -fefefefefefefefefefefefefefefefefefefefefefffffffcfcfebed0e62c6dae00579e -00579e00579e00579e00579e00579e00579e03599f9db2d9ffffffffffffffffffffffff -fffffffffffffffffffffffffefefefefefefefefefefefefefefefefefefefefefefefe -fefefefefefefefefeffffffffffffffffff3a7bb301589e00579e00579e00579e00579e -00579e00579e00579e00579e356eb0c7d3e8fefefefefefefefefefefefefefefefefefe -fefefefefefefefefefefefefefefefefefeffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefeff -e3e9f4abc0dd5f8ec22567ab00579e00579e00579e00579e00579e00579e00579e00579e -00579e00579e00579e00579e00579e00579e00579e00579e00579e01589f2c6bad6694c4 -b0c2dee6eaf4fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc -fcfcfcfcfcfcfcfcfcfcfcfcf9fafbc2d2e6296bac00579e00579e00579e00579e00579e -00579e00579e00579e055aa0638fc2ebeef5fafafafafafafafafafafafafafafafafafa -fafafafbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfcfcfcfcfcfcfdfdfdfdfdfdfdfdfd -fdfdfcfdfdfcfcfcfbfcfcfbfcfcfbfcfcfbfafafbcad6e93b76b300579e00579e00579e -00579e00579e00579e00579e678cc2f0f3f7fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc -fcfcfcdde3f06590c20d5da200579e00579e00579e00579e00579e00579e00579e00579e -00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e -00579e00579e00579e00579e00579e00579e00579e1b62a7d6e0eefcfcfcfdfdfdfdfdfd -fdfdfdfdfdfdfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfdfdfdfdfdfdfdfdfdfdfdfd -fefefefefefefffffffffffffffffffffffffffffffffffffdfdfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -f8f9fcb6c6e14f84bc0d5ca200579e00579e00579e00579e00579e00579e00579e00579e -00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e -00579e00579e00579e88a2d0fffffffefefefefefefefefefefefefefefefefefefefefe -fefefefefefefefefefefefefffffffffffffffffffffffffffffffffffffffffffefefe -fefefefefefefefefefefefefefefefefefefefefefefefeecf0f77ca2cd01589f00579e -00579e00579e00579e00579e00579e00579e01579e447ab7f2f4faffffffffffffffffff -fffffffffffffffffffffffffefefefefefefefefefefefefefefefefefefefefefefefe -fefefefefefefefefefefefefefefeffffff3177b000579e00579e00579e00579e00579e -00579e00579e00579e00579e336cafc6d2e7fefefefefefefefefefefefefefefefefefe -fefefefefefefefefefefefefefefefefefefefefefefefeffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfefebfcde5 -6292c32265a900579e00579e00579e00579e00579e00579e00579e00579e00579e00579e -00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e -2767ab6b98c6c5d1e6fafbfbfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfbfbfbfbfbfb -fbfbfbfbfbfbfbfbfbfbfbfbf5f6f9a4beda00579e00579e00579e00579e00579e00579e -00579e00579e00579e00579e1161a4aabbdbf9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9 -f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fafafafafafafbfbfbfcfcfcfdfdfd -fdfdfdfdfdfdfdfdfcfcfcfcfcfcfcfbfbfbe9eef56892c301589f00579e00579e00579e -00579e00579e00579e00579e5c84beeff2f7fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc -fbfbfbb4c2df2e6eae00579e00579e00579e00579e00579e00579e00579e00579e00579e -00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e -00579e00579e00579e00579e00579e00579e00579e638ac1f1f3f7fcfcfcfcfcfcfcfcfc -fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfdfdfdfefefefefefe -fefefefefefefffffffffffffffffffffffffffffffffffffdfdfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5f7fb -96b2d5306eae00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e -00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e -00579e00579e00579e819dcdfefefefefefefefefefefefefefefefefefefefefefefefe -fefefefefefefefefefefefefefefefefefefffffffffffffffffffffffffffffffefefe -fefefefefefefefefefefefefefefefefefefefefefdfdfecedbeb2e6fae00579e00579e -00579e00579e00579e00579e00579e00579e00579e1061a5b7c5e3ffffffffffffffffff -fffffffffffffffffffffffffefefefefefefefefefefefefefefefefefefefefefefefe -fefefefefefefefefefefefefefefefefefe3177b000579e00579e00579e00579e00579e -00579e00579e00579e00579e336cafc6d2e7fefefefefefefefefefefefefefefefefefe -fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe -fefefefefefefefefefefefefefefefffffffffffffffffffffffff5f6fba3b9da3875b2 -01589f00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e -01579e0f5da40c5ca300579e00579e00579e00579e00579e00579e00579e00579e00579e -00579e0359a0427ab5a4bbd9f1f3f7fbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfafafafafafa -fafafaf9f9f9f9f9f9fafafaf4f5f8a3bcda00579e00579e00579e00579e00579e00579e -00579e00579e00579e00579e0559a04c81b9e5e9f1f8f8f8f8f8f8f7f7f7f7f7f7f7f7f7 -f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f8f8f8f8f8f8f7f7f7f9f9f9fafafafbfbfb -fbfbfbfcfcfcfcfcfcfcfcfcfcfcfcf8f9fa9bb3d7135fa400579e00579e00579e00579e -00579e00579e00579e00579e5c84bdeef1f6fbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfafafa -fafafaadbddb296bac00579e00579e00579e00579e00579e00579e00579e00579e00579e -00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e -00579e00579e00579e00579e00579e00579e065aa1adc2def8f9fafbfbfbfbfbfbfbfbfb -fbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfcfcfcfcfcfcfcfcfcfcfcfcfdfdfdfefefefefefe -fefefefefefefffffffffffffffffffffffffffffffffffffdfdfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfefe9eb5d8 -2368aa01589e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e -00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e -00579e00579e00579e819dcdfefefefefefefefefefefefefefefefefefefefefefefefe -fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe -fefefefefefefefefefefefefefefefefefefefefef3f5fa8fadd30559a000579e00579e -00579e00579e00579e00579e00579e00579e00579e055aa05a8abffcfcfeffffffffffff -fffffffffffffffffffffffffefefefefefefefefefefefefefefefefefefefefefefefe -fefefefefefefefefefefefefefefefefefe3177b000579e00579e00579e00579e00579e -00579e00579e00579e00579e336cafc6d2e7fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd -fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe -fefefefefefefefefefefefefefefefefefefefefefefefef4f5fb8dacd22669ab01579e -00579e00579e00579e00579e00579e00579e00579e00579e00579e2266a95685bd7da3cc -9bbcd7a8c2dca6c1db95b7d4769ec94b7eb81961a600579e00579e00579e00579e00579e -00579e00579e03589f2a6cac92aed2eff1f6f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9 -f9f9f9f9f9f9f8f8f8f8f8f8f3f4f6a3bcd900579e00579e00579e00579e00579e00579e -00579e00579e00579e00579e00579e1964a7a4b6d7f7f7f7f7f7f7f6f6f6f6f6f6f6f6f6 -f6f6f6f6f6f6f6f6f6f5f5f5f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f7f7f7f8f8f8 -f9f9f9fafafafbfbfbfbfbfbfcfcfccdd8ea276bac00579e00579e00579e00579e00579e -00579e00579e00579e00579e5c83bdeef1f6fafafafafafafafafaf9f9f9f9f9f9f9f9f8 -f8f8f7abbcda296bac00579e00579e00579e00579e00579e00579e00579e00579e00579e -00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e -00579e00579e00579e00579e00579e01589f4c80badfe6f0fafafafafafafafafafafafa -fafafafafafafafafafafafafafafafbfbfbfcfcfcfcfcfcfcfcfcfdfdfdfefefefefefe -fffffffffffffffffffffffffffffffffffffffffffffffffdfdfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc2cfe73573b1 -03589f00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e -1a62a64c7db96a92c680a3ce86a9d186a9d184a7d07b9fcc6991c5517fbb2869ac075aa0 -00579e00579e00579e819dcdfefefefefefefefefefefefefefefefefefefefefefefefe -fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe -fefefefefefefefefefefefefefefefefefefefefee2eaf33b74b300579e00579e00579e -00579e00579e00579e00579e00579e00579e00579e01579e236babc9d4e9ffffffffffff -fffffffffffffffffffffffffefefefefefefefefefefefefefefefefefefefefefefefe -fdfdfdfefefefefefefefefefefefefefefe3177b000579e00579e00579e00579e00579e -00579e00579e00579e00579e336cafc5d1e6fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc -fdfdfdfdfdfdfdfdfdfefefefefefefefefefefefefefefefefefefefefefefefefefefe -fefefefefefefefefefefefefefefefefefefefefef8f9fc92aed32168a902589f00579e -00579e00579e00579e00579e00579e00579e00579e1862a66794c4b6c9e1dae1efeceef5 -f9fafafafafafafafaf6f7f8e8ebf3d3dceba7bedb5486bb115ea300579e00579e00579e -00579e00579e00579e03589f266aab94b0d2f4f5f7f9f9f9f9f9f9f9f9f9f9f9f9f8f8f8 -f8f8f8f8f8f8f8f8f8f7f7f7f2f3f5a2bcd800579e00579e00579e00579e00579e00579e -00579e00579e00579e00579e00579e0559a04c83b8e1e4eef5f5f5f5f5f5f5f5f5f5f5f5 -f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f6f6f6f6f6f6 -f6f6f6f7f7f7f9f9f9fafafaf3f4f75485bc00579e00579e00579e00579e00579e00579e -00579e00579e00579e00579e5c83bdedf0f5fafafaf9f9f9f9f9f9f8f8f8f8f8f8f7f7f7 -f6f6f5abbcda296bac00579e00579e00579e00579e00579e00579e00579e00579e00579e -00579e00579e00579e0b5ca23871b1628cc17ca0cc91b0d49bb8d89bb8d89bb8d89bb7d7 -9ab7d69ab7d69ab7d69ab7d69ab7d6a1bdd8cfd9e9f5f5f7f9f9f8f9f9f8f9f9f8f9f9f8 -f9f9f8f9f9f9f9f9f9f9f9f9fafafafbfbfbfcfcfcfcfcfcfdfdfdfefefefefefefefefe -fffffffffffffffffffffffffffffffffffffffffffffffffdfdfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffff5f6fb5e91c1085ba1 -00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e2c6bad83a4cf -c6d6e9dee6f2e8ecf6eff2f9f1f3faf1f3f9eff2f9ecf0f7e7ebf5dfe6f2d2deedb1c7e1 -7c9ecc4877b62b69acb0c0e0fefefefefefefefefefefefefefefefefefefefefefefefe -fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe -fefefefefefefefefefefefefefefefefefef9fafca5bbdc085aa100579e00579e00579e -00579e00579e00579e00579e00579e00579e00579e00579e0d5ea37b9dcafefefeffffff -fffffffffffffffffffffffffefefefefefefefefefefefefefefefefefefefefefdfdfd -fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd3077b000579e00579e00579e00579e00579e -00579e00579e00579e00579e336cafc4d0e6fbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfb -fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd -fefefefefefefefefefefefefefefefefefefefefeb5c4e13070af03589f00579e00579e -00579e00579e00579e00579e00579e00579e296aac9ab4d6e3e9f3f8f9fbfbfbfbfafafa -fafafaf9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f3f4f7dbe3ed85a3cd1c64a700579e00579e -00579e00579e00579e00579e03589f3372afb3c3def8f8f8f7f7f7f7f7f7f7f7f7f7f7f7 -f7f7f7f7f7f7f7f7f7f7f7f7f2f2f5a2bcd800579e00579e00579e00579e00579e00579e -00579e00579e00579e00579e00579e00579e1f67a8a0b3d5f4f4f4f4f4f4f4f4f4f4f4f4 -f4f4f4f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f4f4f4f4f4f4 -f5f5f5f5f5f5f6f6f6f7f7f79bafd40c5ca200579e00579e00579e00579e00579e00579e -00579e00579e00579e00579e5c83bdeceff4f9f9f9f8f8f8f7f7f7f6f6f6f5f5f5f5f5f4 -f5f5f4aabbd9296bac00579e00579e00579e00579e00579e00579e00579e00579e00579e -00579e2064a9698fc3afc4ded4deece2e7f1ebeef5f1f3f7f4f5f9f4f5f8f4f5f8f3f4f7 -f3f4f6f3f4f6f3f4f6f3f4f6f3f4f6f5f6f7f9f9f8f9f9f9f9f9f8f9f9f8f9f9f8f8f8f7 -f8f8f7f9f9f8faf9f9fafafafafafafbfbfbfcfcfcfdfdfdfdfdfdfefefefefefefefefe -fffffffffffffffffffffffffffffffffffffffffffefefefdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffc3d0e82f72af00579e -00579e00579e00579e00579e00579e00579e00579e00579e00579e457db8bfcfe6f2f5fa -fdfdfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefafbfc -f0f3f9e6ebf4e1e9f2f4f6fafefefefefefefefefefefefefefefefefefefefefefefefe -fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe -fefefefefefefefefefefefefefefefefefef0f3f9537dba00579e00579e00579e00579e -00579e00579e00579e00579e00579e00579e00579e00579e01589e3777b2dce2f1fefefe -fffffffffffffffffffffffffffffffefefefefefefefefefefefefefefefefefefefefe -fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfcfcfc3077b000579e00579e00579e00579e00579e -00579e00579e00579e00579e336cafc3cfe4f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9 -fafafafafafafbfbfbfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc -fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfce4e8f35389bd055aa000579e00579e00579e -00579e00579e00579e00579e00579e2266a99bb3d6f1f4f8fcfcfcfbfbfbfafafaf9f9f9 -f9f9f9f9f9f9f9f9f9f9f9f9f8f8f8f8f8f8f8f8f8f7f7f8ebedf2819fcb1561a500579e -00579e00579e00579e00579e00579e0559a0578bbddbe1edf7f7f7f7f7f7f7f7f7f7f7f7 -f6f6f6f6f6f6f6f6f6f5f5f5f0f1f3a1bbd800579e00579e00579e00579e00579e00579e -00579e00579e00579e00579e00579e00579e04599f4d85b8dce0eaf3f3f3f3f3f3f3f3f3 -f2f2f2f2f2f2f1f1f1f1f1f1f2f2f2f2f2f2f2f2f2f2f2f2f1f1f1f1f1f1f2f2f2f2f2f2 -f3f3f3f4f4f4f5f5f5cad3e6226aaa00579e00579e00579e00579e00579e00579e00579e -00579e00579e00579e00579e5c83bdebeef3f8f8f8f6f6f6f5f5f5f5f5f4f4f4f4f4f4f4 -f4f4f3aabbd8296bac00579e00579e00579e00579e00579e00579e00579e00579e0559a0 -447db6b6c6e0e8ecf3f6f7f9fbfbfbfafafafbfbfbfbfbfbfbfafafbfbfbfafaf9fafaf9 -fafaf9fafaf9fafaf9fbfbfafbfbfafbfbfafbfbfafafafaf9f9f9f9f9f9f9f9f9fafaf9 -f9f9f8f9faf9fafbfafbfbfbfbfbfbfcfcfcfdfdfdfefefefefefefefefeffffffffffff -fffffffffffffffffffefefefefefefefefefefefefffffffdfdfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff94abd41962a600579e -00579e00579e00579e00579e00579e00579e00579e00579e306eafb7c8e3fbfcfdfefefe -fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe -fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe -fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe -fefefefefefefefefefefefefefefefdfdfec1cfe70559a000579e00579e00579e00579e -00579e00579e00579e00579e00579e00579e00579e00579e00579e1a64a79ab0d7fefefe -fefefefffffffffffffffffffffffffefefefefefefefefefefefefefefefefefefefefe -fefefefdfdfdfdfdfdfdfdfdfcfcfcfcfcfc3077b000579e00579e00579e00579e00579e -00579e00579e00579e00579e326caec2cee3f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8 -f8f8f8f8f8f8f9f9f9f9f9f9f9f9f9fafafafafafafbfbfbfcfcfcfcfcfcfcfcfcfcfcfc -fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcaebfde286cac00579e00579e00579e00579e -00579e00579e00579e00579e01589f6193c2e7eaf4fbfbfbfafafafafafaf9f9f9f8f8f8 -f8f8f8f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e4e7f0407db602589f -00579e00579e00579e00579e00579e00579e286aaba9bad9f6f6f6f5f5f5f5f5f5f5f5f5 -f5f5f5f5f5f5f5f5f5f5f5f5eff0f3a0b9d600579e00579e00579e00579e00579e00579e -00579e00579e00579e00579e00579e00579e00579e2267a99fb2d4f1f1f1f0f0f0f0f0f0 -f0f0f0f1f1f1f0f0f0f0f0f0efefefefefefefefefefefeff0f0f0f0f0f0f0f0f0f1f1f1 -f1f1f1f2f2f2eaecef5183b90559a000579e00579e00579e00579e00579e00579e00579e -00579e00579e00579e00579e5b83bdeaedf2f5f5f5f5f5f5f3f3f3f2f2f2f2f2f2f2f2f2 -f3f3f3a9bad7296bab00579e00579e00579e00579e00579e00579e00579e075aa05487bc -d7deecf5f6f7f9f9f9f9f9f9f9f9f9fafafafbfafafbfbfbfbfbfbfafaf9fafaf9fafaf9 -fafaf9fafaf9fbfbfafbfbfafbfbfafbfbfafbfbfafbfbfafafaf9fafaf9fafaf9fafaf9 -fafafafcfcfcfcfcfcfcfcfcfcfcfcfdfdfdfefefefefefefefefefefefeffffffffffff -fffffffefefefefefefefefefefefefefefefffffffffffffdfdfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff6597c40559a000579e -00579e00579e00579e00579e00579e00579e00579e01589e73a0caf2f3f9fefefefefefe -fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe -fefefefefefefefefefefefefefefefefefefdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd -fdfdfdfdfdfdfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe -fefefefefefefefefefefefefefefefafbfd5d86bf00579e00579e00579e00579e00579e -00579e00579e00579e00579e00579e00579e00579e00579e00579e01579e4684b9ebeff7 -fefefefefefefefefefffffffffffffffffffffffffefefefefefefefefefefefefefefe -fefefefefefefdfdfdfcfcfcfcfcfcfcfcfc3077b000579e00579e00579e00579e00579e -00579e00579e00579e00579e326caec1cee2f7f7f7f7f7f7f7f7f7f6f6f6f7f7f7f7f7f7 -f6f6f6f6f6f6f7f7f7f7f7f7f8f8f8f8f8f8f8f8f8f9f9f9f9f9f9fafafafafafafafafa -fbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfafafb719ec7075aa000579e00579e00579e00579e -00579e00579e00579e00579e2265a9a3b6d8fafafafafafaf9f9f9f9f9f9f8f8f8f7f7f7 -f7f7f7f6f6f6f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6f6f6f6f6f6f6f6f68ca3ce1360a4 -00579e00579e00579e00579e00579e00579e01589f6d9cc5eeeff2f5f5f5f4f4f4f4f4f4 -f4f4f4f4f4f4f3f3f3f3f3f3edeef19fb9d500579e00579e00579e00579e00579e00579e -00579e00579e00579e00579e00579e00579e00579e00579e4c84b7d5dae6efefefeeeeee -eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeefefef -efefefedeeef8aa2cb1260a400579e00579e00579e00579e00579e00579e00579e00579e -00579e00579e00579e00579e5b82bce8ebf0f4f4f4f2f2f2f0f0f0f0f0f0f0f0f0f0f0f0 -f0f0f0a8b8d6296aab00579e00579e00579e00579e00579e00579e03599f447fb6dde1ed -f6f6f6f7f7f7f8f8f8f9f9f9f9f9f9f9f9f9f9f9f8fafaf9f9f9f8fafaf9fafaf9fafaf9 -fafaf9f9f9f9f9f9f9f9f9f9fafaf9f9f9f9f9f9f9f8f8f8fafaf9fafaf9fafaf9fafaf9 -fbfbfafcfcfcfcfcfcfcfcfcfdfdfdfefefefefefefefefefefefefefefefefefefefefe -fefefefefefefefefefefefefefefefefefefffffffffffffdfdfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffafbfd5790bf00579e00579e -00579e00579e00579e00579e00579e00579e00579e1760a59ab6d7fefefefefefefefefe -fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe -fefefefefefefefefefefefefdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd -fdfdfdfdfdfdfdfdfdfdfdfdfefefefefefefefefefefefefefefefefefefefefefefefe -fefefefefefefefefefefefefefefed7dff0065aa000579e00579e00579e00579e00579e -00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e246aaba9bcdc -fefefefefefefefefefefefefffffffffffffffffffefefefefefefefefefefefefefefe -fefefefefefefdfdfdfcfcfcfcfcfcfcfcfc3077b000579e00579e00579e00579e00579e -00579e00579e00579e00579e326caec1cde2f7f7f7f6f6f6f7f7f7f7f7f7f7f7f7f6f6f6 -f7f7f7f7f7f7f6f6f6f7f7f7f6f6f6f7f7f7f7f7f7f8f8f8f8f8f8f8f8f8f9f9f9f9f9f9 -f9f9f9fafafafafafafafafafafafae5e9f2548bbd00579e00579e00579e00579e00579e -00579e00579e00579e00579e2b6cacafbfddfafafaf9f9f9f9f9f9f8f8f8f8f8f8f7f7f7 -f6f6f6f7f7f7f7f7f7f6f6f6f6f6f6f6f6f6f6f6f6f5f5f5f5f5f5f5f5f5a2b4d61864a6 -00579e00579e00579e00579e00579e00579e00579e568abcd9deeaf3f3f3f3f3f3f3f3f3 -f3f3f3f2f2f2f2f2f2f3f3f3ecedf09db7d400579e00579e00579e00579e00579e00579e -00579e00579e00579e00579e00579e00579e00579e00579e2367a99cb1d1ececedeeeeee -eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee -ededeeb8c5dc266dab00579e00579e00579e00579e00579e00579e00579e00579e00579e -00579e00579e00579e00579e5b82bce6e9eef1f1f1f0f0f0efefefefefefefefefeeeeee -eeeeeea7b7d5296aab00579e00579e00579e00579e00579e00579e1a65a7a2b4d6f5f5f5 -f5f5f5f6f6f6f7f7f7f8f8f8f9f8f8f9f8f8f8f8f7f8f8f7f8f8f8f8f8f8f8f8f8f8f8f8 -f8f8f8f8f8f8f8f8f8f8f8f7f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f9f9f9fafaf9fafaf9 -fcfcfcfcfcfcfcfcfcfdfdfdfefefefefefefefefefefefefefefefefefefefefefefefe -fefefefefefefefefefefefefefefefffffffffffffffffffdfdfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffff1f3fa518bbd00579e00579e -00579e00579e00579e00579e00579e00579e00579e1f64a8a4badafefefefefefefefefe -fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe -fefefefefefefdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfcfcfcfcfcfcfcfcfcfcfcfc -fcfcfcfcfcfcfcfcfcfdfdfdfdfdfdfdfdfdfdfdfdfefefefefefefefefefefefefefefe -fefefefefefefefefefefefefdfdfd7395c800579e00579e00579e00579e00579e00579e -00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e075aa06595c4 -f2f4f9fefefefefefefefefefefefefffffffffffffffffffffffffefefefefefefefefe -fefefefefefefdfdfdfcfcfcfcfcfcfcfcfc3077b000579e00579e00579e00579e00579e -00579e00579e00579e00579e326caec0cce1f5f5f5f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6 -f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f7f7f7f6f6f6f6f6f6f7f7f7f7f7f7f7f7f7 -f7f7f7f7f7f7f8f8f8f8f8f8f8f8f8d8dfec4a84b900579e00579e00579e00579e00579e -00579e00579e00579e00579e2b6cacaebedcf8f8f8f8f8f8f7f7f7f7f7f7f7f7f7f6f6f6 -f6f6f6f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5a1b3d51863a6 -00579e00579e00579e00579e00579e00579e00579e4b81b7cdd4e4f2f2f2f2f2f2f2f2f2 -f1f1f1f1f1f1f1f1f1f1f1f1e9eaee94b0d000579e00579e00579e00579e00579e00579e -00579e00579e00579e00579e00579e00579e00579e00579e01589f578abbd3d9e3ececec -ecececececececececececececececedededededededededeeeeeeeeeeeeeeeeeeeeeeee -d8dce65485b9075aa000579e00579e00579e00579e00579e00579e00579e00579e00579e -00579e00579e00579e00579e5a82bae2e5eaededededededecececececececececececec -edededa6b6d4296aab00579e00579e00579e00579e00579e00579e2970acd9dee9f4f4f4 -f4f4f4f5f5f5f6f6f5f6f6f5f6f6f5f6f6f5f5f5f5f5f5f5f5f4f4f5f4f4f5f5f5f5f5f5 -f5f5f5f5f5f5f5f5f4f5f5f4f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f6f6f5f8f8f7f9f9f9 -fbfbfbfcfcfcfcfcfcfdfdfdfefefefefefefefefefefefdfefefdfefefefefefefefefe -fefefefefefefefefefefefefffffffffffffffffffffffffdfdfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefdfefefefefefefefefefefefefe -fefefefefefefefefefefefefefefefefefeffffffffffffffffff5e94c202589f00579e -00579e00579e00579e00579e00579e00579e00579e085aa17ea6cdf4f6fafefefefefefe -fefefefefefefefefefefefefefefefefefefefefefefefefefefefdfdfdfdfdfdfdfdfd -fdfdfdfdfdfdfdfdfdfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc -fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfdfdfdfdfdfdfdfdfdfefefe -fefefefefefefefefefefefee1e6f21c66a800579e00579e00579e00579e00579e00579e -00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e3574b1 -bfcde5fefefefefefefefefefefefefefefefefefefffffffffffffefefefefefefefefe -fefefefefefefdfdfdfcfcfcfcfcfcfcfcfc3077b000579e00579e00579e00579e00579e -00579e00579e00579e00579e326caebfcce1f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5 -f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f6f6f6f6f6f6f6f6f6 -f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6d6ddeb4a83b900579e00579e00579e00579e00579e -00579e00579e00579e00579e2b6cacadbddbf7f7f7f7f7f7f6f6f6f6f6f6f6f6f6f5f5f5 -f5f5f5f4f4f4f4f4f4f4f4f4f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3a0b2d51863a6 -00579e00579e00579e00579e00579e00579e00579e497fb7cad2e3f0f0f0f0f0f0efefef -efefefefefefefefefeeeeeee4e6eb86a6cb00579e00579e00579e00579e00579e00579e -00579e00579e00579e00579e00579e00579e00579e00579e00579e2468a99db3d1e8e8ea -ecececececececececedededededededededeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee5e7eb -87a4ca1963a600579e00579e00579e00579e00579e00579e00579e00579e00579e00579e -00579e00579e00579e00579e5a81badfe2e7eaeaeae9e9e9e9e9e9e9e9e9e9e9e9eaeaea -eaeaeaa4b4d2286aaa00579e00579e00579e00579e00579e00579e2d73ade9ebeef2f2f2 -f2f2f2f3f3f2f3f3f2f3f3f2f4f4f3f3f3f2f2f2f2f2f2f2f2f1f1f2f1f0f2f1f0f2f2f2 -f2f2f2f2f1f1f2f2f1f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f4f4f3f6f6f5f7f7f7 -f9f9f9fbfbfbfcfcfcfdfdfdfefefefefefefefefefdfdfcfdfdfcfefefefefefefefefe -fefefefefefefffffffffffffffffffffffffffffffffffffdfdfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefdfefefefefefefefefefefefefe -fefefefefefefefefefefefefefefefefefefefefefefefeffffff7ba1cb0e5da300579e -00579e00579e00579e00579e00579e00579e00579e00579e3d79b5bdcde5f9fafcfefefe -fefefefefefefefefefefefefefefefefefefefefefdfdfdfdfdfdfdfdfdfdfdfdfdfdfd -fdfdfdfdfdfdfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc -fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfdfdfdfdfdfdfdfdfd -fdfdfdfdfdfdfdfdfdfdfdfd89a6d0075ba000579e00579e00579e00579e00579e00579e -00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e115ea4 -83a6cef5f7fafefefefefefefefefefefefefefefefefefefffffffefefefefefefefefe -fefefefefefefdfdfdfcfcfcfcfcfcfcfcfc3077b000579e00579e00579e00579e00579e -00579e00579e00579e00579e326caebecbe0f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3 -f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5 -f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5d5dcea4983b800579e00579e00579e00579e00579e -00579e00579e00579e00579e2b6bacacbcdaf6f6f6f5f5f5f5f5f5f5f5f5f4f4f4f3f3f3 -f3f3f3f3f3f3f3f3f3f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f1f1f1a0b1d41863a6 -00579e00579e00579e00579e00579e00579e00579e497fb6c8d0e1efefefeeeeeeeeeeee -eeeeeeeeeeeeedededededede2e4e986a5cb00579e00579e00579e00579e00579e00579e -00579e00579e00579e00579e00579e00579e00579e00579e00579e01589f5c8cbcd2d7e3 -ecececededededededededededededeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeecededb0c2d9 -3173ae00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e -00579e00579e00579e00579e5980b8dcdee3e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7 -e8e8e8a3b3d02869aa00579e00579e00579e00579e00579e00579e256daacad1e2efefef -f0f0eff0f0f0f1f1f0f1f1f0f1f1f0f0f0efefefeeefeeeeefeeeeefeeedefeeedf0efee -f0efeeefeeedefeeedefeeedefeeedefeeedefeeeef0efeff0f0f0f1f1f0f3f3f3f4f4f4 -f6f6f6f9f9f9fbfbfbfcfcfcfdfdfdfefefefefefefefefefefefefefefefefefefefefe -fefefefefefefffffffffffffffffffffffffffffffffffffdfdfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefdfefefefefefefefefefefefefe -fefefefefefefefefefefefefefefefefefefefefefefefefefefeaabcdd2369ab00579e -00579e00579e00579e00579e00579e00579e00579e00579e085aa15288bcbdcee5f5f7fa -fefefefefefefefefefdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfcfcfcfcfcfc -fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc -fbfbfbfbfbfbfbfbfbfbfbfbfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfbfbfbfcfcfcfcfcfc -fbfbfbfbfbfbfbfbfbe3e8f23775b202589f00579e00579e00579e00579e00579e00579e -00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e -4a82b9d2dbecfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe -fefefefefefefdfdfdfcfcfcfcfcfcfcfcfc3077b000579e00579e00579e00579e00579e -00579e00579e00579e00579e326caebecadff2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2 -f2f2f2f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f4f4f4f4f4f4f4f4f4f4f4f4 -f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4d4dbe94983b800579e00579e00579e00579e00579e -00579e00579e00579e00579e2a6bacabbcd9f4f4f4f4f4f4f4f4f4f3f3f3f3f3f3f2f2f2 -f2f2f2f3f3f3f2f2f2f2f2f2f1f1f1f1f1f1f1f1f1f0f0f0f0f0f0f0f0f09fb0d31763a6 -00579e00579e00579e00579e00579e00579e00579e497eb6c8cfe0eeeeeeedededededed -edededececececececebebebe1e3e886a5ca00579e00579e00579e00579e00579e00579e -00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e2166a8a0b6d2 -e9e9ebeeeeeeeeeeeeeeeeeeeeeeeeefefefefefefefefefefefefefefefd2d8e45d8bbc -085aa000579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e -00579e00579e00579e00579e5980b8dadde2e6e6e6e5e5e5e6e6e6e6e6e6e6e6e6e5e5e5 -e6e6e6a2b2cf2869aa00579e00579e00579e00579e00579e00579e1361a485a2c8e8e8ea -ededeceeeeedededecededececececebebeaebeae9ebeae9ebeae9ebeae9ebeae9ecebea -ecebeaebeae9ebeae9ebeae9ebeae9ebeaeaebeaeaecebebededecededeceeeeeef0f0f0 -f3f3f3f6f6f6f9f9f9fbfbfbfcfcfcfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfefefe -fefefefefefefffffffffffffffffffffffffffffffffffffdfdfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefdfefefefefefefefefefefefefe -fefefefefefefefefefefefefefefefefefefefefefefefefefefedee4f1447fb703589f -00579e00579e00579e00579e00579e00579e00579e00579e00579e075aa03c7bb494afd4 -dae1f0fbfbfdfdfdfdfdfdfdfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc -fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfbfbfbfbfbfbfbfbfbfbfbfbfafafafafafa -fafafafafafafafafafafafafafafafbfbfbfbfbfbfbfbfbfbfbfbf9f9f9f9f9f9f9f9f9 -f9f9f9f9f9f9f9f9f99eb2d71160a400579e00579e00579e00579e00579e00579e00579e -00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e -1a64a79ab7d7f9fafcfdfdfdfefefefefefefefefefefefefefefefefefefefefefefefe -fefefefefefefdfdfdfcfcfcfcfcfcfcfcfc3077b000579e00579e00579e00579e00579e -00579e00579e00579e00579e326cadbdc9def1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f2f2f2 -f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2 -f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2d3dae84982b800579e00579e00579e00579e00579e -00579e00579e00579e00579e2a6bacaabbd8f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f1f1f1 -f0f0f0f1f1f1f0f0f0efefefefefefefefefefefefefefefefefefefefef9fb0d31763a6 -00579e00579e00579e00579e00579e00579e00579e487eb5c6cedfecececebebebebebeb -ebebebeaeaeae9e9e9e9e9e9dfe1e684a4c800579e00579e00579e00579e00579e00579e -00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e01589f5f8cbd -d4dae5eeeeeeeeeeeeefefefefefeff0f0f0f0f0f0f0f0f0f0f0f0e4e6ec89a7cc1963a6 -00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e -00579e00579e00579e00579e5880b7d8dbe0e3e3e3e3e3e3e3e3e3e4e4e4e4e4e4e3e3e3 -e3e3e3a0b1ce2869a900579e00579e00579e00579e00579e00579e03589f3472aeb1bfd7 -e8e9eaeaeae9e8e8e8e8e8e8e8e8e7e8e7e6e7e7e6e7e6e5e7e6e6e8e7e7e8e7e7e8e8e7 -e8e8e7e8e8e7e8e7e7e8e7e7e8e8e7e8e8e8e7e7e7e8e8e8e8e8e8e9e9e8eaeaeaebebeb -eeeeeef2f2f2f5f5f5f7f7f7f9f9f9fafafafbfbfbfbfbfbfcfcfcfcfcfcfefefefefefe -fefefefffffffffffffffffffffffffffffffffffffffffffdfdfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd -fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfcfcfd94b0d51763a6 -00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e1c63a7 -4b84ba90abd2c6d1e8f6f7fafcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc -fcfcfcfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfafafafafafafafafafafafaf9f9f9f9f9f9 -f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f8f8f8f7f7f7f7f7f7 -f8f8f8f8f8f8e6e9f14b81b80559a000579e00579e00579e00579e00579e1863a65a89bd -81a8cc739dc72d6fae05599f00579e00579e00579e00579e00579e00579e00579e00579e -01589f6090c2dfe5f1fcfcfcfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfefefefefefefefefe -fefefefefefefdfdfdfcfcfcfcfcfcfcfcfc3077b000579e00579e00579e00579e00579e -00579e00579e00579e00579e326badbcc9ddf0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2 -f2f2f2f1f1f1f1f1f1f1f1f1f1f1f1d2d8e74982b700579e00579e00579e00579e00579e -00579e00579e00579e00579e2a6baba9bad7f1f1f1f1f1f1f0f0f0f0f0f0f0f0f0efefef -eeeeeeefefefeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeedededededed9eafd21763a6 -00579e00579e00579e00579e00579e00579e00579e487eb5c5cddde9e9e9e9e9e9e9e9e9 -e8e8e8e8e8e8e7e7e7e7e7e7dde0e483a3c700579e00579e00579e00579e00579e00579e -00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e1c65a7 -a4bad4e9eaeceeeeeeefefefefefefefefeff0f0f0f0f0f0eeeeefb3c5db3373af00579e -00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e -00579e00579e00579e00579e587fb7d7dadee2e2e2e2e2e2e1e1e1e2e2e2e2e2e2e2e2e2 -e2e2e29fafcd2869a900579e00579e00579e00579e00579e00579e00579e095ba14479b3 -a7b8d2dddfe2e5e5e5e6e5e5e6e6e5e6e6e5e6e6e5e6e6e5e6e6e5e6e6e5e6e6e5e6e6e5 -e6e6e6e6e6e6e6e6e5e5e5e4e5e5e5e5e5e4e6e5e5e6e6e5e5e5e5e5e5e5e5e5e5e6e6e6 -e8e8e8ecececefefeff2f2f2f4f4f4f7f7f7f8f8f8fafafafcfcfcfdfdfdfefefeffffff -fffffffffffffffffffffffffffffffffffffffffffffffffdfdfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd -fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfde7ebf4678fc3 -0a5ca100579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e -00579e1961a63676b25b90c09bb1d6cad3e9f1f3f8fcfcfcfcfcfcfcfcfcfbfbfbfbfbfb -fbfbfbfbfbfbfafafafafafafafafaf9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9 -f9f9f9f8f8f8f8f8f8f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7 -f7f7f7f6f6f6acbcda1d67a800579e00579e00579e00579e00579e0b5ca2628fc0d6dde9 -eceef2e4e8ef93add21e67a800579e00579e00579e00579e00579e00579e00579e00579e -00579e276bacb3c7e0fbfcfcfcfcfcfcfcfcfcfcfcfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd -fdfdfdfdfdfdfdfdfdfcfcfcfcfcfcfcfcfc3077b000579e00579e00579e00579e00579e -00579e00579e00579e00579e326badbcc9ddf0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -f0f0f0f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2 -f2f2f2f1f1f1f1f1f1f1f1f1f0f0f0d1d8e64882b700579e00579e00579e00579e00579e -00579e00579e00579e00579e2a6baba8b8d6efefefefefefeeeeeeeeeeeeeeeeeeededed -edededededededededededededededededededededecececebebebebebeb9caed01763a5 -00579e00579e00579e00579e00579e00579e00579e487db4c4cbdce7e7e7e7e7e7e7e7e7 -e7e7e7e6e6e6e6e6e6e6e6e6dcdee282a1c600579e00579e00579e00579e00579e00579e -00579e00579e085ba15380b7789bc2628cbc1f63a600579e00579e00579e00579e01579e -608abdd5dae4edededeeeeeeeeeeeeeeeeeeefefefefefefd1d8e55e8abd075aa000579e -00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e -00579e00579e00579e00579e587fb7d7dadee2e2e2e0e0e0e1e1e1e1e1e1e1e1e1e0e0e0 -e0e0e09eaecc2869a900579e00579e00579e00579e00579e00579e00579e00579e085aa0 -2c6eab7498c0bfc7d7dfe0e1e4e4e3e5e5e4e4e4e4e5e5e4e4e4e3e4e4e3e4e4e3e3e3e2 -e3e3e2e3e3e2e3e3e2e2e2e1e2e2e2e3e2e2e3e3e2e3e3e3e1e2e1e1e1e1e1e1e1e2e2e2 -e2e2e2e6e6e6e9e9e9edededf1f1f1f4f4f4f8f8f8fafafafcfcfcfefefeffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffdfdfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd -fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcdce4f0 -5c87bf0559a000579e00579e00579e00579e00579e00579e00579e00579e00579e00579e -00579e00579e00579e04599f1c65a82e72af4883b8799bc9a8b9dbd1d8ebf1f2f7fafafa -fafafafafafaf9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f8f8f8f8f8f8f8f8f8f8f8f8 -f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6f6f6f6f6f6f6f6f6 -f5f5f5ebedf1588bbd075aa000579e00579e00579e00579e00579e266baba9bbd9f4f4f4 -f4f4f4f4f4f4dfe3ec407db502589f00579e00579e00579e00579e00579e00579e00579e -00579e0559a0789ecae9ecf5fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc -fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc3077b000579e00579e00579e00579e00579e -00579e00579e00579e00579e326badbcc9ddf0f0f0f0f0f0f0f0f0f0f0f0f1f1f1f0f0f0 -f1f1f1f1f1f1f2f2f2f2f2f2f2f2f2f2f2f2f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f2f2f2 -f2f2f2f2f2f2f2f2f2f1f1f1f0f0f0d1d7e64881b700579e00579e00579e00579e00579e -00579e00579e00579e00579e2a6baba8b8d5eeeeeeededededededededededededececec -ecececececececececebebebebebebebebebebebebebebebeaeaeaeaeaea9caed01763a5 -00579e00579e00579e00579e00579e00579e00579e477db4c3cadbe7e7e7e6e6e6e6e6e6 -e6e6e6e5e5e5e4e4e4e4e4e4dadce082a1c600579e00579e00579e00579e00579e00579e -00579e00579e82a2c5c7cddad6d9dfcad0db789bc200579e00579e00579e00579e00579e -1360a491abcde2e3e8ebebebedededededededededd5dbe56e93c2115fa300579e00579e -00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e -00579e00579e00579e00579e5880b8d8dbe0e3e3e3e1e1e1e1e1e1e1e1e1e0e0e0e0e0e0 -e0e0e09eaecc2869a900579e00579e00579e00579e00579e00579e00579e00579e00579e -01579e1160a32e71ac648cbb9aabccbec7d8d9dae0e3e3e3e3e3e3e3e2e1e2e3e3e1e2e1 -e0e1e0e1e1e1e1e0e0e0e0e0e0e0e0e0e0e0e1e0e0e0e0e0dfdfdfdededededededddddd -dededee1e1e1e5e5e5eaeaeaf0f0f0f4f4f4f9f9f9fbfbfbfdfdfdfefefeffffffffffff -fffffffffffffffffffffffffffffffffffffffffffefdfefdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd -fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc -e1e8f26b8fc400579e00579e00579e00579e00579e00579e00579e00579e00579e00579e -00579e00579e00579e00579e00579e00579e03589f0e5da31a65a7246dab417cb57899c9 -b4c2dfebeef4f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f7f7f7f7f7f7f7f7f7f7f7f7 -f7f7f7f7f7f7f7f7f7f7f7f7f6f6f6f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5 -f5f5f5bac6df2b6fad00579e00579e00579e00579e00579e02589f4581b6dfe3ebf2f2f2 -f3f3f3f3f3f3f2f3f387a3cc1360a400579e00579e00579e00579e00579e00579e00579e -00579e00579e3f75b4cbd6e9fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc -fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc3077b000579e00579e00579e00579e00579e -00579e00579e00579e00579e326badbcc9ddf0f0f0f0f0f0f0f0f0f1f1f1f1f1f1f1f1f1 -f2f2f2f2f2f2f2f2f2f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f5f5f5f4f4f4f4f4f4f4f4f4 -f3f3f3f2f2f2f2f2f2f2f2f2f1f1f1d1d7e54881b700579e00579e00579e00579e00579e -00579e00579e00579e00579e2a6baba7b7d4ecececebebebebebebebebebebebebeaeaea -eaeaeaebebebeaeaeae9e9e9e9e9e9e9e9e9e9e9e9e8e8e8e8e8e8e8e8e89badcf1763a5 -00579e00579e00579e00579e00579e00579e00579e477db3c1c9d9e5e5e5e5e5e5e4e4e4 -e3e3e3e3e3e3e2e2e2e2e2e2d9dbdf82a1c600579e00579e00579e00579e00579e00579e -00579e00579ec4ced8e0e0e0e0e0e0e0e0e0b6c2d3336cac00579e00579e00579e00579e -00579e1764a56f90c0b1bdd6d2d6e1c7cfdf99adcf4b7db50f5ea300579e00579e00579e -00579e00579e00579e5481b8acbfd7bccedd6d93c200579e00579e00579e00579e00579e -00579e00579e00579e00579e5980b8d9dce1e4e4e4e3e3e3e2e2e2e2e2e2e1e1e1e0e0e0 -e1e1e19fb0cd2869a900579e00579e00579e00579e00579e00579e00579e00579e00579e -00579e00579e00579e0b5ca11863a5216aa8276faa3074ac497db4497db3497db4497db3 -4f7fb46f8fbdaab6cfd6d7dcdedededededededededddddddcdcdcdadadadadadad9d9d9 -dbdbdbdfdfdfe5e5e5ecececf2f2f2f7f7f7fbfbfbfdfdfdfefefeffffffffffffffffff -fffffffffffffffffffffffffffffffffffffefefefdfdfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefdfefefefefefefefdfdfdfdfdfd -fdfdfdfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc -fcfcfceef1f798b1d62365a900579e00579e00579e00579e00579e00579e00579e00579e -00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e03589f0a5ca1 -1262a52b6fad7f9ccbd4dbebf7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6f6f6 -f6f6f6f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5 -f2f2f36d98c30b5ca200579e00579e00579e00579e00579e1762a68fa8cef0f0f1f1f1f1 -f2f2f2f2f2f2f3f3f3cad3e5256dab00579e00579e00579e00579e00579e00579e00579e -00579e00579e065aa093b2d4f2f4f8fbfbfbfbfbfbfbfbfbfbfbfbfcfcfcfcfcfcfcfcfc -fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfbfbfb3076b000579e00579e00579e00579e00579e -00579e00579e00579e00579e326cadbdcadff2f2f2f2f2f2f3f3f3f3f3f3f3f3f3f3f3f3 -f4f4f4f4f4f4f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f6f6f6f6f6f6f6f6f6f6f6f6f5f5f5 -f6f6f6f4f4f4f3f3f3f3f3f3f2f2f2d1d7e64881b700579e00579e00579e00579e00579e -00579e00579e00579e00579e2a6aaba6b5d2eaeaeae9e9e9e9e9e9e9e9e9e8e8e8e9e9e9 -e9e9e9e8e8e8e8e8e8e7e7e7e8e8e8e8e8e8e7e7e7e7e7e7e7e7e7e7e7e79bacce1763a5 -00579e00579e00579e00579e00579e00579e00579e477cb3c0c7d8e3e3e3e3e3e3e1e1e1 -e0e0e0e0e0e0e1e1e1e1e1e1d7d9de809fc400579e00579e00579e00579e00579e00579e -00579e00579ec8d1d8dfdfdfdedededededed1d3da7296be00579e00579e00579e00579e -00579e00579e0a5ba11261a41765a51564a50f5fa305599f00579e00579e00579e00579e -00579e00579e4677b3c9d2dfe9eaebebededc9d5e200579e00579e00579e00579e00579e -00579e00579e00579e00579e5980b8dbdee3e7e7e7e6e5e4e5e5e4e4e4e4e3e3e3e3e3e3 -e3e3e3a1b1ce2869aa00579e00579e00579e00579e00579e00579e00579e00579e00579e -00579e00579e00579e00579e00579e00579e00579e01579e04599f04599f04599f04599f -05599f095ba11863a57699bfced1d8dbdbdbdbdbdbd9d9d9d8d8d8d5d5d5d6d6d6d7d7d7 -dbdbdbe2e2e2eaeaeaf1f1f1f7f7f7fbfbfbfdfdfdffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffefefefdfdfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefdfefefefefefefefefefefefefe -fefefefdfdfdfdfdfdfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfbfbfb -fbfbfbfbfbfbf8f8fae0e5f07e9ccb2769ab065aa002589f00579e00579e00579e00579e -00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e -00579e01579e04599f0b5ea37593c6d7ddebf3f4f5f6f6f6f5f5f5f5f5f5f5f5f5f5f5f5 -f5f5f5f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f3f3f3f3f3f3f3f3f3 -c2cce13876b100579e00579e00579e00579e00579e00579e2e72adced5e4f0f0f0f0f0f0 -f1f1f1f2f2f2f3f3f3f3f4f45e8abe075aa000579e00579e00579e00579e00579e00579e -00579e00579e00579e4f7fbad7deedfafafafafafafafafafafafafafafafafafafafafa -fafafafafafafafafafafafafafafafafafa3076b000579e00579e00579e00579e00579e -00579e00579e00579e00579e326caebfcce0f4f4f4f4f4f4f5f5f5f5f5f5f5f5f5f5f5f5 -f5f5f5f5f5f5f6f6f6f6f6f6f7f7f7f7f7f7f7f7f7f8f8f8f8f8f8f8f8f8f8f8f8f7f7f7 -f6f6f6f6f6f6f5f5f5f5f5f5f3f3f3d2d9e74882b700579e00579e00579e00579e00579e -00579e00579e00579e00579e296aaaa4b4d1e8e8e8e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7 -e7e7e7e7e7e7e7e7e7e7e7e7e6e6e6e7e7e7e6e6e6e6e6e6e5e5e5e5e5e59aaacc1762a5 -00579e00579e00579e00579e00579e00579e00579e467cb3bec6d6e1e1e1e0e0e0e0e0e0 -e0e0e0e0e0e0e0e0dfe0e0e0d6d8dd809fc300579e00579e00579e00579e00579e00579e -00579e00579ec6cfd6dcdcdcdcdcdcdcdcdcdbdbdbacb9ce2e69aa00579e00579e00579e -00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e -00579e105da3a4bad3e6e7e8ebebebeaeaebbac8db00579e00579e00579e00579e00579e -00579e00579e00579e00579e5980b9dde0e5e8e8e8e7e7e7e8e8e8e7e7e7e6e6e6e7e7e7 -e6e6e6a2b2cf2869aa00579e00579e00579e00579e00579e00579e00579e00579e00579e -00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e -00579e00579e00579e3e73afb1bbced9d9d9d7d7d7d4d4d4d2d2d2d2d2d2d5d5d5dbdbdb -e2e2e2eaeaeaf1f1f1f7f7f7fbfbfbfdfdfdffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffefefefdfdfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefefefefefefefefefefefefefe -fefefefefefefefefefdfdfdfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfbfbfbfbfbfb -fbfbfbfafafafafafafafafaf9f9f9e5eaf2a4b6da5684bc1e69a91161a40c5da204599f -00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e -00579e00579e00579e00579e01579e1f67a99bb0d4eaecf1f4f4f4f4f4f4f4f4f4f4f4f4 -f3f3f3f3f3f3f3f3f3f3f3f3f2f2f2f2f2f2f3f3f3f2f2f2f2f2f2f2f2f2f2f2f2eeeff0 -82a2c9135fa400579e00579e00579e00579e00579e0c5ca27193c2eeeeeeefefefefefef -f0f0f0f2f2f2f3f3f3f5f5f5b0bedc1562a500579e00579e00579e00579e00579e00579e -00579e00579e00579e085ba2abc3ddf6f6f8fafafafafafaf9f9f9f9f9f9f9f9f9f9f9f9 -f9f9f9f9f9f9fafafafafafafafafafafafa3076b000579e00579e00579e00579e00579e -00579e00579e00579e00579e326caec0cce1f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5 -f6f6f6f7f7f7f8f8f8f9f9f9f9f9f9f9f9f9fafafafafafafbfbfbfbfbfbfafafafafafa -f8f8f8f8f8f8f6f6f6f5f5f5f4f4f4d3d9e74882b700579e00579e00579e00579e00579e -00579e00579e00579e00579e296aaaa4b4d0e6e6e6e6e6e6e6e6e6e6e6e6e7e7e7e6e6e6 -e7e7e7e6e6e6e6e6e6e6e6e6e5e5e5e5e5e5e4e4e4e4e4e4e3e3e3e3e3e399aacc1762a5 -00579e00579e00579e00579e00579e00579e00579e467cb2bec5d6e0e0e0e0e0e0e0e0e0 -dfdfdfdfdfdfdfdfdfdfdfdfd6d8dc809fc300579e00579e00579e00579e00579e00579e -00579e00579ec5ced5d9dadadbdbdbdadadad9d9d9c9ccd5658db903589f00579e00579e -00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e -05599f6e93bfd3d7dfe6e6e6e7e7e7e5e6e6b3c2d700579e00579e00579e00579e00579e -00579e00579e00579e00579e5981b9dee1e6eaeaeaeaeaeae9e9e9e9e9e9e8e8e8e8e8e8 -e8e8e8a2b3d02869aa00579e00579e00579e00579e00579e00579e00579e00579e00579e -00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e -00579e00579e065aa05280b4b9c0ced4d4d4d2d2d2d0d0d0d0d0d0d4d4d4dbdbdbe4e4e4 -ecececf3f3f3f9f9f9fcfcfcfefefeffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffefefefdfdfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefefffffffffffffffffffefefe -fefefefefefefefefefefefefdfdfdfdfdfdfcfcfcfcfcfcfcfcfcfcfcfcfbfbfbfbfbfb -fafafaf9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f7f8f8dee3efaebedd839dcc4d82b9 -2d73af226baa1864a70d5ca200579e00579e00579e00579e00579e00579e00579e00579e -00579e00579e00579e00579e00579e00579e1360a47b9ac7e0e4ebf2f2f2f2f2f2f3f3f3 -f3f3f3f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f1f1f1f1f1f1f0f0f0f0f0f0f0f0f0ccd3e3 -467fb600579e00579e00579e00579e00579e00579e1c66a7b5c0daeeeeeeeeeeeeefefef -f0f0f0f1f1f1f3f3f3f5f5f5ebedf23475b001589e00579e00579e00579e00579e00579e -00579e00579e00579e00579e628cc1e3e8f0f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9 -f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f93076af00579e00579e00579e00579e00579e -00579e00579e00579e00579e326caec1cde2f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6 -f7f7f7f8f8f8f9f9f9fafafafafafafbfbfbfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc -fafafaf8f8f8f7f7f7f5f5f5f4f4f4d3d9e74882b700579e00579e00579e00579e00579e -00579e00579e00579e00579e296aaaa3b3d0e5e5e5e5e5e5e5e5e5e5e5e5e6e6e6e5e5e5 -e5e5e5e5e5e5e5e5e5e4e4e4e3e3e3e3e3e3e2e2e2e2e2e2e2e2e2e1e1e198aacb1762a5 -00579e00579e00579e00579e00579e00579e00579e467bb2bdc5d5e0e0e0e0e0e0e0e0e0 -dfdfdfdedfdfdfdfdfdfdfdfd5d7dc809fc300579e00579e00579e00579e00579e00579e -00579e00579ec1cad3dadadad9d9d9d9d9d9d9d9d9d9d9d99db1c82366a700579e00579e -00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e -3670adb6c3d5e2e2e2e3e3e3e3e3e3e2e3e4a2b4d000579e00579e00579e00579e00579e -00579e00579e00579e00579e5980b9dee1e6eaeaeaeaeaeaeaeaeae9e9e9e9e9e9e8e8e8 -e8e8e8a2b3d02869aa00579e00579e00579e00579e00579e00579e00579e00579e00579e -00579e03589f0e5da21964a51c66a61c65a61c65a61c65a61b65a61b65a51b65a51b65a5 -1c65a5216aa75382b4afb9cbd2d2d2d0d0d0cdcdcdccccccd1d1d1dadadae3e3e3eeeeee -f5f5f5f9f9f9fdfdfdfefefeffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffefdfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff -fffffffefefefefefefefefefdfdfdfdfdfdfcfcfcfcfcfcfcfcfcfcfcfcfbfbfbfbfbfb -fafafaf9f9f9f9f9f9f9f9f9f9f9f9f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f9f9f9 -e9ecf4c8d0e7a2b5d87497c73b7db5246bab0e5da200579e00579e00579e00579e00579e -00579e00579e00579e00579e00579e00579e00579e1661a57f9fc8e3e6ecf0f0f0f1f1f1 -f0f0f0f0f0f0f0f0f0f0f0f0efefefefefefefefefefefefefefefefefefebebed94adcf -1d64a700579e00579e00579e00579e00579e03599f467db5e7e8ebeeeeeeeeeeeeeeeeee -f0f0f0f1f1f1f3f3f3f5f5f5f5f5f592a7d0075ba000579e00579e00579e00579e00579e -00579e00579e00579e00579e1c62a7c3d2e5f7f7f8f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9 -f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f93076af00579e00579e00579e00579e00579e -00579e00579e00579e00579e326caec0cde2f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f7f7f7 -f8f8f8f9f9f9f9f9f9fafafafbfbfbfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfbfbfbfbfbfb -fafafaf8f8f8f6f6f6f5f5f5f3f3f3d2d8e64881b700579e00579e00579e00579e00579e -00579e00579e00579e00579e296aaaa2b2cfe3e3e3e4e4e4e4e4e4e4e4e4e5e5e5e4e4e4 -e4e4e4e3e3e3e3e3e3e3e3e3e2e2e2e2e2e2e1e1e1e1e1e1e1e1e1e0e0e098a9ca1762a5 -00579e00579e00579e00579e00579e00579e00579e467cb2bdc5d6e0e0e0e0e0e0e0e0e0 -e1e1e1e0e1e1e0e0e0e0e0e0d6d8dd809fc400579e00579e00579e00579e00579e00579e -00579e00579eb1bdcfdadadadadadad9d9d9d9d9d9d9d9d9c2c8d35886b603589f00579e -00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e115fa3 -82a0c3d5d6dbdfdfdfdfdfdfdfdfdfdededf96abcb00579e00579e00579e00579e00579e -00579e00579e00579e00579e5980b8dcdfe4e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e7e8e8 -e7e8e8a2b3d02869aa00579e00579e00579e00579e00579e00579e00579e00579e00579e -085aa02f6fab7193bf9faecca9b5d0a8b4cfa8b4cea7b3cda6b2cca5b1cba5b1cba5b1ca -a7b2cab9bfcecfd0d3d2d2d2cdcdcdcacacacacacacececed8d8d8e3e3e3edededf6f6f6 -fbfbfbfdfdfdfefefefefefeffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffefefefdfdfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff -fffffffffffffefefefefefefefefefefefefdfdfdfcfcfcfcfcfcfcfcfcfcfcfcfbfbfb -f9f9f9f9f9f9f9f9f9f8f8f8f8f8f8f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6f6f6f6f6f6 -f7f7f7f8f8f8fafafafafbfbe7ebf4b1c1df7198c63274b00f5da300579e00579e00579e -00579e00579e00579e00579e00579e00579e00579e00579e276caba2b7d4ecedeeefefef -eeeeeeeeeeeeefefefefefefeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeedededd2d8e45689bb -01589f00579e00579e00579e00579e00579e0c5ea29aadd0ececececececedededeeeeee -efefeff1f1f1f4f4f4f5f5f5f6f6f6d9deec1d65a800579e00579e00579e00579e00579e -00579e00579e00579e00579e00579e7d9ecbeef0f5f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9 -f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f93076af00579e00579e00579e00579e00579e -00579e00579e00579e00579e326caec0cde2f6f6f6f6f6f6f6f6f6f7f7f7f7f7f7f7f7f7 -f8f8f8f9f9f9f9f9f9fbfbfbfcfcfcfcfcfcfcfcfcfcfcfcfcfcfbfbfbfafafaf9fafaf9 -f8f8f7f6f6f5f4f5f4f3f3f3f1f1f1d0d7e44881b600579e00579e00579e00579e00579e -00579e00579e00579e00579e296aaaa1b1cde2e2e2e3e3e3e3e3e3e4e4e4e4e4e4e3e3e3 -e3e3e3e2e2e2e2e2e2e2e2e2e1e1e1e1e1e0e0e0e0e0e0e0e0e0e0e0e0e097a8ca1762a5 -00579e00579e00579e00579e00579e00579e00579e467cb3c0c7d8e3e3e3e3e3e3e4e3e3 -e4e4e4e4e4e4e4e4e4e4e4e4dadce182a1c600579e00579e00579e00579e00579e00579e -00579e00579eb0bdd0dbdbdbdadadad9d9d9d9d9d9d9d9d9d7d7d88ea7c41d64a500579e -00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e05599f5281b4 -bdc4d2dadadadbdbdadbdbdadcdcdbdadadb8ca2c600579e00579e00579e00579e00579e -00579e00579e00579e00579e5880b8d9dce1e5e5e5e6e6e6e5e6e6e6e6e6e6e6e6e6e7e6 -e6e7e7a2b2d02869aa00579e00579e00579e00579e00579e00579e00579e00579e00579e -2c6caaa0b1ccdddedfe0e0e0dfdfdfdedfdfdddddddbdbdbdadadad9dad9d9d9d8d8d8d8 -d6d6d6d4d4d4d1d1d1cdcdcdc8c8c8c6c6c6cacacad4d4d4e2e2e2edededf6f6f6fbfbfb -fdfdfdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffefdfefdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefdfefefefefefefefefefeffffff -fffffffefefefefefefefefefefefefefefefefefefdfdfdfcfcfcfcfcfcfcfcfcfbfbfb -fafafaf9f9f9f9f9f9f8f8f8f7f7f7f7f7f7f7f7f7f6f6f6f6f6f6f6f6f6f5f5f5f5f5f5 -f6f6f6f6f6f6f7f7f7f9f9f9fafafafbfbfbf0f3f7bfcde46d95c51c66a800579e00579e -00579e00579e00579e00579e00579e00579e00579e00579e04599f598bbbd5dbe5eeeeee -ededededededededededededededededededececececececececece9e9eaa2b7d32669aa -00579e00579e00579e00579e00579e00579e2d6dabd5d9e3ebebebebebebecececeeeeee -efefeff2f2f2f4f4f4f5f5f5f6f6f6f7f7f7628ac000579e00579e00579e00579e00579e -00579e00579e00579e00579e00579e2f6daed8e0edfafafafafafafafafafafafafafafa -fafafafafafafafafafafafafafafafafafa3076b000579e00579e00579e00579e00579e -00579e00579e00579e00579e326caec0cde2f6f6f6f6f6f6f6f6f6f6f6f6f7f7f7f7f7f7 -f8f8f8f9f9f9f9f9f9fbfbfbfcfcfcfcfcfbfbfbfbfbfbfafbfbfafafaf9f9f9f8f8f8f7 -f6f6f5f4f4f4f3f3f2f1f1f1efeeeeced5e34781b600579e00579e00579e00579e00579e -00579e00579e00579e00579e2969a9a1b1cde2e2e2e3e3e3e4e4e4e4e4e4e4e4e4e3e3e3 -e3e3e3e2e2e2e2e2e2e2e2e2e1e1e1e0e0e0e0e0e0e0e0e0e0e0e0e0e0e098a8ca1762a4 -00579e00579e00579e00579e00579e00579e00579e477db4c4cbdce9e9e9eaeaeaeaeaea -e9e9e9e9e9e9e9e9e9e9e9e9dfe1e684a3c800579e00579e00579e00579e00579e00579e -00579e00579eb2bfd1dddddddcdcdcdbdbdbdadadad9d9d9d8d8d8bec4d14c80b202589f -00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e266aa896acc6 -d6d6d8d9d9d9d8d8d8d8d9d8d9d9d8d6d6d7819ac100579e00579e00579e00579e00579e -00579e00579e00579e00579e577eb6d6d8dde1e1e1e2e2e2e2e2e2e3e3e2e4e4e3e4e4e4 -e5e5e5a1b2cf2869aa00579e00579e00579e00579e00579e00579e00579e00579e00579e -467eb3c4cad8dfdfdfdedededcdddddcdcdcdadbdbd9dad9d8d9d8d9d9d9d8d8d8d7d7d7 -d5d5d5d2d2d2cecececacacac6c6c6c7c7c7cfcfcfddddddeaeaeaf5f5f5fbfbfbfdfdfd -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffefefefdfdfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefdfefefefefefefefefefefefefe -fefefefefefefefefefefefefefefefefefefefefefdfdfdfcfcfcfcfcfcfcfcfcfcfcfc -fafafaf9f9f9f9f9f9f8f8f8f8f8f8f7f7f7f6f6f6f5f5f5f5f5f5f5f5f5f4f4f4f4f4f4 -f4f4f4f4f4f4f5f5f5f6f6f6f6f6f6f8f8f8f9f9f9fafafae0e6f081a3cd1d67a800579e -00579e00579e00579e00579e00579e00579e00579e00579e00579e2d6dacabbcd6ececec -ececececececebebebebebebebebebebebebeaeaeaeaeaeaeaeaead7dbe36a94c00559a0 -00579e00579e00579e00579e00579e02589f7895c2e8e8e8eaeaeaeaeaeaebebebededed -efefeff2f2f2f4f4f4f5f5f5f6f6f6f7f7f7b8c5df04599f00579e00579e00579e00579e -00579e00579e00579e00579e00579e01589f9ab2d6f8f8fafbfbfbfbfbfbfbfbfbfbfbfb -fbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfb3076b000579e00579e00579e00579e00579e -00579e00579e00579e00579e326caec0cde2f6f6f6f6f6f6f6f6f6f6f6f6f7f7f7f7f7f7 -f8f8f8f9f9f9fafafafbfbfbfbfbfbfafafafafaf9fbfbfaf9f9f8f9f9f8f7f7f6f5f5f4 -f3f3f2f2f2f1f0f0efeeeeedecececccd3e04780b500579e00579e00579e00579e00579e -00579e00579e00579e00579e296aaaa2b1cee3e4e3e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4 -e3e3e3e2e2e2e2e2e2e2e2e2e1e1e1e1e1e1e1e1e1e1e1e1e2e2e2e2e2e299aacb1762a5 -00579e00579e00579e00579e00579e00579e00579e497fb6c9d0e1f0f0f0f1f1f1f0f0f0 -f0f0f0f0f0f0efefefeeeeeee3e6ea86a6cb00579e00579e00579e00579e00579e00579e -00579e00579eb5c2d4e1e1e1dedededddddddcdcdcdadadad9d9d9d6d6d8819fc01862a4 -00579e00579e00579e00579e00579e00579e00579e00579e00579e105da26c90bac8ccd4 -d8d8d8d7d7d7d7d7d7d7d7d7d7d7d7d3d4d57692bd00579e00579e00579e00579e00579e -00579e00579e00579e00579e577db5d3d5dadedededededddfdfdfdfdfdfe0e0e0e1e1e1 -e2e2e2a0b0ce2869a900579e00579e00579e00579e00579e00579e00579e00579e00579e -477fb3c4cad6dddddddcdcdbdbdbdbdadadad8d9d9d8d8d8d7d7d7d6d6d6d5d5d5d4d4d4 -d1d1d1cecececbcbcbc9c9c9c9c9c9cececed9d9d9e6e6e6f2f2f2fafafafdfdfdfefefe -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffefefefefdfefdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefdfefefefefefefefefefefefefe -fefefefefefefefefefefefefefefefefefefefefefdfdfdfcfcfcfcfcfcfcfcfcfcfcfc -fbfbfbf9f9f9f9f9f9f8f8f8f8f8f8f7f7f7f6f6f6f5f5f5f4f4f4f4f4f4f3f3f3f3f3f3 -f3f3f3f2f2f2f3f3f3f3f3f3f4f4f4f5f5f5f7f7f7f7f7f7f7f7f7dfe4ee7197c5115fa4 -00579e00579e00579e00579e00579e00579e00579e00579e00579e0d5ca284a6c9e8e8e9 -eaeaeae9e9e9e9e9e9e8e8e8e9e9e9e9e9e9e8e8e8e8e8e8e7e8e8b0c1d6306ead00579e -00579e00579e00579e00579e00579e03589fa6b3d1e7e7e7e8e8e8e9e9e9ebebebededed -efefeff2f2f2f4f4f4f5f5f5f6f6f6f7f7f7ebeef31460a500579e00579e00579e00579e -00579e00579e00579e00579e00579e00579e3e77b3f0f3f7fcfcfcfcfcfcfcfcfcfcfcfc -fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc3077b000579e00579e00579e00579e00579e -00579e00579e00579e00579e326caec0cde2f6f6f6f6f6f6f6f6f6f6f6f6f7f7f7f7f7f7 -f9f8f8f9f9f8fafaf9fafaf9fafaf9fafaf9fafaf9f9f9f8f7f7f6f6f6f5f4f4f3f3f3f2 -f1f1f0efefeeedececebebebe9e9e9cad1de467fb400579e00579e00579e00579e00579e -00579e00579e00579e00579e296aaaa3b2cfe5e5e4e5e5e5e5e6e5e5e5e5e5e5e5e5e5e5 -e5e5e5e5e5e5e4e4e4e4e4e4e4e4e4e4e4e4e5e5e5e5e5e5e6e6e6e7e7e79badcf1763a5 -00579e00579e00579e00579e00579e00579e00579e4a80b8cdd5e6f5f5f5f6f6f6f5f5f5 -f5f5f5f5f5f5f4f4f4f2f2f2e7e9ee88a7cd00579e00579e00579e00579e00579e00579e -00579e00579eb7c4d7e4e4e5e2e2e2dfdfdfdedededbdbdbdadadad9d9d9b9c1d03e79af -01579e00579e00579e00579e00579e00579e00579e00579e01589e3b76adb0baccd7d6d6 -d7d7d7d6d6d6d6d6d6d6d6d6d6d6d6d2d3d56e8cbb00579e00579e00579e00579e00579e -00579e00579e00579e00579e577db5d0d3d8dadadadadad9dbdbdbdcdcdcdddddddedede -dfdfdf9eafcc2869a900579e00579e00579e00579e00579e00579e00579e00579e00579e -467eb2c3c9d5dbdcdbdadadad8d8d8d6d6d6d2d2d2d0d0d0cecececdcdcdcdcdcdcecece -cececececececfcfcfd0d0d0d5d5d5dcdcdce6e6e6f0f0f0f8f8f8fdfdfdfefefeffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffdfdfefdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefdfefefefefefefefefefefefefe -fefefefefefefefefefefefefefefefefefefefefefdfdfdfdfdfdfcfcfcfcfcfcfcfcfc -fbfbfbfafafaf9f9f9f9f9f9f8f8f8f7f7f7f5f5f5f5f5f5f4f4f4f3f3f3f2f2f2f2f2f2 -f1f1f1f0f0f0f1f1f1f1f1f1f1f1f1f2f2f2f4f4f4f4f4f4f4f4f4f4f4f4becae03574b0 -00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e6795bfdbdee4 -e8e8e8e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7d9dce27a9dc4085aa000579e -00579e00579e00579e00579e00579e02589e7592c0dedfe2e6e6e6e7e7e7eaeaeaececec -eeeeeef1f1f1f4f4f4f5f5f5f6f6f6f7f7f7c6d0e50b5ca200579e00579e00579e00579e -00579e00579e00579e00579e00579e00579e085ba1b7c6e2fdfdfdfdfdfdfdfdfdfdfdfd -fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfcfcfc3077b000579e00579e00579e00579e00579e -00579e00579e00579e00579e326caec1cde2f7f7f7f6f6f5f7f6f5f5f5f5f6f6f6f7f7f6 -f9f8f7f9f9f8fafaf9fafaf9fafaf9fafaf9f9f9f8f8f7f6f5f6f5f4f4f3f3f3f2f1f1f1 -efeeeeedecebeaeae9e8e8e8e7e7e7c9d0dc467fb300579e00579e00579e00579e00579e -00579e00579e00579e00579e296aaaa4b4d0e8e7e7e8e8e7e8e8e8e8e8e8e8e8e8e8e8e8 -e8e8e8e8e8e8e8e8e8e8e8e8e9e9e9eaeaeaebebebecececedededefefef9fb1d31863a6 -00579e00579e00579e00579e00579e00579e00579e4b81b9d0d8eaf9f9f9f9f9f9f8f8f8 -f8f8f8f7f7f7f6f6f6f5f5f5e9ebf089a8cf00579e00579e00579e00579e00579e00579e -00579e00579eb6c4d8e7e7e7e5e5e5e1e1e1dfdfdfdddddddbdbdbdadadad4d5d77898be -1460a300579e00579e00579e00579e00579e00579e00579e1a64a5829ec1d1d3d6d7d8d7 -d7d7d7d7d7d6d6d7d6d5d6d5d5d5d5d1d2d56484b800579e00579e00579e00579e00579e -00579e00579e00579e00579e567db4cdd0d5d8d7d7d8d7d7d8d8d8d9d9d9dadadadbdbdb -dddede9dadca2768a900579e00579e00579e00579e00579e00579e00579e00579e00579e -467eb2c0c6d2d6d6d6d2d2d2ccccccc9c9c9c6c6c6c6c6c6c8c8c8cccccccfcfcfd4d4d4 -d8d8d8dbdbdbdededee2e2e2e6e6e6ecececf2f2f2f8f8f8fcfcfcfefefeffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffefdfefdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefdfefefefefefefefefefefefefe -fefefefefefefefefefefefefefefefefefefefefefefefefdfdfdfdfdfdfcfcfcfcfcfc -fcfcfcfafafafafafaf9f9f9f8f8f8f7f7f7f5f5f5f5f5f5f4f4f4f3f3f3f1f1f1f0f0f0 -f0f0f0efefefefefefefefefefefeff0f0f0f0f0f0f1f1f1f1f1f1f1f1f1e6e8ec548abb -03589f00579e00579e00579e00579e00579e00579e00579e00579e00579e5c8cbbd1d6e0 -e6e6e6e6e6e6e6e6e6e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5bec8d84075b000579e00579e -00579e00579e00579e00579e00579e00579e1a63a55b8ab996a9cba8b6d1b1bcd5b3bed7 -b4c0dab6c1dcb7c3ddb8c4dea8b9d98ba4ce3676b100579e00579e00579e00579e00579e -00579e00579e00579e00579e00579e00579e00579e5d86bffefefefefefefefefefefefe -fefefefefefefdfdfdfcfcfcfcfcfcfcfcfc3076b000579e00579e00579e00579e00579e -00579e00579e00579e00579e326caec0cde1f6f6f5f7f7f6f7f7f6f7f7f6f8f8f7f9f9f8 -fafaf9fbfbfafafaf9fbfaf9fbfaf9faf9f8f8f8f7f6f6f6f5f5f5f4f4f4f1f1f1f0f0f0 -eeeeededececebebeae8e8e8e8e8e8cad0dd467fb400579e00579e00579e00579e00579e -00579e00579e00579e00579e2a6baba7b7d4ecececededededededededededededededed -ededededededeeeeeeefefeff1f1f1f2f2f2f3f3f3f3f3f3f4f4f4f6f6f6a2b4d71864a6 -00579e00579e00579e00579e00579e00579e00579e4b82b9d2daecfbfbfbfbfbfbfafafa -f9f9f9f9f9f9f8f8f8f6f6f6eaecf189a9cf00579e00579e00579e00579e00579e00579e -00579e00579ea7b9d5e7e8e8e6e6e6e2e2e2e0e0e0dedededbdbdbd9d9d9d9d9d9b4bdce -3172ab00579e00579e00579e00579e00579e00579e085aa05282b4c6c9d3d9d8d8d9d9d9 -d8d8d8d8d8d8d8d7d7d8d8d7d7d7d7d1d2d45b80b500579e00579e00579e00579e00579e -00579e00579e00579e00579e557cb3c9cdd1d5d5d4d7d6d6d8d8d8d9d9d9dadbdbdcdcdc -dedede9eaecb2769a900579e00579e00579e00579e00579e00579e00579e00579e00579e -447cafb8becac9c9c9c3c3c3bfbfbfc0c0c0c6c6c6cdcdcdd6d6d6dddddde3e3e3e8e8e8 -ecececefefeff1f1f1f3f3f3f6f6f6f9f9f9fbfbfbfdfdfdfefefeffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fefefefdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfdfdfefefefefefefefefefefefe -fefefefefefefefefefefefefefefefefefefefefefefefefdfdfdfdfdfdfcfcfcfcfcfc -fcfcfcfbfbfbfafafaf9f9f9f9f9f9f7f7f7f6f6f6f5f5f5f4f4f4f3f3f3f1f1f1f0f0f0 -efefefeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeededed7097c2 -0d5ca200579e00579e00579e00579e00579e00579e00579e00579e00579e5a8abacfd4de -e5e5e5e4e4e4e4e4e4e3e3e3e3e3e3e2e2e2e2e2e2dbdde08da9c90b5ba100579e00579e -00579e00579e00579e00579e00579e00579e00579e085ba01a64a61f67a72269a8226aa9 -236aa9236aaa236aaa236baa1e67a81560a501579e00579e00579e00579e00579e00579e -00579e00579e00579e00579e00579e00579e00579e1360a4d7deeffefefefefefefefefe -fdfdfdfcfcfcfbfbfbfafafaf8f8f8f7f7f72f76af00579e00579e00579e00579e00579e -00579e00579e00579e00579e326caec0cde1f6f6f5f7f7f6f8f8f7fafaf9fbfbfbfcfbfb -fcfbfbfdfcfbfcfbfbfbfbfafafaf9f9f8f8f8f7f7f6f6f6f4f4f4f3f3f3f2f1f1f1f0f0 -efefefeeedededecececebebebeaead0d5e14982b600579e00579e00579e00579e00579e -00579e00579e00579e00579e2a6baca9bad7f1f1f1f1f1f1f2f2f2f2f2f2f3f3f3f3f3f3 -f3f3f3f4f4f4f5f5f5f6f6f6f7f7f7f7f7f7f8f8f8f9f9f9f9f9f9f9f9f9a4b5d91864a6 -00579e00579e00579e00579e00579e00579e00579e5085bbd6ddecfbfbfbfbfbfbfbfbfb -fafafaf9f9f9f8f8f8f7f7f7eaecf189a9cf00579e00579e00579e00579e00579e00579e -00579e00579ea0b4d2e5e5e6e3e3e3e1e1e1dfdfdfdddddddbdbdbd9d9d9d9d9d9d4d5d8 -7090bc105ea200579e00579e00579e00579e03589f3170abaab7cbd9d9d9dbdadadadada -dadadadadadadad9d9d9dad9d9dad9d3d4d75279b400579e00579e00579e00579e00579e -00579e00579e00579e00579e567cb3cccfd4d7d8d8dbdbdadededddfdfdee1e1e0e1e1e1 -e2e3e3a0b0ce2869a900579e00579e00579e00579e00579e00579e00579e00579e00579e -4178acadb3bfbbbbbbbababac1c1c1cbcbcbd8d8d8e3e3e3ecececf2f2f2f6f6f6f9f9f9 -fafafafbfbfbfbfbfbfcfcfcfdfdfdfdfdfdfefefefefefeffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fefefefdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd -fdfdfdfefefefefefefefefefefefefefefefefefefefefefdfdfdfdfdfdfcfcfcfcfcfc -fcfcfcfbfbfbfbfbfbf9f9f9f9f9f9f8f8f8f6f6f6f5f5f5f4f4f4f3f3f3f1f1f1f0f0f0 -efefefeeeeeeededededededececececececececececececebebebebebebeaeaea7899c3 -115ea300579e00579e00579e00579e00579e00579e00579e00579e00579e5b8bbaced3dc -e2e2e2e2e2e2e1e1e1e1e1e1e1e1e1e0e0e0e0e0e0c7cdd94e7cb500579e00579e00579e -00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e -00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e -00579e00579e00579e00579e00579e00579e00579e03589f839dcefefefefefefefcfcfc -fbfbfbf9f9f9f7f7f7f5f5f5f2f2f2f0f0f02e74ae00579e00579e00579e00579e00579e -00579e00579e00579e00579e326caec0cde1f6f6f6f8f8f7fafaf9fbfbfafbfbfafcfcfb -fcfcfcfbfbfbfbfbfafbfbfafafaf9f9f9f8f7f7f6f7f7f6f6f6f5f4f4f3f4f4f3f3f3f2 -f2f2f1f1f1f0f1f1f0f0f0efefefefe3e5eb568cbb00579e00579e00579e00579e00579e -00579e00579e00579e00579e2a6cacacbddaf6f6f6f6f6f6f7f7f7f7f7f7f8f8f7f9f9f8 -f9f9f9fafafafafafafbfbfbfbfbfbfbfbfbfafafafafafaf9f9f9f8f8f8a3b4d81864a6 -00579e00579e00579e00579e00579e00579e00579e5d8fbfe2e6f0f9f9f9fafafafafafa -f9f9f9f9f9f9f8f8f8f7f7f7eaecf189a9cf00579e00579e00579e00579e00579e00579e -00579e00579e9eb1cfe2e2e3e0e0e0dfdfdfdcdcdcdbdbdbd9d9d9d9d9d9d9d9d9d9d9d9 -bcc2d14078af05599f0b5ca14270af6587b988a0c3b7c2d0d6d7d9dadadadadadadbdbdb -dbdbdbdcdcdcdcdcdcdcdcdcdcdcdcd5d7da4973b100579e00579e00579e00579e00579e -00579e00579e00579e00579e577db5d4d6dbe0e1e0e2e1e0e2e2e2e2e3e2e3e3e2e2e2e2 -e2e2e29fafcc2768a900579e00579e00579e00579e00579e00579e00579e00579e00579e -3e75a8a5abb6b9b9b9c4c4c4d3d3d3e1e1e1edededf4f4f4f9f9f9fcfcfcfdfdfdfefefe -fefefeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd -fdfdfdfdfdfdfdfdfdfefefefefefefefefefefefefefefefefefefdfdfdfdfdfdd2daed -869fcd7c97c9bac5e2fafafaf9f9f9f8f8f8f7f7f7f6f6f6f4f4f4f3f3f3f1f1f1f0f0f0 -eeeeeeededededededeaeaeaeaeaeaeaeaeae9e9e9e9e9e9e8e8e8e8e8e8e3e4e6568bb8 -03599f00579e00579e00579e00579e00579e00579e00579e00579e00579e6b97bedadbdf -e0e0e0e0e0e0dfdfdfe0e0e0dfdfdfdfdfdfdcdcde9fb4cc075ba100579e00579e00579e -00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e01589f115ea4 -2365a82365a82366a91c62a70559a000579e00579e00579e00579e00579e00579e00579e -00579e00579e00579e00579e00579e00579e00579e00579e1f6aaaeaedf6fbfbfbf8f8f8 -f6f6f6f3f3f3f0f0f0edededeaeaeae8e8e82c73ac00579e00579e00579e00579e00579e -00579e00579e00579e00579e326caec0cde1f7f8f7fafaf9fbfbfafbfbfafbfbfafcfcfb -fcfcfbfdfcfbfcfbfbfcfbfafbfbfafbfbfafbfbfbfafafafafafaf8f8f8f7f7f7f7f7f7 -f6f7f7f7f6f6f6f5f4f5f5f4f5f5f4f5f5f584a4cb135fa400579e00579e00579e00579e -00579e00579e00579e00579e2467aaa5b9d9fafbfafbfbfafbfcfbfafaf9fbfbfbfcfbfa -fcfcfcfcfcfcfcfcfcfbfbfbf9f9f9f7f7f7f6f6f6f4f4f4f3f3f3f1f1f18ca3cc1360a4 -00579e00579e00579e00579e00579e00579e095ba17ea6cbf6f6f7f9f9f9f9f9f9f9f9f9 -f9f9f9f9f9f9f8f8f8f7f7f7eaecf189a9cf00579e00579e00579e00579e00579e00579e -00579e00579e9baecbdcdcdddcdcdcdbdad9d9d9d9d9d8d8d8d8d8d8d9d9d9d9d9d9d9d9 -d8d8d9ccd1d5b6c1d0c8ced4cfd2d7d2d4d7d6d7dad9d9dadbdbdbdcdcdcdbdbdbdcdcdc -dddddddddddddedededddddddfdfdfd7d9dc3f70af00579e00579e00579e00579e00579e -00579e00579e00579e00579e587fb7d7dbdfe2e2e2e2e2e2e2e2e2e0e0e0e0e0e0dfdfdf -dedede9dadca2768a900579e00579e00579e00579e00579e00579e00579e00579e00579e -3e75a7aaafbac9c9c9d9d9d9e8e8e8f2f2f2f9f9f9fcfcfcffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefefefdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefdfefdfdfdfdfdfdfcfcfcfcfcfc -fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfdfdfdfdfdfdfdfdfdf8f9fbb3c3e0226bab -00579e00579e0559a0537fbabccbe3eff1f5f4f5f6f6f6f6f4f4f4f3f3f3f1f1f1efefef -eeeeeeedededebebebeaeaeae9e9e9e9e9e9e8e8e8e7e7e7e6e6e6e3e4e5a9b8d12c6eab -00579e00579e00579e00579e00579e00579e00579e00579e00579e2566a89baecbe0e0e0 -e0e0e0dfdfdfdfdfdfdedededdddddddddddccd0d85780b500579e00579e00579e00579e -00579e00579e00579e00579e02589e0a5ca11d66a66a87ba97a6c6bbc1d1d5d6dae2e2e2 -e8e8e8edededf2f2f2f5f5f5f5f5f6d6dceca9b8db6589c11162a50559a000579e00579e -00579e00579e00579e00579e00579e00579e00579e00579e0c5da295abd4f6f6f6f3f3f3 -efefefececece8e8e8e6e6e6e2e2e2e0e0e02b71ab00579e00579e00579e00579e00579e -00579e00579e00579e00579e2c69abb8c7ddf4f4f4f7f7f7f9f9f8fbfbfafbfbfafcfcfc -fcfcfcfefdfdfdfdfdfdfdfcfdfdfcfdfdfcfdfcfbfcfbfafbfbfafbfbfafafaf9fbfbfa -fbfbfafbfbfafafaf9fafaf9fbfbfafbfbfabfcce43374b001579e00579e00579e00579e -00579e00579e00579e00579e03589f6898c4eceef4fbfbfafbfbfafbfbfbfbfcfcfafafa -f8f8f8f7f7f7f6f6f6f4f4f4f1f2f2eff0f0eeeeeeecebebe8e8e8d9dbe2417bb303589f -00579e00579e00579e00579e00579e00579e3572b0b9c5dff6f6f6f8f8f8f9f9f9f9f9f9 -f8f8f8f8f8f8f7f7f7f6f6f6ebedf289a9cf00579e00579e00579e00579e00579e00579e -00579e00579e98acc8d7d8d8d9d8d7d8d9d9d8d8d8d8d7d6d8d8d7d9d8d8d9d8d7d9d8d7 -dad9d9d9d9d9d9d9d9d9d9d9dbdbdbdadadadbdbdbdcdcdcdddddddddddddedededddddd -dddddddededededededfdfdfdfdfdfd6d9dd2164a700579e00579e00579e00579e00579e -00579e00579e00579e00579e587fb7d6d9dde0e0e0e0e0e0dfdfdfdcdcdcd9d9d9d8d8d8 -d7d7d799a9c62768a800579e00579e00579e00579e00579e00579e00579e00579e00579e -4179acb8becaddddddeaeaeaf5f5f5fbfbfbfefefeffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefdfefefefefefefefefefefdfdfd -fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf3f5f9a6bbdb246bab00579e -00579e00579e00579e00579e115ea3638ac0b4c7dfe0e6eeeceef1f2f2f2f1f1f1efefef -edededebebebeaeaeae9e9e9e8e8e8e7e7e7e5e5e5e3e4e4dcdde1b4c1d5457db404599f -00579e00579e00579e00579e00579e00579e00579e00579e05599f5384b6c7ccd9e0e0e0 -dfdfdfdfdfdfdedededddddddddddddbdbdcaebdcf0c5ca100579e00579e00579e00579e -00579e00579e00579e0b5ca12e6eaa90a4c5ced0d5d7d7d7d6d6d6d8d8d8dbdbdbe0e0e0 -e5e5e5ebebebf1f1f1f5f5f5f9f9f9fbfbfbfcfcfcfbfcfdcdd7ec5983bd0a5ca200579e -00579e00579e00579e00579e00579e00579e00579e00579e02589f3a77b1e7e9edededed -e9e9e9e6e6e6e2e2e2dfdfdfdddddddbdbdb2a70aa00579e00579e00579e00579e00579e -00579e00579e00579e00579e02589f719ac4d4dbe6eff0f2f7f7f6f7f7f7f9f9f9fafafa -fbfbfafbfbfafcfcfbfcfcfbfcfcfbfbfbfbfbfbfbfbfbfbfbfbfbfcfcfbfcfcfbfbfbfa -fafafafbfbfbfafafafbfbfbfcfcfcfcfbfbf5f6f9749dc90e5ea300579e00579e00579e -00579e00579e00579e00579e00579e286aaca3b9d8f0f2f5f6f6f6f6f6f6f4f4f4f2f2f1 -f1f1f1eeefeeecedecebebebe8e8e8e5e5e5e3e3e3e0e0e0d5d7dc809ac21761a400579e -00579e00579e00579e00579e00579e0d5ea2739dc6edeef2f6f6f6f7f7f7f8f8f8f8f8f8 -f8f8f8f8f8f8f7f7f7f6f6f6eaecf189a9cf00579e00579e00579e00579e00579e00579e -00579e00579e97aac7d8d7d7d8d8d8d9d9d8d8d8d8d9d8d8d8d8d8d8d8d8d9d9d8d9d9d9 -d9d9d9dadadadadadadbdbdbdbdbdbdcdcdcdbdbdbdcdcdcdddddddedededededededede -dedededfdfdfe0e0e0dfdfdfe0e0e0d8dbde1d62a600579e00579e00579e00579e00579e -00579e00579e00579e00579e587fb7d5d8dddedededbdbdbd8d8d8d5d5d5d2d2d2d0d0d0 -cfcfcf94a4c02667a700579e00579e00579e00579e00579e00579e00579e00579e00579e -3472acabb9d0e5e7e9f5f5f5fbfbfbfefefeffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffefefefdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefdfefefefefefefefdfdfdfdfdfd -fdfdfdfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcaec2de296ead00579e00579e -00579e00579e00579e00579e00579e00579e105ea34a7db791add0c0cfe0d4dbe7dde1e9 -e5e6eaeaeaebe9e9e9e7e7e7e2e2e5dadce2ced3ddbac6d688a3c6316fad01589f00579e -00579e00579e00579e00579e00579e00579e00579e03589f326eaca4b3cee0e0e0e0e0e0 -dfdfdfdfdfdfdedededdddddddddddd4d6d96589b900579e00579e00579e00579e00579e -00579e00579e1360a36689b9c4c9d3d8d9d9d7d7d7d5d5d5d4d4d4d4d4d4d8d8d8dddddd -e3e3e3ebebebf1f1f1f5f5f5f9f9f9fcfcfcfcfcfcfefefefefefedfe6f2608bc0085aa1 -00579e00579e00579e00579e00579e00579e00579e00579e00579e1864a6a7b6d4e8e8e8 -e5e5e5e1e1e1dedededbdbdbdadadad8d9d92970a900579e00579e00579e00579e00579e -00579e00579e00579e00579e00579e075aa15583b9a0b8d3c1d0e0c6d4e3c8d6e4c9d8e6 -cad8e6cad9e8cbd9e8cbd9e8cbd9e8ccdae8ccdae8ccdae8ccdae8cedae8d7dfece5e9f1 -f7f7f9fafafafafaf9fafaf9fafaf9fafaf9fafaf9d4dbeb4881b8065aa000579e00579e -00579e00579e00579e00579e00579e00579e316fae9eb4d3dce0e8eaebebebebebe8e9e9 -e7e7e7e4e4e4e2e2e2dfdfdfdddddddadadad5d6d8c4c9d37f9ac01d64a600579e00579e -00579e00579e00579e00579e075ba04e84b9d0d8e8f6f6f6f6f6f6f7f7f7f8f8f8f7f7f7 -f7f7f7f7f7f7f7f7f7f6f6f6eaecf189a9cf00579e00579e00579e00579e00579e00579e -00579e00579e8da1c3d7d7d7d7d8d7d9d8d8d9d8d7d8d8d8d8d8d8d9d8d8d9d9d9d9d9d9 -d9d9d9dadadadbdbdbdcdcdcdcdcdcdbdbdbdddddddddddddedededfdfdfdfdfdfdfdfdf -dfdfdfe0e0e0e0e0e0e0e0e0e0e0e0d6dbde00579e00579e00579e00579e00579e00579e -00579e00579e00579e00579e587eb6d3d6dbdadadad5d5d5d0d0d0ccccccc8c8c8c6c6c6 -c6c6c690a0bc2667a600579e00579e00579e00579e00579e00579e00579e00579e00579e -0459a0417ab4a0b8d6cad8e8d6e0eed8e1efd9e1f0d9e1f0d9e1f0d9e1f0d9e1f0d9e1f0 -d9e1f0d9e1f0d9e1f0d9e1f0d9e1f0d9e1f0dce4f1f0f3f9fefeffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefefffffffefefdfefefdfcfcfc -fcfcfbfbfbfafbfbfafcfcfcfcfcfcfbfbfbfafafafafafa81a8ce0e5ea300579e00579e -00579e00579e00579e00579e00579e00579e00579e00579e00579e2064a8507eb87197c4 -8dabcca2bcd3a3bcd2a1bbd192aecb7c9dc45d86ba2e6bab03599f00579e00579e00579e -00579e00579e00579e00579e00579e00579e04589f286aa98aa4c5d8d9dddfdfdfdfdfdf -dfdfdfdfdfdfdedededddddddcddddbdc6d31e62a600579e00579e00579e00579e00579e -00579e125fa37192bdcaced5d9d9d9d9d9d9d7d7d7d4d4d4d2d2d2d2d2d2d4d4d4d9d9d9 -e0e0e0e8e8e8efefeff5f5f5fafafafcfcfcfdfdfdfefefefefefefefeffcbd9eb3c77b4 -00579e00579e00579e00579e00579e00579e00579e00579e00579e095aa15d86badcdde1 -e0e0e0dddddddbdbdbd9d9d9d9d9d9d8d8d82970a900579e00579e00579e00579e00579e -00579e00579e00579e00579e00579e00579e00579e00579e155fa41b62a61b62a61b62a6 -1b62a61b62a61b62a61b62a71b62a71b62a71b62a71b62a71b62a72465a94174b46f95c6 -b9cbe1eff0f3f7f7f6f6f6f5f6f6f5f6f5f4f5f5f4f5f5f4bbc6de3d78b204599f00579e -00579e00579e00579e00579e00579e00579e00579e1f63a76b92bfaebdd4c7cedad3d6dc -dbdbdcd9dadad8d8d8d3d4d5c9cbd3b9c1ce99adc65a83b5165fa400579e00579e00579e -00579e00579e00579e075aa0457db5bcc9e0f6f6f6f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7 -f7f7f7f7f7f7f7f7f7f6f6f6eaecf189a9cf00579e00579e00579e00579e00579e00579e -00579e00579e849bc2d6d7d7d8d8d8d8d8d7d8d9d9d8d8d8d9d8d8d9d9d9d9dadadadada -dbdbdbdbdbdbdbdbdbdddddddddddddddddddddddddedededfdfdfdfdfdfdfdfdfe0e0e0 -e0e0e0e1e1e1e2e2e2e2e2e2e2e2e2d3d8de00579e00579e00579e00579e00579e00579e -00579e00579e00579e00579e577db5ced1d6d2d2d2cccccbc5c5c5c1c1c1c0c0c0c2c2c2 -c6c6c692a1be2667a700579e00579e00579e00579e00579e00579e00579e00579e00579e -00579e00579e0559a01f64a8376eb03c70b23c70b23c70b23c70b23c70b23c70b23c70b2 -3c70b23c70b23c70b23c70b23c70b23c70b24576b687a7d1ecf0f8ffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffefefefdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefefffffffffffffffffffefefd -fefefdfdfdfcfcfcfbfcfcfbfbfcfcfcfcfbfbfbfbfbfbfbccd6e96693c3266aab0659a0 -00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e -00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e -00579e00579e00579e00579e00579e065aa03772ad8ca5c5d4d6d9dddddddddddddddddd -dddddddddddddddddddddddddbdcdc7a95bf00579e00579e00579e00579e00579e00579e -05599f5b86b7c2c8d3d9d9d9d8d8d8d8d8d8d7d7d7d4d4d4d2d2d2d1d1d1d1d1d1d5d5d5 -dbdbdbe3e3e3ecececf4f4f4fafafafcfcfcfdfdfdfefefefefefefffffff3f5fa91b0d5 -115ea400579e00579e00579e00579e00579e00579e00579e00579e00579e256ba9b1bcd2 -dddddddbdbdbd9d9d9d8d8d8d8d8d8d8d8d82970a900579e00579e00579e00579e00579e -00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e -00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e02589f -2e6eadb5c2daeeeeedededececececececececebebebebeaebeaeab2bed6447cb3075aa0 -00579e00579e00579e00579e00579e00579e00579e00579e00579e2766a85280b57096bc -84a5c08da9c28ba7c17e9fbd698fb94979b11b61a500579e00579e00579e00579e00579e -00579e00579e0b5da24f84b9bdc9e0f5f5f5f6f6f6f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7 -f7f7f7f7f7f7f7f7f7f6f6f6eaecf189a9cf00579e00579e00579e00579e00579e00579e -00579e00579e849bc1d6d7d7d9d9d9d9d8d8d8d9d8d9d9d8d9d9d9d9d9d9dadadadbdbdb -dbdbdbdcdcdcdcdcdcdcdcdcdddddddedededfdfdfdfdfdfe0e0e0e0e0e0e1e1e1e1e1e1 -e2e2e2e2e2e2e3e3e3e4e4e4e4e4e4c5cddb00579e00579e00579e00579e00579e00579e -00579e00579e00579e00579e567db4c5c8cdc4c4c4bcbcbcbabababcbcbcc2c2c2cbcbcb -d4d4d49aabc82769a900579e00579e00579e00579e00579e00579e00579e00579e00579e -00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e -00579e00579e00579e00579e00579e00579e00579e075aa1aabddefefeffffffffffffff -fffffffffffffffffffffffffffffffffffffefefefdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff -fffffffefefefefefefefefefcfcfcfcfcfcfcfcfcfcfcfcfbfbfbdfe4f0a8bcda6593c3 -3471b00459a000579e00579e00579e00579e00579e00579e00579e00579e00579e00579e -00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e -00579e00579e00579e00579e1f64a65786b6a7b4ccd6d7d9dadadadadadadadadadadada -dbdbdbdbdbdbdbdbdbdbdbdbcacfd72b68a900579e00579e00579e00579e00579e00579e -2c6ca9a3b5cad7d7d8d9d9d9d8d8d8d8d8d8d7d7d7d6d6d6d3d3d3d1d1d1d0d0d0d2d2d2 -d7d7d7e0e0e0e9e9e9f2f2f2f9f9f9fcfcfcfdfdfdfefefefffffffffffffefefecfd9eb -487db700579e00579e00579e00579e00579e00579e00579e00579e00579e0f5ea26e93bc -d6d7d9d9d9d9d8d8d8d6d6d6d6d6d6d7d7d73774ac02589f00579e00579e00579e00579e -00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e -00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e -0d5ca26f91bfe5e5e5e5e5e4e5e4e4e4e4e4e4e4e4e3e4e3e3e3e2e2e2e2bbc3d5608db9 -2165a700579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e -00579e0b5ba1095aa000579e00579e00579e00579e00579e00579e00579e00579e00579e -00579e2969ab729cc6ced5e6f5f5f5f6f6f6f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6f6f6 -f6f6f6f7f7f7f7f7f7f6f6f6eaecf189a9cf00579e00579e00579e00579e00579e00579e -00579e00579e849bc1d7d7d7d8d8d8d9d9d9d9d8d8d9d9d8dadadadadbdbdadadadbdbdb -dbdbdbdcdcdcdddddddddddddedededfdfdfdfdfdfe0e0e0e1e1e1e1e1e1e1e1e1e2e2e2 -e4e4e4e4e4e4e4e4e4e5e5e5e5e5e5bdc7d900579e00579e00579e00579e00579e00579e -00579e00579e00579e00579e5378aeb0b2b7b3b3b3b4b4b4bebebecacacad6d6d6e1e1e1 -eaeaeaa6b7d5296aab00579e00579e00579e00579e00579e00579e00579e00579e00579e -00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e -00579e00579e00579e00579e00579e00579e00579e00579e4a7db9fafbfdffffffffffff -fffffffffffffffffffffffffffffffefefefdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff -fffffffffffffffffffffffffefefefefefefefefefdfdfdfdfdfdfcfcfcfcfcfce7eaf4 -bac8e27aa4cb457cb7145fa500579e00579e00579e00579e00579e00579e00579e00579e -00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e -00579e00579e2565a75080b292a8c5c5cad4dadadadadadad9d9d9d8d8d8d8d8d8d9d9d9 -d9d9d9d8d8d8d9d9d9d9d9d991a3c500579e00579e00579e00579e00579e00579e095ba0 -6e93bbcbced5d9d9d9d9d9d9d8d8d8d8d8d8d7d7d7d6d6d6d4d4d4d2d2d2d0d0d0d1d1d1 -d4d4d4dcdcdce6e6e6eeeeeef6f6f6fbfbfbfdfdfdfefefefefefefefefefefefef1f3f8 -8aabd1125fa400579e00579e00579e00579e00579e00579e00579e00579e01579e3675ad -bac1d0d7d7d7d7d7d7d6d6d6d6d6d6d6d6d66e8fba0a5ca100579e00579e00579e00579e -00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e -00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e -1260a386a0c3dfdfdfdfdfdedededddddddddcdcdcdbdcdcdbdbdbdadadad8d8d8cbcdd4 -8fa4c2487bb01760a300579e00579e00579e00579e00579e00579e00579e00579e00579e -00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e2466a9 -598bbdaabcd9e8eaf0f5f5f5f6f6f6f7f7f7f7f7f7f7f7f7f6f6f6f6f6f6f6f6f6f7f7f7 -f7f7f7f8f8f8f8f8f8f7f7f7eaecf189a9cf00579e00579e00579e00579e00579e00579e -00579e00579e849bc2d6d7d7d9d8d8d9d9d9d9d9d8d9d8d8dadadadbdbdbdbdbdbdbdbdb -dcdcdcdddddddededededededfdfdfe0e0e0e0e0e0e0e0e0e1e1e1e2e2e2e3e3e3e3e3e3 -e4e4e4e5e5e5e5e5e5e6e6e6e7e7e7b0bdd600579e00579e00579e00579e00579e00579e -00579e00579e00579e00579e5075a8a9acb0bbbbbbc9c9c9d8d8d8e4e4e4eeeeeef5f5f5 -f8f8f8b4c3df2f6fae00579e00579e00579e00579e00579e00579e00579e00579e00579e -00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e -00579e00579e00579e00579e00579e00579e00579e00579e0b5ca2d0d9edffffffffffff -fffffffffffffffffffffffffefefefdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffefefefefefefdfdfdfdfdfdfdfdfd -fbfbfbf1f3f7cbd5e8a0bbd96c97c63b74b30f5da300579e00579e00579e00579e00579e -00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e01589f1e62a6 -4577b06b93bb9aacc6bcc2ced6d6d6d8d8d8d9d9d9d9d9d9d9d9d9d9d9d9d8d8d8d9d9d9 -d8d8d8d8d8d8d8d8d8d8d8d84d79b200579e00579e00579e00579e01579e1861a45984b6 -b2bfced8d8d9d9d9d9d9d9d9d8d8d8d8d8d8d7d7d7d7d7d7d6d6d6d3d3d3d2d2d2d1d1d1 -d3d3d3d8d8d8e0e0e0e9e9e9f2f2f2f8f8f8fcfcfcfdfdfdfefefefefefefdfdfdfcfcfc -d4ddeb7196c52066a903589f00579e00579e00579e00579e00579e00579e00579e286ba9 -a3b0c9d7d7d7d6d6d6d6d6d6d6d6d6d6d6d6bac1ce5e88b62565a700579e00579e00579e -00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e -00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e03599f366eac -7498bec5cbd4dadadad9d9d9d8d8d8d7d8d7d7d7d7d7d7d7d7d7d6d6d6d5d5d5d4d5d5d5 -d2d3d4b8bfce8ca5c35986b62969a904599f00579e00579e00579e00579e00579e00579e -00579e00579e00579e00579e00579e00579e00579e00579e095ba1326fae6894c2a8bcd8 -d7ddeaf4f4f5f5f5f5f6f6f6f6f6f6f6f6f6f6f6f6f7f7f7f7f7f7f7f7f7f8f8f8f8f8f8 -f9f9f9f9f9f9f9f9f9f7f7f7eceef197b2d20659a000579e00579e00579e00579e00579e -00579e00579e8ea3c4d6d8d8d9d8d8d9d9d9dadadadadad9dadadadcdcdcdcdcdcdcdcdc -dddddddedededfdfdfdfdfdfe0e0e0e0e0e0e0e0e0e1e1e1e1e1e1e1e1e1dedededcdcdc -dededee1e1e1e4e4e4e7e7e7e9e9e9bac5d90a5ba100579e00579e00579e00579e00579e -00579e00579e00579e04589f6c89b3c5c6cadadadae7e7e7f1f1f1f7f7f7fafafafdfdfd -fefefee0e6f2769bca1d65a803589f00579e00579e00579e00579e00579e00579e00579e -00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e -00579e00579e00579e00579e00579e00579e00579e00579e00579ea7b9ddffffffffffff -fffffffffffffffffffefefefdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffefefefefefefefefefefefe -fcfcfcfcfcfcfcfcfcf9f9fbe5e9f3c9d6e8a7c1dc7ca1cb5482bb326dae0d5ca200579e -00579e00579e00579e00579e00579e01589e0f5da22e6aaa4979b26289b87f9fc09eb1c8 -b6bfcfcdcfd6d6d7d7d5d5d5d4d4d4d5d5d5d7d7d7d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9 -d8d8d8d8d8d8d8d8d8d7d7d79fb2c780a0c07f9fbf7f9fbf7f9fbf84a3c19aafc6bdc4d0 -d4d4d6d7d7d7d7d7d7d7d7d7d7d7d7d8d8d8d8d8d8d7d7d7d7d7d7d6d6d6d4d4d4d3d3d3 -d3d3d3d5d5d5dbdbdbe3e3e3ecececf4f4f4f9f9f9fcfcfcfdfdfdfdfdfdfcfcfcfafafa -f4f5f6dadfeab1c5da94b2cf89a9c986a6c785a5c583a4c382a2c381a1c182a2c197aec6 -c5cad2d7d7d7d6d6d6d5d5d5d6d6d6d6d6d6d5d5d5c0c5d0a3b3c888a6c17e9ebe7e9dbe -7c9cbc7c9bbc7b9bbb7c9cbc7e9ebe80a0c184a4c487a8c78aaaca8caccc8eaecf8fafd0 -8fb0d18fb0d18fafd08eaecf8dadce8caccd8babcc8aa9ca89a9c988a8c995b2ccb7c2d5 -d3d6dddfdfdfdddedddddddcdcdcdbdcdcdcdcdbdbdcdcdbdcdcdbdcdcdcdcdcdcdcdcdc -dcdcdcdddddddadadcc8cdd8acbcd187a6c7628bbb4375b21f64a70559a000579e00579e -00579e00579e00579e00579e085aa12868ab4c7cb86f96c499b6d4bfcee1dee3ecf2f3f4 -f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f7f7f7f7f7f7f8f8f8f8f8f8f9f9f9f9f9f9fafafa -fafafaf8f8f8f7f7f7f5f5f5efeff0d1d9e392afcc87a7c786a5c584a4c482a2c281a1c1 -81a1c184a3c1c1c7d1d8d9d8d9d8d8d9d9d9dadbdadadadadadadadcdcdcdddddddedede -dedededfdfdfe0e0e0e0e0e0e1e1e1e1e1e1e1e1e1e1e1e1dfdfdfdadadad5d5d5d4d4d4 -dadadae2e2e2e8e8e8eaeaeaebebebdfe1e799b4d086a6c77e9ebe7191af6787a56383a1 -6686a46d8dab7696b688a5c2c3cad7e7e7e8f2f2f2f8f8f8fbfbfbfefefefefefefefefe -fffffffdfdfee1e7f3bacfe4a0bedb96b6d795b5d795b5d795b5d795b5d795b5d795b5d7 -95b5d795b5d795b5d795b5d795b5d795b5d795b5d795b5d795b5d795b5d795b5d795b5d7 -95b5d795b5d795b5d795b5d795b5d795b5d795b5d795b5d79cbbd9e0e7f3ffffffffffff -fffffffffffffefefefdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefdfeffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fefefefdfdfdfcfcfcfcfcfcfcfcfcfcfcfcf9fafbebeef6dbe1eecbd7e7bacddfa3bcd5 -8da9cc83a2c780a0c5809fc391abc79ab2c8a7bbccb3bfcfbdc4d1c6cad3d1d2d6d7d7d7 -d7d7d7d8d8d8d7d7d7d7d7d7d5d5d5d5d5d5d5d5d5d6d6d6d8d8d8d8d8d8d8d8d8d8d8d8 -d9d9d9d9d9d9d9d9d9d8d8d8d7d7d7d2d3d6d1d2d6d1d2d5d1d2d5d2d2d5d5d5d5d6d6d6 -d6d6d6d5d5d5d5d5d5d5d5d5d5d5d5d6d6d6d6d6d6d6d6d6d6d6d6d7d7d7d6d6d6d5d5d5 -d4d4d4d5d5d5d8d8d8dddddde5e5e5edededf3f3f3f8f8f8fbfbfbfbfbfbfafafaf8f8f8 -f5f5f5f1f1f1ededede5e6e8dfe0e3dbdcdfd9daddd5d7dad3d4d8d2d3d7d2d3d6d4d4d6 -d6d6d6d6d6d6d6d6d6d6d6d6d5d5d5d6d6d6d5d5d5d5d5d5d6d6d6d3d3d5cecfd2cdced2 -ccced1cbccd0cacbcecacbcecccdd0d0d1d4d5d6dadadcdfe0e1e5e4e6e9e9ebeeedeff2 -eff0f4f0f1f5f0f1f5f0f1f4eef0f3edeef2ecedf0ebecf0e9ebeee8eaedececedededed -ebebebeaeaeaeaeaeae9eae9e9e9e9e8e8e8e7e6e6e7e7e7e6e6e6e6e6e6e6e6e6e6e6e6 -e7e7e7e8e8e8e8e8e8e9e9e9e8e8e8e2e3e7d6dae4cbd3e1bdccddaec4d99fbad58baacf -89a9cf8aa9ce92b0d2a6bfdab7ccdfc7d4e5d5dceae3e7f0f1f2f5f7f7f7f7f7f7f6f6f6 -f7f7f7f7f7f7f7f7f7f7f7f7f8f8f8f9f9f9f9f9f9fafafafafafafbfbfbfafafafafafa -f9f9f9f7f7f7f4f4f4f1f1f1ececece8e8e8e1e2e4dbdde0d8daddd6d7dad4d5d8d3d4d6 -d3d4d7d4d5d7d8d8d9d9d8d7d8d9d9dadad9dadadadbdbdbdcdcdbdddddddededededede -dfdfdfe0e0e0e1e1e1e1e1e1e2e2e2e2e2e2e3e3e3e2e2e2e0e0e0dcdcdcdbdbdbdddddd -e2e2e2e5e5e5e4e4e4e1e1e1dedededbdbdbd1d1d3c1c3c6b5b6baabacafa8aaacaeafb2 -b9babdc6c7cad2d3d6dfe0e2ebebecf2f2f2f6f6f6f9f9f9fbfbfbfdfdfdfdfdfdfefefe -fffffffffffffffffffffffffafbfdf7f8fcf7f8fcf7f8fcf7f8fcf7f8fcf7f8fcf7f8fc -f7f8fcf7f8fcf7f8fcf7f8fcf7f8fcf7f8fcf7f8fcf7f8fcf7f8fcf7f8fcf7f8fcf7f8fc -f7f8fcf7f8fcf7f8fcf7f8fcf7f8fcf7f8fcf7f8fcf7f8fcfafafdffffffffffffffffff -fffffffefefefdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fefefefefefefefefefefefefdfdfdfdfdfdfdfdfdfefefefdfdfdfbfbfbf8f8f8f0f0f2 -e6e7ebdfe1e6dbdde2d6d9dddadbdddadbdcdadadad9d9d9d9d9d9d8d8d8d8d8d8d7d7d7 -d7d7d7d8d8d8d7d7d7d8d8d8d8d8d8d6d6d6d5d5d5d5d5d5d5d5d5d6d6d6d7d7d7d7d7d7 -d8d8d8d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d8d8d8d7d7d7d7d7d7 -d7d7d7d6d6d6d5d5d5d5d5d5d5d5d5d5d5d5d4d4d4d4d4d4d5d5d5d5d5d5d5d5d5d5d5d5 -d5d5d5d4d4d4d5d5d5d8d8d8dededee4e4e4ebebebf1f1f1f6f6f6f8f8f8f6f6f6f5f5f5 -f2f2f2eeeeeeeaeaeae6e6e6e3e3e3e0e0e0dddddddbdbdbd9d9d9d7d7d7d7d7d7d6d6d6 -d6d6d6d5d5d5d5d5d5d6d6d6d5d5d5d5d5d5d5d5d5d6d6d6d5d5d5d5d5d5d5d5d5d3d3d3 -d2d2d2d2d2d2d1d1d1d1d1d1d2d2d1d4d4d4d7d7d7dbdbdbe0e0e0e5e5e5eaeaeaf0f0f0 -f4f4f4f6f6f6f8f8f8f9f9f9fafafafafafafafafafafafafafafaf9f9f9f8f8f8f7f7f7 -f6f6f6f4f4f4f4f4f4f4f4f4f3f3f3f2f2f2f1f1f1f1f1f1f1f1f1f0f0f0f0f0f0f0f0f0 -f0f0f0f1f1f1f2f2f2f2f2f2f2f2f2f2f2f2f3f3f3f3f3f3f4f4f4f3f4f4f1f2f4edeff3 -eceff3edeff3eff0f4f3f3f6f7f7f7f8f8f8f8f8f7fafafafafafafafafafafafaf9f9f9 -f9f9f9fafafafafafafafafafbfbfbfcfcfcfcfcfcfcfcfcfcfcfcfbfbfbfafafaf9f9f9 -f6f6f6f3f3f3efefefebebebe7e7e7e4e4e4e1e1e1dedededcdcdcdadadad9d9d9d8d9d8 -d9d9d8d9d9d8d8d9d8d8d8d8d8d8d7d9d8d7d9d9d8dcdcdbdededddfdfdfdfdededfdfdf -e0e0e0e1e1e1e1e1e1e1e1e1e3e3e3e4e4e4e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e4e4e4 -ddddddd1d1d1c5c5c5bebebebdbdbdbdbdbdbebebebfbfbfc2c2c2c7c7c7cececed6d6d6 -dddddde3e3e3e6e6e6e8e8e8eaeaeaececececececeeeeeef2f2f2f6f6f6f9f9f9fcfcfc -fdfdfdfefefefefefeffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fefefefdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffefefefefefefefefefefefefefefefefefefdfdfdfbfbfbf8f8f8 -f4f4f4efefefeaeaeae4e4e4e1e1e1dedededcdcdcdadadad9d9d9d9d9d9d8d8d8d8d8d8 -d9d9d9d9d9d9d8d8d8d9d9d9d9d9d9d9d9d9d8d8d8d7d7d7d6d6d6d6d6d6d6d6d6d7d7d7 -d7d7d7d8d8d8d9d9d9d9d9d9d9d9d9dadadad9d9d9d9d9d9d9d9d9dadadad9d9d9d9d9d9 -d9d9d9d9d9d9d8d8d8d8d8d8d7d7d7d6d6d6d6d6d6d5d5d5d5d5d5d5d5d5d5d5d5d4d4d4 -d4d4d4d3d3d3d4d4d4d4d4d4d7d7d7dadadae0e0e0e7e7e7edededf0f0f0f2f2f2f2f2f2 -efefefececece8e8e8e5e5e5e1e1e1dfdfdfdcdcdcdadadad8d8d8d8d8d8d6d6d6d6d6d6 -d5d5d5d5d5d5d5d5d5d5d5d5d6d6d6d5d5d5d6d6d6d5d5d5d6d6d6d4d4d4d4d4d4d5d5d5 -d4d4d4d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d4d5d5d7d7d7d9d9d9dddddde1e1e1e6e6e6 -ebebebefefeff3f3f3f6f6f6f9f9f9fbfbfbfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc -fbfbfbfafafafafafafafafafafafafafafaf9f9f9f9f9f9f8f8f8f8f8f8f7f7f7f7f7f7 -f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f8f8f8f8f8f8f8f8f8f8f8f8f9f9f9f9f9f8 -f9f8f7f7f7f7f6f6f6f5f5f4f5f4f3f6f5f5f8f8f8fbfbfbfcfcfcfcfcfcfcfcfcfcfcfc -fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfafafaf8f8f8f6f6f6f3f3f3 -efefefececece9e9e9e6e6e6e2e2e2e0e0e0dedededbdbdbdadadadadad9d9d9d8d9d9d8 -dad9d9d8d9d9dad9d9d9d9d8d5d4d4d2d3d2d4d3d2d8d8d7dddddcdfdfdfe1e1e1e2e2e2 -e2e2e2e2e2e1e3e3e2e4e4e4e6e5e5e6e7e6e6e7e7e6e7e7e8e7e7e7e7e7e2e2e2d4d3d3 -c0bfbfafafafaaaaaaaeaeadbababac4c4c4ccccccd3d3d3d9d9d9dfdfdfe4e4e4e7e7e7 -e7e8e7e7e7e6e6e6e5e4e4e4e1e2e2e1e1e1e0e0e0e3e3e3e8e8e8eeeeeef3f3f3f7f7f7 -fbfbfbfdfdfdfefefefefefeffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fefdfefdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfdfeffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffefefefefefefefefefefefefefefefdfdfdfcfcfc -fafafaf6f6f6f1f1f1ececece7e7e7e3e3e3e0e0e0dddddddcdcdcdbdbdbd9d9d9d9d9d9 -d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d8d8d8d9d9d9d9d9d9d9d9d9d8d8d8d7d7d7d6d6d6 -d5d5d5d6d6d6d8d8d8d9d9d9d9d9d9d8d8d8d9d9d9d9d9d9d9d9d9d9d9d9dadadadadada -dbdbdbdadadadadadad9d9d9d9d9d9dadadad9d9d9d9d9d9d8d8d8d8d8d8d7d7d7d6d6d6 -d6d6d6d5d5d5d5d5d5d4d4d4d4d4d4d4d4d4d6d6d6dbdbdbe0e0e0e4e4e4e8e8e8e9e9e9 -e9e9e9e7e7e7e5e5e5e2e2e2e0e0e0dedededbdbdbd9d9d9d8d8d8d7d7d7d6d6d6d7d7d7 -d6d6d6d6d6d6d5d5d5d6d6d6d6d6d6d6d6d6d5d5d5d6d5d5d5d5d5d5d5d5d4d5d5d5d5d5 -d5d5d5d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d5d5d5d6d6d6d6d6d6d8d8d8dadada -dfdfdfe4e4e4e9e9e9efefeef3f3f2f5f6f5f7f7f6f9f9f9fbfbfbfcfcfcfcfcfcfcfcfc -fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc -fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfbfbfbfcfcfcfcfcfcfafaf9 -f9f8f7f6f6f5f2f1f0edededebebebedededf0f0f0f5f5f5f9f9f9fcfcfcfdfdfdfdfdfd -fdfdfdfdfdfdfcfcfcfcfcfcfcfcfcfbfbfbf9f9f9f7f7f7f4f4f4f1f1f1efefefececec -e8e8e8e4e4e4e2e2e2dfdfdfdedededcdcdcdadadad9d9d9d9d9d9d9d9d9d9d9d9dadada -dadadadbdbdbdbdadad9d9d8d5d4d4cccdccc7c7c7cacacad1d1d0d9d8d7dededde1e1e0 -e4e3e3e3e3e2e3e3e3e4e4e4e3e3e3e3e4e4e3e2e1e1e0dfdddddcd4d4d4c8c8c8bbbaba -b1b1b0b0b0afb5b4b3bebdbccecdccd9d9d9e1e1e0e7e7e7ebebebedededeeeeeeedeeed -eaeaeae7e7e7e4e4e3e0e1e0dddddcdcdcdcdcdbdbdfdfdee2e2e2e7e7e7ecececf2f2f2 -f6f6f6fafafafdfdfdfefefefefefeffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfdfeffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffefefefefefefefefefefefe -fdfdfdfcfcfcf9f9f9f4f4f4efefefebebebe6e6e6e2e2e2e0e0e0dedededcdcdcdbdbdb -dadadadadadad9d9d9d9d9d9d9d9d9d9d9d9dadadadadadad9d9d9dadadadadadad9d9d9 -d9d9d9d8d8d8d7d7d7d9d9d9d8d8d8d7d7d7d8d8d8d8d8d8d9d9d9d9d9d9d9d9d9dadada -dadadadbdbdbdadadadbdbdbdadadadcdcdcdbdbdbdbdbdbdbdbdbdadadadadadad9d9d9 -d9d9d9d9d9d9d8d8d8d7d7d7d6d6d6d5d5d5d4d4d4d5d5d5d7d7d7dadadadddddde0e0e0 -e1e1e1e1e1e1e0e0e0dfdfdfdddddddcdcdcd9d9d9d9d9d9d9d9d9d7d7d7d6d6d6d6d6d6 -d6d6d6d5d5d5d5d5d5d5d5d5d5d5d5d6d6d6d6d6d6d6d6d6d5d5d5d6d6d6d6d6d6d6d6d6 -d6d7d7d6d6d6d7d6d6d7d7d6d7d7d7d7d6d6d6d5d5d6d6d5d5d5d5d3d3d3d2d2d1d1d1d0 -d3d3d3d8d8d8e0e0e0e7e8e7eeeeedf2f2f1f3f3f3f5f4f4f6f6f6f7f6f6f7f7f7f7f7f7 -f7f7f7f8f8f8f8f8f8f8f8f8f9f9f9fafafafbfbfbfbfbfbfbfbfbfbfbfbfcfcfcfdfdfd -fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfcfcfcfcfcfcfcfcfcfbfbfbfbfaf9f8f8f8 -f3f4f3f1f1f1ebebeae4e4e3dfe0dfe0e0e0e6e6e6edededf4f4f4fafafafcfcfcfcfcfc -fcfcfcfbfbfbfbfbfbf9f9f9f7f7f7f5f5f5f3f3f3efefefececece9e9e9e7e7e7e4e4e4 -e1e1e1dedededcdcdcdadadad9d9d9d9d9d9d9d9d9d9d9d9dadadadadadad9d9d9d9dad9 -dbdadadadad9dbdcdbdbdbdbd5d6d5cccccbc1c1c0bbbbbac0c0c0c9c9c9d0d0d0d3d4d4 -d6d5d5d5d5d5d4d4d3d4d4d3d3d3d2d1d1d1cfcfcecacacac6c6c6c0c0bfbcbbbbbababa -bcbcbcc1c1c0cacac8d3d2d1dbdbdbe1e1e0e7e8e7ecececf0efeef3f3f2f4f5f4f3f3f2 -f0f0efededeceaeae9e5e5e4e3e3e3e2e1e0e0e0e0e0e0dfe2e2e2e5e5e5eaeaeaefefef -f4f4f4f9f9f9fcfcfcfdfdfdfefefeffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfdfe -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fefefefdfdfcfcfcfbf9f9f9f8f8f7f2f2f1eeeeedebebebe7e7e7e3e3e3e1e1e1e0e0e0 -dededededededcdcdcdbdbdbdadadadadadadadadadadadadadadadadadadbdbdbdcdcdc -dbdbdbdadadadadadad9d9d9dadadad9d9d9d8d8d8d8d8d8d8d8d8d9d9d9d9d9d9d9d9d9 -d9d9d9dadadadadadadadadadadadadbdbdbdcdcdcdcdcdcdcdcdcdcdcdcdbdbdbdcdcdc -dcdcdcdbdbdbdbdbdbdadadad9d9d9d9d9d9d8d8d8d7d7d7d6d6d6d7d7d7d8d8d8d9d9d9 -dadadadbdbdbdbdbdbdbdbdbdbdbdbdadadad9d9d9d9d9d9d7d7d7d8d8d8d8d8d8d7d7d7 -d7d7d7d6d6d6d6d6d6d5d5d5d6d6d6d6d6d6d6d6d6d5d5d5d6d6d6d6d6d6d7d7d7d6d6d6 -d6d6d6d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d6d6d6d5d5d5d1d1d1cccbcb -cacbcacdcdccd5d6d5dfdfdfe8e8e8edededf0efeef0f0eff0f0f0f0f0f0eeeeeeededed -ececececececececececececeeeeeeefefeff1f1f1f2f2f2f4f4f4f4f4f4f6f6f6f9f9f9 -f9f9f9fafafafbfbfbfbfbfbfbfbfbfbfbfbfafafaf9f9f9f7f7f7f5f5f5f4f3f3f1f1f1 -edecece8e8e8e2e2e2dadbdad6d6d6d6d6d6dbdbdbe3e3e3ecececf3f3f3f6f6f6f6f6f6 -f7f7f7f5f5f5f3f3f3f1f1f1eeeeeeecececeaeaeae6e6e6e4e4e4e1e1e1dedededddddd -dbdbdbdadadad9d9d9d9d9d9d9d9d9d9d9d9d9d9d9dadadadadadadbdbdbdbdbdbdbdbdb -dcdcdbdcdbdbdcdbdbdcdbdad8d8d8d0d0d0c4c5c4bababab8b8b7c0c0bfcacac9d1d1d0 -d3d3d2d3d3d2d3d3d2d2d2d2d1d1d0cecececacacac7c7c7c6c6c6c6c6c6c7c7c7c9c9c9 -cececed3d3d2d7d7d7dbdbdbdfdfdfe2e2e2e5e5e5eaeaeaefefeff3f3f3f6f6f6f8f8f8 -f6f7f6f3f3f3f0f0efececebe8e8e8e7e6e6e6e6e5e7e7e7e9e9e9ebebebf0f0f0f4f4f4 -f8f8f8fcfcfcfdfdfdfefefeffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fefdfeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffefefefdfdfcfcfcfcfbfbfbfafaf9f6f6f5f3f3f2efefefebebebe8e8e8e5e5e5 -e3e3e3e2e2e2e0e0e0dedededddddddcdcdcdcdcdcdbdbdbdcdcdcdcdcdcdcdcdcdddddd -dddddddddddddddddddcdcdcdcdcdcdbdbdbdbdbdbdbdbdbdadadadadadadadadad9d9d9 -d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9dadadadbdbdbdbdbdbdbdbdbdcdcdcdcdcdcdcdcdc -dbdbdbdcdcdcdcdcdcdbdbdbdbdbdbdbdbdbdadadad9d9d9d8d8d8d9d9d9d9d9d9d9d9d9 -d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d8d8d8d7d7d7d8d8d8d8d8d8d7d7d7d8d8d8d7d7d7 -d7d7d7d7d7d7d6d6d6d6d6d6d6d6d6d6d6d6d7d7d7d6d6d6d6d6d6d6d6d6d7d7d7d6d6d6 -d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d8d8d8d8d7d7d8d8d8d7d7d7d6d6d5d3d3d2cecece -c8c8c7c8c7c6cdcdccd7d8d7e1e1e1e7e7e7ebebeaebebebebebebeaeaeae7e7e7e6e6e6 -e3e4e3e3e2e1e2e2e2e3e3e2e2e2e2e3e3e2e3e3e3e5e5e5e6e6e6e6e6e6e8e8e8eaeaea -ecececf0f0eff2f2f2f4f4f4f4f4f4f4f4f4f3f3f3f1f1f1efefefedededebeae9e6e7e6 -e3e3e3dededed9d9d9d4d4d4d0d1d1d1d1d1d5d5d5dddddde5e5e5ebebebedededeeeeee -eeeeeeecececebebebe9e9e9e5e5e5e3e3e3e0e0e0dedededcdcdcdadadad9d9d9d9d9d9 -d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9dadadadbdbdbdbdbdbdbdbdbdbdbdbdcdcdcdcdcdb -dbdadadadadadbdbdbd9d9d8d7d6d6d3d3d3cdcecdc6c5c5c1c2c1c5c5c5cecdccd8d5d5 -dfdedde2e2e0dfdfdedadad9d2d2d1cdcdcdcccccccdcdcdcececed0d0d0d2d2d2d4d4d4 -d7d7d7d9d9d9d9dad9dbdbdbdcdcdcdfdfdfe2e2e2e9e9e9f0f0f0f5f5f5f9f9f9fbfbfb -fafafaf9f9f9f7f7f7f5f5f5f4f4f4f3f3f3f3f3f3f4f4f4f6f6f6f7f7f7f8f8f8fbfbfb -fdfdfdfdfdfdfefefefefefefefefeffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfefefeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffefefefefefefcfcfcfbfbfbfafafaf7f7f6f3f3f2efefefececeb -e9e9e9e8e8e8e5e5e5e3e3e3e1e1e1e0e0e0dfdfdfdedededddddddddddddddddddddddd -dddddddededededededfdfdfdedededfdfdfdfdfdfdedededddddddcdcdcdcdcdcdcdcdc -dbdbdbdadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadbdbdb -dbdbdbdbdbdbdcdcdcdbdbdbdbdbdbdbdbdbd9d9d9d7d7d7d6d6d6d6d6d6d7d7d7d9d9d9 -d9d9d9dadadad9d9d9d9d9d9d9d9d9d8d8d8d8d8d8d8d8d8d7d7d7d8d8d8d7d7d7d6d6d6 -d7d7d7d6d6d6d7d7d7d7d7d7d7d7d7d6d6d6d7d7d7d7d7d7d7d7d7d7d7d7d6d6d6d7d7d7 -d7d7d7d7d7d7d8d8d8d9d9d9d8d8d8d8d8d8d7d8d8d8d8d8d8d8d8d8d8d7d7d6d5d2d2d1 -ccccccc9c9c8cbcbcad2d2d1dadbdae1e1e1e4e4e4e5e5e5e4e4e4e4e4e3e2e2e1e1e1e0 -e0dfdfdfdededfdfdedfdfdedfdfdedededddedfdedfdfdedfdfdedfdededfdfdfdedede -e0e0e0e3e2e2e7e6e6eaeaeaebecebebebebeaeaeae7e8e8e5e5e4e2e2e1dfdfdedcdcdb -d9d9d9d8d8d7d5d5d5d3d3d3d3d3d3d5d5d5d8d8d8dededee2e2e2e4e4e4e5e5e5e5e5e5 -e4e4e4e3e3e3e0e0e0dedededddddddbdbdbdadadadadadad9d9d9d9d9d9d9d9d9d9d9d9 -d9d9d9d9d9d9d9d9d9dbdbdbdbdbdbdbdbdbdbdbdbdadadad9d9d9d7d7d7d6d6d6d4d4d4 -d4d4d4d5d5d5d5d5d5d4d4d4d5d5d5d7d6d6d8d8d8dadbdadbdbdbdcdcdcdedddddedddd -dedddcdadad9d3d3d3cdcdcdcdcdcdcececed2d2d2d4d4d4d5d5d5d6d5d5d6d5d5d7d7d6 -d8d8d7d9dadadbdbdadadadadadadadddddde3e3e3ebebebf2f2f2f8f8f8fcfcfcfdfdfd -fdfdfdfdfdfdfdfdfdfcfcfcfcfcfcfbfbfbfbfbfbfbfbfbfcfcfcfcfcfcfcfcfcfcfcfc -fbfbfbfbfbfbfbfbfbfafafafbfbfbfcfcfcfcfcfcfdfdfdfefefeffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfefdfeffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffefefefdfdfcfbfbfbf7f7f6f2f2f2 -efefeeecebebe9e9e9e7e7e7e4e4e4e4e4e4e2e2e2e1e1e1e1e1e1e1e1e1e0e0e0e0e0e0 -dfdfdfdfdfdfdfdfdfe0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0dfdfdf -dfdfdfdedededddddddddddddddddddcdcdcdbdbdbdadadadbdbdbdadadadadadadbdbdb -dadadadadadadadadadadadadadadadadadad7d7d7d4d4d4d1d1d1d1d1d1d3d3d3d5d5d5 -d6d6d6d7d7d7d8d8d8d8d8d8d8d8d8d8d8d8d9d9d9d8d8d8d8d8d8d7d7d7d7d7d7d7d7d7 -d7d7d7d6d6d6d7d7d7d7d7d7d7d7d7d7d7d7d8d8d8d8d8d8d8d8d8d7d7d7d8d8d8d8d8d8 -d8d8d8d8d8d8d9d9d9d9d9d9d9d9d9d9d9d9d8d8d8d8d8d8d8d9d9d9d9d9d9d8d7d6d6d6 -d4d4d3d1d1d0d1d1d0d5d5d4d9dadadededee0e0e0e1e0e0dfdfdfdfdfdedddddcdcdcdb -dcdcdbdbdbdbdbdbdbdbdbdbdbdbdadbdbdbdbdbdbdcdcdbdbdbdbdbdbdbdbdbdbdbdcdc -dbdbdbdddddce0e0e0e2e2e2e2e3e2e2e1e1dfdfdfdddedddbdbdbd9d9d9d8d8d8d7d7d6 -d6d5d5d6d6d5d5d6d6d6d6d6d7d7d7d9d9d9dbdbdbdcdcdcdddddddddddddddddddddddd -dcdcdcdadadadadadad9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9dadada -dadadadadadadbdbdbdbdbdbd8d8d8d7d7d7d5d5d5d2d2d2d0d0d0cfcfcfcfcfcfd1d1d1 -d5d5d5d8d8d8dcdcdcdededee0e0e0e4e3e3e4e4e4e5e5e5e1e1e1dadadad4d4d4cecece -cbcbcbcbcbcbcdcdcdcfcfcfd3d3d3d5d5d5d7d7d7d7d7d7d7d7d7d6d6d6d6d7d6d7d8d7 -d9d8d8d9d9d9dadad9d8d8d8d9d9d9dcdcdce5e5e5eeeeeef5f5f5f9f9f9fcfcfcfdfdfd -fcfcfcfcfcfcfcfcfcfbfbfbfbfbfbfafafafafafafafafaf9f9f9f8f8f8f7f7f7f6f6f6 -f4f4f4f4f4f4f3f3f3f4f4f4f5f5f5f8f8f8fafafafcfcfcfefefeffffffffffffffffff -fffffffffffffffffffefefefefefefffffffffffeffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfefdfeffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefdfdfdfbfbfa -f7f7f6f3f3f2efefeeebebeae7e7e7e5e5e5e3e3e3e3e3e3e4e4e4e5e5e5e4e4e4e4e4e4 -e3e3e3e2e2e2e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e2e2e2e2e2e2e2e2e2 -e2e2e2e2e2e2e1e1e1e1e1e1e0e0e0e0e0e0dfdfdfdedededededededededcdcdcdbdbdb -dbdbdbdbdbdbdadadadadadad9d9d9dadadad7d7d7d0d0d0cbcbcbcccccccececed1d1d1 -d3d3d3d4d4d4d5d5d5d6d6d6d5d5d5d6d6d6d6d6d6d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7 -d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d8d8d8d8d8d8d8d8d8d9d9d9d9d9d9d8d8d8 -d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d8d9d9d8dad9d9d8d8d8 -d9d9d8d8d8d7d9d9d8dbdbdadddddddfdfdedfdfdfdfdedddddddddcdddcdcdcdbdadada -dad9d9d9d9d9d8d9d8d9d9d8d8d9d8d9d9d8d9d8d8d9d9d9d8d8d8d8d8d7d8d8d8d9d9d9 -d8d9d8dadad9dadadadadbdadbdbdbdadadad8d8d8d8d8d8d7d7d7d6d6d6d7d7d7d6d6d6 -d6d6d6d6d6d6d6d7d7d7d7d7d8d8d8d8d8d8d9d9d9d8d8d8d8d8d8d9d9d9d9d9d9d9d9d9 -d9d9d9d8d8d8d8d8d8d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9dadadadadadadbdbdb -dbdbdbd9d9d9d6d6d6d0d0d0cdcdcdcdcdcdcdcdcdcececed1d1d1d3d4d4d6d6d6d9d9d9 -dddddde0e0e0e2e2e2e1e1e1dededed9d9d9d2d2d2cbcbcbc4c4c4bfbfbfbfbfbfc2c2c2 -c9c9c9cfcfcfd5d5d5d8d8d8d9d9d9d9d9d9d7d7d7d6d6d6d5d5d5d5d5d5d6d6d6d8d8d7 -d9d9d9d9d9d9d8d8d8d6d6d6d8d8d8dddddde6e6e6edededf2f2f2f4f4f4f6f6f6f6f6f6 -f6f6f6f6f6f6f5f5f5f5f5f5f4f4f4f4f4f4f4f4f4f3f3f3f1f1f1f0f0f0eeeeeeececec -ebebebebebebecececeeeeeef2f2f2f6f6f6fafafafcfcfcfefefeffffffffffffffffff -fffffffffffffffffffefefdfdfdfcfefefdfdfdfcfefefdffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfffefeffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fdfdfdfcfcfcf9f9f9f5f5f5f0f0f0ededede8e8e8e4e4e4e3e3e3e2e2e2e2e2e2e3e3e3 -e5e5e5e5e5e5e4e4e4e4e4e4e3e3e3e3e3e3e4e4e4e3e3e3e3e3e3e4e4e4e4e4e4e4e4e4 -e4e4e4e4e4e4e4e4e4e4e4e4e3e3e3e4e4e4e3e3e3e2e2e2e1e1e1e1e1e1e0e0e0dfdfdf -dfdfdfdededededededddddddcdcdcdcdcdcdcdcdcd2d2d2c7c7c7c5c5c5c8c8c8cdcdcd -d1d1d1d3d3d3d3d3d3d3d3d3d4d4d4d4d4d4d4d4d4d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5 -d5d5d5d5d5d5d6d6d6d6d6d6d6d6d6d7d7d7d7d7d7d8d8d8d9d9d9d8d8d8d8d8d8d8d8d8 -d9d9d9d9d9d9d9d9d9d9d9d9dadadadadadadadadadadadadadadadadadadadadad9d9d9 -dadadadadadadbdadadadad9dadad9d8d9d8d7d8d7d7d8d7d8d8d7d9d9d9dadadadadada -d9d9d9dadadadadad9d9dad9d9d9d9d9d9d8d9d8d8d9d9d9d7d8d7d7d7d7d8d8d8d8d8d8 -d7d8d8d8d8d8d8d8d8d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d6d6d6d6d6d6d7d7d7 -d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d8d8d8d8d8d8d8d8d8d8d8d8d9d9d9d8d8d8d9d9d9 -d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9dadadadadadadadadadbdbdbdbdbdbdbdbdbd7d7d7 -d2d2d2cdcdcdc8c8c8c6c6c6cacacacececed1d1d1d4d4d4d5d5d5d5d5d5d5d5d5d5d5d5 -d4d4d4d3d3d3d2d2d2cececec9c9c9c3c3c3c0c0c0bfbfbfc1c1c1c4c4c4cacacad0d0d0 -d6d6d6dadadadddddddddddddcdcdcdadadad8d8d8d8d8d8d8d8d8d9d9d9dadadadbdbdb -dcdcdcdbdbdbdadadad9d9d9dcdcdce1e1e1e7e7e7ebebebedededeeeeeeefefefefefef -eeeeeeeeeeeeeeeeeeeeeeeeedededececececececeaeaeae9e9e9e7e7e7e6e6e6e7e7e7 -e8e8e8eaeaeaedededf1f1f1f5f5f5f9f9f9fcfcfcfdfdfdfefefeffffffffffffffffff -fffffffffffffffffffefefefcfcfcfcfcfbfdfdfcfdfdfcfefefeffffffffffffffffff -fffffffffffffffffffffffffffffffefefefefdfefefdfefdfdfdfdfdfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfefdfeffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffdfdfdfbfbfbf9f9f9f5f5f4f0f0f0ececece7e7e7e3e3e3e1e1e1 -e1e1e1e0e1e1e2e2e2e4e4e4e5e5e5e6e6e6e5e5e5e5e5e5e5e5e5e6e6e6e5e5e5e5e5e5 -e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e5e5e5e6e6e6e5e5e5e4e4e4e3e3e3e3e3e3 -e3e3e3e2e2e2e2e2e2e1e1e1e1e1e1e0e0e0e0e0e0dbdbdbccccccc1c1c1c0c0c0c7c7c7 -cececed2d2d2d3d3d3d4d4d4d4d4d4d5d5d5d5d5d5d4d4d4d5d5d5d4d4d4d5d5d5d4d4d4 -d4d4d4d4d4d4d5d5d5d5d5d5d5d5d5d7d7d7d7d7d7d7d7d7d8d8d8d7d7d7d7d7d7d7d7d7 -d8d8d8d8d8d8d9d9d9d9d9d9d9d9d9d9d9d9dadadadadadadadadadcdcdcdbdbdadadad9 -dadadad9d8d7d5d5d4d2d2d1d0d0d0d0d0d0d1d1d1d4d4d4d7d7d7dcdcdbdcdddcdddddd -dcdcdcdbdcdbdbdbdbdbdad9dbdadadadadad9d9d9d9d9d9d9d9d9d8d9d8d9d9d9d9d9d9 -d8d8d8d9d9d9d8d8d8d7d7d7d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d7d7d7d7d7d7d8d8d8 -d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9 -d9d9d9d9d9d9dadadadadadadadadadbdbdbdbdbdbdcdcdcdcdcdcd9d9d9d3d3d3cbcbcb -c6c6c6c4c4c4c7c7c7cbcbcbd0d0d0d3d3d3d4d4d4d3d3d3d3d3d3d2d2d2d2d2d2d1d1d1 -d0d0d0cfcfcfcfcfcfcecececdcdcdcfcfcfd0d0d0d4d4d4d8d8d8dbdbdbdfdfdfe2e2e2 -e3e3e3e4e4e4e3e3e3e1e1e1dfdfdfdddddddbdbdbdbdbdbdadadadadadadadadadadada -d9d9d9d9d9d9d9d9d9dadadadcdcdce0e0e0e3e3e3e6e6e6e8e8e8e8e8e8e9e9e9e9e9e9 -e9e9e9e9e9e9e9e9e9eaeaeaeaeaeaeaeaeaeaeaeaeaeaeaebebebebebebecececeeeeee -f1f1f1f3f3f3f6f6f6f9f9f9fbfbfbfdfdfdfefefeffffffffffffffffffffffffffffff -fffffffffffffffffffefefefdfdfdfdfdfdfefefefdfdfdffffffffffffffffffffffff -fffffffffffffffffffffffffefefefdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfdfdffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffefefefefefefdfdfdfdfdfcfafbfaf8f7f7f4f4f3efefefeaeaea -e6e6e6e3e3e2e2e2e2e4e4e3e5e4e4e5e6e5e5e5e5e5e6e6e6e6e6e7e7e6e7e7e7e7e7e6 -e8e7e7e8e8e8e9e9e9e9e9e9eaeaeae9e9e9e9e9e9e7e7e7e7e7e7e7e7e7e6e6e6e6e6e6 -e6e6e6e6e6e6e5e5e5e4e4e4e4e4e4e4e4e4e3e3e3e3e3e3dbdbdbcbcbcbbfbfbfc0c0c0 -c8c8c8cfcfcfd2d2d2d4d4d4d5d5d5d5d5d5d6d6d6d5d5d5d6d6d6d5d5d5d5d5d5d5d5d5 -d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d5d5d5d6d6d6 -d6d6d6d7d7d7d7d7d7d8d8d8d8d8d8d8d8d8d9d9d9d9d9d9d9d9d9dadadad9dadad8d9d8 -d5d5d4d0d1d0cccccccacbcbcbcbcbcdcdcdd3d3d2d9d9d8dedddde0e0dfdfe0dfdfe0df -dedededddcdcdcdddcdddcdcdcdcdcdbdbdbdadbdbdadbdbdadadad9dadadadadad9d9d9 -d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d8d8d8d8d8d8 -d8d8d8d7d7d7d8d8d8d8d8d8d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9dadadadadadad9d9d9 -dadadadadadadbdbdbdcdcdcdddddddddddddcdcdcd9d9d9d4d4d4cdcdcdc8c8c8c6c6c6 -c7c7c7c9c9c9cececed1d1d1d3d3d3d4d4d4d5d5d5d5d5d5d5d5d5d5d5d5d6d6d6d7d7d7 -d8d8d8d9d9d9dbdbdbdcdcdcdfdfdfe1e1e1e3e3e3e4e4e4e4e4e4e3e3e3e2e2e2e0e0e0 -dedededbdbdbd8d8d8d6d6d6d5d5d5d3d3d3d2d2d2d2d2d2d2d2d2d3d3d3d4d4d4d5d5d5 -d6d6d6d8d8d8dbdbdbdedededfdfdfe4e4e4e7e7e7e9e9e9ebebebecececedededefefef -f0f0f0f0f0f0f1f1f1f2f2f2f2f2f2f3f3f3f4f4f4f5f5f5f6f6f6f7f7f7f9f9f9fafafa -fbfbfbfcfcfcfdfdfdfefefefefefeffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffefefefefefefefefefefefefefefeffffffffffffffffffffffff -fffffffffffffefefefefdfefdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefdfeffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffefefefefefdfcfcfbfbfbfaf9f9f8f6f6f6f3f2f2 -eeeeeeeaeaeae6e6e5e3e3e3e1e0e0dfe0dfdfdfdfdededee0e0dfdfdfdfdfdfdfe0e0df -e0e0dfe0e0e0e1e1e1e2e2e2e6e6e6e9e9e9ededededededebebebeaeaeae8e8e8e8e8e8 -e8e8e8e8e8e8e7e7e7e7e7e7e7e7e7e7e7e7e6e6e6e6e6e6e6e6e6e0e0e0d3d3d3c4c4c4 -c2c2c2c8c8c8cececed2d2d2d5d5d5d6d6d6d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7 -d7d7d7d6d6d6d6d6d6d7d7d7d7d7d7d6d6d6d6d6d6d5d5d5d5d5d5d5d5d5d4d4d4d5d5d5 -d5d5d5d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d7d7d7d7d7d7d8d8d8d7d7d7d6d5d4d3d3d3 -cdcdcdc9c9c9c7c8c7c8c9c8cbcbcad0d0d0d8d8d7dededee2e2e2e3e3e3e2e1e1e0e0e0 -dfdfdfdedededededddedddddddddcdcdddcdcdddcdcdcdcdadbdbdadbdbdbdbdbdbdbdb -dadadadadadadadadadadadadadadadadadadadadad9d9d9d9d9d9d8d8d8d8d8d8d5d5d5 -d4d4d4d5d5d5d6d6d6d8d8d8dadadadbdbdbdadadadadadadbdbdbdbdbdbdbdbdbdbdbdb -dcdcdcdddddddddddddddddddbdbdbd8d7d7d2d1d1ccccccc9c9c9c8c8c8c9c9c9cacaca -cccccccececed1d1d1d3d3d3d5d5d5d7d7d7d8d8d8d9d9d9dbdbdbdddddddfe0dfe3e3e3 -e4e4e4e5e5e5e5e4e4e5e5e5e1e0e0dedededadadad6d6d6d3d3d3d0d0d0cdcdcdcccccc -cdcdcdcdcdcdcecececfcfcfd2d2d2d4d4d4d7d7d7dadadadddddde0e0e0e3e3e3e6e6e6 -e8e8e8eaeaeaeeeeeef0f0f0f1f1f1f3f3f3f5f5f5f7f7f7f7f7f7f8f8f8f9f9f9fafafa -fafafafafafafbfbfbfbfbfbfbfbfbfcfcfcfcfcfcfdfdfdfefefefefefefefefefefefe -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fefefefefdfefdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefdfeffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffefefefefdfdfdfcfcfcfafafaf6f6f6 -f1f1f0ebebeae4e4e3dedfded9d9d8d4d4d4d2d2d2d0d0cfcfcfcececececdcdcdcdcdcd -cdcdcdcdcdcdcdcdcdcececed0d0d0d4d4d4dadadae5e5e5edededf1f1f1eeeeeeececec -ebebebeaeaeaeaeaeaeaeaeae9e9e9e9e9e9e9e9e9e7e7e7e7e7e7e8e8e8e6e6e6dddddd -d0d0d0c8c8c8cacacacececed1d1d1d3d3d3d4d4d4d4d4d4d6d6d6d6d6d6d7d7d7d8d8d8 -d7d7d7d7d7d7d7d7d7d7d7d7d6d6d6d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d6d6d6d6d6d6 -d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d5d5d5d5d5d5d5d5d5d5d5d5d4d4d4d1d2d2cececd -cbcbcbcacac9cbcbcbcdcdcdd1d1d0d6d5d5dbdbdbe0e0dfe3e3e2e3e3e3e1e1e1e1e1e1 -e0e0e0e0e0e0e0e0e0dfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdddddddededededededddddd -dddddddcdcdcdbdbdbdadadadbdbdbdbdbdbdcdcdcdcdcdcdbdbdbdadadadadadad8d8d8 -d8d8d8d8d8d8dadadadbdbdbdddddddedededddddddddddddddddddedededededededede -dedededddddddadadad6d6d6d0d0d0ccccccc9c9c9c8c8c8c9c9c9cacacacccccccdcdcd -cfcfcfd1d1d1d5d5d5d8d8d8dbdbdbdededee1e1e1e5e5e5e7e7e7e9e9e9e8e8e8e5e5e5 -e0e0e0dadadad3d3d3cdcdcdc8c8c8c7c7c7c6c6c6c7c7c7cacacacececed2d2d2d5d5d5 -dadadadededee2e2e2e6e6e6e9e9e9ecececefefeff1f1f1f3f3f3f5f5f5f7f7f7f9f9f9 -fafafafafafafbfbfbfcfcfcfdfdfdfdfdfdfefefefefefefefefefefefefefefeffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefefefe -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfdfdffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffefefefefefefdfdfdfcfcfc -f9f9f9f5f5f5f1f1f1ececece6e6e6e2e2e2dedededbdbdad8d8d8d6d6d5d4d4d3d3d3d2 -d2d2d1d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d2d2d2d3d3d3d7d7d7e0e0e0ecececf2f2f2 -f2f2f2f0f0f0edededecececebebebeaeaeaebebebeaeaeae9e9e9e8e8e8e8e8e8e9e9e9 -e7e7e7dededed4d4d4d1d1d1d2d2d2d2d2d2d4d4d4d4d4d4d5d5d5d4d4d4d5d5d5d5d5d5 -d5d5d5d6d6d6d6d6d6d6d6d6d6d6d6d7d7d7d6d6d6d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7 -d7d7d7d7d7d7d7d7d7d6d6d6d6d6d6d6d6d6d5d5d5d5d5d5d4d4d4d4d3d3d2d1d0d0cfce -cecfcfcecfcfd0d0d0d3d3d3d6d6d6d8d7d7dbdbdbdfdfdfe1e0e0e0dfdfe0e0e0dfdfdf -dfdfdfe0dfdfe0e0e0e1e1e1e1e1e1e0e0e0e0e0e0e0e0e0e0e0e0dfdfdfdfdfdfdfdfdf -dcdcdcd8d8d8d4d4d4d4d4d4d7d7d7dadadadddddddedededededededededddddddcdcdc -dcdcdcdddddddddddddddddddedededfdfdfdededededededfdfdfdedededadadad9d9d9 -d3d4d4cfd0d0cccdcdc9c9c9c6c6c6c6c6c6c7c7c7c9c9c9cbcbcbcececed1d1d1d4d4d4 -d8d8d8dcdcdce0e0e0e4e4e4e8e8e8e9eaeae7e8e8e5e5e5dfdfded7d7d7d0d0d0c8c8c8 -c2c2c2c0c0c0c2c2c2c5c5c5cbcbcbd2d2d2d9d9d9dfdfdfe4e4e4e9e9e9eeeeeef1f1f1 -f4f4f4f7f7f7f8f8f8fafafafbfbfbfcfcfcfcfcfcfdfdfdfefefefefefefefefefefefe -fefefeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefdfefdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfdfdfffeffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefe -fefefefefefefdfdfdfcfcfcfafafaf8f8f8f7f7f7f5f5f5f4f4f4f3f3f3f3f3f3f2f2f2 -f1f1f1f1f1f1f1f1f1f0f0f0f0f0f0efefefeeeeeeebebebe6e6e6e0e0e0dcdcdce1e1e1 -e9e9e9efefeff3f3f3f3f3f3f0f0f0efefefedededecececebebebebebebebebebeaeaea -ebebebebebebe9e9e9e3e3e3dfdfdfdcdcdcdadadadadadadadadad8d8d8d7d7d7d6d6d6 -d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d4d4d4d5d5d5d4d4d4d5d5d5d5d5d5d6d6d6d6d6d6 -d7d7d7d6d6d6d6d6d6d7d7d7d7d7d7d6d6d6d5d5d5d6d6d6d6d6d6d5d5d5d4d4d4d5d4d4 -d4d4d4d5d4d4d5d5d5d5d6d5d6d6d6d7d8d8d9d9d9dbdbdbdcdcdbdddddcdbdbdbdbdbdb -dcdcdcdddddde0e0e0e2e2e2e4e4e4e4e4e4e3e3e3e1e1e1e1e1e1e0e0e0e0e0e0dcdcdc -d8d8d8d2d2d2cfcfcfcfcfcfd2d2d2d6d6d6d9d9d9dcdcdcdedededfdfdfdedededddddd -dddddddddddddddddddddddddddddddcdcdcdcdcdcd9d9d9d3d3d3ccccccc5c5c5c2c2c2 -c1c1c1c2c2c2c3c3c3c5c5c5c7c7c7cacacacfcfcfd3d3d3d6d6d6dadadadededee1e1e1 -e3e3e3e5e5e5e2e2e2dededed9d9d9d3d3d3ccccccc7c7c7c6c6c6c5c5c5c7c7c7cbcbcb -d2d2d2d8d8d8dfdfdfe6e6e6ecececf1f1f1f4f4f4f7f7f7fafafafcfcfcfcfcfcfdfdfd -fffffffffffffefefeffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffefefefefefdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfdfefefefefffffffdfdfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfdfdfefefeffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffefefefefefefefefefefefefefefe -fefefefefefefdfdfdfdfdfdfdfdfdfdfdfdfcfcfcfbfbfbfbfbfbf9f9f9f4f4f4eeeeee -e7e7e7e3e3e3e6e6e6ebebebf0f0f0f3f3f3f3f3f3f1f1f1efefefefefefeeeeeeeeeeee -edededececececececedededebebebe9e9e9e7e7e7e5e5e5e3e3e3e2e2e2e1e1e1e0e0e0 -dedededcdcdcdbdbdbdbdbdbdadadad9d9d9d8d8d8d7d7d7d5d5d5d5d5d5d5d5d5d5d5d5 -d5d5d5d5d5d5d4d4d4d4d4d4d5d5d5d5d5d5d6d6d6d5d5d5d6d6d6d6d6d6d6d6d6d6d6d6 -d8d8d8d9d9d9d8d8d8d6d6d6d5d4d4d6d6d6d8d8d8d8d8d8d9d9d8d8d8d8d8d8d8d8d8d8 -d8d8d8dadadadddddde2e2e2e6e7e6e7e7e7e7e7e7e5e5e5e3e3e3e3e3e3e3e3e3e0e0e0 -dcdcdcd8d8d8d4d4d4d3d3d3d2d2d2d3d3d3d5d5d5d8d8d8dbdbdbdedededfdfdfdedede -dededededededddddddddddddddddddcdcdcd9d9d9d4d4d4cececec8c8c8c6c6c6c3c3c3 -c4c4c4c6c6c6cacacacececed2d2d2d6d6d6dadadadcdcdcdedededfdfdfdedededddddd -d9d9d9d5d5d5d3d3d3d0d0d0d0d0d0d1d1d1d4d4d4d8d8d8dcdcdce1e1e1e7e7e7ebebeb -efefeff2f2f2f7f7f7fafafafcfcfcfdfdfdfefefeffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefefefefefefe -fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe -fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe -fefefefefefefefefefefefefefefefefefefefefeffffffffffffffffffffffffffffff -fffffffffffffffffffefefefefefefdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfefdfefefefefffffffffffffffffffdfdfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefdfefefefefefefe -fefefeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefe -fbfbfbf5f5f5eeeeeee8e8e8e4e4e4e7e7e7ebebebefefeff1f1f1f1f1f1f0f0f0f0f0f0 -efefefefefefeeeeeeeeeeeeefefefefefefeeeeeeededededededecececeaeaeae9e9e9 -e9e9e9e8e8e8e7e7e7e5e5e5e5e5e5e3e3e3e2e2e2e1e1e1dfdfdfdddddddbdbdbdadada -d9d9d9d9d9d9d8d8d8d6d6d6d5d5d5d4d4d4d5d5d5d5d5d5d4d4d4d4d4d4d5d5d5d6d6d6 -d8d8d7d8d8d7d8d8d7d5d5d5d2d2d2d2d2d2d5d5d5d8d8d8dadad9d9d9d8d7d7d6d6d6d6 -d6d6d5d7d8d8dbdcdbe1e1e1e7e7e7eaeae9e9e9e9e8e8e8e7e7e7e7e7e7e6e5e5e6e5e5 -e4e4e4e2e2e1e1e1e1dedededadadad6d6d6d3d3d3d3d3d3d6d6d6d9d9d9dcdcdcdedede -dfdfdfe0e0e0dededededededededededededcdcdcdbdbdbd9d9d9d7d7d7d5d5d5d3d3d3 -d1d1d1d1d1d1d3d3d3d6d6d6d7d7d7d7d7d7d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8dadada -dcdcdcdededee2e2e2e5e5e5e9e9e9edededf1f1f1f3f3f3f6f6f6f8f8f8fbfbfbfcfcfc -fdfdfdfefefeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffefdfefdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefefefefeffffffffffffffffff -fffffffefefefefefefdfdfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfdfdfefefefffffffffffffffffffffffffffffffdfdfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfefefefefeffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffefefefafafaf4f4f4eeeeeee7e7e7e3e3e3e2e2e2e4e4e4e5e5e5e6e6e6 -e8e8e8eaeaeaebebebedededeeeeeeeeeeeeeeeeeeefefeff0f0f0efefeff0f0f0efefef -efefefefefefeeeeeeeeeeeeedededebebebebebebebebebeaeaeae9e9e9e7e7e7e5e5e5 -e4e4e4e3e3e3e3e3e3e0e0e0dedededcdcdcdbdbdbdadadad9d9d9d8d8d8d7d6d6d7d7d7 -d7d7d6d8d8d7d7d7d6d5d5d4d1d1d0cecececfcfcfd4d4d3dadad9dedfdedfdfdedfe0df -e0e0e0e1e1e0e4e4e3e6e7e6e9e9e9ebecebebebebebebebeaeaeaeaeaeae8e7e7e9e8e8 -e9e8e7e8e8e7e7e7e7e6e6e6e3e3e3dededed8d8d8d3d3d3d2d2d2d3d3d3d6d6d6d8d8d8 -dbdbdbdddddddddddddddddddedededededededededededededededddddddcdcdcd9d9d9 -d4d4d4d0d0d0cbcbcbcbcbcbcccccccfcfcfd4d4d4d9d9d9dededee3e3e3e8e8e8ececec -f0f0f0f3f3f3f6f6f6f8f8f8fafafafcfcfcfdfdfdfefefefefefeffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffefdfefdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfdfefefefefefefe -fdfdfefdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fefdfefefefefffffffffffffffffffffffffffffffffffffdfdfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfdfefefefeffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffefefefdfdfdf9f9f9f3f3f3ececece5e5e5e0e0e0dcdcdc -dadadad9d9d9d9d9d9dadadadcdcdcdededee0e0e0e2e2e2e4e4e4e7e7e7e9e9e9ececec -eeeeeeefefeff0f0f0f0f0f0f0f0f0f1f1f1f1f1f1f0f0f0f0f0f0efefefefefefefefef -eeeeeeedededecececebebebeaeaeae9e9e9e8e8e8e6e6e6e4e4e4e2e2e2e1e0e0dedede -dddddcdcdcdcdbdbdad9d9d8d6d6d5d2d2d1cececdcccccccfd0cfd7d7d7dededde5e5e4 -eaebebeeeeedefefefeff0efeeefeeeeeeedeeedededededececececececebebebebebeb -ebebeaebeae9eaeaeaeaeaeae9e9e9e8e8e7e3e2e2dcdcdcd7d7d7d4d4d4d3d3d3d4d4d4 -d5d5d5d6d6d6d8d8d8d9d9d9dadadadcdcdcdcdcdcdcdcdcdadadad4d4d4cdcdcdc4c4c4 -bebebebcbcbcbfbfbfc7c7c7d1d1d1dbdbdbe4e4e4ebebebf1f1f1f5f5f5f7f7f7fafafa -fcfcfcfdfdfdfefefeffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffefdfefdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefdfe -fefefefffffffffffffffffffffffffffffffffffffffffffdfdfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfefeffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffefefefcfcfcf9f9f9f5f5f5f0f0f0 -eaeaeae5e5e5e0e0e0dcdcdcd8d8d8d6d6d6d6d6d6d4d4d4d3d3d3d4d4d4d5d5d5d7d7d7 -dadadadededee1e1e1e4e4e4e7e7e7e9e9e9ecececeeeeeef0f0f0f1f1f1f2f2f2f3f3f3 -f3f3f3f3f3f3f2f2f2f1f1f1f1f1f1f1f1f1f1f1f1f0f0f0efefefeeeeeeedededececec -eae9e9e8e8e8e6e6e6e5e5e4e2e2e1dfdfdedbdad9d5d5d4cfcfcfcccccccdcdcdd1d1d1 -d7d7d6dededde4e4e3e9eae9eeeeeef0f0eff0f1f0f1f1f0f0f1f1f1f1f0f1f0f0f0efef -efefefefeeeeedededeeeeeeedeeeeecececebeaeae9e8e8e4e4e4dfdfdfdcdcdcdadada -dbdbdbdcdcdcdedededfe0dfe0e0e0dedededadadad3d3d3c9c9c9bebebeb8b8b8b6b6b6 -bcbcbcc8c8c8d4d4d4e0e0e0e9e9e9f1f1f1f6f6f6fafafafcfcfcfdfdfdfefefefefefe -fefefeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffefdfefdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfdfdfdfdfdfefdfefefefeffffff -fffffffffffffffffffffffffffffffffffffffffffffffffdfdfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfdfdfefdfeffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefe -fcfcfcf9f9f9f7f7f7f4f4f4f0f0f0ededede9e9e9e6e6e6e2e2e2dfdfdfdbdbdbd9d9d9 -d6d6d6d5d5d5d5d5d5d5d5d5d5d5d5d6d6d6d8d8d8dadadadddddde1e1e1e5e5e5e8e8e8 -ebebebedededf0f0f0f2f2f2f4f4f4f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f4f4f4f3f3f3 -f2f2f2f2f2f2f1f1f1f1f0f0efefeeedececebeaeae9e9e9e5e5e5dfdfded9d9d9d1d2d2 -cbcbcbc7c7c7c6c6c6cacac9d2d2d1dadadae1e1e0e4e5e4e7e7e7e9e9e9eae9e9edeceb -efefeef0f0eff0f0f0f1f1f1f1f1f1f1f1f0f0f0f0efefefefefeeececebeae9e9e6e5e5 -e2e3e3e1e1e1dfdfdfdbdcdcd5d6d6cdcdcdc5c5c5bdbdbdb9b9b9bbbbbbc2c2c2cdcdcd -dadadae6e6e6efefeff5f5f5f9f9f9fdfdfdfefefefefefeffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffefdfefdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfdfdfefdfefefefeffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffdfdfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefdfeffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffefefefdfdfdfcfcfcfbfbfbfafafaf8f8f8f6f6f6f4f4f4f2f2f2 -efefefececece9e9e9e6e6e6e2e2e2dfdfdfdcdcdcd9d9d9d7d7d7d6d6d6d5d5d5d6d6d6 -d6d6d6d8d8d8dadadadededee3e3e3e7e7e7eaeaeaeeeeeef1f1f1f3f3f3f5f5f5f6f6f6 -f5f5f5f6f6f6f5f5f5f5f5f5f4f4f4f4f3f3f3f3f3f3f3f3f3f3f3f2f1f1efefefececec -e7e7e7ddddddd2d2d2c5c5c5bbbbbbbababac2c2c1c9c9c9cccccccbcccccacac9cececd -d4d4d4d9d9d9dcdcdcdedededfdfdfdfdedededededcdddddbdbdbd8d8d8d4d4d4cecece -c8c9c9c4c4c4c2c2c2c1c1c1c0c0c0c0c0c0c1c1c1c6c6c6cececed7d7d7e1e1e1ebebeb -f3f3f3f8f8f8fcfcfcfefefefefefeffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffefdfefdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfdfdfefdfefefefefffffffffffffffffffffffffffffffefefe -fefefefefefefefefefefefefefefefefefefefefefefefefdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfdfdfefdfefefefeffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefefefefefefe -fdfdfdfcfcfcfbfbfbfafafaf8f8f8f6f6f6f4f4f4f2f2f2eeeeeeebebebe7e7e7e4e4e4 -e1e1e1dddddddadadad8d8d8d6d6d6d5d5d5d6d6d6d7d7d7dbdbdbdededee3e3e3e9e9e9 -eeeeeef3f3f3f6f6f6f6f6f6f6f6f6f5f5f5f5f5f5f5f5f5f6f6f6f6f6f6f7f7f7f6f6f6 -f6f6f6f4f4f4f1f1f1e9e9e9d8d8d8c2c2c2b6b6b6b9b9b9bdbdbdbdbdbdc0c0c0c6c6c6 -cdcdcdd0d0d0d0d0d0d0d0d0cecececccccccacacac8c8c8c7c7c7c5c5c5c4c4c4c2c2c2 -c4c4c4c6c6c6cacacad0d0d0d6d6d6dbdbdbe1e1e1e8e8e8eeeeeef4f4f4f7f7f7fbfbfb -fdfdfdfefefeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffefdfefdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfefdfefffffffffffffffffffefdfefefdfefefdfefefdfefdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfdfdfefdfe -fefdfefefefefefefeffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffefefefefefefefefefdfdfdfcfcfcfafafaf8f8f8 -f7f7f7f5f5f5f2f2f2efefefececece8e8e8e4e4e4e1e1e1dddddddcdcdcdddddde0e0e0 -e5e5e5ebebebf1f1f1f6f6f6f8f8f8f7f7f7f6f6f6f6f6f6f6f6f6f8f8f8f9f9f9f8f8f8 -f7f7f7f7f7f7f7f7f7f8f8f8f6f6f6e8e8e8ccccccb2b2b2adadadb9b9b9ccccccdadada -e1e1e1e2e2e2e3e3e3e4e4e4e5e5e5e3e3e3e2e2e2e0e0e0e0e0e0e0e0e0e1e1e1e2e2e2 -e5e5e5e8e8e8ecececf0f0f0f3f3f3f6f6f6f9f9f9fbfbfbfcfcfcfefefefefefeffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffefdfefdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfefdfefefdfefefdfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfefefefefefefefefefefefeffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefe -fefefefefefefefefefdfdfdfcfcfcfbfbfbfafafaf8f8f8f6f6f6f2f2f2eeeeeeeaeaea -e7e7e7e8e8e8ecececf1f1f1f6f6f6f8f8f8f8f8f8f5f5f5eeeeeee9e9e9ecececf6f6f6 -f9f9f9f9f9f9f8f8f8f8f8f8f9f9f9f6f6f6e4e4e4bbbbbba0a0a0afafafd1d1d1e3e3e3 -e5e5e5e3e3e3e6e6e6edededf5f5f5f9f9f9fafafaf9f9f9f9f9f9f9f9f9f9f9f9fafafa -fbfbfbfcfcfcfcfcfcfdfdfdfefefefefefeffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffefdfefdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfdfdfefefefefefefefefefefefefefefe -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefdfdfdfafafa -f6f6f6f2f2f2efefefefefeff1f1f1f4f4f4f8f8f8f8f8f8f2f2f2e4e4e4d7d7d7dbdbdb -edededfafafafcfcfcfbfbfbfafafaf7f7f7e9e9e9c7c7c7a3a3a3abababcececee4e4e4 -e3e3e3d8d8d8d3d3d3ddddddebebebf6f6f6fcfcfcfefefeffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffefdfefdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfdfefdfdfefdfdfefdfdfefdfdfefefefeffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fefefefcfcfcf8f8f8f2f2f2efefefefefeff3f3f3f8f8f8fbfbfbf8f8f8ebebebd5d5d5 -c5c5c5cbcbcbe1e1e1f3f3f3fbfbfbfcfcfcf7f7f7e3e3e3c1c1c1b2b2b2c5c5c5dcdcdc -e4e4e4dcdcdcccccccc7c7c7d1d1d1e0e0e0efefeff8f8f8fdfdfdfefefeffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffefdfefdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefdfdfffefeffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffefefefafafaf4f4f4f0f0f0efefeff1f1f1f6f6f6fbfbfbfcfcfcf4f4f4 -ddddddbdbdbdabababb3b3b3cccccce5e5e5f5f5f5f9f9f9eeeeeed6d6d6c7c7c7cdcdcd -d9d9d9e0e0e0dcdcdcd0d0d0c6c6c6c9c9c9d5d5d5e5e5e5f1f1f1f9f9f9fcfcfcfefefe -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffefdfefdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefefefefefefefefefefe -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffdfdfdfbfbfbf7f7f7f1f1f1eeeeeeeeeeeef2f2f2f7f7f7f9f9f9 -f8f8f8ecececd4d4d4bbbbbbb1b1b1b8b8b8cacacadededeeeeeeef1f1f1e4e4e4d1d1d1 -ccccccd4d4d4dddddddededed6d6d6ccccccc7c7c7cdcdcddadadae8e8e8f3f3f3fafafa -fdfdfdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fefefefefefefefefefefefefdfdfefdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfcfbfcfcfbfcfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfdfd -fefdfefefdfefefdfefefdfefefdfefefdfeffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffdfdfdf9f9f9f2f2f2ececece8e8e8e7e7e7eaeaea -edededf2f2f2f5f5f5f2f2f2e9e9e9ddddddd3d3d3cfcfcfd3d3d3dcdcdce5e5e5e4e4e4 -d5d5d5cbcbcbcfcfcfd8d8d8dedededbdbdbd2d2d2c9c9c9c7c7c7d0d0d0dededeececec -f7f7f7fbfbfbfefefefefefeffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffefefefdfdfefdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfcfbfce6e5e6cac9cac2c1c2c0bfc0c2c2c2ecebecfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefdfefefdfefefdfefefdfefefdfefefdfe -fefdfefefdfefefefefefefefefefefefefeffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffefefefcfcfcf7f7f7efefefe7e7e7e1e1e1 -dcdcdcdcdcdce0e0e0e6e6e6edededf2f2f2f4f4f4f1f1f1ebebebe4e4e4dfdfdfe4e4e4 -e4e4e4dcdcdcd2d2d2d1d1d1d7d7d7dcdcdcdbdbdbd3d3d3c8c8c8c1c1c1c7c7c7d4d4d4 -e4e4e4eeeeeef5f5f5f9f8f8fcfcfcfdfdfdfefefefefefefefefeffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffefdfefdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfde8e7e893908e5a53444b422f42392738342b8a8a89f8f7f8fdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffcfcfcf8f8f8f2f2f2 -ebebebe4e4e4e0e0e0dddddddddddde0e0e0e4e4e4e9e9e9efefeff2f2f2f2f2f2f0f0f0 -f0f0f0f0f0f0ebebebe4e4e4e1e1e1e0e0e0e0e0e0dededed8d8d8cfcfcfcacacacacaca -d0d0d0d8d8d8dfdfdfe6e5e5ececebf0f0eff3f3f2f5f5f5f7f6f6f8f8f8f9f9f9fafafa -fbfbfbfcfcfcfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfefefefefefefefefe -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffefefefdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdc4c3c3847a64a4863ea9873394762c7561312a2823e6e6e7fdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfcfbfcf2f1f2 -dedddecccbcccbcacbc6c5c6c7c6c7cfcfcfe6e5e6f9f9fafdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefefefe -fcfcfcfafafaf7f7f7f3f3f3eeeeeeeaeaeae5e5e5e2e2e2e0e0e0e0e0e0e2e2e2e7e7e7 -eaeaeaedededf0f0f0f2f3f2f3f3f3f2f2f2f0f0f0eeeeeeecececebebebe7e7e7e2e2e2 -dcdcdcd9d9d9d7d7d6d9d9d8dcdcdcdededee1e1e0e3e3e3e4e3e3e5e5e5e7e7e6e9e9e9 -ebebeaedededf0f0f0f1f1f1f2f2f2f3f3f3f3f3f3f3f3f3f3f3f3f4f4f3f5f5f5f6f6f6 -f7f7f7f9f9f9f9f9f9fafaf9fbfbfafbfbfbfcfcfcfdfdfdfefefefefefefefefeffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffefdfefdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdc5c4c3a18f66c4992abc8f17a07a138b6d1c332e24dcdcdcfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdf4f3f4d1d1d1b4b3b3999895 -8f8c83857e6f94897195886c8f846c847e72898884a7a6a6dedddefbfafbfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffefefefdfdfdfcfcfcf8f8f8f4f4f4eeeeeee8e8e8e3e3e3dfdfdf -dcdcdcdcdcdcdddddddedfdedfdfdfe2e2e2e6e6e5e7e7e7e9e9e8ebebebeeeeeef1f1f1 -f1f1f1efefefebebebe9e9e9e8e8e8e7e7e7e6e6e6e5e5e5e3e3e2e1e1e0dfdfdedfdfde -dedededfdfdfe1e1e1e2e2e2e4e3e3e5e5e4e6e6e5e5e5e4e4e4e4e3e3e3e3e3e2e3e3e3 -e5e5e5e8e8e7e9e9e8eaeaeaebebeaedececeeeeeeefefeff1f1f0f3f3f2f5f5f4f7f7f6 -f8f8f8fafaf9fafafafbfbfbfcfcfcfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfefefe -fefefefffffffffffffefefeffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdc6c5c4a19066c1972bb98d1c9f7a188b6d1d373227ddddddfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdf1f0f1c4c3c3a2a09f8f897b978662a38741 -b99433c49d36cfa849cea955cca74ebf9b3ca3863e82745776746fbfbebff6f6f6fdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffefefefdfdfdfbfbfbf7f7f7f3f3f3 -eeeeeee9e9e9e3e3e3dededed8d8d7d3d3d3d2d2d1cfd0d0cfcfcecfcececfceced5d4d4 -e0dedeeaeae9edededefefeff0f0f0f2f2f2f2f2f2f3f3f3f2f2f2f1f1f1efefefededed -ecececebebebebebebececececececededededededecececeaeaeae8e8e8e4e4e4e1e1e1 -e1e1e1e2e2e2e4e4e4e4e4e4e3e3e3e3e3e3e1e1e1dfdfdfdededee0dfdfe2e2e1e4e4e3 -e6e6e5e7e7e6e9e9e8ebebeaeeeeedeeeeeeefefeff0f0f0f0f0eff1f1f0f2f2f1f3f3f2 -f4f4f4f6f6f6f8f8f8f8f8f8fafafafbfbfbfdfdfdfdfdfdfefefefefefeffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffefdfefdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdc7c6c4a19067c19829b98e1aa07b168b6d1c363126dededefdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfcfbfcf2f1f2c8c7c79d9c998c8472a08a52c59e3ae1b031f2bb28 -deb144a88d42927d488f7d53958151a98e4acaa64cd3a94191793e5d5950bdbdbdf8f7f8 -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefefefe -fdfdfdfbfbfbf8f8f8f5f5f5f1f1f1ececece7e8e7e3e3e2dfdfdedbdbdad7d6d6d4d3d2 -d5d4d3dadad9d7d6d6d2d1d1d2d2d1d5d5d4d7d6d6dddddde2e2e2e5e5e5e8e8e8ececec -eeeeeeefefefefefefefefefefefeff0f0f0f0f0f0f1f1f1f2f2f2f3f3f3f3f3f3f3f3f3 -f3f3f3f2f2f2f3f3f3f2f2f2f2f2f2f0f0f0eeeeeeeaeaeae8e8e8e6e6e6e4e4e4e3e3e3 -e1e1e1e0e0e0e0e0e0e1e1e0e2e2e2e2e2e2e3e3e3e4e4e4e3e3e3e2e2e2e1e1e1e1e1e1 -e3e3e3e4e4e4e6e6e5e7e7e7eaeaeaececebedededf0f0eff3f3f3f6f6f6f9f9f9fbfbfb -fdfdfdfefefefefefefefefefffffffffffffffffffffffffffffffefdfefdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdf1f0f1d4d4d4bcbcbcb4b4b4b4b4b4b5b4b5b5b4b5b5b4b5b5b4b5b5b4b5b5b4b5 -b5b4b5b5b5b5b3b3b38c8b8a91805ac09936b89029a17e238c6f273632288b8a8abab9ba -b7b7b7b9b8b9b9b9b9babababbbbbbbcbbbcbcbbbcbcbbbcbcbbbcbcbbbcc5c5c5e1e1e1 -f9f8f9fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdf5f4f5d7d7d7aaaaaa82807e746d5f937f4cb89433d5a628e8b221f1b924bc9b48 -65593f83817aafaeacbfbebdbcbbb9a6a39e8a816ba98f4fd6aa3b957c3f59564fd3d2d3 -fcfbfcfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffefefefefefefdfdfdfcfcfcfafafaf8f8f8f7f7f7f5f5f5f1f1f0 -efefeeebebebe5e5e5dededdd9d9d9d6d6d5d2d2d1cfcfcfcdcdcdcac9c9cccbcbcfcfce -d1d1d1cdcdcdcbcac9c9c8c8c7c7c6c8c7c7c8c8c8cacacad1d1d1dbdbdbe0e0dfe2e2e2 -e3e3e3e3e3e3e4e3e3e4e4e4e9e9e8edeeedf1f1f1f3f3f3f4f4f4f4f4f4f4f4f4f4f4f4 -f3f3f3f2f2f2f1f1f1f0f0f0f0f0f0f0f0f0f1f1f1f0f0f0eeeeeeebebebe7e7e7e4e4e4 -e2e2e2e1e1e1e0e0e0e0e0e0e0e0e0e0e0dfdfdfdfdedededfdfdfe2e2e2e7e7e7ececec -f1f1f1f5f5f5f8f8f8fbfbfbfdfdfdfefefefffffffffffffffffffefdfefdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfcfbfcfcfbfcfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdefefef -b3b3b3807d7980796a91866b94876a94876a94876a94876a94876a94876a94876a94876a -94876a94876b93866a908365ac9664cbab60c9a85cc0a058b799588c7c5786795e8b8065 -8479617d735c756c576d6452635c4c585345524d41504b3f4f493f4e493f4c4840474543 -777675c7c6c7fbfafbfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdf6f5f6e1e1e1bebdbe -9594937978745a574f69604a7562368d6f22ac861ec59820d6a521e5b021b697495a5344 -a1a09fe4e4e4f5f5f5fafafaf8f8f8efefefd0d0d0969289a99057dbae3d7b693d8e8d8b -f0eff0fdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefefefe -fefefefbfbfafafaf9f8f8f8f5f5f4f2f2f1f0f0efeeeeedeaeaeae7e7e7e3e3e3dfdfde -dbdbdbd5d5d4d0d0d0cecdcdcdcdcdcdcccccdcdcccccbcbcecdcdcfcfcecccbcac6c5c5 -c2c1c1bdbdbdbab9b9bfbebec5c5c5c9c9c9cfcfcfd2d1d1d4d3d3dadadae0e0e0e2e2e2 -e4e4e4e7e7e7ebebeaefefefefefefefefefefefeff1f1f1f3f3f3f3f3f3f2f2f2eeeeee -ebebebe7e7e7e5e5e5e5e5e5e6e6e6e6e6e6e5e5e5e2e2e2ddddddd9d9d9d9d9d9dadada -dddddde1e1e1e6e6e6ebebebf0f0f0f5f5f5f9f9f9fcfcfcfdfdfdfdfdfdfcfcfdfdfcfd -fdfcfdededed9a99997b7a795b5a597d7c7c898888888787888787888787888787888787 -8887878887878887878584848382828584848887878d8c8c8d8c8c8d8c8c8c8b8b8f8e8e -a5a5a5bbbbbbc1c0c1c8c8c8cac9cac9c9c9c9c9c9c9c9c9c9c9c9c7c7c79e9d9e62615e -9c9075c8a654e2b236e8b52ce9b52ce9b52be9b52be9b52be9b52ae9b52ae9b529e9b428 -e9b427e9b427e9b326eab425edb82befbb32efba33eeb931ebb72fe6b126ddaa24d0a122 -c1951fad851d9573197d6116664f1253400f44350d3d2f0b3a2d0b3a2d0b3a2d0c3c3011 -3c342433312f5c5c5cb4b4b4cfcfcfcececeb5b4b58f8e8e666666484846524f48565043 -544a35584b2a594615644e11785c138e6d17a6801bbb9120d1a01cc69f42554b369a9a99 -f1f1f1fffffffffffffffffffffffffffffffcfcfcd8d7d78b877ebf9b42c4a253544f42 -dad9dafcfbfc -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffefefefefefefefefefdfcfcfbfcfcfbfafaf9fafafa -f7f7f6f6f6f6f4f4f4f2f2f2f2f2f2f2f2f2f2f2f2f2f2f1f1f1f1efefeeedececeae9e9 -e5e5e5e1e1e1dedededddddddcdcdcd8d8d8d5d4d4d1d0d0cdcdcdcdcdcdcbcbcac5c5c4 -c3c1c2c3c1c1c8c8c8cacacac7c7c7c6c6c6c6c6c6c8c8c7cac9c9cccacad1d0d0d4d4d4 -d3d3d3d1d1d1d4d4d4dadadae1e1e1e6e6e6e9e9e9e9e9e9e6e6e6e3e3e3e0e0e0dedede -dddddddbdbdbdadadadad9d9dddcdce3e3e3eaeaeaf1f1f1f7f7f7fbfbfbfcfcfcfdfcfd -faf9faa3a2a1877c62b59a5ebc9d5cb99c5fb99d60b99e60b99e60b99e60b99e60b99e61 -b99e61b99e61ba9e61b79c61a99360a38e5ea08c609e8b619788619485618d7f5f87795e -81765d7e745e78705b726b59726b58726b58726b58726b58726b58726a586e6654837659 -d0b26ce6bf66e1bb66e0bb67e0bb68e1bd69e1bd6be2be6ce3bf6fe4c171e4c274e4c376 -e6c579e7c67ce8c880e9ca83eacc87eace8aeacf8be9ce8be8cd8ae7cb88e3c785dfc280 -d8bb7aceb373c3a96bb79d63aa925aa0895397814e917b498c7646897343867141846d3d -816b3b7465445c55465953455650434f493e4641373d382f36322a504936675836655531 -62532e62522f624f27604a126f55128566179c781bb58c1ccc9d2189744365635fe4e4e4 -fffffffffffffffffffffffffffffffffffffffffffdfdfdb1b1b1998a67deb240655837 -b2b2b1f9f8f9 -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffefefefdfffffffffffffffffffffffffffffffefefe -fdfdfdfcfcfcfbfbfbfbfbfbfcfcfcf9f9f9f9f9f8f6f6f6f5f5f5f1f1f0ededede9e9e9 -e5e5e4e2e2e1dfdfdfdbdbdbd7d7d7d5d5d5d4d4d4d4d4d4d2d3d2d0d0d0d0d0d0d0d0cf -cdcdcdcbcbcacbcacacecececfcfced2d1d0d3d1d1d7d6d6dededddfdfdfdfdfdfe0e0e0 -e0e0e0e0e0e0dcdcdcd9d9d9d5d5d5d5d5d5dcdcdce4e4e4eeeeeef6f6f6fbfbfbfdfcfd -f6f5f6aea797d2a635f5ba1af6be28f6bf2ef7bc22f6bb1cf6bb1af6bb1af6bb1af6bc1b -f6bb1bf6bb1bf6bb1bf6bc1af6bc1bf6bc1bf7bc1cf7bc1cf7bc1cf8bc1cf8bc1ef8bc1e -f8bd1ef8bd1ff8be22f8bf26f8bf26f8bf27f8bf27f8bf27f8bf27f8bf29f8c02bf8c02d -f6c033f5c039f5c03cf6c140f6c346f7c44bf7c753f7c95ef7cb6af7cd73f8d17cf8d584 -f9d88df9db96fadfa0fbe2a9fbe4b1fbe7b7fce9bcfceabffceabffdeabdfce9bafce6b3 -fce4abfce1a2fbdd99fbda8ffad787fad37ef9d076f8cd6df4c760eebf53e6b749d9ad3e -cba034bb9328a9841f967419856616745913664e115b460f523e0c49370a46360c47360e -47360e47370f53431f6553296950117c5f15937219ad8418b79132584c33969695f4f4f4 -ffffffffffffffffffffffffffffffffffffffffffffffffd8d8d88d887dd2a735877446 -888784f5f4f5 -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffefefefefefefefefefdfdfd -fcfcfbfcfcfbf9f9f9f9f9f9f7f7f7f6f6f6f5f5f4f5f5f4f5f5f4f4f4f3f2f2f1f0f0ef -eeeeedededecedededebebeaeaeae9e6e6e5e1e0dfdddcdcd8d8d7d3d3d2d5d4d3d6d6d5 -d7d7d7d6d6d6d3d3d3d0d0d0cfcfcfd2d2d2d9d9d9e3e3e3ecececf4f4f4fafafafdfcfd -f3f2f3aba290c59d35e1af28e0af2adfad2be3b029e3b028e3af28e4b028e5b128e7b328 -e6b228e6b127e8b328e9b429ebb629ecb729eeb829f0b92af2bb29f3bc29f4bc29f6be29 -f6bf29f7bf29f8bf28f8bf27f8bf27f8bf27f8bf28f8bf28f8c029f8bf2bf8c02cf8c02d -f8c02ff8c032f8c135f8c239f8c33ef8c544f9c74cf9ca57f9cc65f9ce72fad27afad582 -fad88dfbdd97fce1a0fce3aafce6b2fce8bafdebbffdebc1fdebc1fdebc0fce9bbfce6b4 -fce4abfce1a2fbdc98fad98ef8d484f6ce7af2c970edc363e7bb54dfb247d4a93cc69c31 -b79028a7822296741c846617735813654e115a450e503d0c48370b46350a44330a43320a -43320a42310a4b3b1464532a644e13765a138d6c18a67f16a5853748402fb0b0b0f9f9f9 -ffffffffffffffffffffffffffffffffffffffffffffffffe8e8e88d8a85caa4428b784b -7f7d7af4f3f4 -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfdfefdfdfefdfdfefdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffefefefffffffefefdfefefdfefefdfffffefefefefdfdfcfdfdfc -fdfdfcfdfdfdfdfdfdfcfcfbfcfcfbfafafaf9f9f9f7f7f7f4f4f4efefefe9e9e8e5e4e3 -e2e1e1dedfdfdcdcdbdbdbdbdcdcdcdededee5e5e5ebebebf2f2f2f7f7f7fbfbfbfdfcfd -eeeeee9f9889a8862fbc9120bd9324c19625c59924c59924c49824c79a22ca9c22cb9c23 -c99b22c99b22cb9d23cea024d2a324d6a625daa926deab26e2ae27e5b128e8b328ebb529 -eeb829f2bb2af4bc2bf5be2bf7bf2bf8c02bf8c02bf8c02bf8c02bf8c02cf8c02df8c02e -f7c031f7c034f7c136f7c23af7c33ff8c548f9c851f9cb5df9ce6bfad075fad47efad787 -fbda92fbdf9dfce2a8fce5b1fde9bafdecc3fdedc8fdeecbfdeecbfdeec9fdecc4fdeabc -fce6b3fbe3a9fadd9df8d892f6d387f2cd7ceec771e7c065deb556d3ab47c89f3bb79130 -a6832796752085671b745a16664f125b4610523f0e4b390d47360b44330b44330b44330b -44330b44330b4d3e18615027614b107157138668179f7a15a483324b422fa4a3a3f7f7f7 -ffffffffffffffffffffffffffffffffffffffffffffffffe0e0e08c8881cea53d8a7648 -848380f5f4f5 -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefefffffffffffffefefefefefe -fefefefefefefefdfefdfdfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffefefefdfdfdfdfdfdfbfbfb -f8f8f8f5f6f6f3f4f4f2f2f2f2f2f2f2f2f2f5f5f5f8f8f8fafafafcfcfcfdfcfdfdfcfd -f5f4f5aaa8a383724c8a6e258e70219072238f71259173249475249473219a78229f7b22 -9d791e9b781a9f7a19a37e19a9821aaf871bb68c1ebc9120c29622c89a23cd9f24d3a324 -dba925e2af27e8b428edb729f1ba2af3bc2af5be2bf6be2bf7bf2bf8c02cf8c02df8c02f -f8c031f8c134f8c136f8c33af8c440f9c649f9c953f9cb5ff9ce6dfad077fad481fad88b -fbdc95fbe0a1fce4acfce7b7fdebc1fdeec8fdefcefdf0d2fdf1d2fdefcffdeecafdebc3 -fbe7b8fae3acf9dea1f7d995f3d188edca7ce8c370dfb964d4ad54c8a146b99438a7842c -96752486681d765c186850145c471152400f4b3a0d47370c46350b44330b44330b44330b -44330b44340c5344205b4a205d470e6e5413816416977316a883255f52337b7a78ededed -ffffffffffffffffffffffffffffffffffffffffffffffffc2c2c28b8270d7aa367c6c41 -9f9e9cf7f6f7 -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff -fffffffffffffffffffefefefefefefefdfdfefdfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fefdfefefefefefefefefefefefefefefefefefefefefdfdfefdfdfefdfdfefdfdfefdfd -fefdfdfefdfdfefdfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfdfd -fefdfdfefdfdfefdfdfefdfdfefdfefefefeffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffefefefefefefdfdfdfdfdfdfdfdfdfefefefefefefefefefefefefefdfefdfcfd -fdfcfde0dfe09f9e9c7c786d746b596f654e6f654d71674f72685072685074684e6e5f3f -61512b6150236552206b551c745b1c7c611a86681a8e6e179471179a7618a27d1bac851e -b78d1fc39722cfa024d9a825e1af27e8b328edb729f0ba29f3bc2bf5bf2df7bf2df7c02e -f8c031f8c134f8c236f8c33af8c441f9c649f9c953f9cc60f9ce6efad078fad481fad98c -fbdd97fbe1a3fce4affce9b9fdecc4fdeeccfdf1d2fdf2d6fdf2d6fdf1d3fdefcdfcecc5 -fbe8baf9e3aef7dda3f4d795eece87e8c57ae0bc6dd5b161c9a450b99541a98833977728 -856820765c1a6951155d481254410f4d3b0d48380c46360b45340b44330b44330b44330b -44330b4738125849265542145b460e6a51127b5f158e6d17a37d1886703a4c4941c1c0c0 -fcfcfcffffffffffffffffffffffffffffffffffffededed989795a58d54d8af48685d43 -cdcdcdfbfafb -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffefefffefefefefefefdfefdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fefdfefffffffffffffffffffffffffffffffffffffffefefffefefffefefffefefffefe -fffefefffefefffefefefefefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfe -fefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfe -fefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefefefffefe -fffefefffefefffefefffefeffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefdfcfd -fdfcfdfdfcfdf6f5f6dbdadbc2c1c2b6b5b5b5b5b4b7b7b6b7b7b6b9b9b8b5b4b3a09e9d -8b8a8888878383817c7d7a737872666f6654685b3e58471d65511c6f571a765b147e6114 -88691796741aa6801db58b1fc29622ce9f24d8a725e0ad27e7b329edb82bf1bb2df4bd2d -f6bf31f7c133f8c236f8c33bf8c442f9c649f9c954f9cc60f9ce6ffad178fad581fad98c -fbdd98fbe1a4fce5b0fce9bbfdedc4fdefccfdf1d4fef3d7fef3d7fdf2d4fceecefbecc5 -fae7baf7e1aef4dba1efd393e9ca84e0c076d6b368c9a75cbb994ca9883a997a2f866a24 -765d1c6952165f4a135643114e3c0e49380d47360c46360b45340b44330b44330b44330b -43330b51422056461f4f3c0c5a450f664e11755a148466169572159f7e295c4f325d5c59 -c8c8c8fcfcfcfffffffffffffffffffefefeeaeaeaa3a3a2857a62d3a93da98e4a7b776f -e8e8e8fdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefefdfefdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fefdfeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfcfbfc -faf9faf6f5f6eeeeeee4e3e4d4d4d4c3c2c3b0aead8785816e6a5f584f3b4a3c1b594718 -634d126c5210785d1387681795731aa47f1cb38a1fc19521cea024dbaa27e3b02aeab62c -f0bb2ff3be33f6c035f7c23bf7c441f9c649f9c953f9cb60f9ce6efad178fad481fad98c -fbdd97fbe1a4fce5affce9bafdecc3fdeecbfdf1d2fdf2d5fdf2d5fcf0d2fbedcbfae9c3 -f8e5b8f5deabf0d79eeace8fe2c480d7b871caa962bb9b55ab8b45997b35886d29775e20 -6953195f4a145743124f3d104a390d47370c47360c46360b45340b44330b44330b443309 -4d3d1b5546234c3b0f4e3c0c59450f624c116e55137a5e1587681696731591752c594e33 -5b5a58a4a4a4cececee1e1e1ddddddbfbfbf92918f7d735dbb9740caa44373684ebcbbba -f8f7f8fdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefdfe -fefdfefefdfefefdfefdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fefdfeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfaf9faecebeccfcfcfb1b0af83817d5d584c -463c254b3c17594511614a0d6a5211765b14846616937119a6811db88f21c89b24d6a628 -e1af2de9b631efbb34f3bf39f5c240f7c548f9c852f9cb5ef9ce6dfad077fad480fad88a -fbdc95fbe0a1fce4abfce7b7fceac0fcecc7fcefcdfcf0d0fcefcffbedcdfaebc7f8e7bd -f5e2b3f0daa5ebd198e2c688d8bb79cbad6abd9e5bac8f4d9a7e3c896e2f7a61246a541b -604b17584413503e104b3a0f47370d47360c47360c46360b45340b44330b43320a493915 -5647274c3c1348360a4f3d0d57430e5e4910664e116f5513785d14836515906e16917427 -6c5a32655d4d726f697d7b78827f7a7f7867957f4bc59f3ec29d4083744fa09e9beeedee -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffefdfefefdfefefdfefefdfefefdfefdfdfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fefdfeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdf9f8f9e7e6e7c8c7c7 -9897955e5b52423926483915503d0c55410c5e4810695112795d158b6b19a07b1db48c21 -c69a26d5a62ce1b031eab836f0bd3ef4c246f7c650f8c95cf9cd6bf9cf75fad37efad787 -fbda92fbde9cfce2a7fce5b1fbe8b9fceac0fcecc5fbecc8faebc7faebc5f8e6bef5e2b6 -f1dcaaebd39de3c98ed8bd7fcbb06fbda160ad91529b80448a71357a62296d5720614c18 -5946155240114c3b1049380e47360c47360c46360b45350b44330b43320a493916504122 -4a3a1446350a48370a4e3b0b54400b59440b5e470b634b0c6a510d72580e7d5f0f8a690e -94721c9474219275278e7949a3863ebb9531c49f43ad924f7f7459a2a09deae9e9fcfbfc -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffefefefdfefefdfefefdfe -fefdfefdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fefdfeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefe -fdfdfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfbfafb -efeeefd3d2d2969594514d4340371f49390e4a380a4e3c0d58430f654e12755a15896a19 -9f7b1eb48c25c69b2ad6a830e1b239eaba42f0c04bf4c657f7ca66f8cd71f9d179fad583 -fad98dfbdc96fbdfa0fbe2a8fbe4b0fae7b8fbe8bcfae8bef9e7bdf7e5baf3e0b3f0dbab -e9d39fe2c992d7bd83cbb074bda164ad92569d83498b733b7c642e6e5823634e1c5a4716 -5441134e3d114a390f47370d47360c47360c46360b45340b42330b4b3c1a534424483811 -4534074a390a4b3a0d4d3c124e3f1850401e50411f4a3d1e493d1e4f43235648275f502a -68582e725f3279663676684782704589764782765a8f8b82c2c1c0edecedfcfbfcfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffefffffefffffefffefdfefdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fefdfeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fdfdfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfcfbfcf0eff0cccbcb73716d37322647381547360847350b4d3b0e56430f634d12 -755b16896b1c9f7c22b48d28c69b31d5a93ae1b343e9bc4feec25df2c96bf6cc74f7d17d -f8d586f9d88ff9db98f9dea0f9e0a7f9e2adf8e2b0f6e0b1f3deb0f1dcadecd6a4e6cf9b -dec690d4bc83c8ae74baa166ab92579b824a8b733e7c65326f592764501f5c4919564315 -513f114d3c1149380e47370d47360c47360c47360a48360b4b3c1a544523504017493b1c -3f361d322b1b302a1e3c372d5b574e66635d7977728d8c889795929b99969f9d9aa19f9c -a1a09ca2a09ca19f9a9f9d99a6a4a0c2c1bed8d7d7e9e8e9f8f7f8fdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefefefefefefe -fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe -fffefeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fdfdfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfafafaedecec9c9b9b45423b41372048370a47350949380c4e3c0e -594510664f14775d198b6d1ea07d25b48e2ec59d39d2a944dcb351e4bd5fe9c26bedc773 -f0cb7bf1d084f2d38cf3d593f2d799f2d99ff1d9a1eed6a1ebd4a0e7cf9be1c993d7c089 -ceb67ec2aa71b69d64a78f5799804b89723f7c6635705b2b6651215e4a1b584617534113 -4e3d114c3b1049380e47370d47360c4736094536104137224a422e3c352529251d5a5852 -80807da8a7a6c7c7c7dadadae8e7e7edecedf0efeff2f2f2f4f3f4f4f3f4f5f4f5f5f4f5 -f5f4f5f5f4f5f4f3f4f4f3f4f5f4f5f9f8f9fcfbfcfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fdfdfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfefdfefefefefaf9fad4d4d45554532f2a204b3b1747350847370b -49390d513f0f5b4713675016765c1b886b219a7a2aab8a34ba9640c6a14dd0ac5bd6b363 -dcb96ce0be74e2c37ce4c582e4c687e3c78be1c88ddec68ddac18ad4bd85cbb37dc2aa74 -b89f69ab945e9e8753917a48846e3e7964356e592b6551235e4b1d594619554315513f12 -4d3c114a390f48370d47360b47370b413417221e151414135554539e9e9dd8d8d8f4f3f4 -f9f8f9faf9fafcfbfcfcfbfcfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fdfdfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfefdfeffffffffffffffffffffffffffffff919191484541453c2449380e -47360b48370c4d3b0f5341115b4714665018735a1d8066258f722d9c7e37a78942b0924e -b89956bfa05dc4a765c7ac6ac9af6fcaaf73c8ae74c4ab73bfa770b9a16cb09863a8905d -9c8654927c4b8872437e683b7460346c592c665225604c1f5a481a5643165341134f3e11 -4c3b0f4a390d47360c443613342d20333231767676cfcfcff7f7f7fdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefdfefffefffffefffffefffffeff -fffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffeff -fffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffeff -fffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffeff -fffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffeff -fffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffeff -fffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffeff -fffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffeff -fffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffeff -fffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffeff -fffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffeff -fffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffeff -fffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffeff -fffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffeff -fffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffeff -fffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffeff -fffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffeff -fffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffeff -fffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffeff -fffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffefefe -fdfdfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfdfdfefefefffefefffefffffefffffefffffefffffefffbfafbcfcecf6a6a683e3930 -473b1e47370e49380d4b3a0e4e3d105542125c4816624e1a6c551f765f267e672d876f36 -90763f967d469d844ca28a51a58c55a58d57a68e59a48d58a08a579a8453937e4e8e7849 -8670437f6a3e776337705d316a572b645224604d205b481b574417544114513f114e3c10 -4a390e4335113a322134332f656464cac9caf9f8f9fdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdefeeefa7a6a6 -5e5d5a484236473a1d4838114d3b0f4f3d0f5340125643145b4718614d1d6652216b5727 -715c2d7761337d6738826c3c856f40887142897244887244867143836e417f6b3e7b673b -776338725f346d5a2f68552a645124604d1f5c491b5845175643145341134c3b11413413 -3b33243e3c39636262b8b7b8f4f3f4fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfbfafb -e1e1e29e9e9e62615f4b463a453a204839144f3e145442135643145845165c491a5f4c1e -624f226753276b592c6f5c2f725e32746035766136766237766137756136725f34705d31 -6d5a2f6a572b665326635021604d1d5d4a1a594619534218493b163d3219413b2f474745 -706f6fbababaf2f1f2fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfaf9fadddcdda8a7a77674735a564e4b433243371c493b1954441b58471b5b481a -5e4b1b604d1e614f2264512567542869562a6a572c6b582d6c582d6b582d6a572b685528 -675325655123614e225d4b2255451f483b1b3e341c47403253514b636261929192cdcccd -f6f5f6fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfcfbfcecebecc4c4c49b9b9a767574615e59554f413e3622453a20 -4c3f205a4b2665532a64522a64522966542a68562b68562c67552c65532d63522b635129 -544627493d22433923463e2e56524861605c727271989898c2c2c2eae9eafbfafbfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdf9f9fae7e7e7cdcccdb3b3b3919090848381 -6765615b523f8c753e8a7135796536715e346a593165542f5f502c5a4a28594821534932 -4947417978758a8a899d9c9cbab9b9d2d1d2eaeaeafaf9fafdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfcfbfcf6f5f6eaeaea -cdcdcd8e8a837a6b4a977f46987e4687703f7662376655305d4e2a56482b443a23444039 -aaaaaae3e2e3f1f0f1f9f8f9fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -faf9fad8d7d785827c8e7843c59e3aab882f876b2767521f554316453b27474542b5b5b4 -f4f3f4fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdf6f6f7b0ada99c813cd3a224af861d8164165e48104a3808362e1b777777f8f7f8 -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdf2f1f2aeaba3a7893ad2a120a7811c795e1458430f4635083b311b737271fcfbfc -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdeaeaeaaaa598b3913ad2a11fa6801d775c1455410e463408463819353432f6f5f6 -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfddededea59b85c7a03ad4a31ea8821d795d1456430e46350a473711242220e3e3e3 -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdd4d3d2a39470d8ac39d6a41fad861e7d611659440f48360b4735092d2a22bcbcbc -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -faf9facdcbc7af985ce8b52ddba823b58c1f8667175f491049380c4635073730218c8b8b -fcfbfcfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -f0eff0b6b1a5b79741f1b923dfac26bf9321927019674f114c3b0d44330842351b5d5b59 -f4f3f4fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -e2e1e1a99e83d7ac3ef2ba22e4b027c99b239e7a1b715613523f0e45340b44350c36332e -cecdcefdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdf9f8f9 -cbcac6a4905af0ba2ef4bb26e8b328d1a124aa831e7b5f1559440f48360b4434083d3626 -8a8a89faf9fafdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdedeced -aba596bf9d46f7be22f5bd2aecb629d8a725b58b1f876817614b104a380c443309423415 -53504ddddcddfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfaf9fad8d6d4 -ad9d73ebb833f7be25f6be2befb829ddab27be93219270196850124d3b0d44330a42330a -40392d999897faf9fafdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdf0efefa8a293 -cfac55f8be22f8bf2af6be2bf1ba2ae2af27c599229b781b70561354400e46350b44330a -413414575450cecdcefdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdf9f8f9b9b7b4a5905b -f0ba2af8bf27f8c02bf6be2bf1bb2ae5b127cc9d23a47f1c785c1559450f47370c44330b -44330a443b2383827feae9eafdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdd5d5d4b0a485e8b632 -f8be23f8c02bf8c02bf7bf2bf3bc2ae9b428d2a224ad851d8164175f491049380c45340b -44330a44350f504839a3a1a0f5f5f6fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfddbdbdbaca490e5b63ef8bd21 -f8c02bf8c02bf8c02bf7bf2bf4bd2aebb629d8a625b68c1f8a6a17644d104c3a0d46350b -44330b44340a433511524c3fabaaa8f6f5f6fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfcfbfcf9f7f8c1c0beb3a992ecba37f8bd20f8c02b -f8c02bf8c02bf8c02bf7bf2bf5be2aeeb829dcaa26bd93219472196b5212503e0d46350b -44330b46350b4635094435105048379a9894e6e6e6fbfafbfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfbfafbf8f8f8f6f5f5f2f1f0d8d5d1b0a897b59c61f0ba2af8bd21f8c02bf8c02b -f8c02bf8c02bf7bf2bf6be2bf4bd2aedb729deac27c498229d791b73591456420f47360b -44330b45340b46350b46350a44340c493d2369655ab4b2b0e6e5e5f3f2f2f8f7f8fbfafb -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfcfbfc -f4f3f4dfdcd8cec9bdc2baa6bbae8abaa061deb23ff5bc21f8bf25f8c02bf8c02bf8c02b -f8c02bf8c02bf7bf2bf5bd2bf2bb2aeab528dcaa26c59822a37e1c7c60155e48104c3b0d -46350b44330b46350b46350b45340a453409423311382f1a615a4a908b83b3b1adc6c5c3 -e7e6e6fcfbfcfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdf4f3f4 -c9c5bcad996ac5a04bdbae43efb92df7bc1df8bd1ff8bf26f8bf27f8bf26f8bf26f8bf26 -f8bf26f7be26f6bd26f3ba25ecb624e2ae23d3a221bd921da17c19816314644c0f513e0c -47360a45340a45340a46350a46350a46350a46350946350743330a4032123c3115372f1b -76736febeaebfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdf1f0f1ecebececebec -ecebececebececebececebececebececebececebececebececebececebececebececebec -ecebececebececebececebececebececebececebececebececebececebececebececebec -ecebececebececebececebececebececebececebececebececebececebececebececebec -ecebececebececebececebececebececebececebececebececebececebececebececebec -ecebececebececebececebececebececebececebececebececebececebececebececebec -ecebececebececebececebececebececebececebececebececebececebececebececebec -ecebececebececebececebececebececebececebececebececebececebececebececebec -ecebececebececebececebececebececebececebececebececebececebececebececebec -ecebececebececebececebececebececebececebececebececebececebececebececebec -ecebececebececebececebececebececebececebececebececebececebececebececebec -ecebececebececebececebececebececebececebececebececebececebececebececebec -ecebececebececebececebececebececebececebececebececebececebececebececebec -ecebececebececebececebececebececebececebececebececebececebececebececebec -ecebececebececebececebececebececebececebececebececebececebececebececebec -ecebececebececebececebececebececebececebececebececebececebececebececebec -ecebececebececebececebececebececebececebececebececebececebececebececebec -ecebececebececebececebececebececebececebececebececebececebececebececebec -ecebececebececebececebececebececebececebececebececebececebececebececebec -ecebececebececebececebececebececebececebececebececebececebececebececebec -ecebececebececebececebececebececebececebececebececebececebececebececebec -ecebececebececebececebececebececebececebececebececebececebececebececebec -ecebececececedededeeedeeeeeeeeefeeeff0eff0f1f0f1f2f1f2f3f3f3f5f4f5d6d6d6 -968d79c29d48deac2eddad2edeae2fdeae31deae32deae32deae32deaf32deaf32deaf32 -deae32ddae32dcac31d6a730cba02dbd942aad87259b792186691d71581a5a46144b3b10 -41330e3f310e3f310e3f310e3f310e3f310e3f310e3f310e3f320d3f310c3e300c41320d -33302aacacacf5f4f5f4f3f4f2f2f2f1f0f1f0eff0efeeefeeeeeeeeedeeedecedececec -ececececebececebececebececebececebececebececebececebececebececebececebec -ecebececebececebececebececebececebececebececebececebececebecf8f7f8fdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd9e9d9e787878787878 -787878787878787878787878787878787878787878787878787878787878787878787878 -787878787878787878787878787878787878787878787878787878787878787878787878 -787878787878787878787878787878787878787878787878787878787878787878787878 -787878787878787878787878787878787878787878787878787878787878787878787878 -787878787878787878787878787878787878787878787878787878787878787878787878 -787878787878787878787878787878787878787878787878787878787878787878787878 -787878787878787878787878787878787878787878787878787878787878787878787878 -787878787878787878787878787878787878787878787878787878787878787878787878 -787878787878787878787878787878787878787878787878787878787878787878787878 -787878787878787878787878787878787878787878787878787878787878787878787878 -787878787878787878787878787878787878787878787878787878787878787878787878 -787878787878787878787878787878787878787878787878787878787878787878787878 -787878787878787878787878787878787878787878787878787878787878787878787878 -787878787878787878787878787878787878787878787878787878787878787878787878 -787878787878787878787878787878787878787878787878787878787878787878787878 -787878787878787878787878787878787878787878787878787878787878787878787878 -787878787878787878787878787878787878787878787878787878787878787878787878 -787878787878787878787878787878787878787878787878787878787878787878787878 -787878787878787878787878787878787878787878787878787878787878787878787878 -787878787878787878787878787878787878787878787878787878787878787878787878 -787878787878787878787878787878787878787878787878787878787878787878787878 -7878787979797a7a7a7b7b7b7c7c7c7d7d7d7f7f7f8080808282828585858787876f6f6f -413e385a4e36675837655737655737655737655737655737655737655837655837655837 -6557376456366154355d5133574c3050452c483e274038233a321f332c1c282316211d12 -1d19101c180f1c180f1c180f1c180f1c180f1c180f1c180f1c180f1c180f1c180f1d190f -171613504f4f8787878686868383838181817f7f7f7d7d7d7c7c7c7b7b7b797979787878 -787878787878787878787878787878787878787878787878787878787878787878787878 -787878787878787878787878787878787878787878787878787878777777cfcfcffbfafb -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd8b8a8b5d5d5d5d5d5d -5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d -5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d -5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d -5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d -5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d -5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d -5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d -5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d -5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d -5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d -5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d -5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d -5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d -5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d -5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d -5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d -5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d -5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d -5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d -5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d -5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d -5e5e5e5e5e5e6060606060605e5e5e5d5d5d5d5d5d5d5d5d5c5c5c5c5c5c5c5c5c5d5d5d -5d5d5d5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5b5b5b5b5b5b5c5c5c -5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5d5d5d5d5d5d -5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d -5d5d5d5d5d5d5c5c5c5c5c5c5c5c5c5c5c5c5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d -5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d -5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5b5b5bc5c5c5faf9fa -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdeaeaeae3e2e3e3e2e3 -e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3 -e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3 -e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3 -e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3 -e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3 -e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3 -e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3 -e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3 -e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3 -e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3 -e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3 -e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3 -e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3 -e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3 -e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3 -e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3 -e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3 -e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3 -e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3 -e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3 -e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3 -e3e2e3e4e3e4e5e4e5e5e4e5e3e3e3e3e2e3e3e2e3e2e1e2e2e1e2e2e1e2e2e1e2e2e2e2 -e2e2e2e2e1e2e1e1e1e2e1e2e1e1e1e2e1e2e2e1e2e2e1e2e2e1e2e1e0e1e1e0e1e1e1e1 -e2e1e2e2e1e2e2e1e2e2e1e2e2e1e2e2e1e2e2e1e2e2e1e2e2e1e2e2e1e2e2e1e2e3e2e3 -e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3 -e3e2e3e3e2e3e2e1e2e2e1e2e2e1e2e2e1e2e2e2e2e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3 -e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3 -e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e2e2e2e1e0e1f4f3f4fdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd -fdfcfdfdfcfd - -showpage - -% stop using temporary dictionary -end - -% restore original state -origstate restore - -%%Trailer diff --git a/doc/DevelopersGuide/bldtree.eps b/doc/DevelopersGuide/bldtree.eps deleted file mode 100644 index ddb71588d..000000000 --- a/doc/DevelopersGuide/bldtree.eps +++ /dev/null @@ -1,366 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: bldtree.eps -%%Creator: fig2dev Version 3.2 Patchlevel 3c -%%CreationDate: Thu Jul 26 11:57:29 2001 -%%For: tajchman@nikyo (Marc Tajchman - SFME/LGLS) -%%BoundingBox: 0 0 437 287 -%%Magnification: 1.0000 -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def - -end -save -newpath 0 287 moveto 0 0 lineto 437 0 lineto 437 287 lineto closepath clip newpath --46.0 335.0 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def - -$F2psBegin -%%Page: 1 1 -10 setmiterlimit - 0.06000 0.06000 sc -% -% Fig objects follow -% -% Polyline -15.000 slw -n 2475 2025 m 3450 2025 l 3450 2475 l 2475 2475 l - cp gs col0 s gr -/Times-Roman ff 180.00 scf sf -2625 2325 m -gs 1 -1 sc (Module 1) col0 sh gr -% Polyline -n 3000 3900 m 3900 3900 l 3900 4350 l 3000 4350 l - cp gs col0 s gr -/Times-Roman ff 180.00 scf sf -3150 4200 m -gs 1 -1 sc (src) col0 sh gr -% Polyline -n 1725 3900 m 2700 3900 l 2700 4350 l 1725 4350 l - cp gs col0 s gr -/Times-Roman ff 180.00 scf sf -1800 4200 m -gs 1 -1 sc (resources) col0 sh gr -% Polyline -n 1275 2025 m 2250 2025 l 2250 2475 l 1275 2475 l - cp gs col0 s gr -/Times-Roman ff 180.00 scf sf -1575 2325 m -gs 1 -1 sc (inc) col0 sh gr -% Polyline -n 1080 2775 m 900 2775 900 3270 180 arcto 4 {pop} repeat - 900 3450 1995 3450 180 arcto 4 {pop} repeat - 2175 3450 2175 2955 180 arcto 4 {pop} repeat - 2175 2775 1080 2775 180 arcto 4 {pop} repeat - cp gs col6 1.00 shd ef gr gs col0 s gr -/Times-Bold ff 180.00 scf sf -1050 3075 m -gs 1 -1 sc (Exported) col0 sh gr -/Times-Bold ff 180.00 scf sf -1050 3300 m -gs 1 -1 sc (header files) col0 sh gr -% Polyline -n 5040 4725 m 4800 4725 4800 5310 240 arcto 4 {pop} repeat - 4800 5550 5910 5550 240 arcto 4 {pop} repeat - 6150 5550 6150 4965 240 arcto 4 {pop} repeat - 6150 4725 5040 4725 240 arcto 4 {pop} repeat - cp gs col6 1.00 shd ef gr gs col0 s gr -/Times-Bold ff 180.00 scf sf -5025 4950 m -gs 1 -1 sc (Object files) col0 sh gr -/Times-Bold ff 180.00 scf sf -5025 5175 m -gs 1 -1 sc (libraries) col0 sh gr -/Times-Bold ff 180.00 scf sf -5025 5400 m -gs 1 -1 sc (executables) col0 sh gr -% Polyline -n 4125 2025 m 5175 2025 l 5175 2475 l 4125 2475 l - cp gs col0 s gr -/Times-Roman ff 180.00 scf sf -4275 2325 m -gs 1 -1 sc (resources) col0 sh gr -% Polyline -n 5325 2025 m 6375 2025 l 6375 2475 l 5325 2475 l - cp gs col0 s gr -/Times-Roman ff 180.00 scf sf -5550 2325 m -gs 1 -1 sc (bin) col0 sh gr -% Polyline -n 6525 2025 m 7575 2025 l 7575 2475 l 6525 2475 l - cp gs col0 s gr -/Times-Roman ff 180.00 scf sf -6750 2325 m -gs 1 -1 sc (lib) col0 sh gr -% Polyline -n 6330 975 m 6150 975 6150 1170 180 arcto 4 {pop} repeat - 6150 1350 7695 1350 180 arcto 4 {pop} repeat - 7875 1350 7875 1155 180 arcto 4 {pop} repeat - 7875 975 6330 975 180 arcto 4 {pop} repeat - cp gs col2 1.00 shd ef gr gs col0 s gr -/Times-Bold ff 180.00 scf sf -6375 1200 m -gs 1 -1 sc (Links to libraries) col0 sh gr -% Polyline -n 3705 2850 m 3525 2850 3525 3345 180 arcto 4 {pop} repeat - 3525 3525 5670 3525 180 arcto 4 {pop} repeat - 5850 3525 5850 3030 180 arcto 4 {pop} repeat - 5850 2850 3705 2850 180 arcto 4 {pop} repeat - cp gs col2 1.00 shd ef gr gs col0 s gr -/Times-Bold ff 180.00 scf sf -3675 3150 m -gs 1 -1 sc (Link to corresponding) col0 sh gr -/Times-Bold ff 180.00 scf sf -3675 3375 m -gs 1 -1 sc (directories in source tree) col0 sh gr -% Polyline -n 6255 2850 m 6075 2850 6075 3345 180 arcto 4 {pop} repeat - 6075 3525 7845 3525 180 arcto 4 {pop} repeat - 8025 3525 8025 3030 180 arcto 4 {pop} repeat - 8025 2850 6255 2850 180 arcto 4 {pop} repeat - cp gs col2 1.00 shd ef gr gs col0 s gr -/Times-Bold ff 180.00 scf sf -6225 3150 m -gs 1 -1 sc (Shell scripts) col0 sh gr -/Times-Bold ff 180.00 scf sf -6225 3375 m -gs 1 -1 sc (Links to executables) col0 sh gr -% Polyline -n 2700 5100 m 3675 5100 l 3675 5550 l 2700 5550 l - cp gs col0 s gr -/Times-Roman ff 180.00 scf sf -2775 5400 m -gs 1 -1 sc (Unit 1) col0 sh gr -% Polyline -n 3675 825 m 5325 825 l 5325 1425 l 3675 1425 l - cp gs col0 s gr -% Polyline -n 4725 1425 m - 4875 2025 l gs col0 s gr -% Polyline -n 3975 1425 m - 1800 2025 l gs col0 s gr -% Polyline -n 5100 1425 m - 7050 2025 l gs col0 s gr -% Polyline -n 3000 2025 m - 4200 1425 l gs col0 s gr -% Polyline - [60] 0 sd -n 3675 4350 m - 4425 5025 l gs col0 s gr [] 0 sd -% Polyline - [60] 0 sd -n 3450 4350 m - 3900 5025 l gs col0 s gr [] 0 sd -% Polyline - [60] 0 sd -n 4350 1425 m - 3675 2025 l gs col0 s gr [] 0 sd -% Polyline - [60] 0 sd -n 4500 1425 m - 3975 2025 l gs col0 s gr [] 0 sd -% Polyline -n 5100 1425 m - 5625 2025 l gs col0 s gr -% Polyline -n 3300 4350 m - 3150 5100 l gs col0 s gr -% Polyline -n 2700 2475 m - 2400 3900 l gs col0 s gr -% Polyline -n 3075 2475 m - 3375 3900 l gs col0 s gr -% Polyline -2 slj -gs clippath -1287 2295 m 1292 2205 l 1143 2198 l 1254 2249 l 1139 2288 l cp -eoclip -n 900 3225 m 899 3223 l 898 3220 l 896 3213 l 893 3202 l 888 3188 l - 882 3169 l 875 3146 l 868 3120 l 859 3091 l 850 3058 l - 841 3024 l 832 2988 l 823 2951 l 815 2914 l 808 2875 l - 801 2836 l 796 2797 l 792 2758 l 790 2718 l 790 2677 l - 792 2637 l 796 2595 l 802 2554 l 812 2514 l 825 2475 l - 842 2436 l 862 2402 l 884 2373 l 907 2348 l 931 2327 l - 956 2309 l 981 2295 l 1007 2283 l 1034 2274 l 1060 2267 l - 1087 2261 l 1113 2257 l 1139 2254 l 1164 2252 l 1187 2250 l - 1209 2250 l 1227 2249 l 1243 2249 l 1255 2249 l - 1275 2250 l gs col0 s gr gr - -% arrowhead -0 slj -n 1139 2288 m 1254 2249 l 1143 2198 l 1164 2244 l 1139 2288 l - cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -7160 2051 m 7247 2027 l 7207 1884 l 7194 2005 l 7120 1908 l cp -eoclip -n 7125 1350 m 7125 1352 l 7124 1356 l 7123 1362 l 7122 1372 l 7121 1385 l - 7119 1400 l 7118 1418 l 7117 1437 l 7116 1459 l 7115 1482 l - 7115 1509 l 7116 1538 l 7118 1571 l 7121 1609 l 7125 1650 l - 7130 1688 l 7135 1724 l 7140 1758 l 7146 1790 l 7151 1820 l - 7157 1848 l 7163 1875 l 7169 1900 l 7174 1924 l 7180 1947 l - 7185 1967 l 7189 1985 l 7193 2000 l - 7200 2025 l gs col0 s gr gr - -% arrowhead -0 slj -n 7120 1908 m 7194 2005 l 7207 1884 l 7169 1918 l 7120 1908 l - cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -2055 3883 m 2125 3939 l 2218 3824 l 2113 3884 l 2148 3768 l cp -eoclip -n 3525 3150 m 3524 3150 l 3522 3149 l 3517 3147 l 3510 3145 l 3501 3142 l - 3489 3139 l 3474 3135 l 3456 3130 l 3436 3126 l 3413 3121 l - 3389 3116 l 3363 3112 l 3336 3109 l 3307 3107 l 3276 3106 l - 3244 3106 l 3211 3109 l 3175 3113 l 3137 3119 l 3096 3128 l - 3053 3140 l 3006 3156 l 2957 3175 l 2904 3198 l 2850 3225 l - 2803 3251 l 2756 3279 l 2710 3308 l 2667 3338 l 2625 3369 l - 2586 3399 l 2548 3430 l 2512 3461 l 2477 3491 l 2444 3522 l - 2412 3553 l 2381 3584 l 2351 3615 l 2322 3645 l 2295 3675 l - 2268 3704 l 2243 3733 l 2219 3760 l 2197 3785 l 2177 3808 l - 2159 3829 l 2143 3848 l 2130 3863 l 2120 3876 l 2112 3885 l - - 2100 3900 l gs col0 s gr gr - -% arrowhead -0 slj -n 2148 3768 m 2113 3884 l 2218 3824 l 2169 3813 l 2148 3768 l - cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -4154 2287 m 4124 2202 l 3983 2251 l 4105 2257 l 4013 2336 l cp -eoclip -n 3525 3150 m 3524 3149 l 3523 3146 l 3521 3141 l 3517 3133 l 3512 3122 l - 3506 3109 l 3499 3092 l 3492 3073 l 3484 3052 l 3476 3029 l - 3469 3005 l 3462 2979 l 3456 2952 l 3451 2925 l 3449 2897 l - 3447 2867 l 3449 2837 l 3452 2805 l 3459 2772 l 3469 2737 l - 3484 2700 l 3502 2663 l 3525 2625 l 3550 2591 l 3577 2559 l - 3606 2529 l 3635 2501 l 3666 2475 l 3697 2452 l 3728 2431 l - 3760 2411 l 3791 2392 l 3823 2375 l 3855 2359 l 3887 2344 l - 3919 2330 l 3950 2317 l 3979 2304 l 4007 2293 l 4033 2283 l - 4056 2275 l 4076 2267 l 4092 2261 l 4105 2257 l - 4125 2250 l gs col0 s gr gr - -% arrowhead -0 slj -n 4013 2336 m 4105 2257 l 3983 2251 l 4020 2286 l 4013 2336 l - cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -3657 5355 m 3662 5445 l 3810 5437 l 3696 5399 l 3805 5347 l cp -eoclip -n 4800 5175 m 4799 5176 l 4796 5177 l 4791 5180 l 4784 5184 l 4774 5189 l - 4761 5195 l 4746 5203 l 4728 5211 l 4709 5220 l 4687 5229 l - 4663 5238 l 4637 5248 l 4608 5258 l 4576 5269 l 4541 5279 l - 4500 5290 l 4455 5302 l 4405 5313 l 4350 5325 l 4306 5333 l - 4263 5341 l 4220 5348 l 4179 5355 l 4139 5360 l 4101 5365 l - 4064 5370 l 4028 5374 l 3993 5377 l 3960 5380 l 3927 5383 l - 3896 5386 l 3865 5388 l 3835 5390 l 3808 5392 l 3782 5394 l - 3758 5395 l 3737 5397 l 3719 5398 l 3704 5398 l 3693 5399 l - - 3675 5400 l gs col0 s gr gr - -% arrowhead -0 slj -n 3805 5347 m 3696 5399 l 3810 5437 l 3785 5394 l 3805 5347 l - cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -5786 2428 m 5738 2505 l 5864 2584 l 5793 2486 l 5912 2508 l cp -eoclip -n 6450 2850 m 6449 2849 l 6446 2848 l 6441 2846 l 6434 2843 l 6424 2839 l - 6412 2833 l 6398 2827 l 6382 2820 l 6365 2811 l 6346 2803 l - 6326 2793 l 6303 2782 l 6279 2769 l 6251 2755 l 6221 2739 l - 6187 2720 l 6150 2700 l 6116 2681 l 6083 2662 l 6052 2644 l - 6022 2627 l 5995 2611 l 5969 2595 l 5944 2580 l 5920 2566 l - 5897 2552 l 5876 2538 l 5855 2526 l 5837 2514 l 5820 2503 l - 5806 2494 l 5794 2487 l - 5775 2475 l gs col0 s gr gr - -% arrowhead -0 slj -n 5912 2508 m 5793 2486 l 5864 2584 l 5869 2534 l 5912 2508 l - cp gs 0.00 setgray ef gr col0 s -/Times-Roman ff 180.00 scf sf -3825 1200 m -gs 1 -1 sc (Root Build Tree) col0 sh gr -$F2psEnd -rs diff --git a/doc/DevelopersGuide/bldtree.fig b/doc/DevelopersGuide/bldtree.fig deleted file mode 100644 index 6f2682898..000000000 --- a/doc/DevelopersGuide/bldtree.fig +++ /dev/null @@ -1,130 +0,0 @@ -#FIG 3.2 -Portrait -Center -Inches -Letter -100.00 -Single --2 -1200 2 -6 2475 2025 3450 2475 -2 2 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 5 - 2475 2025 3450 2025 3450 2475 2475 2475 2475 2025 -4 0 0 50 0 1 12 0.0000 0 135 705 2625 2325 Module 1\001 --6 -6 3000 3900 3900 4350 -2 2 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 5 - 3000 3900 3900 3900 3900 4350 3000 4350 3000 3900 -4 0 0 50 0 1 12 0.0000 0 90 240 3150 4200 src\001 --6 -6 1725 3900 2700 4350 -2 2 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 5 - 1725 3900 2700 3900 2700 4350 1725 4350 1725 3900 -4 0 0 50 0 1 12 0.0000 0 90 750 1800 4200 resources\001 --6 -6 1275 2025 2250 2475 -2 2 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 5 - 1275 2025 2250 2025 2250 2475 1275 2475 1275 2025 -4 0 0 50 0 1 12 0.0000 0 135 225 1575 2325 inc\001 --6 -6 825 2700 2250 3525 -2 4 0 2 0 6 50 0 20 0.000 0 0 12 0 0 5 - 2175 3450 900 3450 900 2775 2175 2775 2175 3450 -4 0 0 50 0 2 12 0.0000 0 180 735 1050 3075 Exported\001 -4 0 0 50 0 2 12 0.0000 0 135 960 1050 3300 header files\001 --6 -6 4725 4650 6225 5625 -2 4 0 2 0 6 50 0 20 0.000 0 0 16 0 0 5 - 6150 5550 4800 5550 4800 4725 6150 4725 6150 5550 -4 0 0 50 0 2 12 0.0000 4 180 915 5025 4950 Object files\001 -4 0 0 50 0 2 12 0.0000 4 135 675 5025 5175 libraries\001 -4 0 0 50 0 2 12 0.0000 0 135 975 5025 5400 executables\001 --6 -6 4125 2025 5175 2475 -2 2 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 5 - 4125 2025 5175 2025 5175 2475 4125 2475 4125 2025 -4 0 0 50 0 0 12 0.0000 4 90 750 4275 2325 resources\001 --6 -6 5325 2025 6375 2475 -2 2 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 5 - 5325 2025 6375 2025 6375 2475 5325 2475 5325 2025 -4 0 0 50 0 0 12 0.0000 4 135 225 5550 2325 bin\001 --6 -6 6525 2025 7575 2475 -2 2 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 5 - 6525 2025 7575 2025 7575 2475 6525 2475 6525 2025 -4 0 0 50 0 0 12 0.0000 4 135 180 6750 2325 lib\001 --6 -6 6075 900 7950 1425 -2 4 0 2 0 2 50 0 20 0.000 0 0 12 0 0 5 - 7875 1350 6150 1350 6150 975 7875 975 7875 1350 -4 0 0 50 0 2 12 0.0000 4 135 1380 6375 1200 Links to libraries\001 --6 -6 3450 2775 5925 3600 -2 4 0 2 0 2 50 0 20 0.000 0 0 12 0 0 5 - 5850 3525 3525 3525 3525 2850 5850 2850 5850 3525 -4 0 0 50 0 2 12 0.0000 0 180 1755 3675 3150 Link to corresponding\001 -4 0 0 50 0 2 12 0.0000 0 135 2055 3675 3375 directories in source tree\001 --6 -6 6000 2775 8100 3600 -2 4 0 2 0 2 50 0 20 0.000 0 0 12 0 0 5 - 8025 3525 6075 3525 6075 2850 8025 2850 8025 3525 -4 0 0 50 0 2 12 0.0000 0 180 975 6225 3150 Shell scripts\001 -4 0 0 50 0 2 12 0.0000 0 135 1680 6225 3375 Links to executables\001 --6 -6 2700 5100 3675 5550 -2 2 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 5 - 2700 5100 3675 5100 3675 5550 2700 5550 2700 5100 -4 0 0 50 0 1 12 0.0000 0 135 465 2775 5400 Unit 1\001 --6 -2 2 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 5 - 3675 825 5325 825 5325 1425 3675 1425 3675 825 -2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 2 - 4725 1425 4875 2025 -2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 2 - 3975 1425 1800 2025 -2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 2 - 5100 1425 7050 2025 -2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 2 - 3000 2025 4200 1425 -2 1 1 2 0 7 50 0 -1 4.000 0 0 -1 0 0 2 - 3675 4350 4425 5025 -2 1 1 2 0 7 50 0 -1 4.000 0 0 -1 0 0 2 - 3450 4350 3900 5025 -2 1 1 2 0 7 50 0 -1 4.000 0 0 -1 0 0 2 - 4350 1425 3675 2025 -2 1 1 2 0 7 50 0 -1 4.000 0 0 -1 0 0 2 - 4500 1425 3975 2025 -2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 2 - 5100 1425 5625 2025 -2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 2 - 3300 4350 3150 5100 -2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 2 - 2700 2475 2400 3900 -2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 2 - 3075 2475 3375 3900 -3 2 0 2 0 7 50 0 -1 0.000 0 1 0 3 - 2 1 2.00 90.00 90.00 - 900 3225 825 2475 1275 2250 - 0.000 -1.000 0.000 -3 2 0 2 0 7 50 0 -1 0.000 0 1 0 3 - 2 1 2.00 90.00 90.00 - 7125 1350 7125 1650 7200 2025 - 0.000 -1.000 0.000 -3 2 0 2 0 7 50 0 -1 0.000 0 1 0 3 - 2 1 2.00 90.00 90.00 - 3525 3150 2850 3225 2100 3900 - 0.000 -1.000 0.000 -3 2 0 2 0 7 50 0 -1 0.000 0 1 0 3 - 2 1 2.00 90.00 90.00 - 3525 3150 3525 2625 4125 2250 - 0.000 -1.000 0.000 -3 2 0 2 0 7 50 0 -1 0.000 0 1 0 3 - 2 1 2.00 90.00 90.00 - 4800 5175 4350 5325 3675 5400 - 0.000 -1.000 0.000 -3 2 0 2 0 7 50 0 -1 0.000 0 1 0 3 - 2 1 2.00 90.00 90.00 - 6450 2850 6150 2700 5775 2475 - 0.000 -1.000 0.000 -4 0 0 50 0 1 12 0.0000 0 135 1185 3825 1200 Root Build Tree\001 diff --git a/doc/DevelopersGuide/bldtree.pdf b/doc/DevelopersGuide/bldtree.pdf deleted file mode 100644 index bb33b2959..000000000 Binary files a/doc/DevelopersGuide/bldtree.pdf and /dev/null differ diff --git a/doc/DevelopersGuide/makefile.skel b/doc/DevelopersGuide/makefile.skel deleted file mode 100644 index 87f95944b..000000000 --- a/doc/DevelopersGuide/makefile.skel +++ /dev/null @@ -1,40 +0,0 @@ -# begin copy here ========================================== - -top_srcdir=@top_srcdir@ -top_builddir=../../.. -srcdir=@srcdir@ -VPATH=.:@srcdir@ - -@COMMENCE@ - -# Libraries targets -LIB = -LIB_SRC = -LIB_MOC = -LIB_CLIENT_IDL = -LIB_SERVER_IDL = - -# Executable targets -BIN = -BIN_SRC = -BIN_MOC = -BIN_CLIENT_IDL = -BIN_SERVER_IDL = - -# exported header files -EXPORT_HEADERS = - -# exported python executable files -EXPORT_PYSCRIPTS = - -# list of files in resources directory (copy when do make install) -RESOURCES_FILES = - -# po ressources files (to transform them in qm file) : -PO_FILES = - -# put here additional rules, or extra compiler options ... - -@CONCLUDE@ - -# end copy here ============================================ diff --git a/doc/DevelopersGuide/makefile_own.skel b/doc/DevelopersGuide/makefile_own.skel deleted file mode 100644 index 2e7a9ae12..000000000 --- a/doc/DevelopersGuide/makefile_own.skel +++ /dev/null @@ -1,10 +0,0 @@ -# begin copy here ========================================== - -top_srcdir=@top_srcdir@ -top_builddir=../../.. -srcdir=@srcdir@ -VPATH=.:@srcdir@ - -@COMMENCE@ - -# end copy here ============================================ diff --git a/doc/DevelopersGuide/srctree_module.eps b/doc/DevelopersGuide/srctree_module.eps deleted file mode 100644 index d6616b9db..000000000 --- a/doc/DevelopersGuide/srctree_module.eps +++ /dev/null @@ -1,364 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: srctree_module.eps -%%Creator: fig2dev Version 3.2 Patchlevel 3c -%%CreationDate: Thu Jul 26 11:57:52 2001 -%%For: tajchman@nikyo (Marc Tajchman - SFME/LGLS) -%%BoundingBox: 0 0 405 274 -%%Magnification: 1.0000 -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def - -end -save -newpath 0 274 moveto 0 0 lineto 405 0 lineto 405 274 lineto closepath clip newpath --33.0 371.0 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def - -$F2psBegin -%%Page: 1 1 -10 setmiterlimit - 0.06000 0.06000 sc -% -% Fig objects follow -% -% Polyline -15.000 slw -n 2925 5700 m 3825 5700 l 3825 6150 l 2925 6150 l - cp gs col0 s gr -/Times-Roman ff 180.00 scf sf -3075 6000 m -gs 1 -1 sc (src) col0 sh gr -% Polyline -n 1650 5700 m 2625 5700 l 2625 6150 l 1650 6150 l - cp gs col0 s gr -/Times-Roman ff 180.00 scf sf -1725 6000 m -gs 1 -1 sc (resources) col0 sh gr -% Polyline -n 1200 3825 m 2175 3825 l 2175 4275 l 1200 4275 l - cp gs col0 s gr -/Times-Roman ff 180.00 scf sf -1500 4125 m -gs 1 -1 sc (idl) col0 sh gr -% Polyline -n 2400 3825 m 3600 3825 l 3600 4275 l 2400 4275 l - cp gs col0 s gr -/Times-Roman ff 180.00 scf sf -2550 4125 m -gs 1 -1 sc (New module) col0 sh gr -% Polyline -n 1005 2475 m 825 2475 825 3195 180 arcto 4 {pop} repeat - 825 3375 2295 3375 180 arcto 4 {pop} repeat - 2475 3375 2475 2655 180 arcto 4 {pop} repeat - 2475 2475 1005 2475 180 arcto 4 {pop} repeat - cp gs col6 1.00 shd ef gr gs col0 s gr -/Times-Bold ff 180.00 scf sf -975 2775 m -gs 1 -1 sc (Run reconfigure) col0 sh gr -/Times-Bold ff 180.00 scf sf -975 3000 m -gs 1 -1 sc (script or edit) col0 sh gr -/Times-Bold ff 180.00 scf sf -975 3225 m -gs 1 -1 sc (configure.in file) col0 sh gr -% Polyline -n 3150 2625 m 4800 2625 l 4800 3225 l 3150 3225 l - cp gs col0 s gr -/Times-Roman ff 180.00 scf sf -3300 3000 m -gs 1 -1 sc (Root Source Tree) col0 sh gr -% Polyline -n 3825 3825 m 4875 3825 l 4875 4275 l 3825 4275 l - cp gs col0 s gr -/Times-Roman ff 180.00 scf sf -3975 4125 m -gs 1 -1 sc (resources) col0 sh gr -% Polyline -n 5025 3825 m 6075 3825 l 6075 4275 l 5025 4275 l - cp gs col0 s gr -/Times-Roman ff 180.00 scf sf -5250 4125 m -gs 1 -1 sc (bin) col0 sh gr -% Polyline -n 4350 3225 m - 4350 3825 l gs col0 s gr -% Polyline -n 3450 3225 m - 1725 3825 l gs col0 s gr -% Polyline -n 2625 4275 m - 2325 5700 l gs col0 s gr -% Polyline -n 4575 3225 m - 5400 3825 l gs col0 s gr -% Polyline -n 2925 3825 m - 3675 3225 l gs col0 s gr -% Polyline -n 3139 4261 m - 3439 5686 l gs col0 s gr -% Polyline -gs clippath -3159 3023 m 3179 2935 l 3034 2902 l 3135 2971 l 3015 2990 l cp -eoclip -n 2480 2826 m - 3155 2976 l gs col0 s gr gr - -% arrowhead -n 3015 2990 m 3135 2971 l 3034 2902 l 3047 2951 l 3015 2990 l - cp gs 0.00 setgray ef gr col0 s -% Polyline -n 783 4753 m 588 4753 588 5177 195 arcto 4 {pop} repeat - 588 5372 1768 5372 195 arcto 4 {pop} repeat - 1963 5372 1963 4948 195 arcto 4 {pop} repeat - 1963 4753 783 4753 195 arcto 4 {pop} repeat - cp gs col6 1.00 shd ef gr gs col0 s gr -% Polyline -n 4605 4575 m 4425 4575 4425 5070 180 arcto 4 {pop} repeat - 4425 5250 6045 5250 180 arcto 4 {pop} repeat - 6225 5250 6225 4755 180 arcto 4 {pop} repeat - 6225 4575 4605 4575 180 arcto 4 {pop} repeat - cp gs col6 1.00 shd ef gr gs col0 s gr -% Polyline -n 5580 2700 m 5400 2700 5400 3195 180 arcto 4 {pop} repeat - 5400 3375 7020 3375 180 arcto 4 {pop} repeat - 7200 3375 7200 2880 180 arcto 4 {pop} repeat - 7200 2700 5580 2700 180 arcto 4 {pop} repeat - cp gs col6 1.00 shd ef gr gs col0 s gr -% Polyline -n 5655 1650 m 5475 1650 5475 2145 180 arcto 4 {pop} repeat - 5475 2325 7095 2325 180 arcto 4 {pop} repeat - 7275 2325 7275 1830 180 arcto 4 {pop} repeat - 7275 1650 5655 1650 180 arcto 4 {pop} repeat - cp gs col6 1.00 shd ef gr gs col0 s gr -% Polyline -2 slj -gs clippath -4677 2619 m 4759 2657 l 4822 2523 l 4734 2606 l 4741 2485 l cp -eoclip -n 5475 1875 m 5474 1875 l 5472 1874 l 5468 1874 l 5461 1873 l 5453 1872 l - 5442 1871 l 5430 1870 l 5415 1869 l 5399 1869 l 5381 1870 l - 5363 1872 l 5343 1875 l 5322 1880 l 5300 1887 l 5277 1896 l - 5252 1908 l 5226 1923 l 5197 1942 l 5166 1965 l 5134 1993 l - 5100 2025 l 5071 2055 l 5043 2086 l 5017 2119 l 4992 2151 l - 4968 2183 l 4946 2216 l 4925 2247 l 4905 2279 l 4886 2310 l - 4868 2342 l 4851 2372 l 4834 2403 l 4819 2433 l 4804 2462 l - 4790 2490 l 4777 2516 l 4765 2540 l 4755 2561 l 4746 2579 l - 4739 2595 l 4734 2606 l - 4725 2625 l gs col0 s gr gr - -% arrowhead -0 slj -n 4741 2485 m 4734 2606 l 4822 2523 l 4772 2524 l 4741 2485 l - cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -1980 5683 m 2051 5739 l 2143 5623 l 2038 5684 l 2072 5567 l cp -eoclip -n 1950 5025 m 1952 5026 l 1956 5029 l 1964 5034 l 1974 5041 l 1988 5051 l - 2004 5063 l 2022 5077 l 2041 5093 l 2061 5110 l 2080 5129 l - 2098 5149 l 2116 5172 l 2132 5196 l 2146 5224 l 2159 5254 l - 2169 5288 l 2175 5325 l 2177 5359 l 2176 5392 l 2171 5423 l - 2165 5453 l 2157 5480 l 2147 5506 l 2136 5531 l 2124 5555 l - 2111 5578 l 2098 5599 l 2084 5620 l 2071 5638 l 2059 5655 l - 2049 5669 l 2040 5681 l - 2025 5700 l gs col0 s gr gr - -% arrowhead -0 slj -n 2072 5567 m 2038 5684 l 2143 5623 l 2093 5613 l 2072 5567 l - cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -3116 5733 m 3196 5693 l 3142 5583 l 3142 5684 l 3061 5623 l cp -eoclip -n 1950 5025 m 1951 5025 l 1954 5024 l 1959 5023 l 1967 5021 l 1978 5019 l - 1992 5016 l 2009 5012 l 2029 5009 l 2052 5005 l 2077 5001 l - 2104 4998 l 2133 4995 l 2163 4992 l 2194 4991 l 2226 4990 l - 2259 4991 l 2293 4993 l 2329 4997 l 2366 5004 l 2405 5012 l - 2446 5023 l 2488 5037 l 2533 5055 l 2579 5076 l 2625 5100 l - 2667 5125 l 2708 5152 l 2746 5181 l 2782 5209 l 2815 5238 l - 2846 5268 l 2875 5297 l 2902 5326 l 2927 5356 l 2950 5385 l - 2973 5414 l 2994 5443 l 3014 5472 l 3033 5501 l 3051 5529 l - 3067 5555 l 3083 5581 l 3097 5604 l 3109 5626 l 3120 5645 l - 3129 5661 l 3136 5674 l 3142 5684 l - 3150 5700 l gs col0 s gr gr - -% arrowhead -0 slj -n 3061 5623 m 3142 5684 l 3142 5583 l col0 s -% Polyline -2 slj -gs clippath -2596 4285 m 2519 4238 l 2442 4366 l 2539 4293 l 2519 4412 l cp -eoclip -n 2025 4950 m 2026 4949 l 2029 4947 l 2034 4944 l 2041 4940 l 2050 4933 l - 2061 4925 l 2074 4915 l 2089 4903 l 2104 4889 l 2122 4872 l - 2142 4853 l 2164 4829 l 2189 4800 l 2218 4765 l 2250 4725 l - 2274 4694 l 2298 4662 l 2320 4630 l 2342 4600 l 2362 4570 l - 2382 4542 l 2401 4514 l 2418 4486 l 2436 4460 l 2452 4434 l - 2468 4409 l 2483 4384 l 2497 4362 l 2510 4341 l 2521 4323 l - 2530 4307 l 2538 4295 l - 2550 4275 l gs col0 s gr gr - -% arrowhead -0 slj -n 2519 4412 m 2539 4293 l 2442 4366 l 2492 4370 l 2519 4412 l - cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -3406 4239 m 3328 4283 l 3400 4413 l 3385 4293 l 3479 4368 l cp -eoclip -n 4425 4950 m 4424 4950 l 4420 4950 l 4415 4950 l 4406 4951 l 4394 4951 l - 4378 4951 l 4360 4951 l 4338 4951 l 4315 4950 l 4289 4949 l - 4261 4948 l 4232 4945 l 4202 4942 l 4170 4937 l 4138 4931 l - 4105 4923 l 4070 4914 l 4033 4902 l 3995 4888 l 3955 4871 l - 3912 4850 l 3869 4827 l 3825 4800 l 3785 4773 l 3747 4745 l - 3712 4716 l 3679 4688 l 3649 4659 l 3621 4631 l 3595 4603 l - 3572 4575 l 3549 4548 l 3529 4521 l 3509 4494 l 3491 4467 l - 3473 4441 l 3457 4416 l 3442 4392 l 3429 4370 l 3416 4349 l - 3406 4330 l 3397 4314 l 3389 4301 l 3384 4291 l - 3375 4275 l gs col0 s gr gr - -% arrowhead -0 slj -n 3479 4368 m 3385 4293 l 3400 4413 l 3429 4371 l 3479 4368 l - cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -3477 5705 m 3565 5724 l 3596 5579 l 3529 5680 l 3508 5560 l cp -eoclip -n 4425 4950 m 4423 4950 l 4420 4950 l 4414 4949 l 4404 4948 l 4391 4947 l - 4374 4946 l 4354 4946 l 4330 4945 l 4304 4944 l 4276 4945 l - 4247 4945 l 4216 4947 l 4185 4950 l 4152 4954 l 4119 4960 l - 4085 4967 l 4051 4977 l 4015 4989 l 3978 5004 l 3941 5022 l - 3902 5045 l 3863 5070 l 3825 5100 l 3789 5133 l 3755 5167 l - 3726 5202 l 3699 5237 l 3676 5272 l 3655 5306 l 3637 5341 l - 3621 5375 l 3606 5409 l 3594 5442 l 3582 5475 l 3572 5508 l - 3563 5539 l 3555 5569 l 3548 5597 l 3542 5622 l 3537 5644 l - 3533 5663 l 3530 5677 l - 3525 5700 l gs col0 s gr gr - -% arrowhead -0 slj -n 3508 5560 m 3529 5680 l 3596 5579 l 3548 5592 l 3508 5560 l - cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -4602 3819 m 4684 3857 l 4747 3723 l 4659 3806 l 4666 3685 l cp -eoclip -n 5400 3075 m 5399 3075 l 5397 3074 l 5393 3074 l 5386 3073 l 5378 3072 l - 5367 3071 l 5355 3070 l 5340 3069 l 5324 3069 l 5306 3070 l - 5288 3072 l 5268 3075 l 5247 3080 l 5225 3087 l 5202 3096 l - 5177 3108 l 5151 3123 l 5122 3142 l 5091 3165 l 5059 3193 l - 5025 3225 l 4996 3255 l 4968 3286 l 4942 3319 l 4917 3351 l - 4893 3383 l 4871 3416 l 4850 3447 l 4830 3479 l 4811 3510 l - 4793 3542 l 4776 3572 l 4759 3603 l 4744 3633 l 4729 3662 l - 4715 3690 l 4702 3716 l 4690 3740 l 4680 3761 l 4671 3779 l - 4664 3795 l 4659 3806 l - 4650 3825 l gs col0 s gr gr - -% arrowhead -0 slj -n 4666 3685 m 4659 3806 l 4747 3723 l 4697 3724 l 4666 3685 l - cp gs 0.00 setgray ef gr col0 s -/Times-Bold ff 180.00 scf sf -750 5025 m -gs 1 -1 sc (Create) col0 sh gr -/Times-Bold ff 180.00 scf sf -750 5250 m -gs 1 -1 sc (directories) col0 sh gr -/Times-Bold ff 180.00 scf sf -4575 4875 m -gs 1 -1 sc (Copy and/or) col0 sh gr -/Times-Bold ff 180.00 scf sf -4575 5100 m -gs 1 -1 sc (create Makefile.in) col0 sh gr -/Times-Bold ff 180.00 scf sf -5550 3225 m -gs 1 -1 sc (files \(module level\)) col0 sh gr -/Times-Bold ff 180.00 scf sf -5550 3000 m -gs 1 -1 sc (Exported resource) col0 sh gr -/Times-Bold ff 180.00 scf sf -5625 1950 m -gs 1 -1 sc (Update SUBDIRS ) col0 sh gr -/Times-Bold ff 180.00 scf sf -5625 2175 m -gs 1 -1 sc (list in Makefile.in) col0 sh gr -$F2psEnd -rs diff --git a/doc/DevelopersGuide/srctree_module.fig b/doc/DevelopersGuide/srctree_module.fig deleted file mode 100644 index cd8980665..000000000 --- a/doc/DevelopersGuide/srctree_module.fig +++ /dev/null @@ -1,110 +0,0 @@ -#FIG 3.2 -Portrait -Center -Inches -Letter -100.00 -Single --2 -1200 2 -6 2925 5700 3825 6150 -2 2 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 5 - 2925 5700 3825 5700 3825 6150 2925 6150 2925 5700 -4 0 0 50 0 1 12 0.0000 0 90 240 3075 6000 src\001 --6 -6 1650 5700 2625 6150 -2 2 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 5 - 1650 5700 2625 5700 2625 6150 1650 6150 1650 5700 -4 0 0 50 0 1 12 0.0000 0 90 750 1725 6000 resources\001 --6 -6 1200 3825 2175 4275 -2 2 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 5 - 1200 3825 2175 3825 2175 4275 1200 4275 1200 3825 -4 0 0 50 0 1 12 0.0000 0 135 180 1500 4125 idl\001 --6 -6 2400 3825 3600 4275 -2 2 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 5 - 2400 3825 3600 3825 3600 4275 2400 4275 2400 3825 -4 0 0 50 0 1 12 0.0000 0 135 945 2550 4125 New module\001 --6 -6 825 2475 2475 3375 -2 4 0 2 0 6 50 0 20 0.000 0 0 12 0 0 5 - 2475 3375 825 3375 825 2475 2475 2475 2475 3375 -4 0 0 50 0 2 12 0.0000 0 180 1290 975 2775 Run reconfigure\001 -4 0 0 50 0 2 12 0.0000 0 180 1020 975 3000 script or edit\001 -4 0 0 50 0 2 12 0.0000 0 180 1245 975 3225 configure.in file\001 --6 -6 3150 2625 4800 3225 -2 2 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 5 - 3150 2625 4800 2625 4800 3225 3150 3225 3150 2625 -4 0 0 50 0 1 12 0.0000 0 135 1320 3300 3000 Root Source Tree\001 --6 -6 3825 3825 4875 4275 -2 2 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 5 - 3825 3825 4875 3825 4875 4275 3825 4275 3825 3825 -4 0 0 50 0 0 12 0.0000 4 90 750 3975 4125 resources\001 --6 -6 5025 3825 6075 4275 -2 2 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 5 - 5025 3825 6075 3825 6075 4275 5025 4275 5025 3825 -4 0 0 50 0 0 12 0.0000 4 135 225 5250 4125 bin\001 --6 -2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 2 - 4350 3225 4350 3825 -2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 2 - 3450 3225 1725 3825 -2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 2 - 2625 4275 2325 5700 -2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 2 - 4575 3225 5400 3825 -2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 2 - 2925 3825 3675 3225 -2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 2 - 3139 4261 3439 5686 -2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 0 2 - 2 1 2.00 90.00 90.00 - 2480 2826 3155 2976 -2 4 0 2 0 6 50 0 20 0.000 0 0 13 0 0 5 - 1963 5372 588 5372 588 4753 1963 4753 1963 5372 -2 4 0 2 0 6 50 0 20 0.000 0 0 12 0 0 5 - 6225 5250 4425 5250 4425 4575 6225 4575 6225 5250 -2 4 0 2 0 6 50 0 20 0.000 0 0 12 0 0 5 - 7200 3375 5400 3375 5400 2700 7200 2700 7200 3375 -2 4 0 2 0 6 50 0 20 0.000 0 0 12 0 0 5 - 7275 2325 5475 2325 5475 1650 7275 1650 7275 2325 -3 2 0 2 0 7 50 0 -1 0.000 0 1 0 3 - 2 1 2.00 90.00 90.00 - 5475 1875 5100 2025 4725 2625 - 0.000 -1.000 0.000 -3 2 0 2 0 7 50 0 -1 0.000 0 1 0 3 - 2 1 2.00 90.00 90.00 - 1950 5025 2175 5325 2025 5700 - 0.000 -1.000 0.000 -3 2 0 2 0 7 50 0 -1 0.000 0 1 0 3 - 0 0 2.00 90.00 90.00 - 1950 5025 2625 5100 3150 5700 - 0.000 -1.000 0.000 -3 2 0 2 0 7 50 0 -1 0.000 0 1 0 3 - 2 1 2.00 90.00 90.00 - 2025 4950 2250 4725 2550 4275 - 0.000 -1.000 0.000 -3 2 0 2 0 7 50 0 -1 0.000 0 1 0 3 - 2 1 2.00 90.00 90.00 - 4425 4950 3825 4800 3375 4275 - 0.000 -1.000 0.000 -3 2 0 2 0 7 50 0 -1 0.000 0 1 0 3 - 2 1 2.00 90.00 90.00 - 4425 4950 3825 5100 3525 5700 - 0.000 -1.000 0.000 -3 2 0 2 0 7 50 0 -1 0.000 0 1 0 3 - 2 1 2.00 90.00 90.00 - 5400 3075 5025 3225 4650 3825 - 0.000 -1.000 0.000 -4 0 0 50 0 2 12 0.0000 4 135 570 750 5025 Create\001 -4 0 0 50 0 2 12 0.0000 4 135 885 750 5250 directories\001 -4 0 0 50 0 2 12 0.0000 0 180 975 4575 4875 Copy and/or\001 -4 0 0 50 0 2 12 0.0000 0 135 1515 4575 5100 create Makefile.in\001 -4 0 0 50 0 2 12 0.0000 0 180 1515 5550 3225 files (module level)\001 -4 0 0 50 0 2 12 0.0000 0 180 1515 5550 3000 Exported resource\001 -4 0 0 50 0 2 12 0.0000 0 180 1500 5625 1950 Update SUBDIRS \001 -4 0 0 50 0 2 12 0.0000 0 135 1395 5625 2175 list in Makefile.in\001 diff --git a/doc/DevelopersGuide/srctree_module.pdf b/doc/DevelopersGuide/srctree_module.pdf deleted file mode 100644 index 9b964fb8c..000000000 Binary files a/doc/DevelopersGuide/srctree_module.pdf and /dev/null differ diff --git a/doc/DevelopersGuide/srctree_unit.eps b/doc/DevelopersGuide/srctree_unit.eps deleted file mode 100644 index 5f2fb85eb..000000000 --- a/doc/DevelopersGuide/srctree_unit.eps +++ /dev/null @@ -1,425 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: srctree_unit.eps -%%Creator: fig2dev Version 3.2 Patchlevel 3c -%%CreationDate: Thu Jul 26 11:57:40 2001 -%%For: tajchman@nikyo (Marc Tajchman - SFME/LGLS) -%%BoundingBox: 0 0 404 377 -%%Magnification: 1.0000 -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def - -end -save -newpath 0 377 moveto 0 0 lineto 404 0 lineto 404 377 lineto closepath clip newpath --12.0 416.0 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def - -$F2psBegin -%%Page: 1 1 -10 setmiterlimit - 0.06000 0.06000 sc -% -% Fig objects follow -% -% Polyline -15.000 slw -n 1530 675 m 1350 675 1350 1395 180 arcto 4 {pop} repeat - 1350 1575 2820 1575 180 arcto 4 {pop} repeat - 3000 1575 3000 855 180 arcto 4 {pop} repeat - 3000 675 1530 675 180 arcto 4 {pop} repeat - cp gs col6 1.00 shd ef gr gs col0 s gr -/Times-Bold ff 180.00 scf sf -1500 975 m -gs 1 -1 sc (Run reconfigure) col0 sh gr -/Times-Bold ff 180.00 scf sf -1500 1200 m -gs 1 -1 sc (script or edit) col0 sh gr -/Times-Bold ff 180.00 scf sf -1500 1425 m -gs 1 -1 sc (configure.in file) col0 sh gr -% Polyline -n 855 3000 m 675 3000 675 3495 180 arcto 4 {pop} repeat - 675 3675 1770 3675 180 arcto 4 {pop} repeat - 1950 3675 1950 3180 180 arcto 4 {pop} repeat - 1950 3000 855 3000 180 arcto 4 {pop} repeat - cp gs col6 1.00 shd ef gr gs col0 s gr -/Times-Bold ff 180.00 scf sf -825 3300 m -gs 1 -1 sc (Exported) col0 sh gr -/Times-Bold ff 180.00 scf sf -825 3525 m -gs 1 -1 sc (idl files) col0 sh gr -% Polyline -n 2475 2025 m 3450 2025 l 3450 2475 l 2475 2475 l - cp gs col0 s gr -/Times-Roman ff 180.00 scf sf -2625 2325 m -gs 1 -1 sc (Module 1) col0 sh gr -% Polyline -n 3000 3900 m 3900 3900 l 3900 4350 l 3000 4350 l - cp gs col0 s gr -/Times-Roman ff 180.00 scf sf -3150 4200 m -gs 1 -1 sc (src) col0 sh gr -% Polyline -n 1725 3900 m 2700 3900 l 2700 4350 l 1725 4350 l - cp gs col0 s gr -/Times-Roman ff 180.00 scf sf -1800 4200 m -gs 1 -1 sc (resources) col0 sh gr -% Polyline -n 1275 2025 m 2250 2025 l 2250 2475 l 1275 2475 l - cp gs col0 s gr -/Times-Roman ff 180.00 scf sf -1575 2325 m -gs 1 -1 sc (idl) col0 sh gr -% Polyline -n 5205 3150 m 5025 3150 5025 3645 180 arcto 4 {pop} repeat - 5025 3825 6495 3825 180 arcto 4 {pop} repeat - 6675 3825 6675 3330 180 arcto 4 {pop} repeat - 6675 3150 5205 3150 180 arcto 4 {pop} repeat - cp gs col6 1.00 shd ef gr gs col0 s gr -/Times-Bold ff 180.00 scf sf -5175 3450 m -gs 1 -1 sc (Exported shell) col0 sh gr -/Times-Bold ff 180.00 scf sf -5175 3675 m -gs 1 -1 sc (scripts) col0 sh gr -% Polyline -n 5430 4275 m 5250 4275 5250 4770 180 arcto 4 {pop} repeat - 5250 4950 6720 4950 180 arcto 4 {pop} repeat - 6900 4950 6900 4455 180 arcto 4 {pop} repeat - 6900 4275 5430 4275 180 arcto 4 {pop} repeat - cp gs col6 1.00 shd ef gr gs col0 s gr -/Times-Bold ff 180.00 scf sf -5400 4575 m -gs 1 -1 sc (Update SUBDIR) col0 sh gr -/Times-Bold ff 180.00 scf sf -5400 4800 m -gs 1 -1 sc (list in Makefile.in) col0 sh gr -% Polyline -n 4275 2025 m 5325 2025 l 5325 2475 l 4275 2475 l - cp gs col0 s gr -/Times-Roman ff 180.00 scf sf -4425 2325 m -gs 1 -1 sc (resources) col0 sh gr -% Polyline -n 5625 2025 m 6675 2025 l 6675 2475 l 5625 2475 l - cp gs col0 s gr -/Times-Roman ff 180.00 scf sf -5850 2325 m -gs 1 -1 sc (bin) col0 sh gr -% Polyline -n 2700 5100 m 3675 5100 l 3675 5550 l 2700 5550 l - cp gs col0 s gr -/Times-Roman ff 180.00 scf sf -2775 5400 m -gs 1 -1 sc (New unit) col0 sh gr -% Polyline -n 1380 6225 m 1200 6225 1200 6720 180 arcto 4 {pop} repeat - 1200 6900 2670 6900 180 arcto 4 {pop} repeat - 2850 6900 2850 6405 180 arcto 4 {pop} repeat - 2850 6225 1380 6225 180 arcto 4 {pop} repeat - cp gs col6 1.00 shd ef gr gs col0 s gr -/Times-Bold ff 180.00 scf sf -1350 6750 m -gs 1 -1 sc (and header files) col0 sh gr -/Times-Bold ff 180.00 scf sf -1350 6525 m -gs 1 -1 sc (Private source) col0 sh gr -% Polyline -n 3330 6225 m 3150 6225 3150 6720 180 arcto 4 {pop} repeat - 3150 6900 4620 6900 180 arcto 4 {pop} repeat - 4800 6900 4800 6405 180 arcto 4 {pop} repeat - 4800 6225 3330 6225 180 arcto 4 {pop} repeat - cp gs col6 1.00 shd ef gr gs col0 s gr -/Times-Bold ff 180.00 scf sf -3300 6525 m -gs 1 -1 sc (Exported header) col0 sh gr -/Times-Bold ff 180.00 scf sf -3300 6750 m -gs 1 -1 sc (files) col0 sh gr -% Polyline -n 3675 825 m 5325 825 l 5325 1425 l 3675 1425 l - cp gs col0 s gr -% Polyline -n 4725 1425 m - 4875 2025 l gs col0 s gr -% Polyline -n 3975 1425 m - 1800 2025 l gs col0 s gr -% Polyline -n 2700 2475 m - 2400 3900 l gs col0 s gr -% Polyline -gs clippath -3679 1172 m 3699 1084 l 3554 1051 l 3655 1120 l 3535 1139 l cp -eoclip -n 3000 975 m - 3675 1125 l gs col0 s gr gr - -% arrowhead -n 3535 1139 m 3655 1120 l 3554 1051 l 3567 1100 l 3535 1139 l - cp gs 0.00 setgray ef gr col0 s -% Polyline -n 5100 1425 m - 5625 2025 l gs col0 s gr -% Polyline -n 3000 2025 m - 4200 1425 l gs col0 s gr -% Polyline -n 3300 4350 m - 3150 5100 l gs col0 s gr -% Polyline -n 3075 2475 m - 3375 3900 l gs col0 s gr -% Polyline - [60] 0 sd -n 3675 4350 m - 4425 5025 l gs col0 s gr [] 0 sd -% Polyline - [60] 0 sd -n 3450 4350 m - 3900 5025 l gs col0 s gr [] 0 sd -% Polyline - [60] 0 sd -n 4350 1425 m - 3675 2025 l gs col0 s gr [] 0 sd -% Polyline - [60] 0 sd -n 4500 1425 m - 4050 2025 l gs col0 s gr [] 0 sd -% Polyline -n 405 4950 m 225 4950 225 5445 180 arcto 4 {pop} repeat - 225 5625 1845 5625 180 arcto 4 {pop} repeat - 2025 5625 2025 5130 180 arcto 4 {pop} repeat - 2025 4950 405 4950 180 arcto 4 {pop} repeat - cp gs col6 1.00 shd ef gr gs col0 s gr -% Polyline -n 4305 5325 m 4125 5325 4125 5820 180 arcto 4 {pop} repeat - 4125 6000 5745 6000 180 arcto 4 {pop} repeat - 5925 6000 5925 5505 180 arcto 4 {pop} repeat - 5925 5325 4305 5325 180 arcto 4 {pop} repeat - cp gs col6 1.00 shd ef gr gs col0 s gr -% Polyline -2 slj -gs clippath -2663 5277 m 2610 5204 l 2490 5291 l 2608 5262 l 2543 5364 l cp -eoclip -n 2100 6225 m 2099 6224 l 2098 6221 l 2095 6217 l 2091 6210 l 2086 6201 l - 2080 6189 l 2073 6174 l 2065 6158 l 2058 6140 l 2051 6120 l - 2044 6098 l 2039 6075 l 2035 6051 l 2033 6025 l 2032 5997 l - 2035 5967 l 2040 5934 l 2049 5899 l 2061 5860 l 2078 5819 l - 2100 5775 l 2122 5737 l 2145 5701 l 2170 5665 l 2197 5631 l - 2223 5599 l 2250 5568 l 2278 5539 l 2305 5512 l 2333 5485 l - 2361 5459 l 2389 5435 l 2417 5411 l 2445 5388 l 2471 5367 l - 2497 5346 l 2522 5327 l 2544 5310 l 2564 5295 l 2582 5282 l - 2596 5271 l 2607 5263 l - 2625 5250 l gs col0 s gr gr - -% arrowhead -0 slj -n 2543 5364 m 2608 5262 l 2490 5291 l 2535 5314 l 2543 5364 l - cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -3241 5505 m 3185 5576 l 3301 5668 l 3241 5563 l 3357 5597 l cp -eoclip -n 3675 6225 m 3675 6224 l 3676 6221 l 3677 6216 l 3679 6209 l 3680 6199 l - 3682 6187 l 3684 6173 l 3684 6157 l 3684 6140 l 3683 6121 l - 3680 6101 l 3675 6078 l 3667 6054 l 3656 6026 l 3642 5996 l - 3623 5962 l 3600 5925 l 3579 5894 l 3556 5864 l 3532 5835 l - 3509 5808 l 3485 5782 l 3462 5758 l 3438 5734 l 3415 5712 l - 3392 5691 l 3369 5670 l 3347 5651 l 3325 5632 l 3305 5615 l - 3286 5599 l 3269 5586 l 3255 5574 l 3244 5565 l - 3225 5550 l gs col0 s gr gr - -% arrowhead -0 slj -n 3357 5597 m 3241 5563 l 3301 5668 l 3311 5618 l 3357 5597 l - cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -3892 4003 m 3878 4092 l 4025 4114 l 3921 4053 l 4039 4026 l cp -eoclip -n 5250 4500 m 5250 4499 l 5249 4498 l 5248 4496 l 5246 4492 l 5244 4487 l - 5240 4480 l 5236 4473 l 5229 4464 l 5222 4454 l 5212 4444 l - 5201 4433 l 5188 4421 l 5172 4408 l 5152 4395 l 5129 4381 l - 5102 4366 l 5069 4350 l 5031 4333 l 4986 4315 l 4934 4295 l - 4875 4275 l 4829 4260 l 4781 4245 l 4733 4231 l 4686 4218 l - 4638 4205 l 4591 4193 l 4545 4182 l 4500 4171 l 4456 4160 l - 4412 4150 l 4368 4141 l 4325 4132 l 4283 4123 l 4241 4114 l - 4200 4106 l 4160 4098 l 4122 4091 l 4086 4084 l 4052 4078 l - 4021 4072 l 3993 4067 l 3969 4062 l 3948 4059 l 3932 4056 l - 3919 4053 l - 3900 4050 l gs col0 s gr gr - -% arrowhead -0 slj -n 4039 4026 m 3921 4053 l 4025 4114 l 4009 4067 l 4039 4026 l - cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -1302 2288 m 1276 2202 l 1134 2245 l 1255 2256 l 1160 2331 l cp -eoclip -n 675 3300 m 674 3299 l 671 3296 l 666 3292 l 659 3285 l 648 3275 l - 635 3262 l 620 3247 l 602 3229 l 583 3208 l 562 3186 l - 541 3162 l 520 3136 l 500 3109 l 480 3081 l 462 3053 l - 446 3023 l 432 2993 l 420 2961 l 411 2928 l 406 2894 l - 405 2858 l 408 2820 l 416 2781 l 430 2741 l 450 2700 l - 472 2665 l 498 2632 l 527 2601 l 558 2571 l 591 2544 l - 625 2518 l 661 2494 l 697 2472 l 735 2451 l 773 2432 l - 812 2413 l 851 2396 l 891 2379 l 931 2363 l 970 2348 l - 1009 2334 l 1047 2321 l 1084 2309 l 1118 2298 l 1150 2288 l - 1178 2279 l 1203 2271 l 1224 2265 l 1242 2260 l 1255 2256 l - - 1275 2250 l gs col0 s gr gr - -% arrowhead -0 slj -n 1160 2331 m 1255 2256 l 1134 2245 l 1168 2281 l 1160 2331 l - cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -1765 4073 m 1706 4006 l 1594 4104 l 1709 4064 l 1653 4171 l cp -eoclip -n 1050 4950 m 1050 4949 l 1050 4947 l 1049 4942 l 1049 4936 l 1049 4927 l - 1049 4916 l 1049 4902 l 1050 4887 l 1052 4870 l 1056 4852 l - 1060 4832 l 1067 4810 l 1075 4786 l 1086 4759 l 1101 4729 l - 1119 4696 l 1141 4660 l 1168 4619 l 1200 4575 l 1227 4540 l - 1255 4505 l 1284 4472 l 1312 4439 l 1341 4408 l 1369 4378 l - 1397 4349 l 1425 4321 l 1452 4295 l 1479 4269 l 1506 4243 l - 1533 4219 l 1559 4195 l 1584 4173 l 1608 4151 l 1630 4131 l - 1651 4113 l 1670 4097 l 1686 4084 l 1699 4072 l 1709 4064 l - - 1725 4050 l gs col0 s gr gr - -% arrowhead -0 slj -n 1653 4171 m 1709 4064 l 1594 4104 l 1641 4123 l 1653 4171 l - cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -6234 2428 m 6189 2506 l 6317 2580 l 6243 2485 l 6362 2502 l cp -eoclip -n 6675 3225 m 6676 3224 l 6677 3221 l 6680 3215 l 6685 3208 l 6690 3197 l - 6696 3184 l 6703 3168 l 6710 3150 l 6717 3131 l 6723 3111 l - 6728 3089 l 6732 3066 l 6733 3041 l 6732 3015 l 6729 2987 l - 6722 2956 l 6711 2923 l 6695 2887 l 6675 2850 l 6655 2819 l - 6633 2789 l 6609 2760 l 6585 2734 l 6560 2709 l 6534 2685 l - 6509 2663 l 6483 2642 l 6457 2623 l 6431 2604 l 6405 2586 l - 6380 2569 l 6355 2553 l 6331 2538 l 6308 2524 l 6288 2512 l - 6270 2501 l 6256 2492 l 6244 2486 l - 6225 2475 l gs col0 s gr gr - -% arrowhead -0 slj -n 6362 2502 m 6243 2485 l 6317 2580 l 6320 2530 l 6362 2502 l - cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -3700 5285 m 3630 5341 l 3722 5457 l 3688 5341 l 3793 5401 l cp -eoclip -n 4125 5625 m 4123 5625 l 4118 5625 l 4110 5624 l 4099 5624 l 4085 5622 l - 4069 5620 l 4051 5617 l 4031 5613 l 4010 5606 l 3987 5597 l - 3961 5585 l 3932 5570 l 3900 5550 l 3872 5530 l 3846 5510 l - 3823 5490 l 3801 5470 l 3782 5451 l 3764 5432 l 3747 5413 l - 3731 5395 l 3717 5378 l 3704 5363 l 3694 5349 l - 3675 5325 l gs col0 s gr gr - -% arrowhead -0 slj -n 3793 5401 m 3688 5341 l 3722 5457 l 3743 5411 l 3793 5401 l - cp gs 0.00 setgray ef gr col0 s -/Times-Roman ff 180.00 scf sf -3825 1200 m -gs 1 -1 sc (Root Source Tree) col0 sh gr -/Times-Bold ff 180.00 scf sf -4275 5625 m -gs 1 -1 sc (Copy and/or) col0 sh gr -/Times-Bold ff 180.00 scf sf -4275 5850 m -gs 1 -1 sc (create Makefile.in) col0 sh gr -/Times-Bold ff 180.00 scf sf -375 5250 m -gs 1 -1 sc (Exported resource) col0 sh gr -/Times-Bold ff 180.00 scf sf -375 5475 m -gs 1 -1 sc (files \(xml, ...\)) col0 sh gr -$F2psEnd -rs diff --git a/doc/DevelopersGuide/srctree_unit.fig b/doc/DevelopersGuide/srctree_unit.fig deleted file mode 100644 index 800cc6fb3..000000000 --- a/doc/DevelopersGuide/srctree_unit.fig +++ /dev/null @@ -1,145 +0,0 @@ -#FIG 3.2 -Portrait -Center -Inches -Letter -100.00 -Single --2 -1200 2 -6 1350 675 3000 1575 -2 4 0 2 0 6 50 0 20 0.000 0 0 12 0 0 5 - 3000 1575 1350 1575 1350 675 3000 675 3000 1575 -4 0 0 50 0 2 12 0.0000 0 180 1290 1500 975 Run reconfigure\001 -4 0 0 50 0 2 12 0.0000 0 180 1020 1500 1200 script or edit\001 -4 0 0 50 0 2 12 0.0000 0 180 1245 1500 1425 configure.in file\001 --6 -6 675 3000 1950 3675 -2 4 0 2 0 6 50 0 20 0.000 0 0 12 0 0 5 - 1950 3675 675 3675 675 3000 1950 3000 1950 3675 -4 0 0 50 0 2 12 0.0000 0 180 735 825 3300 Exported\001 -4 0 0 50 0 2 12 0.0000 0 135 570 825 3525 idl files\001 --6 -6 2475 2025 3450 2475 -2 2 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 5 - 2475 2025 3450 2025 3450 2475 2475 2475 2475 2025 -4 0 0 50 0 1 12 0.0000 0 135 705 2625 2325 Module 1\001 --6 -6 3000 3900 3900 4350 -2 2 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 5 - 3000 3900 3900 3900 3900 4350 3000 4350 3000 3900 -4 0 0 50 0 1 12 0.0000 0 90 240 3150 4200 src\001 --6 -6 1725 3900 2700 4350 -2 2 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 5 - 1725 3900 2700 3900 2700 4350 1725 4350 1725 3900 -4 0 0 50 0 1 12 0.0000 0 90 750 1800 4200 resources\001 --6 -6 1275 2025 2250 2475 -2 2 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 5 - 1275 2025 2250 2025 2250 2475 1275 2475 1275 2025 -4 0 0 50 0 1 12 0.0000 0 135 180 1575 2325 idl\001 --6 -6 4950 3075 6750 3900 -2 4 0 2 0 6 50 0 20 0.000 0 0 12 0 0 5 - 6675 3825 5025 3825 5025 3150 6675 3150 6675 3825 -4 0 0 50 0 2 12 0.0000 0 180 1155 5175 3450 Exported shell\001 -4 0 0 50 0 2 12 0.0000 0 180 540 5175 3675 scripts\001 --6 -6 5175 4200 6975 5025 -2 4 0 2 0 6 50 0 20 0.000 0 0 12 0 0 5 - 6900 4950 5250 4950 5250 4275 6900 4275 6900 4950 -4 0 0 50 0 2 12 0.0000 4 180 1350 5400 4575 Update SUBDIR\001 -4 0 0 50 0 2 12 0.0000 4 135 1395 5400 4800 list in Makefile.in\001 --6 -6 4275 2025 5325 2475 -2 2 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 5 - 4275 2025 5325 2025 5325 2475 4275 2475 4275 2025 -4 0 0 50 0 0 12 0.0000 4 90 750 4425 2325 resources\001 --6 -6 5625 2025 6675 2475 -2 2 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 5 - 5625 2025 6675 2025 6675 2475 5625 2475 5625 2025 -4 0 0 50 0 0 12 0.0000 4 135 225 5850 2325 bin\001 --6 -6 2700 5100 3675 5550 -2 2 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 5 - 2700 5100 3675 5100 3675 5550 2700 5550 2700 5100 -4 0 0 50 0 1 12 0.0000 0 135 690 2775 5400 New unit\001 --6 -6 1125 6150 2925 6975 -2 4 0 2 0 6 50 0 20 0.000 0 0 12 0 0 5 - 2850 6900 1200 6900 1200 6225 2850 6225 2850 6900 -4 0 0 50 0 2 12 0.0000 0 135 1290 1350 6750 and header files\001 -4 0 0 50 0 2 12 0.0000 0 135 1200 1350 6525 Private source\001 --6 -6 3150 6225 4800 6900 -2 4 0 2 0 6 50 0 20 0.000 0 0 12 0 0 5 - 4800 6900 3150 6900 3150 6225 4800 6225 4800 6900 -4 0 0 50 0 2 12 0.0000 0 180 1350 3300 6525 Exported header\001 -4 0 0 50 0 2 12 0.0000 0 135 345 3300 6750 files\001 --6 -2 2 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 5 - 3675 825 5325 825 5325 1425 3675 1425 3675 825 -2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 2 - 4725 1425 4875 2025 -2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 2 - 3975 1425 1800 2025 -2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 2 - 2700 2475 2400 3900 -2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 0 2 - 2 1 2.00 90.00 90.00 - 3000 975 3675 1125 -2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 2 - 5100 1425 5625 2025 -2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 2 - 3000 2025 4200 1425 -2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 2 - 3300 4350 3150 5100 -2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 2 - 3075 2475 3375 3900 -2 1 1 2 0 7 50 0 -1 4.000 0 0 -1 0 0 2 - 3675 4350 4425 5025 -2 1 1 2 0 7 50 0 -1 4.000 0 0 -1 0 0 2 - 3450 4350 3900 5025 -2 1 1 2 0 7 50 0 -1 4.000 0 0 -1 0 0 2 - 4350 1425 3675 2025 -2 1 1 2 0 7 50 0 -1 4.000 0 0 -1 0 0 2 - 4500 1425 4050 2025 -2 4 0 2 0 6 50 0 20 0.000 0 0 12 0 0 5 - 2025 5625 225 5625 225 4950 2025 4950 2025 5625 -2 4 0 2 0 6 50 0 20 0.000 0 0 12 0 0 5 - 5925 6000 4125 6000 4125 5325 5925 5325 5925 6000 -3 2 0 2 0 7 50 0 -1 0.000 0 1 0 3 - 2 1 2.00 90.00 90.00 - 2100 6225 2100 5775 2625 5250 - 0.000 -1.000 0.000 -3 2 0 2 0 7 50 0 -1 0.000 0 1 0 3 - 2 1 2.00 90.00 90.00 - 3675 6225 3600 5925 3225 5550 - 0.000 -1.000 0.000 -3 2 0 2 0 7 50 0 -1 0.000 0 1 0 3 - 2 1 2.00 90.00 90.00 - 5250 4500 4875 4275 3900 4050 - 0.000 -1.000 0.000 -3 2 0 2 0 7 50 0 -1 0.000 0 1 0 3 - 2 1 2.00 90.00 90.00 - 675 3300 450 2700 1275 2250 - 0.000 -1.000 0.000 -3 2 0 2 0 7 50 0 -1 0.000 0 1 0 3 - 2 1 2.00 90.00 90.00 - 1050 4950 1200 4575 1725 4050 - 0.000 -1.000 0.000 -3 2 0 2 0 7 50 0 -1 0.000 0 1 0 3 - 2 1 2.00 90.00 90.00 - 6675 3225 6675 2850 6225 2475 - 0.000 -1.000 0.000 -3 2 0 2 0 7 50 0 -1 0.000 0 1 0 3 - 2 1 2.00 90.00 90.00 - 4125 5625 3900 5550 3675 5325 - 0.000 -1.000 0.000 -4 0 0 50 0 1 12 0.0000 0 135 1320 3825 1200 Root Source Tree\001 -4 0 0 50 0 2 12 0.0000 0 180 975 4275 5625 Copy and/or\001 -4 0 0 50 0 2 12 0.0000 0 135 1515 4275 5850 create Makefile.in\001 -4 0 0 50 0 2 12 0.0000 0 180 1515 375 5250 Exported resource\001 -4 0 0 50 0 2 12 0.0000 0 180 1065 375 5475 files (xml, ...)\001 diff --git a/doc/DevelopersGuide/srctree_unit.pdf b/doc/DevelopersGuide/srctree_unit.pdf deleted file mode 100644 index d9cbcd5a8..000000000 Binary files a/doc/DevelopersGuide/srctree_unit.pdf and /dev/null differ diff --git a/doc/DevelopersGuide/subtrees.eps b/doc/DevelopersGuide/subtrees.eps deleted file mode 100644 index 66d0ecc98..000000000 --- a/doc/DevelopersGuide/subtrees.eps +++ /dev/null @@ -1,187 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: subtrees.eps -%%Creator: fig2dev Version 3.2 Patchlevel 3c -%%CreationDate: Thu Jul 26 11:57:22 2001 -%%For: tajchman@nikyo (Marc Tajchman - SFME/LGLS) -%%BoundingBox: 0 0 466 215 -%%Magnification: 1.0000 -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def - -end -save -newpath 0 215 moveto 0 0 lineto 466 0 lineto 466 215 lineto closepath clip newpath --58.0 236.0 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def - -$F2psBegin -%%Page: 1 1 -10 setmiterlimit - 0.06000 0.06000 sc -% -% Fig objects follow -% -% Polyline -7.500 slw -n 3900 1950 m 5175 1950 l 5175 2550 l 3900 2550 l - cp gs col0 s gr -/Times-Bold ff 180.00 scf sf -4050 2175 m -gs 1 -1 sc (Top Build) col0 sh gr -/Times-Bold ff 180.00 scf sf -4050 2400 m -gs 1 -1 sc (Directory) col0 sh gr -% Polyline -n 1275 1425 m 3000 1425 l 3000 2250 l 1275 2250 l - cp gs col0 s gr -/Times-Bold ff 180.00 scf sf -1425 1650 m -gs 1 -1 sc (Top Source) col0 sh gr -/Times-Bold ff 180.00 scf sf -1425 1875 m -gs 1 -1 sc (Directory) col0 sh gr -/Times-Bold ff 180.00 scf sf -1425 2100 m -gs 1 -1 sc (\(SALOME_ROOT\)) col0 sh gr -% Polyline -n 4350 2550 m - 3825 3300 l gs col0 s gr -% Polyline -n 4575 2550 m - 4650 3300 l gs col0 s gr -% Polyline -n 7350 1650 m - 7575 2475 l gs col0 s gr -% Polyline -n 7800 1650 m - 8175 2550 l gs col0 s gr -% Polyline -n 7050 1650 m - 6750 2550 l gs col0 s gr -% Polyline -n 6675 1050 m 8100 1050 l 8100 1650 l 6675 1650 l - cp gs col0 s gr -% Polyline -n 1939 2238 m - 1189 2913 l gs col0 s gr -% Polyline -n 2175 2250 m - 2175 2850 l gs col0 s gr -% Polyline -n 2442 2270 m - 2892 3020 l gs col0 s gr -% Polyline -15.000 slw -n 3780 1650 m 3600 1650 3600 3720 180 arcto 4 {pop} repeat - 3600 3900 5595 3900 180 arcto 4 {pop} repeat - 5775 3900 5775 1830 180 arcto 4 {pop} repeat - 5775 1650 3780 1650 180 arcto 4 {pop} repeat - cp gs col0 s gr -% Polyline -n 1230 1050 m 1050 1050 1050 3570 180 arcto 4 {pop} repeat - 1050 3750 3045 3750 180 arcto 4 {pop} repeat - 3225 3750 3225 1230 180 arcto 4 {pop} repeat - 3225 1050 1230 1050 180 arcto 4 {pop} repeat - cp gs col0 s gr -% Polyline -n 6705 825 m 6525 825 6525 2820 180 arcto 4 {pop} repeat - 6525 3000 8520 3000 180 arcto 4 {pop} repeat - 8700 3000 8700 1005 180 arcto 4 {pop} repeat - 8700 825 6705 825 180 arcto 4 {pop} repeat - cp gs col0 s gr -% Polyline -7.500 slw -n 2025 1425 m - 3000 375 l gs col0 s gr -% Polyline -n 4575 1950 m - 4425 675 l gs col0 s gr -% Polyline -n 7275 1050 m - 5925 375 l gs col0 s gr -/Times-Bold ff 180.00 scf sf -6825 1275 m -gs 1 -1 sc (Top Installation) col0 sh gr -/Times-Bold ff 180.00 scf sf -6825 1500 m -gs 1 -1 sc (Directory) col0 sh gr -/Times-Bold ff 180.00 scf sf -7125 675 m -gs 1 -1 sc (Install Subtree) col0 sh gr -/Times-Bold ff 180.00 scf sf -975 900 m -gs 1 -1 sc (Source Subtree) col0 sh gr -/Times-Bold ff 180.00 scf sf -4650 1500 m -gs 1 -1 sc (Build Subtree) col0 sh gr -$F2psEnd -rs diff --git a/doc/DevelopersGuide/subtrees.fig b/doc/DevelopersGuide/subtrees.fig deleted file mode 100644 index 90918a3de..000000000 --- a/doc/DevelopersGuide/subtrees.fig +++ /dev/null @@ -1,57 +0,0 @@ -#FIG 3.2 -Portrait -Center -Inches -Letter -100.00 -Single --2 -1200 2 -6 3900 1950 5175 2550 -2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5 - 3900 1950 5175 1950 5175 2550 3900 2550 3900 1950 -4 0 0 50 0 2 12 0.0000 0 180 780 4050 2175 Top Build\001 -4 0 0 50 0 2 12 0.0000 0 180 780 4050 2400 Directory\001 --6 -6 1275 1425 3000 2250 -2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5 - 1275 1425 3000 1425 3000 2250 1275 2250 1275 1425 -4 0 0 50 0 2 12 0.0000 0 180 945 1425 1650 Top Source\001 -4 0 0 50 0 2 12 0.0000 0 180 780 1425 1875 Directory\001 -4 0 0 50 0 2 12 0.0000 0 180 1530 1425 2100 (SALOME_ROOT)\001 --6 -2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2 - 4350 2550 3825 3300 -2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2 - 4575 2550 4650 3300 -2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2 - 7350 1650 7575 2475 -2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2 - 7800 1650 8175 2550 -2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2 - 7050 1650 6750 2550 -2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5 - 6675 1050 8100 1050 8100 1650 6675 1650 6675 1050 -2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2 - 1939 2238 1189 2913 -2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2 - 2175 2250 2175 2850 -2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2 - 2442 2270 2892 3020 -2 4 0 2 0 7 50 0 -1 0.000 0 0 12 0 0 5 - 5775 3900 3600 3900 3600 1650 5775 1650 5775 3900 -2 4 0 2 0 7 50 0 -1 0.000 0 0 12 0 0 5 - 3225 3750 1050 3750 1050 1050 3225 1050 3225 3750 -2 4 0 2 0 7 50 0 -1 0.000 0 0 12 0 0 5 - 8700 3000 6525 3000 6525 825 8700 825 8700 3000 -2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2 - 2025 1425 3000 375 -2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2 - 4575 1950 4425 675 -2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2 - 7275 1050 5925 375 -4 0 0 50 0 2 12 0.0000 0 180 1290 6825 1275 Top Installation\001 -4 0 0 50 0 2 12 0.0000 0 180 780 6825 1500 Directory\001 -4 0 0 50 0 2 12 0.0000 0 135 1185 7125 675 Install Subtree\001 -4 0 0 40 0 2 12 0.0000 0 135 1080 4650 1500 Build Subtree\001 -4 0 0 50 0 2 12 0.0000 0 135 1245 975 900 Source Subtree\001 diff --git a/doc/DevelopersGuide/subtrees.pdf b/doc/DevelopersGuide/subtrees.pdf deleted file mode 100644 index d29044b39..000000000 Binary files a/doc/DevelopersGuide/subtrees.pdf and /dev/null differ diff --git a/doc/KernelResources/kernel_resources-1.html b/doc/KernelResources/kernel_resources-1.html deleted file mode 100644 index 6652dc450..000000000 --- a/doc/KernelResources/kernel_resources-1.html +++ /dev/null @@ -1,224 +0,0 @@ - - - - - SALOME Kernel resources for developer: Trace and debug Utilities - - - - - -Next -Previous -Contents -
-

1. Trace and debug Utilities

- -

During the development process, an execution log is useful to -identify problems. This log contains messages, variables values, -source files names and line numbers. It is recommended to verify -assertions on variables values and if necessary, to stop the execution -at debug time, in order to validate all parts of code. -

1.1 Two modes: debug and release -

- -

The goal of debug mode is to check as many features as possible -during the early stages of the development process. The purpose of -the utilities provided in SALOME is to help the developer to add -detailed traces and check variables values, without writing a lot -of code. -

When the code is assumed to be valid, the release mode optimizes -execution, in terms of speed, memory, and display only user level -messages. -

But, some informations must always be displayed in both modes: -especially messages concerning environment or internal errors, with -version identification. When an end user is confronted to such a -message, he may refer to a configuration documentation or send the -message to the people in charge of SALOME installation, or to the -development team, following the kind of error. -

1.2 C++ Macros for trace and debug -

- -

SALOME provides C++ macros for trace and debug. These macros -are in SALOME/src/utils/utilities.h and this file must be included -in C++ source. Some macros are activated only in debug mode, others -are always activated. To activate the debug mode, _DEBUG_ must be -defined, which is the case when SALOME Makefiles are generated from -configure, without options. When _DEBUG_ is undefined (release mode), -the debug mode macros are defined empty (they do nothing). So, when -switching from debug to release, it is possible (and recommended) -to let the macro calls unchanged in the source. -

All the macros writing on the standard output start by flushing -the standard error. At the end of the display those macros flush -the standard output. -

Two informations are systematically added in front of the information -displayed: -

-

    -
  • the name of the source file in which the macros is set;
  • -
  • the line number of the source file at which the macro is set.
  • -
-

Macros defined in debug and release modes

- -

INFOS_COMPILATION

- -

The C++ macro INFOS_COMPILATION writes on the standard output -informations about the compiling process: -

-

    -
  • the name of the compiler : g++, KCC, CC, pgCC;
  • -
  • the date and the time of the compiling processing process.
  • -
-

This macro INFOS_COMPILATION does not have any argument. Moreover, -it is defined in both compiling mode : _DEBUG_ and _RELEASE_. -

Example : -

-

-#include "utilities.h"
-int main(int argc , char **argv) 
-{ 
-  INFOS_COMPILATION;
-  ...
-}
-
-

INFOS(str)

- -

In both compiling mode _DEBUG_ and _RELEASE_, The C++ macro INFOS -writes on the standard output the string which has been passed in -argument by the user. -

Example : -

-

-#include "utilities.h"
-int main(int argc , char **argv)
-{ 
-  ... 
-  INFOS("NORMAL END OF THE PROCESS"); 
-  return 0; 
-}
-
-

displays : -

-

-main.cxx [5] : NORMAL END OF THE PROCESS
-
-

Macros defined only in debug mode

- -

MESSAGE(str)

- -

In _DEBUG_ compiling mode only, the C++ macro MESSAGE writes -on the standard output the string which has been passed in argument -by the user. In _RELEASE_ compiling mode, this macro is blank. -

Example : -

-

-#include "utilities.h" 
-#include <string> 
-using namespace std; 
-int main(int argc , char **argv) 
-{ 
-  ... 
-  const char *str = "Salome";
-  MESSAGE(str);
-  ... const string st; 
-  st = "Aster"; 
-  MESSAGE(c_str(st+" and CASTEM")); 
-  return 0;
-}
-
-

displays : -

-

-- Trace main.cxx [8] : Salome
-- Trace main.cxx [12] : Aster and CASTEM
-
-

BEGIN_OF(func_name)

- -

In _DEBUG_ compiling mode, The C++ macro BEGIN_OF appends the -string "Begin of " to the one passed in argument by the -user and displays the result on the standard output. In _RELEASE_ -compiling mode, this macro is blank. -

Example : -

-

-#include "utilities.h" 
-int main(int argc , char **argv) 
-{ 
-  BEGIN_OF(argv[0]);
-  return 0;
-}
-
-

displays : -

-

-- Trace main.cxx [3] : Begin of a.out
-
-

END_OF(func_name)

- -

In _DEBUG_ compiling mode, The C++ macro END_OF appends the string -"Normal end of " to the one passed in argument by the user -and displays the result on the standard output. In _RELEASE_ compiling -mode, this macro is blank. -

Example : -

-

-#include "utilities.h" 
-int main(int argc , char **argv) 
-{ 
-  END_OF(argv[0]);
-  return 0; 
-}
-
-

displays : -

-

-- Trace main.cxx [4] : Normal end of a.out
-
-

SCRUTE(var)

- -

In _DEBUG_ compiling mode, The C++ macro SCRUTE displays its -argument which is an application variable followed by the value of -the variable. In _RELEASE_ compiling mode, this macro is blank. -

Example : -

-

-#include "utilities.h"
-int main(int argc , char **argv) 
-{ 
-  const int i=999;
-  if( i > 0 ) SCRUTE(i) ; i=i+1;
-  return 0;
-}
-
-

displays : -

-

-- Trace main.cxx [5] : i=999
-
-

ASSERT(condition)

- -

In _DEBUG_ compiling mode only, The C++ macro ASSERT checks the -expression passed in argument to be not NULL. If it is NULL the process -is stopped and the condition is written on the standard output. In -_RELEASE_ compiling mode, this macro is blank. N.B. : if ASSERT is -already defined, this macro is ignored. -

Example : -

-

-#include "utilities.h" 
-... 
-const char *ptrS = fonc();
-ASSERT(ptrS!=NULL); 
-cout << strlen(ptrS); 
-float table[10];
-int k;
-... 
-ASSERT(k<10);
-cout << table[k];
-
-
-Next -Previous -Contents - - diff --git a/doc/KernelResources/kernel_resources-2.html b/doc/KernelResources/kernel_resources-2.html deleted file mode 100644 index 0557f1838..000000000 --- a/doc/KernelResources/kernel_resources-2.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - - SALOME Kernel resources for developer: Exceptions - - - - - -Next -Previous -Contents -
-

2. Exceptions

- -

2.1 C++ exceptions: class SALOME_Exception -

- -

definition

- -

The class SALOME_Exception provides a generic method to send -a message, with optional source file name and line number. This class -is intended to serve as a base class for all kinds of exceptions -SALOME code. All the exceptions derived from SALOME_Exception could -be handled in a single catch, in which the message associated to -the exception is displayed, or sent to a log file. -

The class SALOME_Exception inherits its behavior from the STL -class exception. -

usage

- -

The header SALOME/src/utils/utils_SALOME_Exception.hxx must be -included in the C++ source, when raised or trapped: -

#include "utils_SALOME_Exception.hxx" -

The SALOME_Exception constructor is: -

-

-SALOME_Exception( const char *text,
-                  const char *fileName=0, 
-                  const unsigned int lineNumber=0 );
-
-

The exception is raised like this: -

-

-throw SALOME_Exception("my pertinent message");
-
-

or like this: -

-

-throw SALOME_Exception(LOCALIZED("my pertinent message"));
-
-

where LOCALIZED is a macro provided with utils_SALOME_Exception.hxx -which gives file name and line number. -

The exception is handled like this: -

-

-try
-  {
-    ...
-  }
-catch (const SALOME_Exception &ex)
-  {
-    cerr << ex.what() <<endl;
-  }
-
-

The what() method overrides the one defined in the STL exception -class. -

2.2 CORBA exceptions -

- -

definition

- -

The idl SALOME_Exception provides a generic CORBA exception for -SALOME, with an attribute that gives an exception type,a message, -plus optional source file name and line number. -

This idl is intended to serve for all user CORBA exceptions raised -in SALOME code, as IDL specification does not support exception inheritance. -So, all the user CORBA exceptions from SALOME could be handled in -a single catch. -

The exception types defined in idl are: -

-

-
COMM

CORBA communication problem, -

BAD_PARAM

Bad User parameters, -

INTERNAL_ERROR

application level problem (often irrecoverable). -

-

CORBA system and user exceptions already defined in the packages -used within SALOME, such as OmniORB exceptions, must be handled separately. -

usage

- -

CORBA servant, C++

- -

The CORBA Server header for SALOME_Exception and a macro to throw -the exception are provided with the header SALOME/src/Utils/Utils_CorbaException.hxx: -

-

-#include "Utils_CorbaException.hxx"
-
-

The exception is raised with a macro which appends file name -and line number. -

-

-if (myStudyName.size() == 0)
-   THROW_SALOME_CORBA_EXCEPTION("No Study Name given", \
-                                SALOME::BAD_PARAM);
-
-

CORBA Client, GUI Qt C++

- -

The CORBA Client header for SALOME_Exception and a Qt function -header that displays a message box are provided in SALOME/src/SALOMEGUI/SALOMEGUI_QtCatchCorbaException.hxx: -

-

-#include "SALOMEGUI_QtCatchCorbaException.hxx"
-
-

A typical exchange with a CORBA Servant will be: -

-

-try
-  {
-    ... // one ore more CORBA calls
-  }
-catch (const SALOME::SALOME_Exception & S_ex)
-  {
-    QtCatchCorbaException(S_ex);
-  }
-
-

CORBA Client, C++, without GUI

- -

Nothing specific has been provided to the developer yet. See -the idl or the Qt function SALOMEGUI_QtCatchCorbaException.hxx to -see how to get the information given by the exception object. -


-Next -Previous -Contents - - diff --git a/doc/KernelResources/kernel_resources-3.html b/doc/KernelResources/kernel_resources-3.html deleted file mode 100644 index 64cdedde5..000000000 --- a/doc/KernelResources/kernel_resources-3.html +++ /dev/null @@ -1,77 +0,0 @@ - - - - - SALOME Kernel resources for developer: Miscellaneous tools - - - - -Next -Previous -Contents -
-

3. Miscellaneous tools

- -

3.1 Singleton -

- -

Definition

- -

A singleton is an application data which is created and deleted -only once at the end of the application process. The C++ compiler -allows the user to create a static singleton data before the first -executable statement. They are deleted after the last statement execution. -

The SINGLETON_ template class deals with dynamic singleton. It -is useful for functor objects. For example, an object that connects -the application to a system at creation and disconnects the application -at deletion. -

Usage

- -

To create a single instance a POINT object : -

-

-# include "Utils_SINGLETON.hxx"
-... 
-POINT *ptrPoint=SINGLETON_<POINT>::Instance() ; 
-assert(ptrPoint!=NULL) ;
-
-

No need to delete ptrPoint. Deletion is achieved automatically -at exit. If the user tries to create more than one singleton by using -the class method SINGLETON_<TYPE>::Instance(), the pointer -is returned with the same value even if this is done in different -functions (threads ?). -

-

-POINT *p1=SINGLETON_<POINT>::Instance() ;
-... 
-POINT *p2=SINGLETON_<POINT>::Instance() ; 
-assert(p1==p2)
-
-

Design description

- -

Here are the principles features of the singleton design : -

-

    -
  • the user creates an object of class TYPE by using the class method -SINGLETON_<TYPE>::Instance() which returns a pointer to the -single object ;
  • -
  • to create an object, SINGLETON_<TYPE>::Instance() uses -the default constructor of class TYPE ;
  • -
  • at the same time, this class method creates a destructor object -which is added to the generic list of destructor objects to be executed -at the end of the application (atexit) ;
  • -
  • at the end of the application process all the deletions are performed -by the Nettoyage() C function which executes the destruction objects -end then deletes the destructions objects themselves ;
  • -
  • the Nettoyage() C function using atexit() C function is embedded -in a static single object ATEXIT_().
  • -
-

-

-


-Next -Previous -Contents - - diff --git a/doc/KernelResources/kernel_resources.html b/doc/KernelResources/kernel_resources.html deleted file mode 100644 index 6a11ac423..000000000 --- a/doc/KernelResources/kernel_resources.html +++ /dev/null @@ -1,56 +0,0 @@ - - - - - SALOME Kernel resources for developer - - - - - -Next -Previous -Contents -
-

SALOME Kernel resources for developer

- -

Antoine Yessayan, Paul Rascle

Version 0.1 January 16, 2002 -


-ABSTRACT -
-


-This document describes the development environment for C++ and - Python. Makefiles generation and usage are introduced in another - document: "using the SALOME configuration and building system environment". - Development environment is intended here as: trace and debug macros - usage; SALOME exceptions usage, in C++ and Python; user CORBA exceptions - usage, in C++ and Python, with and without Graphical User Interface; - some general purpose services such as singleton, used for CORBA connection - and disconnection. -
-

-

1. Trace and debug Utilities

- - -

-

2. Exceptions

- - -

-

3. Miscellaneous tools

- - -
-Next -Previous -Contents - - diff --git a/doc/KernelResources/kernel_resources.lyx b/doc/KernelResources/kernel_resources.lyx deleted file mode 100644 index d696300b2..000000000 --- a/doc/KernelResources/kernel_resources.lyx +++ /dev/null @@ -1,915 +0,0 @@ -#LyX 1.1 created this file. For more info see http://www.lyx.org/ -\lyxformat 218 -\textclass linuxdoc -\language english -\inputencoding default -\fontscheme default -\graphics default -\paperfontsize 10 -\spacing single -\papersize Default -\paperpackage a4 -\use_geometry 0 -\use_amsmath 0 -\paperorientation portrait -\secnumdepth 3 -\tocdepth 3 -\paragraph_separation indent -\defskip medskip -\quotes_language english -\quotes_times 2 -\papercolumns 1 -\papersides 1 -\paperpagestyle default - -\layout Title -\added_space_top vfill \added_space_bottom vfill -SALOME Kernel resources for developer -\layout Author - -Antoine Yessayan, Paul Rascle -\layout Date - -Version 0.1 January 16, 2002 -\layout Abstract - -ABSTRACT -\layout Abstract - -This document describes the development environment for C++ and Python. - Makefiles generation and usage are introduced in another document: -\begin_inset Quotes eld -\end_inset - -using the SALOME configuration and building system environment -\begin_inset Quotes erd -\end_inset - -. - Development environment is intended here as: trace and debug macros usage; - SALOME exceptions usage, in C++ and Python; user CORBA exceptions usage, - in C++ and Python, with and without Graphical User Interface; some general - purpose services such as singleton, used for CORBA connection and disconnection. -\layout Standard - - -\begin_inset LatexCommand \tableofcontents{} - -\end_inset - - -\layout Section - -Trace and debug Utilities -\layout Standard - -During the development process, an execution log is useful to identify problems. - This log contains messages, variables values, source files names and line - numbers. - It is recommended to verify assertions on variables values and if necessary, - to stop the execution at debug time, in order to validate all parts of - code. -\layout Subsection - -Two modes: debug and release -\layout Standard - -The goal of debug mode is to check as many features as possible during the - early stages of the development process. - The purpose of the utilities provided in SALOME is to help the developer - to add detailed traces and check variables values, without writing a lot - of code. -\layout Standard - -When the code is assumed to be valid, the release mode optimizes execution, - in terms of speed, memory, and display only user level messages. -\layout Standard - -But, some informations must always be displayed in both modes: especially - messages concerning environment or internal errors, with version identification. - When an end user is confronted to such a message, he may refer to a configurati -on documentation or send the message to the people in charge of SALOME installat -ion, or to the development team, following the kind of error. -\layout Subsection - -C++ Macros for trace and debug -\layout Standard - -SALOME provides C++ macros for trace and debug. - These macros are in -\family typewriter -SALOME/src/utils/utilities.h -\family default - and this file must be included in C++ source. - Some macros are activated only in debug mode, others are always activated. - To activate the debug mode, -\family typewriter -_DEBUG_ -\family default - must be defined, which is the case when SALOME Makefiles are generated - from configure, without options. - When -\family typewriter -_DEBUG_ -\family default - is undefined (release mode), the debug mode macros are defined empty (they - do nothing). - So, when switching from debug to release, it is possible (and recommended) - to let the macro calls unchanged in the source. -\layout Standard - -All the macros writing on the standard output start by flushing the standard - error. - At the end of the display those macros flush the standard output. -\layout Standard - -Two informations are systematically added in front of the information displayed: -\layout Itemize - -the name of the source file in which the macros is set; -\layout Itemize - -the line number of the source file at which the macro is set. -\layout Subsubsection - -Macros defined in debug and release modes -\layout Paragraph - -INFOS_COMPILATION -\layout Standard - -The C++ macro -\family typewriter -INFOS_COMPILATION -\family default - writes on the standard output informations about the compiling process: - -\layout Itemize - -the name of the compiler : -\family typewriter -g++, KCC, CC, pgCC -\family default -; -\layout Itemize - -the date and the time of the compiling processing process. -\layout Standard - -This macro -\family typewriter -INFOS_COMPILATION -\family default - does not have any argument. - Moreover, it is defined in both compiling mode : -\family typewriter -_DEBUG_ -\family default - and -\family typewriter -_RELEASE_ -\family default -. -\layout Standard - -Example : -\layout Verbatim - -#include "utilities.h" -\layout Verbatim - -int main(int argc , char **argv) -\layout Verbatim - -{ -\layout Verbatim - - INFOS_COMPILATION; -\layout Verbatim - - ... -\layout Verbatim - -} -\layout Paragraph - -INFOS(str) -\layout Standard - -In both compiling mode -\family typewriter -_DEBUG_ -\family default - and -\family typewriter -_RELEASE_ -\family default -, The C++ macro -\family typewriter -INFOS -\family default - writes on the standard output the string which has been passed in argument - by the user. -\layout Standard - -Example : -\layout Verbatim - -#include "utilities.h" -\layout Verbatim - -int main(int argc , char **argv) -\layout Verbatim - -{ -\layout Verbatim - - ... - -\layout Verbatim - - INFOS("NORMAL END OF THE PROCESS"); -\layout Verbatim - - return 0; -\layout Verbatim - -} -\layout Standard - -displays : -\layout Verbatim - -main.cxx [5] : NORMAL END OF THE PROCESS -\layout Subsubsection - -Macros defined only in debug mode -\layout Paragraph - -MESSAGE(str) -\layout Standard - -In -\family typewriter -_DEBUG_ -\family default - compiling mode only, the C++ macro -\family typewriter -MESSAGE -\family default - writes on the standard output the string which has been passed in argument - by the user. - In -\family typewriter -_RELEASE_ -\family default - compiling mode, this macro is blank. -\layout Standard - -Example : -\layout Verbatim - -#include "utilities.h" -\layout Verbatim - -#include -\layout Verbatim - -using namespace std; -\layout Verbatim - -int main(int argc , char **argv) -\layout Verbatim - -{ -\layout Verbatim - - ... - -\layout Verbatim - - const char *str = "Salome"; -\layout Verbatim - - MESSAGE(str); -\layout Verbatim - - ... - const string st; -\layout Verbatim - - st = "Aster"; -\layout Verbatim - - MESSAGE(c_str(st+" and CASTEM")); -\layout Verbatim - - return 0; -\layout Verbatim - -} -\layout Standard - -displays : -\layout Verbatim - -- Trace main.cxx [8] : Salome -\layout Verbatim - -- Trace main.cxx [12] : Aster and CASTEM -\layout Paragraph - -BEGIN_OF(func_name) -\layout Standard - -In -\family typewriter -_DEBUG_ -\family default - compiling mode, The C++ macro -\family typewriter -BEGIN_OF -\family default - appends the string -\family typewriter -"Begin of " -\family default - to the one passed in argument by the user and displays the result on the - standard output. - In -\family typewriter -_RELEASE_ -\family default - compiling mode, this macro is blank. -\layout Standard - -Example : -\layout Verbatim - -#include "utilities.h" -\layout Verbatim - -int main(int argc , char **argv) -\layout Verbatim - -{ -\layout Verbatim - - BEGIN_OF(argv[0]); -\layout Verbatim - - return 0; -\layout Verbatim - -} -\layout Standard - -displays : -\layout Verbatim - -- Trace main.cxx [3] : Begin of a.out -\layout Paragraph - -END_OF(func_name) -\layout Standard - -In -\family typewriter -_DEBUG_ -\family default - compiling mode, The C++ macro -\family typewriter -END_OF -\family default - appends the string -\family typewriter -"Normal end of " -\family default - to the one passed in argument by the user and displays the result on the - standard output. - In -\family typewriter -_RELEASE_ -\family default - compiling mode, this macro is blank. -\layout Standard - -Example : -\layout Verbatim - -#include "utilities.h" -\layout Verbatim - -int main(int argc , char **argv) -\layout Verbatim - -{ -\layout Verbatim - - END_OF(argv[0]); -\layout Verbatim - - return 0; -\layout Verbatim - -} -\layout Standard - -displays : -\layout Verbatim - -- Trace main.cxx [4] : Normal end of a.out -\layout Paragraph - -SCRUTE(var) -\layout Standard - -In -\family typewriter -_DEBUG_ -\family default - compiling mode, The C++ macro -\family typewriter -SCRUTE -\family default - displays its argument which is an application variable followed by the - value of the variable. - In -\family typewriter -_RELEASE_ -\family default - compiling mode, this macro is blank. -\layout Standard - -Example : -\layout Verbatim - -#include "utilities.h" -\layout Verbatim - -int main(int argc , char **argv) -\layout Verbatim - -{ -\layout Verbatim - - const int i=999; -\layout Verbatim - - if( i > 0 ) SCRUTE(i) ; i=i+1; -\layout Verbatim - - return 0; -\layout Verbatim - -} -\layout Standard - -displays : -\layout Verbatim - -- Trace main.cxx [5] : i=999 -\layout Paragraph - -ASSERT(condition) -\layout Standard - -In -\family typewriter -_DEBUG_ -\family default - compiling mode only, The C++ macro -\family typewriter -ASSERT -\family default - checks the expression passed in argument to be not NULL. - If it is NULL the process is stopped and the condition is written on the - standard output. - In -\family typewriter -_RELEASE_ -\family default - compiling mode, this macro is blank. - N.B. - : if -\family typewriter -ASSERT -\family default - is already defined, this macro is ignored. -\layout Standard - -Example : -\layout Verbatim - -#include "utilities.h" -\layout Verbatim - -... - -\layout Verbatim - -const char *ptrS = fonc(); -\layout Verbatim - -ASSERT(ptrS!=NULL); -\layout Verbatim - -cout << strlen(ptrS); -\layout Verbatim - -float table[10]; -\layout Verbatim - -int k; -\layout Verbatim - -... - -\layout Verbatim - -ASSERT(k<10); -\layout Verbatim - -cout << table[k]; -\layout Section - -Exceptions -\layout Subsection - -C++ exceptions: class SALOME_Exception -\layout Subsubsection - -definition -\layout Standard - -The class -\family typewriter -SALOME_Exception -\family default - provides a generic method to send a message, with optional source file - name and line number. - This class is intended to serve as a base class for all kinds of exceptions - SALOME code. - All the exceptions derived from -\family typewriter -SALOME_Exception -\family default - could be handled in a single catch, in which the message associated to - the exception is displayed, or sent to a log file. -\layout Standard - -The class -\family typewriter -SALOME_Exception -\family default - inherits its behavior from the STL class exception. -\layout Subsubsection - -usage -\layout Standard - -The header -\family typewriter -SALOME/src/utils/utils_SALOME_Exception.hxx -\family default - must be included in the C++ source, when raised or trapped: -\layout Standard - - -\family typewriter -#include -\family default -" -\family typewriter -utils_SALOME_Exception.hxx -\family default -" -\layout Standard - -The -\family typewriter -SALOME_Exception -\family default - constructor is: -\layout Verbatim - -SALOME_Exception( const char *text, -\layout Verbatim - - const char *fileName=0, -\layout Verbatim - - const unsigned int lineNumber=0 ); -\layout Standard - -The exception is raised like this: -\layout Verbatim - -throw SALOME_Exception("my pertinent message"); -\layout Standard - -or like this: -\layout Verbatim - -throw SALOME_Exception(LOCALIZED("my pertinent message")); -\layout Standard - -where LOCALIZED is a macro provided with -\family typewriter -utils_SALOME_Exception.hxx -\family default - which gives file name and line number. -\layout Standard - -The exception is handled like this: -\layout Verbatim - -try -\layout Verbatim - - { -\layout Verbatim - - ... -\layout Verbatim - - } -\layout Verbatim - -catch (const SALOME_Exception &ex) -\layout Verbatim - - { -\layout Verbatim - - cerr << ex.what() <::Instance() ; -\layout Verbatim - -assert(ptrPoint!=NULL) ; -\layout Standard - -No need to delete ptrPoint. - Deletion is achieved automatically at exit. - If the user tries to create more than one singleton by using the class - method -\family typewriter -SINGLETON_::Instance() -\family default -, the pointer is returned with the same value even if this is done in different - functions (threads ?). -\layout Verbatim - -POINT *p1=SINGLETON_::Instance() ; -\layout Verbatim - -... - -\layout Verbatim - -POINT *p2=SINGLETON_::Instance() ; -\layout Verbatim - -assert(p1==p2) -\layout Subsubsection - -Design description -\layout Standard - -Here are the principles features of the singleton design : -\layout Itemize - -the user creates an object of class -\family typewriter -TYPE -\family default - by using the class method -\family typewriter -SINGLETON_::Instance() -\family default - which returns a pointer to the single object ; -\layout Itemize - -to create an object, -\family typewriter -SINGLETON_::Instance() -\family default - uses the default constructor of class -\family typewriter -TYPE -\family default - ; -\layout Itemize - -at the same time, this class method creates a destructor object which is - added to the generic list of destructor objects to be executed at the end - of the application ( -\family typewriter -atexit -\family default -) ; -\layout Itemize - -at the end of the application process all the deletions are performed by - the -\family typewriter -Nettoyage() -\family default - C\SpecialChar ~ -function which executes the destruction objects end then deletes the destructi -ons objects themselves ; -\layout Itemize - -the -\family typewriter -Nettoyage() -\family default - C \SpecialChar ~ -function using atexit() C \SpecialChar ~ -function is embedded in a static single object - -\family typewriter -ATEXIT_() -\family default -. -\the_end diff --git a/doc/html/INPUT/HTML/Logger.html b/doc/html/INPUT/HTML/Logger.html deleted file mode 100644 index 1a73901c0..000000000 --- a/doc/html/INPUT/HTML/Logger.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - -
interface Logger
IDL file
Python
void putMessage ( in string message )
putMessage ( message )
void ping ( )
ping ( )

-
diff --git a/doc/html/INPUT/HTML/SALOMEDS.html b/doc/html/INPUT/HTML/SALOMEDS.html deleted file mode 100644 index 52291faa3..000000000 --- a/doc/html/INPUT/HTML/SALOMEDS.html +++ /dev/null @@ -1,602 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
interface Study
IDL file
Python
PersistentReference GetPersistentReference ( )
return_value = GetPersistentReference ( )
SalomeReference GetTransientReference ( )
return_value = GetTransientReference ( )
boolean IsEmpty ( )
return_value = IsEmpty ( )
SComponent FindComponent ( in string aComponentName )
return_value = FindComponent ( aComponentName )
SComponent FindComponentID ( in ID aComponentID )
return_value = FindComponentID ( aComponentID )
SObject FindObject ( in string anObjectName )
return_value = FindObject ( anObjectName )
SObject FindObjectID ( in ID aObjectID )
return_value = FindObjectID ( aObjectID )
SObject FindObjectIOR ( in ID aObjectIOR )
return_value = FindObjectIOR ( aObjectIOR )
ListOfSObject FindObjectByName ( in string anObjectName, in string aComponentName )
return_value = FindObjectByName ( anObjectName, aComponentName )
SObject FindObjectByPath ( in string thePath )
return_value = FindObjectByPath ( thePath )
string GetObjectPath ( in Object theObject )
return_value = GetObjectPath ( theObject )
void SetContext ( in string thePath )
SetContext ( thePath )
string GetContext ( )
return_value = GetContext ( )
ListOfStrings GetObjectNames ( in string theContext )
return_value = GetObjectNames ( theContext )
ListOfStrings GetDirectoryNames ( in string theContext )
return_value = GetDirectoryNames ( theContext )
ListOfStrings GetFileNames ( in string theContext )
return_value = GetFileNames ( theContext )
ListOfStrings GetComponentNames ( in string theContext )
return_value = GetComponentNames ( theContext )
ChildIterator NewChildIterator ( in SObject aSO )
return_value = NewChildIterator ( aSO )
SComponentIterator NewComponentIterator ( )
return_value = NewComponentIterator ( )
StudyBuilder NewBuilder ( )
return_value = NewBuilder ( )
void UpdateIORLabelMap ( in string anIOR, in string anEntry )
UpdateIORLabelMap ( anIOR, anEntry )
AttributeStudyProperties GetProperties ( )
return_value = GetProperties ( )
boolean IsModified ( )
return_value = IsModified ( )
ListOfSObject FindDependances ( in SObject anObject )
return_value = FindDependances ( anObject )
string GetLastModificationDate ( )
return_value = GetLastModificationDate ( )
ListOfDates GetModificationsDate ( )
return_value = GetModificationsDate ( )
string ConvertObjectToIOR ( in Object theObject )
return_value = ConvertObjectToIOR ( theObject )
Object ConvertIORToObject ( in string theIOR )
return_value = ConvertIORToObject ( theIOR )
UseCaseBuilder GetUseCaseBuilder ( )
return_value = GetUseCaseBuilder ( )
void Close ( )
Close ( )
void EnableUseCaseAutoFilling ( in boolean isEnabled )
EnableUseCaseAutoFilling ( isEnabled )

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
interface StudyBuilder
IDL file
Python
SComponent NewComponent ( in string ComponentDataType )
return_value = NewComponent ( ComponentDataType )
void DefineComponentInstance ( in SComponent aComponent, in Object ComponentIOR )
DefineComponentInstance ( aComponent, ComponentIOR )
void RemoveComponent ( in SComponent aComponent )
RemoveComponent ( aComponent )
SObject NewObject ( in SObject theFatherObject )
return_value = NewObject ( theFatherObject )
SObject NewObjectToTag ( in SObject theFatherObject, in long atag )
return_value = NewObjectToTag ( theFatherObject, atag )
void RemoveObject ( in SObject anObject )
RemoveObject ( anObject )
void RemoveObjectWithChildren ( in SObject anObject )
RemoveObjectWithChildren ( anObject )
void LoadWith ( in SComponent sco, in Driver Engine )
LoadWith ( sco, Engine )
void Load ( in SObject sco )
Load ( sco )
GenericAttribute FindOrCreateAttribute ( in SObject anObject, in string aTypeOfAttribute )
return_value = FindOrCreateAttribute ( anObject, aTypeOfAttribute )
boolean FindAttribute ( in SObject anObject, out GenericAttribute anAttribute, in string aTypeOfAttribute )
[ return_value, anAttribute ] = FindAttribute ( anObject, aTypeOfAttribute )
void RemoveAttribute ( in SObject anObject, in string aTypeOfAttribute )
RemoveAttribute ( anObject, aTypeOfAttribute )
void Addreference ( in SObject anObject, in SObject theReferencedObject )
Addreference ( anObject, theReferencedObject )
void AddDirectory ( in string theName )
AddDirectory ( theName )
void SetGUID ( in SObject anObject, in string theGUID )
SetGUID ( anObject, theGUID )
boolean IsGUID ( in SObject anObject, in string theGUID )
return_value = IsGUID ( anObject, theGUID )
void NewCommand ( )
NewCommand ( )
void CommitCommand ( )
CommitCommand ( )
boolean HasOpenCommand ( )
return_value = HasOpenCommand ( )
void AbortCommand ( )
AbortCommand ( )
void Undo ( )
Undo ( )
void Redo ( )
Redo ( )
boolean GetAvailableUndos ( )
return_value = GetAvailableUndos ( )
boolean GetAvailableRedos ( )
return_value = GetAvailableRedos ( )
Callback SetOnAddSObject ( in Callback theCallback )
return_value = SetOnAddSObject ( theCallback )
Callback SetOnRemoveSObject ( in Callback theCallback )
return_value = SetOnRemoveSObject ( theCallback )

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
interface StudyManager
IDL file
Python
void ping ( )
ping ( )
Study NewStudy ( in string study_name )
return_value = NewStudy ( study_name )
Study Open ( in URL aStudyUrl )
return_value = Open ( aStudyUrl )
void Close ( in Study aStudy )
Close ( aStudy )
void Save ( in Study aStudy, in boolean theMultiFile )
Save ( aStudy, theMultiFile )
void SaveASCII ( in Study aStudy, in boolean theMultiFile )
SaveASCII ( aStudy, theMultiFile )
void SaveAs ( in URL aUrl, in Study aStudy, in boolean theMultiFile )
SaveAs ( aUrl, aStudy, theMultiFile )
void SaveAsASCII ( in URL aUrl, in Study aStudy, in boolean theMultiFile )
SaveAsASCII ( aUrl, aStudy, theMultiFile )
ListOfOpenStudies GetOpenStudies ( )
return_value = GetOpenStudies ( )
Study GetStudyByName ( in string aStudyName )
return_value = GetStudyByName ( aStudyName )
Study GetStudyByID ( in short aStudyID )
return_value = GetStudyByID ( aStudyID )
boolean CanCopy ( in SObject theObject )
return_value = CanCopy ( theObject )
boolean Copy ( in SObject theObject )
return_value = Copy ( theObject )
boolean CanPaste ( in SObject theObject )
return_value = CanPaste ( theObject )
SObject Paste ( in SObject theObject )
return_value = Paste ( theObject )

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
interface SObject
IDL file
Python
ID GetID ( )
return_value = GetID ( )
SComponent GetFatherComponent ( )
return_value = GetFatherComponent ( )
SObject GetFather ( )
return_value = GetFather ( )
short Tag ( )
return_value = Tag ( )
boolean FindSubObject ( in long atag, out SObject obj )
[ return_value, obj ] = FindSubObject ( atag )
boolean FindAttribute ( out GenericAttribute anAttribute, in string aTypeOfAttribute )
[ return_value, anAttribute ] = FindAttribute ( aTypeOfAttribute )
boolean ReferencedObject ( out SObject obj )
[ return_value, obj ] = ReferencedObject ( )
ListOfAttributes GetAllAttributes ( )
return_value = GetAllAttributes ( )
Study GetStudy ( )
return_value = GetStudy ( )

- - - - - - - - - - - -
interface GenericAttribute
IDL file
Python
void CheckLocked ( )
CheckLocked ( )

- - - - - - - - - - - - - - - -
interface SComponent
IDL file
Python
string ComponentDataType ( )
return_value = ComponentDataType ( )
boolean ComponentIOR ( out ID theID )
[ return_value, theID ] = ComponentIOR ( )

- - - - - - - - - - - - - - - - - - - - - - - -
interface SComponentIterator
IDL file
Python
void Init ( )
Init ( )
boolean More ( )
return_value = More ( )
void Next ( )
Next ( )
SComponent Value ( )
return_value = Value ( )

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
interface ChildIterator
IDL file
Python
void Init ( )
Init ( )
void InitEx ( in boolean allLevels )
InitEx ( allLevels )
boolean More ( )
return_value = More ( )
void Next ( )
Next ( )
SObject Value ( )
return_value = Value ( )

- - - - - - - - - - - - - - - - - - - - - - - -
interface UseCaseIterator
IDL file
Python
void Init ( in boolean allLevels )
Init ( allLevels )
boolean More ( )
return_value = More ( )
void Next ( )
Next ( )
SObject Value ( )
return_value = Value ( )

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
interface UseCaseBuilder
IDL file
Python
boolean Append ( in SObject theObject )
return_value = Append ( theObject )
boolean Remove ( in SObject theObject )
return_value = Remove ( theObject )
boolean AppendTo ( in SObject theFather, in SObject theObject )
return_value = AppendTo ( theFather, theObject )
boolean InsertBefore ( in SObject theFirst, in SObject theNext )
return_value = InsertBefore ( theFirst, theNext )
boolean SetCurrentObject ( in SObject theObject )
return_value = SetCurrentObject ( theObject )
boolean SetRootCurrent ( )
return_value = SetRootCurrent ( )
boolean HasChildren ( in SObject theObject )
return_value = HasChildren ( theObject )
boolean SetName ( in string theName )
return_value = SetName ( theName )
string GetName ( )
return_value = GetName ( )
boolean IsUseCase ( in SObject theObject )
return_value = IsUseCase ( theObject )
SObject GetCurrentObject ( )
return_value = GetCurrentObject ( )
SObject AddUseCase ( in string theName )
return_value = AddUseCase ( theName )
UseCaseIterator GetUseCaseIterator ( in SObject theObject )
return_value = GetUseCaseIterator ( theObject )

- - - - - - - - - - - - - - - -
interface Callback
IDL file
Python
void OnAddSObject ( in SObject theObject )
OnAddSObject ( theObject )
void OnRemoveSObject ( in SObject theObject )
OnRemoveSObject ( theObject )

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
interface Driver
IDL file
Python
TMPFile Save ( in SComponent theComponent, in string theURL, in boolean isMultiFile )
return_value = Save ( theComponent, theURL, isMultiFile )
TMPFile SaveASCII ( in SComponent theComponent, in string theURL, in boolean isMultiFile )
return_value = SaveASCII ( theComponent, theURL, isMultiFile )
boolean Load ( in SComponent theComponent, in TMPFile theStream, in string theURL, in boolean isMultiFile )
return_value = Load ( theComponent, theStream, theURL, isMultiFile )
boolean LoadASCII ( in SComponent theComponent, in TMPFile theStream, in string theURL, in boolean isMultiFile )
return_value = LoadASCII ( theComponent, theStream, theURL, isMultiFile )
void Close ( in SComponent aSComponent )
Close ( aSComponent )
string ComponentDataType ( )
return_value = ComponentDataType ( )
string IORToLocalPersistentID ( in SObject theSObject, in string IORString, in boolean isMultiFile, in boolean isASCII )
return_value = IORToLocalPersistentID ( theSObject, IORString, isMultiFile, isASCII )
string LocalPersistentIDToIOR ( in SObject theSObject, in string aLocalPersistentID, in boolean isMultiFile, in boolean isASCII )
return_value = LocalPersistentIDToIOR ( theSObject, aLocalPersistentID, isMultiFile, isASCII )
boolean CanPublishInStudy ( in Object theIOR )
return_value = CanPublishInStudy ( theIOR )
SObject PublishInStudy ( in Study theStudy, in SObject theSObject, in Object theObject, in string theName )
return_value = PublishInStudy ( theStudy, theSObject, theObject, theName )
boolean CanCopy ( in SObject theObject )
return_value = CanCopy ( theObject )
TMPFile CopyFrom ( in SObject theObject, out long theObjectID )
[ return_value, theObjectID ] = CopyFrom ( theObject )
boolean CanPaste ( in string theComponentName, in long theObjectID )
return_value = CanPaste ( theComponentName, theObjectID )
SObject PasteInto ( in TMPFile theStream, in long theObjectID, in SObject theObject )
return_value = PasteInto ( theStream, theObjectID, theObject )

-
diff --git a/doc/html/INPUT/HTML/SALOMEDS_Attributes.html b/doc/html/INPUT/HTML/SALOMEDS_Attributes.html deleted file mode 100644 index 7dbf29d3f..000000000 --- a/doc/html/INPUT/HTML/SALOMEDS_Attributes.html +++ /dev/null @@ -1,862 +0,0 @@ - - - - - - - - - - - - - - - - -
interface AttributeReal
IDL file
Python
double Value ( )
return_value = Value ( )
void SetValue ( in double value )
SetValue ( value )

- - - - - - - - - - - - - - - -
interface AttributeInteger
IDL file
Python
long Value ( )
return_value = Value ( )
void SetValue ( in long value )
SetValue ( value )

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
interface AttributeSequenceOfReal
IDL file
Python
void Assign ( in DoubleSeq other )
Assign ( other )
DoubleSeq CorbaSequence ( )
return_value = CorbaSequence ( )
void Add ( in double value )
Add ( value )
void Remove ( in long index )
Remove ( index )
void ChangeValue ( in long index, in double value )
ChangeValue ( index, value )
double Value ( in short index )
return_value = Value ( index )
long Length ( )
return_value = Length ( )

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
interface AttributeSequenceOfInteger
IDL file
Python
void Assign ( in LongSeq other )
Assign ( other )
LongSeq CorbaSequence ( )
return_value = CorbaSequence ( )
void Add ( in long value )
Add ( value )
void Remove ( in long index )
Remove ( index )
void ChangeValue ( in long index, in long value )
ChangeValue ( index, value )
long Value ( in short index )
return_value = Value ( index )
long Length ( )
return_value = Length ( )

- - - - - - - - - - - - - - - -
interface AttributeName
IDL file
Python
string Value ( )
return_value = Value ( )
void SetValue ( in string value )
SetValue ( value )

- - - - - - - - - - - - - - - -
interface AttributeComment
IDL file
Python
string Value ( )
return_value = Value ( )
void SetValue ( in string value )
SetValue ( value )

- - - - - - - - - - - - - - - -
interface AttributeIOR
IDL file
Python
string Value ( )
return_value = Value ( )
void SetValue ( in string value )
SetValue ( value )

- - - - - - - - - - - - - - - -
interface AttributePersistentRef
IDL file
Python
string Value ( )
return_value = Value ( )
void SetValue ( in string value )
SetValue ( value )

- - - - - - - - - - - - - - - -
interface AttributeDrawable
IDL file
Python
boolean IsDrawable ( )
return_value = IsDrawable ( )
void SetDrawable ( in boolean value )
SetDrawable ( value )

- - - - - - - - - - - - - - - -
interface AttributeSelectable
IDL file
Python
boolean IsSelectable ( )
return_value = IsSelectable ( )
void SetSelectable ( in boolean value )
SetSelectable ( value )

- - - - - - - - - - - - - - - -
interface AttributeExpandable
IDL file
Python
boolean IsExpandable ( )
return_value = IsExpandable ( )
void SetExpandable ( in boolean value )
SetExpandable ( value )

- - - - - - - - - - - - - - - -
interface AttributeOpened
IDL file
Python
boolean IsOpened ( )
return_value = IsOpened ( )
void SetOpened ( in boolean value )
SetOpened ( value )

- - - - - - - - - - - - - - - -
interface AttributeTextColor
IDL file
Python
Color TextColor ( )
return_value = TextColor ( )
void SetTextColor ( in Color value )
SetTextColor ( value )

- - - - - - - - - - - - - - - -
interface AttributeTextHighlightColor
IDL file
Python
Color TextHighlightColor ( )
return_value = TextHighlightColor ( )
void SetTextHighlightColor ( in Color value )
SetTextHighlightColor ( value )

- - - - - - - - - - - - - - - - - - - -
interface AttributePixMap
IDL file
Python
boolean HasPixMap ( )
return_value = HasPixMap ( )
string GetPixMap ( )
return_value = GetPixMap ( )
void SetPixMap ( in string value )
SetPixMap ( value )

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
interface AttributeTreeNode
IDL file
Python
void SetFather ( in AttributeTreeNode value )
SetFather ( value )
boolean HasFather ( )
return_value = HasFather ( )
AttributeTreeNode GetFather ( )
return_value = GetFather ( )
void SetPrevious ( in AttributeTreeNode value )
SetPrevious ( value )
boolean HasPrevious ( )
return_value = HasPrevious ( )
AttributeTreeNode GetPrevious ( )
return_value = GetPrevious ( )
void SetNext ( in AttributeTreeNode value )
SetNext ( value )
boolean HasNext ( )
return_value = HasNext ( )
AttributeTreeNode GetNext ( )
return_value = GetNext ( )
void SetFirst ( in AttributeTreeNode value )
SetFirst ( value )
boolean HasFirst ( )
return_value = HasFirst ( )
AttributeTreeNode GetFirst ( )
return_value = GetFirst ( )
void SetTreeID ( in string value )
SetTreeID ( value )
string GetTreeID ( )
return_value = GetTreeID ( )
void Append ( in AttributeTreeNode value )
Append ( value )
void Prepend ( in AttributeTreeNode value )
Prepend ( value )
void InsertBefore ( in AttributeTreeNode value )
InsertBefore ( value )
void InsertAfter ( in AttributeTreeNode value )
InsertAfter ( value )
void Remove ( )
Remove ( )
long Depth ( )
return_value = Depth ( )
boolean IsRoot ( )
return_value = IsRoot ( )
boolean IsDescendant ( in AttributeTreeNode value )
return_value = IsDescendant ( value )
boolean IsFather ( in AttributeTreeNode value )
return_value = IsFather ( value )
boolean IsChild ( in AttributeTreeNode value )
return_value = IsChild ( value )
string Label ( )
return_value = Label ( )

- - - - - - - - - - - - - - - -
interface AttributeLocalID
IDL file
Python
long Value ( )
return_value = Value ( )
void SetValue ( in long value )
SetValue ( value )

- - - - - - - - - - - - - - - -
interface AttributeUserID
IDL file
Python
string Value ( )
return_value = Value ( )
void SetValue ( in string value )
SetValue ( value )

- - - - - - - - - - - - - - - - - - - -
interface AttributeTarget
IDL file
Python
void Add ( in SObject anObject )
Add ( anObject )
ListOfSObject Get ( )
return_value = Get ( )
void Remove ( in SObject anObject )
Remove ( anObject )

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
interface AttributeTableOfInteger
IDL file
Python
void SetTitle ( in string theTitle )
SetTitle ( theTitle )
string GetTitle ( )
return_value = GetTitle ( )
void SetRowTitle ( in long theIndex, in string theTitle )
SetRowTitle ( theIndex, theTitle )
void SetRowTitles ( in StringSeq theTitles )
SetRowTitles ( theTitles )
StringSeq GetRowTitles ( )
return_value = GetRowTitles ( )
void SetColumnTitle ( in long theIndex, in string theTitle )
SetColumnTitle ( theIndex, theTitle )
void SetColumnTitles ( in StringSeq theTitles )
SetColumnTitles ( theTitles )
StringSeq GetColumnTitles ( )
return_value = GetColumnTitles ( )
void SetRowUnit ( in long theIndex, in string theUnit )
SetRowUnit ( theIndex, theUnit )
void SetRowUnits ( in StringSeq theUnits )
SetRowUnits ( theUnits )
StringSeq GetRowUnits ( )
return_value = GetRowUnits ( )
long GetNbRows ( )
return_value = GetNbRows ( )
long GetNbColumns ( )
return_value = GetNbColumns ( )
void AddRow ( in LongSeq theData )
AddRow ( theData )
void SetRow ( in long theRow, in LongSeq theData )
SetRow ( theRow, theData )
LongSeq GetRow ( in long theRow )
return_value = GetRow ( theRow )
void AddColumn ( in LongSeq theData )
AddColumn ( theData )
void SetColumn ( in long theColumn, in LongSeq theData )
SetColumn ( theColumn, theData )
LongSeq GetColumn ( in long theColumn )
return_value = GetColumn ( theColumn )
void PutValue ( in long theValue, in long theRow, in long theColumn )
PutValue ( theValue, theRow, theColumn )
boolean HasValue ( in long theRow, in long theColumn )
return_value = HasValue ( theRow, theColumn )
long GetValue ( in long theRow, in long theColumn )
return_value = GetValue ( theRow, theColumn )
void SetNbColumns ( in long theNbColumns )
SetNbColumns ( theNbColumns )
LongSeq GetRowSetIndices ( in long theRow )
return_value = GetRowSetIndices ( theRow )
boolean ReadFromFile ( in TMPFile theStream )
return_value = ReadFromFile ( theStream )
TMPFile SaveToFile ( )
return_value = SaveToFile ( )

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
interface AttributeTableOfReal
IDL file
Python
void SetTitle ( in string theTitle )
SetTitle ( theTitle )
string GetTitle ( )
return_value = GetTitle ( )
void SetRowTitle ( in long theIndex, in string theTitle )
SetRowTitle ( theIndex, theTitle )
void SetRowTitles ( in StringSeq theTitles )
SetRowTitles ( theTitles )
StringSeq GetRowTitles ( )
return_value = GetRowTitles ( )
void SetColumnTitle ( in long theIndex, in string theTitle )
SetColumnTitle ( theIndex, theTitle )
void SetColumnTitles ( in StringSeq theTitles )
SetColumnTitles ( theTitles )
StringSeq GetColumnTitles ( )
return_value = GetColumnTitles ( )
void SetRowUnit ( in long theIndex, in string theUnit )
SetRowUnit ( theIndex, theUnit )
void SetRowUnits ( in StringSeq theUnits )
SetRowUnits ( theUnits )
StringSeq GetRowUnits ( )
return_value = GetRowUnits ( )
long GetNbRows ( )
return_value = GetNbRows ( )
long GetNbColumns ( )
return_value = GetNbColumns ( )
void AddRow ( in DoubleSeq theData )
AddRow ( theData )
void SetRow ( in long theRow, in DoubleSeq theData )
SetRow ( theRow, theData )
DoubleSeq GetRow ( in long theRow )
return_value = GetRow ( theRow )
void AddColumn ( in DoubleSeq theData )
AddColumn ( theData )
void SetColumn ( in long theColumn, in DoubleSeq theData )
SetColumn ( theColumn, theData )
DoubleSeq GetColumn ( in long theColumn )
return_value = GetColumn ( theColumn )
void PutValue ( in double theValue, in long theRow, in long theColumn )
PutValue ( theValue, theRow, theColumn )
boolean HasValue ( in long theRow, in long theColumn )
return_value = HasValue ( theRow, theColumn )
double GetValue ( in long theRow, in long theColumn )
return_value = GetValue ( theRow, theColumn )
void SetNbColumns ( in long theNbColumns )
SetNbColumns ( theNbColumns )
LongSeq GetRowSetIndices ( in long theRow )
return_value = GetRowSetIndices ( theRow )
boolean ReadFromFile ( in TMPFile theStream )
return_value = ReadFromFile ( theStream )
TMPFile SaveToFile ( )
return_value = SaveToFile ( )

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
interface AttributeTableOfString
IDL file
Python
void SetTitle ( in string theTitle )
SetTitle ( theTitle )
string GetTitle ( )
return_value = GetTitle ( )
void SetRowTitle ( in long theIndex, in string theTitle )
SetRowTitle ( theIndex, theTitle )
void SetRowTitles ( in StringSeq theTitles )
SetRowTitles ( theTitles )
StringSeq GetRowTitles ( )
return_value = GetRowTitles ( )
void SetColumnTitle ( in long theIndex, in string theTitle )
SetColumnTitle ( theIndex, theTitle )
void SetColumnTitles ( in StringSeq theTitles )
SetColumnTitles ( theTitles )
StringSeq GetColumnTitles ( )
return_value = GetColumnTitles ( )
void SetRowUnit ( in long theIndex, in string theUnit )
SetRowUnit ( theIndex, theUnit )
void SetRowUnits ( in StringSeq theUnits )
SetRowUnits ( theUnits )
StringSeq GetRowUnits ( )
return_value = GetRowUnits ( )
long GetNbRows ( )
return_value = GetNbRows ( )
long GetNbColumns ( )
return_value = GetNbColumns ( )
void AddRow ( in StringSeq theData )
AddRow ( theData )
void SetRow ( in long theRow, in StringSeq theData )
SetRow ( theRow, theData )
StringSeq GetRow ( in long theRow )
return_value = GetRow ( theRow )
void AddColumn ( in StringSeq theData )
AddColumn ( theData )
void SetColumn ( in long theColumn, in StringSeq theData )
SetColumn ( theColumn, theData )
StringSeq GetColumn ( in long theColumn )
return_value = GetColumn ( theColumn )
void PutValue ( in string theValue, in long theRow, in long theColumn )
PutValue ( theValue, theRow, theColumn )
boolean HasValue ( in long theRow, in long theColumn )
return_value = HasValue ( theRow, theColumn )
string GetValue ( in long theRow, in long theColumn )
return_value = GetValue ( theRow, theColumn )
void SetNbColumns ( in long theNbColumns )
SetNbColumns ( theNbColumns )
LongSeq GetRowSetIndices ( in long theRow )
return_value = GetRowSetIndices ( theRow )
boolean ReadFromFile ( in TMPFile theStream )
return_value = ReadFromFile ( theStream )
TMPFile SaveToFile ( )
return_value = SaveToFile ( )

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
interface AttributeStudyProperties
IDL file
Python
void SetUserName ( in string theName )
SetUserName ( theName )
string GetUserName ( )
return_value = GetUserName ( )
void SetCreationDate ( in long theMinute, in long theHour, in long theDay, in long theMonth, in long theYear )
SetCreationDate ( theMinute, theHour, theDay, theMonth, theYear )
boolean GetCreationDate ( out long theMinute, out long theHour, out long theDay, out long theMonth, out long theYear )
[ return_value, theMinute, theHour, theDay, theMonth, theYear ] = GetCreationDate ( )
void SetCreationMode ( in string theMode )
SetCreationMode ( theMode )
string GetCreationMode ( )
return_value = GetCreationMode ( )
void SetModified ( in long theModified )
SetModified ( theModified )
boolean IsModified ( )
return_value = IsModified ( )
long GetModified ( )
return_value = GetModified ( )
void SetLocked ( in boolean theLocked )
SetLocked ( theLocked )
boolean IsLocked ( )
return_value = IsLocked ( )
void SetModification ( in string theName, in long theMinute, in long theHour, in long theDay, in long theMonth, in long theYear )
SetModification ( theName, theMinute, theHour, theDay, theMonth, theYear )
void GetModificationsList ( out StringSeq theNames, out LongSeq theMinutes, out LongSeq theHours, out LongSeq theDays, out LongSeq theMonths, out LongSeq theYears, in boolean theWithCreator )
[ theNames, theMinutes, theHours, theDays, theMonths, theYears ] = GetModificationsList ( theWithCreator )

- - - - - - - - - - - - - - - - - - - -
interface AttributePythonObject
IDL file
Python
void SetObject ( in string theSequence, in boolean IsScript )
SetObject ( theSequence, IsScript )
string GetObject ( )
return_value = GetObject ( )
boolean IsScript ( )
return_value = IsScript ( )

-
diff --git a/doc/html/INPUT/HTML/SALOME_Component.html b/doc/html/INPUT/HTML/SALOME_Component.html deleted file mode 100644 index 045775117..000000000 --- a/doc/html/INPUT/HTML/SALOME_Component.html +++ /dev/null @@ -1,78 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
interface Container
IDL file
Python
Container start_impl ( in string ContainerName )
return_value = start_impl ( ContainerName )
Component load_impl ( in string nameToRegister, in string componentName )
return_value = load_impl ( nameToRegister, componentName )
void remove_impl ( in Component component_i )
remove_impl ( component_i )
void finalize_removal ( )
finalize_removal ( )
void ping ( )
ping ( )
boolean Kill_impl ( )
return_value = Kill_impl ( )

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
interface Component
IDL file
Python
void ping ( )
ping ( )
void destroy ( )
destroy ( )
Container GetContainerRef ( )
return_value = GetContainerRef ( )
void Names ( in string aGraphName, in string aNodeName )
Names ( aGraphName, aNodeName )
boolean Kill_impl ( )
return_value = Kill_impl ( )
boolean Stop_impl ( )
return_value = Stop_impl ( )
boolean Suspend_impl ( )
return_value = Suspend_impl ( )
boolean Resume_impl ( )
return_value = Resume_impl ( )
long CpuUsed_impl ( )
return_value = CpuUsed_impl ( )

-
diff --git a/doc/html/INPUT/HTML/SALOME_DataTypeCatalog.html b/doc/html/INPUT/HTML/SALOME_DataTypeCatalog.html deleted file mode 100644 index c73173ffd..000000000 --- a/doc/html/INPUT/HTML/SALOME_DataTypeCatalog.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
interface DataCatalog
IDL file
Python
ListOfDataTypeName GetDataTypeList ( )
return_value = GetDataTypeList ( )
boolean isDerivedFrom ( in string type_in, in string type_out )
return_value = isDerivedFrom ( type_in, type_out )
string GetDataInterfaceRead ( in string type )
return_value = GetDataInterfaceRead ( type )
string GetDataInterfaceWrite ( in string type )
return_value = GetDataInterfaceWrite ( type )
ListOfDataTypeName GetDataTypeParents ( in string type )
return_value = GetDataTypeParents ( type )

-
diff --git a/doc/html/INPUT/HTML/SALOME_Exception.html b/doc/html/INPUT/HTML/SALOME_Exception.html deleted file mode 100644 index 37c3107c9..000000000 --- a/doc/html/INPUT/HTML/SALOME_Exception.html +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/doc/html/INPUT/HTML/SALOME_ModuleCatalog.html b/doc/html/INPUT/HTML/SALOME_ModuleCatalog.html deleted file mode 100644 index 009c6308d..000000000 --- a/doc/html/INPUT/HTML/SALOME_ModuleCatalog.html +++ /dev/null @@ -1,70 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
interface Acomponent
IDL file
Python
ListOfInterfaces GetInterfaceList ( )
return_value = GetInterfaceList ( )
DefinitionInterface GetInterface ( in string interfacename )
return_value = GetInterface ( interfacename )
ListOfServices GetServiceList ( in string interfacename )
return_value = GetServiceList ( interfacename )
Service GetService ( in string interfacename, in string servicename )
return_value = GetService ( interfacename, servicename )
Service GetDefaultService ( in string interfacename )
return_value = GetDefaultService ( interfacename )
string GetPathPrefix ( in string machinename )
return_value = GetPathPrefix ( machinename )

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
interface ModuleCatalog
IDL file
Python
void ping ( )
ping ( )
ListOfComputers GetComputerList ( )
return_value = GetComputerList ( )
string GetPathPrefix ( in string machinename )
return_value = GetPathPrefix ( machinename )
ListOfComponents GetComponentList ( )
return_value = GetComponentList ( )
ListOfIAPP_Affich GetComponentIconeList ( )
return_value = GetComponentIconeList ( )
ListOfComponents GetTypedComponentList ( in ComponentType component_type )
return_value = GetTypedComponentList ( component_type )
Acomponent GetComponent ( in string componentname )
return_value = GetComponent ( componentname )

-
diff --git a/doc/html/INPUT/HTML/SALOME_Registry.html b/doc/html/INPUT/HTML/SALOME_Registry.html deleted file mode 100644 index fd319e119..000000000 --- a/doc/html/INPUT/HTML/SALOME_Registry.html +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
interface Components
IDL file
Python
void ping ( )
ping ( )
unsigned long add ( in Infos lesInfos )
return_value = add ( lesInfos )
void remove ( in unsigned long id )
remove ( id )
unsigned long size ( )
return_value = size ( )
AllInfos getall ( )
return_value = getall ( )
AllInfos history ( )
return_value = history ( )
void end ( )
end ( )
void hello ( in unsigned long id )
hello ( id )

-
diff --git a/doc/html/INPUT/HTML/SALOME_RessourcesCatalog.html b/doc/html/INPUT/HTML/SALOME_RessourcesCatalog.html deleted file mode 100644 index 787a6283e..000000000 --- a/doc/html/INPUT/HTML/SALOME_RessourcesCatalog.html +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - - - - - - -
interface RessourcesCatalog
IDL file
Python
ListOfComputer GetComputerList ( )
return_value = GetComputerList ( )
ListOfContainerType GetContainerTypeList ( in string computer )
return_value = GetContainerTypeList ( computer )
computer_info GetComputerInfo ( in string computer )
return_value = GetComputerInfo ( computer )

-
diff --git a/doc/html/INPUT/HTML/SALOME_Session.html b/doc/html/INPUT/HTML/SALOME_Session.html deleted file mode 100644 index 804a067a9..000000000 --- a/doc/html/INPUT/HTML/SALOME_Session.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
interface Session
IDL file
Python
void GetInterface ( )
GetInterface ( )
Component GetVisuGen ( )
return_value = GetVisuGen ( )
void StopSession ( )
StopSession ( )
StatSession GetStatSession ( )
return_value = GetStatSession ( )
void ping ( )
ping ( )

-
diff --git a/doc/html/INPUT/HTML/SALOME_TestComponent.html b/doc/html/INPUT/HTML/SALOME_TestComponent.html deleted file mode 100644 index 44a507fdd..000000000 --- a/doc/html/INPUT/HTML/SALOME_TestComponent.html +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - -
interface TestComponent
IDL file
Python
string Coucou ( in long L )
return_value = Coucou ( L )

-
diff --git a/doc/html/INPUT/HTML/TestNotif.html b/doc/html/INPUT/HTML/TestNotif.html deleted file mode 100644 index a181974d2..000000000 --- a/doc/html/INPUT/HTML/TestNotif.html +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - - - - - - -
interface Solver
IDL file
Python
boolean Connect ( )
return_value = Connect ( )
void Start ( )
Start ( )
void ReStart ( )
ReStart ( )

-
diff --git a/doc/html/INPUT/HTML/TypeData.html b/doc/html/INPUT/HTML/TypeData.html deleted file mode 100644 index 37c3107c9..000000000 --- a/doc/html/INPUT/HTML/TypeData.html +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/doc/html/INPUT/doxyfile b/doc/html/INPUT/doxyfile deleted file mode 100755 index 70bb733d9..000000000 --- a/doc/html/INPUT/doxyfile +++ /dev/null @@ -1,209 +0,0 @@ -# Doxyfile 1.3-rc1 - -#--------------------------------------------------------------------------- -# General configuration options -#--------------------------------------------------------------------------- -PROJECT_NAME = "SALOME v.2.0.0" -PROJECT_NUMBER = id#1.1 -OUTPUT_DIRECTORY = ../ -OUTPUT_LANGUAGE = English -EXTRACT_ALL = YES -EXTRACT_PRIVATE = YES -EXTRACT_STATIC = YES -EXTRACT_LOCAL_CLASSES = YES -HIDE_UNDOC_MEMBERS = NO -HIDE_UNDOC_CLASSES = NO -HIDE_FRIEND_COMPOUNDS = NO -HIDE_IN_BODY_DOCS = NO -BRIEF_MEMBER_DESC = YES -REPEAT_BRIEF = NO -ALWAYS_DETAILED_SEC = YES -INLINE_INHERITED_MEMB = YES -FULL_PATH_NAMES = NO -STRIP_FROM_PATH = -INTERNAL_DOCS = YES -CASE_SENSE_NAMES = YES -SHORT_NAMES = NO -HIDE_SCOPE_NAMES = NO -VERBATIM_HEADERS = YES -SHOW_INCLUDE_FILES = YES -JAVADOC_AUTOBRIEF = YES -MULTILINE_CPP_IS_BRIEF = NO -DETAILS_AT_TOP = NO -INHERIT_DOCS = YES -INLINE_INFO = YES -SORT_MEMBER_DOCS = NO -DISTRIBUTE_GROUP_DOC = NO -TAB_SIZE = 5 -GENERATE_TODOLIST = YES -GENERATE_TESTLIST = YES -GENERATE_BUGLIST = YES -GENERATE_DEPRECATEDLIST= YES -ALIASES = -ENABLED_SECTIONS = -MAX_INITIALIZER_LINES = 25 -OPTIMIZE_OUTPUT_FOR_C = YES -OPTIMIZE_OUTPUT_JAVA = YES -SHOW_USED_FILES = NO -#--------------------------------------------------------------------------- -# configuration options related to warning and progress messages -#--------------------------------------------------------------------------- -QUIET = NO -WARNINGS = YES -WARN_IF_UNDOCUMENTED = YES -WARN_FORMAT = "$file:$line: $text" -WARN_LOGFILE = log.txt -#--------------------------------------------------------------------------- -# configuration options related to the input files -#--------------------------------------------------------------------------- -INPUT = ../../../share/salome/idl/SALOME_ModuleCatalog.idl \ - ../../../share/salome/idl/SALOMEDS.idl \ - ../../../share/salome/idl/SALOME_Exception.idl \ - ../../../share/salome/idl/SALOMEDS_Attributes.idl \ - ../../../share/salome/idl/SALOME_Session.idl \ - ../../../share/salome/idl/SALOME_Component.idl \ - ../../../share/salome/src/LifeCycleCORBA/SALOME_LifeCycleCORBA.hxx \ - ../../../share/salome/src/NamingService/SALOME_NamingService.hxx \ - ../../../share/salome/src/NamingService/SALOME_NamingService.cxx \ - ../../../share/salome/src/LifeCycleCORBA/SALOME_LifeCycleCORBA.cxx -FILE_PATTERNS = -RECURSIVE = NO -EXCLUDE = -EXCLUDE_SYMLINKS = NO -EXCLUDE_PATTERNS = -EXAMPLE_PATH = -EXAMPLE_PATTERNS = -EXAMPLE_RECURSIVE = NO -IMAGE_PATH = sources/ -INPUT_FILTER = -FILTER_SOURCE_FILES = YES -#--------------------------------------------------------------------------- -# configuration options related to source browsing -#--------------------------------------------------------------------------- -SOURCE_BROWSER = NO -INLINE_SOURCES = NO -STRIP_CODE_COMMENTS = YES -REFERENCED_BY_RELATION = NO -REFERENCES_RELATION = YES -#--------------------------------------------------------------------------- -# configuration options related to the alphabetical class index -#--------------------------------------------------------------------------- -ALPHABETICAL_INDEX = NO -COLS_IN_ALPHA_INDEX = 5 -IGNORE_PREFIX = -#--------------------------------------------------------------------------- -# configuration options related to the HTML output -#--------------------------------------------------------------------------- -GENERATE_HTML = YES -HTML_OUTPUT = html -HTML_FILE_EXTENSION = .html -HTML_HEADER = sources/myheader.html -HTML_FOOTER = -HTML_STYLESHEET = -HTML_ALIGN_MEMBERS = YES -GENERATE_HTMLHELP = NO -CHM_FILE = -HHC_LOCATION = -GENERATE_CHI = NO -BINARY_TOC = YES -TOC_EXPAND = YES -DISABLE_INDEX = YES -ENUM_VALUES_PER_LINE = 4 -GENERATE_TREEVIEW = YES -TREEVIEW_WIDTH = 250 -#--------------------------------------------------------------------------- -# configuration options related to the LaTeX output -#--------------------------------------------------------------------------- -GENERATE_LATEX = NO -LATEX_OUTPUT = latex -LATEX_CMD_NAME = latex -MAKEINDEX_CMD_NAME = makeindex -COMPACT_LATEX = NO -PAPER_TYPE = a4wide -EXTRA_PACKAGES = -LATEX_HEADER = -PDF_HYPERLINKS = NO -USE_PDFLATEX = NO -LATEX_BATCHMODE = NO -#--------------------------------------------------------------------------- -# configuration options related to the RTF output -#--------------------------------------------------------------------------- -GENERATE_RTF = NO -RTF_OUTPUT = rtf -COMPACT_RTF = NO -RTF_HYPERLINKS = NO -RTF_STYLESHEET_FILE = -RTF_EXTENSIONS_FILE = -#--------------------------------------------------------------------------- -# configuration options related to the man page output -#--------------------------------------------------------------------------- -GENERATE_MAN = NO -MAN_OUTPUT = man -MAN_EXTENSION = .3 -MAN_LINKS = NO -#--------------------------------------------------------------------------- -# configuration options related to the XML output -#--------------------------------------------------------------------------- -GENERATE_XML = NO -XML_SCHEMA = -XML_DTD = -#--------------------------------------------------------------------------- -# configuration options for the AutoGen Definitions output -#--------------------------------------------------------------------------- -GENERATE_AUTOGEN_DEF = NO -#--------------------------------------------------------------------------- -# configuration options related to the Perl module output -#--------------------------------------------------------------------------- -GENERATE_PERLMOD = NO -PERLMOD_LATEX = NO -PERLMOD_PRETTY = YES -PERLMOD_MAKEVAR_PREFIX = -#--------------------------------------------------------------------------- -# Configuration options related to the preprocessor -#--------------------------------------------------------------------------- -ENABLE_PREPROCESSING = YES -MACRO_EXPANSION = YES -EXPAND_ONLY_PREDEF = NO -SEARCH_INCLUDES = YES -INCLUDE_PATH = -INCLUDE_FILE_PATTERNS = -PREDEFINED = -EXPAND_AS_DEFINED = -SKIP_FUNCTION_MACROS = NO -#--------------------------------------------------------------------------- -# Configuration::addtions related to external references -#--------------------------------------------------------------------------- -TAGFILES = -GENERATE_TAGFILE = -ALLEXTERNALS = NO -EXTERNAL_GROUPS = YES -PERL_PATH = /usr/bin/perl -#--------------------------------------------------------------------------- -# Configuration options related to the dot tool -#--------------------------------------------------------------------------- -CLASS_DIAGRAMS = YES -HIDE_UNDOC_RELATIONS = NO -HAVE_DOT = YES -CLASS_GRAPH = YES -COLLABORATION_GRAPH = NO -TEMPLATE_RELATIONS = YES -INCLUDE_GRAPH = YES -INCLUDED_BY_GRAPH = NO -GRAPHICAL_HIERARCHY = YES -DOT_IMAGE_FORMAT = jpg -DOT_PATH = -DOTFILE_DIRS = -MAX_DOT_GRAPH_WIDTH = 1024 -MAX_DOT_GRAPH_HEIGHT = 1200 -GENERATE_LEGEND = NO -DOT_CLEANUP = YES -#--------------------------------------------------------------------------- -# Configuration::addtions related to the search engine -#--------------------------------------------------------------------------- -SEARCHENGINE = NO -CGI_NAME = search.cgi -CGI_URL = -DOC_URL = -DOC_ABSPATH = -BIN_ABSPATH = /usr/local/bin/ -EXT_DOC_PATHS = diff --git a/doc/html/INPUT/exemple/Example1.html b/doc/html/INPUT/exemple/Example1.html deleted file mode 100755 index 1ec12baf9..000000000 --- a/doc/html/INPUT/exemple/Example1.html +++ /dev/null @@ -1,54 +0,0 @@ - - - -Exemple - -
#%AttributeReal interface (creations/saving/restoring)%
-#%Methods : FindOrCreateAttribute, Value, SaveAs, SetValue, FindComponent, FindAttribute, Open%
-
-
-#       create AttributeReal      
-#=================================
-A = batchmode_geompy.myBuilder.FindOrCreateAttribute(batchmode_geompy.father, "AttributeReal")
-if A == None :
-        raise  RuntimeError, "Can't create AttributeReal attribute"
-A = A._narrow(SALOMEDS.AttributeReal)
-A.SetValue(0.0001)
-if A.Value() != 0.0001:
-        raise  RuntimeError, "Error : wrong value of  AttributeReal"
-
-#      save / restore study      
-#=================================
-
-str= os.getenv("TmpDir")
-if str == None:
-        str = "/tmp"
-file = str+"/test.hdf"
-
-#file = "/tmp/ggg.hdf"
-
-print " -------  We will save to", file, "-----------"
-
-batchmode_geompy.myStudyManager.SaveAs(file, batchmode_geompy.myStudy)
-openedStudy=batchmode_geompy.myStudyManager.Open(file)
-
-if openedStudy == None:
-        raise  RuntimeError, "Can't open saved study!"
-
-
-father = openedStudy.FindComponent("GEOM")
-if father is None:
-         raise  RuntimeError, "Geom component is not found!  Wrong study is opened." 
-
-
-#     find AttributeReal
-#=================================
-
-res,A=father.FindAttribute("AttributeReal")
-if res == 0 or A == None:
-        raise  RuntimeError, "Error:  not found AttributeReal"
-
-A = A._narrow(SALOMEDS.AttributeReal)
-if A.Value() != 0.0001:
-        raise  RuntimeError, "Error : wrong value of  AttributeReal"
-
\ No newline at end of file diff --git a/doc/html/INPUT/exemple/Example10.html b/doc/html/INPUT/exemple/Example10.html deleted file mode 100755 index fde0125ea..000000000 --- a/doc/html/INPUT/exemple/Example10.html +++ /dev/null @@ -1,59 +0,0 @@ - - - -Example - -
#%AttributeExpandable interface(creations/saving/restoring)%
-#%SALOMEDS methods : SaveAs FindComponent  FindAttribute Open%
-#%Attribute methods : SetExpandable IsExpandable%
-
-#              create    AttributeExpandable
-#===========================================================
-A = batchmode_geompy.myBuilder.FindOrCreateAttribute( batchmode_geompy.father, "AttributeExpandable")
-if A == None :
-        raise  RuntimeError, "Can't create AttributeExpandable attribute"
-A = A._narrow(SALOMEDS.AttributeExpandable)
-
-if A == None :
-        raise  RuntimeError, "Can't create AttributeExpandable attribute"
-
-A.SetExpandable(1)
-
-if A.IsExpandable() == 0:
-        "Error: wrong value of AttributeExpandable"
-
-
-#      save / restore study      
-#============================================================
-str= os.getenv("TmpDir")
-if str == None:
-        str = "/tmp"
-file = str+"/test.hdf"
-
-batchmode_geompy.myStudyManager.SaveAs(file,  batchmode_geompy.myStudy)
-openedStudy = batchmode_geompy.myStudyManager.Open(file);
-
-if openedStudy == None:
-        raise  RuntimeError, "Can't open saved study!"
-
-father = openedStudy.FindComponent("GEOM")
-if father is None:
-         raise  RuntimeError, "Geom component is not found!  Wrong study is opened." 
-
-
-#     find   AttributeExpandable
-#============================================================
-
-res,A=father.FindAttribute("AttributeExpandable")
-if res == 0 or A == None:
-        raise  RuntimeError, "Error:  not found AttributeExpandable"
-
-A = A._narrow(SALOMEDS.AttributeExpandable)
-
-if A == None :
-        raise  RuntimeError, "Can't create AttributeExpandable attribute"
-
-if A.IsExpandable() == 0:
-        "Error: wrong value of AttributeExpandable"
-
-
\ No newline at end of file diff --git a/doc/html/INPUT/exemple/Example11.html b/doc/html/INPUT/exemple/Example11.html deleted file mode 100755 index 38218bddc..000000000 --- a/doc/html/INPUT/exemple/Example11.html +++ /dev/null @@ -1,59 +0,0 @@ - - - -Example - -
#%Test AttributeOpened (creations/saving/restoring)%
-#%SALOMEDS methods : FindOrCreateAttribute SaveAs, FindComponent, FindAttribute, Open%
-#%Attribute methods : SetOpened, IsOpened%
-
-#              create    AttributeOpened
-#===========================================================
-A = batchmode_geompy.myBuilder.FindOrCreateAttribute(batchmode_geompy.father, "AttributeOpened")
-if A == None :
-        raise  RuntimeError, "Can't create AttributeOpened attribute"
-A = A._narrow(SALOMEDS.AttributeOpened)
-
-if A == None :
-        raise  RuntimeError, "Can't create AttributeOpened attribute"
-
-A.SetOpened(1)
-
-if A.IsOpened() == 0:
-        "Error: wrong value of AttributeOpened"
-
-
-#      save / restore study      
-#============================================================
-str= os.getenv("TmpDir")
-if str == None:
-        str = "/tmp"
-file = str+"/test.hdf"
-
-batchmode_geompy.myStudyManager.SaveAs(file, batchmode_geompy.myStudy)
-openedStudy=batchmode_geompy.myStudyManager.Open(file);
-
-if openedStudy == None:
-        raise  RuntimeError, "Can't open saved study!"
-
-father = openedStudy.FindComponent("GEOM")
-if father is None:
-         raise  RuntimeError, "Geom component is not found!  Wrong study is opened." 
-
-
-#     find   AttributeOpened
-#============================================================
-
-res,A=father.FindAttribute("AttributeOpened")
-if res == 0 or A == None:
-        raise  RuntimeError, "Error:  not found AttributeOpened"
-
-A = A._narrow(SALOMEDS.AttributeOpened)
-
-if A == None :
-        raise  RuntimeError, "Can't create AttributeOpened attribute"
-
-if A.IsOpened() == 0:
-        "Error: wrong value of AttributeOpened"
-
-
\ No newline at end of file diff --git a/doc/html/INPUT/exemple/Example12.html b/doc/html/INPUT/exemple/Example12.html deleted file mode 100755 index 57c5d4531..000000000 --- a/doc/html/INPUT/exemple/Example12.html +++ /dev/null @@ -1,67 +0,0 @@ - - - -Example - -
#%AttributeTextColor interface (creations/saving/restoring)%
-#%SALOMEDS methods : FindOrCreateAttribute, SaveAs, FindComponent, FindAttribute, Open%
-#%Attribute methods : SetTextColor  TextColor%
-
-
-#--------------------------------------------------------------------------
-#              create    AttributeTextColor
-#===========================================================
-import SALOMEDS_Attributes_idl
-color = SALOMEDS_Attributes_idl._0_SALOMEDS.Color(234,345,231)
-
-A = batchmode_geompy.myBuilder.FindOrCreateAttribute(batchmode_geompy.father, "AttributeTextColor")
-
-if A == None :
-        raise  RuntimeError, "Can't create AttributeTextColor attribute"
-A = A._narrow(SALOMEDS.AttributeTextColor)
-
-if A == None :
-        raise  RuntimeError, "Can't create AttributeTextColor attribute"
-
-A.SetTextColor(color)
-
-c = A.TextColor();
-
-if c.R != 234 or c.G != 345 or c.B != 231:
-        print "Error: wrong value of AttributeTextColor"
-
-#      save / restore study      
-#============================================================
-str= os.getenv("TmpDir")
-if str == None:
-        str = "/tmp"
-file = str+"/test.hdf"
-
-batchmode_geompy.myStudyManager.SaveAs(file, batchmode_geompy.myStudy)
-openedStudy = batchmode_geompy.myStudyManager.Open(file);
-
-if openedStudy == None:
-        raise  RuntimeError, "Can't open saved study!"
-
-father = openedStudy.FindComponent("GEOM")
-if father is None:
-         raise  RuntimeError, "Geom component is not found!  Wrong study is opened." 
-
-
-#       find   AttributeTextColor
-#============================================================
-
-res,A=father.FindAttribute("AttributeTextColor")
-if res == 0 or A == None:
-        raise  RuntimeError, "Error:  not found AttributeTextColor"
-
-A = A._narrow(SALOMEDS.AttributeTextColor)
-
-if A == None :
-        raise  RuntimeError, "Can't create AttributeTextColor attribute"
-
-c = A.TextColor();
-if c.R != 234 or c.G != 345 or c.B != 231:
-        print "Error: wrong value of AttributeTextColor"
-
-
\ No newline at end of file diff --git a/doc/html/INPUT/exemple/Example13.html b/doc/html/INPUT/exemple/Example13.html deleted file mode 100755 index 9ecf9964b..000000000 --- a/doc/html/INPUT/exemple/Example13.html +++ /dev/null @@ -1,68 +0,0 @@ - - - -Example - -
#%Test AttributeTextHighlightColor interface(creations/saving/restoring)%
-#%SALOMEDS methods : FindOrCreateAttribute, SaveAs, FindComponent, FindAttribute, Open%
-#%Attribute methods :  SetTextHighlightColor TextHighlightColor%
-
-#--------------------------------------------------------------------------
-#              create    AttributeTextHighlightColor
-#===========================================================
-
-import SALOMEDS_Attributes_idl
-highlightcolor=SALOMEDS_Attributes_idl._0_SALOMEDS.Color(256,256,256)
-
-A = batchmode_geompy.myBuilder.FindOrCreateAttribute(batchmode_geompy.father, "AttributeTextHighlightColor")
-
-if A == None :
-        raise  RuntimeError, "Can't create AttributeTextHighlightColor attribute"
-A = A._narrow(SALOMEDS.AttributeTextHighlightColor)
-
-if A == None :
-        raise  RuntimeError, "Can't create AttributeTextHighlightColor attribute"
-
-A.SetTextHighlightColor(highlightcolor)
-
-c = A.TextHighlightColor();
-if c.R != 256 or c.G != 256 or c.B != 256:
-        print "Error: wrong value of AttributeTextHighlightColor"
-
-
-#      save / restore study      
-#============================================================
-str= os.getenv("TmpDir")
-if str == None:
-        str = "/tmp"
-file = str+"/test.hdf"
-
-batchmode_geompy.myStudyManager.SaveAs(file, batchmode_geompy.myStudy)
-openedStudy=batchmode_geompy.myStudyManager.Open(file);
-
-if openedStudy == None:
-        raise  RuntimeError, "Can't open saved study!"
-
-father = openedStudy.FindComponent("GEOM")
-if father is None:
-         raise  RuntimeError, "Geom component is not found!  Wrong study is opened." 
-
-
-#       find   AttributeTextHighlightColor
-#============================================================
-
-res, A = father.FindAttribute("AttributeTextHighlightColor")
-print res, A
-if res == 0 or A == None:
-        raise  RuntimeError, "Error:  not found AttributeTextHighlightColor"
-
-A = A._narrow(SALOMEDS.AttributeTextHighlightColor)
-
-if A == None :
-        raise  RuntimeError, "Can't create AttributeTextHighlightColor attribute"
-
-c = A.TextHighlightColor();
-
-if c.R != 256 or c.G != 256 or c.B != 256:
-        print "Error: wrong value of AttributeTextTextHighlightColor"
-
\ No newline at end of file diff --git a/doc/html/INPUT/exemple/Example14.html b/doc/html/INPUT/exemple/Example14.html deleted file mode 100755 index a4e0ada09..000000000 --- a/doc/html/INPUT/exemple/Example14.html +++ /dev/null @@ -1,57 +0,0 @@ - - - -Example - -
#%AttributePixMap interface (creations/saving/restoring)%
-#%SALOMEDS methods  : FindOrCreateAttribute, SaveAs, FindComponent, FindAttribute, Open%
-#%Attribute methods : SetPixMap, GetPixMap%
-
-#--------------------------------------------------------------------------
-
-#--------------------------------------------------------------------------
-#   create  AttributePixMap
-#===============================
-A = batchmode_geompy.myBuilder.FindOrCreateAttribute(batchmode_geompy.father, "AttributePixMap")
-if A == None :
-        raise  RuntimeError, "Can't create AttributePixMap attribute"
-aPixmap = A._narrow(SALOMEDS.AttributePixMap);
-aPixmap.SetPixMap( "ICON_OBJBROWSER_Geometry" );
-
-if aPixmap.GetPixMap() != "ICON_OBJBROWSER_Geometry":
-        print "Error: wrong value of AttributePixMap"
-
-
-#      save / restore study      
-#============================================================
-str= os.getenv("TmpDir")
-if str == None:
-        str = "/tmp"
-file = str+"/test.hdf"
-
-batchmode_geompy.myStudyManager.SaveAs(file, batchmode_geompy.myStudy)
-openedStudy = batchmode_geompy.myStudyManager.Open(file);
-
-if openedStudy == None:
-        raise  RuntimeError, "Can't open saved study!"
-
-father = openedStudy.FindComponent("GEOM")
-if father is None:
-         raise  RuntimeError, "Geom component is not found!  Wrong study is opened." 
-
-
-#       find   AttributePixMap
-#============================================================
-
-res,A=father.FindAttribute("AttributePixMap")
-if res == 0 or A == None:
-        raise  RuntimeError, "Error: AttributePixMap not found "
-
-A = A._narrow(SALOMEDS.AttributePixMap)
-
-if A == None :
-        raise  RuntimeError, "Can't create AttributePixMap attribute"
-
-if A.GetPixMap() != "ICON_OBJBROWSER_Geometry":
-        print "Error: wrong value of AttributePixMap"
-
\ No newline at end of file diff --git a/doc/html/INPUT/exemple/Example15.html b/doc/html/INPUT/exemple/Example15.html deleted file mode 100755 index f6cddac5a..000000000 --- a/doc/html/INPUT/exemple/Example15.html +++ /dev/null @@ -1,51 +0,0 @@ - - - -Example - -
#%AttributeLocalID interface(creations/saving/restoring)%
-#%SALOMEDS methods : FindOrCreateAttribute, SaveAs, FindComponent, FindAttribute, Open%    
-#%Attribute methods : Value,  SetValue%
-
-#       create AttributeLocalID
-#=================================
-A = batchmode_geompy.myBuilder.FindOrCreateAttribute(batchmode_geompy.father, "AttributeLocalID")
-if A == None :
-        raise  RuntimeError, "Can't create AttributeLocalID attribute"
-A = A._narrow(SALOMEDS.AttributeLocalID)
-
-A.SetValue(763242882)
-
-if A.Value() != 763242882:
-        print "Error: wrong value of AttributeLocalID"
-
-#      save / restore study      
-#=================================
-str= os.getenv("TmpDir")
-if str == None:
-        str = "/tmp"
-file = str+"/test.hdf"
-
-batchmode_geompy.myStudyManager.SaveAs(file, batchmode_geompy.myStudy)
-openedStudy = batchmode_geompy.myStudyManager.Open(file);
-
-if openedStudy == None:
-        raise  RuntimeError, "Can't open saved study!"
-
-father = openedStudy.FindComponent("GEOM")
-if father is None:
-         raise  RuntimeError, "Geom component is not found!  Wrong study is opened." 
-
-
-#     find  AttributeLocalID
-#=================================
-
-res,A=father.FindAttribute("AttributeLocalID")
-if res == 0 or A == None:
-        raise  RuntimeError, "Error:  not found AttributeLocalID"
-
-A = A._narrow(SALOMEDS.AttributeLocalID)
-
-if A.Value() != 763242882:
-        print "Error: wrong value of AttributeLocalID"
-
\ No newline at end of file diff --git a/doc/html/INPUT/exemple/Example16.html b/doc/html/INPUT/exemple/Example16.html deleted file mode 100755 index ec8bfd5e3..000000000 --- a/doc/html/INPUT/exemple/Example16.html +++ /dev/null @@ -1,158 +0,0 @@ - - - -Example - -
Methods : GetAvailableUndos, ChangeValue, FindOrCreateAttribute, SaveAs, GetAvailableRedos, Undo, FindComponent, Redo, FindAttribute, Open, CommitCommand, NewCommand
-
-
-dir= os.getenv("TmpDir")
-if dir == None:
-        dir = "/tmp"
-
-batchmode_geompy.myBuilder._set_UndoLimit(20)
-
-# 1st transaction -----------------------------------------
-batchmode_geompy.myBuilder.NewCommand()
-#       create AttributeSequenceOfInteger      
-#=========================================================
-A = batchmode_geompy.myBuilder.FindOrCreateAttribute(batchmode_geompy.father, "AttributeSequenceOfInteger")
-if A == None :
-        raise  RuntimeError, "Can't create AttributeSequenceOfInteger attribute"
-A = A._narrow(SALOMEDS.AttributeSequenceOfInteger)
-if A == None :
-        raise  RuntimeError, "Can't create AttributeSequenceOfInteger attribute"
-
-A.Add(100)
-A.Add(300)
-A.Add(500)
-A.Add(400)
-A.Add(700)
-print "First transaction goes on :  HasOpenCommand() = ", batchmode_geompy.myBuilder.HasOpenCommand()
-batchmode_geompy.myBuilder.CommitCommand() #--------------
-
-# 2nd transaction ------------------------------------------
-batchmode_geompy.myBuilder.NewCommand() 
-A.Remove(3)
-A.ChangeValue(4,500)
-batchmode_geompy.myBuilder.CommitCommand() #--------------
-
-if batchmode_geompy.myBuilder.GetAvailableUndos() == 0:
-        raise RuntimeError, "GetAvailableUndos() = 0 but must not !"
-
-if A.Length() != 4:
-        print "Wrong length of SequenceOfInteger"
-if A.Value(1) != 100 or A.Value(2) != 300 or A.Value(3) != 400 or A.Value(4) != 500:
-        raise  RuntimeError, "Wrong  value of  AttributeSequenceOfInteger"
-
-file1 = dir + "/test1.hdf"
-batchmode_geompy.myStudyManager.SaveAs(file1, batchmode_geompy.myStudy)
-
-# 1st Undo ---------------------------------------
-batchmode_geompy.myBuilder.Undo()
-res, A = batchmode_geompy.myBuilder.FindAttribute(batchmode_geompy.father, "AttributeSequenceOfInteger")
-if A is None:
-        raise  RuntimeError, "After first 'undo' can't find AttributeSequenceOfInteger"
-if A.Length() != 5:
-        print "Wrong length of SequenceOfInteger"
-if A.Value(1) != 100 or A.Value(2) != 300 or A.Value(3) != 500 or A.Value(4) != 400 or  A.Value(5) != 700:
-        print  A.Value(1), A.Value(2), A.Value(3), A.Value(4), A.Value(5)
-        raise  RuntimeError, "Wrong  value of  AttributeSequenceOfInteger after the first 'undo'!"
-# save 
-file2 = dir + "/test2.hdf"
-batchmode_geompy.myStudyManager.SaveAs(file2, batchmode_geompy.myStudy)
-#-------------------------------------------------
-# 2nd Undo ---------------------------------------
-batchmode_geompy.myBuilder.Undo()
-res, attr = batchmode_geompy.myBuilder.FindAttribute(batchmode_geompy.father, "AttributeSequenceOfInteger")
-if res !=0 or attr != None :
-        raise  RuntimeError, "After the second 'undo' AttributeSequenceOfInteger exists but must not!"
-file3 = dir + "/test3.hdf"
-batchmode_geompy.myStudyManager.SaveAs(file3, batchmode_geompy.myStudy)
-#-------------------------------------------------
-
-#make redo twice ---------------------------------
-if batchmode_geompy.myBuilder.GetAvailableRedos() == 0:
-        raise RuntimeError, "GetAvailableRedos() = 0 but must not !"
-batchmode_geompy.myBuilder.Redo()
-batchmode_geompy.myBuilder.Redo()
-res, A = batchmode_geompy.myBuilder.FindAttribute(batchmode_geompy.father, "AttributeSequenceOfInteger")
-if res ==0 or A== None :
-        raise  RuntimeError, "AttributeSequenceOfInteger is not found but must be!"
-if A.Length() != 4:
-        print "Wrong length of SequenceOfInteger"
-if A.Value(1) != 100 or A.Value(2) != 300 or A.Value(3) != 400 or A.Value(4) != 500:
-        raise  RuntimeError, "Wrong  value of  AttributeSequenceOfInteger"
-
-
-#----------------------------------------------------------------------
-openedStudy=batchmode_geompy.myStudyManager.Open(file1);
-
-if openedStudy == None:
-        raise  RuntimeError, "Can't open saved study!"
-
-
-father = openedStudy.FindComponent("GEOM")
-if father is None:
-         raise  RuntimeError, "Geom component is not found!  Wrong study is opened." 
-
-
-#     find AttributeSequenceOfInteger
-#======================================
-
-res,A=father.FindAttribute("AttributeSequenceOfInteger")
-if res == 0 or A == None:
-        raise  RuntimeError, "Error:  not found AttributeSequenceOfInteger"
-
-A = A._narrow(SALOMEDS.AttributeSequenceOfInteger)
-
-if A.Length() != 4:
-        print "Wrong length of SequenceOfInteger"
-if A.Value(1) != 100 or A.Value(2) != 300 or A.Value(3) != 400 or A.Value(4) != 500:
-        print "Wrong  value of  AttributeSequenceOfInteger"
-#----------------------------------------------------------------------
-openedStudy=batchmode_geompy.myStudyManager.Open(file2);
-
-if openedStudy == None:
-        raise  RuntimeError, "Can't open saved study!"
-
-
-father = openedStudy.FindComponent("GEOM")
-if father is None:
-         raise  RuntimeError, "Geom component is not found!  Wrong study is opened." 
-
-
-#     find AttributeSequenceOfInteger
-#======================================
-
-res,A=father.FindAttribute("AttributeSequenceOfInteger")
-if res == 0 or A == None:
-        raise  RuntimeError, "Error:  not found AttributeSequenceOfInteger"
-
-A = A._narrow(SALOMEDS.AttributeSequenceOfInteger)
-
-if A.Length() != 5:
-        print "Wrong length of SequenceOfInteger"
-if A.Value(1) != 100 or A.Value(2) != 300 or A.Value(3) != 500 or A.Value(4) != 400 or  A.Value(5) != 700:
-        raise  RuntimeError, "Wrong  value of  AttributeSequenceOfInteger after the first 'undo'!"
-
-#----------------------------------------------------------------------
-openedStudy=batchmode_geompy.myStudyManager.Open(file3);
-
-if openedStudy == None:
-        raise  RuntimeError, "Can't open saved study!"
-
-
-father = openedStudy.FindComponent("GEOM")
-if father is None:
-         raise  RuntimeError, "Geom component is not found!  Wrong study is opened." 
-
-
-#     find AttributeSequenceOfInteger
-#======================================
-
-res,A=father.FindAttribute("AttributeSequenceOfInteger")
-
-if res!=0 or A != None:
-        raise RuntimeError, " AttributeSequenceOfInteger is found but must not!"
-
\ No newline at end of file diff --git a/doc/html/INPUT/exemple/Example17.html b/doc/html/INPUT/exemple/Example17.html deleted file mode 100755 index 458ba1e08..000000000 --- a/doc/html/INPUT/exemple/Example17.html +++ /dev/null @@ -1,162 +0,0 @@ - - - -Example - -
#% Check  methods : %
-SALOMEDS methods : RemoveAttribute, FindOrCreateAttribute, NewStudy, GetAllAttributes, NewCommand, CommitCommand, AbortCommand, NewComponent%
-
-batchmode_geompy.myBuilder._set_UndoLimit(20)
-
-batchmode_geompy.myBuilder.NewCommand() 
-child = batchmode_geompy.myBuilder.NewObject(batchmode_geompy.father)
-batchmode_geompy.myBuilder.CommitCommand()
-
-batchmode_geompy.myBuilder.NewCommand() 
-#==========================================================
-#       create AttributeSequenceOfReal      
-#==========================================================
-A = batchmode_geompy.myBuilder.FindOrCreateAttribute(child, "AttributeSequenceOfReal")
-if A == None :
-        raise  RuntimeError, "Can't create AttributeSequenceOfReal attribute"
-A = A._narrow(SALOMEDS.AttributeSequenceOfReal)
-if A == None :
-        raise  RuntimeError, "_narrow returns None instead of AttributeSequenceOfReal pointer"
-
-A.Add(0.0293)
-A.Add(522)
-A.Add(98234)
-A.Add(83.287)
-batchmode_geompy.myBuilder.CommitCommand()
-
-
-batchmode_geompy.myBuilder.NewCommand() 
-#==========================================================
-#      create  AttributeInteger      
-#==========================================================
-A = batchmode_geompy.myBuilder.FindOrCreateAttribute(child, "AttributeInteger")
-if A == None :
-        raise  RuntimeError, "Can't create AttributeInteger attribute"
-A = A._narrow(SALOMEDS.AttributeInteger)
-A.SetValue(1000000)
-
-if A.Value() != 1000000:
-        raise  RuntimeError, "Error : wrong value of  AttributeInteger"
-
-batchmode_geompy.myBuilder.CommitCommand()
-
-batchmode_geompy.myBuilder.NewCommand() #===================
-#              create AttributeName     
-#===========================================================
-A = batchmode_geompy.myBuilder.FindOrCreateAttribute(child, "AttributeName")
-if A == None :
-        raise  RuntimeError, "Can't create AttributeName attribute"
-A = A._narrow(SALOMEDS.AttributeName)
-
-if A == None :
-        raise  RuntimeError, "Can't create AttributeName attribute"
-A.SetValue("AttributesTesting")
-
-if A.Value() != "AttributesTesting":
-        print "Wrong  value of AttributeName"        
-
-batchmode_geompy.myBuilder.CommitCommand()
-
-batchmode_geompy.myBuilder.NewCommand() #===================
-#              create     AttributeComment 
-#===========================================================
-A = batchmode_geompy.myBuilder.FindOrCreateAttribute(child, "AttributeComment")
-if A == None :
-        raise  RuntimeError, "Can't create AttributeComment attribute"
-A = A._narrow(SALOMEDS.AttributeComment)
-
-if A == None :
-        raise  RuntimeError, "Can't create AttributeComment attribute"
-
-A.SetValue("GEOM")
-
-batchmode_geompy.myBuilder.AbortCommand()
-
-batchmode_geompy.myBuilder.NewCommand() #===================
-#             create   AttributePersistentRef   
-#===========================================================
-A = batchmode_geompy.myBuilder.FindOrCreateAttribute(child, "AttributePersistentRef")
-if A == None :
-        raise  RuntimeError, "Can't create AttributePersistentRef attribute"
-A = A._narrow(SALOMEDS.AttributePersistentRef)
-
-if A == None :
-        raise  RuntimeError, "Can't create AttributePersistentRef attribute"
-
-A.SetValue("/tmp/test;1")
-batchmode_geompy.myBuilder.CommitCommand()
-
-batchmode_geompy.myBuilder.NewCommand()  #===================================
-#              create    AttributeDrawable  
-#===========================================================
-A = batchmode_geompy.myBuilder.FindOrCreateAttribute(child, "AttributeDrawable")
-if A == None :
-        raise  RuntimeError, "Can't create AttributeDrawable attribute"
-A = A._narrow(SALOMEDS.AttributeDrawable)
-
-if A == None :
-        raise  RuntimeError, "Can't create AttributeDrawable attribute"
-
-A.SetDrawable(1)
-
-if A.IsDrawable() == 0:
-        "Error: wrong value of AttributeDrawable"
-batchmode_geompy.myBuilder.CommitCommand()
-
-
-
-batchmode_geompy.myBuilder.NewCommand() #===================
-#              create    AttributeSelectable  
-#===========================================================
-A = batchmode_geompy.myBuilder.FindOrCreateAttribute(child, "AttributeSelectable")
-if A == None :
-        raise  RuntimeError, "Can't create AttributeSelectable attribute"
-A = A._narrow(SALOMEDS.AttributeSelectable)
-
-if A == None :
-        raise  RuntimeError, "Can't create AttributeSelectable attribute"
-
-A.SetSelectable(1)
-
-if A.IsSelectable() == 0:
-        "Error: wrong value of AttributeSelectable"
-batchmode_geompy.myBuilder.CommitCommand()
-
-
-batchmode_geompy.myBuilder.NewCommand() #===================
-#===========================================================
-batchmode_geompy.myBuilder.RemoveAttribute(child,"AttributeSelectable")
-batchmode_geompy.myBuilder.CommitCommand()
-
-# Control the attributes 
-#===========================================================
-
-res, A = batchmode_geompy.myBuilder.FindAttribute(child, "AttributeComment")
-print "res = ", res
-if A != None :
-        print " AttributeComment was found"
-else:
-        print " AttributeComment is not found. It's correct"
-
-attributes=[]
- 
-attributes = child.GetAllAttributes()
-
-length = len(attributes)
-
-print "Attributes number = ", length
-print attributes
-for i in range(0, length) :
-        attr = attributes[i]
-        if attr is None :
-                print i,"None item of object attributes list"
-
-if length != 5 :
-        raise RuntimeError, "Wrong number of attributes"
-
-
\ No newline at end of file diff --git a/doc/html/INPUT/exemple/Example18.html b/doc/html/INPUT/exemple/Example18.html deleted file mode 100755 index a6c00d67d..000000000 --- a/doc/html/INPUT/exemple/Example18.html +++ /dev/null @@ -1,171 +0,0 @@ - - - -Example - -
#%AttributeTreeNode interface(creations/saving/restoring)%
-#%SALOMEDS methods : FindOrCreateAttribute, NewObject%
-#%Attribute methods : HasFirst, HasFather, SetPrevious, Next, InsertAfter, GetFather, HasNext, SetValue, Append, NewStudy, Label, IsRoot, Prepend, SetFather, Depth, HasPrevious%
-
-child1 = batchmode_geompy.myBuilder.NewObject(batchmode_geompy.father)
-A = batchmode_geompy.myBuilder.FindOrCreateAttribute(child1,"AttributeName")
-if A == None :
-        raise  RuntimeError, "Can't create AttributeName attribute"
-A = A._narrow(SALOMEDS.AttributeName)
-A.SetValue("N1")
-N1 = batchmode_geompy.myBuilder.FindOrCreateAttribute(child1, "AttributeTreeNode")
-if N1 == None :
-        raise  RuntimeError, "Can't create AttributeTreeNode attribute"
-
-child2 = batchmode_geompy.myBuilder.NewObject(batchmode_geompy.father)
-A = batchmode_geompy.myBuilder.FindOrCreateAttribute(child2,"AttributeName")
-if A == None :
-        raise  RuntimeError, "Can't create AttributeName attribute"
-A = A._narrow(SALOMEDS.AttributeName)
-A.SetValue("N2")
-N2 = batchmode_geompy.myBuilder.FindOrCreateAttribute(child2, "AttributeTreeNode")
-if N2 == None :
-        raise  RuntimeError, "Can't create AttributeTreeNode attribute"
-
-child3 = batchmode_geompy.myBuilder.NewObject(batchmode_geompy.father)
-A = batchmode_geompy.myBuilder.FindOrCreateAttribute(child3,"AttributeName")
-if A == None :
-        raise  RuntimeError, "Can't create AttributeName attribute"
-A = A._narrow(SALOMEDS.AttributeName)
-A.SetValue("N3")
-N3 = batchmode_geompy.myBuilder.FindOrCreateAttribute(child3, "AttributeTreeNode")
-if N3 == None :
-        raise  RuntimeError, "Can't create AttributeTreeNode attribute"
-
-
-child11 = batchmode_geompy.myBuilder.NewObject(child1)
-A = batchmode_geompy.myBuilder.FindOrCreateAttribute(child11,"AttributeName")
-if A == None :
-        raise  RuntimeError, "Can't create AttributeName attribute"
-A = A._narrow(SALOMEDS.AttributeName)
-A.SetValue("N11")
-
-N11 = batchmode_geompy.myBuilder.FindOrCreateAttribute(child11, "AttributeTreeNode")
-
-if N11 == None :
-        raise  RuntimeError, "Can't create AttributeTreeNode attribute"
-
-child111 = batchmode_geompy.myBuilder.NewObject(child11)
-A = batchmode_geompy.myBuilder.FindOrCreateAttribute(child111, "AttributeName")
-if A == None :
-        raise  RuntimeError, "Can't create AttributeName attribute"
-A = A._narrow(SALOMEDS.AttributeName)
-A.SetValue("N111")
-
-N111 = batchmode_geompy.myBuilder.FindOrCreateAttribute(child111, "AttributeTreeNode")
-
-if N111 == None :
-        raise  RuntimeError, "Can't create AttributeTreeNode attribute"
- 
-
-child31 = batchmode_geompy.myBuilder.NewObject(child3)
-A = batchmode_geompy.myBuilder.FindOrCreateAttribute(child31,"AttributeName")
-if A == None :
-        raise  RuntimeError, "Can't create AttributeName attribute"
-A = A._narrow(SALOMEDS.AttributeName)
-A.SetValue("N31")
-
-N31 = batchmode_geompy.myBuilder.FindOrCreateAttribute(child31, "AttributeTreeNode")
-if N31 == None :
-        raise  RuntimeError, "Can't create AttributeTreeNode attribute"
-
-child32 = batchmode_geompy.myBuilder.NewObject(child3)
-A = batchmode_geompy.myBuilder.FindOrCreateAttribute(child32,"AttributeName")
-if A == None :
-        raise  RuntimeError, "Can't create AttributeName attribute"
-A = A._narrow(SALOMEDS.AttributeName)
-A.SetValue("N32")
-
-N32 = batchmode_geompy.myBuilder.FindOrCreateAttribute(child32, "AttributeTreeNode")
-if N32 == None :
-        raise  RuntimeError, "Can't create AttributeTreeNode attribute"
-
-child321 = batchmode_geompy.myBuilder.NewObject(child32)
-A = batchmode_geompy.myBuilder.FindOrCreateAttribute(child321,"AttributeName")
-if A == None :
-        raise  RuntimeError, "Can't create AttributeName attribute"
-A = A._narrow(SALOMEDS.AttributeName)
-A.SetValue("N321")
-
-N321 = batchmode_geompy.myBuilder.FindOrCreateAttribute(child321, "AttributeTreeNode")
-if N321 == None :
-        raise  RuntimeError, "Can't create AttributeTreeNode attribute"
-
-child33 = batchmode_geompy.myBuilder.NewObject(child3)
-A = batchmode_geompy.myBuilder.FindOrCreateAttribute(child33,"AttributeName")
-if A == None :
-        raise  RuntimeError, "Can't create AttributeName attribute"
-A = A._narrow(SALOMEDS.AttributeName)
-A.SetValue("N33")
-
-N33 = batchmode_geompy.myBuilder.FindOrCreateAttribute(child33, "AttributeTreeNode")
-if N33 == None :
-        raise  RuntimeError, "Can't create AttributeTreeNode attribute"
-
-child34 = batchmode_geompy.myBuilder.NewObject(child3)
-A = batchmode_geompy.myBuilder.FindOrCreateAttribute(child34,"AttributeName")
-if A == None :
-        raise  RuntimeError, "Can't create AttributeName attribute"
-A = A._narrow(SALOMEDS.AttributeName)
-A.SetValue("N34")
-
-N34 = batchmode_geompy.myBuilder.FindOrCreateAttribute(child34, "AttributeTreeNode")
-if N34 == None :
-        raise  RuntimeError, "Can't create AttributeTreeNode attribute"
-
-
-
-#Create links between tree nodes.
-#  -| root
-#   --N1 __
-#   |     N11__
-#   |           N111
-#   --N2           
-#   |   
-#   --N3__
-#         N31
-#         N32__
-#              N321
-#         N33
-#         N34
-        
-N11.SetFather(N1)
-N11.Append(N111)
-N3.SetPrevious(N1)
-N3.Prepend(N2)
-
-N32.SetFather(N3)
-N32.Prepend(N31)
-N33.InsertAfter(N32)
-N33.Append(N34)
-print "-------------  ", N1, "  -------------  "
-print "N1.Label() = ", N1.Label() , "IsRoot() = ", N1.IsRoot(), "Depth() = ", N1.Depth()
-print "N11.Label() = ", N11.Label() , "IsRoot() = ", N11.IsRoot(), "Depth() = ", N11.Depth()
-print "N111.Label() = ", N111.Label() , "IsRoot() = ", N111.IsRoot(), "Depth() = ", N111.Depth()
-print "N2.Label() = ", N2.Label() , "IsRoot() = ",  N2.IsRoot(), "Depth() = ", N2.Depth()
-print "N3.Label() = ", N3.Label() , "IsRoot() = ", N3.IsRoot(), "Depth() = ", N3.Depth()
-print "N31.Label() = ", N31.Label() , "IsRoot() = ", N31.IsRoot(), "Depth() = ", N31.Depth()
-print "N32.Label() = ", N32.Label() , "IsRoot() = ", N32.IsRoot(), "Depth() = ", N32.Depth()
-print "N321.Label() = ", N321.Label() , "IsRoot() = ", N321.IsRoot(), "Depth() = ", N321.Depth()
-print "N33.Label() = ", N33.Label() , "IsRoot() = ", N33.IsRoot(), "Depth() = ", N33.Depth()
-print "N34.Label() = ", N34.Label() , "IsRoot() = ", N34.IsRoot(), "Depth() = ", N34.Depth()
-print "N1.IsRoot()=", N1.IsRoot()
-
-print "N1.HasNext() = ",N1.HasNext()
-if  N1.HasNext():
-        print N1.Next().Label()
-
-print "N32.HasPrevious() = ",N32.HasPrevious()
-if  N32.HasPrevious():
-        print N32.GetPrevious().Label()
-
-print "N111.HasFirst()=",N111.HasFirst()
-print "N111.HasFather()=",N111.HasFather()
-if N111.HasFather() :
-        print "N111.GetFather().Label()=",N111.GetFather().Label()
-
\ No newline at end of file diff --git a/doc/html/INPUT/exemple/Example19.html b/doc/html/INPUT/exemple/Example19.html deleted file mode 100755 index 4d567ff75..000000000 --- a/doc/html/INPUT/exemple/Example19.html +++ /dev/null @@ -1,547 +0,0 @@ - - - -Exemple - -
-#^ SALOMEDS methods :  FindOrCreateAttribute, Save, SaveAs, Close, Open, FindComponent, FindAttribute, FindObject, LoadWith^
-#^ Attribute methods : Value, SetValue^
-#======================================================================
-#1. Create Study and add some components to it
-#======================================================================
-
-#=================================
-#       create AttributeReal      
-#=================================
-A = batchmode_geompy.myBuilder.FindOrCreateAttribute(batchmode_geompy.father, "AttributeReal")
-if A == None :
-        raise  RuntimeError, "Can't create AttributeReal attribute"
-A = A._narrow(SALOMEDS.AttributeReal)
-A.SetValue(0.0001)
-if A.Value() != 0.0001:
-        raise  RuntimeError, "Error : wrong value of  AttributeReal"
-
-# ===  Geometry  ==================================================
-
-import batchmode_geompy
- 
-#===================================
-#     define a box
-#===================================
-
-box = batchmode_geompy.MakeBox(0., 0., 0., 100., 200., 300.)
-idbox = batchmode_geompy.addToStudy(box,"box")
-
-
-geom = batchmode_geompy.geom
-import SMESH
-import batchmode_smesh
-ShapeType = batchmode_smesh.ShapeType
-
-# ---- add first face of box in study
-
-subShapeList = batchmode_geompy.SubShapeAll(box,ShapeType["Face"])
-face=subShapeList[0]
-name = "box_face"
-print name
-idface= batchmode_geompy.addToStudyInFather(box,face,name)
-
-# ---- add shell from box  in study
-
-subShellList= batchmode_geompy.SubShapeAll(box,ShapeType["Shell"])
-shell = subShellList[0]
-name = "box_shell"
-print name
-idshell= batchmode_geompy.addToStudyInFather(box,shell,name)
-
-# ---- add first edge of face in study
-
-edgeList =  batchmode_geompy.SubShapeAll(face,ShapeType["Edge"])
-edge=edgeList[0];
-name = "face_edge"
-print name
-idedge= batchmode_geompy.addToStudyInFather(face,edge,name)
-
-# ---- launch SMESH, init a Mesh with the box
-
-smesh =  batchmode_smesh.smesh
-#  --  Init  --
-shape = batchmode_geompy.IDToObject(idbox)
-mesh=smesh.Init(geom, batchmode_geompy.myStudyId, shape)
-
-orb = batchmode_geompy.orb
-
-idmesh = batchmode_smesh.AddNewMesh( orb.object_to_string(mesh) )
-batchmode_smesh.SetName(idmesh, "Meshbox");
-batchmode_smesh.SetShape(idbox, idmesh);
-
-# ---- create Hypothesis
-
-print "-------------------------- create Hypothesis ----------------------"
-print "-------------------------- LocalLength"
-hyp1 = smesh.CreateHypothesis("LocalLength", batchmode_geompy.myStudyId )
-hypLen1 = hyp1._narrow(SMESH.SMESH_LocalLength)
-hypLen1.SetLength(100)
-print hypLen1.GetName()
-print hypLen1.GetId()
-print hypLen1.GetLength()
-
-idlength = batchmode_smesh.AddNewHypothesis( orb.object_to_string(hypLen1) );
-batchmode_smesh.SetName(idlength, "Local_Length_100");
-
-print "-------------------------- NumberOfSegments"
-hyp2 =  smesh.CreateHypothesis("NumberOfSegments", batchmode_geompy.myStudyId )
-hypNbSeg1=hyp2._narrow(SMESH.SMESH_NumberOfSegments)
-hypNbSeg1.SetNumberOfSegments(7)
-print hypNbSeg1.GetName()
-print hypNbSeg1.GetId()
-print hypNbSeg1.GetNumberOfSegments()
-
-idseg =  batchmode_smesh.AddNewHypothesis( orb.object_to_string(hypNbSeg1) );
-batchmode_smesh.SetName(idseg, "NumberOfSegments_7");
-
-print "-------------------------- MaxElementArea"
-hyp3 = smesh.CreateHypothesis("MaxElementArea",  batchmode_geompy.myStudyId)
-hypArea1=hyp3._narrow(SMESH.SMESH_MaxElementArea)
-hypArea1.SetMaxElementArea(2500)
-print hypArea1.GetName()
-print hypArea1.GetId()
-print hypArea1.GetMaxElementArea()
-
-idarea1 = batchmode_smesh.AddNewHypothesis( orb.object_to_string(hypArea1) );
-batchmode_smesh.SetName(idarea1, "MaxElementArea_2500");
-
-print "-------------------------- MaxElementArea"
-hyp3 = smesh.CreateHypothesis("MaxElementArea",  batchmode_geompy.myStudyId)
-hypArea2 = hyp3._narrow(SMESH.SMESH_MaxElementArea)
-hypArea2.SetMaxElementArea(500)
-print hypArea2.GetName()
-print hypArea2.GetId()
-print hypArea2.GetMaxElementArea()
-
-idarea2 = batchmode_smesh.AddNewHypothesis( orb.object_to_string(hypArea2) );
-batchmode_smesh.SetName(idarea2, "MaxElementArea_500");
-
-print "-------------------------- Regular_1D"
-alg1 = smesh.CreateHypothesis("Regular_1D",  batchmode_geompy.myStudyId)
-algo1 = alg1._narrow(SMESH.SMESH_Algo)
-listHyp = algo1.GetCompatibleHypothesis()
-for hyp in listHyp:
-    print hyp
-algoReg=alg1._narrow(SMESH.SMESH_Regular_1D)
-print algoReg.GetName()
-print algoReg.GetId()
-
-idreg = batchmode_smesh.AddNewAlgorithms( orb.object_to_string(algoReg) );
-batchmode_smesh.SetName(idreg, "Regular_1D");
-
-print "-------------------------- MEFISTO_2D"
-alg2 = smesh.CreateHypothesis("MEFISTO_2D",  batchmode_geompy.myStudyId)
-algo2 = alg2._narrow(SMESH.SMESH_Algo)
-listHyp=algo2.GetCompatibleHypothesis()
-for hyp in listHyp:
-    print hyp
-algoMef=alg2._narrow(SMESH.SMESH_MEFISTO_2D)
-print algoMef.GetName()
-print algoMef.GetId()
-
-idmef = batchmode_smesh.AddNewAlgorithms( orb.object_to_string(algoMef) );
-batchmode_smesh.SetName(idmef, "MEFISTO_2D");
-
-
-# ---- add hypothesis to edge
-
-print "-------------------------- add hypothesis to edge"
-edge = batchmode_geompy.IDToObject(idedge)
-submesh = mesh.GetElementsOnShape(edge)
-ret = mesh.AddHypothesis(edge,algoReg)
-print ret
-ret=mesh.AddHypothesis(edge,hypLen1)
-print ret
-
-idsm1 = batchmode_smesh.AddSubMeshOnShape( idmesh,
-                                           idedge,
-                                           orb.object_to_string(submesh),
-                                           ShapeType["Edge"] )
-batchmode_smesh.SetName(idsm1, "SubMeshEdge")
-batchmode_smesh.SetAlgorithms( idsm1, idreg );
-batchmode_smesh.SetHypothesis( idsm1, idlength );
-
-print "-------------------------- add hypothesis to face"
-face=batchmode_geompy.IDToObject(idface)
-submesh=mesh.GetElementsOnShape(face)
-ret=mesh.AddHypothesis(face,hypArea2)
-print ret
-
-idsm2 = batchmode_smesh.AddSubMeshOnShape( idmesh,
-                                    idface,
-                                    orb.object_to_string(submesh),
-                                    ShapeType["Face"] )
-batchmode_smesh.SetName(idsm2, "SubMeshFace")
-batchmode_smesh.SetHypothesis( idsm2, idarea2 );
-
-# ---- add hypothesis to box
-
-print "-------------------------- add hypothesis to box"
-box=batchmode_geompy.IDToObject(idbox)
-submesh=mesh.GetElementsOnShape(box)
-ret=mesh.AddHypothesis(box,algoReg)
-print ret
-ret=mesh.AddHypothesis(box,hypNbSeg1)
-print ret
-ret=mesh.AddHypothesis(box,algoMef)
-print ret
-ret=mesh.AddHypothesis(box,hypArea1)
-print ret
-
-batchmode_smesh.SetAlgorithms( idmesh, idreg );
-batchmode_smesh.SetHypothesis( idmesh, idseg );
-batchmode_smesh.SetAlgorithms( idmesh, idmef );
-batchmode_smesh.SetHypothesis( idmesh, idarea1 );
-
-# ---- compute box
-
-print "-------------------------- compute box"
-ret=smesh.Compute(mesh,box)
-print ret
-log=mesh.GetLog(0); # no erase trace
-for linelog in log:
-    print linelog
-
-
-#=======================================================
-#    add  SuperVision component
-#=======================================================
-
-from batchmode_SuperV import *
-import os
-dir= os.getenv("SALOME_ROOT_DIR")
-if dir == None:
-        raise RuntimeError, "SALOME_ROOT_DIR is not defined"
-xmlfile = dir +"/../SALOME_ROOT/SuperVisionTest/resources/GraphEssai.xml"
-print "--------------\n"+xmlfile+"\n--------------\n"
-
-myGraph = Graph ( xmlfile )
-
-# This DataFlow is "valid" : no loop, correct links between Nodes etc...
-print myGraph.IsValid()
-
-# Get Nodes
-myGraph.PrintNodes()
-Add,Sub,Mul,Div = myGraph.Nodes()
-
-# Load Datas
-Addx = Add.Input("x",3.)
-Addy = Add.Input("y",4.5)
-Subx = Sub.Input("x",1.5)
-
-# Get Output Port
-Addz = Add.Port('z')
-Subz = Sub.Port('z')
-Mulz = Mul.Port('z')
-Divz = Div.Port('z')
-
-# This DataFlow is "executable" : all pending Ports are defined with Datas
-print myGraph.IsExecutable()
-
-# Starts only execution of that DataFlow and gets control immediatly
-print myGraph.Run()
-
-# That DataFlow is running ==> 0 (false)
-print myGraph.IsDone()
-
-# Events of execution :
-aStatus,aNode,anEvent,aState = myGraph.Event()
-while aStatus :
-    print aNode.Thread(),aNode.SubGraph(),aNode.Name(),anEvent,aState
-    aStatus,aNode,anEvent,aState = myGraph.Event()
-print myGraph.IsDone()
-
-# Wait for Completion (but it is already done after event loop ...)
-print "Done : ",myGraph.DoneW()
-
-# Get result
-print "Result : ",Divz.ToString()
-
-# Intermediate results :
-print "Intermediate Result Add\z : ",Addz.ToString()
-print "Intermediate Result Sub\z : ",Subz.ToString()
-print "Intermediate Result Mul\z : ",Mulz.ToString()
-
-print " "
-#print "Type : print myGraph.IsDone()"
-#print "       If execution is finished ==> 1 (true)"
-res=myGraph.IsDone()
-if res != 1:
-        raise RuntimeError, "myGraph.Run() is not done"
-
-print " "
-print "Type : print Divz.ToString()"
-print "       You will get the result"
-Divz.ToString()
-
-print " "
-print "Type : myGraph.PrintPorts()"
-print "       to see input and output values of the graph"
-myGraph.PrintPorts()
-
-print " "
-print "Type : Add.PrintPorts()"
-Add.PrintPorts()
-
-print "Type : Sub.PrintPorts()"
-Sub.PrintPorts()
-
-print "Type : Mul.PrintPorts()"
-Mul.PrintPorts()
-
-print "Type : Div.PrintPorts()"
-print "       to see input and output values of nodes"
-Div.PrintPorts()
-
-# Export will create newsupervisionexample.xml and the corresponding .py file
-tmpdir=os.getenv("TmpDir")
-if tmpdir is None:
-        tmpdir="/tmp"
-file = tmpdir + "/newsupervisionexample"
-print "--------------\n"+file+"\n--------------\n"
-myGraph.Export(file)
-
-ior = batchmode_geompy.orb.object_to_string(myGraph.G)
-addStudy(ior)
-
-GraphName = myGraph.Name()
-print "Befor save ",
-nodes = myGraph.Nodes()
-length_bs = len(nodes)
-print "ListOfNodes length = ", length_bs
-names=[]
-for node in nodes:
-        names.append(node.Name())
-print names
-
-
-#=================================
-#      save / restore study      
-#=================================
-str= os.getenv("TmpDir")
-if str == None:  
-        str = "/tmp"
-file = str+"/test.hdf"
-
-
-#==================================================
-#1. SaveAs
-#==================================================
-print " -------  We will save to", file, "-----------"
-
-batchmode_geompy.myStudyManager.SaveAs(file, batchmode_geompy.myStudy)
-batchmode_geompy.myStudyManager.Close(batchmode_geompy.myStudy)
-
-#rename the file and try to reread it again
-
-os.mkdir(str + "/test_dir")
-
-#2.==================================================
-print " ------- We rename the file as " + str + "/test_dir/test_new.hdf"
-os.rename(file, str+"/test_dir/test_new.hdf")
-
-#==================================================
-#3. Open
-#==================================================
-print " ------- We try to open " + str + "/test_dir/test_new.hdf"
-
-try:
-        openedStudy=batchmode_geompy.myStudyManager.Open(str+"/test_dir/test_new.hdf")
-except Exception:
-        raise  RuntimeError, "Can't open saved study!"
-
-if openedStudy == None:
-        raise  RuntimeError, "Can't open saved study!"
-
-father = openedStudy.FindComponent("GEOM")
-if father is None:
-         raise  RuntimeError, "GEOM component is not found!  Wrong study is opened." 
-
-
-#=================================
-#     find AttributeReal
-#=================================
-
-res,A=father.FindAttribute("AttributeReal")
-if res == 0 or A == None:
-        raise  RuntimeError, "Error:  not found AttributeReal"
-
-A = A._narrow(SALOMEDS.AttributeReal)
-if A.Value() != 0.0001:
-        raise  RuntimeError, "Error : wrong value of  AttributeReal"
-
-#==================================================
-#     find  box
-#==================================================
-box = openedStudy.FindObject("box")
-if box is None :
-        raise  RuntimeError, "box was not found! Wrong study is opened."
-
-edge=openedStudy.FindObject("face_edge")
-if edge is None :
-        raise  RuntimeError, "face_edge was not found! Wrong study is opened."
-
-
-father = openedStudy.FindComponent("MESH")
-if father is None:
-         raise  RuntimeError, "MESH component is not found!  Wrong study is opened." 
-
-hp=openedStudy.FindObject("Meshbox")
-if hp is None:
-        raise  RuntimeError, "Meshbox object was not found! Wrong study is opened."
-
-hp = openedStudy.FindObject("Algorithms Definition")
-if hp is None:
-        raise  RuntimeError, "Algorithms Definition object was not found! Wrong study is opened."
-
-hp = openedStudy.FindObject("MEFISTO_2D")
-if hp is None:
-        raise  RuntimeError, "MEFISTO_2D object was not found! Wrong study is opened."
-
-hp = openedStudy.FindObject("Hypothesis Definition")
-if hp is None:
-        raise  RuntimeError, "Algoriths Definition was not found! Wrong study is opened."
-
-#==================================================
-# Find Supervisor
-#==================================================
-father = openedStudy.FindComponent("SUPERV")
-if father is None: 
-         raise  RuntimeError, "SUPERV component is not found!  Wrong study is opened." 
-
-SuperV = lcc.FindOrLoadComponent("SuperVisionContainer","Supervision")
-Builder = openedStudy.NewBuilder()
-Builder.LoadWith(father, SuperV)
-import SALOMEDS
-
-aChildIterator = openedStudy.NewChildIterator(father)
-
-#while aChildIterator.More():
-anSObject = aChildIterator.Value()
-#print "iterate: ", anSObject.GetID()
-res, anAttr=anSObject.FindAttribute("AttributeIOR")
-if res :
-        anAttr=anAttr._narrow(SALOMEDS.AttributeIOR)
-        ior = anAttr.Value()
-        Graph=SuperV.getGraph(ior)
-        ListOfNodes=Graph.Nodes()
-        length_as= len(ListOfNodes)
-        print "ListOfNodes length = ", length_as
-        if length_as != length_bs:
-                raise RuntimeErrror, "defferent length of nodes after study open"
-#aChildIterator.Next()
-
-Names = []
-for node in ListOfNodes:
-        Names.append(node.Name())
-names.sort()
-Names.sort()
-if names != Names :
-        raise RuntimeError, "List of dataflow nodes after save differs from one befor save operation"
-
-#==================================================
-#4. Save
-#==================================================
-batchmode_geompy.myStudyManager.Save(openedStudy)
-batchmode_geompy.myStudyManager.Close(openedStudy)
-#==================================================
-#5. Open
-#==================================================
-try:
-        openedStudy = batchmode_geompy.myStudyManager.Open(str+"/test_dir/test_new.hdf")
-except Exception:
-        raise  RuntimeError, "Can't open saved study!"
-
-
-
-if openedStudy == None:
-        raise  RuntimeError, "Can't open saved study!"
-
-father = openedStudy.FindComponent("GEOM")
-if father is None:
-         raise  RuntimeError, "Geom component is not found!  Wrong study is opened." 
-
-
-#find AttributeReal
-res,A=father.FindAttribute("AttributeReal")
-if res == 0 or A == None:
-        raise  RuntimeError, "Error:  not found AttributeReal"
-
-A = A._narrow(SALOMEDS.AttributeReal)
-if A.Value() != 0.0001:
-        raise  RuntimeError, "Error : wrong value of  AttributeReal"
-#==================================================
-#     find  box
-#==================================================
-box = openedStudy.FindObject("box")
-if box is None :
-        raise  RuntimeError, "box was not found! Wrong study is opened."
-
-edge=openedStudy.FindObject("face_edge")
-if edge is None :
-        raise  RuntimeError, "face_edge was not found! Wrong study is opened."
-
-
-father = openedStudy.FindComponent("MESH")
-if father is None:
-         raise  RuntimeError, "MESH component is not found!  Wrong study is opened." 
-
-hp=openedStudy.FindObject("Meshbox")
-if hp is None:
-        raise  RuntimeError, "Meshbox object was not found! Wrong study is opened."
-
-hp = openedStudy.FindObject("Algorithms Definition")
-if hp is None:
-        raise  RuntimeError, "Algorithms Definition object was not found! Wrong study is opened."
-
-hp = openedStudy.FindObject("MEFISTO_2D")
-if hp is None:
-        raise  RuntimeError, "MEFISTO_2D object was not found! Wrong study is opened."
-
-hp = openedStudy.FindObject("Hypothesis Definition")
-if hp is None:
-        raise  RuntimeError, "Algoriths Definition was not found! Wrong study is opened."
-
-#==================================================
-# Find Supervisor
-#==================================================
-father = openedStudy.FindComponent("SUPERV")
-if father is None:
-         raise  RuntimeError, "SUPERV component is not found!  Wrong study is opened." 
-
-SuperV = lcc.FindOrLoadComponent("SuperVisionContainer","Supervision")
-Builder = openedStudy.NewBuilder()
-Builder.LoadWith(father, SuperV)
-import SALOMEDS
-
-aChildIterator = openedStudy.NewChildIterator(father)
-
-#while aChildIterator.More():
-anSObject = aChildIterator.Value()
-
-res, anAttr=anSObject.FindAttribute("AttributeIOR")
-if res :
-        anAttr=anAttr._narrow(SALOMEDS.AttributeIOR)
-        ior = anAttr.Value()
-        Graph=SuperV.getGraph(ior)
-        ListOfNodes=Graph.Nodes()
-        length_as= len(ListOfNodes)
-        print "ListOfNodes length = ", length_as
-        if length_as != length_bs:
-                raise RuntimeErrror, "defferent length of nodes after study open"
-#aChildIterator.Next()
-
-Names = []
-for node in ListOfNodes:
-        Names.append(node.Name())
-names.sort()
-Names.sort()
-if names != Names :
-        raise RuntimeError, "List of dataflow nodes after save differs from one befor save operation"
-
\ No newline at end of file diff --git a/doc/html/INPUT/exemple/Example2.html b/doc/html/INPUT/exemple/Example2.html deleted file mode 100755 index 16361364f..000000000 --- a/doc/html/INPUT/exemple/Example2.html +++ /dev/null @@ -1,46 +0,0 @@ - - - -Example - -
#%AttributeInteger interface(creation/saving/restoring)%
-#%Methods : FindOrCreateAttribute , Value, SaveAs, SetValue, FindComponent, FindAttribute, Open%
-
-#      create  AttributeInteger      
-#=================================
-A = batchmode_geompy.myBuilder.FindOrCreateAttribute(batchmode_geompy.father, "AttributeInteger")
-if A == None :
-        raise  RuntimeError, "Can't create AttributeInteger attribute"
-A = A._narrow(SALOMEDS.AttributeInteger)
-A.SetValue(1000000)
-
-if A.Value() != 1000000:
-        raise  RuntimeError, "Error : wrong value of  AttributeInteger"
-
-#   save and restore the study
-#=================================
-str= os.getenv("TmpDir")
-if str == None:
-        str = "/tmp"
-# ... save ...
-batchmode_geompy.myStudyManager.SaveAs(str+"/test.hdf", batchmode_geompy.myStudy)
-# ... open ...
-openedStudy= batchmode_geompy.myStudyManager.Open(str+"/test.hdf");
-
-if openedStudy == None:
-        raise  RuntimeError, "Can't open saved study!"
-
-
-father = openedStudy.FindComponent("GEOM")
-if father is None:
-         raise  RuntimeError, "Geom component is not found!  Wrong study is opened." 
-
-#     find AttributeInteger
-#================================
-res,A=father.FindAttribute("AttributeInteger")
-if res == 0  or A == None:
-        raise  RuntimeError, "Error:  not found AttributeInteger"
-A = A._narrow(SALOMEDS.AttributeInteger)
-if A.Value() != 1000000:
-        raise  RuntimeError, "Error : wrong value of  AttributeInteger after study restoring"
-
\ No newline at end of file diff --git a/doc/html/INPUT/exemple/Example20.html b/doc/html/INPUT/exemple/Example20.html deleted file mode 100755 index 3019ad80e..000000000 --- a/doc/html/INPUT/exemple/Example20.html +++ /dev/null @@ -1,160 +0,0 @@ - - - -Exemple - -
-#^SALOMEDS methods : FindOrCreateAttribute, SaveAs, FindComponent, FindAttribute, NewCommand, GetProperties, Open, CommitCommand, NewBuilder^
-#^Attribute methods : SetLocked, IsLocked, GetCreationMode, SetCreationDate, IsModified, GetUserName, Value, SetUserName, SetValue, GetCreationDate^
-
-batchmode_geompy.myBuilder._set_UndoLimit(20)
-
-#--------------------------------------------------------------------------
-#       create AttributeReal      
-#===============================================
-A = batchmode_geompy.myBuilder.FindOrCreateAttribute(batchmode_geompy.father, "AttributeReal")
-if A == None :
-        raise  RuntimeError, "Can't create AttributeReal attribute"
-A = A._narrow(SALOMEDS.AttributeReal)
-A.SetValue(0.0001)
-if A.Value() != 0.0001:
-        raise  RuntimeError, "Error : wrong value of  AttributeReal"
-
-#      create AttributeStudyProperties
-#================================================
-A = batchmode_geompy.myStudy.GetProperties()
-if A == None :
-        raise  RuntimeError, "Can't create AttributeStudyProperties attribute"
-A = A._narrow(SALOMEDS.AttributeStudyProperties)
-
-batchmode_geompy.myBuilder.NewCommand();
-print "A.GetUserName()= ", A.GetUserName()
-res,mm,hh,dd,mnth,yy=A.GetCreationDate()
-print "A.GetCreationDate() = ", mm,hh,dd,mnth,yy
-print "A.GetCreationMode() = ", A.GetCreationMode()
-print "A.IsModified() = ", A.IsModified()
-print "A.IsLocked() = ", A.IsLocked()
-if A.IsLocked() == 0 :
-        A.SetUserName("tester"); print 'A.SetUserName("tester"), A.GetUserName() = ', A.GetUserName()
-        A.SetCreationDate(11,11,11,11,2002); print 'A.SetCreationDate(11,11,11,11,2002), A.GetCreationDate() =', A.GetCreationDate()
-        print "A.IsModified() = ", A.IsModified()
-A.SetLocked(1)
-
-#check the transaction result 
-batchmode_geompy.myBuilder.CommitCommand()
-if A.GetUserName() != "tester":
-        print 'Control after transaction close : A.GetUserName() = ', A.GetUserName()
-        raise RuntimeError, "Field 'UserName' was not modified but had to!"
-
-# try to make some changes wrapped by transaction 
-#================================================
-batchmode_geompy.myBuilder.NewCommand()
-A = batchmode_geompy.myBuilder.FindOrCreateAttribute(batchmode_geompy.father, "AttributeInteger")
-
-if A == None :
-        raise  RuntimeError, "Can't create AttributeInteger attribute"
-A = A._narrow(SALOMEDS.AttributeInteger)
-A.SetValue(1000000)
-
-exception_was = None
-try : batchmode_geompy.myBuilder.CommitCommand()
-except Exception: exception_was = 1
-
-if exception_was is None:
-        raise RuntimeError, "Study was locked for changes but CommitCommand did not generate an exception !"
-
-#      save / restore study      
-
-#================================================
-str= os.getenv("TmpDir")
-if str == None:
-        str = "/tmp"
-file = str+"/test.hdf"
-
-print " -------  We will save to", file, "-----------"
-
-batchmode_geompy.myStudyManager.SaveAs(file, batchmode_geompy.myStudy)
-
-
-#--------------------------------------------------------------------------#
-#--------------------------- Open file ------------------------------------# 
-#--------------------------------------------------------------------------#
-
-print" -------------- Open  " + file + "-------------- " 
-
-openedStudy = batchmode_geompy.myStudyManager.Open(file)
-if openedStudy == None:
-        raise  RuntimeError, "Can't open saved study!"
-
-father = openedStudy.FindComponent("GEOM")
-if father is None:
-         raise  RuntimeError, "Geom component is not found!  Wrong study is opened." 
-
-
-#1.     find AttributeReal
-#================================================
-
-res,A=father.FindAttribute("AttributeReal")
-if res == 0 or A == None:
-        raise  RuntimeError, "Error:  not found AttributeReal"
-
-A = A._narrow(SALOMEDS.AttributeReal)
-if A.Value() != 0.0001:
-        raise  RuntimeError, "Error : wrong value of  AttributeReal"
- 
-
-#2.     find AttributeStudyProperties
-#=================================================
-A=openedStudy.GetProperties()
-if res == 0 or A == None:
-        raise  RuntimeError, "Error:  not found AttributeStudyProperties"
-
-A = A._narrow(SALOMEDS.AttributeStudyProperties)
-if A.IsLocked() == 0 :
-        raise  RuntimeError, "Error : AttributeStudyProperties must have Locked flag but have no!"
-
-#get the builder
-myBuilder = openedStudy.NewBuilder()
-
-#3. try to make some changes wrapped by transaction 
-#==================================================
-exception_was = None
-try : 
-        myBuilder.NewCommand()
-        A = myBuilder.FindOrCreateAttribute(father, "AttributeInteger")
-
-        if A == None :
-                raise  RuntimeError, "Can't create AttributeInteger attribute"
-        A = A._narrow(SALOMEDS.AttributeInteger)
-        A.SetValue(1000000)
-        myBuilder.CommitCommand()
-except Exception: exception_was = 1
-
-if exception_was is None:
-        raise RuntimeError, "Study was locked for changes but CommitCommand did not generate an exception !"
-
-
-myBuilder.NewCommand()
-A=openedStudy.GetProperties()
-A = A._narrow(SALOMEDS.AttributeStudyProperties)
-A.SetLocked(0)
-myBuilder.CommitCommand()
-
-#4.
-myBuilder.NewCommand()
-A.SetLocked(0);
-print "A.GetUserName()= ", A.GetUserName()
-print "A.GetCreationDate() = ", A.GetCreationDate()
-print "A.GetCreationMode() = ", A.GetCreationMode()
-print "A.IsModified() = ", A.IsModified()
-myBuilder.CommitCommand()
-
-#5.
-myBuilder.NewCommand()
-A.SetUserName("tester1")
-myBuilder.CommitCommand()
-print "A.GetUserName()= ", A.GetUserName()
-
-#remove the document file
-os.remove(file)
-
\ No newline at end of file diff --git a/doc/html/INPUT/exemple/Example21.html b/doc/html/INPUT/exemple/Example21.html deleted file mode 100755 index 981e9d7ff..000000000 --- a/doc/html/INPUT/exemple/Example21.html +++ /dev/null @@ -1,136 +0,0 @@ - - - -Exemple - -
-#^SALOMEDS methods : FindOrCreateAttribute, SaveAs, FindComponent, FindAttribute, Open^
-#^Attribute methods: GetValue, GetNbColumns, AddColumn, SetRowTitles, PutValue, GetColumn, GetColumnTitles, GetTitle, SetRow, GetRowTitles, SetColumnTitles, SetColumn, GetRow, GetNbRows, SetColumnTitle, AddRow, SetTitle, SetRowTitle^
-
-#       create AttributeReal      
-#=======================================================================================================
-A = batchmode_geompy.myBuilder.FindOrCreateAttribute(batchmode_geompy.father, "AttributeTableOfInteger")
-if A == None :
-        raise  RuntimeError, "Can't create AttributeTableOfInteger attribute"
-A = A._narrow(SALOMEDS.AttributeTableOfInteger)
-a=[1,2]
-
-b=[3,4]
-
-#    2x2
-# --- rows ---
-A.AddRow(a)
-A.AddRow(b)
-a=[34,14]
-A.SetRow(1,a)
-
-#    3x3
-#
-b=[54,56]
-A.AddRow(b)
-
-# --- columns ---
-a=[76,25,12]
-
-A.AddColumn(a)
-a=[836,3425,342]
-A.SetColumn(3,a)
-
-# change attribute values
-print "A.GetValue(2,2) = ", A.GetValue(2,2)
-print "A.PutValue(2,2,625323)"
-A.PutValue(625323,2,2)
-print "A.GetValue(2,2) = ", A.GetValue(2,2)
-
-#set Titles
-
-A.SetTitle("TEST")
-
-A.SetRowTitle(1,"FR")
-A.SetRowTitle(2,"SR")
-A.SetRowTitle(3,"TR")
-
-A.SetColumnTitle(1,"FC")
-A.SetColumnTitle(2,"SC")
-A.SetColumnTitle(3,"TC")
-
-
-#check the table
-print "Common title : ",A.GetTitle()
-print "Rows titles : ",  A.GetRowTitles()
-rnb = A.GetNbRows()
-for i in range(1, rnb):
-        b=A.GetRow(i)
-        print b
-
-cnb = A.GetNbColumns()
-print "Columns title : ", A.GetColumnTitles()
-for i in range(1, cnb):
-        b=A.GetColumn(i)
-        print b
-
-# set titles
-#titles=["11","12","13"]
-#A.SetRowTitles(titles)
-#titles=["21","22","23"]
-#A.SetRowTitles(2,titles)
-#titles=["31","32","33"]
-#A.SetRowTitles(3,titles)
-
-#--------------------------------------------------------------------------#
-# ----------------------- save the study ----------------------------------#
-#--------------------------------------------------------------------------#
-str= os.getenv("TmpDir")
-if str == None:
-        str = "/tmp"
-file = str+"/test.hdf"
-
-print " -------  We will save to", file, "-----------"
-
-batchmode_geompy.myStudyManager.SaveAs(file, batchmode_geompy.myStudy)
-
-#--------------------------------------------------------------------------#
-#---------------------------- Open file -----------------------------------# 
-#--------------------------------------------------------------------------#
-
-print" -------------- Open  " + file + "-------------- " 
-
-openedStudy=batchmode_geompy.myStudyManager.Open(file)
-if openedStudy == None:
-        raise  RuntimeError, "Can't open saved study!"
-
-father = openedStudy.FindComponent("GEOM")
-if father is None:
-         raise  RuntimeError, "Geom component is not found!  Wrong study is opened." 
-
-# --- check attribute ---
-
-res,A=father.FindAttribute("AttributeTableOfInteger")
-if res == 0 or A == None:
-        raise  RuntimeError, "Error:  not found AttributeTableOfInteger"
-
-A = A._narrow(SALOMEDS.AttributeTableOfInteger)
-
-#check the table
-print "Common title : ",A.GetTitle()
-print "Rows titles : ",  A.GetRowTitles()
-rnb = A.GetNbRows()
-for i in range(1, rnb):
-        b=A.GetRow(i)
-        print b
-
-cnb = A.GetNbColumns()
-print "Columns title : ", A.GetColumnTitles()
-for i in range(1, cnb):
-        b=A.GetColumn(i)
-        print b
-
-titles=["ff","ss","tt"]
-A.SetRowTitles(titles)
-print "Rows titles : ",  A.GetRowTitles()
-
-titles=["ww","zz","cc"]
-A.SetColumnTitles(titles)
-print "Column titles : ",  A.GetColumnTitles()
-
-
\ No newline at end of file diff --git a/doc/html/INPUT/exemple/Example22.html b/doc/html/INPUT/exemple/Example22.html deleted file mode 100755 index f6a3f6e3b..000000000 --- a/doc/html/INPUT/exemple/Example22.html +++ /dev/null @@ -1,137 +0,0 @@ - - - -Exemple - -
-#^ SALOMEDS methods  : FindOrCreateAttribute, SaveAs, FindComponent, FindAttribute, Open^
-#^ Attribute methods : GetValue, GetNbColumns, AddColumn, SetRowTitles, PutValue,  GetColumn,  GetColumnTitles, GetTitle, SetRow, GetRowTitles, SetColumnTitles,  SetColumn,  GetRow,  GetNbRows, SetColumnTitle, AddRow, SetTitle, SetRowTitle^
-
-#       create AttributeReal      
-#===============================================
-A = batchmode_geompy.myBuilder.FindOrCreateAttribute(batchmode_geompy.father, "AttributeTableOfReal")
-if A == None :
-        raise  RuntimeError, "Can't create AttributeTableOfReal attribute"
-A = A._narrow(SALOMEDS.AttributeTableOfReal)
-a=[1,2]
-
-b=[3,4]
-
-#    2x2
-# --- rows ---
-A.AddRow(a)
-A.AddRow(b)
-a=[34,14]
-A.SetRow(1,a)
-
-#    3x3
-#
-b=[54,56]
-A.AddRow(b)
-
-# --- columns ---
-a=[76,25,12]
-
-A.AddColumn(a)
-a=[836,3425,342]
-A.SetColumn(3,a)
-
-# change attribute values
-print "A.GetValue(2,2) = ", A.GetValue(2,2)
-print "A.PutValue(2,2,625323)"
-A.PutValue(625323,2,2)
-print "A.GetValue(2,2) = ", A.GetValue(2,2)
-
-#set Titles
-
-A.SetTitle("TEST")
-
-A.SetRowTitle(1,"FR")
-A.SetRowTitle(2,"SR")
-A.SetRowTitle(3,"TR")
-
-A.SetColumnTitle(1,"FC")
-A.SetColumnTitle(2,"SC")
-A.SetColumnTitle(3,"TC")
-
-
-#check the table
-print "Common title : ",A.GetTitle()
-print "Rows titles : ",  A.GetRowTitles()
-rnb = A.GetNbRows() + 1
-for i in range(1, rnb):
-        b=A.GetRow(i)
-        print b
-
-cnb = A.GetNbColumns() + 1
-print "Columns title : ", A.GetColumnTitles()
-for i in range(1, cnb):
-        b=A.GetColumn(i)
-        print b
-
-# set titles
-#titles=["11","12","13"]
-#A.SetRowTitles(titles)
-#titles=["21","22","23"]
-#A.SetRowTitles(2,titles)
-#titles=["31","32","33"]
-#A.SetRowTitles(3,titles)
-
-#--------------------------------------------------------------------------#
-#------------------------ save the study ----------------------------------#
-#--------------------------------------------------------------------------#
-import os
-str= os.getenv("TmpDir")
-if str == None:
-        str = "/tmp"
-file = str+"/test.hdf"
-
-print " -------  We will save to", file, "-----------"
-
-batchmode_geompy.myStudyManager.SaveAs(file, batchmode_geompy.myStudy)
-
-#--------------------------------------------------------------------------#
-#---------------------------- Open file -----------------------------------# 
-#--------------------------------------------------------------------------#
-
-print" -------------- Open  " + file + "-------------- " 
-
-openedStudy = batchmode_geompy.myStudyManager.Open(file)
-if openedStudy == None:
-        raise  RuntimeError, "Can't open saved study!"
-
-father = openedStudy.FindComponent("GEOM")
-if father is None:
-         raise  RuntimeError, "Geom component is not found!  Wrong study is opened." 
-
-# --- check attribute ---
-
-res,A=father.FindAttribute("AttributeTableOfReal")
-if res == 0 or A == None:
-        raise  RuntimeError, "Error:  not found AttributeTableOfReal"
-
-A = A._narrow(SALOMEDS.AttributeTableOfReal)
-
-#check the table
-print "Common title : ",A.GetTitle()
-print "Rows titles : ",  A.GetRowTitles()
-rnb = A.GetNbRows() + 1
-for i in range(1, rnb):
-        b=A.GetRow(i)
-        print b
-
-cnb = A.GetNbColumns() + 1
-print "Columns title : ", A.GetColumnTitles()
-for i in range(1, cnb):
-        b=A.GetColumn(i)
-        print b
-
-titles=["ff","ss","tt"]
-A.SetRowTitles(titles)
-print "Rows titles : ",  A.GetRowTitles()
-
-titles=["ww","zz","cc"]
-A.SetColumnTitles(titles)
-print "Column titles : ",  A.GetColumnTitles()
-
-
\ No newline at end of file diff --git a/doc/html/INPUT/exemple/Example23.html b/doc/html/INPUT/exemple/Example23.html deleted file mode 100755 index 623170417..000000000 --- a/doc/html/INPUT/exemple/Example23.html +++ /dev/null @@ -1,35 +0,0 @@ - - - -Exemple - -
-import batchmode_salome
-#import SALOMEDS
-
-aStudy = batchmode_salome.myStudy    
-
-#Add new component 'User data'
-aBuilder = aStudy.NewBuilder()
-aComponent = aBuilder.NewComponent("User data")
-anAttr = aBuilder.FindOrCreateAttribute(aComponent, "AttributeName")
-anAttrName = anAttr._narrow(SALOMEDS.AttributeName) 
-anAttrName.SetValue("User data")
-
-
-#Add a new case 'Case1' to the component 'User data'
-aBuilder.AddDirectory("/User data/Case1")
-
-#Set a study context to '/User data/Case1'
-aStudy.SetContext("/User data/Case1")
-
-#Print the current study context
-print aStudy.GetContext()
-
-#Add a sub directory 'aSubCase' to 'Case1' (under the current context)
-aBuilder.AddDirectory("aSubCase")
-
-
-#Add a new case 'Case2' to component 'User data'
-aBuilder.AddDirectory("/User data/Case2")
-
\ No newline at end of file diff --git a/doc/html/INPUT/exemple/Example3.html b/doc/html/INPUT/exemple/Example3.html deleted file mode 100755 index 477d80cda..000000000 --- a/doc/html/INPUT/exemple/Example3.html +++ /dev/null @@ -1,68 +0,0 @@ - - - -Example - -
#%AttributeSequenceOfReal interface(creations/saving/restoring)%
-#% AttributeSequenceOfReal  : ChangeValue, Add,  Value,  Remove,  Length%
-#% SALOMEDS methods : FindOrCreateAttribute, SaveAs, FindComponent, FindAttribute, Open%
-
-#       create AttributeSequenceOfReal      
-#=================================
-A = batchmode_geompy.myBuilder.FindOrCreateAttribute(batchmode_geompy.father, "AttributeSequenceOfReal")
-if A == None :
-        raise  RuntimeError, "Can't create AttributeSequenceOfReal attribute"
-A = A._narrow(SALOMEDS.AttributeSequenceOfReal)
-if A == None :
-        raise  RuntimeError, "_narrow returns None instead of AttributeSequenceOfReal pointer"
-
-A.Add(0.0293)
-A.Add(625.1e+2)
-A.Add(0.928e+100)
-A.Add(83.287)
-
-print "initial values ",A.Value(1), A.Value(2), A.Value(3), A.Value(4)
-A.Remove(3)
-print "after remove ", A.Value(1), A.Value(2), A.Value(3)
-A.ChangeValue(2,76.265)
-print "after second item change", A.Value(1), A.Value(2), A.Value(3)
-
-if A.Length() != 3:
-        print "Error : wrong length of SequenceOfReal"
-if A.Value(1) != 0.0293 or A.Value(2) != 76.265 or A.Value(3) != 83.287:
-        print "Error : wrong value of  AttributeSequenceOfReal"
-
-#      save / restore study      
-#=================================
-str= os.getenv("TmpDir")
-if str == None:
-        str = "/tmp"
-file = str+"/test.hdf"
-
-batchmode_geompy.myStudyManager.SaveAs(file, batchmode_geompy.myStudy)
-openedStudy=batchmode_geompy.myStudyManager.Open(file);
-
-if openedStudy == None:
-        raise  RuntimeError, "Can't open saved study!"
-
-
-father = openedStudy.FindComponent("GEOM")
-if father is None:
-         raise  RuntimeError, "Geom component is not found!  Wrong study is opened." 
-
-
-#     find AttributeSequenceOfReal
-#=================================
-
-res,A=father.FindAttribute("AttributeSequenceOfReal")
-if res == 0 or A == None:
-        raise  RuntimeError, "Error:  not found AttributeSequenceOfReal"
-
-A = A._narrow(SALOMEDS.AttributeSequenceOfReal)
-
-if A.Length() != 3:
-        print "Error : wrong length of SequenceOfReal"
-if A.Value(1) != 0.0293 or A.Value(2) != 76.265 or A.Value(3) != 83.287:
-        print "Error : wrong value of  AttributeSequenceOfReal"
-print "after restoring ", A.Value(1), A.Value(2), A.Value(3)
-
\ No newline at end of file diff --git a/doc/html/INPUT/exemple/Example4.html b/doc/html/INPUT/exemple/Example4.html deleted file mode 100755 index 4539170b6..000000000 --- a/doc/html/INPUT/exemple/Example4.html +++ /dev/null @@ -1,66 +0,0 @@ - - - -Example - -
#%AttributeSequenceOfInteger interface(creations/saving/restoring)%
-#%SALOMEDS methods : FindOrCreateAttribute FindComponent FindAttribute Open Add SaveAs%
-#%AttributeSequenceOfInteger methods :  Value, Remove, Length%
-
-#       create AttributeSequenceOfInteger      
-#==========================================
-A = batchmode_geompy.myBuilder.FindOrCreateAttribute(batchmode_geompy.father, "AttributeSequenceOfInteger")
-if A == None :
-        raise  RuntimeError, "Can't create AttributeSequenceOfInteger attribute"
-A = A._narrow(SALOMEDS.AttributeSequenceOfInteger)
-if A == None :
-        raise  RuntimeError, "Can't create AttributeSequenceOfInteger attribute"
-
-A.Add(100)
-A.Add(300)
-A.Add(500)
-A.Add(400)
-A.Add(700)
-
-A.Remove(3)
-A.ChangeValue(4,500)
-
-
-if A.Length() != 4:
-        print "Wrong length of SequenceOfInteger"
-if A.Value(1) != 100 or A.Value(2) != 300 or A.Value(3) != 400 or A.Value(4) != 700:
-        print "Wrong  value of  AttributeSequenceOfInteger"
-
-
-#      save / restore study      
-#=================================
-str= os.getenv("TmpDir")
-if str == None:
-        str = "/tmp"
-file = str+"/test.hdf"
-batchmode_geompy.myStudyManager.SaveAs(file, batchmode_geompy.myStudy)
-openedStudy=batchmode_geompy.myStudyManager.Open(file);
-
-if openedStudy == None:
-        raise  RuntimeError, "Can't open saved study!"
-
-
-father = openedStudy.FindComponent("GEOM")
-if father is None:
-         raise  RuntimeError, "Geom component is not found!  Wrong study is opened." 
-
-
-#     find AttributeSequenceOfInteger
-#======================================
-
-res,A=father.FindAttribute("AttributeSequenceOfInteger")
-if res == 0 or A == None:
-        raise  RuntimeError, "Error:  not found AttributeSequenceOfInteger"
-
-A = A._narrow(SALOMEDS.AttributeSequenceOfInteger)
-
-if A.Length() != 4:
-        print "Wrong length of SequenceOfInteger"
-if A.Value(1) != 100 or A.Value(2) != 300 or A.Value(3) != 400 or A.Value(4) != 700:
-        print "Wrong  value of  AttributeSequenceOfInteger"
-
\ No newline at end of file diff --git a/doc/html/INPUT/exemple/Example5.html b/doc/html/INPUT/exemple/Example5.html deleted file mode 100755 index 79be2e442..000000000 --- a/doc/html/INPUT/exemple/Example5.html +++ /dev/null @@ -1,58 +0,0 @@ - - - -Example - -
#%AttributeName interface(creations/saving/restoring)%
-#%SALOMEDS methods : FindOrCreateAttribute,  SaveAs, FindComponent FindAttribute Open%
-#%Attribute methods : SetValue, Value%
-
-#              create AttributeName     
-#===========================================================
-A = batchmode_geompy.myBuilder.FindOrCreateAttribute(batchmode_geompy.father, "AttributeName")
-if A == None :
-        raise  RuntimeError, "Can't create AttributeName attribute"
-A = A._narrow(SALOMEDS.AttributeName)
-
-if A == None :
-        raise  RuntimeError, "Can't create AttributeName attribute"
-A.SetValue("AttributesTesting")
-
-if A.Value() != "AttributesTesting":
-        print "Wrong  value of AttributeName"
-
-
-#      save / restore study      
-#=================================
-str= os.getenv("TmpDir")
-if str == None:
-        str = "/tmp"
-file = str+"/test.hdf"
-
-batchmode_geompy.myStudyManager.SaveAs(file, batchmode_geompy.myStudy)
-openedStudy = batchmode_geompy.myStudyManager.Open(file);
-
-if openedStudy == None:
-        raise  RuntimeError, "Can't open saved study!"
-
-
-father = openedStudy.FindComponent("GEOM")
-if father is None:
-         raise  RuntimeError, "Geom component is not found!  Wrong study is opened." 
-
-
-#     find AttributeName
-#======================================
-
-res,A=father.FindAttribute("AttributeName")
-if res == 0 or A == None:
-        raise  RuntimeError, "Error:  not found AttributeName"
-
-A = A._narrow(SALOMEDS.AttributeName)
-
-if A == None :
-        raise  RuntimeError, "Can't create AttributeName attribute"
-
-if A.Value() != "AttributesTesting":
-        print "Wrong  value of AttributeName"
-
\ No newline at end of file diff --git a/doc/html/INPUT/exemple/Example6.html b/doc/html/INPUT/exemple/Example6.html deleted file mode 100755 index 197c6b3b1..000000000 --- a/doc/html/INPUT/exemple/Example6.html +++ /dev/null @@ -1,56 +0,0 @@ - - - -Example - -
#%AttributeComment interface(creations/saving/restoring)%
-#%SALOMEDS methods : FindOrCreateAttribute, SaveAs FindComponent FindAttribute  Open%
-#%Attribute methods : Value, SetValue%
-
-#              create     AttributeComment 
-#===========================================================
-A = batchmode_geompy.myBuilder.FindOrCreateAttribute(batchmode_geompy.father, "AttributeComment")
-if A == None :
-        raise  RuntimeError, "Can't create AttributeComment attribute"
-A = A._narrow(SALOMEDS.AttributeComment)
-
-if A == None :
-        raise  RuntimeError, "Can't create AttributeComment attribute"
-
-A.SetValue("GEOM")
-
-
-#      save / restore study      
-#============================================================
-str= os.getenv("TmpDir")
-if str == None:
-        str = "/tmp"
-file = str+"/test.hdf"
-
-batchmode_geompy.myStudyManager.SaveAs(file, batchmode_geompy.myStudy)
-openedStudy = batchmode_geompy.myStudyManager.Open(file);
-
-if openedStudy == None:
-        raise  RuntimeError, "Can't open saved study!"
-
-father = openedStudy.FindComponent("GEOM")
-if father is None:
-         raise  RuntimeError, "Geom component is not found!  Wrong study is opened." 
-
-
-#      find    AttributeComment
-#============================================================
-
-res,A=father.FindAttribute("AttributeComment")
-if res == 0 or A == None:
-        raise  RuntimeError, "Error:  not found AttributeComment"
-
-A = A._narrow(SALOMEDS.AttributeComment)
-
-if A == None :
-        raise  RuntimeError, "Can't create AttributeComment attribute"
-
-if A.Value() != "GEOM":
-        "Error: wrong value of AttributeComment"
-
-
\ No newline at end of file diff --git a/doc/html/INPUT/exemple/Example7.html b/doc/html/INPUT/exemple/Example7.html deleted file mode 100755 index 9bf85152b..000000000 --- a/doc/html/INPUT/exemple/Example7.html +++ /dev/null @@ -1,55 +0,0 @@ - - - -Example - -
#%AttributePersistentRef interface(creations/saving/restoring)%
-#%SALOMEDS methods : FindOrCreateAttribute,  SaveAs, FindComponent FindAttribute Open%
-#%Attribute methods : SetValue, Value%
-
-#              create   AttributePersistentRef   
-#===========================================================
-A = batchmode_geompy.myBuilder.FindOrCreateAttribute(batchmode_geompy.father, "AttributePersistentRef")
-if A == None :
-        raise  RuntimeError, "Can't create AttributePersistentRef attribute"
-A = A._narrow(SALOMEDS.AttributePersistentRef)
-
-if A == None :
-        raise  RuntimeError, "Can't create AttributePersistentRef attribute"
-
-A.SetValue("/tmp/test;1")
-
-#      save / restore study      
-#============================================================
-str= os.getenv("TmpDir")
-if str == None:
-        str = "/tmp"
-file = str+"/test.hdf"
-
-batchmode_geompy.myStudyManager.SaveAs(file, batchmode_geompy.myStudy)
-openedStudy = batchmode_geompy.myStudyManager.Open(file);
-
-if openedStudy == None:
-        raise  RuntimeError, "Can't open saved study!"
-
-father = openedStudy.FindComponent("GEOM")
-if father is None:
-         raise  RuntimeError, "Geom component is not found!  Wrong study is opened." 
-
-
-#     find AttributePersistentRef
-#============================================================
-
-res,A=father.FindAttribute("AttributePersistentRef")
-if res == 0 or A == None:
-        raise  RuntimeError, "Error:  not found AttributePersistentRef"
-
-A = A._narrow(SALOMEDS.AttributePersistentRef)
-
-if A == None :
-        raise  RuntimeError, "Can't create AttributePersistentRef attribute"
-
-if A.Value() != "/tmp/test;1":
-        "Error: wrong value of AttributePersistentRef"
-
-
\ No newline at end of file diff --git a/doc/html/INPUT/exemple/Example8.html b/doc/html/INPUT/exemple/Example8.html deleted file mode 100755 index db962290a..000000000 --- a/doc/html/INPUT/exemple/Example8.html +++ /dev/null @@ -1,64 +0,0 @@ - - - -Example - -
#%AttributeDrawable interface(creations/saving/restoring)%
-#%SALOMEDS methods : FindOrCreateAttribute, SaveAs, FindComponent, FindAttribute, Open%
-#%Attribute methods : SetDrawable, IsDrawable% 
-#--------------------------------------------------------------------------
-
-from batchmode_geompy import *
-import os
-
-#--------------------------------------------------------------------------
-#              create    AttributeDrawable  
-#===========================================================
-A = batchmode_geompy.myBuilder.FindOrCreateAttribute(batchmode_geompy.father, "AttributeDrawable")
-if A == None :
-        raise  RuntimeError, "Can't create AttributeDrawable attribute"
-A = A._narrow(SALOMEDS.AttributeDrawable)
-
-if A == None :
-        raise  RuntimeError, "Can't create AttributeDrawable attribute"
-
-A.SetDrawable(1)
-
-if A.IsDrawable() == 0:
-        "Error: wrong value of AttributeDrawable"
-
-
-#      save / restore study      
-#============================================================
-str= os.getenv("TmpDir")
-if str == None:
-        str = "/tmp"
-file = str+"/test.hdf"
-
-batchmode_geompy.myStudyManager.SaveAs(file, batchmode_geompy.myStudy)
-openedStudy=batchmode_geompy.myStudyManager.Open(file);
-
-if openedStudy == None:
-        raise  RuntimeError, "Can't open saved study!"
-
-father = openedStudy.FindComponent("GEOM")
-if father is None:
-         raise  RuntimeError, "Geom component is not found!  Wrong study is opened." 
-
-
-#     find   AttributeDrawable
-#============================================================
-
-res,A=father.FindAttribute("AttributeDrawable")
-if res == 0 or A == None:
-        raise  RuntimeError, "Error:  not found AttributeDrawable"
-
-A = A._narrow(SALOMEDS.AttributeDrawable)
-
-if A == None :
-        raise  RuntimeError, "Can't create AttributeDrawable attribute"
-
-if A.IsDrawable() == 0:
-        "Error: wrong value of AttributeDrawable"
-
-
\ No newline at end of file diff --git a/doc/html/INPUT/exemple/Example9.html b/doc/html/INPUT/exemple/Example9.html deleted file mode 100755 index 6809dab3c..000000000 --- a/doc/html/INPUT/exemple/Example9.html +++ /dev/null @@ -1,59 +0,0 @@ - - - -Example - -
#%AttributeSelectable interface(creations/saving/restoring)%
-#%SALOMEDS methods: FindOrCreateAttribute, SaveAs, FindComponent, FindAttribute, Open%
-#%Attribute methods: SetSelectable, IsSelectable%
-
-#              create    AttributeSelectable  
-#===========================================================
-A = batchmode_geompy.myBuilder.FindOrCreateAttribute(batchmode_geompy.father, "AttributeSelectable")
-if A == None :
-        raise  RuntimeError, "Can't create AttributeSelectable attribute"
-A = A._narrow(SALOMEDS.AttributeSelectable)
-
-if A == None :
-        raise  RuntimeError, "Can't create AttributeSelectable attribute"
-
-A.SetSelectable(1)
-
-if A.IsSelectable() == 0:
-        "Error: wrong value of AttributeSelectable"
-
-
-#      save / restore study      
-#============================================================
-str= os.getenv("TmpDir")
-if str == None:
-        str = "/tmp"
-file = str+"/test.hdf"
-
-batchmode_geompy.myStudyManager.SaveAs(file, batchmode_geompy.myStudy)
-openedStudy = batchmode_geompy.myStudyManager.Open(file);
-
-if openedStudy == None:
-        raise  RuntimeError, "Can't open saved study!"
-
-father = openedStudy.FindComponent("GEOM")
-if father is None:
-         raise  RuntimeError, "Geom component is not found!  Wrong study is opened." 
-
-
-#     find   AttributeSelectable
-#============================================================
-
-res,A=father.FindAttribute("AttributeSelectable")
-if res == 0 or A == None:
-        raise  RuntimeError, "Error:  not found AttributeSelectable"
-
-A = A._narrow(SALOMEDS.AttributeSelectable)
-
-if A == None :
-        raise  RuntimeError, "Can't create AttributeSelectable attribute"
-
-if A.IsSelectable() == 0:
-        "Error: wrong value of AttributeSelectable"
-
-
\ No newline at end of file diff --git a/doc/html/INPUT/sources/Application-About.png b/doc/html/INPUT/sources/Application-About.png deleted file mode 100755 index 7b58330d5..000000000 Binary files a/doc/html/INPUT/sources/Application-About.png and /dev/null differ diff --git a/doc/html/INPUT/sources/Application-About1.jpg b/doc/html/INPUT/sources/Application-About1.jpg deleted file mode 100755 index cf7ab8ba0..000000000 Binary files a/doc/html/INPUT/sources/Application-About1.jpg and /dev/null differ diff --git a/doc/html/INPUT/sources/application.gif b/doc/html/INPUT/sources/application.gif deleted file mode 100644 index 0b05d5c18..000000000 Binary files a/doc/html/INPUT/sources/application.gif and /dev/null differ diff --git a/doc/html/INPUT/sources/application.jpg b/doc/html/INPUT/sources/application.jpg deleted file mode 100755 index a6979ab99..000000000 Binary files a/doc/html/INPUT/sources/application.jpg and /dev/null differ diff --git a/doc/html/INPUT/sources/bg_salome.gif b/doc/html/INPUT/sources/bg_salome.gif deleted file mode 100755 index 677b70468..000000000 Binary files a/doc/html/INPUT/sources/bg_salome.gif and /dev/null differ diff --git a/doc/html/INPUT/sources/logocorp.gif b/doc/html/INPUT/sources/logocorp.gif deleted file mode 100755 index 7697e0837..000000000 Binary files a/doc/html/INPUT/sources/logocorp.gif and /dev/null differ diff --git a/doc/html/INPUT/sources/myheader.html b/doc/html/INPUT/sources/myheader.html deleted file mode 100755 index 83ca543cd..000000000 --- a/doc/html/INPUT/sources/myheader.html +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - Main Page - - - -  -
- - - - - - -
-
-
- - - - diff --git a/doc/html/INPUT/sources/occ.gif b/doc/html/INPUT/sources/occ.gif deleted file mode 100755 index ce017c8ae..000000000 Binary files a/doc/html/INPUT/sources/occ.gif and /dev/null differ diff --git a/doc/html/INPUT/sources/static/Link.gif b/doc/html/INPUT/sources/static/Link.gif deleted file mode 100755 index 75330d0c8..000000000 Binary files a/doc/html/INPUT/sources/static/Link.gif and /dev/null differ diff --git a/doc/html/INPUT/sources/static/SObject.gif b/doc/html/INPUT/sources/static/SObject.gif deleted file mode 100755 index 1d4e9cb24..000000000 Binary files a/doc/html/INPUT/sources/static/SObject.gif and /dev/null differ diff --git a/doc/html/INPUT/sources/static/Study_Struct.gif b/doc/html/INPUT/sources/static/Study_Struct.gif deleted file mode 100755 index bc0ce35be..000000000 Binary files a/doc/html/INPUT/sources/static/Study_Struct.gif and /dev/null differ diff --git a/doc/html/INPUT/sources/static/doxygen.css b/doc/html/INPUT/sources/static/doxygen.css deleted file mode 100755 index 0a8e93d50..000000000 --- a/doc/html/INPUT/sources/static/doxygen.css +++ /dev/null @@ -1,49 +0,0 @@ -H1 { text-align: center; } -CAPTION { font-weight: bold } -A.qindex {} -A.qindexRef {} -A.el { text-decoration: none; font-weight: bold } -A.elRef { font-weight: bold } -A.code { text-decoration: none; font-weight: normal; color: #4444ee } -A.codeRef { font-weight: normal; color: #4444ee } -A:hover { text-decoration: none; background-color: lightblue } -DL.el { margin-left: -1cm } -DIV.fragment { width: 100%; border: none; background-color: #CCCCCC } -DIV.ah { background-color: #CCCCCC; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px } -TD.md { background-color: lightblue; font-weight: bold; } -TD.mdname1 { background-color: lightblue; font-weight: bold; color: #602020; } -TD.mdname { background-color: lightblue; font-weight: bold; color: #602020; width: 600px; } -DIV.groupHeader { margin-left: 16px; margin-top: 12px; margin-bottom: 6px; font-weight: bold } -DIV.groupText { margin-left: 16px; font-style: italic; font-size: smaller } -BODY { background: url(sources/bg_salome.gif) } -TD.indexkey { - background-color: #CCCCCC; - font-weight: bold; - padding-right : 10px; - padding-top : 2px; - padding-left : 10px; - padding-bottom : 2px; - margin-left : 0px; - margin-right : 0px; - margin-top : 2px; - margin-bottom : 2px -} -TD.indexvalue { - background-color: #CCCCCC; - font-style: italic; - padding-right : 10px; - padding-top : 2px; - padding-left : 10px; - padding-bottom : 2px; - margin-left : 0px; - margin-right : 0px; - margin-top : 2px; - margin-bottom : 2px -} -span.keyword { color: #008000 } -span.keywordtype { color: #604020 } -span.keywordflow { color: #e08000 } -span.comment { color: #800000 } -span.preprocessor { color: #806020 } -span.stringliteral { color: #002080 } -span.charliteral { color: #008080 } diff --git a/doc/html/INPUT/sources/static/examples_Kernel.html b/doc/html/INPUT/sources/static/examples_Kernel.html deleted file mode 100755 index beb74ae4f..000000000 --- a/doc/html/INPUT/sources/static/examples_Kernel.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - - Main Page - - - - -   -
- - - - - - - - -
- - -
-
- -

Examples

- Package SALOME_ModuleCatalog
-
-      interface SALOME_ModuleCatalog::ModuleCatalog
-
-Package SALOME
-
-   
interface SALOME::Session
-
-Package Engines
-   

-    interface Engines::Container
-

-   
-   

-
-
    SALOME_ModuleCatalog::ModuleCatalog interface -
-
-
-

-
-

-Acomponent -GetComponent (in string componentname)
-
-See the example below
-
-
-
-
SALOME::Session interface

-

-
-GetInterface (), StopSession () raises (GUIActive, RunningStudies)
-
-Stop session and restart GUI application:
-
-mySession.StopSession()
-
-mySession.GetInterface()
-
-
-
Engines::Container -interface
-
-
-
Component -load_impl (in string nameToRegister, in string componentName)
-
-Load component with defined component name:
-
-compinfo = module_catalog.GetComponent(componentName)
-
- try:
-    machineName = theComputer # name of machine
-    path = compoinfo.GetPathPrefix(machineName) + "/"
- except SALOME_ModuleCatalog.NotFound, ex:
-    MESSAGE( "machine " + machineName + " not found in Module -Catalog" )
-    MESSAGE( "trying localhost" )
-    try:
-    path = compoinfo.GetPathPrefix("localhost") + "/"
-    except SALOME_ModuleCatalog.NotFound, ex:
-    path = ""
-
-implementation = path + "lib" + componentName + "Engine.so"
-MESSAGE( "Trying to load " + implementation )
-
- try:
-
    component = container.load_impl(componentName, -implementation) # Loads into the container a new component, registers -it and starts it's CORBA servant.
-
-    MESSAGE( "component " + component._get_instanceName() -+ " launched !" )
-    return component
-except:
-    MESSAGE( "component " + componentName + " NOT launched -!" )
-
-
-
-
-
-
-
-
-
- -
-
-
- - diff --git a/doc/html/INPUT/sources/static/examples_Life_cycle.html b/doc/html/INPUT/sources/static/examples_Life_cycle.html deleted file mode 100755 index 8d36282f6..000000000 --- a/doc/html/INPUT/sources/static/examples_Life_cycle.html +++ /dev/null @@ -1,116 +0,0 @@ - - - - - - - - Main Page - - - - -   -
- - - - - - - - -
- - -
-
- -

Examples

- //There is a CXX example of LifeCycleCORBA using
-

-#include CORBA_CLIENT_HEADER(TestComponent)
-#include "SALOME_NamingService.hxx"
-#include "SALOME_LifeCycleCORBA.hxx"
-
-int main (int argc, char * argv[]){
-  try {
-      // Initializing omniORB
-
      CORBA::ORB_var orb = CORBA::ORB_init(argc, -argv);
-   
-      // Obtain a reference -to the root POA
-
      CORBA::Object_var obj = orb->resolve_initial_references("RootPOA") -;
-      PortableServer::POA_var poa = PortableServer::POA::_narrow(obj) -;
-   
-      SALOME_NamingService _NS(orb) ;
-
-      SALOME_LifeCycleCORBA _LCC(&_NS) ;
-
-      Engines::Component_var myComponent = _LCC.FindOrLoad_Component("FactoryServerPy","TestComponentPy");
-       if(!CORBA::is_nil(myComponent)){
-          Engines::TestComponent_var -myConcreateComponent = TestComponent::_narrow(myComponent);
-          //do something -what you like with the interface
-          ...
-
          return 0;
-       }
-    }
-  catch(CORBA::COMM_FAILURE& ex){
-      cout<<"Caught system exception COMM_FAILURE --- unable to contact the object.\n";
-  }catch(CORBA::SystemException&){
-      cout<<"Caught a CORBA::SystemException.\n";
-  }catch(CORBA::Exception&){
-      cout<<"Caught CORBA::Exception.\n";
-  }catch(...){
-      cout<<"Caught unknown exception.\n";
-  }
-  return 1;
-}
-
-#The example may be rewritten on Python like this:
-

-from omniORB import CORBA
-from SALOME_TestComponent import *
-from SALOME_NamingServicePy import *
-from LifeCycleCORBA import *
-
-try:
-    orb = CORBA.ORB_init(sys.argv,CORBA.ORB_ID)
-    _NS = SALOME_NamingService(orb)
-    _LCC = SALOME_LifeCycleCORBA(orb)
-
-     myComponent = _LCC.FindOrLoadComponent("FactoryServerPy","TestComponentPy");
-     myConcreatComponent = myComponent._narrow(TestComponent)
-    if myConcreatComponent is not None :
-        //do something what you like with the -interface
-         ...
-
        return 0
-    }
-except CosNaming.NamingContext.NotFound, e :
-    print "Caught exception: Naming Service can't found Logger"
-except CORBA.COMM_FAILURE, e:
-    print "Caught CORBA::SystemException CommFailure"
-except CORBA.SystemException, e:
-    print "Caught CORBA::SystemException."
-except CORBA.Exception, e:
-    print "Caught CORBA::Exception."
-except Exception, e:
-    print "Caught unknown exception."
-  
-
-
- - diff --git a/doc/html/INPUT/sources/static/examples_Naming.html b/doc/html/INPUT/sources/static/examples_Naming.html deleted file mode 100755 index ac08a6753..000000000 --- a/doc/html/INPUT/sources/static/examples_Naming.html +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - - - Main Page - - - - -   -
- - - - - - - - -
- - -
-
- -

Examples

- #There is a python example of using SALOME_NamingService
-

-from omniORB import CORBA
-from time import sleep
-from LifeCycleCORBA import *
-from SALOME_NamingServicePy import *
-
-# initialise the ORB
-
orb = CORBA.ORB_init([''], CORBA.ORB_ID)
-
-# create an LifeCycleCORBA instance
-
myLifeCycleCORBA = LifeCycleCORBA(orb)
-
-#create a naming service instance
-
naming_service = SALOME_NamingServicePy_i(orb)
-
-mySession = myNamingService.Resolve("/Kernel/Session")
-mySession.GetInterface()
-sleep(10)
-myLocalVisu = myLifeCycleCORBA.FindOrLoadComponent("FactoryServer", "Visu")
-
-
-//There is some part of a code written by C++
-

-SALOME_NamingService aNamingService(orb);
-CORBA::Object_ptr anObject = aNamingService.Resolve("/Kernel/Session");
-SALOME::Session_var aSession = SALOME::Session::_narrow(anObject);
-Engines::Component_var aComponent = aSession->GetVisuGen();
-myVisuGen = VISU::VISU_Gen::_narrow(aComponent);
-
- - diff --git a/doc/html/INPUT/sources/static/examples_Study.html b/doc/html/INPUT/sources/static/examples_Study.html deleted file mode 100755 index 31ccaffa5..000000000 --- a/doc/html/INPUT/sources/static/examples_Study.html +++ /dev/null @@ -1,790 +0,0 @@ - - - - - - - - Main Page - - - - -   -
- - - - - - - - -
- - -
-
- -

Examples

-
-
- -
      Interfaces:
-
-       SALOMEDS::Study
-       SALOMEDS::StudyBuilder
-       SALOMEDS::StudyManager
-       SALOMEDS::SObject
-      SALOMEDS::SComponent
-       SALOMEDS::SComponentIterator
-       SALOMEDS::ChildIterator
-
      SALOMEDS::AttributeComment
-      
-
-
-
-
- -
      SALOMEDS::Study interface
-
- -

-
-
-
-
SComponent FindComponent( -in string aComponentName )
-
- Find GEOMETRY component in the opened study by its name:

-
-     str= os.getenv("TmpDir")
-     if str == None:
-         str = "/tmp"
-     file = str+"/test.hdf"
-
-     openedStudy=batchmode_geompy.myStudyManager.Open(file)
-
-     father = openedStudy.FindComponent("GEOM")
-     if father is None:
-          raise  RuntimeError, "Geom - component is not found!  Wrong study is opened."
-
-
-
- -
SObject FindObject ( in string -anObjectName )
-
- Find the SObject of the box by its NameAttribute "box":
-
- -

-
- -
box = openedStudy.FindObject("box")
- if box is None :
-     raise  RuntimeError, "box was not found! Wrong -study is opened."
-
-
- SObject FindObjectID - ( in ID aObjectID -)
- #result: "/User data/Case1".
-
Find - the SObject of the box by its ID "0:1:1:2":
-
-
- -
box =openedStudy.FindObjectID("0:1:1:2")
-
- -
if box is None :
-     raise  RuntimeError, "box was not found! Wrong -ID is used."
-
-
- SObject FindObjectIOR - ( in ID  aObjectIOR -)
-
- Find the SObject of the result on imported MED file -by it's IOR:
-
- theResult = myVisu.ImportFile(medFile)
- aSObj = myStudy.FindObjectIOR(theResult.GetID())
-
-
- SObject - FindObjectByPath ( in string thePath )
-
- Find SObject by path to it:
-
- # create new auxiliary componen
t
- aComponent = myStudyBuilder.NewComponent("Virtual Component")
-
- # create auxiliary subtree
- aPath = "/Virtual Component/Case1"
- myStudyBuilder.AddDirectory(aPath)
-
- aSObj = myStudy.FindObjectByPath(aPath)
-
-
- void SetContext ( in string thePath) / - string GetContext ()
-
- Set context of the study to the created case and get it for printing:
-
- aComponent = myStudyBuilder.NewComponent("User data")
- anAttr = aBuilder.FindOrCreateAttribute(aComponent, "AttributeName")
- anAttrName = anAttr._narrow(SALOMEDS.AttributeName)
- anAttrName.SetValue("User data")
-
- #Add a new case 'Case1' to the component 'User data'
- aBuilder.AddDirectory("/User data/Case1")
-
- #Set a study context to '/User data/Case1'
- aStudy.SetContext("/User data/Case1")
-
- #Print the current study context
- print aStudy.GetContext()
-
-
#result: "/User data/Case1".

-
-
- ChildIterator - NewChildIterator ( in SObject aSO )
-
- Import med file and print all mesh names that this file includes -(mesh is a child of the result of imported file):
-
- # define file name
- aFileName = datadir + "fra.med"
-
- # import file in visu module and get result
- theVisu = batchmode_visu.myVisu
- aResult = theVisu.ImportFile(aFileName)
- if aResult is None : raise RuntimeError, "Error"
- else : print "OK"
-  
- # get current study and its' SObject        -
- myLocalStudy = theVisu.GetCurrentStudy()
- aSObj = myLocalStudy.FindObjectIOR(aResult.GetID())
- if aSObj is None : raise RuntimeError, "Error"
- else : print "OK"
-
- # create iterator by SObject of the current study
- aMeshIter = myLocalStudy.NewChildIterator(aSObj);
-
- # iterating in the current study (with the help of created iterator) -to find all mesh names  
- while aMeshIter.More() :
-         aMeshSObj = aMeshIter.Value()
-         aMeshIter.Next()
-         anAttr = aMeshSObj.FindAttribute("AttributeName")[1]
-         if anAttr is None :
-             aMeshSObj - = aMeshIter.Value()
-             aMeshIter.Next()
-             anAttr - = aMeshSObj.FindAttribute("AttributeName")[1]
-         anAttr = anAttr._narrow(SALOMEDS.AttributeName);
-         aMeshName = anAttr.Value()
-         print "  ", aMeshName
-
-
- SComponentIterator -NewComponentIterator ()
-
- Find the number an names of all components in the study:
-
- aCompItr = myStudy.NewComponentIterator()
-
- compNb = 0
- while aCompItr.More():
-     aComp = aCompItr.Value()
-     aName = aComp.ComponentDataType()
-     print "Component name = ", aName
-     compNb += 1
-     aCompItr.Next()
-
-
- StudyBuilder -NewBuilder ()
-
-
-
- Create a new StudyBuilder (uses to add or modify an object in the -study ):
-
- myBuilder = myStudy.NewBuilder()
-
-
- AttributeStudyProperties -GetProperties ()
-
- Get the attribute, which contains the properties of the study, and -change properties of the study by changing it:
-
- aProperties = myStudy.GetProperties()
- if aProperties == None :
-     raise  RuntimeError, "Can't create AttributeStudyProperties -attribute"
- aProperties = aProperties._narrow(SALOMEDS.AttributeStudyProperties)
-
- A = aProperties
-
- # print stydy properties
- print "A.GetUserName()= ", A.GetUserName()
- res,mm,hh,dd,mnth,yy=A.GetCreationDate()
- print "A.GetCreationDate() = ", mm,hh,dd,mnth,yy
- print "A.GetCreationMode() = ", A.GetCreationMode()
- print "A.IsModified() = ", A.IsModified()
- print "A.IsLocked() = ", A.IsLocked()
-
- # change the properties of the study
- if A.IsLocked() == 0 :
-     A.SetUserName("tester"); print 'A.SetUserName("tester"), -A.GetUserName() = ', A.GetUserName()
-     A.SetCreationDate(11,11,11,11,2002); print 'A.SetCreationDate(11,11,11,11,2002), -A.GetCreationDate() =', A.GetCreationDate()
-     print "A.IsModified() = ", A.IsModified()
- A.SetLocked(1)
-
-
- boolean IsModified ()
-
- Find if study is modified:
-
- IsModified = myStudy.IsModified()
-
- if IsModified == 1:
-     print "The study is modified and not saved"
-
-
- boolean IsEmpty ()
-
- Find if study is empty:
-
- IsEmpty = myStudy.IsEmpty()
-
- if IsEmpty == 1:
-     print "The study is empty"
-
-
-
-
- -
SALOMEDS::StudyBuilder -interface
-
-
-
-
- SComponent -NewComponent ( in string ComponentDataType )
-
- Create Geometry SComponent:
-
- myBuilder = myStudy.NewBuilder()
- father = myBuilder.NewComponent("GEOM")
-
-
- void DefineComponentInstance ( in SComponent aComponent, -in Object ComponentIOR )

-
- Define the instance to the created geometry component:
-
- # find geom component
- myLCC = batchmode_salome.lcc
- geom = myLCC.FindOrLoadComponent("FactoryServer", "Geometry")
- geom = geom._narrow(GEOM.GEOM_Gen)
- geom.GetCurrentStudy(myStudyId)
-
- myBuilder = myStudy.NewBuilder()
-
- father = myBuilder.NewComponent("GEOM")
- myBuilder.DefineComponentInstance(father,geom)
-
-
- SObject -NewObject ( in SObject theFatherObject -)
-
- Create box and add it to study:
-
- from batchmode_geompy import *
-
- # create a box
- box = geom.MakeBox(0,0,0,100,100,150)
-
- ior = orb.object_to_string(box)
- box._set_Name(ior)     
-
- # create Geometry SComponent
- father = myBuilder.NewComponent("GEOM")
- A1 = myBuilder.FindOrCreateAttribute(father, "AttributeName");
- FName = A1._narrow(SALOMEDS.AttributeName)
- FName.SetValue("Geometry")
- myBuilder.DefineComponentInstance(father,geom)
-
- # add box to Study
- myBuilder.NewCommand()
- newObj = myBuilder.NewObject(father)
- A1 = myBuilder.FindOrCreateAttribute(newObj, "AttributeIOR");
- ObjIOR = A1._narrow(SALOMEDS.AttributeIOR)
- ObjIOR.SetValue(ior)
- A2 = myBuilder.FindOrCreateAttribute(newObj, "AttributeName");
- ObjName = A2._narrow(SALOMEDS.AttributeName)
- ObjName.SetValue("Common_operation")
- id = newObj.GetID()
- box._set_StudyShapeId(id)
- myBuilder.CommitCommand()
-
-
- void RemoveObject ( in SObject anObject )
-
- # Remove CutPlanes SObject from the StudyBuilder (delete cutplanes):
-
- SObj=myStudy.FindObjectIOR(cutplanes.GetID())
- myBuilder = newStudy.NewBuilder()
- myBuilder.RemoveObject(SObj)
-
-
- void LoadWith ( in SComponent sco, in -Driver Engine -) raises (SALOME::SALOME_Exception)

-
- # Load Visu component:
-
- myBuilder = openedStudy.NewBuilder()
- SCom=openedStudy.FindComponent("VISU")
- myBuilder.LoadWith(SCom ,myVisu)
-
-
- GenericAttribute -FindOrCreateAttribute ( in SObject anObject,  -in string aTypeOfAttribute)
-
- Create AttributeName attribute for created component an set value -to it:
-
- myBuilder = myStudy.NewBuilder()
- aComponent = myBuilder.NewComponent("User data")
-
- anAttr = myBuilder.FindOrCreateAttribute(aComponent, "AttributeName")
-
- anAttrName = anAttr._narrow(SALOMEDS.AttributeName)
- anAttrName.SetValue("User data")
-
-
- boolean FindAttribute ( in SObject anObject, out GenericAttribute -anAttribute, in string aTypeOfAttribute )
-
-
Find AttributeName attribute of the field and print the -field name:
-
- aFieldSObj  = myStudy.FindObject("Head, -")
-
- myStudyBuilder.FindAttribute( aFieldSObj, anAttr, "AttributeName")
- if res == 0:
-     raise  RuntimeError, "Error:  Attribute not -found"
-
- anAttr = anAttr._narrow(SALOMEDS.AttributeName);
- aFieldName = anAttr.Value()
- print "      ", aFieldName
-
-
- void RemoveAttribute ( in SObject anObject, in -string aTypeOfAttribute )
-
-
Remove AttributeSelectable attribute of the field SObject:
-
-
aFieldSObj  = myStudy.FindObject("Head, -")
-
- myStudyBuilder.RemoveAttribute( aFieldSObj, "AttributeSelectable")
-
-
-
void Addreference ( in  SObject -anObject, in  SObject theReferencedObject -)

-
- Create a reference between created SObject and the existing field:
-
- aFieldSObj  = myStudy.FindObject("Head, -")
- aNewSObj = myBuilder.NewObject(myVisu)
-
- myBuilder.Addreference(aFieldSObj, aNewSObj)
-
-
-
void -NewCommand ()
-
-
Create new command wich containes actions for changing the -properties of the study:
-
-
A = myStudy.GetProperties()
- A = aProperties._narrow(SALOMEDS.AttributeStudyProperties)
-
- myBuilder = myStudy.NewBuilder()
-
- myBuilder.NewCommand() # creates a new command
-
- # change the properties of the study
- if A.IsLocked() == 0 :
-     A.SetUserName("tester"); print 'A.SetUserName("tester"), -A.GetUserName() = ', A.GetUserName()
-     A.SetCreationDate(11,11,11,11,2002); print 'A.SetCreationDate(11,11,11,11,2002), -A.GetCreationDate() =', A.GetCreationDate()
-     print "A.IsModified() = ", A.IsModified()
- A.SetLocked(1)
-
-
myBuilder.CommitCommand() # commits all actions declared -within the created command
-
-
- void CommitCommand()
-

-
See the end of the previous example
-
-
- void AbortCommand ()

-
- Create new command wich containes actions for changing -the properties of the study, cancel all declared actions:
-
- A = myStudy.GetProperties()
- A = aProperties._narrow(SALOMEDS.AttributeStudyProperties)
-
- myBuilder = myStudy.NewBuilder()
-
- myBuilder.NewCommand() # creates a new command
-
- # change the properties of the study
- if A.IsLocked() == 0 :
-     A.SetUserName("tester"); print 'A.SetUserName("tester"), -A.GetUserName() = ', A.GetUserName()
-     A.SetCreationDate(11,11,11,11,2002); print 'A.SetCreationDate(11,11,11,11,2002), -A.GetCreationDate() =', A.GetCreationDate()
-     print "A.IsModified() = ", A.IsModified()
- A.SetLocked(1)
-
-
myBuilder.AbortCommand() # abort all actions declared -within the created command
-
-
- void Undo () raises (LockProtection) -,
- void Redo () raises (LockProtection)
-
- Create new command wich containes actions for changing -the properties of the study,
- cancel all declared actions and then redo it with the help of undo/redo -mechanism:

-
- A = myStudy.GetProperties()
- A = aProperties._narrow(SALOMEDS.AttributeStudyProperties)
-
- myBuilder = myStudy.NewBuilder()
-
- myBuilder.NewCommand() # creates a new command
-
- # change the properties of the study
- if A.IsLocked() == 0 :
-     A.SetUserName("tester"); print 'A.SetUserName("tester"), -A.GetUserName() = ', A.GetUserName()
-     A.SetCreationDate(11,11,11,11,2002); print 'A.SetCreationDate(11,11,11,11,2002), -A.GetCreationDate() =', A.GetCreationDate()
-     print "A.IsModified() = ", A.IsModified()
- A.SetLocked(1)
-
-
myBuilder.CommitCommand() # commits all actions declared -within the created command
-
-
myBuilder.Undo() # cancels all actions of the command
-
-
myBuilder.Redo() # redoes all actions of the command
-
-
-
-
-
SALOMEDS::StudyManager -interface
-
-
-
-
-
Study -NewStudy ( in string study_name )
-
- Create the study with the name "Test_Study":

-
- myNewStudy = myStudyManager.NewStudy("Test_Study")
-
-
- Study Open -( in URL -aStudyUrl ) raises (SALOME::SALOME_Exception)
-
- Open the study saved in the HDF file:
-
- file = 'saved_study.hdf'
-
- openedStudy=myStudyManager.Open(file)
-
- if openedStudy == None:
-     raise  RuntimeError, "Can't open saved study!"
-
-
- void Save (in Study aStudy, in boolean -theMultifile )
-
-
Open study, import med file into it and save with the old -path and filename:
-
-
file = "saved_study.hdf"
- myMedFile ="medfile.med"
-
- openedStudy=myStudyManager.Open(file)
-
- myVisu.SetCurrentStudy(openedStudy)
- myResult = myVisu.ImportFile(myMedFile)
-
- myStudyManager.Save(openedStudy, 0)
-
-
- void SaveAs ( in URL -aUrl, in  Study aStudy, - 
in boolean theMultifile -)
-
- Open study from the file and resave it in several files (using -Multifile option while saving)
-
-
file = "saved_study.hdf"
- newfile = "resaved_study.hdf"
-
- openedStudy=myStudyManager.Open(file)
- myStudyManager.SaveAs(newfile, openedStudy, 1)
-
-
- void Close ( in  Study aStudy )

-
- Close just opened study:
-
- file = "saved_study.hdf"
-
- openedStudy=myStudyManager.Open(file)
- myStudyManager.Close(openedStudy)
-
-
-
- -
SALOMEDS::SObject interface
-
-
-
-
- ID GetID ()
-
- Create new SObject and get its ID:
-
- mySObj = myBuilder.NewObject(myFather)
-
- myID =  mySObj.GetID()
-
-
- SComponent -GetFatherComponent ()
-
- Get father component of the SObject:
-
- myFather = mySObj.GetFatherComponent();
-
-
- boolean FindAttribute ( out GenericAttribute anAttribute, -in string aTypeOfAttribute )
-
- Find the AttributeName attribute of the field:
-
- aFieldSObj  = myStudy.FindObject("Head, -")
-
- res = aFieldSObj.FindAttribute( anAttr, "AttributeName")
- if res == 0:
-     raise  RuntimeError, "Error:  Attribute not -found"
-
-
- ListOfAttributes -GetAllAttributes ()
-
- Get list of all attributes of the SObject, find the number of attributes:
-
- attrs = mySObj.GetAllAttributes()
- aLen = len(attrs) # number of attributes
-
-
-
-
- -
SALOMEDS::SComponent interface
-
-
-
-
- string ComponentDataType ()
-
- Print names of all components wich -the study contains:
-
- aCompItr = myStudy.NewComponentIterator()
-
- while aCompItr.More():
-     aComp = aCompItr.Value()
-     aName = aComp.ComponentDataType()
-     print "Component name = ", aName
-     aCompItr.Next()
-
-
- Other methods are inherited.
-
-
-
-
- -
SALOMEDS::SComponentIterator - interface
-
-
-
-
- boolean More (), void Next (), SComponent Value -()
-
- See another -example
-
-   
-
- -
SALOMEDS::ChildIterator - interface
-
-
-
-
- boolean More () , void Next (), SObject Value ()
-
- Print all mesh names of imported MED file with the help of ChildIterator:
-
- aResult = myVisu.ImportFile("MedFile.med")
-        
- myStudy = theVisu.GetCurrentStudy()
- aSObj = myLocalStudy.FindObjectIOR(aResult.GetID())
-
- aMeshIter = myLocalStudy.NewChildIterator(aSObj);  # creating new -child iterator
-
- while aMeshIter.More() :               -                      -           # check if one more -child level exists.
-         aMeshSObj = aMeshIter.Value() -                  -         # returns the SObject corresponding -to the current object found by the iterator.  
-         aMeshIter.Next()     -                      -                      -   # passes the iterator to the next level.
-         anAttr = aMeshSObj.FindAttribute("AttributeName")[1]
-         if anAttr is None :
-                 -aMeshSObj = aMeshIter.Value()
-               -  aMeshIter.Next()
-                 -anAttr = aMeshSObj.FindAttribute("AttributeName")[1]
-         anAttr = anAttr._narrow(SALOMEDS.AttributeName);
-         aMeshName = anAttr.Value()
-         print "  ", aMeshName
-
-
-
- -
SALOMEDS::AttributeComment - interface
-
-
-
- string Value (),  void SetValue ( in string value )
-
- Find the AttributeComment attribute of the "Head" field in the study, -print it, then change it to "My Comment" string:
-
- aFieldSObj  = myStudy.FindObject("Head, -")
- anAttr = aFieldSObj.FindAttribute("AttributeComment")[1]
-                     -anAttr = anAttr._narrow(SALOMEDS.AttributeComment);
-                     -aFieldComment = anAttr.Value()
-
- print "AttributeComment", anAttr
-
- anAttr.SetValue ("My Comment")
- -

- 
- - diff --git a/doc/html/INPUT/sources/static/mapping.html b/doc/html/INPUT/sources/static/mapping.html deleted file mode 100755 index 21ead079f..000000000 --- a/doc/html/INPUT/sources/static/mapping.html +++ /dev/null @@ -1,329 +0,0 @@ - - - - - - Main Page - - - -  -
- - - - - -
-
-
- -

-Mapping of IDL definitions to Python language.

- -

-Introduction

-SALOME is a distributed client/server application using the Common -Object Request Broker Architecture (CORBA). CORBA architecture uses the -Interface Definition Language (IDL), which specifies interfaces between -CORBA objects. So with help of IDL CORBA's language independence is ensured -. Because interfaces described in IDL can be mapped to the most of currently -used programming languages, CORBA applications and components are thus -independent of the language(s) used to implement them. In other words, -a client written in C++ can communicate with a server written in Java, -which in turn can communicate with another server written in COBOL, and -so forth. -

One important thing to remember about IDL is that it is not an implementation -language. That is, applications can't be written in IDL. The sole purpose -of IDL is to define interfaces; providing implementations for these interfaces -is performed using some other language. -

This page contains an abridged reference manual for mapping of IDL definitions -to Python language. It will be useful for Python programmers who are not -familiar with IDL language. All examples are taken from SALOME source -files. The complete version of Python Language Mapping Specification can -be found here. -
  -

CONTENTS: -

-
- -

-Using Scoped Names

-Python implements a module concept that is similar to the IDL scoping mechanisms, -except that it does not allow for nested modules. In addition, Python requires -each object to be implemented in a module; globally visible objects are -not supported. -

Because of these constraints, scoped names are translated into Python -using the following rules: -

• An IDL module mapped into a Python module. Modules containing modules -are mapped to packages (i.e., directories with an __init__ module -containing all definitions excluding the nested modules). An implementation -can chose to map toplevel definitions (including the module CORBA) to modules -in an implementationdefined package, to allow concurrent installations -of different CORBA runtime libraries. In that case, the implementation -must provide additional modules so that toplevel modules can be used without -importing them from a package. -

• For all other scopes, a Python class is introduced that contains all -the definitions inside this scope. -

• Other global definitions (except modules) appear in a module whose -name is implementation dependent. Implementations are encouraged to use -the name of the IDL file when defining the name of that module. -

For instance, -

-
module SALOMEDS {
- interface StudyManager {
-  void  Close(in Study aStudy);
- };
-};
-
-would introduce a module SALOMEDS.py, which contains the following definitions: -
-
# module SALOMEDS.py
-class StudyManager:
-  def _Close(self,aStudy):
-   pass #interfaces are discussed later
-
-To avoid conflicts, IDL names that are also Python identifiers are prefixed -with an underscore (‘_’). -

Back to the contents -

-

-Mapping for Template and Array Types

-Both the bounded and the unbounded string type of IDL are mapped to the -Python string type. Wide strings are represented by an implementation-defined -type with the following properties: -

• For the wide string X and the integer n, X[n] returns the nth character, -which is a wide string of length 1. -

• len(X) returns the number of characters of wide string X. -

• CORBA.wstr(c) returns a wide character with the code point c in an -implementation-defined encoding. -

• X+Y returns the concatenation of wide strings X and Y. -

• CORBA.word(CORBA.wstr(c)) == c -

The sequence template is mapped to sequence objects (e.g., tuples or -lists). Applications should not assume that values of a sequence type are -mutable. Sequences and arrays of octets and characters are mapped to the -string type for efficiency reasons. -

For example, given the IDL definitions -

-
module SALOMEDS {
-  typedef sequence <string> StringSeq;
-   
-   interface AttributeTableOfInteger : GenericAttribute {
-
-    void SetRowTitles(in StringSeq theTitles) raises(IncorrectArgumentLength);
- };
-};
-
-a client could invoke the operation -
-
print My_AttributeTableOfInteger.SetRowTitles(["X","F"])
-
-Array types are mapped like sequence templates. The application in this -example also expects an IncorrectArgumentLength exception if it passes -sequences that violate the bounds constraint or arrays of wrong size. -

Another example with arrays. The following IDL definition -

-
module SALOMEDS {
- typedef sequence<GenericAttribute> ListOfAttributes;
- interface SObject {
-  ListOfAttributes     GetAllAttributes();
- };
-};
-
-is equal to -
-
import SALOMEDS
-
-attributes=[]
- 
-attributes = My_SObject.GetAllAttributes()
-
-length = len(attributes)
-
-print "Attributes number = ", length
-print attributes
-
-Back to the contents -

-

-Mapping for Objects and Operations

-A CORBA object reference is represented as a Python object at run-time. -This object provides all the operations that are available on the interface -of the object. Although this specification does not mandate the use of -classes for stub objects, the following discussion uses classes to indicate -the interface. -

The nil object is represented by None. -

If an operation expects parameters of the IDL Object type, any Python -object representing an object reference might be passed as actual argument. -

If an operation expects a parameter of an abstract interface, either -an object implementing that interface, or a value supporting this interface -may be passed as actual argument. The semantics of abstract values then -define whether the argument is passed by value or by reference. -

Operations of an interface map to methods available on the object references. -Parameters with a parameter attribute of in or inout are -passed from left to right tothe method, skipping out parameters. -The return value of a method depends on the number of out parameters -and the return type. If the operation returns a value, this value forms -the first result value. All inout or out parameters -form consecutive result values. The method result depends then on -the number of result values: -

• If there is no result value, the method returns None. -

• If there is exactly one result value, it is returned as a single -value. -

• If there is more than one result value, all of them are packed -into a tuple, and this tuple is returned. -

Assuming the IDL definition -

-
module SALOMEDS{
- interface StudyBuilder{
-  boolean FindAttribute  ( in SObject anObject, 
-                           out GenericAttribute anAttribute, 
-                           in string aTypeOfAttribute );
- };
-};
-
-a client could write -
-
from SALOMEDS import StudyBuilder;
-my_StudyBuilder=...
-  
-  res,A=my_StudyBuilder.FindAttribute(Sobj, "AttributeSequenceOfReal")
-
-In this example A corresponds to the return value anAttribute -and res to the boolean return value. -

If an interface defines an attribute name, for example, the attribute -is mapped into an operation _get_name. If the attribute is not readonly, -there is an additional operation _set_name. -

The IDL definition -

-
module SALOMEDS{
- interface Study{
-  attribute string Name;
- };
-};
-
-is equal to the following -
-
from SALOMEDS import Study
-My_Study=...
-  Name=My_Study._get_name();
-  Name=My_Study._set_name();
-
-Back to the contents -

-

-Narrowing Object References

-Python objects returned from CORBA operations or pseudo-operations (such -as string_to_object) might have a dynamic type, which is more specific -than the static type as defined in the operation signature. -

Since there is no efficient and reliable way of automatically creating -the most specific type, explicit narrowing is necessary. To narrow an object -reference A to an interface class AttributeSequenceOfReal, -the client can use the following operation -

-
A = A._narrow(SALOMEDS.AttributeSequenceOfReal)
-
-Back to the contents -

-

-Mapping for Exceptions

-An IDL exception is translated into a Python class derived from CORBA.UserException. -System exceptions are derived from CORBA.SystemException. Both base classes -are derived from CORBA.Exception. The parameters of the exception are mapped -in the same way as the fields of a struct definition. When raising an exception, -a new instance of the class is created; the constructor expects the exception -parameters. For example, the definition -
-
module SALOMEDS{
- interface StudyBuilder{
-  exception LockProtection {};
-  void CommitCommand() raises(LockProtection);
- };
-};
-
-could be used caught as -
-
from SALOMEDS import StudyBuilder;
-my_StudyBuilder=...
-try:
-  my_StudyBuilder.CommitCommand();
-except StudyBuilder.LockProtection,value:
-  print "Error! Study is locked for modifications"
-
- -


Back to the contents -

-

-Mapping for Enumeration Types

-An enumeration is mapped into a number of constant objects in the name -space where the enumeration is defined. An application may only test for -equivalence of two enumeration values, and not assume that they behave -like numbers. For example, the definition -
-
module VISU {
- interface PrsObject{
- 
-  enum PrsObjType{ TCURVE, TTABLE, TMESH, TCONTAINER,
-                   TSCALARMAP, TISOSURFACE, TDEFORMEDSHAPE,
-                   TCUTPLANES, TVECTORS };
- };
-};
-
-introduces the objects -
-
from VISU import PrsObject
-VISU.PrsObjType.TCURVE,VISU.PrsObjType.TTABLE,VISU.PrsObjType.TMESH,VISU.PrsObjType.TCONTAINER,
-VISU.PrsObjType.TSCALARMAP,VISU.PrsObjType.TISOSURFACE,VISU.PrsObjType.TDEFORMEDSHAPE,VISU.PrsObjType.TCUTPLANES,
-VISU.PrsObjType.TVECTORS
-
-Back to the contents -

-

-Mapping for Structured Types

-An IDL struct definition is mapped into a Python class or type. For each -field in the struct, there is a corresponding attribute in the class with -the same name as the field. The constructor of the class expects the field -values, from left to right. For example, the IDL definition -
-
struct SDate {
-               short Second;
-               short Minute;
-               short Hour;
-               short Day;
-               short Month;
-               short Year;
-             };
-
-could be used in the Python statements -
-
Date=SDate(30, 12, 15, 26, 1, 79)
-print Date.Second,Date.Minute,Date.Hour,Date.Day,Date.Month,Date.Year
-
- -
-Back to the contents
- - - - diff --git a/doc/html/INPUT/sources/static/ns_f3-1.jpg b/doc/html/INPUT/sources/static/ns_f3-1.jpg deleted file mode 100755 index fd4f45602..000000000 Binary files a/doc/html/INPUT/sources/static/ns_f3-1.jpg and /dev/null differ diff --git a/doc/html/INPUT/sources/static/overview_Kernel.html b/doc/html/INPUT/sources/static/overview_Kernel.html deleted file mode 100755 index 144d3c341..000000000 --- a/doc/html/INPUT/sources/static/overview_Kernel.html +++ /dev/null @@ -1,191 +0,0 @@ - - - - - - Main Page - - - -  -
- - - - - - -
-
-
- - -

General overview -

-

Table of contents

- - -
-

1. Introduction

-

The kernel corresponds to the minimal set of services required for the use of SALOME components (Supervisor, IAPP). -The kernel is also used by application software components (solver) and their container. -The kernel is associated to a unique user who can launch only one kernel at once. -The kernel is launched and destroyed by voluntary actions of the user. These functions are realized via the -use of scripts.

-

The list of the kernel services related to communication issues is:

-
    -
  • The Naming service
  • -
  • The Session service
  • -
  • The Life Cycle service
  • -
  • The Registry service
  • -
  • The Notification service
  • -
-

This list is enlarged with CORBA independent services :

- -
    -
  • The module catalog service
  • -
  • The Data Type Catalog service
  • -
  • The resource catalog service
  • -
-

SALOME kernel module also encapsulates the Engine -Back to the contents -

2. Basic principles

-

The SALOME user's desktop is a process on a machine. This process includes:

-
    -
  • A graphic interface (based on Qt),
  • -
  • A text interface (Python interpreter),
  • -
  • A 3D visualization window shared by components.
  • -
-

SALOME Modules decompose into an interface (widgets GUI, text mode TUI, 3D visualization V3D) and -an engine.

-

The description of a module and its components is obtained by consulting the module catalog.

-

The interface is dynamically loaded in the process of the SALOME user's desktop. The engine is a CORBA -server launched either on the local machine or on the distant machine.

-

The engine (CORBA server) is created by a factory (or container). -This factory is also a CORBA server. Several containers can be present on a machine. -Some containers are specialized for types of components requiring a specific management. -For example, a specific container is required for components performing parallel calculations. -The engine includes at least a dynamically linked library in the container process. -This library is the implementation of the CORBA server associated to the engine. -If the engine is built from a pre-existent executable code, the library is simply a wrapper of the encapsulated code. -It launches the code in a separate process. Wherever possible, the code is included into the dynamic library. -

The container is one of the kernel services. If one needs to create a container on a distant machine, one creates a process resuming a part of the kernel services. The kernel can create other containers on distant machines via the trader (rsh). All the containers and the kernel share the same CORBA naming service with which they register.

-

The user reaches the functions of various SALOME'S components, either in graphic interactive mode (GUI) or in command mode ( TUI), via a Python interpreter.

-Back to the contents - -

3. Services and features of the SALOME kernel module

-

This section gives a brief overview of the services composing the kernel module. - The Life Cycle and Naming - services are described in separate chapters of this reference manual.

- -

3.1 Session service

-

SALOME session describes the period starting from the kernel creation and - ending with its destruction. During this period the user can connect the session - and disconnect from it without ending this session. One connection log could - be written. A priori, no information resulting from another (past) session can - be used by the current session.

-

Implementation of this service in SALOME application is provided by the class -Session encapsulated in the package -SALOME.

- -

3.2 Registry service

-

The active component registry should contain:

- -
    -
  • The list of the active components
  • -
  • The list of the active containers during a SALOME session.
  • -
-

It should allow the state of a session. It also should allow to know if session can be stopped.

-

The API reference for this service is not included in the current version of the reference manual.

- -

3.3 Notification service

-

The notification service is a kernel function which allows exchanging of events between CORBA objects.

-

In comparison with traditional CORBA event service, SALOME notification service allows to:

-
    -
  • Filter the events,
  • -
  • Structure the events,
  • -
  • Establish quality policies of services,
  • -
  • Subscribe to various event channels.
  • -
-

The API reference for this service is not included in the current version of the reference - manual.

- -

3.4 Module catalog service

-

There are two module catalogs in SALOME application:

-
    -
  • General module catalog : This first catalog is common to all SALOME users once the the platform is installed (for example for a particular company or a service). This catalog will be managed by the integrator or the administrator of the platform, -
  • Personal module catalog : A specific catalog for every user (possibly empty). This catalog should notably allow the developers to test a new component before integrating it into the general catalog. -
-

The objective of these two module catalogs is to:

-
    -
  • List the available modules; -
  • Allow the addition, the modification and the deletion of a module in catalogs; -
  • Look for a module and\or a service fulfilling some given criteria (in catalogs); -
-

Implementation of this service in SALOME application is provided by two classes -ModuleCatalogand AComponent encapsulated in the package -SALOME_ModuleCatalog.

- -

3.5 Data type catalog

- -

The data exchanged between components services have definite types. During description of input, output, and -configuration parameters of components in the module catalog, the -definition of the parameters types is taken from data type catalog. During the editing of execution of -graphs, it is necessary to check that the connections output-input parameters are of compatible -types.

-

The data types correspond to CORBA object classes, including attributes and access methods (defined by their IDL). -These types can be created by specialization of generic data types.

-

The purpose of the data type catalog is to:

-
    -
  • List the available data types in the catalog; -
  • Browse the type hierarchy to check the compatibility of types (specialized output toward generic input); -
  • Allow the addition, the modification and the deletion of a data type in the catalog; -
-

The API reference for this service is not included in the current version of the reference - manual.

-

3.6 Resource catalog

- -

This catalog describes machines, possible types of container on a machine, resources of machines... This catalog is used by the SALOME LifeCycle service.

-

The API reference for this service is not included in the current version of the reference - manual.

- -

3.7 Engine

-

The engine represents a shared library which can be dynamically loaded by a container. The container can load this library, -given an interface name and an implementation -name. The container dynamically resolves an extern_C function in the library, -which constructs the CORBA Engine servant object.

-

The SALOME engine in - the current version of the application is implemented - as Engines package of interfaces. It encapsulates two classes: Component, Container.

-

The API refernce for Engines package can be found here. -

-

3.7.1 Component class

-

This class is used for interaction between the container and the component and between the components inside the container. -

-

The API reference for this class can be found here.

- -

3.7.2 Container class

-

This class provides a set of methods which are necessary for definition of the process of loading and registration of new components in SALOME application.

-

The API reference for this class can be found here.

- -Back to the contents - - diff --git a/doc/html/INPUT/sources/static/overview_Life_Cycle.html b/doc/html/INPUT/sources/static/overview_Life_Cycle.html deleted file mode 100755 index 659c2ab24..000000000 --- a/doc/html/INPUT/sources/static/overview_Life_Cycle.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - Life Cycle service Description - - - - - - -  -
- - - - - - -
-
-
- - -

Life Cycle service Description

-

Introduction

-

The objective of this document is to give the users of SALOME - application a brief overview of the Life Cycle service implemented in SALOME. - A complete version of the LifeCycle service specification edited by the Object Management Group, Inc.(OMG) can be found here. -

-

Table of contents

- -
- -

1. Overview

- -

Life Cycle service defines services and conventions for creating, deleting, copying and moving objects. -Because CORBA-based environments support distributed objects, the Life Cycle service defines conventions that allow clients to perform -life cycle operations on objects in different locations. This overview describes the life cycle problem for distributed object systems.

-
- - -

2. SALOME Life Cycle service description

-

The SALOME Life Cycle service represents a partial implementation of the CORBA LifeCycle service.

-

From general point of view, the SALOME Life Cycle service allows to find or load with the help of a given container a definte SALOME component with its further -initialization and registration in the Naming service.

-

Container - it's a certain engine realizing the mechanism of loading a SALOME module.

-

Component - it's a certain abstract shell wrapping SALOME modules, performing all operations concerned with their initialization and registration.

-

From the point of view of the service user, the Life Cycle provides a set of functions allowing to :

-
    -
  • Locate a machine (more generally a container) by a logical set of required features (of both container and - machine);
  • -
  • Load components on the obtained containers;
  • -
  • Create a container;
  • -
  • Obtain the container containing a given component;
  • -
  • Treat the list of the active components;
  • -
  • Treat the list of the available containers.
  • -
- - - -

The SALOME Life Cycle is a CORBA server. This server at its initialization is registered with the naming service.

-

The Life Cycle service is invoked to find a container and use it to load a -component. It supplies, as parameters, the type of container and the machine features required for loading -a given component. -

-

The Life Cycle service then returns a CORBA reference of a launched container.

-

Containers are launched on demand depending on components to be loaded. The Life Cycle service manages loading of containers.

-

When there is no launched container matching the request the Life Cycle service invokes loading of the correct type of container on a correct machine via a rsh type command.

-

The Life Cycle service interrogates containers to have information about the dynamic state of the machine (load). It contains (and update) the state of the active containers.

-

The Life Cycle service can implement a loading strategy for new containers on new machines, depending on the state of the already launched containers.

-

The Life Cycle service can stop containers at the end of session on -demand.

- -

In SALOME platform the Life Cycle service is implemented in SALOME_Life CycleCORBA class. The API refernce for the methods of this class -can be found here.

-Back to the contents -
- - -
- - - diff --git a/doc/html/INPUT/sources/static/overview_Naming.html b/doc/html/INPUT/sources/static/overview_Naming.html deleted file mode 100755 index ae24ab54d..000000000 --- a/doc/html/INPUT/sources/static/overview_Naming.html +++ /dev/null @@ -1,197 +0,0 @@ - - - - - - Naming Service Description - - - -  -
- - - - - - -
-
-
- - -

Naming Service Description

-
-

Introduction

-

This page contains an abridged version of the Naming Service specification - edited by the Object Management Group, Inc.(OMG). The objective of this document is to give the users of SALOME - application a brief overview of the Naming Service implemented in SALOME. - A complete version of this document can be found here. -

-
-

Table of contents

- - -
- -

1. Overview

-

This chapter presents the OMG Naming Service and explains how the Naming Service can be used to decouple clients and servers by -providing an external reference exchange mechanism. The chapter also covers how to solve the bootstrapping problem for clients and -servers by controlling their configuration. -

- -

In practice, copying stringified references from a server to all its clients is clumsy and does not scale. The Naming Service provides a way -for servers to advertise references under a name, and for clients to retrieve them. The advantages are: -

-
    -
  • Clients and servers can use meaningful names instead of having to deal with stringified references.
  • -
  • By changing a reference in the service without changing its name, you can transparently direct clients to a different object.
  • -
  • The Naming Service solves the bootstrapping problem because it provides a fixed point for clients and servers to rendezvous.
  • -
-

The Naming Service is much like a white pages phone book. Given a name, it - returns an object reference.

- -

The terminology used in description of NamigService is the following:

- -
    -
  • A name-to-IOR association is called by a name binding.
  • -
  • Each binding identifies exactly one object reference, but an object reference - may be bound more than once (have more than one name).
  • -
  • A naming context is an object that contains name bindings. - The names within a context must be unique. Naming contexts can contain bindings - to other naming contexts, so naming contexts can form graphs. Binding contexts - in other contexts creates a naming graph — a directed graph with nodes - and labeled edges where the nodes are contexts. A naming graph allows more - complex names to reference an object. Given a context in a naming graph, a - sequence of names can reference an object. This sequence of names (called - a compound name) defines a path in the naming graph to navigate the - resolution process. Figure 1-1 shows an example of a naming graph.
  • -
  • Binding a name to a context means to add a name–IOR pair to a context.
  • -
  • Resolving a name means to look for a name in a context and to obtain the - IOR bound under that name.
  • -
- - -
-

Figure 1-1 A Naming Graph

- Back to the contents -
- -

2. SALOME Naming Service

- -

2.1 Introduction

-

The SALOME Naming Service is a kernel function which supplies a name directory - hierarchy for pointing out CORBA objects. This name directory hierarchy allows, - from symbolic names, to dynamically find the references of distributed SALOME - objects, without information about their location. SALOME objects which can - be reached via the naming service are:

- -
    -
  • The kernel services
  • -
  • Containers -
  • SALOME components instances -
-

The name directory hierarchy in SALOME represents a graph of directories containing - symbolic associations name-reference on objects. (It has been described in the - previous section)

- -

2.2 Definitions

-
-
Directory
-
Context of names containing symbolic associations name-reference on objects.


-
"/"
-
Character used in SALOME to separate two names of a directory


-
Access path
-
List of names (separated by "/" character representing the path to be followed - in the graph to reach an association name-reference (the last name in the sequence).
-
-
Note:An object can be referenced by several symbolic names - in one or several directories.
- -

2.3 Partition of SALOME name directory hierarchy

-

The hierarchical organization of the SALOME name directory is not completely frozen . -Because the framework allows the simultaneous opening of several studies, the following levels are determined:

-
 
- /Kernel
- /Container/
-	       /Component	
-
- -

2.4 SALOME name directory persistence

-

During a SALOME session, stopping a server in charge of the Naming Service - doesn't imply the loss of the contents of the SALOME name directory hierarchy. - A backup file is produced and can be used to restart the Naming Service. So, - one can recover the state of the SALOME name directory hierarchy at restart - time. During such breakdown, every call to any function of the Naming Service - invokes an exception of type Unreachable service.

- -

2.5 SALOME Naming Service features

-

Usage and administration of the name directory hierarchy is realized by means of the following functions:

-
    -
  • Recording and recovering of the reference of an object
  • -
  • Searching for a symbolic name
  • -
  • Creating of a directory, reading and modifying of the current directory
  • -
  • Destructing of a symbolic name and a diredtory
  • -
-

The access path used in these functions can be defined, either from the root, or from any -directory of SALOME name directory hierarchy.

- -

In SALOME there is s standard interface of Naming Service, and any user can - use it for binding and finding objects. How to use it, it's possible to find - in any CORBA documentation. However in SALOME there is an additional layer which - hides calls to standard interface.

-

The precise API reference for these functions you can find here.

-

Here is a short list of public methods which are used for working with the SALOME Naming Service:

-
-

Register

-
Method which register object reference in the naming service with given name. It makes assignment between IOR and stringified name. -Then it's possible to get object reference from name using "Resolve" method.
-

-

Resolve

-
Try to obtain object reference from name. It's necessary before publishing - IOR in the Naming Service by Register method.
-

-

Find

-
The purpose of this method is to research a name from the current directory - of the naming service. Then if there is occurrence the naming service changes - directory to go to the directory where last occurrence is found.
-

-

CreateDirectory

-
This method allows to create one or several directories in the current directory
-

-

ChangeDirectory

-
Moves the current directory. The current directory is moved to the root directory if the input parameter Name is "/".
-

-

CurrentDirectory

-
Method allowing to get the current directory.
-

-

list

-
Method allowing to list and print the whole context beginning from the current context.
-

-

list_directory

-
Method to get all contexts contained in the current directory.
-

-

DestroyName

-
Destroys a symbolic name-object reference association.
-

-

DestroyDirectory

-
Destroys an empty directory.
-
- -Back to the contents -
- - diff --git a/doc/html/INPUT/sources/static/overview_Study.html b/doc/html/INPUT/sources/static/overview_Study.html deleted file mode 100755 index f4c278363..000000000 --- a/doc/html/INPUT/sources/static/overview_Study.html +++ /dev/null @@ -1,261 +0,0 @@ - - - - - - Main Page - - - -  -
- - - - - - -
-
-
- - -

General overview -

-
-

Table of contents

- -

1. Introduction

-

In SALOME application the Study module is used for management (creation, saving - etc.) of studies. In the framework of the platform, a study represents a working - document allowing to manage the data produced by various components which are - integarted into SALOME.
-

-

2. Representation of the study

-

The study represents a set of objects that we will call Study Objects or SObjects. - The study can be represented as a tree, every node of that tree containing a - SObject. SObjects in the study can be values or references towards data of calculation, - graphs of calculation, trees of construction of detail(room), results. Every - SOject of the study is characterised by a unique identifier in the study.

-

The study allows to describe the following relations:

-
    -
  • The link between the transient and persistent values of an SObject.
  • -
  • The relations between the SObjects produced by different components.
  • -
  • The relations between the SObjects produced by the same component.
  • -
  • The link between an object and its user name.
  • -
  • The access to the definition of the component which produce an object of - the study.
  • -
  • The access to instance of the component (if this one exists) which has produced - this SObject of the study.
  • -
- -

Every SObject in the study contains a set of attributes. These attributes represent - a set of definitions associated to that object, they can contain values or corba - references towards the data contained in the internal data structure of a component.

-

As the structure of the study is tree-like it is possible to associate sub-objects - to objects.

-

As particular object, the study contains Component Data which are labels associated to the component -which produce data in the study. It is to this object that we can associate attributes containing ID which -we shall allow to identify the type of the component and also its instance. Objects produced by a -component will be sub-objects of the coresponding Data Component.

-

For example Component Data GEOM will contain the data produced by the component - Geom.

- - - - - -
GEOM contains the data produced by the component GEOM. The component MESH - contains a SObject Mesh_1 wich refers to the SObject identified - by ID4 corresponding to Geometrie_1.
-

We distinguish two forms of the study, the study opened in a session SALOME and the study in the -persistent format. These two formats are described in the following sections

-

2.1 Study in transient format

-

The representation of the study in memory will be based on the document OCAF (supplied by OCC). -The document OCAF can be seen as a tree, every node of that tree is identified by a tag representing an integer value.

-

The exploration of the tree from the root to a node supplies a sequence of tags which establishes a -unique identifier ID. ID represents a character string containing the sequence of tags separated by -one ':'.

-

For example 0:1:12:4

-

To every node we can associate a set of attributes.

-

The attributes which the study can contain can be of the following types:

-
    -
  • All standard attributes supplied by OCC (package TdataStd) which allow to define (integers, -real, strings, identifiers, references etc.)
  • -
  • Attributes which contain CORBA references.
  • -
  • Attributes which contain the path HDF to reach the persistent datum. (Cf. the following chapter)
  • -
-

Remark: it is the study which takes care to build the attributes from the values which are passed to it, so -an attribute is always in a study, and it knows the study object to which it is attached.

-

Example of a Study Object as a set of various attributes.

- -

2.2 Study in persistent format

-

To store a study HDF format is used, this tool allows to represent persistent data in the form of a tree.

-

Under the root of the persistent document, you can find a set of nodes:

-
    -
  • The first node contains the skeleton of the study. The skeleton consists of the identifiers of the -objects, as well as the references among them.
  • -
  • There is also one node for every component which has produced data during this SALOME session. Under each of these -node there are values of the data produced by this component.
  • -
-

2.3 Link between transient and persistent formats

-

It will be possible to complete the definition of one object in the study by associating to it an attribute -HDFPath which will contain the path to the persistent data.

- -

Back to the contents

-

3. Services and features of the study

-

The Study in SALOME application possess a wide functionality. This functionality is provided by a set of classes which are described -below. -

3.1 Study class

-

The purpose of the Study class is to manage the data produced by various components - of SALOME platform. Most of the Study operations are handled by the StudyManager - and the StudyBuilder. What - is left in the Study class are elementary inquiries. A Study is explored by - a set of tools, mainly iterators , which are described further.

-

Nevertheless, the Study class contains a set of methods providing:

- -
    -
  • management of study properties -
  • search for SObjects. -
  • search for SComponents -
  • creation of a new StudyBuilder, ComponentIterator, ChildIterator etc. -
-

The API reference for this class can be found here.

-

3.2 StudyBuilder class

-

StudyBuilder supplies basic services to edit the study. The edition of the study is made by the -component. Every component will use the basic services of the StudyBuilder allowing to write and publish objects.

-

StudyBulder provides the following functionality:

-
    -
  • creation, modification or deletetion of SObjects in the study
  • -
  • creation or removal of SComponents
  • -
  • undo/redo functionality. For that purpose it supplies the methods NewCommand, - CommitCommand, AbortCommand.
  • -
-

The API reference for this class can be found here.

-

3.3 StudyManager class

-

The purpose of the Manager is to manipulate Studies. Since SALOME is a multi-document - application during a working session you can operate as many stadies as you - wishes to create.

-

For that purpose StudyManager provides the following functionality:

-
    -
  • creation, opening, closing and saving studies
  • -
  • navigation through a set of studies present in the current working session
  • -
  • copy/paste of the objects in the study functionality.
  • -
-

The API reference for this class can be found here.

-

3.4 SObject class

-

The objects in the study are built by the StudyBuilder. -The SObject class provides methods for elementary inquiries, like getting an object ID or its attribuites.

-

The API reference for this class can be found here.

-

3.5 SComponent class

-

The SComponent class establishes in the study a permanent assocition to the components -integrated into SALOME platform. The SComponent interface is a specialization of the SObject - class. It inherits the most of its methods from the SObject class which are used for management of the SComponents.

-

The API reference for this class can be found here.

-

3.6 ChildIterator class

-

It is one of the tools destined for exploration of the study. This class contains a set of methods allowing to get -the access to all identified objects which are sons of another identifiedobject.

-

The API reference for this class can be found here.

-

3.7 SComponentIterator

-

This is the second tool destined for exploration of the study. This interface contains the methods allowing to iterate over all SComponents in the list. - The search is started from the first SComponent in the list.

-

The API reference for this class can be found here.

- -

3.8 GenericAttribute class

-

GenericAttribute represents a base class for all attributes which can be assigned to the SObjects created in the study. All attribute classes - derive from this classe and inherit its methods.

-

The API reference for this class can be found here.

- -

In SALOME application a SObject can possess the following attributes:

- - - - - -
- -
-

3.9 UseCaseBuilder class

-

UseCase in the study represents a user-defined subtree, containing all or some of the objects which currently exist -in the study. The UseCaseBuilder class contains a set of methods used for management (creation, deletion etc) of this sub-tree in the study.

-

The API reference for this class can be found here.

- -

3.10 UseCaseIterator

-

This class represents an exploration tool for the UseCase. It contains a set of methods used for iteration over the objects in the UseCase.

-

The API reference for this class can be found here.

- -

3.11 Callback class

-

The StudyBuilder can be created with the method NewBuilder. While invocation of this method a new object of the class - Callback is created and this object is assigned to the newly created Builder as callback which should be called - when adding and removing the objects.

-

The API reference for this class can be found here.

- -

3.12 Driver class

- -

This class represents a common tool for all components integrated into SALOME - application, that allows them to communicate with the study. It contains a set - of methods which can be called by any component and which provide the following - functionality: -

    -
  • publishing in the study of the objects created by a definite component
  • -
  • saving/loading of the data created by a definite component. These methods - are called by the StudyManager when loading/saving a study containing the - data created by a definite component.
  • -
  • transforming of the transient references into persistant references (or - vice versa) of the SObjects when saving (or loading) a study
  • -
  • copy/paste common functionality. These methods can be called by any component - in order to copy/paste its object created in the study
  • -
-

The API reference for this class can be found here.

-

Back to the contents

- - diff --git a/doc/html/INPUT/sources/static/page2.html b/doc/html/INPUT/sources/static/page2.html deleted file mode 100755 index 40eed1f98..000000000 --- a/doc/html/INPUT/sources/static/page2.html +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - Main Page - - - -  -
- - - - - - -
-
-
- - - - - -

Mapping of SALOME IDL definitions to Python language. -

- - diff --git a/doc/html/INPUT/sources/static/tree.js b/doc/html/INPUT/sources/static/tree.js deleted file mode 100755 index c76590490..000000000 --- a/doc/html/INPUT/sources/static/tree.js +++ /dev/null @@ -1,200 +0,0 @@ -foldersTree = gFld("SALOME v.2.0.0 ", "", "") - insDoc(foldersTree, gLnk("Main Page", "", "main.html")) - -aux1 = insFld(foldersTree, gFld("TUI Reference Guide", "")) - aux2 = insFld(aux1, gFld("Modules", "")) - aux3 = insFld(aux2, gFld("SALOME STUDY module", "")) - insDoc(aux3, gLnk("Overview", "", "overview_Study.html")) - aux4 = insFld(aux3, gFld("Packages", "")) - insDoc(aux4, gLnk("SALOMEDS", "", "namespaceSALOMEDS.html")) - insDoc(aux3, gLnk("Examples", "", "examples_Study.html")) - aux3 = insFld(aux2, gFld("SALOME KERNEL module", "")) - insDoc(aux3, gLnk("Overview", "", "overview_Kernel.html")) - aux4 = insFld(aux3, gFld("Packages", "")) - insDoc(aux4, gLnk("SALOME_ModuleCatalog", "", "namespaceSALOME__ModuleCatalog.html")) - insDoc(aux4, gLnk("SALOME", "", "namespaceSALOME.html")) - insDoc(aux4, gLnk("Engines", "", "namespaceEngines.html")) - insDoc(aux3, gLnk("Examples", "", "examples_Kernel.html")) - - -/*! Data structures -*/ - insDoc(aux1, gLnk("Data Structures", "", "annotated.html")) - -/*! insDoc(aux1, gLnk("SALOME_ModuleCatalog::Acomponent", "", "interfaceSALOME__ModuleCatalog_1_1Acomponent.html")) - insDoc(aux1, gLnk("SALOMEDS::AttributeComment", "", "interfaceSALOMEDS_1_1AttributeComment.html")) - insDoc(aux1, gLnk("SALOMEDS::AttributeDrawable", "", "interfaceSALOMEDS_1_1AttributeDrawable.html")) - insDoc(aux1, gLnk("SALOMEDS::AttributeExpandable", "", "interfaceSALOMEDS_1_1AttributeExpandable.html")) - insDoc(aux1, gLnk("SALOMEDS::AttributeInteger", "", "interfaceSALOMEDS_1_1AttributeInteger.html")) - insDoc(aux1, gLnk("SALOMEDS::AttributeIOR", "", "interfaceSALOMEDS_1_1AttributeIOR.html")) - insDoc(aux1, gLnk("SALOMEDS::AttributeLocalID", "", "interfaceSALOMEDS_1_1AttributeLocalID.html")) - insDoc(aux1, gLnk("SALOMEDS::AttributeName", "", "interfaceSALOMEDS_1_1AttributeName.html")) - insDoc(aux1, gLnk("SALOMEDS::AttributeOpened", "", "interfaceSALOMEDS_1_1AttributeOpened.html")) - insDoc(aux1, gLnk("SALOMEDS::AttributePersistentRef", "", "interfaceSALOMEDS_1_1AttributePersistentRef.html")) - insDoc(aux1, gLnk("SALOMEDS::AttributePixMap", "", "interfaceSALOMEDS_1_1AttributePixMap.html")) - insDoc(aux1, gLnk("SALOMEDS::AttributePythonObject", "", "interfaceSALOMEDS_1_1AttributePythonObject.html")) - insDoc(aux1, gLnk("SALOMEDS::AttributeReal", "", "interfaceSALOMEDS_1_1AttributeReal.html")) - insDoc(aux1, gLnk("SALOMEDS::AttributeSelectable", "", "interfaceSALOMEDS_1_1AttributeSelectable.html")) - insDoc(aux1, gLnk("SALOMEDS::AttributeSequenceOfInteger", "", "interfaceSALOMEDS_1_1AttributeSequenceOfInteger.html")) - insDoc(aux1, gLnk("SALOMEDS::AttributeSequenceOfReal", "", "interfaceSALOMEDS_1_1AttributeSequenceOfReal.html")) - insDoc(aux1, gLnk("SALOMEDS::AttributeStudyProperties", "", "interfaceSALOMEDS_1_1AttributeStudyProperties.html")) - insDoc(aux1, gLnk("SALOMEDS::AttributeTableOfInteger", "", "interfaceSALOMEDS_1_1AttributeTableOfInteger.html")) - insDoc(aux1, gLnk("SALOMEDS::AttributeTableOfInteger::IncorrectArgumentLength", "", "exceptionSALOMEDS_1_1AttributeTableOfInteger_1_1IncorrectArgumentLength.html")) - insDoc(aux1, gLnk("SALOMEDS::AttributeTableOfInteger::IncorrectIndex", "", "exceptionSALOMEDS_1_1AttributeTableOfInteger_1_1IncorrectIndex.html")) - insDoc(aux1, gLnk("SALOMEDS::AttributeTableOfReal", "", "interfaceSALOMEDS_1_1AttributeTableOfReal.html")) - insDoc(aux1, gLnk("SALOMEDS::AttributeTableOfReal::IncorrectArgumentLength", "", "exceptionSALOMEDS_1_1AttributeTableOfReal_1_1IncorrectArgumentLength.html")) - insDoc(aux1, gLnk("SALOMEDS::AttributeTableOfReal::IncorrectIndex", "", "exceptionSALOMEDS_1_1AttributeTableOfReal_1_1IncorrectIndex.html")) - insDoc(aux1, gLnk("SALOMEDS::AttributeTableOfString", "", "interfaceSALOMEDS_1_1AttributeTableOfString.html")) - insDoc(aux1, gLnk("SALOMEDS::AttributeTableOfString::IncorrectArgumentLength", "", "exceptionSALOMEDS_1_1AttributeTableOfString_1_1IncorrectArgumentLength.html")) - insDoc(aux1, gLnk("SALOMEDS::AttributeTableOfString::IncorrectIndex", "", "exceptionSALOMEDS_1_1AttributeTableOfString_1_1IncorrectIndex.html")) - insDoc(aux1, gLnk("SALOMEDS::AttributeTarget", "", "interfaceSALOMEDS_1_1AttributeTarget.html")) - insDoc(aux1, gLnk("SALOMEDS::AttributeTextColor", "", "interfaceSALOMEDS_1_1AttributeTextColor.html")) - insDoc(aux1, gLnk("SALOMEDS::AttributeTextHighlightColor", "", "interfaceSALOMEDS_1_1AttributeTextHighlightColor.html")) - insDoc(aux1, gLnk("SALOMEDS::AttributeTreeNode", "", "interfaceSALOMEDS_1_1AttributeTreeNode.html")) - insDoc(aux1, gLnk("SALOMEDS::AttributeUserID", "", "interfaceSALOMEDS_1_1AttributeUserID.html")) - insDoc(aux1, gLnk("SALOMEDS::Callback", "", "interfaceSALOMEDS_1_1Callback.html")) - insDoc(aux1, gLnk("SALOMEDS::ChildIterator", "", "interfaceSALOMEDS_1_1ChildIterator.html")) - insDoc(aux1, gLnk("SALOMEDS::Color", "", "structSALOMEDS_1_1Color.html")) - insDoc(aux1, gLnk("Engines::Component", "", "interfaceEngines_1_1Component.html")) - insDoc(aux1, gLnk("Engines::Container", "", "interfaceEngines_1_1Container.html")) - insDoc(aux1, gLnk("SALOME_ModuleCatalog::DefinitionInterface", "", "structSALOME__ModuleCatalog_1_1DefinitionInterface.html")) - insDoc(aux1, gLnk("SALOMEDS::Driver", "", "interfaceSALOMEDS_1_1Driver.html")) - insDoc(aux1, gLnk("SALOME::ExceptionStruct", "", "structSALOME_1_1ExceptionStruct.html")) - insDoc(aux1, gLnk("SALOMEDS::GenericAttribute", "", "interfaceSALOMEDS_1_1GenericAttribute.html")) - insDoc(aux1, gLnk("SALOMEDS::GenericAttribute::LockProtection", "", "exceptionSALOMEDS_1_1GenericAttribute_1_1LockProtection.html")) - insDoc(aux1, gLnk("SALOME_ModuleCatalog::IAPP_Affich", "", "structSALOME__ModuleCatalog_1_1IAPP__Affich.html")) - insDoc(aux1, gLnk("SALOME_ModuleCatalog::ModuleCatalog", "", "interfaceSALOME__ModuleCatalog_1_1ModuleCatalog.html")) - insDoc(aux1, gLnk("SALOME_ModuleCatalog::NotFound", "", "exceptionSALOME__ModuleCatalog_1_1NotFound.html")) - insDoc(aux1, gLnk("SALOMEDS::NotImplemented", "", "exceptionSALOMEDS_1_1NotImplemented.html")) - insDoc(aux1, gLnk("SALOME::SALOME_Exception", "", "exceptionSALOME_1_1SALOME__Exception.html")) - insDoc(aux1, gLnk("SALOMEDS::SComponent", "", "interfaceSALOMEDS_1_1SComponent.html")) - insDoc(aux1, gLnk("SALOMEDS::SComponentIterator", "", "interfaceSALOMEDS_1_1SComponentIterator.html")) - insDoc(aux1, gLnk("SALOME_ModuleCatalog::Service", "", "structSALOME__ModuleCatalog_1_1Service.html")) - insDoc(aux1, gLnk("SALOME_ModuleCatalog::ServicesParameter", "", "structSALOME__ModuleCatalog_1_1ServicesParameter.html")) - insDoc(aux1, gLnk("SALOME::Session", "", "interfaceSALOME_1_1Session.html")) - insDoc(aux1, gLnk("SALOME::Session::GUIActive", "", "exceptionSALOME_1_1Session_1_1GUIActive.html")) - insDoc(aux1, gLnk("SALOME::Session::RunningStudies", "", "exceptionSALOME_1_1Session_1_1RunningStudies.html")) - insDoc(aux1, gLnk("SALOMEDS::SObject", "", "interfaceSALOMEDS_1_1SObject.html")) - insDoc(aux1, gLnk("SALOME::StatSession", "", "structSALOME_1_1StatSession.html")) - insDoc(aux1, gLnk("SALOMEDS::Study", "", "interfaceSALOMEDS_1_1Study.html")) - insDoc(aux1, gLnk("SALOMEDS::Study::StudyCommentError", "", "exceptionSALOMEDS_1_1Study_1_1StudyCommentError.html")) - insDoc(aux1, gLnk("SALOMEDS::Study::StudyInvalidComponent", "", "exceptionSALOMEDS_1_1Study_1_1StudyInvalidComponent.html")) - insDoc(aux1, gLnk("SALOMEDS::Study::StudyInvalidContext", "", "exceptionSALOMEDS_1_1Study_1_1StudyInvalidContext.html")) - insDoc(aux1, gLnk("SALOMEDS::Study::StudyInvalidDirectory", "", "exceptionSALOMEDS_1_1Study_1_1StudyInvalidDirectory.html")) - insDoc(aux1, gLnk("SALOMEDS::Study::StudyNameAlreadyUsed", "", "exceptionSALOMEDS_1_1Study_1_1StudyNameAlreadyUsed.html")) - insDoc(aux1, gLnk("SALOMEDS::Study::StudyNameError", "", "exceptionSALOMEDS_1_1Study_1_1StudyNameError.html")) - insDoc(aux1, gLnk("SALOMEDS::Study::StudyObjectAlreadyExists", "", "exceptionSALOMEDS_1_1Study_1_1StudyObjectAlreadyExists.html")) - insDoc(aux1, gLnk("SALOMEDS::StudyBuilder", "", "interfaceSALOMEDS_1_1StudyBuilder.html")) - insDoc(aux1, gLnk("SALOMEDS::StudyBuilder::LockProtection", "", "exceptionSALOMEDS_1_1StudyBuilder_1_1LockProtection.html")) - insDoc(aux1, gLnk("SALOMEDS::StudyManager", "", "interfaceSALOMEDS_1_1StudyManager.html")) - insDoc(aux1, gLnk("SALOMEDS::UseCaseBuilder", "", "interfaceSALOMEDS_1_1UseCaseBuilder.html")) - insDoc(aux1, gLnk("SALOMEDS::UseCaseIterator", "", "interfaceSALOMEDS_1_1UseCaseIterator.html")) -*/ - insDoc(aux1, gLnk("Class Hierarchy", "", "hierarchy.html")) - -/*! insDoc(aux1, gLnk("SALOME_ModuleCatalog::Acomponent", "", "interfaceSALOME__ModuleCatalog_1_1Acomponent.html")) - insDoc(aux1, gLnk("SALOMEDS::AttributeTableOfInteger::IncorrectArgumentLength", "", "exceptionSALOMEDS_1_1AttributeTableOfInteger_1_1IncorrectArgumentLength.html")) - insDoc(aux1, gLnk("SALOMEDS::AttributeTableOfInteger::IncorrectIndex", "", "exceptionSALOMEDS_1_1AttributeTableOfInteger_1_1IncorrectIndex.html")) - insDoc(aux1, gLnk("SALOMEDS::AttributeTableOfReal::IncorrectArgumentLength", "", "exceptionSALOMEDS_1_1AttributeTableOfReal_1_1IncorrectArgumentLength.html")) - insDoc(aux1, gLnk("SALOMEDS::AttributeTableOfReal::IncorrectIndex", "", "exceptionSALOMEDS_1_1AttributeTableOfReal_1_1IncorrectIndex.html")) - insDoc(aux1, gLnk("SALOMEDS::AttributeTableOfString::IncorrectArgumentLength", "", "exceptionSALOMEDS_1_1AttributeTableOfString_1_1IncorrectArgumentLength.html")) - insDoc(aux1, gLnk("SALOMEDS::AttributeTableOfString::IncorrectIndex", "", "exceptionSALOMEDS_1_1AttributeTableOfString_1_1IncorrectIndex.html")) - insDoc(aux1, gLnk("SALOMEDS::Callback", "", "interfaceSALOMEDS_1_1Callback.html")) - insDoc(aux1, gLnk("SALOMEDS::ChildIterator", "", "interfaceSALOMEDS_1_1ChildIterator.html")) - insDoc(aux1, gLnk("SALOMEDS::Color", "", "structSALOMEDS_1_1Color.html")) - aux2 = insFld(aux1, gFld("Engines::Component", "", "interfaceEngines_1_1Component.html")) - insDoc(aux1, gLnk("Engines::Container", "", "interfaceEngines_1_1Container.html")) - insDoc(aux1, gLnk("SALOME_ModuleCatalog::DefinitionInterface", "", "structSALOME__ModuleCatalog_1_1DefinitionInterface.html")) - aux2 = insFld(aux1, gFld("SALOMEDS::Driver", "", "interfaceSALOMEDS_1_1Driver.html")) - insDoc(aux1, gLnk("SALOME::ExceptionStruct", "", "structSALOME_1_1ExceptionStruct.html")) - aux2 = insFld(aux1, gFld("SALOMEDS::GenericAttribute", "", "interfaceSALOMEDS_1_1GenericAttribute.html")) - insDoc(aux2, gLnk("SALOMEDS::AttributeComment", "", "interfaceSALOMEDS_1_1AttributeComment.html")) - insDoc(aux2, gLnk("SALOMEDS::AttributeDrawable", "", "interfaceSALOMEDS_1_1AttributeDrawable.html")) - insDoc(aux2, gLnk("SALOMEDS::AttributeExpandable", "", "interfaceSALOMEDS_1_1AttributeExpandable.html")) - insDoc(aux2, gLnk("SALOMEDS::AttributeInteger", "", "interfaceSALOMEDS_1_1AttributeInteger.html")) - insDoc(aux2, gLnk("SALOMEDS::AttributeIOR", "", "interfaceSALOMEDS_1_1AttributeIOR.html")) - insDoc(aux2, gLnk("SALOMEDS::AttributeLocalID", "", "interfaceSALOMEDS_1_1AttributeLocalID.html")) - insDoc(aux2, gLnk("SALOMEDS::AttributeName", "", "interfaceSALOMEDS_1_1AttributeName.html")) - insDoc(aux2, gLnk("SALOMEDS::AttributeOpened", "", "interfaceSALOMEDS_1_1AttributeOpened.html")) - insDoc(aux2, gLnk("SALOMEDS::AttributePersistentRef", "", "interfaceSALOMEDS_1_1AttributePersistentRef.html")) - insDoc(aux2, gLnk("SALOMEDS::AttributePixMap", "", "interfaceSALOMEDS_1_1AttributePixMap.html")) - insDoc(aux2, gLnk("SALOMEDS::AttributePythonObject", "", "interfaceSALOMEDS_1_1AttributePythonObject.html")) - insDoc(aux2, gLnk("SALOMEDS::AttributeReal", "", "interfaceSALOMEDS_1_1AttributeReal.html")) - insDoc(aux2, gLnk("SALOMEDS::AttributeSelectable", "", "interfaceSALOMEDS_1_1AttributeSelectable.html")) - insDoc(aux2, gLnk("SALOMEDS::AttributeSequenceOfInteger", "", "interfaceSALOMEDS_1_1AttributeSequenceOfInteger.html")) - insDoc(aux2, gLnk("SALOMEDS::AttributeSequenceOfReal", "", "interfaceSALOMEDS_1_1AttributeSequenceOfReal.html")) - insDoc(aux2, gLnk("SALOMEDS::AttributeStudyProperties", "", "interfaceSALOMEDS_1_1AttributeStudyProperties.html")) - insDoc(aux2, gLnk("SALOMEDS::AttributeTableOfInteger", "", "interfaceSALOMEDS_1_1AttributeTableOfInteger.html")) - insDoc(aux2, gLnk("SALOMEDS::AttributeTableOfReal", "", "interfaceSALOMEDS_1_1AttributeTableOfReal.html")) - insDoc(aux2, gLnk("SALOMEDS::AttributeTableOfString", "", "interfaceSALOMEDS_1_1AttributeTableOfString.html")) - insDoc(aux2, gLnk("SALOMEDS::AttributeTarget", "", "interfaceSALOMEDS_1_1AttributeTarget.html")) - insDoc(aux2, gLnk("SALOMEDS::AttributeTextColor", "", "interfaceSALOMEDS_1_1AttributeTextColor.html")) - insDoc(aux2, gLnk("SALOMEDS::AttributeTextHighlightColor", "", "interfaceSALOMEDS_1_1AttributeTextHighlightColor.html")) - insDoc(aux2, gLnk("SALOMEDS::AttributeTreeNode", "", "interfaceSALOMEDS_1_1AttributeTreeNode.html")) - insDoc(aux2, gLnk("SALOMEDS::AttributeUserID", "", "interfaceSALOMEDS_1_1AttributeUserID.html")) - insDoc(aux1, gLnk("SALOMEDS::GenericAttribute::LockProtection", "", "exceptionSALOMEDS_1_1GenericAttribute_1_1LockProtection.html")) - insDoc(aux1, gLnk("SALOME_ModuleCatalog::IAPP_Affich", "", "structSALOME__ModuleCatalog_1_1IAPP__Affich.html")) - insDoc(aux1, gLnk("SALOME_ModuleCatalog::ModuleCatalog", "", "interfaceSALOME__ModuleCatalog_1_1ModuleCatalog.html")) - insDoc(aux1, gLnk("SALOME_ModuleCatalog::NotFound", "", "exceptionSALOME__ModuleCatalog_1_1NotFound.html")) - insDoc(aux1, gLnk("SALOMEDS::NotImplemented", "", "exceptionSALOMEDS_1_1NotImplemented.html")) - insDoc(aux1, gLnk("SALOME::SALOME_Exception", "", "exceptionSALOME_1_1SALOME__Exception.html")) - insDoc(aux1, gLnk("SALOMEDS::SComponentIterator", "", "interfaceSALOMEDS_1_1SComponentIterator.html")) - insDoc(aux1, gLnk("SALOME_ModuleCatalog::Service", "", "structSALOME__ModuleCatalog_1_1Service.html")) - insDoc(aux1, gLnk("SALOME_ModuleCatalog::ServicesParameter", "", "structSALOME__ModuleCatalog_1_1ServicesParameter.html")) - insDoc(aux1, gLnk("SALOME::Session", "", "interfaceSALOME_1_1Session.html")) - insDoc(aux1, gLnk("SALOME::Session::GUIActive", "", "exceptionSALOME_1_1Session_1_1GUIActive.html")) - insDoc(aux1, gLnk("SALOME::Session::RunningStudies", "", "exceptionSALOME_1_1Session_1_1RunningStudies.html")) - aux2 = insFld(aux1, gFld("SALOMEDS::SObject", "", "interfaceSALOMEDS_1_1SObject.html")) - insDoc(aux2, gLnk("SALOMEDS::SComponent", "", "interfaceSALOMEDS_1_1SComponent.html")) - insDoc(aux1, gLnk("SALOME::StatSession", "", "structSALOME_1_1StatSession.html")) - insDoc(aux1, gLnk("SALOMEDS::Study", "", "interfaceSALOMEDS_1_1Study.html")) - insDoc(aux1, gLnk("SALOMEDS::Study::StudyCommentError", "", "exceptionSALOMEDS_1_1Study_1_1StudyCommentError.html")) - insDoc(aux1, gLnk("SALOMEDS::Study::StudyInvalidComponent", "", "exceptionSALOMEDS_1_1Study_1_1StudyInvalidComponent.html")) - insDoc(aux1, gLnk("SALOMEDS::Study::StudyInvalidContext", "", "exceptionSALOMEDS_1_1Study_1_1StudyInvalidContext.html")) - insDoc(aux1, gLnk("SALOMEDS::Study::StudyInvalidDirectory", "", "exceptionSALOMEDS_1_1Study_1_1StudyInvalidDirectory.html")) - insDoc(aux1, gLnk("SALOMEDS::Study::StudyNameAlreadyUsed", "", "exceptionSALOMEDS_1_1Study_1_1StudyNameAlreadyUsed.html")) - insDoc(aux1, gLnk("SALOMEDS::Study::StudyNameError", "", "exceptionSALOMEDS_1_1Study_1_1StudyNameError.html")) - insDoc(aux1, gLnk("SALOMEDS::Study::StudyObjectAlreadyExists", "", "exceptionSALOMEDS_1_1Study_1_1StudyObjectAlreadyExists.html")) - insDoc(aux1, gLnk("SALOMEDS::StudyBuilder", "", "interfaceSALOMEDS_1_1StudyBuilder.html")) - insDoc(aux1, gLnk("SALOMEDS::StudyBuilder::LockProtection", "", "exceptionSALOMEDS_1_1StudyBuilder_1_1LockProtection.html")) - insDoc(aux1, gLnk("SALOMEDS::StudyManager", "", "interfaceSALOMEDS_1_1StudyManager.html")) - insDoc(aux1, gLnk("SALOMEDS::UseCaseBuilder", "", "interfaceSALOMEDS_1_1UseCaseBuilder.html")) - insDoc(aux1, gLnk("SALOMEDS::UseCaseIterator", "", "interfaceSALOMEDS_1_1UseCaseIterator.html")) -*/ - insDoc(aux1, gLnk("Class methods list", "", "functions.html")) -/*! -aux1 = insFld(foldersTree, gFld("Namespace List", "", "namespaces.html")) - insDoc(aux1, gLnk("Engines", "", "namespaceEngines.html")) - insDoc(aux1, gLnk("SALOME", "", "namespaceSALOME.html")) - insDoc(aux1, gLnk("SALOME_ModuleCatalog", "", "namespaceSALOME__ModuleCatalog.html")) - insDoc(aux1, gLnk("SALOMEDS", "", "namespaceSALOMEDS.html")) -*/ - insDoc(aux1, gLnk("Namespace Members", "", "namespacemembers.html")) - - insDoc(aux1, gLnk("File List", "", "files.html")) - -/*! - insDoc(aux1, gLnk("SALOME_Component.idl", "", "SALOME__Component_8idl.html")) - insDoc(aux1, gLnk("SALOME_Exception.idl", "", "SALOME__Exception_8idl.html")) - insDoc(aux1, gLnk("SALOME_ModuleCatalog.idl", "", "SALOME__ModuleCatalog_8idl.html")) - insDoc(aux1, gLnk("SALOME_Session.idl", "", "SALOME__Session_8idl.html")) - insDoc(aux1, gLnk("SALOMEDS.idl", "", "SALOMEDS_8idl.html")) - insDoc(aux1, gLnk("SALOMEDS_Attributes.idl", "", "SALOMEDS__Attributes_8idl.html")) -*/ - -aux1 = insFld(foldersTree, gFld("IDL/Python mapping", "")) - insDoc(aux1, gLnk("Mapping of IDL definitions to Python language", "", "mapping.html")) - insDoc(aux1, gLnk("Mapping of SALOME IDL definitions to Python language", "", "page2.html")) - -/*! insDoc(foldersTree, gLnk("Graphical Class Hierarchy", "", "inherits.html")) -*/ -aux1 = insFld(foldersTree, gFld("Naming service", "")) - insDoc(aux1, gLnk("Naming Service Description ", "", "overview_Naming.html")) - insDoc(aux1, gLnk("Salome_NamingService Class Reference", "", "classSALOME__NamingService.html")) - insDoc(aux1, gLnk("Examples", "", "examples_Naming.html")) -aux1 = insFld(foldersTree, gFld("Life Cycle", "")) - insDoc(aux1, gLnk("Life Cycle Service Description ", "", "overview_Life_Cycle.html")) - insDoc(aux1, gLnk("Salome_LifeCycleCorba Class Reference", "", "classSALOME__LifeCycleCORBA.html")) - insDoc(aux1, gLnk("Examples", "", "examples_Life_cycle.html")) - - diff --git a/doc/html/INPUT/sources/static/treeview.js b/doc/html/INPUT/sources/static/treeview.js deleted file mode 100644 index 55eb43d07..000000000 --- a/doc/html/INPUT/sources/static/treeview.js +++ /dev/null @@ -1,505 +0,0 @@ -//**************************************************************** -// You are free to copy the "Folder-Tree" script as long as you -// keep this copyright notice: -// Script found in: http://www.geocities.com/Paris/LeftBank/2178/ -// Author: Marcelino Alves Martins (martins@hks.com) December '97. -//**************************************************************** - -//Log of changes: -// 17 Feb 98 - Fix initialization flashing problem with Netscape -// -// 27 Jan 98 - Root folder starts open; support for USETEXTLINKS; -// make the ftien4 a js file -// -// DvH: Dec 2000 - Made some minor changes to support external -// references - -// Definition of class Folder -// ***************************************************************** - -function Folder(folderDescription, tagName, hreference) //constructor -{ - //constant data - this.desc = folderDescription - this.tagName = tagName - this.hreference = hreference - this.id = -1 - this.navObj = 0 - this.iconImg = 0 - this.nodeImg = 0 - this.isLastNode = 0 - - //dynamic data - this.isOpen = true - this.iconSrc = "ftv2folderopen.png" - this.children = new Array - this.nChildren = 0 - - //methods - this.initialize = initializeFolder - this.setState = setStateFolder - this.addChild = addChild - this.createIndex = createEntryIndex - this.hide = hideFolder - this.display = display - this.renderOb = drawFolder - this.totalHeight = totalHeight - this.subEntries = folderSubEntries - this.outputLink = outputFolderLink -} - -function setStateFolder(isOpen) -{ - var subEntries - var totalHeight - var fIt = 0 - var i=0 - - if (isOpen == this.isOpen) - return - - if (browserVersion == 2) - { - totalHeight = 0 - for (i=0; i < this.nChildren; i++) - totalHeight = totalHeight + this.children[i].navObj.clip.height - subEntries = this.subEntries() - if (this.isOpen) - totalHeight = 0 - totalHeight - for (fIt = this.id + subEntries + 1; fIt < nEntries; fIt++) - indexOfEntries[fIt].navObj.moveBy(0, totalHeight) - } - this.isOpen = isOpen - propagateChangesInState(this) -} - -function propagateChangesInState(folder) -{ - var i=0 - - if (folder.isOpen) - { - if (folder.nodeImg) - if (folder.isLastNode) - folder.nodeImg.src = "ftv2mlastnode.png" - else - folder.nodeImg.src = "ftv2mnode.png" - folder.iconImg.src = "ftv2folderopen.png" - for (i=0; i 0) - auxEv = "" - else - auxEv = "" - - if (level>0) - if (lastNode) //the last 'brother' in the children array - { - this.renderOb(leftSide + auxEv + "") -// leftSide = leftSide + "" - this.isLastNode = 1 - } - else - { - this.renderOb(leftSide + auxEv + "") - leftSide = leftSide + "" - this.isLastNode = 0 - } - else - this.renderOb("") - - if (nc > 0) - { - level = level + 1 - for (i=0 ; i < this.nChildren; i++) - { - if (i == this.nChildren-1) - this.children[i].initialize(level, 1, leftSide) - else - this.children[i].initialize(level, 0, leftSide) - } - } -} - -function drawFolder(leftSide) -{ - if (browserVersion == 2) { - if (!doc.yPos) - doc.yPos=8 - doc.write("") - } - if (browserVersion == 3) - { - doc.write("
") - } - - doc.write("\n") - doc.write("\n\n") - doc.write("\n
") - doc.write(leftSide) - this.outputLink() - doc.write("") - doc.write("") - if (USETEXTLINKS) - { - this.outputLink() - doc.write(this.desc + "") - } - else - doc.write(this.desc) - -/*! - if (this.tagName!="") - { - doc.write(" [external]") - } -*/ - doc.write("
\n") - - if (browserVersion == 2) { - doc.write("") - } - if (browserVersion == 3) { - doc.write("
") - } - - if (browserVersion == 1) { - this.navObj = doc.all["folder"+this.id] - this.iconImg = doc.all["folderIcon"+this.id] - this.nodeImg = doc.all["nodeIcon"+this.id] - } else if (browserVersion == 2) { - this.navObj = doc.layers["folder"+this.id] - this.iconImg = this.navObj.document.images["folderIcon"+this.id] - this.nodeImg = this.navObj.document.images["nodeIcon"+this.id] - doc.yPos=doc.yPos+this.navObj.clip.height - } else if (browserVersion == 3) { - this.navObj = doc.getElementById("folder"+this.id) - this.iconImg = doc.images.namedItem("folderIcon"+this.id) - this.nodeImg = doc.images.namedItem("nodeIcon"+this.id) - } -} - -function outputFolderLink() -{ - if (this.hreference) - { - doc.write(" 0) - doc.write("onClick='javascript:clickOnFolder("+this.id+")'") - doc.write(">") - } - else - doc.write("") -} - -function addChild(childNode) -{ - this.children[this.nChildren] = childNode - this.nChildren++ - return childNode -} - -function folderSubEntries() -{ - var i = 0 - var se = this.nChildren - - for (i=0; i < this.nChildren; i++){ - if (this.children[i].children) //is a folder - se = se + this.children[i].subEntries() - } - - return se -} - - -// Definition of class Item (a document or link inside a Folder) -// ************************************************************* - -function Item(itemDescription, tagName, itemLink) // Constructor -{ - // constant data - this.desc = itemDescription - this.tagName = tagName - this.link = itemLink - this.id = -1 //initialized in initalize() - this.navObj = 0 //initialized in render() - this.iconImg = 0 //initialized in render() - this.iconSrc = "ftv2doc.png" - - // methods - this.initialize = initializeItem - this.createIndex = createEntryIndex - this.hide = hideItem - this.display = display - this.renderOb = drawItem - this.totalHeight = totalHeight -} - -function hideItem() -{ - if (browserVersion == 1 || browserVersion == 3) { - if (this.navObj.style.display == "none") - return - this.navObj.style.display = "none" - } else { - if (this.navObj.visibility == "hidden") - return - this.navObj.visibility = "hidden" - } -} - -function initializeItem(level, lastNode, leftSide) -{ - this.createIndex() - - if (level>0) - if (lastNode) //the last 'brother' in the children array - { - this.renderOb(leftSide + "") - leftSide = leftSide + "" - } - else - { - this.renderOb(leftSide + "") - leftSide = leftSide + "" - } - else - this.renderOb("") -} - -function drawItem(leftSide) -{ - if (browserVersion == 2) - doc.write("") - if (browserVersion == 3) - doc.write("
") - - doc.write("\n\n") - doc.write("\n
") - doc.write(leftSide) - if (this.link!="") - { - doc.write("") - } - doc.write("") - if (this.link!="") - { - doc.write("") - } - doc.write("") - if (USETEXTLINKS && this.link!="") - doc.write("" + this.desc + "") - else - doc.write(this.desc) -/*! - if (this.tagName!="") - { - doc.write(" [external]"); - } -*/ - doc.write("\n
\n") - - if (browserVersion == 2) - doc.write("") - if (browserVersion == 3) - doc.write("
") - - if (browserVersion == 1) { - this.navObj = doc.all["item"+this.id] - this.iconImg = doc.all["itemIcon"+this.id] - } else if (browserVersion == 2) { - this.navObj = doc.layers["item"+this.id] - this.iconImg = this.navObj.document.images["itemIcon"+this.id] - doc.yPos=doc.yPos+this.navObj.clip.height - } else if (browserVersion == 3) { - this.navObj = doc.getElementById("item"+this.id) - this.iconImg = doc.images.namedItem("itemIcon"+this.id) - } -} - - -// Methods common to both objects (pseudo-inheritance) -// ******************************************************** - -function display() -{ - if (browserVersion == 1 || browserVersion == 3) - this.navObj.style.display = "block" - else - this.navObj.visibility = "show" -} - -function createEntryIndex() -{ - this.id = nEntries - indexOfEntries[nEntries] = this - nEntries++ -} - -// total height of subEntries open -function totalHeight() //used with browserVersion == 2 -{ - var h = this.navObj.clip.height - var i = 0 - - if (this.isOpen) //is a folder and _is_ open - for (i=0 ; i < this.nChildren; i++) - h = h + this.children[i].totalHeight() - - return h -} - - -// Events -// ********************************************************* - -function clickOnFolder(folderId) -{ - var clicked = indexOfEntries[folderId] - - if (!clicked.isOpen) - clickOnNode(folderId) - - return - - if (clicked.isSelected) - return -} - -function clickOnNode(folderId) -{ - var clickedFolder = 0 - var state = 0 - - clickedFolder = indexOfEntries[folderId] - state = clickedFolder.isOpen - - clickedFolder.setState(!state) //open<->close -} - -function initializeDocument() -{ - doc = document; - if (doc.all) - browserVersion = 1 //IE4 - else - if (doc.layers) - browserVersion = 2 //NS4 - else if(navigator.userAgent.toLowerCase().indexOf('gecko') != -1) - browserVersion = 3 //mozilla - else - browserVersion = 0 //other - - foldersTree.initialize(0, 1, "") - foldersTree.display() - - if (browserVersion > 0) - { - if(browserVersion != 3) - doc.write(" ") - - // close the whole tree - clickOnNode(0) - // open the root folder - clickOnNode(0) - } -} - -// Auxiliary Functions for Folder-Treee backward compatibility -// ********************************************************* - -function gFld(description, tagName, hreference) -{ - folder = new Folder(description, tagName, hreference) - return folder -} - -function gLnk(description, tagName, linkData) -{ - fullLink = "" - - if (linkData!="") - { - fullLink = "'"+linkData+"' target=\"basefrm\"" - } - - linkItem = new Item(description, tagName, fullLink) - return linkItem -} - -function insFld(parentFolder, childFolder) -{ - return parentFolder.addChild(childFolder) -} - -function insDoc(parentFolder, document) -{ - parentFolder.addChild(document) -} - -// Global variables -// **************** - -USETEXTLINKS = 1 -indexOfEntries = new Array -nEntries = 0 -doc = document -browserVersion = 0 -selectedFolder=0 diff --git a/doc/html/Makefile.in b/doc/html/Makefile.in deleted file mode 100644 index 7b070ace2..000000000 --- a/doc/html/Makefile.in +++ /dev/null @@ -1,42 +0,0 @@ -# Copyright (C) 2003 CEA/DEN, EDF R&D -# -# -# -# File : Makefile.in -# Author : Vasily Rusyaev (Open Cascade NN) -# Module : doc -# $Header: - -top_srcdir=@top_srcdir@ -top_builddir=../.. -root_srcdir=@ROOT_SRCDIR@ -srcdir=@srcdir@ -VPATH=.:@srcdir@ -doxygen=@DOXYGEN@ - -@COMMENCE@ - -doc: - cp -fr $(srcdir)/INPUT ./; \ - cd INPUT; \ - sed 's|../../../share/salome|$(root_srcdir)|' ./doxyfile > ./doxyfile1; \ - mv -f doxyfile1 doxyfile; \ - $(doxygen) ./doxyfile; \ - cd ..; \ - cp -fr $(srcdir)/INPUT/sources/static/*.* ./html/ - cp -fr $(srcdir)/INPUT/sources/ html/ - cp -fr $(srcdir)/INPUT/exemple/ html/ - cp -fr $(srcdir)/INPUT/HTML/ html/ - -clean: - rm -rf html - -distclean: clean - rm -rf INPUT - -install: - $(INSTALL) -d $(docdir); \ - cp -rf html $(docdir) - -uninstall: - rm -rf $(docdir)/html