diff -crN oommf-1.1a2/CHANGES oommf/CHANGES *** oommf-1.1a2/CHANGES Wed Apr 5 00:22:48 2000 --- oommf/CHANGES Tue Apr 4 23:20:48 2000 *************** *** 1,8 **** ========== OOMMF 1.1a2 released 1999/10/29 ========== Significant changes since 1.1a1: * Expanded Tcl/Tk support ! - 8.2.0, 8.2.1 - Some fixes for 7.5 support * Expanded platform support --- 1,79 ---- + ========== OOMMF 1.1b0 released 2000/04/04 ========== + Significant changes since 1.1a2: + + * Expanded Tcl/Tk support + - 8.3.0 + - [fcopy] emulation in Tcl 7.x + + * New applications: + - mag2hfield + + * Bug fixes + - mmLaunch - launches mmarchive with -tk 0 + - apps failed when launched like sdf/sdf/../foo.tcl + - Oc_DirectPathname now handles strange case when + [cd] into a directory succeeds, but [pwd] fails. + - mmSolve2D: fixed logging of bad MIF input + - mmHelp: bad line breaking near empty anchors + + * New features + - mmGraph: displays two vertical axes + - mmDisp: Data scale slider + - omfsh: includes Nb extension + - mmProbEd: default demagnetization kernel is now ConstMag + - mmProbEd: oval part shape + - mmSolve: raises error when cell size does not divide part size + - pimake: user documentation; default target 'help' + - host and account servers: die when app servers die. + - some sanity checks/warnings in oommf.tcl +platform + - shells given no scripts automatically display console + + * Incompatibilities with prior releases + - Many command line options renamed for standardization. + + * General cleanup/improvements + - All apps are now Tcl scripts evaluated by shells + - All apps use common facility for command line processing + - All apps now register their +fg/+bg and -tk preferences + - Renamed .omfExport.tcl --> omfExport.tcl + + * New Oc extension features/incompatibilities + - Oc_Config compiletime_* constants + - New C++ APIs: Oc_Atan2() + - Removed C++ APIs: Oc_AppendUsageInfo(), Oc_GetUsageInfo() + - Removed Tcl commands: Oc_AppendUsageInfo, Oc_GetUsageInfo + - New procs/methods: [$Oc_Config Features] + + * New Nb extension features + - New C++ APIs: Nb_RatApprox() + - New Tcl commands: [Nb_Gcd] [Nb_RatApprox] + + * New Ow extension features + - New Tcl commands: [Ow_IsPosFloat] + - New procs/methods: + [$Ow_EntryScale AdjustRange] + [$Ow_GraphWin SetMargins] + - New configuration options + [$Ow_EntryBox Configure -hardmax -hardmin] + [$Ow_EntryScale Configure -scalemin -logscale -rangemin + -rangemax -autorange -hardmax -hardmin -displayfmt + -marklist -markcolor -markwidth] + [$Ow_GraphWin Configure -y2label] + - Dialogs: Cancel buttons --> Close buttons + - GraphWin: Second vertical axis + + + * New Net extension features + - New procs/methods: [$Net_Link Pause] [$Net_Link Resume] + + * New Vf extension features + - New C++ APIs: Vf_Mesh::GetMaxMag() + ========== OOMMF 1.1a2 released 1999/10/29 ========== Significant changes since 1.1a1: * Expanded Tcl/Tk support ! - 8.2.0 through 8.2.3 - Some fixes for 7.5 support * Expanded platform support *************** *** 45,50 **** --- 116,123 ---- - [auto_execok] returns a list. Corrected code which assumed a string. - Revised search path for *Config.sh - Lots of "lint" improvements -- mostly bracing of [expr] + - Oc_DirectPathname now handles strange case when + [cd] into a directory succeeds, but [pwd] fails. * General cleanup/improvements - User manual in PDF format diff -crN oommf-1.1a2/Chages.txt oommf/Chages.txt *** oommf-1.1a2/Chages.txt Wed Apr 5 00:24:01 2000 --- oommf/Chages.txt Wed Dec 31 19:00:00 1969 *************** *** 1,257 **** - ========== OOMMF 1.1a2 released 1999/10/29 ========== - Significant changes since 1.1a1: - - * Expanded Tcl/Tk support - - 8.2.0, 8.2.1 - - Some fixes for 7.5 support - - * Expanded platform support - - Better checking for cygwin platform -- $env(OSTYPE) - - Support for Compaq/Digital C++ compiler, cxx - - Support for HP's aCC compiler - - Support -n32 libraries on SGI by default - agrees with Tcl/Tk 8.0.3 and later. - - optional optimization flags in config/cache/*.tcl comments - - GNU compiler g++ selected instead of gcc or egcs - - * New features - - avf2ppm: supports writing of Microsoft BMP files - - mmGraph: New Option: "Smooth" - crude curve fitting to data - - mmGraph: New Option: "Break" - add break in curve (lift pencil) - - mmSolve2D: "Loading from..." indicator in interface - - mmSolve2D: Zeeman Energy offset changed - - zero energy when M and H are orthogonal - - Open and Save File dialogs check their file types - - support for asynchronous connection of client sockets - - support for specifying output formats of "binary 8", "binary 4", - and "text" - - * Bug fixes - - pimake: find extension header files relative to target, not pimake - - pimake: support tcl.h and tk.h in different directories - - mmHelp: [string match " " "\n"] instead of "==" to fix infinite - loop on Tru64 unix - - mmGraph: Proper handling of escaped newlines in .odt files - - mmGraph: Proper handling of too long and too short rows in .odt files - - Release number taken from Oc extension, not hard coded - - mmSolve2D: LoadProblem bug was loading from all MIF input source - which had ever been selected. - - mmSolve2D: Fixed coordinate errors in Ribbon Field Type - - Launching of apps with embedded spaces in their path names - did not work - - Fixed timeout expiration event error in account server - - Events generated from within Oc_Class constructors were not handled - - Use higher precision computing orthogonal anisotropy axes. - - [auto_execok] returns a list. Corrected code which assumed a string. - - Revised search path for *Config.sh - - Lots of "lint" improvements -- mostly bracing of [expr] - - * General cleanup/improvements - - User manual in PDF format - - BIBTeX used to generate references in user manual - - Index added to user manual - - Many tweaks for improved numerical accuracy - - Better values for example materials - - Cleaner network protocol between mmLaunch and account server - - Distributed template repositories; no "build" directory - - support for config/cache/local files - - Warning about bad OOMMF_ROOT value - - Complete elimination of the old "em" extension - - eliminated extern "C" static functions for compiler portability - - ========== OOMMF 1.1a1 released 1999/08/10 ========== - Significant changes since 1.1a0: - - * Expanded Tcl/Tk support - - 8.1.0 - - 8.1.1 - - * New Platforms supported - - more centralized support for OOMMF configuration on Windows - -- less burden on the config/cache/win*.tcl files - - improved configuration for -32, -n32, -o32 builds on IRIX systems - - * New mmSolve/mmSolve2D features - - Solver keeps a log while it solves - - mmSolve2D supports a -restart option which will continue - the solving of the problem from the last saved state in - the log file instead of from the beginning. - - * Rewrite of mmArchive - - Doesn't require a window system/display - - can keep running as long as mmSolve2D - - Accepts and archives DataTable data - - Can be launched from the command line - - * New mmLaunch features - - User interface windows for other apps - - Inputs and Outputs displayed only if relevant - - Status line - - * New Oc extension features - - New Tcl commands - - Oc_IsClass - - Oc_SetPanicHeader - - New Oc_Class procs/methods - - Oc_Config TkVersion - - Oc_Config Tclsh - - Oc_Config Wish - - Oc_Config Summary - - * New environment variables - - OOMMF_TCL_CONFIG, OOMMF_TK_CONFIG, OOMMF_TCLSH, OOMMF_WISH - - * General cleanup/improvements - - updated documentation - - fixed syntactic sugar in "Define" procs - - more informative platform configuration checks - - ========== OOMMF 1.1a0 released 1999/04/28 ========== - Significant changes since 1.0b1: - - * New apps - - avftoppm -- generate PPM files representing vector fields - - mmDispSh -- shell with mmDisp support commands. - - filtersh -- basic omfsh-like shell which supports filtering - through standard channels on MS Windows - - * Renamed and now bootstrappable apps: - - avftoave --> avf2ave - - avftoovf --> avf2ovf - - avftovio --> avf2vio - - gif2ppm --> any2ppm - - * New extensions - - If (Image formats) -- supports use of Windows bitmaps as mask files - - * New oommf (bootstrap) features - - Revised command line option parsing - run 'oommf.tcl -help' for a usage summary - - New -command option - - Stdout and stderr available immediately even when blocking - - * New mmDataTable features - - more display options - - * New mmDisp features - - Colorwheel-type display - - New color maps - - * New mmProbEd features - - ConstMag demag routine - - Anisotropy axes initializer - - More initial mag states - - user comments, min and max time steps - - * New mmSolve features - - Log files added - - ConstMag demagnetization kernel - - Support for generalized control points - - stop on iteration count, or elapsed simulation time, - as well as maximum torque below a threshold. - - Removed exchange and anisotropy fields from zero-moment cells - - * New mmSolve2D features - - event replaced by event - - * New Nb extension features/incompatibilities - - New C++ APIs - - Nb_DString::AppendArgs() - - Nb_List::GetFirst(), Nb_List::GetNext() - - Removed C++ APIs - - Omf_SetPatchLevel, Omf_ComparePatchLevel - - use Tcl_Pkg* routines - - CullZombies - - use Tcl_ReapDetachedProcs - - Removed macros - - TCLCMD -- use Tcl's Tcl_CmdProc instead - - * New Oc extension features/incompatibilities - - New C++ APIs - - Oc_InitScript() - - C API to find and source initializing Tcl script - - Oc_AppendUsageInfo(), Oc_GetUsageInfo() - - support standard processing of argv, etc. - - Changed C++ APIs - - Oc_Main() -> Oc_AppMain() rename - - Oc_SetUseTkFlag() -> Oc_SetDefaultTkFlag() - - also -tk/-notk options --> -tk 0/1 - and handled by Oc. - - New macros - - OC_MAKEVERSION - - New Tcl commands - - Oc_AppendUsageInfo, Oc_GetUsageInfo - - support standard processing of argv, etc. - - Oc_UniqueFilename - - Removed Oc_Classes - - em_eventHandler - use Oc_EventHandler - - New Oc_Class procs/methods - - Oc_Application CommandLine - - * Relocation of files, restructuring, etc. - - Promotion of mmarchive from "net thread" to app - - bootstrap program available in root directory - - mmDisp is now a script evaluated by shell program, mmdispsh - - use of version.h files - - * General cleanup/improvements - - Improved documentation - - More informative title bars and error messages - - * Expanded Tcl/Tk support - - 8.0.4 - - 8.0.5 - - Tk4.x - Forward compatibility support for the [grid], - [destroy], and [menu] commands. - - * New Platforms supported - - Cygwin environment on Windows - - * New mmDisp features - - Divergence display - - * New mmHelp features - - Can load Binary files - - Handles block-level IMG tag according to HTML 3.2 spec - - Rudimentary table support (alignment) - - * New Oc extension features - - New macro OC_STRINGIFY - - New Tcl commands - - Oc_CheckTclIndex - - New Oc_Class procs/methods - - Oc_Main GetInstanceName - - * Bug fixes - - DString memory leaks - - Runtime checks for tclIndex files - - Improved exit handling (mmGraph) -- window existence checked - - Clone protocols dependence on parents enforced - - Oc_Class option 'enforcePrivate' is now honored. - - * General cleanup/improvements - - removed deprecated direct accesses to interp->result - - Improved error messages and stack traces. - - revised LICENSE language - - Account server/.omfexport.tcl - - now use Oc_Application directly, no spawn of bootstrap - - ========== OOMMF 1.0b1 released 1998/11/05 ========== - Significant changes since 1.0b0: - - * Support for Tcl/Tk 8.0.3 on Windows platforms. A workaround for - the previous trouble with socket responsiveness was found. - - * Support for use of the .svf file format to specify an initial - magnetization state in a problem description. - - * Fixed bug in mmGraph which prevented it from exiting and deregistering - when exited by using the window manager to destroy its window. - - * Enhanced Tcl/Tk version checking in configuration/build steps. - - * Improvements to User Manual. - - * Clarified several error messages. - - ========== OOMMF 1.0b0 released 1998/10/20 ========== --- 0 ---- diff -crN oommf-1.1a2/Changes.txt oommf/Changes.txt *** oommf-1.1a2/Changes.txt Wed Dec 31 19:00:00 1969 --- oommf/Changes.txt Tue Apr 4 23:21:25 2000 *************** *** 0 **** --- 1,330 ---- + ========== OOMMF 1.1b0 released 2000/04/04 ========== + Significant changes since 1.1a2: + + * Expanded Tcl/Tk support + - 8.3.0 + - [fcopy] emulation in Tcl 7.x + + * New applications: + - mag2hfield + + * Bug fixes + - mmLaunch - launches mmarchive with -tk 0 + - apps failed when launched like sdf/sdf/../foo.tcl + - Oc_DirectPathname now handles strange case when + [cd] into a directory succeeds, but [pwd] fails. + - mmSolve2D: fixed logging of bad MIF input + - mmHelp: bad line breaking near empty anchors + + * New features + - mmGraph: displays two vertical axes + - mmDisp: Data scale slider + - omfsh: includes Nb extension + - mmProbEd: default demagnetization kernel is now ConstMag + - mmProbEd: oval part shape + - mmSolve: raises error when cell size does not divide part size + - pimake: user documentation; default target 'help' + - host and account servers: die when app servers die. + - some sanity checks/warnings in oommf.tcl +platform + - shells given no scripts automatically display console + + * Incompatibilities with prior releases + - Many command line options renamed for standardization. + + * General cleanup/improvements + - All apps are now Tcl scripts evaluated by shells + - All apps use common facility for command line processing + - All apps now register their +fg/+bg and -tk preferences + - Renamed .omfExport.tcl --> omfExport.tcl + + * New Oc extension features/incompatibilities + - Oc_Config compiletime_* constants + - New C++ APIs: Oc_Atan2() + - Removed C++ APIs: Oc_AppendUsageInfo(), Oc_GetUsageInfo() + - Removed Tcl commands: Oc_AppendUsageInfo, Oc_GetUsageInfo + - New procs/methods: [$Oc_Config Features] + + * New Nb extension features + - New C++ APIs: Nb_RatApprox() + - New Tcl commands: [Nb_Gcd] [Nb_RatApprox] + + * New Ow extension features + - New Tcl commands: [Ow_IsPosFloat] + - New procs/methods: + [$Ow_EntryScale AdjustRange] + [$Ow_GraphWin SetMargins] + - New configuration options + [$Ow_EntryBox Configure -hardmax -hardmin] + [$Ow_EntryScale Configure -scalemin -logscale -rangemin + -rangemax -autorange -hardmax -hardmin -displayfmt + -marklist -markcolor -markwidth] + [$Ow_GraphWin Configure -y2label] + - Dialogs: Cancel buttons --> Close buttons + - GraphWin: Second vertical axis + + + * New Net extension features + - New procs/methods: [$Net_Link Pause] [$Net_Link Resume] + + * New Vf extension features + - New C++ APIs: Vf_Mesh::GetMaxMag() + + ========== OOMMF 1.1a2 released 1999/10/29 ========== + Significant changes since 1.1a1: + + * Expanded Tcl/Tk support + - 8.2.0 through 8.2.3 + - Some fixes for 7.5 support + + * Expanded platform support + - Better checking for cygwin platform -- $env(OSTYPE) + - Support for Compaq/Digital C++ compiler, cxx + - Support for HP's aCC compiler + - Support -n32 libraries on SGI by default + agrees with Tcl/Tk 8.0.3 and later. + - optional optimization flags in config/cache/*.tcl comments + - GNU compiler g++ selected instead of gcc or egcs + + * New features + - avf2ppm: supports writing of Microsoft BMP files + - mmGraph: New Option: "Smooth" - crude curve fitting to data + - mmGraph: New Option: "Break" - add break in curve (lift pencil) + - mmSolve2D: "Loading from..." indicator in interface + - mmSolve2D: Zeeman Energy offset changed + - zero energy when M and H are orthogonal + - Open and Save File dialogs check their file types + - support for asynchronous connection of client sockets + - support for specifying output formats of "binary 8", "binary 4", + and "text" + + * Bug fixes + - pimake: find extension header files relative to target, not pimake + - pimake: support tcl.h and tk.h in different directories + - mmHelp: [string match " " "\n"] instead of "==" to fix infinite + loop on Tru64 unix + - mmGraph: Proper handling of escaped newlines in .odt files + - mmGraph: Proper handling of too long and too short rows in .odt files + - Release number taken from Oc extension, not hard coded + - mmSolve2D: LoadProblem bug was loading from all MIF input source + which had ever been selected. + - mmSolve2D: Fixed coordinate errors in Ribbon Field Type + - Launching of apps with embedded spaces in their path names + did not work + - Fixed timeout expiration event error in account server + - Events generated from within Oc_Class constructors were not handled + - Use higher precision computing orthogonal anisotropy axes. + - [auto_execok] returns a list. Corrected code which assumed a string. + - Revised search path for *Config.sh + - Lots of "lint" improvements -- mostly bracing of [expr] + - Oc_DirectPathname now handles strange case when + [cd] into a directory succeeds, but [pwd] fails. + + * General cleanup/improvements + - User manual in PDF format + - BIBTeX used to generate references in user manual + - Index added to user manual + - Many tweaks for improved numerical accuracy + - Better values for example materials + - Cleaner network protocol between mmLaunch and account server + - Distributed template repositories; no "build" directory + - support for config/cache/local files + - Warning about bad OOMMF_ROOT value + - Complete elimination of the old "em" extension + - eliminated extern "C" static functions for compiler portability + + ========== OOMMF 1.1a1 released 1999/08/10 ========== + Significant changes since 1.1a0: + + * Expanded Tcl/Tk support + - 8.1.0 + - 8.1.1 + + * New Platforms supported + - more centralized support for OOMMF configuration on Windows + -- less burden on the config/cache/win*.tcl files + - improved configuration for -32, -n32, -o32 builds on IRIX systems + + * New mmSolve/mmSolve2D features + - Solver keeps a log while it solves + - mmSolve2D supports a -restart option which will continue + the solving of the problem from the last saved state in + the log file instead of from the beginning. + + * Rewrite of mmArchive + - Doesn't require a window system/display + - can keep running as long as mmSolve2D + - Accepts and archives DataTable data + - Can be launched from the command line + + * New mmLaunch features + - User interface windows for other apps + - Inputs and Outputs displayed only if relevant + - Status line + + * New Oc extension features + - New Tcl commands + - Oc_IsClass + - Oc_SetPanicHeader + - New Oc_Class procs/methods + - Oc_Config TkVersion + - Oc_Config Tclsh + - Oc_Config Wish + - Oc_Config Summary + + * New environment variables + - OOMMF_TCL_CONFIG, OOMMF_TK_CONFIG, OOMMF_TCLSH, OOMMF_WISH + + * General cleanup/improvements + - updated documentation + - fixed syntactic sugar in "Define" procs + - more informative platform configuration checks + + ========== OOMMF 1.1a0 released 1999/04/28 ========== + Significant changes since 1.0b1: + + * New apps + - avftoppm -- generate PPM files representing vector fields + - mmDispSh -- shell with mmDisp support commands. + - filtersh -- basic omfsh-like shell which supports filtering + through standard channels on MS Windows + + * Renamed and now bootstrappable apps: + - avftoave --> avf2ave + - avftoovf --> avf2ovf + - avftovio --> avf2vio + - gif2ppm --> any2ppm + + * New extensions + - If (Image formats) -- supports use of Windows bitmaps as mask files + + * New oommf (bootstrap) features + - Revised command line option parsing + run 'oommf.tcl -help' for a usage summary + - New -command option + - Stdout and stderr available immediately even when blocking + + * New mmDataTable features + - more display options + + * New mmDisp features + - Colorwheel-type display + - New color maps + + * New mmProbEd features + - ConstMag demag routine + - Anisotropy axes initializer + - More initial mag states + - user comments, min and max time steps + + * New mmSolve features + - Log files added + - ConstMag demagnetization kernel + - Support for generalized control points + - stop on iteration count, or elapsed simulation time, + as well as maximum torque below a threshold. + - Removed exchange and anisotropy fields from zero-moment cells + + * New mmSolve2D features + - event replaced by event + + * New Nb extension features/incompatibilities + - New C++ APIs + - Nb_DString::AppendArgs() + - Nb_List::GetFirst(), Nb_List::GetNext() + - Removed C++ APIs + - Omf_SetPatchLevel, Omf_ComparePatchLevel + - use Tcl_Pkg* routines + - CullZombies + - use Tcl_ReapDetachedProcs + - Removed macros + - TCLCMD -- use Tcl's Tcl_CmdProc instead + + * New Oc extension features/incompatibilities + - New C++ APIs + - Oc_InitScript() + - C API to find and source initializing Tcl script + - Oc_AppendUsageInfo(), Oc_GetUsageInfo() + - support standard processing of argv, etc. + - Changed C++ APIs + - Oc_Main() -> Oc_AppMain() rename + - Oc_SetUseTkFlag() -> Oc_SetDefaultTkFlag() + - also -tk/-notk options --> -tk 0/1 + and handled by Oc. + - New macros + - OC_MAKEVERSION + - New Tcl commands + - Oc_AppendUsageInfo, Oc_GetUsageInfo + - support standard processing of argv, etc. + - Oc_UniqueFilename + - Removed Oc_Classes + - em_eventHandler - use Oc_EventHandler + - New Oc_Class procs/methods + - Oc_Application CommandLine + + * Relocation of files, restructuring, etc. + - Promotion of mmarchive from "net thread" to app + - bootstrap program available in root directory + - mmDisp is now a script evaluated by shell program, mmdispsh + - use of version.h files + + * General cleanup/improvements + - Improved documentation + - More informative title bars and error messages + + * Expanded Tcl/Tk support + - 8.0.4 + - 8.0.5 + - Tk4.x - Forward compatibility support for the [grid], + [destroy], and [menu] commands. + + * New Platforms supported + - Cygwin environment on Windows + + * New mmDisp features + - Divergence display + + * New mmHelp features + - Can load Binary files + - Handles block-level IMG tag according to HTML 3.2 spec + - Rudimentary table support (alignment) + + * New Oc extension features + - New macro OC_STRINGIFY + - New Tcl commands + - Oc_CheckTclIndex + - New Oc_Class procs/methods + - Oc_Main GetInstanceName + + * Bug fixes + - DString memory leaks + - Runtime checks for tclIndex files + - Improved exit handling (mmGraph) -- window existence checked + - Clone protocols dependence on parents enforced + - Oc_Class option 'enforcePrivate' is now honored. + + * General cleanup/improvements + - removed deprecated direct accesses to interp->result + - Improved error messages and stack traces. + - revised LICENSE language + - Account server/.omfexport.tcl + - now use Oc_Application directly, no spawn of bootstrap + + ========== OOMMF 1.0b1 released 1998/11/05 ========== + Significant changes since 1.0b0: + + * Support for Tcl/Tk 8.0.3 on Windows platforms. A workaround for + the previous trouble with socket responsiveness was found. + + * Support for use of the .svf file format to specify an initial + magnetization state in a problem description. + + * Fixed bug in mmGraph which prevented it from exiting and deregistering + when exited by using the window manager to destroy its window. + + * Enhanced Tcl/Tk version checking in configuration/build steps. + + * Improvements to User Manual. + + * Clarified several error messages. + + ========== OOMMF 1.0b0 released 1998/10/20 ========== diff -crN oommf-1.1a2/README oommf/README *** oommf-1.1a2/README Wed Apr 5 00:22:48 2000 --- oommf/README Tue Apr 4 23:20:48 2000 *************** *** 1,8 **** README: OOMMF Object Oriented MicroMagnetic computing Framework ! Release 1.1a2 ! This file last modified on: $Date: 1999/10/28 22:59:20 $ OOMMF is a project in the Mathematical and Computational Sciences Division (MCSD) of ITL/NIST aimed at developing portable, extensible --- 1,8 ---- README: OOMMF Object Oriented MicroMagnetic computing Framework ! Release 1.1b0 ! This file last modified on: $Date: 2000/04/04 10:18:20 $ OOMMF is a project in the Mathematical and Computational Sciences Division (MCSD) of ITL/NIST aimed at developing portable, extensible *************** *** 27,48 **** ----------------------------------------------------------------------- QUICK INSTALL: Most OOMMF users on MS Windows platforms will download a release ! with pre-compiled executables compatible with Tcl/Tk 8.2.x. Type the following commands at an MS-DOS Prompt to start using OOMMF: ! unzip oommf11a2_19991029.zip cd oommf ! tclsh82 oommf.tcl -fg pimake upgrade ! tclsh82 oommf.tcl For most OOMMF users on Unix, the following sequence of commands should upgrade, build, and run your OOMMF installation: ! gunzip -c oommf11a2_19991029.tar.gz | tar xvf - cd oommf ! oommf.tcl -fg pimake distclean ! oommf.tcl -fg pimake upgrade ! oommf.tcl -fg pimake oommf.tcl If that does not work, read the more detailed instructions in the --- 27,48 ---- ----------------------------------------------------------------------- QUICK INSTALL: Most OOMMF users on MS Windows platforms will download a release ! with pre-compiled executables compatible with Tcl/Tk 8.3.x. Type the following commands at an MS-DOS Prompt to start using OOMMF: ! unzip oommf11b0_20000404.zip cd oommf ! tclsh83 oommf.tcl pimake upgrade ! tclsh83 oommf.tcl For most OOMMF users on Unix, the following sequence of commands should upgrade, build, and run your OOMMF installation: ! gunzip -c oommf11b0_20000404.tar.gz | tar xvf - cd oommf ! oommf.tcl pimake distclean ! oommf.tcl pimake upgrade ! oommf.tcl pimake oommf.tcl If that does not work, read the more detailed instructions in the diff -crN oommf-1.1a2/Readme.txt oommf/Readme.txt *** oommf-1.1a2/Readme.txt Wed Apr 5 00:23:42 2000 --- oommf/Readme.txt Tue Apr 4 23:21:20 2000 *************** *** 1,8 **** README: OOMMF Object Oriented MicroMagnetic computing Framework ! Release 1.1a2 ! This file last modified on: $Date: 1999/10/28 22:59:20 $ OOMMF is a project in the Mathematical and Computational Sciences Division (MCSD) of ITL/NIST aimed at developing portable, extensible --- 1,8 ---- README: OOMMF Object Oriented MicroMagnetic computing Framework ! Release 1.1b0 ! This file last modified on: $Date: 2000/04/04 10:18:20 $ OOMMF is a project in the Mathematical and Computational Sciences Division (MCSD) of ITL/NIST aimed at developing portable, extensible *************** *** 27,48 **** ----------------------------------------------------------------------- QUICK INSTALL: Most OOMMF users on MS Windows platforms will download a release ! with pre-compiled executables compatible with Tcl/Tk 8.2.x. Type the following commands at an MS-DOS Prompt to start using OOMMF: ! unzip oommf11a2_19991029.zip cd oommf ! tclsh82 oommf.tcl -fg pimake upgrade ! tclsh82 oommf.tcl For most OOMMF users on Unix, the following sequence of commands should upgrade, build, and run your OOMMF installation: ! gunzip -c oommf11a2_19991029.tar.gz | tar xvf - cd oommf ! oommf.tcl -fg pimake distclean ! oommf.tcl -fg pimake upgrade ! oommf.tcl -fg pimake oommf.tcl If that does not work, read the more detailed instructions in the --- 27,48 ---- ----------------------------------------------------------------------- QUICK INSTALL: Most OOMMF users on MS Windows platforms will download a release ! with pre-compiled executables compatible with Tcl/Tk 8.3.x. Type the following commands at an MS-DOS Prompt to start using OOMMF: ! unzip oommf11b0_20000404.zip cd oommf ! tclsh83 oommf.tcl pimake upgrade ! tclsh83 oommf.tcl For most OOMMF users on Unix, the following sequence of commands should upgrade, build, and run your OOMMF installation: ! gunzip -c oommf11b0_20000404.tar.gz | tar xvf - cd oommf ! oommf.tcl pimake distclean ! oommf.tcl pimake upgrade ! oommf.tcl pimake oommf.tcl If that does not work, read the more detailed instructions in the diff -crN oommf-1.1a2/app/mmarchive/appindex.tcl oommf/app/mmarchive/appindex.tcl *** oommf-1.1a2/app/mmarchive/appindex.tcl Wed Apr 5 00:22:49 2000 --- oommf/app/mmarchive/appindex.tcl Tue Apr 4 23:20:48 2000 *************** *** 1,8 **** Oc_Application Define { -name mmArchive ! -version 1.1.0.2 -machine omfsh -file mmarchive.tcl } --- 1,9 ---- Oc_Application Define { -name mmArchive ! -version 1.1.1.0 -machine omfsh -file mmarchive.tcl + -options {-tk 0} } diff -crN oommf-1.1a2/app/mmarchive/mmarchive.tcl oommf/app/mmarchive/mmarchive.tcl *** oommf-1.1a2/app/mmarchive/mmarchive.tcl Wed Apr 5 00:22:50 2000 --- oommf/app/mmarchive/mmarchive.tcl Tue Apr 4 23:20:48 2000 *************** *** 12,21 **** } Oc_Main SetAppName mmArchive ! Oc_Main SetVersion 1.1.0.2 ! regexp \\\044Date:(.*)\\\044 {$Date: 1999/10/21 21:25:42 $} _ date Oc_Main SetDate [string trim $date] Oc_Main SetAuthor [Oc_Person Lookup dgp] ##------ Control server ---------# # --- 12,22 ---- } Oc_Main SetAppName mmArchive ! Oc_Main SetVersion 1.1.1.0 ! regexp \\\044Date:(.*)\\\044 {$Date: 2000/03/09 21:24:07 $} _ date Oc_Main SetDate [string trim $date] Oc_Main SetAuthor [Oc_Person Lookup dgp] + Oc_CommandLine Parse $argv ##------ Control server ---------# # diff -crN oommf-1.1a2/app/mmdatatable/appindex.tcl oommf/app/mmdatatable/appindex.tcl *** oommf-1.1a2/app/mmdatatable/appindex.tcl Wed Apr 5 00:22:50 2000 --- oommf/app/mmdatatable/appindex.tcl Tue Apr 4 23:20:48 2000 *************** *** 1,7 **** Oc_Application Define { -name mmDataTable ! -version 1.1.0.2 -machine omfsh -file mmdatatable.tcl } --- 1,7 ---- Oc_Application Define { -name mmDataTable ! -version 1.1.1.0 -machine omfsh -file mmdatatable.tcl } diff -crN oommf-1.1a2/app/mmdatatable/mmdatatable.tcl oommf/app/mmdatatable/mmdatatable.tcl *** oommf-1.1a2/app/mmdatatable/mmdatatable.tcl Wed Apr 5 00:22:50 2000 --- oommf/app/mmdatatable/mmdatatable.tcl Tue Apr 4 23:20:48 2000 *************** *** 9,19 **** # data. if {![info exists no_net]} { ! if {[string match "--nonet" [lindex $argv 0]]} { ! set no_net 1 ! } else { ! set no_net 0 ;# Default is use net ! } } if {![info exists no_event_loop]} { --- 9,15 ---- # data. if {![info exists no_net]} { ! set no_net 0 ;# Default is use net } if {![info exists no_event_loop]} { *************** *** 24,34 **** package require Oc package require Tk package require Ow ! if {!$no_net} { package require Net } Oc_Main SetAppName mmDataTable ! Oc_Main SetVersion 1.1.0.2 ! regexp \\\044Date:(.*)\\\044 {$Date: 1999/10/21 21:25:42 $} _ date Oc_Main SetDate [string trim $date] # regexp \\\044Author:(.*)\\\044 {$Author: dgp $} _ author # Oc_Main SetAuthor [Oc_Person Lookup [string trim $author]] --- 20,30 ---- package require Oc package require Tk package require Ow ! wm withdraw . Oc_Main SetAppName mmDataTable ! Oc_Main SetVersion 1.1.1.0 ! regexp \\\044Date:(.*)\\\044 {$Date: 2000/03/24 00:25:33 $} _ date Oc_Main SetDate [string trim $date] # regexp \\\044Author:(.*)\\\044 {$Author: dgp $} _ author # Oc_Main SetAuthor [Oc_Person Lookup [string trim $author]] *************** *** 37,42 **** --- 33,47 ---- [file dirname [file dirname [Oc_DirectPathname [info \ script]]]]] doc userguide Data_Table_Display_mmDataTa.html]] + Oc_CommandLine Option net { + {flag {expr {![catch {expr {$flag && $flag}}]}} {= 0 or 1}} + } { + global no_net; set no_net [expr {!$flag}] + } {Disable/enable data from other apps; default=enabled} + Oc_CommandLine Parse $argv + + if {!$no_net} { package require Net } + source [file join [file dirname [info script]] dialog.tcl] # Death *************** *** 81,86 **** --- 86,92 ---- wm title . [Oc_Main GetInstanceName] wm iconname . [wm title .] Ow_SetIcon . + wm deiconify . if {[package vcompare [package provide Tk] 8] >= 0 \ && [string match windows $tcl_platform(platform)]} { diff -crN oommf-1.1a2/app/mmdisp/avf2ave.cc oommf/app/mmdisp/avf2ave.cc *** oommf-1.1a2/app/mmdisp/avf2ave.cc Wed Apr 5 00:22:50 2000 --- oommf/app/mmdisp/avf2ave.cc Wed Dec 31 19:00:00 1969 *************** *** 1,139 **** - /* FILE: avf2ave.cc -*-Mode: c++-*- - * - * Program to convert from Any known, regular Vector Field - * file to a data file of magnetization averages along the - * x, y and z axes. - */ - - #include - #include - #include - - #include "oc.h" - #include "nb.h" - #include "vf.h" - - /* End includes */ - - static char *inname; - static Vf_Mesh *mesh; - - void Usage(void) - { - fprintf(stderr,"Usage: avf2ave infile >outfile\n"); - exit(1); - } - - int - Tcl_AppInit(Tcl_Interp *interp) - { - Oc_AutoBuf ab; - Oc_SetDefaultTkFlag(0); - if (Oc_Init(interp) == TCL_ERROR) { - return TCL_ERROR; - } - if (Vf_Init(interp) == TCL_ERROR) { - return TCL_ERROR; - } - - // Fill mesh from input file - Vf_FileInput *vffreader = Vf_FileInput::NewReader(inname); - if(vffreader==NULL) { // Unknown file type or other error - fprintf(stderr,"ERROR detected processing file %s\n",inname); - return Tcl_GlobalEval(interp, ab("exit 1")); - } - else { // Reader found for inname - mesh=vffreader->NewMesh(); - delete vffreader; - if(mesh==NULL) { - fprintf(stderr,"ERROR detected while reading file %s\n",inname); - return Tcl_GlobalEval(interp, ab("exit 2")); - } - } - - // Is this a rectangular mesh? - if(strcmp(mesh->GetMeshType(),"Vf_GridVec3f")!=0) { - fprintf(stderr,"Invalid mesh type: %s\n",mesh->GetMeshType()); - return Tcl_GlobalEval(interp, ab("exit 2")); - } - - // Downcast - Vf_GridVec3f& grid = *((Vf_GridVec3f *)mesh); - - fprintf(stdout,"# Data averages for file %s\n#\n",inname); - - // Collect and print x-data - int i,j,k,isize,jsize,ksize; - grid.GetDimens(isize,jsize,ksize); - if(isize<1 || jsize<1 || ksize<1) { - fprintf(stderr,"Bad mesh dimensions: %d %d %d", - isize,jsize,ksize); - return Tcl_GlobalEval(interp, ab("exit 2")); - } - Nb_Vec3 *m=new Nb_Vec3[isize]; - for(i=0;i base=grid.GetBasePoint(); - Nb_Vec3 step=grid.GetGridStep(); - - double mult=(1./double(jsize*ksize)); - fprintf(stdout,"# Averages across x axis (%d points each)\n", - jsize*ksize); - for(i=0;i[jsize]; - for(j=0;j[isize]; - for(k=0;k - #include - #include - - #include "oc.h" - #include "nb.h" - #include "vf.h" - - /* End includes */ - - static Vf_OvfDataStyle ods; - static BOOL irregular_grid; - static char *inname; - static Vf_Mesh *mesh; - - void Usage(const char* msg=NULL) - { - if(msg!=NULL) fprintf(stderr,"%s\n",msg); - fprintf(stderr,"Usage: avf2ovf [-text|-b4|-b8] [-reg|-irreg]" - " infile >outfile\n"); - if(msg!=NULL) exit(1); - exit(0); - } - - void ProcessArgs(int argc,char **argv) - { - if(argc<2 || argc>4) - Usage("Command line error: Wrong number of arguments"); - - // Set defaults - inname=NULL; - ods=vf_oascii; - irregular_grid=0; - // Loop through arguments - for(int i=1;iNewMesh(); - delete vffreader; - if(mesh==NULL) { - fprintf(stderr,"ERROR detected while reading file %s\n",inname); - return Tcl_GlobalEval(interp, ab("exit 2")); - } - } - - fprintf(stderr,"Copying Title field: %s\n" - "You may want to edit this field in the output by hand.\n", - mesh->GetTitle()); - - // Write ovf file to stdout - Vf_OvfFileOutput ofo; - ofo.WriteMesh(mesh,stdout,ods,irregular_grid,NULL,NULL); - - // That's all folks! - fflush(stdout); - return Tcl_GlobalEval(interp, ab("exit 0")); - } - - int Oc_AppMain(int argc,char **argv) - { - ProcessArgs(argc,argv); - Oc_Main(argc, argv, Tcl_AppInit); - return 0; - } - --- 0 ---- diff -crN oommf-1.1a2/app/mmdisp/avf2ppm.cc oommf/app/mmdisp/avf2ppm.cc *** oommf-1.1a2/app/mmdisp/avf2ppm.cc Wed Apr 5 00:22:50 2000 --- oommf/app/mmdisp/avf2ppm.cc Wed Dec 31 19:00:00 1969 *************** *** 1,402 **** - /* FILE: avf2ppm.cc -*-Mode: c++-*- - * - * Program to try to convert from Any (known) Vector Field file - * to a ppm bitmap file. - * - */ - - #include - #include - - #include "oc.h" - #include "nb.h" - #include "vf.h" - - #include "bitmap.h" - #include "colormap.h" - #include "display.h" - - /* End includes */ - - #define AVF2PPM_MAJOR_VERSION 1 - #define AVF2PPM_MINOR_VERSION 1 - #define AVF2PPM_RELEASE_LEVEL 0 - #define AVF2PPM_RELEASE_SERIAL 2 - - #define AVF2PPM_VERSION OC_MAKE_VERSION(AVF2PPM) - - /////////////////////////////////////////////////////////////////////////// - struct MiscConfiguration - { - Nb_DString background_color; - BOOL drawboundary; - int margin; - int rotation; // Rotation, in degrees. Should be 0, 90, 180 or 270. - int width,height; - REAL4 zoom; - BOOL crop; - }; - - int MakeUniqueName(Tcl_Interp *interp,const char* filename, - Nb_DString &uniquename) - { // Uses the Oc_UniqueFilename proc to generate a name - // that does not exist on the filesystem. On success, 1 - // is returned and the result is copied into uniquename. - // Otherwise, 0 is returned. - Oc_AutoBuf ab1,ab2; - char *argv[2]; - argv[0]=ab1("Oc_UniqueFilename"); argv[1]=ab2(filename); - char *cmd=Tcl_Merge(2,argv); - int errcode=Tcl_Eval(interp,cmd); - Tcl_Free(cmd); - if(errcode!=TCL_OK || interp->result[0]=='\0') return 0; - uniquename=interp->result; - return 1; - } - - int Tcl_AppInit(Tcl_Interp *interp) - { - Vf_Mesh *mesh; - Vf_EmptyMesh empty_mesh; // Dummy - DisplayFrame frame; - OommfBitmap bitmap; - PlotConfiguration arrow_config,pixel_config; - MiscConfiguration misc_config; - Oc_AutoBuf ab1,ab2,ab3; - - Oc_SetDefaultTkFlag(1); - if (Oc_Init(interp) == TCL_ERROR) { - fprintf(stderr,"%s", Tcl_GetStringResult(interp)); - return Tcl_GlobalEval(interp, ab1("exit 1")); - } - if (Vf_Init(interp) == TCL_ERROR) { - fprintf(stderr,"%s", Tcl_GetStringResult(interp)); - return Tcl_GlobalEval(interp, ab1("exit 1")); - } - - Tcl_PkgProvide(interp, ab1("Avf2ppm"), ab2(AVF2PPM_VERSION)); - - if (Oc_InitScript(interp, "Avf2ppm", AVF2PPM_VERSION) != TCL_OK) { - fprintf(stderr,"InitScript error: %s\n", Tcl_GetStringResult(interp)); - return Tcl_GlobalEval(interp, ab1("exit 1")); - } - - // Get configuration values from Tcl array - int colorcount; - Nb_DString colormapname; - arrow_config.displaystate=atoi(Tcl_GetVar2(interp,ab1("plot_config"), - ab2("arrow,status"),TCL_GLOBAL_ONLY)); - arrow_config.colorquantity=Tcl_GetVar2(interp,ab1("plot_config"), - ab2("arrow,quantity"),TCL_GLOBAL_ONLY); - colormapname=Tcl_GetVar2(interp,ab1("plot_config"), - ab2("arrow,colormap"),TCL_GLOBAL_ONLY); - colorcount=atoi(Tcl_GetVar2(interp,ab1("plot_config"), - ab2("arrow,colorcount"),TCL_GLOBAL_ONLY)); - arrow_config.colormap.Setup(colorcount,colormapname); - arrow_config.autosample=atoi(Tcl_GetVar2(interp,ab1("plot_config"), - ab2("arrow,autosample"),TCL_GLOBAL_ONLY)); - arrow_config.subsample=Nb_Atof(Tcl_GetVar2(interp,ab1("plot_config"), - ab2("arrow,subsample"),TCL_GLOBAL_ONLY)); - arrow_config.mag=Nb_Atof(Tcl_GetVar2(interp,ab1("plot_config"), - ab2("arrow,mag"),TCL_GLOBAL_ONLY)); - arrow_config.antialias=atoi(Tcl_GetVar2(interp,ab1("plot_config"), - ab2("arrow,antialias"),TCL_GLOBAL_ONLY)); - - pixel_config.colorquantity=Tcl_GetVar2(interp,ab1("plot_config"), - ab2("pixel,quantity"),TCL_GLOBAL_ONLY); - colormapname=Tcl_GetVar2(interp,ab1("plot_config"), - ab2("pixel,colormap"),TCL_GLOBAL_ONLY); - colorcount=atoi(Tcl_GetVar2(interp,ab1("plot_config"), - ab2("pixel,colorcount"),TCL_GLOBAL_ONLY)); - pixel_config.colormap.Setup(colorcount,colormapname); - pixel_config.displaystate=atoi(Tcl_GetVar2(interp,ab1("plot_config"), - ab2("pixel,status"),TCL_GLOBAL_ONLY)); - pixel_config.autosample=atoi(Tcl_GetVar2(interp,ab1("plot_config"), - ab2("pixel,autosample"),TCL_GLOBAL_ONLY)); - pixel_config.subsample=Nb_Atof(Tcl_GetVar2(interp,ab1("plot_config"), - ab2("pixel,subsample"),TCL_GLOBAL_ONLY)); - pixel_config.mag=Nb_Atof(Tcl_GetVar2(interp,ab1("plot_config"), - ab2("pixel,mag"),TCL_GLOBAL_ONLY)); - - misc_config.background_color=Tcl_GetVar2(interp,ab1("plot_config"), - ab2("misc,background"),TCL_GLOBAL_ONLY); - misc_config.drawboundary=atoi(Tcl_GetVar2(interp,ab1("plot_config"), - ab2("misc,drawboundary"),TCL_GLOBAL_ONLY)); - misc_config.margin=atoi(Tcl_GetVar2(interp,ab1("plot_config"), - ab2("misc,margin"),TCL_GLOBAL_ONLY)); - misc_config.width=atoi(Tcl_GetVar2(interp,ab1("plot_config"), - ab2("misc,width"),TCL_GLOBAL_ONLY)); - misc_config.height=atoi(Tcl_GetVar2(interp,ab1("plot_config"), - ab2("misc,height"),TCL_GLOBAL_ONLY)); - misc_config.zoom=atof(Tcl_GetVar2(interp,ab1("plot_config"), - ab2("misc,zoom"),TCL_GLOBAL_ONLY)); - misc_config.crop=atoi(Tcl_GetVar2(interp,ab1("plot_config"), - ab2("misc,crop"),TCL_GLOBAL_ONLY)); - misc_config.rotation=atoi(Tcl_GetVar2(interp,ab1("plot_config"), - ab2("misc,rotation"),TCL_GLOBAL_ONLY)); - - // Get options from a2pOpts array - int verbose=atoi(Tcl_GetVar2(interp,ab1("a2pOpts"), - ab2("verbose"),TCL_GLOBAL_ONLY)); - int force=atoi(Tcl_GetVar2(interp,ab1("a2pOpts"), - ab2("force"),TCL_GLOBAL_ONLY)); - Nb_DString file_type(Tcl_GetVar2(interp,ab1("a2pOpts"), - ab2("type"),TCL_GLOBAL_ONLY)); - Nb_DString filtercmd(Tcl_GetVar2(interp,ab1("a2pOpts"), - ab2("filter"),TCL_GLOBAL_ONLY)); - - - // Get input and output file lists - char *ilist=Tcl_GetVar2(interp,ab1("a2pOpts"), - ab2("ifiles"),TCL_GLOBAL_ONLY); - char *olist=Tcl_GetVar2(interp,ab1("a2pOpts"), - ab2("ofiles"),TCL_GLOBAL_ONLY); - int icount,ocount; - char **ifiles,**ofiles; - Tcl_SplitList(interp,ilist,&icount,&ifiles); - Tcl_SplitList(interp,olist,&ocount,&ofiles); - if(ocount<1) { - // At least one output filename is required - fprintf(stderr,"Empty output list\n"); - return Tcl_GlobalEval(interp, ab1("exit 2")); - } - - // If in very verbose mode, dump configuration info to stderr - if(verbose>1) { - fprintf(stderr, - "Output file type: %s\n", - file_type.GetStr()); - if(filtercmd.Length()>0) { - fprintf(stderr, - "Filter command: %s\n", - filtercmd.GetStr()); - } - fprintf(stderr, - "Arrow Configuration---\n" - " Display: %d\n" - " Colormap name: %s\n" - " Colormap size: %d\n" - " Quantity: %s\n" - " Autosample: %d\n" - " Subsample: %g\n" - " Mag: %g\n" - " Antialias: %d\n", - arrow_config.displaystate, - arrow_config.colormap.GetMapName(), - arrow_config.colormap.GetColorCount(), - arrow_config.colorquantity.GetStr(), - arrow_config.autosample, - arrow_config.subsample, - arrow_config.mag, - arrow_config.antialias); - fprintf(stderr, - "Pixel Configuration---\n" - " Display: %d\n" - " Colormap name: %s\n" - " Colormap size: %d\n" - " Quantity: %s\n" - " Autosample: %d\n" - " Subsample: %g\n" - " Mag: %g\n", - pixel_config.displaystate, - pixel_config.colormap.GetMapName(), - pixel_config.colormap.GetColorCount(), - pixel_config.colorquantity.GetStr(), - pixel_config.autosample, - pixel_config.subsample, - pixel_config.mag); - fprintf(stderr, - "Misc Configuration----\n" - " Background color: %s\n" - " Draw boundary: %d\n" - " Margin: %d\n" - " Dimensions: %d x %d\n" - " Zoom: %g\n" - " Crop: %d\n" - " Rotation: %d\n", - misc_config.background_color.GetStr(), - misc_config.drawboundary, - misc_config.margin, - misc_config.width, - misc_config.height, - misc_config.zoom, - misc_config.crop, - misc_config.rotation); - } - - // Base frame configuration - frame.SetTclInterp(interp); - frame.SetPlotConfiguration(arrow_config,pixel_config); - frame.SetBackgroundColor((const char *)misc_config.background_color); - frame.SetDrawBoundary(misc_config.drawboundary); - int rotation_index=int(OC_ROUND(misc_config.rotation/90.))%4; - if(rotation_index<0) rotation_index+=4; - switch(rotation_index) - { - case 1: frame.SetCoordinates(CS_DISPLAY_ROT_90); break; - case 2: frame.SetCoordinates(CS_DISPLAY_ROT_180); break; - case 3: frame.SetCoordinates(CS_DISPLAY_ROT_270); break; - default: frame.SetCoordinates(CS_DISPLAY_STANDARD); break; - } - misc_config.rotation=rotation_index*90; - - // Loop through input files - Nb_DString outstr; - for(int i=0;iNewMesh(); - delete vffreader; - if(mesh==NULL) { - fprintf(stderr,"ERROR detected while reading file %s\n",inname); - continue; - } - } - - // Initialize DisplayFrame - frame.SetMesh(mesh); - - // Configure bitmap - if(misc_config.zoom==0) { - frame.SetZoom(misc_config.width-2*misc_config.margin, - misc_config.height-2*misc_config.margin); - } else { - frame.SetZoom(misc_config.zoom); - } - Nb_BoundingBox bbox=frame.GetDisplayBox(); - Nb_Vec3 minpt,maxpt; - bbox.GetExtremes(minpt,maxpt); - int xmin,ymin,xmax,ymax,xmarginadj,ymarginadj; - xmin=int(floor(minpt.x))-misc_config.margin; - ymin=int(floor(minpt.y))-misc_config.margin; - xmax=int(ceil(maxpt.x))+misc_config.margin; - ymax=int(ceil(maxpt.y))+misc_config.margin; - xmarginadj=(xmax-xmin+1)-misc_config.width; - ymarginadj=(ymax-ymin+1)-misc_config.height; - if(xmarginadj>0) { - // Resulting size is bigger than requested. Trim. - xmin+=int(floor(xmarginadj/2.)); - xmax-=int(ceil(xmarginadj/2.)); - } - if(ymarginadj>0) { - // Resulting size is bigger than requested. Trim. - ymin+=int(floor(ymarginadj/2.)); - ymax-=int(ceil(ymarginadj/2.)); - } - if(!misc_config.crop) { - // No-crop request, so make bitmap exact size requested - xmax=xmin+misc_config.width-1; - ymax=ymin+misc_config.height-1; - } - bitmap.Setup(xmin,ymin,xmax,ymax); // Ignore z - - // Dump file processing information to stderr, if requested - if(verbose>0) { - if(filtercmd.Length()==0) { - fprintf(stderr," %s --> %s",inname,outname); - } else { - fprintf(stderr," %s --> %s --> %s",inname,filtercmd.GetStr(),outname); - } - bitmap.GetExtents(xmin,ymin,xmax,ymax); - fprintf(stderr," (%dx%d)\n",xmax-xmin+1,ymax-ymin+1); - } - - // Fill bitmap - frame.FillBitmap(bitmap); - - // Write bitmap - Tcl_Channel channel; - if(filtercmd.Length()==0) { - // Dump output direct to a file - channel=Tcl_OpenFileChannel(interp,ab1(outname),ab2("w"),0666); - if(channel==NULL) { - fprintf(stderr,"ERROR: Unable top open output file %s\n",outname); - fprintf(stderr," %s\n",interp->result); - } - } else { - // Open command channel for filtering - channel=NULL; - Nb_DString cmd(filtercmd); - cmd.Append(" > {"); - cmd.Append(outname); - cmd.Append("}"); // Protect spaces in outname - int cmdc; char** cmdv; - if(Tcl_SplitList(interp,ab1(cmd.GetStr()),&cmdc,&cmdv)==TCL_OK) { - channel=Tcl_OpenCommandChannel(interp,cmdc,cmdv,TCL_STDIN); - Tcl_Free((char *)cmdv); - } - if(channel==NULL) { - fprintf(stderr," %s\n",interp->result); - } - } - if(channel!=NULL) { - Tcl_SetChannelOption(interp,channel, - ab1("-buffersize"),ab2("10000")); - Tcl_SetChannelOption(interp,channel, - ab1("-buffering"),ab2("full")); - Tcl_SetChannelOption(interp,channel, - ab1("-translation"),ab2("binary")); - if(strcmp("P3",file_type.GetStr())==0) - bitmap.WritePPMChannel(channel,3); - else if(strcmp("P6",file_type.GetStr())==0) - bitmap.WritePPMChannel(channel,6); - else if(strcmp("B24",file_type.GetStr())==0) - bitmap.WriteBMPChannel(channel,24); - else { - fprintf(stderr,"ERROR: Unknown file format request: %s\n", - file_type.GetStr()); - return Tcl_GlobalEval(interp, ab1("exit 2")); - } - Tcl_Close(interp,channel); - } - - // Clean up - frame.SetMesh(&empty_mesh); - delete mesh; - } - - // That's all folks! - Tcl_Free((char *)ifiles); - Tcl_Free((char *)ofiles); - - return Tcl_GlobalEval(interp, ab1("exit 0")); - } - - int Oc_AppMain(int argc,char **argv) - { - #define DUMMY_SCRIPTNAME "foo" - // Add a dummy argv[1] for Oc_Main to eat as fake script name. - int my_argc=argc+1; - char** my_argv=new char*[my_argc]; - my_argv[1]=new char[strlen(DUMMY_SCRIPTNAME)+1]; - strcpy(my_argv[1],DUMMY_SCRIPTNAME); - my_argv[0]=argv[0]; - for(int i=2;i=0} { Usage } - - ### Default initialization - # Internal configuration array, "just in case" we can't find - # the "defaults" script, DEFAULTS_FILE - array set plot_config { - colormaps { Red-Black-Blue Blue-White-Red Teal-White-Red \ - Black-Gray-White White-Green-Black Red-Green-Blue-Red } - arrow,status 1 - arrow,colormap Black-Gray-White - arrow,colorcount 0 - arrow,quantity z - arrow,autosample 1 - arrow,subsample 10 - arrow,mag 1 - arrow,antialias 1 - pixel,status 1 - pixel,colormap Teal-White-Red - pixel,colorcount 225 - pixel,quantity x - pixel,autosample 1 - pixel,subsample 2 - pixel,mag 1 - misc,background white - misc,drawboundary 1 - misc,margin 10 - misc,width 640 - misc,height 480 - misc,crop 1 - misc,zoom 0 - misc,rotation 0 - } - if {[catch {source $DEFAULTS_FILE} errmsg]} { - puts stderr \ - "WARNING: Failure trying to source defaults file $DEFAULTS_FILE" - } - - ### User specified initialization - proc ArgStrip { index count } { - global argc argv - set argv [lreplace $argv $index [expr {$index + $count - 1}]] - set argc [llength $argv] - } - - # Parse command line, storing results in array a2pOpts - while {[llength $argv]>0} { - set argsize 1 - set optname {} - regexp -- {^-(.+)} [lindex $argv 0] dummy optname - switch -exact -- $optname { - f { set a2pOpts(force) 1 } - v { - set a2pOpts(verbose) [lindex $argv 1] - set argsize 2 - } - filter - - opatexp - - opatsub - - type { - set a2pOpts($optname) [lindex $argv 1] - set argsize 2 - } - config - - ipat { - lappend a2pOpts($optname) [lindex $argv 1] - set argsize 2 - } - - { - # End of options; rest are files - eval {lappend a2pOpts(ifiles)} [lrange $argv 1 end] - set argsize [llength $argv] - } - default { - # One input file - lappend a2pOpts(ifiles) [lindex $argv 0] - } - } - ArgStrip 0 $argsize - } - - # Input config files specified on command line, in order. - foreach config_file $a2pOpts(config) { - source $config_file - } - - # Check -type spec and adjust opatsub appropriately - set default_opatsub {} - switch -exact -- $a2pOpts(type) { - P3 - - P6 { set default_opatsub .ppm } - B24 { set default_opatsub .bmp } - default { - puts stderr \ - "ERROR: Unknown file format request $a2pOpts(type)" - exit 1 - } - } - if {![info exists a2pOpts(opatsub)]} { - set a2pOpts(opatsub) $default_opatsub - } - - # Append to file list any files matching -ipat's - foreach pat $a2pOpts(ipat) { - set temp [lsort -dictionary [glob -nocomplain -- $pat]] - eval {lappend a2pOpts(ifiles)} $temp - } - - # Generate output file list - set a2pOpts(ofiles) {} - foreach ifile $a2pOpts(ifiles) { - if {[regsub -- $a2pOpts(opatexp) $ifile $a2pOpts(opatsub) ofile]!=1} { - # Regsub error; Fall back to simple append of substitute string - set ofile $ifile$a2pOpts(opatsub) - } - lappend a2pOpts(ofiles) $ofile - } - - if {$a2pOpts(verbose)>=3} { - # Dump input and output files lists - puts stderr "##############" - puts stderr "Input files: $a2pOpts(ifiles)" - puts stderr "##############" - puts stderr "Output files: $a2pOpts(ofiles)" - puts stderr "##############" - } - - if {$a2pOpts(verbose)>=2} { - puts stderr "ipat: $a2pOpts(ipat)" - puts stderr "opatexp: $a2pOpts(opatexp)" - puts stderr "opatsub: $a2pOpts(opatsub)" - } --- 0 ---- diff -crN oommf-1.1a2/app/mmdisp/avf2vio.cc oommf/app/mmdisp/avf2vio.cc *** oommf-1.1a2/app/mmdisp/avf2vio.cc Wed Apr 5 00:22:50 2000 --- oommf/app/mmdisp/avf2vio.cc Wed Dec 31 19:00:00 1969 *************** *** 1,69 **** - /* FILE: avf2vio.cc -*-Mode: c++-*- - * - * Program to try to convert from Any (known) Vector Field file - * to a vio vector field file format. - * - */ - - #include - #include - - #include "oc.h" - #include "nb.h" - #include "vf.h" - - /* End includes */ - - static char *inname; - static Vf_Mesh *mesh; - - void Usage(void) - { - fprintf(stderr,"Usage: avf2vio infile >outfile\n"); - exit(1); - } - - int - Tcl_AppInit(Tcl_Interp *interp) - { - Oc_AutoBuf ab; - Oc_SetDefaultTkFlag(0); - if (Oc_Init(interp) == TCL_ERROR) { - return TCL_ERROR; - } - if (Vf_Init(interp) == TCL_ERROR) { - return TCL_ERROR; - } - - // Fill mesh from input file - Vf_FileInput *vffreader = Vf_FileInput::NewReader(inname); - if(vffreader==NULL) { // Unknown file type or other error - fprintf(stderr,"ERROR detected processing file %s\n",inname); - return Tcl_GlobalEval(interp, ab("exit 1")); - } - else { // Reader found for inname - mesh=vffreader->NewMesh(); - delete vffreader; - if(mesh==NULL) { - fprintf(stderr,"ERROR detected while reading file %s\n",inname); - return Tcl_GlobalEval(interp, ab("exit 2")); - } - } - - // Write vio file to stdout - Vf_VioFileOutput vfo; - vfo.WriteMesh(mesh,stdout,NULL); - - // That's all folks! - fflush(stdout); - return Tcl_GlobalEval(interp, ab("exit 0")); - } - - int Oc_AppMain(int argc,char **argv) - { - if(argc!=2) Usage(); - inname=argv[1]; - - Oc_Main(argc, argv, Tcl_AppInit); - return 0; - } --- 0 ---- diff -crN oommf-1.1a2/app/mmdisp/bitmap.cc oommf/app/mmdisp/bitmap.cc *** oommf-1.1a2/app/mmdisp/bitmap.cc Wed Apr 5 00:22:50 2000 --- oommf/app/mmdisp/bitmap.cc Tue Apr 4 23:20:48 2000 *************** *** 20,26 **** static REAL8m InOutTipRadius(0.075); static REAL8m DotRadius(0.025); static REAL8m CrossLineWidth(0.025); ! static REAL8m MinCrossDisplayMag(22.); static void MakeStandardDiamond(OommfPolygon& diamond) { --- 20,26 ---- static REAL8m InOutTipRadius(0.075); static REAL8m DotRadius(0.025); static REAL8m CrossLineWidth(0.025); ! static REAL8m MinCrossDisplaySize(22.); static void MakeStandardDiamond(OommfPolygon& diamond) { *************** *** 537,584 **** } } ! void OommfBitmap::DrawFilledArrow(REAL8m xc,REAL8m yc,REAL8m mag, REAL8m xcos,REAL8m ycos,REAL8m zcos, OommfPackedRGB color,BOOL antialias) ! { // Draws arrow centered at point (xc,yc) in bitmap, of size mag, // directional cosines xcos,ycos,zcos, with specified color. work_poly=default_arrow; ! REAL8m magadj=1.-zcos*zcos; ! if(magadjMinCrossDisplayMag) { work_poly=default_cross; ! work_poly.Scale(mag,mag); work_poly.Shift(xc,yc); DrawFilledPoly(work_poly,innercolor,0); } } ! void OommfBitmap::DrawSquareWithDot(REAL8m xc,REAL8m yc,REAL8m mag, OommfPackedRGB outercolor, OommfPackedRGB innercolor) { // Symbol representing in-to-plane vectors. xc=OC_ROUND(xc); yc=OC_ROUND(yc); // Make it look nice ! REAL8m radius1=ceil(InOutTipRadius*mag); DrawFilledRectangle(xc-radius1,yc-radius1,xc+radius1,yc+radius1, outercolor); ! REAL8m radius2=floor(DotRadius*mag); if(radius2>0.5) { DrawFilledRectangle(xc-radius2,yc-radius2,xc+radius2,yc+radius2, innercolor); --- 537,584 ---- } } ! void OommfBitmap::DrawFilledArrow(REAL8m xc,REAL8m yc,REAL8m size, REAL8m xcos,REAL8m ycos,REAL8m zcos, OommfPackedRGB color,BOOL antialias) ! { // Draws arrow centered at point (xc,yc) in bitmap, of specified size, // directional cosines xcos,ycos,zcos, with specified color. work_poly=default_arrow; ! REAL8m sizeadj=1.-zcos*zcos; ! if(sizeadjMinCrossDisplaySize) { work_poly=default_cross; ! work_poly.Scale(size,size); work_poly.Shift(xc,yc); DrawFilledPoly(work_poly,innercolor,0); } } ! void OommfBitmap::DrawSquareWithDot(REAL8m xc,REAL8m yc,REAL8m size, OommfPackedRGB outercolor, OommfPackedRGB innercolor) { // Symbol representing in-to-plane vectors. xc=OC_ROUND(xc); yc=OC_ROUND(yc); // Make it look nice ! REAL8m radius1=ceil(InOutTipRadius*size); DrawFilledRectangle(xc-radius1,yc-radius1,xc+radius1,yc+radius1, outercolor); ! REAL8m radius2=floor(DotRadius*size); if(radius2>0.5) { DrawFilledRectangle(xc-radius2,yc-radius2,xc+radius2,yc+radius2, innercolor); diff -crN oommf-1.1a2/app/mmdisp/bitmap.h oommf/app/mmdisp/bitmap.h *** oommf-1.1a2/app/mmdisp/bitmap.h Wed Apr 5 00:22:50 2000 --- oommf/app/mmdisp/bitmap.h Tue Apr 4 23:20:49 2000 *************** *** 134,151 **** /////// and DrawFilledPoly. It can be argued that these specialized /////// routines don't properly belong inside the OommfBitmap class. /////// ! void DrawFilledArrow(REAL8m xc,REAL8m yc,REAL8m mag, REAL8m xcos,REAL8m ycos,REAL8m zcos, OommfPackedRGB color,BOOL antialias); ! /// Draws arrow centered at point (xc,yc) in bitmap, of size mag, /// with directional cosines xcos,ycos,zcos, in the specified color. ! void DrawDiamondWithCross(REAL8m xc,REAL8m yc,REAL8m mag, OommfPackedRGB outercolor, OommfPackedRGB innercolor); /// Symbol representing out-of-plane vectors ! void DrawSquareWithDot(REAL8m xc,REAL8m yc,REAL8m mag, OommfPackedRGB outercolor, OommfPackedRGB innercolor); /// Symbol representing in-to-plane vectors. --- 134,151 ---- /////// and DrawFilledPoly. It can be argued that these specialized /////// routines don't properly belong inside the OommfBitmap class. /////// ! void DrawFilledArrow(REAL8m xc,REAL8m yc,REAL8m size, REAL8m xcos,REAL8m ycos,REAL8m zcos, OommfPackedRGB color,BOOL antialias); ! /// Draws arrow centered at point (xc,yc) in bitmap, of specified size, /// with directional cosines xcos,ycos,zcos, in the specified color. ! void DrawDiamondWithCross(REAL8m xc,REAL8m yc,REAL8m size, OommfPackedRGB outercolor, OommfPackedRGB innercolor); /// Symbol representing out-of-plane vectors ! void DrawSquareWithDot(REAL8m xc,REAL8m yc,REAL8m size, OommfPackedRGB outercolor, OommfPackedRGB innercolor); /// Symbol representing in-to-plane vectors. diff -crN oommf-1.1a2/app/mmdisp/colormap.cc oommf/app/mmdisp/colormap.cc *** oommf-1.1a2/app/mmdisp/colormap.cc Wed Apr 5 00:22:50 2000 --- oommf/app/mmdisp/colormap.cc Tue Apr 4 23:20:49 2000 *************** *** 285,293 **** if(value>255) value=255; int red,green,blue; red=blue=255-value; ! green=0; // To keep dumb compilers quiet ! if(value<128) green=255; ! else green=510-2*value; sprintf(color,"#%02X%02X%02X",red,green,blue); color[TKCOLORLENGTH+2]='\0'; // Safety return color; --- 285,292 ---- if(value>255) value=255; int red,green,blue; red=blue=255-value; ! green=255; ! if(value>127) green=510-2*value; sprintf(color,"#%02X%02X%02X",red,green,blue); color[TKCOLORLENGTH+2]='\0'; // Safety return color; diff -crN oommf-1.1a2/app/mmdisp/ctrlwbrowse.tcl oommf/app/mmdisp/ctrlwbrowse.tcl *** oommf-1.1a2/app/mmdisp/ctrlwbrowse.tcl Wed Apr 5 00:22:50 2000 --- oommf/app/mmdisp/ctrlwbrowse.tcl Tue Apr 4 23:20:49 2000 *************** *** 2,8 **** # # Control box sub-widget with browse option # ! # Callback ACTIONID's: RESCAN, SELECT, CANCEL # Note: It is the resposibility of the client to check # the value of -browse_state on receipt of a SELECT callback, # and perform a widget delete operation as necessary. --- 2,8 ---- # # Control box sub-widget with browse option # ! # Callback ACTIONID's: RESCAN, SELECT, CLOSE # Note: It is the resposibility of the client to check # the value of -browse_state on receipt of a SELECT callback, # and perform a widget delete operation as necessary. *************** *** 48,55 **** -command "$this UserRequest RESCAN" button $winpath.b01 -text "OK" \ -command "$this UserRequest OK" ! button $winpath.b11 -text "Cancel" \ ! -command "$this UserRequest CANCEL" # Setup .b11's text to depend on browse state trace variable [$this GlobalName browse_state] w \ --- 48,55 ---- -command "$this UserRequest RESCAN" button $winpath.b01 -text "OK" \ -command "$this UserRequest OK" ! button $winpath.b11 -text "Close" \ ! -command "$this UserRequest CLOSE" # Setup .b11's text to depend on browse state trace variable [$this GlobalName browse_state] w \ *************** *** 75,81 **** switch -exact -- $request { RESCAN { eval $callback $this RESCAN } OK { eval $callback $this SELECT } ! CANCEL { eval $callback $this CANCEL } default {} } } --- 75,81 ---- switch -exact -- $request { RESCAN { eval $callback $this RESCAN } OK { eval $callback $this SELECT } ! CLOSE { eval $callback $this CLOSE } default {} } } *************** *** 89,95 **** if {$browse_state} { $winpath.b11 configure -text Dismiss } else { ! $winpath.b11 configure -text Cancel } } Destructor { --- 89,95 ---- if {$browse_state} { $winpath.b11 configure -text Dismiss } else { ! $winpath.b11 configure -text Close } } Destructor { diff -crN oommf-1.1a2/app/mmdisp/display.cc oommf/app/mmdisp/display.cc *** oommf-1.1a2/app/mmdisp/display.cc Wed Apr 5 00:22:50 2000 --- oommf/app/mmdisp/display.cc Tue Apr 4 23:20:49 2000 *************** *** 24,30 **** displaystate=1; autosample=0; subsample=0.0; ! mag=1.0; antialias=0; colormap.Setup(256,"Red-Black-Blue"); } --- 24,30 ---- displaystate=1; autosample=0; subsample=0.0; ! size=1.0; antialias=0; colormap.Setup(256,"Red-Black-Blue"); } *************** *** 34,40 **** displaystate=pc.displaystate; autosample=pc.autosample; subsample=pc.subsample; ! mag=pc.mag; antialias=pc.antialias; colorquantity=pc.colorquantity; colormap=pc.colormap; --- 34,40 ---- displaystate=pc.displaystate; autosample=pc.autosample; subsample=pc.subsample; ! size=pc.size; antialias=pc.antialias; colorquantity=pc.colorquantity; colormap=pc.colormap; *************** *** 89,94 **** --- 89,109 ---- const REAL4m DisplayFrame::default_arrow_ratio=REAL4m(0.85); const REAL4m DisplayFrame::default_pixel_ratio=REAL4m(1.00); + void DisplayFrame::SetMesh(Vf_Mesh *newmesh) { + mesh=newmesh; + arrow_valid=pixel_valid=boundary_valid=0; + BOOL active; + REAL8 minmag,maxmag; + mesh->GetMagHints(active,minmag,maxmag); + if(!active) { + // Assume MagHints aren't being used because they weren't specified + // in the input file. Set MagHints from mesh data. + maxmag=mesh->GetMaxMag(); + minmag=maxmag*1e-8; // Arbitrary + mesh->SetMagHints(minmag,maxmag); + } + } + void DisplayFrame::SetPreferredArrowCellsize(REAL4m pixels) { if(pixels>0. && preferred_arrow_cellsize!=pixels) { *************** *** 474,480 **** REAL8m DisplayFrame::GetPixelSize() const { REAL8m pixelsize=mesh->GetApproximateCellWidth() ! * default_pixel_ratio * pixel_config.mag / mesh_per_pixel; if(pixel_sample.subsample>1.) pixelsize*=pixel_sample.subsample; return pixelsize; --- 489,495 ---- REAL8m DisplayFrame::GetPixelSize() const { REAL8m pixelsize=mesh->GetApproximateCellWidth() ! * default_pixel_ratio * pixel_config.size / mesh_per_pixel; if(pixel_sample.subsample>1.) pixelsize*=pixel_sample.subsample; return pixelsize; *************** *** 482,488 **** REAL8m DisplayFrame::GetArrowSize() const { REAL8m arrowsize=mesh->GetApproximateCellWidth() ! * default_arrow_ratio * arrow_config.mag / mesh_per_pixel; if(arrow_sample.subsample>1.) arrowsize*=arrow_sample.subsample; return arrowsize; --- 497,503 ---- REAL8m DisplayFrame::GetArrowSize() const { REAL8m arrowsize=mesh->GetApproximateCellWidth() ! * default_arrow_ratio * arrow_config.size / mesh_per_pixel; if(arrow_sample.subsample>1.) arrowsize*=arrow_sample.subsample; return arrowsize; *************** *** 1013,1016 **** --- 1028,1062 ---- return total_box; } + REAL8m DisplayFrame::GetDefaultValueScaling() const { + REAL8m scale=mesh->GetValueMultiplier(); + BOOL active; + REAL8 minmag,maxmag; + mesh->GetMagHints(active,minmag,maxmag); + if(active && maxmag>0.0) scale*=maxmag; + return scale; + } + + REAL8m DisplayFrame::GetValueScaling() const { + REAL8m scale=mesh->GetValueMultiplier()*mesh->GetRelativeValueScale(); + BOOL active; + REAL8 minmag,maxmag; + mesh->GetMagHints(active,minmag,maxmag); + if(active && maxmag>0.0) scale*=maxmag; + return scale; + } + + INT4m DisplayFrame::SetValueScaling(REAL8m newscaling) { + INT4m errcode=1; + REAL8m default_scaling=GetDefaultValueScaling(); + if(default_scaling>0.0) { + errcode=0; + newscaling/=default_scaling; + if(newscaling!=mesh->GetRelativeValueScale()) { + errcode=mesh->SetRelativeValueScale(newscaling); + arrow_valid=pixel_valid=0; + } + } + return errcode; + } diff -crN oommf-1.1a2/app/mmdisp/display.h oommf/app/mmdisp/display.h *** oommf-1.1a2/app/mmdisp/display.h Wed Apr 5 00:22:50 2000 --- oommf/app/mmdisp/display.h Tue Apr 4 23:20:49 2000 *************** *** 35,42 **** /// Also if subsample<1, then features will be scaled as /// though subsample==1. ! REAL4m mag; // Item magnification, relative to its ! /// "standard size". The drawn size depends upon mag, /// subsample, and the "standard size". BOOL antialias; // 1=> Do antialiasing, 0=> don't. May be ignored --- 35,42 ---- /// Also if subsample<1, then features will be scaled as /// though subsample==1. ! REAL4m size; // Item magnification, relative to its ! /// "standard size". The drawn size depends upon size, /// subsample, and the "standard size". BOOL antialias; // 1=> Do antialiasing, 0=> don't. May be ignored *************** *** 155,164 **** public: DisplayFrame(); ! void SetMesh(Vf_Mesh *newmesh) { ! mesh=newmesh; ! arrow_valid=pixel_valid=boundary_valid=0; ! } void SetTclInterp(Tcl_Interp *newinterp) { tcl_interp=newinterp; } void GetPlotConfiguration(PlotConfiguration& _arrow_config, --- 155,163 ---- public: DisplayFrame(); ! ! void SetMesh(Vf_Mesh *newmesh); ! void SetTclInterp(Tcl_Interp *newinterp) { tcl_interp=newinterp; } void GetPlotConfiguration(PlotConfiguration& _arrow_config, *************** *** 223,228 **** --- 222,234 ---- Nb_BoundingBox GetDisplayBox() const; /// Returns extents of mesh, in pixels (at current zoom). + + const char* GetValueUnit() const { return mesh->GetValueUnit(); } + + REAL8m GetDefaultValueScaling() const; + REAL8m GetValueScaling() const; + INT4m SetValueScaling(REAL8m newscaling); + }; #endif // DISPLAY_H diff -crN oommf-1.1a2/app/mmdisp/fixbox.tcl oommf/app/mmdisp/fixbox.tcl *** oommf-1.1a2/app/mmdisp/fixbox.tcl Wed Apr 5 00:22:50 2000 --- oommf/app/mmdisp/fixbox.tcl Wed Dec 31 19:00:00 1969 *************** *** 1,76 **** - # FILE: fixbox.tcl - # - # Open parameter "fixed" option box for mmDisp File|Open dialog - # - # NOTE: This subwidget does not make callbacks. - - Oc_Class FixBox { - const public variable winpath - const public variable outer_frame_options = "-bd 4 -relief ridge" - public variable subsample = 0 - public variable arrowmag = 0 - public variable zoom = 0 - public variable callback = Oc_Nop - Constructor {basewinpath args} { - if {![string match {.} \ - [string index $basewinpath \ - [expr [string length $basewinpath]-1]]]} { - append basewinpath {.} - } - eval $this Configure -winpath ${basewinpath}w$this $args - - # Temporarily disable callbacks until construction is complete - set callback_keep $callback ; set callback Oc_Nop - - # Pack entire subwidget into a subframe. - eval frame $winpath $outer_frame_options - set innerframe [frame $winpath.innerframe -relief raised -bd 2] - set checkframe [frame $winpath.checkframe -relief sunken -bd 2] - - set fixlabel [label $winpath.label -text "Fix:" \ - -relief flat -padx 4 -pady 4] - - set but1 [checkbutton $winpath.btn1 -text "Subsample" \ - -relief flat -anchor w \ - -variable [$this GlobalName subsample]] - set but2 [checkbutton $winpath.btn2 -text "Arrow mag" \ - -relief flat -anchor w \ - -variable [$this GlobalName arrowmag]] - set but3 [checkbutton $winpath.btn3 -text "Zoom" \ - -relief flat -anchor w \ - -variable [$this GlobalName zoom]] - - pack $innerframe - pack $fixlabel $checkframe -in $innerframe \ - -side left -anchor ne - pack $but1 $but2 $but3 -in $checkframe \ - -side top -expand 1 -fill both - - # Widget bindings - bind $winpath "$this WinDestroy %W" - - # Re-enable callbacks - set callback $callback_keep - } - method GetState {} { subsample arrowmag zoom } { - set statelist {} - foreach i { subsample arrowmag zoom } { - lappend statelist -$i [set $i] - } - return $statelist - } - method WinDestroy { w } { winpath } { - if {[info exists winpath] && [string compare $winpath $w]!=0} { - return ;# Child destroy event - } - $this Delete - } - Destructor { - if {[info exists winpath] && [winfo exists $winpath]} { - # Remove binding - bind $winpath {} - # Destroy instance frame, all children, and bindings - destroy $winpath - } - } - } --- 0 ---- diff -crN oommf-1.1a2/app/mmdisp/makerules.tcl oommf/app/mmdisp/makerules.tcl *** oommf-1.1a2/app/mmdisp/makerules.tcl Wed Apr 5 00:22:50 2000 --- oommf/app/mmdisp/makerules.tcl Tue Apr 4 23:20:49 2000 *************** *** 11,30 **** # ######################################################################## ! set mmdispObjects { mmdispcmds bitmap colormap display } - set allObjects [concat avf2ovf avf2ppm avf2vio avf2ave mmdispsh $mmdispObjects] - MakeRule Define { -targets all ! -dependencies [concat configure \ ! [Platform Executables {avf2ovf avf2ppm avf2vio avf2ave} ] \ ! [Platform Specific appindex.tcl]] } MakeRule Define { --- 11,27 ---- # ######################################################################## ! set allObjects { mmdispcmds + mmdispsh bitmap colormap display } MakeRule Define { -targets all ! -dependencies [concat configure [Platform Specific appindex.tcl]] } MakeRule Define { *************** *** 49,107 **** # Could use better support for this: MakeRule Define { -targets [Platform Specific appindex.tcl] ! -dependencies [Platform Executables {mmdispsh avf2ave avf2ovf ! avf2ppm avf2vio} ] -script {puts "Updating [Platform Specific appindex.tcl]" set f [open [Platform Specific appindex.tcl] w] puts $f [format { Oc_Application Define { -name mmDispSh ! -version 1.1.0.2 ! -machine %s ! -file "%s" ! } ! Oc_Application Define { ! -name avf2ave ! -version 1.1.0.2 -machine %s -file "%s" } Oc_Application Define { ! -name avf2ovf ! -version 1.1.0.2 ! -machine %s ! -file "%s" ! } ! Oc_Application Define { ! -name avf2ppm ! -version 1.1.0.2 ! -machine %s ! -file "%s" ! } ! Oc_Application Define { ! -name avf2vio ! -version 1.1.0.2 -machine %s -file "%s" } } [Platform Name] \ [file tail [Platform Executables mmdispsh]] \ ! [Platform Name] \ ! [file tail [Platform Executables avf2ave]] \ ! [Platform Name] \ ! [file tail [Platform Executables avf2ovf]] \ ! [Platform Name] \ ! [file tail [Platform Executables avf2ppm]] \ ! [Platform Name] \ ! [file tail [Platform Executables avf2vio]]] close $f } } MakeRule Define { -targets [Platform Executables mmdispsh] ! -dependencies [concat [Platform Objects $mmdispObjects] \ ! [Platform Objects mmdispsh] \ [Platform StaticLibraries {vf nb oc}] \ [list [file join .. .. ext oc tclIndex] \ [file join .. .. ext ow tclIndex] \ --- 46,78 ---- # Could use better support for this: MakeRule Define { -targets [Platform Specific appindex.tcl] ! -dependencies [Platform Executables {condispsh mmdispsh}] -script {puts "Updating [Platform Specific appindex.tcl]" set f [open [Platform Specific appindex.tcl] w] puts $f [format { Oc_Application Define { -name mmDispSh ! -version 1.1.1.0 -machine %s -file "%s" } Oc_Application Define { ! -name conDispSh ! -version 1.1.1.0 -machine %s -file "%s" } } [Platform Name] \ [file tail [Platform Executables mmdispsh]] \ ! [Platform Name] \ ! [file tail [Platform Executables condispsh]]] close $f } } MakeRule Define { -targets [Platform Executables mmdispsh] ! -dependencies [concat [Platform Objects $allObjects] \ [Platform StaticLibraries {vf nb oc}] \ [list [file join .. .. ext oc tclIndex] \ [file join .. .. ext ow tclIndex] \ *************** *** 109,169 **** [file join .. .. ext vf tclIndex] \ tclIndex]] -script [format { ! Platform Link -obj {mmdispsh %s} \ ! -lib {vf nb oc tk} \ -sub WINDOWS -out mmdispsh ! } $mmdispObjects] ! } ! ! MakeRule Define { ! -targets [Platform Executables avf2ovf] ! -dependencies [concat [Platform Objects avf2ovf] \ ! [Platform StaticLibraries {vf nb oc} ]] ! -script [format { ! Platform Link -obj {%s} \ ! -lib {vf nb oc tk} \ ! -sub WINDOWS -out avf2ovf ! } avf2ovf] ! } ! ! set avf2ppmObjects { ! avf2ppm ! bitmap ! colormap ! display ! } ! ! MakeRule Define { ! -targets [Platform Executables avf2ppm] ! -dependencies [concat [Platform Objects $avf2ppmObjects] \ ! [Platform StaticLibraries {vf nb oc} ]] ! -script [format { ! Platform Link -obj {%s} \ ! -lib {vf nb oc tk} \ ! -sub WINDOWS -out avf2ppm ! } $avf2ppmObjects ] ! } ! ! MakeRule Define { ! -targets [Platform Executables avf2vio] ! -dependencies [concat [Platform Objects avf2vio] \ ! [Platform StaticLibraries {vf nb oc} ]] ! -script [format { ! Platform Link -obj {%s} \ ! -lib {vf nb oc tk} \ ! -sub WINDOWS -out avf2vio ! } avf2vio] } MakeRule Define { ! -targets [Platform Executables avf2ave] ! -dependencies [concat [Platform Objects avf2ave] \ ! [Platform StaticLibraries {vf nb oc} ]] -script [format { ! Platform Link -obj {%s} \ ! -lib {vf nb oc tk} \ ! -sub WINDOWS -out avf2ave ! } avf2ave] } foreach o $allObjects { --- 80,103 ---- [file join .. .. ext vf tclIndex] \ tclIndex]] -script [format { ! Platform Link -obj {%s} -lib {vf nb oc tk} \ -sub WINDOWS -out mmdispsh ! } $allObjects] } MakeRule Define { ! -targets [Platform Executables condispsh] ! -dependencies [concat [Platform Objects $allObjects] \ ! [Platform StaticLibraries {vf nb oc}] \ ! [list [file join .. .. ext oc tclIndex] \ ! [file join .. .. ext ow tclIndex] \ ! [file join .. .. ext net tclIndex] \ ! [file join .. .. ext vf tclIndex] \ ! tclIndex]] -script [format { ! Platform Link -obj {%s} -lib {vf nb oc tk} \ ! -sub CONSOLE -out condispsh ! } $allObjects] } foreach o $allObjects { *************** *** 173,179 **** [[CSourceFile New _ $o.cc] Dependencies]] -script [format {Platform Compile C++ -opt 1 \ -inc [[CSourceFile New _ %s.cc] DepPath] \ ! -src %s.cc -out %s } $o $o $o] } } --- 107,113 ---- [[CSourceFile New _ $o.cc] Dependencies]] -script [format {Platform Compile C++ -opt 1 \ -inc [[CSourceFile New _ %s.cc] DepPath] \ ! -out %s -src %s.cc } $o $o $o] } } *************** *** 183,188 **** --- 117,124 ---- -script {DeleteFiles avftoave.cc avftoovf.cc avftovio.cc DeleteFiles mmdinit.cc mmdinit.h mmdisp.cc DeleteFiles mmdisp.h mmdisp.tcl + DeleteFiles avf2ave.cc avf2ovf.cc avf2vio.cc + DeleteFiles avf2ppm.cc avf2ppm.tcl avf2ppm.def } } *************** *** 201,208 **** -targets mostlyclean -dependencies objclean -script {eval DeleteFiles [concat tclIndex \ ! [Platform Specific appindex.tcl] [Platform \ ! Executables {avf2ppm avf2ovf avf2vio avf2ave mmdisp mmdispsh} ]]} } MakeRule Define { --- 137,145 ---- -targets mostlyclean -dependencies objclean -script {eval DeleteFiles [concat tclIndex \ ! [Platform Specific appindex.tcl] \ ! [Platform Executables condispsh] \ ! [Platform Executables mmdispsh] ]} } MakeRule Define { *************** *** 214,217 **** } unset allObjects - unset mmdispObjects --- 151,153 ---- diff -crN oommf-1.1a2/app/mmdisp/mmdispcmds.cc oommf/app/mmdisp/mmdispcmds.cc *** oommf-1.1a2/app/mmdisp/mmdispcmds.cc Wed Apr 5 00:22:51 2000 --- oommf/app/mmdisp/mmdispcmds.cc Tue Apr 4 23:20:49 2000 *************** *** 14,19 **** --- 14,20 ---- #include "mmdispcmds.h" #include "display.h" /* DisplayFrame, CoordinateSystem */ + #include "bitmap.h" /* End includes */ *************** *** 81,87 **** { Tcl_ResetResult(interp); if(argc!=2) { ! sprintf(buf,"SetMeshTitle must be called with 1 argument:" " A 3 element list representing a vector" " (%d arguments passed)",argc-1); Tcl_AppendResult(interp,buf,(char *)NULL); --- 82,88 ---- { Tcl_ResetResult(interp); if(argc!=2) { ! sprintf(buf,"GetVecColor must be called with 1 argument:" " A 3 element list representing a vector" " (%d arguments passed)",argc-1); Tcl_AppendResult(interp,buf,(char *)NULL); *************** *** 374,383 **** if(cptr!=NULL && *cptr!='\0') arrow_config.subsample=Nb_Atof(cptr); ! cptr=Tcl_GetVar2(interp,ab1("plot_config"),ab2("arrow,mag"), TCL_GLOBAL_ONLY); if(cptr!=NULL && *cptr!='\0') ! arrow_config.mag=Nb_Atof(cptr); --- 375,384 ---- if(cptr!=NULL && *cptr!='\0') arrow_config.subsample=Nb_Atof(cptr); ! cptr=Tcl_GetVar2(interp,ab1("plot_config"),ab2("arrow,size"), TCL_GLOBAL_ONLY); if(cptr!=NULL && *cptr!='\0') ! arrow_config.size=Nb_Atof(cptr); *************** *** 407,416 **** if(cptr!=NULL && *cptr!='\0') pixel_config.subsample=Nb_Atof(cptr); ! cptr=Tcl_GetVar2(interp,ab1("plot_config"),ab2("pixel,mag"), TCL_GLOBAL_ONLY); if(cptr!=NULL && *cptr!='\0') ! pixel_config.mag=Nb_Atof(cptr); // Misc. cptr=Tcl_GetVar2(interp,ab1("plot_config"),ab2("misc,drawboundary"), --- 408,417 ---- if(cptr!=NULL && *cptr!='\0') pixel_config.subsample=Nb_Atof(cptr); ! cptr=Tcl_GetVar2(interp,ab1("plot_config"),ab2("pixel,size"), TCL_GLOBAL_ONLY); if(cptr!=NULL && *cptr!='\0') ! pixel_config.size=Nb_Atof(cptr); // Misc. cptr=Tcl_GetVar2(interp,ab1("plot_config"),ab2("misc,drawboundary"), *************** *** 505,517 **** return TCL_OK; } ! int GetFrameScale(ClientData,Tcl_Interp *interp, ! int argc,char** argv) { Tcl_ResetResult(interp); if(argc!=2) { ! sprintf(buf,"GetFrameScale must be called with" ! " 1 argument: name of Tk's FrameScale variable" " (%d arguments passed)",argc-1); Tcl_AppendResult(interp,buf,(char *)NULL); return TCL_ERROR; --- 506,517 ---- return TCL_OK; } ! int GetZoom(ClientData,Tcl_Interp *interp,int argc,char** argv) { Tcl_ResetResult(interp); if(argc!=2) { ! sprintf(buf,"GetZoom must be called with" ! " 1 argument: name of zoom variable" " (%d arguments passed)",argc-1); Tcl_AppendResult(interp,buf,(char *)NULL); return TCL_ERROR; *************** *** 523,541 **** return TCL_OK; } ! int SetFrameScale(ClientData,Tcl_Interp *interp, int argc,char** argv) { Tcl_ResetResult(interp); if(argc<2 || argc>3) { ! sprintf(buf,"SetFrameScale must be called with" ! " either 1 or 2 arguments: " " (%d arguments passed)",argc-1); Tcl_AppendResult(interp,buf,(char *)NULL); return TCL_ERROR; } ! // Change scale in display list REAL4m newzoom; if(argc==2) newzoom=myFrame.SetZoom(Nb_Atof(argv[1])); else newzoom=myFrame.SetZoom(Nb_Atof(argv[1]),Nb_Atof(argv[2])); --- 523,541 ---- return TCL_OK; } ! int SetZoom(ClientData,Tcl_Interp *interp, int argc,char** argv) { Tcl_ResetResult(interp); if(argc<2 || argc>3) { ! sprintf(buf,"SetZoom must be called with" ! " either 1 or 2 arguments: " " (%d arguments passed)",argc-1); Tcl_AppendResult(interp,buf,(char *)NULL); return TCL_ERROR; } ! // Change mesh scale in display list REAL4m newzoom; if(argc==2) newzoom=myFrame.SetZoom(Nb_Atof(argv[1])); else newzoom=myFrame.SetZoom(Nb_Atof(argv[1]),Nb_Atof(argv[2])); *************** *** 546,551 **** --- 546,666 ---- return TCL_OK; } + int GetDataValueUnit(ClientData,Tcl_Interp *interp, + int argc,char**) + { + Tcl_ResetResult(interp); + if(argc!=1) { + sprintf(buf,"GetDataValueUnit must be called with" + " no arguments (%d arguments passed).",argc-1); + Tcl_AppendResult(interp,buf,(char *)NULL); + return TCL_ERROR; + } + + sprintf(buf,"%.*s",MY_BUF_SIZE,myFrame.GetValueUnit()); + Tcl_AppendResult(interp,buf,(char *)NULL); + + return TCL_OK; + } + + int GetDefaultDataValueScaling(ClientData,Tcl_Interp *interp, + int argc,char**) + { + Tcl_ResetResult(interp); + if(argc!=1) { + sprintf(buf,"GetDefaultDataValueScaling must be called with" + " no arguments (%d arguments passed).",argc-1); + Tcl_AppendResult(interp,buf,(char *)NULL); + return TCL_ERROR; + } + + sprintf(buf,"%.6g",myFrame.GetDefaultValueScaling()); + Tcl_AppendResult(interp,buf,(char *)NULL); + + return TCL_OK; + } + + int GetDataValueScaling(ClientData,Tcl_Interp *interp, + int argc,char**) + { + Tcl_ResetResult(interp); + if(argc!=1) { + sprintf(buf,"GetDataValueScaling must be called with" + " no arguments (%d arguments passed).",argc-1); + Tcl_AppendResult(interp,buf,(char *)NULL); + return TCL_ERROR; + } + + sprintf(buf,"%.6g",myFrame.GetValueScaling()); + Tcl_AppendResult(interp,buf,(char *)NULL); + + return TCL_OK; + } + + + int SetDataValueScaling(ClientData,Tcl_Interp *interp, + int argc,char** argv) + { + // Adjust data value scaling + Tcl_ResetResult(interp); + if(argc!=2) { + sprintf(buf,"SetDataValueScale must be called with" + " 1 arguments: " + " (%d arguments passed)",argc-1); + Tcl_AppendResult(interp,buf,(char *)NULL); + return TCL_ERROR; + } + + REAL8m newscale=myFrame.SetValueScaling(Nb_Atof(argv[1])); + sprintf(buf,"%g",newscale); + Tcl_SetResult(interp,buf,TCL_VOLATILE); + + return TCL_OK; + } + + int WriteMeshUsingDeprecatedVIOFormat(ClientData,Tcl_Interp *interp, + int argc,char** argv) + { + Tcl_ResetResult(interp); + if(argc != 2) { + sprintf(buf,"WriteMesh must be called with" + " 1 argument: filename" + " (%d arguments passed)",argc-1); + Tcl_AppendResult(interp,buf,(char *)NULL); + return TCL_ERROR; + } + + int errcode=TCL_OK; + + // Open file + FILE *fptr; + if (argv[1][0] == '\0') { + fptr=stdout; + } else { + fptr=Nb_FOpen(argv[1],"wb"); + } + if(fptr==NULL) { + sprintf(buf,"Error in %s: Unable to open file %s for output", + argv[0], argv[1]); + Tcl_AppendResult(interp,buf,(char *)NULL); + errcode=TCL_ERROR; + } + else { + Vf_VioFileOutput vfo; + if(vfo.WriteMesh(myMesh,fptr,NULL)!=0) { + sprintf(buf,"WriteMesh error"); + Tcl_AppendResult(interp,buf,(char *)NULL); + errcode=TCL_ERROR; + } + fflush(fptr); + if (argv[1][0] != '\0') { + fclose(fptr); + } + } + + return errcode; + } + int WriteMesh(ClientData,Tcl_Interp *interp, int argc,char** argv) { *************** *** 573,582 **** if(argc>5) desc=argv[5]; // Open file ! FILE *fptr=Nb_FOpen(argv[1],"wb"); if(fptr==NULL) { ! sprintf(buf,"Error in WriteMesh: Unable to open file %s for output", ! argv[1]); Tcl_AppendResult(interp,buf,(char *)NULL); errcode=TCL_ERROR; } --- 688,702 ---- if(argc>5) desc=argv[5]; // Open file ! FILE *fptr; ! if (argv[1][0] == '\0') { ! fptr=stdout; ! } else { ! fptr=Nb_FOpen(argv[1],"wb"); ! } if(fptr==NULL) { ! sprintf(buf,"Error in %s: Unable to open file %s for output", ! argv[0], argv[1]); Tcl_AppendResult(interp,buf,(char *)NULL); errcode=TCL_ERROR; } *************** *** 587,598 **** Tcl_AppendResult(interp,buf,(char *)NULL); errcode=TCL_ERROR; } ! fclose(fptr); } return errcode; } static void CleanupMesh(ClientData) { --- 707,971 ---- Tcl_AppendResult(interp,buf,(char *)NULL); errcode=TCL_ERROR; } ! fflush(fptr); ! if (argv[1][0] != '\0') { ! fclose(fptr); ! } } return errcode; } + int + WriteMeshAverages(ClientData, Tcl_Interp *interp, int argc, char** argv) + { + Tcl_Channel channel; + int mode; + + Tcl_ResetResult(interp); + if(argc!=2) { + sprintf(buf,"WriteMeshAverages must be called with 1 argument:" + " an output channel (%d arguments passed)",argc-1); + Tcl_AppendResult(interp,buf,(char *)NULL); + return TCL_ERROR; + } + if ((channel = Tcl_GetChannel(interp, argv[1], &mode)) == NULL) { + return TCL_ERROR; + } + if (!(mode & TCL_WRITABLE)) { + sprintf(buf,"%s is not a writable channel", argv[1]); + Tcl_AppendResult(interp,buf,(char *)NULL); + return TCL_ERROR; + } + + // Is this a rectangular mesh? + if(strcmp(myMesh->GetMeshType(),"Vf_GridVec3f")!=0) { + sprintf(buf,"Invalid mesh type: %s\n",myMesh->GetMeshType()); + Tcl_AppendResult(interp,buf,(char *)NULL); + return TCL_ERROR; + } + + // Downcast + Vf_GridVec3f& grid = *((Vf_GridVec3f *)myMesh); + + // Collect and print x-data + int i,j,k,isize,jsize,ksize; + grid.GetDimens(isize,jsize,ksize); + if(isize<1 || jsize<1 || ksize<1) { + sprintf(buf,"Bad mesh dimensions: %d %d %d",isize,jsize,ksize); + Tcl_AppendResult(interp,buf,(char *)NULL); + return TCL_ERROR; + } + Nb_Vec3 *m=new Nb_Vec3[isize]; + for(i=0;i base=grid.GetBasePoint(); + Nb_Vec3 step=grid.GetGridStep(); + + double mult=(1./double(jsize*ksize)); + sprintf(buf,"# Averages across x axis (%d points each)\n", jsize*ksize); + Tcl_Write(channel, buf, strlen(buf)); + for(i=0;i[jsize]; + for(j=0;j[isize]; + for(k=0;k bbox; + Nb_Vec3 minpt, maxpt; + Oc_AutoBuf ab1, ab2; + Tcl_HashTable *tablePtr = (Tcl_HashTable *)clientData; + Tcl_HashEntry *entryPtr; + Tcl_Channel channel; + + if (argc < 2) { + sprintf(buf, "wrong # args: should be \"%s option bitmapName" + " ?arg ...?\"", argv[0]); + Tcl_AppendResult(interp, buf, (char *) NULL); + return TCL_ERROR; + } + c = argv[1][0]; + if ((c == 'C') && (strcmp(argv[1], "Create") == 0)) { + if (argc != 3) { + sprintf(buf, "wrong # args: should be \"%s Create bitmapName\"", + argv[0]); + Tcl_AppendResult(interp, buf, (char *) NULL); + return TCL_ERROR; + } + entryPtr = Tcl_CreateHashEntry(tablePtr, argv[2], &isNew); + if (!isNew) { + sprintf(buf, "bitmap \"%s\" already exists", argv[2]); + Tcl_AppendResult(interp, buf, (char *) NULL); + return TCL_ERROR; + } + + // Create a new OommfBitmap from the global DisplayFrame + bitmapPtr = new OommfBitmap; + + margin = atoi(Tcl_GetVar2(interp, ab1("plot_config"), + ab2("misc,margin"), TCL_GLOBAL_ONLY)); + width = atoi(Tcl_GetVar2(interp, ab1("plot_config"), + ab2("misc,width"), TCL_GLOBAL_ONLY)); + height = atoi(Tcl_GetVar2(interp, ab1("plot_config"), + ab2("misc,height"), TCL_GLOBAL_ONLY)); + crop = atoi(Tcl_GetVar2(interp, ab1("plot_config"), + ab2("misc,crop"), TCL_GLOBAL_ONLY)); + + bbox = myFrame.GetDisplayBox(); + bbox.GetExtremes(minpt, maxpt); + xmin = int(floor(minpt.x)) - margin; + ymin = int(floor(minpt.y)) - margin; + xmax = int(ceil(maxpt.x)) + margin; + ymax = int(ceil(maxpt.y)) + margin; + xmarginadj = (xmax - xmin + 1) - width; + ymarginadj = (ymax - ymin + 1) - height; + if(xmarginadj>0) { + // Resulting size is bigger than requested. Trim. + xmin += int(floor(xmarginadj/2.)); + xmax -= int(ceil(xmarginadj/2.)); + } + if(ymarginadj>0) { + // Resulting size is bigger than requested. Trim. + ymin += int(floor(ymarginadj/2.)); + ymax -= int(ceil(ymarginadj/2.)); + } + if(!crop) { + // No-crop request, so make bitmap exact size requested + xmax = xmin + width - 1; + ymax = ymin + height - 1; + } + bitmapPtr->Setup(xmin,ymin,xmax,ymax); + myFrame.FillBitmap(*bitmapPtr); + Tcl_SetHashValue(entryPtr, (ClientData)bitmapPtr); + return TCL_OK; + } + if ((c == 'D') && (strcmp(argv[1], "Delete") == 0)) { + if (argc != 3) { + sprintf(buf, "wrong # args: should be \"%s Delete bitmapName\"", + argv[0]); + Tcl_AppendResult(interp, buf, (char *) NULL); + return TCL_ERROR; + } + entryPtr = Tcl_FindHashEntry(tablePtr, argv[2]); + if (entryPtr == NULL) { + sprintf(buf, "can't find bitmap \"%s\"", argv[2]); + Tcl_AppendResult(interp, buf, (char *) NULL); + return TCL_ERROR; + } + Tcl_DeleteHashEntry(entryPtr); + return TCL_OK; + } + if ((c == 'W') && (strcmp(argv[1], "Write") == 0)) { + if (argc != 5) { + sprintf(buf, "wrong # args: should be " + "\"%s Write bitmapName format channel\"", argv[0]); + Tcl_AppendResult(interp, buf, (char *) NULL); + return TCL_ERROR; + } + if ((channel = Tcl_GetChannel(interp, argv[4], &mode)) == NULL) { + return TCL_ERROR; + } + if (!(mode & TCL_WRITABLE)) { + sprintf(buf,"%s is not a writable channel", argv[4]); + Tcl_AppendResult(interp, buf, (char *) NULL); + return TCL_ERROR; + } + entryPtr = Tcl_FindHashEntry(tablePtr, argv[2]); + if (entryPtr == NULL) { + sprintf(buf, "can't find bitmap \"%s\"", argv[2]); + Tcl_AppendResult(interp, buf, (char *) NULL); + return TCL_ERROR; + } + bitmapPtr = (OommfBitmap *) Tcl_GetHashValue(entryPtr); + if ( strcmp("P3", argv[3]) == 0) { + bitmapPtr->WritePPMChannel(channel, 3); + return TCL_OK; + } + if ( strcmp("P6", argv[3]) == 0) { + bitmapPtr->WritePPMChannel(channel, 6); + return TCL_OK; + } + if ( strcmp("B24", argv[3]) == 0) { + bitmapPtr->WriteBMPChannel(channel, 24); + return TCL_OK; + } + sprintf(buf, "ERROR: Unknown file format request: %s\n", argv[3]); + Tcl_AppendResult(interp, buf, (char *) NULL); + return TCL_ERROR; + } + sprintf(buf,"bad option \"%s\": must be Create, Delete, or Write",argv[1]); + Tcl_AppendResult(interp, buf, (char *) NULL); + return TCL_ERROR; + } + + void + BitmapDeleteProc(ClientData clientData) + { + Tcl_HashTable *tablePtr = (Tcl_HashTable *) clientData; + Tcl_HashEntry *entryPtr; + Tcl_HashSearch searchId; + OommfBitmap *bitmapPtr; + + for (entryPtr = Tcl_FirstHashEntry(tablePtr, &searchId); + entryPtr != NULL; entryPtr = Tcl_NextHashEntry(&searchId)) { + bitmapPtr = (OommfBitmap *) Tcl_GetHashValue(entryPtr); + delete bitmapPtr; + } + Tcl_DeleteHashTable(tablePtr); + delete tablePtr; + } + static void CleanupMesh(ClientData) { *************** *** 608,613 **** --- 981,987 ---- return TCL_ERROR Oc_AutoBuf ab1,ab2; + Tcl_HashTable *bitmapTablePtr; // Verify run-time and compile-time versions of required support // extensions match. *************** *** 619,632 **** // Tcl_AppendResult(interp, ab1(")"), NULL); // } ! if (Tcl_PkgRequire(interp, ab1("Oc"), ab2("1.1"), 0) == NULL) { Tcl_AppendResult(interp, ab1("\n\t(Mmdispcmds " MMDISPCMDS_VERSION ! " needs Oc 1.1)"), NULL); RETURN_TCL_ERROR; } ! if (Tcl_PkgRequire(interp, ab1("Vf"), ab2("1.1.0.2"), 0) == NULL) { Tcl_AppendResult(interp, ab1("\n\t(Mmdispcmds " MMDISPCMDS_VERSION ! " needs Vf 1.1.0.2)"), NULL); RETURN_TCL_ERROR; } --- 993,1013 ---- // Tcl_AppendResult(interp, ab1(")"), NULL); // } ! /* ! * Need at least Oc 1.1.1.0 to get Oc_Config's compiletime_* features ! */ ! if (Tcl_PkgRequire(interp, ab1("Oc"), ab2("1.1.1.0"), 0) == NULL) { Tcl_AppendResult(interp, ab1("\n\t(Mmdispcmds " MMDISPCMDS_VERSION ! " needs Oc 1.1.1.0)"), NULL); RETURN_TCL_ERROR; } ! ! /* ! * Need at least Vf 1.1.1.0 to get Vf_Mesh::GetMaxMag() ! */ ! if (Tcl_PkgRequire(interp, ab1("Vf"), ab2("1.1.1.0"), 0) == NULL) { Tcl_AppendResult(interp, ab1("\n\t(Mmdispcmds " MMDISPCMDS_VERSION ! " needs Vf 1.1.1.0)"), NULL); RETURN_TCL_ERROR; } *************** *** 641,661 **** // Register C/C++ routines with interpreter Oc_RegisterCommand(interp,"ChangeMesh",ChangeMesh); Oc_RegisterCommand(interp,"DrawFrame",DrawFrame); Oc_RegisterCommand(interp,"GetFrameBox",GetFrameBox); Oc_RegisterCommand(interp,"GetFrameRotation",GetFrameRotation); ! Oc_RegisterCommand(interp,"GetFrameScale",GetFrameScale); Oc_RegisterCommand(interp,"GetMeshDescription",GetMeshDescription); Oc_RegisterCommand(interp,"GetMeshIncrement",GetMeshIncrement); Oc_RegisterCommand(interp,"GetMeshName",GetMeshName); Oc_RegisterCommand(interp,"GetMeshTitle",GetMeshTitle); Oc_RegisterCommand(interp,"GetMeshType",GetMeshType); Oc_RegisterCommand(interp,"GetVecColor",GetVecColor); Oc_RegisterCommand(interp,"SetFrameRotation",SetFrameRotation); ! Oc_RegisterCommand(interp,"SetFrameScale",SetFrameScale); Oc_RegisterCommand(interp,"SetMeshTitle",SetMeshTitle); Oc_RegisterCommand(interp,"UpdatePlotConfiguration", UpdatePlotConfiguration); Oc_RegisterCommand(interp,"WriteMesh",WriteMesh); if (Tcl_PkgProvide(interp, ab1("Mmdispcmds"), ab2(MMDISPCMDS_VERSION)) != TCL_OK) { --- 1022,1055 ---- // Register C/C++ routines with interpreter Oc_RegisterCommand(interp,"ChangeMesh",ChangeMesh); Oc_RegisterCommand(interp,"DrawFrame",DrawFrame); + Oc_RegisterCommand(interp,"GetDataValueUnit",GetDataValueUnit); + Oc_RegisterCommand(interp,"GetDataValueScaling",GetDataValueScaling); + Oc_RegisterCommand(interp,"GetDefaultDataValueScaling", + GetDefaultDataValueScaling); Oc_RegisterCommand(interp,"GetFrameBox",GetFrameBox); Oc_RegisterCommand(interp,"GetFrameRotation",GetFrameRotation); ! Oc_RegisterCommand(interp,"GetZoom",GetZoom); Oc_RegisterCommand(interp,"GetMeshDescription",GetMeshDescription); Oc_RegisterCommand(interp,"GetMeshIncrement",GetMeshIncrement); Oc_RegisterCommand(interp,"GetMeshName",GetMeshName); Oc_RegisterCommand(interp,"GetMeshTitle",GetMeshTitle); Oc_RegisterCommand(interp,"GetMeshType",GetMeshType); Oc_RegisterCommand(interp,"GetVecColor",GetVecColor); + Oc_RegisterCommand(interp,"SetDataValueScaling",SetDataValueScaling); Oc_RegisterCommand(interp,"SetFrameRotation",SetFrameRotation); ! Oc_RegisterCommand(interp,"SetZoom",SetZoom); Oc_RegisterCommand(interp,"SetMeshTitle",SetMeshTitle); Oc_RegisterCommand(interp,"UpdatePlotConfiguration", UpdatePlotConfiguration); Oc_RegisterCommand(interp,"WriteMesh",WriteMesh); + Oc_RegisterCommand(interp,"WriteMeshUsingDeprecatedVIOFormat", + WriteMeshUsingDeprecatedVIOFormat); + Oc_RegisterCommand(interp,"WriteMeshAverages",WriteMeshAverages); + + bitmapTablePtr = new Tcl_HashTable; + Tcl_InitHashTable(bitmapTablePtr, TCL_STRING_KEYS); + Tcl_CreateCommand(interp, ab1("Bitmap"), BitmapCmd, + (ClientData) bitmapTablePtr, BitmapDeleteProc); if (Tcl_PkgProvide(interp, ab1("Mmdispcmds"), ab2(MMDISPCMDS_VERSION)) != TCL_OK) { diff -crN oommf-1.1a2/app/mmdisp/mmdispcmds.h oommf/app/mmdisp/mmdispcmds.h *** oommf-1.1a2/app/mmdisp/mmdispcmds.h Wed Apr 5 00:22:51 2000 --- oommf/app/mmdisp/mmdispcmds.h Tue Apr 4 23:20:49 2000 *************** *** 19,47 **** #define MMDISPCMDS_MAJOR_VERSION 1 #define MMDISPCMDS_MINOR_VERSION 1 ! #define MMDISPCMDS_RELEASE_LEVEL 0 ! #define MMDISPCMDS_RELEASE_SERIAL 2 #define MMDISPCMDS_VERSION OC_MAKE_VERSION(MMDISPCMDS) /* Functions to be passed to the Tcl/Tk libraries */ Tcl_CmdProc ChangeMesh; Tcl_CmdProc DrawFrame; Tcl_CmdProc GetFirstFileName; Tcl_CmdProc GetFrameBox; Tcl_CmdProc GetFrameRotation; ! Tcl_CmdProc GetFrameScale; Tcl_CmdProc GetMeshDescription; Tcl_CmdProc GetMeshIncrement; Tcl_CmdProc GetMeshName; Tcl_CmdProc GetMeshTitle; Tcl_CmdProc GetMeshType; Tcl_CmdProc GetVecColor; Tcl_CmdProc SetFrameRotation; ! Tcl_CmdProc SetFrameScale; Tcl_CmdProc SetMeshTitle; Tcl_CmdProc UpdatePlotConfiguration; Tcl_CmdProc WriteMesh; Tcl_PackageInitProc Mmdispcmds_Init; --- 19,56 ---- #define MMDISPCMDS_MAJOR_VERSION 1 #define MMDISPCMDS_MINOR_VERSION 1 ! #define MMDISPCMDS_RELEASE_LEVEL 1 ! #define MMDISPCMDS_RELEASE_SERIAL 0 #define MMDISPCMDS_VERSION OC_MAKE_VERSION(MMDISPCMDS) /* Functions to be passed to the Tcl/Tk libraries */ + Tcl_CmdDeleteProc BitmapDeleteProc; + Tcl_CmdProc BitmapCmd; Tcl_CmdProc ChangeMesh; Tcl_CmdProc DrawFrame; + Tcl_CmdProc Gcd; + Tcl_CmdProc GetDataValueUnit; + Tcl_CmdProc GetDataValueScaling; + Tcl_CmdProc GetDefaultDataValueScaling; Tcl_CmdProc GetFirstFileName; Tcl_CmdProc GetFrameBox; Tcl_CmdProc GetFrameRotation; ! Tcl_CmdProc GetZoom; Tcl_CmdProc GetMeshDescription; Tcl_CmdProc GetMeshIncrement; Tcl_CmdProc GetMeshName; Tcl_CmdProc GetMeshTitle; Tcl_CmdProc GetMeshType; Tcl_CmdProc GetVecColor; + Tcl_CmdProc SetDataValueScaling; Tcl_CmdProc SetFrameRotation; ! Tcl_CmdProc SetZoom; Tcl_CmdProc SetMeshTitle; Tcl_CmdProc UpdatePlotConfiguration; Tcl_CmdProc WriteMesh; + Tcl_CmdProc WriteMeshUsingDeprecatedVIOFormat; + Tcl_CmdProc WriteMeshAverages; Tcl_PackageInitProc Mmdispcmds_Init; diff -crN oommf-1.1a2/app/mmdisp/mmdispcmds.tcl oommf/app/mmdisp/mmdispcmds.tcl *** oommf-1.1a2/app/mmdisp/mmdispcmds.tcl Wed Apr 5 00:22:51 2000 --- oommf/app/mmdisp/mmdispcmds.tcl Tue Apr 4 23:20:49 2000 *************** *** 2,15 **** # # Pure Tcl commands supporting mmDisp # ! # Last modified on: $Date: 1999/10/21 21:25:42 $ # Last modified by: $Author: dgp $ # Verify that C++ portion of this version of the Mmdispcmds extension # has been initialized # # NOTE: version number below must match that in ./mmdispcmds.h ! package require -exact Mmdispcmds 1.1.0.2 Oc_CheckTclIndex Mmdispcmds --- 2,15 ---- # # Pure Tcl commands supporting mmDisp # ! # Last modified on: $Date: 2000/02/18 17:06:56 $ # Last modified by: $Author: dgp $ # Verify that C++ portion of this version of the Mmdispcmds extension # has been initialized # # NOTE: version number below must match that in ./mmdispcmds.h ! package require -exact Mmdispcmds 1.1.1.0 Oc_CheckTclIndex Mmdispcmds diff -crN oommf-1.1a2/app/mmdisp/mmdispsh.cc oommf/app/mmdisp/mmdispsh.cc *** oommf-1.1a2/app/mmdisp/mmdispsh.cc Wed Apr 5 00:22:51 2000 --- oommf/app/mmdisp/mmdispsh.cc Tue Apr 4 23:20:49 2000 *************** *** 20,25 **** --- 20,35 ---- if (Oc_Init(interp) == TCL_ERROR) { return TCL_ERROR; } + Tcl_StaticPackage(interp, ab("Oc"), Oc_Init, NULL); + + if (Nb_Init(interp) == TCL_ERROR) { + Tcl_DStringInit(&buf); + Tcl_DStringAppend(&buf, ab("Oc_Log Log"), -1); + Tcl_DStringAppendElement(&buf, Tcl_GetStringResult(interp)); + Tcl_Eval(interp, Tcl_DStringAppendElement(&buf, ab("error"))); + Tcl_DStringFree(&buf); + } + Tcl_StaticPackage(interp, ab("Nb"), Nb_Init, NULL); if (Vf_Init(interp) == TCL_ERROR) { Tcl_DStringInit(&buf); *************** *** 28,33 **** --- 38,44 ---- Tcl_Eval(interp, Tcl_DStringAppendElement(&buf, ab("error"))); Tcl_DStringFree(&buf); } + Tcl_StaticPackage(interp, ab("Vf"), Vf_Init, NULL); if (Mmdispcmds_Init(interp) == TCL_ERROR) { Tcl_DStringInit(&buf); *************** *** 36,41 **** --- 47,53 ---- Tcl_Eval(interp, Tcl_DStringAppendElement(&buf, ab("error"))); Tcl_DStringFree(&buf); } + Tcl_StaticPackage(interp, ab("Mmdispcmds"), Mmdispcmds_Init, NULL); return TCL_OK; } diff -crN oommf-1.1a2/app/mmdisp/opendlg.tcl oommf/app/mmdisp/opendlg.tcl *** oommf-1.1a2/app/mmdisp/opendlg.tcl Wed Apr 5 00:22:51 2000 --- oommf/app/mmdisp/opendlg.tcl Tue Apr 4 23:20:49 2000 *************** *** 40,46 **** Ow_PositionChild $winpath ;# Position at +.25+.25 over '.' } wm protocol $winpath WM_DELETE_WINDOW \ ! "$this SwitchBoard $this CANCEL" focus $winpath # Temporarily disable callbacks until construction is complete --- 40,46 ---- Ow_PositionChild $winpath ;# Position at +.25+.25 over '.' } wm protocol $winpath WM_DELETE_WINDOW \ ! "$this SwitchBoard $this CLOSE" focus $winpath # Temporarily disable callbacks until construction is complete *************** *** 146,152 **** $this Delete ; return } } ! CANCEL { $this Delete ; return } RESCAN { --- 146,152 ---- $this Delete ; return } } ! CLOSE { $this Delete ; return } RESCAN { *************** *** 195,200 **** --- 195,201 ---- const public variable winpath const public variable outer_frame_options = "-bd 4 -relief ridge" public variable autosample = 1 + public variable autodatascale = 1 public variable autozoom = 1 Constructor {basewinpath args} { if {![string match {.} \ *************** *** 215,236 **** set but1 [checkbutton $winpath.btn1 -text "Subsample" \ -relief flat -anchor w \ -variable [$this GlobalName autosample]] ! set but2 [checkbutton $winpath.btn2 -text "Zoom" \ -relief flat -anchor w \ -variable [$this GlobalName autozoom]] pack $innerframe pack $autolabel $checkframe -in $innerframe \ -side left -anchor ne ! pack $but1 $but2 -in $checkframe \ -side top -expand 1 -fill both # Widget bindings bind $winpath "$this WinDestroy %W" } ! method GetState {} { autosample autozoom } { set statelist {} ! foreach i { autosample autozoom } { lappend statelist -$i [set $i] } return $statelist --- 216,240 ---- set but1 [checkbutton $winpath.btn1 -text "Subsample" \ -relief flat -anchor w \ -variable [$this GlobalName autosample]] ! set but2 [checkbutton $winpath.btn2 -text "Data Scale" \ ! -relief flat -anchor w \ ! -variable [$this GlobalName autodatascale]] ! set but3 [checkbutton $winpath.btn3 -text "Zoom" \ -relief flat -anchor w \ -variable [$this GlobalName autozoom]] pack $innerframe pack $autolabel $checkframe -in $innerframe \ -side left -anchor ne ! pack $but1 $but2 $but3 -in $checkframe \ -side top -expand 1 -fill both # Widget bindings bind $winpath "$this WinDestroy %W" } ! method GetState {} { autosample autodatascale autozoom } { set statelist {} ! foreach i { autosample autodatascale autozoom } { lappend statelist -$i [set $i] } return $statelist diff -crN oommf-1.1a2/app/mmdisp/plotconfig.tcl oommf/app/mmdisp/plotconfig.tcl *** oommf-1.1a2/app/mmdisp/plotconfig.tcl Wed Apr 5 00:22:51 2000 --- oommf/app/mmdisp/plotconfig.tcl Tue Apr 4 23:20:49 2000 *************** *** 30,35 **** --- 30,42 ---- # Listbox update lists array private array variable listbox_dep + # Label update lists array; This is a list of pairs, + # {widget script}, where "eval $script" should evaluate + # to the new label value. The local variable "$_" is + # set before running $script to the value $psc($elt), + # where "$elt" is the label_dep index. + private array variable label_dep + Constructor {args} { # Create a (presumably) unique name for the toplevel # window based on the instance name. *************** *** 69,84 **** arrow,colorcount 256 arrow,quantity z arrow,subsample {} ! arrow,mag 1 pixel,status 0 pixel,colormap Red-Black-Blue pixel,colorcount 256 pixel,quantity x pixel,subsample 0 ! pixel,mag 1 misc,drawboundary 1 misc,background white misc,margin 10 } set gpsc [$this GlobalName psc] ## Global name of psc array. This is needed to tie --- 76,94 ---- arrow,colorcount 256 arrow,quantity z arrow,subsample {} ! arrow,size 1 pixel,status 0 pixel,colormap Red-Black-Blue pixel,colorcount 256 pixel,quantity x pixel,subsample 0 ! pixel,size 1 misc,drawboundary 1 misc,background white misc,margin 10 + misc,zoom 1 + misc,datascale 1 + misc,dataunits {} } set gpsc [$this GlobalName psc] ## Global name of psc array. This is needed to tie *************** *** 115,122 **** set clbl1 [label $a01.label -text "Colormap"] set clbl2 [label $a02.label -text "# of Colors"] set clbl3 [label $a03.label -text "Color Quantity"] ! set clbl4 [label $a04.label -text "Subsample Rate"] ! set clbl5 [label $a05.label -text "Magnification"] pack $clbl0 $clbl1 $clbl2 $clbl3 $clbl4 $clbl5 -fill both --- 125,132 ---- set clbl1 [label $a01.label -text "Colormap"] set clbl2 [label $a02.label -text "# of Colors"] set clbl3 [label $a03.label -text "Color Quantity"] ! set clbl4 [label $a04.label -text "Subsample"] ! set clbl5 [label $a05.label -text "Size"] pack $clbl0 $clbl1 $clbl2 $clbl3 $clbl4 $clbl5 -fill both *************** *** 165,177 **** grid [$arrsr Cget -winpath] lappend state_dep(arrow) $arrsr ! Ow_EntryBox New arrmag $a15.mag -valuetype fixed \ -outer_frame_options "-bd 0 -relief flat" \ -label {} -valuewidth 5 \ -disabledforeground $disabledcolor \ ! -variable ${gpsc}(arrow,mag) ! grid [$arrmag Cget -winpath] ! lappend state_dep(arrow) $arrmag # Initialize arrow type display state $this UpdatePlotTypeState arrow --- 175,187 ---- grid [$arrsr Cget -winpath] lappend state_dep(arrow) $arrsr ! Ow_EntryBox New arrsize $a15.size -valuetype fixed \ -outer_frame_options "-bd 0 -relief flat" \ -label {} -valuewidth 5 \ -disabledforeground $disabledcolor \ ! -variable ${gpsc}(arrow,size) ! grid [$arrsize Cget -winpath] ! lappend state_dep(arrow) $arrsize # Initialize arrow type display state $this UpdatePlotTypeState arrow *************** *** 217,229 **** grid [$pixsr Cget -winpath] lappend state_dep(pixel) $pixsr ! Ow_EntryBox New pixmag $a25.mag -valuetype fixed \ -outer_frame_options "-bd 0 -relief flat" \ -label {} -valuewidth 5 \ -disabledforeground $disabledcolor \ ! -variable ${gpsc}(pixel,mag) ! grid [$pixmag Cget -winpath] ! lappend state_dep(pixel) $pixmag # Initialize pixel type display state $this UpdatePlotTypeState pixel --- 227,239 ---- grid [$pixsr Cget -winpath] lappend state_dep(pixel) $pixsr ! Ow_EntryBox New pixsize $a25.size -valuetype fixed \ -outer_frame_options "-bd 0 -relief flat" \ -label {} -valuewidth 5 \ -disabledforeground $disabledcolor \ ! -variable ${gpsc}(pixel,size) ! grid [$pixsize Cget -winpath] ! lappend state_dep(pixel) $pixsize # Initialize pixel type display state $this UpdatePlotTypeState pixel *************** *** 232,271 **** set a30 [frame $winpath.a30 -bd 2 -relief ridge] grid $a30 -row 3 -column 0 -columnspan 6 -sticky news set f30 [frame $a30.f30 -bd 0] ! pack $f30 -side left -fill y ! ! set bdrycb [checkbutton $f30.bdrycb -text "Draw Boundary" \ ! -variable ${gpsc}(misc,drawboundary) -onvalue 1 -offvalue 0] Ow_EntryBox New marginbox $f30.margin -valuetype fixed \ -outer_frame_options "-bd 0 -relief flat" \ -label "Margin:" -valuewidth 5 \ ! -variable ${gpsc}(misc,margin) ! grid $bdrycb x [$marginbox Cget -winpath] - -sticky w ! grid rowconfigure $winpath 3 -pad 10 ! set bgclab [label $f30.bgclab -text "Background color:"] ! set bgc0 [radiobutton $f30.bgc0 -text "white" \ -variable ${gpsc}(misc,background) -value "white"] ! set bgc1 [radiobutton $f30.bgc1 -text "black" \ -variable ${gpsc}(misc,background) -value "black"] ! set bgc2 [radiobutton $f30.bgc2 -text "green" \ -variable ${gpsc}(misc,background) -value "green"] ! grid $bgclab $bgc0 $bgc1 $bgc2 -sticky w # Control buttons set a40 [frame $winpath.a40 -bd 0] grid $a40 -row 4 -column 0 -columnspan 6 -sticky news grid rowconfigure $winpath 4 -pad 10 ! set cancel [button $a40.cancel -text "Cancel" \ ! -command "$this Action cancel" ] set apply [button $a40.apply -text "Apply" \ -command "$this Action apply" ] set ok [button $a40.ok -text "OK" \ -command "$this Action ok" ] ! pack $cancel $apply $ok -side left -expand 1 ! wm protocol $winpath WM_DELETE_WINDOW "$cancel invoke" Ow_SetIcon $winpath } --- 242,315 ---- set a30 [frame $winpath.a30 -bd 2 -relief ridge] grid $a30 -row 3 -column 0 -columnspan 6 -sticky news set f30 [frame $a30.f30 -bd 0] ! pack $f30 -side top -fill x -expand 1 ! ! ! set tlabel "Data Scale" ! set tunits $psc(misc,dataunits); ! if {![string match {} $tunits]} { ! append tlabel " ($tunits)" ! } ! append tlabel ":" ! Ow_EntryBox New datascalebox $f30.datascale -valuetype posfloat \ ! -outer_frame_options "-bd 0 -relief flat" \ ! -label $tlabel -valuewidth 10 \ ! -variable ${gpsc}(misc,datascale) ! set label_dep(misc,dataunits) [list $datascalebox \ ! {if {[string match {} $_]} {format "Data Scale:"} \ ! else {format "Data Scale ($_):"}}] ! ## Note: This is the only dependency tied to misc,dataunits ! ! Ow_EntryBox New zoombox $f30.zoom -valuetype posfloat \ ! -outer_frame_options "-bd 0 -relief flat" \ ! -label "Zoom:" -valuewidth 5 \ ! -variable ${gpsc}(misc,zoom) Ow_EntryBox New marginbox $f30.margin -valuetype fixed \ -outer_frame_options "-bd 0 -relief flat" \ -label "Margin:" -valuewidth 5 \ ! -variable ${gpsc}(misc,margin) ! set bdrycb [checkbutton $f30.bdrycb -text "Draw Boundary" \ ! -variable ${gpsc}(misc,drawboundary) -onvalue 1 -offvalue 0] ! set bgcf [frame $f30.bgcf -bd 0] ! ! set bgclab [label $bgcf.bgclab -text "Background color:"] ! set bgc0 [radiobutton $bgcf.bgc0 -text "white" \ -variable ${gpsc}(misc,background) -value "white"] ! set bgc1 [radiobutton $bgcf.bgc1 -text "black" \ -variable ${gpsc}(misc,background) -value "black"] ! set bgc2 [radiobutton $bgcf.bgc2 -text "green" \ -variable ${gpsc}(misc,background) -value "green"] ! pack $bgclab $bgc0 $bgc1 $bgc2 -side left ! ! grid [$datascalebox Cget -winpath] x \ ! [$marginbox Cget -winpath] $bdrycb x ! grid [$zoombox Cget -winpath] x $bgcf - x ! ! grid configure [$datascalebox Cget -winpath] \ ! [$zoombox Cget -winpath] $bdrycb -sticky e ! grid configure [$marginbox Cget -winpath] -sticky w ! grid configure $bgcf -sticky e ! ! grid columnconfigure $f30 0 -weight 2 ! grid columnconfigure $f30 1 -weight 3 ! grid columnconfigure $f30 4 -weight 2 ! grid rowconfigure $winpath 3 -pad 10 # Control buttons set a40 [frame $winpath.a40 -bd 0] grid $a40 -row 4 -column 0 -columnspan 6 -sticky news grid rowconfigure $winpath 4 -pad 10 ! set close [button $a40.close -text "Close" \ ! -command "$this Action close" ] set apply [button $a40.apply -text "Apply" \ -command "$this Action apply" ] set ok [button $a40.ok -text "OK" \ -command "$this Action ok" ] ! pack $close $apply $ok -side left -expand 1 ! wm protocol $winpath WM_DELETE_WINDOW "$close invoke" Ow_SetIcon $winpath } *************** *** 288,293 **** --- 332,344 ---- eval {$lb Insert end} $psc($elt) } } + # Reset labels as necessary + if {[info exists label_dep($elt)]} { + foreach {widget script} $label_dep($elt) { + set _ $psc($elt) + $widget Configure -label [eval $script] + } + } } } *************** *** 306,312 **** # Dialog action routine callback method Action { cmd } { switch $cmd { ! cancel { $this Delete return } --- 357,363 ---- # Dialog action routine callback method Action { cmd } { switch $cmd { ! close { $this Delete return } diff -crN oommf-1.1a2/app/mmdisp/savedlg.tcl oommf/app/mmdisp/savedlg.tcl *** oommf-1.1a2/app/mmdisp/savedlg.tcl Wed Apr 5 00:22:51 2000 --- oommf/app/mmdisp/savedlg.tcl Tue Apr 4 23:20:49 2000 *************** *** 55,61 **** Ow_PositionChild $winpath ;# Position at +.25+.25 over '.' } wm protocol $winpath WM_DELETE_WINDOW \ ! "$this SwitchBoard $this CANCEL" focus $winpath # Temporarily disable callbacks until construction is complete --- 55,61 ---- Ow_PositionChild $winpath ;# Position at +.25+.25 over '.' } wm protocol $winpath WM_DELETE_WINDOW \ ! "$this SwitchBoard $this CLOSE" focus $winpath # Temporarily disable callbacks until construction is complete *************** *** 202,208 **** $filewidget Rescan $dirwidget Rescan } ! CANCEL { $this Delete ; return } DELETE {} --- 202,208 ---- $filewidget Rescan $dirwidget Rescan } ! CLOSE { $this Delete ; return } DELETE {} diff -crN oommf-1.1a2/app/mmdisp/scripts/appindex.tcl oommf/app/mmdisp/scripts/appindex.tcl *** oommf-1.1a2/app/mmdisp/scripts/appindex.tcl Wed Apr 5 00:22:53 2000 --- oommf/app/mmdisp/scripts/appindex.tcl Tue Apr 4 23:20:52 2000 *************** *** 1,7 **** Oc_Application Define { -name mmDisp ! -version 1.1.0.2 -machine mmDispSh -file mmdisp.tcl } --- 1,43 ---- Oc_Application Define { -name mmDisp ! -version 1.1.1.0 -machine mmDispSh -file mmdisp.tcl + } + + Oc_Application Define { + -name avf2ave + -version 1.1.1.0 + -machine conDispSh + -file avf2ave.tcl + -options {-tk 0} + -mode fg + } + + Oc_Application Define { + -name avf2ovf + -version 1.1.1.0 + -machine conDispSh + -file avf2ovf.tcl + -options {-tk 0} + -mode fg + } + + Oc_Application Define { + -name avf2vio + -version 1.1.1.0 + -machine conDispSh + -file avf2vio.tcl + -options {-tk 0} + -mode fg + } + + Oc_Application Define { + -name avf2ppm + -version 1.1.1.0 + -machine conDispSh + -file avf2ppm.tcl + -options {-tk 0} + -mode fg } diff -crN oommf-1.1a2/app/mmdisp/scripts/avf2ave.tcl oommf/app/mmdisp/scripts/avf2ave.tcl *** oommf-1.1a2/app/mmdisp/scripts/avf2ave.tcl Wed Dec 31 19:00:00 1969 --- oommf/app/mmdisp/scripts/avf2ave.tcl Tue Apr 4 23:20:52 2000 *************** *** 0 **** --- 1,25 ---- + # FILE: avf2ave.tcl + # + # This file must be evaluated by mmDispSh + + package require Oc 1.1.1.0 + package require Mmdispcmds 1.1.1.0 + Oc_ForceNoTkDefaultMessage + catch {wm withdraw .} + + Oc_Main SetAppName avf2ave + Oc_Main SetVersion 1.1.1.0 + + Oc_CommandLine Option console {} {} + Oc_CommandLine Option [Oc_CommandLine Switch] { + {file {} {Input vector field file (regular grid)}} + } { + global infile; set infile $file + } {End of options; next argument is file} + Oc_CommandLine Parse $argv + + ChangeMesh $infile 0 0 0 -1 + puts "# Data averages for file $infile\n#" + WriteMeshAverages stdout + + exit 0 diff -crN oommf-1.1a2/app/mmdisp/scripts/avf2ovf.tcl oommf/app/mmdisp/scripts/avf2ovf.tcl *** oommf-1.1a2/app/mmdisp/scripts/avf2ovf.tcl Wed Dec 31 19:00:00 1969 --- oommf/app/mmdisp/scripts/avf2ovf.tcl Tue Apr 4 23:20:52 2000 *************** *** 0 **** --- 1,59 ---- + # FILE: avf2ovf.tcl + # + # This file must be evaluated by mmDispSh + + package require Oc 1.1.1.0 + package require Mmdispcmds 1.1.1.0 + Oc_ForceNoTkDefaultMessage + catch {wm withdraw .} + + Oc_Main SetAppName avf2ovf + Oc_Main SetVersion 1.1.1.0 + + Oc_CommandLine Option console {} {} + Oc_CommandLine Option format { + {format {regexp {text|b4|b8} $format} {is one of {text,b4,b8}}} + } { + upvar #0 format globalformat; set globalformat $format + } {Format of output file: text, 4-, or 8-byte binary} + set format text + + Oc_CommandLine Option grid { + {type {regexp {reg|irreg} $type} {is one of {reg,irreg}}} + } { + global grid; set grid $type + } {Grid type of output file: regular or irregular} + set grid reg + + Oc_CommandLine Option [Oc_CommandLine Switch] { + {file {} {Input vector field file}} + } { + global infile; set infile $file + } {End of options; next argument is file} + Oc_CommandLine Parse $argv + + array set formatmap { + text text + b4 binary4 + b8 binary8 + } + array set gridmap { + reg regular + irreg irregular + } + + ChangeMesh [Oc_DirectPathname $infile] 0 0 0 -1 + set title [GetMeshTitle] + set desc [GetMeshDescription] + if {[string match Vf_GeneralMesh3f [GetMeshType]] && + ![string match irregular $gridmap($grid)]} { + puts stderr "Input file has irregular grid; so must output." + } + + puts stderr "Copying Title field: $title\nYou may want to edit this\ + field in the output by hand." + + # $filename == "" --> write to stdout + WriteMesh "" $formatmap($format) $gridmap($grid) $title $desc + + exit 0 diff -crN oommf-1.1a2/app/mmdisp/scripts/avf2ppm.def oommf/app/mmdisp/scripts/avf2ppm.def *** oommf-1.1a2/app/mmdisp/scripts/avf2ppm.def Wed Dec 31 19:00:00 1969 --- oommf/app/mmdisp/scripts/avf2ppm.def Tue Apr 4 23:20:52 2000 *************** *** 0 **** --- 1,39 ---- + # FILE: avf2ppm.def -*-Mode: tcl-*- + # + # Default setup for avftoppm. This file must be valid Tcl code + + # This file should only be sourced from within another Tcl application. + # Check to make sure we aren't at the top application level + if {[string match [info script] $argv0]} { + error "'[info script]' must be evaluated by an mmdisp-style application" + } + + # Default plot configuration array + array set plot_config { + colormaps { Red-Black-Blue Blue-White-Red Teal-White-Red \ + Black-Gray-White White-Green-Black Red-Green-Blue-Red } + arrow,status 1 + arrow,colormap Black-Gray-White + arrow,colorcount 0 + arrow,quantity z + arrow,autosample 1 + arrow,subsample 10 + arrow,size 1 + arrow,antialias 1 + pixel,status 1 + pixel,colormap Teal-White-Red + pixel,colorcount 225 + pixel,quantity x + pixel,autosample 1 + pixel,subsample 2 + pixel,size 1 + misc,background #FFFFFF + misc,drawboundary 1 + misc,margin 10 + misc,width 640 + misc,height 480 + misc,crop 1 + misc,zoom 0 + misc,rotation 0 + misc,datascale 0 + } diff -crN oommf-1.1a2/app/mmdisp/scripts/avf2ppm.tcl oommf/app/mmdisp/scripts/avf2ppm.tcl *** oommf-1.1a2/app/mmdisp/scripts/avf2ppm.tcl Wed Dec 31 19:00:00 1969 --- oommf/app/mmdisp/scripts/avf2ppm.tcl Tue Apr 4 23:20:52 2000 *************** *** 0 **** --- 1,170 ---- + # FILE: avf2ppm.tcl + # + # This file must be evaluated by mmDispSh + + package require Oc 1.1.1.0 + package require Mmdispcmds 1.1.1.0 + Oc_ForceNoTkDefaultMessage + catch {wm withdraw .} + + Oc_Main SetAppName avf2ppm + Oc_Main SetVersion 1.1.1.0 + + Oc_CommandLine Option console {} {} + + Oc_CommandLine Option v { + {level {regexp {^[0-9]+$} $level} {is a decimal integer}} + } { + global verbosity; scan $level %d verbosity + } {Verbosity level (default = 1)} + set verbosity 1 + + Oc_CommandLine Option f {} { + global forceOutput; set forceOutput 1 + } {Force overwrite of output files} + set forceOutput 0 + + Oc_CommandLine Option format { + {format {regexp -nocase {P3|P6|B24} $format} {is one of {P3,P6,B24}}} + } { + global bitmapFormat; set bitmapFormat [string toupper $format] + } {Format of output bitmap file(s) (default=P6)} + set bitmapFormat P6 + + set configFiles [list [file join [file dirname \ + [Oc_DirectPathname [info script]]] avf2ppm.def]] + Oc_CommandLine Option config {file} { + global configFiles; lappend configFiles $file + } "Append file to list of configuration files" + + Oc_CommandLine Option ipat { + {pattern {} {is in glob-style}} + } { + global inputPattern; set inputPattern $pattern + } {Pattern specifying input files} + + Oc_CommandLine Option opatexp { + {regexp {} {is a regular expression}} + } { + global opatexp; set opatexp $regexp + } {Pattern: part of input filename to replace} + set opatexp {(\.[^.]?[^.]?[^.]?$|$)} + + Oc_CommandLine Option opatsub {sub} { + global opatsub; set opatsub $sub + } {Replacement in input filename to get output filename} + + Oc_CommandLine Option filter { + {pipeline {} {is an output pipeline}} + } { + global filter; set filter $pipeline + } {Post-processing programs to apply to output} + + Oc_CommandLine Option [Oc_CommandLine Switch] { + {{file list} {} {Input vector field file(s)}} + } { + global infile; set infile $file + } {End of options; next argument is file} + Oc_CommandLine Parse $argv + + # Get the configuration settings from config file list + foreach c $configFiles { + source $c + } + + # Turn -ipat pattern into list of input files + set inGlob [list] + if {[info exists inputPattern]} { + set inGlob [lsort -dictionary [glob -nocomplain -- $inputPattern]] + } else { + set inputPattern "" + } + + # Set default output filename substitution + if {![info exists opatsub]} { + switch $bitmapFormat { + B24 {set opatsub .bmp} + default {set opatsub .ppm} + } + } + + if {$verbosity >= 3} { + puts stderr "##############" + puts stderr "Input files: $infile $inGlob" + puts stderr "##############" + } + if {$verbosity >= 2} { + puts stderr "ipat: $inputPattern" + puts stderr "opatexp: $opatexp" + puts stderr "opatsub: $opatsub" + puts stderr "Output bitmap format: $bitmapFormat" + if {[info exists filter]} { + puts stderr "Filter command: $filter" + } + puts stderr "Arrow Configuration--- + Display: $plot_config(arrow,status) + Colormap name: $plot_config(arrow,colormap) + Colormap size: $plot_config(arrow,colorcount) + Quantity: $plot_config(arrow,quantity) + Autosample: $plot_config(arrow,autosample) + Subsample: $plot_config(arrow,subsample) + Size: $plot_config(arrow,size) + Antialias: $plot_config(arrow,antialias)" + puts stderr "Pixel Configuration--- + Display: $plot_config(pixel,status) + Colormap name: $plot_config(pixel,colormap) + Colormap size: $plot_config(pixel,colorcount) + Quantity: $plot_config(pixel,quantity) + Autosample: $plot_config(pixel,autosample) + Subsample: $plot_config(pixel,subsample) + Size: $plot_config(pixel,size)" + puts stderr "Misc Configuration---- + Background color: $plot_config(misc,background) + Draw boundary: $plot_config(misc,drawboundary) + Margin: $plot_config(misc,margin) + Dimensions: $plot_config(misc,width) x $plot_config(misc,height) + Zoom: $plot_config(misc,zoom) + Crop: $plot_config(misc,crop) + Rotation: $plot_config(misc,rotation) + Datascale: $plot_config(misc,datascale)" + } + + # Loop through input files + foreach in [concat $infile $inGlob] { + + # Contents of plot_config() influence [ChangeMesh] + ChangeMesh $in $plot_config(misc,width) $plot_config(misc,height) \ + $plot_config(misc,rotation) $plot_config(misc,zoom) + + # create myBitmap from the frame + Bitmap Create myBitmap + + if {[regsub -- $opatexp $in $opatsub out] != 1} { + set out $in$opatsub + } + if {!$forceOutput} { + set out [Oc_UniqueFilename $out] + if {[string match "" $out]} { + set msg "Can't construct unique output filename" + error $msg $msg + } + } + if {[info exists filter]} { + if {$verbosity >= 1} { + puts stderr "$in --> $filter --> $out" + } + set out "| 2>@stderr $filter > [list $out]" + } elseif {$verbosity >= 1} { + puts stderr "$in --> $out" + } + set outChan [open $out w] + fconfigure $outChan -translation binary -buffersize 10000 + # send myBitmap to output in requested format + Bitmap Write myBitmap $bitmapFormat $outChan + Bitmap Delete myBitmap + if {[catch {close $outChan} msg]} { + return -code error $msg + } + } + + exit 0 diff -crN oommf-1.1a2/app/mmdisp/scripts/avf2vio.tcl oommf/app/mmdisp/scripts/avf2vio.tcl *** oommf-1.1a2/app/mmdisp/scripts/avf2vio.tcl Wed Dec 31 19:00:00 1969 --- oommf/app/mmdisp/scripts/avf2vio.tcl Tue Apr 4 23:20:52 2000 *************** *** 0 **** --- 1,24 ---- + # FILE: avf2vio.tcl + # + # This file must be evaluated by mmDispSh + + package require Oc 1.1.1.0 + package require Mmdispcmds 1.1.1.0 + Oc_ForceNoTkDefaultMessage + catch {wm withdraw .} + + Oc_Main SetAppName avf2vio + Oc_Main SetVersion 1.1.1.0 + + Oc_CommandLine Option console {} {} + Oc_CommandLine Option [Oc_CommandLine Switch] { + {file {} {Input vector field file}} + } { + global infile; set infile $file + } {End of options; next argument is file} + Oc_CommandLine Parse $argv + + ChangeMesh [Oc_DirectPathname $infile] 0 0 0 -1 + # $filename == "" --> write to stdout + WriteMeshUsingDeprecatedVIOFormat "" + exit 0 diff -crN oommf-1.1a2/app/mmdisp/scripts/mmdisp.tcl oommf/app/mmdisp/scripts/mmdisp.tcl *** oommf-1.1a2/app/mmdisp/scripts/mmdisp.tcl Wed Apr 5 00:22:54 2000 --- oommf/app/mmdisp/scripts/mmdisp.tcl Tue Apr 4 23:20:52 2000 *************** *** 3,78 **** # Main Tcl/Tk script for OOMMF 2D display program # Library support (let them eat options) ! package require Oc ;# Error & usage handling below requires Oc ! set errmsg {} ! if {[catch {package require Ow} msg]!=0} { ! append errmsg "$msg\n" ! } ! if {[catch {package require Mmdispcmds 1.1} msg]!=0} { ! append errmsg "$msg\n" ! } ! ! set mmdisp(version) 1.1.0.2 ! ! Oc_AppendUsageInfo mmDisp "Vector field display application" { ! {-h* {} {Display this help message}} ! {--server {} {Run server}} ! {--version {} {Show mmDisp version info}} ! {-- {} {No more options}} ! {filename string {Input file (optional)}}} ! ! proc Usage {msg} { ! Oc_Log Log "$msg\n[Oc_GetUsageInfo]" panic ! exit 1 ! } ! ! if {![string match {} $errmsg]} { ! Usage $errmsg ! } ! ! # Process remaining command line options ! set enableServer 0 ! while {[string match -* [lindex $argv 0]]} { ! regexp -- -(.*) [lindex $argv 0] _ option ! set argv [lrange $argv 1 end] ! switch -exact -- $option { ! -help - ! -h - ! help - ! h { ! Usage "Help info request" ! } ! -version - ! version { ! # Expand this to use package introspection when available ! Oc_Log Log "mmDisp version: $mmdisp(version)" info ! exit 0 ! } ! -server - ! server { ! # Consider moving server initialization here instead of ! # using flag ! set enableServer 1 ! } ! - { ! break ! } ! default { ! Usage "Unrecognized option: -$option" ! } ! } ! } ! switch -exact [llength $argv] { ! 0 { ! set firstfile "" ! } ! 1 { ! set firstfile [lindex $argv 0] ! } ! default { ! Usage "Too many arguments" ! } ! } # Disable Oc's user-invoked auto-size feature---mmDisp handles its own # resizing. --- 3,11 ---- # Main Tcl/Tk script for OOMMF 2D display program # Library support (let them eat options) ! package require Oc 1.1 ;# Error & usage handling below requires Oc ! package require Ow 1.1.1.0 ! package require Mmdispcmds 1.1 # Disable Oc's user-invoked auto-size feature---mmDisp handles its own # resizing. *************** *** 80,102 **** ########################### PROGRAM DOCUMENTATION ################### Oc_Main SetAppName mmDisp ! Oc_Main SetVersion $mmdisp(version) ! regexp \\\044Date:(.*)\\\044 {$Date: 1999/10/21 21:25:42 $} _ date Oc_Main SetDate [string trim $date] # regexp \\\044Author:(.*)\\\044 {$Author: dgp $} _ author # Oc_Main SetAuthor [Oc_Person Lookup [string trim $author]] Oc_Main SetAuthor [Oc_Person Lookup donahue] ! Oc_Main SetExtraInfo "Built against Tcl $omfTclBuildVersion\n\ ! Running on Tcl [info patchlevel]" Oc_Main SetHelpURL [Oc_Url FromFilename [file join [file dirname \ [file dirname [file dirname [file dirname [Oc_DirectPathname [info \ script]]]]]] doc userguide Vector_Field_Display_mmDisp.html]] wm title . [Oc_Main GetInstanceName] ;# Window title to display while ## program is initializing. # Global arrays: mmdisp, _mmdisp ! # If the --server option appeared on the command line, start a server. if {$enableServer} { package require Net Net_Protocol New mmd_protocol -name [list OOMMF vectorField protocol 0.0] --- 13,54 ---- ########################### PROGRAM DOCUMENTATION ################### Oc_Main SetAppName mmDisp ! Oc_Main SetVersion 1.1.1.0 ! regexp \\\044Date:(.*)\\\044 {$Date: 2000/03/24 00:25:33 $} _ date Oc_Main SetDate [string trim $date] # regexp \\\044Author:(.*)\\\044 {$Author: dgp $} _ author # Oc_Main SetAuthor [Oc_Person Lookup [string trim $author]] Oc_Main SetAuthor [Oc_Person Lookup donahue] ! Oc_Main SetExtraInfo "Built against Tcl\ ! [[Oc_Config RunPlatform] GetValue compiletime_tcl_patch_level]\n\ ! Running on Tcl [info patchlevel]" Oc_Main SetHelpURL [Oc_Url FromFilename [file join [file dirname \ [file dirname [file dirname [file dirname [Oc_DirectPathname [info \ script]]]]]] doc userguide Vector_Field_Display_mmDisp.html]] + + Oc_CommandLine Option net { + {flag {expr {![catch {expr {$flag && $flag}}]}} {= 0 or 1}} + } { + global enableServer; set enableServer $flag + } {Disable/enable data from other apps; default=enabled} + set enableServer 1 + + Oc_CommandLine Option [Oc_CommandLine Switch] { + {{file optional} {} {Vector field file to display}} + } { + global firstfile; set firstfile $file + } {End of options; next argument is file} + + wm withdraw . + Oc_CommandLine Parse $argv + wm deiconify . + wm title . [Oc_Main GetInstanceName] ;# Window title to display while ## program is initializing. # Global arrays: mmdisp, _mmdisp ! # If the -server option appeared on the command line, start a server. if {$enableServer} { package require Net Net_Protocol New mmd_protocol -name [list OOMMF vectorField protocol 0.0] *************** *** 167,172 **** --- 119,125 ---- # Otherwise, keep all current size and display parameters global ViewportWidth ViewportHeight DisplayRotation set autodisplay(sample) 0 + set autodisplay(datascale) 0 set autodisplay(zoom) 0 ReadFile $filename $title $ViewportWidth $ViewportHeight \ $DisplayRotation autodisplay *************** *** 234,240 **** # specified margin. GetPlotExtents returns the width and height of the # box returned by GetPlotBox. # - set FrameScale 0 set DisplayRotation 0 set FileId 0 ;# Incremented each time a new file is loaded. ## Traces may be set on this variable to update --- 187,192 ---- *************** *** 257,273 **** arrow,colorcount 256 arrow,quantity z arrow,subsample 0 ! arrow,mag 1 pixel,status 0 pixel,colormap Red-Black-Blue pixel,colorcount 256 pixel,quantity x pixel,subsample 0 ! pixel,mag 1 misc,background white misc,drawboundary 1 misc,margin 10 misc,confine 1 } # Misc. constants --- 209,229 ---- arrow,colorcount 256 arrow,quantity z arrow,subsample 0 ! arrow,size 1 pixel,status 0 pixel,colormap Red-Black-Blue pixel,colorcount 256 pixel,quantity x pixel,subsample 0 ! pixel,size 1 misc,background white misc,drawboundary 1 misc,margin 10 misc,confine 1 + misc,zoom 1 + misc,datascale 1 + misc,default_datascale 1 + misc,dataunits {} } # Misc. constants *************** *** 284,320 **** # Display state recover stack # (Currently only 1 entry deep, but may be made deeper in future ! set omfSavedDisplayState(zoom) $FrameScale ! set omfSavedDisplayState(xcenter) 0.5 ! set omfSavedDisplayState(ycenter) 0.5 ! set omfSavedDisplayState(rot) $DisplayRotation ! proc OMF_SaveDisplayState { {zoom ""} {xcenter ""} {ycenter ""} {rot ""}} { ! global omfSavedDisplayState FrameScale DisplayRotation ! if {"$zoom"==""} { set zoom $FrameScale } ! if {"$xcenter"=="" || "$ycenter"==""} { GetScrollCenter curx cury ! if {"$xcenter"==""} { set xcenter $curx } ! if {"$ycenter"==""} { set ycenter $cury } } ! if {"$rot"==""} { set rot $DisplayRotation } ! set omfSavedDisplayState(zoom) $zoom ! set omfSavedDisplayState(xcenter) $xcenter ! set omfSavedDisplayState(ycenter) $ycenter ! set omfSavedDisplayState(rot) $rot } proc OMF_RecoverDisplayState {} { global omfSavedDisplayState DisplayRotation # Note: SetScale calls OMF_SaveDisplayState # & thereby reset these values ! set oldzoom $omfSavedDisplayState(zoom) ! set oldxcenter $omfSavedDisplayState(xcenter) ! set oldycenter $omfSavedDisplayState(ycenter) ! set oldrot $omfSavedDisplayState(rot) # Make rotation adjustments to xcenter & ycenter set dummywidth 0; set dummyheight 0 OMF_RotateDimensions [expr {$DisplayRotation-$oldrot}] \ dummywidth dummyheight oldxcenter oldycenter # Undo SetScale $oldzoom SetScrollCenter $oldxcenter $oldycenter } --- 240,286 ---- # Display state recover stack # (Currently only 1 entry deep, but may be made deeper in future ! set omfSavedDisplayState(zoom) $plot_config(misc,zoom) ! set omfSavedDisplayState(xcenter) 0.5 ! set omfSavedDisplayState(ycenter) 0.5 ! set omfSavedDisplayState(rot) $DisplayRotation ! set omfSavedDisplayState(datascale) $plot_config(misc,datascale) ! proc OMF_SaveDisplayState { {zoom {}} {xcenter {}} {ycenter {}} \ ! {rot {}} {datascale {}}} { ! global omfSavedDisplayState plot_config DisplayRotation ! if {[string match {} $zoom]} { ! set zoom $plot_config(misc,zoom) ! } ! if {[string match {} $xcenter] || [string match {} $ycenter]} { GetScrollCenter curx cury ! if {[string match {} $xcenter]} { set xcenter $curx } ! if {[string match {} $ycenter]} { set ycenter $cury } } ! if {[string match {} $rot]} { set rot $DisplayRotation } ! if {[string match {} $datascale]} { ! set datascale $plot_config(misc,datascale) ! } ! set omfSavedDisplayState(zoom) $zoom ! set omfSavedDisplayState(xcenter) $xcenter ! set omfSavedDisplayState(ycenter) $ycenter ! set omfSavedDisplayState(rot) $rot ! set omfSavedDisplayState(datascale) $datascale } proc OMF_RecoverDisplayState {} { global omfSavedDisplayState DisplayRotation # Note: SetScale calls OMF_SaveDisplayState # & thereby reset these values ! set oldzoom $omfSavedDisplayState(zoom) ! set oldxcenter $omfSavedDisplayState(xcenter) ! set oldycenter $omfSavedDisplayState(ycenter) ! set oldrot $omfSavedDisplayState(rot) ! set olddatascale $omfSavedDisplayState(datascale) # Make rotation adjustments to xcenter & ycenter set dummywidth 0; set dummyheight 0 OMF_RotateDimensions [expr {$DisplayRotation-$oldrot}] \ dummywidth dummyheight oldxcenter oldycenter # Undo + SetDataScaling $olddatascale SetScale $oldzoom SetScrollCenter $oldxcenter $oldycenter } *************** *** 330,336 **** if {$omfCtrlBarState} { WaitVisible $ctrlbar 500 set size [expr {[winfo reqheight $ctrlbar.subsample]\ ! +[winfo reqheight $ctrlbar.framescale]}] $ctrlbar.rotation configure -height $size -width $size } --- 296,302 ---- if {$omfCtrlBarState} { WaitVisible $ctrlbar 500 set size [expr {[winfo reqheight $ctrlbar.subsample]\ ! +[winfo reqheight $ctrlbar.zoom]}] $ctrlbar.rotation configure -height $size -width $size } *************** *** 779,802 **** Ow_PopWatchCursor } ! proc SetScale { scale } { ! global FrameScale canvas ! set scale [expr {round($scale*100.)/100.}] ! if { $scale == $FrameScale } { return } GetScrollCenter xcenter ycenter if { $scale > 0 } { ! OMF_SaveDisplayState $FrameScale $xcenter $ycenter ! SetFrameScale $scale } - Ow_PushWatchCursor - GetFrameScale FrameScale - DrawFrame $canvas - PackViewport - global XScrollState YScrollState - if {!$XScrollState} { set xcenter 0.5 } - if {!$YScrollState} { set ycenter 0.5 } - SetScrollCenter $xcenter $ycenter - Ow_PopWatchCursor } proc RedrawDisplay {} { --- 745,778 ---- Ow_PopWatchCursor } ! proc SetScale { scale {redraw 1}} { ! global plot_config canvas ! # set scale [expr {round($scale*100.)/100.}] ;# Not sure what this is for ! ! # Enforce value limits ! set config [Oc_Config RunPlatform] ! set valmin [$config GetValue compiletime_flt_min] ! if {$scale<$valmin} { set scale $valmin } ! set valmax [$config GetValue compiletime_flt_max] ! if {$scale>$valmax} { set scale $valmax } ! ! if { $scale == $plot_config(misc,zoom) } { return } GetScrollCenter xcenter ycenter if { $scale > 0 } { ! OMF_SaveDisplayState $plot_config(misc,zoom) $xcenter $ycenter ! SetZoom $scale ! } ! GetZoom plot_config(misc,zoom) ! if {$redraw} { ! Ow_PushWatchCursor ! DrawFrame $canvas ! PackViewport ! global XScrollState YScrollState ! if {!$XScrollState} { set xcenter 0.5 } ! if {!$YScrollState} { set ycenter 0.5 } ! SetScrollCenter $xcenter $ycenter ! Ow_PopWatchCursor } } proc RedrawDisplay {} { *************** *** 818,824 **** proc FillDisplay {} { # Set framesize to viewport size ! global FrameScale plot_config global ViewportWidth ViewportHeight global MinViewportWidth MinViewportHeight --- 794,800 ---- proc FillDisplay {} { # Set framesize to viewport size ! global plot_config global ViewportWidth ViewportHeight global MinViewportWidth MinViewportHeight *************** *** 832,843 **** set w [expr {$w-$mgnadj}] set h [expr {$h-$mgnadj}] ! set scale [SetFrameScale $w $h] ! if {$scale!=$FrameScale} { global canvas OMF_SaveDisplayState ! set FrameScale $scale Ow_PushWatchCursor DrawFrame $canvas PackViewport --- 808,819 ---- set w [expr {$w-$mgnadj}] set h [expr {$h-$mgnadj}] ! set scale [SetZoom $w $h] ! if {$scale!=$plot_config(misc,zoom)} { global canvas OMF_SaveDisplayState ! set plot_config(misc,zoom) $scale Ow_PushWatchCursor DrawFrame $canvas PackViewport *************** *** 851,856 **** --- 827,833 ---- proc ClearFrame {} { global ViewportWidth ViewportHeight DisplayRotation set autodisplay(sample) 0 + set autodisplay(datascale) 0 set autodisplay(zoom) 0 ReadFile {} {} $ViewportWidth $ViewportHeight \ $DisplayRotation autodisplay *************** *** 861,867 **** global FileId RealFileId canvas global ViewportWidth ViewportHeight DisplayRotation global DefaultViewportWidth DefaultViewportHeight ! global FrameScale plot_config # Put up watch cursor Ow_PushWatchCursor --- 838,844 ---- global FileId RealFileId canvas global ViewportWidth ViewportHeight DisplayRotation global DefaultViewportWidth DefaultViewportHeight ! global plot_config datascalewidget # Put up watch cursor Ow_PushWatchCursor *************** *** 884,898 **** upvar $autodispname autodisplay } else { # Default is to enable autodisplay ! set autodisplay(sample) 1 ! set autodisplay(zoom) 1 } if {$autodisplay(zoom)} { set scale -1 set cx 0.5 ; set cy 0.5 ;# Auto-center too. } else { ! set scale $FrameScale } # If auto-sampling is requested, temporarily reconfigure --- 861,876 ---- upvar $autodispname autodisplay } else { # Default is to enable autodisplay ! set autodisplay(sample) 1 ! set autodisplay(datascale) 1 ! set autodisplay(zoom) 1 } if {$autodisplay(zoom)} { set scale -1 set cx 0.5 ; set cy 0.5 ;# Auto-center too. } else { ! set scale $plot_config(misc,zoom) } # If auto-sampling is requested, temporarily reconfigure *************** *** 936,946 **** GetPlotExtents ViewportWidth ViewportHeight } DrawFrame $canvas GetFrameRotation DisplayRotation ! GetFrameScale FrameScale SetArrowSubsamplingIncrement # Subsample values that weren't in auto-sample mode should # be removed from auto-sample mode. if {$autodisplay(sample)} { --- 914,942 ---- GetPlotExtents ViewportWidth ViewportHeight } + set maxdatavalue [GetDataValueScaling] + set plot_config(misc,default_datascale) $maxdatavalue + if {$autodisplay(datascale)} { + set plot_config(misc,datascale) $maxdatavalue + } else { + SetDataValueScaling $plot_config(misc,datascale) + } + DrawFrame $canvas GetFrameRotation DisplayRotation ! GetZoom plot_config(misc,zoom) SetArrowSubsamplingIncrement + set tunits [GetDataValueUnit] + set tlabel "Data Scale" + if {![string match {} $tunits]} { + append tlabel " ($tunits)" + } + append tlabel ":" + $datascalewidget Configure -label $tlabel \ + -marklist $plot_config(misc,default_datascale) + set plot_config(misc,dataunits) $tunits + # Subsample values that weren't in auto-sample mode should # be removed from auto-sample mode. if {$autodisplay(sample)} { *************** *** 1003,1008 **** --- 999,1009 ---- return $errmsg } } + if { [string length $filename] == 0 } { + lappend errmsg "PROGRAMMING ERROR: Can't write to stdout in\ + [Oc_Main GetAppName]" + return $errmsg + } # Write file Ow_PushWatchCursor *************** *** 1201,1213 **** proc SetPlotConfiguration { cfgname } { global plot_config canvas upvar $cfgname cfg # Take appropriate actions - array set plot_config [array get cfg] Ow_PushWatchCursor UpdatePlotConfiguration DrawFrame $canvas UpdateCoordColors PackViewport Ow_PopWatchCursor } --- 1202,1224 ---- proc SetPlotConfiguration { cfgname } { global plot_config canvas upvar $cfgname cfg + # Take appropriate actions Ow_PushWatchCursor + GetScrollCenter xcenter ycenter ;# Except for 'Margin', plot + ## cfg doesn't change center. Could put in Margin correction, + ## but probably not worth the bother. + SetScale $cfg(misc,zoom) 0 + SetDataScaling $cfg(misc,datascale) 0 + array set plot_config [array get cfg] UpdatePlotConfiguration DrawFrame $canvas UpdateCoordColors PackViewport + global XScrollState YScrollState + if {!$XScrollState} { set xcenter 0.5 } + if {!$YScrollState} { set ycenter 0.5 } + SetScrollCenter $xcenter $ycenter Ow_PopWatchCursor } *************** *** 1325,1331 **** } } ! # Control bar row 1 frame; Holds "Subsample" and "Arrow mag" controls frame $ctrlbar.row1 # Arrow subsampling --- 1336,1342 ---- } } ! # Control bar row 1 frame; Holds "Subsample" and "Arrow size" controls frame $ctrlbar.row1 # Arrow subsampling *************** *** 1339,1350 **** Ow_PopWatchCursor } Ow_EntryScale New arrowsswidget $ctrlbar.subsample -label "Arrow Subsample:" \ -variable plot_config(arrow,subsample) -valuewidth 5 \ ! -scalewidth 50 -scalemin 0. -scalemax 20. -scalestep 0.5 \ -troughcolor [TroughColor] \ -outer_frame_options "-bd 2 -relief ridge" \ ! -command SetArrowSubsampling proc SetArrowSubsamplingIncrement { {incr {}} } { global arrowsswidget --- 1350,1363 ---- Ow_PopWatchCursor } + set valmax [[Oc_Config RunPlatform] GetValue compiletime_flt_max] Ow_EntryScale New arrowsswidget $ctrlbar.subsample -label "Arrow Subsample:" \ -variable plot_config(arrow,subsample) -valuewidth 5 \ ! -scalewidth 50 -rangemin 0. -rangemax 20. -scalestep 0.5 \ -troughcolor [TroughColor] \ -outer_frame_options "-bd 2 -relief ridge" \ ! -command SetArrowSubsampling \ ! -hardmin [expr -($valmax)] -hardmax $valmax proc SetArrowSubsamplingIncrement { {incr {}} } { global arrowsswidget *************** *** 1352,1401 **** $arrowsswidget Configure -scalestep $incr } ! # Arrow mag ! proc SetArrowMag { arrowmag } { global plot_config canvas ! if { $arrowmag == $plot_config(arrow,mag) } { return } ! set plot_config(arrow,mag) $arrowmag Ow_PushWatchCursor UpdatePlotConfiguration DrawFrame $canvas Ow_PopWatchCursor } ! proc ArrowMagCallback { widget action args } { global plot_config set x [$widget Cget -value] set y [OMF_MakeValidNumber $x] if { $x != $y } { # Illegal input string ! $widget Set $plot_config(arrow,mag) } else { ! SetArrowMag $x } } ! Ow_EntryBox New arrowmagwidget $ctrlbar -label "Mag:" \ ! -callback ArrowMagCallback -autoundo 0 \ ! -valuewidth 5 -variable plot_config(arrow,mag) \ ! -valuetype fixed -coloredits 1 -writethrough 0 \ ! -outer_frame_options "-bd 2 -relief ridge" ! # Frame scale ! Ow_EntryScale New zoomwidget $ctrlbar.framescale -label "Zoom:" \ ! -variable FrameScale -valuewidth 5 \ ! -scalewidth 50 -scalemin 0. -scalemax 100. -scalestep .5 \ -outer_frame_options "-bd 2 -relief ridge" \ ! -troughcolor [TroughColor] \ ! -command SetScale ### $ctrlbar packing pack $ctrlbar.rotation -side left -fill y pack $ctrlbar.row1 -side top -fill x pack [$arrowsswidget Cget -winpath] -in $ctrlbar.row1 \ -side left -fill both -expand 1 ! pack [$arrowmagwidget Cget -winpath] -in $ctrlbar.row1 -side right -fill y ! pack [$zoomwidget Cget -winpath] -side top -fill x ########################### MENUS ################################### set menubar .menu --- 1365,1469 ---- $arrowsswidget Configure -scalestep $incr } ! # Arrow size ! proc SetArrowSize { arrowsize } { global plot_config canvas ! if { $arrowsize == $plot_config(arrow,size) } { return } ! set plot_config(arrow,size) $arrowsize Ow_PushWatchCursor UpdatePlotConfiguration DrawFrame $canvas Ow_PopWatchCursor } ! proc ArrowSizeCallback { widget action args } { global plot_config set x [$widget Cget -value] set y [OMF_MakeValidNumber $x] if { $x != $y } { # Illegal input string ! $widget Set $plot_config(arrow,size) } else { ! SetArrowSize $x } } ! Ow_EntryBox New arrowsizewidget $ctrlbar -label "Size:" \ ! -callback ArrowSizeCallback -autoundo 0 \ ! -valuewidth 4 -variable plot_config(arrow,size) \ ! -valuetype fixed -valuejustify right \ ! -coloredits 1 -writethrough 0 \ ! -outer_frame_options "-bd 2 -relief ridge" \ ! -hardmin [[Oc_Config RunPlatform] GetValue compiletime_flt_min] \ ! -hardmax [[Oc_Config RunPlatform] GetValue compiletime_flt_max] ! # Data value scaling ! proc SetDataScaling { newscale {redraw 1}} { ! global plot_config canvas ! if {$newscale<=0} { ! # Illegal value; Reset to default ! set newscale $plot_config(misc,default_datascale) ! } ! set config [Oc_Config RunPlatform] ! set valmin [expr \ ! sqrt([$config GetValue compiletime_dbl_min])] ! if {$newscale<$valmin} { set newscale $valmin } ;# Safety ! set valmax [expr [$config GetValue compiletime_dbl_max]/4.0] ! if {$newscale>$valmax} { set newscale $valmax } ;# Safety ! if {$newscale!=$plot_config(misc,datascale)} { ! set tempscale [SetDataValueScaling $newscale] ! if {$tempscale!=$plot_config(misc,datascale)} { ! OMF_SaveDisplayState ! set plot_config(misc,datascale) [format "%.8g" $newscale] ! if {$redraw} { ! Ow_PushWatchCursor ! DrawFrame $canvas ! Ow_PopWatchCursor ! } ! } ! } ! } ! ! set plot_config(misc,datascale) [GetDataValueScaling] ! set minval [expr pow(10,round(log10($plot_config(misc,datascale)))-1)] ! set maxval [expr $minval*100] ! set plot_config(misc,dataunits) [GetDataValueUnit] ! set tunits $plot_config(misc,dataunits) ! set tlabel "Data Scale" ! if {![string match {} $tunits]} { ! append tlabel " ($tunits)" ! } ! append tlabel ":" ! Ow_EntryScale New datascalewidget $ctrlbar.datascale \ ! -label $tlabel" \ ! -variable plot_config(misc,datascale) -valuewidth 8 \ ! -scalewidth 50 -rangemin $minval -rangemax $maxval \ ! -scalestep 0.01 -displayfmt "%.3g" \ -outer_frame_options "-bd 2 -relief ridge" \ ! -troughcolor [TroughColor] -logscale 1 -autorange 1 \ ! -marklist $plot_config(misc,default_datascale) -markwidth 2 \ ! -command SetDataScaling \ ! -hardmax [expr \ ! [[Oc_Config RunPlatform] GetValue compiletime_dbl_max]/4.0] ! ! # Zoom (formerly known as FrameScale) ! Ow_EntryScale New zoomwidget $ctrlbar.zoom -label "Zoom:" \ ! -variable plot_config(misc,zoom) -valuewidth 5 \ ! -scalewidth 50 -rangemin 0. -rangemax 100. -scalestep .5 \ ! -outer_frame_options "-bd 2 -relief ridge" \ ! -troughcolor [TroughColor] -autorange 1 \ ! -valuetype posfloat -command SetScale \ ! -hardmin [[Oc_Config RunPlatform] GetValue compiletime_flt_min] \ ! -hardmax [[Oc_Config RunPlatform] GetValue compiletime_flt_max] ### $ctrlbar packing + pack [$zoomwidget Cget -winpath] -side bottom -fill x pack $ctrlbar.rotation -side left -fill y pack $ctrlbar.row1 -side top -fill x pack [$arrowsswidget Cget -winpath] -in $ctrlbar.row1 \ -side left -fill both -expand 1 ! pack [$arrowsizewidget Cget -winpath] -in $ctrlbar.row1 -side right -fill y ! pack [$datascalewidget Cget -winpath] -side top -fill x ########################### MENUS ################################### set menubar .menu *************** *** 1456,1462 **** $cf.canvas configure -takefocus 0 $cf configure -takefocus 1 ! proc Zoom { amt } { global FrameScale; SetScale [expr {$amt*$FrameScale}] } bind $cf { OMF_RecoverDisplayState } bind $cf { Zoom $SmallZoom } bind $cf { Zoom $LargeZoom } --- 1524,1533 ---- $cf.canvas configure -takefocus 0 $cf configure -takefocus 1 ! proc Zoom { amt } { ! global plot_config ! SetScale [expr {$amt*$plot_config(misc,zoom)}] ! } bind $cf { OMF_RecoverDisplayState } bind $cf { Zoom $SmallZoom } bind $cf { Zoom $LargeZoom } *************** *** 1659,1665 **** } proc OMF_DrawZoomBox { v2x v2y } { ! global FrameScale zoomwidget global omfP1x omfP1y canvas global omfZoomBoxMinWidth global omfZoomDirection omfZoomBoxForeColorA omfZoomBoxForeColorB --- 1730,1736 ---- } proc OMF_DrawZoomBox { v2x v2y } { ! global plot_config zoomwidget global omfP1x omfP1y canvas global omfZoomBoxMinWidth global omfZoomDirection omfZoomBoxForeColorA omfZoomBoxForeColorB *************** *** 1677,1683 **** set zw [expr {abs($p2x-$omfP1x)}] set zh [expr {abs($p2y-$omfP1y)}] if {$zw<$omfZoomBoxMinWidth || $zh<$omfZoomBoxMinWidth} { ! $zoomwidget Set $FrameScale return } OMF_StrokeZoomBox $omfP1x $omfP1y $p2x $p2y zoombox --- 1748,1754 ---- set zw [expr {abs($p2x-$omfP1x)}] set zh [expr {abs($p2y-$omfP1y)}] if {$zw<$omfZoomBoxMinWidth || $zh<$omfZoomBoxMinWidth} { ! $zoomwidget Set $plot_config(misc,zoom) return } OMF_StrokeZoomBox $omfP1x $omfP1y $p2x $p2y zoombox *************** *** 1749,1761 **** } if {$omfZoomDirection<0} { set scale [expr {1./double($scale)}]} global omfStdNumericFormat ! set newsize [OMF_FormatNumber [expr {$FrameScale*$scale}]] $zoomwidget SetEdit $newsize } } proc OMF_DoZoom { v2x v2y } { global canvas omfP1x omfP1y ! global FrameScale global omfZoomBoxMinWidth omfZoomDirection global CanvasWidth CanvasHeight global XScrollState YScrollState ScrollCrossDim --- 1820,1833 ---- } if {$omfZoomDirection<0} { set scale [expr {1./double($scale)}]} global omfStdNumericFormat ! set newsize [OMF_FormatNumber \ ! [expr {$plot_config(misc,zoom)*$scale}]] $zoomwidget SetEdit $newsize } } proc OMF_DoZoom { v2x v2y } { global canvas omfP1x omfP1y ! global plot_config global omfZoomBoxMinWidth omfZoomDirection global CanvasWidth CanvasHeight global XScrollState YScrollState ScrollCrossDim *************** *** 1805,1818 **** } else { set scale $yscale } ! # Note: $scale is magnification relative to current $FrameScale; ! # $FrameScale is magnification relative to mesh scaling. OMF_SaveDisplayState ! set newframescale [expr {floor($scale*$FrameScale*100.)/100.}] ! if {$newframescale>0.} { ! set FrameScale $newframescale ! SetFrameScale $FrameScale } else { unset omfP1x omfP1y set omfZoomDirection 0 --- 1877,1891 ---- } else { set scale $yscale } ! # Note: $scale is magnification relative to current ! # $plot_config(misc,zoom), which is magnification ! # relative to mesh scaling. OMF_SaveDisplayState ! set newzoom [expr {floor($scale*$plot_config(misc,zoom)*100.)/100.}] ! if {$newzoom>0.} { ! set plot_config(misc,zoom) $newzoom ! SetZoom $plot_config(misc,zoom) } else { unset omfP1x omfP1y set omfZoomDirection 0 diff -crN oommf-1.1a2/app/mmgraph/appindex.tcl oommf/app/mmgraph/appindex.tcl *** oommf-1.1a2/app/mmgraph/appindex.tcl Wed Apr 5 00:22:54 2000 --- oommf/app/mmgraph/appindex.tcl Tue Apr 4 23:20:52 2000 *************** *** 1,7 **** Oc_Application Define { -name mmGraph ! -version 1.1.0.2 -machine omfsh -file mmgraph.tcl } --- 1,7 ---- Oc_Application Define { -name mmGraph ! -version 1.1.1.0 -machine omfsh -file mmgraph.tcl } diff -crN oommf-1.1a2/app/mmgraph/dialog.tcl oommf/app/mmgraph/dialog.tcl *** oommf-1.1a2/app/mmgraph/dialog.tcl Wed Apr 5 00:22:54 2000 --- oommf/app/mmgraph/dialog.tcl Tue Apr 4 23:20:52 2000 *************** *** 58,68 **** --- 58,75 ---- autolabel 1 xlabel {} ylabel {} + y2label {} autolimits 1 xmin 0 xmax 1 ymin 0 ymax 1 + y2min 0 + y2max 1 + lmargin_min 0 + rmargin_min 0 + tmargin_min 0 + bmargin_min 0 ptbufsize 0 } set gpsc [$this GlobalName psc] *************** *** 90,96 **** # Title Ow_EntryBox New _ $winpath \ -outer_frame_options "-bd 0 -relief flat" \ ! -label {Title:} -valuewidth 0 \ -disabledforeground $disabledcolor \ -variable ${gpsc}(title) pack [$_ Cget -winpath] -fill x -expand 1 -padx 10 -pady 10 --- 97,103 ---- # Title Ow_EntryBox New _ $winpath \ -outer_frame_options "-bd 0 -relief flat" \ ! -label {Title:} -valuewidth 15 \ -disabledforeground $disabledcolor \ -variable ${gpsc}(title) pack [$_ Cget -winpath] -fill x -expand 1 -padx 10 -pady 10 *************** *** 104,138 **** -variable ${gpsc}(autolabel) \ -onvalue 1 -offvalue 0 \ -command "$this UpdateState autolabel" label $gf.xlabel -text "X Label:" Ow_EntryBox New _ $gf \ -outer_frame_options "-bd 0 -relief flat" \ ! -label {} -valuewidth 0 \ -disabledforeground $disabledcolor \ -variable ${gpsc}(xlabel) lappend dep(autolabel) $_ ! grid $gf.autolabel $gf.xlabel [$_ Cget -winpath] ! grid $gf.autolabel -sticky nw -padx 10 ! grid $gf.xlabel -sticky w grid [$_ Cget -winpath] -sticky ew ! label $gf.ylabel -text "Y Label:" Ow_EntryBox New _ $gf \ -outer_frame_options "-bd 0 -relief flat" \ ! -label {} -valuewidth 0 \ -disabledforeground $disabledcolor \ -variable ${gpsc}(ylabel) lappend dep(autolabel) $_ ! grid ^ $gf.ylabel [$_ Cget -winpath] grid $gf.ylabel -sticky w grid [$_ Cget -winpath] -sticky ew $this UpdateState autolabel # Spacer set rowcnt [lindex [grid size $gf] 1] grid rowconfigure $gf $rowcnt -minsize 10 # Scaling set dep(autolimits) {} --- 111,157 ---- -variable ${gpsc}(autolabel) \ -onvalue 1 -offvalue 0 \ -command "$this UpdateState autolabel" + grid $gf.autolabel -columnspan 6 -sticky sw label $gf.xlabel -text "X Label:" Ow_EntryBox New _ $gf \ -outer_frame_options "-bd 0 -relief flat" \ ! -label {} -valuewidth 10 \ -disabledforeground $disabledcolor \ -variable ${gpsc}(xlabel) lappend dep(autolabel) $_ ! grid x $gf.xlabel [$_ Cget -winpath] - - - ! grid $gf.xlabel -sticky e grid [$_ Cget -winpath] -sticky ew ! label $gf.ylabel -text "Y1 Label:" Ow_EntryBox New _ $gf \ -outer_frame_options "-bd 0 -relief flat" \ ! -label {} -valuewidth 10 \ -disabledforeground $disabledcolor \ -variable ${gpsc}(ylabel) lappend dep(autolabel) $_ ! grid x $gf.ylabel [$_ Cget -winpath] - - - grid $gf.ylabel -sticky w grid [$_ Cget -winpath] -sticky ew + $this UpdateState autolabel + label $gf.y2label -text "Y2 Label:" + Ow_EntryBox New _ $gf \ + -outer_frame_options "-bd 0 -relief flat" \ + -label {} -valuewidth 10 \ + -disabledforeground $disabledcolor \ + -variable ${gpsc}(y2label) + lappend dep(autolabel) $_ + grid x $gf.y2label [$_ Cget -winpath] - - - + grid $gf.y2label -sticky w + grid [$_ Cget -winpath] -sticky ew $this UpdateState autolabel # Spacer set rowcnt [lindex [grid size $gf] 1] grid rowconfigure $gf $rowcnt -minsize 10 + incr rowcnt # Scaling set dep(autolimits) {} *************** *** 140,223 **** -variable ${gpsc}(autolimits) \ -onvalue 1 -offvalue 0 \ -command "$this UpdateState autolimits" label $gf.xmin -text "X Min:" ! Ow_EntryBox New _ $gf \ -outer_frame_options "-bd 0 -relief flat" \ ! -label {} -valuewidth 0 \ -disabledforeground $disabledcolor \ -variable ${gpsc}(xmin) -valuetype float ! lappend dep(autolimits) $_ ! set rowcnt [lindex [grid size $gf] 1] ! grid $gf.autolimits $gf.xmin [$_ Cget -winpath] -row $rowcnt ! grid $gf.autolimits -sticky nw -padx 10 ! grid $gf.xmin -sticky w ! grid [$_ Cget -winpath] -sticky ew ! label $gf.xmax -text "X Max:" ! Ow_EntryBox New _ $gf \ -outer_frame_options "-bd 0 -relief flat" \ ! -label {} -valuewidth 0 \ -disabledforeground $disabledcolor \ -variable ${gpsc}(xmax) -valuetype float ! lappend dep(autolimits) $_ ! grid ^ $gf.xmax [$_ Cget -winpath] ! grid $gf.xmax -sticky w ! grid [$_ Cget -winpath] -sticky ew ! label $gf.ymin -text "Y Min:" ! Ow_EntryBox New _ $gf \ -outer_frame_options "-bd 0 -relief flat" \ ! -label {} -valuewidth 0 \ -disabledforeground $disabledcolor \ -variable ${gpsc}(ymin) -valuetype float ! lappend dep(autolimits) $_ ! grid ^ $gf.ymin [$_ Cget -winpath] ! grid $gf.ymin -sticky w ! grid [$_ Cget -winpath] -sticky ew ! label $gf.ymax -text "Y Max:" ! Ow_EntryBox New _ $gf \ -outer_frame_options "-bd 0 -relief flat" \ ! -label {} -valuewidth 0 \ -disabledforeground $disabledcolor \ -variable ${gpsc}(ymax) -valuetype float ! lappend dep(autolimits) $_ ! grid ^ $gf.ymax [$_ Cget -winpath] ! grid $gf.ymax -sticky w ! grid [$_ Cget -winpath] -sticky ew ! foreach {colcount rowcount} [grid size $gf] {} ! grid columnconfigure $gf [expr $colcount-1] -weight 1 - $this UpdateState autolabel $this UpdateState autolimits pack $gf -fill x -expand 1 -padx 10 # Point buffer Ow_EntryBox New _ $winpath \ -outer_frame_options "-bd 0 -relief flat" \ ! -label {Point buffer size:} -valuewidth 6 \ -disabledforeground $disabledcolor \ -variable ${gpsc}(ptbufsize) -valuetype posint pack [$_ Cget -winpath] -fill none -expand 0 -anchor w \ ! -padx 10 -pady 10 # Control buttons set ctrlframe [frame $winpath.ctrlframe] ! set cancel [button $ctrlframe.cancel -text "Cancel" \ ! -command "$this Action cancel" ] set apply [button $ctrlframe.apply -text "Apply" \ -command "$this Action apply" ] set ok [button $ctrlframe.ok -text "OK" \ -command "$this Action ok" ] ! pack $cancel $apply $ok -side left -expand 1 -padx 20 pack $ctrlframe -fill x -expand 1 -padx 10 -pady 10 ! wm protocol $winpath WM_DELETE_WINDOW "$cancel invoke" Ow_SetIcon $winpath } --- 159,299 ---- -variable ${gpsc}(autolimits) \ -onvalue 1 -offvalue 0 \ -command "$this UpdateState autolimits" + grid $gf.autolimits -columnspan 6 -sticky sw -row $rowcnt label $gf.xmin -text "X Min:" ! Ow_EntryBox New aval $gf \ -outer_frame_options "-bd 0 -relief flat" \ ! -label {} -valuewidth 6 \ -disabledforeground $disabledcolor \ -variable ${gpsc}(xmin) -valuetype float ! lappend dep(autolimits) $aval label $gf.xmax -text "X Max:" ! Ow_EntryBox New bval $gf \ -outer_frame_options "-bd 0 -relief flat" \ ! -label {} -valuewidth 6 \ -disabledforeground $disabledcolor \ -variable ${gpsc}(xmax) -valuetype float ! lappend dep(autolimits) $bval ! grid x $gf.xmin [$aval Cget -winpath] \ ! x $gf.xmax [$bval Cget -winpath] ! grid $gf.xmin $gf.xmax -sticky e ! grid [$aval Cget -winpath] [$bval Cget -winpath] -sticky ew ! label $gf.ymin -text "Y1 Min:" ! Ow_EntryBox New aval $gf \ -outer_frame_options "-bd 0 -relief flat" \ ! -label {} -valuewidth 6 \ -disabledforeground $disabledcolor \ -variable ${gpsc}(ymin) -valuetype float ! lappend dep(autolimits) $aval ! label $gf.ymax -text "Y1 Max:" ! Ow_EntryBox New bval $gf \ -outer_frame_options "-bd 0 -relief flat" \ ! -label {} -valuewidth 6 \ -disabledforeground $disabledcolor \ -variable ${gpsc}(ymax) -valuetype float ! lappend dep(autolimits) $bval ! grid x $gf.ymin [$aval Cget -winpath] \ ! x $gf.ymax [$bval Cget -winpath] ! grid $gf.ymin $gf.ymax -sticky e ! grid [$aval Cget -winpath] [$bval Cget -winpath] -sticky ew ! ! label $gf.y2min -text "Y2 Min:" ! Ow_EntryBox New aval $gf \ ! -outer_frame_options "-bd 0 -relief flat" \ ! -label {} -valuewidth 6 \ ! -disabledforeground $disabledcolor \ ! -variable ${gpsc}(y2min) -valuetype float ! lappend dep(autolimits) $aval ! label $gf.y2max -text "Y2 Max:" ! Ow_EntryBox New bval $gf \ ! -outer_frame_options "-bd 0 -relief flat" \ ! -label {} -valuewidth 6 \ ! -disabledforeground $disabledcolor \ ! -variable ${gpsc}(y2max) -valuetype float ! lappend dep(autolimits) $bval ! grid x $gf.y2min [$aval Cget -winpath] \ ! x $gf.y2max [$bval Cget -winpath] ! grid $gf.y2min $gf.y2max -sticky e ! grid [$aval Cget -winpath] [$bval Cget -winpath] -sticky ew $this UpdateState autolimits + + # Spacer + set rowcnt [lindex [grid size $gf] 1] + grid rowconfigure $gf $rowcnt -minsize 10 + incr rowcnt + + # Margins + label $gf.marginrequests -text "Margin Requests" + grid $gf.marginrequests -sticky w -columnspan 6 -row $rowcnt + label $gf.left -text "Left:" + Ow_EntryBox New lval $gf \ + -outer_frame_options "-bd 0 -relief flat" \ + -label {} -valuewidth 6 \ + -disabledforeground $disabledcolor \ + -variable ${gpsc}(lmargin_min) -valuetype posint + label $gf.right -text "Right:" + Ow_EntryBox New rval $gf \ + -outer_frame_options "-bd 0 -relief flat" \ + -label {} -valuewidth 6 \ + -disabledforeground $disabledcolor \ + -variable ${gpsc}(rmargin_min) -valuetype posint + grid x $gf.left [$lval Cget -winpath] \ + x $gf.right [$rval Cget -winpath] + grid $gf.left $gf.right -sticky e + grid [$lval Cget -winpath] [$rval Cget -winpath] -sticky ew + label $gf.top -text "Top:" + Ow_EntryBox New tval $gf \ + -outer_frame_options "-bd 0 -relief flat" \ + -label {} -valuewidth 6 \ + -disabledforeground $disabledcolor \ + -variable ${gpsc}(tmargin_min) -valuetype posint + label $gf.bottom -text "Bottom:" + Ow_EntryBox New bval $gf \ + -outer_frame_options "-bd 0 -relief flat" \ + -label {} -valuewidth 6 \ + -disabledforeground $disabledcolor \ + -variable ${gpsc}(bmargin_min) -valuetype posint + grid x $gf.top [$tval Cget -winpath] \ + x $gf.bottom [$bval Cget -winpath] -sticky ew + grid $gf.top $gf.bottom -sticky e + grid [$tval Cget -winpath] [$bval Cget -winpath] -sticky ew + + # Pack gf frame + grid columnconfigure $gf 0 -minsize 10 + grid columnconfigure $gf 2 -weight 1 + grid columnconfigure $gf 3 -minsize 15 + grid columnconfigure $gf 5 -weight 1 pack $gf -fill x -expand 1 -padx 10 # Point buffer Ow_EntryBox New _ $winpath \ -outer_frame_options "-bd 0 -relief flat" \ ! -label {Point Buffer Size:} -valuewidth 6 \ -disabledforeground $disabledcolor \ -variable ${gpsc}(ptbufsize) -valuetype posint pack [$_ Cget -winpath] -fill none -expand 0 -anchor w \ ! -padx 10 -pady 15 # Control buttons set ctrlframe [frame $winpath.ctrlframe] ! set close [button $ctrlframe.close -text "Close" \ ! -command "$this Action close" ] set apply [button $ctrlframe.apply -text "Apply" \ -command "$this Action apply" ] set ok [button $ctrlframe.ok -text "OK" \ -command "$this Action ok" ] ! pack $close $apply $ok -side left -expand 1 -padx 20 pack $ctrlframe -fill x -expand 1 -padx 10 -pady 10 ! wm protocol $winpath WM_DELETE_WINDOW "$close invoke" Ow_SetIcon $winpath } *************** *** 255,261 **** # Dialog action routine callback method Action { cmd } { switch $cmd { ! cancel { $this Delete return } --- 331,337 ---- # Dialog action routine callback method Action { cmd } { switch $cmd { ! close { $this Delete return } diff -crN oommf-1.1a2/app/mmgraph/mmgraph.tcl oommf/app/mmgraph/mmgraph.tcl *** oommf-1.1a2/app/mmgraph/mmgraph.tcl Wed Apr 5 00:22:54 2000 --- oommf/app/mmgraph/mmgraph.tcl Tue Apr 4 23:20:52 2000 *************** *** 31,43 **** --- 31,51 ---- autolabel 1 xlabel {} ylabel {} + y2label {} xdefaultlabel {} ydefaultlabel {} + y2defaultlabel {} autolimits 1 xmin 0 xmax 1 ymin 0 ymax 1 + y2min 0 + y2max 1 + lmargin_min 0 + rmargin_min 0 + tmargin_min 0 + bmargin_min 0 ptbufsize 0 oldptbufsize 0 } *************** *** 54,83 **** set no_event_loop 0 ;# Default is to enter the event loop } - # Process command line arguments - foreach option $argv { - if { [string match "--" $option] } { break } ;# No more options - if {[regexp -nocase -- {^--?no_?net$} $option]} { - set no_net 1 - } - } - # Support libraries package require Oc 1.1.0.1 package require Tk ! package require Ow Oc_Main SetAppName mmGraph ! Oc_Main SetVersion 1.1.0.2 ! regexp \\\044Date:(.*)\\\044 {$Date: 1999/10/21 23:17:13 $} _ date Oc_Main SetDate [string trim $date] ! # regexp \\\044Author:(.*)\\\044 {$Author: donahue $} _ author # Oc_Main SetAuthor [Oc_Person Lookup [string trim $author]] Oc_Main SetAuthor [Oc_Person Lookup donahue] Oc_Main SetHelpURL [Oc_Url FromFilename [file join [file dirname \ [file dirname [file dirname [Oc_DirectPathname [info \ script]]]]] doc userguide Data_Graph_Display_mmGraph.html]] # Death proc Die { win } { --- 62,90 ---- set no_event_loop 0 ;# Default is to enter the event loop } # Support libraries package require Oc 1.1.0.1 package require Tk ! package require Ow 1.1.1.0 ;# Ow_GraphWin: Second y axis ! wm withdraw . Oc_Main SetAppName mmGraph ! Oc_Main SetVersion 1.1.1.0 ! regexp \\\044Date:(.*)\\\044 {$Date: 2000/03/24 00:25:33 $} _ date Oc_Main SetDate [string trim $date] ! # regexp \\\044Author:(.*)\\\044 {$Author: dgp $} _ author # Oc_Main SetAuthor [Oc_Person Lookup [string trim $author]] Oc_Main SetAuthor [Oc_Person Lookup donahue] Oc_Main SetHelpURL [Oc_Url FromFilename [file join [file dirname \ [file dirname [file dirname [Oc_DirectPathname [info \ script]]]]] doc userguide Data_Graph_Display_mmGraph.html]] + Oc_CommandLine Option net { + {flag {expr {![catch {expr {$flag && $flag}}]}} {= 0 or 1}} + } { + global no_net; set no_net [expr {!$flag}] + } {Disable/enable data from other apps; default=enabled} + Oc_CommandLine Parse $argv # Death proc Die { win } { *************** *** 232,237 **** --- 239,252 ---- lappend column_index $data_index($ordinate) } } + foreach ordinate $data_index(all) { + if {[info exists menu_select(y2,$ordinate)] && \ + $menu_select(y2,$ordinate) } { + # Label $ordinate is turned on in y2-axis menu + lappend column_list $ordinate + lappend column_index $data_index($ordinate) + } + } } # Build column headers *************** *** 528,535 **** # Menu bar set menubar .mb ! foreach {filemenu xmenu ymenu optionsmenu helpmenu} \ ! [Ow_MakeMenubar . $menubar File X-Axis Y-Axis Options Help] {} $filemenu add command -label "Open..." -underline 0 \ -command { LaunchDialog $filemenu "Open..." "OPEN" } --- 543,550 ---- # Menu bar set menubar .mb ! foreach {filemenu xmenu ymenu y2menu optionsmenu helpmenu} \ ! [Ow_MakeMenubar . $menubar File X {Y1 1} {Y2 1} Options Help] {} $filemenu add command -label "Open..." -underline 0 \ -command { LaunchDialog $filemenu "Open..." "OPEN" } *************** *** 542,548 **** $filemenu add command -label "Exit" -command { destroy . } -underline 1 $xmenu configure -tearoff 1 -title "X-Axis: [Oc_Main GetInstanceName]" ! $ymenu configure -tearoff 1 -title "Y-Axis: [Oc_Main GetInstanceName]" Ow_StdHelpMenu $helpmenu proc SetPlotConfiguration { pscvar } { --- 557,564 ---- $filemenu add command -label "Exit" -command { destroy . } -underline 1 $xmenu configure -tearoff 1 -title "X-Axis: [Oc_Main GetInstanceName]" ! $ymenu configure -tearoff 1 -title "Y1-Axis: [Oc_Main GetInstanceName]" ! $y2menu configure -tearoff 1 -title "Y2-Axis: [Oc_Main GetInstanceName]" Ow_StdHelpMenu $helpmenu proc SetPlotConfiguration { pscvar } { *************** *** 550,576 **** upvar $pscvar psc array set _mmgpsc [array get psc] # Array elements: title, ! # autolabel,xlabel,ylabel, ! # xdefaultlabel,ydefaultlabel, ! # autolimits,xmin,xmax,ymin,ymax, ! # ptbufsize $graph Configure -title \ [subst -nocommands -novariables $_mmgpsc(title)] if {$_mmgpsc(autolabel)} { ! foreach {_mmgpsc(xlabel) _mmgpsc(ylabel)} \ ! [list $_mmgpsc(xdefaultlabel) $_mmgpsc(ydefaultlabel)] {} ! } ! $graph Configure -xlabel \ ! [subst -nocommands -novariables $_mmgpsc(xlabel)] \ ! -ylabel [subst -nocommands -novariables $_mmgpsc(ylabel)] if {$_mmgpsc(autolimits)} { $graph SetGraphLimits ! foreach {_mmgpsc(xmin) _mmgpsc(ymin) _mmgpsc(xmax) _mmgpsc(ymax)} \ ! [$graph GetGraphLimits] {} } else { ! $graph SetGraphLimits $_mmgpsc(xmin) $_mmgpsc(ymin) \ ! $_mmgpsc(xmax) $_mmgpsc(ymax) ! } ResetBufferSize $graph RefreshDisplay } --- 566,603 ---- upvar $pscvar psc array set _mmgpsc [array get psc] # Array elements: title, ! # autolabel,xlabel,ylabel,y2label, ! # xdefaultlabel,ydefaultlabel,y2defaultlabel, ! # autolimits,xmin,xmax,ymin,ymax,y2min,y2max, ! # ptbufsize,lmargin_min,rmargin_min, ! # tmargin_min,bmargin_min $graph Configure -title \ [subst -nocommands -novariables $_mmgpsc(title)] if {$_mmgpsc(autolabel)} { ! set _mmgpsc(xlabel) $_mmgpsc(xdefaultlabel) ! set _mmgpsc(ylabel) $_mmgpsc(ydefaultlabel) ! set _mmgpsc(y2label) $_mmgpsc(y2defaultlabel) ! } ! $graph Configure \ ! -xlabel [subst -nocommands -novariables $_mmgpsc(xlabel)] \ ! -ylabel [subst -nocommands -novariables $_mmgpsc(ylabel)] \ ! -y2label [subst -nocommands -novariables $_mmgpsc(y2label)] if {$_mmgpsc(autolimits)} { $graph SetGraphLimits ! foreach { _mmgpsc(xmin) _mmgpsc(xmax) \ ! _mmgpsc(ymin) _mmgpsc(ymax) \ ! _mmgpsc(y2min) _mmgpsc(y2max) } \ ! [$graph GetGraphLimits] { break } } else { ! $graph SetGraphLimits \ ! $_mmgpsc(xmin) $_mmgpsc(xmax) \ ! $_mmgpsc(ymin) $_mmgpsc(ymax) \ ! $_mmgpsc(y2min) $_mmgpsc(y2max) ! } ! $graph SetMargins \ ! $_mmgpsc(lmargin_min) $_mmgpsc(rmargin_min) \ ! $_mmgpsc(tmargin_min) $_mmgpsc(bmargin_min) ! ResetBufferSize $graph RefreshDisplay } *************** *** 648,665 **** UpdateGraphDisplay } ! # Proc to add new labels to the x & y axis menus. It is not currently ! # possible to remove a label once added. A global array menu_select ! # stores the state of the axis menu select boxes: # menu_select(x) = name of selected label, or {} if none # menu_select(y,$label) = 1 if box associated with label is selected, # 0 otherwise. set menu_select(x) {} proc AppendAxesSelect { new_labels } { ! global xmenu ymenu menu_select # Add new entries foreach label $new_labels { set menu_select(y,$label) 0 regsub -all "\[ \r\t\n\]" $label { } compressed_label $xmenu add radiobutton -label $compressed_label \ -variable menu_select(x) -value $label \ --- 675,694 ---- UpdateGraphDisplay } ! # Proc to add new labels to the x, y & y2 axis menus. It is not ! # currently possible to remove a label once added. A global array ! # menu_select stores the state of the axis menu select boxes: # menu_select(x) = name of selected label, or {} if none # menu_select(y,$label) = 1 if box associated with label is selected, # 0 otherwise. + # menu_select(y2,$label) = Same as "y,$label", but for right y-axis set menu_select(x) {} proc AppendAxesSelect { new_labels } { ! global xmenu ymenu y2menu menu_select # Add new entries foreach label $new_labels { set menu_select(y,$label) 0 + set menu_select(y2,$label) 0 regsub -all "\[ \r\t\n\]" $label { } compressed_label $xmenu add radiobutton -label $compressed_label \ -variable menu_select(x) -value $label \ *************** *** 667,673 **** $ymenu add checkbutton -label $compressed_label \ -variable menu_select(y,$label) \ -offvalue 0 -onvalue 1 \ ! -command [list ChangeCurve $label 1] } } --- 696,706 ---- $ymenu add checkbutton -label $compressed_label \ -variable menu_select(y,$label) \ -offvalue 0 -onvalue 1 \ ! -command [list ChangeCurve 1 $label 1] ! $y2menu add checkbutton -label $compressed_label \ ! -variable menu_select(y2,$label) \ ! -offvalue 0 -onvalue 1 \ ! -command [list ChangeCurve 2 $label 1] } } *************** *** 695,706 **** if {$_mmgpsc(autolimits)} { set limits_change [$graph SetGraphLimits] ! foreach {_mmgpsc(xmin) _mmgpsc(ymin) _mmgpsc(xmax) _mmgpsc(ymax)} \ ! [$graph GetGraphLimits] {} } else { set limits_change [$graph SetGraphLimits \ ! $_mmgpsc(xmin) $_mmgpsc(ymin) \ ! $_mmgpsc(xmax) $_mmgpsc(ymax)] } if {$limits_change} { $graph RefreshDisplay --- 728,742 ---- if {$_mmgpsc(autolimits)} { set limits_change [$graph SetGraphLimits] ! foreach { _mmgpsc(xmin) _mmgpsc(xmax) \ ! _mmgpsc(ymin) _mmgpsc(ymax) \ ! _mmgpsc(y2min) _mmgpsc(y2max) } \ ! [$graph GetGraphLimits] { break } } else { set limits_change [$graph SetGraphLimits \ ! $_mmgpsc(xmin) $_mmgpsc(xmax) \ ! $_mmgpsc(ymin) $_mmgpsc(ymax) \ ! $_mmgpsc(y2min) $_mmgpsc(y2max)] } if {$limits_change} { $graph RefreshDisplay *************** *** 721,728 **** # Check for curve break record if {[llength $record]==0} { foreach ordinate $data_index(all) { ! if {!$menu_select(y,$ordinate)} { continue } ;# Skip curve ! $graph AddDataPoints $ordinate [list {} {}] } if {$redraw} { $graph DrawCurves --- 757,768 ---- # Check for curve break record if {[llength $record]==0} { foreach ordinate $data_index(all) { ! if {$menu_select(y,$ordinate)} { ! $graph AddDataPoints $ordinate 1 [list {} {}] ! } ! if {$menu_select(y2,$ordinate)} { ! $graph AddDataPoints $ordinate 2 [list {} {}] ! } } if {$redraw} { $graph DrawCurves *************** *** 737,754 **** return ;# No abscissa value at this index } set change_limits 0 ! foreach { gxmin gymin gxmax gymax } [$graph GetGraphLimits] {} foreach ordinate $data_index(all) { ! if {!$menu_select(y,$ordinate)} { continue } ;# Skip curve set yindex $data_index($ordinate) if {![string match {} [set yvalue [lindex $record $yindex]]]} { ! set xmin {} ! foreach { xmin ymin xmax ymax } \ ! [$graph AddDataPoints $ordinate [list $xvalue $yvalue]] {} ! if {![string match {} $xmin]} { ! if {$xmin<$gxmin || $ymin<$gymin || \ ! $xmax>$gxmax || $ymax>$gymax} { ! set change_limits 1 } } } --- 777,816 ---- return ;# No abscissa value at this index } set change_limits 0 ! foreach { gxmin gxmax gymin gymax gy2min gy2max} \ ! [$graph GetGraphLimits] { break } foreach ordinate $data_index(all) { ! if {!$menu_select(y,$ordinate) && \ ! !$menu_select(y2,$ordinate)} { continue } ;# Skip curve ! ! set y1axis [set y2axis 0] ! if {$menu_select(y,$ordinate)} { set y1axis 1 } ! if {$menu_select(y2,$ordinate)} { set y2axis 1 } ! if {!$y1axis && !$y2axis} { continue } ;# Skip curve set yindex $data_index($ordinate) if {![string match {} [set yvalue [lindex $record $yindex]]]} { ! if {$y1axis} { ! set xmin {} ! foreach { xmin ymin xmax ymax } \ ! [$graph AddDataPoints $ordinate 1 \ ! [list $xvalue $yvalue]] {} ! if {![string match {} $xmin]} { ! if {$xmin<$gxmin || $ymin<$gymin || \ ! $xmax>$gxmax || $ymax>$gymax} { ! set change_limits 1 ! } ! } ! } ! if {$y2axis} { ! set xmin {} ! foreach { xmin ymin xmax ymax } \ ! [$graph AddDataPoints $ordinate 2 \ ! [list $xvalue $yvalue]] {} ! if {![string match {} $xmin]} { ! if {$xmin<$gxmin || $ymin<$gy2min || \ ! $xmax>$gxmax || $ymax>$gy2max} { ! set change_limits 1 ! } } } } *************** *** 766,789 **** # Proc to add or delete a curve from the graph, as determined by the # value of menu_select(y,$ordinate) (1=>display, 0=>don't display). ! proc ChangeCurve { ordinate redraw } { global menu_select data_value data_index data_unit graph _mmgpsc ! $graph DeleteCurve $ordinate ;# Remove any previously curve by this name ! if {![info exists menu_select(y,$ordinate)]} { return ;# Safety } # Turn curve on? ! if {$menu_select(y,$ordinate)} { if {[string match {} $menu_select(x)]} { return 0 ;# No abscissa selected } set abscissa $menu_select(x) # Write curve set data_list {} ! $graph NewCurve $ordinate set xindex $data_index($abscissa) set yindex $data_index($ordinate) for {set i $data_value(count,start)} \ --- 828,858 ---- # Proc to add or delete a curve from the graph, as determined by the # value of menu_select(y,$ordinate) (1=>display, 0=>don't display). ! # Import "yaxis" should be either "1" or "2" ! proc ChangeCurve { yaxis ordinate redraw } { global menu_select data_value data_index data_unit graph _mmgpsc ! $graph DeleteCurve $ordinate $yaxis ;# Remove any preexisting curve ! ## by this name ! if {$yaxis == 2} { ! set ys "y2" ! } else { ! set ys "y" ! } ! if {![info exists menu_select($ys,$ordinate)]} { return ;# Safety } # Turn curve on? ! if {$menu_select($ys,$ordinate)} { if {[string match {} $menu_select(x)]} { return 0 ;# No abscissa selected } set abscissa $menu_select(x) # Write curve set data_list {} ! $graph NewCurve $ordinate $yaxis set xindex $data_index($abscissa) set yindex $data_index($ordinate) for {set i $data_value(count,start)} \ *************** *** 800,823 **** } } if {[llength $data_list]>0} { ! $graph AddDataPoints $ordinate $data_list } } # Adjust y-axis label ! set curvelist [$graph GetCurveList] if {[llength $curvelist]==0} { set yunit {} } else { set yunit $data_unit([lindex $curvelist 0]) ! if {[string match {} $yunit]} { set yunit "Non Dim" } } ! set _mmgpsc(ydefaultlabel) $yunit if {$_mmgpsc(autolabel)} { ! if {[string compare $_mmgpsc(ylabel) $yunit]!=0} { ! set _mmgpsc(ylabel) $yunit ! $graph Configure -ylabel \ ! [subst -nocommands -novariables $_mmgpsc(ylabel)] $graph DrawAxes } } --- 869,894 ---- } } if {[llength $data_list]>0} { ! $graph AddDataPoints $ordinate $yaxis $data_list } } # Adjust y-axis label ! set curvelist [$graph GetCurveList $yaxis] if {[llength $curvelist]==0} { set yunit {} } else { set yunit $data_unit([lindex $curvelist 0]) ! if {[string match {} $yunit]} { ! set yunit "Non Dim" ! } } ! set _mmgpsc(${ys}defaultlabel) $yunit if {$_mmgpsc(autolabel)} { ! if {[string compare $_mmgpsc(${ys}label) $yunit]!=0} { ! set _mmgpsc(${ys}label) $yunit ! $graph Configure -${ys}label \ ! [subst -nocommands -novariables $_mmgpsc(${ys}label)] $graph DrawAxes } } *************** *** 844,857 **** if {$_mmgpsc(autolabel)} { set _mmgpsc(xlabel) "$abscissa$xunit" } ! $graph Configure -xlabel \ ! [subst -nocommands -novariables $_mmgpsc(xlabel)] \ ! -ylabel [subst -nocommands -novariables $_mmgpsc(ylabel)] set curve_count 0 foreach ordinate $data_index(all) { if {![info exists menu_select(y,$ordinate)]} { continue } ;# Safety if {! $menu_select(y,$ordinate) } { continue } ;# Skip curve ! ChangeCurve $ordinate 0 incr curve_count } $graph DrawAxes --- 915,935 ---- if {$_mmgpsc(autolabel)} { set _mmgpsc(xlabel) "$abscissa$xunit" } ! $graph Configure \ ! -xlabel [subst -nocommands -novariables $_mmgpsc(xlabel)] \ ! -ylabel [subst -nocommands -novariables $_mmgpsc(ylabel)] \ ! -y2label [subst -nocommands -novariables $_mmgpsc(y2label)] set curve_count 0 foreach ordinate $data_index(all) { if {![info exists menu_select(y,$ordinate)]} { continue } ;# Safety if {! $menu_select(y,$ordinate) } { continue } ;# Skip curve ! ChangeCurve 1 $ordinate 0 ! incr curve_count ! } ! foreach ordinate $data_index(all) { ! if {![info exists menu_select(y2,$ordinate)]} { continue } ;# Safety ! if {! $menu_select(y2,$ordinate) } { continue } ;# Skip curve ! ChangeCurve 2 $ordinate 0 incr curve_count } $graph DrawAxes *************** *** 1085,1090 **** --- 1163,1169 ---- wm title . [Oc_Main GetInstanceName] Ow_SetIcon . + wm deiconify . # Enter event loop if {!$no_event_loop} { diff -crN oommf-1.1a2/app/mmhelp/appindex.tcl oommf/app/mmhelp/appindex.tcl *** oommf-1.1a2/app/mmhelp/appindex.tcl Wed Apr 5 00:22:54 2000 --- oommf/app/mmhelp/appindex.tcl Tue Apr 4 23:20:52 2000 *************** *** 1,7 **** Oc_Application Define { -name mmHelp ! -version 1.1.0.2 -machine omfsh -file mmhelp.tcl } --- 1,7 ---- Oc_Application Define { -name mmHelp ! -version 1.1.1.0 -machine omfsh -file mmhelp.tcl } diff -crN oommf-1.1a2/app/mmhelp/mmhelp.tcl oommf/app/mmhelp/mmhelp.tcl *** oommf-1.1a2/app/mmhelp/mmhelp.tcl Wed Apr 5 00:22:54 2000 --- oommf/app/mmhelp/mmhelp.tcl Tue Apr 4 23:20:53 2000 *************** *** 16,22 **** # v--Edit here if necessary \ exec wish "$0" ${1+"$@"} # ! # Last modified on: $Date: 1999/10/21 21:25:42 $ # Last modified by: $Author: dgp $ # # Usage: omfsh mmhelp.tcl --- 16,22 ---- # v--Edit here if necessary \ exec wish "$0" ${1+"$@"} # ! # Last modified on: $Date: 2000/03/09 20:48:36 $ # Last modified by: $Author: dgp $ # # Usage: omfsh mmhelp.tcl *************** *** 160,183 **** ######################################################################## package require Tk catch {package require Ow} # Define standard global variables proc OMFHB_PatchLevel {} {return 1.0a} ! set omfhb_library [file dirname [file join [pwd] [string trimright \ ! [file dirname [info script]] ./]]] set omfhb_debug 0 # Define the Counter class source [file join [file dirname [info script]] counter.tcl] Oc_Main SetAppName mmHelp ! Oc_Main SetVersion 1.1.0.2 ! regexp \\\044Date:(.*)\\\044 {$Date: 1999/10/21 21:25:42 $} _ date Oc_Main SetDate [string trim $date] # regexp \\\044Author:(.*)\\\044 {$Author: dgp $} _ author # Oc_Main SetAuthor [Oc_Person Lookup [string trim $author]] Oc_Main SetAuthor [Oc_Person Lookup dgp] ### Initialize the globals ### # # array _omfhb_g contains variables which describe and configure --- 160,191 ---- ######################################################################## package require Tk catch {package require Ow} + wm withdraw . # Define standard global variables proc OMFHB_PatchLevel {} {return 1.0a} ! set omfhb_library [file dirname [Oc_DirectPathname \ ! [file dirname [info script]] ]] set omfhb_debug 0 # Define the Counter class source [file join [file dirname [info script]] counter.tcl] Oc_Main SetAppName mmHelp ! Oc_Main SetVersion 1.1.1.0 ! regexp \\\044Date:(.*)\\\044 {$Date: 2000/03/09 20:48:36 $} _ date Oc_Main SetDate [string trim $date] # regexp \\\044Author:(.*)\\\044 {$Author: dgp $} _ author # Oc_Main SetAuthor [Oc_Person Lookup [string trim $author]] Oc_Main SetAuthor [Oc_Person Lookup dgp] + Oc_CommandLine Option [Oc_CommandLine Switch] { + {{URL optional} {} {Home page URL}} + } { + global url; set url $URL + } {End of options; next argument is URL} + Oc_CommandLine Parse $argv + ### Initialize the globals ### # # array _omfhb_g contains variables which describe and configure *************** *** 829,835 **** if {$omfhb_debug} {puts requireEmptyLine} _OMFHB_RequireLineBreak $textwidget switch -exact -- [$textwidget get {end -3 char}] { - \xa0 - \n {} default {$textwidget insert end "\n"} } --- 837,842 ---- *************** *** 2234,2260 **** return $browser } ! if {[llength $argv] > 1} { ! error "usage: mmhelp.tcl " ! } ! if {![llength $argv]} { ! # if {[info exists env(WWW_HOME)]} { ! # foreach {url fragment} [Oc_Url FromString $env(WWW_HOME)] {} ! # } else { ! # # Default page should be OOMMF TOC -- currently mmhelp TOC. ! # set url [Oc_Url FromFilename \ ! # [file join $omfhb_library mmhelp doc index.html]] ! # set fragment "" ! # } ! # Default page = OOMMF Userguide TOC ! set url [Oc_Url FromFilename \ ! [file join $omfhb_library .. doc userguide userguide.html]] ! set fragment "" } else { ! foreach {url fragment} [Oc_Url FromString [lindex $argv 0]] {} } - wm withdraw . OMFHB_Browser $url $fragment vwait forever --- 2241,2255 ---- return $browser } ! if {[string length $url]} { ! foreach {url fragment} [Oc_Url FromString $url] {} } else { ! # Default page = OOMMF Userguide TOC ! set url [Oc_Url FromFilename \ ! [file join $omfhb_library .. doc userguide userguide.html]] ! set fragment "" } OMFHB_Browser $url $fragment vwait forever diff -crN oommf-1.1a2/app/mmlaunch/appindex.tcl oommf/app/mmlaunch/appindex.tcl *** oommf-1.1a2/app/mmlaunch/appindex.tcl Wed Apr 5 00:22:54 2000 --- oommf/app/mmlaunch/appindex.tcl Tue Apr 4 23:20:53 2000 *************** *** 1,7 **** Oc_Application Define { -name mmLaunch ! -version 1.1.0.2 -machine omfsh -file mmlaunch.tcl } --- 1,7 ---- Oc_Application Define { -name mmLaunch ! -version 1.1.1.0 -machine omfsh -file mmlaunch.tcl } diff -crN oommf-1.1a2/app/mmlaunch/mmlaunch.tcl oommf/app/mmlaunch/mmlaunch.tcl *** oommf-1.1a2/app/mmlaunch/mmlaunch.tcl Wed Apr 5 00:22:54 2000 --- oommf/app/mmlaunch/mmlaunch.tcl Tue Apr 4 23:20:53 2000 *************** *** 3,9 **** # An application which presents an interface for launching and # interconnecting other OOMMF applications. # ! # Last modified on: $Date: 1999/10/28 20:29:15 $ # Last modified by: $Author: dgp $ # Support libraries --- 3,9 ---- # An application which presents an interface for launching and # interconnecting other OOMMF applications. # ! # Last modified on: $Date: 2000/03/09 20:35:55 $ # Last modified by: $Author: dgp $ # Support libraries *************** *** 13,22 **** if {[catch {package require Tk 8}]} { package require Tk 4.1 } Oc_Main SetAppName mmLaunch ! Oc_Main SetVersion 1.1.0.2 ! regexp \\\044Date:(.*)\\\044 {$Date: 1999/10/28 20:29:15 $} _ date Oc_Main SetDate [string trim $date] # regexp \\\044Author:(.*)\\\044 {$Author: dgp $} _ author # Oc_Main SetAuthor [Oc_Person Lookup [string trim $author]] --- 13,23 ---- if {[catch {package require Tk 8}]} { package require Tk 4.1 } + wm withdraw . Oc_Main SetAppName mmLaunch ! Oc_Main SetVersion 1.1.1.0 ! regexp \\\044Date:(.*)\\\044 {$Date: 2000/03/09 20:35:55 $} _ date Oc_Main SetDate [string trim $date] # regexp \\\044Author:(.*)\\\044 {$Author: dgp $} _ author # Oc_Main SetAuthor [Oc_Person Lookup [string trim $author]] *************** *** 24,29 **** --- 25,31 ---- Oc_Main SetHelpURL [Oc_Url FromFilename [file join [file dirname \ [file dirname [file dirname [Oc_DirectPathname [info \ script]]]]] doc userguide OOMMF_Launcher_Control_Inte.html]] + Oc_CommandLine Parse $argv set menubar .mb foreach {fmenu hmenu} [Ow_MakeMenubar . $menubar File Help] {} *************** *** 45,50 **** --- 47,53 ---- wm title . [Oc_Main GetInstanceName] wm iconname . [wm title .] Ow_SetIcon . + wm deiconify . if {[package vcompare [package provide Tk] 8] >=0 \ && [string match windows $tcl_platform(platform)]} { diff -crN oommf-1.1a2/app/mmpe/appindex.tcl oommf/app/mmpe/appindex.tcl *** oommf-1.1a2/app/mmpe/appindex.tcl Wed Apr 5 00:22:54 2000 --- oommf/app/mmpe/appindex.tcl Tue Apr 4 23:20:53 2000 *************** *** 2,15 **** Oc_Application Define { -name mmProbEd -aliases mmpe ! -version 1.1.0.2 -machine omfsh -file mmpe.tcl } Oc_Application Define { -name FileSource ! -version 1.1.0.2 -machine omfsh -file filesource.tcl } --- 2,15 ---- Oc_Application Define { -name mmProbEd -aliases mmpe ! -version 1.1.1.0 -machine omfsh -file mmpe.tcl } Oc_Application Define { -name FileSource ! -version 1.1.1.0 -machine omfsh -file filesource.tcl } diff -crN oommf-1.1a2/app/mmpe/examples/oommf-small.mif oommf/app/mmpe/examples/oommf-small.mif *** oommf-1.1a2/app/mmpe/examples/oommf-small.mif Wed Apr 5 00:22:56 2000 --- oommf/app/mmpe/examples/oommf-small.mif Tue Apr 4 23:20:55 2000 *************** *** 1,18 **** # MIF 1.1 - # material name:Nickel ms:485E3 a:8E-12 k1:-4.5E3 anisotropy type:cubic anisotropy dir1:1 0 0 anisotropy dir2:0 1 0 ! demag type:3dslab part height:580E-9 part width:1440E-9 base material type:Permalloy part thickness:100e-9 - cell size:20.0e-9 part shape:mask app/mmpe/examples/oommf-small.bmp init mag:random base output filename:oommf-small log level:0 --- 1,17 ---- # MIF 1.1 ms:485E3 a:8E-12 k1:-4.5E3 anisotropy type:cubic anisotropy dir1:1 0 0 anisotropy dir2:0 1 0 ! demag type:constmag part height:580E-9 part width:1440E-9 base material type:Permalloy part thickness:100e-9 part shape:mask app/mmpe/examples/oommf-small.bmp + cell size:20.0e-9 init mag:random base output filename:oommf-small log level:0 *************** *** 20,27 **** user interaction level:1 user report code:30 converge mxh value:.0001 max iteration count:-1 - field range count:3 field range: 0. 0.0 0 0.05 0.001 0 25 field range: 0.05 0.001 0 -0.05 -0.001 0 50 field range: -0.05 -0.001 0.0 0.05 0.001 0 50 --- 19,26 ---- user interaction level:1 user report code:30 converge mxh value:.0001 + randomizer seed:1 max iteration count:-1 field range: 0. 0.0 0 0.05 0.001 0 25 field range: 0.05 0.001 0 -0.05 -0.001 0 50 field range: -0.05 -0.001 0.0 0.05 0.001 0 50 diff -crN oommf-1.1a2/app/mmpe/examples/prob1.mif oommf/app/mmpe/examples/prob1.mif *** oommf-1.1a2/app/mmpe/examples/prob1.mif Wed Apr 5 00:22:56 2000 --- oommf/app/mmpe/examples/prob1.mif Tue Apr 4 23:20:55 2000 *************** *** 1,159 **** # MIF 1.1 ! # This is a sample input file for the micromagnetic modeling ! # program developed in the Magnetic Materials Group at NIST. ! # ! # The first line must consist of the characters "# MIF x.y", where ! # x.y represents the format revision number. ! # ! # Any line ending in a backslash, '\', is joined to the previous one ! # before any processing is done. ! # ! # Lines beginning with a '#' are comments and are ignored. Blank ! # lines are also ignored. ! # ! # All other lines must consist of a "Record Identifier" followed by ! # a parameter list. The Record Identifier is separated from the ! # parameter list by one or more ":" and/or "=" characters. Whitespace ! # and case is ignored in the Record Identifier field. ! # ! # The parameter list must be a proper Tcl list. The parameters are ! # parsed (broken into separate elements) following normal Tcl rules; ! # in short, items are separated by whitespace, except as grouped by ! # double quotes, '"', and curly braces, '{' + '}'. The grouping ! # characters are removed during parsing. If a parameter is discovered ! # that consists of a lone '#', then that and all following parameters ! # are interpreted as comments and are thrown away. ! # ! # Order of the records in this file is unimportant unless othersize ! # stated. If two or more lines contain the same Record Identifier, ! # then the last one takes precedence. ! # ! # All units are SI. ! # ! ####################### MATERIAL PARAMETERS ############################ ! #Base Material Type: permalloy ;# This record is obsolete ! Ms= 800e3 # Saturation magnetization in A/m. ! A=13e-12 # Exchange stiffness in J/m. ! K1= 0.5e3 # Anisotropy constant in J/m^3. ! Anisotropy Type:uniaxial # One of . ! Anisotropy Dir1: 0 1 0 # Directional cosines wrt to coordinate axes ! # (3 numbers). Optional; Default is 1 0 0 ! #Anisotropy Dir2: 1 1 1 # Directional cosines wrt to coordinate axes ! # (3 numbers). Optional; Default is 0 1 0 ! # ! # NOTE: For uniaxial materials it suffices to ! # specify only "Anisotropy Dir1". For cubic ! # materials specify also "Anisotropy Dir2", and ! # the third axis direction is calculated as the ! # cross product of the first two. ! # The anisotropy directions will be automatically ! # normalized if necessary, so for example 1 1 1 ! # is valid input (it will be modified to ! # .5774 .5774 .5774). For cubic materials, ! # Dir2 will be adjusted to be perpendicular ! # to Dir1 (by subtracting out the component ! # parallel to Dir1). ! ! ####################### DEMAG SPECIFICATION ############################ ! Demag Type: 3dslab # One of . ! # 2dSlab and 3dSlab require that the part ! # thickness be set (cf. PART GEOMETRY section ! # below). This field is optional; Default is fast ! # (FFT) pipe model. ! ! ########################## PART GEOMETRY ############################### ! Part Width: 1e-6 # Nominal part width in m, adjusted by Cell Size. ! # Required. ! ! Part Height: 2e-6 # Nominal part height in m, adjusted by Cell Size. ! # Required. ! ! Part Thickness: 20e-9 # Part thickness in m. Required for 2d- and 3d- ! # Slab models. ! ! Cell Size: 20e-9 # Cell size in m. Required. The part width ! # and height are adjusted to an integral multiple ! # of the cell size. ! ! #Part Shape: Ellipse # One of . Optional. ! # Default value is Rectangle. ! ! ###################### INITIAL MAGNETIZATION ########################### ! Init Mag: uniform 90 89 # Inital magnetization routine, and routine ! # parameters, if any. Optional, with default ! # "Random". The following routines are currently ! # available--- ! # \n(Notes) ! # Bloch phi ! # (180 degree rotation in the x-z plane, starting ! # at phi degrees) ! # Uniform theta phi ! # (uniform magnetization in specified ! # direction, in degrees) ! # Exvort ! # In ! # InLeftOut ! # InOut ! # InOutRot phi ! # (Similar to InOut, but rotated phi degrees ! # in the x-z plane.) ! # InOuts domain_width ! # (domain_width in cells) ! # InUpOut ! # InUpOutRot phi ! # (Similar to InUpOut, but rotated phi degrees ! # in the x-z plane.) ! # ! # InWideUpOut ! # Random ! # Up ! # UpDowns domain_width ! # (domain_width in cells) ! # UpDownsRot domain_width phi ! # (Similar to UpDowns, but rotated phi degrees ! # in x-z plane.) ! # Vortex ! # 1domain ! # 4domain ! # 7domain ! # ! ! ###################### EXPERIMENT PARAMETERS ########################### ! Field Range Count: 1 ! # Optional. Default is 1; Resets any preceding ! # "Field Range" lines. ! Field Range: 0.0008728 .05 0 -0.0008728 -.05 0 50 ! #Field Range: 0 0 0 0 .05 0 5 ! # 7 numbers: Start field Bx By Bz in _Tesla_ ! # Stop field Bx By Bz in _Tesla_ ! # Number of steps (>=1) ! # THESE MUST ALL BE ON THE SAME LINE! ! # The number of "Field Range" lines should be ! # the same as the value of "Field Range Count", ! # unless "Field Range Count" is 1, in which case ! # a default value of "0 0 0 0 0 0 1" will be used ! # if no "Field Range" lines are found. Should not ! # precede any "Field Range Count" lines. ! ! ###################### OUTPUT SPECIFICATIONS ########################### ! Base Output Filename: prob1 # Character string; Required ! Log Level: 1 # Optional, default is 0. >0 echoes terminal ! # output to second log file. ! ! ########################## MISCELLANEOUS ############################### ! Randomizer seed: 1 # Value to seed random number generator with. ! # Optional. Default value is 0, which uses the ! # system clock to generate a semi-random value. ! ! User interaction level: 1 # Integer value from 0 - 100, 0 => no ! # interaction, 100 => complete interaction ! # Optional; Default is 0. ! ! #Initial increment: # Maximum initial increment, in degrees. ! # Optional. Default value is 1 degree. ! ! User report code: 500 # Program specific report behavior; integer ! ! #Max iteration count: 201 ! ! converge mxh value: 1e-5 --- 1,20 ---- # MIF 1.1 ! ms:800e3 ! a:13e-12 ! k1:0.5e3 ! anisotropy type:uniaxial ! anisotropy dir1:0 1 0 ! demag type:constmag ! part height:2e-6 ! part width:1e-6 ! part thickness:20e-9 ! cell size:20e-9 ! init mag:uniform 90 89 ! base output filename:prob1 ! log level:1 ! randomizer seed:1 ! user interaction level:1 ! user report code:500 ! converge mxh value:1e-5 ! randomizer seed:1 ! field range: 0.0008728 .05 0 -0.0008728 -.05 0 50 diff -crN oommf-1.1a2/app/mmpe/filesource.tcl oommf/app/mmpe/filesource.tcl *** oommf-1.1a2/app/mmpe/filesource.tcl Wed Apr 5 00:22:54 2000 --- oommf/app/mmpe/filesource.tcl Tue Apr 4 23:20:53 2000 *************** *** 4,13 **** package require Oc 1.1 package require Ow package require Net Oc_Main SetAppName FileSource ! Oc_Main SetVersion 1.1.0.2 ! regexp \\\044Date:(.*)\\\044 {$Date: 1999/10/29 05:01:52 $} _ date Oc_Main SetDate [string trim $date] # regexp \\\044Author:(.*)\\\044 {$Author: dgp $} _ author # Oc_Main SetAuthor [Oc_Person Lookup [string trim $author]] --- 4,14 ---- package require Oc 1.1 package require Ow package require Net + wm withdraw . Oc_Main SetAppName FileSource ! Oc_Main SetVersion 1.1.1.0 ! regexp \\\044Date:(.*)\\\044 {$Date: 2000/03/09 17:45:53 $} _ date Oc_Main SetDate [string trim $date] # regexp \\\044Author:(.*)\\\044 {$Author: dgp $} _ author # Oc_Main SetAuthor [Oc_Person Lookup [string trim $author]] *************** *** 16,49 **** [file dirname [file dirname [Oc_DirectPathname [info \ script]]]]] doc userguide Micromagnetic_Problem_File_.html]] ! Oc_AppendUsageInfo "FileSource [Oc_Main GetVersion]" \ ! "Provide MIF file to solvers" { ! {-h* {} {Display this help message and quit}} ! {-version {} {Display version information and quit}} ! {-- {} {End of options, next argument is MIF file name}} ! {file {string} {MIF file to provide}}} ! ! while {[string match -* [lindex $argv 0]]} { ! regexp -- -(.*) [lindex $argv 0] _ option ! set argv [lrange $argv 1 end] ! switch -exact -- $option { ! - { ! break ! } ! version { ! Oc_Log Log "[Oc_Main GetAppName] [Oc_Main GetVersion]" info ! exit ! } ! default { ! if {[string match h* $option]} { ! Oc_Log Log [Oc_GetUsageInfo] info ! exit ! } ! Oc_Log Log "Unrecognized option: -$option\n[Oc_GetUsageInfo]" panic ! exit 1 ! } ! } ! } #**************************************************************************# #top level window --- 17,28 ---- [file dirname [file dirname [Oc_DirectPathname [info \ script]]]]] doc userguide Micromagnetic_Problem_File_.html]] ! Oc_CommandLine Option [Oc_CommandLine Switch] { ! {{file optional} {} "MIF file to provide"} ! } { ! global newname; set newname $file ! } "End of options; next argument is file" ! Oc_CommandLine Parse $argv #**************************************************************************# #top level window *************** *** 61,69 **** } } ! set newname [lindex $argv 0] ! set newpath [file join [pwd] \ ! [string trimright [file dirname $newname] ./]] set newname [file tail $newname] SetFilename $newpath $newname --- 40,46 ---- } } ! set newpath [file dirname [Oc_DirectPathname $newname]] set newname [file tail $newname] SetFilename $newpath $newname *************** *** 78,83 **** --- 55,61 ---- } bind . "+Die %W" + wm deiconify . wm title . [Oc_Main GetInstanceName] wm iconname . [wm title .] diff -crN oommf-1.1a2/app/mmpe/geommenu oommf/app/mmpe/geommenu *** oommf-1.1a2/app/mmpe/geommenu Wed Apr 5 00:22:54 2000 --- oommf/app/mmpe/geommenu Tue Apr 4 23:20:53 2000 *************** *** 3,14 **** #commands; commands are numbered from 0 and #and interlayed with placement info Number of Commands: 3 # the total number of commands used by the menu ! 0:label+entry $buttonname $label 20 "-textvar vals($ButtonNow)" "NewVal $ButtonNow" 0:-side top -fill x ! 1:radiobuttonandpack $buttonname $label $name "ChangeMif2 $title $ButtonNow $ButtonNow" 1:-side top -fill x #name label bchange btext width command command2 ! 2:checklabelentry $buttonname $name $label $title 10 "NewVal2 $ButtonNow $offset $buttonname.entry" "ChangeMif3 $title $ButtonNow $a.$ButtonNow.$name" 2:-side top -fill x # a data change is a mifentry such as A,K demagtype etc; the stuff on #the left side of the colon in a mif file --- 3,18 ---- #commands; commands are numbered from 0 and #and interlayed with placement info Number of Commands: 3 # the total number of commands used by the menu ! 0:label+entry $buttonname $label 20 \ ! "-textvar vals($ButtonNow)" "NewVal $ButtonNow" 0:-side top -fill x ! 1:radiobuttonandpack $buttonname $label $name \ ! "ChangeMif2 $title $ButtonNow $ButtonNow" 1:-side top -fill x #name label bchange btext width command command2 ! 2:checklabelentry $buttonname $label2 $label $title 10 \ ! "NewVal2 $ButtonNow $offset $buttonname.entry" \ ! "ChangeMif3 $title $ButtonNow $a.$ButtonNow.$name" 2:-side top -fill x # a data change is a mifentry such as A,K demagtype etc; the stuff on #the left side of the colon in a mif file *************** *** 35,50 **** Number of Choices: 1 0:cell size!0!Cell Size (m) Data Change: part shape ! Number of Choices: 3 1:rectangle!1!Rectangle 2:ellipse!1!Ellipse ! 3:mask!2!File! !2 # the last two fields are a second label # and an offset used for placing the data in proper order in a list #end of data changes - - - --- 39,52 ---- Number of Choices: 1 0:cell size!0!Cell Size (m) Data Change: part shape ! Number of Choices: 4 1:rectangle!1!Rectangle 2:ellipse!1!Ellipse ! 3:oval!2!Oval!radius!2 ! 4:mask!2!Mask!file!2 # the last two fields are a second label # and an offset used for placing the data in proper order in a list #end of data changes diff -crN oommf-1.1a2/app/mmpe/init.mif oommf/app/mmpe/init.mif *** oommf-1.1a2/app/mmpe/init.mif Wed Apr 5 00:22:55 2000 --- oommf/app/mmpe/init.mif Tue Apr 4 23:20:53 2000 *************** *** 6,12 **** anisotropy dir1:1 0 0 anisotropy dir2:0 1 0 anisotropy init:constant ! demag type:3dSlab part height:500E-9 part width:2.0E-6 part thickness:20e-9 --- 6,12 ---- anisotropy dir1:1 0 0 anisotropy dir2:0 1 0 anisotropy init:constant ! demag type:ConstMag part height:500E-9 part width:2.0E-6 part thickness:20e-9 *************** *** 17,21 **** magnetization output format: binary 4 total field output format: binary 4 data table output format: %.15g ! converge mxh value: 1.0E-4 randomizer seed:0 --- 17,21 ---- magnetization output format: binary 4 total field output format: binary 4 data table output format: %.15g ! converge mxh value: 1.0E-5 randomizer seed:0 diff -crN oommf-1.1a2/app/mmpe/mmpe.tcl oommf/app/mmpe/mmpe.tcl *** oommf-1.1a2/app/mmpe/mmpe.tcl Wed Apr 5 00:22:55 2000 --- oommf/app/mmpe/mmpe.tcl Tue Apr 4 23:20:53 2000 *************** *** 1,6 **** ! #!/bin/sh ! # This comment continues on in Tcl, but not in sh \ ! exec wish "$0" ${1+"$@"} # Default values for control variables if {![info exists no_net]} {set no_net 0} --- 1,6 ---- ! # FILE: mmpe.tcl ! # ! # This file must be interpreted by the omfsh shell. # Default values for control variables if {![info exists no_net]} {set no_net 0} *************** *** 9,18 **** # Library support package require Oc 1.1 package require Ow Oc_Main SetAppName mmProbEd ! Oc_Main SetVersion 1.1.0.2 ! regexp \\\044Date:(.*)\\\044 {$Date: 1999/10/26 16:19:47 $} _ date Oc_Main SetDate [string trim $date] # regexp \\\044Author:(.*)\\\044 {$Author: dgp $} _ author # Oc_Main SetAuthor [Oc_Person Lookup [string trim $author]] --- 9,19 ---- # Library support package require Oc 1.1 package require Ow + wm withdraw . Oc_Main SetAppName mmProbEd ! Oc_Main SetVersion 1.1.1.0 ! regexp \\\044Date:(.*)\\\044 {$Date: 2000/03/24 00:25:33 $} _ date Oc_Main SetDate [string trim $date] # regexp \\\044Author:(.*)\\\044 {$Author: dgp $} _ author # Oc_Main SetAuthor [Oc_Person Lookup [string trim $author]] *************** *** 21,57 **** [file dirname [file dirname [Oc_DirectPathname [info \ script]]]]] doc userguide Micromagnetic_Problem_Edito.html]] ! Oc_AppendUsageInfo "mmProbEd [Oc_Main GetVersion]" \ ! "Edit and serve problem descriptions in MIF format" { ! {-h* {} {Display this help message and quit}} ! {-version {} {Display version information and quit}} ! {-net int {Set to 0 to disable Net (no server)}}} ! ! while {[string match -* [lindex $argv 0]]} { ! regexp -- -(.*) [lindex $argv 0] _ option ! set argv [lrange $argv 1 end] ! switch -exact -- $option { ! version { ! Oc_Log Log "[Oc_Main GetAppName] [Oc_Main GetVersion]" info ! exit ! } ! net { ! set no_net [expr {![lindex $argv 0]}] ! set argv [lrange $argv 1 end] ! } ! default { ! if {[string match h* $option]} { ! Oc_Log Log [Oc_GetUsageInfo] info ! exit ! } ! Oc_Log Log "Unrecognized option: -$option\n[Oc_GetUsageInfo]" panic ! exit 1 ! } ! } ! } #*************************************************************************# ! #ReadFile read a file into an input buffer. Does not parse the file proc ReadFile {filename} { global inbuff if {[file readable $filename] && [file size $filename]} { --- 22,36 ---- [file dirname [file dirname [Oc_DirectPathname [info \ script]]]]] doc userguide Micromagnetic_Problem_Edito.html]] ! Oc_CommandLine Option net { ! {flag {expr {![catch {expr {$flag && $flag}}]}} {= 0 or 1}} ! } { ! global no_net; set no_net [expr {!$flag}] ! } {Disable/enable data to other apps; default=enabled} ! Oc_CommandLine Parse $argv #*************************************************************************# ! #ReadFile read a file into an input buffer. Does not parse the file proc ReadFile {filename} { global inbuff if {[file readable $filename] && [file size $filename]} { *************** *** 65,71 **** set inbuff [list] } return [llength $inbuff] ! } #*************************************************************************# proc ChangeMif { Ref NewValue } { global MifKnow --- 44,50 ---- set inbuff [list] } return [llength $inbuff] ! } #*************************************************************************# proc ChangeMif { Ref NewValue } { global MifKnow *************** *** 87,107 **** global inbuff MifKnow KnowOrder set listsize [ReadFile $filename] for {set i 0} {$i<$listsize} {incr i} { ! set shortbuff [lindex $inbuff $i] #puts $shortbuff set shortbuff [split $shortbuff :] set MifKnow([lindex $shortbuff 0]) [lindex $shortbuff 1] set KnowOrder([expr {$i+1}]) [lindex $shortbuff 0] } } ! #Reads and understands the mif file (must run KnowWhat first) #(needs ReadFile) puts result in array MifKnow #*************************************************************************# proc ParseFile {filename} { global inbuff MifKnow FieldState set listsize [ReadFile $filename] set firstbuff vals ! set FieldCount 0 set prefix {} ; set suffix {} for {set i 0} {$i<$listsize} {incr i} { set shortbuff [string trim [lindex $inbuff $i]] --- 66,86 ---- global inbuff MifKnow KnowOrder set listsize [ReadFile $filename] for {set i 0} {$i<$listsize} {incr i} { ! set shortbuff [lindex $inbuff $i] #puts $shortbuff set shortbuff [split $shortbuff :] set MifKnow([lindex $shortbuff 0]) [lindex $shortbuff 1] set KnowOrder([expr {$i+1}]) [lindex $shortbuff 0] } } ! #Reads and understands the mif file (must run KnowWhat first) #(needs ReadFile) puts result in array MifKnow #*************************************************************************# proc ParseFile {filename} { global inbuff MifKnow FieldState set listsize [ReadFile $filename] set firstbuff vals ! set FieldCount 0 set prefix {} ; set suffix {} for {set i 0} {$i<$listsize} {incr i} { set shortbuff [string trim [lindex $inbuff $i]] *************** *** 118,124 **** } set prefix [string tolower [string trim $prefix]] set suffix [string trim $suffix] ! if {[info exists MifKnow($prefix)]} { if {$prefix=="field range"} { incr FieldCount set FieldState($FieldCount) $suffix --- 97,103 ---- } set prefix [string tolower [string trim $prefix]] set suffix [string trim $suffix] ! if {[info exists MifKnow($prefix)]} { if {$prefix=="field range"} { incr FieldCount set FieldState($FieldCount) $suffix *************** *** 131,137 **** #*************************************************************************# proc CallBack {filename num} { ! global MifKnow MifBak foreach i [array names MifBak] {set MifKnow($i) $MifBak($i)} } #*************************************************************************# --- 110,116 ---- #*************************************************************************# proc CallBack {filename num} { ! global MifKnow MifBak foreach i [array names MifBak] {set MifKnow($i) $MifBak($i)} } #*************************************************************************# *************** *** 139,145 **** global TopButton set size [expr {[array size TopButton]-1}] if {$num<0} {set num $size} ! if {$num>$size} {set num 0} set filename $TopButton($num) EntryChange $filename $num } --- 118,124 ---- global TopButton set size [expr {[array size TopButton]-1}] if {$num<0} {set num $size} ! if {$num>$size} {set num 0} set filename $TopButton($num) EntryChange $filename $num } *************** *** 153,161 **** -value $btext -command $command -anchor w if {![string match {} $bvar]} { $name.button configure -variable "$bvar" ! } ! pack $name.button -side left ! } #*************************************************************************# proc labelandpack {name label} { #$type==1 --- 132,140 ---- -value $btext -command $command -anchor w if {![string match {} $bvar]} { $name.button configure -variable "$bvar" ! } ! pack $name.button -side left ! } #*************************************************************************# proc labelandpack {name label} { #$type==1 *************** *** 168,174 **** #*************************************************************************# proc labelandradiobutton {name label bchange btext command {bvar {}}} { ! #if {$type==2} #label and radiobutton set name [string tolower $name] frame $name --- 147,153 ---- #*************************************************************************# proc labelandradiobutton {name label bchange btext command {bvar {}}} { ! #if {$type==2} #label and radiobutton set name [string tolower $name] frame $name *************** *** 181,202 **** pack $name.label -side left pack $name.button -side right } ! #*************************************************************************# proc checklabelentry {name label bchange btext width command command2 args} { ! #if {$type==3} #check + label + entry global v vals val set name [string tolower $name] frame $name set a ".[lindex [split $name .] 1].[lindex [split $name .] 2]" radiobutton $name.button -text $bchange \ -value $btext -command $command2 label $name.label -text "$label:" -width $width -anchor e eval {entry $name.entry -width $width -relief sunken} $args ! bind $name.entry "$command;focus $a.next.ok;break" bind $name.entry $command bind $name.entry "Set $name" ! pack $name.button -side left pack $name.label -side left pack $name.entry -side right -fill x -expand 1 $name.entry config -state disabled --- 160,186 ---- pack $name.label -side left pack $name.button -side right } ! #*************************************************************************# proc checklabelentry {name label bchange btext width command command2 args} { ! #if {$type==3} #check + label + entry global v vals val set name [string tolower $name] frame $name set a ".[lindex [split $name .] 1].[lindex [split $name .] 2]" + frame $name.buttonframe + frame $name.buttonprop -height 0 \ + -width [expr [Ow_CharInfo GetAveWidth]*$width] radiobutton $name.button -text $bchange \ -value $btext -command $command2 label $name.label -text "$label:" -width $width -anchor e eval {entry $name.entry -width $width -relief sunken} $args ! bind $name.entry "$command; focus $a.next.ok; break" bind $name.entry $command bind $name.entry "Set $name" ! pack $name.buttonframe -side left ! pack $name.buttonprop -in $name.buttonframe -side top ! pack $name.button -in $name.buttonframe -side left pack $name.label -side left pack $name.entry -side right -fill x -expand 1 $name.entry config -state disabled *************** *** 204,210 **** } #*************************************************************************# proc label+entry { name label width1 arglist command } { ! #if $type==4 #label + entry thing global v vals val set name [string tolower $name] --- 188,194 ---- } #*************************************************************************# proc label+entry { name label width1 arglist command } { ! #if $type==4 #label + entry thing global v vals val set name [string tolower $name] *************** *** 222,229 **** } #*************************************************************************# proc radiobibutton {name label label2 bchange btext width1 arglist command command2 } { ! #if {$type==5} ! #check + label + entry + label + entry global v vals val set name [string tolower $name] frame $name --- 206,213 ---- } #*************************************************************************# proc radiobibutton {name label label2 bchange btext width1 arglist command command2 } { ! #if {$type==5} ! #check + label + entry + label + entry global v vals val set name [string tolower $name] frame $name *************** *** 270,279 **** bind $name.entry $command Oc_SetShiftTabBinding $name.entry $command set b2 ${name}.entry ! $b2 config -textvar val($b2) ! for {set j 2} {$j<$label2} {incr j} { set b2 ${name}.entry$j ! set b3 ${name}.label$j set lwidth [string length "[lindex $textind [expr {$j-1}]]:"] label $b3 -text "[lindex $textind [expr {$j-1}]]:" -width $lwidth -anchor e eval {entry $b2 -relief sunken -width $width1} --- 254,263 ---- bind $name.entry $command Oc_SetShiftTabBinding $name.entry $command set b2 ${name}.entry ! $b2 config -textvar val($b2) ! for {set j 2} {$j<$label2} {incr j} { set b2 ${name}.entry$j ! set b3 ${name}.label$j set lwidth [string length "[lindex $textind [expr {$j-1}]]:"] label $b3 -text "[lindex $textind [expr {$j-1}]]:" -width $lwidth -anchor e eval {entry $b2 -relief sunken -width $width1} *************** *** 324,347 **** for {set j 1} {$j<=$vals($ButtonNow)} {incr j} { set b2 ${name}.2.$j radiomultientrybutton $b2 "x,y,z,x,y,z,steps" 8 $ButtonNow 4 $width1 \ ! "NewVal3 $ButtonNow $j ${b2}.entry" set val($b2) "0.0" pack $b2 if { [info exists FieldState($j)]} { ! #puts $FieldState($j) } else { ! set FieldState($j) "0 0 0 0 0 0 1" } ! #puts $FieldState($j) set k 1 set bname $b2 ! set b3 $b2.entry while {[info commands $b3]!=""} { set val($b3) [lindex $FieldState($j) [expr {$k-1}]] #puts $f "Mnow: $MNow: [lindex $MNow $ii]:$k:$b2" incr k ! set b3 ${bname}.entry$k ! } ! Set $b2 } pack ${name}.2 -side bottom pack $name -side top -fill x --- 308,331 ---- for {set j 1} {$j<=$vals($ButtonNow)} {incr j} { set b2 ${name}.2.$j radiomultientrybutton $b2 "x,y,z,x,y,z,steps" 8 $ButtonNow 4 $width1 \ ! "NewVal3 $ButtonNow $j ${b2}.entry" set val($b2) "0.0" pack $b2 if { [info exists FieldState($j)]} { ! #puts $FieldState($j) } else { ! set FieldState($j) "0 0 0 0 0 0 1" } ! #puts $FieldState($j) set k 1 set bname $b2 ! set b3 $b2.entry while {[info commands $b3]!=""} { set val($b3) [lindex $FieldState($j) [expr {$k-1}]] #puts $f "Mnow: $MNow: [lindex $MNow $ii]:$k:$b2" incr k ! set b3 ${bname}.entry$k ! } ! Set $b2 } pack ${name}.2 -side bottom pack $name -side top -fill x *************** *** 352,364 **** set i 1 set j 1 set ListElms [llength $MifKnow($Dchange($ButtonNow))] ! ! if {$ListElms>$j} { set MifKnow($Dchange($ButtonNow)) \ ! [lreplace $MifKnow($Dchange($ButtonNow)) $j $j $vals($ButtonNow)] ! } else { ! lappend MifKnow($Dchange($ButtonNow)) $vals($ButtonNow) ! } #puts $MifKnow($Dchange($ButtonNow)) } #*************************************************************************# --- 336,348 ---- set i 1 set j 1 set ListElms [llength $MifKnow($Dchange($ButtonNow))] ! ! if {$ListElms>$j} { set MifKnow($Dchange($ButtonNow)) \ ! [lreplace $MifKnow($Dchange($ButtonNow)) $j $j $vals($ButtonNow)] ! } else { ! lappend MifKnow($Dchange($ButtonNow)) $vals($ButtonNow) ! } #puts $MifKnow($Dchange($ButtonNow)) } #*************************************************************************# *************** *** 367,399 **** set ButtonRef $ButtonState set i 1 set j 0 ! set fv $offset #[lrange $flipped 1 end] #puts "$fv" if { [info exists FieldState($fv)]} { ! #puts $FieldState($fv) } else { ! set FieldState($fv) "0 0 0 0 0 0 1" } while {[info commands $ButtonRef]!=""} { ! incr i set ListElms [llength $FieldState($fv)] ! #puts "$ListElms $val($ButtonRef) $ButtonRef" ! if {$ListElms>$j} { ! set FieldState($fv) [lreplace $FieldState($fv) $j $j $val($ButtonRef)] ! ! } else { ! lappend FieldState($fv) $val($ButtonRef) ! } incr j set ButtonRef ${ButtonState}$i ! } } #*************************************************************************# proc ListButtons {name filename} { global v vals val Dchange MifKnow MatTypes mmpe #puts "Reading $filename..." set input [list] ! set count 0 set filename [file join [file dirname [info script]] $filename] if {[file readable $filename]} { set file1Id [open $filename "r"] --- 351,383 ---- set ButtonRef $ButtonState set i 1 set j 0 ! set fv $offset #[lrange $flipped 1 end] #puts "$fv" if { [info exists FieldState($fv)]} { ! #puts $FieldState($fv) } else { ! set FieldState($fv) "0 0 0 0 0 0 1" } while {[info commands $ButtonRef]!=""} { ! incr i set ListElms [llength $FieldState($fv)] ! #puts "$ListElms $val($ButtonRef) $ButtonRef" ! if {$ListElms>$j} { ! set FieldState($fv) [lreplace $FieldState($fv) $j $j $val($ButtonRef)] ! ! } else { ! lappend FieldState($fv) $val($ButtonRef) ! } incr j set ButtonRef ${ButtonState}$i ! } } #*************************************************************************# proc ListButtons {name filename} { global v vals val Dchange MifKnow MatTypes mmpe #puts "Reading $filename..." set input [list] ! set count 0 set filename [file join [file dirname [info script]] $filename] if {[file readable $filename]} { set file1Id [open $filename "r"] *************** *** 417,423 **** button ${b2}.add -text "Add" -command "puts add" -state disabled button ${b2}.replace -text "Replace" -command "puts replace" -state disabled button ${b2}.delete -text "Delete" -command "puts Delete" -state disabled ! pack ${b2}.add ${b2}.replace ${b2}.delete -side left -fill x set b2 ${name}.list.menu set m1 [menu $b2 -tearoff 0] --- 401,407 ---- button ${b2}.add -text "Add" -command "puts add" -state disabled button ${b2}.replace -text "Replace" -command "puts replace" -state disabled button ${b2}.delete -text "Delete" -command "puts Delete" -state disabled ! pack ${b2}.add ${b2}.replace ${b2}.delete -side left -fill x set b2 ${name}.list.menu set m1 [menu $b2 -tearoff 0] *************** *** 438,449 **** } DetMaterial #pack $b2 -side top -fill x ! } #*************************************************************************# proc SetMaterial {name} { global MatTypes vals #puts "set material: $MatTypes($name)" ! set locallist [split $MatTypes($name)] set vals(2) [lindex $locallist 0];NewVal 2 set vals(3) [lindex $locallist 1];NewVal 3 set vals(4) [lindex $locallist 2];NewVal 4 --- 422,433 ---- } DetMaterial #pack $b2 -side top -fill x ! } #*************************************************************************# proc SetMaterial {name} { global MatTypes vals #puts "set material: $MatTypes($name)" ! set locallist [split $MatTypes($name)] set vals(2) [lindex $locallist 0];NewVal 2 set vals(3) [lindex $locallist 1];NewVal 3 set vals(4) [lindex $locallist 2];NewVal 4 *************** *** 466,484 **** foreach name [array names MatTypes] { if {$name==$vals(2)} { set vals(2) "Custom";set Dchange(2) "material name";NewVal 2} ! set locallist [split $MatTypes($name)] set ms [lindex $locallist 1] set a [lindex $locallist 2] set k [lindex $locallist 3] set ms2 [lindex $MifKnow(ms) 1] ! set a2 [lindex $MifKnow(a) 1] set k2 [lindex $MifKnow(k1) 1] if {$ms2!=""&&$a2!=""&&$k2!=""} { #puts "$ms:$ms2 $a:$a2 $k:$k2" if {($ms==$ms2) && ($a==$a2) && ($k==$k2)} { set vals(2) $name;set Dchange(2) "material name";NewVal 2 }} } ! } #*************************************************************************# proc ChangeMaterials {function} { global MatTypes --- 450,468 ---- foreach name [array names MatTypes] { if {$name==$vals(2)} { set vals(2) "Custom";set Dchange(2) "material name";NewVal 2} ! set locallist [split $MatTypes($name)] set ms [lindex $locallist 1] set a [lindex $locallist 2] set k [lindex $locallist 3] set ms2 [lindex $MifKnow(ms) 1] ! set a2 [lindex $MifKnow(a) 1] set k2 [lindex $MifKnow(k1) 1] if {$ms2!=""&&$a2!=""&&$k2!=""} { #puts "$ms:$ms2 $a:$a2 $k:$k2" if {($ms==$ms2) && ($a==$a2) && ($k==$k2)} { set vals(2) $name;set Dchange(2) "material name";NewVal 2 }} } ! } #*************************************************************************# proc ChangeMaterials {function} { global MatTypes *************** *** 492,509 **** set i 1 set j $offset while {[info commands $ButtonRef]!=""} { ! incr i set ListElms [llength $MifKnow($Dchange($ButtonNow))] ! #puts "$ListElms $val($ButtonRef) $ButtonRef" ! if {$ListElms>$j} { set MifKnow($Dchange($ButtonNow)) \ ! [lreplace $MifKnow($Dchange($ButtonNow)) $j $j $val($ButtonRef)] ! } else { ! lappend MifKnow($Dchange($ButtonNow)) $val($ButtonRef) ! } incr j set ButtonRef ${ButtonState}$i ! } } #*************************************************************************# proc DisableEntry { ButtonNow} { --- 476,493 ---- set i 1 set j $offset while {[info commands $ButtonRef]!=""} { ! incr i set ListElms [llength $MifKnow($Dchange($ButtonNow))] ! #puts "$ListElms $val($ButtonRef) $ButtonRef" ! if {$ListElms>$j} { set MifKnow($Dchange($ButtonNow)) \ ! [lreplace $MifKnow($Dchange($ButtonNow)) $j $j $val($ButtonRef)] ! } else { ! lappend MifKnow($Dchange($ButtonNow)) $val($ButtonRef) ! } incr j set ButtonRef ${ButtonState}$i ! } } #*************************************************************************# proc DisableEntry { ButtonNow} { *************** *** 513,532 **** if {$ButtonState!=$NULL} { $ButtonState config -textvar $NULL set last [$ButtonState index end] ! $ButtonState delete 0 $last $ButtonState config -state disabled set b2 ${ButtonState}2 } if {[info commands $b2]!=""} { $b2 config -textvar $NULL set last [$b2 index end] ! $b2 delete 0 $last $b2 config -state disabled } } #*************************************************************************# proc ChangeMif2 { Ref ButtonNow Command} { ! global MifKnow Dchange ButtonState set ListElms [llength $MifKnow($Dchange($ButtonNow))] set idea .change Set $idea --- 497,516 ---- if {$ButtonState!=$NULL} { $ButtonState config -textvar $NULL set last [$ButtonState index end] ! $ButtonState delete 0 $last $ButtonState config -state disabled set b2 ${ButtonState}2 } if {[info commands $b2]!=""} { $b2 config -textvar $NULL set last [$b2 index end] ! $b2 delete 0 $last $b2 config -state disabled } } #*************************************************************************# proc ChangeMif2 { Ref ButtonNow Command} { ! global MifKnow Dchange ButtonState set ListElms [llength $MifKnow($Dchange($ButtonNow))] set idea .change Set $idea *************** *** 538,552 **** lappend MifKnow($Dchange($ButtonNow)) $Ref } if {$Command!="NULL"} { ! DisableEntry $Command } set ListElms [llength $MifKnow($Dchange($ButtonNow))] #puts " $ListElms $MifKnow($Dchange($ButtonNow)) " ! } #*************************************************************************# proc ChangeMif3 { Ref ButtonNow name} { global MifKnow Dchange ButtonState val ! DisableEntry $ButtonNow set idea .change Set $idea set oldbutton [lindex $MifKnow($Dchange($ButtonNow)) 1] --- 522,536 ---- lappend MifKnow($Dchange($ButtonNow)) $Ref } if {$Command!="NULL"} { ! DisableEntry $Command } set ListElms [llength $MifKnow($Dchange($ButtonNow))] #puts " $ListElms $MifKnow($Dchange($ButtonNow)) " ! } #*************************************************************************# proc ChangeMif3 { Ref ButtonNow name} { global MifKnow Dchange ButtonState val ! DisableEntry $ButtonNow set idea .change Set $idea set oldbutton [lindex $MifKnow($Dchange($ButtonNow)) 1] *************** *** 570,584 **** lappend MifKnow($Dchange($ButtonNow)) $val($b2) } else { set val($b2) [lindex $MifKnow($Dchange($ButtonNow)) $j] ! ! } $b2 config -textvar val($b2) ! ! incr i incr j ! set b2 ${ButtonState}$i } ! focus $name.entry } #*************************************************************************# proc SplitNToss {filename} { --- 554,568 ---- lappend MifKnow($Dchange($ButtonNow)) $val($b2) } else { set val($b2) [lindex $MifKnow($Dchange($ButtonNow)) $j] ! ! } $b2 config -textvar val($b2) ! ! incr i incr j ! set b2 ${ButtonState}$i } ! focus $name.entry } #*************************************************************************# proc SplitNToss {filename} { *************** *** 603,621 **** #*************************************************************************# proc EntryChange {filename ButtonNumber} { global inbuff MifKnow Mcontents val vals\ ! Dchange MenuState ButtonState MifBak TopButton set ButtonState "" set NULL "NULL" set size [expr {[array size TopButton]-1}] set prev [expr {$ButtonNumber-1}] set next [expr {$ButtonNumber+1}] ! foreach i [array names MifKnow] {set MifBak($i) $MifKnow($i)} SplitNToss $filename #puts $MenuState #sets name of window wm geometry .change {} ;# Display window at widget requested size set a .change[lindex $MenuState 0] ! frame $a ;# This frame fills toplevel .change after idle [list wm title .change \ "[Oc_Main GetInstanceName]: [file rootname [file tail $filename]]"] --- 587,605 ---- #*************************************************************************# proc EntryChange {filename ButtonNumber} { global inbuff MifKnow Mcontents val vals\ ! Dchange MenuState ButtonState MifBak TopButton set ButtonState "" set NULL "NULL" set size [expr {[array size TopButton]-1}] set prev [expr {$ButtonNumber-1}] set next [expr {$ButtonNumber+1}] ! foreach i [array names MifKnow] {set MifBak($i) $MifKnow($i)} SplitNToss $filename #puts $MenuState #sets name of window wm geometry .change {} ;# Display window at widget requested size set a .change[lindex $MenuState 0] ! frame $a ;# This frame fills toplevel .change after idle [list wm title .change \ "[Oc_Main GetInstanceName]: [file rootname [file tail $filename]]"] *************** *** 627,640 **** for {set Com 0} {$Com<$ComNum} {incr Com} { #puts $Com set comands($Com) [lindex $MenuState $i] ! incr i set options($Com) [lindex $MenuState $i] incr i } #reads number of data changes and sets up frames set Types [lindex $MenuState $i] # variable Types holds number of mif changes in menu ! incr i for {set ButtonNow 1} {$ButtonNow<=$Types} {incr ButtonNow} { frame $a.$ButtonNow --- 611,624 ---- for {set Com 0} {$Com<$ComNum} {incr Com} { #puts $Com set comands($Com) [lindex $MenuState $i] ! incr i set options($Com) [lindex $MenuState $i] incr i } #reads number of data changes and sets up frames set Types [lindex $MenuState $i] # variable Types holds number of mif changes in menu ! incr i for {set ButtonNow 1} {$ButtonNow<=$Types} {incr ButtonNow} { frame $a.$ButtonNow *************** *** 647,665 **** #entries hold the number of options for a given MifChange set entries [lindex $MenuState $i] incr i ! set OptionMax [expr $entries] for {set j 0} {$j<$OptionMax} {incr j} { set shortbuff [split [lindex $MenuState $i] ! ] ! #Options Holds name & value of Menu choice set Options($j) [lindex $shortbuff 0] incr i #parses choice information from data files set title [lindex $shortbuff 0] set comnum [lindex $shortbuff 1] ! set label [lindex $shortbuff 2] set label2 [lindex $shortbuff 3] if {[lindex $shortbuff 4]==""} { ! set offset 1 } else { set offset [lindex $shortbuff 4] } --- 631,649 ---- #entries hold the number of options for a given MifChange set entries [lindex $MenuState $i] incr i ! set OptionMax [expr $entries] for {set j 0} {$j<$OptionMax} {incr j} { set shortbuff [split [lindex $MenuState $i] ! ] ! #Options Holds name & value of Menu choice set Options($j) [lindex $shortbuff 0] incr i #parses choice information from data files set title [lindex $shortbuff 0] set comnum [lindex $shortbuff 1] ! set label [lindex $shortbuff 2] set label2 [lindex $shortbuff 3] if {[lindex $shortbuff 4]==""} { ! set offset 1 } else { set offset [lindex $shortbuff 4] } *************** *** 667,673 **** join $title #puts "command number: " #puts $comnum ! set buttonname $a.$ButtonNow.$name eval $comands($comnum) set cname "pack $buttonname $options($comnum)" eval $cname --- 651,657 ---- join $title #puts "command number: " #puts $comnum ! set buttonname $a.$ButtonNow.$name eval $comands($comnum) set cname "pack $buttonname $options($comnum)" eval $cname *************** *** 676,708 **** #button if {$check==$title} { set b2 $a.$ButtonNow.$name.button ! if {[info commands $b2]!=""} { set cname "$b2 invoke" eval $cname } } set ii $offset set k 1 ! set b2 $buttonname.entry while {[info commands $b2]!=""} { set val($b2) [lindex $MNow $ii] #puts $val($b2) ! ! incr ii incr k ! set b2 ${buttonname}.entry$k } } pack $a.$ButtonNow -fill x -expand 0 } frame $a.next ! button $a.next.next -text "Next" -command "Set $a; destroy $a ; CallNew $next" ! button $a.next.prev -text "Previous" -command "Set $a; destroy $a ; CallNew $prev" button $a.next.reset -text "Cancel" \ -command "destroy .change ; [list CallBack $filename $ButtonNumber]" button $a.next.ok -text "Ok" -command "Set $a; destroy .change" if {$prev<0} { $a.next.prev configure -state disabled } if {$next>$size} { $a.next.next configure -state disabled } ! pack $a.next.ok $a.next.reset $a.next.next $a.next.prev -side left -expand true pack $a.next -side bottom -fill x #bind $a.next.ok "destroy .change" bind $a.next.reset "destroy .change ; \ --- 660,695 ---- #button if {$check==$title} { set b2 $a.$ButtonNow.$name.button ! if {[info commands $b2]!=""} { set cname "$b2 invoke" eval $cname } } set ii $offset set k 1 ! set b2 $buttonname.entry while {[info commands $b2]!=""} { set val($b2) [lindex $MNow $ii] #puts $val($b2) ! ! incr ii incr k ! set b2 ${buttonname}.entry$k } } pack $a.$ButtonNow -fill x -expand 0 } frame $a.next ! button $a.next.next -text "Next" \ ! -command "Set $a; destroy $a ; CallNew $next" ! button $a.next.prev -text "Previous" \ ! -command "Set $a; destroy $a ; CallNew $prev" button $a.next.reset -text "Cancel" \ -command "destroy .change ; [list CallBack $filename $ButtonNumber]" button $a.next.ok -text "Ok" -command "Set $a; destroy .change" if {$prev<0} { $a.next.prev configure -state disabled } if {$next>$size} { $a.next.next configure -state disabled } ! pack $a.next.ok $a.next.reset $a.next.next $a.next.prev \ ! -side left -expand true pack $a.next -side bottom -fill x #bind $a.next.ok "destroy .change" bind $a.next.reset "destroy .change ; \ *************** *** 714,720 **** global MifKnow FieldState KnowOrder set file2Id [open $savefilename "w"] puts $file2Id "# MIF 1.1" ! for {set one 1} {$one<[array size KnowOrder]} {incr one} { set index $KnowOrder($one) set flipped $MifKnow($index) set vals [lindex $flipped 1] --- 701,707 ---- global MifKnow FieldState KnowOrder set file2Id [open $savefilename "w"] puts $file2Id "# MIF 1.1" ! for {set one 1} {$one<[array size KnowOrder]} {incr one} { set index $KnowOrder($one) set flipped $MifKnow($index) set vals [lindex $flipped 1] *************** *** 736,742 **** } close $file2Id } ! #**************************************************************************# proc SaveButton { btn item } { if { [string match disabled [$btn entrycget $item -state]] } { return --- 723,729 ---- } close $file2Id } ! #**************************************************************************# proc SaveButton { btn item } { if { [string match disabled [$btn entrycget $item -state]] } { return *************** *** 783,789 **** eval [join $args] return } ! if {[string match OPEN $actionid]} { KnowWhat $resetfilepath ParseFile [$widget GetFilename] } else { --- 770,776 ---- eval [join $args] return } ! if {[string match OPEN $actionid]} { KnowWhat $resetfilepath ParseFile [$widget GetFilename] } else { *************** *** 794,806 **** #**************************************************************************# proc CallWin {procedurename filename windownumber} { if {[winfo exists .change]} { destroy .change } ! toplevel .change after idle "Ow_SetIcon .change" wm title .change "[Oc_Main GetInstanceName]:\ [file rootname [file tail $filename]]" ! $procedurename $filename $windownumber } ! #**************************************************************************# #top level window set menubar .menubar foreach {menuname helpmenu} [Ow_MakeMenubar . $menubar File Help] {} --- 781,793 ---- #**************************************************************************# proc CallWin {procedurename filename windownumber} { if {[winfo exists .change]} { destroy .change } ! toplevel .change after idle "Ow_SetIcon .change" wm title .change "[Oc_Main GetInstanceName]:\ [file rootname [file tail $filename]]" ! $procedurename $filename $windownumber } ! #**************************************************************************# #top level window set menubar .menubar foreach {menuname helpmenu} [Ow_MakeMenubar . $menubar File Help] {} *************** *** 838,844 **** } pack $buttoname -fill x } ! pack .menubuttons -side bottom -fill x -expand 1 # update idletasks proc Die {win} { --- 825,831 ---- } pack $buttoname -fill x } ! pack .menubuttons -side bottom -fill x -expand 1 # update idletasks proc Die {win} { *************** *** 853,859 **** bind . "+Die %W" ! #**************************************************************************# # networking if {!$no_net} { package require Net --- 840,846 ---- bind . "+Die %W" ! #**************************************************************************# # networking if {!$no_net} { package require Net *************** *** 872,885 **** $server Start 0 } ! #.quit configure -command { Die } wm title . [Oc_Main GetInstanceName] wm iconname . [wm title .] Ow_SetIcon . ## Docs say this should happen automatically, but at least some ## WM's don't track this. raise . ;# Bring to top of display window stack if {!$no_event_loop} { vwait omf_forever } - --- 859,872 ---- $server Start 0 } ! #.quit configure -command { Die } wm title . [Oc_Main GetInstanceName] wm iconname . [wm title .] Ow_SetIcon . + wm deiconify . ## Docs say this should happen automatically, but at least some ## WM's don't track this. raise . ;# Bring to top of display window stack if {!$no_event_loop} { vwait omf_forever } diff -crN oommf-1.1a2/app/mmsolve/any2ppm.tcl oommf/app/mmsolve/any2ppm.tcl *** oommf-1.1a2/app/mmsolve/any2ppm.tcl Wed Apr 5 00:22:57 2000 --- oommf/app/mmsolve/any2ppm.tcl Tue Apr 4 23:20:55 2000 *************** *** 1,47 **** - #!/bin/sh # FILE: any2ppm.tcl # # This script converts data in any image format understood by Tk's # (possibly extended) [image photo] command to data representing the # same image in the PPM P3 format. # ! # This comment continues on in Tcl, but not in sh \ ! exec wish "$0" ${1+"$@"} ! # ! # If the above exec doesn't work, replace ${1+"$@"} with "$@" ! # The syntax ${1+"$@"} means: if $1 (positional parameter #1) ! # is set, then substitute "$@" (all parameters as separate words), ! # if $1 is not set (no command line arguments), then substitute ! # nothing. Bash makes no substitution for "$@" if $1 is not set, ! # so these are equivalent under bash. Apparently there is some ! # danger that a shell may substitute "" for "$@" if $1 is not set, ! # but I don't know which shells do that. package require Oc 1.1 package require Tk Oc_ForceNoTkDefaultMessage ! Oc_AppendUsageInfo any2ppm "Convert bitmap images to PPM P3 format" { ! {-h* {} {Display this help message}} ! {-noinfo {} {Suppress writing of progress info to stderr}} ! {-o string {Output to specified file, or "-" for stdout}} ! {{file1 ...} {string ...} {Input file(s)}} ! } ! if {$argc<1 || [lsearch -glob $argv "-h*"]>=0} { ! Oc_Log Log [Oc_GetUsageInfo] panic ! exit 1 ! } set noinfo 0 - set flag [lsearch -regexp $argv {^--?no_?info$}] - if {$flag>=0} { - set noinfo 1 - set argv [lreplace $argv $flag $flag] - } ! set errcount 0 set BUFSIZ 250000 ;# Size of output write buffer proc make_ppm_name { inname } { --- 1,40 ---- # FILE: any2ppm.tcl # # This script converts data in any image format understood by Tk's # (possibly extended) [image photo] command to data representing the # same image in the PPM P3 format. # ! # This file must be interpreted by the filtersh shell. package require Oc 1.1 package require Tk Oc_ForceNoTkDefaultMessage ! Oc_Main SetAppName any2ppm ! Oc_Main SetVersion 1.1.1.0 ! Oc_CommandLine Option console {} {} + Oc_CommandLine Option noinfo {} { + global noinfo; set noinfo 1 + } {Suppress writing of progress info to stderr} set noinfo 0 ! Oc_CommandLine Option o {outfile} { ! global outSpec; set outSpec $outfile ! } {Write output to outfile ("-" for stdout)} ! set outSpec "" ! ! Oc_CommandLine Option [Oc_CommandLine Switch] { ! {{infile list} {} {Input file(s)}} ! } { ! global inList; set inList $infile ! } {End of options; next argument is infile} ! set inList [list] + Oc_CommandLine Parse $argv + + set errcount 0 set BUFSIZ 250000 ;# Size of output write buffer proc make_ppm_name { inname } { *************** *** 75,125 **** flush $chanid } ! set outloc name ;# One of name|file|stdout ! set outchan {} ! ! for {set i 0} {$i<[llength $argv]} {incr i} { ! set inname [lindex $argv $i] ! if {[string match "-o" $inname]} { ! # Output redirection request ! set outname [lindex $argv [incr i]] ! switch -exact -- $outname { ! {} { ! set outloc name ! } ! {-} { ! if {[string match file $outloc]} { close $outchan } ! set outloc stdout ! set outchan stdout ! } ! default { ! set outloc file ! if {[catch {open $outname "w"} outchan]} { ! set outloc name ! puts stderr "Unable to open output file $outname." ! incr errcount ! } ! fconfigure $outchan -translation binary \ ! -buffering full -buffersize $BUFSIZ ! } } - continue } ! # Open input file. if {![file readable $inname]} { puts stderr "Unable to open input file $inname; Skipping." incr errcount continue } if {!$noinfo} { puts stderr "Processing input file $inname." } if {[catch {set pic [image create photo -file $inname]} errmsg]} { puts stderr "ERROR: $errmsg" incr errcount continue } if {!$noinfo} { puts stderr "Processing output..." } ! # Open output file, if necessary. ! if {[string match name $outloc]} { set outname [make_ppm_name $inname] if {[string match {} $outname]} { puts stderr "Unable to generate unique output name; Skipping." --- 68,104 ---- flush $chanid } ! set outchan "" ! switch -exact -- $outSpec { ! {} {#do nothing} ! {-} {set outchan stdout} ! default { ! if {[catch {open $outname "w"} msg]} { ! puts stderr "Unable to open output file $outname: $msg" ! incr errcount ! } else { ! set outchan $msg } } ! } ! ! set loopOpen 0 ! foreach inname $inList { if {![file readable $inname]} { puts stderr "Unable to open input file $inname; Skipping." incr errcount continue } + if {!$noinfo} { puts stderr "Processing input file $inname." } if {[catch {set pic [image create photo -file $inname]} errmsg]} { puts stderr "ERROR: $errmsg" incr errcount continue } + if {!$noinfo} { puts stderr "Processing output..." } ! if {[string match "" $outchan]} { set outname [make_ppm_name $inname] if {[string match {} $outname]} { puts stderr "Unable to generate unique output name; Skipping." *************** *** 131,146 **** incr errcount continue } ! fconfigure $outchan -translation binary \ ! -buffering full -buffersize $BUFSIZ } if {[catch {write_ppm_file $outchan $pic} errmsg]} { puts stderr "PPM WRITE ERROR: $errmsg" incr errcount } ! if {!$noinfo} { puts stderr "Output written to $outname" } ! if {[string match name $outloc]} { close $outchan } } exit $errcount --- 110,131 ---- incr errcount continue } ! set loopOpen 1 } + fconfigure $outchan -translation binary -buffering full -buffersize $BUFSIZ if {[catch {write_ppm_file $outchan $pic} errmsg]} { puts stderr "PPM WRITE ERROR: $errmsg" incr errcount } ! if {!$noinfo && [info exists outname]} { ! puts stderr "Output written to $outname" ! } ! ! if {$loopOpen} { ! close $outchan ! set outchan "" ! } } exit $errcount diff -crN oommf-1.1a2/app/mmsolve/appindex.tcl oommf/app/mmsolve/appindex.tcl *** oommf-1.1a2/app/mmsolve/appindex.tcl Wed Apr 5 00:22:57 2000 --- oommf/app/mmsolve/appindex.tcl Tue Apr 4 23:20:55 2000 *************** *** 1,8 **** Oc_Application Define { -name any2ppm ! -version 1.1.0.2 -machine filtersh -file any2ppm.tcl } --- 1,9 ---- Oc_Application Define { -name any2ppm ! -version 1.1.1.0 -machine filtersh -file any2ppm.tcl + -mode fg } diff -crN oommf-1.1a2/app/mmsolve/fft.cc oommf/app/mmsolve/fft.cc *** oommf-1.1a2/app/mmsolve/fft.cc Wed Apr 5 00:22:57 2000 --- oommf/app/mmsolve/fft.cc Tue Apr 4 23:20:55 2000 *************** *** 65,75 **** vecsize=size; // Allocate and setup MyComplex arrays ! if(!(Uforward=new MyComplex[size])) PlainError(1,"Error in FFT::Setup %s",ErrNoMem); ! if(!(Uinverse=new MyComplex[size])) PlainError(1,"Error in FFT::Setup %s",ErrNoMem); ! if(!(workspace=new MyComplex[size])) PlainError(1,"Error in FFT::Setup %s",ErrNoMem); REALWIDE baseang= -2*PI/double(size); Uforward[0]=Uinverse[0]=MyComplex(1,0); --- 65,75 ---- vecsize=size; // Allocate and setup MyComplex arrays ! if((Uforward=new MyComplex[size])==0) PlainError(1,"Error in FFT::Setup %s",ErrNoMem); ! if((Uinverse=new MyComplex[size])==0) PlainError(1,"Error in FFT::Setup %s",ErrNoMem); ! if((workspace=new MyComplex[size])==0) PlainError(1,"Error in FFT::Setup %s",ErrNoMem); REALWIDE baseang= -2*PI/double(size); Uforward[0]=Uinverse[0]=MyComplex(1,0); *************** *** 87,93 **** } // Allocate and setup (bit-reversal) permutation index ! if(!(permindex=new int[size])) PlainError(1,"Error in FFT::Setup %s",ErrNoMem); permindex[0]=0; int m,n; // The following code relies heavily on size==2^log2vecsize --- 87,93 ---- } // Allocate and setup (bit-reversal) permutation index ! if((permindex=new int[size])==0) PlainError(1,"Error in FFT::Setup %s",ErrNoMem); permindex[0]=0; int m,n; // The following code relies heavily on size==2^log2vecsize *************** *** 369,375 **** if(blocksize==2*vecsize) { // We still have to do one single-step matrix multiplication blocksize=vecsize; v=dvec; ! for(offset=0;offsetcalc==NULL) { // Default to internal routine // Allocate demagcoef matrices ! if(!(ADemagCoef=new double*[Nx])) PlainError(1,"Error in Grid2D::Allocate: %s",ErrNoMem); ! if(!(CDemagCoef=new double*[Nx])) PlainError(1,"Error in Grid2D::Allocate: %s",ErrNoMem); for(i=0;icalc==NULL) { // Default to internal routine // Allocate demagcoef matrices ! if((ADemagCoef=new double*[Nx])==0) PlainError(1,"Error in Grid2D::Allocate: %s",ErrNoMem); ! if((CDemagCoef=new double*[Nx])==0) PlainError(1,"Error in Grid2D::Allocate: %s",ErrNoMem); for(i=0;i1.0) rounded_proportion=1.0; + if(rounded_proportion<0.0) rounded_proportion=0.0; double radius=0.5*rounded_proportion*OC_MIN(Nx,Nz); *************** *** 549,555 **** cx1=radius-0.5; cx2=Nx-0.5-radius; cz1=radius-0.5; cz2=Nz-0.5-radius; if(cx1>cx2 || cz1>cz2) ! PlainError(1,"Error in Grid2D::InitOval: %s",ErrProgramming); // Round lower left corner int i,k; double xdistsq,zdistsq,radsq=OC_SQ(radius); --- 567,574 ---- cx1=radius-0.5; cx2=Nx-0.5-radius; cz1=radius-0.5; cz2=Nz-0.5-radius; if(cx1>cx2 || cz1>cz2) ! PlainError(1,"Error in Grid2D::InitOval: %s; Nx=%d, Nz=%d, radius=%g", ! ErrProgramming,Nx,Nz,radius); // Round lower left corner int i,k; double xdistsq,zdistsq,radsq=OC_SQ(radius); *************** *** 770,779 **** DoPrecess=mif.GetDoPrecess(); GyRatio=mif.GetGyRatio(); DampCoef=mif.GetDampCoef(); // Do demag initialization ! if(!(dfparams=new char*[OC_MAX(2,MAXDFPARAMS)]) ! || !(dfparams[0]=new char[MAXDFNAMELENGTH])) PlainError(1,"Error in Grid2D::Grid2D(MIF &): %s",ErrNoMem); strncpy(dfparams[0],mif.GetDemagName(),MAXDFNAMELENGTH); *(dfparams[1]=(char *)strchr((const char *)dfparams[0],'\0')+1)='\0'; --- 789,800 ---- DoPrecess=mif.GetDoPrecess(); GyRatio=mif.GetGyRatio(); DampCoef=mif.GetDampCoef(); + if(DampCoef==0.0) PlainError(1,"Error in Grid2D::Grid2D(MIF &): " + "DampCoef must be non-zero."); // Do demag initialization ! if((dfparams=new char*[OC_MAX(2,MAXDFPARAMS)])==0 ! || (dfparams[0]=new char[MAXDFNAMELENGTH])==0) PlainError(1,"Error in Grid2D::Grid2D(MIF &): %s",ErrNoMem); strncpy(dfparams[0],mif.GetDemagName(),MAXDFNAMELENGTH); *(dfparams[1]=(char *)strchr((const char *)dfparams[0],'\0')+1)='\0'; *************** *** 970,978 **** Deallocate(); } void Grid2D::PrintUsageTimes(FILE *fptr) { - #ifdef STOPWATCH_ON Oc_TimeVal cpu,wall; fprintf(fptr,"# Timing (seconds) CPU Elapsed\n"); sw_exch.GetTimes(cpu,wall); --- 991,999 ---- Deallocate(); } + #ifdef STOPWATCH_ON void Grid2D::PrintUsageTimes(FILE *fptr) { Oc_TimeVal cpu,wall; fprintf(fptr,"# Timing (seconds) CPU Elapsed\n"); sw_exch.GetTimes(cpu,wall); *************** *** 994,1001 **** fprintf(fptr,"# Proc Total %12.3f %12.3f\n", double(cpu),double(wall)); fflush(fptr); - #endif // STOPWATCH_ON } void Grid2D::GetUsageTimes(Nb_DString& str) { --- 1015,1024 ---- fprintf(fptr,"# Proc Total %12.3f %12.3f\n", double(cpu),double(wall)); fflush(fptr); } + #else + void Grid2D::PrintUsageTimes(FILE *) {} + #endif // STOPWATCH_ON void Grid2D::GetUsageTimes(Nb_DString& str) { *************** *** 2344,2357 **** // "binary4". NB: the ovf format uses x & y in plane, as opposed to // Grid2D which uses x & z in plane (both are righthand systems). This // routine does the necessary conversions. - void Grid2D::WriteOvf(CHAR type, const CHAR *datatype,const CHAR *precision, const CHAR *filename,const CHAR *realname, ! const CHAR *note) { ! if((type!='m' && type!='h') || filename==NULL) { Message("Warning in Grid2D::WriteOvf: %s",ErrBadParam); } // Handle default inputs --- 2367,2381 ---- // "binary4". NB: the ovf format uses x & y in plane, as opposed to // Grid2D which uses x & z in plane (both are righthand systems). This // routine does the necessary conversions. void Grid2D::WriteOvf(CHAR type, const CHAR *datatype,const CHAR *precision, const CHAR *filename,const CHAR *realname, ! const CHAR *note,const ThreeVector * const *arr) { ! if((type!='m' && type!='h' && type!='o') || filename==NULL ! || (type=='o' && arr==NULL) || (type!='o' && arr!=NULL)) { Message("Warning in Grid2D::WriteOvf: %s",ErrBadParam); + return; } // Handle default inputs *************** *** 2378,2388 **** strcmp(datastyle.GetStr(),"text")!=0) { Message("Warning in Grid2D::WriteOvf; Unknown data style: %s", datastyle.GetStr()); } FILE *fptr=Nb_FOpen(filename,"wb"); if(fptr==NULL) { ! Message("Warning in GridDWriteOvf: Unable to open file %s" " for writing",filename); return; } --- 2402,2413 ---- strcmp(datastyle.GetStr(),"text")!=0) { Message("Warning in Grid2D::WriteOvf; Unknown data style: %s", datastyle.GetStr()); + return; } FILE *fptr=Nb_FOpen(filename,"wb"); if(fptr==NULL) { ! Message("Warning in GridD::WriteOvf: Unable to open file %s" " for writing",filename); return; } *************** *** 2457,2465 **** } else { // Determine largest field magnitude double max_mag=0,mag; ! for(int i=0;imax_mag) max_mag=mag; } max_mag=sqrt(max_mag); fprintf(fptr, --- 2482,2497 ---- } else { // Determine largest field magnitude double max_mag=0,mag; ! if(type=='h') { ! for(int i=0;imax_mag) max_mag=mag; ! } ! } else { ! for(int i=0;imax_mag) max_mag=mag; ! } } max_mag=sqrt(max_mag); fprintf(fptr, *************** *** 2498,2504 **** fwrite((char *)outarr,sizeof(REAL4),3,fptr); /// The above fwrite ASSUMES outarr is packed. } ! } else { // Write reduced field for(int k=0;kGetLocalhField(i,k,h1[i][k]); + ConvertXyzToXzy(h1[i][k]); + } + } else if(strcmp(component,"exchange")==0) { + for(i=0;i Nx) { for(i=0;i 3*Ny/4) ! { m[i][j][0] = -1.0; m[i][j][1]=0.0; } ! else ! { m[i][j][0] = 1.0; m[i][j][1]=0.0; } ! if( j>i && jNy-i ) ! { m[i][j][1] = 1.0; m[i][j][0]=0.0; } ! if( jNx-i ) ! { m[i][j][1] = -1.0; m[i][j][0]=0.0; } ! if( j>Ny-Nx+i && j 3*Nx/4) ! { m[i][j][1] = -1.0; m[i][j][0]=0.0; } ! else ! { m[i][j][1] = 1.0; m[i][j][0]=0.0; } ! if( i>j && iNx-j ) ! { m[i][j][0] = 1.0; m[i][j][1]=0.0; } ! if( iNy-j ) ! { m[i][j][0] = -1.0; m[i][j][1]=0.0; } ! if( i>Nx-Ny+j && i Nx) { + double slope=double(Ny-1)/double(2*(Nx-1)); + double half=double(Ny-1)/2.; + double adj=0; + if(Nx%2 == 0) adj=0.5; for(i=0;ihalf+i*slope+adj) test3 = 1; ! if(j>Ny-1-i*slope+adj) test4 = 1; ! if((test1 && test2) || (test3 && test4)) { ! m[i][j][0] = -1.0; m[i][j][1]= 0.0; ! } else if(test1 || test4) { ! m[i][j][0] = 0.0; m[i][j][1]= 1.0; ! } else if(test2 || test3) { ! m[i][j][0] = 0.0; m[i][j][1]= -1.0; ! } else { ! m[i][j][0] = 1.0; m[i][j][1]= 0.0; ! } } ! } else { ! double slope=double(Nx-1)/double(2*(Ny-1)); ! double half=double(Nx-1)/2.; ! double adj=0; ! if(Ny%2 == 0) adj=0.5; for(i=0;ihalf+j*slope+adj) test3 = 1; ! if(i>Nx-1-j*slope+adj) test4 = 1; ! if((test1 && test2) || (test3 && test4)) { ! m[i][j][0] = 0.0; m[i][j][1]= -1.0; ! } else if(test1 || test4) { ! m[i][j][0] = 1.0; m[i][j][1]= 0.0; ! } else if(test2 || test3) { ! m[i][j][0] = -1.0; m[i][j][1]= 0.0; ! } else { ! m[i][j][0] = 0.0; m[i][j][1]= 1.0; ! } } } MagPerturbAndScale(Nx,Ny,m); *************** *** 1111,1117 **** // Allocate workspace memory double *arr; ! if(!(arr=new double[yfiledim*vd])) PlainError(1,"Error in MI_vioFile: %s",ErrNoMem); // Fill array --- 1123,1129 ---- // Allocate workspace memory double *arr; ! if((arr=new double[yfiledim*vd])==0) PlainError(1,"Error in MI_vioFile: %s",ErrNoMem); // Fill array *************** *** 1166,1176 **** if(mesh==NULL) return 3; // Get mesh extents ! Nb_BoundingBox range; mesh->GetDataRange(range); ! Nb_Vec3 base; range.GetMinPt(base); ! REAL4 xstep=range.GetWidth()/REAL4(Nx); ! REAL4 ystep=range.GetHeight()/REAL4(Ny); ! REAL4 zstep=range.GetDepth()/REAL4(Nz); // Adjust base to half-cell position base.x+=xstep/2.; base.y+=ystep/2.; --- 1178,1188 ---- if(mesh==NULL) return 3; // Get mesh extents ! Nb_BoundingBox range; mesh->GetPreciseDataRange(range); ! Nb_Vec3 base; range.GetMinPt(base); ! REAL8 xstep=range.GetWidth()/REAL8(Nx); ! REAL8 ystep=range.GetHeight()/REAL8(Ny); ! REAL8 zstep=range.GetDepth()/REAL8(Nz); // Adjust base to half-cell position base.x+=xstep/2.; base.y+=ystep/2.; *************** *** 1178,1184 **** // Step through range and sample mesh, fitting grid // with zeroth order fit. ! Nb_Vec3 pos; Nb_LocatedVector lv; lv.value.Set(1.,0.,0.); // Safety for(int k=0;k pos; Nb_LocatedVector lv; lv.value.Set(1.,0.,0.); // Safety for(int k=0;kFindClosest(pos,lv); m[i][j][0]=lv.value.x; m[i][j][1]=lv.value.y; m[i][j][2]=lv.value.z; --- 1198,1204 ---- pos.y=base.y+j*ystep; for(int i=0;iFindPreciseClosest(pos,lv); m[i][j][0]=lv.value.x; m[i][j][1]=lv.value.y; m[i][j][2]=lv.value.z; diff -crN oommf-1.1a2/app/mmsolve/makerules.tcl oommf/app/mmsolve/makerules.tcl *** oommf-1.1a2/app/mmsolve/makerules.tcl Wed Apr 5 00:22:58 2000 --- oommf/app/mmsolve/makerules.tcl Tue Apr 4 23:20:56 2000 *************** *** 63,69 **** puts $f [format { Oc_Application Define { -name mmSolve ! -version 1.1.0.2 -machine %s -file "%s" } --- 63,69 ---- puts $f [format { Oc_Application Define { -name mmSolve ! -version 1.1.1.0 -machine %s -file "%s" } *************** *** 73,79 **** puts $f [format { Oc_Application Define { -name mpirun ! -version 1.1.0.2 -machine %s -directory {} -file {%s} --- 73,79 ---- puts $f [format { Oc_Application Define { -name mpirun ! -version 1.1.1.0 -machine %s -directory {} -file {%s} *************** *** 86,92 **** puts $f [format { Oc_Application Define { -name mmSolve ! -version 1.1.0.2 -machine mpirun -file "%s" } --- 86,92 ---- puts $f [format { Oc_Application Define { -name mmSolve ! -version 1.1.1.0 -machine mpirun -file "%s" } *************** *** 117,123 **** [[CSourceFile New _ $o.cc] Dependencies]] -script [format {Platform Compile C++ -opt 1 \ -inc [[CSourceFile New _ %s.cc] DepPath] \ ! -src %s.cc -out %s } $o $o $o] } } --- 117,123 ---- [[CSourceFile New _ $o.cc] Dependencies]] -script [format {Platform Compile C++ -opt 1 \ -inc [[CSourceFile New _ %s.cc] DepPath] \ ! -out %s -src %s.cc } $o $o $o] } } diff -crN oommf-1.1a2/app/mmsolve/mifio.cc oommf/app/mmsolve/mifio.cc *** oommf-1.1a2/app/mmsolve/mifio.cc Wed Apr 5 00:22:58 2000 --- oommf/app/mmsolve/mifio.cc Tue Apr 4 23:20:56 2000 *************** *** 397,402 **** --- 397,416 ---- CellSize,PartHeight); errcount++; } + if(fabs(1-floor((PartWidth+CellSize/2.)/CellSize)*CellSize/PartWidth) + >=0.0001) { + PlainWarning("Warning in " MIFNAME + "CellSize=%g does not divide PartWidth=%g", + CellSize,PartWidth); + errcount++; + } + if(fabs(1-floor((PartHeight+CellSize/2.)/CellSize)*CellSize/PartHeight) + >=0.0001) { + PlainWarning("Warning in " MIFNAME + "CellSize=%g does not divide PartHeight=%g", + CellSize,PartHeight); + errcount++; + } if(GeomType==mif_geom_notset) MIFERRE(GeomType,mif_geom_notset); *************** *** 481,490 **** InName=inname; FILE* infile; ! if(!(infile=Nb_FOpen(InName.GetStr(),"r"))) { // Add a .mif extension and retry InName.Append(".mif"); ! if(!(infile=Nb_FOpen(InName.GetStr(),"r"))) { MessageLocker::Append("Error in " MIFNAME "Unable to open file %s\n", inname); return; --- 495,504 ---- InName=inname; FILE* infile; ! if((infile=Nb_FOpen(InName.GetStr(),"r"))==0) { // Add a .mif extension and retry InName.Append(".mif"); ! if((infile=Nb_FOpen(InName.GetStr(),"r"))==0) { MessageLocker::Append("Error in " MIFNAME "Unable to open file %s\n", inname); return; diff -crN oommf-1.1a2/app/mmsolve/mms.tcl oommf/app/mmsolve/mms.tcl *** oommf-1.1a2/app/mmsolve/mms.tcl Wed Apr 5 00:22:58 2000 --- oommf/app/mmsolve/mms.tcl Tue Apr 4 23:20:56 2000 *************** *** 2,14 **** # # Master Tcl file for the mmsolve shell # ! # Last modified on: $Date: 1999/10/21 21:25:42 $ # Last modified by: $Author: dgp $ Oc_CheckTclIndex mmSolve # NOTE: version number below must match that in ./mmsolve.h ! package require -exact Mms 1.1.0.2 # Set up for autoloading of Oc extension commands set mms(library) [file dirname [info script]] --- 2,14 ---- # # Master Tcl file for the mmsolve shell # ! # Last modified on: $Date: 2000/02/18 17:18:35 $ # Last modified by: $Author: dgp $ Oc_CheckTclIndex mmSolve # NOTE: version number below must match that in ./mmsolve.h ! package require -exact Mms 1.1.1.0 # Set up for autoloading of Oc extension commands set mms(library) [file dirname [info script]] diff -crN oommf-1.1a2/app/mmsolve/mmsinit.cc oommf/app/mmsolve/mmsinit.cc *** oommf-1.1a2/app/mmsolve/mmsinit.cc Wed Apr 5 00:22:58 2000 --- oommf/app/mmsolve/mmsinit.cc Tue Apr 4 23:20:56 2000 *************** *** 297,303 **** #define CLASS_TCL_NAME grid2d INSTANCE_METHOD(BinDumph,2,"",(NOP,NOP),VOIDC,MYSTRFMT,N) INSTANCE_METHOD(BinDumpm,2,"",(NOP,NOP),VOIDC,MYSTRFMT,N) ! INSTANCE_METHOD(WriteOvf,6,"",\ (atoc,NOP,NOP,NOP,NOP,NOP),VOIDC,MYSTRFMT,N) INSTANCE_METHOD(GetAveMag,0,"",(),Vec3Dtoa,MYSTRFMT,N) INSTANCE_METHOD(GetAveH,0,"",(),Vec3Dtoa,MYSTRFMT,N) --- 297,307 ---- #define CLASS_TCL_NAME grid2d INSTANCE_METHOD(BinDumph,2,"",(NOP,NOP),VOIDC,MYSTRFMT,N) INSTANCE_METHOD(BinDumpm,2,"",(NOP,NOP),VOIDC,MYSTRFMT,N) ! INSTANCE_METHOD(WriteFieldComponent,6, \ ! "",\ ! (NOP,NOP,NOP,NOP,NOP,NOP),VOIDC,MYSTRFMT,E) ! INSTANCE_METHOD(WriteOvf,6, \ ! "",\ (atoc,NOP,NOP,NOP,NOP,NOP),VOIDC,MYSTRFMT,N) INSTANCE_METHOD(GetAveMag,0,"",(),Vec3Dtoa,MYSTRFMT,N) INSTANCE_METHOD(GetAveH,0,"",(),Vec3Dtoa,MYSTRFMT,N) *************** *** 444,450 **** Grid2D *classPtr = (Grid2D *) clientData; int Nx,Ny; ! Nx=Ny=0; // Just to keep compiler quiet. classPtr->GetDimens(Nx,Ny); sprintf(mybuf, "%4d %4d",Nx,Ny); --- 448,454 ---- Grid2D *classPtr = (Grid2D *) clientData; int Nx,Ny; ! Nx=Ny=0; // Just to keep some compilers quiet. classPtr->GetDimens(Nx,Ny); sprintf(mybuf, "%4d %4d",Nx,Ny); *************** *** 630,635 **** --- 634,640 ---- MMSFUNCLIST(Grid2D,ResetODE), MMSFUNCLIST(Grid2D,RoughenBoundaryMoments), MMSFUNCLIST(Grid2D,SetAppliedField), + MMSFUNCLIST(Grid2D,WriteFieldComponent), MMSFUNCLIST(Grid2D,WriteOvf), { "Delete" , Grid2DInstanceDelete }, { (const char *)NULL, (Tcl_CmdProc *)NULL } diff -crN oommf-1.1a2/app/mmsolve/mmsolve.cc oommf/app/mmsolve/mmsolve.cc *** oommf-1.1a2/app/mmsolve/mmsolve.cc Wed Apr 5 00:22:58 2000 --- oommf/app/mmsolve/mmsolve.cc Tue Apr 4 23:20:56 2000 *************** *** 5,10 **** --- 5,12 ---- */ #include "oc.h" + #include "nb.h" + #include "vf.h" #include "mmsolve.h" /* Mmsolve_Init, Mmsolve_SafeInit */ /* End includes */ *************** *** 91,96 **** --- 93,108 ---- if (Oc_Init(interp) == TCL_ERROR) { return TCL_ERROR; } + Tcl_StaticPackage(interp, ab("Oc"), Oc_Init, NULL); + + if (Nb_Init(interp) == TCL_ERROR) { + Tcl_DStringInit(&buf); + Tcl_DStringAppend(&buf, ab("Oc_Log Log"), -1); + Tcl_DStringAppendElement(&buf, Tcl_GetStringResult(interp)); + Tcl_Eval(interp, Tcl_DStringAppendElement(&buf, ab("error"))); + Tcl_DStringFree(&buf); + } + Tcl_StaticPackage(interp, ab("Nb"), Nb_Init, NULL); if (Vf_Init(interp) == TCL_ERROR) { Tcl_DStringInit(&buf); Tcl_DStringAppend(&buf, ab("Oc_Log Log"), -1); *************** *** 98,103 **** --- 110,116 ---- Tcl_Eval(interp, Tcl_DStringAppendElement(&buf, ab("error"))); Tcl_DStringFree(&buf); } + Tcl_StaticPackage(interp, ab("Vf"), Vf_Init, NULL); if (Mmsolve_Init(interp) == TCL_ERROR) { Tcl_DStringInit(&buf); Tcl_DStringAppend(&buf, ab("Oc_Log Log"), -1); *************** *** 106,111 **** --- 119,125 ---- Tcl_DStringFree(&buf); Tcl_Exit(1); } + Tcl_StaticPackage(interp, ab("Mms"), Mmsolve_Init, NULL); #ifdef USE_MPI Mmsolve_MpiSleep(); // Put all but root process to sleep #endif // USE_MPI diff -crN oommf-1.1a2/app/mmsolve/mmsolve.h oommf/app/mmsolve/mmsolve.h *** oommf-1.1a2/app/mmsolve/mmsolve.h Wed Apr 5 00:22:58 2000 --- oommf/app/mmsolve/mmsolve.h Tue Apr 4 23:20:56 2000 *************** *** 25,38 **** #define MMSOLVE_MAJOR_VERSION 1 #define MMSOLVE_MINOR_VERSION 1 ! #define MMSOLVE_RELEASE_LEVEL 0 ! #define MMSOLVE_RELEASE_SERIAL 2 #define MMSOLVE_VERSION OC_MAKE_VERSION(MMSOLVE) Tcl_CmdProc Mms_MifCmd; Tcl_CmdProc Mms_Grid2DCmd; ! int Mmsolve_Init _ANSI_ARGS_((Tcl_Interp *interp)); ! int Mmsolve_SafeInit _ANSI_ARGS_((Tcl_Interp *interp)); #endif // MMSOLVE_H --- 25,38 ---- #define MMSOLVE_MAJOR_VERSION 1 #define MMSOLVE_MINOR_VERSION 1 ! #define MMSOLVE_RELEASE_LEVEL 1 ! #define MMSOLVE_RELEASE_SERIAL 0 #define MMSOLVE_VERSION OC_MAKE_VERSION(MMSOLVE) Tcl_CmdProc Mms_MifCmd; Tcl_CmdProc Mms_Grid2DCmd; ! Tcl_PackageInitProc Mmsolve_Init; ! Tcl_PackageInitProc Mmsolve_SafeInit; #endif // MMSOLVE_H diff -crN oommf-1.1a2/app/mmsolve/scripts/appindex.tcl oommf/app/mmsolve/scripts/appindex.tcl *** oommf-1.1a2/app/mmsolve/scripts/appindex.tcl Wed Apr 5 00:22:58 2000 --- oommf/app/mmsolve/scripts/appindex.tcl Tue Apr 4 23:20:57 2000 *************** *** 1,21 **** Oc_Application Define { -name batchmaster ! -version 1.1.0.2 ! -machine omfsh -file batchmaster.tcl } Oc_Application Define { -name batchslave ! -version 1.1.0.2 -machine mmsolve -file batchslave.tcl } Oc_Application Define { -name batchsolve ! -version 1.1.0.2 -machine mmsolve -file batchsolve.tcl } --- 1,35 ---- Oc_Application Define { -name batchmaster ! -version 1.1.1.0 ! -machine filtersh -file batchmaster.tcl + -options {-tk 0} + -mode fg } Oc_Application Define { -name batchslave ! -version 1.1.1.0 -machine mmsolve -file batchslave.tcl + -options {-tk 0} } Oc_Application Define { -name batchsolve ! -version 1.1.1.0 -machine mmsolve -file batchsolve.tcl + -options {-tk 0} + -mode fg + } + + Oc_Application Define { + -name mag2hfield + -version 1.1.1.0 + -machine mmsolve + -file mag2hfield.tcl + -options {-tk 0} + -mode fg } diff -crN oommf-1.1a2/app/mmsolve/scripts/batchmaster.tcl oommf/app/mmsolve/scripts/batchmaster.tcl *** oommf-1.1a2/app/mmsolve/scripts/batchmaster.tcl Wed Apr 5 00:22:58 2000 --- oommf/app/mmsolve/scripts/batchmaster.tcl Tue Apr 4 23:20:57 2000 *************** *** 4,15 **** --- 4,35 ---- # across network sockets. # # This script should be run using the omfsh shell. + package require Oc 1.1 Oc_IgnoreTermLoss ;# Try to keep going, even if controlling terminal ## goes down. + Oc_ForceNoTkDefaultMessage ;# Use stderr, not dialog to report errors + + Oc_Main SetAppName batchmaster + Oc_Main SetVersion 1.1.1.0 + + Oc_CommandLine Option [Oc_CommandLine Switch] { + {task_script {} {Task definition file}} + {{host optional} {} {Network host for master server}} + {{port optional} {} {Network port for master server}} + } { + global job_script; set job_script $task_script + global server + set server(host) [expr {[string length $host] ? $host : "localhost"}] + set server(port) [expr {[string length $port] ? $port : 0}] + } {End of options; next argument is task_script} + Oc_CommandLine Parse $argv # Name of tclsh to use to run oommf.tcl set tclsh [Oc_Application CommandLine tclsh] + if {[string match & [lindex $tclsh end]]} { + set tclsh [lreplace $tclsh end end] + } # OOMMF root directory set default_script_dir [file dirname [info script]] *************** *** 24,40 **** [file join $oommf_root app mmsolve scripts] \ [file join $oommf_root app mmsolve data]] - proc Usage {} { - global argv0 - puts stderr "Usage: $argv0 task_script \[server_host \[server_port\]\]" - exit - } - - if {$argc<1 || $argc>3 \ - || [string match "-h" [lindex $argv 0]]} { - Usage - } - # Class to hold information from task script: Slave launch list, # slave init script, task scripts, and slave host list. Oc_Class BatchTaskObj { --- 44,49 ---- *************** *** 44,50 **** # and the default slave list is thrown away. private variable launch_list_set = 0 private variable launch_list = { ! 1 {exec %tclsh %oommf batchslave -tk 0 %connect_info batchsolve.tcl} } private variable slave_init_script = {} private variable tasks = {} --- 53,59 ---- # and the default slave list is thrown away. private variable launch_list_set = 0 private variable launch_list = { ! 1 {Oc_Application Exec batchslave -tk 0 %connect_info batchsolve.tcl} } private variable slave_init_script = {} private variable tasks = {} *************** *** 116,122 **** set sub(oommf) [file join $oommf_root $oommf_app_rel_path] set sub(oommf_rel) $oommf_app_rel_path set sub(connect_info) \ ! {$server(host) $server(port) $slaveid $passwd} foreach str [array names sub] { regsub -all -- "(\[^%\]|^)%${str}(\[^a-zA-Z0-9_\]|$)" $cmd \ "\\1$sub($str)\\2" cmd --- 125,131 ---- set sub(oommf) [file join $oommf_root $oommf_app_rel_path] set sub(oommf_rel) $oommf_app_rel_path set sub(connect_info) \ ! {-- $server(host) $server(port) $slaveid $passwd} foreach str [array names sub] { regsub -all -- "(\[^%\]|^)%${str}(\[^a-zA-Z0-9_\]|$)" $cmd \ "\\1$sub($str)\\2" cmd *************** *** 237,261 **** # Process command line and initialize global variables ! catch {unset server} ; catch {unset slave} ; catch {unset task} ;# Safety set task(count) 0 ; set task(sched) 0 set slave(count) 0 set slave(timeout) 30000 - set job_script [lindex $argv 0] - switch -- [llength $argv] { - 1 { - set server(host) localhost - set server(port) 0 - } - 2 { - set server(host) [lindex $argv 1] - set server(port) 0 - } - 3 { - set server(host) [lindex $argv 1] - set server(port) [lindex $argv 2] - } - } $TaskInfo ModifyHostList +$server(host) --- 246,255 ---- # Process command line and initialize global variables ! catch {unset slave} ; catch {unset task} ;# Safety set task(count) 0 ; set task(sched) 0 set slave(count) 0 set slave(timeout) 30000 $TaskInfo ModifyHostList +$server(host) *************** *** 425,431 **** } else { set task(task$taskno,status) done set task(task$taskno,result) $result ! puts stderr "Task $idstring complete: $result" flush stderr } } --- 419,429 ---- } else { set task(task$taskno,status) done set task(task$taskno,result) $result ! if {[string match {} $result]} { ! puts stderr "Task $idstring complete." ! } else { ! puts stderr "Task $idstring complete: $result" ! } flush stderr } } *************** *** 531,538 **** } } if {[string match {} $load_script]} { ! puts stderr "Unable to open job script $job_script" ! Usage } source $load_script set task(count) [expr {[llength [$TaskInfo GetTaskList]]/2}] --- 529,537 ---- } } if {[string match {} $load_script]} { ! Oc_Log Log "Unable to open job script\ ! $job_script\n[Oc_CommandLine Usage]" panic ! exit 1 } source $load_script set task(count) [expr {[llength [$TaskInfo GetTaskList]]/2}] diff -crN oommf-1.1a2/app/mmsolve/scripts/batchslave.tcl oommf/app/mmsolve/scripts/batchslave.tcl *** oommf-1.1a2/app/mmsolve/scripts/batchslave.tcl Wed Apr 5 00:22:58 2000 --- oommf/app/mmsolve/scripts/batchslave.tcl Tue Apr 4 23:20:57 2000 *************** *** 1,4 **** - #!/bin/sh # FILE: batchslave.tcl # This script brings up a Tcl interpreter that hooks up to a network # socket and then processes Tcl commands sent over that socket. The --- 1,3 ---- *************** *** 6,25 **** # the command is complete. # # Note: If batchsolve.tcl is to be used with this script, then this ! # script should be launched with mmsolve instead of tclsh. ! # ! # Bootstrap: this comment continues on in Tcl, but not in sh \ ! exec tclsh "$0" ${1+"$@"} Oc_IgnoreTermLoss ;# Try to keep going, even if controlling terminal ## goes down. ! if {[llength $argv]<4} { ! puts stderr "Usage: $argv0 server_host\ ! server_port slaveid passwd \[aux_script \[aux_args\]\]" ! puts stderr "(Got: $argv0 $argv)" ! exit ! } set base_dir [info script] set root_oommf [file join [file dirname $base_dir] .. .. ..] --- 5,40 ---- # the command is complete. # # Note: If batchsolve.tcl is to be used with this script, then this ! # script should be launched with mmsolve instead of omfsh. ! package require Oc 1.1 Oc_IgnoreTermLoss ;# Try to keep going, even if controlling terminal ## goes down. ! Oc_ForceNoTkDefaultMessage ;# Error messages to stderr, not dialog ! ! Oc_Main SetAppName batchslave ! Oc_Main SetVersion 1.1.1.0 ! ! Oc_CommandLine Option [Oc_CommandLine Switch] { ! {host {} {Hostname to connect to master}} ! {port {} {Port to connect to master}} ! {id {} {ID of this slave assigned by master}} ! {password {} {password to use with master}} ! {{script optional} {} {Script file slave should evaluate}} ! {{arg list} {} {Arguments to pass to script file}} ! } { ! global sock login aux_script argv ! # Hook up to master ! if {[catch {socket $host $port} sock]} { ! return -code error "Error opening socket to $host:$port: $sock" ! } ! set login "connect verify $id $password" ! set aux_script $script ! set argv $arg ! } {End of options; next argument is host} ! ! Oc_CommandLine Parse $argv set base_dir [info script] set root_oommf [file join [file dirname $base_dir] .. .. ..] *************** *** 32,39 **** [file join $root_oommf app mmsolve data]] # Global variables ! global masterhost masterport ;# Host machine and port of master ! global sock ;# Socket to master # Message procs. These escape newlines. proc MyPuts { chan msg } { --- 47,54 ---- [file join $root_oommf app mmsolve data]] # Global variables ! global sock ;# Socket to master ! global login ;# login message to master # Message procs. These escape newlines. proc MyPuts { chan msg } { *************** *** 110,145 **** MyPuts $sock "status ready" } ! # Hook up to master ! set masterhost [lindex $argv 0] ! set masterport [lindex $argv 1] ! if {[catch {socket $masterhost $masterport} sock]} { ! puts stderr "Error opening socket: $sock" ! exit ! } fconfigure $sock -buffering line -blocking 0 fileevent $sock readable ProcessCommand ! MyPuts $sock "connect verify [lindex $argv 2] [lindex $argv 3]" # Source in auxiliary script, if any ! if {[llength $argv] > 4} { ! set orig_argv $argv ! set argv [lrange $argv 5 end] ;# Fake argument list ! set aux_script [lindex $orig_argv 4] ! foreach dir $script_path { ! set attempt [file join $dir $aux_script] ! if {[file readable $attempt]} { ! set aux_script $attempt ! break ! } ! } ! if {[catch {source $aux_script} msg]} { ! puts stderr "Error sourcing [lindex $orig_argv 4]: $msg" } ! set argv $orig_argv } # Inform master we are ready to begin processing, and go into event loop ! after 20 {catch {MyPuts $sock "status ready"}} vwait forever --- 125,148 ---- MyPuts $sock "status ready" } ! # start connection to master fconfigure $sock -buffering line -blocking 0 fileevent $sock readable ProcessCommand ! MyPuts $sock $login # Source in auxiliary script, if any ! foreach dir $script_path { ! set attempt [file join $dir $aux_script] ! if {[file readable $attempt]} { ! set aux_script $attempt ! break } ! } ! if {[catch {source $aux_script} msg]} { ! puts stderr "Error sourcing $aux_script: $msg" } # Inform master we are ready to begin processing, and go into event loop ! MyPuts $sock "status ready" vwait forever diff -crN oommf-1.1a2/app/mmsolve/scripts/batchsolve.tcl oommf/app/mmsolve/scripts/batchsolve.tcl *** oommf-1.1a2/app/mmsolve/scripts/batchsolve.tcl Wed Apr 5 00:22:59 2000 --- oommf/app/mmsolve/scripts/batchsolve.tcl Tue Apr 4 23:20:57 2000 *************** *** 3,37 **** # This file must be interpreted by the mmsolve shell. # # Command line options: ! # -no_interface Don't export an interactive interface (cf. # InteractiveServerInit). Currently this is the # only network-active code inside this file. Note, # however, that this file may be sourced from inside # another script (e.g., batchslave.tcl) that can # provide network access to the code in this file. ! # [-file] filename.mif Immediately load and run the specified mif file. ! # -start_paused Pause solver after loading problem. ! # -end_paused Pause solver and enter event loop at bottom of # script rather than just falling off the end. ! # -end_exit <0|1> If 1, explicitly call exit at bottom of script. # If mif file has been specified on the command line, # then the default value is 1. If a mif file has # not been specified, then the default value is 0. ! # -restart <0|1> If 1, then uses .log log file to restart # run from last checkpoint. If this is not possible, # then a warning is issued and the problem runs from # the beginning. This property holds for *all* # problems fed to the solver (not just the first). # Accessible global variables: # # mif --- Handle to a mms_mif object # solver --- Handle to a mms_solver object # search_path --- Directories to look in for *.mif files. - # no_interface --- If true, then interactive socket control is not setup - # start_paused --- Cf. -start_paused command line option - # end_paused --- Cf. -end_paused command line option - # restart --- Cf. -restart command line option # For documentation on the global variables inputs, outputs, events, # and commands, see mmsolve2d.tcl. --- 3,91 ---- # This file must be interpreted by the mmsolve shell. # # Command line options: ! # ! package require Oc 1.1 ! package require Mms 1.1.0.1 ! ! Oc_ForceNoTkDefaultMessage ;# use stderr, not dialog for messages ! ! Oc_Main SetAppName batchsolve ! Oc_Main SetVersion 1.1.1.0 ! ! Oc_CommandLine Option interface { ! {flag {expr {![catch {expr {$flag && $flag}}]}} {= 0 or 1}} ! } { ! global interface; set interface $flag ! } {Whether to export an interface (default=1)} ! set interface 1 ;# Default: export interface ! ! Oc_CommandLine Option restart { ! {flag {expr {![catch {expr {$flag && $flag}}]}} {= 0 or 1}} ! } { ! global restart; set restart $flag ! } {1 => use .log file to restart simulation} ! set restart 0 ;# Default: start solving at beginning ! ! Oc_CommandLine Option end_exit { ! {flag {expr {![catch {expr {$flag && $flag}}]}} {= 0 or 1}} ! } { ! global end_exit; set end_exit $flag ! } {Whether to explicitly exit after solving (default=1)} ! # Set default based on whether we're sourced into another script ! if {[string compare $argv0 [info script]] == 0} { ! # Started as the main application ! set end_exit 1 ;# Default: exit when solving completed ! } else { ! # Sourced into another application ! set end_exit 0 ;# Default: Don't exit our caller app! ! } ! ! Oc_CommandLine Option end_paused {} { ! global end_paused; set end_paused 1 ! } {Enter event loop after solving problem} ! set end_paused 0 ;# Default is to not pause ! ! Oc_CommandLine Option start_paused {} { ! global start_paused; set start_paused 1 ! } {Pause solver after loading problem} ! set start_paused 0 ;# Default is to not pause ! ! Oc_CommandLine Option [Oc_CommandLine Switch] { ! {{file optional} {} {Problem description file to load and run}} ! } { ! global miffile; set miffile $file ! } {End of options; next argument is file} ! set miffile "" ! ! # More details on the options: ! # ! # -interface <0|1> Whether to export an interactive interface (cf. # InteractiveServerInit). Currently this is the # only network-active code inside this file. Note, # however, that this file may be sourced from inside # another script (e.g., batchslave.tcl) that can # provide network access to the code in this file. ! # -start_paused Pause solver after loading problem. ! # -end_paused Pause solver and enter event loop at bottom of # script rather than just falling off the end. ! # -end_exit <0|1> If 1, explicitly call exit at bottom of script. # If mif file has been specified on the command line, # then the default value is 1. If a mif file has # not been specified, then the default value is 0. ! # -restart <0|1> If 1, then uses .log log file to restart # run from last checkpoint. If this is not possible, # then a warning is issued and the problem runs from # the beginning. This property holds for *all* # problems fed to the solver (not just the first). + # file Immediately load and run the specified mif file. + + Oc_CommandLine Parse $argv # Accessible global variables: # # mif --- Handle to a mms_mif object # solver --- Handle to a mms_solver object # search_path --- Directories to look in for *.mif files. # For documentation on the global variables inputs, outputs, events, # and commands, see mmsolve2d.tcl. *************** *** 53,59 **** Oc_Log SetLogHandler [list FileLogger Log] warning Oc_Log SetLogHandler [list FileLogger Log] info ! global mif solver no_interface start_paused end_paused restart set default_script_dir [file dirname [info script]] set root_oommf [file join $default_script_dir .. .. ..] --- 107,113 ---- Oc_Log SetLogHandler [list FileLogger Log] warning Oc_Log SetLogHandler [list FileLogger Log] info ! global mif solver interface start_paused end_paused restart set default_script_dir [file dirname [info script]] set root_oommf [file join $default_script_dir .. .. ..] *************** *** 82,138 **** } } if {[string match {} $load_name]} { ! puts stderr "WARNING: Unable to locate file $name. \ ! Search path: $search_path" } return $load_name } - # Setup no_interface variable, possibly from command line - if {![info exists no_interface]} { - set no_interface 0 ;# Default is to setup networking - if { [lsearch -regexp $argv {-[-]?no[_]?interface}] >=0 } { - set no_interface 1 - } - } - - # Setup start_paused variable - if {![info exists start_paused]} { - set start_paused 0 ;# Default is to not pause - if { [lsearch -regexp $argv {-[-]?start[_]?pause[d]?}] >=0 } { - set start_paused 1 - } - } - - # Setup end_paused variable - if {![info exists end_paused]} { - set end_paused 0 ;# Default is to not pause - if { [lsearch -regexp $argv {-[-]?end[_]?pause[d]?}] >=0 } { - set end_paused 1 - } - } - - # Setup end_exit variable - if {![info exists end_exit]} { - set index [lsearch -regexp $argv {-[-]?end[_]?exit}] - if {$index>=0 && $index+1<[llength $argv]} { - set end_exit [lindex $argv [expr {$index+1}]] - } - } - - # Setup restart variable - if {![info exists restart]} { - set restart 0 ;# Default is to run from a fresh start - set index [lsearch -regexp $argv {-[-]?restart}] - if {$index>=0 && $index+1<[llength $argv]} { - set restart [lindex $argv [expr {$index+1}]] - } - } - proc InteractiveServerInit {} { ! global commands events inputs outputs no_interface protocol ! if { $no_interface } { return } # Support libraries package require Net --- 136,151 ---- } } if {[string match {} $load_name]} { ! Oc_Log Log "Unable to locate file $name. Search path: $search_path" \ ! warning } return $load_name } proc InteractiveServerInit {} { ! global commands events inputs outputs interface protocol ! if { !$interface } { return } # Support libraries package require Net *************** *** 420,426 **** # If current state is EndTask, then all calls are ignored # until a Reset is sent, which sets batch_solver_state to {} # and returns. ! global solver user_args batch_solver_state no_interface if {[string match Reset $newstate]} { set batch_solver_state {} return --- 433,439 ---- # If current state is EndTask, then all calls are ignored # until a Reset is sent, which sets batch_solver_state to {} # and returns. ! global solver user_args batch_solver_state interface if {[string match Reset $newstate]} { set batch_solver_state {} return *************** *** 445,451 **** $solver ChangeSolverState Pause eval SolverTaskCleanup $user_args set batch_solver_state EndTask ! if { !$no_interface } { # Send end-of-run message to each thread supporting # the DataTable protocol set eormsg [list [list "@Filename:" {} 0]] --- 458,464 ---- $solver ChangeSolverState Pause eval SolverTaskCleanup $user_args set batch_solver_state EndTask ! if { $interface } { # Send end-of-run message to each thread supporting # the DataTable protocol set eormsg [list [list "@Filename:" {} 0]] *************** *** 521,526 **** --- 534,540 ---- } # Give other events a chance to clear after 100 set lastchance 1 ; vwait lastchance + return "OK" } proc BatchTaskExit {} { *************** *** 595,626 **** } } ! # Check for command-line mif input, either as a bare filename ! # w/o a leading '-', or as the argument to the '-file' flag. ! if {[set index1 [lsearch -regexp $argv {-[-]?file}]]>=0 || \ ! [set index2 [lsearch -regexp $argv {^[^-].}]]>=0} { ! if {$index1>=0} { ! set miffile [lindex $argv [expr {$index1+1}]] ! } else { ! set miffile [lindex $argv [expr {$index2}]] ! } ! if {![string match {} $miffile]} { ! if {![info exists end_exit]} { ! set end_exit 1 ;# Default for end_exit in this case is TRUE ! } ! BatchTaskRun $miffile ! } } if {$end_paused} { ! SetBatchSolverState Pause vwait forever } # Use end_exit variable to direct cleanup ! if {[info exists end_exit] && $end_exit} { ! $mif Delete ! $solver Delete exit } --- 609,629 ---- } } ! if {![string match {} $miffile]} { ! BatchTaskRun $miffile } if {$end_paused} { ! if {[info exists batch_solver_state]} { ! SetBatchSolverState Pause ! } vwait forever } # Use end_exit variable to direct cleanup ! if {$end_exit} { ! catch {$mif Delete} ! catch {$solver Delete} exit } diff -crN oommf-1.1a2/app/mmsolve/scripts/mag2hfield.tcl oommf/app/mmsolve/scripts/mag2hfield.tcl *** oommf-1.1a2/app/mmsolve/scripts/mag2hfield.tcl Wed Dec 31 19:00:00 1969 --- oommf/app/mmsolve/scripts/mag2hfield.tcl Tue Apr 4 23:20:57 2000 *************** *** 0 **** --- 1,81 ---- + # FILE: mag2hfield.tcl + # + # This file must be interpreted by the mmsolve shell. + + package require Oc 1.1 + package require Mms 1.1.1 + + Oc_Main SetAppName mag2hfield + Oc_Main SetVersion 1.1.1.0 + + Oc_CommandLine Option console {} {} + + Oc_CommandLine Option fieldstep { + {index {regexp {^[0-9]+$} $index} {is a decimal integer}} + } { + global fieldstep_request; scan $index %d fieldstep_request + } {Which applied field step to use (default=0)} + set fieldstep_request 0 ;# Default field step + + Oc_CommandLine Option component { + {request { + foreach _ [split $request ,] { + if {![regexp all|anis|applied|demag|exchange|total $_]} { + return 0 + } + } + return 1 + } "is subset of\n \ + {all,anis,applied,demag,exchange,total}"} + } { + global component_request; set component_request [split $request ,] + if {[lsearch -exact $component_request all] != -1} { + set component_request [list anis applied demag exchange total] + } + } {Which H fields to compute} + set component_request "total" ;# Default field component output + + Oc_CommandLine Option [Oc_CommandLine Switch] { + {mif_file {} {Problem specification file (MIF)}} + {omf_file {} {Magnetization state file}} + } { + upvar #0 mif_file globalmif_file; set globalmif_file $mif_file + upvar #0 omf_file globalomf_file; set globalomf_file $omf_file + } {End of options; next argument is mif_file} + + Oc_CommandLine Parse $argv + + if {[string match {*.mif} $omf_file] || \ + [string match {*.omf} $mif_file]} { + puts stderr "Warning: Are .mif and .omf files in correct order?" + puts stderr " (.mif should be first.)" + } + + mms_mif New mif + $mif Read $mif_file + $mif SetMagInitArgs "avffile $omf_file" + + mms_solver New solver $mif + $solver IncrementFieldStep $fieldstep_request + + regsub {(\.omf|\.ovf)$} $omf_file {} basename + set heff_file ${basename}.ovf + + puts -nonewline " Writing" + foreach component $component_request { + set component [string tolower $component] + set out_file "${basename}-h${component}.ohf" + puts -nonewline " $out_file" + flush stdout + $solver WriteFieldComponentFile $component $out_file \ + "$component field component from $mif_file + $omf_file" + } + puts {} + flush stdout + + catch { $solver Delete } + catch { $mif Delete } + + # Without this, -tk 1 keeps grey box forever. + exit 0 + diff -crN oommf-1.1a2/app/mmsolve/scripts/multitask.tcl oommf/app/mmsolve/scripts/multitask.tcl *** oommf-1.1a2/app/mmsolve/scripts/multitask.tcl Wed Apr 5 00:22:59 2000 --- oommf/app/mmsolve/scripts/multitask.tcl Tue Apr 4 23:20:57 2000 *************** *** 55,61 **** # Task script configuration set RMT_MACHINE foo set RMT_TCLSH tclsh ! set RMT_OOMMF "/path/to/oommf/app/oommf/oommf.tcl" set RMT_WORK_DIR "/path/to/oommf/app/mmsolve/data" set LCL_WORK_DIR "/path/to/oommf/app/mmsolve/data" set BASEMIF taskA --- 55,61 ---- # Task script configuration set RMT_MACHINE foo set RMT_TCLSH tclsh ! set RMT_OOMMF "/path/to/oommf/oommf.tcl" set RMT_WORK_DIR "/path/to/oommf/app/mmsolve/data" set LCL_WORK_DIR "/path/to/oommf/app/mmsolve/data" set BASEMIF taskA *************** *** 64,70 **** # Slave launch commands $TaskInfo ModifyHostList +$RMT_MACHINE $TaskInfo AppendSlave 1 "cd $LCL_WORK_DIR \;\ ! exec %tclsh %oommf batchslave -tk 0 %connect_info batchsolve.tcl" $TaskInfo AppendSlave 1 "exec rsh $RMT_MACHINE \ cd $RMT_WORK_DIR \\\;\ $RMT_TCLSH $RMT_OOMMF batchslave -tk 0 %connect_info batchsolve.tcl" --- 64,70 ---- # Slave launch commands $TaskInfo ModifyHostList +$RMT_MACHINE $TaskInfo AppendSlave 1 "cd $LCL_WORK_DIR \;\ ! Oc_Application Exec batchslave -tk 0 %connect_info batchsolve.tcl" $TaskInfo AppendSlave 1 "exec rsh $RMT_MACHINE \ cd $RMT_WORK_DIR \\\;\ $RMT_TCLSH $RMT_OOMMF batchslave -tk 0 %connect_info batchsolve.tcl" diff -crN oommf-1.1a2/app/mmsolve/solver.tcl oommf/app/mmsolve/solver.tcl *** oommf-1.1a2/app/mmsolve/solver.tcl Wed Apr 5 00:22:58 2000 --- oommf/app/mmsolve/solver.tcl Tue Apr 4 23:20:57 2000 *************** *** 795,800 **** --- 795,837 ---- method GetSolverState {} { return $solver_state } + method WriteFieldComponentFile { component {filename {}} {note " "} } { + # Writes reduced h component field to a ovf file + if {[string match {} $filename]} { + # Use data in mif to construct "real" filename + set filename [format "%s.%s-field%04d-pass%05d.ohf" \ + [$mif GetOutBaseName] $component \ + [$this GetFieldStepCount] [$this GetODEStepCount]] + set filename [Oc_DirectPathname $filename] + # Get arb. temp name + Oc_TempFile New t -stem solveh -extension .ohf + set tempname [$t AbsoluteName] + $t Delete + } else { + set tempname [Oc_DirectPathname $filename] + set filename {} + } + + # If $note is a single blank (default), then fill in Happ and + # iteration information. + if {[string match " " $note]} { + set note "Field Index: [$this GetFieldStepCount]" + append note "\nApplied field (T): [$this GetNomAppliedField]" + append note "\nIteration: [$this GetODEStepCount]" + append note "\nTime (s): $simulation_time" + append note "\n|m x h|: [$grid GetMaxMxH]" + set comment [$mif GetUserComment] + if {![string match {} $comment]} { + append note "\nUser Comment: $comment" + } + } + + # Write file + foreach {type precision} [$mif GetTotalFieldOutputFormat] {break} + $grid WriteFieldComponent $component $type $precision \ + $tempname $filename $note + return [list $tempname $filename] + } method WriteFieldFile { {filename {}} {note " "} } { # Writes reduced h field to a ovf file if {[string match {} $filename]} { diff -crN oommf-1.1a2/app/mmsolve/vector.cc oommf/app/mmsolve/vector.cc *** oommf-1.1a2/app/mmsolve/vector.cc Wed Apr 5 00:22:58 2000 --- oommf/app/mmsolve/vector.cc Tue Apr 4 23:20:57 2000 *************** *** 70,83 **** // Allocate one big chunk of memory for the doubles double *dptr; ! if(!(dptr=new double[dim1*dim2*VECDIM])) PlainError(1,"Error in ThreeVector::Alloc2DArray: %s",ErrNoMem); // Allocate one big chunk of memory for the ThreeVectors ThreeVector *vptr; ! if(!(vptr=new ThreeVector[dim1*dim2])) PlainError(1,"Error in ThreeVector::Alloc2DArray: %s",ErrNoMem); // Allocate ThreeVector pointers ! if(!(v=new ThreeVector*[dim1])) PlainError(1,"Error in ThreeVector::Alloc2DArray: %s",ErrNoMem); // Initialize ThreeVector pointers and ThreeVectors --- 70,83 ---- // Allocate one big chunk of memory for the doubles double *dptr; ! if((dptr=new double[dim1*dim2*VECDIM])==0) PlainError(1,"Error in ThreeVector::Alloc2DArray: %s",ErrNoMem); // Allocate one big chunk of memory for the ThreeVectors ThreeVector *vptr; ! if((vptr=new ThreeVector[dim1*dim2])==0) PlainError(1,"Error in ThreeVector::Alloc2DArray: %s",ErrNoMem); // Allocate ThreeVector pointers ! if((v=new ThreeVector*[dim1])==0) PlainError(1,"Error in ThreeVector::Alloc2DArray: %s",ErrNoMem); // Initialize ThreeVector pointers and ThreeVectors diff -crN oommf-1.1a2/app/mmsolve2d/appindex.tcl oommf/app/mmsolve2d/appindex.tcl *** oommf-1.1a2/app/mmsolve2d/appindex.tcl Wed Apr 5 00:23:03 2000 --- oommf/app/mmsolve2d/appindex.tcl Tue Apr 4 23:20:57 2000 *************** *** 1,8 **** Oc_Application Define { -name mmSolve2D ! -version 1.1.0.2 -machine mmsolve -file mmsolve2d.tcl } --- 1,9 ---- Oc_Application Define { -name mmSolve2D ! -version 1.1.1.0 -machine mmsolve -file mmsolve2d.tcl + -options {-tk 0} } diff -crN oommf-1.1a2/app/mmsolve2d/mmsolve2d.tcl oommf/app/mmsolve2d/mmsolve2d.tcl *** oommf-1.1a2/app/mmsolve2d/mmsolve2d.tcl Wed Apr 5 00:23:03 2000 --- oommf/app/mmsolve2d/mmsolve2d.tcl Tue Apr 4 23:20:57 2000 *************** *** 2,59 **** # # This file must be interpreted by the mmsolve shell. - Oc_IgnoreTermLoss ;# Try to keep going, even if controlling terminal - ## goes down. - # Support libraries ! package require Mms 1.1 package require Net Oc_Main SetAppName mmSolve2D ! Oc_Main SetVersion 1.1.0.2 ! regexp \\\044Date:(.*)\\\044 {$Date: 1999/10/28 19:08:14 $} _ date Oc_Main SetDate [string trim $date] Oc_Main SetAuthor [Oc_Person Lookup dgp] Oc_Main SetHelpURL [Oc_Url FromFilename [file join [file dirname \ [file dirname [file dirname [Oc_DirectPathname [info \ script]]]]] doc userguide 2D_Micromagnetic_Solver_mmS.html]] ! Oc_AppendUsageInfo "mmSolve2D [Oc_Main GetVersion]" \ ! "OOMMF Two-dimensional Micromagnetic Solver" { ! {-h* {} {Display this help message and quit}} ! {-restart int \ ! {1 => use .log file to restart simulation}} ! {-version {} {Display version information and quit}} } ! set restart_option 0 ! while {[string match -* [lindex $argv 0]]} { ! regexp -- -(.*) [lindex $argv 0] _ option ! set argv [lrange $argv 1 end] ! switch -exact -- $option { ! restart { ! set param [lindex $argv 0] ! if {[catch {expr {$param && $param}} param]} { ! Oc_Log Log "\nERROR: Bad -restart parameter\n" info ! Oc_Log Log "[Oc_GetUsageInfo]" info ! exit ! } ! set restart_option $param ! set argv [lrange $argv 1 end] ! } ! version { ! Oc_Log Log "[Oc_Main GetAppName] [Oc_Main GetVersion]" info ! exit ! } ! default { ! if {[string match h* $option]} { ! Oc_Log Log [Oc_GetUsageInfo] info ! exit ! } ! Oc_Log Log "Unrecognized option: -$option\n[Oc_GetUsageInfo]" panic ! exit 1 ! } ! } ! } if {[Oc_Main HasTk]} { wm withdraw . ;# "." is just an empty window. --- 2,32 ---- # # This file must be interpreted by the mmsolve shell. # Support libraries ! package require Oc 1.1 ! package require Mms 1.1.0.1 package require Net + Oc_IgnoreTermLoss ;# Try to keep going, even if controlling terminal + ## goes down. + Oc_Main SetAppName mmSolve2D ! Oc_Main SetVersion 1.1.1.0 ! regexp \\\044Date:(.*)\\\044 {$Date: 2000/03/09 23:18:48 $} _ date Oc_Main SetDate [string trim $date] Oc_Main SetAuthor [Oc_Person Lookup dgp] Oc_Main SetHelpURL [Oc_Url FromFilename [file join [file dirname \ [file dirname [file dirname [Oc_DirectPathname [info \ script]]]]] doc userguide 2D_Micromagnetic_Solver_mmS.html]] ! Oc_CommandLine Option restart { ! {flag {expr {![catch {expr {$flag && $flag}}]}} {= 0 or 1}} ! } { ! global restart_option; set restart_option $flag ! } {1 => use .log file to restart simulation} set restart_option 0 ! ! Oc_CommandLine Parse $argv if {[Oc_Main HasTk]} { wm withdraw . ;# "." is just an empty window. *************** *** 132,138 **** array set outputs {} Oc_EventHandler Bindtags LoadProbDescFile LoadProbDescFile ! proc LoadProbDescFile { mif_file } { global commands events inputs outputs # catch { unset inputs } ;### catch { unset outputs } ;# "outputs" is _not_ always set! --- 105,127 ---- array set outputs {} Oc_EventHandler Bindtags LoadProbDescFile LoadProbDescFile ! proc LoadProbDescFile { mif_file threadID} { ! ! # temporarily reset logging to the default log file (not a ! # problem-specific one). When the solver is constructed/reset ! # below, logging will get redirected to the file for the ! # problem being solved. ! FileLogger SetFile \ ! [file join [Oc_Main GetOOMMFRootDir] mmsolve2d.errors] ! ! mms_mif New mif ! if {[catch {$mif Read $mif_file}]} { ! Oc_EventHandler Generate LoadProbDescFile BadMifFile -thread $threadID ! $mif Delete ! file delete $mif_file ! return ! } ! global commands events inputs outputs # catch { unset inputs } ;### catch { unset outputs } ;# "outputs" is _not_ always set! *************** *** 224,231 **** } global solver protocol restart_option - mms_mif New mif - $mif Read $mif_file if {![info exists solver]} { # First pass---new solver mms_solver New solver $mif $restart_option --- 213,218 ---- *************** *** 258,263 **** --- 245,254 ---- Oc_EventHandler New _ RelayInput ProblemDescription \ [list $connection Tell Status "Loading from %threadLabel..."] \ -groups [list $connection] + Oc_EventHandler New _ LoadProbDescFile BadMifFile \ + [list $connection Tell Status \ + "Load failed: Invalid Problem Description (MIF) from %thread"] \ + -groups [list $connection] return [list start [list 0 1]] } $protocol AddMessage start Commands {} { *************** *** 450,456 **** set reply [$thread Get] if {![lindex $reply 0]} { set ininfo $inputs($data) ! eval [lindex $ininfo 2] [lrange $reply 1 end] } } --- 441,449 ---- set reply [$thread Get] if {![lindex $reply 0]} { set ininfo $inputs($data) ! regexp {[0-9]+} [$thread Cget -pid] pid ! eval [lindex $ininfo 2] [lrange $reply 1 end] \ ! [list [$thread Cget -alias]<$pid>] } } diff -crN oommf-1.1a2/app/omfsh/makerules.tcl oommf/app/omfsh/makerules.tcl *** oommf-1.1a2/app/omfsh/makerules.tcl Wed Apr 5 00:23:03 2000 --- oommf/app/omfsh/makerules.tcl Tue Apr 4 23:20:57 2000 *************** *** 36,48 **** puts $f [format { Oc_Application Define { -name omfsh ! -version 1.1.0.2 -machine %s -file "%s" } Oc_Application Define { -name filtersh ! -version 1.1.0.2 -machine %s -file "%s" } --- 36,48 ---- puts $f [format { Oc_Application Define { -name omfsh ! -version 1.1.1.0 -machine %s -file "%s" } Oc_Application Define { -name filtersh ! -version 1.1.1.0 -machine %s -file "%s" } *************** *** 58,65 **** -targets [Platform Executables omfsh] -dependencies [concat [Platform Objects omfsh] \ [Platform StaticLibraries oc] \ [Platform StaticLibraries if]] ! -script {Platform Link -obj omfsh -lib {if oc tk} \ -sub WINDOWS -out omfsh } } --- 58,66 ---- -targets [Platform Executables omfsh] -dependencies [concat [Platform Objects omfsh] \ [Platform StaticLibraries oc] \ + [Platform StaticLibraries nb] \ [Platform StaticLibraries if]] ! -script {Platform Link -obj omfsh -lib {if nb oc tk} \ -sub WINDOWS -out omfsh } } *************** *** 68,75 **** -targets [Platform Executables filtersh] -dependencies [concat [Platform Objects omfsh] \ [Platform StaticLibraries oc] \ [Platform StaticLibraries if]] ! -script {Platform Link -obj omfsh -lib {if oc tk} \ -sub CONSOLE -out filtersh } } --- 69,77 ---- -targets [Platform Executables filtersh] -dependencies [concat [Platform Objects omfsh] \ [Platform StaticLibraries oc] \ + [Platform StaticLibraries nb] \ [Platform StaticLibraries if]] ! -script {Platform Link -obj omfsh -lib {if nb oc tk} \ -sub CONSOLE -out filtersh } } *************** *** 80,86 **** [[CSourceFile New _ omfsh.cc] Dependencies]] -script {Platform Compile C++ -opt 1 \ -inc [[CSourceFile New _ omfsh.cc] DepPath] \ ! -src omfsh.cc -out omfsh } } --- 82,88 ---- [[CSourceFile New _ omfsh.cc] Dependencies]] -script {Platform Compile C++ -opt 1 \ -inc [[CSourceFile New _ omfsh.cc] DepPath] \ ! -out omfsh -src omfsh.cc } } diff -crN oommf-1.1a2/app/omfsh/omfsh.cc oommf/app/omfsh/omfsh.cc *** oommf-1.1a2/app/omfsh/omfsh.cc Wed Apr 5 00:23:03 2000 --- oommf/app/omfsh/omfsh.cc Tue Apr 4 23:20:57 2000 *************** *** 4,10 **** * * NOTICE: Plase see the file ../../LICENSE * ! * Last modified on: $Date: 1999/05/19 18:36:19 $ * Last modified by: $Author: dgp $ */ --- 4,10 ---- * * NOTICE: Plase see the file ../../LICENSE * ! * Last modified on: $Date: 2000/02/28 01:53:07 $ * Last modified by: $Author: dgp $ */ *************** *** 13,18 **** --- 13,19 ---- /* Header files for the OOMMF extensions */ #include "oc.h" + #include "nb.h" #include "if.h" /* End includes */ *************** *** 36,41 **** --- 37,48 ---- return TCL_ERROR; } Tcl_StaticPackage(interp, ab("If"), If_Init, NULL); + + if (Nb_Init(interp) != TCL_OK) { + return TCL_ERROR; + } + Tcl_StaticPackage(interp, ab("Nb"), Nb_Init, NULL); + return TCL_OK; } diff -crN oommf-1.1a2/app/pimake/appindex.tcl oommf/app/pimake/appindex.tcl *** oommf-1.1a2/app/pimake/appindex.tcl Wed Apr 5 00:23:03 2000 --- oommf/app/pimake/appindex.tcl Tue Apr 4 23:20:58 2000 *************** *** 1,8 **** Oc_Application Define { -name pimake ! -version 1.1.0.2 -machine tclsh -file pimake.tcl } --- 1,9 ---- Oc_Application Define { -name pimake ! -version 1.1.1.0 -machine tclsh -file pimake.tcl + -mode fg } diff -crN oommf-1.1a2/app/pimake/makerule.tcl oommf/app/pimake/makerule.tcl *** oommf-1.1a2/app/pimake/makerule.tcl Wed Apr 5 00:23:03 2000 --- oommf/app/pimake/makerule.tcl Tue Apr 4 23:20:58 2000 *************** *** 247,253 **** # port to a platform on which it is some pathname component other than # '..' which means 'parent of this directory'. const public variable targets { ! if {[catch {eval list $targets} msg]} { error "Invalid targets list: $targets Not a valid Tcl list: $msg" } --- 247,253 ---- # port to a platform on which it is some pathname component other than # '..' which means 'parent of this directory'. const public variable targets { ! if {[catch {set targets [lrange $targets 0 end]} msg]} { error "Invalid targets list: $targets Not a valid Tcl list: $msg" } diff -crN oommf-1.1a2/app/pimake/makerules.def oommf/app/pimake/makerules.def *** oommf-1.1a2/app/pimake/makerules.def Wed Apr 5 00:23:03 2000 --- oommf/app/pimake/makerules.def Tue Apr 4 23:20:58 2000 *************** *** 130,132 **** --- 130,146 ---- # -ruleType default #} # + + # A 'help' target which lists the default set of targets + MakeRule Define { + -targets help + -script { + puts "Default targets:\n\thelp\t\tprint this message\n\tall\t\tbuild\ + all executables\n\tconfigure\tplatform-specific preparations + objclean\tremove intermediate object files\n\tclean\t\tremove\ + executables and libraries\n\tdistclean\tremove all files not in\ + source distribution\n\tmaintainer-clean\tremove all generated files + upgrade\t\tremove all files not in latest release" + } + -ruleType default + } diff -crN oommf-1.1a2/app/pimake/pimake.tcl oommf/app/pimake/pimake.tcl *** oommf-1.1a2/app/pimake/pimake.tcl Wed Apr 5 00:23:04 2000 --- oommf/app/pimake/pimake.tcl Tue Apr 4 23:20:58 2000 *************** *** 134,155 **** ######################################################################## ######################################################################## ! # Process command line arguments ! while {[string match -* [set word [lindex $argv 0]]]} { ! set argv [lrange $argv 1 end] ! if {[string match - [string range $word 1 end]]} { ! break ! } ! set options($word) 1 } ! if {[llength $argv] > 1} { ! return -code error "Usage: pimake.tcl ?options? ?target?\n\nRecognized\ ! options:\n\t-i\tIgnore errors\n\t-k\tContinue after\ ! errors; don't make targets dependent on error\n\t-d\tVerbose\ ! dependency information\n--\tEnd of options; next argument is\ ! the target" ! } # Define the MakeRule class and other supports source [file join [file dirname [info script]] makerule.tcl] --- 134,163 ---- ######################################################################## ######################################################################## ! if {[Oc_Main HasTk]} { ! wm withdraw . } + Oc_Main SetAppName pimake + Oc_Main SetVersion 1.1.1.0 ! # Disable the -console option; we don't enter an event loop ! Oc_CommandLine Option console {} {} ! ! Oc_CommandLine Option i {} { ! global options; set options(-i) 1 ! } "Ignore errors" ! Oc_CommandLine Option k {} { ! global options; set options(-k) 1 ! } "Continue after errors" ! Oc_CommandLine Option d {} { ! global options; set options(-d) 1 ! } "Verbose dependency information" ! Oc_CommandLine Option [Oc_CommandLine Switch] { ! {{target optional} {} "Target to build (default=\"all\";\ ! \"help\" prints choices)"}} { ! upvar #0 target globalTarget; set globalTarget $target ! } "End of options; next argument is target" ! Oc_CommandLine Parse $argv # Define the MakeRule class and other supports source [file join [file dirname [info script]] makerule.tcl] *************** *** 168,184 **** # Write command lines to stdout before executing them Oc_Exec SetOutChannel stdout - set target [lindex $argv 0] if {[string length $target]} { set target [Oc_DirectPathname $target] } if {[catch {MakeRule Build $target} errmsg]} { # set index [string last "\n ('MakeRule' proc 'Build'" $errorInfo] # set ei [string trimright [string range $errorInfo 0 $index]] return -code error "$errmsg\n[MakeRule NumErrors] Error(s) detected" } elseif {[MakeRule NumErrors]} { Oc_Log Log "[MakeRule NumErrors] Error(s) detected" info } else { Oc_Log Log "Target '$target' up to date.\nBuilt [clock format [expr \ {$errmsg - [MakeRule Offset]}]]\nCurrent time: [clock format \ [clock seconds]]" info --- 176,194 ---- # Write command lines to stdout before executing them Oc_Exec SetOutChannel stdout if {[string length $target]} { set target [Oc_DirectPathname $target] } if {[catch {MakeRule Build $target} errmsg]} { # set index [string last "\n ('MakeRule' proc 'Build'" $errorInfo] # set ei [string trimright [string range $errorInfo 0 $index]] + flush stdout return -code error "$errmsg\n[MakeRule NumErrors] Error(s) detected" } elseif {[MakeRule NumErrors]} { + flush stdout Oc_Log Log "[MakeRule NumErrors] Error(s) detected" info } else { + flush stdout Oc_Log Log "Target '$target' up to date.\nBuilt [clock format [expr \ {$errmsg - [MakeRule Offset]}]]\nCurrent time: [clock format \ [clock seconds]]" info *************** *** 209,214 **** --- 219,225 ---- # Unexpected error; Report whole stack trace plus errorCode set rei $errorInfo set rec $errorCode + set logtype error } elseif {$code != 2} { # Weirdness -- just pass it on return -code $code $msg *************** *** 216,221 **** --- 227,233 ---- # Expected error; just report the message set rei $msg set rec $errorCode + set logtype panic } # ######################################################################## *************** *** 230,236 **** } set errorInfo $rei set errorCode $rec ! if {![catch {Oc_Log Log $msg panic $src}]} { # Oc_Log reported the error; now die exit 1 } --- 242,248 ---- } set errorInfo $rei set errorCode $rec ! if {![catch {Oc_Log Log $msg $logtype $src}]} { # Oc_Log reported the error; now die exit 1 } diff -crN oommf-1.1a2/app/pimake/platform.tcl oommf/app/pimake/platform.tcl *** oommf-1.1a2/app/pimake/platform.tcl Wed Apr 5 00:23:04 2000 --- oommf/app/pimake/platform.tcl Tue Apr 4 23:20:58 2000 *************** *** 226,232 **** foreach elt $val { set linkcmd [concat $linkcmd [eval $optScript [list $elt]]] } - } if {[llength $args]} { return -code error "Expected option, but saw '[lindex $args 0]'" --- 226,231 ---- diff -crN oommf-1.1a2/app/pimake/procs.tcl oommf/app/pimake/procs.tcl *** oommf-1.1a2/app/pimake/procs.tcl Wed Apr 5 00:23:04 2000 --- oommf/app/pimake/procs.tcl Tue Apr 4 23:20:58 2000 *************** *** 100,102 **** --- 100,162 ---- error $emsg $ei $ec } + # Routine to create Oxs_Exs extension initialization (*.cc) file + # The import outfile is the name of the output file; args is a + # list of files to scan for OXS_EXT_CHILD_INTERFACE_SUPPORT macros. + proc MakeOxsExtInit { outfile args } { + puts "Creating [file join [pwd] $outfile] ..." + set cnamelist {} + # Scan files + foreach file $args { + if {[catch {open $file "r"} chan]} { + continue ;# Bad filename; skip + } + # Read file up to '/* End includes */' or eof. + set buf {} + while {[gets $chan line]>=0} { + if {[regexp -nocase \ + "/\\\*\[ \t\]*end\[ \t\]+includes?\[ \t\]*\\\*/" \ + $line]} { + # Line matched '/* End includes */' + break + } + append buf $line + append buf "\n" + } + catch {close $chan} + + # Remove backslash+newline combinations + regsub -all -- "\\\\\n" $buf {} buf + + # Search for OECIS macro + set ws "\[ \t\n\]*" + set bs "\[^ \t\b\]*" + set key "OXS_EXT_CHILD_INTERFACE_SUPPORT" + if {[regexp \ + "$key$ws\\($ws\($bs\)$ws,$ws$bs$ws\\)" \ + $buf dummy cname]} { + lappend cnamelist $cname + } + } + + # Write out extension initialization file + if {![catch {open $outfile "w"} outchan]} { + set declfmt {void OxsExtGet%s} + append declfmt {RegistrationInfo(Oxs_ExtRegistrationBlock&);} + set callfmt { OxsExtGet%sRegistrationInfo(regblk);} + puts $outchan {#include "ext.h"} + puts $outchan "\n/* End includes */\n" + foreach cname $cnamelist { + puts $outchan [format $declfmt $cname] + } + puts $outchan "\nvoid OxsInitializeExt()\n{" + puts $outchan { Oxs_ExtRegistrationBlock regblk;} + foreach cname $cnamelist { + puts $outchan [format $callfmt $cname] + puts $outchan { Oxs_Ext::Register(regblk);} + } + puts $outchan "}" + catch {close $outchan} + } + } + diff -crN oommf-1.1a2/config/cache/cygtel.tcl oommf/config/cache/cygtel.tcl *** oommf-1.1a2/config/cache/cygtel.tcl Wed Apr 5 00:23:04 2000 --- oommf/config/cache/cygtel.tcl Tue Apr 4 23:20:58 2000 *************** *** 115,120 **** --- 115,124 ---- $config SetValue \ program_compiler_c++_property_optimization_breaks_varargs 0 + # Missing function prototypes + $config SetValue program_compiler_c++_prototype_supply_nice \ + {extern "C" int nice(int);} + # Librarian: ar $config SetValue program_libmaker {ar crs} *************** *** 131,136 **** --- 135,142 ---- $config SetValue program_linker_option_out {format "-o \"%s\""} $config SetValue program_linker_option_lib {format \"%s\"} $config SetValue program_linker_uses_-L-l {1} + proc fubar { subsystem } { return "-m[string tolower $subsystem]" } + $config SetValue program_linker_option_sub {fubar} # Name formats on generated files $config SetValue script_filename_object {format %s.o} *************** *** 159,166 **** TK_MAJOR_VERSION][$config GetValue TK_MINOR_VERSION]] # Additional libraries to use when linking against TCL, Tk ! $config SetValue TCL_LIBS {-luser32} ;# Needed by oc.cc for MessageBeep() ! $config SetValue TK_LIBS {-luser32} # Directory holding init.tcl. Use this if environment variable # TCL_LIBRARY is not set. --- 165,181 ---- TK_MAJOR_VERSION][$config GetValue TK_MINOR_VERSION]] # Additional libraries to use when linking against TCL, Tk ! # -luser32 is needed if SUBSYSTEM==WINDOWS in ext/messages.cc ! # to provide MessageBeep (and maybe MessageBox?). ! #$config SetValue TCL_LIBS {-luser32} ! #$config SetValue TK_LIBS {-luser32} ! ! # Work around for bad lib path in patched cygwin-b20.1 (2000-03-20). On the ! # stock b20.1 release this should have no effect. ! set goodpath "/cygnus/cygwin-b20/H-i586-cygwin32/lib/gcc-lib/i586-cygwin32/2.95.2" ! $config SetValue TK_LIB_SPEC [concat -L$goodpath [$config GetValue TK_LIB_SPEC]] ! $config SetValue TCL_LIB_SPEC [concat -L$goodpath [$config GetValue TCL_LIB_SPEC]] ! unset goodpath # Directory holding init.tcl. Use this if environment variable # TCL_LIBRARY is not set. diff -crN oommf-1.1a2/config/cache/linalp-mpi.tcl oommf/config/cache/linalp-mpi.tcl *** oommf-1.1a2/config/cache/linalp-mpi.tcl Wed Apr 5 00:23:04 2000 --- oommf/config/cache/linalp-mpi.tcl Tue Apr 4 23:20:59 2000 *************** *** 61,70 **** # $config SetValue program_compiler_c++ {g++ -c} # # MPI: MPICH C++ compiler and support ! #$config SetValue program_compiler_c++ {mpiCC -c -DUSE_MPI} ! #$config SetValue platform_mpirun_options {-np $env(OOMMF_MPI_PROC_COUNT)} ! #$config SetValue platform_use_mpi 1 ! #$config SetValue platform_mpirun_command {mpirun} # # MPI: LAM C++ compiler and support # Note: You will probably need to use 'hcp' instead of 'hcc' if you --- 61,70 ---- # $config SetValue program_compiler_c++ {g++ -c} # # MPI: MPICH C++ compiler and support ! $config SetValue program_compiler_c++ {mpiCC -c -DUSE_MPI} ! $config SetValue platform_mpirun_options {-np $env(OOMMF_MPI_PROC_COUNT)} ! $config SetValue platform_use_mpi 1 ! $config SetValue platform_mpirun_command {mpirun} # # MPI: LAM C++ compiler and support # Note: You will probably need to use 'hcp' instead of 'hcc' if you *************** *** 72,83 **** # sets the compiler to 'CC' if the environment variable LAMHCP is # not set, so if 'CC' is not the right compiler you will have to # either set LAMHCP or edit the hcp script. ! $config SetValue program_compiler_c++ {hcc -c -DUSE_MPI} ! $config SetValue platform_mpirun_options {} ! $config SetValue platform_use_mpi 1 ! $config SetValue platform_mpirun_command {dvl/lamrun} ! $config SetValue TCL_LIBS [concat -lmpi [$config GetValue TCL_LIBS]] ! $config SetValue TK_LIBS [concat -lmpi [$config GetValue TK_LIBS]] # Set the feature 'path_directory_temporary' to the name of an existing # directory on your computer in which OOMMF software should write --- 72,83 ---- # sets the compiler to 'CC' if the environment variable LAMHCP is # not set, so if 'CC' is not the right compiler you will have to # either set LAMHCP or edit the hcp script. ! #$config SetValue program_compiler_c++ {hcc -c -DUSE_MPI} ! #$config SetValue platform_mpirun_options {} ! #$config SetValue platform_use_mpi 1 ! #$config SetValue platform_mpirun_command {dvl/lamrun} ! #$config SetValue TCL_LIBS [concat -lmpi [$config GetValue TCL_LIBS]] ! #$config SetValue TK_LIBS [concat -lmpi [$config GetValue TK_LIBS]] # Set the feature 'path_directory_temporary' to the name of an existing # directory on your computer in which OOMMF software should write *************** *** 168,174 **** # # Hack edits: Linux/AXP specific fast math library, either ffm or cpml # Comment this section out if you don't have either. ! set fast_math_lib cpml $config SetValue TCL_LIBS [concat -l$fast_math_lib [$config GetValue TCL_LIBS]] $config SetValue TK_LIBS [concat -l$fast_math_lib [$config GetValue TK_LIBS]] --- 168,174 ---- # # Hack edits: Linux/AXP specific fast math library, either ffm or cpml # Comment this section out if you don't have either. ! set fast_math_lib ffm $config SetValue TCL_LIBS [concat -l$fast_math_lib [$config GetValue TCL_LIBS]] $config SetValue TK_LIBS [concat -l$fast_math_lib [$config GetValue TK_LIBS]] diff -crN oommf-1.1a2/config/cache/lintel.tcl oommf/config/cache/lintel.tcl *** oommf-1.1a2/config/cache/lintel.tcl Wed Apr 5 00:23:04 2000 --- oommf/config/cache/lintel.tcl Tue Apr 4 23:20:59 2000 *************** *** 94,104 **** # place of "bitwise const"; cf. p76-78 of Meyer's book, "Effective C++." # # NOTE: -Wno-uninitialized is required after -Wall by gcc 2.8+ because ! # of an apparent bug $config SetValue program_compiler_c++_option_warn {format "-Wall \ -W -Wpointer-arith -Wbad-function-cast -Wwrite-strings \ -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations \ ! -Wnested-externs -Winline -Woverloaded-virtual -Wsynth -Werror"} $config SetValue program_compiler_c++_option_debug {format "-g"} # Widest natively support floating point type --- 94,104 ---- # place of "bitwise const"; cf. p76-78 of Meyer's book, "Effective C++." # # NOTE: -Wno-uninitialized is required after -Wall by gcc 2.8+ because ! # of an apparent bug. -Winline is out because of failures in the STL. $config SetValue program_compiler_c++_option_warn {format "-Wall \ -W -Wpointer-arith -Wbad-function-cast -Wwrite-strings \ -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations \ ! -Wnested-externs -Woverloaded-virtual -Wsynth -Werror"} $config SetValue program_compiler_c++_option_debug {format "-g"} # Widest natively support floating point type diff -crN oommf-1.1a2/config/cache/sgi.tcl oommf/config/cache/sgi.tcl *** oommf-1.1a2/config/cache/sgi.tcl Wed Apr 5 00:23:04 2000 --- oommf/config/cache/sgi.tcl Tue Apr 4 23:20:59 2000 *************** *** 58,64 **** # Specify -32, -o32, -n32 or -64 as necessary to match your Tcl/Tk # libraries. Likely matches are -n32 for Tcl/Tk 8.0.3 and later, # and -o32 for older Tcl/Tk. ! $config SetValue program_compiler_c++ {CC -n32 -c} # # The GNU C++ compiler 'g++' # --- 58,64 ---- # Specify -32, -o32, -n32 or -64 as necessary to match your Tcl/Tk # libraries. Likely matches are -n32 for Tcl/Tk 8.0.3 and later, # and -o32 for older Tcl/Tk. ! $config SetValue program_compiler_c++ {CC -n32 -LANG:std -c} # # The GNU C++ compiler 'g++' # *************** *** 66,72 **** # It appears that gcc will not build -o32 code. So must link # against -n32 Tcl/Tk libraries, which is the default for # Tcl/Tk 8.0.3 and later. ! set gnucc "gcc" ;# OOMMF 1.1 can use either gcc or g++; 1.2+ needs g++ #$config SetValue program_compiler_c++ "$gnucc -c" ######################################################################## --- 66,72 ---- # It appears that gcc will not build -o32 code. So must link # against -n32 Tcl/Tk libraries, which is the default for # Tcl/Tk 8.0.3 and later. ! set gnucc "g++" ;# OOMMF 1.1 can use either gcc or g++; 1.2+ needs g++ #$config SetValue program_compiler_c++ "$gnucc -c" ######################################################################## *************** *** 85,94 **** --- 85,98 ---- # Compiler option processing... set ccbasename [file tail [lindex [$config GetValue program_compiler_c++] 0]] set id32 "" + set langopt "" foreach _ [lrange [$config GetValue program_compiler_c++] 1 end] { if {[string match -*32 $_]} { set id32 $_ } + if {[string match -LANG* $_]} { + set langopt $_ + } } unset _ if {![info exists gnucc]} { *************** *** 144,149 **** --- 148,154 ---- [$config GetValue program_compiler_c++] 0]]]} { set linkcmdline [lindex [$config GetValue program_compiler_c++] 0] if {![string match {} $id32]} {lappend linkcmdline $id32} + if {![string match {} $langopt]} {lappend linkcmdline $langopt} # Enable the next line if you specified -Ofast above lappend linkcmdline "-IPA" $config SetValue program_linker $linkcmdline *************** *** 174,184 **** # of many object files. if {[string match CC $ccbasename]} { # Use CC to get pre-linker run. ! if {![string match {} $id32]} { ! $config SetValue program_libmaker [list CC $id32 -ar -o] ! } else { ! $config SetValue program_libmaker [list CC -ar -o] ! } # Option processing for ar $config SetValue program_libmaker_option_obj {format \"%s\"} $config SetValue program_libmaker_option_out {format \"%s\"} --- 179,190 ---- # of many object files. if {[string match CC $ccbasename]} { # Use CC to get pre-linker run. ! set libmaker $ccbasename ! if {![string match {} $id32]} {lappend libmaker $id32} ! if {![string match {} $langopt]} {lappend libmaker $langopt} ! lappend libmaker -ar -o ! $config SetValue program_libmaker $libmaker ! unset libmaker # Option processing for ar $config SetValue program_libmaker_option_obj {format \"%s\"} $config SetValue program_libmaker_option_out {format \"%s\"} *************** *** 188,194 **** $config SetValue program_libmaker_option_obj {format \"%s\"} $config SetValue program_libmaker_option_out {format \"%s\"} } ! unset ccbasename id32 gnucc # The absolute, native filename of the null device --- 194,200 ---- $config SetValue program_libmaker_option_obj {format \"%s\"} $config SetValue program_libmaker_option_out {format \"%s\"} } ! unset ccbasename id32 langopt gnucc # The absolute, native filename of the null device diff -crN oommf-1.1a2/config/cache/solaris.tcl oommf/config/cache/solaris.tcl *** oommf-1.1a2/config/cache/solaris.tcl Wed Apr 5 00:23:04 2000 --- oommf/config/cache/solaris.tcl Tue Apr 4 23:20:59 2000 *************** *** 61,66 **** --- 61,75 ---- # # # $config SetValue program_compiler_c++ {g++ -c} + # + # NOTE: If the g++ compiler reports lots of errors like: + # + # ANSI C++ forbids declaration `XSetTransientForHint' with no type + # + # then it is likely that your system has X header files which are not + # ANSI compliant (perhaps part of OpenWindows). You may be able to work + # around these errors with the following definition of the compiler: + # $config SetValue program_compiler_c++ {g++ -fpermissive -c} ######################################################################## # OPTIONAL CONFIGURATION diff -crN oommf-1.1a2/config/cache/sunos.tcl oommf/config/cache/sunos.tcl *** oommf-1.1a2/config/cache/sunos.tcl Wed Apr 5 00:23:04 2000 --- oommf/config/cache/sunos.tcl Tue Apr 4 23:20:59 2000 *************** *** 90,95 **** --- 90,104 ---- # Widest natively support floating point type $config SetValue program_compiler_c++_typedef_realwide "double" + # Non-ansi sprintf that returns a pointer instead of string length + $config SetValue program_compiler_c++_property_nonansi_sprintf 1 + + # Missing function prototypes + $config SetValue program_compiler_c++_prototype_supply_nice \ + {extern "C" int nice(int);} + $config SetValue program_compiler_c++_prototype_supply_gettimeofday \ + {extern "C" int gettimeofday(struct timeval *tv, struct timezone *tz);} + } elseif {[string match $gnucc $ccbasename]} { # ...for GNU g++ C++ compiler $config SetValue program_compiler_c++_option_opt {format "\"-O%s\""} *************** *** 114,119 **** --- 123,135 ---- # Widest natively support floating point type $config SetValue program_compiler_c++_typedef_realwide "double" + + # Missing function prototypes + $config SetValue program_compiler_c++_prototype_supply_nice \ + {extern "C" int nice(int);} + $config SetValue program_compiler_c++_prototype_supply_gettimeofday \ + {extern "C" int gettimeofday(struct timeval *tv, struct timezone *tz);} + } # The program to run on this platform to link together object files and diff -crN oommf-1.1a2/config/cache/winalp.tcl oommf/config/cache/winalp.tcl *** oommf-1.1a2/config/cache/winalp.tcl Wed Apr 5 00:23:04 2000 --- oommf/config/cache/winalp.tcl Tue Apr 4 23:20:59 2000 *************** *** 111,118 **** $config SetValue TCL_LIB_SPEC [$config GetValue TCL_VC_LIB_SPEC] $config SetValue TK_LIB_SPEC [$config GetValue TK_VC_LIB_SPEC] ! $config SetValue TK_LIBS {} ! $config SetValue TCL_LIBS {} $config SetValue program_linker_uses_-L-l {0} $config SetValue program_linker_uses_-I-L-l {0} } --- 111,118 ---- $config SetValue TCL_LIB_SPEC [$config GetValue TCL_VC_LIB_SPEC] $config SetValue TK_LIB_SPEC [$config GetValue TK_VC_LIB_SPEC] ! $config SetValue TK_LIBS {user32.lib} ! $config SetValue TCL_LIBS {user32.lib} $config SetValue program_linker_uses_-L-l {0} $config SetValue program_linker_uses_-I-L-l {0} } diff -crN oommf-1.1a2/config/cache/wintel.tcl oommf/config/cache/wintel.tcl *** oommf-1.1a2/config/cache/wintel.tcl Wed Apr 5 00:23:04 2000 --- oommf/config/cache/wintel.tcl Tue Apr 4 23:20:59 2000 *************** *** 1,212 **** ! # FILE: wintel.tcl ! # ! # Configuration feature definitions for the configuration 'wintel' ! # ! # Editing instructions begin at "START EDIT HERE" below. ! ! set config [Oc_Config RunPlatform] ! ! if {![string match [string tolower [file rootname [file tail [info script]]]] \ ! [$config GetValue platform_name]]} { ! error "Configuration cache file '[info script]' ! sourced by '[$config GetValue platform_name]'" ! } ! ! ######################################################################## ! # START EDIT HERE ! # In order to properly build, install, and run on your computing ! # platform, the OOMMF software must know certain features of your ! # computing environment. In this file are lines which set the value of ! # certain features of your computing environment. Each line looks like: ! # ! # $config SetValue {} ! # ! # where each is the name of some feature of interest, ! # and is the value which is assigned to that feature in a ! # description of your computing environment. Your task is to edit ! # the values as necessary to properly describe your computing ! # environment. ! # ! # The character '#' at the beginning of a line is a comment character. ! # It causes the contents of that line to be ignored. To select ! # among lines providing alternative values for a feature, uncomment the ! # line containing the proper value. ! # ! # The features in this file are divided into three sections. The first ! # section (REQUIRED CONFIGURATION) includes features which require you ! # to provide a value. The second section (OPTIONAL CONFIGURATION) ! # includes features which have usable default values, but which you ! # may wish to customize. The third section (ADVANCED CONFIGURATION) ! # contains features which you probably do not need or want to change ! # without a good reason. ! ######################################################################## ! # REQUIRED CONFIGURATION ! ! # NOTE: The rest of the REQUIRED CONFIGURATION is required only ! # for building OOMMF software from source code. If you downloaded ! # a distribution with pre-compiled executables, no more configuration ! # is required. ! ! # Set the feature 'program_compiler_c++' to the program to run on this ! # platform to compile source code files written in the language C++ into ! # object files. Select from the choices below. If the compiler is not ! # in your path, be sure to use the whole pathname. Also include any ! # options required to instruct your compiler to only compile, not link. ! # ! # If your compiler is not listed below, additional features will ! # have to be added in the ADVANCED CONFIGURATION section below to ! # describe to the OOMMF software how to operate your compiler. Send ! # e-mail to the OOMMF developers for assistance. ! # ! # Microsoft Visual C++ ! # ! $config SetValue program_compiler_c++ {cl /nologo /c /GX} ! # ! # Borland C++ compiler. This is completely untested and guaranteed ! # to be broken. ! # ! #$config SetValue program_compiler_c++ {bcc -c} ! # It may also be necessary to add something like the following to ! # the C++ code: ! # ! # #ifndef STATIC_BUILD ! # #if defined(_MSC_VER) ! # # define EXPORT(a,b) __declspec(dllexport) a b ! # # define DllEntryPoint DllMain ! # #else ! # # if defined(__BORLANDC__) ! # # define EXPORT(a,b) a _export b ! # # else ! # # define EXPORT(a,b) a b ! # # endif ! # #endif ! # #endif ! # ! ! ######################################################################## ! # OPTIONAL CONFIGURATION ! ! # Set the feature 'path_directory_temporary' to the name of an existing ! # directory on your computer in which OOMMF software should write ! # temporary files. All OOMMF users must have write access to this ! # directory. ! # ! # $config SetValue path_directory_temporary {C:\temp} ! # $config SetValue path_directory_temporary {C:\} ! ! ######################################################################## ! # ADVANCED CONFIGURATION ! ! # Compiler option processing... ! set ccbasename [file tail [lindex [$config GetValue program_compiler_c++] 0]] ! if {[string match cl $ccbasename]} { ! # ... for Microsoft Visual C++ ! $config SetValue program_compiler_c++_option_opt {} ! $config SetValue program_compiler_c++_option_out {format "\"/Fo%s\""} ! $config SetValue program_compiler_c++_option_src {format "\"/Tp%s\""} ! $config SetValue program_compiler_c++_option_inc {format "\"/I%s\""} ! $config SetValue program_compiler_c++_option_warn {format "/W4"} ! $config SetValue program_compiler_c++_option_debug {format "/MLd"} ! ! # Widest natively support floating point type ! $config SetValue program_compiler_c++_typedef_realwide "double" ! ! # The program to run on this platform to create a single library file out ! # of many object files. ! # Microsoft Visual C++'s library maker ! $config SetValue program_libmaker {lib} ! ! # The program to run on this platform to link together object files and ! # library files to create an executable binary. ! # Microsoft Visual C++'s linker ! $config SetValue program_linker {link} ! ! } elseif {[string match bcc $ccbasename]} { ! # ... for Borland C++ ! $config SetValue program_compiler_c++_option_opt {} ! $config SetValue program_compiler_c++_option_out {format "\"-o%s\""} ! $config SetValue program_compiler_c++_option_src {format "-P \"%s\""} ! $config SetValue program_compiler_c++_option_inc {format "\"-I%s\""} ! $config SetValue program_compiler_c++_option_warn {format "-w"} ! $config SetValue program_compiler_c++_option_debug {format "-v"} ! ! # Widest natively support floating point type ! $config SetValue program_compiler_c++_typedef_realwide "double" ! # The program to run on this platform to create a single library file out ! # of many object files. ! # Borland librarian ! $config SetValue program_libmaker {tlib} ! ! # The program to run on this platform to link together object files and ! # library files to create an executable binary. ! # Borland linker ! $config SetValue program_linker {tlink} ! } ! unset ccbasename ! ! # Library making option processing... ! set libbasename [file tail [lindex [$config GetValue program_libmaker] 0]] ! if {[string match lib $libbasename]} { ! # ...for Microsoft VC++ lib ! $config SetValue program_libmaker_option_obj {format \"%s\"} ! $config SetValue program_libmaker_option_out {format "\"/OUT:%s\""} ! } elseif {[string match tlib $libbasename]} { ! # ...for Borland librarian ! $config SetValue program_libmaker_option_obj {format \"%s\"} ! ## Maybe the above should be {format \"+%s\"} ? ! $config SetValue program_libmaker_option_out {format "\"%s\""} ! } ! unset libbasename ! ! # Linker option processing... ! set linkbasename [file tail [lindex [$config GetValue program_linker] 0]] ! if {[string match link $linkbasename]} { ! # ...for Microsoft VC++ linker ! $config SetValue program_linker_option_obj {format \"%s\"} ! $config SetValue program_linker_option_out {format "\"/OUT:%s\""} ! $config SetValue program_linker_option_lib {format \"%s\"} ! $config SetValue program_linker_option_sub {format "\"/SUBSYSTEM:%s\""} ! ! $config SetValue TCL_LIB_SPEC [$config GetValue TCL_VC_LIB_SPEC] ! $config SetValue TK_LIB_SPEC [$config GetValue TK_VC_LIB_SPEC] ! $config SetValue TK_LIBS {} ! $config SetValue TCL_LIBS {} ! $config SetValue program_linker_uses_-L-l {0} ! $config SetValue program_linker_uses_-I-L-l {0} ! ! } elseif {[string match tlink $linkbasename]} { ! # ...for Borland linker ! $config SetValue program_linker_option_obj {format \"%s\"} ! $config SetValue program_linker_option_out {format "-o \"%s\""} ! $config SetValue program_linker_option_lib {format \"%s\"} ! ! $config SetValue TCL_LIB_SPEC [$config GetValue TCL_VC_LIB_SPEC] ! $config SetValue TK_LIB_SPEC [$config GetValue TK_VC_LIB_SPEC] ! $config SetValue TK_LIBS {} ! $config SetValue TCL_LIBS {} ! $config SetValue program_linker_uses_-L-l {1} ! $config SetValue program_linker_uses_-I-L-l {0} ! ! } ! unset linkbasename ! ! # The absolute, native filename of the null device ! $config SetValue path_device_null {nul:} ! ! # A partial Tcl command (or script) which when completed by lappending ! # a file name stem and evaluated returns the corresponding file name for ! # an executable on this platform ! $config SetValue script_filename_executable {format %s.exe} ! ! # A partial Tcl command (or script) which when completed by lappending ! # a file name stem and evaluated returns the corresponding file name for ! # an object file on this platform ! $config SetValue script_filename_object {format %s.obj} ! ! # A partial Tcl command (or script) which when completed by lappending ! # a file name stem and evaluated returns the corresponding file name for ! # a static library on this platform ! $config SetValue script_filename_static_library {format %s.lib} ! ! ######################################################################## ! unset config --- 1,252 ---- ! # FILE: wintel.tcl ! # ! # Configuration feature definitions for the configuration 'wintel' ! # ! # Editing instructions begin at "START EDIT HERE" below. ! ! set config [Oc_Config RunPlatform] ! ! if {![string match [string tolower [file rootname [file tail [info script]]]] \ ! [$config GetValue platform_name]]} { ! error "Configuration cache file '[info script]' ! sourced by '[$config GetValue platform_name]'" ! } ! ! ######################################################################## ! # START EDIT HERE ! # In order to properly build, install, and run on your computing ! # platform, the OOMMF software must know certain features of your ! # computing environment. In this file are lines which set the value of ! # certain features of your computing environment. Each line looks like: ! # ! # $config SetValue {} ! # ! # where each is the name of some feature of interest, ! # and is the value which is assigned to that feature in a ! # description of your computing environment. Your task is to edit ! # the values as necessary to properly describe your computing ! # environment. ! # ! # The character '#' at the beginning of a line is a comment character. ! # It causes the contents of that line to be ignored. To select ! # among lines providing alternative values for a feature, uncomment the ! # line containing the proper value. ! # ! # The features in this file are divided into three sections. The first ! # section (REQUIRED CONFIGURATION) includes features which require you ! # to provide a value. The second section (OPTIONAL CONFIGURATION) ! # includes features which have usable default values, but which you ! # may wish to customize. The third section (ADVANCED CONFIGURATION) ! # contains features which you probably do not need or want to change ! # without a good reason. ! ######################################################################## ! # REQUIRED CONFIGURATION ! ! # NOTE: The rest of the REQUIRED CONFIGURATION is required only ! # for building OOMMF software from source code. If you downloaded ! # a distribution with pre-compiled executables, no more configuration ! # is required. ! ! # Set the feature 'program_compiler_c++' to the program to run on this ! # platform to compile source code files written in the language C++ into ! # object files. Select from the choices below. If the compiler is not ! # in your path, be sure to use the whole pathname. Also include any ! # options required to instruct your compiler to only compile, not link. ! # ! # If your compiler is not listed below, additional features will ! # have to be added in the ADVANCED CONFIGURATION section below to ! # describe to the OOMMF software how to operate your compiler. Send ! # e-mail to the OOMMF developers for assistance. ! # ! # Microsoft Visual C++ ! # ! $config SetValue program_compiler_c++ {cl /nologo /c /GX} ! # ! # Borland C++ 5.5 Win32 command line tools. ! # ! #$config SetValue program_compiler_c++ {bcc32 -c -w-8027 -w-8004} ! # -w-8027 turns off warning messages about for and while loops not ! # being inlineable. 8004 is warning message about assigned value ! # being unused. ! # ! # It may also be necessary to add something like the following to ! # the C++ code: ! # ! # #ifndef STATIC_BUILD ! # #if defined(_MSC_VER) ! # # define EXPORT(a,b) __declspec(dllexport) a b ! # # define DllEntryPoint DllMain ! # #else ! # # if defined(__BORLANDC__) ! # # define EXPORT(a,b) a _export b ! # # else ! # # define EXPORT(a,b) a b ! # # endif ! # #endif ! # #endif ! # ! ! ######################################################################## ! # OPTIONAL CONFIGURATION ! ! # Set the feature 'path_directory_temporary' to the name of an existing ! # directory on your computer in which OOMMF software should write ! # temporary files. All OOMMF users must have write access to this ! # directory. ! # ! # $config SetValue path_directory_temporary {C:\temp} ! # $config SetValue path_directory_temporary {C:\} ! ! ######################################################################## ! # ADVANCED CONFIGURATION ! ! # Compiler option processing... ! set ccbasename [file tail [lindex [$config GetValue program_compiler_c++] 0]] ! if {[string match cl $ccbasename]} { ! # ... for Microsoft Visual C++ ! $config SetValue program_compiler_c++_option_opt {} ! $config SetValue program_compiler_c++_option_out {format "\"/Fo%s\""} ! $config SetValue program_compiler_c++_option_src {format "\"/Tp%s\""} ! $config SetValue program_compiler_c++_option_inc {format "\"/I%s\""} ! $config SetValue program_compiler_c++_option_warn {format "/W4"} ! $config SetValue program_compiler_c++_option_debug {format "/MLd"} ! ! # Widest natively support floating point type ! $config SetValue program_compiler_c++_typedef_realwide "double" ! ! # The program to run on this platform to create a single library file out ! # of many object files. ! # Microsoft Visual C++'s library maker ! $config SetValue program_libmaker {lib} ! ! # The program to run on this platform to link together object files and ! # library files to create an executable binary. ! # Microsoft Visual C++'s linker ! $config SetValue program_linker {link} ! ! } elseif {[string match bcc32 $ccbasename]} { ! # ... for Borland C++ ! ;### Compile line should look like ! ;### bcc32 -c -oOUT.obj -P infile.cc ! ;### NOTE: Options must come first. ! $config SetValue program_compiler_c++_option_out {format "\"-o%s\""} ! $config SetValue program_compiler_c++_option_src {format "-P \"%s\""} ! $config SetValue program_compiler_c++_option_inc {format "\"-I%s\""} ! $config SetValue program_compiler_c++_option_warn {format "-w"} ! $config SetValue program_compiler_c++_option_debug {format "-v"} ! ! # Optimization ! # $config SetValue program_compiler_c++_option_opt {format "\"-O%s\""} ! $config SetValue program_compiler_c++_option_opt {format "-5 -Ox"} ! ## Where -5: pentium instructions, -Ox: fastest code ! ! # Widest natively support floating point type ! $config SetValue program_compiler_c++_typedef_realwide "double" ! ! # Work arounds ! # $config SetValue program_compiler_c++_property_strict_atan2 1 ! ## The above should be set automatically based on the results ! ## from oommf/ext/oc/varinfo.cc. ! ! # The program to run on this platform to create a single library file out ! # of many object files. ! # Borland librarian ! $config SetValue program_libmaker {tlib} ! ! # The program to run on this platform to link together object files and ! # library files to create an executable binary. ! # Borland linker ! # $config SetValue program_linker {ilink32 -Gn -aa -x c0x32} ! $config SetValue program_linker {ilink32 -Gn -x c0x32} ! } ! unset ccbasename ! ! # Library making option processing... ! set libbasename [file tail [lindex [$config GetValue program_libmaker] 0]] ! if {[string match lib $libbasename]} { ! # ...for Microsoft VC++ lib ! $config SetValue program_libmaker_option_obj {format \"%s\"} ! $config SetValue program_libmaker_option_out {format "\"/OUT:%s\""} ! } elseif {[string match tlib $libbasename]} { ! # ...for Borland librarian ! proc fibar { name } { return [list +[file nativename $name]] } ! $config SetValue program_libmaker_option_obj {fibar} ! proc fifibar { name } { return [list [file nativename $name]] } ! $config SetValue program_libmaker_option_out {fifibar} ! } ! unset libbasename ! ! # Linker option processing... ! set linkbasename [file tail [lindex [$config GetValue program_linker] 0]] ! if {[string match link $linkbasename]} { ! # ...for Microsoft VC++ linker ! $config SetValue program_linker_option_obj {format \"%s\"} ! $config SetValue program_linker_option_out {format "\"/OUT:%s\""} ! $config SetValue program_linker_option_lib {format \"%s\"} ! $config SetValue program_linker_option_sub {format "\"/SUBSYSTEM:%s\""} ! ! $config SetValue TCL_LIB_SPEC [$config GetValue TCL_VC_LIB_SPEC] ! $config SetValue TK_LIB_SPEC [$config GetValue TK_VC_LIB_SPEC] ! $config SetValue TK_LIBS {user32.lib} ! $config SetValue TCL_LIBS {user32.lib} ! $config SetValue program_linker_uses_-L-l {0} ! $config SetValue program_linker_uses_-I-L-l {0} ! ! } elseif {[string match ilink32 $linkbasename]} { ! # ...for Borland linker ! ;### Seems link line should look like ! ;### ilink32 -Gn -aa -x c0x32.obj OBJS, outfile.exe,,LIBS import32 cw32 ! ;### Order is important. The Tcl 7.5 build has the options ! ;### -Tpe -ap -c pasted on in front (before c0x32.obj). I think ! ;### -c means case sensitive, but not sure about the rest. ! ;### -a? is application type, where -aa=Windows GUI, -ad=Native, ! ;### and -ap=Windows character. -T?? is "output file type". ! ;### Here -Gn=no state files, -x=no map. (Another option is ! ;### -C=clear state before linking.) ! proc fubar { name } { return [list [file nativename $name]] } ! $config SetValue program_linker_option_obj {fubar} ! proc fufubar { name } { return " , [fubar $name] , , import32 cw32" } ! $config SetValue program_linker_option_out {fufubar} ! $config SetValue program_linker_option_lib {fubar} ! proc fufufubar { subsystem } { ! if {[string match CONSOLE $subsystem]} { ! return "-ap" ;# Windows character ! } ! return "-aa" ;# Windows GUI ! } ! $config SetValue program_linker_option_sub {fufufubar} ! set dummy [$config GetValue TCL_VC_LIB_SPEC] ! regsub {\.lib$} $dummy bc.lib dummy ! $config SetValue TCL_LIB_SPEC $dummy ! set dummy [$config GetValue TK_VC_LIB_SPEC] ! regsub {\.lib$} $dummy bc.lib dummy ! $config SetValue TK_LIB_SPEC $dummy ! $config SetValue TK_LIBS {} ! $config SetValue TCL_LIBS {} ! $config SetValue program_linker_uses_-L-l {0} ! $config SetValue program_linker_uses_-I-L-l {0} ! ! } ! unset linkbasename ! ! # The absolute, native filename of the null device ! $config SetValue path_device_null {nul:} ! ! # A partial Tcl command (or script) which when completed by lappending ! # a file name stem and evaluated returns the corresponding file name for ! # an executable on this platform ! $config SetValue script_filename_executable {format %s.exe} ! ! # A partial Tcl command (or script) which when completed by lappending ! # a file name stem and evaluated returns the corresponding file name for ! # an object file on this platform ! $config SetValue script_filename_object {format %s.obj} ! ! # A partial Tcl command (or script) which when completed by lappending ! # a file name stem and evaluated returns the corresponding file name for ! # a static library on this platform ! $config SetValue script_filename_static_library {format %s.lib} ! ! ######################################################################## ! unset config ! diff -crN oommf-1.1a2/config/names/cygtel.tcl oommf/config/names/cygtel.tcl *** oommf-1.1a2/config/names/cygtel.tcl Wed Apr 5 00:23:04 2000 --- oommf/config/names/cygtel.tcl Tue Apr 4 23:20:59 2000 *************** *** 16,22 **** return 1 } if {[info exists env(TERM)] && ! [string match cygwin [string tolower $env(TERM)]]} { return 1 } return 0 --- 16,22 ---- return 1 } if {[info exists env(TERM)] && ! [string match cygwin* [string tolower $env(TERM)]]} { return 1 } return 0 diff -crN oommf-1.1a2/doc/.latex2html-init oommf/doc/.latex2html-init *** oommf-1.1a2/doc/.latex2html-init Wed Apr 5 00:23:05 2000 --- oommf/doc/.latex2html-init Tue Apr 4 23:21:00 2000 *************** *** 226,233 **** } elsif ($title =~ /Index/) { $title = "docindex" } else { ! my $small_words = "a|an|and|of|on|the"; ! my $to_underscore = '\s+|:|/|\(|\)'; $title =~ s/\b($small_words)\b//gio; $title =~ s/$to_underscore/_/go; $title =~ s/_+/_/go; --- 226,234 ---- } elsif ($title =~ /Index/) { $title = "docindex" } else { ! my $small_words = "a|an|and|of|on|the|"; ! my $to_underscore = '\s+|:|/|\(|\)|<|>'; ! $title =~ s/|<\/b>//gio; $title =~ s/\b($small_words)\b//gio; $title =~ s/$to_underscore/_/go; $title =~ s/_+/_/go; *************** *** 245,250 **** --- 246,257 ---- $TRANSPARENT_FIGURES = 0; $WHITE_BACKGROUND = 1; # Not actually needed if $TRANSPARENT_FIGURES==0, ## but it shouldn't hurt to set this too. + + # LaTeX2HTML 99.2 allows image types selection at runtime. Unfortunately, + # the icon files are defined in the system l2hconf.pm file using the + # value of $IMAGE_TYPE defined there. So the following affects LaTeX + # generated images, but not the icon files. + $IMAGE_TYPE = "gif"; # Set contents of INFO for abbreviated \htmlinfo command $INFO = "This document was generated using the LaTeX2HTML translator Version $TEX2HTMLVERSION."; diff -crN oommf-1.1a2/doc/README oommf/doc/README *** oommf-1.1a2/doc/README Wed Apr 5 00:23:05 2000 --- oommf/doc/README Tue Apr 4 23:21:00 2000 *************** *** 1,9 **** OOMMF DOCUMENTATION README The documentation source files in this directory are LaTeX *.tex files, ! using the LaTeX2Html extension. Version 98.2 beta 8 (or later?) of ! LaTeX2Html is required. The latest development releases of latex2html are at . The application screenshots are captured against a white background that is cropped to just hold the desired windows. The program --- 1,14 ---- OOMMF DOCUMENTATION README The documentation source files in this directory are LaTeX *.tex files, ! using the LaTeX2HTML extension. Version 98.2 beta 8 (or later?) of ! LaTeX2HTML is required. The latest development releases of latex2html are at . + + The 2000-02-09 version of these files has been built with LaTeX2HTML + versions 99.1 and 99.2. + + The bibliography uses the osa.bst style file from the revtex3.1 package. The application screenshots are captured against a white background that is cropped to just hold the desired windows. The program diff -crN oommf-1.1a2/doc/arch-body.tex oommf/doc/arch-body.tex *** oommf-1.1a2/doc/arch-body.tex Wed Apr 5 00:23:05 2000 --- oommf/doc/arch-body.tex Tue Apr 4 23:21:00 2000 *************** *** 118,124 **** directory applications needed to direct clients to its service. After all server applications terminate, and there are no longer any services registered with a service directory application, ! it will terminate after a timeout expires. \index{host~service~directory!expires} \index{account~service~directory!expires} \index{host~service~directory!launching~of|)} --- 118,124 ---- directory applications needed to direct clients to its service. After all server applications terminate, and there are no longer any services registered with a service directory application, ! it terminates as well. \index{host~service~directory!expires} \index{account~service~directory!expires} \index{host~service~directory!launching~of|)} diff -crN oommf-1.1a2/doc/batchsys-body.tex oommf/doc/batchsys-body.tex *** oommf-1.1a2/doc/batchsys-body.tex Wed Apr 5 00:23:05 2000 --- oommf/doc/batchsys-body.tex Tue Apr 4 23:21:00 2000 *************** *** 2,12 **** \index{simulation!2D}\index{application!OOMMF~Batch~System} The \OOMMF\ Batch System (\OBS) provides a scriptable interface ! (\fn{batchsolve.tcl}) to the same micromagnetic solver engine used by \hyperrefhtml{\app{mmSolve2D}}{\app{mmSolve2D} ! (Sec.~}{)}{sec:mmsolve2d}\index{application!mmSolve2D}, and several ! \Tcl\ scripts (\fn{batchmaster.tcl}, \fn{batchslave.tcl}, and ! \fn{batchtask.tcl}) that provide support for complex job scheduling. All \OBS\ script files are in the \OOMMF\ distribution directory \fn{app/mmsolve/scripts}. --- 2,13 ---- \index{simulation!2D}\index{application!OOMMF~Batch~System} The \OOMMF\ Batch System (\OBS) provides a scriptable interface ! to the same micromagnetic solver engine used by \hyperrefhtml{\app{mmSolve2D}}{\app{mmSolve2D} ! (Sec.~}{)}{sec:mmsolve2d}\index{application!mmSolve2D}, in the ! form of three \Tcl\ applicatons ! (\app{batchmaster}, \app{batchslave}, and ! \app{batchsolve}) that provide support for complex job scheduling. All \OBS\ script files are in the \OOMMF\ distribution directory \fn{app/mmsolve/scripts}. *************** *** 16,64 **** \hyperrefhtml{bootstrap application}{bootstrap application (Sec.~}{)}{sec:cll}. ! \subsection{Batch solver}\label{sec:batchsolve} \ssechead{Overview} ! The batch solver script ! \fn{batchsolve.tcl}\index{application!batchsolve} provides a simple command line interface to the \OOMMF\ micromagnetic solver engine. \ssechead{Launching} ! The batch solver is launched by the command line: \begin{verbatim} ! tclsh oommf.tcl batchsolve [-tk 0] [[-file] ] \ ! [-no_interface] [-start_paused] [-end_paused] [-end_exit <0|1>] \ ! [-restart <0|1>] \end{verbatim} where \begin{description} ! \item[\bftt{-tk 0}] ! Do not load \Tk\ or display a (blank) window, ! \item[\bftt{[-file] $<$filename.mif$>$}] ! Immediately load and run the specified \MIF\ file\index{file!mif}. ! The {\cd{[-file]}} tag may be omitted if the first character of ! {\fn{filename}} is not a hyphen. ! \item[\bftt{-no\_interface}] ! Do not register with the account service ! directory\index{account~service~directory} application. As a result, ! \fn{batchsolve.tcl} will not show up on the threads\index{threads} ! list in \hyperrefhtml{\app{mmLaunch}}{\app{mmLaunch} ! (Sec.~}{)}{sec:mmlaunch}\index{application!mmLaunch}, and no ! interactive interface will be provided by \app{mmLaunch}. (However, ! if \fn{batchsolve.tcl} is invoked from inside another script (e.g., ! \fn{batchslave.tcl}\index{application!batchslave}), the calling script ! could provide an interface to the batch-controlled solver.) ! \item[\bftt{-start\_paused}] Pause solver after loading problem. ! \item[\bftt{-end\_paused}] Pause solver and enter event loop at bottom of {\fn{batchsolve.tcl}} rather than just falling off the end (the effect of which will depend on whether or not \Tk\ is loaded). ! \item[\bftt{-end\_exit $<$0\pipe 1$>$}] ! If 1, then explicitly call exit at bottom of \fn{batchsolve.tcl}. The ! default is 1 if and only if a \MIF\ file has been specified on the ! command line. ! \item[\bftt{-restart $<$0\pipe 1$>$}] Determines solver behavior when a new problem is loaded. If 1, then the solver will look for \fn{\textit{basename}.log}\index{file!log} and \fn{\textit{basename*}.omf}\index{file!magnetization} files to --- 17,59 ---- \hyperrefhtml{bootstrap application}{bootstrap application (Sec.~}{)}{sec:cll}. ! \subsection{Solver Batch Interface: batchsolve}\label{sec:batchsolve} \ssechead{Overview} ! The application ! \app{batchsolve}\index{application!batchsolve} provides a simple command line interface to the \OOMMF\ micromagnetic solver engine. \ssechead{Launching} ! The application \app{batchsolve} is launched by the command line: \begin{verbatim} ! tclsh oommf.tcl batchsolve [standard options] ! [-end_exit <0|1>] [-end_paused] [-interface <0|1>] \ ! [-restart <0|1>] [-start_paused] [file] \end{verbatim} where \begin{description} ! \item[\tt\bf{-end\_exit $<$0\pipe 1$>$}] ! Whether or not to explicitly call exit at bottom of \fn{batchsolve.tcl}. ! When launched from the command line, the default is to exit after ! solving the problem in \cd{file}. When sourced into another script, ! like \fn{batchslave.tcl}, the default is to wait for the caller script ! to provide further instructions. ! \item[\tt\bf{-interface $<$0\pipe 1$>$}] ! Whether to register with the account service ! directory\index{account~service~directory} application, so ! that \hyperrefhtml{\app{mmLaunch}}{\app{mmLaunch} ! (Sec.~}{)}{sec:mmlaunch}\index{application!mmLaunch}, can provide ! an interactive interface. Default = 1 (do register), which will ! automatically start account service directory and ! host service directory applications as necessary. ! \item[\tt\bf{-start\_paused}] Pause solver after loading problem. ! \item[\tt\bf{-end\_paused}] Pause solver and enter event loop at bottom of {\fn{batchsolve.tcl}} rather than just falling off the end (the effect of which will depend on whether or not \Tk\ is loaded). ! \item[\tt\bf{-restart $<$0\pipe 1$>$}] Determines solver behavior when a new problem is loaded. If 1, then the solver will look for \fn{\textit{basename}.log}\index{file!log} and \fn{\textit{basename*}.omf}\index{file!magnetization} files to *************** *** 70,78 **** starting the problem from scratch. The specified \cd{-restart} setting holds for \textbf{all} problems fed to the solver, not just the first. \end{description} ! The input {\bf\fn{filename.mif}} file should contain a \hyperrefhtml{Micromagnetic Input Format}{Micromagnetic Input Format (Sec.~}{)}{sec:mifformat} (\MIF) problem description\index{file!mif}, such as produced by \hyperrefhtml{\app{mmProbEd}}{\app{mmProbEd} --- 65,75 ---- starting the problem from scratch. The specified \cd{-restart} setting holds for \textbf{all} problems fed to the solver, not just the first. + \item[\tt\bf{file}] + Immediately load and run the specified \MIF\ file\index{file!mif}. \end{description} ! The input file {\bf\fn{file}} should contain a \hyperrefhtml{Micromagnetic Input Format}{Micromagnetic Input Format (Sec.~}{)}{sec:mifformat} (\MIF) problem description\index{file!mif}, such as produced by \hyperrefhtml{\app{mmProbEd}}{\app{mmProbEd} *************** *** 84,96 **** \fn{app/mmpe} in the \OOMMF\ distribution. Refer to the \cd{mif\_path} variable in \fn{batchsolve.tcl} for the complete list. ! If \fn{batchsolve.tcl} registers itself with the account service ! directory\index{account~service~directory} application, it will appear ! in the \btn{Threads}\index{threads} list of any running copy of ! \app{mmLaunch}\index{application!mmLaunch}, and \app{mmLaunch} will ! provide an interactive interface on behalf of \fn{batchsolve.tcl}. ! Using this interface, \fn{batchsolve.tcl} may be controlled in a manner ! similar to \hyperrefhtml{\app{mmSolve2D}}{\app{mmSolve2D} (Sec.~}{)}{sec:mmsolve2d}\index{application!mmSolve2D}. The interface\index{simulation!interactive~control} allows you to pause, un-pause, and terminate\index{simulation!termination} the current --- 81,91 ---- \fn{app/mmpe} in the \OOMMF\ distribution. Refer to the \cd{mif\_path} variable in \fn{batchsolve.tcl} for the complete list. ! If \cd{-interface} is set to 1 (enabled), \app{batchsolve} registers ! with the account service directory\index{account~service~directory} ! application, and \app{mmLaunch} will be able to provide an interactive ! interface. Using this interface, \app{batchsolve} may be controlled in ! a manner similar to \hyperrefhtml{\app{mmSolve2D}}{\app{mmSolve2D} (Sec.~}{)}{sec:mmsolve2d}\index{application!mmSolve2D}. The interface\index{simulation!interactive~control} allows you to pause, un-pause, and terminate\index{simulation!termination} the current *************** *** 98,123 **** the solver's progress. If more interactive control is needed, \app{mmSolve2D} should be used. Use the {\bf\verb|-start_paused|} switch to monitor the progress of ! \fn{batchsolve.tcl} from the very start of a simulation. With this switch the solver will be paused immediately after loading the specified \MIF\ file, so you can bring up the interactive interface and connect display applications before the simulation begins. Start the simulation by selecting the \btn{Run} command from the interactive ! interface. The {\bf\verb|-end_paused|} switch insures that the solver does not automatically terminate after completing the specified simulation. This is not generally useful, but may find application ! when \fn{batchsolve.tcl} is called from inside a \Tcl -only wrapper script. \ssechead{Output} The output may be changed by a \Tcl\ \hyperrefhtml{wrapper script}{wrapper script (see Sec.~}{)}{sec:batchsolvepi}, but the default ! output behavior of \fn{batchsolve.tcl} is to write tabular text data and ! the magnetization state at equilibrium for each applied field step. The ! tabular data are appended to the file \fn{{\em basename}.odt}\index{file!data~table}, where {\em basename} is the ``Base Output Filename'' specified in the input \MIF\ file\index{file!mif}. See the routine \cd{GetTextData} in --- 93,123 ---- the solver's progress. If more interactive control is needed, \app{mmSolve2D} should be used. + If \cd{-interface} is 0 (disabled), \app{batchsolve} does not register, + leaving it without an interface, unless it is sourced into another + script (e.g., \fn{batchslave.tcl}\index{application!batchslave}) that + arranges for an interface on the behalf of \app{batchsolve}. + Use the {\bf\verb|-start_paused|} switch to monitor the progress of ! \app{batchsolve} from the very start of a simulation. With this switch the solver will be paused immediately after loading the specified \MIF\ file, so you can bring up the interactive interface and connect display applications before the simulation begins. Start the simulation by selecting the \btn{Run} command from the interactive ! interface. This option cannot be used if \cd{-interface} is disabled. The {\bf\verb|-end_paused|} switch insures that the solver does not automatically terminate after completing the specified simulation. This is not generally useful, but may find application ! when \app{batchsolve} is called from inside a \Tcl -only wrapper script. \ssechead{Output} The output may be changed by a \Tcl\ \hyperrefhtml{wrapper script}{wrapper script (see Sec.~}{)}{sec:batchsolvepi}, but the default ! output behavior of \app{batchsolve} is to write tabular text data and ! the magnetization state at the control point for each applied field ! step. The tabular data are appended to the file \fn{{\em basename}.odt}\index{file!data~table}, where {\em basename} is the ``Base Output Filename'' specified in the input \MIF\ file\index{file!mif}. See the routine \cd{GetTextData} in *************** *** 128,150 **** energy\index{energy!total}. This output is in the \ODT\ file format. The magnetization data are written to a series of \OVF\ (\OOMMF\ Vector ! Field) files\index{file!vector~field}, \fn{{\em basename}.field{\em ! nnnn}.omf}, where \fn{{\em nnnn}} starts at \fn{0000} and is incremented ! at each applied field\index{field!applied} step. (The ASCII text header ! inside each file records the nominal applied field at that step.) These ! files are viewable using \hyperrefhtml{\app{mmDisp}}{\app{mmDisp} (Sec.~}{)}{sec:mmdisp}\index{application!mmDisp}. ! In addition, the solver automatically appends the input problem ! specification and miscellaneous runtime information to the log file \fn{{\em basename}.log}\index{file!log}. \ssechead{Programmer's interface}\label{sec:batchsolvepi} ! In addition to directly launching \fn{batchsolve.tcl} from the command ! line, it may also be sourced from inside another \Tcl\ script, e.g., ! \fn{batchslave.tcl}\index{application!batchslave}, that provides ! additional control structures. There are several variables and routines inside \fn{batchsolve.tcl} that may be accessed and redefined from such a wrapper script to provide enhanced functionality. --- 128,155 ---- energy\index{energy!total}. This output is in the \ODT\ file format. The magnetization data are written to a series of \OVF\ (\OOMMF\ Vector ! Field) files\index{file!vector~field}, ! \fn{\textit{basename}.field\textit{nnnn}.omf}, where \fn{\textit{nnnn}} ! starts at \fn{0000} and is incremented at each applied ! field\index{field!applied} step. (The ASCII text header inside each ! file records the nominal applied field at that step.) These files are ! viewable using \hyperrefhtml{\app{mmDisp}}{\app{mmDisp} (Sec.~}{)}{sec:mmdisp}\index{application!mmDisp}. ! The solver also automatically appends the input problem specification ! and miscellaneous runtime information to the log file \fn{{\em basename}.log}\index{file!log}. \ssechead{Programmer's interface}\label{sec:batchsolvepi} ! In addition to directly launching \app{batchsolve} from the command ! line, \fn{batchsolve.tcl} may also be sourced into another \Tcl\ script ! that provides additional control structures. Within the scheduling ! system of \OBS, ! \fn{batchsolve.tcl} is sourced into \app{batchslave}, which provides ! additional control structures that support scheduling control by ! \app{batchmaster}. ! There are several variables and routines inside \fn{batchsolve.tcl} that may be accessed and redefined from such a wrapper script to provide enhanced functionality. *************** *** 170,176 **** \item[\cd{\bf SolverTaskInit}] Called at the start of each task. \item[\cd{\bf BatchTaskRelaxCallback}] ! Called at each equilibrium state reached in the simulation. \item[\cd{\bf SolverTaskCleanup}] Called at the conclusion of each task. \begin{rawhtml} --- 175,181 ---- \item[\cd{\bf SolverTaskInit}] Called at the start of each task. \item[\cd{\bf BatchTaskRelaxCallback}] ! Called at each control point reached in the simulation. \item[\cd{\bf SolverTaskCleanup}] Called at the conclusion of each task. \begin{rawhtml} *************** *** 191,279 **** \fn{batchsolve.tcl}\index{application!batchsolve}. \latex{See Sec.~\ref{sec:batchschedex} for example scripts.} ! \subsection{Batch scheduler} \ssechead{Overview} ! The \OBS\ provides support for complex scheduling of multiple batch jobs ! via the two files {\fn{batchmaster.tcl}} and {\fn{batchslave.tcl}} plus ! a user defined task script\index{task~script}. The task script may be modeled after the included {\fn{simpletask.tcl}} or {\fn{multitask.tcl}} ! sample scripts. The \OBS\ has been designed to control multiple sequential and ! concurrent micromagnetic simulations, but the scheduling scripts ! \fn{batchmaster.tcl} and \fn{batchslave.tcl} are completely general and may be used to schedule other types of jobs as well. ! When \fn{batchmaster.tcl}\index{application!batchmaster} is run, it ! sources a task script that should modify the global object ! \cd{\$TaskInfo} to inform the master what tasks to perform and ! optionally how to launch slaves to perform those tasks. This is ! detailed in \html{the} \hyperrefhtml{Batch task ! scripts}{Sec.~}{}{sec:batchschedtask}\html{ section}. After this, ! \fn{batchmaster.tcl} launches all the specified slaves, initializes ! each with a slave initialization script, and then feeds tasks ! sequentially from the task list to the slaves. When a slave completes a ! task it reports back to the master and is given the next unclaimed task. ! If there are no more tasks, the slave is shut down. When all the tasks ! are complete, the master prints a summary of the tasks and exits. Note: ! At present, launching and controlling jobs off the local machine ! requires a working \verb+rsh+\index{application!rsh} command or ! equivalent\index{requirement!rsh}. ! ! \ssechead{Launching}\label{sec:batchschedusage} ! The batch scheduler\index{simulation!scheduling} is launched by the ! command line: \begin{verbatim} ! tclsh oommf.tcl batchmaster [-tk 0] \ ! [server_host [server_port]] \end{verbatim} where \begin{description} ! \item[{\tt\bf -tk 0}] ! Do not load \Tk\ or display a (blank) window, ! \item[{\tt\bf $<$task\_script.tcl$>$}] ! is the user defined task (job) definition file, ! \item[{\tt\bf server\_host}] specifies the network address for the master to use (default is {\em localhost}), ! \item[{\tt\bf server\_port}] is the port address for the master (default is {\em 0}, which selects an arbitrary open port). \end{description} ! The required \fn{$<$task\_script.tcl$>$} should be based on the \hyperrefhtml{included example scripts}{example scripts in ! Sec.~}{}{sec:batchschedex}. If slaves are to be run on remote ! machines, then \fn{server\_host} {\bf must} be set to the local machine's network name, and the \cd{\$TaskInfo} methods \cd{AppendSlave} and \cd{ModifyHostList} will need to be called from ! inside the task script. \hyperrefhtml{(Details.)}{See Sec.~}{ for details.}{sec:batchschedtask} ! \subsubsection{Batch master and slave specifics} The communication protocol\index{communication~protocol} between ! \fn{batchmaster.tcl} and \fn{batchslave.tcl} is evolving and is not described here. Check the source code for the latest details. ! The command line to start the master script is shown above. The ! slave, which is launched by the master using instructions specified in ! the task script\index{task~script}, takes a command line of the form ! \begin{verbatim} ! tclsh oommf.tcl batchslave $server(host) $server(port) $slaveid \ ! $passwd [aux_script [aux_args]] ! \end{verbatim} ! The arguments \cd{\$server(host)} through \cd{\$passwd} are ! provided by the master and should be specified in the task script ! using the \cd{\%connect\_info} percent substitution token. The ! \cd{aux\_script} is a script for the slave to source before processing ! any commands from the master. Typically this will be the ! micromagnetic batch mode script, \fn{batchsolve.tcl}. The ! \cd{aux\_args} are additional arguments that will be passed to ! \cd{aux\_script}. ! ! \subsubsection{Batch task scripts}\label{sec:batchschedtask} ! The master script creates an instance of a \cd{BatchTaskObj} object with the name \cd{\$TaskInfo}. The task script\index{task~script} uses method calls to this object to set up tasks to be performed. The only required call is to the \cd{AppendTask} method, e.g., --- 196,358 ---- \fn{batchsolve.tcl}\index{application!batchsolve}. \latex{See Sec.~\ref{sec:batchschedex} for example scripts.} ! \subsection{Batch Scheduling System} \ssechead{Overview} ! The \OBS\ supports complex scheduling of multiple batch jobs ! with two applications \app{batchmaster} and \app{batchslave}. ! The user launches \app{batchmaster} and provides it with ! a task script\index{task~script}. The task script is a ! \Tcl\ script that describes the set of tasks for \app{batchmaster} ! to accomplish. The work is actually done by instances of ! \app{batchslave} that are launched by \app{batchmaster}. ! The task script may be modeled after the included {\fn{simpletask.tcl}} or {\fn{multitask.tcl}} ! \hyperrefhtml{sample scripts}{sample scripts ! (Sec.~}{)}{sec:batchschedex}. The \OBS\ has been designed to control multiple sequential and ! concurrent micromagnetic simulations, but ! \app{batchmaster} and \app{batchslave} are completely general and may be used to schedule other types of jobs as well. ! \subsubsection{Master Scheduling Control: batchmaster} ! The application \app{batchmaster}\index{simulation!scheduling} is ! launched by the command line: \begin{verbatim} ! tclsh oommf.tcl batchmaster [standard options] task_script \ ! [host [port]] \end{verbatim} where \begin{description} ! \item[{\tt\bf task\_script}] ! is the user defined task (job) definition \Tcl\ script, ! \item[{\tt\bf host}] specifies the network address for the master to use (default is {\em localhost}), ! \item[{\tt\bf port}] is the port address for the master (default is {\em 0}, which selects an arbitrary open port). \end{description} ! When \app{batchmaster}\index{application!batchmaster} is run, it ! sources the task script. \Tcl\ commands in the task script ! should modify the global object \cd{\$TaskInfo} ! to inform the master what tasks to perform and ! optionally how to launch slaves to perform those tasks. ! The easiest way to create a task script is to modify one of the \hyperrefhtml{included example scripts}{example scripts in ! Sec.~}{}{sec:batchschedex}. ! More ! detailed instructions are in \html{the} \hyperrefhtml{Batch task ! scripts}{Sec.~}{}{sec:batchschedtask}\html{ section}. ! ! After sourcing the task script, ! \app{batchmaster} launches all the specified slaves, initializes ! each with a slave initialization script, and then feeds tasks ! sequentially from the task list to the slaves. When a slave completes a ! task it reports back to the master and is given the next unclaimed task. ! If there are no more tasks, the slave is shut down. When all the tasks ! are complete, the master prints a summary of the tasks and exits. ! ! When the task script requests the ! launching and controlling jobs off the local machine, ! with slaves running on remote ! machines, then the command line argument ! \fn{host} {\bf must} be set to the local machine's network name, and the \cd{\$TaskInfo} methods \cd{AppendSlave} and \cd{ModifyHostList} will need to be called from ! inside the task script. Furthermore, \OOMMF\ does not currently ! supply any methods for launching jobs on remote machines, ! so a task script which requests the launching of jobs on remote ! machines ! requires a working \verb+rsh+\index{application!rsh} command or ! equivalent\index{requirement!rsh}. ! \hyperrefhtml{(Details.)}{See Sec.~}{ for details.}{sec:batchschedtask} ! \subsubsection{Task Control: batchslave} ! ! The application \app{batchslave} may be launched by the command line: ! \begin{verbatim} ! tclsh oommf.tcl batchslave [standard options] \ ! host port id password [script [arg ...]] ! \end{verbatim} ! where ! \begin{description} ! \item[{\tt\bf host}] ! \item[{\tt\bf port}] ! Host and port at which to contact the master to serve. ! \item[{\tt\bf id}] ! \item[{\tt\bf password}] ! ID and password to send to the master for identification. ! \item[{\tt\bf auxscript}] ! \item[{\tt\bf aux\_arg ...}] ! The name of a script to source (which actually performs the ! task the slave is assigned), and any arguments it needs. ! \end{description} ! ! In normal operation, the user does not launch ! \app{batchslave}. Instead, instances of \app{batchslave} are ! launched by \app{batchmaster} as instructed by a task script. ! Although \app{batchmaster} may launch any slaves requested ! by its task script, by default it launches instances of ! \app{batchslave}. ! ! The function of \app{batchslave} is to make a connection to ! a master program, source the \cd{auxscript} and pass it the ! list of arguments \cd{aux\_arg ...}. Then it receives commands ! from the master, and evaluates them, making use of the ! facilities provided by \cd{auxscript}. Each command is typically a ! long-running one, such as solving a complete micromagnetic problem. ! When each command is complete, the \app{batchslave} reports back to ! its master program, asking for the next command. When the master ! program has no more commands \app{batchslave} terminates. ! ! Inside \app{batchmaster}, each instance of \app{batchslave} is ! launched by evaluating a \Tcl\ command. This command is called ! the spawn command, and it may be redefined by the task script ! in order to completely control which slave applications are launched ! and how they are launched. When \app{batchslave} is to be launched, ! the spawn command might be: ! \begin{verbatim} ! exec tclsh oommf.tcl batchslave -tk 0 -- $server(host) $server(port) \ ! $slaveid $passwd batchsolve.tcl -restart 1 & ! \end{verbatim} ! The \Tcl\ command \cd{exec} is used to launch subprocesses. When ! the last argument to \cd{exec} is \cd{\&}, the subprocess runs in ! the background. The rest of the spawn command should look familiar ! as the command line syntax for launching \app{batchslave}. ! ! The example spawn command above cannot be completely provided by ! the task script, however, because parts of it are only known ! by \app{batchmaster}. Because of this, the task script should ! define the spawn command using ``percent variables'' which are ! substituted by \app{batchmaster}. Continuing the example, the task ! script provides the spawn command: ! \begin{verbatim} ! exec %tclsh %oommf batchslave -tk 0 %connect_info \ ! batchsolve.tcl -restart 1 ! \end{verbatim} ! \app{batchmaster} replaces \cd{\%tclsh} with the path to \fn{tclsh}, ! and \cd{\%oommf} with the path to the \OOMMF\ bootstrap application. ! It also replaces \cd{\%connect\_info} with the five arguments from \verb+--+ ! through \cd{\$password} that provide \app{batchslave} ! the hostname and port where \app{batchmaster} is waiting for ! it to report to, and the ID and password it should pass back. ! In this example, the task script instructs \app{batchslave} to source the ! file \fn{batchsolve.tcl} and pass it the arguments \cd{-restart 1}. ! Finally, \app{batchmaster} always appends the argument \cd{\&} to ! the spawn command so that all slave applications are launched in the ! background. ! The communication protocol\index{communication~protocol} between ! \app{batchmaster} and \app{batchslave} is evolving and is not described here. Check the source code for the latest details. ! \subsubsection{Batch Task Scripts}\label{sec:batchschedtask} ! The application \app{batchmaster} ! creates an instance of a \cd{BatchTaskObj} object with the name \cd{\$TaskInfo}. The task script\index{task~script} uses method calls to this object to set up tasks to be performed. The only required call is to the \cd{AppendTask} method, e.g., *************** *** 281,288 **** $TaskInfo AppendTask A "BatchTaskRun taskA.mif" \end{verbatim} This method expects two arguments, a label for the task (here ``A'') and ! a script to accomplish the task. The script will be passed across a ! network socket\index{network~socket} from the master to the slave, and then the script will be interpreted by the slave. (In particular, keep in mind that the file system seen by the script will be that of the machine on which the slave process is running.) --- 360,369 ---- $TaskInfo AppendTask A "BatchTaskRun taskA.mif" \end{verbatim} This method expects two arguments, a label for the task (here ``A'') and ! a script to accomplish the task. ! The script will be passed across a ! network socket\index{network~socket} from ! \app{batchmaster} to a slave application, and then the script will be interpreted by the slave. (In particular, keep in mind that the file system seen by the script will be that of the machine on which the slave process is running.) *************** *** 300,306 **** \cd{BatchTaskRelaxCallback} and \cd{SolverTaskCleanup} procs may be redefined as well. At the start of each task \cd{SolverTaskInit} is called by \cd{BatchTaskRun} (in \fn{batchsolve.tcl}), at each ! equilibrium\index{simulation!equilibrium} \cd{BatchTaskRelaxCallback} is executed, and at the end of each task \cd{SolverTaskCleanup} is called. The first and third are passed the arguments that were passed to \cd{BatchTaskRun}. A simple --- 381,387 ---- \cd{BatchTaskRelaxCallback} and \cd{SolverTaskCleanup} procs may be redefined as well. At the start of each task \cd{SolverTaskInit} is called by \cd{BatchTaskRun} (in \fn{batchsolve.tcl}), at each ! control point\index{simulation!control~point} \cd{BatchTaskRelaxCallback} is executed, and at the end of each task \cd{SolverTaskCleanup} is called. The first and third are passed the arguments that were passed to \cd{BatchTaskRun}. A simple *************** *** 334,340 **** which runs a simulation with \cd{A} set to \latex{$13\times 10^{-12}$~J/m.}\html{13e-12 J/m.} This example is taken from the \fn{multitask.tcl} ! \hyperrefhtml{sample script}{script in Sec.~}{}{sec:batchschedex}. If you want to run more than one task at a time, then the \cd{\$TaskInfo} method \cd{AppendSlave} will have to be invoked. This --- 415,424 ---- which runs a simulation with \cd{A} set to \latex{$13\times 10^{-12}$~J/m.}\html{13e-12 J/m.} This example is taken from the \fn{multitask.tcl} ! \hyperrefhtml{sample script}{script in Sec.~}{}{sec:batchschedex}. (For ! commands accepted by \cd{mif} objects, see the file \fn{mmsinit.cc}. ! Another object than can be gainfully manipulated is \cd{solver}, which ! is defined in \fn{solver.tcl}.) If you want to run more than one task at a time, then the \cd{\$TaskInfo} method \cd{AppendSlave} will have to be invoked. This *************** *** 349,368 **** value for this item (which gets overwritten with the first call to \cd{\$TaskInfo AppendSlave}) is \begin{verbatim} ! 1 {exec %tclsh %oommf batchslave -tk 0 %connect_info batchsolve.tcl} \end{verbatim} ! This uses the \OOMMF\ bootstrap program to launch the \app{batchslave} ! application, with connection information provided by the master, and ! using the auxiliary script \fn{batchsolve.tcl}. The \fn{batchmaster} ! script provides several percent-style substitutions useful in slave launch scripts: \%tclsh, \%oommf, \%connect\_info, \%oommf\_root, and \%\%. The first is the \Tcl\ shell to use, the second is an absolute path to the \OOMMF\ bootstrap program on the master machine, the third is connection information needed by the \fn{batchslave} application, the fourth is the path to the \OOMMF\ root directory on the master machine, and the last is interpreted as a single percent. ! To launch slaves on a remote host, use \fn{rsh}\index{application!rsh} in the spawn command, e.g., \begin{verbatim} $TaskInfo AppendSlave 1 {exec rsh foo tclsh oommf/oommf.tcl \ --- 433,466 ---- value for this item (which gets overwritten with the first call to \cd{\$TaskInfo AppendSlave}) is \begin{verbatim} ! 1 {Oc_Application Exec batchslave -tk 0 %connect_info batchsolve.tcl} \end{verbatim} ! The \Tcl\ command \cd{Oc\_Application Exec} is supplied by \OOMMF\ ! and provides access to the same application-launching capability ! that is used by the \OOMMF\ ! \hyperrefhtml{bootstrap application}{bootstrap application ! (Sec.~}{)}{sec:cll}. Using a \cd{$<$spawn command$>$} of ! \cd{Oc\_Application Exec} instead of \cd{exec \%tclsh \%oommf} ! saves the spawning of an additional process. ! The default \cd{$<$spawn command$>$} ! launches the \app{batchslave} ! application, with connection information provided by \app{batchmaster}, and ! using the \cd{auxscript} \fn{batchsolve.tcl}. ! ! Before evaluating the \cd{$<$spawn command$>$}, \app{batchmaster} ! applies several percent-style substitutions useful in slave launch scripts: \%tclsh, \%oommf, \%connect\_info, \%oommf\_root, and \%\%. The first is the \Tcl\ shell to use, the second is an absolute path to the \OOMMF\ bootstrap program on the master machine, the third is connection information needed by the \fn{batchslave} application, the fourth is the path to the \OOMMF\ root directory on the master machine, and the last is interpreted as a single percent. + \app{batchmaster} automatically appends the argument + \cd{\&} to the + \cd{$<$spawn command$>$} so that the slave applications + are launched in the background. ! To launch \app{batchslave} on a remote host, use \fn{rsh}\index{application!rsh} in the spawn command, e.g., \begin{verbatim} $TaskInfo AppendSlave 1 {exec rsh foo tclsh oommf/oommf.tcl \ *************** *** 403,409 **** sequentially. Also, no slave init script is given, so the default procs in \fn{batchsolve.tcl} are used. Output will be magnetization states\index{file!magnetization} and tabular data\index{file!data~table} ! for each equilibrium\index{simulation!equilibrium} state, stored in files on the local machine with base names as specified in the \MIF\ files. --- 501,507 ---- sequentially. Also, no slave init script is given, so the default procs in \fn{batchsolve.tcl} are used. Output will be magnetization states\index{file!magnetization} and tabular data\index{file!data~table} ! at each control point\index{simulation!control~point}, stored in files on the local machine with base names as specified in the \MIF\ files. diff -crN oommf-1.1a2/doc/cllaunch-body.tex oommf/doc/cllaunch-body.tex *** oommf-1.1a2/doc/cllaunch-body.tex Wed Apr 5 00:23:05 2000 --- oommf/doc/cllaunch-body.tex Tue Apr 4 23:21:00 2000 *************** *** 37,68 **** \hyperrefhtml{\app{mmLaunch}}{\app{mmLaunch} (Sec.~}{)}{sec:mmlaunch}. \index{launch!command~line~arguments|(} ! Some of the \OOMMF\ applications take optional arguments when launched ! from the command line. Any command line arguments to the bootstrap ! application placed after the application name will be passed as command ! line arguments to the named application. For example, most applications ! support a \verb+-console+ option, which will bring up an additional window ! providing a command line interface into the application's \Tcl\ ! interpreter. (The console is mainly used for debugging.) ! \index{launch!command~line~arguments|)} \index{launch!foreground|(} ! The bootstrap application also supports some more complicated, ! more rarely used processing of its command line arguments. ! By default, the bootstrap application launches the named ! application in the background and exits. If the first argument ! to the bootstrap ! program is the option \fn{-fg}, however, the bootstrap ! program will block until the application it launches (now named ! in the second command line argument) exits. \index{launch!foreground|)} \index{launch!version~requirement|(} ! The application to be launched by the bootstrap application ! is usually requested as a simple name. When a particular ! version of an application is required, though, \fn{oommf.tcl} ! allows the user to include that requirement in the command line ! arguments. For example: \begin{verbatim} tclsh oommf.tcl "mmGraph 1.1" \end{verbatim} --- 37,72 ---- \hyperrefhtml{\app{mmLaunch}}{\app{mmLaunch} (Sec.~}{)}{sec:mmlaunch}. \index{launch!command~line~arguments|(} ! Any command line arguments to the bootstrap ! application which begin with the character \cd{+} modify its ! behavior. ! For a summary of all command line options recognized by the bootstrap ! application, run: ! \begin{verbatim} ! tclsh oommf.tcl +help ! \end{verbatim} \index{launch!foreground|(} ! The command line arguments \cd{+bg} and \cd{+fg} control how the ! bootstrap behaves after launching the requested application. It ! can exit immediately after launching the requested application ! in background mode (\cd{+bg}), or it can block until the ! launched application exits (\cd{+fg}). Each application ! registers within the \OOMMF\ system whether it prefers to be launched ! in foreground or background mode. If neither option is requested on ! the command line, the bootstrap launches the requested application ! in its preferred mode. \index{launch!foreground|)} \index{launch!version~requirement|(} ! The first command line argument which does not begin with the ! character \cd{+} is interpreted as a specification of what ! application should be launched. As described above, this is ! usually the simple name of an application. ! When a particular ! version of an application is required, though, the bootstrap ! allows the user to include that requirement as part of the ! specification. For example: \begin{verbatim} tclsh oommf.tcl "mmGraph 1.1" \end{verbatim} *************** *** 72,82 **** reported. \index{launch!version~requirement|)} ! For a summary of all command line options recognized by the bootstrap ! application, run: \begin{verbatim} ! tclsh oommf.tcl -h \end{verbatim} The bootstrap application should be infrequently used by most users. The application \hyperrefhtml{\app{mmLaunch}}{\app{mmLaunch} --- 76,137 ---- reported. \index{launch!version~requirement|)} ! The rest of the command line arguments which are not recognized by ! the bootstrap are passed along as arguments to the application the ! bootstrap launches. Since the bootstrap recognizes command line ! arguments which begin with \cd{+} and most other applications ! recognize command line arguments which being with \cd{-}, confusion ! about what options are provided to what programs can be avoided. ! For example, ! \begin{verbatim} ! tclsh oommf.tcl +help mmGraph ! \end{verbatim} ! prints out help information about the bootstrap and exits without ! launching mmGraph. However, \begin{verbatim} ! tclsh oommf.tcl mmGraph -help \end{verbatim} + launches mmGraph with the command line argument \cd{-help}. + mmGraph then display its own help message. + + \index{launch!standard~options|(} + All the \OOMMF\ applications accept the standard options listed below. + Some of the \OOMMF\ applications accept additional arguments when + launched from the command line, as documented in the corresponding + sections of this manual. When an option argument is specified as + \verb+<0|1>+, \verb+0+ typically means off, no or disable, and \verb+1+ + means on, yes or enable. + + \begin{description} + \item[{\tt\bf -version}] + Display the version of the application and exit. + + \item[{\tt\bf -help}] + Display a help message and exit. + + \item[{\tt\bf -tk $<$0\pipe 1$>$}] + Disable or enable Tk. Tk must be enabled for an application to display + graphical widgets. However, when Tk is enabled, on many platforms + the application is dependent on an X Windows server. If the + X Windows server dies, it will kill the application. Long-running + applications which do not inherently use display widgets support + disabling of Tk with \verb+-tk 0+. + Other applications which must use display widgets are unable to run + with the option \verb+-tk 0+. + + \item[{\tt\bf -cwd directory}] + Set the current working directory of the application. + + \item[{\tt\bf -console}] + Display a console widget in which Tcl + commands may be interactively typed into the application. + Useful for debugging. + \end{description} + + In addition, those applications which enable Tk accept the Tk + options like \verb+-display+. See the Tk documentation. + \index{launch!standard~options|)} + \index{launch!command~line~arguments|)} The bootstrap application should be infrequently used by most users. The application \hyperrefhtml{\app{mmLaunch}}{\app{mmLaunch} *************** *** 113,119 **** \fn{.../path/to/oommf} is in the execution path, the command line can be as simple as: \begin{verbatim} ! oommf.tcl \end{verbatim} from any working directory. \index{platform!Unix!executable~Tcl~scripts|)} --- 168,174 ---- \fn{.../path/to/oommf} is in the execution path, the command line can be as simple as: \begin{verbatim} ! oommf.tcl appName \end{verbatim} from any working directory. \index{platform!Unix!executable~Tcl~scripts|)} diff -crN oommf-1.1a2/doc/cmdutils-body.tex oommf/doc/cmdutils-body.tex *** oommf-1.1a2/doc/cmdutils-body.tex Wed Apr 5 00:23:05 2000 --- oommf/doc/cmdutils-body.tex Tue Apr 4 23:21:00 2000 *************** *** 18,47 **** (Sec.~}{)}{sec:mmdisp}\index{application!mmDisp}} configuration dialog box, specify conversion parameters. ! \sssechead{Command syntax} The \app{avf2ppm} launch command is: \begin{verbatim} ! tclsh oommf.tcl -fg avf2ppm [-h] [-tk 0] [-v ] [-f] \ ! [-type ] [-config ] [-ipat ] \ ! [-opatexp ] [-opatsub ] \ ! [-filter ] [--] [ ...] \end{verbatim} where \begin{description} ! \item[{\tt\bf -h}] ! Display help message. ! \item[{\tt\bf -tk 0}] ! If \verb+-tk 0+ is used, then \app{avf2ppm} will not use or initialize ! \Tk\index{requirement!Tk}. \Tk\ is only needed to convert background ! color requests (see \verb+misc,background+ in the configuration file ! discussion below) from symbolic form to hexadecimal representation ! (\cd{\#RRGGBB}). If the background color is specified using the ! hexadecimal format, then \Tk\ is not needed, and \app{avf2ppm} may be ! run with \verb+-tk 0+. ! \item[{\tt\bf -v $<$level$>$}] ! Verbosity (informational message) level, with 0 generating only ! error messages, and larger numbers generating additional information. ! The {\tt $<$level$>$} value is an integer, defaulting to 1. \item[{\tt\bf -f}] Force overwriting of existing (output) files. By default, if \app{avf2ppm} tries to create a file, say \fn{foo.ppm}, that already --- 18,35 ---- (Sec.~}{)}{sec:mmdisp}\index{application!mmDisp}} configuration dialog box, specify conversion parameters. ! \sssechead{Launching} The \app{avf2ppm} launch command is: \begin{verbatim} ! tclsh oommf.tcl avf2ppm [standard options] [-config file] [-f] \ ! [-filter program] [-format ] [-ipat pattern] \ ! [-opatexp regexp] [-opatsub sub] [-v level] [infile ...] \end{verbatim} where \begin{description} ! \item[{\tt\bf -config file}] ! User configuration file that specifies the image conversion ! parameters. This file is discussed in detail below. \item[{\tt\bf -f}] Force overwriting of existing (output) files. By default, if \app{avf2ppm} tries to create a file, say \fn{foo.ppm}, that already *************** *** 49,130 **** or \fn{foo.ppm-001}, \ldots, or \fn{foo.ppm-999}, that doesn't exist and writes to that instead. The {\tt -f} flag disallows alternate filename generation, and overwrites \fn{foo.ppm} instead. ! \item[{\tt\bf -type $<$P3\pipe P6\pipe B24$>$}] Specify the output image file format. Currently supported formats are the true color {\em Portable Pixmap} (PPM)\index{file!ppm} formats P3 (ASCII text) and P6 (binary), and the uncompressed BMP\index{file!bmp} 24 bits-per-pixel format. The default is P6. ! \item[{\tt\bf -config $<$filename$>$}] ! User configuration file that specifies the image conversion ! parameters. This file is discussed in detail below. ! \item[{\tt\bf -ipat $<$glob match spec$>$}] ! Specify input files using ``glob-style'' wildcards. Mostly useful ! in \DOS. ! \item[{\tt\bf -opatexp $<$rexp match spec$>$}] ! Specify the ``regular expression'' applied to input filenames to ! determine portion to be replaced in generation of output filenames. ! \linebreak[4] ! Default: {\verb!(\.[^.]?[^.]?[^.]?$|$)!} ! \item[{\tt\bf -opatsub $<$sub spec$>$}] The string with which to replace the portion of input filenames matched by the {\tt -opatsub} during output filename generation. The default is {\verb!.ppm!} for type P3 and P6 file output, {\verb!.bmp!} for B24 file output. ! \item[{\tt\bf -filter $<$program(s)$>$}] ! Post-processing application(s) to run on each \app{app2ppm} output ! file. ! \item[\latex{{\tt\bf {-}{-}}}\html{{\bf\verb+--+}}] ! (Two dashes.) Marks the end of options. Everything after this will ! be interpreted as input vector field files to process. ! \item[{\tt\bf $<$infile$>$ ...}] List of input files to process. \end{description} The file specification options require some explanation. Input files ! may be specified either by an explicit list ({\verb+[ ...]+}), ! or by giving a wildcard pattern, e.g., {\verb+-ipat *.omf+}, which is expanded in the usual way by \app{avf2ppm} (using the \Tcl\ command \cd{glob}). \Unix\ shells (sh, csh, etc.) automatically expand wildcards before handing control over to the invoked application, so the ! {\verb+-ipat+} option is not needed (although it is useful in case of a ``command-line too long'' error). \DOS\ does not do this expansion, so ! you must use {\verb+-ipat+} to get wildcard expansion\index{platform!Windows!wildcard~expansion} in \Windows. As each input file is processed, a name for the output file is produced from the input filename by rules determined by handing the ! {\verb+-opatexp+} and {\verb+-opatsub+} expressions to the \Tcl\ \cd{regsub} command. Refer to the \Tcl\ \cd{regsub} documentation for details, but essentially whatever portion of the input filename is ! matched by the {\verb+-opatexp+} expression is removed and replaced by ! the {\verb+-opatsub+} string. The default {\verb+-opatexp+} expression matches against any filename extension of up to 3 characters, and the ! default {\verb+-opatsub+} string replaces this with the extension either \fn{.ppm} or \fn{.bmp}. If you have command line image processing ``filter'' programs, e.g., \app{ppmtogif}\index{application!ppmtogif} (part of the ! NetPBM\index{NetPBM} package), then you can use the {\verb+-filter+} option to pipe the output of \app{avf2ppm} through that filter before it ! is written to the output file specified by the {\verb+-opat+} expressions. If the processing changes the format of the file, (e.g., \app{ppmtogif} converts from PPM\index{file!ppm} to GIF\index{file!gif}), then you will likely want to specify a ! {\verb+-opatsub+} different from the default. Here is an example that processes all input files with the \fn{.omf} extension, sending the output through \app{ppmtogif} before saving the results in a files with the extension \fn{.gif}: \begin{verbatim} ! tclsh oommf.tcl -fg avf2ppm -ipat *.omf -opatsub .gif \ ! -filter ppmtogif \end{verbatim} ! (On \Unix, either drop the {\verb+-ipat+} flag, or use quotes to protect the input file specification string from expansion by the shell, as in ! {\verb+'*.omf'+}.) You may also pipe together multiple filters, e.g., ! {\verb+-filter 'ppmquant 256 | ppmtogif'+}\index{application!ppmquant}. \sssechead{Configuration files}\index{file!configuration} The details of the conversion process are specified by plain-text --- 37,125 ---- or \fn{foo.ppm-001}, \ldots, or \fn{foo.ppm-999}, that doesn't exist and writes to that instead. The {\tt -f} flag disallows alternate filename generation, and overwrites \fn{foo.ppm} instead. ! \item[{\tt\bf -filter program}] ! Post-processing application to run on each \app{app2ppm} output ! file. May be a pipeline of many programs. ! \item[{\tt\bf -format $<$P3\pipe P6\pipe B24$>$}] Specify the output image file format. Currently supported formats are the true color {\em Portable Pixmap} (PPM)\index{file!ppm} formats P3 (ASCII text) and P6 (binary), and the uncompressed BMP\index{file!bmp} 24 bits-per-pixel format. The default is P6. ! \item[{\tt\bf -ipat pattern}] ! Specify input files using a pattern including ``glob-style'' wildcards. ! Mostly useful in \DOS. ! \item[{\tt\bf -opatexp regexp}] ! {\sloppy\hyphenation{default} Specify the ``regular expression'' ! applied to input filenames to determine portion to be replaced in ! generation of output filenames. ! Default:~{\verb!(\.[^.]?[^.]?[^.]?$|$)!}\par\hyphenation{de-fault}} ! \item[{\tt\bf -opatsub sub}] The string with which to replace the portion of input filenames matched by the {\tt -opatsub} during output filename generation. The default is {\verb!.ppm!} for type P3 and P6 file output, {\verb!.bmp!} for B24 file output. ! \item[{\tt\bf -v level}] ! Verbosity (informational message) level, with 0 generating only ! error messages, and larger numbers generating additional information. ! The {\tt level} value is an integer, defaulting to 1. ! \item[{\tt\bf infile ...}] List of input files to process. \end{description} + Note that by default \app{avf2ppm} is run with the standard option + \cd{-tk 0}. This means + \app{avf2ppm} will not use or initialize \Tk\index{requirement!Tk}. + \Tk\ is only needed to convert background color requests + (see \verb+misc,background+ in the configuration file discussion below) + from symbolic form to hexadecimal representation + (\cd{\#RRGGBB}). If the background color is not specified using the + hexadecimal format, then \Tk\ is needed, and \app{avf2ppm} must be + run with \cd{-tk 1}. + The file specification options require some explanation. Input files ! may be specified either by an explicit list (\cd{infile ...}), ! or by giving a wildcard pattern, e.g., \cd{-ipat *.omf}, which is expanded in the usual way by \app{avf2ppm} (using the \Tcl\ command \cd{glob}). \Unix\ shells (sh, csh, etc.) automatically expand wildcards before handing control over to the invoked application, so the ! \cd{-ipat} option is not needed (although it is useful in case of a ``command-line too long'' error). \DOS\ does not do this expansion, so ! you must use \cd{-ipat} to get wildcard expansion\index{platform!Windows!wildcard~expansion} in \Windows. As each input file is processed, a name for the output file is produced from the input filename by rules determined by handing the ! \cd{-opatexp} and \cd{-opatsub} expressions to the \Tcl\ \cd{regsub} command. Refer to the \Tcl\ \cd{regsub} documentation for details, but essentially whatever portion of the input filename is ! matched by the \cd{-opatexp} expression is removed and replaced by ! the \cd{-opatsub} string. The default \cd{-opatexp} expression matches against any filename extension of up to 3 characters, and the ! default \cd{-opatsub} string replaces this with the extension either \fn{.ppm} or \fn{.bmp}. If you have command line image processing ``filter'' programs, e.g., \app{ppmtogif}\index{application!ppmtogif} (part of the ! NetPBM\index{NetPBM} package), then you can use the \cd{-filter} option to pipe the output of \app{avf2ppm} through that filter before it ! is written to the output file specified by the \cd{-opat*} expressions. If the processing changes the format of the file, (e.g., \app{ppmtogif} converts from PPM\index{file!ppm} to GIF\index{file!gif}), then you will likely want to specify a ! \cd{-opatsub} different from the default. Here is an example that processes all input files with the \fn{.omf} extension, sending the output through \app{ppmtogif} before saving the results in a files with the extension \fn{.gif}: \begin{verbatim} ! tclsh oommf.tcl avf2ppm -ipat *.omf -opatsub .gif -filter ppmtogif \end{verbatim} ! (On \Unix, either drop the \cd{-ipat} flag, or use quotes to protect the input file specification string from expansion by the shell, as in ! \cd{-ipat '*.omf'}.) You may also pipe together multiple filters, e.g., ! \cd{-filter 'ppmquant 256 | ppmtogif'}\index{application!ppmquant}. \sssechead{Configuration files}\index{file!configuration} The details of the conversion process are specified by plain-text *************** *** 134,141 **** box. Each of the parameters is an element in an array named \cd{plot\_config}. The default values for this array are taken from the default configuration file ! \fn{oommf/app/mmdisp/avf2ppm.def}, which is a \Tcl\ script read during ! \app{avf2ppm} initialization. \begin{rawhtml} --- 129,136 ---- box. Each of the parameters is an element in an array named \cd{plot\_config}. The default values for this array are taken from the default configuration file ! \fn{oommf/app/mmdisp/scripts/avf2ppm.def}, ! which is a \Tcl\ script read during \app{avf2ppm} initialization. \begin{rawhtml} *************** *** 175,181 **** If \cd{arrow,autosample} is 0, then subsample the input vectors at this rate when drawing arrows. A value of 0 for \cd{arrow,subsample} is interpreted specially to display all data. ! \item[{\tt\bf arrow,mag}] Size of the arrows relative to the default size (represented as 1.0). \item[{\tt\bf arrow,antialias}] If 1\index{antialias}, then each pixel along the edge of an arrow is --- 170,176 ---- If \cd{arrow,autosample} is 0, then subsample the input vectors at this rate when drawing arrows. A value of 0 for \cd{arrow,subsample} is interpreted specially to display all data. ! \item[{\tt\bf arrow,size}] Size of the arrows relative to the default size (represented as 1.0). \item[{\tt\bf arrow,antialias}] If 1\index{antialias}, then each pixel along the edge of an arrow is *************** *** 191,200 **** \cd{pixel,antialias} element, and the auto subsampling rate for pixels is considerably denser than for arrows. \item[{\tt\bf misc,background}] ! Specify the background color, using any of the forms recognized by the ! \Tk\ routine \cd{Tk\_GetColor}. In particular, you may use symbolic ! names such as white, black, green, or hexadecimal representations with ! the format \cd{\#RRGGBB} (for example, \cd{\#ffff00} is yellow). \item[{\tt\bf misc,drawboundary}] If 1, then draw the bounding polygon\index{boundary}, if any, as specified in the input vector field format file. --- 186,196 ---- \cd{pixel,antialias} element, and the auto subsampling rate for pixels is considerably denser than for arrows. \item[{\tt\bf misc,background}] ! Specify the background color, using the hexadecimal format \cd{\#RRGGBB} ! (for example, \cd{\#ffff00} is yellow), or, when \cd{-tk 1} is active, ! using any of the forms recognized by the ! \Tk\ routine \cd{Tk\_GetColor}, including symbolic ! names such as white, black, green. \item[{\tt\bf misc,drawboundary}] If 1, then draw the bounding polygon\index{boundary}, if any, as specified in the input vector field format file. *************** *** 237,243 **** arrow,quantity z arrow,autosample 1 arrow,subsample 10 ! arrow,mag 1 arrow,antialias 1 pixel,status 1 pixel,colormap Teal-White-Red --- 233,239 ---- arrow,quantity z arrow,autosample 1 arrow,subsample 10 ! arrow,size 1 arrow,antialias 1 pixel,status 1 pixel,colormap Teal-White-Red *************** *** 245,252 **** pixel,quantity x pixel,autosample 1 pixel,subsample 2 ! pixel,mag 1 ! misc,background white misc,drawboundary 1 misc,margin 10 misc,width 640 --- 241,248 ---- pixel,quantity x pixel,autosample 1 pixel,subsample 2 ! pixel,size 1 ! misc,background #FFFFFF misc,drawboundary 1 misc,margin 10 misc,width 640 *************** *** 278,302 **** requires Tk 8.0\index{requirement!Tk~8.0+} or later.) ! \sssechead{Command syntax} The \app{any2ppm} launch command is: \begin{verbatim} ! tclsh oommf.tcl -fg any2ppm [-h] [-noinfo] [-o ] \ ! [ ...] \end{verbatim} where \begin{description} - \item[{\tt\bf -h}] - Display help message. \item[{\tt\bf -noinfo}] ! Suppress writing of progress info to stderr. ! \item[{\tt\bf -o $<$outfile$>$}] ! Write output to {\tt$<$outname$>$}; use ``-'' to pipe output to stdout. The default is to create a new file by stripping the ! extension, if any, off of each input filename, and appending \cd{.ppm}. If the generated filename already exists, a ``-000'' or ``-001'' \ldots\ suffix is appended. ! \item[{\tt\bf $<$infile$>$ ...}] List of input files to process. \end{description} --- 274,296 ---- requires Tk 8.0\index{requirement!Tk~8.0+} or later.) ! \sssechead{Launching} The \app{any2ppm} launch command is: \begin{verbatim} ! tclsh oommf.tcl any2ppm [standard options] [-noinfo] \ ! [-o outfile] [infile ...] \end{verbatim} where \begin{description} \item[{\tt\bf -noinfo}] ! Suppress writing of progress information to stderr. ! \item[{\tt\bf -o outfile}] ! Write output to {\tt outname}; use ``-'' to pipe output to stdout. The default is to create a new file by stripping the ! extension, if any, off of each input filename, and appending \fn{.ppm}. If the generated filename already exists, a ``-000'' or ``-001'' \ldots\ suffix is appended. ! \item[{\tt\bf infile ...}] List of input files to process. \end{description} *************** *** 319,342 **** Sec.~\ref{sec:vfformats})}{\htmlref{recognized formats}{sec:vfformats} (\OVF, \VIO)} into the \OVF\ 1.0 format. ! \sssechead{Command syntax} The \app{avf2ovf} launch command is: \begin{verbatim} ! tclsh oommf.tcl -fg avf2ovf [-h] [-text|-b4|-b8] [-reg|-irreg] \ ! infile >outfile \end{verbatim} where \begin{description} ! \item[{\tt\bf -h}] ! Display help message. ! \item[{\tt\bf -text\pipe -b4\pipe -b8}] ! Specify output data format. The default is ASCII text; -b4 selects ! 4-byte binary, -b8 selects 8-byte binary. (The OVF format has an ASCII text header in all cases.) ! \item[{\tt\bf -reg\pipe -irreg}] ! Specify output grid\index{grid} structure. The default is -reg, which ! will output a regular (rectangular) grid if then input is recognized ! as a regular grid. The -irreg option forces irregular mesh style output. \item[{\tt\bf infile}] Name of input file to process. Must be one of the recognized formats, --- 313,334 ---- Sec.~\ref{sec:vfformats})}{\htmlref{recognized formats}{sec:vfformats} (\OVF, \VIO)} into the \OVF\ 1.0 format. ! \sssechead{Launching} The \app{avf2ovf} launch command is: \begin{verbatim} ! tclsh oommf.tcl avf2ovf [standard options] [-format ] \ ! [-grid ] infile >outfile \end{verbatim} where \begin{description} ! \item[{\tt\bf -format $<$text\pipe b4\pipe b8$>$}] ! Specify output data format. The default is ASCII \cd{text}; \cd{b4} selects ! 4-byte binary, \cd{b8} selects 8-byte binary. (The OVF format has an ASCII text header in all cases.) ! \item[{\tt\bf -grid $<$reg\pipe irreg$>$}] ! Specify output grid\index{grid} structure. The default is \cd{reg}, which ! will output a regular (rectangular) grid if the input is recognized ! as a regular grid. The option \cd{-grid irreg} forces irregular mesh style output. \item[{\tt\bf infile}] Name of input file to process. Must be one of the recognized formats, *************** *** 346,353 **** ``$>$'' to send the output to a file. \end{description} ! The -text and -irreg options are useful for preparing files for import ! into other applications, because all non-data lines are readily identified by a leading ``\verb+#+,'' and each data line is a 6-tuple consisting of the node location and vector value. Pay attention, however, to the scaling of the vector value as specified by %%%%%%%%%% --- 338,346 ---- ``$>$'' to send the output to a file. \end{description} ! The \cd{-format text} and \cd{-grid irreg} options are useful for ! preparing files for import ! into non-\OOMMF\ applications, because all non-data lines are readily identified by a leading ``\verb+#+,'' and each data line is a 6-tuple consisting of the node location and vector value. Pay attention, however, to the scaling of the vector value as specified by %%%%%%%%%% *************** *** 355,357 **** --- 348,481 ---- For output format details, see the \hyperrefhtml{OVF file description}{OVF file description (Sec.~}{)}{sec:ovfformat}. + + \subsection{Calculating \vH\ Fields from Magnetization: + mag2hfield}\label{sec:mag2hfield}% + \index{file!magnetization}\index{file!vector~field}\index{file!conversion} + + The \app{mag2hfield}\index{application!mag2hfield} utility takes a + micromagnetic problem specification + file (\hyperrefhtml{\fn{.mif}}{\fn{.mif}, see Sec.~}{}{sec:mifformat}) + and a + magnetization file + (\hyperrefhtml{\fn{.omf}}{\fn{.omf}, see Sec.~}{}{sec:vfformats}) + and + uses the \hyperrefhtml{mmSolve2D}{mmSolve2D (Sec.~}{)}{sec:mmsolve2d} + computation engine to generate files for the resulting component + (magnetostatic, exchange, crystalline anisotropy) and total \vH\ fields. + The main use of this utility to study the fields in a simulation + using magnetization files generated by an earlier \app{mmSolve2D} run. + + \sssechead{Launching} + The \app{mag2hfield} launch command is: + \begin{verbatim} + tclsh oommf.tcl mag2hfield [standard options] [-fieldstep #] \ + [-component [all,][anis,][applied,][demag,][exchange,][total]] \ + mif_file omf_file + \end{verbatim} + where + \begin{description} + \item[{\tt\bf -component [all,][anis,][applied,][demag,][exchange,][total]}] + Specify all field components that are desired. Optional; default is + {\tt total}, which is the sum of the crystalline anisotropy, applied, + demagnetization (self-magnetostatic) and exchange fields. + \item[{\tt\bf -fieldstep \lb}] + Applied field step index, following the schedule specified in the + input \MIF\ file (0 denotes the initial field). Optional; default is + 0. + \item[{\tt\bf mif\_file}] + \MIF\ micromagnetic problem specification file (.mif). Required. + \item[{\tt\bf omf\_file}] + Magnetization state file. This can be in any of the formats accepted + by the \cd{avfFile} record of the input \MIF\ file. Required. + \end{description} + + The \vH\ field output file format is determined by the + \latexhtml{\cd{Total Field Output Format} record of the input \MIF\ file + (Sec.~\ref{sec:mifformat}).}{\htmlref{Total Field Output + Format}{par:mifoutspec} record of the input \MIF\ file.} The output + file names have the form \fn{{\em basename}-hanis.ohf}, \fn{{\em + basename}-happlied.ohf}, etc., where {\em basename} is the input + \fn{.omf} magnetization file name, stripped of any trailing \fn{.omf} or + \fn{.ovf} extension. + + \subsection{Platform-Independent Make: + pimake}\label{sec:pimake}% + \index{application!pimake} + + The application \app{pimake}\index{application!pimake} + is similar in operation to the + \Unix\ utility program \fn{make}\index{application!make}, + but it is written entirely in + \Tcl\ so that it will run anywhere \Tcl\ is installed. + Like \fn{make}, \fn{pimake} controls the building of one + file, the {\em target}, from other files. + Just as \fn{make} is controlled by rules in + files named \fn{Makefile} or \fn{makefile}, \fn{pimake} is controlled + by rules in files named \fn{makerules.tcl}. + + \sssechead{Launching} + The \app{pimake} launch command is: + \begin{verbatim} + tclsh oommf.tcl pimake [standard options] \ + [-d] [-i] [-k] [target] + \end{verbatim} + where + \begin{description} + \item[{\tt\bf -d}] + Print verbose information about dependencies. + \item[{\tt\bf -i}] + Normally an error halts operation. When \cd{-i} is specified, + ignore errors and try to continue updating all dependencies + of target. + \item[{\tt\bf -k}] + Normally an error halts operation. + When \cd{-k} is specified, and an error is encountered, stop + processing dependencies which depend on the error, but continue + updating other dependencies of target. + \item[{\tt\bf target}] + The file to build. May also be (and usually is) a symbolic + target name. See below for standard symbolic targets. By default, + the first target in \fn{makerules.tcl} is built. + \end{description} + + There are several targets which may be used as arguments to + \app{pimake} to achieve different tasks. + Each target builds in the current directory + and all subdirectories. The standard targets are: + \begin{description} + \item[{\tt\bf upgrade}] + Used immediately after unpacking a distribution, it removes + any files which were part of a previous release, but are not + part of the unpacked distrubtion. + \item[{\tt\bf all}] + Creates all files created by the \fn{configure} target (see below). + Compiles and links all the executables and libraries. + Constructs all index files. + \item[{\tt\bf configure}] + Creates subdirectories with the same name as the platform type. + Constructs a \fn{port.h} file which includes C++ header information + specific to the platform. + \item[{\tt\bf objclean}] + Removes the intermediate object files created by the compile and + link steps. Leaves working executables in place. Leaves + \OOMMF\ in the state of its distribution with pre-compiled + executables. + \item[{\tt\bf clean}] + Removes the files removed by the \fn{objclean} target. + Also removes the executables and libraries created by the \fn{all} + target. Leaves the files generated by the \fn{configure} target. + \item[{\tt\bf distclean}] + Removes the files removed by the \fn{clean} target. + Also removes all files and directories generated by + \fn{configure} target. Leaves only the files which + are part of the source code distribution. + \item[{\tt\bf maintainer-clean}] + Remove all files which can possibly be generated from other files. + The generation might require specialized developer tools. This + target is not recommended for end-users, but may be helpful for + developers. + \item[{\tt\bf help}] + Print a summary of the standard targets. + \end{description} + diff -crN oommf-1.1a2/doc/credits-body.tex oommf/doc/credits-body.tex *** oommf-1.1a2/doc/credits-body.tex Wed Apr 5 00:23:06 2000 --- oommf/doc/credits-body.tex Tue Apr 4 23:21:00 2000 *************** *** 38,47 **** or suggestions for improvements. Many thanks to all these people, including Olivier G\'{e}rardin, Ping He, Michael Ho, Pavel Kabos, Michael Kleiber, H. T. Leung, David Lewis, Sang Ho Lim, Yi Liu, Van Luu, ! Andy P. Manners, Valentine Novosad, Andrew Perrella, Anil Prabhakar, ! Robert Ravlic, Stephen E. Russek, Renat Sabirianov, Zhupei Shi, Xiaobo ! Tan, Stephen Thompson, Pieter Visscher, Scott L. Whittenburg, Kong ! Xiangyang, Chengtao Yu, Steven A. Zielke, and Pei Zou. If you have bug reports\index{reporting~bugs}, contributed code, feature requests, or other comments for the \OOMMF\ developers, please send them --- 38,48 ---- or suggestions for improvements. Many thanks to all these people, including Olivier G\'{e}rardin, Ping He, Michael Ho, Pavel Kabos, Michael Kleiber, H. T. Leung, David Lewis, Sang Ho Lim, Yi Liu, Van Luu, ! Andy P. Manners, Edward Myers, Valentine Novosad, Andrew Perrella, Anil ! Prabhakar, Robert Ravlic, Stephen E. Russek, Renat Sabirianov, Zhupei ! Shi, Xiaobo Tan, Stephen Thompson, Pieter Visscher, Scott ! L. Whittenburg, Kong Xiangyang, Chengtao Yu, Steven A. Zielke, and Pei ! Zou. If you have bug reports\index{reporting~bugs}, contributed code, feature requests, or other comments for the \OOMMF\ developers, please send them diff -crN oommf-1.1a2/doc/fileformats-body.tex oommf/doc/fileformats-body.tex *** oommf-1.1a2/doc/fileformats-body.tex Wed Apr 5 00:23:06 2000 --- oommf/doc/fileformats-body.tex Tue Apr 4 23:21:00 2000 *************** *** 130,140 **** $\alpha$ is the damping coefficient (dimensionless). \end{quotation} } % close html ! The last is specified by the ``Damp Coef'' entry in the MIF ! file. If not specified, a default value of 0.5 is used, which allows ! the solver to converge in a reasonable number of iterations. ! Physical materials will typically have a damping coefficient in the ! range $0.004$ to $0.15$. \end{itemize} \sssechead{Demag specification}\label{par:mifdemagspec}\par --- 130,143 ---- $\alpha$ is the damping coefficient (dimensionless). \end{quotation} } % close html ! The last is specified by the ``Damp Coef'' entry in the MIF file. If ! not specified, a default value of 0.5 is used, which allows the ! solver to converge in a reasonable number of iterations. Physical ! materials will typically have a damping coefficient in the range ! $0.004$ to $0.15$. The solver engine ! \hyperrefhtml{\app{mmSolve2D}}{\app{mmSolve2D} ! (Sec.~}{)}{sec:mmsolve2d}\index{application!mmSolve2D} ! requires a non-zero damping coefficient. \end{itemize} \sssechead{Demag specification}\label{par:mifdemagspec}\par *************** *** 166,172 **** accurate method. \verb+:-}+ %\html{ :-\}} \end{itemize} ! The 3dSlab and 3dCharge methods require that the Part Thickness (cf.\ the \htmlref{Part Geometry}{par:partgeometry} section) be set. All algorithms use Fast Fourier Transform (FFT)\index{FFT} techniques to accelerate the calculations. --- 169,176 ---- accurate method. \verb+:-}+ %\html{ :-\}} \end{itemize} ! All of these algorithms except FastPipe and None require that the ! Part Thickness (cf.\ the \htmlref{Part Geometry}{par:partgeometry} section) be set. All algorithms use Fast Fourier Transform (FFT)\index{FFT} techniques to accelerate the calculations. *************** *** 176,192 **** \sssechead{Part geometry}\label{par:partgeometry}\index{part~geometry}\par \begin{itemize} \item {\bf Part Width:} Nominal part width ($x$-dimension) in ! meters. Will be automatically adjusted to an integral multiple of ! Cell Size. \item {\bf Part Height:} Nominal part height ($y$-dimension) in ! meters. Will be automatically adjusted to an integral multiple of ! Cell Size. ! \item {\bf Part Thickness:} Part ! thickness ($z$-dimension) in meters. Required for 3D models. \item {\bf Cell Size:}\index{cell~size} In-plane ($xy$-plane) edge dimension of base calculation cell. This cell is a rectangular brick, with square in-plane cross-section and thickness given by ! Part Thickness. \item {\bf Part Shape:} Optional. Part shape in the $xy$-plane; must be one of the following: \begin{itemize} --- 180,199 ---- \sssechead{Part geometry}\label{par:partgeometry}\index{part~geometry}\par \begin{itemize} \item {\bf Part Width:} Nominal part width ($x$-dimension) in ! meters. Should be an integral multiple of Cell~Size. \item {\bf Part Height:} Nominal part height ($y$-dimension) in ! meters. Should be an integral multiple of Cell~Size. ! \item {\bf Part~Thickness:} Part thickness ($z$-dimension) in meters. ! Required for 3D demag kernels. \item {\bf Cell Size:}\index{cell~size} In-plane ($xy$-plane) edge dimension of base calculation cell. This cell is a rectangular brick, with square in-plane cross-section and thickness given by ! Part~Thickness. N.B.: Part~Width and Part~Height should be ! integral multiples of Cell~Size. Part~Width and Part~Height will ! be automatically adjusted slightly (up to 0.01\%) to meet this ! condition (affecting a small change to the problem), but if the ! required adjustment is too large then the problem specification is ! considered to be invalid, and the solver will signal an error. \item {\bf Part Shape:} Optional. Part shape in the $xy$-plane; must be one of the following: \begin{itemize} *************** *** 200,206 **** \item {\bf Oval r}\\ Shape is a rounded rectangle, where each corner is replaced by a quarter circle with radius $r$, where ! $r$ is the second parameter. \item {\bf Mask filename}\index{file!mask}\\ Shape is determined by a 2-color bitmap file, the name of which is specified as the second parameter. The given filename must --- 207,214 ---- \item {\bf Oval r}\\ Shape is a rounded rectangle, where each corner is replaced by a quarter circle with radius $r$, where ! \latex{$0\leq r\leq 1$}\html{$0 <= r <= 1$} ! is relative to the half-width of the rectangle. \item {\bf Mask filename}\index{file!mask}\\ Shape is determined by a 2-color bitmap file, the name of which is specified as the second parameter. The given filename must *************** *** 544,551 **** rectangular and irregular meshes, in binary and \ASCII\ text. The \OVF\ 0.0 format (formerly SVF\index{file!svf}) is an older, simpler format that can be useful for importing vector field data into \OOMMF\ ! from other programs. (A third format, the {\em Vector Input/Output} ! (VIO\index{file!vio}) format, is used by some precursors to the \OOMMF\ code. Although \OOMMF\ is able to read the VIO format, its use is deprecated. New programs should not make use of it.) --- 552,560 ---- rectangular and irregular meshes, in binary and \ASCII\ text. The \OVF\ 0.0 format (formerly SVF\index{file!svf}) is an older, simpler format that can be useful for importing vector field data into \OOMMF\ ! from other programs. (A third format, the {\em ! VecFil\index{file!VecFil}} or {\em Vector Input/Output} ! (VIO\index{file!vio}) format, was used by some precursors to the \OOMMF\ code. Although \OOMMF\ is able to read the VIO format, its use is deprecated. New programs should not make use of it.) *************** *** 783,789 **** supporting irregularly sampled data. It is intended as an aid for importing data from non-\OOMMF\ programs, and is backwards compatible with the format used for problem submissions for the ! \htmladdnormallinkfoot{first \muMag\ standard problem}{http://www.ctcms.nist.gov/\~{}rdm/stdprob\_1.html}. Users of previous releases of \OOMMF\ may recognize the \OVF\ 0.0 format --- 792,798 ---- supporting irregularly sampled data. It is intended as an aid for importing data from non-\OOMMF\ programs, and is backwards compatible with the format used for problem submissions for the ! \htmladdnormallinkfoot{first \mumag\ standard problem}{http://www.ctcms.nist.gov/\~{}rdm/stdprob\_1.html}. Users of previous releases of \OOMMF\ may recognize the \OVF\ 0.0 format diff -crN oommf-1.1a2/doc/filesource-body.tex oommf/doc/filesource-body.tex *** oommf-1.1a2/doc/filesource-body.tex Wed Apr 5 00:23:06 2000 --- oommf/doc/filesource-body.tex Tue Apr 4 23:21:00 2000 *************** *** 24,30 **** on the command line the \MIF\ problem description file it should serve to client applications. The command line is \begin{verbatim} ! tclsh oommf.tcl FileSource [filename] [-console] \end{verbatim} Although \app{FileSource} does not appear on the list of --- 24,30 ---- on the command line the \MIF\ problem description file it should serve to client applications. The command line is \begin{verbatim} ! tclsh oommf.tcl FileSource [standard options] [filename] \end{verbatim} Although \app{FileSource} does not appear on the list of Binary files oommf-1.1a2/doc/giffiles/mmdisp-ss.gif and oommf/doc/giffiles/mmdisp-ss.gif differ Binary files oommf-1.1a2/doc/giffiles/mmgraph-ss.gif and oommf/doc/giffiles/mmgraph-ss.gif differ Binary files oommf-1.1a2/doc/giffiles/mmprobed-ss.gif and oommf/doc/giffiles/mmprobed-ss.gif differ diff -crN oommf-1.1a2/doc/install-body.tex oommf/doc/install-body.tex *** oommf-1.1a2/doc/install-body.tex Wed Apr 5 00:23:06 2000 --- oommf/doc/install-body.tex Tue Apr 4 23:21:00 2000 *************** *** 45,54 **** \index{requirement!disk~space|(} The \OOMMF\ source distribution unpacks into a directory tree containing ! about 400 files and directories, occupying between 5 and 6 MB ! of storage. Compiling and linking for each platform consumes approximately an ! additional 5 MB of storage. The \OOMMF\ distribution containing \Windows\ executables unpacks into a directory tree occupying about 8 MB of storage. {\bf Note:} On a non-compressed {\tt FAT16} file system on a large disk, \OOMMF\ may take up much more disk space. This is because --- 45,53 ---- \index{requirement!disk~space|(} The \OOMMF\ source distribution unpacks into a directory tree containing ! about 500 files and directories, occupying about 7 MB of storage. Compiling and linking for each platform consumes approximately an ! additional 7 MB of storage. The \OOMMF\ distribution containing \Windows\ executables unpacks into a directory tree occupying about 8 MB of storage. {\bf Note:} On a non-compressed {\tt FAT16} file system on a large disk, \OOMMF\ may take up much more disk space. This is because *************** *** 64,72 **** builds on the following platforms, although porting to others should not be difficult: \begin{center} \begin{makeimage} ! \htmlimage{no_transparent} % mmHelp renders transparent images rather slowly \begin{tabular}{|l|l|}\hline Platform & Compilers \\ \hline AIX & Gnu gcc \\ --- 63,73 ---- builds on the following platforms, although porting to others should not be difficult: + % Note: Don't use transparent images, because mmHelp + % renders transparent them rather slowly. \begin{center} \begin{makeimage} ! \htmlimage{no_transparent} \begin{tabular}{|l|l|}\hline Platform & Compilers \\ \hline AIX & Gnu gcc \\ *************** *** 75,84 **** Alpha/Windows NT & Microsoft Visual C++ \\ HP-UX & HP C++ (cfront), aC++ \\ Intel/Linux & Gnu gcc/egcs \\ ! Intel/Windows NT, 95, 98 & Microsoft Visual C++, Cygwin gcc \\ MIPS/IRIX 6 (SGI) & MIPSpro C++, Gnu gcc \\ ! SPARC/Solaris & Sun Workshop C++, Gnu gcc \\ ! SPARC/SunOS 4 & Sun Workshop C++, Gnu gcc \\ \hline \end{tabular} \end{makeimage} \end{center} --- 76,85 ---- Alpha/Windows NT & Microsoft Visual C++ \\ HP-UX & HP C++ (cfront), aC++ \\ Intel/Linux & Gnu gcc/egcs \\ ! Intel/Windows NT, 95, 98 & Microsoft Visual C++, \\ ! & Cygwin gcc, Borland C++ \\ MIPS/IRIX 6 (SGI) & MIPSpro C++, Gnu gcc \\ ! SPARC/Solaris & Sun Workshop C++, Gnu gcc \\ \hline \end{tabular} \end{makeimage} \end{center} *************** *** 101,108 **** x86-based microprocessor system. Each \Windows\ binary distribution is compatible with only a particular sequence of releases of \Tcl/\Tk. We release one \Windows\ binary distribution compatible ! with \Tcl/\Tk\ 8.0.x, and one \Windows\ binary distribution ! compatible with \Tcl/\Tk\ 8.2.x. Other release formats, e.g., pre-compiled executables for Microsoft \Windows\ NT running on a Digital Alpha Systems RISC-based microprocessor system, and/or compatible with \Tcl/\Tk\ version 7.6/4.2 --- 102,111 ---- x86-based microprocessor system. Each \Windows\ binary distribution is compatible with only a particular sequence of releases of \Tcl/\Tk. We release one \Windows\ binary distribution compatible ! with \Tcl/\Tk\ 8.0.x, one \Windows\ binary distribution ! compatible with \Tcl/\Tk\ 8.2.x, ! and one \Windows\ binary distribution ! compatible with \Tcl/\Tk\ 8.3.x. Other release formats, e.g., pre-compiled executables for Microsoft \Windows\ NT running on a Digital Alpha Systems RISC-based microprocessor system, and/or compatible with \Tcl/\Tk\ version 7.6/4.2 *************** *** 112,118 **** For the first format, unpack the distribution archive using gunzip and tar: \begin{verbatim} ! gunzip -c oommf11a1_19991029.tar.gz | tar xvf - \end{verbatim} For the other format(s), you will need a utility program to unpack the --- 115,121 ---- For the first format, unpack the distribution archive using gunzip and tar: \begin{verbatim} ! gunzip -c oommf11b0_20000404.tar.gz | tar xvf - \end{verbatim} For the other format(s), you will need a utility program to unpack the *************** *** 124,130 **** \htmladdnormallinkfoot{UnZip}{http://www.cdrom.com/pub/infozip/UnZip.html}. Using your utility, unpack the \fn{.zip} archive, e.g. \begin{verbatim} ! unzip oommf11a1_19991029.zip \end{verbatim} For either distribution format, the unpacking sequence creates a --- 127,133 ---- \htmladdnormallinkfoot{UnZip}{http://www.cdrom.com/pub/infozip/UnZip.html}. Using your utility, unpack the \fn{.zip} archive, e.g. \begin{verbatim} ! unzip oommf11b0_20000404.zip \end{verbatim} For either distribution format, the unpacking sequence creates a *************** *** 152,182 **** your \Tcl/\Tk\ documentation. In the root directory of the \OOMMF\ distribution is a file ! named \fn{platform.tcl}. It will print a summary of your platform configuration when it is evaluated by \fn{tclsh}. This summary describes your platform type, your C++ compiler, and your \Tcl/\Tk\ installation. As an example, ! here is the typical output ! from \fn{platform.tcl} on a Linux/Alpha system: \begin{verbatim} ! $ tclsh platform.tcl <24537> platform info: ! OOMMF release 1.1.0.2 Platform Name: linalp C++ compiler: /usr/bin/g++ Tcl configuration file: /usr/local/lib/tclConfig.sh ! tclsh: /usr/local/bin/tclsh8.2 ! Tcl release: 8.2.1 (config) 8.2.1 (running) Tk configuration file: /usr/local/lib/tkConfig.sh ! wish: /usr/local/bin/wish8.2 ! Tk release: 8.2.1 (config) 8.2.1 (running) \end{verbatim} ! If \fn{platform.tcl} doesn't print a summary like that, it should instead print an error message describing why it can't. For example, if your \Tcl\ installation is older than release 7.5, the error message will report that fact. Follow whatever ! instructions are provided to get \fn{platform.tcl} to print a summary of platform configuration information. \index{platform!names|(} --- 155,188 ---- your \Tcl/\Tk\ documentation. In the root directory of the \OOMMF\ distribution is a file ! named \fn{oommf.tcl}. It is the ! \hyperrefhtml{bootstrap application}{bootstrap application (Sec.~}{)}{sec:cll} ! which is used to launch all \OOMMF\ software. With the command line ! argument \cd{+platform}, ! it will print a summary of your platform configuration when it is evaluated by \fn{tclsh}. This summary describes your platform type, your C++ compiler, and your \Tcl/\Tk\ installation. As an example, ! here is the typical output on a Linux/Alpha system: \begin{verbatim} ! $ tclsh oommf.tcl +platform <24537> platform info: ! OOMMF release 1.1.1.0 Platform Name: linalp C++ compiler: /usr/bin/g++ Tcl configuration file: /usr/local/lib/tclConfig.sh ! tclsh: /usr/local/bin/tclsh8.3 ! Tcl release: 8.3.0 (config) 8.3.0 (running) Tk configuration file: /usr/local/lib/tkConfig.sh ! wish: /usr/local/bin/wish8.3 ! Tk release: 8.3.0 (config) 8.3.0 (running) \end{verbatim} ! If \cd{oommf.tcl +platform} doesn't print a summary like that, it should instead print an error message describing why it can't. For example, if your \Tcl\ installation is older than release 7.5, the error message will report that fact. Follow whatever ! instructions are provided to get \cd{oommf.tcl +platform} to print a summary of platform configuration information. \index{platform!names|(} *************** *** 188,194 **** used by \OOMMF\ in index and configuration files and to name directories so that a single \OOMMF\ installation can support multiple platform types. ! If \fn{platform.tcl} reports the platform name to be ``unknown'', then you will need to add some configuration files to help \OOMMF\ assign a name to your platform type, and associate with that name some of the key features of your --- 194,200 ---- used by \OOMMF\ in index and configuration files and to name directories so that a single \OOMMF\ installation can support multiple platform types. ! If \cd{oommf.tcl +platform} reports the platform name to be ``unknown'', then you will need to add some configuration files to help \OOMMF\ assign a name to your platform type, and associate with that name some of the key features of your *************** *** 225,231 **** is recorded in the \Windows\ registry\index{platform!Windows!no~Tcl~configuration~file}, so it is normal to have ! \fn{platform.tcl} report ``none found''. If \fn{platform.tcl} reports ``none found'', but you know that an appropriate \Tcl\ configuration file is present on your system, you can tell \OOMMF\ where to find the file by setting the environment variable --- 231,237 ---- is recorded in the \Windows\ registry\index{platform!Windows!no~Tcl~configuration~file}, so it is normal to have ! \cd{oommf.tcl +platform} report ``none found''. If \cd{oommf.tcl +platform} reports ``none found'', but you know that an appropriate \Tcl\ configuration file is present on your system, you can tell \OOMMF\ where to find the file by setting the environment variable *************** *** 242,251 **** The second line describing your \Tcl\ installation reports the absolute pathname of the \fn{tclsh} program. If this differs from the \fn{tclsh} you used to evaluate ! \fn{platform.tcl}, there may be something wrong with your \Tcl\ configuration file. Note that the same \fn{tclsh} program might be known by several absolute pathnames if there are symbolic ! links in your \Tcl\ installation. If \fn{platform.tcl} reports that it cannot find a \fn{tclsh} program, yet you know where an appropriate one is installed on your system, you can tell \OOMMF\ where to find the \fn{tclsh} program by setting the environment variable --- 248,257 ---- The second line describing your \Tcl\ installation reports the absolute pathname of the \fn{tclsh} program. If this differs from the \fn{tclsh} you used to evaluate ! \cd{oommf.tcl +platform}, there may be something wrong with your \Tcl\ configuration file. Note that the same \fn{tclsh} program might be known by several absolute pathnames if there are symbolic ! links in your \Tcl\ installation. If \cd{oommf.tcl +platform} reports that it cannot find a \fn{tclsh} program, yet you know where an appropriate one is installed on your system, you can tell \OOMMF\ where to find the \fn{tclsh} program by setting the environment variable *************** *** 256,262 **** \Tcl\ installation reports its release number according to two sources. First is the release number recorded in the \Tcl\ configuration file. Second is the release number of the \fn{tclsh} program used ! to evaluate \fn{platform.tcl}. If these numbers do not match, it may indicate something is wrong with your \Tcl\ configuration file. If you have multiple releases of \Tcl\ installed under a common root directory on your computer, there can be only one \Tcl\ configuration --- 262,268 ---- \Tcl\ installation reports its release number according to two sources. First is the release number recorded in the \Tcl\ configuration file. Second is the release number of the \fn{tclsh} program used ! to evaluate \cd{oommf.tcl +platform}. If these numbers do not match, it may indicate something is wrong with your \Tcl\ configuration file. If you have multiple releases of \Tcl\ installed under a common root directory on your computer, there can be only one \Tcl\ configuration *************** *** 271,277 **** may be used to tell \OOMMF\ where to find the \Tk\ configuration file and the \fn{wish} program, respectively. ! If \fn{platform.tcl} indicates problems with your \Tcl/\Tk\ installation, it may be easiest to re-install \Tcl/\Tk\, taking care to perform a conventional installation. \OOMMF\ deals best with conventional \Tcl/\Tk\ installations. If you do not have the power to re-install --- 277,283 ---- may be used to tell \OOMMF\ where to find the \Tk\ configuration file and the \fn{wish} program, respectively. ! If \cd{oommf.tcl +platform} indicates problems with your \Tcl/\Tk\ installation, it may be easiest to re-install \Tcl/\Tk\, taking care to perform a conventional installation. \OOMMF\ deals best with conventional \Tcl/\Tk\ installations. If you do not have the power to re-install *************** *** 296,302 **** \index{platform!Windows!Visual~C++~configuration|(} If you plan to compile and link \OOMMF\ software from source code, ! be sure the C++ compiler reported by \fn{platform.tcl} is properly configured. In particular, the Microsoft Visual C++ command line compiler, \fn{cl.exe}, may require the running of \fn{vcvars32.bat} to set up the path and some environment variables. --- 302,308 ---- \index{platform!Windows!Visual~C++~configuration|(} If you plan to compile and link \OOMMF\ software from source code, ! be sure the C++ compiler reported by \cd{oommf.tcl +platform} is properly configured. In particular, the Microsoft Visual C++ command line compiler, \fn{cl.exe}, may require the running of \fn{vcvars32.bat} to set up the path and some environment variables. *************** *** 304,312 **** documentation for details. \index{platform!Windows!Visual~C++~configuration|)} - \index{platform!Windows!hosts~file|(} A few other configurations should be checked on \Windows\ platforms. ! First, \OOMMF\ software needs networking support that recognizes the host name \fn{localhost}. It may be necessary to edit a file which records that \fn{localhost} is a synonym for the loopback interface (127.0.0.1). If a file named \fn{hosts} --- 310,331 ---- documentation for details. \index{platform!Windows!Visual~C++~configuration|)} A few other configurations should be checked on \Windows\ platforms. ! \index{platform!Windows!file~path~separator|(} ! First, note that absolute filenames on \Windows\ makes use of the ! backslash (\verb+\+) to separate directory names. On \Unix\ and ! within \Tcl\ the forward slash (\verb+/+) is used to separate directory ! names in an absolute filename. In this manual we usually use the ! \Tcl\ convention of forward slash as separator. In portions of the ! manual pertaining only to MS \Windows\ we use the backslash as ! separator. There may be instructions in this manual which do not ! work exactly as written on \Windows\ platforms. You may need to ! replace forward slashes with backward slashes in pathnames when ! working on \Windows. ! \index{platform!Windows!file~path~separator|)} ! ! \index{platform!Windows!hosts~file|(} ! \OOMMF\ software needs networking support that recognizes the host name \fn{localhost}. It may be necessary to edit a file which records that \fn{localhost} is a synonym for the loopback interface (127.0.0.1). If a file named \fn{hosts} *************** *** 317,323 **** the copy to have the \fn{localhost} entry. \index{platform!Windows!hosts~file|)} ! Second, in recent releases of \Tcl/\Tk\ (version 8.0.3 and later) the directory which holds the \fn{tclsh} and \fn{wish} programs also holds several {\fn{*.dll}} files that \OOMMF\ software needs to find to run properly. --- 336,342 ---- the copy to have the \fn{localhost} entry. \index{platform!Windows!hosts~file|)} ! In recent releases of \Tcl/\Tk\ (version 8.0.3 and later) the directory which holds the \fn{tclsh} and \fn{wish} programs also holds several {\fn{*.dll}} files that \OOMMF\ software needs to find to run properly. *************** *** 335,361 **** directories in the PATH are searched for {\fn{*.dll}} files needed when starting an executable. ! \subsubsection{Compiling and Linking} If you downloaded a distribution with pre-compiled executables, you may skip this section. The compiling and linking of the C++ portions of \OOMMF\ software ! are guided by the application \fn{pimake}\index{application!pimake} (``Platform Independent Make'') which is distributed as part of the \OOMMF\ release. - \fn{pimake} is similar in operation to the - \Unix\ utility program \fn{make}\index{application!make}, - but it is written entirely in - \Tcl\ so that it will run anywhere \Tcl\ is installed. Just as - \fn{make} is controlled by rules in - files named \fn{Makefile} or \fn{makefile}, \fn{pimake} is controlled - by rules in files named \fn{makerules.tcl}. \fn{pimake} takes an - optional argument on its command line which names the target to build. - Like all \OOMMF\ applications, pimake is to be executed using the - \hyperrefhtml{\OOMMF\ bootstrap application}{\OOMMF\ bootstrap - application (Sec.~}{)}{sec:cll}. - To begin building \OOMMF\ software with \fn{pimake}, first change your working directory\index{working~directory} to the root directory of the \OOMMF\ distribution: --- 354,370 ---- directories in the PATH are searched for {\fn{*.dll}} files needed when starting an executable. ! \subsubsection{Compiling and Linking}\label{sec:install.compile} If you downloaded a distribution with pre-compiled executables, you may skip this section. The compiling and linking of the C++ portions of \OOMMF\ software ! are guided by the application ! \hyperrefhtml{pimake}{pimake (Sec.~}{)}{sec:pimake} ! \index{application!pimake} (``Platform Independent Make'') which is distributed as part of the \OOMMF\ release. To begin building \OOMMF\ software with \fn{pimake}, first change your working directory\index{working~directory} to the root directory of the \OOMMF\ distribution: *************** *** 364,387 **** \end{verbatim} If you unpacked the new \OOMMF\ release into a directory \fn{oommf} ! which contained an earlier \OOMMF\ release, build the target \fn{upgrade} ! with \fn{pimake} to clear away any source code files which were in a former distribution but are not part of the latest distribution: \begin{verbatim} ! tclsh oommf.tcl -fg pimake upgrade \end{verbatim} Next, build the target \fn{distclean} to clear away any old executables and object files which are left behind from the compilation of the previous distribution: \begin{verbatim} ! tclsh oommf.tcl -fg pimake distclean \end{verbatim} Next, to build all the \OOMMF\ software, run \fn{pimake} without specifying a target: \begin{verbatim} ! tclsh oommf.tcl -fg pimake \end{verbatim} Note that on some platforms, you cannot successfully compile \OOMMF\ software if there are \OOMMF\ programs running. Check --- 373,397 ---- \end{verbatim} If you unpacked the new \OOMMF\ release into a directory \fn{oommf} ! which contained an earlier \OOMMF\ release, ! use \fn{pimake} to build the target \fn{upgrade} ! to clear away any source code files which were in a former distribution but are not part of the latest distribution: \begin{verbatim} ! tclsh oommf.tcl pimake upgrade \end{verbatim} Next, build the target \fn{distclean} to clear away any old executables and object files which are left behind from the compilation of the previous distribution: \begin{verbatim} ! tclsh oommf.tcl pimake distclean \end{verbatim} Next, to build all the \OOMMF\ software, run \fn{pimake} without specifying a target: \begin{verbatim} ! tclsh oommf.tcl pimake \end{verbatim} Note that on some platforms, you cannot successfully compile \OOMMF\ software if there are \OOMMF\ programs running. Check *************** *** 393,401 **** process. Assuming a proper configuration for your platform, \fn{pimake} should be able to compile and link all the \OOMMF\ software without error. If ! \fn{pimake} reports errors, please send both the {\em complete} output ! from \fn{pimake} and the output from \fn{platform.tcl} ! to the \OOMMF\ developers. \subsubsection{Installing} --- 403,414 ---- process. Assuming a proper configuration for your platform, \fn{pimake} should be able to compile and link all the \OOMMF\ software without error. If ! \fn{pimake} reports errors, please first consult ! \hyperrefhtml{Troubleshooting}{Troubleshooting (Sec.~}{)}{sec:trouble} ! to see if a fix is already documented. ! If not, please send both the {\em complete} output ! from \fn{pimake} and the output from \cd{oommf.tcl +platform} ! to the \OOMMF\ developers when you e-mail to ask for help. \subsubsection{Installing} *************** *** 437,487 **** \index{requirement!disk~space|(} To delete the intermediate files created when building the \OOMMF\ ! software from source code, use \fn{pimake} to build the target \fn{objclean} in the root directory of the \OOMMF\ distribution. \begin{verbatim} ! tclsh oommf.tcl -fg pimake objclean \end{verbatim} Running the \fn{strip} utility on the OOMMF executable files should also reduce their size somewhat. \index{requirement!disk~space|)} - \subsubsection{Other {\fn{pimake}} targets} - - The \app{pimake} application\index{application!pimake} - guides the building of OOMMF software - according to the rules recorded in \fn{makerules.tcl} files. - There are several targets which may be used as arguments to - \app{pimake} to achieve different tasks. When no target is - supplied to \app{pimake} on the command line, the first target - in the local \fn{makerules.tcl} file is built, which is usually - the target \fn{all}. Each target builds in the current directory - and all subdirectories. The conventional targets are: - \begin{itemize} - \item \bftt{all} - Creates all files created by the \fn{configure} target (see below). - Compiles and links all the \OOMMF\ executables and libraries. - Constructs all index files. - \item \bftt{configure} - Creates subdirectories with the same name as the platform type. - Constructs a \fn{port.h} file which includes C++ header information - specific to the platform. - \item \bftt{objclean} - Removes the intermediate object files created by the compile and - link steps. Leaves working executables in place. Leaves - \OOMMF\ in the state of its distribution with pre-compiled - executables. - \item \bftt{clean} - Removes the files removed by the \fn{objclean} target. - Also removes the executables and libraries created by the \fn{all} - target. Leaves the files generated by the \fn{configure} target. - \item \bftt{distclean} - Removes the files removed by the \fn{clean} target. - Also removes all files and directories generated by - \fn{configure} target. Leaves only the files which - are part of the source code distribution. - \end{itemize} - \subsubsection{Local Customizations}\label{sec:custom} \index{customize} --- 450,466 ---- \index{requirement!disk~space|(} To delete the intermediate files created when building the \OOMMF\ ! software from source code, use ! \hyperrefhtml{pimake}{pimake (Sec.~}{)}{sec:pimake} ! to build the target \fn{objclean} in the root directory of the \OOMMF\ distribution. \begin{verbatim} ! tclsh oommf.tcl pimake objclean \end{verbatim} Running the \fn{strip} utility on the OOMMF executable files should also reduce their size somewhat. \index{requirement!disk~space|)} \subsubsection{Local Customizations}\label{sec:custom} \index{customize} *************** *** 525,540 **** different types of computing platforms. To learn what name \OOMMF\ software uses to refer to your computing ! platform, run the Tcl script \fn{platform.tcl} in the \OOMMF\ root ! directory. \paragraph{Changing the name \OOMMF\ assigns to your platform} ! First, use \fn{pimake} to build the target \fn{distclean} to clear away any compiled executables built using the old platform name. \begin{verbatim} ! tclsh oommf.tcl -fg pimake distclean \end{verbatim} Then, to change the name \OOMMF\ software uses to describe your platform from \cd{foo} to \cd{bar}, simply rename the file --- 504,524 ---- different types of computing platforms. To learn what name \OOMMF\ software uses to refer to your computing ! platform, run ! \begin{verbatim} ! tclsh oommf.tcl +platform ! \end{verbatim} ! in the \OOMMF\ root directory. \paragraph{Changing the name \OOMMF\ assigns to your platform} ! First, use ! \hyperrefhtml{pimake}{pimake (Sec.~}{)}{sec:pimake} ! to build the target \fn{distclean} to clear away any compiled executables built using the old platform name. \begin{verbatim} ! tclsh oommf.tcl pimake distclean \end{verbatim} Then, to change the name \OOMMF\ software uses to describe your platform from \cd{foo} to \cd{bar}, simply rename the file *************** *** 554,560 **** \paragraph{Adding a new platform type} ! If the script \fn{platform.tcl} reports the platform name \cd{unknown}, then none of the scripts in \fn{config/names/} recognizes your platform type. As an example, to add the platform name \cd{foo} to \OOMMF's vocabulary of platform names, create the --- 538,544 ---- \paragraph{Adding a new platform type} ! If \cd{oommf.tcl +platform} reports the platform name \cd{unknown}, then none of the scripts in \fn{config/names/} recognizes your platform type. As an example, to add the platform name \cd{foo} to \OOMMF's vocabulary of platform names, create the *************** *** 592,598 **** \paragraph{Resolving platform name conflicts} ! If the script \fn{platform.tcl} reports ``Multiple platform names are compatible with your computer'', then there are multiple files in the directory \fn{config/names/} that return 1 when run on your computer. For each compatible platform name reported, edit the corresponding --- 576,582 ---- \paragraph{Resolving platform name conflicts} ! If the script \cd{oommf.tcl +platform} reports ``Multiple platform names are compatible with your computer'', then there are multiple files in the directory \fn{config/names/} that return 1 when run on your computer. For each compatible platform name reported, edit the corresponding *************** *** 626,632 **** and select \btn{New\pipe Shortcut}. Enter the command line necessary to bring up \OOMMF, e.g., \begin{verbatim} ! tclsh82 c:\oommf\oommf.tcl \end{verbatim} Click \btn{Next$>$} and enter \cd{OOMMF} for the shortcut name. --- 610,616 ---- and select \btn{New\pipe Shortcut}. Enter the command line necessary to bring up \OOMMF, e.g., \begin{verbatim} ! tclsh83 c:\oommf\oommf.tcl \end{verbatim} Click \btn{Next$>$} and enter \cd{OOMMF} for the shortcut name. *************** *** 661,672 **** launching \OOMMF\ software. Note that \OOMMF\ software determines whether it is running with the ! Cygwin versions of \Tcl/\Tk\ by examining the environment variable TERM\index{environment~variables!TERM}. ! If TERM is set to the value \cd{cygwin}, the Cygwin environment ! is assumed. If you are using the Cygwin environment, and you set ! the TERM environment variable to something else, \OOMMF\ software ! will be confused. \paragraph{Setting the TCL\_LIBRARY environment variable} \index{platform!Windows!setting~environment~variables} --- 645,704 ---- launching \OOMMF\ software. Note that \OOMMF\ software determines whether it is running with the ! Cygwin versions of \Tcl/\Tk\ by examining the environment variables ! OSTYPE\index{environment~variables!OSTYPE} and TERM\index{environment~variables!TERM}. ! If either is set to a value beginning with ! \cd{cygwin}, the Cygwin environment is assumed. If you are using the ! Cygwin environment with a different values for both OSTYPE and TERM, ! you will have to modify \fn{config/names/cygtel.tcl} accordingly. ! ! \paragraph{Using Borland C++} ! \index{platform!Windows!Borland~C++} ! \OOMMF\ has been successfully built and tested using the ! \htmladdnormallinkfoot{Borland C++ command line ! compiler}{http://www.inprise.com/bcppbuilder/freecompiler/} version 5.5. ! However, a couple preparatory steps are necessary before building ! \OOMMF\ with this compiler. ! \begin{enumerate} ! \item Create Borland compatible \Tcl\ and \Tk\ libraries. ! ! The import libraries distributed with \Tcl/\Tk, release 8.0.3 and later, ! are not compatible with the Borland~C++ linker. However, the command ! line utility \fn{implib} can be used to create suitable libraries from ! the \Tcl/\Tk\ DLL's. In the \Tcl/\Tk\ library directory (typically ! \fn{"C:/Program~Files/Tcl/lib"}), issue a command of the form ! \begin{quote} ! \begin{verbatim} ! implib -a tcl83bc.lib ..\bin\tcl83.dll ! \end{verbatim} ! \end{quote} ! to create the Borland compatible import library \fn{tcl83bc.lib}. ! Repeat with ``tk'' in place of ``tcl'' to create \fn{tk83bc.lib}. The ! ``-a'' switch requests \fn{implib} to add a leading underscore to ! function names. This is sufficient for the DLL's shipped with \Tcl/\Tk\ ! 8.3, but other releases may require some additional tweaking. You can ! use the Borland command line tool \fn{impdef} to create a module ! definition file from each DLL, add leading underscores manually as ! needed, and add the module definition file to the \fn{implib} command ! line. ! ! \item Edit \fn{config/cache/wintel.tcl}. ! ! At a minimum, you will have to change the \cd{program\_compiler\_c++} ! value to point to the Borland C++ compiler. The sample \fn{wintel.tcl} ! cache file assumes the librarian \fn{tlib} and the linker \fn{ilink32} ! are in the execution path, and that the Borland compatible import ! libraries made above are in the \Tcl/\Tk\ library directory. If this is ! not the case then you will have to make the appropriate additional ! modifications. (Depending on your linker, you may need to add the ! ``-o'' switch to the linker command, to force ordinal usage of the ! Borland compatible \Tcl/\Tk\ libraries produced in the previous step.) ! ! \end{enumerate} ! After this, continue with the instructions in \html{the} ! \hyperrefhtml{Compiling and Linking}{Sec.~}{, Compiling and ! Linking.}{sec:install.compile} \html{section.} \paragraph{Setting the TCL\_LIBRARY environment variable} \index{platform!Windows!setting~environment~variables} *************** *** 710,716 **** % \begin{verbatim} C:\> ftype TclScript ! "C:\Program Files\Tcl\bin\wish82.exe" "%1" %2 %3 %4 %5 %6 %7 %8 %9 \end{verbatim} % Note that the quotes are required as shown to protect spaces in pathnames. --- 742,748 ---- % \begin{verbatim} C:\> ftype TclScript ! "C:\Program Files\Tcl\bin\wish83.exe" "%1" %2 %3 %4 %5 %6 %7 %8 %9 \end{verbatim} % Note that the quotes are required as shown to protect spaces in pathnames. diff -crN oommf-1.1a2/doc/mmarchive-body.tex oommf/doc/mmarchive-body.tex *** oommf-1.1a2/doc/mmarchive-body.tex Wed Apr 5 00:23:06 2000 --- oommf/doc/mmarchive-body.tex Tue Apr 4 23:21:00 2000 *************** *** 32,38 **** \btn{mmArchive} button on \htmlref{\app{mmLaunch}}{sec:mmlaunch}, or from the command line via \begin{verbatim} ! tclsh oommf.tcl mmArchive [-tk <0|1>] [-console] \end{verbatim} When the \btn{mmArchive} button of \app{mmLaunch} is invoked, --- 32,38 ---- \btn{mmArchive} button on \htmlref{\app{mmLaunch}}{sec:mmlaunch}, or from the command line via \begin{verbatim} ! tclsh oommf.tcl mmArchive [standard options] \end{verbatim} When the \btn{mmArchive} button of \app{mmLaunch} is invoked, diff -crN oommf-1.1a2/doc/mmdatatable-body.tex oommf/doc/mmdatatable-body.tex *** oommf-1.1a2/doc/mmdatatable-body.tex Wed Apr 5 00:23:06 2000 --- oommf/doc/mmdatatable-body.tex Tue Apr 4 23:21:00 2000 *************** *** 17,24 **** \btn{mmDataTable} button on \htmlref{{\bf mmLaunch}}{sec:mmlaunch}, or from the command line via \begin{verbatim} ! tclsh oommf.tcl mmDataTable [-console] \end{verbatim} \ssechead{Inputs} The client application(s) that send data to {\bf mmDataTable} for --- 17,32 ---- \btn{mmDataTable} button on \htmlref{{\bf mmLaunch}}{sec:mmlaunch}, or from the command line via \begin{verbatim} ! tclsh oommf.tcl mmDataTable [standard options] [-net <0|1>] \end{verbatim} + + \begin{description} + \item[{\tt\bf -net $<$0\pipe 1$>$}] + Disable or enable a server which allows the data displayed by + \app{mmDataTable} to be updated by another application. + By default, the server is enabled. When the server is disabled, + \app{mmProbEd} is only useful if it is embedded in another application. + \end{description} \ssechead{Inputs} The client application(s) that send data to {\bf mmDataTable} for diff -crN oommf-1.1a2/doc/mmdisp-body.tex oommf/doc/mmdisp-body.tex *** oommf-1.1a2/doc/mmdisp-body.tex Wed Apr 5 00:23:06 2000 --- oommf/doc/mmdisp-body.tex Tue Apr 4 23:21:01 2000 *************** *** 18,36 **** \app{mmDisp} may be started either by selecting the \btn{mmDisp} button on \htmlref{\app{mmLaunch}}{sec:mmlaunch}, or from the command line via \begin{verbatim} ! tclsh oommf.tcl mmDisp [-server] [-version] \ ! [-console] [--] [] \end{verbatim} ! The command line option \cd{-server} makes \app{mmDisp} a server ! (sitting on a network socket\index{network~socket}) that can supply ! vector field display services to other applications. Without that ! option \app{mmDisp} only displays vector field data loaded from files. ! The \cd{-server} option is automatically included when \app{mmDisp} is ! launched by \app{mmLaunch}. ! ! If the option \cd{-version} is present on the command line, version ! information is printed, and \app{mmDisp} exits immediately. If a filename is supplied on the command line, \app{mmDisp} takes it to be the name of a file containing vector field data for display. --- 18,33 ---- \app{mmDisp} may be started either by selecting the \btn{mmDisp} button on \htmlref{\app{mmLaunch}}{sec:mmlaunch}, or from the command line via \begin{verbatim} ! tclsh oommf.tcl mmDisp [standard options] [-net <0|1>] [filename] \end{verbatim} ! \begin{description} ! \item[{\tt\bf -net $<$0\pipe 1$>$}] ! Disable or enable a server which allows the data displayed by ! \app{mmDisp} to be updated by another application. ! By default, the server is enabled. When the server is disabled, ! \app{mmDisp} may only input data from a file. ! \end{description} If a filename is supplied on the command line, \app{mmDisp} takes it to be the name of a file containing vector field data for display. *************** *** 48,62 **** data. The user, interacting with the \app{mmDisp} window, determines how the vector field data are displayed. ! File input is initiated through the \btn{File\pipe Open\ldots}\ dialog box. ! Several example files are included in the \OOMMF\ release in the directory \fn{app/mmdisp/examples}. When the \btn{Browse} button is enabled, the ``Open File'' dialog box will remain open after loading a file, so that multiple files may be displayed in sequence. The ! {\btn{Auto}} configuration box determines whether the vector subsampling ! or the zoom factor of the display should be determined automatically ! (based on the data in the file and the current display window size), or ! whether their values should be held constant while loading the file. \index{customize!file~format~translation|(} \app{mmDisp} permits local customization allowing for automatic --- 45,60 ---- data. The user, interacting with the \app{mmDisp} window, determines how the vector field data are displayed. ! File input is initiated through the \btn{File\pipe Open\ldots}\ dialog ! box. Several example files are included in the \OOMMF\ release in the directory \fn{app/mmdisp/examples}. When the \btn{Browse} button is enabled, the ``Open File'' dialog box will remain open after loading a file, so that multiple files may be displayed in sequence. The ! {\btn{Auto}} configuration box determines whether the vector ! subsampling, data scale, or zoom factor of the display should be ! determined automatically (based on the data in the file and the current ! display window size), or whether their values should be held constant ! while loading the file. \index{customize!file~format~translation|(} \app{mmDisp} permits local customization allowing for automatic *************** *** 99,106 **** \ssechead{Outputs} The vector field displayed by \app{mmDisp} may be saved to disk via the {\btn{File\pipe Save As\ldots}}\index{data!save} dialog box. The output ! is in the \hyperrefhtml{OVF format}{OVF format ! (Sec.~}{)}{sec:ovfformat}\index{file!vector~field}. The OVF file options may be set by selecting the appropriate radio buttons in the \OVF\ File Options panel. The \btn{Title} and \btn{Desc} fields may be edited before saving. Enabling the \btn{Browse} button allows for --- 97,104 ---- \ssechead{Outputs} The vector field displayed by \app{mmDisp} may be saved to disk via the {\btn{File\pipe Save As\ldots}}\index{data!save} dialog box. The output ! is in the \hyperrefhtml{\OVF\ format}{\OVF\ format ! (Sec.~}{)}{sec:ovfformat}\index{file!vector~field}. The \OVF\ file options may be set by selecting the appropriate radio buttons in the \OVF\ File Options panel. The \btn{Title} and \btn{Desc} fields may be edited before saving. Enabling the \btn{Browse} button allows for *************** *** 114,126 **** entry with the appropriate pipe command, e.g., \pipe\texttt{lpr}. (The exact format is system dependent.) ! To produce bitmap output, save the file to disk in the OVF format, and use the {\hyperrefhtml{avf2ppm}{\app{avf2ppm} (Sec.~}{)}{sec:avf2ppm}}\index{application!avf2ppm} utility to do the conversion. \ssechead{Controls} The \btn{View} menu provides high-level control over how the vector field is placed in the display window. The menu selection \btn{View\pipe Wrap Display} resizes the display window so that it just --- 112,129 ---- entry with the appropriate pipe command, e.g., \pipe\texttt{lpr}. (The exact format is system dependent.) ! To produce bitmap output, save the file to disk in the \OVF\ format, and use the {\hyperrefhtml{avf2ppm}{\app{avf2ppm} (Sec.~}{)}{sec:avf2ppm}}\index{application!avf2ppm} utility to do the conversion. \ssechead{Controls} + The menu selection \btn{File\pipe Clear} clears the display window. + The menu selection \btn{File\pipe Exit} terminates the + \app{mmDisp} application. The menu \btn{Help} provides + the usual help facilities. + The \btn{View} menu provides high-level control over how the vector field is placed in the display window. The menu selection \btn{View\pipe Wrap Display} resizes the display window so that it just *************** *** 136,179 **** the display window to be wider). \btn{View\pipe reDraw} allows the user to invoke a redrawing of the display window. - The vector field may be rescaled (``zoomed'') and moved so that only a - portion of it is visible in the display window. When a portion of the - vector field lies outside the display window, scrollbars appear that may - be used to translate the vector field so that different portions are - visible in the display window. On systems that have a middle mouse - button, clicking the middle button on a point in the display window - translates the vector field so that the selected point is centered - within the display window. - - The mouse may also be used within the display window to rescale the - display. A click and drag with the left mouse button displays a red - rectangle that changes size as the mouse is dragged. When the left - mouse button is released, the vector field is rescaled so that the - portion of the display window within the red rectangle expands until it - reaches the edges of the display window. Both dimensions are scaled by - the same amount so there is no distortion of the vector field. Small - red arrows on the sides of the red rectangle indicate which dimension - will expand to meet the display window boundaries upon release of the - left mouse button. After the rescaling, the red rectangle remains in - the display window briefly, surrounding the same region of the vector - field, but at the new scale. - - A click and drag with the right mouse button displays a blue rectangle - that changes size as the mouse is dragged. When the right mouse button - is released, the vector field is rescaled so that all of the vector - field currently visible in the display window fits in the size of the - blue rectangle. Both dimensions are scaled by the same amount so there - is no distortion of the vector field. Small blue arrows on the sides of - the blue rectangle indicate the dimension in which the vector field will - shrink to exactly transform the display window size to the blue - rectangle size. After the rescaling, the blue rectangle remains in the - display window briefly, surrounding the same region of the vector field, - now centered in the display window, and at the new scale. - - \app{mmDisp} remembers the previous display scale. To revert - to the previous scale, the user may hit the \key{ESC} key. This is - a limited ``Undo'' feature. - The menu selection \btn{Options\pipe Configure\ldots}\ brings up a dialog box through which the user may control many features of the vector field display. Vectors in the vector field may be displayed as --- 139,144 ---- *************** *** 185,194 **** arrows and pixels may be independently colored to indicate some quantity\index{color!quantity}. The \btn{Color Quantity} column controls which scalar quantity the color of the arrow or pixel ! represents. The $x$, $y$, or $z$ components of the vector may be ! selected, or the in-plane $xy$-angle of the vector from the positive ! $x$-axis. On regularly gridded data the vector field divergence is also ! available for display. The assignment of a color to a quantity value is determined by the \btn{Colormap}\index{color!map} selected. Colormaps are labeled by a --- 150,159 ---- arrows and pixels may be independently colored to indicate some quantity\index{color!quantity}. The \btn{Color Quantity} column controls which scalar quantity the color of the arrow or pixel ! represents. The $x$, $y$, or $z$ components of the vector, the vector ! magnitude, or the in-plane $xy$-angle of the vector from the positive ! $x$-axis may be selected. On regularly gridded data the vector field ! divergence is also available for display. The assignment of a color to a quantity value is determined by the \btn{Colormap}\index{color!map} selected. Colormaps are labeled by a *************** *** 199,213 **** colored black, and those pointing out of the plane ($z>0$) are colored blue. Values between the extremes are colored with intermediate colors, selected using a discretization determined by the \btn{\lb\ of Colors} ! value. This value limits the use of potentially limited color resources, and can be used to achieve some special coloring effects. ! (Note: The $xy$-angle quantity is bested viewed with a colormap that begins and ends with the same color, e.g., ``Red-Green-Blue-Red.'') When there are many vectors in a vector field, a display of all of them ! can be more confusing than helpful. The \btn{Subsample Rate} column allows the user to request that only a sampling of vectors from the ! vector field be displayed. The \btn{Subsample Rate} value is roughly the number of vectors along one spatial dimension of the vector field which map to a single displayed vector (arrow or pixel). Each vector displayed is an actual vector in the vector field---the selection of --- 164,178 ---- colored black, and those pointing out of the plane ($z>0$) are colored blue. Values between the extremes are colored with intermediate colors, selected using a discretization determined by the \btn{\lb\ of Colors} ! value. This value governs the use of potentially limited color resources, and can be used to achieve some special coloring effects. ! (Note: The $xy$-angle quantity is best viewed with a colormap that begins and ends with the same color, e.g., ``Red-Green-Blue-Red.'') When there are many vectors in a vector field, a display of all of them ! may be more confusing than helpful. The \btn{Subsample} column allows the user to request that only a sampling of vectors from the ! vector field be displayed. The \btn{Subsample} value is roughly the number of vectors along one spatial dimension of the vector field which map to a single displayed vector (arrow or pixel). Each vector displayed is an actual vector in the vector field---the selection of *************** *** 217,242 **** display all data. (This is typically much quicker than subsampling at a small rate, e.g., 0.1.) ! An arrow or pixel that represents a vector is by default displayed at a ! size that covers the portion of the vector field that that displayed vector is intended to represent, given the current subsample rate. Following this default, arrows do not significantly overlap each other, ! yet all portions of the vector field that are magnetically active have ! a representation in the display. The \btn{Magnification} column allows ! the user to modify the size of the displayed arrows or pixels ! (independently). A \btn{Magnification} of 1 is the default size. By ! changing to a larger or smaller \btn{Magnification} value, the user may request arrows or pixels larger or smaller than the default size. ! Lower in the \btn{Option\pipe Configure\ldots}\ dialog box, the user may ! also select whether or not a bounding polygon\index{boundary} is ! displayed, what margin (in pixels) should be maintained around the ! vector field, and what background color the display window should use. ! None of the changes made by the user in the {\btn{Options\pipe ! Configure\ldots}}\ dialog box affect the display window until either the \btn{Apply} or \btn{OK} button is selected. If the \btn{OK} button is ! selected, the dialog box is also dismissed. The {\btn{Cancel}} button dismisses the dialog without changing the display window. The other item under the \btn{Options} menu is a checkbutton that --- 182,253 ---- display all data. (This is typically much quicker than subsampling at a small rate, e.g., 0.1.) ! The length of an arrow represents the magnitude of the vector field. ! All arrows are drawn with a length between zero and ``full-scale.'' ! By default, the full-scale arrow length is computed ! so that it covers the region of the screen that one displayed vector is intended to represent, given the current subsample rate. Following this default, arrows do not significantly overlap each other, ! yet all non-zero portions of the vector field have ! a representation in the display. Similarly, pixels are drawn with ! a default size that fills an area equal to the region of the screen ! one pixel is intended to represent, given the pixel subsample rate. ! The \btn{Size} column allows the user to (independently) ! override the default size of pixels and full-scale arrows. ! A value of 1 represents the default size. By ! changing to a larger or smaller \btn{Size} value, the user may request arrows or pixels larger or smaller than the default size. ! Below the Arrow and Pixel Controls are several additional controls. The ! \btn{Data Scale}\index{data!scale} entry affects the data value scaling. ! As described above, all arrows are displayed with length between ! zero and full-scale. The full-scale arrow length corresponds ! to some scalar value of the magnitude of the vector field. ! The \btn{Data Scale}\index{data!scale} entry allows the user to set ! the value at which the drawn arrow length goes full-scale. Any vectors ! in the vector field with magnitude equal to or greater than the ! data scale value will be represented by arrows drawn at full scale. ! Other vectors will be represented by shorter arrows with length ! determined by a linear scale between zero and the data scale value. ! Similarly, the data scale value controls the range of values ! spanned by the colormap used to color pixels. ! The usual use of the ! \btn{Data Scale}\index{data!scale} entry is to reduce the data ! scale value so that more detail can be seen in those portions of ! the vector field which have magnitude less than other parts of the ! vector field. ! If the data scale value is increased, then the length of the ! arrows in the plot is reduced accordingly. If the data scale value is ! decreased, then the length of the arrows is increased, until they ! reach full-scale. ! An arrow representing a vector with magnitude larger than the ! data scale value may be thought of as being truncated to the data scale ! value. The initial (default) data scale value is usually the maximum ! vector magnitude in the field, so at this setting no arrows are ! truncated. Entering \key{0} into the data scale box will cause the data ! scale to be reset to the default value. (For \hyperrefhtml{\OVF\ ! files}{\OVF\ files (Sec.~}{)}{sec:ovfformat}\index{file!vector~field}, ! the default data scale value is set from the \cd{ValueRangeMaxMag} ! header line. This is typically set to the maximum vector magnitude, but ! this is not guaranteed.) The data scale control is intended primarily ! for use with vector fields of varying magnitude (e.g., \vH -fields), but ! may also be used to adjust the pixel display contrast for any field ! type. ! ! The \btn{Zoom}\index{data!zoom} entry controls the spatial scaling of ! the display. The value roughly corresponds to the number of pixels per ! vector in the fully-sampled vector field. (This value is not affected ! by the subsampling rate.) ! ! To the right of the \btn{Data Scale} and \btn{Zoom} entries are controls ! to specify what margin (in pixels) should be maintained around the ! vector field, whether or not a bounding polygon\index{boundary} is ! displayed, and what background color the display window should use. ! No changes made by the user in the {\btn{Options\pipe Configure\ldots}}\ ! dialog box affect the display window until either the \btn{Apply} or \btn{OK} button is selected. If the \btn{OK} button is ! selected, the dialog box is also dismissed. The {\btn{Close}} button dismisses the dialog without changing the display window. The other item under the \btn{Options} menu is a checkbutton that *************** *** 252,267 **** clockwise rotation. To the right of the coordinate axes are two rows of controls. The top ! row allows the user to control the subsample rate and magnification ! of the arrow display. The subsample rate may be modified either ! by direct entry of a new rate, or by manipulation of the slider. ! ! The lower row offers an alternative means to control the rescaling of ! the vector field in the display. The \btn{Zoom} value roughly ! corresponds to the number of pixels per vector in the vector field. ! This value may be entered directly, or modified by manipulation of the ! slider. This alternative interface provides a more precise control over ! the rescaling of the vector field display than mouse operations provide. Several keyboard shortcuts are available as alternatives to menu- or mouse-based operations. The effect of a key combination depends on --- 263,311 ---- clockwise rotation. To the right of the coordinate axes are two rows of controls. The top ! row allows the user to control the subsample rate and size of displayed ! arrows. The subsample rate may be modified either by direct entry of a ! new rate, or by manipulation of the slider. The second row controls the ! current data scale value. A vertical bar in the slider area marks the ! default data scale value. Specifying \key{0} for the data scale value ! will reset the data scale to the default value. At the bottom of the ! control bar is a zoom (spatial magnification) control. ! ! The zoom value may also be changed by using the mouse inside the display ! window. A click and drag with the left mouse button displays a red ! rectangle that changes size as the mouse is dragged. When the left ! mouse button is released, the vector field is rescaled so that the ! portion of the display window within the red rectangle expands until it ! reaches the edges of the display window. Both dimensions are scaled by ! the same amount so there is no distortion of the vector field. Small ! red arrows on the sides of the red rectangle indicate which dimension ! will expand to meet the display window boundaries upon release of the ! left mouse button. After the rescaling, the red rectangle remains in ! the display window briefly, surrounding the same region of the vector ! field, but at the new scale. ! ! A click and drag with the right mouse button displays a blue rectangle ! that changes size as the mouse is dragged. When the right mouse button ! is released, the vector field is rescaled so that all of the vector ! field currently visible in the display window fits in the size of the ! blue rectangle. Both dimensions are scaled by the same amount so there ! is no distortion of the vector field. Small blue arrows on the sides of ! the blue rectangle indicate the dimension in which the vector field will ! shrink to exactly transform the display window size to the blue ! rectangle size. After the rescaling, the blue rectangle remains in the ! display window briefly, surrounding the same region of the vector field, ! now centered in the display window, and at the new scale. ! ! When the zoom value is large enough that a portion of the vector field ! lies outside the display window, scrollbars appear that may be used to ! translate the vector field so that different portions are visible in the ! display window. On systems that have a middle mouse button, clicking ! the middle button on a point in the display window translates the vector ! field so that the selected point is centered within the display window. ! ! \app{mmDisp} remembers the previous zoom value and data scale values. ! To revert to the previous settings, the user may hit the \key{ESC} key. ! This is a limited ``Undo'' feature. Several keyboard shortcuts are available as alternatives to menu- or mouse-based operations. The effect of a key combination depends on *************** *** 282,296 **** \item \key{HOME} -- First fill, then wrap the display. \item \key{CTRL-r} -- same as menu selection \btn{View\pipe Rotate ccw} \item \key{SHIFT-CTRL-r} -- same as menu selection \btn{View\pipe Rotate cw} ! \item \key{INSERT} -- increase arrow subsample by 1 ! \item \key{DEL} -- decrease arrow subsample by 1 ! \item \key{SHIFT-INSERT} -- increase arrow subsample by factor of 2 ! \item \key{SHIFT-DEL} -- decrease arrow subsample by factor of 2 \item \key{PAGEUP} -- increase the zoom value by a factor of 1.149 \item \key{PAGEDOWN} -- decrease the zoom value by a factor of 1.149 \item \key{SHIFT-PAGEUP} -- increase the zoom value by factor of 2 \item \key{SHIFT-PAGEDOWN} -- decrease the zoom value by factor of 2 ! \item \key{ESC} -- revert to previous zoom value \end{itemize} When the active subwindow is the control bar's coordinate axes display, --- 326,340 ---- \item \key{HOME} -- First fill, then wrap the display. \item \key{CTRL-r} -- same as menu selection \btn{View\pipe Rotate ccw} \item \key{SHIFT-CTRL-r} -- same as menu selection \btn{View\pipe Rotate cw} ! \item \key{INSERT} -- decrease arrow subsample by 1 ! \item \key{DEL} -- increase arrow subsample by 1 ! \item \key{SHIFT-INSERT} -- decrease arrow subsample by factor of 2 ! \item \key{SHIFT-DEL} -- increase arrow subsample by factor of 2 \item \key{PAGEUP} -- increase the zoom value by a factor of 1.149 \item \key{PAGEDOWN} -- decrease the zoom value by a factor of 1.149 \item \key{SHIFT-PAGEUP} -- increase the zoom value by factor of 2 \item \key{SHIFT-PAGEDOWN} -- decrease the zoom value by factor of 2 ! \item \key{ESC} -- revert to previous data scale and zoom values \end{itemize} When the active subwindow is the control bar's coordinate axes display, *************** *** 301,315 **** \end{itemize} When the active subwindow is any of the control bar's value entry ! windows -- arrow subsample, magnification, or zoom, the following ! key combinations are active: \begin{itemize} \item \key{ESC} -- undo uncommitted value (displayed in red) \item \key{RETURN} -- commit entered value \end{itemize} When the active subwindow is either of the control bar's sliders---arrow ! subsample or zoom---the following key combinations are active: \begin{itemize} \item \key{LEFT} -- slide left (decrease value) \item \key{RIGHT} -- slide right (increase value) --- 345,360 ---- \end{itemize} When the active subwindow is any of the control bar's value entry ! windows -- arrow subsample, size, data scale or zoom, the following key ! combinations are active: \begin{itemize} \item \key{ESC} -- undo uncommitted value (displayed in red) \item \key{RETURN} -- commit entered value \end{itemize} When the active subwindow is either of the control bar's sliders---arrow ! subsample, data scale or zoom---the following key combinations are ! active: \begin{itemize} \item \key{LEFT} -- slide left (decrease value) \item \key{RIGHT} -- slide right (increase value) *************** *** 319,341 **** Of course the usual keyboard access to the menu items is also available. - The menu selection \btn{File\pipe Clear} clears the display window. - The menu selection \btn{File\pipe Exit} terminates the - \app{mmDisp} application. The menu \btn{Help} provides - the usual help facilities. \ssechead{Details} The selection of vectors for display according to the ! \btn{Subsample Rate} differs depending on whether or not the data ! lies on a regular grid\index{grid}. If so, the \btn{Subsample Rate} takes integer values and determines the ratio of data points to displayed points. For example, a value of 5 means that every fifth vector on the grid is displayed. This means that the number of vectors displayed is 25 times fewer than the number of vectors on the grid. For an irregular grid of vectors, an average cell size is computed, ! and the \btn{Subsample Rate} takes values in units of 0.1 times the average cell size. A square grid of that size is overlaid on the irregular grid. For each cell in the square grid, the data vector from the irregular grid closest to the center of the square grid --- 364,382 ---- Of course the usual keyboard access to the menu items is also available. \ssechead{Details} The selection of vectors for display according to the ! \btn{Subsample} differs depending on whether or not the data ! lies on a regular grid\index{grid}. If so, the \btn{Subsample} takes integer values and determines the ratio of data points to displayed points. For example, a value of 5 means that every fifth vector on the grid is displayed. This means that the number of vectors displayed is 25 times fewer than the number of vectors on the grid. For an irregular grid of vectors, an average cell size is computed, ! and the \btn{Subsample} takes values in units of 0.1 times the average cell size. A square grid of that size is overlaid on the irregular grid. For each cell in the square grid, the data vector from the irregular grid closest to the center of the square grid *************** *** 364,370 **** \item[MIME Type:] application/x-oommf-vf \item[Suffixes:] ovf omf ohf obf svf \item[Application:] ! {\em wish} {\em oommfroot}/oommf.tcl {-fg} mmDisp ``{\em arg}'' \end{description} On \Windows\ platforms, the \cd{Suffixes} field is labeled --- 405,411 ---- \item[MIME Type:] application/x-oommf-vf \item[Suffixes:] ovf omf ohf obf svf \item[Application:] ! {\em wish} {\em oommfroot}/oommf.tcl {+fg} mmDisp {-net} 0 ``{\em arg}'' \end{description} On \Windows\ platforms, the \cd{Suffixes} field is labeled *************** *** 381,387 **** \hyperrefhtml{Command Line Launching}{Section~}{}{sec:cll}). On Unix systems, {\em wish} may be omitted, assuming that the \fn{oommf.tcl} script is executable. If {\em wish} is not omitted ! on Unix systems, Netscape will issue a security warning each time it opens an \OOMMF\ Vector Field file. The value of {\em oommfroot} should be the full path to the root directory of your \OOMMF\ installation. The value of {\em arg} should be ``\%1'' on \Windows\ and ``\%s'' on --- 422,428 ---- \hyperrefhtml{Command Line Launching}{Section~}{}{sec:cll}). On Unix systems, {\em wish} may be omitted, assuming that the \fn{oommf.tcl} script is executable. If {\em wish} is not omitted ! on Unix systems, Netscape may issue a security warning each time it opens an \OOMMF\ Vector Field file. The value of {\em oommfroot} should be the full path to the root directory of your \OOMMF\ installation. The value of {\em arg} should be ``\%1'' on \Windows\ and ``\%s'' on *************** *** 405,411 **** \begin{description} \item[Action:] open \item[Application used to perform action:]\ \\ ! {\em wish} {\em oommfroot}/oommf.tcl {-fg} mmDisp ``\%1'' \end{description} Hit \btn{OK}, \btn{Close}, \btn{Close} and \btn{OK}. Replace {\em wish} and {\em oommfroot} with the appropriate paths on your system --- 446,452 ---- \begin{description} \item[Action:] open \item[Application used to perform action:]\ \\ ! {\em wish} {\em oommfroot}/oommf.tcl {+fg} mmDisp {-net} 0 ``\%1'' \end{description} Hit \btn{OK}, \btn{Close}, \btn{Close} and \btn{OK}. Replace {\em wish} and {\em oommfroot} with the appropriate paths on your system *************** *** 434,440 **** Depending on the exact release/service patch of your \Windows\ operating system, the exact instructions may vary. ! Once you have your browser configured, you can test it on the muMag 1st Standard Problem report page, \begin{center} \htmladdnormallink{http://www.ctcms.nist.gov/\%7Erdm/std1/vectorcompare.html}{http://www.ctcms.nist.gov/\%7Erdm/std1/vectorcompare.html}. --- 475,481 ---- Depending on the exact release/service patch of your \Windows\ operating system, the exact instructions may vary. ! Once you have your browser configured, you can test it on the \mumag\ 1st Standard Problem report page, \begin{center} \htmladdnormallink{http://www.ctcms.nist.gov/\%7Erdm/std1/vectorcompare.html}{http://www.ctcms.nist.gov/\%7Erdm/std1/vectorcompare.html}. diff -crN oommf-1.1a2/doc/mmgraph-body.tex oommf/doc/mmgraph-body.tex *** oommf-1.1a2/doc/mmgraph-body.tex Wed Apr 5 00:23:06 2000 --- oommf/doc/mmgraph-body.tex Tue Apr 4 23:21:01 2000 *************** *** 20,37 **** button on \htmlref{\app{mmLaunch}}{sec:mmlaunch} or from the command line via \begin{verbatim} ! tclsh oommf.tcl mmGraph [-console] [-nonet] \end{verbatim} ! The \verb+-nonet+ option disables the socket\index{network~socket} ! server portion of {\bf mmGraph}, in which case data may only be input ! from a file. \ssechead{Inputs} Input to \app{mmGraph} may come from either a file in the \hyperrefhtml{\ODT\ format}{\ODT\ format (Sec.~}{)}{sec:odtformat}\index{file!odt}\index{file!data~table}, ! or from a client application (typically a running solver). (The ! latter is disabled by the \verb+-nonet+ command line option.) The \btn{File\pipe Open\ldots} dialog box is used to select an input file. Receipt of data from client applications is the same as for \hyperrefhtml{\app{mmDataTable}}{\app{mmDataTable} --- 20,42 ---- button on \htmlref{\app{mmLaunch}}{sec:mmlaunch} or from the command line via \begin{verbatim} ! tclsh oommf.tcl mmGraph [standard options] [-net <0|1>] \end{verbatim} ! ! \begin{description} ! \item[{\tt\bf -net $<$0\pipe 1$>$}] ! Disable or enable a server which allows the data displayed by ! \app{mmGraph} to be updated by another application. ! By default, the server is enabled. When the server is disabled, ! \app{mmGraph} may only input data from a file. ! \end{description} \ssechead{Inputs} Input to \app{mmGraph} may come from either a file in the \hyperrefhtml{\ODT\ format}{\ODT\ format (Sec.~}{)}{sec:odtformat}\index{file!odt}\index{file!data~table}, ! or, when \cd{-net 1} (the default) is active, from a client application ! (typically a running solver). The \btn{File\pipe Open\ldots} dialog box is used to select an input file. Receipt of data from client applications is the same as for \hyperrefhtml{\app{mmDataTable}}{\app{mmDataTable} *************** *** 86,111 **** \ssechead{Controls} Graphs are constructed by selecting any one item off the ! \btn{X-Axis} menu, and any number of items off the \btn{Y-Axis} menu. ! Either of these menus may be detached by selecting the dashed rule ! at the top of the list. Sample results are shown in the figure at the ! start of this section. ! When \app{mmGraph} is first launched, the axis menus are both empty. They are dynamically built based on the data received by \app{mmGraph}. By default, the graph limits and labels are automatically set based on the data. The x-axis label is set using the selected item data label ! and measurement unit (if any). The y-axis label is the measurement unit ! of the first y-axis item selected. The \btn{Options\pipe Configure...} dialog box allows the user to ! override the default settings. To set the axis labels, deselect the ! \btn{Auto Label} option in this dialog box, and fill in the ! \btn{X Label} and \btn{Y Label} fields as desired. The axis limits can ! be set in a similar fashion. In addition, if an axis limit is left ! empty, a default value (based on all selected data) will be used. ! As mentioned earlier, \app{mmGraph} stores all data it receives. Over the course of a long run, the amount of data stored can grow to many megabytes\index{memory~use}. This storage can be limited by specifying a positive ($>0$) value for the \btn{Point buffer size} entry in the --- 91,125 ---- \ssechead{Controls} Graphs are constructed by selecting any one item off the ! \btn{X}-axis menu, and any number of items off the \btn{Y1}-axis and ! \btn{Y2}-axis menus. The y1-axis is marked on the left side of the ! graph; the y2-axis on the right. These menus may be detached by ! selecting the dashed rule at the top of the list. Sample results are ! shown in the figure at the start of this section. ! When \app{mmGraph} is first launched, all the axis menus are empty. They are dynamically built based on the data received by \app{mmGraph}. By default, the graph limits and labels are automatically set based on the data. The x-axis label is set using the selected item data label ! and measurement unit (if any). The y-axes labels are the measurement ! unit of the first corresponding y-axis item selected. The \btn{Options\pipe Configure...} dialog box allows the user to ! override default settings. To change the graph title, simply enter ! the desired title into the \btn{Title} field. To set the axis labels, ! deselect the \btn{Auto Label} option in this dialog box, and fill in the ! \btn{X Label}, \btn{Y1 Label} and \btn{Y2 Label} fields as desired. ! The axis limits can be set in a similar fashion. In addition, if an ! axis limit is left empty, a default value (based on all selected data) ! will be used. ! ! The size of the margin surrounding the plot region is computed ! automatically. Larger margins may be specified by filling in the ! appropriate fields in the \btn{Margin Requests} section. Units are ! pixels. Requested values smaller than the computed (default) values are ! ignored. ! As mentioned earlier, \app{mmGraph} stores in memory all data it receives. Over the course of a long run, the amount of data stored can grow to many megabytes\index{memory~use}. This storage can be limited by specifying a positive ($>0$) value for the \btn{Point buffer size} entry in the *************** *** 130,136 **** The \btn{Options\pipe Key} selection toggles the key (legend) display on and off. The key may also be repositioned by dragging with the left ! mouse button. The last command on the options menu is \btn{Options\pipe Smooth}. If smoothing is disabled, then the data points are connected by straight --- 144,152 ---- The \btn{Options\pipe Key} selection toggles the key (legend) display on and off. The key may also be repositioned by dragging with the left ! mouse button. If curves are selected off both the y1 and y2 menus, then ! a horizontal line in the key separates the two sets of curves, with the ! labels for the y1 curves on top. The last command on the options menu is \btn{Options\pipe Smooth}. If smoothing is disabled, then the data points are connected by straight *************** *** 140,174 **** \Tcl\ \cd{canvas create line} command; see that documentation for details. ! Two other controls are also available only through the mouse. If the mouse pointer is positioned over a drawn item in the graph, holding down ! any mouse button will bring up the coordinates of that point. The ! coordinates displayed are the coordinates of a point on a drawn line, ! which are not necessarily the coordinates of a plotted data point. (The ! data points are plotted at the endpoints of each line segment.) The ! coordinate display is cleared when the mouse button is released. One vertical and one horizontal rule (line) are also available. Initially, these rules are tucked and hidden against the left and bottom graph axes, respectively. Either may be repositioned by dragging with ! the left mouse button. The menu selection \btn{File\pipe Exit} terminates the \app{mmGraph} application. The menu \btn{Help} provides the usual help facilities. \ssechead{Details} ! The \btn{X-Axis} and \btn{Y-Axis} menus are configured based on incoming ! data. As a result, both menus are initially empty. If a graph widget ! is scheduled to receive data only upon control point events in the ! solver, it may be a long time after starting a problem in the solver ! before the graph widget can be configured. Because \app{mmGraph} keeps ! all data up to the limit imposed by the {\em Point buffer size}, data ! loss is usually not a problem. Of more importance is the fact that ! automatic data saving\index{data!save} can not be set up until the first ! data point is received. As a workaround, the solver initial state may ! be sent interactively as a dummy point to initialize the graph widget ! axes menus. (You may turn off the \btn{Interactive} schedule connection after sending this data point.) Select the desired quantities off the axes menus, and use the \btn{Options\pipe clear Data} command to remove the dummy point from \app{mmGraph}'s memory. The {\btn{File\pipe Save --- 156,194 ---- \Tcl\ \cd{canvas create line} command; see that documentation for details. ! A few other controls are also available only through the mouse. If the mouse pointer is positioned over a drawn item in the graph, holding down ! the left mouse button will bring up the coordinates of that point, with ! respect to the y1-axis. Similarly, depressing the right mouse button, ! or alternatively holding down the shift key while pressing the left ! mouse button will bring up the coordinates of the point with respect to ! the y2-axis. The coordinates displayed are the coordinates of a point ! on a drawn line, which are not necessarily the coordinates of a plotted ! data point. (The data points are plotted at the endpoints of each line ! segment.) The coordinate display is cleared when the mouse button is ! released. One vertical and one horizontal rule (line) are also available. Initially, these rules are tucked and hidden against the left and bottom graph axes, respectively. Either may be repositioned by dragging with ! the left or right mouse button. The menu selection \btn{File\pipe Exit} terminates the \app{mmGraph} application. The menu \btn{Help} provides the usual help facilities. \ssechead{Details} ! The axes menus are configured based on incoming data. As a result, ! these menus are initially empty. If a graph widget is scheduled to ! receive data only upon control point events in the solver, it may be a ! long time after starting a problem in the solver before the graph widget ! can be configured. Because \app{mmGraph} keeps all data up to the limit ! imposed by the {\em Point buffer size}, data loss is usually not a ! problem. Of more importance is the fact that automatic data ! saving\index{data!save} can not be set up until the first data point is ! received. As a workaround, the solver initial state may be sent ! interactively as a dummy point to initialize the graph widget axes ! menus. (You may turn off the \btn{Interactive} schedule connection after sending this data point.) Select the desired quantities off the axes menus, and use the \btn{Options\pipe clear Data} command to remove the dummy point from \app{mmGraph}'s memory. The {\btn{File\pipe Save diff -crN oommf-1.1a2/doc/mmhelp-body.tex oommf/doc/mmhelp-body.tex *** oommf-1.1a2/doc/mmhelp-body.tex Wed Apr 5 00:23:06 2000 --- oommf/doc/mmhelp-body.tex Tue Apr 4 23:21:01 2000 *************** *** 27,36 **** \ssechead{Launching} {\bf mmHelp} may be launched from the command line via \begin{verbatim} ! tclsh oommf.tcl mmHelp [] [-console] \end{verbatim} ! The command line argument {\tt } is the URL of the first ! page (or home page) to be displayed. If no URL is specified, {\bf mmHelp} displays the Table of Contents of the {\em \OOMMF\ User's Guide} by default. --- 27,36 ---- \ssechead{Launching} {\bf mmHelp} may be launched from the command line via \begin{verbatim} ! tclsh oommf.tcl mmHelp [standard options] [URL] \end{verbatim} ! The command line argument {\tt URL} is the URL of the first ! page (home page) to be displayed. If no URL is specified, {\bf mmHelp} displays the Table of Contents of the {\em \OOMMF\ User's Guide} by default. *************** *** 100,103 **** --- 100,109 ---- The menu selection \btn{File\pipe Exit} or the \btn{Exit} button terminates the {\bf mmHelp} application. The menu \btn{Help} provides the usual help facilities. + + \ssechead{Known Bugs} + \app{mmHelp} is pretty slow. You may be happier using + \hyperrefhtml{local customization}{local + customization (Sec.~}{)}{sec:custom} methods to replace it + with another more powerful HTML browser. diff -crN oommf-1.1a2/doc/mmlaunch-body.tex oommf/doc/mmlaunch-body.tex *** oommf-1.1a2/doc/mmlaunch-body.tex Wed Apr 5 00:23:06 2000 --- oommf/doc/mmlaunch-body.tex Tue Apr 4 23:21:01 2000 *************** *** 21,27 **** application}{bootstrap application (Sec.~}{)}{sec:cll}. The command line is \begin{verbatim} ! tclsh oommf.tcl mmLaunch [-console] \end{verbatim} \ssechead{Controls} --- 21,27 ---- application}{bootstrap application (Sec.~}{)}{sec:cll}. The command line is \begin{verbatim} ! tclsh oommf.tcl mmLaunch [standard options] \end{verbatim} \ssechead{Controls} diff -crN oommf-1.1a2/doc/mmprobed-body.tex oommf/doc/mmprobed-body.tex *** oommf-1.1a2/doc/mmprobed-body.tex Wed Apr 5 00:23:06 2000 --- oommf/doc/mmprobed-body.tex Tue Apr 4 23:21:01 2000 *************** *** 18,26 **** \btn{mmProbEd} button on \htmlref{\app{mmLaunch}}{sec:mmlaunch}, or from the command line via \begin{verbatim} ! tclsh oommf.tcl mmProbEd [-console] \end{verbatim} \ssechead{Inputs} The menu selection \btn{File\pipe Open...} displays a dialog box for selecting a file from which to load a \MIF\ problem --- 18,34 ---- \btn{mmProbEd} button on \htmlref{\app{mmLaunch}}{sec:mmlaunch}, or from the command line via \begin{verbatim} ! tclsh oommf.tcl mmProbEd [standard options] [-net <0|1>] \end{verbatim} + \begin{description} + \item[{\tt\bf -net $<$0\pipe 1$>$}] + Disable or enable a server which provides problem descriptions + to other applications. By default, the server is enabled. When + the server is disabled, \app{mmProbEd} is only useful for editing + problem descriptions and saving them to files. + \end{description} + \ssechead{Inputs} The menu selection \btn{File\pipe Open...} displays a dialog box for selecting a file from which to load a \MIF\ problem *************** *** 42,48 **** \MIF\ file and then writing it back out may alter the file. Each instance of \app{mmProbEd} contains exactly one problem description ! at a time. Each also services requests from client applications (typically solvers) for the problem description it contains. \ssechead{Controls} --- 50,57 ---- \MIF\ file and then writing it back out may alter the file. Each instance of \app{mmProbEd} contains exactly one problem description ! at a time. When the option \cd{-net 1} is active (the default), each also ! services requests from client applications (typically solvers) for the problem description it contains. \ssechead{Controls} diff -crN oommf-1.1a2/doc/mmsolve2d-body.tex oommf/doc/mmsolve2d-body.tex *** oommf-1.1a2/doc/mmsolve2d-body.tex Wed Apr 5 00:23:06 2000 --- oommf/doc/mmsolve2d-body.tex Tue Apr 4 23:21:01 2000 *************** *** 25,60 **** \btn{mmSolve2D} button on \htmlref{mmLaunch}{sec:mmlaunch}, or from the command line via \begin{verbatim} ! tclsh oommf.tcl mmSolve2D [-console] [-tk <0|1>] [-restart <0|1>] \end{verbatim} ! The command line options \cd{-tk 0} and \cd{-tk 1} determine whether ! or not \app{mmSolve2D} has its own window. By default it does not ! (\cd{-tk 0}). With no window, an instance of \app{mmSolve2D} may keep ! running while a window system goes down and comes back up again (on some ! platforms). This is useful since a single instance of \app{mmSolve2D} ! may need to run for hours or days at a time to solve one problem. When ! \app{mmSolve2D} does have a window (\cd{-tk 1}), it does not place ! anything in its window, nor does it even display its window. ! The only effects of the presence of the window ! are that any error messages will be displayed in pop-up windows, ! that the \cd{-console} option becomes available for displaying a ! console window in which interactive Tcl commands may be typed, and that ! (on some platforms) the termination of the windowing system will ! terminate \app{mmSolve2D}. Running \app{mmSolve2D} with the ! \cd{-tk 1} option is generally useful only for debugging. ! ! There is another aspect to \Tk\ availability. If a problem is loaded ! that uses a {\hyperrefhtml{bitmap mask file}{bitmap mask file ! (Sec.~}{)}{par:partgeometry}}\index{file!mask}, and if that mask file is ! not in the PPM P3 (text) format, then \app{mmSolve2D} will launch ! {\hyperrefhtml{any2ppm}{\app{any2ppm} ! (Sec.~}{)}{sec:any2ppm}}\index{application!any2ppm} to convert it into ! the PPM P3 format. Since \app{any2ppm} ! requires\index{requirement!Tk}\index{requirement!display} \Tk, ! at the time the ! mask file is read a valid display must be available. See the ! \app{any2ppm} documentation for details. Since \app{mmSolve2D}\index{mmLaunch~user~interface} does not present any user interface window of its own, it depends on --- 25,50 ---- \btn{mmSolve2D} button on \htmlref{mmLaunch}{sec:mmlaunch}, or from the command line via \begin{verbatim} ! tclsh oommf.tcl mmSolve2D [standard options] [-restart <0|1>] \end{verbatim} ! \begin{description} ! \item[{\tt\bf -restart $<$0\pipe 1$>$}] ! \index{simulation!restarting} ! Affects the behavior of the solver when a new problem is loaded. ! Default value is 0. When launched with \cd{-restart 1}, the ! solver will look for \fn{\textit{basename}.log} and ! \fn{\textit{basename*}.omf} files to restart a previous run from the ! last saved state (where \fn{\textit{basename}} is the ``Base Output ! Filename'' specified in the input {\latex{\MIF\ problem specification ! file (Sec.~\ref{sec:mifformat})).}}{\html{\htmlref{\MIF}{par:mifoutspec} ! problem specification file).}} If these files cannot be found, then a ! warning is issued and the solver falls back to the default behavior ! (\cd{-restart 0}) of starting the problem from scratch. ! The specified \cd{-restart} setting holds for \textbf{all} problems fed ! to the solver, not just the first. (There is currently no interactive ! way to change the value of this switch.) ! \end{description} Since \app{mmSolve2D}\index{mmLaunch~user~interface} does not present any user interface window of its own, it depends on *************** *** 67,85 **** into panels, providing user interfaces to the \btn{Inputs}, \btn{Outputs}, and \btn{Controls} of \app{mmSolve2D}. ! The \cd{-restart} option\index{simulation!restarting} affects the ! behavior of the solver when a new problem is loaded. If \cd{-restart} ! is set to 1, then the solver will look for \fn{\textit{basename}.log} ! and \fn{\textit{basename*}.omf} files to restart a previous run from the ! last saved state (where \fn{\textit{basename}} is the ``Base Output ! Filename'' specified in the input {\latex{\MIF\ problem specification ! file (Sec.~\ref{sec:mifformat})).}}{\html{\htmlref{\MIF}{par:mifoutspec} ! problem specification file).}} If these files cannot be found, then a ! warning is issued and the solver falls back to the default behavior ! (equivalent to \cd{-restart 0}) of starting the problem from scratch. ! The specified \cd{-restart} setting holds for \textbf{all} problems fed ! to the solver, not just the first. (There is currently no interactive ! way to change the value of this switch.) \ssechead{Inputs} The top panel of the user interface window may be opened and closed --- 57,73 ---- into panels, providing user interfaces to the \btn{Inputs}, \btn{Outputs}, and \btn{Controls} of \app{mmSolve2D}. ! Note on \Tk\ dependence: If a problem is loaded ! that uses a {\hyperrefhtml{bitmap mask file}{bitmap mask file ! (Sec.~}{)}{par:partgeometry}}\index{file!mask}, and if that mask file is ! not in the PPM P3 (text) format, then \app{mmSolve2D} will launch ! {\hyperrefhtml{any2ppm}{\app{any2ppm} ! (Sec.~}{)}{sec:any2ppm}}\index{application!any2ppm} to convert it into ! the PPM P3 format. Since \app{any2ppm} ! requires\index{requirement!Tk}\index{requirement!display} \Tk, ! at the time the ! mask file is read a valid display must be available. See the ! \app{any2ppm} documentation for details. \ssechead{Inputs} The top panel of the user interface window may be opened and closed *************** *** 377,382 **** --- 365,374 ---- has been reached). \ssechead{Known Bugs} + \app{mmSolve2D} requires the damping coefficient to be non-zero. + See the \hyperrefhtml{MIF documentation}{MIF documentation + (Sec.~}{)}{sec:mifformat} for details on specifying the damping + coefficient. When multiple copies of \app{mmLaunch}\index{mmLaunch~user~interface}\index{application!mmLaunch} *************** *** 405,411 **** long delay between the time you click the \btn{Pause} button and the time the solver stops iterating. This bug first appeared in \Tcl\ release 8.0.3, and remained through \Tcl\ release 8.1.1. It is ! fixed in \Tcl\ release 8.2, which we recommend for \OOMMF\ users on \Windows\ 95 or \Windows\ 98 systems. Other platforms do not have this problem. \index{platform!Windows!network socket bug|)} --- 397,403 ---- long delay between the time you click the \btn{Pause} button and the time the solver stops iterating. This bug first appeared in \Tcl\ release 8.0.3, and remained through \Tcl\ release 8.1.1. It is ! fixed in \Tcl\ releases 8.2 and later, which we recommend for \OOMMF\ users on \Windows\ 95 or \Windows\ 98 systems. Other platforms do not have this problem. \index{platform!Windows!network socket bug|)} diff -crN oommf-1.1a2/doc/oommfhead.tex oommf/doc/oommfhead.tex *** oommf-1.1a2/doc/oommfhead.tex Wed Apr 5 00:23:07 2000 --- oommf/doc/oommfhead.tex Tue Apr 4 23:21:01 2000 *************** *** 11,16 **** --- 11,24 ---- \documentclass[12pt]{article} \usepackage{makeidx} + + %begin{latexonly} + \ifx\undefined\pdfpagewidth % pdflatex command not in use + \else + \usepackage[pdftex, colorlinks=true, citecolor=blue]{hyperref} + \fi + %end{latexonly} + \usepackage{html} %begin{latexonly} *************** *** 34,42 **** \usepackage[pdftex]{color} \usepackage[pdftex]{graphics} - \usepackage[pdftex, - colorlinks=true, - citecolor=blue]{hyperref} \fi %end{latexonly} --- 42,47 ---- *************** *** 44,50 **** \newcommand{\pdfonly}[1]{} \usepackage{color} \usepackage{graphics} ! \let\hyperrefhtml=\hyperref } \setlength{\textwidth}{6.5in} --- 49,56 ---- \newcommand{\pdfonly}[1]{} \usepackage{color} \usepackage{graphics} ! %\let\hyperrefhtml=\hyperref ! \newcommand{\hyperrefhtml}[3]{\hyperref{#1}{#2}{#3}} } \setlength{\textwidth}{6.5in} *************** *** 82,88 **** \newcommand{\SVF}{SVF} \newcommand{\VIO}{VIO} \newcommand{\OBS}{OBS} ! \newcommand{\muMag}{\latex{$\mu$}\html{mu}Mag} \newcommand{\SI}{SI} % as in SI units \newcommand{\ASCII}{ASCII} --- 88,94 ---- \newcommand{\SVF}{SVF} \newcommand{\VIO}{VIO} \newcommand{\OBS}{OBS} ! \newcommand{\mumag}{\latex{$\mu$}\html{mu}MAG} \newcommand{\SI}{SI} % as in SI units \newcommand{\ASCII}{ASCII} diff -crN oommf-1.1a2/doc/overview-body.tex oommf/doc/overview-body.tex *** oommf-1.1a2/doc/overview-body.tex Wed Apr 5 00:23:07 2000 --- oommf/doc/overview-body.tex Tue Apr 4 23:21:01 2000 *************** *** 67,73 **** {\samepage If you want to receive e-mail\index{e-mail} notification\index{announcements} of updates to this project, register ! your e-mail address with the ``\muMag\ Announcement'' mailing list: \begin{center} \htmladdnormallink{http://www.ctcms.nist.gov/\~{}rdm/email-list.html}{http://www.ctcms.nist.gov/\~{}rdm/email-list.html}. \end{center} --- 67,73 ---- {\samepage If you want to receive e-mail\index{e-mail} notification\index{announcements} of updates to this project, register ! your e-mail address with the ``\mumag\ Announcement'' mailing list: \begin{center} \htmladdnormallink{http://www.ctcms.nist.gov/\~{}rdm/email-list.html}{http://www.ctcms.nist.gov/\~{}rdm/email-list.html}. \end{center} Binary files oommf-1.1a2/doc/pngfiles/mmdisp-ss.png and oommf/doc/pngfiles/mmdisp-ss.png differ Binary files oommf-1.1a2/doc/pngfiles/mmgraph-ss.png and oommf/doc/pngfiles/mmgraph-ss.png differ Binary files oommf-1.1a2/doc/pngfiles/mmprobed-ss.png and oommf/doc/pngfiles/mmprobed-ss.png differ diff -crN oommf-1.1a2/doc/psfiles/mmdisp-ss.ps oommf/doc/psfiles/mmdisp-ss.ps *** oommf-1.1a2/doc/psfiles/mmdisp-ss.ps Wed Apr 5 00:23:09 2000 --- oommf/doc/psfiles/mmdisp-ss.ps Tue Apr 4 23:21:02 2000 *************** *** 1,7 **** %!PS-Adobe-2.0 EPSF-2.0 %%Title: /home/donahue/mag/oommf/doc/giffiles/mmdisp-ss.ps ! %%Creator: XV Version 3.10a Rev: 12/29/94 - by John Bradley ! %%BoundingBox: 0 0 948 646 %%Pages: 1 %%DocumentFonts: %%EndComments --- 1,7 ---- %!PS-Adobe-2.0 EPSF-2.0 %%Title: /home/donahue/mag/oommf/doc/giffiles/mmdisp-ss.ps ! %%Creator: XV Version 3.10a Rev: 12/29/94 (PNG patch 1.2) - by John Bradley ! %%BoundingBox: 0 0 948 698 %%Pages: 1 %%DocumentFonts: %%EndComments *************** *** 24,30 **** 0 0 translate % size of image (on paper, in 1/72inch coords) ! 948.02400 645.98400 scale % define 'colorimage' if it isn't defined % ('colortogray' and 'mergeprocs' come from xwd2ps --- 24,30 ---- 0 0 translate % size of image (on paper, in 1/72inch coords) ! 948.02400 697.96800 scale % define 'colorimage' if it isn't defined % ('colortogray' and 'mergeprocs' come from xwd2ps *************** *** 82,107 **** % define the colormap ! /cmap 438 string def % load up the colormap currentfile cmap readhexstring ! 84dee4 2c4e54 5c9ea4 0c0204 140204 040204 fcfefc 848284 dcdadc f4fafc ! 000000 bcbabc 0402fc ecf6fc fc0204 3c0204 1c0204 04020c 04021c 040224 ! 04024c 040244 040254 04022c 040214 440204 340204 c4e2fc fce2e4 fcdadc ! fcfafc cce6fc e4f2fc 5c0204 540204 040264 04026c 6c0204 740204 4c0204 ! 240204 04025c 040234 04023c 2c0204 84c2fc b4dafc fc9e9c fc9a9c 040274 ! fc9294 8c0204 840204 640204 9ccefc bcdefc acd6fc fcc2c4 fcbabc 7c0204 ! fcc6c4 fcbebc 7cbefc 94cafc 04028c 9c0204 040294 940204 a40204 ac0204 ! 64b2fc 5caefc fc7274 4ca6fc a4d2fc fcb2b4 fc8a8c 040284 0402ac fc6664 ! fcaeac 0402a4 fc7e7c d40204 cc0204 b40204 fceeec fccacc 04027c fcf2f4 ! d4eafc dceefc 8cc6fc 0402e4 04029c 0402bc 0402c4 0402b4 bc0204 c40204 ! ec0204 e40204 dc0204 3c9efc 44a2fc 0482fc fc2224 fc3e3c 349afc fc4e4c ! fc4244 fc6264 0402dc 0402ec 0402d4 fce6e4 0402cc fceaec 6cb6fc 148afc ! 2c96fc fc2a2c fc1e1c fc1614 fc5254 fc2e2c fc7a7c 2492fc 1c8efc fc3634 ! fc4a4c 54aafc fc5654 fcaaac fca6a4 fc3234 74bafc fc7674 fcb6b4 fcf6f4 ! fc9694 fca2a4 fcd2d4 fcd6d4 fc4644 fccecc pop pop % lose return values from readhexstring --- 82,118 ---- % define the colormap ! /cmap 762 string def % load up the colormap currentfile cmap readhexstring ! ffffff d9d9d9 b9b9b9 828282 5f9ea0 2f4f50 85dee0 000000 000001 010000 ! 00fffd ff0006 00fdff ff0000 ff000c ff0600 00ff4e 8b00ff 00ff54 00ff5a ! 00ff85 6600ff 00e5ff 36ff00 3cff00 00f1ff 7e00ff 48ff00 00ff6c 00ff78 ! 00fff7 18ff00 00ff60 00ff7e 004eff 12ff00 0036ff 000005 00f7ff 5a00ff ! 00bbff 4e00ff 2aff00 00ff66 d300ff 00ff72 6c00ff 00ff2a 9100ff 00ff18 ! 00a9ff 7800ff 3600ff 00ff91 0006ff 42ff00 4800ff 8500ff 1200ff 7200ff ! 3c00ff 00ebff 6000ff 4200ff 30ff00 00ff00 0030ff ff00eb ff3600 00cdff ! af00ff 0097ff 000cff 0078ff 0c00ff 1eff00 00ff3c 008bff 00ff30 0072ff ! ff00d3 00d3ff 00ffeb 0012ff 001eff 2a00ff 3000ff 00ff1e eb00ff ff0c00 ! 00ff48 00ff8b 5400ff ff9100 4eff00 0600ff ff00fd 0018ff 0091ff 00ff9d ! df00ff 0054ff 00ff42 ff0012 a900ff 0000ff 00ff06 002aff 91ff00 ff00d9 ! 97ff00 0060ff 78ff00 007eff bb00ff ff00a9 ff0018 00ff36 2400ff 00ffcd ! 00afff ff00c7 050000 ff1800 cdff00 fd00ff 030000 ff006c e6ff00 ffc700 ! ff0091 ffa300 ff9d00 1d0000 b6ff00 00ff12 ff0097 00dfff a3ff00 00ffa9 ! 070000 ffbb00 ff00b5 9b00ff f700ff f100ff 00ffaf fffd00 ff0024 ff008a ! 00d9ff 0cff00 00ffd7 000013 0085ff 000003 fdff00 ffd000 fff200 24ff00 ! c1ff00 090000 dfff00 00b5ff ff003c 60ff00 ff0030 00ff97 f1ff00 00ffc1 ! ff2400 afff00 ff00cd 66ff00 ffa900 54ff00 0024ff 0066ff ff0042 006cff ! 00ffb5 ff005a ffe500 ff7800 00004f e500ff ff0078 ff4e00 c100ff ffb500 ! ff00e5 ff6600 ff00f1 d9ff00 ff00bb d900ff 00c1ff 87ff00 00ffdf 0f0000 ! 000009 ff2e00 ff1200 ffdf00 ff00af b500ff ff009d 00fff1 ff0085 ff7e00 ! ff9700 7eff00 ffd900 ff00c1 a300ff 00c7ff ff1e00 1800ff ff5400 0042ff ! ff0048 570000 ffaf00 003cff 00ffa3 ff5a00 009dff 00ff0c ff6000 6cff00 ! ff00df 0048ff ff0066 ff7200 00ff24 ff0036 00000d 06ff00 ff3f00 005aff ! 160000 ff8500 cd00ff f7ff00 00a3ff 000039 00ffc7 ff007e ff8b00 00ffbb ! c700ff 000094 ffc100 72ff00 pop pop % lose return values from readhexstring *************** *** 143,1813 **** } bind def ! 474 323 8 % dimensions of data ! [474 0 0 -323 0 323] % mapping matrix rlecmapimage ! 14008101007f007f007f002c008101001300 ! 130001017f007f007f002c00010113000001 ! 010013018100017f017f017f012c018100011001810001 ! 01007f017f017f01540101000001 ! 0100010110008101007f007f007f001a008101000f008101000f00810100810001 ! 010001010f0001017f007f007f001a0001010f0001010f00010101000001 ! 0100010101000d02010101007f027f027f021802010101000d02010101000d0201010100 ! 0001 ! 0100010101000d0201010100570203038104020102820304021502020381040201020203 ! 8104020102020381040281020303038104028102030103810402350201038104021f0285 ! 030402030402200202038104020102020381040281020303038104020302820304028102 ! 030103810402180201038104023f02010101000d02010101000d02010101000001 ! 0100010101000d0201010100570282030502810205810502180282040502810205840502 ! 030502810205840502030502810205810502030201058302030502810205810502330282 ! 040502210283030502058105021f02820405028102058405020305028102058105020302 ! 010503028104058405020305028102058105021602820405024102010101000102080081 ! 01028102018101008100020c02010101000001 ! 0100010101000d0201010100400282040203830304020382030402830204020383030402 ! 038203040201020105020285050302050302810203010381040286020304020304020b02 ! 010581020581050281020582050205810502060201050102010501028205030207028203 ! 040204020203810402010202038104028302040203830304020382030402830204020383 ! 030402038203040281020502050902020381040283020402038303040203820304020102 ! 020381040281020584050205030203028503040203040201020203810402010202038104 ! 020102020381040281020581050281020582050205810502830205030202020105030282 ! 030205820502058105020802020381040283020402038303040203820304028102050205 ! 410201010100010281000206028101028102018101008100020c02010101000001 ! 0100010101000d0201010100400282030502810205810502810205840502030502810205 ! 810502810205810502810205810502010201058102058405020305028102058205020501 ! 058102058105020302820403020202010502020305010201050702010501020105010201 ! 050102820403020302820305020302820405028102058405020305028102058405020305 ! 028102058105028102058405020305028102058105028102058105028102058105020802 ! 820405028102058405020305028102058105028102058405020305028102058205020582 ! 050205810502030281030582050205840502030502810205840502030502810205840502 ! 030502810205820502058105028102058205020581050281020581050202020105030282 ! 030205820502058105020702820405028102058405020305028102058105028102058105 ! 02810205810502410201010100010281000206028101028102018101008100020c020101 ! 01000001 ! 010001010100010208008101028102018101008100023f02010501020105010201058102 ! 058105028102058105028302050302810205810502010201058102058205020501050302 ! 010501028205030201020103810502020201050202010501020105810205020581030202 ! 020105020201050102010502020105810402080201050102010581020581050281020582 ! 050205810502810205810502810205820502058105028102058105028302050302810205 ! 810502080202050302010501020105010282050302030201058102058205020581050203 ! 020105010282050302030201058102050105030202050302010501020105810205810502 ! 810205810502010201050302810302810205820502050205810402040201050102010581 ! 020581050281020581050283020503028102058105024102010101000102810002060281 ! 0102810201810100810002030202008101020302010101000001 ! 010001010100010281000206028101028102018101008100023f02820305028102058105 ! 028102058205020581050281020581050281020581050281020581050201020105810205 ! 810502010202050102010501020105010282030502030282030502020201050102010581 ! 020581050283020503020102820305020102010501020105040282050302070282030502 ! 810205820502058105028102058205020581050281020581050281020582050205810502 ! 810205810502810205810502810205810502010281040302030302020501020105010201 ! 050102010501028103050205810205820502058105020302010501020105010281030502 ! 050202020503020205010201050102010581020581050281020581050201028203050201 ! 028103020102010581020581050281020581050203028203050281020582050205810502 ! 810205810502810205810502810205810502410201010100010281000206028101028102 ! 018101008100020302810002820201020302010101000001 ! 010001010100010281000206028101028102018101008100023f02010501020105010201 ! 058102058105028102058105028102058105028102058105020102010581020581050202 ! 020205810205810502810205810502010201058103028102058105020302010501020105 ! 810205810502830205030201020105020201050102010502020205090201050102010581 ! 020581050281020582050205810502810205810502810205820502058105028102058105 ! 028102058105028102058105020b02020581020581050281020581050281020582050205 ! 810502810205820502058205020581050203020105010201058102058105028102058105 ! 020202010581030202020205810205810502810205820502058105028102058105020102 ! 010502020805010282050302030201050102010581020581050281020581050281020581 ! 050281020581050241020101010001028100020602810102810201810100810002030281 ! 0002820201020302010101000001 ! 010001010100010209010102010101004002820305028102058105028102058205020581 ! 050281020581050281020581050281020581050283020305028102058205020581050281 ! 020582050205010581020581050203020105810205810502030201050102010581020581 ! 050281020581050283020305020202010501020105010282030502030282040302030201 ! 050102010581020581050281020582050205810502810205810502810205820502058105 ! 028102058105028102058105028102058105020802820305028102058205020581050281 ! 020581050281020582050205810502810205820502058205020581050284020403020501 ! 058102058205020581050281020582050205810502810205840502030502810205820502 ! 058105028102058205020581050281020581050283020305020602010581020581050281 ! 020581050284020403020581050281020582050205810502810205810502810205810502 ! 810205810502410201010100010281000206028101028102018101008100020302030104 ! 02010101000001 ! 0100010101000d0201010100400201050102010501020105810205810502810205810502 ! 810205810502810205030502020105010203050102010581020581050207020405810302 ! 810205020502020305020201050402030509028205030204020305020203050102010501 ! 020105010201058102058105028102058105028102058105028302050302090203050102 ! 010501020105010201050102020581020502058102058105028102058205020582050205 ! 810502010202058102058205020502050202030502020305020203050202010507020105 ! 010203050202010501020305010201050102010501020105010282050302410201010100 ! 010281000206028101028102018101008100020c02010101000001 ! 0100010101000d0201010100690201057f02110201057f02180201010100010281000206 ! 028101028102018101008100020c02010101000001 ! 0100010101000d0201010100690201057f02110201057f02180201010100010209010102 ! 010101000d02010101000001 ! 0100010101000d0201010100690201057f02110201057f021802010101000d0201010100 ! 0d02010101000001 ! 0100010101000d02010101007f027f027f021802010101000d02010101000d0201010100 ! 0001 ! 81000101018100010f018100017f017f017f011a018100010f018100010f018100010001 ! ! 7f017f017f015901 ! 02008101067f067f067f0650068101000100 ! 010001017f067f067f06500682070100810001 ! 0100010101067f087f087f084d080107810100810001 ! 0100010101067f087f087f084d080107810100810001 ! 0100010101067f087f087f084d080107810100810001 ! 0100010101067f087f087f084d080107810100810001 ! 0100010101067f087f087f084d080107810100810001 ! 0100010101067f087f087f084d080107810100810001 ! 0100010101067f087f087f084d080107810100810001 ! 01000101820609087f087f087f084c080107810100810001 ! 0100010101067f087f087f084d080107810100810001 ! 0100010182060908080807058108058105081608010503080105010a250803050a080105 ! 010801057f087f083b08010502080105070801050e080107810100810001 ! 010001010106090801050608010517080105030801052608010501080105090801057f08 ! 7f083f08010502080105070801050e080107810100810001 ! 010001018206090808080105030801058108058105088108050205120801050108010581 ! 080581050881080502050108010501080105010801051108010503080105810805820508 ! 05810508810805020581080581050881080502050108010581080582050b088108050205 ! 7f087f082708010502080105010803050108010581080582050805810508070801078101 ! 00810001 ! 010001010106090801050308010581080582050805810508810805810508100801050108 ! 010581080582050805810508810805820508058105088108058105088108058105081008 ! 010503080105810805010581080581050881080581050881080582050805810508810805 ! 820508050105810805820508058105088108058105087f087f0825080105020801058108 ! 058105088108058205080582050805010581080581050806080107810100810001 ! 010001018206090808080405810805820508058205080581050881080581050810080105 ! 010801058108058205080581050881080581050881080582050805820508058105081108 ! 010503080105810805810508810805810508810805810508810805820508058105088108 ! 05820508058105088108058205080501057f087f08290806058108058105088108058205 ! 08058205080581050881080581050806080107810100810001 ! 010001010106090801050308010581080582050805040512088105088208050881080582 ! 050805040501080105810805820508058105081108010503080105810805810508810805 ! 810508810805810508810805820508058105088108058205080581050881080581050801 ! 0802057f087f082708010502080105810805040581080582050805810508810805810508 ! 06080107810100810001 ! 010001010106090801050308010581080582050805810508150803050108010581080581 ! 050804080105810805820508058105081108010503080105810805810508810805810508 ! 810805810508810805820508058105088108058205080581050881080581050802080205 ! 7f087f082608010502080105810805810508030801058108058105088108058105080608 ! 0107810100810001 ! 010001010106090801050308010581080582050805810508810805810508120801050208 ! 010581080581050881080581050801080105010801051408010501080105010802058108 ! 058105088108058205080501058108058105088108058205080581050881080582050805 ! 8105088108058105087f087f082508010502080105810805810508810805820508058205 ! 0805010581080581050806080107810100810001 ! 010001010106090801050308010581080581050881080502051408010502080105010803 ! 050308010501080105150803050208010581080581050802080105810805810508810805 ! 02050108010501080105010803057f087f08270801050208010501080305010801058108 ! 058205080581050807080107810100810001 ! 010001010106630801057f087f08590801050b080107810100810001 ! 0100010182060908070806051c08070524080b057f087f0846080805090801050b080107 ! 810100810001 ! 010001010106630801057f087f08590801050b080107810100810001 ! 01000101820609087f087f087f084c080107810100810001 ! 0100010101067f087f087f084d080107810100810001 ! 01000101820609087f087f087f084c080107810100810001 ! 0100010101067f087f087f084d080107810100810001 ! 01000101820609087f087f087f084c080107810100810001 ! 0100010101067f087f087f084d080107810100810001 ! 0100010101067f087f087f084d080107810100810001 ! 0100010101067f087f087f084d080107810100810001 ! 0100010101067f077f077f074f07810100810001 ! 010001018106077f077f077f074f07810100810001 ! 0100010102067f097f097f094d0982060100810001 ! 010001017f067f067f06500682070100810001 ! 010001017f067f067f064f060107810100810001 ! 01000101020632078106077f077f0745078106075107810100810001 ! 0100010102068107082e0884060706070871087f0750078406070607084c088106070107 ! 810100810001 ! 010001010206820708062c068508060706070871087f074f070106830706070822082807 ! 820806070107810100810001 ! 010001010206820708062c0685080607060708710801077f084c08020683070607082208 ! 270783060806070107810100810001 ! 010001010206820708062c06850806070607087108010727080c0b01099c060906090609 ! 060906090609060906090609060906090609060906090b770b8108060106830706070822 ! 08010724088409060806070107810100810001 ! 010001010206820708062c06850806070607087108010727080c0b1c0681070b770b8108 ! 06010683070607082208010724080106820806070107810100810001 ! 010001010206820708061506810c061406850806070607087108010727080c0b82090608 ! 0a08820706080a080107780b820809068406070607082208010724088409060806070107 ! 810100810001 ! 010001010206820708061406020c0d060505860608060709070804080105240804050808 ! 0105240801050e0801071e08030504080c0b01060b08820706080a080107780b81080601 ! 068307090708020801050408010516080107020801050708030513080106820806070107 ! 810100810001 ! 010001010206820708061406020c07060505020601050106850806070607080308030522 ! 0801050208010507080105240801050e0801071d0801050108010503080c0b820906080a ! 08820706080a080107780b82080906840607060708020801050408010516080107810805 ! 0205060801050108010512088409060806070107810100810001 ! 010001010206820708060806010c0806040c0e0601050206850806070907080308810508 ! 820805088108058205080502058108058205080502050108010501080105010801050508 ! 010502080105810805810508810805820508058205080581050801080305020803050108 ! 820508050105810805010501080105810805810508810805810508810805020502080105 ! 030801072108010503080c0b01060b08820709080a080107780b81080601068307090708 ! 020802050208020501080305020801058108058105088108058105080308010702080105 ! 0a08010512080106820806070107810100810001 ! 010001010206820708060806010c0106010c0106010c0206810c060e0601050306850806 ! 0706070802080105010801058108050a0501080105810805810508810805810508810805 ! 810508050802050308010501080105810805010581080582050805810508810805820508 ! 058105088108058205080581050881080581050881080582050805010581080582050805 ! 82050805810508810805810508810805810508020801072008010504080c0b820906080a ! 08820706080a080107780b82080906840607060708020802050208020581080581050881 ! 080582050805820508050105010801050408010702080105090801051308840906080607 ! 0107810100810001 ! 010001010206820708060606070c0106010c0206810c060d060105040685080607060708 ! 020801050108010581080501050108020501080105010801050108010581080582050805 ! 810508080802050108010501080105810805810508810805820508050105070801058108 ! 058105088108058105088108058205080581050881080582050805820508058105088108 ! 05810508060801071f08010505080c0b01060b08820709080a080107780b810806010683 ! 070607080208030581080502050408010581080581050881080581050807080107020801 ! 050808010514080106820806070107810100810001 ! 010001010206820708060806010c0106010c0106010c0206810c06090601050106050586 ! 060806070607080208050581080581050801080105020801050108010501080105810805 ! 820508058105080908020581080581050881080582050805810508810805810508010802 ! 050208040581080581050881080581050881080582050805810508810805820508058205 ! 08050405070801071e08010506080c0b820906080a08820709080a080107780b82080906 ! 840607060708020801058508050805080581050881080503058108058105088108058105 ! 0807080107020801050708010515088409060806070107810100810001 ! 010001010206820708060806010c0106010c81060c010c0206810c060606040508068508 ! 060709070801080105030803050208010502080105010801050108010581080582050805 ! 810508050801050208010581080581050881080582050805810508810805810508020802 ! 058108058105088108058205080581050881080581050881080582050805810508810805 ! 82050805820508058105080a0801071d08010507080c0b820609080a08820709080a0801 ! 07780b810806010683070907080208010581080501058108058205080581050881080582 ! 050805810508810805810508070801070208010506080105160801068208060701078101 ! 00810001 ! 010001010206820708060d06040c0206810c060706020509068508060706070801080105 ! 030803050208010502080105010801050208010501080105070801050208010581080582 ! 050805010581080501058108058205080581050881080582050805810508810805820508 ! 058105088108058105088108058205080501058108058205080582050805810508810805 ! 810508810805810508020801071d08010507080c0b820906080a08820709080a08010778 ! 0b8208090684060706070802080105010881050881080582050805810508810805820508 ! 058205080501050108010504080107020801050308010581080581050815088409060806 ! 070107810100810001 ! 010001010206820708061006010c0206810c060806010509068508060709070801080105 ! 030803050208010503080305030801050108010508080405020801058108058205080582 ! 050805810508010803050208020581080502050108010501080105810805820508058105 ! 08810805810508810805020502080105030801071d08050503080c0b820609080a088207 ! 09080a080107780b81080601068307090708020801050108810508810805810508810805 ! 010581080582050805820508058105088108058105080308010702080105030801058108 ! 05040512080106820806070107810100810001 ! 010001010206820708060c06010c0106010c0206810c0614068508060706070859080105 ! 1508010727080c0b820906080a08820709080a080107780b820809068406070607081708 ! 01050808010724088409060806070107810100810001 ! 010001010206820708060d06030c0306810c0605068105060c0685080607060708590801 ! 051508010727080c0b01060c078109070c07780b81080601068307060708130801050108 ! 01050808010724080106820806070107810100810001 ! 010001010206820708061506810c0604068105060d068508060706070859080105150801 ! 0727080c0b8109071b07780b820809068406070607081408030509080107240884090608 ! 06070107810100810001 ! 010001010206820708061506810c0603068105060e0685080607090708710801077f084c ! 08020683070907082208010724080106820806070107810100810001 ! 010001010206820708061506810c06140685080607060708710801077f084c0802068307 ! 06070822080107810d0601061f090206820806070107810100810001 ! 010001010206820708061506810c06140685080607090708710801072709840609060906 ! 820609068206090681060907098106090b09830609060982090609850906090609068206 ! 090682060906820609068206090682060906820609068206090682060906820609068206 ! 090682060906820609068206090682060906820609068206090682060906820609068206 ! 090682060906820609068206090682060906820609068206090682060906820609068206 ! 090682060906820609068206090682060906820609068206090682060906820609068206 ! 090683060906098109060206830709070822088107062606820806070107810100810001 ! ! 010001010206820708061506810c0682060506110685080607060708710882070d067f06 ! 4e0683070607084c088106070107810100810001 ! 010001010206820708061506830c0605060a0601050506850806070607092e0981060984 ! 090609060982090609840906090609820906098409060906098209060984090609060982 ! 090609840906090609820906090709810609820906090b097f0651068307060709080981 ! 060984090609060982090609100929060207810100810001 ! 010001010206820708061506820c05060b06030503068408060706077f077f0745078106 ! 075107810100810001 ! 0100010102068207080601061305810e051105020683080607067f067f067f0618060107 ! 810100810001 ! 01000101020682070806140682050e060c06030503068408060706077f077f077f071907 ! 810100810001 ! 0100010102068207080613068305060e060c06010505068508060706070828087f077f07 ! 6b078106070107810100810001 ! 01000101020682070806120681050682060e0614068508060706070828087f077f076a07 ! 01060207810100810001 ! 0100010102068207080611068105060106810e06070601050a0685080607060708280801 ! 077f087f08670802060207810100810001 ! 0100010102068207080610068105060206810e0607060105010601050106010502068508 ! 0607060708280801072708100b01099c0609060906090609060906090609060906090609 ! 06090609060906090b7f0b7f0b0e0b81080601060207810100810001 ! 010001010206820708060f068105060306810e0605060505810605020503068508060706 ! 0708280801072708100b1c0681070b7f0b7f0b0e0b81080601060207810100810001 ! 010001010206820708060e068105060406810e0607060105030601050406850806070607 ! 08280801072708100b820906080a08820706080a0801077f0b7f0b0f0b82080906810607 ! 0107810100810001 ! 010001010206820708060d068105060506810e0607060105030601050406850806070907 ! 08010806051f0801071e0803050408100b01060b08820706080a0801077f0b7f0b0f0b81 ! 080601060207810100810001 ! 010001010206820708060c068105060606810e060c060305030685080607060708060801 ! 051f0801071d080105010801050308100b820906080a08820706080a0801077f0b7f0b0f ! 0b820809068106070107810100810001 ! 01000101020682070806090683050605060706810e060b06010501060105020685080607 ! 090708050801050108030502080305010882050805010581080501050208010503080107 ! 1d0801050708100b01060b08820709080a0801077f0b7f0b0f0b81080601060207810100 ! 810001 ! 01000101020682070806090601050906810e061406850806070607080408010501080105 ! 010801058108058105088108058205080581050881080581050881080581050881080581 ! 0508020801071d0801050708100b820906080a08820706080a0801077f0b7f0b0f0b8208 ! 09068106070107810100810001 ! 01000101020682070806080603050806810e061406850806070607080308010502080105 ! 010801058108058105088108058205080581050881080581050881080581050806080107 ! 1d0804050408100b01060b08820709080a0801077f0b7f0b0f0b81080601060207810100 ! 810001 ! 01000101020682070806080601050a06810e061406850806070607080308010502080105 ! 010801058108058105088108058205080581050881080581050881080581050806080107 ! 1d080105010801050308100b820906080a08820709080a0801077f0b7f0b0f0b82080906 ! 8106070107810100810001 ! 01000101020682070806020601051006810e061406850806070907080208010503080105 ! 010801058108058105088108058205080581050881080581050881080581050806080107 ! 1d080105010801050308100b820609080a08820709080a0801077f0b7f0b0f0b81080601 ! 060207810100810001 ! 0100010102068207080602060105010605050806810e0614068508060706070801080105 ! 040801050108010581080581050881080582050805810508810805810508810805810508 ! 810805810508020801071d080105010801050308100b820906080a08820709080a080107 ! 7f0b7f0b0f0b820809068106070107810100810001 ! 010001010206820708068106050405020601050906810e06140685080607090708010806 ! 0581080502050208030501080105010801050108010501080105030801071e0803050408 ! 100b820609080a08820709080a0801077f0b7f0b0f0b81080601060207810100810001 ! 0100010102068207080602060105030601050a06810e0614068508060706070828080107 ! 2708100b820906080a08820709080a0801077f0b7f0b0f0b820809068106070107810100 ! 810001 ! 0100010102068207080602060105020601050b06810e0614068508060706070828080107 ! 2708100b01060c078109070c077f0b7f0b0f0b81080601060207810100810001 ! 01000101020682070806060601050c06810e06140685080607060708280801072708100b ! 8109071b077f0b7f0b0f0b820809068106070107810100810001 ! 01000101020682070806060605051f0685080607090708280801077f087f086708020602 ! 07810100810001 ! 010001010206820708062c0685080607060708280801077f087f08670802060207810100 ! 810001 ! 010001010206820708062c06850806070607082808010728098406090609068206090682 ! 0609068206090681060907098106090c0983060906098209060985090609060906820609 ! 068206090682060906820609068206090682060906820609068206090682060906820609 ! 068206090682060906820609068206090682060906820609068206090682060906820609 ! 068206090682060906820609068206090682060906820609068206090682060906820609 ! 068206090682060906820609068206090682060906820609068206090682060906820609 ! 068206090682060906820609068206090682060906820609068206090682060906820609 ! 068206090682060906820609068206090682060906820609068206090682060906820609 ! 068206090682060906820609068206090682060906820609068206090682060906820609 ! 068206090682060906820609068206090682060906820609068206090682060906820609 ! 068206090682060906820609068206090682060906820609068206090682060906820609 ! 068206090682060906820609068206090682060906830609060981090602060207810100 ! 810001 ! 0100010102068107082e08840607060708280882070d067f067f06690602078101008100 ! 01 ! 0100010102068107062f0683070607090609810609840906090609820906098409060906 ! 09820906098409060906098209060984090609060983090609067f067f066b0602078101 ! 00810001 ! 01000101020632078106077f077f077f071907810100810001 ! 0100010101067f077f077f074f07810100810001 ! 010001018106077f077f077f074f07810100810001 ! 010001013a06810906820609068206090682060906820609068206090682060906820609 ! 068206090682060906820609068206090682060906820609067f067f066d068101008100 ! 01 ! 010001017f067f067f065106810100810001 ! 010001017f067f067f065106810100810001 ! 010001017f067f067f065106810100810001 ! 010001017f067f067f065106810100810001 ! 010001017f067f067f065106810100810001 ! 010001017f067f067f065106810100810001 ! 010001017f067f067f065106810100810001 ! 010001017f067f067f065106810100810001 ! 010001017f067f067f065106810100810001 ! 010001017f067f067f065106810100810001 ! 010001017f067f067f065106810100810001 ! 010001017f067f067f065106810100810001 ! 010001017f067f067f065106810100810001 ! 010001017f067f067f065106810100810001 ! 010001017f067f067f065106810100810001 ! 010001017f067f067f065106810100810001 ! 010001014006050f82041004830410040504050511011281131282121415821514158215 ! 14064b060116811416831614171382131713811318821811188118118111058205110582 ! 0511058205030582050310041005197f067406810100810001 ! 010001014006010f841a0f1a0f0482041b040104820506050205861105110511051c811c ! 12011206154c068214161483141614130313021d0111821811050305011e050505100519 ! 7f067406810100810001 ! 010001014006011b010f811a1b821b1f040104020604058211051c041c01128215141501 ! 15821415064b068316141614821416130313041d821118050305031e8105200120031001 ! 2005197f067406810100810001 ! 010001013f06821b1f1b021b810f0401040b068211051c011c81121c021c04154c060114 ! 8516141614131d061d81111e0a1e0205072003197f067406810100810001 ! 010001013e06811f1b821b1f0f020f02048210040601060305021185051105121c120112 ! 0115011c01158114064b068116148214161d011d0313011d04110405031e810305010503 ! 10042002197f067406810100810001 ! 010001013d06011b811f1b011b830f1a0f04040482050605030582110511011104120615 ! 4c06831614161401140513021183181118050305011e81030503050310022004197f0674 ! 06810100810001 ! 010001013a0601218222212281220f850f1a0f1a0f040204821004050505011183051105 ! 120312031581141581152304234006012481232484242314161483141614130413841118 ! 1118118111050905820305108210041001100519012581262583252625067f066c068101 ! 00810001 ! 010001013a06022283212221270427052805050511041782162916021602238429232923 ! 063f0601238124230123822916290229012a812b2a012a051881110504050503052c0522 ! 06257f066d06810100810001 ! 010001013a0601210122822122270427052805050311841811172a1782172a1604168223 ! 2923822329238123063f0684242324232487241629162916292a022a822b2a1804180605 ! 0503052c8622212221222125012581262501257f066d06810100810001 ! 010001013a06012281212282222127012781222781272801288110288128050405051104 ! 170516832923292383232923063f06842324232423812329012981162981292a042a8218 ! 1218831812180582051105020501038104030103052c0122862122212225262502258126 ! 067f066c06810100810001 ! 010001013a06862122212221222704270528050501118118110111812a17021701168129 ! 168616292329232923822329063f068124230123842423291629832916292a822a2b2a01 ! 2a051806050503012c81282c012c82222122832221222505257f066d06810100810001 ! 010001013a068321222122822221278227222701270528050505110117812a1782172916 ! 031681292301238129238123063f068423242324238523291629162981292a032a812b18 ! 82181218011881110501058111058105030403052c812122842221222d25032582262506 ! 7f066c06810100810001 ! 010001012e06012281272281222781271982192719851922212e2122812227042782282e ! 280228050503118218111703170416052f82232916031603308323242306270681312482 ! 2431320332852916292324238123300330831629162a042a051806050103810403010302 ! 2c81282c832c222122862221222d2526250225813334823433348134067f060106812535 ! 8235253581353683361a2c1a811a04820410048204100304038205030582050305070581 ! 110582051105040505040b100b04822c282c822c282c812c060e06810100810001 ! 010001012e068227222783272227190419812237833722212281222701278422272e382c ! 022c8203090301038405121812390439012b84291629162981292f032f81231604160330 ! 022328060424033201168129230323033002290415043a821213058205110581051e871e ! 041004371b100f010f81190f810f350435823b2d3b023b05348133067f06010604350136 ! 012c811a2c812c040404050382051e050905811e05080586040304030403100a10060486 ! 03040304032c2882282c2882282c060e06810100810001 ! 010001012e06832227222782272219821927198119378137228622212221272e2781272e ! 812e2c032c020982030503810318011881123c023c022b8416291629168216232f012f01 ! 230516812330013002232806042402320116822916230323023003290415813a3d013d83 ! 131213050305031e8110048804371b37190f193735823525350135013b842d3b343b3405 ! 347f06020682352535853536352c1a2c852c1a2c100d04020481030d810d0382031e0681 ! 06050705021e090584030d0403048204100d810d10021081201002108104208120040104 ! 83030903048304032c0d830d282c288128060e06810100810001 ! 010001012e0682272227842722273719811937853719212221220122032e0127022c0109 ! 831e091e090509011805390116812916831629232f022f81291604168123300230822324 ! 0627068224312481243202328629162916232423812330023003290215013a813d3a833a ! 13121e0a1e881004100f19371b371b811b35023581253b013b022d823433348234333481 ! 34067f06010603360135852c1a2c1a2c0d010d81040d020d0103010689090609061e061e ! 06091e0b1e0105020d81040d020d0310022081102002200304020d81040d020d86282c28 ! 2c282c060e06810100810001 ! 010001012e0683222722278127370237021987222122212221382e812e270127822c1a2c ! 012c0209030381181284121812183c813c2b012b0239831629162382232f2381232f812f ! 168216141681162382232923832330230627060224813224812416021682291623012381 ! 302381232902298223293a823a3d150115813a12821213128112050305031e8410041004 ! 0f870f190f1b371b37350235023b012d813e3404348133067f0601060136813f35013581 ! 1a2c812c0d850d200d200d04010482030503010302060805021e0605020d81090d810d04 ! 01040210052002100204020d81090d810d04010482282c2884282c282c060e0681010081 ! 0001 ! 010001012e060127822227370137822e37190119012281212281222e012e82382e278127 ! 2c012c811a2c882c030903050305121801188212182b032b011683293916298129230323 ! 81162f812f16011605230130270681243281322401240116812916831629233081302301 ! 230329013a05158212131283121312050305011e83100410048404100f190f840f371b37 ! 1b841b3525353b813b2d032d013481333401347f06010682363f368236253585352c1a2c ! 1a2c812c0d810d0402040303840503051e050905811e050805010d840403040310041001 ! 2003108103040304010d01048303042c2882282c2882282c060e06810100810001 ! 010001012206053505278122278227222781271903198527222122212281222703278122 ! 2c042c01038a050305031812181218122b032b8216291689162916232923292329168216 ! 2f160116062301301a060540812423822324238123328132240224812916821629168116 ! 30813023022305290515841213121312811205050501048a10041004190f190f190f3504 ! 35043b012d04348133067b0604410236813f350135811a2c842c1a2c1a04040405031705 ! 0304840304100410821004100110810410011007048b03040304282c282c282c28060e06 ! 810100810001 ! 0100010122060135842135213527042705221127051a0503011281131201120115812b15 ! 81152904298223292386232923312431240124834042404283424042061b060540042381 ! 3224042404238130230423052902148115148114170417811105040505280522873b263b ! 263b264333033306447c06054182343b3402340527052805030c05821105118111050505 ! 030383040310288228102881281082102810011005038211051185110511131213821312 ! 138113060e06810100810001 ! 0100010122068235213583352135270427052201278122270827011981271981191a041a ! 050382121312831213121503150629012389292329243124312431408240424083404240 ! 061b0605400523052401238124230723822923290229051405170605052805220226833b ! 263b330433014481454483444544067b060541863b343b343b3427042705288604030403 ! 0403050a0501118405110511050405880304030403042810288928102810281028102803 ! 0403051106130f06810100810001 ! 010001012206812135843521352127042705220327812227822722278427222719278227 ! 192781271a041a0203810403810312851213121312150115842b15291629022901238529 ! 23292331240124833124424082404240824042061b060540022381242381232404240b23 ! 0229812329812914821415140114811317821713178117058205110502050128812c2801 ! 2882222722862227223b263b26012601338143338233434405447c06054182343b348334 ! 3b3427042705288203040382030403810305820503050705011181051181110504058203 ! 0403840304031028852810281028100110822810030403810511031106130f0681010081 ! 0001 ! 01000101220601358121358235212782271927822719228222272201220d278419271927 ! 1a041a050382121312831213121503150229811629012901238129238123248224312484 ! 2431404240824042408140061b0605400523022481232481242306238129230123052905 ! 1405170605052805220126853b263b26463303330244814544824447067b060241814341 ! 84413b343b3484343b272227832722272804280103810403820304050a05011184051105 ! 110504050103810403840304281028892810281028102810280304030111810511821105 ! 138213121302130f06810100810001 ! 0100010122068235213583352135270427052207278122270227831927192782272c1a82 ! 1a2c1a831a03040302038113128212131281121503150629822329238923293124312431 ! 244048854840424042061b0605400148812423012305240b230529041481151704170605 ! 0328823628220422833b263b2684263b474633023382444544024401477b060541813b34 ! 83343b344981492703278228102889281028040304030403050705811105850511051105 ! 1181110504058a0403040304032810281028812810851028102810030403051106130f06 ! 810100810001 ! 010001011b06063b012d843521352127042782224a220222012781222784272227382704 ! 278119278227191a821a2e1a011a050301128213124b044b812b290429864c324c322923 ! 2482243124832431404802480140824d404d834d404d060f06054e0140814d480248814f ! 2302230324044c06230432022901148115500450021702058111050105042882363f2282 ! 2227228122260126813b2683263346338333433344034483454447440344760605418234 ! 3b3483343b49270427052801038637030403050305080501118105118111058205110502 ! 050103810403830304102885281028102810821028108210040382030403820305110311 ! 021381121301130f06810100810001 ! 010001011b06013b84263b263b2d812d25032501218122218221224a834a222722022281 ! 2722012282382e278327222719821927190119831a372e1a011a82030903020383171317 ! 1381134b034b811429042903328224314d044d86424f484f48424d054d1006014e84514e ! 514e40024082484f4881484d024d0431014c82524c310131032481233202320223811416 ! 0116045083172a1705030501068a0f1a0f1a0f1a363f3525358235343303338541444744 ! 414407448147440244760603538254535502558249553404340519811037813710011082 ! 03090301030405821105568256181184111811051101118305030403840304032c288628 ! 2c282c282c2883282c280302030557012a0224813124822431060e06810100810001 ! 010001011b06823b263b843b262d3b25042582214a2181214a814a220422842738222738 ! 81382705270119842719372e1a021a02090303021381171381134b014b8c151423292329 ! 2329244c324c2483244d404d024d814048024881404d014d81404d014d1006824e514e85 ! 4e514e40424081404802480158814d58835831583181314c014c03310424023281292301 ! 23821614168116500250012a82172a0503050306810f1a911a0f35253f25352533343334 ! 3334444146418141440144814544034481474402447606055303558849553b343b343b34 ! 19031901370310811e098309030503810305010501568559565956181102118105110111 ! 84030903040384032c0d09280128832c5a2c2885282c035a5b03810357025781172a832a ! 243124822431248124060e06810100810001 ! 010001011b06813b2d022d013b82252625832526254a024a0121052282382e3881382281 ! 22270427863719272e37191a011a84090d090d090309830d090d130113034b8114298229 ! 2329832923243284324c32314d014d81404d824d424001408248404d044d8140060f0681 ! 514e824e514e814e40854042404840580158024d8231583181314c854c524c3124318131 ! 240224033203230116821416500250012a0b06810f1a821a25358535363f363f33853334 ! 33344441844146474644074402478144067506025381545381534983494549558355343b ! 3484343b343719811937823719100110811e090909870511565956115956015681051192 ! 1105090d0903090d090d2c282c285b5a5b285b815b5a815a0303030157812a5786572a24 ! 31243124822431060e06810100810001 ! 010001011b06873b2d5c2d3b263b250425024a0221812722822227228122380138012202 ! 278122278627372e372e271981191a031a020903038113178817131713144b15144b824b ! 23298329232924032481324d044d82404240014081484d054d1006014e88514e514e4042 ! 40484081404d014d82584d5881583182314c310231812431013102248132248224292302 ! 2383291614508150168216502a822a172a812a0503050306860f1a0f1a3525358535363f ! 36343389333433414441464746440144814544034402478144067506055303490155813b ! 3485343b34372e3781371901190410831e09060301030205811105010584185618111882 ! 18115681560d010d8f090d09030403282c285b5a5b5a5b5a2882282c0304038217572a01 ! 2a015701248431243124060e06810100810001 ! 010001011b06032d81263b813b250325044a012104220138812e38813822812227022788 ! 372e372e371927191a041a82030903020381171382131713811314031481294b8c4b2923 ! 293124312431244c324d024d814240824042408440484d404d834d404d060f06844e514e ! 514e814e40824048400140824d584d844d584d314c814c31073181243281322401240123 ! 812923012301500316012a81172a822a170503050106841a0f1a0f1a8b1a25352535363f ! 363f33343387334146474647464405440447814406750603538254534903498155348434 ! 3b342e37023702190510820309058205030505058411181118110611840d090304038203 ! 2c2882282c2887285b5a2c282c2803010381050381032a042a842457243124822431060e ! 06810100810001 ! 010001011606814333873343335c2d5c2d3b823b26258225262501250421072281272283 ! 2227222705270119832719271a821a2c1a821a2c03040301138117138213171403148323 ! 294b298b29232431243124314d324c4d014d864240424042404881484d034d0a06055d03 ! 4e83514e404888484042404d584d584d814d4c814c318231583105310132032404230150 ! 0116831416142a012a83172a17050505821a0f1a841a0f1a25359235363f363f36333433 ! 34444144474647444544054402478144067506055303490155813b3482343b3481341903 ! 198127108210281001100303820503050205831105181101118118118411051105118111 ! 0382030403840304282c2882282c2884282c282c28812803030381052a032a832b243124 ! 822431248124060e06810100810001 ! 01000101160604338334333433833334333b823b263b013b012584352535252104210522 ! 8627222722272219821927190119051a8203050301038305172a1783172a171601168229 ! 16240424814d580158824d58400140834240425e045e8251484e034e0a06055d045f8960 ! 4e484e614e61515e5183515e4c4001400242044d81325804588624312431243129042983 ! 2a2b2a2b822b2a0505050527813b340234823b44418a4144414445554555454662046204 ! 63824763067506016481656401640149036602628163628162340434050f8a0403040304 ! 030511051105810518051801118118118111030403811a2c832c1a2c1a841a2c1a2c1a81 ! 1a050405823124310231824e514e034e0f06810100810001 ! 0100010116068233433304338534333433263b853b263b26352582253525812521042104 ! 228521272227222701278519271927191a041a8105038203050381031785172a172a1716 ! 0316052484584d584d58815842834240424081405e045e014e81514e024e0a06055d8c60 ! 5f605f605f484e614e614e5182515e5182515e4201428240424083404d404d014d035882 ! 4d583182312431823124290429012b842a2b2a2b0505050127812227012784343b343b34 ! 813441824144410141025581455581556204620563815406750604648165660466836362 ! 6362826263340434050f8303040304820403058505110511051804180111811811821118 ! 030403842c1a2c1a2c812c1a851a2c1a2c1a05040584243124312481244e864e514e514e ! 51060e06810100810001 ! 010001011606053383343334338233343b853b263b263b25822535258225352104210522 ! 82272227822722278127198219271981191a011a812c1a8a1a0305030503052a172a1782 ! 172a16821629168316243124832431245882584d5884584d40424084404240515e035e06 ! 4e0a06055d895f605f605f604e614e6101618a5e515e515e51424042404281424d834d40 ! 4d4081405804588431243124318331292329862923292a2b2a2b822b2a05050505270234 ! 843b343b4441874144414445674555845545625562026282636863036376060564026681 ! 6966836662636285626362343b340234050f810304880403040305110511058105180118 ! 811118851811181118118311030403850304032c1a2c852c1a2c1a2c1a011a812c050405 ! 812431823124318631514e514e514e814e060e06810100810001 ! 010001011606814333043383343334338233263b883b263b262535253525812521022184 ! 3521222122832221222782272227842722192719831927191a041a810503840305030517 ! 85172a172a171603160524814d5882584d58815840824042408240425e015e81515e815e ! 4e054e0a06035d820e5d5f025f82605f610161844e616a5e5184515e515e428242404281 ! 426b826b404d024d82584d58025801318424312431290429022b812a2b812b0502058103 ! 05820522270127862227473b343b34833441444189414441556755455545620462826368 ! 638263546381630675060564026681696682666362826263628162340234843b6c0f1a0f ! 020f8204030483040304058205110582051118041801118418111811030403831a2c1a2c ! 882c1a2c1a2c1a2c1a05040583243124318231244e824e514e834e514e060e0681010081 ! 0001 ! 01000101160601338143330133813433013384343346263b853b263b2535258325352521 ! 04210622852722272227198519271927191a021a822c1a0382030503860305172a172a17 ! 8217291601168129240124813124822458488b484d584d4240424042405e6d816d5e015e ! 064e0a06025d020e845f605f605f855f614e614e6a836a515e5185515e5142404287426b ! 6e6b4d404d408140580458816f31823124318131290429862b2a2b2a2b2a050505052701 ! 470134863b34414441444187415545675545556201628155628162638263686301638154 ! 06750602648165648164660166816966816662856263626362340234826c340f010f811a ! 0f820f03048804030403051105110581051804188211181102110503811a2c852c1a2c1a ! 2c1a841a2c1a2c050405016f01318424314e514e824e514e814e060e06810100810001 ! 010001011606063384343334334683463b263b883b262535253525355c815c2101218135 ! 22042288274a27222722192719831927191a821a2e1a011a860503050305031783172a17 ! 3004308116240424814d4802488358404240844042405e6d026d815e4e824e514e024e0a ! 06015d81700e010e825f605f855f605f614e6181616a016a835e515e518b514042406b6e ! 6b6e404d404d814d5883584d586f016f8124318331243129832923294c034c832a2b2a05 ! 82050305010581032704278334473b3482343b4189414441444155456745558155620462 ! 01638167630263760605640266816966846663626362826263340234826c340f040f8303 ! 04030482040305850511051105188218111801188611181118111803010381040383032c ! 1a2c852c1a2c1a2c1a831a2c1a050405826f4f6f8a6f31244e514e514e514e060e068101 ! 00810001 ! 01000101160681554502458441434143418241463302338a3433263b263b265c2d352502 ! 25022181352181214a814a22022283271927198a19272c372e1a2c1a0506050205042b03 ! 2f82302358045881404802488240515e855e515e51616d036d06610a06010c040e047102 ! 70036a0472875f606b6e6b6e6b4e034e015e046f04400431034c02150604052601448147 ! 440144016284556255626382636763026385546354635462866268626362630675060564 ! 020e81690e810e64046486635463546c63340434052c0105811f05010501738112180718 ! 82051e050205052c051a82121f120212824f6f4f854f6f5e5f605f845f605f60060e0681 ! 0100810001 ! 010001011606014581554581454182414341894146413433343334332685263b265c2625 ! 872535253525214a2181214a814a2204220219842719372e1a831a2c1a0601060305052b ! 0130812f2388233158315831584048024881405e825e515e835e51616d026d815f610561 ! 0a06030c820e0c710471037083726a74720372015f86605f6b6e6b614e014e81615e025e ! 026f04400431024c832b15200d810d04010481100d810d26042601448147440144815562 ! 82625562816263016381676383635463548a546354626362686263620675060264816564 ! 81640e010e81690e810e640464846354636c548354343b340234015a022c845a1f5a0573 ! 8873757375731218121803188109068106050205052c841a1f1a2c1f011f871312131213 ! 6f4f6f816f5e815e5f825f605f835f605f060e06810100810001 ! 0100010116060445824143418841464143333433343388335c2d5c2d263b352584253525 ! 354a024a0121822227228c2227223719272e37191a2c1a060a06022b82302f3082302358 ! 01588b315831404d404d48405e515e845e515e616d836d5f6d610561815f060906030c83 ! 0e0c5d7182715d718171700270826a7072017281747287725f605f606b604e044e035e02 ! 6f04408231583181314c024c031581040d020d84200d200d260226014481414701470162 ! 845562556263016381676301630154816354855462636268628262630675060564020e81 ! 690e810e64046481635484546c5463340134843b345a1f5a025a812c0503058573757318 ! 7573017301188109068a0609061e061e061e06092c822c281f031f821a13128212131285 ! 124f6f5e6f5e885e605f605f605f60060e06810100810001 ! 01000101160681554502458141460246014181343301338634332d5c2d3b268326253525 ! 862535254a364a2101210422012e83372e271981191a841a2c1a2c0601060305052b8223 ! 3023812330823031588358315840034085485e515e515e815e610361816d6182615f6102 ! 610a06030c820e0c7104710370826a70720472015f84605f6b604e014e81614e814e5e01 ! 5e836f5e424003408142310131814c3184312b152b1501150404030d8120268226254401 ! 440247815562846255625563016302678254635483546354628662636768676306750605 ! 6405690164816564016481546c016c01540334825a1f5a815a2c022c0505841273121812 ! 82121873817318821809068106050205042c021f031a011284131213125e025e846f425f ! 605f825f605f815f060e06810100810001 ! 01000101160604458141460246824143338c333433345c2d5c2d3b263b3525832535254a ! 034a01210322812e378a372e371927191a2c1a2c1a831a0506050205052b042381583082 ! 30315881584004408248515e895e515e614e614e616d610261815f618161060906030c82 ! 0e0c7104710370826a7072047286605f606b5f604e044e025e816f5e815e40044081314c ! 814c3101310415812b040304010d81202603268144470347835562556201628163670367 ! 8163548354635463876367686768676306750601648165640164810e6903690464826554 ! 6c846c676c63340134811f5a015a821f5a2c012c0505841812181218061882051e050205 ! 032c041f011a852c121312131281125e865e425e6f5e605f825f605f825f60060e068101 ! 00810001 ! 010001011006815545824555450245815545844541467646854641433334338f33345c2d ! 5c2d263b262535253525352104210522041982272c1a011a822c1a050405812a2b012b82 ! 2a2b230123882923315830583158408240424001400148855e515e514e6182614e618261 ! 6d610361815f060306055f030c820e0c7182715d7101710370846a70727472837274725f ! 875f606b605f4e614e014e81615e825e6f5e015e824042400240014c0331051506040226 ! 8125268126440144024786625562556255638363676c6783675463548a54635462636768 ! 6768620675060564010e0269830e646564026481546c016c01540534052c050501188112 ! 188218121804180505012c81282c012c021a812c1a811a12821213128212135e035e886f ! 5f605f605f605f060e06810100810001 ! 0100010110060a4581444681464402440141864341434133343387333433263b263b2682 ! 2625358a35253525222122212221270427861a2c1a2c1a2c050405841415141514841424 ! 3124318531404d404d4081405e045e8251484e024e015f81615f015f016d04610406055f ! 0371810e710571020c816a0c090c816b0c810c71047181726f846f707270600360814c4e ! 044e8631243124312427052705630466814766036684655366536782676c620462873334 ! 33676867330675060564010e0269070e826c670e010e0553053481030582050305810512 ! 041205180505050483050305038403052b152b8b2b152b40424042404f6f4e6182614e61 ! 8161060e06810100810001 ! 01000101100682455545014581554503450644824143410141814333823334338333343b ! 260126843b263525358335253521852122212221270427812c1a821a2c1a811a05040501 ! 14891514151424312431244085404d404d405e035e81514e044e86615f615f615f610561 ! 0406055f0371810e710271815d7181710c010c816a0c080c816b0c010c057182726f7201 ! 72817060016081746081604e044e0131842431243127052705630b668253665381536781 ! 6762826255620162813433013383676833067506026481656481640e010e81690e070e81 ! 6c0e020e8266536683665366348234333401340203810503810312041205180505810304 ! 03048105038203050381032b852b152b152b42824240420142814e6185614e614e61060e ! 06810100810001 ! 0100010110060a45824445448244454482444341864143414333343392333433263b263b ! 263b35253525352522212221822122270427011a812c1a821a2c05040582141514011481 ! 15318231243182314d4082404d4081405e825e515e015e024e81514e844e615f615f815f ! 6106610406055f0371815d7182715d710271020c816a0c080c816b0c010c057186707270 ! 727072600460024e81614e834e3124310131812427822722278527222763546302630766 ! 8165660266836c536653815362046287333433343334330675060564010e81770e090e81 ! 770e010e8253665383536653340134816934873403050305030512821218120112051805 ! 0503048c03040305030503052b152b152b872b4240424042406184614e614e618161060e ! 06810100810001 ! 010001011006815545024583784544450145054401498241434182414333853334333433 ! 2682263b2601268125358235253581352101218122218321271927012787191a2c1a2c1a ! 2c0504058414151415148214243185312431404d4083404d405e045e054e865f616b5f61 ! 5f6105610406055f01718179710771020c816a0c090c817a0c810c7182715d7188715d72 ! 70727b72706082607460016081614e824e7b4e814e318531243124312705270263815463 ! 83636665668366656766046686536c665366536204628134330133813433813306030681 ! 47066f060564010e81770e090e81770e010e816653825366538253333482346934833403 ! 05038403050318120312051805050104810304010481050384030503052b822b152b832b ! 15404201428340424e6182614e6182614e060e06810100810001 ! 010001011006014583554578450445054483494143418741434133343334338233462684 ! 263b263b358b3525352535212221222122270427832c1a2c1a821a2c0504058214151486 ! 1415142431243188314d404d404d405e7c817c5e015e824e514e014e81515f845f6e6b5f ! 610261814e6101610406055f0171827d79710671020c016a090c017a810c710471817072 ! 81727b827b70600460024e017b874e312431243124270427017604630366816766826665 ! 660166856553666c665383536255628362556233823334338333343306030601476f0602 ! 6481656481640e820e770e090e81770e010e015384665366533401348169348234050384 ! 03050305120412011881121882181205820511050105810304030401038105038403052b ! 152b832b152b42824240428242406184614e614e618161060e06810100810001 ! 010001011006034581784502458244454401448745444944434143418241433382333433 ! 81334682463b2684263b2625358235253583355c2d218321222127012781192785271a38 ! 1a2c1a811a0582051105010501148115148214157e847e2431244082404d4083404d5e7c ! 027c815e4e044e86615f6b6e6b5f6105610406015f81615f825f61718571797d795d7182 ! 715d710171010c026a080c017a827b0c7104718272707b017b81726002608274604e814e ! 7b017b814e31823124310131012781222701278176630263825463660266816766056686 ! 53666c5366536204628534333433343381333482343334833444474403441c0606180111 ! 8118118211180603060504011081041083100410061b0681121882181218021881111883 ! 1811180603060564020e81770e090e81770e840e66536653825366340134816934813403 ! 82030503820305120112811812811218041805050504860503050305032b892b152b152b ! 424042404282424e6185614e614e61060e06810100810001 ! 010001011006035382785363036304558249554504450441834633343383333433268626 ! 3b263b2d5c35033582222722832227223882382c1a821a2c7581751802180529037e814d ! 5e045e814e7c037c8c5f615f615f61605f6e6b6e6b610561040605600172847d797d7972 ! 827270728172700170036a065d82717b7a017a0371815d710171037b0771037b814e6185 ! 614e614e41438543414376436308638867636653665366535487546c5463543343330233 ! 81430603060534014481474402441c060318827518110511040607048110040104811006 ! 1b06051801118118110111811806030605660264817764096481776481640e070e81690e ! 010e4506810100810001 ! 010001011006025381785381536303630355814955815545024582444541014184434641 ! 3433823334338333263b2683265c2635043584223822273881381a011a01758456755675 ! 1801180529814d7e817e4d814d5e045e814e7c027c824e615f825f615f025f846b606b60 ! 61056104060560857472797279728272707283727072700170816a7081705d075d817a5d ! 815d7182715d710471817b710971817b718371614e6183614e6143864341434146416307 ! 638167638563536653665385535463546c54815433843343334333813306030603348233 ! 34448244474402441c0603188275561182111811011181180603060504870d201004100d ! 04061b068318121875817518811811851118111811060306056602648177640964817764 ! 81640e070e81690e010e4506810100810001 ! 010001011006025381785383536362630163825562558255495581554504450241814641 ! 8341333433893334332d5c2d5c263b35043503380122832c1a2c1a861a75567518567501 ! 750429874d7e4d7e4d5e425e845e425e4e7c847c517c4e5f825f615f845f61605f608360 ! 6b5f610461815f0603060360825f60720272857972707270728172700370826a705d085d ! 827a5d710571815d7182717b710971837b714e6189614e614e4146764376438143630763 ! 81676381635382536653835366635486546c635433433384334333430603060134813334 ! 0134024402478144061b060118017582567511051104060704850d200d2010061b060218 ! 017581181186111811181118060306016681656601660264817764096481776481640e07 ! 0e81690e010e4506810100810001 ! 010001011006815378017801530463815549014902550145814445014503460141833433 ! 34338533345c2d5c2682263b3582352535853525382e38228222271a011a812c1a831a18 ! 751802188129758175290129034d817e5e045e044e867c615f615f615f825f605f835f6b ! 60610561040605600172837472797202728170728372705d7083706a705d085d847a5d71 ! 5d710671817b710271815d7182715d710171847b71614e618a614e614376467646414363 ! 82636263836362636701670163935366536653666354636c676c33433343334333060306 ! 8133340334024402478144061b0682567518011883751118110111821811060306060481 ! 100484040d2010061b068118758375187518811811821118110111040681656603668164 ! 77037706640477050e0569810e064406810100810001 ! 010001011006815378027881536382636263856355496849550155044581444602460141 ! 8134338a3334332d5c2d5c263b2635033504388527222c1a2c1a821a2c18821811180118 ! 03298223294d034d817e5e035e044e847c615f615f835f61605f815f6084606b615f6182 ! 615f6181610603060260815f60816072037286797270727072700370826a705d085d827a ! 5d710371815d710171825d7b7182715d710671837b714e618b614e614e43764676467643 ! 630563036782636653825366538453546c676c016c814333823343338233430603060534 ! 81444703478144061b06051806110406050487100410040d0410061b0605188211181184 ! 1118111806030605660164037707640377060e0469810e064406810100810001 ! 010001011006815378017882535463036381554902490155054503460141823334338933 ! 345c2d5c2d3b263b3501358125358135220422812c1a851a2c1a2c111803180129812329 ! 0129044d835e7e425e015e054e817c5f825f615f015f81605f835f606b610461815f0603 ! 060460815f720372837972707283727072700270846a705d705d825d705d825d705d825d ! 7a5d815d710771817b710771865d717b71614e6188614e61434676467643814363056302 ! 670163825366538553665354636c856c676c334333823343338133060306013481333401 ! 3402440247814445044510060115812b1582152b18041802118118110111040601048103 ! 048404030410048204100483040f1a0f830f1a0f060f06052b0618821118118311181106 ! 0306016681656601660264027708640277070e0269010e4506810100810001 ! 010001011006816578817865016504668454496849540154056301468655455545414441 ! 8341444133043305260521051a8213171302130531045e054e015f84605f605f7c817c74 ! 02740172847072706b610561040605600472817972057287707270726a72707282727072 ! 0472817a720172817472877260746074607b5f045f0451817b1604168335467635023501 ! 41814341834143446781674401440806016c8167060a0601448141440644884745444544 ! 454445060f06012b81152b822b151104118104038203040382030406030605110503830f ! 1a0f1a011a810f060f06012b852a2b2a2b05118611051105100410821004108110060306 ! 05530266017781666507650177066501660269826665064406810100810001 ! 010001011006826578650265046681544981495402540163816263866362554555455581 ! 5541824144418241443304330126813b2601260521051a0113841713171331043182425e ! 4282425e4e044e81605f825f605f815f74047481707288727072706b614e614e824e6106 ! 03060260815f6083607274720272817972057281707282726a728272707204728374727a ! 720472836074607483747b5f6084605f605f510351817b16821614160116063505418444 ! 674441448144060806016c0b06024483414441440444014581444501458144060f068115 ! 2b822b152b812b1104118103048204030482040306030605110503871a0f1a0f1a0f1a06 ! 0f06822b2a2b012b822a1105820511058105100510040605530366827766658265666582 ! 65666502658177650565026681696601664506810100810001 ! 01000101100605650466065405638255455585554555414441834144413304330326843b ! 262135210221011a812c1a841a2c1317138313171331013181243183315e425e015e054e ! 83605f605f825f607404748370727072017284614e614e61016104060560047281747204 ! 728170728672707270727072827270720b72816074837460746081605f845f605f605182 ! 514e51015104168114350235812535813541044105441706874144414441444544034482 ! 454445824544458145060f0683152b152b822b1511041182040304820403048104060306 ! 0511020381040382030f1a011a830f1a0f060f06012b862a2b2a2b051105840511050410 ! 0410040605538266786602660665827f666507650166817f6602664506810100810001 ! 010001011006016584666577656603660454828054630463834555455586556c41444144 ! 418141338233343301330526022181352181211a041a011381171382131731043185425e ! 425e424e044e865f60795f605f74827472740174867270727b7072610161844e614e6106 ! 03060460815f7282726a7202728174728272747283727079728272707284727072707201 ! 728181720172817472827274728372746074857460745f605f015f816051045105160635 ! 024181434101410444170601448141448544414944454401448745444544454445060f06 ! 81152b842b152b1511041183030403048304030406030681181103110503830f1a0f1a83 ! 1a0f1a060f06842b2a2b2a2b812b05820511058205111082100410021004060553826678 ! 660266066581786508650166817f6602664506810100810001 ! 010001011006036582776566826665668266535487545354805463626385636263554555 ! 85556c5541444183414441330333014704260521051a881713171317133124310231017c ! 81425e815e4e014e81614e874e605f7d795f6074047481707281727b877b704e614e614e ! 6181610603060260815f608160728372796a720872837d79707284727072707202720181 ! 07728160828282607481745f855f605f605f510451051601358125350235054105441706 ! 824441448544414483494402448245444582455c458145060f06012b84152b152b110111 ! 8118118311040304820403048104060306051101038104030103821a0f1a841a0f1a0f06 ! 0f06012b812a2b832b2a11058205110581051005100406025381545381536683667f6566 ! 8366656665826566650165817f65016581666503650166817f6601668165064406810100 ! 810001 ! 01000101100602658177658165660366035481805481546304638145558455456c554182 ! 414441844144333433013381832682263b2682263b210421015c011a822c1a1382131713 ! 82131731013181243183317c847c827c5e4e044e865f60797d795f740174817274837472 ! 707b017b8172610161814e6182614e06030605608572746a7d6a7206728670797d797270 ! 72017281707201720281067281748202820160015f83605f604c024c0151011681141682 ! 161435033582253541824143410141824441440244170601448341444144824449448344 ! 4544458245444584455c3f25268226252681260603060129028584868586152b822b1511 ! 0411870304030403040306030601118118110111040381041a841a0f1a0f1a811a190419 ! 04060515842b2a2b2a2b832b051105840511050410011081041081100603060553016681 ! 786601660765817f65036581666501650266817f6601664506810100810001 ! 010001011006026482776564046403658180658365536653025301548463546c63628262 ! 556201620344824744330433822625268226253f813f0f810f3d043d0215834d404d4084 ! 404d847c8488847c5f605f605f607285727d797d795d045d0171037b8171060906057401 ! 7203790772847d797d79720472017403810160815f6083605f61820382845e515e515e81 ! 5e4c854c524c58312b042b0619014181374101411d0607558449554555410441845c3f25 ! 262582252606030602168686858685862b1582152b030403011985271927192706030682 ! 1514158715141518111811560156010f0137880f190f190f190f190603060315043a8115 ! 2b812b04040481352101218335213506030605548866537f665366536653045381785303 ! 5381665301530266817f6601664506810100810001 ! 0100010110060264817764056403658180658165538953665366535463546c5483546255 ! 628362556244024482474433043301258426253f250f020f033d88152b152b404d404d40 ! 83407c847c867c4e5f605f605f815f728572797279725d045d0271817b7101710a060574 ! 8570726a726a728672707270727072847279727972057286607481748174600460816182 ! 028281615e825e515e835e51314c014c0131052b81193781371901190237014182434106 ! 1c0604558445554549558255454104418526255c25262581250603068729162986858685 ! 150115010d88090304030409192719011982271906030683141514158615141118111856 ! 0356010f0137821b0f19831937190603060315813a3d013d812b20012089100410040d20 ! 35213521832135210603060554845366537853825366538153668966536653667f665366 ! 5383536653660266847f666566064406810100810001 ! 010001011006026481776405640365818065856553665366538153548654636763545562 ! 84625562554783474447448144330433845c3f5c3f2581250f030f053d812b4082404d40 ! 89404d847c4e7c4e5f605f835f605f7202728279725d045d0371817b7181710609060174 ! 81727401748b707270727972707270727072037281797205728274607482748160056081 ! 618286824e82615e515e865e515e314c524c834c31152b822b152b812b37043781194104 ! 411d0601558145550155814555815549824983410441852526253f5c3f813f0603068a16 ! 2916858685862b152b158e15090d090d090d091927192719270603068114158415141514 ! 560656030f0119043704060115013a813d3a8e3a152b152b15200d200d200d200d218421 ! 352135060306815354035481665384537853665382536653015381665389537853665366 ! 536653660266817f6601664506810100810001 ! 010001011006047781656482646564826465800380836553665384536653546c016c0154 ! 8355625562826255470247014401338134330133865c3f5c2526250f040f013d0215023d ! 82404d4081404e024e817c5f825f605f825f60728572747279725d825d705d825d707184 ! 715d717b7181710609068172740374827270728272797282727072017281707202728379 ! 727472827274728272607484746081746082605f6082605f61036185825e515e515e825e ! 58310231814c2b032b03370119840f1941434102411d060655824555490149824144418a ! 414441262526253f5c3f0603068129868486291686150215822b150389030403090d090d ! 1927198219270603068314151456015603180156060f021984371b371b060106833d3a3d ! 150115813a2b852b152b152b048a0410040d200d200d2135218121060306015481535401 ! 5492536653787f78536653665366536653787f78538253665381536681667f037f816606 ! 4406810100810001 ! 0100010110068164770277056482666580028082656653825366538453546c676c846c63 ! 62556289625562478347834744330333855c3f5c3f262583250f1a0f020f0315822b1540 ! 82403d4082404d4e024e877c605f605f605f72037281795d045d0371817b718171060906 ! 057481707284727072797286727072707274728472747279720472017481607482748160 ! 0460046183825e515e875e515e315831583181314c814c2b812b370437021905411d0606 ! 5502498283494104418225262585255c3f5c3f0601068f85862916291629152b152b152b ! 03040383030d091986192719271927060306821514158315141518821811180118060f83 ! 190f19370237811b3d823d06150415822b152b022b8204100484040d200d218221352182 ! 213506030605548853787f787f78536653825366538853787f787f785366538353665366 ! 83667f807f827f66064406810100810001 ! 0100010110068164770177066401650280016501538566536653546c016c015401628455 ! 62556247024701440433875c3f5c3f2526250f040f832b152b1588152b404d404d404d4e ! 824e514e824e7c5f825f605f815f72037283795d705d025d0371817b7181710609060174 ! 817274017483707270728472797270728272707204728179720272837472607484746074 ! 81600460056183825e515e825e5131823158318331582b4c814c2b832b150f1904190541 ! 1d060255814555825545558155490149054181262581253f843f5c3f5c13841385862916 ! 8216291681161582152b1582152b03860304030403271982192719821927060306831415 ! 1415831514111884181118110f040f82190f19031904050515012b84152b152b04820410 ! 04840410213521842135213506030681535401548853546653787f787f53825366538253 ! 66538853787f787f665366538153660266027f8166064406810100810001 ! 010001011006010e0177010e8264656482646564016401800164056583666c6766016605 ! 538247836302630545053382192719021901238429232923510451015f81605f835f847c ! 740274047281795d035d81705d825d705d835d7b5d060906815d70087081797284727072 ! 70720472817974047404608381614e6189614e61515e515e515e828282584d014d052902 ! 17812a17841703050305830503053503358125061c060162815562826255450345818333 ! 043305218212131202120529052b050f06340406054d052b831a2c1a2c822c1a27042705 ! 0505148e2b2a2b2a2b2a2719271927194143418241434181410603068163540154816354 ! 0254847f787f535405548463787f78630763827f80638163064406810100810001 ! 010001011006010e81770e010e05648665648064656465046582666c6602660553036382 ! 626345044505330119852719271929238423292329510451855f605f605f740474877072 ! 70727072795d825d705d055d827b5d0609060270815d7006708179728272707202728174 ! 728372747974037405608181610361015e81515e835e51584d864d584d58292329022981 ! 2a170117832a170503020386050335253525358135061c06846255625562816245044505 ! 33052186121312131213290429822b2a2b022b050f06340406024d81404d814d2b042b83 ! 2c1a2c1a821a2c2704270505861416141614162a822a2b2a822a2b198219271983192743 ! 418241434182414306030601548363546354035482787f54015481535401548163548354 ! 7f78630863817f638163064406810100810001 ! 010001011006020e81690e810e6406648265696481646504650566025381545382536263 ! 0363054502338134338533192719271983192329238323292351045181605f845f605f72 ! 7482747274827470728272707281725d075d81705d015d0a06815d700470815d7083705d ! 7072847270727072057205740160815f6001600561825e515e875e515e4d584d584d814d ! 2901298123298529172a172a178b170503050305030525352535823525061c0601628155 ! 62826255458245444582454433043301218122218321221312821213128112290429042b ! 822a1a0f030f06340406824d404d024d052b821a2c1a841a2c1a22270327050501148816 ! 1416142a2b2a2b2a832a1927198319271941844143414341814106030684546354635401 ! 54816754025481535403548668546354635463016381546307634506810100810001 ! 010001011006020e81690e810e6401648165640364816964826466658265666581656685 ! 666566776653045303638280634504450433826727190119852719292329238223295182 ! 515e5185515e5f87605f815f7404748672706a7270725d825d705d015d83705d795d025d ! 0a060370815d700270817a70017082727072827270728272877201720174817274017405 ! 600161814e610161845e515e515e815e4d024d82584d290429892a172a172a1705030503 ! 8303050335013583253525061c0682625562846255624745034504338134210421011284 ! 1312131229822916298229162b012b812a2b812b0f820f1a0f820f1a3482343b34023404 ! 06044d81402b822b152b012b812c1a841a2c1a2c27822722270127050582141614841416 ! 142b2a842a2b2a8819871927192719414341844143414306030601548163548454635467 ! 540854824968548354635463036381766305634506810100810001 ! 010001011006020e81690e810e6407648369656465046503668277665382535453015382 ! 63626383638063450445013384343368331985192719271948854823292329510451815f ! 8783875f60748274727401748270727981797281725d065d827d795d015d0a060170815d ! 700470017a83707270728272707282727487818772817274047481608281826082605f61 ! 0261834e61518988895e515e4d584d584d814d2904290217812a17831703050382030503 ! 840325352535823525061c06815562846255625547814745024581343382333433813321 ! 04218412131213128112290429042b81880f040f0634040681404d034d052b011a812c1a ! 011a0527050581161484141614162a892a2b2a2b2a882719271982194341824143410141 ! 040684546354635402548367545354025481535401548368546354815463046382466263 ! 826362638163064406810100810001 ! 010001011006020e81690e810e6403648165648364656964816465046502668177668166 ! 530453026381806381634582455545014503338367332719861927192748894883482329 ! 510451815f870187815f7404748672706a796a705d025d81705d015d83797d795d815d06 ! 0906815d700370825d707a837a7b5d728472707270720172028701748172740274816082 ! 02828160610461815e8902898551584d584d8a048a8523292a172a178d172a0503050305 ! 030535253525358135061c06016281556286625545474544458145330433822122218321 ! 2221120212821312298129860486032b81880f030f0234813b3401340406014d81404d01 ! 4d81152b022b017e832c1a2c2e812e27042705050114054b012a822b2a88818819831927 ! 194186414341434143060306015483635463540154816754015481535404548563685463 ! 546382635463016382467663036381222183212221110411051782131213831312131104 ! 11810503820305038103058205030583050305061a06810100810001 ! 010001011006020e81690e090e81690e060e026481776405640365818065836553665384 ! 536653636201628268622504258148898289484081405f045f8174870287847072707270 ! 817072817279027903728170720172857d797d7972060906065d82717b7a017a84727072 ! 707281727481748702870260817460826061820382875e515e515e514089028983402423 ! 240124033a838a151417041781181c831c12181281121804181d06054501448147440144 ! 863525351f1b251a041a05138129168116850285818617021782343e3402348344454445 ! 83454445060306054e014d047e0328012e012781222781270504050214044b0313823388 ! 330233055581620603060763816763016301628363626362016281686281625501558145 ! 550155874146414341432122822221228522110511058b818b1704178212131284121c1d ! 1c110311810305840503091e0505051b06810100810001 ! 010001011006020e81690e090e81690e060e026481776402648165640164846566658065 ! 85655366536653875363626367626325042584488948894090405f605f605f6074877487 ! 747270727072867270726a726a72847270727072027283797279728172060906085d817a ! 5d825d70720172827072748574876087746004608161820282884e515e515e515e408902 ! 898140248524232423248a858a3a8a1415170217011c84731c731c120112861812181218 ! 12061c06054501448147440144822535250125021f021a811f1304130116812986018681 ! 851703170134813e34013484454445444582454406030681614e014e82614e4d014d027e ! 04288210272e812e2782272e0504050214034b8112130213013381883301330655040608 ! 6387676354626362636201628355626862826245558c5545554541434641434122212287 ! 222122051105118b028b031701128713121c1d1c1d1c11011101058603050906091e0582 ! 0503058105061a06810100810001 ! 010001011006020e81690e090e81690e060e026481776406640265818065816553825366 ! 538653666263626862816225012581352581254001408148408740605f605f605f740174 ! 838774707202728170728772707279707270728272707201728374727972817206090604 ! 5d81705d025d887a5d72707270727074027482877460046081618285824e82615e510151 ! 825e514001408742894d24232423248324148a1481148a828a2a1782172a1786171c731c ! 12731c011c011883121812061c0681554582455545814544014402478135258425352535 ! 1a811a1f021f811b13011386121329162986858285861702178113340134023e81444501 ! 458144458145060306054e024d027e05280227022e81380503050214034b031382123433 ! 823388338333556255825562558155060306086381676301638262636283626355628362 ! 686255015585455545554341824146418141228222218b0a8b0217011c831d1c1d1c011c ! 8111090109891e091e09060906091e0501058103061a06810100810001 ! 0100010110060569050e0569050e04778264656401648265648003808565536653665387 ! 53636768676362250425814d4001408248405f015f81605f815f74017482877472867270 ! 72707270728772706a72707270728272707202728179728172060906095d847a5d727072 ! 8372707274027482877460046004618582515e515e5184514d404d408240892482242324 ! 862423141514151481148a828a2a1701170112811c12021281181c841c181218061c0605 ! 450244024782253525832535251a021a821f1b1f811f1302138116868486291686170117 ! 81131781173401348a3e883e45444544454445060306014e81614e014e86404d7e4d584d ! 288228102801280227822e382e812e05030581144b854b15144b12130313023303880455 ! 816206030601638162630463026702628763626355625562688368554555015581454182 ! 41434601468176228422212221110211038b84171c1d1c120212831c1d05110311010586 ! 03051e0906090503051b06810100810001 ! 010001011006810e690369060e0469050e816477027706648165800280826566538c5366 ! 536662676867686225352501258135400140864d4048605f605f825f6074027485877270 ! 7270728472707270728272797201728170720572827972060906015d81705d015d81705d ! 015d837a5d707284727072707403748387607460836074606103618382515e5184515e51 ! 4d4082404d4083408923248724232415141514158315172a8a818a178117120512861812 ! 18121812061c0601458155450145814447034784253525352581251a021a031f811b1381 ! 138681862984291629161704170134043e01458144450145040681614e034e824d7e4d02 ! 4d05280227032e8138050105014b04140213811213841333343388028805550406066302 ! 67856c6763626362836263556281626801688b4555455545554143414676468446212221 ! 22832211051181118b828b2a170317841213121312831211051102118205030583050906 ! 058205030502051b06810100810001 ! 010001011006010e0269080e0269060e8164770177036481656401648165800180016501 ! 5381665388536662686768626325042504408748895f605f605f74027481877284727072 ! 707288727072707279727072827270720172817472837279725f045f0406095d827a5d72 ! 82727072827270748274727482748760046005618382515e5184515e404d4083404d4089 ! 83892423248124150215821415170117838a2a1712011281181201128218121883181218 ! 061c0681554503450244024781352584253525351a041a03138386852916841629162917 ! 821713170117043483883e44458445444544060306024e81614e824e7e4d034d81102803 ! 2805270305014b0514821312130213013304880155816255825562060306036381626301 ! 630367016283636263628262556883684968550155834555454181414602468176228522 ! 212221051182110511811117041701128413121312110411010583030503050405820305 ! 061a06810100810001 ! 010001011006010e0269080e0269080e0177090e0180080e8267680e010e885463546354 ! 63605f6002608148700370815d7001708187700470017281707282727974047404608179 ! 5f055f0406055d0470817a72047204608187610461055101820340812431823124318331 ! 1689160216012b81152b012b822a172a832a172a2b012b81152b012b05241d0605430444 ! 82474406030605280513061604060545015583455545558155060306045f817e5f055f04 ! 068419271927198119050405061504068145550255018801628155620162040683556255 ! 6282625562856255676c675504558144450145016805410434014604270512812b2a032a ! 05130505052c8725352535253525061a06810100810001 ! 010001011006020e81690e090e81690e080e81770e090e81800e080e81680e020e015484 ! 63546354600160815f6081607009708187700270855d7270727072827279748274727481 ! 74600160815f608260795f045f0406025d81705d815d700370817a72047205608387615f ! 6182615f510451814d400340883124312431241629160216052b812a170117892a172b15 ! 2b152b152b248224312401241d0605430144814144024404060428811013041304168214 ! 1606030605458255455584554555450603060c5f04068127198419271927050405812b15 ! 04150406025581455501558662556255625506030601628355625562826255628362676c ! 55045586454445444568410441053405270512862a2b2a2b2a2b1304130505052c823525 ! 35823525358135061a06810100810001 ! 010001011006020e81690e090e81690e080e81770e080e81780e0e0e8363546354825463 ! 6004600870815d700170815d700270827270728272707404740560825f615f035f040605 ! 5d057005720560056105510140814d400140812431823124318131160416822b152b022b ! 84172a172a178417152b152b842b152b312402248131061c060543064404060528011381 ! 121301130116811416021604068155458245554501450155814555015504060c5f040601 ! 19812719011905050215812b150115040606550262815562816206030684625562556287 ! 6255625562556255015581455584554445444501450341844341343b3402348227222702 ! 2703128613122a2b2a2b2a812a1303138112050405022c811a2c822c2535823525358235 ! 25061a06810100810001 ! 010001011006020e81690e090e81690e080e81770e080e81780e080e81490e030e025481 ! 635482545f6003600170815d7082705d700170810e700570867270727a70727404740160 ! 816a6081605f065f0406055d017081797001700172817472017201608174608260746104 ! 610251815e518151400440823124318331243116011681291681162b012b81152b892b2a ! 172a172a172b152b822b152b812b2404241d060143813343824333440144817644014404 ! 060228811028822812130213811216051604060145817645814555825545558455455545 ! 060306025f81615f825f615f825f615f015f040686271927192719050405061504060155 ! 814755015587625562556255620603060362835562496283625562550555814745844544 ! 454441824143410141053405270512812b2a862a2b2a2b13121302130505052c87253525 ! 35253525061a06810100810001 ! 010001011006020e81690e090e81690e080e81770e090e81780e070e0149030e86546354 ! 635463600160815f608160700670020e0270815d7001700172017a817074827472740174 ! 016082796a6081605f025f81615f815f060306025d81705d815d7083707d797081707204 ! 7281608281826001600261815f618261514881485101510340864d403124312431813116 ! 031681292b042b0317832a17152b822b152b842b1524312483243124061c060543024481 ! 764401440406042881101304130616040683554576450145015583455545558155060306 ! 085f017c015f0406841927192719811905040582152b1503150406015582474555015584 ! 625562556281620603068655625562556249814962836255625582554555015586464745 ! 444544410341813e340134813b348134270427021281131281122a822a2b2a012a031382 ! 1213050305812d2c822c1a2c012c81253582352535823525061a06810100810001 ! 010001011006020e81690e090e81690e090e81770e080e81780e080e81490e020e015481 ! 6354825463600360018c0170815d700270020e067081727a837a7b707404740160846a7d ! 6a605f055f0406055d017084797d79707201728174728272608202828160610461835148 ! 894882485e400340058d83241629160216042b8615172a172a17850485012b0324018603 ! 858416292324238323242306100605438141448244764401440406052802138112138313 ! 16141682161416811606030601450176014582554555825545558155060306075f837c84 ! 7c5f815f06030681271901198227190504050215812b1501150406015582834755835562 ! 556201628255620603060162815562876255624962556255045501458147458345444541 ! 0441813e34033402278122278127120412862b2a2b2a2b2a1304130505812d2c032c8235 ! 2535823525358135061a06810100810001 ! 010001011006020e81690e090e81690e810e640764817764816466826665668866655366 ! 7f66536654045401558449556255348234333401348224238c038c0471810c0e030e0471 ! 835d717b7a017a867270727072707281727902790572817006030605700172847d797d79 ! 60046081618203820551824048898389484031033181248d038d82291415821514390439 ! 062b812a8503858216292302238324868586018682291623042311060334833b34433382 ! 338833823343060906032a812b2a812a0609060243817643844333433343834333430603 ! 0681515e035e87517c847c847c4e06090606050a06024481474483444144410241814406 ! 03060645825549550155944445444544454144474144413343334333433b2d3b023b0519 ! 032a045702140317048e850403043b2d3b023b06621b06810100810001 ! 010001011006020e81690e090e81690e810e640764817764816466046684536653785385 ! 5354635463548154558255495501558133348534333433232481248c018c0571020c820e ! 0c710471025d817a5d855d7270727072867270726a726a72877270727072707206030605 ! 7001728479727972600460816182028281615104518640488948894031043181298d018d ! 8416291514158215143c023c082b81168501850216012381242301238186858485162916 ! 23822324230123110605348733433388334333060906872b2a2b2a2b2a2b060906024381 ! 764302438333433343814306030686515e515e515e4e014e827c844e814e06090606050a ! 060244814744014484414441444181410603060445015587454955455545444501450144 ! 82414641864144433343334381433b853b2d343b34190419032a035703140317038e0304 ! 013b842d3b343b6205621b06810100810001 ! 010001011006020e81690e090e81690e810e640764817764836466656603668753667f66 ! 5354635483546354550155024984343334333484342423248c018c0571020c820e0c7103 ! 71045d847a5d727072827270728272707284727972707282727072827270060306815d70 ! 0370037282797260046081618284824e8261510451814d40014082484031043181298d02 ! 8d842914151415821514390439052b811685028501160423832486858681861682162423 ! 022381240610060234813b348234433382338833823343060906842a2b2a2b2a822a2b06 ! 0906024381764384433343334383433343060306825e515e835e515e4e014e817c4e014e ! 0a0606050a06844445444744834441444184414441440603068155458245554501450155 ! 02498644454445444541014184464746334301438833433b343b2d3e2d19011981271981 ! 192a812a57035704140117048e0404023b832d3e2d6205621b06810100810001 ! 0100010110060569050e0569066404770266816566816653015383787f78548254635482 ! 546355015502490134873334333423248c2401240571020c820e0c7182715d710171035d ! 827a5d728272707282727072847270727972827270728272707281720603060170815d70 ! 017003728479726074608360746061036181825104510240834d40483182315831013101 ! 29838d16298d818d158215141582152b3c813c2b012b0239812a2b812b16841685141685 ! 818523042382298629812986818623042311060534817688858876887643060906812b2a ! 012a812b2a812a0609060243027684433343334382433306030683515e515e825e514e01 ! 4e817c4e014e0a0681030501058103058105060906024402470141814441834144410603 ! 0605450155884583498345444544458b45414441464746433343334381433b873b343e2d ! 3e19271901190257022a815714021481168e018e011782138e040404023b022d81556204 ! 621b06810100810001 ! 010001011006810e690369060e046907640377056681537888787f787f54635463548254 ! 554985496849683334823433348334248c24832423247182715d710171020c820e0c7104 ! 71825d705d965d7a5d72707270727072707270726a707270727072700603060570047281 ! 7960046004618382515e5183515e514004408148310331052981158d848d1415142b042b ! 812a2b822b392b812b160516018503238429162916298129868186238323242306100605 ! 348733768876887643060906012a852b2a2b2a2b06090681437603768133430143813343 ! 814306030681515e825e515e815e4e834e517c4e014e0a06050581030609068144470147 ! 898347444144414441440603060145815545014581554903490145814445814544884447 ! 46474647433343884333433b343e2d3e2d812d198119578257192a042a0214018e811417 ! 04170504013b012d813e2d812d6201628155628162061a06810100810001 ! 010001011006010e0269080e0269830e6465640564027704668165538553787f787f5485 ! 5463546354550155024982343334863433348c242324822423710471020c820e0c710471 ! 035d847a5d727072827270728272707283727079728272707283727072060306815d7003 ! 700472817960046005618182510351814d40034082488931833158312904298314158d15 ! 01150a2b812a1605168423852324238a2316291629162923862423012305168129168216 ! 29168216290603060134813b3401348733437688764333060906832b2a2b2a832a2b2a06 ! 09060143027601438633433343334306030686515e515e515e4e834e7c844e014e0a0682 ! 05030503050a060144024781444182414441834144410603068155450345025502498245 ! 44458c45444541444146474633433343834333343b853b343b3e2d1901198227192a042a ! 0514051701048103040104043b822d3e6204621b06810100810001 ! 010001011006016402698164650465016602698166530353015482635477837754626384 ! 6362636255855545787f7841884144414441333433348234492285222122218c05040505 ! 5e815d7083700e700c090c817a710971816a710571040603748272745f035f8179610461 ! 0451815e828182400240815831033182234823022305160515052b051586291629162916 ! 290b2901238429232923160b160406082681882601261c06022501760725040681583182 ! 31583181314d824d7c4d024d1c060134813b4781473b013b81263b023b04060545045581 ! 494504458344454445824547440444814341824143418541192719271981191404148158 ! 4d014d82584d1404148635213521352153045306641b06810100810001 ! 010001011006026483696564650365036681696681665301538154538753546354637754 ! 62016281636281625501558545787f414441014181443486343334333421228222212281 ! 22050405055e0270820e700c090c817a710a71816a71047104060174817274017487605f ! 605f605f79610361865e515e515e5140044083315831588358312423032305160515052b ! 871415141514152916851629162916290c298123290129091681291681160603060c261c ! 068126250a250406865831583158314d844d7c4d584d814d061b0684343b343b34823426 ! 3b853b263b263b0603060545055504458555454445444581454404448241434183414341 ! 198219271982192714031487164d584d584d581404148121358235213581355304530164 ! 81656402641b06810100810001 ! 010001011006826478640264046501668167660266815453035382546354015401638262 ! 636289626345554555455544418241444184413334333482343322852221222122050405 ! 055e04700b0c127104068172740374825f605f835f605f61046184515e515e5181514004 ! 408231583183315831230123812423812316031681141582152b150115052b8615141514 ! 151416821629160116022981232982292329822923290129862329232923291605168129 ! 160216812906030682263b2682263b260526813b061b060c250406815831823158318131 ! 4d054d1c060134813b3481343b013b83263b263b813b06030604458344556c5502550145 ! 8155450145834445784581454403448941444143416c4143271982192719811914011481 ! 16148714584d584d584d14031484152135213582352153045306641b06810100810001 ! 01000101100682647864026404650166816766026605538e495463546354626362636276 ! 55455501558745414441444144340134813334843421222122822221050405055e04700a ! 0c817a7182715d7182715d7184715d710e710171815d7102710406057483605f605f825f ! 60610461815e5184515e515e400440835831583182315823042305160515052b81141501 ! 1589141516291629162916290a298123298429232923160b1604060526813b2604261c06 ! 072581352502250406865831583158314d054d1c0682343b3484343b34263b853b263b26 ! 3b060306054582556c5502550745837844454401448141440144844341436c4183411927 ! 1983192719140414024d81584d824d151403148121358435213521538253545382535464 ! 016481656401641b06810100810001 ! 010001011006016481786481646501658166658165660166816766016602538154538153 ! 498349546354825463620162956362765545554555444144413f41333433343334212282 ! 2221228122050405035e84515e705d7082705d6f816f0c060c017a0871020e815d710471 ! 040682747274847472745f7c827c605f815f610161814e6182615e4882485e5183514042 ! 40834042403185315831583123042305160515022b81152b842b14151415841514162916 ! 831629162982292329022981232901298123298229232984292329141682161416071604 ! 060126813b260326813b2683263b26061b06812625822526250725040681583182315831 ! 81314d014d81584d014d1c060134863b343b343b263b823b263b813b0603060245814445 ! 81455582556c550155024581554501458544784544454404440241876c43411927192719 ! 811914041486584d584d584d14011481151481143585352135213553035381836405641b ! 06810100810001 ! 010001011006016482786564816465036502668167660166055382544954835463546282 ! 62636282626376837655455581554101418244413f813f34823433348734212221222122 ! 050405055e0170016f834f6f4f0c060c837a7b7a710671020e0271815d71017104060574 ! 83607c847c827c5f6104618151480248815e400440038c83583124230223058a82162b15 ! 82152b1581152b042b85151415141586048682291629012981232f042f81232984292329 ! 232f042f04168129168216291203120c261c06082581352501250406865831583158314d ! 054d1c0682343b3486343b34263b263b833b263b060306064582556c5501550745834478 ! 45440544864341436741431985192719271914821416148214164d014d83584d58140414 ! 81213582352135823554530153824953648264656402641b06810100810001 ! 010001011006015381785301530763816763016305628345554955825545440444824376 ! 4302430534013f032582271927832719270404040514025e844f6f4f6f740274025d037a ! 060c040e050c04060461014e82847c8482847c51045188404f484f48405831580258818c ! 3084308c232416831629162981298a038a0115012b81153d043d01150514038582861629 ! 0429038d832f2923290329038d822f29230523011c0412760681636203620154836c5463 ! 540554025381785381536501658166658265635484546c6354270427812b390239842b4d ! 584d8e048e01178313271927832719274502458283456605661b06810100810001 ! 010001011006025381785381536307638167638163620462844555494555815544044483 ! 33437643014305340125813f2501258119279027200d20100410040d201514151415145e ! 015e866f4f6f4f74607481745d035d817a0c080c810e0c060c040684614e614e6184614e ! 7c847c827c4e5182515e51015181404802488140588e5831583158248c308c2423291629 ! 16831629148a018a0114822b152b822b153d023d0115812b140214831614298682868529 ! 822916290429012f828d23290629012f818d238523292324231c851c731c731c12021276 ! 068263626382636263846354636c54025481535401540253817853825366650365845463 ! 546c548154270427812b390139012b84584d584d8f028f03178319271927822719450145 ! 81834581456605661b06810100810001 ! 010001011006025381785381536304638154638263676381636202628555625545554901 ! 490544024381764381433401348133348134250125033f83192719278727200d200d200d ! 208520141514155e015e886f5e7460746074605d025d827a5d0c080c810e0c060c040681 ! 4e6183614e614e864e847c4e7c4e51045103408648405831583158895823308c308c2316 ! 291684162916148a028a87142b152b152b153d043d821416140214832986858682861629 ! 0229852329232f8d2f842f2329232986292329232f8d2f822f29230423851c731c12731c ! 821c73067506826263620162016301548267635405540253817853815365046581635484 ! 546c6354270427812b390139012b024d82584d8e048e8217192782271927852745834583 ! 458145660166816566826665061a06810100810001 ! 010001011006025302780863026701628155620162814555815549014901448141448244 ! 41430143037604340325023f0127841927191004870410200d200d20140114835e426f5e ! 825e60748274607481745d025d827a5d0c080c810e0c060c04060161814e6181614e044e ! 827c5e510151845e5140424001408248315801588331582324872423248c291629168216 ! 291482148a1481148a878a2b152b152b153d823d141581153d013d021483162986298129 ! 868386292329022982232f2381232f812f29042982232f2381232f812f23042382121c12 ! 0312821c73067306896362636263625463546c016c025481535482545378037882656665 ! 836566656c016c81676c836c2722270227892b392a2b392b584d584d824d588f818f1701 ! 17028e012783192745830283834566656603661b06810100810001 ! 010001011006815378037882635463826354638163670267816c62046281554901498283 ! 494404440243037682343334013401258235253f023f81192701270104851004200d2014 ! 86141514155e6f5e015e01748160748274605d025d827a5d0c080c810e0c060c04068261 ! 4e6183614e614e014e83514e7c5104518142408240424088404831583158312423012301 ! 24018c01168329161514031481158a818a2b812b150315822b15148314163d1484142916 ! 2916811629812986818629032981232981292381232f822f232902298123298129238123 ! 2f832f23242381231202128118128112067506816362826263628262546c026c83675453 ! 5402540153037805658254676c016c8167270427052b824d584d834d584d170317811327 ! 89278e271927458349834581456605661b06810100810001 ! 01000101120603780463025503670544024102490533823b347603768226252601260221 ! 043f84190f190f10041001138112138413126f4f23012305420361827a61720472035d82 ! 0e5d7105710a06054e817c42034281315882583158815848814823832324232982292329 ! 012983168c301601160515842b158a152b812b1504150116811416011606298223862382 ! 232923052384242f242324812431023181243183312f5831013181583181315883583158 ! 0675060565010e81676c016c050e0264027805660163846c676c63210121813521822118 ! 128212181281122a042a82111811811118811810041081228384832221224405441b0681 ! 0100810001 ! 01000101130602780463035583676c67440444834341434182414933013381343386333b ! 343b343b76827625268326252621042182190f1983190f1910041082131213841312136f ! 23022302428140428142610161817a618161720472035d820e5d7105710a06054e82847c ! 4283424042588258315888583123482324232429042905160515822b152b832b152b1504 ! 158216141682161416811629052981232983292329230523832423242385233124312431 ! 0731025881315881580675060565020e83676c670e040e0264017881646604660163026c ! 816321042183181218128212182a012a81172a832a181118011883111004100210822283 ! 228a22212244414441444144061a06810100810001 ! 01000101140601788263626301630455016705448641434143414333043384343b343b34 ! 8134268526252625262104210119810f1982190f10031084041213121382136f23032305 ! 420261817a618161720472035d820e5d7105710a0681614e034e05428631583158315823 ! 022382242329042905160615012b82152b150115812b1588152b16141614161429012981 ! 162903298123298129230923882423312431243124310131812431883158315831583158 ! 0675060565030e016c050e0264836578646604660263816c638163210421811812841218 ! 12182a042a861118111811181004108b2221222122214144414441448144061a06810100 ! 810001 ! 01000101160604630655054481434101418243413303330234813b3486343b2625262526 ! 81262101218135218321190f1983190f1910821004100110011386121312132324230123 ! 8242404202420261817a618161720472015d81705d825d707105710a06024e81614e814e ! 428242404201428131588258315885582324232423832329232983292329160416051501 ! 2b81152b012b051581141682161416811629052985232923292329812923822329230123 ! 832423242383233124318231243106318458315831588158067506026581666581650e01 ! 0e81690e060e056405660563813521822135218121128512181218122a042a8111188518 ! 1118110410011083041021228222212283224441440144824144061a06810100810001 ! 010001011606046384554655625501558244454483444544418241434182414333823334 ! 33013384343b343b3482342526012682252621042184190f190f19811910041081121384 ! 1312131223032303428240426182615f6101610572045d016b05710a06054e0542825831 ! 588558315823242383232423290429051601158114158715142b152b152b1582152b1502 ! 158216141685161416291629012981162901298123298129230623842423242324812431 ! 84312431243104318258315801588231580675060565020e81690e060e03648280646682 ! 66656601660363827f63210421811812821218128212172a822a172a832a181118831811 ! 1810041001228421222122448444414441448144061a06810100810001 ! 01000101160601638162638263554681465502550444873e434143414341330233852d33 ! 3b343b3486343b262526252681262182213521012182190f1984190f1904100210840412 ! 13121301130423054205610148827274728272705d015d836b6e6b710171815d71817106 ! 090681614881484e014e0542813158855831583124238423242324298229232901290116 ! 81141601160615012b81152b812b15041581141684161416142906298323292329812923 ! 0523812423832324236f846f243124310231812431013184588258315881580675060565 ! 020e81690e060e01648465648064660466036382806321042183181218128212182a042a ! 81111884181118111082100410011082222122012284214144414483444144061a068101 ! 00810001 ! 010001011606045501418146410141814433013381433382333e340334013b87343b342d ! 5c263b2682263b350235013801228127220122050f011081041001100111811811011104 ! 1503248531244042404803480351025f846b6e6b6e720172817072817206090683404889 ! 488748405831583158300430812329032905868129148214161401140415012b81152b81 ! 2b8a048a8215141601168229162f042f01230424034c0231054d826f4f6f816f5e835e61 ! 4e61036183826d826101617606080e81690e810e64046402658180658165660166816566 ! 0366817f6601664506810100810001 ! 010001011606045502418146410141053382343e340234823b343b013b83342d5c268326 ! 3b2635033501380122832722270f010f811a0f810f100410811811841118111815021504 ! 3a8224314002400348035101608b6b6e6b6e6b7270727072700609068240488983894840 ! 588558315831582f022f82302329032981238603868529141614163d043d0115832b152b ! 1581153a023a878a1415291629162981292f032f82232924022481234c024c0231054d81 ! 6f4f824f6f5e815e610561846d826d82618161067506080e81690e810e64046402658180 ! 658165660766817f66826665064406810100810001 ! 01000101160681625583556255410141814641014181433303330134813e340134013b83 ! 343b343b833b265c2682263b3504358122388138228222380f010f022002108104208320 ! 11181183111811150215813a3d013d8131248124400240034803518d5f605f606b6e6b70 ! 72707270720609068740488948894031588558315831233082302f238123298229232902 ! 29028601290114831614163d023d83152b152b822b152b012b018a863a8a141516291601 ! 168229232f012f01238129240424024c81243181314d824d584d014d846f4f6f4f5e825e ! 4e610161814e61016182826d6101617606080e81690e810e640464026581806581656682 ! 6665660466817f6601664506810100810001 ! 010001011606045582414441814146014602338143338133340134023e863b343b343b34 ! 260126855c2d5c2d25358435253527228122380238811a0f020f07208211181181111581 ! 153a823a3d3a823a31248224314002408348405e51035181605f875f606b607072707201 ! 72817006090603408548403158315801588323302f308230232905290386822916148414 ! 1614163d043d81152b882b152b15148a15148a888a291629162916232f022f8229232482 ! 2423248224234c024c0131054d025e816f5e815e610561834e61826101617606080e8169 ! 0e810e64046484656665806581656603668165660166817f6601664506810100810001 ! 01000101160604550341024605330234023e823b343b033b86263b265c2d5c3503350122 ! 8527382e382e0f010f821a0f10021004208218113a823a3d150115813a24842431243140 ! 014081484081405104518d605f605f6b6072707270727072060906044087485831583158 ! 3123822330238123308130290529838623298687861416141614153d813d150115023d83 ! 2b152b148514151415148a828a29168216292382232f2381232f812f2405240231824c31 ! 4d024d82584d5e025e826f42610161814e61036181826101617606050e05690364826564 ! 8003808165660466047f01664506810100810001 ! 010001011606816255835562554181414601468247463304330134043e013b8b343b3426 ! 3b263b2d5c2d5c3502358127228122380338030f8210041081102001208218113a823a11 ! 15031586312431243124408240484001400351824e515f865f606b605f70720172837072 ! 700609060540834858315882583123042381293082302329032982162916811686848614 ! 1614150315852b152b153d2b812b158515141514152981298a848a291629230423012f82 ! 2423248124310331014c824d584d014d015e81425e825e6f61076181826101617606060e ! 04690164816564016481658002808165660566017f84807f6665064406810100810001 ! 010001011b06814441014102460126813b260126043b013e043b0225852d5c2d5c2d2102 ! 210219832719271a041a05100505041701168129168316293148814831013183404d404d ! 824d40420142816b428142510251835e515e060f06828948230223041486162923302923 ! 290529011484861415142b052b82152b1582152b16041602238d8a242358315831583158 ! 402f42400140054e014c027281740c030c826f4f5d025d81706084605f826d6081600675 ! 06070e0269070e0280010e0664837f807f6401644506810100810001 ! 010001011b0605418146260426023b81263b063b05258122218721222122271927198519 ! 271a0f1a0f820f1a10031081040502058211051703178216291685162916314831833158 ! 314d854d404d404d420142816b4281425e835e515e510151100682234823022387161416 ! 141614232982292329062983151415148214152b062b81152b012b051601238124230123 ! 825831588b58315831424042404240614e034e827274720272050c816f5d825d705d815d ! 6002608182608160067506070e0269080e0180010e0764017f02644506810100810001 ! 010001011b0606410226813b2681263b0a3b042585262122212221852119271927198419 ! 0f1a0f1a821a0f1082100410011001058111050105041783291629168316294831033181 ! 404d824d404d814d4282426b4201420151855e515e515e060f0681242303238316141614 ! 8214162984292329232902298116298529141514151483142b2a2b032b85152b152b1516 ! 82161416011605230158813158895831584042404240424e044e0572050c055d06607606 ! 080e81690e080e81800e010e076481806402644506810100810001 ! 010001011b0681444182414441014182263b260226053b81263b823b263b813b25822526 ! 2501258221222183212221190119832719271a011a810f1a811a10041005050117812a17 ! 831716291683162916310431824d404d834d404d4282426b42014284515e515e51015110 ! 060323842423141614871416142923292329062901148115148214152b012b812a2b822b ! 152b822b152b812b16041605238258315882583158815840824042400140014e81614e01 ! 4e0572050c055d82605f6082605f608160067506080e81690e090e81690e810e64036481 ! 6564016481696401644506810100810001 ! 010001011b060441824441260426013b81263b073b052584212221222183211927198619 ! 27190f1a0f1a841a0f100410831004100502058211051703178329162916821629310431 ! 83404d404d824d40420442815e510151835e515e060f0601238124230123811614841416 ! 141629822923298229232982291629012981151484141514152b062b84152b152b160116 ! 8114168116230423815890869058315831424084404240424e024e827b4e720172817472 ! 81720c020c016b015d81705d825d706005607606080e81690e090e81690e810e64076482 ! 6965648164064406810100810001 ! 010001011b068241444103410426813e3b033b81263b043b052581222101218622211927 ! 19271982190f1a821a0f1a811a100410010581110501050217822a171685162916291631 ! 01318158318231404d824d404d814d4204420151835e515e518151060f06812423032301 ! 14881614161429232923290629861514151415142b052b83152b152b812b160416022381 ! 24238223589001900258864042404240424e014e017b814e720472020c026b055d066076 ! 06080e81690e090e81690e810e64016481656402648265696401644506810100810001 ! 010001012806813e340334032685364a213521358235212704270519051a050405050412 ! 051584242324238c038c0358854d584d584d5281520620060423058d85292b152b152b81 ! 2b2a032a812b14041403320124874240424042405f900290825f615d045d0271027b0372 ! 8270726081606b846b816b707204727c06080e81690e090e81690e090e81690e010e4506 ! 810100810001 ! 01000101280682343e340234013b86263b264a3635218321352127012701378127190419 ! 051a81041084100410040504050312021c0315012383242324300130838c58315881584d ! 814d520352210605230386838d29152b822b153c043c822b2a1404140332012484404240 ! 424082405f900190835f615f5d045d0171037b8370727072857270606b816b016b857270 ! 727072708170067b06080e81690e090e81690e090e81690e010e4506810100810001 ! 0100010128060134813e3401340126813b2688263b214a3635214a278227192781273701 ! 37810f198219371a011a0120810d0401048310200d05040501128213121c031c01158124 ! 23832324238c828c3058015883314d584d814d5201522206052381298d828d862981292b ! 842b152b15570257832b2a2b1404148124320132012401408142408340425f900190015f ! 81615d825d705d825d70710271867b7172707270728172608660746b816b707282727072 ! 01727c06080e81690e090e81690e090e81690e010e4506810100810001 ! 0100010128060234023e82263b2688263b26213521364a36813627022702190437812c1a ! 021a81200d830d200d2001200305071c02158c24232423308c308c315831584d834d584d ! 5201522206012381292381232983298d868d888d292b152b152b153c043c021481161482 ! 14233202328524404240424081405f025f8390615f5d045d0271817b7181717282727072 ! 827270600160866b7460707270728172708170067b06080e81690e090e81690e090e8169 ! 0e010e4506810100810001 ! 01000101280681333481343e013e86263b263b263b21862135364a364a27032703190337 ! 031a02048210200d810d2081201c011c0312011c0415862324238c242358015887315831 ! 4d584d524d014d220605230129818d2981298d818d2b852b152b152b5781572b012b023c ! 81161481142482242324842432404240854042405f615f825f905f825f705d035d027181 ! 7b71857172707270728172600160816b608160728472707270728172067b06050e056905 ! 0e0569050e0569810e064406810100810001 ! 0100010128060134013e81883e823e3b2689263b262135214a364a368336271927832719 ! 0f198119370337021a85100410040d2081200503050412051581248c868c232423583158 ! 835831584d824d524d024d220605238229162984291629158d848d2b152b2a822a2b2a83 ! 2a2b141684163c141624042401328240424081405f825f615f835f90615d025d86705d71 ! 5d717b718371727072837270726082606b600160827270728472707270067b06060e0469 ! 060e0469060e0469810e064406810100810001 ! 010001012d06843e883b343b823b34270427840f190f190f830f192719011981272c042c ! 0104810304010405058711181118112a172a022a838c3023290129813124012481312482 ! 2452062c060516872a178d2a172a152b822b152b822b5831823158318131610261834e61 ! 70328132700170040c82900c710471025d817b5d815d7404740172816b7201728170067f ! 060106070e0269080e0269080e0269010e4506810100810001 ! 010001012e0686343b343b343b27042781190f010f88190f2719271927192c042c820403 ! 04810403810305040501188111188218172a842a172a8c2904298724312431243152062d ! 060516022a81172a812a2b872b152b152b31583187315831614e614e618161700370815d ! 0c040c8190710171815d7181715d825d7b5d015d0474017286706b72707270067f060106 ! 070e0269080e0269080e0269010e4506810100810001 ! 010001012e0681343b823b343b813b270427840f190f190f820f27198219271981192c04 ! 2c8404030403048104050405811118851811182a172a832a172a29042983312431248324 ! 3124062d068129160316822a172a852a172a2b152b842b152b5831823158318131618561 ! 4e614e61700470050c01900371025d827b705d815d7482747274017485726b7072707281 ! 72067f060106080e81690e090e81690e090e81690e010e4506810100810001 ! 010001012e06823b343b833b343b27012781192781270f820f190f810f19011985271927 ! 191a2c822c1a2c822c030484040304030504058911181118112a172a172a832a29232985 ! 2923292431248424312431062d0602168129168216172a852a172a17152b842b152b1531 ! 873158315831614e6183614e61700470060c0571015d817b5d015d057484706b72707282 ! 7270067f060106080e81690e090e81690e090e81690e010e4506810100810001 ! 010001012e0683343b343b843b342719270227820f190f840f190f271984192719272c04 ! 2c0104810304820403050405811118851811182a172a832a172a29042981312482243124 ! 822431062d060516012a81172a012a822b152b852b152b315831833158316185614e617b ! 61700170815d7081700c020c810e0c810c710171815d7185715d705d0e5d815d74047482 ! 7270728472707270067f060106080e81690e090e81690e090e81690e010e450681010081 ! 0001 ! 010001012e0681343b823b343b813b270427010f86190f190f192719831927192c042c86 ! 0403040304030504050118831118112a852a172a172a2904290124853124312431062d06 ! 821629168d162916172a172a172a2b152b152b822b5831823158318431614e617b017b04 ! 70815d0c010c020e810c710471015d020e815d74047481707282727072827270067f0601 ! 06080e81690e090e81690e090e81690e010e4506810100810001 ! 010001013d06012e81062702278219272804280503060501118205111285121312131214 ! 0214058a4306055d0271027b080c020e080c020e060c7f060906080e81690e090e81690e ! 090e81690e010e4506810100810001 ! 010001013e0683372e2719841927192728042805030605831105118b848b131213128412 ! 1514151481148a038a4306055d0171047b060c040e060c040e050c7f060906080e81690e ! 090e81690e090e81690e010e4506810100810001 ! 010001014006862e372719271928012802090103820403098109050505011181058b028b ! 83121312148214151481148a028a4406055d0371827b710c080c810e0c090c810e0c060c ! 7f060906080e81690e090e81690e090e81690e010e4506810100810001 ! 0100010140060127012e81272e812e280128821028090309840d090d058b0a8b85131214 ! 15148a828a168a818a064406015d81705d825d707185715d717b710c080c810e0c090c81 ! 0e0c060c7f060906080e81690e090e81690e090e81690e010e4506810100810001 ! 0100010140068227192781272e832e372e2802280303040902050311038b84131213158a ! 818a1483141514064506055d0371827b710c080c810e0c090c810e0c060c7f060906050e ! 0569050e0569050e0569810e064406810100810001 ! 010001014006811927832719372e022e02280303830d090d0503058211051181118b818b ! 13831312138a818a148214151401144606055d0371827b710c080c810e0c090c810e0c06 ! 0c7f060906060e0469060e0469060e0469810e064406810100810001 ! 010001016106018a5706817b060906810e060906810e067f06100605530164026981650e ! 060e0269080e0269010e4506810100810001 ! 010001017f063b06817b060906810e060906810e067f06100605530164026981640e060e ! 0269080e0269010e4506810100810001 ! 010001017f063b06817b060906810e060906810e067f0610060553866465646965640e07 ! 0e81690e090e81690e010e4506810100810001 ! 010001017f067f06660605530564140e81690e010e4506810100810001 ! 0100010110068176067f062906817d060806810e060806817b067f061106035382545364 ! 0464090e81770e080e81690e010e4506810100810001 ! 01000101100601767f06280682797d060706020e0806017b070601897f06070605530164 ! 81656481644981490e070e81770e080e81690e010e4506810100810001 ! 010001011006834376434182414325032506280705810305810503010381040382030403 ! 82030403820304030c038104038203040304030705811105820511058205110506050b03 ! 81050382030503810305820503058205030582050305820503051c050511812a2b822b2a ! 2b812b4204420372837d797d710371020c020e060c81717b017b0171057403890140052a ! 82111811821118110c1181051185110511051105820511054e0581110582051105050505 ! 28052504558149668266656682666564016481776481640e070e81690e010e4506810100 ! 810001 ! 0100010110069241437643414325352535251028102810281005080582061e030a038a05 ! 03050305030503050309810903050383050305098109050805011e090501068a05030503 ! 0503050305030981090582050305050582061e0508050106090501060905010688051105 ! 11052b2a2b3c043c024202720179827d79710371010c040e050c81717b027b8571746074 ! 60748174890189024088172a172a172a11591103118d0511051105118b05110511051105 ! 8205110582051e0509058106050905810605090581060509058106050905810605090581 ! 06050905811e050805861028102810282504250355824955660466026481776481640e07 ! 0e81690e010e4506810100810001 ! 0100010110068341434643834341352584253525285b015b83285b28050805811e068306 ! 1e03090109030301098e03050305030503050305091e091e030303810503810309020907 ! 05031e0705030686030503050305038303091e098409030503050305811e0682061e0506 ! 0503060705030607050306011182052b2a822a2b570257034204728179710471030c810e ! 0c060c0171817b710171017484607460748901890140814d2a822a172a812a5901590511 ! 81051181118b018b0111820511058205110581051e011e08050206080502060805020608 ! 05020608050206080502060805021e090587105b28102810255b815b2501250355824955 ! 660466026481776481640e070e81690e010e4506810100810001 ! 0100010110068343414376847646253525862535281028205b015b020585090609061e06 ! 8606090609061e030103070982051e090109811e0982091e090309811e090409811e0901 ! 090b1e0b060109811e090409811e098709061e061e061e0601068309061e062206820511 ! 2a822a2b3c023c04420372827972710471030c810e0c060c0271817b7183717460740274 ! 02408189408440172a17590a590b8b0b1e47060b1e0105845b205b285b845b205b262583 ! 2526254983495549558255656682666566816664016481776481640e070e81690e010e45 ! 06810100810001 ! 0100010110068641434146764625822535258525102810285b015b09050306070382090d ! 09010981050301038105038103098309060903060302098106050605031e070503060203 ! 810503020303098103050505821e09068106050605030607050306070503060211812a3c ! 813c2b822b574204420372827972710471030c810e0c060c0271817b7188716074607460 ! 744d408140898589402a172a1781175901590311830511051181118b018b041182051105 ! 81051e011e0805020608050206080502060805020608050206080502060805021e060505 ! 5b01288110250425034901550566047781640e040e0569810e064406810100810001 ! 0100010110068b4376467646763525352535280128811028012809058209060308030209 ! 810503840305030503840305060903820304030303820503098109050805011e09050106 ! 03038a050305030503091e05030582050305030501060905010609050106090501060311 ! 013c022b012a05420372827972710471030c810e0c060c0271817b718271607484746074 ! 604086404d408940172a022a83170559110211810511821105110111818b118311051105 ! 01058111050105811e050905810605090581060509058106050905810605090581060509 ! 058106050905811e05080584205b28102881282582252625012501498168498249556604 ! 66816477027781640e050e0469810e064406810100810001 ! 010001011006014184437646762203220605051801058211051181110585050305030503 ! 030381050382030503840305030503820305030103810503010322058103058205030537 ! 05811105010581112b042b865e515e51795e700470030c810e0c060c0270817b70827051 ! 5e845e515e512a822a2b2a822a8905100583110511058205110564058103040304051a03 ! 49013505448153770177015307640269826564064406810100810001 ! 010001011006824143418341437622032206050518021182051105850503050305030503 ! 850503050305030103810503870305030503050305240581030582050305020581030582 ! 0503052e0584110511052b042b86515e51795e51700470030c810e0c060c0370847b705e ! 515e855e515e2a2b2a832a2b8905110581110582051105010581110561050504051a8268 ! 4935023505440153017701530764026901644506810100810001 ! 010001011006014181434182414322822221228122050505051883051105118111050105 ! 81030501050603810503840305030503820305038203050301038205030501058103051c ! 058703050305030503053505811105830511052b042b0151825e79518151700370815d0c ! 020c810e0c060c815d700170827b705e825e515e885e512a2b2a2b2a2b050d0581110582 ! 051105840511051105640503048403041a2c1a021a053505440153817753015306648465 ! 646965648164064406810100810001 ! 010001011006844143414341814122032206050518851105110511058205030583050305 ! 030103810503820305038403050305038403050305038403050305038103051d05810305 ! 0105810305010581030501058103058205030501058103052a0581110584051105112b04 ! 2b86515e51795e51700170815d7081700c0b0c0570865e515e515e512a822a2b2a822a2b ! 0501058111050e058311051105020581110582051105820511055a050104810304010405 ! 1a0535054404538154640b644506810100810001 ! 010001011006014184434143412203220605051801118105110111010584030503050304 ! 038305030503010381050384030503050382030503810305820503052005830305030538 ! 058111058205112b822b152b012b0151815e5182515e700470040c817a0c050c0190815d ! 7084705d5e515e845e515e2b2a822a2b2a832a0511050d05831105110501058111056405 ! 8103040304011a812c1a011a023581253581354402448441445354530253826465648264 ! 656403648180648164064406810100810001 ! 010001011006814341824143418141220322060505188105118311051105840503050305 ! 810503040381050386030503050305038203050384030503050381030522058103058405 ! 0305030505058103052c05811105830511052b042b84515e515e518351705d700170815d ! 0c020c017a060c0290027081515e825e515e875e2a2b2a2b2a2b050c0581110501058111 ! 05840511051105020581110501058111055b050504812c1a031a05350544025381545382 ! 534664056483656480648164064406810100810001 ! 010001010f068136350435012c811a2c812c050505861812181218121104110505810305 ! 830503050382030503830305030502058103058205030505058103051905810305820503 ! 050605810305820503053405021181181181111601160585015f81615d025d847a7b7a71 ! 5d035d0390015f051601118105118111051805811105620505030510051a052104410146 ! 0454026581806501654506810100810001 ! 0100010110068136350335042c0405011e01188412181218110211015906050203010984 ! 0305030503820305038503051e0903058105038303050305010582061e05080501060905 ! 0106090582061e05080582061e0508050106090501060905010609058206091103110316 ! 035084855f615f5d015d037a045d8171900190025f051682118b11831105110505058106 ! 050905811e050905811e0509058106050905810605090581060509058106050905810605 ! 0905810605090581060508058203090302030510051a0121811f21012104418146540454 ! 84656665806501654506810100810001 ! 0100010110068135368136350135042c0405031e01188212181102110359030584030503 ! 05090209010382050305010585030906091e0501058103050205841e0906090506050306 ! 0705030681030501058103050105811e0682061e050105810305870503051e0906090506 ! 05030607050306070503060705841e0609061101110316028583505f615f815f5d035d81 ! 7a5d055d0290015f8161168216291681168b018b8311051105040502060805021e010581 ! 11050405011e810605070502060805020608050206080502060805020608050206080502 ! 060805810d0981090302030510011f021a021f0321014184434146415404540265818065 ! 01654506810100810001 ! 01000101100601350336022c0b1e0b590609831e091e0985091e091e091e8d1e09060906 ! 09061e06091e061e060306811e061706851e061e061e06010681090688061e061e061e06 ! 090602068109062206851e061e061e068206090601068109118111160216818550865085 ! 5f615f615d025d817a5d065d025f81905f815f1601160b8b0b060d1e83061e061e051e53 ! 06810d090109810d0905098228101f041f811a2104210241814641814154045402658180 ! 6501654506810100810001 ! 01000101100602350236822c1a2c822c1a050305031e0318031103590305030303098203 ! 050381030501058503090609060582050305030584090609060506050306070503060705 ! 821e09068106050605820609068106050605030607050306070503060705010683090618 ! 11811116811685818516831685615f835f615f5d025d817a5d015d81705d835d705d5f8a ! 5f61905f6116291629168b018b0311040502060805021e070584111e061e050705020608 ! 05020608050206080502060805020608050206080502060805810d098109030203031003 ! 1f031a0521034601410554048001654506810100810001 ! 01000101100602350336032c0405011e0218831218121101118105598159050505830305 ! 030981090382030503890305030503050609030584050305030502050106090501060905 ! 010601058103050505010609050106090501060905010609050106090583060918110211 ! 0185031681615f845f615f615d845d705d7a5d065d825f615f835f905f1603168329118b ! 110111010581030503058106050905811e050905811e0509058106050905810605090581 ! 0605090581060509058106050905810605090581060508058203090302030210051f021a ! 022181352181214602460141025481535482546580028001654506810100810001 ! 010001011006810403020382040503010307058111188218111881181104110b05830305 ! 0305820503056a0581030582050305040582855012821218128112290129832329234084 ! 4042407a4006408623292329902312041206050303130581110563050403050482102810 ! 0210861a2c1a2c1a2c460246012282334333023381458001808344454406440681010081 ! 0001 ! 010001011006010383040304030103880503051105110511058105188518111811181182 ! 11181101110905810305030581030507058103051f058103050105810305820503053705 ! 81030582050305060505128f2329232923294042407a4042404240428442404229230223 ! 819012011281131281120505058503050305030576050103010582030504040481281086 ! 102810282c1a2c012c811a46824621228222213304338245448082804445814506440681 ! 0100810001 ! 010001011006810403820304030103810503810305010581110585051105181118831811 ! 181104110b05010384050305030532058103058205030531058503050305030505058118 ! 1203128229232901298123408340427a4084404240424088404240232923292390829013 ! 120212060582030503810305100581110501058111056105020382050304040401108828 ! 1028102c1a2c1a2c812c2201228321222133043301458180458345444506440681010081 ! 0001 ! 010001011006820304038203040301038205030582051105830511051181111882181118 ! 811811041107058103050305830305030502058103058205030582050305200581030501 ! 05810305350581030582050305820503050605051201298a232923294042407a40424002 ! 408142408140238223292301230512050582030503820305038103057505840305030503 ! 010301048103048504102810281084101a2c1a2c882c1a21222122212233023387433344 ! 45444544458145064406810100810001 ! 010001011006830403040383030405038303050305840511051105830518111883181118 ! 1104110a0583030503050105810305300581030501058103053305810305820503050505 ! 821218120212862923292329234088404240424042404240854042402329238323292312 ! 041206058503050305030501058103050905811105010581110563058503050305030404 ! 0401108128108210282c012c811a2c832c22212201228121338233433301338745444544 ! 454445064406810100810001 ! 010001011006820304038203040301038605030511051105830511051885181118111811 ! 01118118118111050c058303050305820503050105810305260581030507058103052c05 ! 810305020583030503050605021281181284122329232901298342404240824042408740 ! 424042404229238223292381231201128113128112050405820305038303050305760582 ! 03050301038105040404821028108a1028101a2c1a2c1a2c212284222122213304338144 ! 4501458144458145064406810100810001 ! 010001011006812a1782172a178117180318011183181118118311181118831811181104 ! 111805810305820503052605810305340581030584050305030506058211051182110512 ! 0112831312132a0b2a021281131281121101118105118111050605810305820503057705 ! 84030503050382030403860304031004100481041082102810831028101a011a852c1a2c ! 2722270127812235013584253f3635064406810100810001 ! 010001011006012a04910318821118118211185601560118811118811811021101590905 ! 010682050305060582061e050805010609050106090501060505810305010582061e0508 ! 05010609050106090501060905010605058103050105821e0905040501118205118b848b ! 1312131281122a012a0257062a831d1c1312851213051105118111058205060503058103 ! 058205030582051e050905811e0509058106050905810605090581060509058106050905 ! 810605090581060509058106050905810605080582030903850305030403040104820310 ! 04820410048204281087102810282c1a2c1a011a0127811f270127872535253536352506 ! 4406810100810001 ! 010001011006832a172a9102918112180218851118111856598159568456181118118311 ! 18115902590705030601058103058205030582051e0682061e0506050306070503060705 ! 03060705811e0682061e0506050306070503060705030607050306810305880503050305 ! 0309060981090502058211051181118b028b851312132a172a852a91572a172a8a2a171c ! 1d1c1d1c1213121184110511050601060505840305031e068106050705011e8106050705 ! 020608050206080502060805020608050206080502060805020608050206080502098403 ! 0503050484040304030482040d0484041004100d810d100110011f831a2c1a1f821f5a27 ! 022787352535363f3525064406810100810001 ! 81000101011006012a039105180356855956595618590a590c06851e061e061e06010683 ! 09061e0623068509061e061e068206090682061e062e068c091e091e091e09060906091e ! 8b0a8b0112032a8291572a032a81171c021c861d1c1d1c0511060b068b0906091e061e06 ! 1e0609061e841e061e061e051e5f060b098803040d200d040d200d810d10861028105a1f ! 5a1f011f811a2701278122278227253585353f253525064406820100010001 ! 030110060291842b2a911218811856825659180118881156591811181118110311035907 ! 0503060705821e0906810605060503060705030607050306070502068109050605030607 ! 05030607050306070503060205810305870503051e0906090501050411038b011381122a ! 012a81572a072a821d1c12011283131d1c11011102060405810305820503060106080583 ! 1e061e050705020608050206080502060805020608050206080502060805020608050206 ! 0805830906090302030204810d2089200d200d04100410281081101f021f021a812c2704 ! 2782253f368136358235250644060301 ! 02008101060e060191012a81172a812a1884181218121102110118831118111883181118 ! 1101118105598159050805010609050106090501060905010609050106090582091e0508 ! 0501060905010609050106090501060605810305830506090504058211051181118b818b ! 1301130112012a8257172a822a172a822a172a012a031282131211811105810511831105 ! 060502058103058205030501058106050905811e05090581060509058106050905810605 ! 0905810605090581060509058106050905810605090581060508058a0309030503050403 ! 04030484040d201004810410011085281f5a1f5a1f851f1a2c1a2227032787253f363f36 ! 35250644068101000100 ! 010001017f067f067f06050682363f064806810100810001 ! 010001017f067f067f065106810100810001 ! 010001017f067f067f065106810100810001 ! 010001017f067f067f065106810100810001 ! 010001017f067f067f065106810100810001 ! 010001017f067f067f065106810100810001 ! 010001017f067f067f065106810100810001 ! 010001017f067f067f065106810100810001 ! 010001017f067f067f065106810100810001 ! 010001017f067f067f065106810100810001 ! 010001017f067f067f065106810100810001 ! 010001017f067f067f065106810100810001 ! 010001017f067f067f065106810100810001 ! 010001017f067f067f065106810100810001 ! 010001017f067f067f065106810100810001 ! 010001017f067f067f065106810100810001 ! 010001017f067f067f065106810100810001 ! 01007f017f017f01540101000001 ! 010081010010008101007f007f007f002c0081010012000001 ! 130001017f007f007f002c00010113000001 ! 81000113018100017f017f017f012c018100011201 % ! % Compression made this file 11.78% of the uncompressed size. % --- 154,1448 ---- } bind def ! 474 349 8 % dimensions of data ! [474 0 0 -349 0 349] % mapping matrix rlecmapimage ! 14068105067f067f067f062c068105061306 ! 130601057f067f067f062c06010513060005 ! 010613058106057f057f057f052c058106051005810605 ! 01067f057f057f05540501060005 ! 0106010510068105067f067f067f061a068105060f068105060f06810506810605 ! 010601050f0601057f067f067f061a0601050f0601050f06010501060005 ! 0106010501060d04010501067f047f047f041804010501060d04010501060d0401050106 ! 0005 ! 0106010501060d0401050106110403070304010703040307020404070104030723040407 ! 02040107140401070804010707040307060403072f040207200401078104078107040504 ! 040707040107040401070104030702040307020403070204030726040307030401070304 ! 03070504010701040307190402070a04010501060d04010501060d04010501060005 ! 0106010501060d0401050106100401070104010781040702070204010701040107010401 ! 070304010701040107220401070104010716040307060403070604010701040107040401 ! 07010401072d04010722040107810407810704040401070b040107040401078104078107 ! 048104078207040781070481040782070407810704810407820704078107048104078107 ! 042304010701040107810407020702040107010401070304020781040781070481040781 ! 0704160401070c0401050106010408068105048104058105068106040c04010501060005 ! ! 0106010501060d0401050106140401070204010706040107810407810704030401070104 ! 01070b048207040701078104070107010482070407010781040701070204010702040107 ! 810407810704810407020701040107810407810704060401070804010706040107010401 ! 070804010701040107050403070204030701048207040701078104070107010482070407 ! 010781040701070104030709040307010482070407010781040701070204030701040107 ! 810407810704030403078104078107048104070207010401070104010781040782070407 ! 810704810407820704078107048104078207040781070481040782070407810704810407 ! 810704070401078104078107040104030702040307020403070104010701040107020401 ! 070204010701040107020482070407810704030401070504030701048207040701078104 ! 070107010403070b0401050106010481060406048105048104058105068106040c040105 ! 01060005 ! 0106010501060d04010501060d0401070204020703040107040402070104040702040307 ! 020401070704010701040107010401078104078107048104078107048104078107048104 ! 078107040104010781040782070407810704810407820704070107810407810704050401 ! 070804010706040107010401070704010702040107040401070104010781040781070481 ! 040782070407810704810407810704810407820704078107048104078107048104078107 ! 048104078107040804010701040107810407810704810407810704810407820704078107 ! 048104078207040782070407810704040401070104010781040781070481040782070407 ! 820704078207040701078104078107048104078207040781070481040782070407810704 ! 810407820704078107048104078107040704020781040782070407810704810407820704 ! 078107048104078207040781070481040782070407810704810407810704010401070304 ! 030703048207040781070402040107050401070104010781040781070481040781070481 ! 04078107048104078107040b040105010601048106040604810504810405810506810604 ! 0c04010501060005 ! 010601050106010408068105048104058105068106040a04020705040107020401070604 ! 010704040107810407810704810407810704010402070504010701040107010401078104 ! 078107048104078107048104078107048104078107040104010781040782070407010703 ! 0401070104010706040107080401070604010701040107060401070a0401070104010781 ! 040781070481040782070407810704810407810704810407820704078107048104078107 ! 048104078107048104078107040804020703040107010401070104010704040107810407 ! 820704078107040404010701040107810407810704810407820704078207040781070481 ! 040782070407810704810407820704078107048104078207040781070481040782070407 ! 810704810407810704070401070104010704040107810407010703040207030401070104 ! 010702040107020401070104010701048107048104078107040104010706040107010401 ! 078104078107048104078107048104078107048104078107040b04010501060104810604 ! 0604810504810405810506810604030402068105040304010501060005 ! 010601050106010481060406048105048104058105068106040904010707040107020401 ! 070604010704040107810407810704810407810704030401070404010701040107010401 ! 078104078107048104078107048104078107048104078107040104010781040781070401 ! 040207010401070104010706040107080401070604010701040107050401070b04010701 ! 040107810407810704810407820704078107048104078107048104078207040781070481 ! 040781070481040781070481040781070401040407030402070104010701040107010401 ! 070104040781040782070407810704040401070104010781040704078104078207040781 ! 070481040782070407810704810407820704078107048104078207040781070481040782 ! 070407810704810407810704810407030701040107010401070104040702040207030402 ! 070104010701040107020401070204010701040107820407040104010701040107070401 ! 07010401078104078107048104078107048104078107048104078107040b040105010601 ! 0481060406048105048104058105068106040304810604820405040304010501060005 ! 010601050106010481060406048105048104058105068106040a04020705040107020401 ! 070604010781040781070481040782070407810704810407810704010402070504010701 ! 040107010401078104078107048104078107048104078107048104078107040104010781 ! 040781070402040207810407810704810407810704050401070804010706040107010401 ! 07040401070c040107010401078104078107048104078207040781070481040781070481 ! 0407820704078107048104078107048104078107048104078107040b0402078104078107 ! 048104078107048104078207040781070481040782070407820704078107040404010701 ! 040107810407810704030401078104078107048104078207040781070481040782070407 ! 810704810407820704078107048104078207040781070481040781070407040107010401 ! 078104078107048104078107040204020703040207810407810704810407810704010401 ! 070204010701040107810407070708040107010401078104078107048104078107048104 ! 078107048104078107040b04010501060104810604060481050481040581050681060403 ! 04810604820405040304010501060005 ! 010601050106010409050104010501060d04010781040781070481040781070401040107 ! 020401070104010781040781070481040782070407810704810407810704810407810704 ! 060401070104010701040107810407810704810407810704810407810704810407810704 ! 810407810704810407820704078107048104078207040701078104078107040504010703 ! 040107020401070304010781040781070481040781070481040782070407810704040401 ! 070404010701040107810407810704810407820704078107048104078107048104078207 ! 040781070481040781070481040781070481040781070408040107010401078104078107 ! 048104078107048104078207040781070481040782070407820704078107048104078107 ! 048104078107048104078207040781070481040782070407820704078207040701078104 ! 078107048104078207040781070481040782070407810704810407820704078107048104 ! 078107040704020781040782070407810704810407820704078107048104078207040781 ! 070481040782070407810704810407810704010401070204010701040107040401078104 ! 078107040404010781040781070481040782070407810704810407810704810407810704 ! 8104078107040b0401050106010481060406048105048104058105068106040304030504 ! 04010501060005 ! 0106010501060d040105010611040307030401070304030702040307020403070c040107 ! 010401070104010781040781070481040781070481040781070481040703070204010701 ! 040307010401078104078107040604010703040107020401070304010701040307020401 ! 078104070407010401070504030702040307010401070104010701040107810407810704 ! 810407810704810407810704810407810704090403070104010701040107010401070104 ! 020781040702078104078107048104078107048104078107048104078107048104070207 ! 010401070104010781040781070481040702070204030702040307020403070904010781 ! 040781070401040207810407820704070207020403070204030703040107030403070504 ! 010781040704070104010701040307010401070104010701040107010401070c04010501 ! 06010481060406048105048104058105068106040c04010501060005 ! 0106010501060d0401050106670401077f04490401076204010501060104810604060481 ! 05048104058105068106040c04010501060005 ! 0106010501060d0401050106670401077f04490401076204010501060104090501040105 ! 01060d04010501060005 ! 0106010501060d0401050106670401077f04490401076204010501060d04010501060d04 ! 010501060005 ! 0106010501060d04010501067f047f047f041804010501060d04010501060d0401050106 ! 0005 ! 81060501058106050f058106057f057f057f051a058106050f058106050f058106050005 ! ! 7f057f057f055905 ! 02068105007f007f007f0050008105060106 ! 010601057f007f007f00500082030506810605 ! 0106010501007f017f017f014d010103810506810605 ! 0106010501007f017f017f014d010103810506810605 ! 0106010501007f017f017f014d010103810506810605 ! 0106010501007f017f017f014d010103810506810605 ! 0106010501007f017f017f014d010103810506810605 ! 0106010501007f017f017f014d010103810506810605 ! 0106010501007f017f017f014d010103810506810605 ! 0106010501007f017f017f014d010103810506810605 ! 0106010501007f017f017f014d010103810506810605 ! 010601050100090107078101078107011601010703010307250103070a01010701010107 ! 7f017f013b01010702010107070101070e010103810506810605 ! 010601050100090101070601010717010107030101072601010701010107090101077f01 ! 7f013f01010702010107070101070e010103810506810605 ! 010601050100090101070301010781010781070181010702071201010701010107810107 ! 810701810107020701010107010101070101010711010107030101078101078207010781 ! 07018101070207810107810701810107020701010107810107810701010103077f017f01 ! 270101070201010701010307010101078101078207010781070107010103810506810605 ! ! 010601050100090101070301010781010782070107810701810107810701100101070101 ! 010781010782070107810701810107820701078107018101078107018101078107011001 ! 010703010107810107010781010781070181010781070181010782070107810701810107 ! 820701070107810107820701078107018101078107017f017f0125010107020101078101 ! 078107018101078207010782070107010781010781070106010103810506810605 ! 010601050100090104078101078207010782070107810701810107810701100101070101 ! 010781010782070107810701810107810701810107820701078207010781070111010107 ! 030101078101078107018101078107018101078107018101078207010781070181010782 ! 0701078107018101078207010701077f017f012901060781010781070181010782070107 ! 8207010781070181010781070106010103810506810605 ! 010601050100090101070301010781010782070107040712018107018201070181010782 ! 070107040701010107810107820701078107011101010703010107810107810701810107 ! 810701810107810701810107820701078107018101078207010781070181010781070101 ! 0102077f017f012701010702010107810107040781010782070107810701810107810701 ! 06010103810506810605 ! 010601050100090101070301010781010782070107810701150103070101010781010781 ! 070104010107810107820701078107011101010703010107810107810701810107810701 ! 810107810701810107820701078107018101078207010781070181010781070102010207 ! 7f017f012601010702010107810107810701030101078101078107018101078107010601 ! 0103810506810605 ! 010601050100090101070301010781010782070107810701810107810701120101070201 ! 010781010781070181010781070101010107010101071401010701010107010102078101 ! 078107018101078207010701078101078107018101078207010781070181010782070107 ! 8107018101078107017f017f012501010702010107810107810701810107820701078207 ! 0107010781010781070106010103810506810605 ! 010601050100090101070301010781010781070181010702071401010702010107010103 ! 070301010701010107150103070201010781010781070102010107810107810701810107 ! 02070101010701010107010103077f017f01270101070201010701010307010101078101 ! 078207010781070107010103810506810605 ! 010601050100630101077f017f01590101070b010103810506810605 ! 010601050100080106071c01070724010b077f017f0146010807090101070b0101038105 ! 06810605 ! 010601050100630101077f017f01590101070b010103810506810605 ! 0106010501007f017f017f014d010103810506810605 ! 0106010501007f017f017f014d010103810506810605 ! 0106010501007f017f017f014d010103810506810605 ! 0106010501007f017f017f014d010103810506810605 ! 0106010501007f017f017f014d010103810506810605 ! 0106010501007f017f017f014d010103810506810605 ! 0106010501007f017f017f014d010103810506810605 ! 0106010501007f017f017f014d010103810506810605 ! 0106010501007f037f037f034f03810506810605 ! 010601058100037f037f037f034f03810506810605 ! 010601057f007f007f005100810506810605 ! 010601057f007f007f00500082030506810605 ! 010601057f007f007f004f000103810506810605 ! 01060105020032038100037f037f034c038100034a03810506810605 ! 0106010502008103012e0184000300030171017f03570384000300030145018100030103 ! 810506810605 ! 010601050200820301002c008501000300030171017f0356030100830300030122012103 ! 820100030103810506810605 ! 010601050200820301002c0085010003000301710101037f015301020083030003012201 ! 200383000100030103810506810605 ! 010601050200820301002c00850100030003017101010327010d021d007e028101000100 ! 8303000301220101031d010100820100030103810506810605 ! 010601050200820301002c00850100030003017101010327010d021c008103027d028101 ! 0001008303000301220101031d010100820100030103810506810605 ! 01060105020082030100150081d3001400850100030003017101010327010d0201000b01 ! 820300010a0101037e0281010001008303000301220101031d0101008201000301038105 ! 06810605 ! 01060105020082030100140002d30d00050d860001000300030104010107240104070801 ! 0107240101070e0101031e01030704010d0201000b01820300010a0101037e0281010001 ! 0083030003010301040701010107150101030c0101070701030702010100820100030103 ! 810506810605 ! 01060105020082030100140002d30700050d0200010d0100850100030003010301030722 ! 0101070201010707010107240101070e0101031d0101070101010703010d0201000b0182 ! 0300010a0101037e02810100010083030003010201010702010107180101030a01030706 ! 0101070101010701010100820100030103810506810605 ! 01060105020082030100080001d3080004d30e00010d0200850100030003010301810701 ! 820107018101078207010702078101078207010702070101010701010107010101070501 ! 010702010107810107810701810107820701078207010781070101010307020103070101 ! 820701070107810107010701010107810107810701810107810701810107020702010107 ! 030101032101010703010d0201000b01820300010a0101037e0281010001008303000301 ! 02010107020101078101078207010703070101030702010107040101030c0101070a0101 ! 0701010100820100030103810506810605 ! 01060105020082030100080001d3010001d3010001d3020081d3000e00010d0300850100 ! 0300030102010107010101078101070a0701010107810107810701810107810701810107 ! 810701050102070301010701010107810107010781010782070107810701810107820701 ! 078107018101078207010781070181010781070181010782070107010781010782070107 ! 82070107810701810107810701810107810701020101032001010704010d0201000b0182 ! 0300010a0101037e02810100010083030003010301020703010107030101078101078107 ! 01810107810701810107810701030101030c010107090101070201010082010003010381 ! 0506810605 ! 01060105020082030100060007d3010001d3020081d3000d00010d040085010003000301 ! 020101070101010781010701070101020701010107010101070101010781010782070107 ! 810701080102070101010701010107810107810701810107820701070107070101078101 ! 078107018101078107018101078207010781070181010782070107820701078107018101 ! 07810701060101031f01010705010d0201000b01820300010a0101037e02810100010083 ! 030003010501020701010107020101070101010701010107080101030c01010708010107 ! 03010100820100030103810506810605 ! 01060105020082030100080001d3010001d3010001d3020081d3000900010d0100050d86 ! 000100030003010201050781010781070101010107020101070101010701010107810107 ! 820701078107010901020781010781070181010782070107810701810107810701010102 ! 070201040781010781070181010781070181010782070107810701810107820701078207 ! 01070407070101031e01010706010d0201000b01820300010a0101037e02810100010083 ! 0300030106010207810107810701010181070101010507080101030c0101070701010704 ! 010100820100030103810506810605 ! 01060105020082030100080001d3010001d38100d301d3020081d3000600040d08008501 ! 000300030101010107030103070201010702010107010101070101010781010782070107 ! 810701050101070201010781010781070181010782070107810701810107810701020102 ! 078101078107018101078207010781070181010781070181010782070107810701810107 ! 82070107820701078107010a0101031d01010707010d0201000b01820300010a0101037e ! 02810100010083030003010201010702010107810107810701810107810701010101070c ! 0101030c0101070601010705010100820100030103810506810605 ! 010601050200820301000d0004d3020081d3000700020d09008501000300030101010107 ! 030103070201010702010107010101070201010701010107070101070201010781010782 ! 070107010781010701078101078207010781070181010782070107810701810107820701 ! 078107018101078107018101078207010701078101078207010782070107810701810107 ! 810701810107810701020101031d01010707010d0201000b01820300010a0101037e0281 ! 010001008303000301020101070201010781010782070107810701020101070101010701 ! 010107040101030c01010703010107810107810701040101008201000301038105068106 ! 05 ! 01060105020082030100100001d3020081d3000800010d09008501000300030101010107 ! 030103070201010703010307030101070101010708010407020101078101078207010782 ! 070107810701010103070201020781010702070101010701010107810107820701078107 ! 01810107810701810107020702010107030101031d01050703010d0201000b0182030001 ! 0a0101037e02810100010083030003010301040701010107810107030701010307020101 ! 07040101030c01010703010107810107040701010100820100030103810506810605 ! 010601050200820301000c0001d3010001d3020081d30014008501000300030159010107 ! 1501010327010d0201000b01820300010a0101037e028101000100830300030122010103 ! 1d010100820100030103810506810605 ! 010601050200820301000d0003d3030081d3000500810d000c0085010003000301590101 ! 071501010327010d0201000c038100030c037e0281010001008303000301220101031d01 ! 0100820100030103810506810605 ! 01060105020082030100150081d3000400810d000d008501000300030159010107150101 ! 0327010d028100031b037e0281010001008303000301220101031d010100820100030103 ! 810506810605 ! 01060105020082030100150081d3000300810d000e0085010003000301710101037f0153 ! 0102008303000301220101031d010100820100030103810506810605 ! 01060105020082030100150081d300140085010003000301710101037f01530102008303 ! 000301220101031f00820100030103810506810605 ! 01060105020082030100150081d300140085010003000301710101037f00560083030003 ! 0122018103001f00820100030103810506810605 ! 01060105020082030100150081d30082000d0011008501000300030171018103007f0056 ! 00830300030145018100030103810506810605 ! 01060105020082030100150083d3000d000a00010d0500850100030003007f007f004a00 ! 830300030046000203810506810605 ! 01060105020082030100150082d30d000b00030d03008401000300037f037f034c038100 ! 034a03810506810605 ! 010601050200820301000100130c811a0d110d020083010003007f007f007f0018000103 ! 810506810605 ! 010601050200820301001400820d1a000c00030d03008401000300037f037f037f031903 ! 810506810605 ! 010601050200820301001300830d001a000c00010d05008501000300030170017f037f03 ! 23038100030103810506810605 ! 010601050200820301001200810d0082001a0014008501000300030170017f037f032203 ! 01000203810506810605 ! 010601050200820301001100810d000100811a000700010d0a0085010003000301700101 ! 037f017f011f0102000203810506810605 ! 010601050200820301001000810d000200811a000700010d0100010d0100010d02008501 ! 0003000301700101033c0160020f008107000b00620281010001000203810506810605 ! 010601050200820301000f00810d000300811a000500050d81000d020d03008501000300 ! 0301700101033c0160020f008107000a00810302610281010001000203810506810605 ! 010601050200820301000e00810d000400811a000700010d0300010d0400850100030003 ! 01700101033c01600201000b018303000701090101036202810100010002038105068106 ! 05 ! 010601050200820301000d00810d000500811a000700010d0300010d0400850100030003 ! 01020104070a0101070e0104070f0101070e01010703010107040101070b010107090101 ! 031301010701010307020104070101030702010307020103070401600201000b01830300 ! 070109010103620281010001000203810506810605 ! 010601050200820301000c00810d000600811a000c00030d030085010003000301020101 ! 0701010107090101070d010107020101070e0101070d01010703010307030101070c0101 ! 070801010312010207810107810701810107810701810107810701020101070101010781 ! 0107810701810107820701078107018101078107010201600201000b0183030007010901 ! 0103620281010001000203810506810605 ! 010601050200820301000900830d000d000700811a000b00010d0100010d020085010003 ! 000301020101070201010701010307010103070101030706010107020101070101030702 ! 010307010101070101030707010107030181070182010701020184070107010701078101 ! 070107030101070201010703010103110182070107820701078107018101078207010781 ! 070103010107010101078101078107018101078207010781070181010781070102016002 ! 01000b01830300070109010103620281010001000203810506810605 ! 010601050200820301000900010d0900811a001400850100030003010201010702010107 ! 810107810701810107810701810107810701810107810701810107810701050102070301 ! 010701010107810107810701810107820701078207010781070181010781070104010107 ! 030101070101010701010107810107810701810107810701810107810701020101070101 ! 010703010103110182070107810701810107020701010407010101070101010781010781 ! 0701810107820701078107018101078107010201600201000b0183030007010901010362 ! 0281010001000203810506810605 ! 010601050200820301000800030d0800811a001400850100030003010201010702010107 ! 040101070101010705010107080102070101010708010107810107820701078107018101 ! 078107010401010703010107010101070101010781010781070181010781070181010781 ! 070102010107070101031001810701810107820701078107018101078107010301010781 ! 010781070181010782070107810701810107820701078107018101078107010201600201 ! 000b01830300070109010103620281010001000203810506810605 ! 010601050200820301000800010d0a00811a001400850100030003010201010702010107 ! 010104070101010702010407090102078101078107010401040781010782070107040705 ! 010107030105070101810701810107810701810107810701810107810701020101070701 ! 01030f018107010101010781010781070181010781070103010107810107810701810107 ! 82070107810701810107820701078107018101078107010201600201000b018303000701 ! 09010103620281010001000203810506810605 ! 010601050200820301000200010d1000811a001400850100030003010201010702010107 ! 810107810701810107810701810107810701810107810701810107810701040101070201 ! 010781010781070103010107010101078101078207010781070108010107020101070301 ! 01078201070181010781070181010781070181010781070102010107070101030f010807 ! 010101078101078107018101078207010781070181010782070107810701810107820701 ! 078107018101078107010201600201000b01830300070109010103620281010001000203 ! 810506810605 ! 010601050200820301000200010d0100050d0800811a0014008501000300030102010107 ! 010101070101010701010107010101078101070107010101070501010702010107810107 ! 810701810107820701078107018101078207010782070107810701810107810701040101 ! 070201010703010307010101070101010701010107030101070101010703010103130101 ! 078101078107018101078207010781070181010782070107810701810107820701078107 ! 01810107820701078107018101078107010201600201000b018303000701090101036202 ! 81010001000203810506810605 ! 0106010502008203010081000d040d0200010d0900811a00140085010003000301020104 ! 070301020781010781070181010781070181010701078101078107010401040702010307 ! 020102078101070207010103070601010702010107030103070101010701010107010101 ! 070301010701010107030101031301010701010307020103070201030702010307020103 ! 070401600201000b01830300070109010103620281010001000203810506810605 ! 010601050200820301000200010d0300010d0a00811a0014008501000300030148010107 ! 1a010107080101033c01600201000b018303000701090101036202810100010002038105 ! 06810605 ! 010601050200820301000200010d0200010d0b00811a0014008501000300030148010107 ! 1a010107080101033c01600201000c03820007030b036202810100010002038105068106 ! 05 ! 010601050200820301000600010d0c00811a001400850100030003014901010718010107 ! 090101033c0160028100030d038107030b03620281010001000203810506810605 ! 010601050200820301000600050d1f0085010003000301700101037f017f011f01020002 ! 03810506810605 ! 010601050200820301002c0085010003000301700101037f017f011f0102000203810506 ! 810605 ! 010601050200820301002c0085010003000301700101037f007f00220002038105068106 ! 05 ! 0106010502008103012e0184000300030170018103007f007f0022000203810506810605 ! ! 0106010502008103002f0083030003007f007f007f0015000203810506810605 ! 01060105020032038100037f037f037f031903810506810605 ! 010601057f007f007f004f000103810506810605 ! 0106010502007f037f037f034e03810506810605 ! 01060105020081030128017f037f037f031f038100030103810506810605 ! 01060105020081030128017f037f037f031e0301000203810506810605 ! 010601050200810301280101037f017f017f011b0102000203810506810605 ! 01060105020081030128010103270113021d007f027f0240028101000100020381050681 ! 0605 ! 01060105020081030128010103270113021c008103027f027f023f028101000100020381 ! 0506810605 ! 010601050200810301280101032701130201000b01820300010a0101037f027f02400281 ! 010001000203810506810605 ! 010601050200810301010106071f0101031e0103070401130201000b01820300010a0101 ! 037f027f02400281010001000203810506810605 ! 010601050200810301060101071f0101031d010107010101070301130201000b01820300 ! 010a0101037f027f02400281010001000203810506810605 ! 010601050200810301050101070101030702010307010182070107010781010701070201 ! 0107030101031d0101070701130201000b01820300010a0101037f027f02400281010001 ! 000203810506810605 ! 010601050200810301040101070101010701010107810107810701810107820701078107 ! 01810107810701810107810701810107810701020101031d0101070701130201000b0182 ! 0300010a0101037f027f02400281010001000203810506810605 ! 010601050200810301030101070201010701010107810107810701810107820701078107 ! 01810107810701810107810701060101031d0104070401130201000b01820300010a0101 ! 037f027f02400281010001000203810506810605 ! 010601050200810301030101070201010701010107810107810701810107820701078107 ! 01810107810701810107810701060101031d010107010101070301130201000b01820300 ! 010a0101037f027f02400281010001000203810506810605 ! 010601050200810301020101070301010701010107810107810701810107820701078107 ! 01810107810701810107810701060101031d010107010101070301130201000b01820300 ! 010a0101037f027f02400281010001000203810506810605 ! 010601050200810301010101070401010701010107810107810701810107820701078107 ! 01810107810701810107810701810107810701020101031d010107010101070301130201 ! 000b01820300010a0101037f027f02400281010001000203810506810605 ! 010601050200810301010106078101070207020103070101010701010107010101070101 ! 0107030101031e0103070401130201000b01820300010a0101037f027f02400281010001 ! 000203810506810605 ! 010601050200810301280101032701130201000b01820300010a0101037f027f02400281 ! 010001000203810506810605 ! 010601050200810301280101032701130201000c038100030c037f027f02400281010001 ! 000203810506810605 ! 01060105020081030128010103270113028100031b037f027f0240028101000100020381 ! 0506810605 ! 010601050200810301280101037f017f017f011b0102000203810506810605 ! 010601050200810301280101037f017f017f011b0102000203810506810605 ! 010601050200810301280101037f007f007f001e000203810506810605 ! 01060105020081030128018103007f007f007f001e000203810506810605 ! 0106010502008103007f007f007f0049000203810506810605 ! 0106010502007f037f037f034e03810506810605 ! 0106010501007f037f037f034f03810506810605 ! 010601058100037f037f037f034f03810506810605 ! 010601057f007f007f005100810506810605 ! 010601057f007f007f005100810506810605 ! 010601057f007f007f005100810506810605 ! 010601057f007f007f005100810506810605 ! 010601057f007f007f005100810506810605 ! 010601057f007f007f005100810506810605 ! 010601057f007f007f005100810506810605 ! 010601057f007f007f005100810506810605 ! 010601057f007f007f005100810506810605 ! 010601057f007f007f005100810506810605 ! 010601057f007f007f005100810506810605 ! 010601057f007f007f005100810506810605 ! 010601057f007f007f005100810506810605 ! 010601057f007f007f005100810506810605 ! 010601057f007f007f005100810506810605 ! 010601057f007f007f005100810506810605 ! 010601057f007f007f005100810506810605 ! 01060105400005780516050c05cf049806a74c0005b70544057b060f050b057405b57f00 ! 7400810506810605 ! 010601054000057801168108160116820c090c020c05cf0108029806a74c0005b7044402 ! 08037b040f0109050b057405b57f007400810506810605 ! 01060105400001080278020802160209030c02cf0508019806a74c0005b704440408017b ! 040f0309810b0901090374010905b57f007400810506810605 ! 010601053f00050881781601160b0901cf0208819808020804a74c0005b7814408060881 ! 7b090a09020b070903b57f007400810506810605 ! 010601053e000308037804160209030c05cf82980898019801a7010802a74c0003b70208 ! 03440108047b040f0309030b0374040902b57f007400810506810605 ! 010601053d00050802780516820c090c020c05cf049806a74c0005b70544057b040f0109 ! 050b0374020904b57f007400810506810605 ! 010601053a00054905780516050c05cf049806a7051c4000058305b70544057b060f050b ! 057405b506ce7f006d00810506810605 ! 010601053a00054905620551050c055204f90514061c4000058305f805da05aa060f0567 ! 05a405f706ce7f006d00810506810605 ! 010601053a00054905620551050c055204f90514061c4000058305f805da05aa060f0567 ! 05a405f706ce7f006d00810506810605 ! 010601053a00054905620551050c055204f90514061c4000058305f805da05aa060f0567 ! 05a405f706ce7f006d00810506810605 ! 010601053a00054905620551050c055204f90514061c4000058305f805da05aa060f0567 ! 05a405f706ce7f006d00810506810605 ! 010601053a00054905620551050c055204f90514061c4000058305f805da05aa060f0567 ! 05a403f78209f7ce05ce7f006d00810506810605 ! 010601052e00054d05e20549056201518108510151050c055204f904140508011c045b03 ! 09022028000383040802d10383040802f803da050801aa060f056705a404f7010905ce05 ! 797f00020005650109033205450589053d05190b0c05260519053d0516058906320f0081 ! 0506810605 ! 010601052e00054d05e201718108710171056281c4088108c401c482260826022602c605 ! 08018b05210408811c5b045b0309022028000483030802d104840308025d04bf04080144 ! 04590108027401088174b504b505820109038e06797f0002000465010904320545058905 ! 3d0519820c080c080c82269b2602260519053d0516058906320f00810506810605 ! 010601052e00054d010802e2020803710462010803c40208032603c60308028b0521811c ! 080108011c055b8120090109022028000483020803d104840208035d04bf030802440459 ! 03080274020802b58108820482018e81098e018e06797f00020003658209653204328245 ! 084502458189088108890189823d083d023d8119088108198119080108080c029b032605 ! 19823d253d023d811625812516011682898589028981328581853202320f008105068106 ! 05 ! 010601052e00044d050881e2710471810862816208820862c401c40b0801c60508052181 ! 1c080208811c5b045b8120090209012028000383030803d103840308035d02bf010881bf ! 088108448144080a08027401b504080482028e030905797f000200030901650432020881 ! 4508020803890208813d08020801190b080b9b01190225813d2502250316028581898502 ! 8505320f00810506810605 ! 010601052e00034d030803e204710308026204c40208032605c60108028b02080221011c ! 81081c811c0881085b035b042082092000270002838108838183d104d102848108848184 ! 5d045d81bf088108bf01bf054404590308037403b503080382038e020905797f00020002 ! 09026502320508024502890508023d04190208080c029b032602190525023d0216058502 ! 8906320f00810506810605 ! 010601052e00024d050802e203710408026205c482260826022605c6048b022181082181 ! 211c041c815b0881085b015b052001092700818308810883018305d18184088108840184 ! 045d010804bf054404590108057403b504080282038e030904797f000100030902650532 ! 0108034505890108033d0519820c080c080c82269b26022605190125033d051601850389 ! 06320f00810506810605 ! 010601052200054f0547054d05e20571056205c4052605c6048b0521051c015b81085b01 ! 5b062001091a00059d05d20108038305d101080384035d010805bf05440659057405b505 ! 82028e040904797c00043603090265053205450589053d05190b0c05260519053d051605 ! 8906320f00810506810605 ! 010601052200054f054705710b4d05470528052605770463051d051c051306571c00059d ! 04d28108ae04ae04848108840484055d05e905ee060f05eb05ba0573055006607c000536 ! 054205b305320545051605190b0c052605190516053d050c06cf0f00810506810605 ! 010601052200054f054705710b4d05470528052605770463051d051c051306571c00059d ! 05d205ae0b84055d05e905ee060f05eb05ba0573055006607c000536054205b305320545 ! 051605190b0c052605190516053d050c06cf0f00810506810605 ! 010601052200054f054705710b4d05470528052605770463051d051c051306571c00059d ! 05d205ae0b84055d05e905ee060f05eb05ba0573055006607c000536054205b305320545 ! 051605190b0c052605190516053d050c06cf0f00810506810605 ! 010601052200054f054705710b4d05470528052605770463051d051c051306571c00059d ! 05d205ae0b84055d05e905ee060f05eb05ba047381095004500560817a007b0005360542 ! 05b305320545051605190b0c052605190516053d050c06cf0f00810506810605 ! 010601052200054f054705710b4d05470528052605770463051d051c0513815708810857 ! 02571c00059d010903d205ae0b84055d05e905ee060f03eb8208ebba04ba057381095003 ! 500560017a7b0005360442010904b305320545051605190b0c052605190516053d050c06 ! cf0f00810506810605 ! 010601051c0005e70108034f0547827108710271064d81084d024d054701288108280128 ! 05260377050881631d041d0308011c051381570802080157054e10000593029d040903d2 ! 05ae010807840408025d02e9050802ee060f04eb010804ba0573010903500660817ac003 ! c07600053604428109b304b30532824508450245051605190b0c052605190516053d050c ! 06cf0f00810506810605 ! 010601051c0004e7010804ef054901080371059a0108034d054781280881082801288226 ! 0826022604a9040881351c041c03080113054c812f080208812f4e054e1000059303cb03 ! 090381028d040803bd04ae0308028403f1040802bb040f010805dc01080388057982be09 ! be02be054301c0817ac002c07600053c033a82093a6b046b054f0108037805510519820c ! 090c020c050a820c080c020c05190516051901f00398062d0f00810506810605 ! 010601051c0003e78208e7ef04ef824908498149088108710471829a089a819a0881084d ! 044d0447010803280208032605a902080135051c81130801080113054c812f080208812f ! 4e054e1000059303cb03090381038d020804bd04ae0208038403f1030803bb040f030803 ! dc01888108880188057901be8109be01be054301c0817ac002c07600053c033a82093a6b ! 046b824f084f814f0881087804788251085102518119088108198119090109030c040a02 ! 08030c05198216251602168119258125f004f00298062d0f00810506810605 ! 010601051c00030801e705ef0308014905710308019a054d810847814708820847280128 ! 0b0802a9030881351c041c811308020881134c044c032f82082f4e054e1000059303cb82 ! 09cb810481038d020804bd03ae0308038403f1030801bb0b0802dc02880308047902be81 ! 09be81be43044302c0027a81c0007500053c0109823a093a813a6b046b0308014f047802 ! 08815108020801190b090b08011902258116250225031902f08198f002f0052d0f008105 ! 06810605 ! 010601051c00020802e705ef0208024905710208029a044d0308024704280208032605a9 ! 8235083581350881081c031c041381084c044c042f81084e054e1000059302cb8109cb81 ! cb810481028d81088d818dbd04bd02ae8108ae81ae84048401f1010801f18108bb03bb04 ! 0f030803dc03880208047902be0309044302c0027a81c0007500053c0309013a056b0208 ! 024f02780508025104190209030c040a0208030c02190525021605198298f0980298812d ! f081f02d022d0f00810506810605 ! 010601051b00030802e704ef0408014904710408019a034d040802470528822608260226 ! 05a90435811c0881081c011c05130108034c052f81084e044e1000059301cb8109cb01cb ! 0581018d81088d018d05bd81ae088108ae01ae0584010803f105bb040f010805dc038803 ! 08037902be0309044381c07a037a81c0007500053c0409813a6b036b0408014f05780108 ! 03510519820c090c020c050a820c080c020c05190125031605190598062d0f0081050681 ! 0605 ! 010601051600046b030802e705ef05490571059a054d05470528052605a90435011c8108 ! 1c011c0513814c0881084c014c052f0108044e0a0005ab059381cb098109cb01cb058182 ! 8d088d028d05bd010803ae0484010804f105bb060f05dc02880408037901be0409044302 ! c0027a81c0007500053c0309013a056b054f057805510519050c050a050c051905160519 ! 0598062d0f00810506810605 ! 010601051600056b052405e7056f054f0571054d05470528050c05b4042105200566052f ! 05318297089703970a0005ab05a282a809a802a805938108b603b6049d810881048105bd ! 05d205e1060e057f05c205be046001090491042c827a2c007500055c0109033c053a0542 ! 054905280516050a051e050a05190516050c05e0064e0f00810506810605 ! 010601051600056b052405e7056f054f0571054d05470528050c05b4042105200566052f ! 053106970a0005ab05a28109a803a8059305b6059d058105bd05d205e1060e057f05c205 ! be05600591062c7600055c053c053a0542054905280516050a051e050a05190516050c05 ! e0064e0f00810506810605 ! 010601051600056b052405e7056f054f0571054d05470528050c05b4042105200566052f ! 053106970a0005ab05a205a8059305b6059d058105bd05d205e1060e057f05c205be8260 ! 096002600591822c092c032c7600055c053c053a0542054905280516050a051e050a0519 ! 0516050c05e0064e0f00810506810605 ! 010601051600056b052405e7056f054f0571054d05470528050c05b4042105200566052f ! 053106970a0004ab8109a204a204a8810993049304b60108049d058105bd05d205e1060e ! 057f8109c203c205be8260096002600591822c092c032c7600055c033c82083c3a043a05 ! 42054905280516050a051e050a05190516050c05e0064e0f00810506810605 ! 010601051600056b05248108e703e7056f054f0571054d05470528050c05b40421052081 ! 66088108660166052f813108810831013106970a0003ab010905a203a80109059303b602 ! 08049d05818108bd03bd05d205e1060e057f010903c205be016081096001600591012c81 ! 092c022c7600055c033c82083c3a043a04420108044905280516050a051e050a05190516 ! 050c05e0064e0f00810506810605 ! 010601051600056b0424010804e7056f0108034f0571824d084d024d0547012881082801 ! 28050c03b405088121200420816608020881662f042f813108020881319705970a0003ab ! 020904a203a80209049302b60308049d0381020804bd05d2010803e1060e057f82c209c2 ! 02c205be016081096001600591012c81092c022c7600055c023c81083c813c3a043a0442 ! 81084904490528821608160216050a051e050a05190516030c059901e0064e0f00810506 ! 810605 ! 010601051600055f0454810824042404220108046f054f0108039a054781280881082801 ! 28820a080a020a04e00408811c5a045a814e080208814e87048781ed080308064b0a0002 ! 6e0309046e02ab030904a001c1040804a8019e040804b602fc040803b706940573014381 ! 09430143059101648109640164052c01f28109f202f27600055c02388108388138340434 ! 034a82084a420442054d01080396820a090a020a051e820a090a020a05268219c8190219 ! 04520499011c06310f00810506810605 ! 010601051600055f035482085424042403228208226f046f824f084f814f0881089a049a ! 0447010803280208030a05e00208011c055a814e080208814e87048781ed08020881ed4b ! 054b0a00046e81096e046e04ab8109a004a003c1020804a8039e020804b603fc020802b7 ! 028c0394018c0573014381094301430591026481096481642c042c02f28109f201f27600 ! 055c02388108388138340434034a82084a420442824d084d814d0881089603960209030a ! 041e0209030a042602c8031905520299021c06310f00810506810605 ! 010601051600055f0254810854815424042403080122056f0308014f059a810847814708 ! 8208472801280b0802e00308811c5a045a034e82084e87048781ed088408ed08ed4b054b ! 0a00036e81096e056e03ab8209aba004a003c18208c1a804a8039e020804b603fc020804 ! b781948c068c0373024302090591026481096481642c042c02f28109f201f27600055c02 ! 3881083881383404340108824a084a814a4204420308014d029617090bc802520399011c ! 06310f00810506810605 ! 010601051600055f03080154052402080222056f0208024f049a0308024704280208030a ! 05e0821c081c811c0881085a035a044e810887048704ed81084b054b0a00036e81096e05 ! 6e03ab8209aba004a003c18208c1a804a8029e81089e819eb604b602fc8108fc81fcb704 ! b70494048c027302430209059102640209052c02f2020981f2007500055c040881383404 ! 340308014a05420208024d04960209030a041e0209030a042602c803190552821c991c81 ! 1c9981993105310f00810506810605 ! 010601051600055f03080154042403080222046f0408014f039a040802470528820a080a ! 020a05e0041c815a0881085a015a054e810887038704ed81084b054b0a00036e81096e05 ! 6e03ab8209aba004a002c18108c181c1a804a8029e81089e819eb604b601fc8108fc01fc ! 05b70494028c0473814309030905918164090309052c81f209030981f2007500055c8138 ! 08020881383404340408814a4203420408014d0596820a090a020a051e820a090a020a05 ! 268219c81902190552051c019904310f00810506810605 ! 0106010510000b5f03080154042403080222056f054f059a05470528050a05e0041c015a ! 81085a015a054e0108038705ed81084b044b0400052a036e81096e056e03ab8209aba004 ! a002c18108c181c1a804a8019e81089e019e05b682fc08fc02fc05b70694057302430209 ! 059101640309052c01f2030981f2007500055c8138080108013805340308014a0542054d ! 0596050a051e050a052605190552051c8231993103310f00810506810605 ! 010601051000055f05360108034805540524052205b10549056205280552053504130575 ! 053182410841024105230108044b0400052a02a58109a581a5ad04ad02e58109e581e570 ! 047002c58108c581c56e046e818a0881088a018a05a0810880038005d406d005c3044681 ! 0946044602720209052c024302098143007500073801080138053f01080334053a052405 ! d7050a051e050a0b0c05770520062f0f00810506810605 ! 010601051000055f0536054805540524052205b105490562052805520535041305750531 ! 05410523064b0400052a02a58109a581a5ad04ad02e58109e581e570047001c58108c501 ! c5056e828a088a028a05a0058005d406d005c30b4603720109052c034301098143007500 ! 07388108380138053f0534053a052405d7050a051e050a0b0c05770520062f0f00810506 ! 810605 ! 010601051000055f0536054805540524052205b105490562052805520535041305750531 ! 05410523064b0400052a02a58109a581a5ad04ad02e58109e581e570047001c58108c501 ! c5056e058a05a0058005d406d005c30b46027281f57281722c042c064376000b38053f05 ! 34053a052405d7050a051e050a0b0c05770520062f0f00810506810605 ! 010601051000045f8108360436054805540524052205b105490562052805520535041305 ! 750531054101238109230123064b0400052a01a58109a501a505ad02e58109e581e57004 ! 7002c58108c581c56e046e028a81088a818aa004a00180810980018005d406d005c30b46 ! 027281f57281722c042c06430300818c00630081f0000a0009388208383f043f03348208 ! 343a043a04248108d704d7050a051e050a0b0c05770520062f0f00810506810605 ! 010601051000035f82085f3604360448010804540524810822032205b105490562052805 ! 5205350413057581310981093101310541012301090123064b0400052a01a5010901a505 ! ad02e5010981e570047002c5010881c56e046e028a0108818aa004a001800109018005d4 ! 06d005c3044601090446027281f57281722c042c06430400818c0027008109000f00018c ! 250081f0000b0009388208383f043f03348208343a043a0324820824d704d7050a051e05 ! 0a0b0c05770520062f0f00810506810605 ! 010601051000035f82085f3604360448810854045404240108042205b101080349056282 ! 280828022805520535010902130575813109020981314104410123020981234b054b0400 ! 052a01a5020981a5ad04ad01e5020981e570047001c5020881c56e046e018a0208818aa0 ! 04a0018002098180d404d406d082c385c302c304468109460446027281f57281722c042c ! 064304d5018c04501c000461010905220400055a038c02e31c00033482f0343605360400 ! 083881083881383f043f023481083481343a043a0324820824d704d7050a051e050a0b0c ! 05770520062f0f00810506810605 ! 010601051000033f82083f760476034a82084a360436045481082404240422010804b105 ! 9a0108032801080398051d0309816657045781410903090523014b0309069f0400051701 ! 1803090537011b0309051b015e0308075e03080537012a0309055706b101850348035f82 ! 095f4a044a021a81f51a811ab905b9040005d582508c5003501c00046181092205220400 ! 055a048c01e31c00033482f0343605360400053f02388108388138290729810829812938 ! 0438033c81083c813c004400810506810605 ! 010601051000023f81083f813f760476034a82084a360436035482085424042403228208 ! 22b104b1829a089a819a08810828012805080298051d8166098109668166570457814109 ! 02098141230423014b84094b094b9f059f0400051701188409180918370437021b81091b ! 061b025e81085e095e81085e815e370437012a84092a092a57045701b18185b181b18581 ! 85480448035f82095f4a044a021a81f51a811ab905b9040005d50150818c5002501c0003 ! 618209612205220400055a038c02e31c00023481f03481343605360400053f0238810838 ! 81382907298108298129380438023c81083c013c4500810506810605 ! 010601051000023f81083f813f7604760108824a084a814a360436025481085481542404 ! 240308012205b10308019a042802088198080208041d8566096609665704578141098409 ! 410941230423034b82094b9f059f040005170318820918370437031b81091b051b035e81 ! 085e095e82085e370437032a82092a57045781b185028501b105480109825f095f815f4a ! 044a021a81f51a811ab905b9040005d50250818c5001501c000261810961816122052204 ! 00055a018c82e38ce301e31c00023481f03481343605360400053f023881083881382907 ! 298108298129380438023c81083c013c4500810506810605 ! 010601051000813f080108013f05760308014a05360308015405240208022205b1020802 ! 9a0528829808980298811d0881081d011d0366810957045704418109230423034b82094b ! 9f059f040005170318820918370437031b81091b051b035e81085e095e82085e37043703 ! 2a82092a57045781b185018502b105480309015f054a05f506b9040005d50250038c1c00 ! 0309016106220400055a03e3818ce381e3001b008134f001f0013406360400053f040881 ! 3829042904088129380438813c080108023c4500810506810605 ! 010601051000813f080208813f7604760408814a3604360308015404240308022204b104 ! 08019a05280598051d0466810957035704418109230423044b81099f059f040005170418 ! 8109370437031b81091b051b035e81085e095e82085e370437042a8109570457048501b1 ! 05480409815f4a044a811af503f506b9040005d50250038c1c000309016106220400055a ! 03e3818ce381e3001b008134f002f081343605360400053f813808020881382905290308 ! 8129380438813c080208013c4500810506810605 ! 010601051000813f080108013f05760308014a05360308015404240308022205b1059a05 ! 280598051d046682570957025705418109230323044b81099f059f040005170418810937 ! 0437031b81091b051b035e81085e095e82085e370437042a810957045706b10548030901 ! 5f054a011a02f5811ab905b9040005d50150048c0550100005530309016106220400055a ! 04e3828ce3230423100005158134f001f0013406360400053f8138080108013806290208 ! 01290538813c080108023c4500810506810605 ! 010601051000812708810827012705380108035605d901080369056105420522054f05a3 ! 05a9051304ea056a051f0109032a04188109230523040005400417810917091781091704 ! 17044081082a042a041f8108410441042f810921042106f405db0109036b070002f50c00 ! 054304e6018c05501000055301090361065404000587046a018c052310000515813ff081 ! f03f013f063c04000529015c0108015c0527013e0108013e0515812e0881082e022e4500 ! 810506810605 ! 0106010510008227082702270538055605d90569056105420522054f05a305a9051304ea ! 056a051f052a0518810923042304000540051781091708178109170417044081082a042a ! 041f8108410441052f810921032106f405db056b080081f5000c00054305e60650100005 ! 530561065404000587056a062310000515823ff03f023f063c04000529015c81085c015c ! 0527013e81083e013e0515822e082e032e4500810506810605 ! 01060105100005270538055605d90569056105420522054f05a305a9051304ea056a051f ! 052a051806230400054017170540052a051f0541052f052106f405db056b1700054305e6 ! 0650100005530561065404000587056a062310000515053f063c04000529055c0527023e ! 81083e813e150415022e81082e012e4500810506810605 ! 01060105100003278208273804380356820856d904d90469810861046105420522054f05 ! a305a9051304ea056a011f81091f011f052a021881091881182305230400054001178109 ! 170917810917071701408109400140052a051f0541052f052106f405db056b1700054381 ! 08e603e606501000055305610654040005870109036a062381ec000e000515033f827e3f ! 3c053c04000529035c82095c270427023e81083e813e150415022e81082e012e45008105 ! 06810605 ! 01060105100003278208273804380356820856d904d90369820869610461044201080422 ! 054f05a305a90513010902ea056a011f0109011f052a0218010981182305230400054001 ! 170109091701090717014001090140052a811f0981091f011f0541052f052106f405db05 ! 6b17000543010803e6055081b8000f008199530353046101080554040005870209026a06 ! 2301ec0a0081fb0001000515033f827e3f3c053c04000529035c82095c270427023e8108 ! 3e813e150415022e81082e012e4500810506810605 ! 0106010510000227810827812738043802568108568156d904d903698208696104610442 ! 8108220422054f010803a305a90513030981ea6a046a011f0209811f2a042a0118020981 ! 1823052304000540011702090817020906170140020981402a042a811f090209811f4104 ! 410309012f052106f405db056b1700054382e608e602e6065081b8600360040004b00199 ! 045304618108540554040005870309016a062302ec02400400014681fb4601460515023f ! 817e3f813f3c053c04000529025c81095c815c270427023e81083e813e150415022e8108 ! 2e012e4500810506810605 ! 010601051000023e81083e813e2704270238810838813834043403768208764a044a0353 ! 82085342044204ef0108013205080263054c0409051f01400309051b01ad030981ad0009 ! 000718030907170309052a014b03090523816a090309052f030901130563069605db1d00 ! 056401918108910191057d016081b8600260040004b08199530453033681083606360400 ! 05970209081f8140ec02ec01400400024681fb468146150415023e817e3e813e27052704 ! 00081581091581152e042e023b81083b813b330433021a81081a011a4500810506810605 ! ! 010601051000023e81083e813e27042702388108388138340434027681087681764a044a ! 035382085342044203ef8208ef32023203080363054c030981e31f041f01408409400940 ! 1b041b02ad8109ad01ad0a000718840918091817061784091709172a042a014b84094b09 ! 4b230423816a090209816a2f042f811309010901130563019681c896029681dbc881c8db ! 01db1d00056401918108910191057d016001b80260040003b08299b05304530336810836 ! 0636040005970209081f8440ec40ec4001400400024681fb468146150415023e817e3e81 ! 3e2705270400081581091581152e042e023b81083b813b330433021a81081a011a450081 ! 0506810605 ! 010601051000023e81083e813e27042702388108388138340434027681087681764a044a ! 0108825308538153420442030801ef0432050881634c044c010983e309e31f041f034082 ! 09401b041b03ad8109ad81ad00090009188209181708178209172a042a034b82094b2304 ! 23816a0984096a096a2f042f8113090209811363046302c88196c802c804db1d00056402 ! 910208057d026002b8816000030002b08199b081b0530453010882360836073604000597 ! 021f81091f061f024081ec4001400400024681fb468146150415023e817e3e813e270527 ! 0400081581091581152e042e023b81083b813b330433021a81081a011a45008105068106 ! 05 ! 0106010510000408813e2704270408813834043481760801080176054a03080153054202 ! 0802ef0532010802630208034c03e381091f041f03408209401b041b03ad8109ad81ad00 ! 090009188209181708178209172a042a034b82094b230423046a81092f042f0413810963 ! 026305c8029605db1d00056402910208057d026002b88160000300039901b00553030808 ! 3604000597021f81091f061f024081ec4001400400024602fb0515047e813e2705270400 ! 0515040981152e042e050805330508811a004400810506810605 ! 010601051000813e080208813e27042781380802088138340434817608020881764a044a ! 04088153420342030802ef05320563014c81084c014c03e381091f041f044081091b041b ! 03ad8109ad81ad0009000a18810917091781092a042a044b8109230423046a81092f042f ! 0513010903638196c881c896029605db1d0005648191080308057d016003b88160000300 ! 039901b005530408073604000597031f81091f051f034081ec4081400003008146fb02fb ! 8146150415813e7e027e813e27052704000615030981152e042e813b0803080533811a08 ! 0308811a004400810506810605 ! 010601051000813e080108013e052781380801080138053481760801080176054a030801 ! 530442030802ef05320563054c04e381091f031f044081091b041b03ad8109ad81ad0009 ! 000a18810917091781092a042a044b8109230423056a81092f032f051381630981096301 ! 63069605db1d00056402910208057d036001b88160220322039901b00553030808360400 ! 0597031f81091f051f034081ec408140140314024601fb8146150415813e7e017e013e06 ! 270400061502090115052e013b0208813b330433011a0208011a4500810506810605 ! 010601051000012e0108012e053e0127010801270529813c0881083c013c05550108033a ! 054805240562051d053104230109032a041881091b041b04af8209af000900051b043781 ! 09180418044081099f049f042381096a046a05ea0109035a051d058b065205321d000534 ! 043a810869046905530522019903df05530108035f063a0400052a049f81091f041f0331 ! 82ec31140414052405550129017e0129063e0400051a0139010901390530018f0208818f ! 4604460172020801724500810506810605 ! 010601051000012e81082e012e053e012781082701270529823c083c023c0555053a0548 ! 05240562051d05310423052a051881091b031b04af8209af000900051b05378109180318 ! 054081099f039f052381096a036a05ea055a051d058b065205321d000534053a05690553 ! 052205df0553055f063a0400052a049f0109041f043181ec140414052405550129817e29 ! 0129063e0400051a013981093901390530028f81088f818f460446027281087201724500 ! 810506810605 ! 010601051000022e81082e812e3e043e05270529053c0555053a054805240562051d0531 ! 0423052a0518051b06af0a00051b053705180540059f0523056a05ea055a051d058b0652 ! 05321d000534053a05690553052205df0553055f063a0400052a059f051f053105140524 ! 05550529063e0400051a0139817e3901390530828f088f028f0546067245008105068106 ! 05 ! 010601051000022e81082e812e3e043e0327820827290429033c82083c550455043a8108 ! 48044805240562051d0531822309230123052a01188109180118051b01af8109af02af0a ! 00051b0237810937813718041801408109400140059f0523056a05ea055a051d058b0652 ! 05321d000534053a05690553052205df0553045f81c83a053a0400052a829f089f029f05 ! 1f0531051405240555042981093e053e0400051a0139817e3901390530828f088f028f04 ! 4681257205724500810506810605 ! 010601051000022e81082e812e3e043e0327820827290429033c82083c550455033a8208 ! 3a480448042401080462051d053181230981092381232a042a011801090118051b01af01 ! 0902af0a00051b023701098137180418014001090140059f8123098109230123056a05ea ! 055a051d058b065205321d000534043a019b04690553817a22032205df0553035f82c85f ! 3a053a0400052a819f0881089f019f051f053105140524055503298209293e053e040005 ! 1a0139817e3901390530018f81088f018f054681257204724500810506810605 ! 010601051000022e81082e812e3e043e02278108278127290429023c81083c813c550455 ! 033a82083a480448042481086204620108031d0531812309010981232a042a0118020981 ! 181b041b01af020901af0a00051b0137020981371804180140020981409f049f81230902 ! 0981236a046a81ea098109ea01ea045a057e811d8b048b065205321d000534043a819b69 ! 04690453017a042205df01850353035f82c85f3a053a0400052a819f080108019f041f03 ! 080231051405248255a155025503298209293e053e0400051a0239817e39813930043001 ! 8f81088f018f05460125047204b205c90544057b050e05a406951b00810506810605 ! 010601051000023b81083b813b2e042e021581081581153e043e02278108278127290429 ! 033c82083c76047603368208366f046f0308015a0597812a090209051701180309071803 ! 09811800090005af011b03090517012a03090523816a0903090557816609020981662b04 ! 2b047e815b8b028b059902b405351d0005760353829b536504650442817a240424042201 ! 8504b0035682c8563f053f0400055e8118080208811831033103080210058b056201a103 ! 24033f82093f1505150400058f0246817e468146bc04bc01c38108c301c3059082502550 ! 025005b203c902250444037b0208010e01c7810ea404a406951b00810506810605 ! 010601051000023b81083b813b2e042e021581081581153e043e02278108278127290429 ! 023c81083c813c76047603368208366f046f815a0881085a015a0597852a092a092a1704 ! 170118830918091807188309180918811800090005af021b81091b811b170417012a8409 ! 2a092a230423816a090209816a570457016601090166052b815b7e017e015b048b039903 ! b405351d0005760353829b536504650342827a422404240322828522b004b0025681c856 ! 81563f053f0400055e841808180818811831043102080210058b8262a1628162a181a124 ! 0424023f81093f813f1505150400058f0246817e468146bc04bc02c38108c381c3900490 ! 0150812550015005b203c904250244037b0408010e02c702a481c79505951b0081050681 ! 0605 ! 010601051000023b81083b813b2e042e021581081581153e043e02278108278127290429 ! 023c81083c813c76047601088236083681366f046f845a085a085a815a970497022a8209 ! 2a17041703188109180918810918811800090005af031b82091b170417032a82092a2304 ! 23816a0984096a096a570457016684096609662b042b815b7e027e815b8b048b059981b4 ! 3504351d000576019b82539b5381536504650242817a4281422404240385012205b00256 ! 81c85681563f053f0400055e0218810818811831043103080110058b03a101620524023f ! 81093f813f1505150400058f0246817e468146bc04bc02c38108c381c390049002508125 ! 508150b204b2072503440708030e01a404c705951b00810506810605 ! 0106010510000508052e040881153e043e04088127290429813c080108013c0576030801 ! 36056f035a82085a970497022a82092a17041703188109180918810918811800090005af ! 031b82091b170417032a82092a230423046a8109570457046681092b042b015b817e5b81 ! 5b7e817e8b038b81b4998199b401b4029903351d000576039b01530565037a0142052402 ! 85022205b08156c801c80156063f0400055e0218810818811831043103108208108b048b ! 02a102620524813f090109013f06150400058f81467e037e05bc02c30208059002500325 ! 01b2022503c9012502440208037b0108050e03a403c704951b00810506810605 ! 010601051000813b080308052e811508020881153e043e81270802088127290429813c08 ! 0208813c760476040881366f046f045a8108970497032a81091704170418810918091882 ! 091800090005af031b82091b170417042a8109230423046a8109570457056681092b032b ! 055b818b7e817e8b018b06b4013581993501351d000576049b8153650465037a01420424 ! 0385022205b08156c802c881563f053f0400055e031882081831043104100108038b04a1 ! 01620524813f090209813f1505150400058f0146037e05bc81c308030805900250032504 ! b205c90544057b050e03a404c703951b00810506810605 ! 010601051000013b0208813b2e042e81150801080115053e812708010801270529813c08 ! 0108013c057603080136056f055a8108970397032a810917041704188109180918820918 ! 1f041f040005af031b82091b170417042a8109230423056a81095703570566822b092b02 ! 2b055b018b817e8b018b06b405351d000576039b01530565037a014204240385022205b0 ! 8156c801c80156063f0400055e031882081831043105100108038b05620524813f090109 ! 013f06150400058f0246027e05bc01c3030805900150042504b205c90544057b050e05a4 ! 06951b00810506810605 ! 01060105100001330208083301080733013b0108073b812e0881082e012e051501080329 ! 053a052305180337810937043704188109170417044b81091f051f0400055e0437810940 ! 0440041f810941044105570109034c0513051d05350563062105751d000534019b045504 ! 00017a0369055f066904008168c881c86808680400056c03c58108c581c5000300052b05 ! b406280400811a0981091a011a0630040005bc02c3017e81c358045802600208056d0473 ! 012504a60bbb05d805a6058806901b00810506810605 ! 010601051000023381083308338108330733013b81083b073b822e082e022e0515052905 ! 3a052305180437810937033705188109170317054b81091f041f0400055e043781094004 ! 40051f81094103410557054c0513051d05350563062105751d000534065504000569055f ! 066904008268c86809680400056c04c58208c5000300052b05b406280400821a091a021a ! 0630040005bc03c3827ec358045803600108056d057305a60bbb05d805a6058806901b00 ! 810506810605 ! 010601051000023381083309338108330633013b81083b073b012e81082e012e05158229 ! 08290229053a052305180a3705180517054b061f0400055e05370540051f05410557054c ! 0513051d05350563062105751d000534065504000569055f066904000c680400056c06c5 ! 0400052b05b406280400051a0630040005bc82c3a1c302c305580560056d057305a60bbb ! 05d805a682880988028806901b00810506810605 ! 010601051000023381083309338108330633013b81083b073b012e81082e012e05158229 ! 08290229053a052305180237810937053702188109188118170417014b81094b014b061f ! 0400055e013781093701370540051f05410557054c0513051d05350563062105751d0005 ! 3404558225550003000569055f066904008268f56809680400056c03c58185c581c50003 ! 00052b05b406280400021a81b81a811a300530040005bc82c3a1c302c305588125600360 ! 056d057305a60bbb05d805a682880988028806901b00810506810605 ! 010601051000023381083309338108330633013b81083b073b012e81082e012e05150129 ! 8108290129053a04238108180418013702090537021801098118170417014b0109014b06 ! 1f0400055e0137010901370540811f0981091f011f05410557054c0513051d0535056306 ! 2105751d000534035581255581550003000569055f066904008268f56809680400056c02 ! c5018501c50400052b05b406280400021a81b81a811a300530040005bc01c381a1c301c3 ! 055801250360046d81f073047305a60bbb05d805a60188810988018806901b0081050681 ! 0605 ! 010601051000023381083309338108330633023b81083b063b022e81082e812e15041501 ! 298108290129053a022302080518013702090537011802098118170417014b0209814b1f ! 051f0400055e013702098137400440811f090209811f4104418157098109570157044c05 ! 0981131d031d05098135630463030902210375058c012105201100053403558125558155 ! 0003000569055f06690400016881f56808680400056c02c5028581c5000300052b05b406 ! 280400021a81b81a811a300530040005bc01c381a1c301c30558826025600260056d81f0 ! 73037305a601bb058503bb05d805a60188810988018806901b00810506810605 ! 0106010510000239810839063902118108118111300430028f81088f818fd604d6024681 ! 08468146720472012c81082c012c05c081f3080308056e81fd09030904a501af0309051b ! 01370309061b0400051b01400309054b8141090309053181750902098175120412040981 ! 1c140414040981351404140309022b0412048c0121052011000555033481253481340009 ! 0006110a0001f281f5f201f206580400057c01ab038581ab00090006120a00023981b839 ! 8139cd05cd0400052c016481a16401640558017d81257d017d054382c2f0c202c205a602 ! d1048503f103c90299048801b98109b901b906681b00810506810605 ! 0106010510000239810839063902118108118111300430028f81088f818fd604d6024681 ! 08468146720472022c81082c812cc004c002f30208056e02fd8209fda504a502af8109af ! 81af1b041b013784093709371b051b0400051b014084094009404b044b81410902098141 ! 3104310175010901750512811c090109011c0514813509010901350514812b090109022b ! 0512028c0221052011000555023481253401340a0006110a0002f281f5f281f258055804 ! 00057c03ab8185ab81ab00090006120a00023981b8398139cd05cd0400052c026481a164 ! 8164580458017d81257d017d054301c281f0c201c205a602d1038504f103c90499028802 ! b98109b981b96805681b00810506810605 ! 0106010510000239810839063902118108118111300430028f81088f818fd604d6024681 ! 08468146720472022c81082c812cc004c002f30208056e02fd8209fda504a503af8209af ! 1b041b03378209371b051b0400051b03408209404b044b81410984094109413104310175 ! 8409750975120412811c090209811c14041481350902098135140414812b090209012b05 ! 12038c0121052011000555023481253401340a0006110a0002f201f581f2580558040005 ! 7c02ab8185ab01ab0a0006120a00023981b8398139cd05cd0400052c026481a164816458 ! 0458027d0225054302c202f005a602d1038504f10799038802b98109b981b96805681b00 ! 810506810605 ! 0106010510000508053905080530818f08030805d681460803080572022c020805c001f3 ! 8108f301f3056e02fd8209fda504a503af8209af1b041b03378209371b051b0400051b03 ! 408209404b044b0441810931043104758109120412011c81091c811c0981091403140135 ! 8109358135098109140314042b82092b12041282218c2181218c818c2004201100055581 ! 3425012502340a0006110a0081f2f502f581f25805580400057c02ab8185ab01ab0a0006 ! 120a0005b806cd0400052c026402a10558027d0225054302c202f005a681d1858185d182 ! d185f101f1029903c90199058802b9020906681b00810506810605 ! 0106010510008139080308053981110803080530018f030805d6014603080572812c0803 ! 0805c001f38108f301f3056e02fd8209fda504a503af8209af1b041b043781091b051b04 ! 00051b044081094b044b0441810931043105758109120312051c81140981091401140535 ! 8114098109140114052b010904120521018c032011000555813425022501340a0006110a ! 0001f202f581f25805580400057c02ab8185ab01ab0a0006120a008139b803b806cd0400 ! 052c8164a103a10558817d250325054301c204f003a6018504d105f105c9058881b90903 ! 0906681b00810506810605 ! 010601051000013902080639011102088111300430028f020805d6024602080572012c03 ! 0805c082f308f302f3056e02fd8209fda504a503af8209af1b041b043781091b051b0400 ! 051b044081094b044b054181093103310575821209120212051c01148109140114053501 ! 148109140114062b01090312052182208c2002200592066504000555813425012502340a ! 0006110a0002f201f581f25805580400057c02ab8185ab01ab0a0006120a00013902b881 ! 39cd05cd0400052c016403a10558027d0225054304c201f002a6018505d105f105c90588 ! 01b9030906681b00810506810605 ! 010601051000018f0208818fd604d601460208814672047202fa010881fa2c042c02b901 ! 0881b97d047d02e602080582010803bf059c02868209866c046c04708109e504e504ad81 ! 09a505a504000517041f81094104410531010903750510052b051d0b14051d062b0b2005 ! 120592066504000554814a2581254a024a1c00039082f590ac05ac040005d401c18185c1 ! 02c11c00023b81b83b813b640564040005cd026802a10530042e81253c043c054805a305 ! 1d052d0577052202560209063e1b00810506810605 ! 010601051000028f81088f818fd604d60246810846814672047203fa8208fa2c042c03b9 ! 8208b97d047d03e6010805828108bf03bf059c02868209866c046c04708109e504e505ad ! 8109a504a504000517051f8109410341053105750510052b051d0b14051d062b0b200512 ! 0592066504000554824a254a034a1c00059006ac040005d401c18185c102c11c00053b06 ! 64040005cd036801a10530052e053c054805a3051d052d0577052203560109063e1b0081 ! 0506810605 ! 010601051000828f088f028f05d682460846024605728108fa03fa052c05b9057d05e605 ! 8205bf059c0486056c057005e505ad06a504000517051f0541053105750510052b051d0b ! 14051d062b0b2005120592066504000554064a1c00059006ac040005d401c18185c102c1 ! 1c00053b0664040005cd05680530052e053c054805a3051d052d057705220556063e1b00 ! 810506810605 ! 010601051000828f088f028f05d68246084602460572010803fa042c8108b904b9057d05 ! e6058205bf059c0486056c04708109e504e503ad8209ada505a504000517051f05410531 ! 05750510052b051d0b14051d062b0b2005120592066504000554064a1c00059006ac0400 ! 05d406c11c00053b0664040005cd0368827a68300430042e81253c043c054805a3051d05 ! 2d057705220556063e1b00810506810605 ! 010601051000018f81088f018f05d601468108460146057282fa08fa02fa052c8108b903 ! b9037d82087de604e6058205bf059c048681086c036c0370010905e502ad020906a50400 ! 0517811f0981091f011f0541813109810931013105750510052b051d0b14051d062b0b20 ! 05120592066504000554064a1c00059006ac040005d406c11c00053b0664040005cd0368 ! 827a68300430032e82252e3c043c054881a1a303a3051d052d057705220556063e1b0081 ! 0506810605 ! 010601051000018f81088f018f05d601468108460146057201fa8108fa01fa052c010803 ! b9047d010804e6058205bf059c02860208046c0370020904e502ad020906a50400051781 ! 1f090209811f4104418131090209813175047503090110042b0509811d14031405098114 ! 1d041d0309022b042003080220031205c70192066504df817e540354064a1c00059006ac ! 040005d406c11c00053b0664040005cd0268817a688168300430032e82252e3c043c0448 ! 01a104a3051d052d05770522055601ec043e1b00810506810605 ! 01060105100001bc8108bc01bc072c81082c012c05640191810891019105608243084302 ! 430550010803cc057f037b02080483819e080308047c028a0309046c01c5040905700400 ! 054181e30903090587814e090209814e1004100309012b052d0409812114041404098121 ! 2d042d03090220041303080212041304c7013505b304df827edf0075000539022e817a2e ! 812e29042903568225564a044a044281a132013205a10892012503c605c4042201ec05d9 ! 1b00810506810605 ! 01060105100002bc8108bc81bc2c072c81082c812c640464029181089181916004600143 ! 8108430143055001cc8108cc01cc057f037b04080283029e0208047c048a81096c046c03 ! c58209c57005700400054181e309020981e3870487814e090209814e100410812b090109 ! 012b052d81210901090121051481210901090121052d8120090109022005130208021205 ! 1302c7023505b303df817edf81df0075000539022e817a2e812e29042902568125568156 ! 4a044a034282a14232023203a10692052502c605c4032282ec22d905d91b008105068106 ! 05 ! 01060105100002bc8108bc81bc2c072c81082c812c640464029181089181916004600243 ! 810843814350045002cc0308047f07080383029e0208047c038a82098a6c046c03c58209 ! c57005700400054181e3098409e309e3870487034e82094e100410812b090209812b2d04 ! 2d81210902098121140414812109020981212d042d812009020901200513030801120513 ! 03c7013505b384df7edf7edf01df76000539022e817a2e812e290429025681255681564a ! 044a024281a142814232033205a10592022581c625022504c403ec012206d91b00810506 ! 810605 ! 01060105100002bc0208082c0208056403910108056002430308045003cc0208017f0208 ! 037b01080583019e81089e819e7c047c038a82098a6c046c03c58209c570057004000541 ! 04e38109870487044e8109100410042b81092d042d012181092181210981091403140121 ! 81092181210981092d032d042082092013041303128208121304138235c7358135c781c7 ! b304b381df7e817edf02df76000539047a812e29042981562501250156054a03a1014205 ! 3201a1029202a1039282c625c602c681c4258125c401c402ec022206d91b008105068106 ! 05 ! 01060105100081bc080308062c0408056402910208056002430308045003cc0308037f05 ! 7b0583019e81089e819e7c047c038a82098a6c046c03c58209c57005700400054104e381 ! 09870487054e8109100310052b0109032d052181140981091401140521812d0981092d01 ! 2d052001090413041201080413053501c703b3037e02df76000539812e7a027a812e2904 ! 29815625022581564a044a03a101420532079281a192019205c604c403ec022206d91b00 ! 810506810605 ! 0106010512000308052c01580308057d01430308056d01ac0408048e0282040803b5050b ! 05e482de08de01de05b60380820980a004a0038a82098a6c056c0a0005ed81092f032f05 ! 100109032b052d812109810921012107148109140114051d011c81091c011c0620010903 ! 12051001080313055b824fc74f024f017e04617600053b81157a017a0115055c813f2501 ! 25013f055503a101480547059805f60552043d03ec027806221b00810506810605 ! 0106010513000208052c02580208057d03430108056d04ac0108048e058205b5050b05e4 ! 010802de05b602808109808180a004a0038a82098a6c056c0a0005ed0109032f0510822b ! 092b022b052d05210b14051d051c0620051205100513055b054f06617600053b0115017a ! 0115055c813f2581253f013f055501a103480547059805f60552053d057806221b008105 ! 06810605 ! 0106010514000108052c03580108057d044381086d046d05ac058e058205b5050b05e481 ! 08de02de05b602808109808180a004a0038a82098a6c056c0a0005ed052f0510052b052d ! 05210b14051d051c0620051205100513055b054f06617600053b0115817a150115055c82 ! 3f253f023f055505480547059805f60552053d057806221b00810506810605 ! 010601051600052c0558057d0543056d05ac058e058205b5050b05e404de05b602808109 ! 808180a004a0058a066c0a0005ed052f0510052b052d05210b14051d051c062005120510 ! 0513055b054f06617600053b021581091581155c045c053f055505480547059805f60552 ! 053d057806221b00810506810605 ! 010601051600052c8109580358047d8109430443056d05ac058e058205b5050b05e404de ! 05b6058005a0048a0109056c0a0005ed052f0510052b052d05210b14051d051c06200512 ! 05100513055b054f06617600053b021581091581155c045c033f82083f55045503488225 ! 48470447059805f60552053d057806221b00810506810605 ! 010601051600052c01090358057d8109430343036d82086dac04ac058e058205b5050b05 ! e404de05b60580010903a0038a0209056c0a0081ed098109ed01ed052f0510052b052d05 ! 210b14051d051c0620051205100513055b054f056181ec007500053b021581091581155c ! 045c033f82083f5504550348822548470447059805f60552053d057806221b0081050681 ! 0605 ! 010601051600055882c009c002c0056d010903ac04790108048e03ce010805ba05dc0567 ! 054401d1050802bd02cb0409039c02c1030905860a00814e090209814e1003100509811c ! 2d032d0509812d210321050905140509812d200420030902130410030902100312050901 ! 5b05e2046b01ec76000533023b81093b813b2e042e02158108158115270427025c81255c ! 015c4500810506810605 ! 010601051600055801c08109c001c0056d82ac09ac02ac05790108038e04ce010804ba05 ! dc03670108054402d1040802bd03cb0309039c01c1040905860a00814e090209814e1004 ! 100409811c2d042d0409812d210421040906140409812d20042003090213041003090210 ! 04120409015b05e2046b82ec6b0075000533023b81093b813b2e042e0215810815811527 ! 0427025c81255c015c4500810506810605 ! 010601051600055801c08109c001c0056d01ac8109ac01ac0579018e81088e018e05ce81 ! ba088108ba82ba08dc04dc03670308034402d1030803bd03cb0309039c03c1020905860a ! 00814e090209814e100410811c090109011c062d0209012d052181140901090714812d09 ! 0109012d05208113090109021305100209021005120209025b05e2036b81ec6b816b0075 ! 000533023b81093b813b2e042e02158108158115270427025c81255c015c450081050681 ! 0605 ! 010601051600055802c00209056d02ac8109ac81ac790479028e030804ce02ba030801dc ! 0b08024402d1030803bd03cb8209cb9c049c03c18209c18605860a00034e82094e100410 ! 811c090209811c2d052d0309812d21042181140902090614812d090209812d2004208113 ! 090209011305100309011005120309015b05e2026b81ec6b016b76000533023b81093b81 ! 3b2e042e02158108158115270427025c81255c015c4500810506810605 ! 010601051600055802c00209056d02ac03090479038e020804ce02ba030804dc03670308 ! 034481d1088108d182d108bd03bd02cb8109cb81cb9c049c03c18209c18605860a00044e ! 8109100410011c81091c811c0981092d052d81092d812d09810921032101148109148114 ! 098109140314012d81092d812d0981092003200413820913100810820910120412825b09 ! 5b815b098109e204e203ec026b760005330509052e040881152704270425015c45008105 ! 06810605 ! 010601051600055881c0090309056d02ac03090479038e030803ce02ba040803dc036701 ! 080444010803d105bd01cb8109cb01cb059c02c18109c181c18605860a00054e81091003 ! 10051c812d0981092d072d8121098109210121061401090214052d812009810920012005 ! 130109091001090412055b010903e203ec026b76000533813b090309052e811508020881 ! 15270427815c250225015c4500810506810605 ! 010601051c0002be0209057301d5040904c20273040803d0057f05dc057403d8010804e1 ! 055d818d0981098d018d059d02b68109b681b69c059c10000109031c0535011c81091c01 ! 1c052d01148109140114055b01218109210121051c011381091301130612010909100109 ! 0312053582a309a302a303ec02497600071a0209071a0208071a81392501250239450081 ! 0506810605 ! 010601051c0004be810973047304d5010904c2057305d0057f05dc057405d804e1055d82 ! 8d098d028d059d02b68109b681b69c059c1000821c091c021c0535051c052d0514055b05 ! 21051c051306120b100512053505a301ec04497600071a0209081a0108071a0139012502 ! 394500810506810605 ! 010601051c0005be057305d505c2057305d0057f05dc057405d804e1055d81098d038d05 ! 9d01b68109b601b6069c1000051c0535051c052d0514055b0521051c051306120b100512 ! 053505a306497600081a81091a081a81081a071a013981253902394500810506810605 ! 010601051c0005be057305d505c2057305d0057f05dc057405d804e1055d058d059d01b6 ! 8109b601b6069c1000051c0535051c052d0514055b0521051c051306120b100512053505 ! a306497600081a81091a091a81081a061a023981083901394500810506810605 ! 010601051c0005be057305d505c2057305d0057f05dc057405d804e1055d058d059d05b6 ! 069c1000051c0535051c052d0514055b0521051c051306120b100512053505a306497600 ! 081a81091a091a81081a061a023981083901394500810506810605 ! 010601051c0005be04738109d504d505c2057305d0057f05dc057405d804e1055d058d05 ! 9d05b6069c1000051c0535051c052d0514055b0521051c051306120b100512053505a306 ! 497600081a81091a091a81081a061a023981083901394500810506810605 ! 0106010528008109790379038e01090582057f05e805b2057405ca04ee05e90383040902 ! 8d058101092100042b0508812d350235050801a7051d03080120051203090210055a0109 ! 036603100599015b06457c00053902118109110911810811091181081101114500810506 ! 810605 ! 010601052800827909790279048e01090482027f0109817fe804e805b2057405ca03ee02 ! 0803e904830309028d028104092100052b0408812d350335040801a7051d030801200512 ! 03090210055a0309016604100499015b06457c0005390211810911091181081109118108 ! 1101114500810506810605 ! 01060105280001798109790179058e8182098109828282097f037f020902e88109b201b2 ! 02080374010805ca03ee040801e904830209038d038102092200052b812d080108012d05 ! 35030801a7051d81200801080120051281100901090210055a8166098109660166051002 ! 99025b06457c00053902118109110911810811091181081101114500810506810605 ! 01060105280002790209058e02820309047f01e8040904b2070803ca070802e903830309 ! 038d038102092200052b812d080208812d35043582a708a781a70881081d041d81200802 ! 08812012041281100902090110055a84660966096681661004100399015b06457c000539 ! 02118109110911810811091181081101114500810506810605 ! 01060105280002790209058e02820309047f03e8030903b20374070803ee010804e90283 ! 81098381838d048d028181098101812200052b012d81082d812d08810835033505a70108 ! 031d0420810812041204108209105a045a0366820966100410825b995b815b9981994505 ! 457c000539050905110508051105088111004400810506810605 ! 01060105280001790409048e02820409037f03e8040902b20374020804ca04ee05e98183 ! 098109830183058d018181098102812200052b052d813508810835013505a7011d010801 ! 1d05200108031205100109045a04668109100410055b019904457c000539811109030906 ! 110408061104088111004400810506810605 ! 010601052d00010904cc05e805b5057f05a40567055904aa05da0109035d06de8109002c ! 000521019281089201920563021381081381131005100108021006660109034c054e8109 ! 2f032f06128199007f008100110411013002090830020806300111020801114500810506 ! 810605 ! 010601052e0005cc05e805b5057f05a40567055904aa04da81095d045d05de8109002d00 ! 05210592056305130b100666054c054e052f06127f000200051101300209083002080630 ! 0111020801114500810506810605 ! 010601052e0005cc05e805b5057f05a40567055904aa05da055d06de2e00052105920563 ! 05130b100666054c054e052f06127f000200051102308109300930810830063002118108 ! 1101114500810506810605 ! 010601052e0005cc05e805b5057f05a40567055904aa05da055d06de2e00052105920563 ! 05130b100666054c054e052f06127f000200051102308109300930810930063002118109 ! 1101114500810506810605 ! 010601052e0005cc05e805b5057f05a40567055904aa05da055d06de2e00052105920563 ! 05130b100666054c054e052f06127f000200051102308109300930810930063002118109 ! 1101114500810506810605 ! 010601052e0005cc05e805b5057f05a40567055904aa05da055d06de2e00052105920563 ! 05130b100666054c01c8034e052f06127f00020005110230810930093081093006300211 ! 81091101114500810506810605 ! 01060105400005b50594050e050f047b05c902b705094400054c030801120510814c0881 ! 084c024c052f03c80187051f7f0009000811810911091181091109118109110111450081 ! 0506810605 ! 010601053d0001098100b504b50594030e0108050f037b020803c903b704094400054c03 ! 0801120510814c080208014c052f04c881871f041f7f0009000811810911091181091109 ! 1181091101114500810506810605 ! 010601053f00020902b58109940494030e0308030f037b040801c903b703094500054c81 ! 1208010801120510014c0108024c052f03c80187051f7f00090008118109110911810911 ! 091181091101114500810506810605 ! 01060105400001b5040901940b08020f070802c903b703094500054c8112080208811210 ! 0410014c83084c084c814c2f042f01c88287c88781871f041f7f00090008118109110911 ! 810911091181091101114500810506810605 ! 01060105400003b503090394030e0308810f080108037b010804c901b7010901b7810900 ! 4500054c04128108100410044c82084c2f042f038782c8871f041f7f0009000511050905 ! 110509051105098111004400810506810605 ! 01060105400003b504090294030e0108050f047b05c9010904b74600054c051201080310 ! 054c81082f042f038782c8871f041f7f0009000611040906110409061104098111004400 ! 810506810605 ! 0106010562000109590001080900810800080081c8007f000e0005290115020981153304 ! 33011a0209061a0139020901394500810506810605 ! 010601057f00550001c87f000e000529011502098115330433011a0209061a0139020901 ! 394500810506810605 ! 010601057f007f006600052902158109158115330433021a81091a061a02398109390139 ! 4500810506810605 ! 010601057f007f0066000529051505330b1a023981093901394500810506810605 ! 010601050f008199007f00430081a1007f000e00052905150533031a81091a051a023981 ! 093901394500810506810605 ! 0106010510008199007f003600817a00080001a17f000f000529041501090433031a8109 ! 1a051a023981093901394500810506810605 ! 01060105100001990350058805eb0b0e0b67110e050b050d0a0f050d2f0b0b0d050f057b ! 05e4058101c7039e03f3027a05a8018003a105a2028601dd8186a904a90526050a111e11 ! 0a0b0c2f0a051e050a05960565044a8109380438021581091581153b043b023381093301 ! 334500810506810605 ! 010601051000825099500250058805eb090e019b09670109090e0109050e030b0108050d ! 030f0108040f040d0109090b0109090b0109090b0109090b0108090d0108040f047b027a ! 03e4028104c7039e01f3047a05a8028002a105a28186dd02dd8186a904a98226dd260226 ! 050a821e251e091e81081e021e060a81080a080a820c080c080c820a080a090a81080a09 ! 0a81090a090a81090a080a821e091e021e050a05960565034a82094a3804380215810915 ! 81153b043b023381093301334500810506810605 ! 01060105100001508199500150028802f503eb01f5090e039b07670309070e0309030e03 ! 0b0308030d030f0308020f040d0309070b0309070b0309070b0309070b0308070d030802 ! 0f047b047a01e4038102c7049e03f3027a05a8038001a105a2038601dd04a902dd032604 ! 0a0225081e0208031e040a0208080a0208080c0208080a0208080a0209080a0209080a02 ! 09031e050a8296099602968165098109650165034a82094a380438021581091581153b04 ! 3b023381093301334500810506810605 ! 0106010510000250819950815088048807f5810e9b0a9b170917082f091708010f817b7a ! 067a02e4038102c7049e03f3027a05a8028081a1808180a204a2028681dd868186a901a9 ! 0bdd0b253b082309010a0209819609020904650109824a094a814a380438021581091581 ! 153b043b023381093301334500810506810605 ! 01060105100002500399048803eb04f5060e039b07670309070e0309030e030b0308030d ! 030f0308020f040d0309070b0309070b0309070b0309070b0308070d0308810f7a017a03 ! 7b017a04e4028181c78181819e049e02f3817af301f305a8028081a1808180a204a20286 ! 81dd868186a903a902dd0326040a0225081e0208031e040a0208080a0208080c0208080a ! 0208080a0209080a0209080a0209031e020a0509029605650309014a0538040981153b04 ! 3b05098133004400810506810605 ! 01060105100002500399048803eb02f5080e019b09670109090e0109050e030b0108050d ! 030f0108040f040d0109090b0109090b0109090b0109090b0108090d0108040f057b05e4 ! 018181c7810181059e02f3817af301f305a8018081a180018005a2028681dd868186a904 ! a98226dd260226050a821e251e091e81081e021e060a81080a080a820c080c080c820a08 ! 0a090a81080a090a81090a090a81090a080a821e091e021e050a0109039605650409814a ! 380438811509020981153b043b81330903098133004400810506810605 ! 010601051000016d049904ba0574050d050b1d0e050b050d0a0f050d2f0b110d050f0544 ! 82aec7ae02ae059301a2817aa202a2057c018681a1860186057001a781dda701a705d705 ! 5105260b1e110a110c2f0a051e050a051605320309016f0548813409010901340527012e ! 0209012e4500810506810605 ! 010601051000046d019904ba0574050d050b1d0e050b050d0a0f050d2f0b110d050f0544 ! 81c7ae03ae059381a27a817aa202a2057c8286a1860286057001a781dda701a705d70551 ! 05260b1e110a110c2f0a051e050a051605320109036f05480134010901340527012e0209 ! 012e4500810506810605 ! 010601051000056d05ba0574050d050b1d0e050b050d0a0f050d2f0b110d050f054405ae ! 059382a27aa203a2057c01a10386057005a705d7055105260b1e110a110c2f0a051e050a ! 05160532056f0548013481093401340527022e81092e012e4500810506810605 ! 010601051000056d05ba0574050d050b1d0e050b050d0a0f050d2f0b110d050f054405ae ! 059306a2057c81a1860386057005a705d7055105260b1e110a110c2f0a051e050a051605 ! 32056f054805340527062e4500810506810605 ! 010601051000056d05ba0574050d050b1d0e050b050d0a0f050d2f0b110d050f054405ae ! 059304a20125057c01868108860186057005a705d7055105260b1e110a110c2f0a051e05 ! 0a05160532056f054805340527032e819b2e812e004400810506810605 ! 010601050f0081856d046d05ba0574050d050b1d0e050b050d0a0f050d2f0b110d050f05 ! 4405ae059303a20225057c018601080186057005a705d7055105260b1e110a110c2f0a05 ! 1e050a05160532056f05480534817e270327032e819b2e812e004400810506810605 ! 0106010510008185cc03cc05dc050b050f050d050b0b0e110b050d0a0f050d2f0b050d11 ! 0b05ca05bf05cb027c0325056e81370801080137052b051905c405450519050a051e110a ! 170c350a05190551053205b30461017e04560227819b2701274500810506810605 ! 01060105100082cc85cc02cc05dc030b0125050f030d0108050b030e0109050e030b0109 ! 090b0108050d030f0108040f040d0108090b0109090b0109090b0109090b0109040d040b ! 0109090b017e04ca04bf04c701cb017c0425056e813708020881372b042b8219f0190219 ! 05c405450519820a250a020a051e820a080a090a81080a020a060c81090c090c81090c02 ! 0c060a81090a090a81090a090a81090a090a81090a080a8219091902190551053201b381 ! 09b301b30461817e5604560227819b2701274500810506810605 ! 01060105100001cc8185cc01cc05dc030b0325030f030d0308030b030e0309030e030b03 ! 09070b0308030d030f0308020f040d0308070b0309070b0309070b0309070b0309020d04 ! 0b0309070b037e02ca04bf03c702cb037c0225056e01378108370137042b02f0031905c4 ! 8245254502458119258125198119250125030a041e0208080a0208030a040c0209080c02 ! 09030c040a0209080a0209080a0209080a0209080a02090319055101090232020903b303 ! 61827e615604560227819b2701274500810506810605 ! 01060105100002cc028502dc0b250b08170923083b090b7e01ca02bf04c703cb037c8125 ! 7c817c6e046e023781083781372b012b0bf001c40225814525022501190b251708530901 ! 5105098132b304b30261817e6181615604560227819b2701274500810506810605 ! 01060105100002cc028505dc030b0325030f030d0308030b030e0309030e030b0309070b ! 0308030d030f0308020f040d0308070b0309070b0309070b0309070b0309020d040b0309 ! 070b037e02ca02c702bf81c7cb03cb037c81257c817c6e046e023781083781372b032b02 ! f0031902c40525024504190225030a041e0208080a0208030a040c0209080c0209030c04 ! 0a0209080a0209080a0209080a0209080a0209031903510309033205b3037e0161055604 ! 9b01274500810506810605 ! 01060105100001cc048504dc030b0125050f030d0108050b030e0109050e030b0109090b ! 0108050d030f0108040f040d0108090b0109090b0109090b0109090b0109040d040b0109 ! 090b017e02ca01c705bf05cb027c81257c017c056e023781083781372b042b8219f01902 ! 1905c4012503450519820a250a020a051e820a080a090a81080a020a060c81090c090c81 ! 090c020c060a81090a090a81090a090a81090a090a81090a080a82190919021902510509 ! 023205b3037e0161055681279b029b01274500810506810605 ! 01060105100004b201850474050f0559050f230b160d410b050e050d05aa055d02808125 ! 800180051b02138108138113c604c6051605450551053d050c170a170c2f0a050c052605 ! 1605450578037e014905b081569b019b02564500810506810605 ! 01060105100005b20574050f0559050f230b160d410b050e050d05aa055d028081258001 ! 80051b0313820813c604c6051605450551053d050c170a170c2f0a050c05260516054505 ! 78017e034905b00156019b02564500810506810605 ! 01060105100005b20574050f0559050f230b160d410b050e050d05aa055d018081258002 ! 80051b0313820813c604c6051605450551053d050c170a170c2f0a050c05260516054505 ! 78054905b00156819b5602564500810506810605 ! 01060105100005b20574050f0559050f230b160d410b050e050d05aa055d018081258002 ! 80051b051305c6051605450551053d050c170a170c2f0a050c0526051605450578054905 ! b006564500810506810605 ! 01060105100005b20574050f0559050f230b160d410b050e050d05aa055d0680051b0513 ! 05c6051605450551053d050c170a170c2f0a050c0526051605450578054905b006564500 ! 810506810605 ! 01060105100005b20574050f0559050f230b160d410b050e050d05aa055d0680051b0513 ! 05c6051605450551053d050c170a170c2f0a050c0526051605450578054905b006564500 ! 810506810605 ! 010601051000054405ca0b59050f050d170b220d3b0b050e050b05590544068d05120577 ! 050a051605960589053d050c110a230c290a050c0526053d058905510528059a045482b8 ! 54004400810506810605 ! 010601051000034401dd05ca0359018c0559030f0125050d030b0108090b0108050b030d ! 0108090d0108090d0108040d040b0109090b0109090b0109090b0109090b0109040b040e ! 017a040b045901250444018d03fb818d12041201f50377050a051605960589053d820c9b ! 0c020c060a81080a080a820c090c090c81090c090c81090c080c820a090a090a81090a09 ! 0a81090a090a81090a020a050c822609260226053d058905510528019a81259a019a0354 ! 81b8548154004400810506810605 ! 010601051000034403dd03ca0359038c0359030f0325030d030b0308070b0308030b030d ! 0308070d0308070d0308020d040b0309070b0309070b0309070b0309070b0309020b040e ! 037a020b045903250244028d02fb818d12011205f50277050a8216081602168196088108 ! 960196828925890289813d2581253d813d9b019b030c040a0208080a0209080c0209080c ! 0209080c0209080a0209080a0209080a0209030a040c02090326053d8289098902898151 ! 098109510151012502280225039a025401b801544500810506810605 ! 8106050105100006dd01ca0b8c0b253b083b090b7a0b250144038d01fb818d12031202f5 ! 8177f502f5030a02088116080208039602258189250225013d0b9b0b085f09013d020981 ! 890902090351052581289a049a01b88254b85401544500820506050005 ! 03050e0002dd034481ddca04ca0359038c0359030f0325030d030b0308070b0308030b03 ! 0d0308070d0308070d0308020d040b0309070b0309070b0309070b0309070b0309020b04 ! 0e037a020b045903250244028d84fb8dfb8d1204128277f5770277810af581f508040802 ! 16029605250289043d029b030c040a0208080a0209080c0209080c0209080c0209080a02 ! 09080a0209080a0209030a040c02090326023d05090289035103250328059a02b8035445 ! 000305 ! 02068105000f00054405ca0359018c0559030f0125050d030b0108090b0108050b030d01 ! 08090d0108090d0108040d040b0109090b0109090b0109090b0109090b0109040b040e01 ! 7a040b045901250444018d81fb8d028d05120577050a01080316059601250389053d820c ! 9b0c020c060a81080a080a820c090c090c81090c090c81090c080c820a090a090a81090a ! 090a81090a090a81090a020a050c822609260226053d01090389025105250228059a03b8 ! 025445008105060106 ! 010601057f007f007f00040001b84a00810506810605 ! 010601057f007f007f005100810506810605 ! 010601057f007f007f005100810506810605 ! 010601057f007f007f005100810506810605 ! 010601057f007f007f005100810506810605 ! 010601057f007f007f005100810506810605 ! 010601057f007f007f005100810506810605 ! 010601057f007f007f005100810506810605 ! 010601057f007f007f005100810506810605 ! 010601057f007f007f005100810506810605 ! 010601057f007f007f005100810506810605 ! 010601057f007f007f005100810506810605 ! 010601057f007f007f005100810506810605 ! 010601057f007f007f005100810506810605 ! 010601057f007f007f005100810506810605 ! 010601057f007f007f005100810506810605 ! 010601057f007f007f005100810506810605 ! 01067f057f057f05540501060005 ! 010681050610068105067f067f067f062c0681050612060005 ! 130601057f067f067f062c06010513060005 ! 81060513058106057f057f057f052c058106051205 % ! % Compression made this file 8.01% of the uncompressed size. % diff -crN oommf-1.1a2/doc/psfiles/mmgraph-ss.ps oommf/doc/psfiles/mmgraph-ss.ps *** oommf-1.1a2/doc/psfiles/mmgraph-ss.ps Wed Apr 5 00:23:09 2000 --- oommf/doc/psfiles/mmgraph-ss.ps Tue Apr 4 23:21:03 2000 *************** *** 1,7 **** %!PS-Adobe-2.0 EPSF-2.0 ! %%Title: /home/donahue/mag/oommf/doc/giffiles/mmgraph-ss.ps ! %%Creator: XV Version 3.10a Rev: 12/29/94 - by John Bradley ! %%BoundingBox: 0 0 1120 766 %%Pages: 1 %%DocumentFonts: %%EndComments --- 1,7 ---- %!PS-Adobe-2.0 EPSF-2.0 ! %%Title: /home/donahue/mag/oommf/doc/psfiles/mmgraph-ss.ps ! %%Creator: XV Version 3.10a Rev: 12/29/94 (PNG patch 1.2) - by John Bradley ! %%BoundingBox: 0 0 1194 766 %%Pages: 1 %%DocumentFonts: %%EndComments *************** *** 16,22 **** 20 dict begin % define space for color conversions ! /grays 560 string def % space for gray scale line /npixls 0 def /rgbindx 0 def --- 16,22 ---- 20 dict begin % define space for color conversions ! /grays 597 string def % space for gray scale line /npixls 0 def /rgbindx 0 def *************** *** 24,30 **** 0 0 translate % size of image (on paper, in 1/72inch coords) ! 1120.03200 766.00800 scale % define 'colorimage' if it isn't defined % ('colortogray' and 'mergeprocs' come from xwd2ps --- 24,30 ---- 0 0 translate % size of image (on paper, in 1/72inch coords) ! 1193.97600 766.00800 scale % define 'colorimage' if it isn't defined % ('colortogray' and 'mergeprocs' come from xwd2ps *************** *** 82,94 **** % define the colormap ! /cmap 39 string def % load up the colormap currentfile cmap readhexstring ! 000000 0000f0 00f000 2f4f50 5f9ea0 696969 828282 85dee0 b03060 d3d3d3 ! d9d9d9 f00000 ffffff pop pop % lose return values from readhexstring --- 82,94 ---- % define the colormap ! /cmap 42 string def % load up the colormap currentfile cmap readhexstring ! 000000 0000f0 00f000 2f4f50 ffffff 5f9ea0 696969 828282 85dee0 b03060 ! d3d3d3 d9d9d9 f00000 ffffff pop pop % lose return values from readhexstring *************** *** 130,1392 **** } bind def ! 560 383 8 % dimensions of data ! [560 0 0 -383 0 383] % mapping matrix rlecmapimage ! 7f037f034b037f0c630c ! 81030713078103077f077f071c07810307130781030c7f0c620c ! 810307120701037f077f071c070103130701037f0c630c ! 81030781070312038107037f037f031c03810703100381070381030c7f0c620c ! 8103078107037f037f034303010701037f0c630c ! 8103078107038103070f078103077f077f070a078103070f078103070f07810307810703 ! 81030c7f0c620c ! 8103078107038103070e0701037f077f070a0701030f0701030f070103010701037f0c63 ! 0c ! 8103078107038103078107040c04010301077f047f040804010301070d04010301070d04 ! 0103010701037f0c630c ! 8103078107038103078107040c040103010767040400140401000c040300020403000204 ! 030002040300050401005604010301070d04010301070d040103010701037f0c630c ! 8103078107038103078107040c04010301076604010002040100130401000b0401000104 ! 010081040081000481040082000400810004810400820004008100048104008100040204 ! 0200560401030107010408078103048104038103078107040c040103010701037f0c630c ! ! 8103078107038103078107040c04010301074e0482000400010081040001000104820004 ! 000100810400010002040100060401008104008200040002000104010081040081000481 ! 0400820004008100040b0401008104008100048104008100040304010081040081000405 ! 0482000400810004550401030107010481070406048103048104038103078107040c0401 ! 03010701037f0c630c ! 8103078107038103078107040c04010301074e0401000104010001040100810400810004 ! 810400810004810400810004810400810004050406000104010081040001008104008200 ! 040001008104008100040304010003040100010401000104010002040200010401000604 ! 820004008100048104008100045104010301070104810704060481030481040381030781 ! 07040c040103010701037f0c630c ! 81030781070381030781070481040707078103048104038103078107044d040100010401 ! 000104010081040081000481040081000481040081000481040081000481040002008104 ! 000100050401008104008100048104008200040081000481040081000401040200030401 ! 000304040004040100810400030002048100048104008100040104020050040103010701 ! 0481070406048103048104038103078107040304020781030403040103010701037f0c63 ! 0c ! 8103078107038103078107048204070406048103048104038103078107044d0401000104 ! 010001040100810400810004810400810004810400810004810400810004020401008104 ! 008100040204040081040081000481040082000400810004810400810004810400810004 ! 030401000704010004040100810400810004810400830004000401040100040401004f04 ! 010301070104810704060481030481040381030781070403048107048204030403040103 ! 010701037f0c630c ! 8103078107038103078107048204070406048103048104038103078107044d0401000104 ! 010001040100810400810004810400810004810400810004810400810004020401008104 ! 008100040104010001040100810400810004810400820004008100048104008100040104 ! 020001040100080401000404010081040081000481040082000400050001040200500401 ! 030107010481070406048103048104038103078107040304810704820403040304010301 ! 0701037f0c630c ! 81030781070381030781070481040308030104010301074e040100010401000104010081 ! 040081000481040081000481040081000401040100020401008104008100040104010001 ! 040100810400010081040082000400810004810400810004030401008104008100040304 ! 010001040100810400810004810400820004008100048104008100040304010001040100 ! 520401030107010481070406048103048104038103078107040304030304040103010701 ! 037f0c630c ! 8103078107038103078107040c04010301074e0401000104010001040100810400810004 ! 810400810004810400810004020403008304000400810004020402008104000200810400 ! 810004810400810004810400810004060405000104030002040300020403000504010056 ! 0401030107010481070406048103048104038103078107040c040103010701037f0c630c ! ! 8103078107038103078107040c04010301077a0401007f040b0401030107010481070406 ! 048103048104038103078107040c040103010701037f0c630c ! 8103078107038103078107040c04010301077a0401007f040b0401030107010409030104 ! 010301070d040103010701037f0c630c ! 8103078107038103078107040c04010301077a0401007f040b04010301070d0401030107 ! 0d040103010701037f0c630c ! 8103078107038103078107040c04010301077f047f040804010301070d04010301070d04 ! 0103010701037f0c630c ! 8203070301038107030f038107037f037f030a038107030f038107030f0381070301037f ! 0c630c ! 7f037f034b037f0c630c ! 810307010781030c7f0c7f0c400c810307010781030c7f0c620c ! 81030781070381030c7f0c7f0c3f0c8206030781070381030c7f0c620c ! 81030781070381030c810c0a7f0a7f0a3c0a010681030781070381030c7f0c620c ! 81030781070381030c810c0a7f0a7f0a3c0a010681030781070381030c7f0c620c ! 81030781070381030c810c0a7f0a7f0a3c0a010681030781070381030c7f0c620c ! 81030781070381030c810c0a7f0a7f0a3c0a010681030781070381030c7f0c620c ! 81030781070381030c810c0a7f0a7f0a3c0a010681030781070381030c7f0c620c ! 81030781070381030c810c0a7f0a7f0a3c0a010681030781070381030c7f0c620c ! 81030781070381030c810c0a7f0a7f0a3c0a010681030781070381030c7f0c620c ! 81030781070381030c810c0a7f0a7f0a3c0a010681030781070381030c7f0c620c ! 81030781070381030c810c0a7f0a7f0a3c0a010681030781070381030c7f0c620c ! 81030781070381030c810c0a080a0700810a0081000a160a0100030a01000a0a0100090a ! 0100170a0100030a01000a0a0100090a01001a0a03000a0a0100010a0100660a0100020a ! 0100070a01000e0a010681030781070381030c7f0c620c ! 81030781070381030c810c0a080a0100060a0100170a0100030a0100090a0300220a0100 ! 030a0100090a0300240a0100010a0100090a01006a0a0100020a0100070a01000e0a0106 ! 81030781070381030c7f0c620c ! 81030781070381030c810c0a080a0100030a0100810a0081000a810a000200120a010001 ! 0a01000a0a81000a820a000a810a0081000a810a0082000a0081000a810a000200120a01 ! 00010a01000a0a81000a820a000a810a0081000a810a0082000a0081000a810a00020012 ! 0a0100030a0100810a0082000a0081000a810a000200810a0081000a810a000200010a01 ! 00810a0081000a010a0300520a0100020a0100010a0300010a0100810a0082000a008100 ! 0a070a010681030781070381030c7f0c620c ! 81030781070381030c810c0a080a0100030a0100810a0082000a0081000a810a0081000a ! 110a03000a0a0100010a0100810a0081000a810a0082000a0082000a0081000a810a0081 ! 000a100a0100010a0100090a0100010a0100810a0081000a810a0082000a0082000a0081 ! 000a810a0081000a100a0100030a0100810a000100810a0081000a810a0081000a810a00 ! 82000a0081000a810a0082000a000100810a0082000a0081000a810a0081000a500a0100 ! 020a0100810a0081000a810a0082000a0082000a000100810a0081000a060a0106810307 ! 81070381030c080c6505730c ! 81030781070381030c810c0a080a0400810a0082000a0082000a0081000a810a0081000a ! 120a01000b0a0100010a0100010a0300010a0100810a000100150a03000a0a0100010a01 ! 00010a0300010a0100810a000100140a0100030a0100810a0081000a810a0081000a810a ! 0081000a810a0082000a0081000a810a0082000a0081000a810a0082000a000100540a06 ! 00810a0081000a810a0082000a0082000a0081000a810a0081000a060a01068103078107 ! 0381030c080c81050c130c81050c360c81050c130c81050c720c ! 81030781070381030c810c0a080a0100030a0100810a0082000a000400120a0300020a04 ! 00020a0500020a0100020a0100020a0200140a0100030a0400020a0500020a0100020a01 ! 00020a0200120a0100030a0100810a0081000a810a0081000a810a0081000a810a008200 ! 0a0081000a810a0082000a0081000a810a0081000a010a0200520a0100020a0100810a00 ! 0400810a0082000a0081000a810a0081000a060a010681030781070381030c080c81050c ! 120c0105360c0105130c0105730c ! 81030781070381030c810c0a080a0100030a0100810a0082000a0081000a140a0100010a ! 0100080a0100030a0100810a000200010a0100030a0200130a01000a0a0100030a010081 ! 0a000200010a0100030a0200110a0100030a0100810a0081000a810a0081000a810a0081 ! 000a810a0082000a0081000a810a0082000a0081000a810a0081000a020a0200510a0100 ! 020a0100810a0081000a030a0100810a0081000a810a0081000a060a0106810307810703 ! 81030c080c81050c810c051205810c053605810c051005810c0581050c720c ! 81030781070381030c810c0a080a0100030a0100810a0082000a0081000a810a0081000a ! 0f0a0100030a0100070a0100030a0300010a0100810a0082000a0081000a810a0081000a ! 120a01000a0a0100030a0300010a0100810a0082000a0081000a810a0081000a110a0100 ! 010a0100010a0200810a0081000a810a0082000a000100810a0081000a810a0082000a00 ! 81000a810a0082000a0081000a810a0081000a500a0100020a0100810a0081000a810a00 ! 82000a0082000a000100810a0081000a060a010681030781070381030c080c81050c810c ! 055d05010c0105730c ! 81030781070381030c810c0a080a0100030a0100810a0081000a810a000200110a010003 ! 0a0100070a0100030a0300010a0100810a0081000a810a000200140a01000a0a0100030a ! 0300010a0100810a0081000a810a000200140a0300020a0100810a0081000a020a010081 ! 0a0081000a810a000200010a0100010a0100010a0300520a0100020a0100010a0300010a ! 0100810a0082000a0081000a070a010681030781070381030c080c81050c810c0581050c ! 0f0c81050c240c81050c0f0c81050c0f0c81050c810c0581050c720c ! 81030781070381030c810c0a7f0a270a01007f0a040a01000b0a01068103078107038103 ! 0c080c81050c810c0581050c0e0c0105240c01050f0c01050f0c0105010c0105730c ! 81030781070381030c810c0a070a06001c0a0700300a0700300a0b00710a0800090a0100 ! 0b0a010681030781070381030c080c81050c810c0581050c810c090c090105010c220901 ! 05010c0d090105010c0d090105010c0105730c ! 81030781070381030c810c0a7f0a270a01007f0a040a01000b0a01068103078107038103 ! 0c080c81050c810c0581050c810c090c090105010c22090105010c0d090105010c0d0901 ! 05010c0105730c ! 81030781070381030c810c0a7f0a7f0a3c0a010681030781070381030c080c81050c810c ! 0581050c810c090c090105010c22090105010c0109080c81050981090581050c810c090c ! 090105010c0105730c ! 81030781070381030c810c0a7f0a7f0a3c0a010681030781070381030c080c81050c810c ! 0581050c810c090c090105010c22090105010c0109810c09060981050981090581050c81 ! 0c090c090105010c0105730c ! 81030781070381030c810c0a7f0a7f0a3c0a010681030781070381030c080c81050c810c ! 0581050c810c090c090105010c22090105010c0109810c09060981050981090581050c81 ! 0c090c090105010c0105730c ! 81030781070381030c810c0a7f0a7f0a3c0a010681030781070381030c080c81050c810c ! 0581050c810c0981090c070c81050981090581050c810c0921090105010c0109810c0906 ! 0981050981090581050c810c090309020c81050903090105010c0105730c ! 81030781070381030c810c0a7f0a7f0a3c0a010681030781070381030c080c81050c810c ! 0581050c810c0982090c09060981050981090581050c810c0921090105010c0109810c09 ! 060981050981090581050c810c090309810c098209050903090105010c0105730c ! 81030781070381030c810c0a7f0a7f0a3c0a010681030781070381030c080c81050c810c ! 0581050c810c0982090c09060981050981090581050c810c0921090105010c0109810c09 ! 060981050981090581050c810c090309810c098209050903090105010c0105730c ! 81030781070381030c810c0a7f0a7f0a3c0a010681030781070381030c080c81050c810c ! 0581050c810c09810905080501090105010c22090105010c0109810c0906098105098109 ! 0581050c810c090309030504090105010c0105730c ! 81030781070381030c810c0a7f0a7f0a3c0a010681030781070381030c080c81050c810c ! 0581050c810c090c090105010c22090105010c0109810c09060981050981090581050c81 ! 0c090c090105010c0105730c ! 81030781070381030c810c067f067f063e0681030781070381030c080c81050c810c0581 ! 050c810c090c090105010c22090105010c0109810c09060981050981090581050c810c09 ! 0c090105010c0105730c ! 81030781070382030c067f067f063f0681030781070381030c080c81050c810c0581050c ! 810c090c090105010c22090105010c0109090501090105010c0d090105010c0105730c ! 81030781070381030a7f0a7f0a400a81030781070381030c080c81050c810c0581050c81 ! 0c090c090105010c22090105010c0d090105010c0d090105010c0105730c ! 81030781070382030a0c7f0c7f0c3e0c820a030781070381030c080c81050c810c058105 ! 0c810c090c090105010c22090105010c0d090105010c0d090105010c0105730c ! 81030781070382030a0c7f0c7f0c3e0c820a030781070381030c080c82050c050105810c ! 050f05810c052405810c050f05810c050f05810c050105730c ! 81030781070382030a0c7f0c7f0c3e0c820a030781070381030c080c6505730c ! 81030781070382030a0c7f0c7f0c3e0c820a030781070381030c080c81050c010c81050c ! 5a0c81050c010c81050c720c ! 81030781070382030a0c7f0c7f0c3e0c820a030781070381030c080c81050c810c058105 ! 0c590c8206050c810c0581050c0c0c6505 ! 81030781070382030a0c7f0c7f0c3e0c820a030781070381030c080c81050c810c058105 ! 0c810c0a560a010681050c810c0581050c0c0c81050c130c81050c360c81050c130c0005 ! ! 81030781070382030a0c7f0c7f0c3e0c820a030781070381030c080c81050c810c058105 ! 0c810c0a560a010681050c810c0581050c0c0c81050c120c0105360c0105130c0105 ! 81030781070382030a0c7f0c7f0c3e0c820a030781070381030c080c81050c810c058105 ! 0c810c0a560a010681050c810c0581050c0c0c81050c810c051205810c053605810c0510 ! 05810c050005 ! 81030781070382030a0c7f0c7f0c3e0c820a030781070381030c080c81050c810c058105 ! 0c810c0a560a010681050c810c0581050c0c0c81050c810c055d05010c0105 ! 81030781070382030a0c7f0c7f0c3e0c820a030781070381030c080c81050c810c058105 ! 0c810c0a050a01064e0a010681050c810c0581050c0c0c81050c810c0581050c0f0c8105 ! 0c240c81050c0f0c81050c0f0c81050c810c050005 ! 81030781070382030a0c7f0c7f0c3e0c820a030781070381030c080c81050c810c058105 ! 0c810c0a040a0306090a0100010a0100150a0100010a0100210a010681050c810c058105 ! 0c0c0c81050c810c0581050c0e0c0105240c01050f0c01050f0c0105010c0105 ! 81030781070382030a0c7f0c7f0c3e0c820a030781070381030c080c81050c810c058105 ! 0c810c0a030a0506080a0100010a0100150a0100250a010681050c810c0581050c0c0c81 ! 050c810c0581050c810c090c090105010c22090105010c0d090105010c0d090105010c01 ! 05 ! 81030781070382030a0c7f0c7f0c3e0c820a030781070381030c080c81050c810c058105 ! 0c810c0a020a0206010a0206070a0100810a000200010a0300010a0100810a0082000a00 ! 0200010a0300810a0081000a810a000200010a0100810a0081000a130a010681050c810c ! 0581050c0c0c81050c810c0581050c810c090c090105010c22090105010c0d090105010c ! 0d090105010c0105 ! 81030781070382030a0c050c0600410c0100190c0100370c0100020c0200110c0100060c ! 01001a0c0100010c0100090c0100470c820a030781070381030c080c81050c810c058105 ! 0c810c0a010a0206030a0206060a0100010a0100010a0100010a0100810a000500010a01 ! 00010a0100010a0100810a0081000a810a0082000a000100810a0081000a120a01068105 ! 0c810c0581050c0c0c81050c810c0581050c810c090c090105010c22090105010c010908 ! 0c81050981090581050c810c090c090105010c0105 ! 81030781070382030a0c050c0100020c0200360c0100070c0100190c0100060c04000a0c ! 0600010c0500110c0100010c0100130c0100010c0100020c01001a0c0100010c0100090c ! 0100180c0400030c0200140c0400080c820a030781070381030c080c81050c810c058105 ! 0c810c0a810a060106050a0206050a0100010a0100010a0100010a0100810a000100050a ! 0100010a0100010a0100810a0081000a810a0082000a0081000a810a0081000a120a0106 ! 81050c810c0581050c0c0c81050c810c0581050c810c090c090105010c22090105010c01 ! 09810c09060981050981090581050c810c090c090105010c0105 ! 81030781070382030a0c050c0100030c0100360c0100070c0100190c0100050c0200010c ! 01000e0c0100010c0100190c0100170c0100020c01001a0c0100010c0100230c0200010c ! 0100010c0100810c0081000c110c0200810c000100070c820a030781070381030c080c81 ! 050c810c0581050c820c0a0c010c070a020c040a0100010a0100010a0500810a0081000a ! 020a0400010a0100010a0100810a0081000a810a0082000a0081000a810a0081000a120a ! 010681050c810c0581050c0c0c81050c810c0581050c810c090c090105010c2209010501 ! 0c0109810c09060981050981090581050c810c090c090105010c0105 ! 81030781070382030a0c050c0100030c0100020c0100020c0100010c0100810c00010008 ! 0c0200030c0100810c000100070c0300010c0400020c0400010c0100810c0081000c020c ! 0100810c0081000c010c0200030c0400020c0100020c01000d0c0100010c01000a0c0100 ! 810c0082000c000100020c0100810c000200070c0100010c0100010c0100810c0082000c ! 000300810c0082000c000100080c0200030c0300020c0100010c0100020c0300020c0100 ! 810c000400010c03000a0c0100020c0100810c0081000c010c0100020c03000a0c010002 ! 0c0100070c820a030781070381030c080c81050c810c0581050c810c0a810a0c010c050a ! 020c050a0100010a0100010a0100040a0100020a0100010a0100010a0100010a0100810a ! 0081000a810a0082000a0081000a810a0081000a120a010681050c810c0581050c0c0c81 ! 050c810c0581050c810c0981090c070c81050981090581050c810c0921090105010c0109 ! 810c09060981050981090581050c810c090309020c81050903090105010c0105 ! 81030781070382030a0c050c0100020c0200020c0100020c0100010c0200810c00010006 ! 0c0100810c0081000c010c0200810c000100050c0200810c0081000c810c0081000c020c ! 0100810c000100010c0200810c0081000c010c0400010c0100810c0081000c010c020081 ! 0c0081000c040c02000d0c0100010c0400070c0200810c000100810c0081000c810c0081 ! 000c810c0081000c070c0100010c0100010c0100810c0081000c810c0081000c010c0200 ! 810c000100060c0400010c0100010c0100010c0100010c0100010c0200810c0081000c81 ! 0c0081000c030c0100810c0081000c810c0081000c0c0c0200810c0081000c010c010001 ! 0c0100010c0100090c0100020c0100070c820a030781070381030c080c81050c810c0581 ! 050c810c0a010a020c030a020c060a0100010a0100810a000100010a0100810a0081000a ! 010a0100010a0100010a0100810a000100810a0081000a810a0082000a0081000a810a00 ! 81000a120a010681050c810c0581050c0c0c81050c810c0581050c810c0982090c090609 ! 81050981090581050c810c0921090105010c0109810c09060981050981090581050c810c ! 090309810c098209050903090105010c0105 ! 81030781070382030a0c050c0600030c0100020c0100010c0100020c0100050c0100020c ! 0100010c0100020c0100050c0100050c0100020c0100020c0100010c0100020c0100010c ! 0100030c0100020c0100010c0100020c0100040c01000d0c0100050c0200060c0100010c ! 0100010c0100010c0100010c0100080c0100010c0100010c0100810c0081000c810c0081 ! 000c010c0100020c0100050c0100020c81000c810c0081000c810c0081000c810c008100 ! 0c810c0081000c810c0081000c040c0100030c0100010c0100010c0100010c0600040c01 ! 00010c0100020c0100010c0100010c0100090c0200010c0100070c820a03078107038103 ! 0c080c81050c810c0581050c810c0a020a020c010a020c070a0100020a0100010a030001 ! 0a0100030a0200810a0081000a810a0082000a0081000a810a000200010a0100010a0100 ! 130a010681050c810c0581050c0c0c81050c810c0581050c810c0982090c090609810509 ! 81090581050c810c0921090105010c0109810c09060981050981090581050c810c090309 ! 810c098209050903090105010c0105 ! 81030781070382030a0c050c0100030c0100020c0100020c0100010c0100020c0100050c ! 0100020c0100010c0100020c0100060c0300020c0100020c0100020c0100010c0100020c ! 0100010c0100030c0100020c0100010c0100020c0100020c0200030c0600030c0100070c ! 0100050c0100010c0100010c0100010c0100010c0100090c0100810c0082000c0081000c ! 810c0081000c810c0081000c010c0100020c0100050c0100050c0500010c0100010c0100 ! 020c0300020c0100020c0100020c05000b0c0200020c0100020c0100010c0500010c0600 ! 010c0500070c820a030781070381030c080c81050c810c0581050c810c0a030a050c4c0a ! 010681050c810c0581050c0c0c81050c810c0581050c810c09810905080501090105010c ! 22090105010c0109810c09060981050981090581050c810c090309030504090105010c01 ! 05 ! 81030781070382030a0c050c0100030c0100020c0100020c0100010c0100020c0100050c ! 0100020c0100010c0100020c0100080c0200010c0100020c0100020c0100010c0100020c ! 0100010c0100030c0100020c0100010c0100020c0100010c02000e0c0100080c0100050c ! 0100010c0100010c0100010c0100010c0100090c0100810c0082000c0081000c810c0081 ! 000c810c0081000c010c0100020c0100050c0100050c0100050c0100010c0100040c0200 ! 010c0100020c0100020c0100050c0600010c0200030c0100020c0100010c0100120c0100 ! 070c820a030781070381030c080c81050c810c0581050c810c0a040a030c4d0a01068105 ! 0c810c0581050c0c0c81050c810c0581050c810c090c090105010c22090105010c010981 ! 0c09060981050981090581050c810c090c090105010c0105 ! 81030781070382030a0c050c0100030c0100020c0100020c0100010c0100020c0100050c ! 0100020c0100010c0100020c0100090c0100010c0100020c0100020c0100010c0100020c ! 0100010c0100030c0100020c0100010c0100020c0100810c0001000f0c0100030c010002 ! 0c0100050c0100010c0100010c0100010c0100010c01000a0c0100010c0100020c010001 ! 0c0100020c0100020c0100050c0100020c81000c810c0081000c040c0100010c0100050c ! 0100010c0100010c0100030c01000d0c0200040c0100020c0100010c01000d0c0100020c ! 0100070c820a030781070381030c080c81050c810c0581050c810c0a050a010c4e0a0106 ! 81050c810c0581050c0c0c81050c810c0581050c810c090c090105010c22090105010c01 ! 09810c09060981050981090581050c810c090c090105010c0105 ! 81030781070382030a0c050c0100030c0100020c0200810c000100010c0100020c010006 ! 0c0100810c0081000c010c0100020c0100050c0200810c0081000c810c0083000c000c81 ! 0c0082000c000100010c0200810c0081000c010c0100040c0100810c0081000c010c0200 ! 810c0081000c810c0081000c0e0c0100040c0200810c0081000c010c0100010c0100010c ! 0100010c0100010c0100010c0100010c0100060c0100010c0100020c0100010c0100830c ! 000c0081000c010c0100060c0400010c0200810c0081000c810c0081000c810c0081000c ! 810c000100810c0081000c810c0082000c0081000c030c0200810c0081000c080c010006 ! 0c0100810c0081000c010c0200810c0081000c080c0100010c0200070c820a0307810703 ! 81030c080c81050c810c0581050c810c0a560a010681050c810c0581050c0c0c81050c81 ! 0c0581050c810c090c090105010c22090105010c0109090501090105010c0d090105010c ! 0105 ! 81030781070382030a0c050c0100040c0100020c0200810c0081000c810c0081000c010c ! 0100070c0200030c0100020c0100060c0300030c0100030c0100810c0081000c810c0003 ! 00030c0100050c0200030c0100810c0081000c010c06000a0c0100050c0300030c010001 ! 0c0100010c0100010c0100010c0100010c0100010c0100060c0100010c0100020c010002 ! 0c0100010c0100020c0100070c0200030c0300020c0100010c0100020c0300020c010081 ! 0c000400010c03000a0c0600020c0200040c03000b0c0400080c820a030781070381030c ! 080c81050c810c0581050c810c0a560a010681050c810c0581050c0c0c81050c810c0581 ! 050c810c090c090105010c22090105010c0d090105010c0d090105010c0105 ! 81030781070382030a0c520c0100560c01007f0c100c820a030781070381030c080c8105 ! 0c810c0581050c810c0a560a010681050c810c0581050c0c0c81050c810c0581050c810c ! 090c090105010c22090105010c0d090105010c0d090105010c0105 ! 81030781070382030a0c520c01007f0c690c820a030781070381030c080c81050c810c05 ! 81050c810c0a560a010681050c810c0581050c0c0c82050c050105810c050f05810c0524 ! 05810c050f05810c050f05810c050105 ! 81030781070382030a0c520c01007f0c690c820a030781070381030c080c81050c810c05 ! 81050c810c0a560a010681050c810c0581050c0c0c6505 ! 81030781070382030a0c7f0c7f0c3e0c820a030781070381030c080c81050c810c058105 ! 0c810c0a560a010681050c810c0581050c0c0c81050c010c81050c5a0c81050c010c0005 ! ! 81030781070382030a0c7f0c7f0c3e0c820a030781070381030c080c81050c810c058105 ! 0c810c0a560a010681050c810c0581050c0c0c81050c810c0581050c590c8206050c810c ! 050005 ! 81030781070382030a0c7f0c7f0c3e0c820a030781070381030c080c81050c810c058105 ! 0c810c0a560a010681050c810c0581050c0c0c81050c810c0581050c810c0a560a010681 ! 050c810c050005 ! 81030781070382030a0c7f0c7f0c3e0c820a030781070381030c080c81050c810c058105 ! 0c810c0a050a01064e0a010681050c810c0581050c0c0c81050c810c0581050c810c0a56 ! 0a010681050c810c050005 ! 81030781070382030a0c7f0c7f0c3e0c820a030781070381030c080c81050c810c058105 ! 0c810c0a040a0306090a05003d0a010681050c810c0581050c0c0c81050c810c0581050c ! 810c0a560a010681050c810c050005 ! 81030781070382030a0c7f0c7f0c3e0c820a030781070381030c080c81050c810c058105 ! 0c810c0a030a0506080a0100020a01003c0a010681050c810c0581050c0c0c81050c810c ! 0581050c810c0a560a010681050c810c050005 ! 81030781070382030a0c7f0c7f0c3e0c820a030781070381030c080c81050c810c058105 ! 0c810c0a020a020601080206070a0100020a0100810a0081000a810a0081000a340a0106 ! 81050c810c0581050c0c0c81050c810c0581050c810c0a020a0b06470a010681050c810c ! 050005 ! 81030781070382030a0c7f0c7f0c3e0c820a030781070381030c080c81050c810c058105 ! 0c810c0a010a020603080206060a0100020a0100810a0081000a810a0081000a340a0106 ! 81050c810c0581050c0c0c81050c810c0581050c810c0a020a0a06810c0a020a0100010a ! 0100150a0100010a0100210a010681050c810c050005 ! 81030781070382030a0c7f0c7f0c3e0c820a030781070381030c080c81050c810c058105 ! 0c810c0a810a06010605080206050a0500020a0300360a010681050c810c0581050c0c0c ! 81050c810c0581050c810c0a020a0106070a010c030a0100010a0100150a0100250a0106 ! 81050c810c050005 ! 81030781070382030a0c7f0c7f0c3e0c820a030781070381030c080c81050c810c058105 ! 0c820c0a0c010c0708020c040a0100020a0100020a0100370a010681050c810c0581050c ! 0c0c81050c810c0581050c810c0a020a0106070a010c030a0100810a000200010a030001 ! 0a0100810a0082000a000200010a0300810a0081000a810a000200010a0100810a008100 ! 0a130a010681050c810c050005 ! 81030781070382030a0c7f0c7f0c3e0c820a030781070381030c080c81050c810c058105 ! 0c810c0a810a0c010c0508020c050a0100020a0100010a0300360a010681050c810c0581 ! 050c0c0c81050c810c0581050c810c0a020a0106070a010c030a0100010a0100010a0100 ! 010a0100810a000500010a0100010a0100010a0100810a0081000a810a0082000a000100 ! 810a0081000a120a010681050c810c050005 ! 81030781070382030a0c110c7f007f001800130c820a030781070381030c080c81050c81 ! 0c0581050c810c0a010a020c0308020c060a0100020a0100810a0081000a810a0081000a ! 340a010681050c810c0581050c0c0c81050c810c0581050c810c0a020a0106070a010c03 ! 0a0100010a0100010a0100010a0100810a000100050a0100010a0100010a0100810a0081 ! 000a810a0082000a0081000a810a0081000a120a010681050c810c050005 ! 81030781070382030a0c110c7f007f001800130c820a030781070381030c080c81050c81 ! 0c0581050c810c0a020a020c0108020c070a0500010a0100010a0100350a010681050c81 ! 0c0581050c0c0c81050c810c0581050c810c0a020a0106070a010c030a0100010a010001 ! 0a0500810a0081000a020a0400010a0100010a0100810a0081000a810a0082000a008100 ! 0a810a0081000a120a010681050c810c050005 ! 81030781070382030a0c110c0100430c0100430c0100430c0100420c0100130c820a0307 ! 81070381030c080c81050c810c0581050c810c0a030a050c4c0a010681050c810c058105 ! 0c0c0c81050c810c0581050c810c0a020a0106070a010c030a0100010a0100010a010004 ! 0a0100020a0100010a0100010a0100010a0100810a0081000a810a0082000a0081000a81 ! 0a0081000a120a010681050c810c050005 ! 81030781070382030a0c0b0c0100030c0100430c0100430c0100430c0100420c0100130c ! 820a030781070381030c080c81050c810c0581050c810c0a040a030c4d0a010681050c81 ! 0c0581050c0c0c81050c810c0581050c810c0a020a0106070a010c030a0100010a010081 ! 0a000100010a0100810a0081000a010a0100010a0100010a0100810a000100810a008100 ! 0a810a0082000a0081000a810a0081000a120a010681050c810c050005 ! 81030781070382030a0c090c0300030c01007f0c090c01007f0c080c0100130c820a0307 ! 81070381030c080c81050c810c0581050c810c0a050a010c4e0a010681050c810c058105 ! 0c0c0c81050c810c0581050c810c0a020a0106070a010c030a0100020a0100010a030001 ! 0a0100030a0200810a0081000a810a0082000a0081000a810a000200010a0100010a0100 ! 130a010681050c810c050005 ! 81030781070382030a0c0b0c0100030c01007f0c7f0c140c0100130c820a030781070381 ! 030c080c81050c810c0581050c810c0a560a010681050c810c0581050c0c0c81050c810c ! 0581050c810c0a020a0106090c470a010681050c810c050005 ! 81030781070382030a0c0b0c0100030c01007f0c7f0c140c0100130c820a030781070381 ! 030c080c81050c810c0581050c810c0a560a010681050c810c0581050c0c0c81050c810c ! 0581050c810c0a020a81060c090c470a010681050c810c050005 ! 81030781070382030a0c0b0c0100030c01007f0c030c23026c0c0100130c820a03078107 ! 0381030c080c81050c810c0581050c810c0a560a010681050c810c0581050c0c0c81050c ! 810c0581050c810c0a560a010681050c810c050005 ! 81030781070382030a0c0b0c0100030c01007c0c38025e0c0100130c820a030781070381 ! 030c080c81050c810c0581050c810c0a560a010681050c810c0581050c0c0c81050c810c ! 0581050c810c0a560a010681050c810c050005 ! 81030781070382030a0c0b0c0100030c0100790c0a02210c1502570c0100130c820a0307 ! 81070381030c080c81050c810c0581050c810c0a560a010681050c810c0581050c0c0c81 ! 050c810c0581050c810c0a560a010681050c810c050005 ! 81030781070382030a0c0b0c0100030c0100780c0402360c0e02500c0100130c820a0307 ! 81070381030c080c81050c810c0581050c810c0a560a010681050c810c0581050c0c0c81 ! 050c810c0581050c810c0a560a010681050c810c050005 ! 81030781070382030a0c0b0c0100030c01000c0c3300370c0102400c1502420c0100130c ! 820a030781070381030c080c81050c810c0581050c810c0a560a010681050c810c058105 ! 0c0c0c81050c810c0581050c810c0a560a010681050c810c050005 ! 81030781070382030a0c110c01000c0c3300370c0102470c1c02340c0100130c820a0307 ! 81070381030c080c81050c810c0581050c810c0a560a010681050c810c0581050c0c0c81 ! 050c810c0581050c810c0a560a010681050c810c050005 ! 81030781070382030a0c110c01000c0c01002f0c0100370c0102550c15022d0c0100130c ! 820a030781070381030c080c81050c810c0581050c810c0a050a01064e0a010681050c81 ! 0c0581050c0c0c81050c810c0581050c810c0a560a010681050c810c050005 ! 81030781070382030a0c110c01000c0c01002f0c0100370c0102630c0e02260c0100130c ! 820a030781070381030c080c81050c810c0581050c810c0a040a0306090a05003d0a0106 ! 81050c810c0581050c0c0c81050c810c0581050c810c0a560a010681050c810c050005 ! 81030781070382030a0c110c01000c0c01002f0c0100370c01026a0c1502180c0100130c ! 820a030781070381030c080c81050c810c0581050c810c0a030a0506080a0100020a0100 ! 3c0a010681050c810c0581050c0c0c81050c810c0581050c810c0a560a010681050c810c ! 050005 ! 81030781070382030a0c110c01000c0c01002f0c0100370c0102710c1b020b0c0100130c ! 820a030781070381030c080c81050c810c0581050c810c0a020a0206010a0206070a0100 ! 020a0100810a0081000a010a0100340a010681050c810c0581050c0c0c81050c810c0581 ! 050c810c0a020a0b06470a010681050c810c050005 ! 81030781070382030a0c110c01000c0c0100030c010b040c010b090c010b810c0b810b0c ! 030c010b0c0c0100370c01027f0c19020100130c820a030781070381030c080c81050c81 ! 0c0581050c810c0a010a0206030a0206060a0100020a0100810a0081000a010a0100340a ! 010681050c810c0581050c0c0c81050c810c0581050c810c0a020a0a06810c0a020a0500 ! 3d0a010681050c810c050005 ! 81030781070382030a0c110c01000c0c0100030c010b040c010b090c010b810c0b810b0c ! 030c010b0c0c0100370c01027f0c0c0c0c020100130c820a030781070381030c080c8105 ! 0c810c0581050c810c0a810a060106050a0206050a0500020a0100810a0081000a340a01 ! 0681050c810c0581050c0c0c81050c810c0581050c810c0a020a0106070a010c030a0100 ! 020a01003c0a010681050c810c050005 ! 81030781070382030a0c110c01000c0c0100030c020b020c020b810c0b810b0c810c0b81 ! 0b0c010c810b0c810c0b010b020c020b010c030b060c0100370c01027f0c190c0100130c ! 820a030781070381030c080c81050c810c0581050c820c0a0c010c070a020c040a010002 ! 0a0100010a0100810a0081000a340a010681050c810c0581050c0c0c81050c810c058105 ! 0c810c0a020a0106070a010c030a0100020a0100810a0081000a810a0081000a340a0106 ! 81050c810c050005 ! 81030781070382030a0c110c01000c0c0100030c020b020c020b810c0b810b0c810c0b81 ! 0b0c810c0b810b0c810c0b010b020c020b810c0b810b0c810c0b810b0c040c0100370c01 ! 027f0c190c0100130c820a030781070381030c080c81050c810c0581050c810c0a810a0c ! 010c050a020c050a0100020a0100020a0200360a010681050c810c0581050c0c0c81050c ! 810c0581050c810c0a020a0106070a010c030a0100020a0100810a0081000a810a008100 ! 0a340a010681050c810c050005 ! 81030781070382030a0c110c01000c0c0100030c030b810c0b020b010c030b020c010b01 ! 0c030b810c0b020b810c0b010b080c0100370c01027f0c190c0100130c820a0307810703 ! 81030c080c81050c810c0581050c810c0a010a020c030a020c060a0100020a0100020a02 ! 00360a010681050c810c0581050c0c0c81050c810c0581050c810c0a020a0106070a010c ! 030a0500020a0300360a010681050c810c050005 ! 81030781070382030a0c110c01000c0c0100030c010b850c0b0c0b0c0b810b0c010c010b ! 030c810b0c010c010b850c0b0c0b0c0b810b0c010c020b060c0100370c01027f0c190c01 ! 00130c820a030781070381030c080c81050c810c0581050c810c0a020a020c010a020c07 ! 0a0500040a0100360a010681050c810c0581050c0c0c81050c810c0581050c810c0a020a ! 0106070a010c030a0100020a0100020a0100370a010681050c810c050005 ! 81030781070382030a0c110c01000c0c0100030c010b810c0b010b810c0b810b0c810c0b ! 020b020c810b0c010c010b810c0b010b810c0b810b0c020c020b050c0100370c01027f0c ! 190c0100130c820a030781070381030c080c81050c810c0581050c810c0a030a050c130a ! 81000a360a010681050c810c0581050c0c0c81050c810c0581050c810c0a020a0106070a ! 010c030a0100020a0100010a0300360a010681050c810c050005 ! 81030781070382030a0c110c01000c0c0100030c010b010c810b0c810c0b820b0c0b810b ! 0c810c0b820b0c0b810b0c010c010b010c810b0c810c0b820b0c0b810b0c810c0b810b0c ! 040c0100370c01027f0c190c0100130c820a030781070381030c080c81050c810c058105 ! 0c810c0a040a030c130a0100370a010681050c810c0581050c0c0c81050c810c0581050c ! 810c0a020a0106070a010c030a0100020a0100810a0081000a810a0081000a340a010681 ! 050c810c050005 ! 81030781070382030a0c110c01000c0c0100030c010b010c810b0c810c0b820b0c0b810b ! 0c810c0b820b0c0b810b0c010c010b010c810b0c810c0b810b0c810c0b020b060c010037 ! 0c01027f0c190c0100130c820a030781070381030c080c81050c810c0581050c810c0a05 ! 0a010c130a0100380a010681050c810c0581050c0c0c81050c810c0581050c810c0a020a ! 0106070a010c030a0500010a0100010a0100350a010681050c810c050005 ! 81030781070382030a0c110c01000c0c01002f0c0100370c01027f0c190c0100130c820a ! 030781070381030c080c81050c810c0581050c810c0a560a010681050c810c0581050c0c ! 0c81050c810c0581050c810c0a020a0106090c470a010681050c810c050005 ! 81030781070382030a0c110c01000c0c01002f0c0100370c01027f0c190c0100130c820a ! 030781070381030c080c81050c810c0581050c810c0a560a010681050c810c0581050c0c ! 0c81050c810c0581050c810c0a020a81060c090c470a010681050c810c050005 ! 81030781070382030a0c110c01000c0c01002f0c0100370c01027f0c190c0100130c820a ! 030781070381030c080c81050c810c0581050c810c0a560a010681050c810c0581050c0c ! 0c81050c810c0581050c810c0a560a010681050c810c050005 ! 81030781070382030a0c110c01000c0c01002f0c0100370c01027f0c190c0100130c820a ! 030781070381030c080c81050c810c0581050c810c0a560a010681050c810c0581050c0c ! 0c81050c810c0581050c810c0a560a010681050c810c050005 ! 81030781070382030a0c110c01000c0c01002f0c0100370c01027f0c190c0100130c820a ! 030781070381030c080c81050c810c0581050c810c0a560a010681050c810c0581050c0c ! 0c81050c810c0581050c810c0a560a010681050c810c050005 ! 81030781070382030a0c110c01000c0c0100030c0102040c01020a0c0102810c0281020c ! 030c01020b0c0100370c01027f0c190c0100130c820a030781070381030c080c81050c81 ! 0c0581050c810c0a560a010681050c810c0581050c0c0c81050c810c0581050c810c0a56 ! 0a010681050c810c050005 ! 81030781070382030a0c110c01000c0c0100030c0102040c01020a0c0102810c0281020c ! 030c01020b0c0100370c01027f0c190c0100130c820a030781070381030c080c81050c81 ! 0c0581050c810c0a560a010681050c810c0581050c0c0c81050c810c0581050c810c0a56 ! 0a010681050c810c050005 ! 81030781070382030a0c110c01000c0c0100030c0202020c0202810c0281020c010c0102 ! 020c81020c810c020102020c0202010c0302050c0100370c01027f0c190c0100130c820a ! 030781070381030c080c81050c810c0581050c810c0a560a010681050c810c0581050c0c ! 0c81050c810c0581050c810c0a560a010681050c810c050005 ! 81030781070382030a0c110c01000c0c0100030c0202020c0202810c0281020c010c0102 ! 010c0102010c0202020c0202810c0281020c810c0281020c030c0100370c01027f0c190c ! 0100130c820a030781070381030c080c81050c810c0581050c810c0a050a01064e0a0106 ! 81050c810c0581050c0c0c81050c810c0581050c810c0a560a010681050c810c050005 ! 81030781070382030a0c110c01000c0c0100030c0302810c020202010c0102810c028102 ! 0c010c0102010c0302810c020202810c020102070c0100370c01027f0c190c0100130c82 ! 0a030781070381030c080c81050c810c0581050c810c0a040a0306090a05003d0a010681 ! 050c810c0581050c0c0c81050c810c0581050c810c0a560a010681050c810c050005 ! 81030781070382030a0c110c01000c0c0100030c0102850c020c020c0281020c810c0282 ! 020c0281020c010c81020c010c0102850c020c020c0281020c010c0202050c0100370c01 ! 027f0c190c0100130c820a030781070381030c080c81050c810c0581050c810c0a030a05 ! 06080a0100020a01003c0a010681050c810c0581050c0c0c81050c810c0581050c810c0a ! 560a010681050c810c050005 ! 81030781070382030a0c110c01000c0c0100030c0102810c020102810c0281020c010c02 ! 02030c81020c010c0102810c020102810c0281020c020c0202040c0100370c01027f0c19 ! 0c0100130c820a030781070381030c080c81050c810c0581050c810c0a020a0206010a02 ! 06070a0100020a0100810a000300360a010681050c810c0581050c0c0c81050c810c0581 ! 050c810c0a020a0b06470a010681050c810c050005 ! 81030781070382030a0c110c01000c0c0100030c0102010c81020c810c0281020c010c02 ! 02020c0102020c0102010c81020c810c0282020c0281020c810c0281020c030c0100370c ! 01027f0c190c0100130c820a030781070381030c080c81050c810c0581050c810c0a010a ! 0206030a0206060a0100020a0100030a0100360a010681050c810c0581050c0c0c81050c ! 810c0581050c810c0a020a0a06810c0a020a05003d0a010681050c810c050005 ! 81030781070382030a0c110c01000c0c0100030c0102010c81020c810c0281020c020c01 ! 02020c0102020c0102010c81020c810c0281020c810c020202050c0100370c01027f0c19 ! 0c0100130c820a030781070381030c080c81050c810c0581050c810c0a810a060106050a ! 0206050a0500030a0100370a010681050c810c0581050c0c0c81050c810c0581050c810c ! 0a020a0106070a010c030a0100020a01003c0a010681050c810c050005 ! 81030781070382030a0c110c01000c0c0100100c81020c1c0c0100370c01027f0c190c01 ! 00130c820a030781070381030c080c81050c810c0581050c820c0a0c010c070a020c040a ! 0100020a0100020a81000a370a010681050c810c0581050c0c0c81050c810c0581050c81 ! 0c0a020a0106070a010c030a0100020a0100810a0081000a010a0100340a010681050c81 ! 0c050005 ! 81030781070382030a0c110c01000c0c01000f0c01021d0c0100370c01027f0c190c0100 ! 130c820a030781070381030c080c81050c810c0581050c810c0a810a0c010c050a020c05 ! 0a0100020a0100010a0100380a010681050c810c0581050c0c0c81050c810c0581050c81 ! 0c0a020a0106070a010c030a0100020a0100810a0081000a010a0100340a010681050c81 ! 0c050005 ! 81030781070382030a0c110c01000c0c01000e0c01021e0c0100370c01027f0c190c0100 ! 130c820a030781070381030c080c81050c810c0581050c810c0a010a020c030a020c060a ! 0100020a0100810a0081000a380a010681050c810c0581050c0c0c81050c810c0581050c ! 810c0a020a0106070a010c030a0500020a0100810a0081000a340a010681050c810c0500 ! 05 ! 81030781070382030a0c110c01000c0c01002f0c0100370c01027f0c190c0100130c820a ! 030781070381030c080c81050c810c0581050c810c0a020a020c010a020c070a0500010a ! 0400360a010681050c810c0581050c0c0c81050c810c0581050c810c0a020a0106070a01 ! 0c030a0100020a0100010a0100810a0081000a340a010681050c810c050005 ! 81030781070382030a0c110c01000c0c01002f0c0100370c01027f0c190c0100130c820a ! 030781070381030c080c81050c810c0581050c810c0a030a050c4c0a010681050c810c05 ! 81050c0c0c81050c810c0581050c810c0a020a0106070a010c030a0100020a0100020a02 ! 00360a010681050c810c050005 ! 81030781070382030a0c110c01000c0c0100030c0101040c0101080c0101810c0181010c ! 030c01010d0c0100370c01027f0c190c0100130c820a030781070381030c080c81050c81 ! 0c0581050c810c0a040a030c4d0a010681050c810c0581050c0c0c81050c810c0581050c ! 810c0a020a0106070a010c030a0100020a0100020a0200360a010681050c810c050005 ! 81030781070382030a0c110c01000c0c0100030c0101040c0101080c0101810c0181010c ! 030c01010d0c0100370c01027f0c190c0100130c820a030781070381030c080c81050c81 ! 0c0581050c810c0a050a010c4e0a010681050c810c0581050c0c0c81050c810c0581050c ! 810c0a020a0106070a010c030a0500040a0100360a010681050c810c050005 ! 81030781070382030a0c110c01000c0c0100030c0201020c0201810c010301020c81010c ! 810c010101020c0201010c0301070c0100370c01027f0c190c0100130c820a0307810703 ! 81030c080c81050c810c0581050c810c0a560a010681050c810c0581050c0c0c81050c81 ! 0c0581050c810c0a020a0106090c0e0a81000a360a010681050c810c050005 ! 81030781070382030a0c110c01000c0c0100030c0201020c0201030c0101010c0101010c ! 0201020c0201810c0181010c810c0181010c050c0100370c01027f0c190c0100130c820a ! 030781070381030c080c81050c810c0581050c810c0a560a010681050c810c0581050c0c ! 0c81050c810c0581050c810c0a020a81060c090c0d0a0100370a010681050c810c050005 ! ! 81030781070382030a0c110c01000c0c0100030c0301810c010201020c0101020c010101 ! 0c0301810c010201810c010101090c0100370c01027f0c190c0100130c820a0307810703 ! 81030c080c81050c810c0581050c810c0a560a010681050c810c0581050c0c0c81050c81 ! 0c0581050c810c0a1b0a0100380a010681050c810c050005 ! 81030781070382030a0c110c01000c0c0100030c0101850c010c010c0181010c010c8101 ! 0c020c81010c010c0101850c010c010c0181010c010c0201070c0100370c01027f0c190c ! 0100130c820a030781070381030c080c81050c810c0581050c810c0a560a010681050c81 ! 0c0581050c0c0c81050c810c0581050c810c0a560a010681050c810c050005 ! 81030781070382030a0c110c01000c0c0100030c0101810c010101810c0181010c810c01 ! 81010c020c81010c010c0101810c010101810c0181010c020c0201060c0100370c01027f ! 0c190c0100130c820a030781070381030c080c81050c810c0581050c810c0a560a010681 ! 050c810c0581050c0c0c81050c810c0581050c810c0a560a010681050c810c050005 ! 81030781070382030a0c110c01000c0c0100030c0101010c81010c810c0182010c018101 ! 0c020c0101020c0101010c81010c810c0182010c0181010c810c0181010c050c0100370c ! 01027f0c190c0100130c820a030781070381030c080c81050c810c0581050c810c0a560a ! 010681050c810c0581050c0c0c81050c810c0581050c810c0a560a010681050c810c0500 ! 05 ! 81030781070382030a0c110c01000c0c0100030c0101010c81010c810c0182010c010301 ! 810c0181010c010c0101010c81010c810c0181010c810c010201070c0100370c01027f0c ! 190c0100130c820a030781070381030c080c81050c810c0581050c810c0a560a01068105 ! 0c810c0581050c0c0c81050c810c0581050c810c0a560a010681050c810c050005 ! 81030781070382030a0c110c01000c0c01002f0c0100370c01027f0c190c0100130c820a ! 030781070381030c080c81050c810c0581050c810c0a560a010681050c810c0581050c0c ! 0c81050c810c0581050c810c0a560a010681050c810c050005 ! 81030781070382030a0c110c01000c0c01002f0c0100370c01027f0c190c0100130c820a ! 030781070381030c080c81050c810c0581050c810c0a050a01064e0a010681050c810c05 ! 81050c0c0c81050c810c0581050c810c0a560a010681050c810c050005 ! 81030781070382030a0c110c01000c0c01002f0c0100370c01027f0c190c0100130c820a ! 030781070381030c080c81050c810c0581050c810c0a040a0306090a0100040a0100090a ! 0100810a0081000a030a0100240a010681050c810c0581050c0c0c81050c810c0581050c ! 810c0a560a010681050c810c050005 ! 81030781070382030a0c110c01000c0c01002f0c0100370c01027f0c190c0100130c820a ! 030781070381030c080c81050c810c0581050c810c0a030a0506080a0100040a0100090a ! 0100810a0081000a030a0100240a010681050c810c0581050c0c0c81050c810c0581050c ! 810c0a560a010681050c810c050005 ! 81030781070382030a0c110c01000c0c01002f0c0100370c01027f0c190c0100130c820a ! 030781070381030c080c81050c810c0581050c810c0a020a0206010a0206070a0200020a ! 0200810a0081000a810a0081000a010a81000a810a000100020a0200010a03001e0a0106 ! 81050c810c0581050c0c0c81050c810c0581050c810c0a020a0b06470a010681050c810c ! 050005 ! 81030781070382030a0c110c01000c0c01002f0c0100370c01027f0c190c0100130c820a ! 030781070381030c080c81050c810c0581050c810c0a010a0206030a0206060a0200020a ! 0200810a0081000a810a0081000a810a0081000a810a000100020a0200810a0081000a81 ! 0a0081000a1c0a010681050c810c0581050c0c0c81050c810c0581050c810c0a020a0a06 ! 810c0a020a05003d0a010681050c810c050005 ! 81030781070382030a0c110c01000c0c3300370c01027f0c190c0100130c820a03078107 ! 0381030c080c81050c810c0581050c810c0a810a060106050a0206050a0300810a000200 ! 010a0300020a0100010a0300810a000200810a000100200a010681050c810c0581050c0c ! 0c81050c810c0581050c810c0a020a0106070a010c030a0100020a01003c0a010681050c ! 810c050005 ! 81030781070382030a0c110c01000c0c3300370c01027f0c190c0100130c820a03078107 ! 0381030c080c81050c810c0581050c820c0a0c010c070a020c040a0100850a000a000a00 ! 81000a010a0100030a81000a010a0100850a000a000a0081000a010a02001e0a01068105 ! 0c810c0581050c0c0c81050c810c0581050c810c0a020a0106070a010c030a0100020a01 ! 00810a000300360a010681050c810c050005 ! 81030781070382030a0c110c0100780c01027f0c190c0100130c820a030781070381030c ! 080c81050c810c0581050c810c0a810a0c010c050a020c050a0100810a000100810a0081 ! 000a810a000200020a81000a010a0100810a000100810a0081000a020a02001d0a010681 ! 050c810c0581050c0c0c81050c810c0581050c810c0a020a0106070a010c030a0100020a ! 0100030a0100360a010681050c810c050005 ! 81030781070382030a0c110c0100780c01027f0c190c0100130c820a030781070381030c ! 080c81050c810c0581050c810c0a010a020c030a020c060a0100010a81000a810a008200 ! 0a0081000a810a0082000a0081000a010a0100010a81000a810a0082000a0081000a810a ! 0081000a1c0a010681050c810c0581050c0c0c81050c810c0581050c810c0a020a010607 ! 0a010c030a0500030a0100370a010681050c810c050005 ! 81030781070382030a0c110c0100780c01027f0c190c0100130c820a030781070381030c ! 080c81050c810c0581050c810c0a020a020c010a020c070a0100010a81000a810a008200 ! 0a0081000a810a0082000a0081000a010a0100010a81000a810a0081000a810a0002001e ! 0a010681050c810c0581050c0c0c81050c810c0581050c810c0a020a0106070a010c030a ! 0100020a0100020a81000a370a010681050c810c050005 ! 81030781070382030a0c110c0100780c01027f0c190c0100130c820a030781070381030c ! 080c81050c810c0581050c810c0a030a050c4c0a010681050c810c0581050c0c0c81050c ! 810c0581050c810c0a020a0106070a010c030a0100020a0100010a0100380a010681050c ! 810c050005 ! 81030781070382030a0c110c0300760c01027f0c180c0200130c820a030781070381030c ! 080c81050c810c0581050c810c0a040a030c4d0a010681050c810c0581050c0c0c81050c ! 810c0581050c810c0a020a0106070a010c030a0100020a0100810a0081000a380a010681 ! 050c810c050005 ! 81030781070382030a0c110c0300760c01027f0c180c0200130c820a030781070381030c ! 080c81050c810c0581050c810c0a050a010c4e0a010681050c810c0581050c0c0c81050c ! 810c0581050c810c0a020a0106070a010c030a0500010a0400360a010681050c810c0500 ! 05 ! 81030781070382030a0c110c0100780c01027f0c190c0100130c820a030781070381030c ! 080c81050c810c0581050c810c0a560a010681050c810c0581050c0c0c81050c810c0581 ! 050c810c0a020a0106090c470a010681050c810c050005 ! 81030781070382030a0c110c0100780c01027f0c190c0100130c820a030781070381030c ! 080c81050c810c0581050c810c0a560a010681050c810c0581050c0c0c81050c810c0581 ! 050c810c0a020a81060c090c470a010681050c810c050005 ! 81030781070382030a0c110c0100780c01027f0c190c0100130c820a030781070381030c ! 080c81050c810c0581050c810c0a560a010681050c810c0581050c0c0c81050c810c0581 ! 050c810c0a560a010681050c810c050005 ! 81030781070382030a0c110c0100780c01027f0c190c0100130c820a030781070381030c ! 080c81050c810c0581050c810c0a560a010681050c810c0581050c0c0c81050c810c0581 ! 050c810c0a560a010681050c810c050005 ! 81030781070382030a0c110c0100780c01027f0c130c050b0100130c820a030781070381 ! 030c080c81050c810c0581050c810c0a560a010681050c810c0581050c0c0c81050c810c ! 0581050c810c0a560a010681050c810c050005 ! 81030781070382030a0c110c0100780c01027f0c0c0c0c0b0100130c820a030781070381 ! 030c080c81050c810c0581050c810c0a560a010681050c810c0581050c0c0c81050c810c ! 0581050c810c0a560a010681050c810c050005 ! 81030781070382030a0c110c0100780c01027f0c080c0b0b040c0100130c820a03078107 ! 0381030c080c81050c810c0581050c810c0a560a010681050c810c0581050c0c0c81050c ! 810c0581050c810c0a560a010681050c810c050005 ! 81030781070382030a0c110c0100780c01027f0c040c080b0b0c0100130c820a03078107 ! 0381030c080c81050c810c0581050c810c0a560a010681050c810c0581050c0c0c81050c ! 810c0581050c810c0a560a010681050c810c050005 ! 81030781070382030a0c110c0100780c01027f0c080b100c0100130c820a030781070381 ! 030c080c81050c810c0581050c810c0a050a01064e0a010681050c810c0581050c0c0c81 ! 050c810c0581050c810c0a560a010681050c810c050005 ! 81030781070382030a0c110c0100780c01027b0c080b140c0100130c820a030781070381 ! 030c080c81050c810c0581050c810c0a040a0306090a0100040a01000a0a0100810a0081 ! 000a030a0100230a010681050c810c0581050c0c0c81050c810c0581050c810c0a560a01 ! 0681050c810c050005 ! 81030781070382030a0c110c0100780c0102760c090b180c0100130c820a030781070381 ! 030c080c81050c810c0581050c810c0a030a0506080a0100040a01000a0a0100810a0081 ! 000a030a0100230a010681050c810c0581050c0c0c81050c810c0581050c810c0a560a01 ! 0681050c810c050005 ! 81030781070382030a0c110c0100780c0102710c090b1d0c0100130c820a030781070381 ! 030c080c81050c810c0581050c810c0a020a0206010a0206070a0200020a0200810a0081 ! 000a010a0100020a81000a810a000100020a0200010a03001d0a010681050c810c058105 ! 0c0c0c81050c810c0581050c810c0a020a0b06470a010681050c810c050005 ! 81030781070382030a0c110c0100780c01026e0c070b220c0100130c820a030781070381 ! 030c080c81050c810c0581050c810c0a010a0206030a0206060a0200020a0200810a0081 ! 000a010a0100010a0100010a0200020a0200810a0081000a810a0081000a1b0a01068105 ! 0c810c0581050c0c0c81050c810c0581050c810c0a020a0a06810c0a020a0100040a0100 ! 090a0100810a0081000a030a0100240a010681050c810c050005 ! 81030781070382030a0c110c0100780c01026a0c070b260c0100130c820a030781070381 ! 030c080c81050c810c0581050c810c0a810a060106050a0206050a0300810a000200010a ! 0100810a0081000a010a0100010a0300810a000200810a0001001f0a010681050c810c05 ! 81050c0c0c81050c810c0581050c810c0a020a01060708010c030a0100040a0100090a01 ! 00810a0081000a030a0100240a010681050c810c050005 ! 81030781070382030a0c110c0100780c0102670c060b2a0c0100130c820a030781070381 ! 030c080c81050c810c0581050c820c0a0c010c070a020c040a0100850a000a000a008100 ! 0a810a0082000a0081000a010a81000a010a0100850a000a000a0081000a010a02001d0a ! 010681050c810c0581050c0c0c81050c810c0581050c810c0a020a01060708010c030a02 ! 00020a0200810a0081000a810a0081000a010a81000a810a000100020a0200010a03001e ! 0a010681050c810c050005 ! 81030781070382030a0c110c0100780c0102630c070b2d0c0100130c820a030781070381 ! 030c080c81050c810c0581050c810c0a810a0c010c050a020c050a0100810a000100810a ! 0081000a010a0200030a81000a010a0100810a000100810a0081000a020a02001c0a0106 ! 81050c810c0581050c0c0c81050c810c0581050c810c0a020a01060708010c030a020002 ! 0a0200810a0081000a810a0081000a810a0081000a810a000100020a0200810a0081000a ! 810a0081000a1c0a010681050c810c050005 ! 81030781070382030a0c110c0100780c0102600c060b310c0100130c820a030781070381 ! 030c080c81050c810c0581050c810c0a010a020c030a020c060a0100010a81000a810a00 ! 81000a010a0200020a0100020a0100010a81000a810a0082000a0081000a810a0081000a ! 1b0a010681050c810c0581050c0c0c81050c810c0581050c810c0a020a01060708010c03 ! 0a0300810a000200010a0300020a0100010a0300810a000200810a000100200a01068105 ! 0c810c050005 ! 81030781070382030a0c110c0100780c01025c0c070b340c0100130c820a030781070381 ! 030c080c81050c810c0581050c810c0a020a020c010a020c070a0100010a81000a810a00 ! 81000a020a0100020a0100020a0100010a81000a810a0081000a810a0002001d0a010681 ! 050c810c0581050c0c0c81050c810c0581050c810c0a020a01060708010c030a0100850a ! 000a000a0081000a010a0100030a81000a010a0100850a000a000a0081000a010a02001e ! 0a010681050c810c050005 ! 81030781070382030a0c110c0100780c0102590c060b380c0100130c820a030781070381 ! 030c080c81050c810c0581050c810c0a030a050c150a81000a340a010681050c810c0581 ! 050c0c0c81050c810c0581050c810c0a020a01060708010c030a0100810a000100810a00 ! 81000a810a000200020a81000a010a0100810a000100810a0081000a020a02001d0a0106 ! 81050c810c050005 ! 81030781070382030a0c110c0100780c0102550c070b3b0c0100130c820a030781070381 ! 030c080c81050c810c0581050c810c0a040a030c150a0100350a010681050c810c058105 ! 0c0c0c81050c810c0581050c810c0a020a01060708010c030a0100010a81000a810a0082 ! 000a0081000a810a0082000a0081000a010a0100010a81000a810a0082000a0081000a81 ! 0a0081000a1c0a010681050c810c050005 ! 81030781070382030a0c110c0100780c0102530c050b3f0c0100130c820a030781070381 ! 030c080c81050c810c0581050c810c0a050a010c150a0100360a010681050c810c058105 ! 0c0c0c81050c810c0581050c810c0a020a01060708010c030a0100010a81000a810a0082 ! 000a0081000a810a0082000a0081000a010a0100010a81000a810a0081000a810a000200 ! 1e0a010681050c810c050005 ! 81030781070382030a0c110c0100780c0102500c050b420c0100130c820a030781070381 ! 030c080c81050c810c0581050c810c0a560a010681050c810c0581050c0c0c81050c810c ! 0581050c810c0a020a0106090c470a010681050c810c050005 ! 81030781070382030a0c110c0100780c01024d0c050b450c0100130c820a030781070381 ! 030c080c81050c810c0581050c810c0a560a010681050c810c0581050c0c0c81050c810c ! 0581050c810c0a020a81060c090c470a010681050c810c050005 ! 81030781070382030a0c110c0100780c01024a0c050b480c0100130c820a030781070381 ! 030c080c81050c810c0581050c810c0a560a010681050c810c0581050c0c0c81050c810c ! 0581050c810c0a560a010681050c810c050005 ! 81030781070382030a0c110c0100780c0102470c050b4b0c0100130c820a030781070381 ! 030c080c81050c810c0581050c810c0a560a010681050c810c0581050c0c0c81050c810c ! 0581050c810c0a560a010681050c810c050005 ! 81030781070382030a0c110c0100780c0102450c040b4e0c0100130c820a030781070381 ! 030c080c81050c810c0581050c810c0a560a010681050c810c0581050c0c0c81050c810c ! 0581050c810c0a560a010681050c810c050005 ! 81030781070382030a0c110c0100780c0102430c040b500c0100130c820a030781070381 ! 030c080c81050c810c0581050c810c0a560a010681050c810c0581050c0c0c81050c810c ! 0581050c810c0a560a010681050c810c050005 ! 81030781070382030a0c110c0100780c0102400c040b530c0100130c820a030781070381 ! 030c080c81050c810c0581050c810c0a560a010681050c810c0581050c0c0c81050c810c ! 0581050c810c0a560a010681050c810c050005 ! 81030781070382030a0c110c0100780c01023e0c040b550c0100130c820a030781070381 ! 030c080c81050c810c0581050c810c0a560a010681050c810c0581050c0c0c81050c810c ! 0581050c810c0a560a010681050c810c050005 ! 81030781070382030a0c110c0100780c01023c0c040b570c0100130c820a030781070381 ! 030c080c81050c810c0581050c810c0a050a01064e0a010681050c810c0581050c0c0c81 ! 050c810c0581050c810c0a560a010681050c810c050005 ! 81030781070382030a0c110c0100780c0102390c040b5a0c0100130c820a030781070381 ! 030c080c81050c810c0581050c810c0a040a0306090a0100040a0100080a0100810a0081 ! 000a030a0100250a010681050c810c0581050c0c0c81050c810c0581050c810c0a560a01 ! 0681050c810c050005 ! 81030781070382030a0c110c0100780c0102370c040b5c0c0100130c820a030781070381 ! 030c080c81050c810c0581050c810c0a030a0506080a0100040a0100080a0100810a0081 ! 000a030a0100250a010681050c810c0581050c0c0c81050c810c0581050c810c0a560a01 ! 0681050c810c050005 ! 81030781070382030a0c110c0100780c0102350c040b5e0c0100130c820a030781070381 ! 030c080c81050c810c0581050c810c0a020a0206010a0206070a0200020a0200810a0003 ! 00020a81000a810a000100020a0200010a03001f0a010681050c810c0581050c0c0c8105 ! 0c810c0581050c810c0a020a0b06470a010681050c810c050005 ! 81030781070382030a0c110c0100780c0102330c040b600c0100130c820a030781070381 ! 030c080c81050c810c0581050c810c0a010a0206030a0206060a0200020a0200030a0100 ! 010a0100010a0200020a0200810a0081000a810a0081000a1d0a010681050c810c058105 ! 0c0c0c81050c810c0581050c810c0a020a0a06810c0a020a0100040a01000a0a0100810a ! 0081000a030a0100230a010681050c810c050005 ! 81030781070382030a0c110c0100780c0102310c040b620c0100130c820a030781070381 ! 030c080c81050c810c0581050c810c0a810a060106050a0206050a0300810a000200020a ! 0100020a0100010a0300810a000200810a000100210a010681050c810c0581050c0c0c81 ! 050c810c0581050c810c0a020a01060708010c030a0100040a01000a0a0100810a008100 ! 0a030a0100230a010681050c810c050005 ! 81030781070382030a0c110c0100780c01022f0c040b640c0100130c820a030781070381 ! 030c080c81050c810c0581050c820c0a0c010c070a020c040a0100850a000a000a008100 ! 0a010a81000a020a81000a010a0100850a000a000a0081000a010a02001f0a010681050c ! 810c0581050c0c0c81050c810c0581050c810c0a020a01060708010c030a0200020a0200 ! 810a0081000a010a0100020a81000a810a000100020a0200010a03001d0a010681050c81 ! 0c050005 ! 81030781070382030a0c110c0100780c01022d0c040b660c0100130c820a030781070381 ! 030c080c81050c810c0581050c810c0a810a0c010c050a020c050a0100810a000100810a ! 0081000a810a0081000a020a81000a010a0100810a000100810a0081000a020a02001e0a ! 010681050c810c0581050c0c0c81050c810c0581050c810c0a020a01060708010c030a02 ! 00020a0200810a0081000a010a0100010a0100010a0200020a0200810a0081000a810a00 ! 81000a1b0a010681050c810c050005 ! 81030781070382030a0c110c0100780c01022b0c040b680c0100130c820a030781070381 ! 030c080c81050c810c0581050c810c0a010a020c030a020c060a0100010a81000a810a00 ! 82000a0081000a020a0100020a0100010a81000a810a0082000a0081000a810a0081000a ! 1d0a010681050c810c0581050c0c0c81050c810c0581050c810c0a020a01060708010c03 ! 0a0300810a000200010a0100810a0081000a010a0100010a0300810a000200810a000100 ! 1f0a010681050c810c050005 ! 81030781070382030a0c020c0100040c0100050c0100780c01022a0c030b6a0c0100130c ! 820a030781070381030c080c81050c810c0581050c810c0a020a020c010a020c070a0100 ! 010a81000a810a0082000a000300810a0081000a010a0100010a81000a810a0081000a81 ! 0a0002001f0a010681050c810c0581050c0c0c81050c810c0581050c810c0a020a010607 ! 08010c030a0100850a000a000a0081000a810a0082000a0081000a010a81000a010a0100 ! 850a000a000a0081000a010a02001d0a010681050c810c050005 ! 81030781070382030a0c020c0100040c0100050c0100780c0102280c030b6c0c0100130c ! 820a030781070381030c080c81050c810c0581050c810c0a030a050c4c0a010681050c81 ! 0c0581050c0c0c81050c810c0581050c810c0a020a01060708010c030a0100810a000100 ! 810a0081000a010a0200030a81000a010a0100810a000100810a0081000a020a02001c0a ! 010681050c810c050005 ! 81030781070382030a0c020c0200020c0200050c0100780c0102270c020b6e0c0100130c ! 820a030781070381030c080c81050c810c0581050c810c0a040a030c4d0a010681050c81 ! 0c0581050c0c0c81050c810c0581050c810c0a020a01060708010c030a0100010a81000a ! 810a0081000a010a0200020a0100020a0100010a81000a810a0082000a0081000a810a00 ! 81000a1b0a010681050c810c050005 ! 81030781070382030a0c020c0200020c0200050c0100780c0102250c030b6f0c0100130c ! 820a030781070381030c080c81050c810c0581050c810c0a050a010c4e0a010681050c81 ! 0c0581050c0c0c81050c810c0581050c810c0a020a01060708010c030a0100010a81000a ! 810a0081000a020a0100020a0100020a0100010a81000a810a0081000a810a0002001d0a ! 010681050c810c050005 ! 81030781070382030a0c020c0300810c000200050c0100780c0102230c030b710c010013 ! 0c820a030781070381030c080c81050c810c0581050c810c0a560a010681050c810c0581 ! 050c0c0c81050c810c0581050c810c0a020a0106090c100a81000a340a010681050c810c ! 050005 ! 81030781070382030a0c020c0100850c000c000c0081000c040c0100780c0102220c030b ! 720c0100130c820a030781070381030c080c81050c810c0581050c810c0a560a01068105 ! 0c810c0581050c0c0c81050c810c0581050c810c0a020a81060c090c0f0a0100350a0106 ! 81050c810c050005 ! 81030781070382030a0c020c0100810c000100810c0081000c040c0100780c0102200c03 ! 0b740c0100130c820a030781070381030c080c81050c810c0581050c810c0a560a010681 ! 050c810c0581050c0c0c81050c810c0581050c810c0a1d0a0100360a010681050c810c05 ! 0005 ! 81030781070382030a0c020c0100010c81000c810c0081000c040c0100780c01021f0c02 ! 0b760c0100130c820a030781070381030c080c81050c810c0581050c810c0a560a010681 ! 050c810c0581050c0c0c81050c810c0581050c810c0a560a010681050c810c050005 ! 81030781070382030a0c020c0100010c81000c810c0081000c040c0100780c01021d0c03 ! 0b770c0100130c820a030781070381030c080c81050c810c0581050c810c0a560a010681 ! 050c810c0581050c0c0c81050c810c0581050c810c0a560a010681050c810c050005 ! 81030781070382030a0c110c0100780c01021c0c020b790c0100130c820a030781070381 ! 030c080c81050c810c0581050c810c0a560a010681050c810c0581050c0c0c81050c810c ! 0581050c810c0a560a010681050c810c050005 ! 81030781070382030a0c110c0100780c01021a0c030b7a0c0100130c820a030781070381 ! 030c080c81050c810c0581050c810c0a560a010681050c810c0581050c0c0c81050c810c ! 0581050c810c0a560a010681050c810c050005 ! 81030781070382030a0c110c0100780c0102190c020b7c0c0100130c820a030781070381 ! 030c080c82050c050105010c570a010682050c0501050d0c81050c810c0581050c810c0a ! 560a010681050c810c050005 ! 81030781070382030a0c110c0100780c0102180c020b7d0c0100130c820a030781070381 ! 030c080c0405010c060a01064e0a010604050d0c81050c810c0581050c810c0a560a0106 ! 81050c810c050005 ! 81030781070382030a0c110c0100780c0102160c030b7e0c0100130c820a030781070381 ! 030c080c81050c010c81050c810c0a040a0306090a05003d0a010681050c010c81050c0c ! 0c81050c810c0581050c810c0a560a010681050c810c050005 ! 81030781070382030a0c060c0100080c0100780c0102150c020b7f0c810c0081000c120c ! 820a030781070381030c080c81050c810c0581050c810c0a030a0506080a0100410a0106 ! 81050c810c0581050c0c0c81050c810c0581050c810c0a560a010681050c810c050005 ! 81030781070382030a0c060c0100080c0100780c0102130c030b740c0c010100130c820a ! 030781070381030c080c81050c810c0581050c810c0a020a0206010a0206070a0100040a ! 0100810a0081000a010a0300010a0100810a0082000a0082000a0082000a0081000a010a ! 01001b0a010681050c810c0581050c0c0c81050c810c0581050c810c0a020a0b06470a01 ! 0681050c810c050005 ! 81030781070382030a0c060c81000c080c0100780c0102120c020b690c19010100130c82 ! 0a030781070381030c080c81050c810c0581050c810c0a010a0206030a0206060a010004 ! 0a0200810a0082000a0081000a810a0082000a000500810a000100810a0081000a010a01 ! 001b0a010681050c810c0581050c0c0c81050c810c0581050c810c0a020a0a06810c0a02 ! 0a0100040a0100080a0100810a0081000a030a0100250a010681050c810c050005 ! 81030781070382030a0c050c0100090c0100780c0102110c020b5c0c1b010b0c0100130c ! 820a030781070381030c080c81050c810c0581050c810c0a810a060106050a0206050a05 ! 00810a0081000a810a0082000a0081000a810a0082000a000100010a0100010a0100010a ! 0100810a0081000a1b0a010681050c810c0581050c0c0c81050c810c0581050c810c0a02 ! 0a01060708010c030a0100040a0100080a0100810a0081000a030a0100250a010681050c ! 810c050005 ! 81030781070382030a0c050c0100090c0100780c01020f0c030b4f0c1c01180c0100130c ! 820a030781070381030c080c81050c810c0581050c820c0a0c010c070a020c040a010004 ! 0a0100010a0100810a000400810a0081000a010a0100010a0100010a0100810a0081000a ! 1b0a010681050c810c0581050c0c0c81050c810c0581050c810c0a020a01060708010c03 ! 0a0200020a0200810a000300020a81000a810a000100020a0200010a03001f0a01068105 ! 0c810c050005 ! 81030781070382030a0c050c81000c090c0100780c01020e0c020b430c1c01260c010013 ! 0c820a030781070381030c080c81050c810c0581050c810c0a810a0c010c050a020c050a ! 0100040a0100010a0100810a0081000a030a0100020a0100010a0100020a02001d0a0106 ! 81050c810c0581050c0c0c81050c810c0581050c810c0a020a01060708010c030a020002 ! 0a0200030a0100010a0100010a0200020a0200810a0081000a810a0081000a1d0a010681 ! 050c810c050005 ! 81030781070382030a0c050c81000c090c0100780c01020c0c030b360c1c01340c010013 ! 0c820a030781070381030c080c81050c810c0581050c810c0a010a020c030a020c060a01 ! 00040a0100010a0100810a0081000a810a0082000a0081000a010a0100810a000100020a ! 02001d0a010681050c810c0581050c0c0c81050c810c0581050c810c0a020a0106070801 ! 0c030a0300810a000200020a0100020a0100010a0300810a000200810a000100210a0106 ! 81050c810c050005 ! 81030781070382030a0c040c01000a0c0100780c01020b0c030b290c1c01420c0100130c ! 820a030781070381030c080c81050c810c0581050c810c0a020a020c010a020c070a0500 ! 810a0081000a810a0081000a810a000200010a0100030a0100810a0081000a020a01001d ! 0a010681050c810c0581050c0c0c81050c810c0581050c810c0a020a01060708010c030a ! 0100850a000a000a0081000a010a81000a020a81000a010a0100850a000a000a0081000a ! 010a02001f0a010681050c810c050005 ! 81030781070382030a0c040c01000a0c0100780c0102090c030b240c1501500c0100130c ! 820a030781070381030c080c81050c810c0581050c810c0a030a050c260a0100030a8100 ! 0a1d0a010681050c810c0581050c0c0c81050c810c0581050c810c0a020a01060708010c ! 030a0100810a000100810a0081000a810a0081000a020a81000a010a0100810a00010081 ! 0a0081000a020a02001e0a010681050c810c050005 ! 81030781070382030a0c110c0100780c0102080c030b1e0c0e015e0c0100130c820a0307 ! 81070381030c080c81050c810c0581050c810c0a040a030c230a0100010a0100020a0100 ! 1e0a010681050c810c0581050c0c0c81050c810c0581050c810c0a020a01060708010c03 ! 0a0100010a81000a810a0082000a0081000a020a0100020a0100010a81000a810a008200 ! 0a0081000a810a0081000a1d0a010681050c810c050005 ! 81030781070382030a0c110c0100780c0102080c010b120c1501650c0100130c820a0307 ! 81070381030c080c81050c810c0581050c810c0a050a010c250a0300020a01001f0a0106 ! 81050c810c0581050c0c0c81050c810c0581050c810c0a020a01060708010c030a010001 ! 0a81000a810a0082000a000300810a0081000a010a0100010a81000a810a0081000a810a ! 0002001f0a010681050c810c050005 ! 81030781070382030a0c110c7f007f001800130c820a030781070381030c080c81050c81 ! 0c0581050c810c0a560a010681050c810c0581050c0c0c81050c810c0581050c810c0a02 ! 0a0106090c470a010681050c810c050005 ! 81030781070382030a0c110c7f007f001800130c820a030781070381030c080c81050c81 ! 0c0581050c810c0a560a010681050c810c0581050c0c0c81050c810c0581050c810c0a02 ! 0a81060c090c470a010681050c810c050005 ! 81030781070382030a0c110c0100720c050101020401030b03017f0c0c0c0100130c820a ! 030781070381030c080c81050c810c0581050c810c0a560a010681050c810c0581050c0c ! 0c81050c810c0581050c810c0a560a010681050c810c050005 ! 81030781070382030a0c020c0100040c0100050c0100660c110101020201010c010b7f0c ! 120c0100130c820a030781070381030c080c81050c810c0581050c810c0a560a01068105 ! 0c810c0581050c0c0c81050c810c0581050c810c0a560a010681050c810c050005 ! 81030781070382030a0c020c0100040c0100050c0100590c1901040c0102020c030b7f0c ! 120c0100130c820a030781070381030c080c81050c810c0581050c810c06580681050c81 ! 0c0581050c0c0c81050c810c0581050c810c0a560a010681050c810c050005 ! 81030781070382030a0c020c0200020c0200050c01004e0c1801100c0102010c030b7f0c ! 130c0100130c820a030781070381030c080c81050c810c0582050c06590681050c810c05 ! 81050c0c0c81050c810c0581050c810c0a560a010681050c810c050005 ! 81030781070382030a0c020c0200020c0200050c0100440c15011d0c0102810c0b010b7f ! 0c150c0100130c820a030781070381030c080c81050c810c055d05010c01050d0c81050c ! 810c0581050c810c0a560a010681050c810c050005 ! 81030781070382030a0c020c0300810c000200050c0100440c0a01280c0102810c0b810b ! 0c7f0c150c0100130c820a030781070381030c080c81050c820c050c100c81050c360c81 ! 050c120c01050d0c81050c810c0581050c810c0a560a010681050c810c050005 ! 81030781070382030a0c020c0100850c000c000c0081000c040c0100780c81020b020b7f ! 0c160c0100130c820a030781070381030c080c81050c120c0105360c0105130c01050d0c ! 81050c810c0581050c810c0a560a010681050c810c050005 ! 81030781070382030a0c020c0100810c000100810c0081000c040c0100780c030b7f0c17 ! 0c0100130c820a030781070381030c080c82050c051305810c053605810c0513050d0c81 ! 050c810c0581050c810c0a560a010681050c810c050005 ! 81030781070382030a0c020c0100010c81000c810c0081000c040c0100780c010b7f0c19 ! 0c0100130c820a030781070381030c080c65050d0c82050c050105010c570a010682050c ! 050105 ! 81030781070382030a0c020c0100010c81000c810c0081000c040c0100780c010b7f0c19 ! 0c0100130c820a030781070381030c7c0c0405010c030a0b06470a01060405 ! 81030781070382030a0c110c0100780c010b7f0c190c0100130c820a030781070381030c ! 7c0c81050c010c81050c810c0a020a0a06810c0a020a05003d0a010681050c010c0005 ! 81030781070382030a0c110c0100780c010b7f0c190c0100130c820a030781070381030c ! 7c0c81050c810c0581050c810c0a020a0106070a010c030a0100410a010681050c810c05 ! 0005 ! 81030781070382030a0c110c0100760c030b7f0c190c0100130c820a030781070381030c ! 7c0c81050c810c0581050c810c0a020a0106070a010c030a0100040a0100810a0081000a ! 010a0300010a0100810a0082000a0082000a0082000a0081000a010a01001b0a01068105 ! 0c810c050005 ! 81030781070382030a0c110c0100750c030b81020c7f0c180c0100130c820a0307810703 ! 81030c7c0c81050c810c0581050c810c0a020a0106070a010c030a0100040a0200810a00 ! 82000a0081000a810a0082000a000500810a000100810a0081000a010a01001b0a010681 ! 050c810c050005 ! 81030781070382030a0c110c0100720c040b810c0281020c7f0c180c0100130c820a0307 ! 81070381030c7c0c81050c810c0581050c810c0a020a0106070a010c030a0500810a0081 ! 000a810a0082000a0081000a810a0082000a000100010a0100010a0100010a0100810a00 ! 81000a1b0a010681050c810c050005 ! 81030781070382030a0c110c0100710c040b010c01027f0c190c0100130c820a03078107 ! 0381030c7c0c81050c810c0581050c810c0a020a0106070a010c030a0100040a0100010a ! 0100810a000400810a0081000a010a0100010a0100010a0100810a0081000a1b0a010681 ! 050c810c050005 ! 81030781070382030a0c110c01006f0c030b040c01027f0c190c0100130c820a03078107 ! 0381030c7c0c81050c810c0581050c810c0a020a0106070a010c030a0100040a0100010a ! 0100810a0081000a030a0100020a0100010a0100020a02001d0a010681050c810c050005 ! ! 81030781070382030a0c040c0300080c01006e0c030b050c01027f0c190c0100130c820a ! 030781070381030c7c0c81050c810c0581050c810c0a020a0106070a010c030a0100040a ! 0100010a0100810a0081000a810a0082000a0081000a010a0100810a000100020a02001d ! 0a010681050c810c050005 ! 81030781070382030a0c030c0100010c0100070c01006d0c020b070c01027f0c190c0100 ! 130c820a030781070381030c7c0c81050c810c0581050c810c0a020a0106070a010c030a ! 0500810a0081000a810a0081000a810a000200010a0100030a0100810a0081000a020a01 ! 001d0a010681050c810c050005 ! 81030781070382030a0c030c02000a0c01006d0c010b080c01027f0c190c0100130c820a ! 030781070381030c7c0c81050c810c0581050c810c0a020a0106090c210a0100030a8100 ! 0a1d0a010681050c810c050005 ! 81030781070382030a0c050c0200080c01006d0c010b080c01027f0c190c0100130c820a ! 030781070381030c7c0c81050c810c0581050c810c0a020a81060c090c1d0a0100010a01 ! 00020a01001e0a010681050c810c050005 ! 81030781070382030a0c060c0200070c01006d0c010b080c01027f0c190c0100130c820a ! 030781070381030c7c0c81050c810c0581050c810c0a2d0a0300020a01001f0a01068105 ! 0c810c050005 ! 81030781070382030a0c030c0100010c0100070c01006d0c010b080c01027f0c190c0100 ! 130c820a030781070381030c7c0c81050c810c0581050c810c0a560a010681050c810c05 ! 0005 ! 81030781070382030a0c040c0300080c01006d0c010b080c01027f0c190c0100130c820a ! 030781070381030c7c0c81050c810c0581050c810c0a560a010681050c810c050005 ! 81030781070382030a0c110c01006d0c010b080c01027f0c190c0100130c820a03078107 ! 0381030c7c0c81050c810c0581050c810c0a560a010681050c810c050005 ! 81030781070382030a0c110c01006d0c010b080c01027f0c190c0100130c820a03078107 ! 0381030c7c0c81050c810c0581050c810c0a560a010681050c810c050005 ! 81030781070382030a0c110c01006a0c040b080c01027f0c190c0100130c820a03078107 ! 0381030c7c0c81050c810c0581050c810c06580681050c810c050005 ! 81030781070382030a0c110c0100680c050b090c01027f0c190c0100130c820a03078107 ! 0381030c7c0c81050c810c0582050c06590681050c810c050005 ! 81030781070382030a0c110c0100660c040b0c0c01027f0c190c0100130c820a03078107 ! 0381030c7c0c81050c810c055d05010c0105 ! 81030781070382030a0c110c0100640c040b0e0c01027f0c190c0100130c820a03078107 ! 0381030c7c0c81050c820c050c100c81050c360c81050c120c0105 ! 81030781070382030a0c110c0100610c050b100c01027f0c190c0100130c820a03078107 ! 0381030c7c0c81050c120c0105360c0105130c0105 ! 81030781070382030a0c110c0100600c040b120c01027f0c190c0100130c820a03078107 ! 0381030c7c0c82050c051305810c053605810c051305 ! 81030781070382030a0c110c01005d0c040b150c01027f0c190c0100130c820a03078107 ! 0381030c7c0c6505 ! 81030781070382030a0c110c01005c0c040b160c01027f0c190c0100130c820a03078107 ! 0381030c7f0c620c ! 81030781070382030a0c110c0100590c040b190c01027f0c190c0100130c820a03078107 ! 0381030c7f0c620c ! 81030781070382030a0c110c0100560c060b1a0c01027f0c190c0100130c820a03078107 ! 0381030c7f0c620c ! 81030781070382030a0c110c0100530c060b1d0c01027f0c190c0100130c820a03078107 ! 0381030c7f0c620c ! 81030781070382030a0c110c0100520c040b200c01027f0c190c0100130c820a03078107 ! 0381030c7f0c620c ! 81030781070382030a0c110c01004f0c040b230c01027f0c190c0100130c820a03078107 ! 0381030c7f0c620c ! 81030781070382030a0c110c01004d0c050b240c01027f0c190c0100130c820a03078107 ! 0381030c7f0c620c ! 81030781070382030a0c110c01004a0c050b270c01027f0c190c0100130c820a03078107 ! 0381030c7f0c620c ! 81030781070382030a0c110c0100470c060b290c01027f0c190c0100130c820a03078107 ! 0381030c7f0c620c ! 81030781070382030a0c110c0100440c060b2c0c01027f0c190c0100130c820a03078107 ! 0381030c7f0c620c ! 81030781070382030a0c110c0100440c030b2f0c01027f0c190c0100130c820a03078107 ! 0381030c7f0c620c ! 81030781070382030a0c110c0100780c01027f0c190c0100130c820a030781070381030c ! 7f0c620c ! 81030781070382030a0c110c0100780c01027f0c190c0100130c820a030781070381030c ! 7f0c620c ! 81030781070382030a0c110c0100780c01027f0c190c0100130c820a030781070381030c ! 7f0c620c ! 81030781070382030a0c110c0100780c01027f0c190c0100130c820a030781070381030c ! 7f0c620c ! 81030781070382030a0c110c0100780c01027f0c190c0100130c820a030781070381030c ! 7f0c620c ! 81030781070382030a0c110c0100780c01027f0c190c0100130c820a030781070381030c ! 7f0c620c ! 81030781070382030a0c110c0100780c01027f0c190c0100130c820a030781070381030c ! 7f0c620c ! 81030781070382030a0c110c0100780c01027f0c190c0100130c820a030781070381030c ! 7f0c620c ! 81030781070382030a0c110c0100780c01027f0c190c0100130c820a030781070381030c ! 7f0c620c ! 81030781070382030a0c110c0100780c01027f0c190c0100130c820a030781070381030c ! 7f0c620c ! 81030781070382030a0c110c0100780c01027f0c190c0100130c820a030781070381030c ! 7f0c620c ! 81030781070382030a0c110c0100780c01027f0c190c0100130c820a030781070381030c ! 7f0c620c ! 81030781070382030a0c110c0100780c01027f0c190c0100130c820a030781070381030c ! 7f0c620c ! 81030781070382030a0c110c0100780c01027f0c190c0100130c820a030781070381030c ! 7f0c620c ! 81030781070382030a0c110c0100780c01027f0c190c0100130c820a030781070381030c ! 7f0c620c ! 81030781070382030a0c110c0100780c01027f0c190c0100130c820a030781070381030c ! 7f0c620c ! 81030781070382030a0c110c0100780c01027f0c190c0100130c820a030781070381030c ! 7f0c620c ! 81030781070382030a0c110c0100780c01027f0c190c0100130c820a030781070381030c ! 7f0c620c ! 81030781070382030a0c110c0100780c01027f0c190c0100130c820a030781070381030c ! 7f0c620c ! 81030781070382030a0c110c0100780c01027f0c190c0100130c820a030781070381030c ! 7f0c620c ! 81030781070382030a0c110c0300760c01027f0c180c0200130c820a030781070381030c ! 7f0c620c ! 81030781070382030a0c110c0300760c01027f0c180c0200130c820a030781070381030c ! 7f0c620c ! 81030781070382030a0c110c0100780c01027f0c190c0100130c820a030781070381030c ! 7f0c620c ! 81030781070382030a0c110c0100780c01027f0c190c0100130c820a030781070381030c ! 7f0c620c ! 81030781070382030a0c110c0100780c01027f0c190c0100130c820a030781070381030c ! 7f0c620c ! 81030781070382030a0c110c0100780c01027f0c190c0100130c820a030781070381030c ! 7f0c620c ! 81030781070382030a0c110c0100780c01027f0c190c0100130c820a030781070381030c ! 7f0c620c ! 81030781070382030a0c110c0100780c01027f0c190c0100130c820a030781070381030c ! 7f0c620c ! 81030781070382030a0c110c0100780c01027f0c190c0100130c820a030781070381030c ! 7f0c620c ! 81030781070382030a0c110c0100780c01027f0c190c0100130c820a030781070381030c ! 7f0c620c ! 81030781070382030a0c110c0100780c01027f0c190c0100130c820a030781070381030c ! 7f0c620c ! 81030781070382030a0c110c0100780c01027f0c190c0100130c820a030781070381030c ! 7f0c620c ! 81030781070382030a0c110c0100780c01027f0c190c0100130c820a030781070381030c ! 7f0c620c ! 81030781070382030a0c110c0100780c01027f0c190c0100130c820a030781070381030c ! 7f0c620c ! 81030781070382030a0c110c0100780c01027f0c190c0100130c820a030781070381030c ! 7f0c620c ! 81030781070382030a0c110c0100780c01027f0c190c0100130c820a030781070381030c ! 7f0c620c ! 81030781070382030a0c110c0100780c01027f0c190c0100130c820a030781070381030c ! 7f0c620c ! 81030781070382030a0c110c0100780c01027f0c190c0100130c820a030781070381030c ! 7f0c620c ! 81030781070382030a0c110c0100780c01027f0c190c0100130c820a030781070381030c ! 7f0c620c ! 81030781070382030a0c110c0100780c01027f0c190c0100130c820a030781070381030c ! 7f0c620c ! 81030781070382030a0c110c0100780c01027f0c190c0100130c820a030781070381030c ! 7f0c620c ! 81030781070382030a0c110c0100780c01027f0c190c0100130c820a030781070381030c ! 7f0c620c ! 81030781070382030a0c110c0100780c01027f0c190c0100130c820a030781070381030c ! 7f0c620c ! 81030781070382030a0c110c0100780c01027f0c190c0100130c820a030781070381030c ! 7f0c620c ! 81030781070382030a0c110c0100780c01027f0c190c0100130c820a030781070381030c ! 7f0c620c ! 81030781070382030a0c110c0100780c01027f0c190c0100130c820a030781070381030c ! 7f0c620c ! 81030781070382030a0c110c0100780c01027f0c190c0100130c820a030781070381030c ! 7f0c620c ! 81030781070382030a0c110c0100780c01027f0c190c0100130c820a030781070381030c ! 7f0c620c ! 81030781070382030a0c110c0100780c01027f0c190c0100130c820a030781070381030c ! 7f0c620c ! 81030781070382030a0c110c0100780c01027f0c190c0100130c820a030781070381030c ! 7f0c620c ! 81030781070382030a0c110c0100780c01027f0c190c0100130c820a030781070381030c ! 7f0c620c ! 81030781070382030a0c110c0100780c01027f0c190c0100130c820a030781070381030c ! 7f0c620c ! 81030781070382030a0c110c0100780c01027f0c190c0100130c820a030781070381030c ! 7f0c620c ! 81030781070382030a0c110c0100780c01027f0c190c0100130c820a030781070381030c ! 7f0c620c ! 81030781070382030a0c110c0100780c01027f0c190c0100130c820a030781070381030c ! 7f0c620c ! 81030781070382030a0c110c0100780c01027f0c190c0100130c820a030781070381030c ! 7f0c620c ! 81030781070382030a0c110c0100780c01027f0c190c0100130c820a030781070381030c ! 7f0c620c ! 81030781070382030a0c110c0100780c01027f0c190c0100130c820a030781070381030c ! 7f0c620c ! 81030781070382030a0c110c0100780c01027f0c190c0100130c820a030781070381030c ! 7f0c620c ! 81030781070382030a0c110c0100780c01027f0c190c0100130c820a030781070381030c ! 7f0c620c ! 81030781070382030a0c110c0100780c01027f0c190c0100130c820a030781070381030c ! 7f0c620c ! 81030781070382030a0c110c0100780c01027f0c190c0100130c820a030781070381030c ! 7f0c620c ! 81030781070382030a0c110c0100780c01027f0c190c0100130c820a030781070381030c ! 7f0c620c ! 81030781070382030a0c110c0100780c01027f0c190c0100130c820a030781070381030c ! 7f0c620c ! 81030781070382030a0c110c0100780c01027f0c190c0100130c820a030781070381030c ! 7f0c620c ! 81030781070382030a0c110c0100780c01027f0c190c0100130c820a030781070381030c ! 7f0c620c ! 81030781070382030a0c110c0100780c01027f0c190c0100130c820a030781070381030c ! 7f0c620c ! 81030781070382030a0c110c0100780c01027f0c190c0100130c820a030781070381030c ! 7f0c620c ! 81030781070382030a0c110c0100780c01027f0c190c0100130c820a030781070381030c ! 7f0c620c ! 81030781070382030a0c110c0100780c01027f0c190c0100130c820a030781070381030c ! 7f0c620c ! 81030781070382030a0c110c0100750c04027f0c190c0100130c820a030781070381030c ! 7f0c620c ! 81030781070382030a0c110c0100720c07027f0c190c0100130c820a030781070381030c ! 7f0c620c ! 81030781070382030a0c110c01006f0c06027f0c1d0c0100130c820a030781070381030c ! 7f0c620c ! 81030781070382030a0c110c01006e0c04027f0c200c0100130c820a030781070381030c ! 7f0c620c ! 81030781070382030a0c0b0c0100030c0100440c0302240c02027f0c230c0100130c820a ! 030781070381030c7f0c620c ! 81030781070382030a0c090c0300030c0100440c0d021a0c01027f0c240c0100130c820a ! 030781070381030c7f0c620c ! 81030781070382030a0c0b0c0100030c0100470c15020f0c01027f0c240c0100130c820a ! 030781070381030c7f0c620c ! 81030781070382030a0c0b0c0100030c0100510c1702030c01027f0c240c0100130c820a ! 030781070381030c7f0c620c ! 81030781070382030a0c0b0c0100030c01005c0c12027f0c240c0100130c820a03078107 ! 0381030c7f0c620c ! 81030781070382030a0c020c0400030c0100030c0100680c06027f0c240c0100130c820a ! 030781070381030c7f0c620c ! 81030781070382030a0c0b0c0100030c01007f0c7f0c140c0100130c820a030781070381 ! 030c7f0c620c ! 81030781070382030a0c0b0c0100030c01007f0c7f0c140c0100130c820a030781070381 ! 030c7f0c620c ! 81030781070382030a0c0b0c0100030c01007f0c090c01007f0c080c0100130c820a0307 ! 81070381030c7f0c620c ! 81030781070382030a0c110c0100430c0100430c0100430c0100420c0100130c820a0307 ! 81070381030c7f0c620c ! 81030781070382030a0c110c0100430c0100430c0100430c0100420c0100130c820a0307 ! 81070381030c7f0c620c ! 81030781070382030a0c110c7f007f001800130c820a030781070381030c7f0c620c ! 820307030103810a0c110c7f007f001800130c830a03070301037f0c630c ! 0403810a0c7f0c7f0c3e0c810a0303037f0c630c ! 810307010782030a0c7f0c7f0c3e0c820a0307010781030c7f0c620c ! 81030781070382030a0c7f0c7f0c3e0c820a030781070381030c7f0c620c ! 81030781070382030a0c0e0c0100030c0300020c0300660c05000f0c01000b0c0700810c ! 0081000c6a0c0100030c0300020c03000b0c820a030781070381030c7f0c620c ! 81030781070382030a0c0c0c0300020c0100010c0100810c0081000c810c0081000c640c ! 0100020c01000d0c01000f0c0100040c0100680c0300020c0100010c0100810c0081000c ! 810c0081000c090c820a030781070381030c7f0c620c ! 81030781070382030a0c0e0c0100020c0100010c0100810c0081000c810c0081000c640c ! 0100020c0100810c0081000c810c0081000c050c0100010c82000c000100810c00010004 ! 0c0100040c01006a0c0100020c0100010c0100810c0081000c810c0081000c090c820a03 ! 0781070381030c7f0c620c ! 81030781070382030a0c0e0c0100020c0100010c0100810c0081000c810c0081000c640c ! 0100020c0100810c0081000c810c0081000c040c0100020c0100010c0100010c0100030c ! 0100050c0100690c0100020c0100010c0100810c0081000c810c0081000c090c820a0307 ! 81070381030c7f0c620c ! 81030781070382030a0c0e0c0100020c0100010c0100810c0081000c810c0081000c640c ! 0500020c0300060c0100020c0100010c0100010c0100030c0100050c0100690c0100020c ! 0100010c0100810c0081000c810c0081000c090c820a030781070381030c7f0c620c ! 81030781070382030a0c050c0400030c0100020c0100010c0100810c0081000c810c0081 ! 000c640c0100020c0100020c0100070c0100020c0100010c0100010c0100030c0100050c ! 0100690c0100020c0100010c0100810c0081000c810c0081000c090c820a030781070381 ! 030c7f0c620c ! 81030781070382030a0c0e0c0100020c0100010c0100810c0081000c810c0081000c640c ! 0100020c0100010c0300060c0100020c0100010c0100010c0100030c0100050c0100690c ! 0100020c0100010c0100810c0081000c810c0081000c090c820a030781070381030c7f0c ! 620c ! 81030781070382030a0c0e0c0100020c0100010c0100810c0081000c810c0081000c640c ! 0100020c0100810c0081000c810c0081000c040c0100020c0100010c0100010c0100030c ! 0100050c0100690c0100020c0100010c0100810c0081000c810c0081000c090c820a0307 ! 81070381030c7f0c620c ! 81030781070382030a0c0e0c0100030c0300020c0300660c0500010c0100010c0100050c ! 0100020c0100010c0100010c0100030c0100050c0100690c0100030c0300020c03000b0c ! 820a030781070381030c7f0c620c ! 81030781070382030a0c7f0c1b0c0100160c01007f0c070c820a030781070381030c7f0c ! 620c ! 81030781070382030a0c7f0c1b0c0100160c01007f0c070c820a030781070381030c7f0c ! 620c ! 81030781070382030a0c7f0c1c0c0100140c01007f0c080c820a030781070381030c7f0c ! 620c ! 81030781070382030a0c7f0c7f0c3e0c820a030781070381030c7f0c620c ! 81030781070382030a0c7f0c7f0c3e0c820a030781070381030c7f0c620c ! 81030781070382030a0c7f0c7f0c3e0c820a030781070381030c7f0c620c ! 81030781070381030a7f0a7f0a400a81030781070381030c7f0c620c ! 8103078107037f037f034303010701037f0c630c ! 8103078207030710078103077f077f071c07810307120701037f0c630c ! 810307120701037f077f071c070103130701037f0c630c ! 8203070313038107037f037f031c0381070313037f0c630c ! 7f037f034b037f0c630c % ! % Compression made this file 5.76% of the uncompressed size. % --- 130,1408 ---- } bind def ! 597 383 8 % dimensions of data ! [597 0 0 -383 0 383] % mapping matrix rlecmapimage ! 7f037f035f037f047404 ! 81030813088103087f087f08300881030813088103047f047304 ! 810308120801037f087f0830080103130801037f047404 ! 81030881080312038108037f037f03300381080310038108038103047f047304 ! 8103088108037f037f035703010801037f047404 ! 8103088108038103080f088103087f087f081e088103080f088103080f08810308810803 ! 8103047f047304 ! 8103088108038103080e0801037f087f081e0801030f0801030f080103010801037f0474 ! 04 ! 8103088108038103088108050c05010301087f057f051c05010301080d05010301080d05 ! 0103010801037f047404 ! 8103088108038103088108050c05010301084a0505000105030002050300020503002505 ! 0400140501000a0501000805010007050300060503004605010301080d05010301080d05 ! 0103010801037f047404 ! 8103088108038103088108050c05010301084e0501008105008100058105008200050081 ! 000581050082000500810005810500810005220501000205010013050100080503000605 ! 030006050100010501000405010001050100450501030108010508088103058105038103 ! 088108050c050103010801037f047404 ! 8103088108038103088108050c05010301084d0501000105010001050100810500810005 ! 810500810005030501000b05820005000100810500010001058200050001008105000100 ! 020501000605010081050082000500020001050100810500810005810500820005008100 ! 050605010008050100060501000105010008050100450501030108010581080506058103 ! 058105038103088108050c050103010801037f047404 ! 8103088108038103088108050c0501030108470501000305010001050100010501008105 ! 008100058105008100050105020002050100070501000105010001050100810500810005 ! 810500810005810500810005810500810005050506000105010081050001008105008200 ! 050001008105008100050505010008050100060501000105010007050100460501030108 ! 010581080506058103058105038103088108050c050103010801037f047404 ! 810308810803810308810805810508070881030581050381030881080544050200030501 ! 000305040001050400040501000205020005050100010501000105010081050081000581 ! 050081000581050081000581050081000581050002008105000100050501008105008100 ! 058105008200050081000581050081000505050100080501000605010001050100060501 ! 004705010301080105810805060581030581050381030881080503050208810305030501 ! 03010801037f047404 ! 810308810803810308810805820508050605810305810503810308810805430501000505 ! 010006050100040501000405010004050100040501000105010001050100810500810005 ! 810500810005810500810005810500810005020501008105008100050205040081050081 ! 000581050082000500810005810500810005050501000805010006050100010501000505 ! 010048050103010801058108050605810305810503810308810805030581080582050305 ! 03050103010801037f047404 ! 810308810803810308810805820508050605810305810503810308810805440502000305 ! 010006050100040501000405010002050200050501000105010001050100810500810005 ! 810500810005810500810005810500810005020501008105008100050105010001050100 ! 810500810005810500820005008100058105008100050505010008050100060501000105 ! 010004050100490501030108010581080506058103058105038103088108050305810805 ! 8205030503050103010801037f047404 ! 810308810803810308810805810503080301050103010847050100010501000305010001 ! 050100810500810005810500820005008100058105008100058105008100050605010001 ! 050100010501008105008100058105008100058105008100050105010002050100810500 ! 810005010501000105010081050001008105008200050081000581050081000505050100 ! 030501000205010003050100810500810005810500810005810500820005008100054805 ! 01030108010581080506058103058105038103088108050305030304050103010801037f ! 047404 ! 8103088108038103088108050c05010301084b0501000405030002050300020503000c05 ! 010001050100010501008105008100058105008100058105008100050205030083050005 ! 008100050205020081050002008105008100058105008100058105008100050505010003 ! 050100020501000305010001050300020501008105000400450501030108010581080506 ! 058103058105038103088108050c050103010801037f047404 ! 8103088108038103088108050c05010301087f051d0501007c0501030108010581080506 ! 058103058105038103088108050c050103010801037f047404 ! 8103088108038103088108050c05010301087f051d0501007c0501030108010509030105 ! 010301080d050103010801037f047404 ! 8103088108038103088108050c05010301087f051d0501007c05010301080d0501030108 ! 0d050103010801037f047404 ! 8103088108038103088108050c05010301087f057f051c05010301080d05010301080d05 ! 0103010801037f047404 ! 8203080301038108030f038108037f037f031e038108030f038108030f0381080301037f ! 047404 ! 7f037f035f037f047404 ! 810308010881030d7f0d7f0d540d81030801088103047f047304 ! 81030881080381030d7f0d7f0d530d820703088108038103047f047304 ! 81030881080381030d810d0b7f0b7f0b500b01078103088108038103047f047304 ! 81030881080381030d810d0b7f0b7f0b500b01078103088108038103047f047304 ! 81030881080381030d810d0b7f0b7f0b500b01078103088108038103047f047304 ! 81030881080381030d810d0b7f0b7f0b500b01078103088108038103047f047304 ! 81030881080381030d810d0b7f0b7f0b500b01078103088108038103047f047304 ! 81030881080381030d810d0b7f0b7f0b500b01078103088108038103047f047304 ! 81030881080381030d810d0b7f0b7f0b500b01078103088108038103047f047304 ! 81030881080381030d810d0b7f0b7f0b500b01078103088108038103047f047304 ! 81030881080381030d810d0b7f0b7f0b500b01078103088108038103047f047304 ! 81030881080381030d810d0b080b0700810b0081000b160b0100030b01000f0b0100030b ! 0100010b0100120b0100030b0100810b000200140b03000a0b0100010b01007f0b160b01 ! 00020b0100070b01000e0b01078103088108038103047f047304 ! 81030881080381030d810d0b080b0100060b0100170b0100030b01000f0b0100030b0500 ! 120b0100030b0300010b0100120b0100010b0100090b01007f0b1a0b0100020b0100070b ! 01000e0b01078103088108038103047f047304 ! 81030881080381030d810d0b080b0100030b0100810b0081000b810b000200120b010001 ! 0b0100110b0100010b0100020b0100130b0100010b0100040b0100110b0100030b010081 ! 0b0082000b0081000b810b000200810b0081000b810b000200010b0100810b0081000b01 ! 0b03007f0b020b0100020b0100010b0300010b0100810b0082000b0081000b070b010781 ! 03088108038103047f047304 ! 81030881080381030d810d0b080b0100030b0100810b0082000b0081000b810b0081000b ! 110b0300120b0100010b0100020b0100130b0100010b0100030b0100120b0100030b0100 ! 810b000100810b0081000b810b0081000b810b0082000b0081000b810b0082000b000100 ! 810b0082000b0081000b810b0081000b7f0b810b0081000b010b0100810b0081000b810b ! 0082000b0082000b000100810b0081000b060b01078103088108038103047f047304 ! 81030881080381030d810d0b080b0400810b0082000b0082000b0081000b810b0081000b ! 120b0100140b0300030b0100140b0300030b0100130b0100030b0100810b0081000b810b ! 0081000b810b0081000b810b0082000b0081000b810b0082000b0081000b810b0082000b ! 0001007f0b040b0600810b0081000b810b0082000b0082000b0081000b810b0081000b06 ! 0b01078103088108038103047f047304 ! 81030881080381030d810d0b080b0100030b0100810b0082000b000400120b0300140b01 ! 00040b0100150b0100030b0100140b0100030b0100810b0081000b810b0081000b810b00 ! 81000b810b0082000b0081000b810b0082000b0081000b810b0081000b010b02007f0b02 ! 0b0100020b0100810b000400810b0082000b0081000b810b0081000b060b010781030881 ! 08038103047f047304 ! 81030881080381030d810d0b080b0100030b0100810b0082000b0081000b140b0100010b ! 0100130b0100040b0100150b0100020b0100150b0100030b0100810b0081000b810b0081 ! 000b810b0081000b810b0082000b0081000b810b0082000b0081000b810b0081000b020b ! 02007f0b010b0100020b0100810b0081000b030b0100810b0081000b810b0081000b060b ! 01078103088108038103047f047304 ! 81030881080381030d810d0b080b0100030b0100810b0082000b0081000b810b0081000b ! 0f0b0100030b0100120b0100040b0100150b0100020b0100160b0100010b0100010b0200 ! 810b0081000b810b0082000b000100810b0081000b810b0082000b0081000b810b008200 ! 0b0081000b810b0081000b7f0b810b0081000b010b0100810b0081000b810b0082000b00 ! 82000b000100810b0081000b060b01078103088108038103040b046c067a04 ! 81030881080381030d810d0b080b0100030b0100810b0081000b810b000200110b010003 ! 0b0100120b0100040b0100150b0100020b0500130b0300020b0100810b0081000b020b01 ! 00810b0081000b810b000200010b0100010b0100010b03007f0b020b0100020b0100010b ! 0300010b0100810b0082000b0081000b070b01078103088108038103040b0481060d130d ! 81060d3d0d81060d130d8106047904 ! 81030881080381030d810d0b7f0b0b0b01007f0b340b01000b0b01078103088108038103 ! 040b0481060d120d01063d0d0106130d01067a04 ! 81030881080381030d810d0b070b06001c0b0700170b0600170b06000f0b0b007f0b210b ! 0800090b01000b0b01078103088108038103040b0481060d810d061206810d063d06810d ! 061006810d068106047904 ! 81030881080381030d810d0b7f0b0b0b01007f0b340b01000b0b01078103088108038103 ! 040b0481060d810d066406010d01067a04 ! 81030881080381030d810d0b7f0b7f0b500b01078103088108038103040b0481060d810d ! 0681060d0f0d81060d2b0d81060d0f0d81060d0f0d81060d810d068106047904 ! 81030881080381030d810d0b7f0b7f0b500b01078103088108038103040b0481060d810d ! 0681060d0e0d01062b0d01060f0d01060f0d0106010d01067a04 ! 81030881080381030d810d0b7f0b7f0b500b01078103088108038103040b0481060d810d ! 0681060d810d0a0c0a0106010d290a0106010d0d0a0106010d0d0a0106010d01067a04 ! 81030881080381030d810d0b7f0b7f0b500b01078103088108038103040b0481060d810d ! 0681060d810d0a0c0a0106010d0100030a01000a0a0100090a0100080a0106010d0d0a01 ! 06010d0d0a0106010d01067a04 ! 81030881080381030d810d0b7f0b7f0b500b01078103088108038103040b0481060d810d ! 0681060d810d0a0c0a0106010d0100030a0100090a0300130a0106010d010a080d81060a ! 810a0681060d810d0a0c0a0106010d01067a04 ! 81030881080381030d810d0b7f0b7f0b500b01078103088108038103040b0481060d810d ! 0681060d810d0a0c0a0106010d810a0081000a810a0081000a090a81000a820a000a810a ! 0081000a810a0082000a0081000a810a000200020a0106010d010a810d0a060a81060a81 ! 0a0681060d810d0a0c0a0106010d01067a04 ! 81030881080381030d810d0b7f0b7f0b500b01078103088108038103040b0481060d810d ! 0681060d810d0a0c0a0106010d010a03000a0a0100010a0100810a0081000a810a008200 ! 0a0082000a0081000a810a0081000a810a0681060d810d0a820a0d0a060a81060a810a06 ! 81060d810d0a0c0a0106010d01067a04 ! 81030881080381030d810d0b7f0b7f0b500b01078103088108038103040b0481060d810d ! 0681060d810d0a810a0d070d81060a810a0681060d810d0a010a01000b0a0100010a0100 ! 010a0300010a0100810a000100040a0106010d010a810d0a060a81060a810a0681060d81 ! 0d0a030a020d81060a030a0106010d01067a04 ! 81030881080381030d810d077f077f0752078103088108038103040b0481060d810d0681 ! 060d810d0a820a0d0a060a81060a810a0681060d810d0a810a000200020a0400020a0500 ! 020a0100020a0100020a0200020a0106010d010a810d0a060a81060a810a0681060d810d ! 0a030a810d0a820a060a030a0106010d01067a04 ! 81030881080382030d077f077f0753078103088108038103040b0481060d810d0681060d ! 810d0a820a0d0a060a81060a810a0681060d820d0a0081000a810a0081000a070a010003 ! 0a0100810a000200010a0100030a0200010a0106010d010a810d0a060a81060a810a0681 ! 060d810d0a030a810d0a820a060a030a0106010d01067a04 ! 81030881080381030b7f0b7f0b540b8103088108038103040b0481060d810d0681060d81 ! 0d0a810a060806010a0106010d0100030a0100070a0100030a0300010a0100810a008200 ! 0a0081000a810a0081000a810a0681060d810d0a820a0d0a060a81060a810a0681060d81 ! 0d0a030a0306040a0106010d01067a04 ! 81030881080382030b0d7f0d7f0d520d820b03088108038103040b0481060d810d068106 ! 0d810d0a0c0a0106010d0100030a0100070a0100030a0300010a0100810a0081000a810a ! 000200020a0106010d010a810d0a060a81060a810a0681060d810d0a0c0a0106010d0106 ! 7a04 ! 81030881080382030b0d7f0d7f0d520d820b03088108038103040b0481060d810d068106 ! 0d810d0a0c0a0106010d290a0106010d010a810d0a060a81060a810a0681060d810d0a0c ! 0a0106010d01067a04 ! 81030881080382030b0d7f0d7f0d520d820b03088108038103040b0481060d810d068106 ! 0d810d0a0c0a0106010d290a0106010d010a0906010a0106010d0d0a0106010d01067a04 ! ! 81030881080382030b0d7f0d7f0d520d820b03088108038103040b0481060d810d068106 ! 0d810d0a0c0a0106010d290a0106010d0d0a0106010d0d0a0106010d01067a04 ! 81030881080382030b0d7f0d7f0d520d820b03088108038103040b0481060d810d068106 ! 0d810d0a0c0a0106010d290a0106010d0d0a0106010d0d0a0106010d01067a04 ! 81030881080382030b0d7f0d7f0d520d820b03088108038103040b0482060d060106810d ! 060f06810d062b06810d060f06810d060f06810d0601067a04 ! 81030881080382030b0d7f0d7f0d520d820b03088108038103040b046c067a04 ! 81030881080382030b0d7f0d7f0d520d820b03088108038103040b0481060d010d81060d ! 610d81060d010d8106047904 ! 81030881080382030b0d7f0d7f0d520d820b03088108038103040b0481060d810d068106 ! 0d600d8207060d810d068106047904 ! 81030881080382030b0d7f0d7f0d520d820b03088108038103040b0481060d810d068106 ! 0d810d0b5d0b010781060d810d068106047904 ! 81030881080382030b0d7f0d7f0d520d820b03088108038103040b0481060d810d068106 ! 0d810d0b5d0b010781060d810d0681060405047306 ! 81030881080382030b0d7f0d7f0d520d820b03088108038103040b0481060d810d068106 ! 0d810d0b5d0b010781060d810d06810604050481060d130d81060d440d81060d130d0006 ! ! 81030881080382030b0d7f0d7f0d520d820b03088108038103040b0481060d810d068106 ! 0d810d0b5d0b010781060d810d06810604050481060d120d0106440d0106130d0106 ! 81030881080382030b0d100d0600410d0100190d0100370d0100020d0200110d0100060d ! 01001a0d0100010d0100090d0100500d820b03088108038103040b0481060d810d068106 ! 0d810d0b050b0107550b010781060d810d06810604050481060d810d061206810d064406 ! 810d061006810d060006 ! 81030881080382030b0d100d0100020d0200360d0100070d0100190d0100060d04000a0d ! 0600010d0500110d0100010d0100130d0100010d0100020d01001a0d0100010d0100090d ! 0100180d0400030d0200140d0400110d820b03088108038103040b0481060d810d068106 ! 0d810d0b040b0307090b0100010b0100150b0100010b0100280b010781060d810d068106 ! 04050481060d810d066b06010d0106 ! 81030881080382030b0d100d0100030d0100360d0100070d0100190d0100050d0200010d ! 01000e0d0100010d0100190d0100170d0100020d01001a0d0100010d0100230d0200010d ! 0100010d0100810d0081000d110d0200810d000100100d820b03088108038103040b0481 ! 060d810d0681060d810d0b030b0507080b0100010b0100150b01002c0b010781060d810d ! 06810604050481060d810d0681060d0f0d81060d320d81060d0f0d81060d0f0d81060d81 ! 0d060006 ! 81030881080382030b0d100d0100030d0100020d0100020d0100010d0100810d00010008 ! 0d0200030d0100810d000100070d0300010d0400020d0400010d0100810d0081000d020d ! 0100810d0081000d010d0200030d0400020d0100020d01000d0d0100010d01000a0d0100 ! 810d0082000d000100020d0100810d000200070d0100010d0100010d0100810d0082000d ! 000300810d0082000d000100080d0200030d0300020d0100010d0100020d0300020d0100 ! 810d000400010d03000a0d0100020d0100810d0081000d010d0100020d03000a0d010002 ! 0d0100100d820b03088108038103040b0481060d810d0681060d810d0b020b0207010b02 ! 07070b0100810b000200010b0300010b0100810b0082000b000200010b0300810b008100 ! 0b810b000200010b0100810b0081000b1a0b010781060d810d06810604050481060d810d ! 0681060d0e0d0106320d01060f0d01060f0d0106010d0106 ! 81030881080382030b0d100d0100020d0200020d0100020d0100010d0200810d00010006 ! 0d0100810d0081000d010d0200810d000100050d0200810d0081000d810d0081000d020d ! 0100810d000100010d0200810d0081000d010d0400010d0100810d0081000d010d020081 ! 0d0081000d040d02000d0d0100010d0400070d0200810d000100810d0081000d810d0081 ! 000d810d0081000d070d0100010d0100010d0100810d0081000d810d0081000d010d0200 ! 810d000100060d0400010d0100010d0100010d0100010d0100010d0200810d0081000d81 ! 0d0081000d030d0100810d0081000d810d0081000d0c0d0200810d0081000d010d010001 ! 0d0100010d0100090d0100020d0100100d820b03088108038103040b0481060d810d0681 ! 060d810d0b010b0207030b0207060b0100010b0100010b0100010b0100810b000500010b ! 0100010b0100010b0100810b0081000b810b0082000b000100810b0081000b190b010781 ! 060d810d06810604050481060d810d0681060d810d0a0c0a0106010d300a0106010d0d0a ! 0106010d0d0a0106010d0106 ! 81030881080382030b0d100d0600030d0100020d0100010d0100020d0100050d0100020d ! 0100010d0100020d0100050d0100050d0100020d0100020d0100010d0100020d0100010d ! 0100030d0100020d0100010d0100020d0100040d01000d0d0100050d0200060d0100010d ! 0100010d0100010d0100010d0100080d0100010d0100010d0100810d0081000d810d0081 ! 000d010d0100020d0100050d0100020d81000d810d0081000d810d0081000d810d008100 ! 0d810d0081000d810d0081000d040d0100030d0100010d0100010d0100010d0600040d01 ! 00010d0100020d0100010d0100010d0100090d0200010d0100100d820b03088108038103 ! 040b0481060d810d0681060d810d0b810b070107050b0207050b0100010b0100010b0100 ! 010b0100810b000100050b0100010b0100010b0100810b0081000b810b0082000b008100 ! 0b810b0081000b190b010781060d810d06810604050481060d810d0681060d810d0a0c0a ! 0106010d0100030a0100010a01000d0a0100090a0100080a0106010d0d0a0106010d0d0a ! 0106010d0106 ! 81030881080382030b0d100d0100030d0100020d0100020d0100010d0100020d0100050d ! 0100020d0100010d0100020d0100060d0300020d0100020d0100020d0100010d0100020d ! 0100010d0100030d0100020d0100010d0100020d0100020d0200030d0600030d0100070d ! 0100050d0100010d0100010d0100010d0100010d0100090d0100810d0082000d0081000d ! 810d0081000d810d0081000d010d0100020d0100050d0100050d0500010d0100010d0100 ! 020d0300020d0100020d0100020d05000b0d0200020d0100020d0100010d0500010d0600 ! 010d0500100d820b03088108038103040b0481060d810d0681060d820d0b0d010d070b02 ! 0d040b0100010b0100010b0500810b0081000b020b0400010b0100010b0100810b008100 ! 0b810b0082000b0081000b810b0081000b190b010781060d810d06810604050481060d81 ! 0d0681060d810d0a0c0a0106010d0100030a05000c0a0300130a0106010d010a080d8106 ! 0a810a0681060d810d0a0c0a0106010d0106 ! 81030881080382030b0d100d0100030d0100020d0100020d0100010d0100020d0100050d ! 0100020d0100010d0100020d0100080d0200010d0100020d0100020d0100010d0100020d ! 0100010d0100030d0100020d0100010d0100020d0100010d02000e0d0100080d0100050d ! 0100010d0100010d0100010d0100010d0100090d0100810d0082000d0081000d810d0081 ! 000d810d0081000d010d0100020d0100050d0100050d0100050d0100010d0100040d0200 ! 010d0100020d0100020d0100050d0600010d0200030d0100020d0100010d0100120d0100 ! 100d820b03088108038103040b0481060d810d0681060d810d0b810b0d010d050b020d05 ! 0b0100010b0100010b0100040b0100020b0100010b0100010b0100010b0100810b008100 ! 0b810b0082000b0081000b810b0081000b190b010781060d810d06810604050481060d81 ! 0d0681060d810d0a0c0a0106010d810a0081000a810a0081000a010a01000c0a81000a82 ! 0a000a810a0081000a810a0082000a0081000a810a000200020a0106010d010a810d0a06 ! 0a81060a810a0681060d810d0a0c0a0106010d0106 ! 81030881080382030b0d100d0100030d0100020d0100020d0100010d0100020d0100050d ! 0100020d0100010d0100020d0100090d0100010d0100020d0100020d0100010d0100020d ! 0100010d0100030d0100020d0100010d0100020d0100810d0001000f0d0100030d010002 ! 0d0100050d0100010d0100010d0100010d0100010d01000a0d0100010d0100020d010001 ! 0d0100020d0100020d0100050d0100020d81000d810d0081000d040d0100010d0100050d ! 0100010d0100010d0100030d01000d0d0200040d0100020d0100010d01000d0d0100020d ! 0100100d820b03088108038103040b0481060d810d0681060d810d0b010b020d030b020d ! 060b0100010b0100810b000100010b0100810b0081000b010b0100010b0100010b010081 ! 0b000100810b0081000b810b0082000b0081000b810b0081000b190b010781060d810d06 ! 810604050481060d810d0681060d810d0a0c0a0106010d810a0081000a810a0081000a01 ! 0a01000b0a0100010a0100810a0081000a810a0082000a0082000a0081000a810a008100 ! 0a810a0681060d810d0a820a0d0a060a81060a810a0681060d810d0a0c0a0106010d0106 ! ! 81030881080382030b0d100d0100030d0100020d0200810d000100010d0100020d010006 ! 0d0100810d0081000d010d0100020d0100050d0200810d0081000d810d0083000d000d81 ! 0d0082000d000100010d0200810d0081000d010d0100040d0100810d0081000d010d0200 ! 810d0081000d810d0081000d0e0d0100040d0200810d0081000d010d0100010d0100010d ! 0100010d0100010d0100010d0100010d0100060d0100010d0100020d0100010d0100830d ! 000d0081000d010d0100060d0400010d0200810d0081000d810d0081000d810d0081000d ! 810d000100810d0081000d810d0082000d0081000d030d0200810d0081000d080d010006 ! 0d0100810d0081000d010d0200810d0081000d080d0100010d0200100d820b0308810803 ! 8103040b0481060d810d0681060d810d0b020b020d010b020d070b0100020b0100010b03 ! 00010b0100030b0200810b0081000b810b0082000b0081000b810b000200010b0100010b ! 01001a0b010781060d810d06810604050481060d810d0681060d810d0a810a0d070d8106 ! 0a810a0681060d810d0a810a000200030a01000b0a0100010a0100010a0300010a010081 ! 0a000100040a0106010d010a810d0a060a81060a810a0681060d810d0a030a020d81060a ! 030a0106010d0106 ! 81030881080382030b0d100d0100040d0100020d0200810d0081000d810d0081000d010d ! 0100070d0200030d0100020d0100060d0300030d0100030d0100810d0081000d810d0003 ! 00030d0100050d0200030d0100810d0081000d010d06000a0d0100050d0300030d010001 ! 0d0100010d0100010d0100010d0100010d0100010d0100060d0100010d0100020d010002 ! 0d0100010d0100020d0100070d0200030d0300020d0100010d0100020d0300020d010081 ! 0d000400010d03000a0d0600020d0200040d03000b0d0400110d820b0308810803810304 ! 0b0481060d810d0681060d810d0b030b050d530b010781060d810d06810604050481060d ! 810d0681060d810d0a820a0d0a060a81060a810a0681060d810d0a010a0100040a010003 ! 0a0400020a0500020a0100020a0100020a0200020a0106010d010a810d0a060a81060a81 ! 0a0681060d810d0a030a810d0a820a060a030a0106010d0106 ! 81030881080382030b0d5d0d0100560d01007f0d190d820b03088108038103040b048106 ! 0d810d0681060d810d0b040b030d540b010781060d810d06810604050481060d810d0681 ! 060d810d0a820a0d0a060a81060a810a0681060d810d0a010a0100040a01000a0a010003 ! 0a0100810a000200010a0100030a0200010a0106010d010a810d0a060a81060a810a0681 ! 060d810d0a030a810d0a820a060a030a0106010d0106 ! 81030881080382030b0d5d0d01007f0d720d820b03088108038103040b0481060d810d06 ! 81060d810d0b050b010d550b010781060d810d06810604050481060d810d0681060d810d ! 0a810a060806010a0106010d020a0100040a01000a0a0100030a0300010a0100810a0082 ! 000a0081000a810a0081000a810a0681060d810d0a820a0d0a060a81060a810a0681060d ! 810d0a030a0306040a0106010d0106 ! 81030881080382030b0d5d0d01007f0d720d820b03088108038103040b0481060d810d06 ! 81060d810d0b5d0b010781060d810d06810604050481060d810d0681060d810d0a0c0a01 ! 06010d020a0100040a01000a0a0100030a0300010a0100810a0081000a810a000200020a ! 0106010d010a810d0a060a81060a810a0681060d810d0a0c0a0106010d0106 ! 81030881080382030b0d7f0d7f0d520d820b03088108038103040b0481060d810d068106 ! 0d810d0b5d0b010781060d810d06810604050481060d810d0681060d810d0a0c0a010601 ! 0d300a0106010d010a810d0a060a81060a810a0681060d810d0a0c0a0106010d0106 ! 81030881080382030b0d7f0d7f0d520d820b03088108038103040b0481060d810d068106 ! 0d810d0b5d0b010781060d810d06810604050481060d810d0681060d810d0a0c0a010601 ! 0d300a0106010d010a0906010a0106010d0d0a0106010d0106 ! 81030881080382030b0d7f0d7f0d520d820b03088108038103040b0481060d810d068106 ! 0d810d0b5d0b010781060d810d06810604050481060d810d0681060d810d0a0c0a010601 ! 0d300a0106010d0d0a0106010d0d0a0106010d0106 ! 81030881080382030b0d7f0d7f0d520d820b03088108038103040b0481060d810d068106 ! 0d810d0b5d0b010781060d810d06810604050481060d810d0681060d810d0a0c0a010601 ! 0d300a0106010d0d0a0106010d0d0a0106010d0106 ! 81030881080382030b0d7f0d7f0d520d820b03088108038103040b0481060d810d068106 ! 0d810d0b5d0b010781060d810d06810604050482060d060106810d060f06810d06320681 ! 0d060f06810d060f06810d060106 ! 81030881080382030b0d7f0d7f0d520d820b03088108038103040b0481060d810d068106 ! 0d810d0b5d0b010781060d810d0681060405047306 ! 81030881080382030b0d7f0d7f0d520d820b03088108038103040b0481060d810d068106 ! 0d810d0b5d0b010781060d810d06810604050481060d010d81060d680d81060d010d0006 ! ! 81030881080382030b0d7f0d7f0d520d820b03088108038103040b0481060d810d068106 ! 0d810d0b050b0107550b010781060d810d06810604050481060d810d0681060d670d8207 ! 060d810d060006 ! 81030881080382030b0d7f0d7f0d520d820b03088108038103040b0481060d810d068106 ! 0d810d0b040b0307090b0500440b010781060d810d06810604050481060d810d0681060d ! 810d0b640b010781060d810d060006 ! 81030881080382030b0d7f0d7f0d520d820b03088108038103040b0481060d810d068106 ! 0d810d0b030b0507080b0100020b0100430b010781060d810d06810604050481060d810d ! 0681060d810d0b640b010781060d810d060006 ! 81030881080382030b0d7f0d7f0d520d820b03088108038103040b0481060d810d068106 ! 0d810d0b020b020701090207070b0100020b0100810b0081000b810b0081000b3b0b0107 ! 81060d810d06810604050481060d810d0681060d810d0b640b010781060d810d060006 ! 81030881080382030b0d110d7f007f002c00130d820b03088108038103040b0481060d81 ! 0d0681060d810d0b010b020703090207060b0100020b0100810b0081000b810b0081000b ! 3b0b010781060d810d06810604050481060d810d0681060d810d0b640b010781060d810d ! 060006 ! 81030881080382030b0d110d7f007f002c00130d820b03088108038103040b0481060d81 ! 0d0681060d810d0b810b07010705090207050b0500020b03003d0b010781060d810d0681 ! 0604050481060d810d0681060d810d0b020b0b07550b010781060d810d060006 ! 81030881080382030b0d110d0100480d0100480d0100480d0100470d0100130d820b0308 ! 8108038103040b0481060d810d0681060d820d0b0d010d0709020d040b0100020b010002 ! 0b01003e0b010781060d810d06810604050481060d810d0681060d810d0b020b0a07810d ! 0b020b0100010b0100150b0100010b01002f0b010781060d810d060006 ! 81030881080382030b0d0b0d0100030d0100480d0100480d0100480d0100470d0100130d ! 820b03088108038103040b0481060d810d0681060d810d0b810b0d010d0509020d050b01 ! 00020b0100010b03003d0b010781060d810d06810604050481060d810d0681060d810d0b ! 020b0107070b010d030b0100010b0100150b0100330b010781060d810d060006 ! 81030881080382030b0d090d0300030d01007f0d130d01007f0d120d0100130d820b0308 ! 8108038103040b0481060d810d0681060d810d0b010b020d0309020d060b0100020b0100 ! 810b0081000b810b0081000b3b0b010781060d810d06810604050481060d810d0681060d ! 810d0b020b0107070b010d030b0100810b000200010b0300010b0100810b0082000b0002 ! 00010b0300810b0081000b810b000200010b0100810b0081000b210b010781060d810d06 ! 0006 ! 81030881080382030b0d0b0d0100030d01007f0d7f0d280d0100130d820b030881080381 ! 03040b0481060d810d0681060d810d0b020b020d0109020d070b0500010b0100010b0100 ! 3c0b010781060d810d06810604050481060d810d0681060d810d0b020b0107070b010d03 ! 0b0100010b0100010b0100010b0100810b000500010b0100010b0100010b0100810b0081 ! 000b810b0082000b000100810b0081000b200b010781060d810d060006 ! 81030881080382030b0d0b0d0100030d01007f0d7f0d280d0100130d820b030881080381 ! 03040b0481060d810d0681060d810d0b030b050d530b010781060d810d06810604050481 ! 060d810d0681060d810d0b020b0107070b010d030b0100010b0100010b0100010b010081 ! 0b000100050b0100010b0100010b0100810b0081000b810b0082000b0081000b810b0081 ! 000b200b010781060d810d060006 ! 81030881080382030b0d0b0d0100030d01007f0d0c0d2602740d0100130d820b03088108 ! 038103040b0481060d810d0681060d810d0b040b030d540b010781060d810d0681060405 ! 0481060d810d0681060d810d0b020b0107070b010d030b0100010b0100010b0500810b00 ! 81000b020b0400010b0100010b0100810b0081000b810b0082000b0081000b810b008100 ! 0b200b010781060d810d060006 ! 81030881080382030b0d0b0d0100030d01007f0d050d3c02650d0100130d820b03088108 ! 038103040b0481060d810d0681060d810d0b050b010d550b010781060d810d0681060405 ! 0481060d810d0681060d810d0b020b0107070b010d030b0100010b0100010b0100040b01 ! 00020b0100010b0100010b0100010b0100810b0081000b810b0082000b0081000b810b00 ! 81000b200b010781060d810d060006 ! 81030881080382030b0d0b0d0100030d01007f0d020d0a02240d16025e0d0100130d820b ! 03088108038103040b0481060d810d0681060d810d0b5d0b010781060d810d0681060405 ! 0481060d810d0681060d810d0b020b0107070b010d030b0100010b0100810b000100010b ! 0100810b0081000b010b0100010b0100010b0100810b000100810b0081000b810b008200 ! 0b0081000b810b0081000b200b010781060d810d060006 ! 81030881080382030b0d0b0d0100030d0100070d3300450d04023a0d0f02560d0100130d ! 820b03088108038103040b0481060d810d0681060d810d0b5d0b010781060d810d068106 ! 04050481060d810d0681060d810d0b020b0107070b010d030b0100020b0100010b030001 ! 0b0100030b0200810b0081000b810b0082000b0081000b810b000200010b0100010b0100 ! 210b010781060d810d060006 ! 81030881080382030b0d0b0d0100030d0100070d3300450d0102450d1602470d0100130d ! 820b03088108038103040b0481060d810d0681060d810d0b5d0b010781060d810d068106 ! 04050481060d810d0681060d810d0b020b0107090d550b010781060d810d060006 ! 81030881080382030b0d110d0100070d01002f0d0100450d01024c0d1e02380d0100130d ! 820b03088108038103040b0481060d810d0681060d810d0b5d0b010781060d810d068106 ! 04050481060d810d0681060d810d0b020b81070d090d550b010781060d810d060006 ! 81030881080382030b0d110d0100070d01002f0d0100450d01025b0d1602310d0100130d ! 820b03088108038103040b0481060d810d0681060d810d0b5d0b010781060d810d068106 ! 04050481060d810d0681060d810d0b640b010781060d810d060006 ! 81030881080382030b0d110d0100070d01002f0d0100450d01026a0d0f02290d0100130d ! 820b03088108038103040b0481060d810d0681060d810d0b5d0b010781060d810d068106 ! 04050481060d810d0681060d810d0b640b010781060d810d060006 ! 81030881080382030b0d110d0100070d01002f0d0100450d0102720d16021a0d0100130d ! 820b03088108038103040b0481060d810d0681060d810d0b5d0b010781060d810d068106 ! 04050481060d810d0681060d810d0b640b010781060d810d060006 ! 81030881080382030b0d110d0100070d0100030d010c040d010c090d010c810d0c810c0d ! 030d010c0c0d0100450d0102790d1d020c0d0100130d820b03088108038103040b048106 ! 0d810d0681060d810d0b5d0b010781060d810d06810604050481060d810d0681060d810d ! 0b640b010781060d810d060006 ! 81030881080382030b0d110d0100070d0100030d010c040d010c090d010c810d0c810c0d ! 030d010c0c0d0100450d01027f0d080d1b020100130d820b03088108038103040b048106 ! 0d810d0681060d810d0b050b0107550b010781060d810d06810604050481060d810d0681 ! 060d810d0b640b010781060d810d060006 ! 81030881080382030b0d110d0100070d0100030d020c020d020c810d0c810c0d810d0c81 ! 0c0d010d810c0d810d0c010c020d020c010d030c060d0100450d01027f0d160d0d020100 ! 130d820b03088108038103040b0481060d810d0681060d810d0b040b0307090b0500440b ! 010781060d810d06810604050481060d810d0681060d810d0b640b010781060d810d0600 ! 06 ! 81030881080382030b0d110d0100070d0100030d020c020d020c810d0c810c0d810d0c81 ! 0c0d810d0c810c0d810d0c010c020d020c810d0c810c0d810d0c810c0d040d0100450d01 ! 027f0d240d0100130d820b03088108038103040b0481060d810d0681060d810d0b030b05 ! 07080b0100020b0100430b010781060d810d06810604050481060d810d0681060d810d0b ! 640b010781060d810d060006 ! 81030881080382030b0d110d0100070d0100030d030c810d0c020c010d030c020d010c01 ! 0d030c810d0c020c810d0c010c080d0100450d01027f0d240d0100130d820b0308810803 ! 8103040b0481060d810d0681060d810d0b020b0207010b0207070b0100020b0100810b00 ! 81000b010b01003b0b010781060d810d06810604050481060d810d0681060d810d0b640b ! 010781060d810d060006 ! 81030881080382030b0d110d0100070d0100030d010c850d0c0d0c0d0c810c0d010d010c ! 030d810c0d010d010c850d0c0d0c0d0c810c0d010d020c060d0100450d01027f0d240d01 ! 00130d820b03088108038103040b0481060d810d0681060d810d0b010b0207030b020706 ! 0b0100020b0100810b0081000b010b01003b0b010781060d810d06810604050481060d81 ! 0d0681060d810d0b640b010781060d810d060006 ! 81030881080382030b0d110d0100070d0100030d010c810d0c010c810d0c810c0d810d0c ! 020c020d810c0d010d010c810d0c010c810d0c810c0d020d020c050d0100450d01027f0d ! 240d0100130d820b03088108038103040b0481060d810d0681060d810d0b810b07010705 ! 0b0207050b0500020b0100810b0081000b3b0b010781060d810d06810604050481060d81 ! 0d0681060d810d0b020b0b07550b010781060d810d060006 ! 81030881080382030b0d110d0100070d0100030d010c010d810c0d810d0c820c0d0c810c ! 0d810d0c820c0d0c810c0d010d010c010d810c0d810d0c820c0d0c810c0d810d0c810c0d ! 040d0100450d01027f0d240d0100130d820b03088108038103040b0481060d810d068106 ! 0d820d0b0d010d070b020d040b0100020b0100010b0100810b0081000b3b0b010781060d ! 810d06810604050481060d810d0681060d810d0b020b0a07810d0b020b05004b0b010781 ! 060d810d060006 ! 81030881080382030b0d110d0100070d0100030d010c010d810c0d810d0c820c0d0c810c ! 0d810d0c820c0d0c810c0d010d010c010d810c0d810d0c810c0d810d0c020c060d010045 ! 0d01027f0d240d0100130d820b03088108038103040b0481060d810d0681060d810d0b81 ! 0b0d010d050b020d050b0100020b0100020b02003d0b010781060d810d06810604050481 ! 060d810d0681060d810d0b020b0107070b010d030b0100020b01004a0b010781060d810d ! 060006 ! 81030881080382030b0d110d0100070d01002f0d0100450d01027f0d240d0100130d820b ! 03088108038103040b0481060d810d0681060d810d0b010b020d030b020d060b0100020b ! 0100020b02003d0b010781060d810d06810604050481060d810d0681060d810d0b020b01 ! 07070b010d030b0100020b0100810b0081000b810b0081000b420b010781060d810d0600 ! 06 ! 81030881080382030b0d110d0100070d01002f0d0100450d01027f0d240d0100130d820b ! 03088108038103040b0481060d810d0681060d810d0b020b020d010b020d070b0500040b ! 01003d0b010781060d810d06810604050481060d810d0681060d810d0b020b0107070b01 ! 0d030b0100020b0100810b0081000b810b0081000b420b010781060d810d060006 ! 81030881080382030b0d110d0100070d01002f0d0100450d01027f0d240d0100130d820b ! 03088108038103040b0481060d810d0681060d810d0b030b050d130b81000b3d0b010781 ! 060d810d06810604050481060d810d0681060d810d0b020b0107070b010d030b0500020b ! 0300440b010781060d810d060006 ! 81030881080382030b0d110d0100070d01002f0d0100450d01027f0d240d0100130d820b ! 03088108038103040b0481060d810d0681060d810d0b040b030d130b01003e0b01078106 ! 0d810d06810604050481060d810d0681060d810d0b020b0107070b010d030b0100020b01 ! 00020b0100450b010781060d810d060006 ! 81030881080382030b0d110d0100070d01002f0d0100450d01027f0d240d0100130d820b ! 03088108038103040b0481060d810d0681060d810d0b050b010d130b01003f0b01078106 ! 0d810d06810604050481060d810d0681060d810d0b020b0107070b010d030b0100020b01 ! 00010b0300440b010781060d810d060006 ! 81030881080382030b0d110d0100070d0100030d0102040d01020a0d0102810d0281020d ! 030d01020b0d0100450d01027f0d240d0100130d820b03088108038103040b0481060d81 ! 0d0681060d810d0b5d0b010781060d810d06810604050481060d810d0681060d810d0b02 ! 0b0107070b010d030b0100020b0100810b0081000b810b0081000b420b010781060d810d ! 060006 ! 81030881080382030b0d110d0100070d0100030d0102040d01020a0d0102810d0281020d ! 030d01020b0d0100450d01027f0d240d0100130d820b03088108038103040b0481060d81 ! 0d0681060d810d0b5d0b010781060d810d06810604050481060d810d0681060d810d0b02 ! 0b0107070b010d030b0500010b0100010b0100430b010781060d810d060006 ! 81030881080382030b0d110d0100070d0100030d0202020d0202810d0281020d010d0102 ! 020d81020d810d020102020d0202010d0302050d0100450d01027f0d240d0100130d820b ! 03088108038103040b0481060d810d0681060d810d0b5d0b010781060d810d0681060405 ! 0481060d810d0681060d810d0b020b0107090d550b010781060d810d060006 ! 81030881080382030b0d110d0100070d0100030d0202020d0202810d0281020d010d0102 ! 010d0102010d0202020d0202810d0281020d810d0281020d030d0100450d01027f0d240d ! 0100130d820b03088108038103040b0481060d810d0681060d810d0b5d0b010781060d81 ! 0d06810604050481060d810d0681060d810d0b020b81070d090d550b010781060d810d06 ! 0006 ! 81030881080382030b0d110d0100070d0100030d0302810d020202010d0102810d028102 ! 0d010d0102010d0302810d020202810d020102070d0100450d01027f0d240d0100130d82 ! 0b03088108038103040b0481060d810d0681060d810d0b5d0b010781060d810d06810604 ! 050481060d810d0681060d810d0b640b010781060d810d060006 ! 81030881080382030b0d110d0100070d0100030d0102850d020d020d0281020d810d0282 ! 020d0281020d010d81020d010d0102850d020d020d0281020d010d0202050d0100450d01 ! 027f0d240d0100130d820b03088108038103040b0481060d810d0681060d810d0b5d0b01 ! 0781060d810d06810604050481060d810d0681060d810d0b640b010781060d810d060006 ! ! 81030881080382030b0d110d0100070d0100030d0102810d020102810d0281020d010d02 ! 02030d81020d010d0102810d020102810d0281020d020d0202040d0100450d01027f0d24 ! 0d0100130d820b03088108038103040b0481060d810d0681060d810d0b5d0b010781060d ! 810d06810604050481060d810d0681060d810d0b640b010781060d810d060006 ! 81030881080382030b0d110d0100070d0100030d0102010d81020d810d0281020d010d02 ! 02020d0102020d0102010d81020d810d0282020d0281020d810d0281020d030d0100450d ! 01027f0d240d0100130d820b03088108038103040b0481060d810d0681060d810d0b5d0b ! 010781060d810d06810604050481060d810d0681060d810d0b640b010781060d810d0600 ! 06 ! 81030881080382030b0d110d0100070d0100030d0102010d81020d810d0281020d020d01 ! 02020d0102020d0102010d81020d810d0281020d810d020202050d0100450d01027f0d24 ! 0d0100130d820b03088108038103040b0481060d810d0681060d810d0b050b0107550b01 ! 0781060d810d06810604050481060d810d0681060d810d0b640b010781060d810d060006 ! ! 81030881080382030b0d110d0100070d0100100d81020d1c0d0100450d01027f0d240d01 ! 00130d820b03088108038103040b0481060d810d0681060d810d0b040b0307090b050044 ! 0b010781060d810d06810604050481060d810d0681060d810d0b640b010781060d810d06 ! 0006 ! 81030881080382030b0d110d0100070d01000f0d01021d0d0100450d01027f0d240d0100 ! 130d820b03088108038103040b0481060d810d0681060d810d0b030b0507080b0100020b ! 0100430b010781060d810d06810604050481060d810d0681060d810d0b640b010781060d ! 810d060006 ! 81030881080382030b0d110d0100070d01000e0d01021e0d0100450d01027f0d240d0100 ! 130d820b03088108038103040b0481060d810d0681060d810d0b020b0207010b0207070b ! 0100020b0100810b0003003d0b010781060d810d06810604050481060d810d0681060d81 ! 0d0b640b010781060d810d060006 ! 81030881080382030b0d110d0100070d01002f0d0100450d01027f0d240d0100130d820b ! 03088108038103040b0481060d810d0681060d810d0b010b0207030b0207060b0100020b ! 0100030b01003d0b010781060d810d06810604050481060d810d0681060d810d0b640b01 ! 0781060d810d060006 ! 81030881080382030b0d110d0100070d01002f0d0100450d01027f0d240d0100130d820b ! 03088108038103040b0481060d810d0681060d810d0b810b070107050b0207050b050003 ! 0b01003e0b010781060d810d06810604050481060d810d0681060d810d0b020b0b07550b ! 010781060d810d060006 ! 81030881080382030b0d110d0100070d0100030d0101040d0101080d0101810d0181010d ! 030d01010d0d0100450d01027f0d240d0100130d820b03088108038103040b0481060d81 ! 0d0681060d820d0b0d010d070b020d040b0100020b0100020b81000b3e0b010781060d81 ! 0d06810604050481060d810d0681060d810d0b020b0a07810d0b020b05004b0b01078106 ! 0d810d060006 ! 81030881080382030b0d110d0100070d0100030d0101040d0101080d0101810d0181010d ! 030d01010d0d0100450d01027f0d240d0100130d820b03088108038103040b0481060d81 ! 0d0681060d810d0b810b0d010d050b020d050b0100020b0100010b01003f0b010781060d ! 810d06810604050481060d810d0681060d810d0b020b0107070b010d030b0100020b0100 ! 4a0b010781060d810d060006 ! 81030881080382030b0d110d0100070d0100030d0201020d0201810d010301020d81010d ! 810d010101020d0201010d0301070d0100450d01027f0d240d0100130d820b0308810803 ! 8103040b0481060d810d0681060d810d0b010b020d030b020d060b0100020b0100810b00 ! 81000b3f0b010781060d810d06810604050481060d810d0681060d810d0b020b0107070b ! 010d030b0100020b0100810b0081000b010b0100420b010781060d810d060006 ! 81030881080382030b0d110d0100070d0100030d0201020d0201030d0101010d0101010d ! 0201020d0201810d0181010d810d0181010d050d0100450d01027f0d240d0100130d820b ! 03088108038103040b0481060d810d0681060d810d0b020b020d010b020d070b0500010b ! 04003d0b010781060d810d06810604050481060d810d0681060d810d0b020b0107070b01 ! 0d030b0100020b0100810b0081000b010b0100420b010781060d810d060006 ! 81030881080382030b0d110d0100070d0100030d0301810d010201020d0101020d010101 ! 0d0301810d010201810d010101090d0100450d01027f0d240d0100130d820b0308810803 ! 8103040b0481060d810d0681060d810d0b030b050d530b010781060d810d068106040504 ! 81060d810d0681060d810d0b020b0107070b010d030b0500020b0100810b0081000b420b ! 010781060d810d060006 ! 81030881080382030b0d110d0100070d0100030d0101850d010d010d0181010d010d8101 ! 0d020d81010d010d0101850d010d010d0181010d010d0201070d0100450d01027f0d240d ! 0100130d820b03088108038103040b0481060d810d0681060d810d0b040b030d540b0107 ! 81060d810d06810604050481060d810d0681060d810d0b020b0107070b010d030b010002 ! 0b0100010b0100810b0081000b420b010781060d810d060006 ! 81030881080382030b0d110d0100070d0100030d0101810d010101810d0181010d810d01 ! 81010d020d81010d010d0101810d010101810d0181010d020d0201060d0100450d01027f ! 0d240d0100130d820b03088108038103040b0481060d810d0681060d810d0b050b010d55 ! 0b010781060d810d06810604050481060d810d0681060d810d0b020b0107070b010d030b ! 0100020b0100020b0200440b010781060d810d060006 ! 81030881080382030b0d110d0100070d0100030d0101010d81010d810d0182010d018101 ! 0d020d0101020d0101010d81010d810d0182010d0181010d810d0181010d050d0100450d ! 01027f0d240d0100130d820b03088108038103040b0481060d810d0681060d810d0b5d0b ! 010781060d810d06810604050481060d810d0681060d810d0b020b0107070b010d030b01 ! 00020b0100020b0200440b010781060d810d060006 ! 81030881080382030b0d110d0100070d0100030d0101010d81010d810d0182010d010301 ! 810d0181010d010d0101010d81010d810d0181010d810d010201070d0100450d01027f0d ! 240d0100130d820b03088108038103040b0481060d810d0681060d810d0b5d0b01078106 ! 0d810d06810604050481060d810d0681060d810d0b020b0107070b010d030b0500040b01 ! 00440b010781060d810d060006 ! 81030881080382030b0d110d0100070d01002f0d0100450d01027f0d240d0100130d820b ! 03088108038103040b0481060d810d0681060d810d0b5d0b010781060d810d0681060405 ! 0481060d810d0681060d810d0b020b0107090d0e0b81000b440b010781060d810d060006 ! ! 81030881080382030b0d110d0100070d01002f0d0100450d01027f0d240d0100130d820b ! 03088108038103040b0481060d810d0681060d810d0b5d0b010781060d810d0681060405 ! 0481060d810d0681060d810d0b020b81070d090d0d0b0100450b010781060d810d060006 ! ! 81030881080382030b0d110d0100070d01002f0d0100450d01027f0d240d0100130d820b ! 03088108038103040b0481060d810d0681060d810d0b5d0b010781060d810d0681060405 ! 0481060d810d0681060d810d0b1b0b0100460b010781060d810d060006 ! 81030881080382030b0d110d0100070d01002f0d0100450d01027f0d240d0100130d820b ! 03088108038103040b0481060d810d0681060d810d0b5d0b010781060d810d0681060405 ! 0481060d810d0681060d810d0b640b010781060d810d060006 ! 81030881080382030b0d110d0100070d01002f0d0100450d01027f0d240d0100130d820b ! 03088108038103040b0481060d810d0681060d810d0b5d0b010781060d810d0681060405 ! 0481060d810d0681060d810d0b640b010781060d810d060006 ! 81030881080382030b0d110d0100070d3300450d01027f0d240d0100130d820b03088108 ! 038103040b0481060d810d0681060d810d0b5d0b010781060d810d06810604050481060d ! 810d0681060d810d0b640b010781060d810d060006 ! 81030881080382030b0d110d0100070d3300450d01027f0d240d0100130d820b03088108 ! 038103040b0481060d810d0681060d810d0b050b0107550b010781060d810d0681060405 ! 0481060d810d0681060d810d0b640b010781060d810d060006 ! 81030881080382030b0d110d01007f0d010d01027f0d240d0100130d820b030881080381 ! 03040b0481060d810d0681060d810d0b040b0307090b0100040b0100090b0100810b0081 ! 000b030b01002b0b010781060d810d06810604050481060d810d0681060d810d0b640b01 ! 0781060d810d060006 ! 81030881080382030b0d110d01007f0d010d01027f0d240d0100130d820b030881080381 ! 03040b0481060d810d0681060d810d0b030b0507080b0100040b0100090b0100810b0081 ! 000b030b01002b0b010781060d810d06810604050481060d810d0681060d810d0b640b01 ! 0781060d810d060006 ! 81030881080382030b0d110d01007f0d010d01027f0d240d0100130d820b030881080381 ! 03040b0481060d810d0681060d810d0b020b0207010b0207070b0200020b0200810b0081 ! 000b810b0081000b010b81000b810b000100020b0200010b0300250b010781060d810d06 ! 810604050481060d810d0681060d810d0b640b010781060d810d060006 ! 81030881080382030b0d110d01007f0d010d01027f0d240d0100130d820b030881080381 ! 03040b0481060d810d0681060d810d0b010b0207030b0207060b0200020b0200810b0081 ! 000b810b0081000b810b0081000b810b000100020b0200810b0081000b810b0081000b23 ! 0b010781060d810d06810604050481060d810d0681060d810d0b640b010781060d810d06 ! 0006 ! 81030881080382030b0d110d01007f0d010d01027f0d240d0100130d820b030881080381 ! 03040b0481060d810d0681060d810d0b810b070107050b0207050b0300810b000200010b ! 0300020b0100010b0300810b000200810b000100270b010781060d810d06810604050481 ! 060d810d0681060d810d0b020b0b07550b010781060d810d060006 ! 81030881080382030b0d110d01007f0d010d01027f0d240d0100130d820b030881080381 ! 03040b0481060d810d0681060d820d0b0d010d070b020d040b0100850b000b000b008100 ! 0b010b0100030b81000b010b0100850b000b000b0081000b010b0200250b010781060d81 ! 0d06810604050481060d810d0681060d810d0b020b0a07810d0b020b05004b0b01078106 ! 0d810d060006 ! 81030881080382030b0d110d03007f0d01027f0d230d0200130d820b0308810803810304 ! 0b0481060d810d0681060d810d0b810b0d010d050b020d050b0100810b000100810b0081 ! 000b810b000200020b81000b010b0100810b000100810b0081000b020b0200240b010781 ! 060d810d06810604050481060d810d0681060d810d0b020b0107070b010d030b0100020b ! 01004a0b010781060d810d060006 ! 81030881080382030b0d110d03007f0d01027f0d230d0200130d820b0308810803810304 ! 0b0481060d810d0681060d810d0b010b020d030b020d060b0100010b81000b810b008200 ! 0b0081000b810b0082000b0081000b010b0100010b81000b810b0082000b0081000b810b ! 0081000b230b010781060d810d06810604050481060d810d0681060d810d0b020b010707 ! 0b010d030b0100020b0100810b000300440b010781060d810d060006 ! 81030881080382030b0d110d01007f0d010d01027f0d240d0100130d820b030881080381 ! 03040b0481060d810d0681060d810d0b020b020d010b020d070b0100010b81000b810b00 ! 82000b0081000b810b0082000b0081000b010b0100010b81000b810b0081000b810b0002 ! 00250b010781060d810d06810604050481060d810d0681060d810d0b020b0107070b010d ! 030b0100020b0100030b0100440b010781060d810d060006 ! 81030881080382030b0d110d01007f0d010d01027f0d240d0100130d820b030881080381 ! 03040b0481060d810d0681060d810d0b030b050d530b010781060d810d06810604050481 ! 060d810d0681060d810d0b020b0107070b010d030b0500030b0100450b010781060d810d ! 060006 ! 81030881080382030b0d110d01007f0d010d01027f0d240d0100130d820b030881080381 ! 03040b0481060d810d0681060d810d0b040b030d540b010781060d810d06810604050481 ! 060d810d0681060d810d0b020b0107070b010d030b0100020b0100020b81000b450b0107 ! 81060d810d060006 ! 81030881080382030b0d110d01007f0d010d01027f0d240d0100130d820b030881080381 ! 03040b0481060d810d0681060d810d0b050b010d550b010781060d810d06810604050481 ! 060d810d0681060d810d0b020b0107070b010d030b0100020b0100010b0100460b010781 ! 060d810d060006 ! 81030881080382030b0d110d01007f0d010d01027f0d1e0d050c0100130d820b03088108 ! 038103040b0481060d810d0681060d810d0b5d0b010781060d810d06810604050481060d ! 810d0681060d810d0b020b0107070b010d030b0100020b0100810b0081000b460b010781 ! 060d810d060006 ! 81030881080382030b0d110d01007f0d010d01027f0d160d0d0c0100130d820b03088108 ! 038103040b0481060d810d0681060d810d0b5d0b010781060d810d06810604050481060d ! 810d0681060d810d0b020b0107070b010d030b0500010b0400440b010781060d810d0600 ! 06 ! 81030881080382030b0d110d01007f0d010d01027f0d120d0b0c050d0100130d820b0308 ! 8108038103040b0481060d810d0681060d810d0b5d0b010781060d810d06810604050481 ! 060d810d0681060d810d0b020b0107090d550b010781060d810d060006 ! 81030881080382030b0d110d01007f0d010d01027f0d0d0d090c0c0d0100130d820b0308 ! 8108038103040b0481060d810d0681060d810d0b5d0b010781060d810d06810604050481 ! 060d810d0681060d810d0b020b81070d090d550b010781060d810d060006 ! 81030881080382030b0d110d01007f0d010d01027f0d080d090c110d0100130d820b0308 ! 8108038103040b0481060d810d0681060d810d0b5d0b010781060d810d06810604050481 ! 060d810d0681060d810d0b640b010781060d810d060006 ! 81030881080382030b0d110d01007f0d010d01027f0d030d090c160d0100130d820b0308 ! 8108038103040b0481060d810d0681060d810d0b5d0b010781060d810d06810604050481 ! 060d810d0681060d810d0b640b010781060d810d060006 ! 81030881080382030b0d110d01007f0d010d01027e0d0a0c1a0d0100130d820b03088108 ! 038103040b0481060d810d0681060d810d0b5d0b010781060d810d06810604050481060d ! 810d0681060d810d0b640b010781060d810d060006 ! 81030881080382030b0d110d01007f0d010d0102790d0a0c1f0d0100130d820b03088108 ! 038103040b0481060d810d0681060d810d0b5d0b010781060d810d06810604050481060d ! 810d0681060d810d0b640b010781060d810d060006 ! 81030881080382030b0d110d01007f0d010d0102760d080c240d0100130d820b03088108 ! 038103040b0481060d810d0681060d810d0b050b0107550b010781060d810d0681060405 ! 0481060d810d0681060d810d0b640b010781060d810d060006 ! 81030881080382030b0d110d01007f0d010d0102720d070c290d0100130d820b03088108 ! 038103040b0481060d810d0681060d810d0b040b0307090b0100040b01000a0b0100810b ! 0081000b030b01002a0b010781060d810d06810604050481060d810d0681060d810d0b64 ! 0b010781060d810d060006 ! 81030881080382030b0d110d01007f0d010d01026e0d070c2d0d0100130d820b03088108 ! 038103040b0481060d810d0681060d810d0b030b0507080b0100040b01000a0b0100810b ! 0081000b030b01002a0b010781060d810d06810604050481060d810d0681060d810d0b64 ! 0b010781060d810d060006 ! 81030881080382030b0d110d01007f0d010d01026a0d070c310d0100130d820b03088108 ! 038103040b0481060d810d0681060d810d0b020b0207010b0207070b0200020b0200810b ! 0081000b010b0100020b81000b810b000100020b0200010b0300240b010781060d810d06 ! 810604050481060d810d0681060d810d0b640b010781060d810d060006 ! 81030881080382030b0d110d01007f0d010d0102670d060c350d0100130d820b03088108 ! 038103040b0481060d810d0681060d810d0b010b0207030b0207060b0200020b0200810b ! 0081000b010b0100010b0100010b0200020b0200810b0081000b810b0081000b220b0107 ! 81060d810d06810604050481060d810d0681060d810d0b640b010781060d810d060006 ! 81030881080382030b0d110d01007f0d010d0102630d070c380d0100130d820b03088108 ! 038103040b0481060d810d0681060d810d0b810b070107050b0207050b0300810b000200 ! 010b0100810b0081000b010b0100010b0300810b000200810b000100260b010781060d81 ! 0d06810604050481060d810d0681060d810d0b020b0b07550b010781060d810d060006 ! 81030881080382030b0d110d01007f0d010d01025f0d070c3c0d0100130d820b03088108 ! 038103040b0481060d810d0681060d820d0b0d010d070b020d040b0100850b000b000b00 ! 81000b810b0082000b0081000b010b81000b010b0100850b000b000b0081000b010b0200 ! 240b010781060d810d06810604050481060d810d0681060d810d0b020b0a07810d0b020b ! 0100040b0100090b0100810b0081000b030b0100320b010781060d810d060006 ! 81030881080382030b0d110d01007f0d010d01025b0d070c400d0100130d820b03088108 ! 038103040b0481060d810d0681060d810d0b810b0d010d050b020d050b0100810b000100 ! 810b0081000b010b0200030b81000b010b0100810b000100810b0081000b020b0200230b ! 010781060d810d06810604050481060d810d0681060d810d0b020b01070709010d030b01 ! 00040b0100090b0100810b0081000b030b0100320b010781060d810d060006 ! 81030881080382030b0d110d01007f0d010d0102580d060c440d0100130d820b03088108 ! 038103040b0481060d810d0681060d810d0b010b020d030b020d060b0100010b81000b81 ! 0b0081000b010b0200020b0100020b0100010b81000b810b0082000b0081000b810b0081 ! 000b220b010781060d810d06810604050481060d810d0681060d810d0b020b0107070901 ! 0d030b0200020b0200810b0081000b810b0081000b010b81000b810b000100020b020001 ! 0b03002c0b010781060d810d060006 ! 81030881080382030b0d110d01007f0d010d0102550d060c470d0100130d820b03088108 ! 038103040b0481060d810d0681060d810d0b020b020d010b020d070b0100010b81000b81 ! 0b0081000b020b0100020b0100020b0100010b81000b810b0081000b810b000200240b01 ! 0781060d810d06810604050481060d810d0681060d810d0b020b01070709010d030b0200 ! 020b0200810b0081000b810b0081000b810b0081000b810b000100020b0200810b008100 ! 0b810b0081000b2a0b010781060d810d060006 ! 81030881080382030b0d110d01007f0d010d0102520d060c4a0d0100130d820b03088108 ! 038103040b0481060d810d0681060d810d0b030b050d150b81000b3b0b010781060d810d ! 06810604050481060d810d0681060d810d0b020b01070709010d030b0300810b00020001 ! 0b0300020b0100010b0300810b000200810b0001002e0b010781060d810d060006 ! 81030881080382030b0d110d01007f0d010d01024f0d060c4d0d0100130d820b03088108 ! 038103040b0481060d810d0681060d810d0b040b030d150b01003c0b010781060d810d06 ! 810604050481060d810d0681060d810d0b020b01070709010d030b0100850b000b000b00 ! 81000b010b0100030b81000b010b0100850b000b000b0081000b010b02002c0b01078106 ! 0d810d060006 ! 81030881080382030b0d110d01007f0d010d01024c0d060c500d0100130d820b03088108 ! 038103040b0481060d810d0681060d810d0b050b010d150b01003d0b010781060d810d06 ! 810604050481060d810d0681060d810d0b020b01070709010d030b0100810b000100810b ! 0081000b810b000200020b81000b010b0100810b000100810b0081000b020b02002b0b01 ! 0781060d810d060006 ! 81030881080382030b0d110d01007f0d010d01024a0d050c530d0100130d820b03088108 ! 038103040b0481060d810d0681060d810d0b5d0b010781060d810d06810604050481060d ! 810d0681060d810d0b020b01070709010d030b0100010b81000b810b0082000b0081000b ! 810b0082000b0081000b010b0100010b81000b810b0082000b0081000b810b0081000b2a ! 0b010781060d810d060006 ! 81030881080382030b0d110d01007f0d010d0102470d050c560d0100130d820b03088108 ! 038103040b0481060d810d0681060d810d0b5d0b010781060d810d06810604050481060d ! 810d0681060d810d0b020b01070709010d030b0100010b81000b810b0082000b0081000b ! 810b0082000b0081000b010b0100010b81000b810b0081000b810b0002002c0b01078106 ! 0d810d060006 ! 81030881080382030b0d110d01007f0d010d0102450d040c590d0100130d820b03088108 ! 038103040b0481060d810d0681060d810d0b5d0b010781060d810d06810604050481060d ! 810d0681060d810d0b020b0107090d550b010781060d810d060006 ! 81030881080382030b0d110d01007f0d010d0102420d050c5b0d0100130d820b03088108 ! 038103040b0481060d810d0681060d810d0b5d0b010781060d810d06810604050481060d ! 810d0681060d810d0b020b81070d090d550b010781060d810d060006 ! 81030881080382030b0d110d01007f0d010d0102400d040c5e0d0100130d820b03088108 ! 038103040b0481060d810d0681060d810d0b5d0b010781060d810d06810604050481060d ! 810d0681060d810d0b640b010781060d810d060006 ! 81030881080382030b0d110d01007f0d010d01023d0d050c600d0100130d820b03088108 ! 038103040b0481060d810d0681060d810d0b5d0b010781060d810d06810604050481060d ! 810d0681060d810d0b640b010781060d810d060006 ! 81030881080382030b0d110d01007f0d010d01023b0d040c630d0100130d820b03088108 ! 038103040b0481060d810d0681060d810d0b5d0b010781060d810d06810604050481060d ! 810d0681060d810d0b640b010781060d810d060006 ! 81030881080382030b0d110d01007f0d010d0102390d040c650d0100130d820b03088108 ! 038103040b0481060d810d0681060d810d0b5d0b010781060d810d06810604050481060d ! 810d0681060d810d0b640b010781060d810d060006 ! 81030881080382030b0d110d01007f0d010d0102370d040c670d0100130d820b03088108 ! 038103040b0481060d810d0681060d810d0b050b0107550b010781060d810d0681060405 ! 0481060d810d0681060d810d0b640b010781060d810d060006 ! 81030881080382030b0d110d01007f0d010d0102350d030c6a0d0100130d820b03088108 ! 038103040b0481060d810d0681060d810d0b040b0307090b0100040b0100080b0100810b ! 0081000b030b01002c0b010781060d810d06810604050481060d810d0681060d810d0b64 ! 0b010781060d810d060006 ! 81030881080382030b0d110d01007f0d010d0102330d030c6c0d0100130d820b03088108 ! 038103040b0481060d810d0681060d810d0b030b0507080b0100040b0100080b0100810b ! 0081000b030b01002c0b010781060d810d06810604050481060d810d0681060d810d0b64 ! 0b010781060d810d060006 ! 81030881080382030b0d110d01007f0d010d0102300d040c6e0d0100130d820b03088108 ! 038103040b0481060d810d0681060d810d0b020b0207010b0207070b0200020b0200810b ! 000300020b81000b810b000100020b0200010b0300260b010781060d810d068106040504 ! 81060d810d0681060d810d0b640b010781060d810d060006 ! 81030881080382030b0d110d01007f0d010d01022e0d040c700d0100130d820b03088108 ! 038103040b0481060d810d0681060d810d0b010b0207030b0207060b0200020b0200030b ! 0100010b0100010b0200020b0200810b0081000b810b0081000b240b010781060d810d06 ! 810604050481060d810d0681060d810d0b640b010781060d810d060006 ! 81030881080382030b0d040d0100040d0100030d01007f0d010d01022d0d030c720d0100 ! 130d820b03088108038103040b0481060d810d0681060d810d0b810b070107050b020705 ! 0b0300810b000200020b0100020b0100010b0300810b000200810b000100280b01078106 ! 0d810d06810604050481060d810d0681060d810d0b020b0b07550b010781060d810d0600 ! 06 ! 81030881080382030b0d040d0100040d0100030d01007f0d010d01022b0d030c740d0100 ! 130d820b03088108038103040b0481060d810d0681060d820d0b0d010d070b020d040b01 ! 00850b000b000b0081000b010b81000b020b81000b010b0100850b000b000b0081000b01 ! 0b0200260b010781060d810d06810604050481060d810d0681060d810d0b020b0a07810d ! 0b020b0100040b01000a0b0100810b0081000b030b0100310b010781060d810d060006 ! 81030881080382030b0d040d0200020d0200030d01007f0d010d0102290d030c760d0100 ! 130d820b03088108038103040b0481060d810d0681060d810d0b810b0d010d050b020d05 ! 0b0100810b000100810b0081000b810b0081000b020b81000b010b0100810b000100810b ! 0081000b020b0200250b010781060d810d06810604050481060d810d0681060d810d0b02 ! 0b01070709010d030b0100040b01000a0b0100810b0081000b030b0100310b010781060d ! 810d060006 ! 81030881080382030b0d040d0200020d0200030d01007f0d010d0102280d020c780d0100 ! 130d820b03088108038103040b0481060d810d0681060d810d0b010b020d030b020d060b ! 0100010b81000b810b0082000b0081000b020b0100020b0100010b81000b810b0082000b ! 0081000b810b0081000b240b010781060d810d06810604050481060d810d0681060d810d ! 0b020b01070709010d030b0200020b0200810b0081000b010b0100020b81000b810b0001 ! 00020b0200010b03002b0b010781060d810d060006 ! 81030881080382030b0d040d0300810d000200030d01007f0d010d0102260d030c790d01 ! 00130d820b03088108038103040b0481060d810d0681060d810d0b020b020d010b020d07 ! 0b0100010b81000b810b0082000b000300810b0081000b010b0100010b81000b810b0081 ! 000b810b000200260b010781060d810d06810604050481060d810d0681060d810d0b020b ! 01070709010d030b0200020b0200810b0081000b010b0100010b0100010b0200020b0200 ! 810b0081000b810b0081000b290b010781060d810d060006 ! 81030881080382030b0d040d0100850d000d000d0081000d020d01007f0d010d0102240d ! 030c7b0d0100130d820b03088108038103040b0481060d810d0681060d810d0b030b050d ! 530b010781060d810d06810604050481060d810d0681060d810d0b020b01070709010d03 ! 0b0300810b000200010b0100810b0081000b010b0100010b0300810b000200810b000100 ! 2d0b010781060d810d060006 ! 81030881080382030b0d040d0100810d000100810d0081000d020d01007f0d010d010223 ! 0d020c7d0d0100130d820b03088108038103040b0481060d810d0681060d810d0b040b03 ! 0d540b010781060d810d06810604050481060d810d0681060d810d0b020b01070709010d ! 030b0100850b000b000b0081000b810b0082000b0081000b010b81000b010b0100850b00 ! 0b000b0081000b010b02002b0b010781060d810d060006 ! 81030881080382030b0d040d0100010d81000d810d0081000d020d01007f0d010d010221 ! 0d030c7e0d0100130d820b03088108038103040b0481060d810d0681060d810d0b050b01 ! 0d550b010781060d810d06810604050481060d810d0681060d810d0b020b01070709010d ! 030b0100810b000100810b0081000b010b0200030b81000b010b0100810b000100810b00 ! 81000b020b02002a0b010781060d810d060006 ! 81030881080382030b0d040d0100010d81000d810d0081000d020d01007f0d010d01021f ! 0d030c7f0d810d0081000d120d820b03088108038103040b0481060d810d0681060d810d ! 0b5d0b010781060d810d06810604050481060d810d0681060d810d0b020b01070709010d ! 030b0100010b81000b810b0081000b010b0200020b0100020b0100010b81000b810b0082 ! 000b0081000b810b0081000b290b010781060d810d060006 ! 81030881080382030b0d110d01007f0d010d01021e0d020c7f0d020d0100130d820b0308 ! 8108038103040b0481060d810d0681060d810d0b5d0b010781060d810d06810604050481 ! 060d810d0681060d810d0b020b01070709010d030b0100010b81000b810b0081000b020b ! 0100020b0100020b0100010b81000b810b0081000b810b0002002b0b010781060d810d06 ! 0006 ! 81030881080382030b0d110d01007f0d010d01021c0d030c7f0d030d0100130d820b0308 ! 8108038103040b0481060d810d0681060d810d0b5d0b010781060d810d06810604050481 ! 060d810d0681060d810d0b020b0107090d100b81000b420b010781060d810d060006 ! 81030881080382030b0d110d01007f0d010d01021b0d020c7f0d050d0100130d820b0308 ! 8108038103040b0481060d810d0681060d810d0b5d0b010781060d810d06810604050481 ! 060d810d0681060d810d0b020b81070d090d0f0b0100430b010781060d810d060006 ! 81030881080382030b0d110d01007f0d010d0102190d030c7f0d060d0100130d820b0308 ! 8108038103040b0481060d810d0681060d810d0b5d0b010781060d810d06810604050481 ! 060d810d0681060d810d0b1d0b0100440b010781060d810d060006 ! 81030881080382030b0d110d01007f0d010d0102180d020c7f0d080d0100130d820b0308 ! 8108038103040b0481060d810d0681060d810d0b5d0b010781060d810d06810604050481 ! 060d810d0681060d810d0b640b010781060d810d060006 ! 81030881080382030b0d080d0100060d01007f0d010d0102160d030c7f0d090d0100130d ! 820b03088108038103040b0481060d810d0681060d810d0b5d0b010781060d810d068106 ! 04050481060d810d0681060d810d0b640b010781060d810d060006 ! 81030881080382030b0d080d0100060d01007f0d010d0102150d020c7d0d0d010100130d ! 820b03088108038103040b0482060d060106010d5e0b010782060d060106060481060d81 ! 0d0681060d810d0b640b010781060d810d060006 ! 81030881080382030b0d080d81000d060d01007f0d010d0102130d030c700d1b01010013 ! 0d820b03088108038103040b040406010d060b0107550b01070406060481060d810d0681 ! 060d810d0b640b010781060d810d060006 ! 81030881080382030b0d070d0100070d01007f0d010d0102120d020c630d1d010c0d0100 ! 130d820b03088108038103040b0481060d010d81060d810d0b040b0307090b0500440b01 ! 0781060d010d810604050481060d810d0681060d810d0b640b010781060d810d060006 ! 81030881080382030b0d070d0100070d01007f0d010d0102100d030c550d1e011a0d0100 ! 130d820b03088108038103040b0481060d810d0681060d810d0b030b0507080b0100480b ! 010781060d810d06810604050481060d810d0681060d810d0b640b010781060d810d0600 ! 06 ! 81030881080382030b0d070d81000d070d01007f0d010d01020e0d030c480d1e01290d01 ! 00130d820b03088108038103040b0481060d810d0681060d810d0b020b0207010b020707 ! 0b0100040b0100810b0081000b010b0300010b0100810b0082000b0082000b0082000b00 ! 81000b010b0100220b010781060d810d06810604050481060d810d0681060d810d0b640b ! 010781060d810d060006 ! 81030881080382030b0d070d81000d070d01007f0d010d01020d0d030c3a0d1e01380d01 ! 00130d820b03088108038103040b0481060d810d0681060d810d0b010b0207030b020706 ! 0b0100040b0200810b0082000b0081000b810b0082000b000500810b000100810b008100 ! 0b010b0100220b010781060d810d06810604050481060d810d0681060d810d0b640b0107 ! 81060d810d060006 ! 81030881080382030b0d060d0100080d01007f0d010d01020b0d030c2d0d1e01470d0100 ! 130d820b03088108038103040b0481060d810d0681060d810d0b810b070107050b020705 ! 0b0500810b0081000b810b0082000b0081000b810b0082000b000100010b0100010b0100 ! 010b0100810b0081000b220b010781060d810d06810604050481060d810d0681060d810d ! 0b020b0b07550b010781060d810d060006 ! 81030881080382030b0d060d0100080d01007f0d010d01020a0d030c270d1601560d0100 ! 130d820b03088108038103040b0481060d810d0681060d820d0b0d010d070b020d040b01 ! 00040b0100010b0100810b000400810b0081000b010b0100010b0100010b0100810b0081 ! 000b220b010781060d810d06810604050481060d810d0681060d810d0b020b0a07810d0b ! 020b0100040b0100080b0100810b0081000b030b0100330b010781060d810d060006 ! 81030881080382030b0d110d01007f0d810d020102090d020c210d0f01650d0100130d82 ! 0b03088108038103040b0481060d810d0681060d810d0b810b0d010d050b020d050b0100 ! 040b0100010b0100810b0081000b030b0100020b0100010b0100020b0200240b01078106 ! 0d810d06810604050481060d810d0681060d810d0b020b01070709010d030b0100040b01 ! 00080b0100810b0081000b030b0100330b010781060d810d060006 ! 81030881080382030b0d110d01007f0d810d0281020d080d020c130d16016d0d0100130d ! 820b03088108038103040b0481060d810d0681060d810d0b010b020d030b020d060b0100 ! 040b0100010b0100810b0081000b810b0082000b0081000b010b0100810b000100020b02 ! 00240b010781060d810d06810604050481060d810d0681060d810d0b020b01070709010d ! 030b0200020b0200810b000300020b81000b810b000100020b0200010b03002d0b010781 ! 060d810d060006 ! 81030881080382030b0d110d7f007f002c00130d820b03088108038103040b0481060d81 ! 0d0681060d810d0b020b020d010b020d070b0500810b0081000b810b0081000b810b0002 ! 00010b0100030b0100810b0081000b020b0100240b010781060d810d0681060405048106 ! 0d810d0681060d810d0b020b01070709010d030b0200020b0200030b0100010b0100010b ! 0200020b0200810b0081000b810b0081000b2b0b010781060d810d060006 ! 81030881080382030b0d110d7f007f002c00130d820b03088108038103040b0481060d81 ! 0d0681060d810d0b030b050d260b0100030b81000b240b010781060d810d068106040504 ! 81060d810d0681060d810d0b020b01070709010d030b0300810b000200020b0100020b01 ! 00010b0300810b000200810b0001002f0b010781060d810d060006 ! 81030881080382030b0d110d01007a0d050101020501030c03017f0d170d0100130d820b ! 03088108038103040b0481060d810d0681060d810d0b040b030d230b0100010b0100020b ! 0100250b010781060d810d06810604050481060d810d0681060d810d0b020b0107070901 ! 0d030b0100850b000b000b0081000b010b81000b020b81000b010b0100850b000b000b00 ! 81000b010b02002d0b010781060d810d060006 ! 81030881080382030b0d040d0100040d0100030d01006d0d120101020301010d010c7f0d ! 1d0d0100130d820b03088108038103040b0481060d810d0681060d810d0b050b010d250b ! 0300020b0100260b010781060d810d06810604050481060d810d0681060d810d0b020b01 ! 070709010d030b0100810b000100810b0081000b810b0081000b020b81000b010b010081 ! 0b000100810b0081000b020b02002c0b010781060d810d060006 ! 81030881080382030b0d040d0100040d0100030d0100600d1a01040d0102030d030c7f0d ! 1d0d0100130d820b03088108038103040b0481060d810d0681060d810d0b5d0b01078106 ! 0d810d06810604050481060d810d0681060d810d0b020b01070709010d030b0100010b81 ! 000b810b0082000b0081000b020b0100020b0100010b81000b810b0082000b0081000b81 ! 0b0081000b2b0b010781060d810d060006 ! 81030881080382030b0d040d0200020d0200030d0100540d1901110d0102020d030c7f0d ! 1e0d0100130d820b03088108038103040b0481060d810d0681060d810d0b5d0b01078106 ! 0d810d06810604050481060d810d0681060d810d0b020b01070709010d030b0100010b81 ! 000b810b0082000b000300810b0081000b010b0100010b81000b810b0081000b810b0002 ! 002d0b010781060d810d060006 ! 81030881080382030b0d040d0200020d0200030d0100490d17011e0d0102010d020c7f0d ! 200d0100130d820b03088108038103040b0481060d810d0681060d810d0b5d0b01078106 ! 0d810d06810604050481060d810d0681060d810d0b020b0107090d550b010781060d810d ! 060006 ! 81030881080382030b0d040d0300810d000200030d0100490d0b012a0d0102810d0c010c ! 7f0d210d0100130d820b03088108038103040b0481060d810d0681060d810d0b5d0b0107 ! 81060d810d06810604050481060d810d0681060d810d0b020b81070d090d550b01078106 ! 0d810d060006 ! 81030881080382030b0d040d0100850d000d000d0081000d020d01007f0d810d0281020c ! 010c7f0d220d0100130d820b03088108038103040b0481060d810d0681060d810d075f07 ! 81060d810d06810604050481060d810d0681060d810d0b640b010781060d810d060006 ! 81030881080382030b0d040d0100810d000100810d0081000d020d01007f0d820d020c01 ! 0c7f0d230d0100130d820b03088108038103040b0481060d810d0682060d07600781060d ! 810d06810604050481060d810d0681060d810d0b640b010781060d810d060006 ! 81030881080382030b0d040d0100010d81000d810d0081000d020d01007f0d820d020c81 ! 0c0d7f0d230d0100130d820b03088108038103040b0481060d810d066406010d01060604 ! 81060d810d0681060d810d0b640b010781060d810d060006 ! 81030881080382030b0d040d0100010d81000d810d0081000d020d01007f0d820d020c81 ! 0c0d7f0d230d0100130d820b03088108038103040b0481060d820d060d100d81060d3d0d ! 81060d120d0106060481060d810d0681060d810d0b640b010781060d810d060006 ! 81030881080382030b0d110d01007f0d810d0c810c0d7f0d240d0100130d820b03088108 ! 038103040b0481060d120d01063d0d0106130d0106060481060d810d0681060d810d0b64 ! 0b010781060d810d060006 ! 81030881080382030b0d110d01007f0d810d0c810c0d7f0d240d0100130d820b03088108 ! 038103040b0482060d061306810d063d06810d061306060481060d810d0681060d810d0b ! 640b010781060d810d060006 ! 81030881080382030b0d110d01007f0d020c7f0d250d0100130d820b0308810803810304 ! 0b046c06060481060d810d0681060d810d0b640b010781060d810d060006 ! 81030881080382030b0d110d01007d0d030c81020d7f0d240d0100130d820b0308810803 ! 8103047f0481060d810d0681060d810d0b640b010781060d810d060006 ! 81030881080382030b0d110d01007a0d050c01027f0d250d0100130d820b030881080381 ! 03047f0482060d060106010d650b010782060d060106 ! 81030881080382030b0d110d0100790d040c010d01027f0d250d0100130d820b03088108 ! 038103047f040406010d030b0b07550b01070406 ! 81030881080382030b0d110d0100770d030c040d01027f0d250d0100130d820b03088108 ! 038103047f0481060d010d81060d810d0b020b0a07810d0b020b05004b0b010781060d01 ! 0d0006 ! 81030881080382030b0d060d0300060d0100760d030c050d01027f0d250d0100130d820b ! 03088108038103047f0481060d810d0681060d810d0b020b0107070b010d030b01004f0b ! 010781060d810d060006 ! 81030881080382030b0d050d0100010d0100050d0100750d020c070d01027f0d250d0100 ! 130d820b03088108038103047f0481060d810d0681060d810d0b020b0107070b010d030b ! 0100040b0100810b0081000b010b0300010b0100810b0082000b0082000b0082000b0081 ! 000b010b0100290b010781060d810d060006 ! 81030881080382030b0d050d0200080d0100750d010c080d01027f0d250d0100130d820b ! 03088108038103047f0481060d810d0681060d810d0b020b0107070b010d030b0100040b ! 0200810b0082000b0081000b810b0082000b000500810b000100810b0081000b010b0100 ! 290b010781060d810d060006 ! 81030881080382030b0d070d0200060d0100750d010c080d01027f0d250d0100130d820b ! 03088108038103047f0481060d810d0681060d810d0b020b0107070b010d030b0500810b ! 0081000b810b0082000b0081000b810b0082000b000100010b0100010b0100010b010081 ! 0b0081000b290b010781060d810d060006 ! 81030881080382030b0d080d0200050d0100750d010c080d01027f0d250d0100130d820b ! 03088108038103047f0481060d810d0681060d810d0b020b0107070b010d030b0100040b ! 0100010b0100810b000400810b0081000b010b0100010b0100010b0100810b0081000b29 ! 0b010781060d810d060006 ! 81030881080382030b0d050d0100010d0100050d0100750d010c080d01027f0d250d0100 ! 130d820b03088108038103047f0481060d810d0681060d810d0b020b0107070b010d030b ! 0100040b0100010b0100810b0081000b030b0100020b0100010b0100020b02002b0b0107 ! 81060d810d060006 ! 81030881080382030b0d060d0300060d0100750d010c080d01027f0d250d0100130d820b ! 03088108038103047f0481060d810d0681060d810d0b020b0107070b010d030b0100040b ! 0100010b0100810b0081000b810b0082000b0081000b010b0100810b000100020b02002b ! 0b010781060d810d060006 ! 81030881080382030b0d110d0100750d010c080d01027f0d250d0100130d820b03088108 ! 038103047f0481060d810d0681060d810d0b020b0107070b010d030b0500810b0081000b ! 810b0081000b810b000200010b0100030b0100810b0081000b020b01002b0b010781060d ! 810d060006 ! 81030881080382030b0d110d0100750d010c080d01027f0d250d0100130d820b03088108 ! 038103047f0481060d810d0681060d810d0b020b0107090d210b0100030b81000b2b0b01 ! 0781060d810d060006 ! 81030881080382030b0d110d0100720d040c080d01027f0d250d0100130d820b03088108 ! 038103047f0481060d810d0681060d810d0b020b81070d090d1d0b0100010b0100020b01 ! 002c0b010781060d810d060006 ! 81030881080382030b0d110d0100700d050c090d01027f0d250d0100130d820b03088108 ! 038103047f0481060d810d0681060d810d0b2d0b0300020b01002d0b010781060d810d06 ! 0006 ! 81030881080382030b0d110d01006d0d050c0c0d01027f0d250d0100130d820b03088108 ! 038103047f0481060d810d0681060d810d0b640b010781060d810d060006 ! 81030881080382030b0d110d01006c0d040c0e0d01027f0d250d0100130d820b03088108 ! 038103047f0481060d810d0681060d810d0b640b010781060d810d060006 ! 81030881080382030b0d110d0100690d040c110d01027f0d250d0100130d820b03088108 ! 038103047f0481060d810d0681060d810d0b640b010781060d810d060006 ! 81030881080382030b0d110d0100670d050c120d01027f0d250d0100130d820b03088108 ! 038103047f0481060d810d0681060d810d0b640b010781060d810d060006 ! 81030881080382030b0d110d0100640d050c150d01027f0d250d0100130d820b03088108 ! 038103047f0481060d810d0681060d810d07660781060d810d060006 ! 81030881080382030b0d110d0100630d040c170d01027f0d250d0100130d820b03088108 ! 038103047f0481060d810d0682060d07670781060d810d060006 ! 81030881080382030b0d110d0100600d040c1a0d01027f0d250d0100130d820b03088108 ! 038103047f0481060d810d066b06010d0106 ! 81030881080382030b0d110d01005d0d060c1b0d01027f0d250d0100130d820b03088108 ! 038103047f0481060d820d060d100d81060d440d81060d120d0106 ! 81030881080382030b0d110d01005a0d060c1e0d01027f0d250d0100130d820b03088108 ! 038103047f0481060d120d0106440d0106130d0106 ! 81030881080382030b0d110d0100580d050c210d01027f0d250d0100130d820b03088108 ! 038103047f0482060d061306810d064406810d061306 ! 81030881080382030b0d110d0100550d050c240d01027f0d250d0100130d820b03088108 ! 038103047f047306 ! 81030881080382030b0d110d0100520d060c260d01027f0d250d0100130d820b03088108 ! 038103047f047304 ! 81030881080382030b0d110d01004f0d060c290d01027f0d250d0100130d820b03088108 ! 038103047f047304 ! 81030881080382030b0d110d01004c0d060c2c0d01027f0d250d0100130d820b03088108 ! 038103047f047304 ! 81030881080382030b0d110d0100490d060c2f0d01027f0d250d0100130d820b03088108 ! 038103047f047304 ! 81030881080382030b0d110d0100490d030c320d01027f0d250d0100130d820b03088108 ! 038103047f047304 ! 81030881080382030b0d110d01007f0d810d0281020d7f0d240d0100130d820b03088108 ! 038103047f047304 ! 81030881080382030b0d110d01007f0d810d0281020d7f0d240d0100130d820b03088108 ! 038103047f047304 ! 81030881080382030b0d110d01007f0d810d0281020d7f0d240d0100130d820b03088108 ! 038103047f047304 ! 81030881080382030b0d110d01007f0d810d0281020d7f0d240d0100130d820b03088108 ! 038103047f047304 ! 81030881080382030b0d110d01007f0d810d0281020d7f0d240d0100130d820b03088108 ! 038103047f047304 ! 81030881080382030b0d110d01007f0d810d0281020d7f0d240d0100130d820b03088108 ! 038103047f047304 ! 81030881080382030b0d110d01007f0d810d0281020d7f0d240d0100130d820b03088108 ! 038103047f047304 ! 81030881080382030b0d110d01007f0d810d0281020d7f0d240d0100130d820b03088108 ! 038103047f047304 ! 81030881080382030b0d110d01007f0d810d0281020d7f0d240d0100130d820b03088108 ! 038103047f047304 ! 81030881080382030b0d110d01007f0d810d0281020d7f0d240d0100130d820b03088108 ! 038103047f047304 ! 81030881080382030b0d110d01007f0d810d0281020d7f0d240d0100130d820b03088108 ! 038103047f047304 ! 81030881080382030b0d110d01007f0d810d0281020d7f0d240d0100130d820b03088108 ! 038103047f047304 ! 81030881080382030b0d110d01007f0d810d0281020d7f0d240d0100130d820b03088108 ! 038103047f047304 ! 81030881080382030b0d110d01007f0d810d0281020d7f0d240d0100130d820b03088108 ! 038103047f047304 ! 81030881080382030b0d110d01007f0d810d0281020d7f0d240d0100130d820b03088108 ! 038103047f047304 ! 81030881080382030b0d110d01007f0d810d0281020d7f0d240d0100130d820b03088108 ! 038103047f047304 ! 81030881080382030b0d110d01007f0d810d0281020d7f0d240d0100130d820b03088108 ! 038103047f047304 ! 81030881080382030b0d110d01007f0d810d0281020d7f0d240d0100130d820b03088108 ! 038103047f047304 ! 81030881080382030b0d110d01007f0d810d0281020d7f0d240d0100130d820b03088108 ! 038103047f047304 ! 81030881080382030b0d110d01007f0d810d0281020d7f0d240d0100130d820b03088108 ! 038103047f047304 ! 81030881080382030b0d110d03007e0d01027f0d240d0200130d820b0308810803810304 ! 7f047304 ! 81030881080382030b0d110d03007e0d01027f0d240d0200130d820b0308810803810304 ! 7f047304 ! 81030881080382030b0d110d01007f0d810d0281020d7f0d240d0100130d820b03088108 ! 038103047f047304 ! 81030881080382030b0d110d01007f0d810d0281020d7f0d240d0100130d820b03088108 ! 038103047f047304 ! 81030881080382030b0d110d01007f0d810d0281020d7f0d240d0100130d820b03088108 ! 038103047f047304 ! 81030881080382030b0d110d01007f0d810d0281020d7f0d240d0100130d820b03088108 ! 038103047f047304 ! 81030881080382030b0d110d01007f0d810d0281020d7f0d240d0100130d820b03088108 ! 038103047f047304 ! 81030881080382030b0d110d01007f0d810d0281020d7f0d240d0100130d820b03088108 ! 038103047f047304 ! 81030881080382030b0d110d01007f0d810d0281020d7f0d240d0100130d820b03088108 ! 038103047f047304 ! 81030881080382030b0d110d01007f0d810d0281020d7f0d240d0100130d820b03088108 ! 038103047f047304 ! 81030881080382030b0d110d01007f0d810d0281020d7f0d240d0100130d820b03088108 ! 038103047f047304 ! 81030881080382030b0d110d01007f0d810d0281020d7f0d240d0100130d820b03088108 ! 038103047f047304 ! 81030881080382030b0d110d01007f0d810d0281020d7f0d240d0100130d820b03088108 ! 038103047f047304 ! 81030881080382030b0d110d01007f0d810d0281020d7f0d240d0100130d820b03088108 ! 038103047f047304 ! 81030881080382030b0d110d01007f0d810d0281020d7f0d240d0100130d820b03088108 ! 038103047f047304 ! 81030881080382030b0d110d01007f0d810d0281020d7f0d240d0100130d820b03088108 ! 038103047f047304 ! 81030881080382030b0d110d01007f0d810d0281020d7f0d240d0100130d820b03088108 ! 038103047f047304 ! 81030881080382030b0d110d01007f0d810d0281020d7f0d240d0100130d820b03088108 ! 038103047f047304 ! 81030881080382030b0d110d01007f0d810d0281020d7f0d240d0100130d820b03088108 ! 038103047f047304 ! 81030881080382030b0d110d01007f0d810d0281020d7f0d240d0100130d820b03088108 ! 038103047f047304 ! 81030881080382030b0d110d01007f0d810d0281020d7f0d240d0100130d820b03088108 ! 038103047f047304 ! 81030881080382030b0d110d01007f0d810d0281020d7f0d240d0100130d820b03088108 ! 038103047f047304 ! 81030881080382030b0d110d01007f0d810d0281020d7f0d240d0100130d820b03088108 ! 038103047f047304 ! 81030881080382030b0d110d01007f0d810d0281020d7f0d240d0100130d820b03088108 ! 038103047f047304 ! 81030881080382030b0d110d01007f0d810d0281020d7f0d240d0100130d820b03088108 ! 038103047f047304 ! 81030881080382030b0d110d01007f0d810d0281020d7f0d240d0100130d820b03088108 ! 038103047f047304 ! 81030881080382030b0d110d01007f0d810d0281020d7f0d240d0100130d820b03088108 ! 038103047f047304 ! 81030881080382030b0d110d01007f0d810d0281020d7f0d240d0100130d820b03088108 ! 038103047f047304 ! 81030881080382030b0d110d01007f0d810d0281020d7f0d240d0100130d820b03088108 ! 038103047f047304 ! 81030881080382030b0d110d01007f0d810d0281020d7f0d240d0100130d820b03088108 ! 038103047f047304 ! 81030881080382030b0d110d01007f0d810d0281020d7f0d240d0100130d820b03088108 ! 038103047f047304 ! 81030881080382030b0d110d01007f0d810d0281020d7f0d240d0100130d820b03088108 ! 038103047f047304 ! 81030881080382030b0d110d01007f0d810d0281020d7f0d240d0100130d820b03088108 ! 038103047f047304 ! 81030881080382030b0d110d01007f0d810d0281020d7f0d240d0100130d820b03088108 ! 038103047f047304 ! 81030881080382030b0d110d01007f0d810d0281020d7f0d240d0100130d820b03088108 ! 038103047f047304 ! 81030881080382030b0d110d01007f0d810d0281020d7f0d240d0100130d820b03088108 ! 038103047f047304 ! 81030881080382030b0d110d01007f0d810d0281020d7f0d240d0100130d820b03088108 ! 038103047f047304 ! 81030881080382030b0d110d01007f0d810d0281020d7f0d240d0100130d820b03088108 ! 038103047f047304 ! 81030881080382030b0d110d01007f0d810d0281020d7f0d240d0100130d820b03088108 ! 038103047f047304 ! 81030881080382030b0d110d01007f0d810d0281020d7f0d240d0100130d820b03088108 ! 038103047f047304 ! 81030881080382030b0d110d01007f0d810d0281020d7f0d240d0100130d820b03088108 ! 038103047f047304 ! 81030881080382030b0d110d01007f0d810d0281020d7f0d240d0100130d820b03088108 ! 038103047f047304 ! 81030881080382030b0d110d01007f0d810d0281020d7f0d240d0100130d820b03088108 ! 038103047f047304 ! 81030881080382030b0d110d01007f0d810d0281020d7f0d240d0100130d820b03088108 ! 038103047f047304 ! 81030881080382030b0d110d01007f0d810d0281020d7f0d240d0100130d820b03088108 ! 038103047f047304 ! 81030881080382030b0d110d01007f0d810d0281020d7f0d240d0100130d820b03088108 ! 038103047f047304 ! 81030881080382030b0d110d01007f0d810d0281020d7f0d240d0100130d820b03088108 ! 038103047f047304 ! 81030881080382030b0d110d01007f0d810d0281020d7f0d240d0100130d820b03088108 ! 038103047f047304 ! 81030881080382030b0d110d01007f0d810d0281020d7f0d240d0100130d820b03088108 ! 038103047f047304 ! 81030881080382030b0d110d01007f0d810d0281020d7f0d240d0100130d820b03088108 ! 038103047f047304 ! 81030881080382030b0d110d01007d0d04027f0d250d0100130d820b0308810803810304 ! 7f047304 ! 81030881080382030b0d110d01007a0d07027f0d250d0100130d820b0308810803810304 ! 7f047304 ! 81030881080382030b0d110d0100770d06027f0d290d0100130d820b0308810803810304 ! 7f047304 ! 81030881080382030b0d110d0100760d04027f0d2c0d0100130d820b0308810803810304 ! 7f047304 ! 81030881080382030b0d0b0d0100030d0100490d0302270d02027f0d2f0d0100130d820b ! 03088108038103047f047304 ! 81030881080382030b0d090d0300030d0100490d0e021c0d01027f0d300d0100130d820b ! 03088108038103047f047304 ! 81030881080382030b0d0b0d0100030d01004c0d1702100d01027f0d300d0100130d820b ! 03088108038103047f047304 ! 81030881080382030b0d0b0d0100030d0100570d1902030d01027f0d300d0100130d820b ! 03088108038103047f047304 ! 81030881080382030b0d0b0d0100030d0100630d13027f0d300d0100130d820b03088108 ! 038103047f047304 ! 81030881080382030b0d020d0400030d0100030d0100700d06027f0d300d0100130d820b ! 03088108038103047f047304 ! 81030881080382030b0d0b0d0100030d01007f0d7f0d280d0100130d820b030881080381 ! 03047f047304 ! 81030881080382030b0d0b0d0100030d01007f0d7f0d280d0100130d820b030881080381 ! 03047f047304 ! 81030881080382030b0d0b0d0100030d01007f0d130d01007f0d120d0100130d820b0308 ! 8108038103047f047304 ! 81030881080382030b0d110d0100480d0100480d0100480d0100470d0100130d820b0308 ! 8108038103047f047304 ! 81030881080382030b0d110d0100480d0100480d0100480d0100470d0100130d820b0308 ! 8108038103047f047304 ! 81030881080382030b0d110d7f007f002c00130d820b03088108038103047f047304 ! 820308030103810b0d110d7f007f002c00130d830b03080301037f047404 ! 0403810b0d7f0d7f0d520d810b0303037f047404 ! 810308010882030b0d7f0d7f0d520d820b030801088103047f047304 ! 81030881080382030b0d7f0d7f0d520d820b03088108038103047f047304 ! 81030881080382030b0d0e0d0100030d0300020d0300700d05000f0d01000b0d0700810d ! 0081000d740d0100030d0300020d03000b0d820b03088108038103047f047304 ! 81030881080382030b0d0c0d0300020d0100010d0100810d0081000d810d0081000d6e0d ! 0100020d01000d0d01000f0d0100040d0100720d0300020d0100010d0100810d0081000d ! 810d0081000d090d820b03088108038103047f047304 ! 81030881080382030b0d0e0d0100020d0100010d0100810d0081000d810d0081000d6e0d ! 0100020d0100810d0081000d810d0081000d050d0100010d82000d000100810d00010004 ! 0d0100040d0100740d0100020d0100010d0100810d0081000d810d0081000d090d820b03 ! 088108038103047f047304 ! 81030881080382030b0d0e0d0100020d0100010d0100810d0081000d810d0081000d6e0d ! 0100020d0100810d0081000d810d0081000d040d0100020d0100010d0100010d0100030d ! 0100050d0100730d0100020d0100010d0100810d0081000d810d0081000d090d820b0308 ! 8108038103047f047304 ! 81030881080382030b0d0e0d0100020d0100010d0100810d0081000d810d0081000d6e0d ! 0500020d0300060d0100020d0100010d0100010d0100030d0100050d0100730d0100020d ! 0100010d0100810d0081000d810d0081000d090d820b03088108038103047f047304 ! 81030881080382030b0d050d0400030d0100020d0100010d0100810d0081000d810d0081 ! 000d6e0d0100020d0100020d0100070d0100020d0100010d0100010d0100030d0100050d ! 0100730d0100020d0100010d0100810d0081000d810d0081000d090d820b030881080381 ! 03047f047304 ! 81030881080382030b0d0e0d0100020d0100010d0100810d0081000d810d0081000d6e0d ! 0100020d0100010d0300060d0100020d0100010d0100010d0100030d0100050d0100730d ! 0100020d0100010d0100810d0081000d810d0081000d090d820b03088108038103047f04 ! 7304 ! 81030881080382030b0d0e0d0100020d0100010d0100810d0081000d810d0081000d6e0d ! 0100020d0100810d0081000d810d0081000d040d0100020d0100010d0100010d0100030d ! 0100050d0100730d0100020d0100010d0100810d0081000d810d0081000d090d820b0308 ! 8108038103047f047304 ! 81030881080382030b0d0e0d0100030d0300020d0300700d0500010d0100010d0100050d ! 0100020d0100010d0100010d0100030d0100050d0100730d0100030d0300020d03000b0d ! 820b03088108038103047f047304 ! 81030881080382030b0d7f0d250d0100160d01007f0d110d820b03088108038103047f04 ! 7304 ! 81030881080382030b0d7f0d250d0100160d01007f0d110d820b03088108038103047f04 ! 7304 ! 81030881080382030b0d7f0d260d0100140d01007f0d120d820b03088108038103047f04 ! 7304 ! 81030881080382030b0d7f0d7f0d520d820b03088108038103047f047304 ! 81030881080382030b0d7f0d7f0d520d820b03088108038103047f047304 ! 81030881080382030b0d7f0d7f0d520d820b03088108038103047f047304 ! 81030881080381030b7f0b7f0b540b8103088108038103047f047304 ! 8103088108037f037f035703010801037f047404 ! 8103088208030810088103087f087f083008810308120801037f047404 ! 810308120801037f087f0830080103130801037f047404 ! 8203080313038108037f037f03300381080313037f047404 ! 7f037f035f037f047404 % ! % Compression made this file 5.54% of the uncompressed size. % diff -crN oommf-1.1a2/doc/psfiles/mmprobed-ss.ps oommf/doc/psfiles/mmprobed-ss.ps *** oommf-1.1a2/doc/psfiles/mmprobed-ss.ps Wed Apr 5 00:23:09 2000 --- oommf/doc/psfiles/mmprobed-ss.ps Tue Apr 4 23:21:03 2000 *************** *** 1,7 **** %!PS-Adobe-2.0 EPSF-2.0 ! %%Title: /home/donahue/mag/oommf/doc/giffiles/mmprobed-ss.ps ! %%Creator: XV Version 3.10a Rev: 12/29/94 - by John Bradley ! %%BoundingBox: 0 0 1030 608 %%Pages: 1 %%DocumentFonts: %%EndComments --- 1,7 ---- %!PS-Adobe-2.0 EPSF-2.0 ! %%Title: /home/donahue/mag/oommf/doc/foo.ps ! %%Creator: XV Version 3.10a Rev: 12/29/94 (PNG patch 1.2) - by John Bradley ! %%BoundingBox: 0 0 1144 652 %%Pages: 1 %%DocumentFonts: %%EndComments *************** *** 16,22 **** 20 dict begin % define space for color conversions ! /grays 515 string def % space for gray scale line /npixls 0 def /rgbindx 0 def --- 16,22 ---- 20 dict begin % define space for color conversions ! /grays 572 string def % space for gray scale line /npixls 0 def /rgbindx 0 def *************** *** 24,30 **** 0 0 translate % size of image (on paper, in 1/72inch coords) ! 1030.03200 607.96800 scale % define 'colorimage' if it isn't defined % ('colortogray' and 'mergeprocs' come from xwd2ps --- 24,30 ---- 0 0 translate % size of image (on paper, in 1/72inch coords) ! 1144.00800 652.03200 scale % define 'colorimage' if it isn't defined % ('colortogray' and 'mergeprocs' come from xwd2ps *************** *** 130,1309 **** } bind def ! 515 304 8 % dimensions of data ! [515 0 0 -304 0 304] % mapping matrix rlecmapimage ! 7f0137017f0a7f0a4a0a ! 81010513058101057f050805810105130581010a7f0a7f0a490a ! 810105120501017f0508050101130501017f0a7f0a4a0a ! 81010581050112018105017f010801810501100181050181010a7f0a7f0a490a ! 8101058105017f012f01010501017f0a7f0a4a0a ! 8101058105018101050f0581010576058101050f058101050f0581010581050181010a7f ! 0a7f0a490a ! 8101058105018101050e050101760501010f0501010f050101010501017f0a7f0a4a0a ! 8101058105018101058105020c02010101057402010101050d02010101050d0201010105 ! 01017f0a7f0a4a0a ! 8101058105018101058105020c0201010105160205000c02010005020500040201000802 ! 0300020203000302010003020300030201000d02010101050d02010101050d0201010105 ! 01017f0a7f0a4a0a ! 8101058105018101058105020c020101010516020100020201000b020100050201000802 ! 010007020100010201008102008100028102008200020002000202010001020100810200 ! 02000d0201010105010208058101028102018101058105020c020101010501017f0a7f0a ! 4a0a ! 8101058105018101058105020c0201010105820002000100810200010001028200020001 ! 008102000100020201000202030081020082000200020001020100810200810002010201 ! 00050201008102008100020a020100810200810002810200810002010201000202010001 ! 020100020201000d0201010105010281050206028101028102018101058105020c020101 ! 010501017f0a7f0a4a0a ! 8101058105018101058105020c0201010105010001020100010201008102008100028102 ! 008100028102008100028102008100020102080001020100810200010081020081000281 ! 020081000203020100810200010004020100030201000102010001020100020201000202 ! 010001020100020201000302010007020101010501028105020602810102810201810105 ! 8105020c020101010501017f0a7f0a4a0a ! 810105810501810105810502810205070581010281020181010581050081000281020081 ! 000281020082000200810002810200810002810200810002810200040081020001000102 ! 010001020100810200810002810200810002810200040081020081000281020081000201 ! 020200030201000302040002020100030204000202010004020200050201010105010281 ! 050206028101028102018101058105020302020581010203020101010501017f0a7f0a4a 0a ! 810105810501810105810502820205020602810102810201810105810500810002810200 ! 810002810200820002008100028102008100028102008100028102008100020302010002 ! 020100010201008102008100028102008100028102008100020302010001020100010201 ! 000402010007020100020201000602010002020100060201000402010101050102810502 ! 060281010281020181010581050203028105028202010203020101010501017f0a7f0a4a ! 0a ! 810105810501810105810502820205020602810102810201810105810500810002810200 ! 810002810200820002008100028102008100028102008100028102008100020302010002 ! 020100010201008102008100028102008100028102008100020302010001020100020202 ! 000102010008020100020201000602010002020100040202000502010101050102810502 ! 060281010281020181010581050203028105028202010203020101010501017f0a7f0a4a ! 0a ! 810105810501810105810502810201080101020101010501000102010001020100810200 ! 810002810200810002810200810002810200810002030201000202010001020100810200 ! 010081020081000281020081000203020100810200010004020100810200810002030201 ! 000102010002020100020201000102010002020100030201000702010101050102810502 ! 06028101028102018101058105020302030104020101010501017f0a7f0a4a0a ! 8101058105018101058105020c0201010105010001020100010201008102008100028102 ! 008100028102008100028102008100020302010003020300010201008102008100020102 ! 05000102010081020081000206020500010203000302010003020300030201000d020101 ! 0105010281050206028101028102018101058105020c020101010501017f0a7f0a4a0a ! 8101058105018101058105020c0201010105740201010105010281050206028101028102 ! 018101058105020c020101010501017f0a7f0a4a0a ! 8101058105018101058105020c0201010105740201010105010209010102010101050d02 ! 0101010501017f0a7f0a4a0a ! 8101058105018101058105020c02010101057402010101050d02010101050d0201010105 ! 01017f0a7f0a4a0a ! 8101058105018101058105020c02010101057402010101050d02010101050d0201010105 ! 01017f0a7f0a4a0a ! 8201050101018105010f0181050176018105010f018105010f0181050101017f0a7f0a4a ! 0a ! 7f0137017f0a7f0a4a0a ! 810105010581010a7f0a2c0a810105010581010a7f0a7f0a490a ! 81010581050181010a7f0a2b0a8204010581050181010a7f0a7f0a490a ! 81010581050181010a7f0a2a0a010481010581050181010a7f0a7f0a490a ! 81010581050181010a010a7f092709020481010581050181010a7f0a7f0a490a ! 81010581050181010a010a7f092709020481010581050181010a7f0a7f0a490a ! 81010581050181010a010a7f092709020481010581050181010a0d0a7f037f033b03 ! 81010581050181010a010a7f092709020481010581050181010a0d0a81030a130a81030a ! 7f0a7f0a0c0a81030a130a0003 ! 81010581050181010a010a7f092709020481010581050181010a0d0a81030a120a01037f ! 0a7f0a0c0a0103130a0103 ! 81010581050181010a010a7f092709020481010581050181010a0d0a81030a810a031203 ! 810a037f037f030c03810a031003810a030003 ! 81010581050181010a010a7f092709020481010581050181010a0d0a81030a810a037f03 ! 7f033303010a0103 ! 81010581050181010a010a060907008109008100097509010602090106070901060d0902 ! 0481010581050181010a0d0a81030a810a0381030a0f0a81030a7f0a7a0a81030a0f0a81 ! 030a0f0a81030a810a030003 ! 81010581050181010a010a06090100060901007609010602090106070901060d09020481 ! 010581050181010a0d0a81030a810a0381030a0e0a01037f0a7a0a01030f0a01030f0a01 ! 03010a0103 ! 81010581050181010a010a06090100030901008109008100098109000200700901060209 ! 01060109030601090106810906820609068106090609020481010581050181010a0d0a81 ! 030a810a0381030a810a080c080103010a7f0878080103010a0d080103010a0d08010301 ! 0a0103 ! 81010581050181010a010a0609010003090100810900820009008100098109008100096e ! 090106020901068109068106098109068206090682060906010681090681060905090204 ! 81010581050181010a0d0a81030a810a0381030a810a080c080103010a3a0805000c0801 ! 000508050004080100080803000208030003080100030803000308010024080100460801 ! 03010a0d080103010a0d080103010a0103 ! 81010581050181010a010a0609040081090082000900820009008100098109008100096e ! 090606810906810609810906820609068206090681060981090681060905090204810105 ! 81050181010a0d0a81030a810a0381030a810a080c080103010a3a080100020801000b08 ! 010005080100080801000708010001080100810800810008810800820008000200020801 ! 000108010081080002002408010046080103010a0108080a81030881080381030a810a08 ! 0c080103010a0103 ! 81010581050181010a010a06090100030901008109008200090004006f09010602090106 ! 8109060406810906820609068106098109068106090509020481010581050181010a0d0a ! 81030a810a0381030a810a080c080103010a230882000800010081080001000108820008 ! 000100810800010002080100020803008108008200080002000108010081080081000801 ! 080100050801008108008100080a08010081080081000881080081000801080100020801 ! 0001080100020801000a0801000408820008000100810800010002080300010803008308 ! 000800010081080001000208030001080100810800810008810800810008810800810008 ! 24080103010a0108810a08060881030881080381030a810a080c080103010a0103 ! 81010581050181010a010a06090100030901008109008200090081000972090106020901 ! 06810906810609030901068109068106098109068106090509020481010581050181010a ! 0d0a81030a810a0381030a810a080c080103010a23080100010801000108010081080081 ! 000881080081000881080081000881080081000801080800010801008108000100810800 ! 810008810800810008030801008108000100040801000308010001080100010801000208 ! 010002080100010801000208010003080100040801000408010001080100010801008108 ! 008100088108008100088108008100088108008100088108008100088108008200080081 ! 00088108008200080001008108008200080081000881080081000824080103010a010881 ! 0a08060881030881080381030a810a080c080103010a0103 ! 81010581050181010a010a0609010003090100810900820009008100098109008100096e ! 090106020901068109068106098109068206090682060906010681090681060905090204 ! 81010581050181010a0d0a81030a810a0381030a810a0881080a070a8103088108038103 ! 0a810a082208010001080100010801008108008100088108008100088108008100088108 ! 000400810800010001080100010801008108008100088108008100088108000400810800 ! 810008810800810008010802000308010003080400020801000308040002080100040802 ! 000908010001080100010801000408010001080100010801000108010001080100810800 ! 810008810800820008008100088108008200080081000881080081000824080103010a01 ! 08810a08060881030881080381030a810a080308020a81030803080103010a0103 ! 81010581050181010a010a06090100030901008109008100098109000200700901060209 ! 01060109030601090106810906820609068106090609020481010581050181010a0d0a81 ! 030a810a0381030a810a0882080a08060881030881080381030a810a0822080100010801 ! 000108010081080081000881080081000881080081000881080081000803080100020801 ! 000108010081080081000881080081000881080081000803080100010801000108010004 ! 080100070801000208010006080100020801000608010008080100010801000108010001 ! 080400010801000108010001080100010801008108000400810800810008810800820008 ! 0081000881080081000824080103010a0108810a08060881030881080381030a810a0803 ! 08810a088208030803080103010a0103 ! 81010581050181010a010a7f091a0901060a09020481010581050181010a0d0a81030a81 ! 0a0381030a810a0882080a08060881030881080381030a810a0822080100010801000108 010081080081000881080081000881080081000881080081000803080100020801000108 ! 010081080081000881080081000881080081000803080100010801000208020001080100 ! 080801000208010006080100020801000408020009080100010801000108010081080081 ! 000881080081000881080081000881080081000881080081000881080082000800810008 ! 030801000108010081080081000881080081000824080103010a0108810a080608810308 ! 81080381030a810a080308810a088208030803080103010a0103 ! 81010581050181010a010a050906007a090806090901060a09020481010581050181010a ! 0d0a81030a810a0381030a810a08810803080301080103010a2308010001080100010801 ! 008108008100088108008100088108008100088108008100080308010002080100010801 ! 008108000100810800810008810800810008030801008108000100040801008108008100 ! 080308010001080100020801000208010001080100020801000308010004080100040801 ! 000108010001080100810800810008810800810008810800820008000100010801000108 ! 010081080081000881080082000800810008810800820008008200080001002508010301 ! 0a0108810a08060881030881080381030a810a080308030304080103010a0103 ! 81010581050181010a010a7f091a0901060a09020481010581050181010a0d0a81030a81 ! 0a0381030a810a080c080103010a23080100010801000108010081080081000881080081 ! 000881080081000881080081000803080100030803000108010081080081000801080500 ! 0108010081080081000806080500010803000308010003080300030801000a0801000408 ! 010001080100010801000108020081080081000881080082000800810008810800810008 ! 810800810008810800020001080100010801000108010081080081000824080103010a01 ! 08810a08060881030881080381030a810a080c080103010a0103 ! 81010581050181010a010a7f092709020481010581050181010a0d0a81030a810a038103 ! 0a810a080c080103010a7f0878080103010a0108810a08060881030881080381030a810a ! 080c080103010a0103 ! 81010581050181010a010a7f092709020481010581050181010a0d0a81030a810a038103 ! 0a810a080c080103010a7f0878080103010a0108090301080103010a0d080103010a0103 ! ! 81010581050181010a010a7f092709020481010581050181010a0d0a81030a810a038103 ! 0a810a080c080103010a7f0878080103010a0d080103010a0d080103010a0103 ! 81010581050181010a010a7f092709020481010581050181010a0d0a81030a810a038103 ! 0a810a080c080103010a7f0878080103010a0d080103010a0d080103010a0103 ! 81010581050181010a010a7f092709020481010581050181010a0d0a82030a030103810a ! 030f03810a037f037a03810a030f03810a030f03810a030103 ! 81010581050181010a010a7f042a0481010581050181010a0d0a7f037f033b03 ! 81010581050181010a810a047f042a0481010581050181010a0d0a81030a010a8103097f ! 097f09300981030a010a0003 ! 81010581050182010a047f042b0481010581050181010a0d0a81030a810a038103097f09 ! 7f09300981030a810a030003 ! 81010581050181010a7f0a2c0a81010581050181010a0d0a81030a810a038103097f097f ! 09300981030a810a030003 ! 81010581050181010a7f0a2b0a8204010581050181010a0d0a81030a810a038103097f09 ! 7f09300981030a810a030003 ! 81010581050181010a810a047f042a0481010581050181010a0d0a81030a810a03810309 ! 7f097f09300981030a810a030003 ! 81010581050181010a810a047f042704810a048204010581050181010a0d0a81030a810a ! 038103097f097f09300981030a810a030003 ! 81010581050181010a810a048104097f092409010a010481010581050181010a0d0a8103 ! 0a810a038103097f097f09300981030a810a030003 ! 81010581050181010a810a048204090a7f0a220a81090a810a048204010581050181010a ! 0d0a81030a810a038103097f097f09300981030a810a030003 ! 81010581050181010a810a048204090a7f0a210a8204090a810a04820401058105018101 ! 0a0d0a81030a810a038103097f097f09300981030a810a030003 ! 81010581050181010a810a048204090a810a097f091e09010481090a810a048204010581 ! 050181010a0d0a81030a810a0381030978092d0a0109460a01093d0a8209030a810a0300 ! 03 ! 81010581050181010a810a048204090a810a097f091e09010481090a810a048204010581 ! 050181010a0d0a81030a810a038103090809640a0a092c0a81040981090a440a81040981 ! 090a3b0a830409030a810a030003 ! 81010581050181010a810a048204090a810a097f091e09010481090a810a048204010581 ! 050181010a0d0a81030a810a038103090809630a8104090909010a290901040109010a42 ! 0901040109010a390901048209030a810a030003 ! 81010581050181010a810a048204090a810a097f091e09010481090a810a048204010581 ! 050181010a0d0a81030a810a038103090809010a600901040a09010a290901040109010a ! 420901040109010a390901048209030a810a030003 ! 81010581050181010a810a048204090a810a097f091e09010481090a810a048204010581 ! 050181010a0d0a81030a810a038103090809010a600901040a09010a290901040109010a ! 420901040109010a390901048209030a810a030003 ! 81010581050181010a810a048204090a810a097f091e09010481090a810a048204010581 ! 050181010a0d0a81030a810a038103090809010a600901040a09010a290901040109010a ! 420901040109010a390901048209030a810a030003 ! 81010581050181010a810a048204090a810a091209010004090100080901000d09010007 ! 09010005090500260901002809010481090a810a048204010581050181010a0d0a81030a ! 810a038103090809010a600901040a09010a290901040109010a420901040109010a3909 ! 01048209030a810a030003 ! 81010581050181010a810a048204090a810a091209010004090100080901001709010005 ! 09010002090100250901002809010481090a810a048204010581050181010a0d0a81030a ! 810a038103090809010a600901040a09010a290901040109010a420901040109010a3909 ! 01048209030a810a030003 ! 81010581050181010a810a048204090a810a091209020002090200010903000109030001 090300010901008109000200010903000109010005090100020901008109000200010901 008109008200090002000109820009000100810900010002090300010903000109030001 ! 0901008109008200090002001509010481090a810a048204010581050181010a0d0a8103 ! 0a810a038103090809010a0409010004090100080901000d090100070901000409070020 ! 0901040a09010a0c09010606090106040901060a0901040109010a0a0905060f0901061f ! 0901040109010a0a0904060909010608090106120901048209030a810a030003 ! 81010581050181010a810a048204090a810a091209020002090200810900810009810900 810009810900810009810900810009810900820009000500810900810009810900820009 008100090409010002090300010901008109000500010901008109008100098109008100 098109008200090081000981090081000981090081000981090081000981090082000900 ! 0500010901001409010481090a810a048204010581050181010a0d0a81030a810a038103 ! 090809010a0409010004090100080901001709010007090100230901040a09010a0b0903 ! 0605090106040901060a0901040109010a0a090106020901060e0901061f090104010901 ! 0a0a090106010901060809010608090106120901048209030a810a030003 ! 81010581050181010a810a048204090a810a091209030081090002000409010001090100 010901000109010081090001000109010004090100810900810009040905000409010081 090001000509010081090081000981090081000981090082000900810009810900810009 810900810009810900810009810900820009000100010902001709010481090a810a0482 ! 04010581050181010a0d0a81030a810a038103090809010a040902000209020001090300 ! 010903000109030001090100810900020001090300010901000709010002090100020901 ! 00810900820009008100090109030002090300050901040a09010a0b0981060982090609 ! 0109010681090681060981090682060906810609090901040109010a0a09010602090106 ! 0109030601090106810906810609810906810609810906020602090306020903060b0901 ! 040109010a0a0901060209010601090306010901060109030601090306010903060b0901 ! 048209030a810a030003 ! 81010581050181010a810a048204090a810a091209010085090009000900810009810900 030001090100010905008109008100090109010001090400810900810009040901000509 040081090081000902090400810900810009810900810009810900820009000400010901 ! 0001090500810900810009030902001509010481090a810a048204010581050181010a0d ! 0a81030a810a038103090809010a04090200020902008109008100098109008100098109 ! 008100098109008100098109008200090005008109008100098109008200090081000906 ! 090100020901000209010081090001008109008200090081000981090082000900810009 ! 810900810009030901040a09010a0a090106010901068109068206090601068109068206 ! 090601060a0901040109010a0a0901060209010681090681060981090682060906010681 ! 090682060906820609068106098109068206090681060981090682060906810609810906 ! 810609090901040109010a0a090106020901068109068106098109068206090682060906 ! 810609810906810609810906810609810906810609810906810609090901048209030a81 ! 0a030003 ! 81010581050181010a810a048204090a810a091209010081090001008109008200090081 000981090081000981090081000981090081000903090100020901008109008100098109 008200090081000904090100040901000109010081090081000901090100010901008109 008100098109008100098109008200090081000904090100010901000409010005090200 ! 1409010481090a810a048204010581050181010a0d0a81030a810a038103090809010a04 ! 090300810900020004090100010901000109010001090100810900010001090100040901 ! 008109008100090609010003090100810900810009810900810009810900820009008100 ! 09810900820009000100070901040a09010a0a0901060109010681090681060981090682 ! 060906810609810906810609090901040109010a0a090506010901060109010681090681 ! 0609810906820609068106090309010681090681060903090106010901060a0901040109 ! 010a0a090106020901068109068106098109068206090682060906810609810906810609 ! 810906810609810906810609810906810609090901048209030a810a030003 ! 81010581050181010a810a048204090a810a091209010001098100098109008200090081 000981090081000981090082000900010001090100810900810009010901008109008100 098109008200090081000904090100040901000109010081090081000901090100010901 008109008100098109008100098109008200090081000981090081000981090082000900 ! 01000109010081090081000901090100010901001409010481090a810a04820401058105 ! 0181010a0d0a81030a810a038103090809010a0409010085090009000900810009810900 ! 030001090100010905008109008100090109010001090400810900810009060901000309 ! 010081090081000981090081000981090082000900040002090200050901040a09010a0a ! 09050681090681060981090682060906810609810906810609090901040109010a0a0901 ! 060109010601090506810906810609810906820609068106098109060306810906810609 ! 030905060a0901040109010a0a0901060209010681090604068109068206090604060109 ! 0106010905060a0901048209030a810a030003 ! 81010581050181010a810a048204090a810a091209010001098100098109008100098109 000100810900810009810900810009810900020001090100020901000109020081090002 000509010005090200810900020003090200810900020001090100010901000109030003 ! 0901000109030001090100030903001509010481090a810a048204010581050181010a0d ! 0a81030a810a038103090809010a04090100810900010081090082000900810009810900 ! 810009810900810009810900810009030901000209010081090081000981090082000900 ! 8100090609010004090200020901000109010081090081000906090200040901040a0901 ! 0a090901060309030601090106810906810609810906810609090901040109010a0a0901 ! 060209010681090681060903090106010901068109068206090681060981090682060906 ! 810609030901060e0901040109010a0a0901060209010681090681060903090106810906 ! 81060904090106010901060e0901048209030a810a030003 ! 81010581050181010a810a048204090a810a097f091e09010481090a810a048204010581 ! 050181010a0d0a81030a810a038103090809010a04090100010981000981090082000900 ! 810009810900810009810900820009000100010901008109008100090109010081090081 ! 000981090082000900810009060901000409020002090200810900820009008100098109 ! 0082000900810009810900810009030901040a09010a0909010603090306810906010681 ! 09068206090601060a0901040109010a0a09010602090106810906810609810906820609 ! 060106810906820609068206090681060981090682060906810609810906820609068106 ! 09810906810609090901040109010a0a0901060109010601090106010901068109068206 ! 0906810609810906810609810906820609060106010901060a0901048209030a810a0300 ! 03 ! 81010581050181010a810a048204090a810a097f091e09010481090a810a048204010581 ! 050181010a0d0a81030a810a038103090809010a04090100010981000981090081000981 ! 090001008109008100098109008100098109000200010901000209010001090200810900 ! 02000709010005090100020901008109008100090109030002090300050901040a09010a ! 09090106030901068109068206090681060981090682060906810609090901040109010a ! 0a0901060209010601090306010901068109068106098109068106098109060106810906 ! 820609060206020903060b0901040109010a0a0904060309030601090106010903060309 ! 0106010903060b0901048209030a810a030003 ! 81010581050181010a810a048204090a810a097f091e09010481090a810a048204010581 ! 050181010a0d0a81030a810a038103090809010a420981000902090100160901040a0901 ! 0a290901040109010a19090106260901040109010a390901048209030a810a030003 ! 81010581050181010a810a048204090a810a097f091e09010481090a810a048204010581 ! 050181010a0d0a81030a810a038103090809010a03090a00320901000309010016090104 ! 0a09010a290901040109010a19090106260901040109010a390901048209030a810a0300 ! 03 ! 81010581050181010a810a048204090a810a097f091e09010481090a810a048204010581 ! 050181010a0d0a81030a810a038103090809010a4009010004090100160901040a09010a ! 290901040109010a19090106260901040109010a390901048209030a810a030003 ! 81010581050181010a810a048204090a810a097f091e09010481090a810a048204010581 ! 050181010a0d0a81030a810a038103090809010a600901040a09010a290901040109010a ! 420901040109010a390901048209030a810a030003 ! 81010581050181010a810a048204090a810a097f091e09010481090a810a048204010581 ! 050181010a0d0a81030a810a038103090809010a600901040a09010a290901040109010a ! 420901040109010a390901048209030a810a030003 ! 81010581050181010a810a048204090a810a047f04200481090a810a0482040105810501 ! 81010a0d0a81030a810a038103090809010a600901040a09010a290901040109010a4209 ! 01040109010a390901048209030a810a030003 ! 81010581050181010a810a048304090a047f04210481090a810a04820401058105018101 ! 0a0d0a81030a810a038103090809010a62040a09010a290901040109010a420901040109 ! 010a390901048209030a810a030003 ! 81010581050181010a810a048104097f092409010a010481010581050181010a0d0a8103 ! 0a810a038103090809810a0462040a09010a2b040109010a44040109010a3b048209030a ! 810a030003 ! 81010581050181010a810a048104097f092409010a010481010581050181010a0d0a8103 ! 0a810a038103097809810a042b040109810a0444040109810a043b048209030a810a0300 ! 03 ! 81010581050181010a810a048204090a7f0a220a81090a810a048204010581050181010a ! 0d0a81030a810a038103097f097f09300981030a810a030003 ! 81010581050181010a810a048204090a7f0a210a8204090a810a04820401058105018101 ! 0a0d0a81030a810a038103097f097f09300981030a810a030003 ! 81010581050181010a810a048204090a810a097f091e09010481090a810a048204010581 ! 050181010a0d0a81030a810a038103097f097f09300981030a810a030003 ! 81010581050181010a810a048204090a810a097f091e09010481090a810a048204010581 ! 050181010a0d0a81030a810a038103097f097f09300981030a810a030003 ! 81010581050181010a810a048204090a810a097f091e09010481090a810a048204010581 ! 050181010a0d0a81030a810a038103097f097f09300981030a810a030003 ! 81010581050181010a810a048204090a810a097f091e09010481090a810a048204010581 ! 050181010a0d0a81030a810a038103097f097f09300981030a810a030003 ! 81010581050181010a810a048204090a810a097f091e09010481090a810a048204010581 ! 050181010a0d0a81030a810a038103097f097f09300981030a810a030003 ! 81010581050181010a810a048204090a810a097f091e09010481090a810a048204010581 ! 050181010a0d0a81030a810a038103097f097f09300981030a810a030003 ! 81010581050181010a810a048204090a810a09120904002809040016090100020904000f ! 090100010901002109010481090a810a048204010581050181010a0d0a81030a810a0381 ! 03097f097f09300981030a810a030003 ! 81010581050181010a810a048204090a810a091209010001090100260901000209010019 ! 090100130901002509010481090a810a048204010581050181010a0d0a81030a810a0381 ! 03097f097f09300981030a810a030003 ! 81010581050181010a810a048204090a810a091209010002090100010903000109820009 000100810900010002090300020901008109008100090409010002090100810900820009 008100090109030002090300010901008109000200810900810009810900020002090300 010903008109008100098109000200010901008109008100091309010481090a810a0482 ! 04010581050181010a0d0a81030a810a038103097f0911097f041d048209030a810a0300 ! 03 ! 81010581050181010a810a048204090a810a091209010002090100810900810009810900 820009008100098109008100098109008200090081000981090082000900820009000100 060902000309020081090082000900810009810900820009008100098109008200090081 000981090081000981090082000900810009810900820009008100098109008100098109 00810009810900820009008100098109008200090001008109008100091209010481090a ! 810a048204010581050181010a0d0a81030a810a038103097f0911097f041c04830a0903 ! 0a810a030003 ! 81010581050181010a810a048204090a810a091209010002090100810900810009810900 820009008100098109008100098109008100090309010081090081000981090081000907 090200010901000109010081090081000981090082000900810009030901000109010001 090100810900810009070901000109010001090100810900810009810900820009008100 ! 098109008100091209010481090a810a048204010581050181010a0d0a81030a810a0381 ! 03097f09110901047f091909010a8209030a810a030003 ! 81010581050181010a810a048204090a810a091209010002090100810900040081090081 000981090081000981090081000981090003008109008100098109008100090809020081 090081000981090082000900040081090081000903090100010901000109010081090081 000904090400010901000109010081090081000981090082000900810009810900810009 ! 1209010481090a810a048204010581050181010a0d0a81030a810a038103097f09110901 ! 047f091909010a8209030a810a030003 ! 81010581050181010a810a048204090a810a091209010002090100810900810009030901 000109010001090100810900810009810900820009008100098109008100090409010002 090100810900810009810900820009008100090309010004090100010901000109010081 090081000903090100010901000109010001090100810900810009810900820009008100 ! 098109008100091209010481090a810a048204010581050181010a0d0a81030a810a0381 ! 03097f09110901047f091909010a8209030a810a030003 ! 81010581050181010a810a048204090a810a091209010001090100010901000109010081 090081000981090081000981090082000900810009810900820009008200090001000509 010002090100810900010081090082000900810009810900820009008100098109008200 090081000981090081000981090082000900810009810900820009008100098109008100 098109008200090001008109008100098109008200090081000981090081000912090104 ! 81090a810a048204010581050181010a0d0a81030a810a03810309340901000409010008 ! 0901000d09010007090100050901000209010021090104010904001d0981000982090009 ! 6f09010a8209030a810a030003 ! 81010581050181010a810a048204090a810a091209040003090300010901000109010001 090100010902008109008200090082000900810009050904000109010081090081000901 090300020903000109010001090100010901000109030002090200810900810009810900 ! 82000900810009810900020001090100010901001309010481090a810a04820401058105 ! 0181010a0d0a81030a810a03810309340901000409010008090100170901000509020001 ! 09010021090104010981000902098100091b09810009820900096f09010a8209030a810a ! 030003 ! 81010581050181010a810a048204090a810a09370901000d0901005409010481090a810a ! 048204010581050181010a0d0a81030a810a038103093409020002090200010903000109 ! 030001090300010901008109000200010903000109010005090200010901000109030001 ! 098200090001008109000100020903000209010004090104010981000902098100090109 ! 020002098700090009000900098209000902090200020981000982090009010902000209 ! 81000901098100096109010a8209030a810a030003 ! 81010581050181010a810a048204090a810a0933090100010901000d0901005409010481 ! 090a810a048204010581050181010a0d0a81030a810a0381030934090200020902008109 ! 008100098109008100098109008100098109008100098109008200090005008109008100 ! 098109008200090081000904090100830900090082000900810009810900820009008100 ! 098109008100098109008200090081000981090081000981090081000903090104010981 ! 000902098100098209000901098100098109008100098109008200090083000900098209 ! 000901098100098209000982090009820900090109810009820900090109810009610901 ! 0a8209030a810a030003 ! 81010581050181010a810a048204090a810a09340903000e0901005409010481090a810a ! 048204010581050181010a0d0a81030a810a038103093409030081090002000409010001 ! 090100010901000109010081090001000109010004090100810900810009040901008309 ! 000900810009030901008109008100098109008100098109008200090081000981090081 ! 000907090104010904000209810009010981000982090009010981000982090009820900 ! 09040981000982090009820900098209000901098100098209000901098100096109010a ! 8209030a810a030003 ! 81010581050181010a810a048204090a810a097f091e09010481090a810a048204010581 ! 050181010a0d0a81030a810a038103093409010085090009000900810009810900030001 ! 090100010905008109008100090109010001090400810900810009040901000109020001 ! 090400810900810009810900810009810900820009000400080901040109810009050904 ! 000109810009010981000982090009820900090109030001098100098209000982090009 ! 010981000982090009820900096209010a8209030a810a030003 ! 81010581050181010a810a048204090a810a097f091e09010481090a810a048204010581 ! 050181010a0d0a81030a810a038103093409010081090001008109008200090081000981 ! 090081000981090081000981090081000903090100020901008109008100098109008200 ! 090081000904090100010902008109008100098109008200090081000981090081000981 ! 0900820009008100090b0901040109810009050981000904098100090109810009820900 ! 098209000982090009010981000982090009820900098209000901098100090109830009 ! 00096209010a8209030a810a030003 ! 81010581050181010a810a048204090a810a097f091e09010481090a810a048204010581 ! 050181010a0d0a81030a810a038103093409010001098100098109008200090081000981 ! 090081000981090082000900010001090100810900810009010901008109008100098109 ! 008200090081000904090100020901008109008100098109008200090081000981090081 ! 000981090082000900810009810900810009810900810009030901040109810009050981 ! 000901098100098209000901098100098209000982090009820900090109810009820900 ! 0982090009820900090109810009010983000900096209010a8209030a810a030003 ! 81010581050181010a810a048204090a810a097f091e09010481090a810a048204010581 ! 050181010a0d0a81030a810a038103093409010001098100098109008100098109000100 810900810009810900810009810900020001090100020901000109020081090002000509 010002090100010902008109000200010901000109010001090300020901000409010401 098100090609020002098100090109810009820900098209000901090200840900090009 ! 820900090109020004098100096309010a8209030a810a030003 ! 81010581050181010a810a048204090a810a047f04200481090a810a0482040105810501 ! 81010a0d0a81030a810a038103097f091109010433098100096309010a8209030a810a03 ! 0003 ! 81010581050181010a810a048304090a047f04210481090a810a04820401058105018101 ! 0a0d0a81030a810a038103097f091109010432098100096409010a8209030a810a030003 ! ! 81010581050181010a810a048104097f092409010a010481010581050181010a0d0a8103 ! 0a810a038103097f091109010431098100096509010a8209030a810a030003 ! 81010581050181010a810a048104097f092409010a010481010581050181010a0d0a8103 ! 0a810a038103097f09110901047f091909010a8209030a810a030003 ! 81010581050181010a810a048204090a7f0a220a81090a810a048204010581050181010a ! 0d0a81030a810a038103097f09110901047f0a1b0a8209030a810a030003 ! 81010581050181010a810a048204090a7f0a210a8204090a810a04820401058105018101 ! 0a0d0a81030a810a038103097f09110981040a7f0a1b0a8209030a810a030003 ! 81010581050181010a810a048204090a810a097f091e09010481090a810a048204010581 ! 050181010a0d0a81030a810a038103097f097f09300981030a810a030003 ! 81010581050181010a810a048204090a810a097f091e09010481090a810a048204010581 ! 050181010a0d0a81030a810a038103097f097f09300981030a810a030003 ! 81010581050181010a810a048204090a810a097f091e09010481090a810a048204010581 ! 050181010a0d0a81030a810a038103097f0911097f041d048209030a810a030003 ! 81010581050181010a810a048204090a810a097f091e09010481090a810a048204010581 ! 050181010a0d0a81030a810a038103097f0911097f041c04830a09030a810a030003 ! 81010581050181010a810a048204090a810a097f091e09010481090a810a048204010581 ! 050181010a0d0a81030a810a038103097f09110901047f091909010a8209030a810a0300 ! 03 ! 81010581050181010a810a048204090a810a097f091e09010481090a810a048204010581 ! 050181010a0d0a81030a810a038103097f09110901047f091909010a8209030a810a0300 ! 03 ! 81010581050181010a810a048204090a810a09220905000d090100080904002209010032 ! 09010481090a810a048204010581050181010a0d0a81030a810a038103097f0911090104 ! 7f091909010a8209030a810a030003 ! 81010581050181010a810a048204090a810a0922090100020901000c0901000709010002 ! 090100210901003209010481090a810a048204010581050181010a0d0a81030a810a0381 ! 030951090100040901000e09010003090100040901000b0901000a090104020902000309 ! 0200030902000a0902007709010a8209030a810a030003 ! 81010581050181010a810a048204090a810a092209010002090100810900020001090100 810900040005090100070903000209030001098200090001008109000100020903000109 ! 0300810900820009000200020901002409010481090a810a048204010581050181010a0d ! 0a81030a810a0381030951090100040901000d09010003090300030901000c0901000909 ! 010401098100090109810009820900090109810009820900090109810009070981000901 ! 098100097509010a8209030a810a030003 ! 81010581050181010a810a048204090a810a092209010002090300010901008109000300 810900810009050901000609010001090100810900810009810900820009008100098109 008100098109008200090081000981090081000981090081000981090005000209010024 ! 09010481090a810a048204010581050181010a0d0a81030a810a03810309510902000209 ! 020001090300070901000309810009820900090209840009000900010081090001000309 ! 010002090100040901040109810009010981000982090009010981000982090009010981 ! 00090109020006098100097509010a8209030a810a030003 ! 81010581050181010a810a048204090a810a092209050004090100810900010002090100 060901000109030081090081000981090082000900810009810900820009008100098109 008100098109008200090081000981090081000981090081000981090001000209010081 ! 09008100092409010481090a810a048204010581050181010a0d0a81030a810a03810309 ! 510902000209020081090081000981090081000904090100030901000109010001090100 ! 810900810009810900810009810900810009020901000109010004090104020902000209 ! 8100090109810009820900090109810009820900090109810009020901007709010a8209 ! 030a810a030003 ! 81010581050181010a810a048204090a810a092209010005090400810900810009020901 000609010003090100810900040081090081000981090082000900810009810900810009 8109008200090004000109010001090100030901008109008100092409010481090a810a ! 048204010581050181010a0d0a81030a810a038103095109030081090002008109000100 ! 080901000309010001090100010901008109008100098109008100098109008100090209 ! 010008090104010981000901098100098209000901098100098209000901098100098209 ! 0009010981000904098100097509010a8209030a810a030003 ! 81010581050181010a810a048204090a810a092209010004090100010901008109008100 090209010006090100030901008109008100090309010001090100810900810009810900 810009810900820009008100090409010001090100040902002609010481090a810a0482 ! 04010581050181010a0d0a81030a810a0381030951090100850900090009008100090109 ! 020006090100030905000109810009810900810009810900810009810900810009020901 ! 000809010401098100090109810009820900090109810009820900090109810009810900 ! 030005098100097509010a8209030a810a030003 ! 81010581050181010a810a048204090a810a092209010004090100010901008109008100 090209010082090009040901000209010081090081000981090082000900810009810900 820009008100098109008100098109008200090081000981090081000981090082000900 ! 0100040902002609010481090a810a048204010581050181010a0d0a81030a810a038103 ! 095109010081090001008109008100090209020005090100020901000309010082090009 ! 810900810009810900810009810900810009020901000809010401098100090109810009 ! 82090009010981000982090009010981000982090009040981000901098100097509010a ! 8209030a810a030003 ! 81010581050181010a810a048204090a810a092209010005090200810900020004090100 070903008209000981090002000209030001090100010901000109010001090300030901 ! 00810900810009040901002609010481090a810a048204010581050181010a0d0a81030a ! 810a03810309510901000109810009810900820009008100098109008100090409010002 ! 090100030903000109010001090100010901000309010001090100040901040109810009 ! 010981000982090009010981000982090009010981000982090009010981000982090009 ! 01098100097509010a8209030a810a030003 ! 81010581050181010a810a048204090a810a0975098100092609010481090a810a048204 ! 010581050181010a0d0a81030a810a038103095109010001098100098109008100098109 ! 000200060901000209010003090300010901000109010001090100030901000109010004 ! 09010402090200030902000309020003090200030902007709010a8209030a810a030003 ! ! 81010581050181010a810a048204090a810a09740901002709010481090a810a04820401 ! 0581050181010a0d0a81030a810a03810309680901001a090100090901047f091909010a ! 8209030a810a030003 ! 81010581050181010a810a048204090a810a09730901002809010481090a810a04820401 ! 0581050181010a0d0a81030a810a03810309680901001a090100090901047f091909010a ! 8209030a810a030003 ! 81010581050181010a810a048204090a810a097f091e09010481090a810a048204010581 ! 050181010a0d0a81030a810a0381030969090100180901000a0901047f091909010a8209 ! 030a810a030003 ! 81010581050181010a810a048204090a810a097f091e09010481090a810a048204010581 ! 050181010a0d0a81030a810a038103097f09110901047f091909010a8209030a810a0300 ! 03 ! 81010581050181010a810a048204090a810a097f091e09010481090a810a048204010581 ! 050181010a0d0a81030a810a038103097f09110901047f0a1b0a8209030a810a030003 ! 81010581050181010a810a048204090a810a097f091e09010481090a810a048204010581 ! 050181010a0d0a81030a810a038103097f09110981040a7f0a1b0a8209030a810a030003 ! ! 81010581050181010a810a048204090a810a047f04200481090a810a0482040105810501 ! 81010a0d0a81030a810a038103097f097f09300981030a810a030003 ! 81010581050181010a810a048304090a047f04210481090a810a04820401058105018101 ! 0a0d0a81030a810a038103097f097f09300981030a810a030003 ! 81010581050181010a810a048104097f092409010a010481010581050181010a0d0a8103 ! 0a810a038103097f0911097f041d048209030a810a030003 ! 81010581050181010a810a048104097f092409010a010481010581050181010a0d0a8103 ! 0a810a038103097f0911097f041c04830a09030a810a030003 ! 81010581050181010a810a048204090a7f0a220a81090a810a048204010581050181010a ! 0d0a81030a810a038103097f09110901047f091909010a8209030a810a030003 ! 81010581050181010a810a048204090a7f0a210a8204090a810a04820401058105018101 ! 0a0d0a81030a810a038103097f09110901047f091909010a8209030a810a030003 ! 81010581050181010a810a048204090a810a097f091e09010481090a810a048204010581 ! 050181010a0d0a81030a810a038103097f09110901047f091909010a8209030a810a0300 ! 03 ! 81010581050181010a810a048204090a810a097f091e09010481090a810a048204010581 ! 050181010a0d0a81030a810a038103095e0901000909010004090100020901000b090100 ! 0a0901040309810009030902001309810009030902006f09010a8209030a810a030003 ! 81010581050181010a810a048204090a810a097f091e09010481090a810a048204010581 ! 050181010a0d0a81030a810a038103095d0903000709010005090100020901000c090100 ! 0909010401090200030981000901098100090f090200030981000901098100096d09010a ! 8209030a810a030003 ! 81010581050181010a810a048204090a810a097f091e09010481090a810a048204010581 ! 050181010a0d0a81030a810a038103095d09810009820900090609010005090100020984 ! 000900090001008109000100030901000209010004090104030981000906098100090109 ! 02000c0981000906098100096d09010a8209030a810a030003 ! 81010581050181010a810a048204090a810a097f091e09010481090a810a048204010581 ! 050181010a0d0a81030a810a038103095c09010001090100050901000609010001090100 810900810009810900810009810900810009020901000109010004090104030981000904 ! 090100020981000901098100090a0981000905098100096e09010a8209030a810a030003 ! ! 81010581050181010a810a048204090a810a097f091e09010481090a810a048204010581 ! 050181010a0d0a81030a810a038103095c09010001090100050901000609010001090100 810900810009810900810009810900810009020901000809010403098100090609810009 ! 8209000901098100090a0981000904098100096f09010a8209030a810a030003 ! 81010581050181010a810a048204090a810a093009010007090100010901000109010007 ! 09010005090100040901004009010481090a810a048204010581050181010a0d0a81030a ! 810a038103095c0905000509010006090100010981000981090081000981090081000981 ! 090081000902090100080901040309810009060981000981090003000109040004098100 ! 0903098100097009010a8209030a810a030003 ! 81010581050181010a810a048204090a810a09300901000b0901000b0901000509010004 ! 0901004009010481090a810a048204010581050181010a0d0a81030a810a038103095b09 ! 010003090100040901000209010001090100010981000981090081000981090081000981 ! 09008100090209010008090104030981000902098100090109810009820900090e098100 ! 0902098100097109010a8209030a810a030003 ! 81010581050181010a810a048204090a810a093009010081090082000900810009810900 820009000200810900810009810900020001090100050902000209020001090300020901 ! 008109008100093109010481090a810a048204010581050181010a0d0a81030a810a0381 ! 03095b090100030901000409010002090100010901008109008100098109008100098109 ! 008100098109008100090209010001090100040901040309810009020981000901098100 ! 098209000901098100090a0981000902098100097109010a8209030a810a030003 ! 81010581050181010a810a048204090a810a093009010081090001008109008200090081 000981090081000981090082000900810009810900820009008100090409020002090200 ! 810900810009810900820009008200090001003209010481090a810a0482040105810501 ! 81010a0d0a81030a810a038103095b090100030901000409010003090300010901000109 ! 01000109010001090100030901000109010004090104030981000903090200030902000c ! 09810009020904006e09010a8209030a810a030003 ! 81010581050181010a810a048204090a810a093009010081090081000981090082000900 810009810900810009810900810009030901008109008100090409030081090002000409 ! 01008109008100098109008100093109010481090a810a048204010581050181010a0d0a ! 81030a810a038103096909010019090100090901047f091909010a8209030a810a030003 ! ! 81010581050181010a810a048204090a810a093009010081090081000981090082000900 810009810900810009810900810009810900030081090081000904090100850900090009 ! 0081000981090003008109008100098109008100093109010481090a810a048204010581 ! 050181010a0d0a81030a810a038103096909010019090100090901047f091909010a8209 ! 030a810a030003 ! 81010581050181010a810a048204090a810a093009010081090081000981090082000900 810009810900810009810900820009008100098109008200090081000904090100810900 010081090082000900810009810900820009008100098109008100093109010481090a81 ! 0a048204010581050181010a0d0a81030a810a038103096a090100170901000a0901047f ! 091909010a8209030a810a030003 ! 81010581050181010a810a048204090a810a093009010081090081000981090082000900 810009810900820009000100810900810009810900820009008100090409010001098100 0981090082000900810009810900820009008200090001003209010481090a810a048204 ! 010581050181010a0d0a81030a810a038103097f09110901047f091909010a8209030a81 ! 0a030003 ! 81010581050181010a810a048204090a810a093009010081090081000981090082000900 810009010901008109008100098109000100810900020005090100010981000981090081 ! 0009810900010081090082000900820009008100093109010481090a810a048204010581 ! 050181010a0d0a81030a810a038103097f09110901047f0a1b0a8209030a810a030003 ! 81010581050181010a810a048204090a810a09690901003209010481090a810a04820401 ! 0581050181010a0d0a81030a810a038103097f09110981040a7f0a1b0a8209030a810a03 ! 0003 ! 81010581050181010a810a048204090a810a0965090100010901003209010481090a810a ! 048204010581050181010a0d0a81030a810a038103097f097f09300981030a810a030003 ! ! 81010581050181010a810a048204090a810a09660903003309010481090a810a04820401 ! 0581050181010a0d0a81030a810a038103097f097f09300981030a810a030003 ! 81010581050181010a810a048204090a810a097f091e09010481090a810a048204010581 ! 050181010a0d0a81030a810a038103097f0911097f041d048209030a810a030003 ! 81010581050181010a810a048204090a810a097f091e09010481090a810a048204010581 ! 050181010a0d0a81030a810a038103097f0911097f041c04830a09030a810a030003 ! 81010581050181010a810a048204090a810a097f091e09010481090a810a048204010581 ! 050181010a0d0a81030a810a038103097f09110901047f091909010a8209030a810a0300 ! 03 ! 81010581050181010a810a048204090a810a097f091e09010481090a810a048204010581 ! 050181010a0d0a81030a810a038103097f09110901047f091909010a8209030a810a0300 ! 03 ! 81010581050181010a810a048204090a810a047f04200481090a810a0482040105810501 ! 81010a0d0a81030a810a038103097f09110901047f091909010a8209030a810a030003 ! 81010581050181010a810a048304090a047f04210481090a810a04820401058105018101 ! 0a0d0a81030a810a03810309460901000209010002090100090901000409010002090100 ! 0d0981000902090300020901000a0901040209020005090400090902007b09010a820903 ! 0a810a030003 ! 81010581050181010a810a048104097f092409010a010481010581050181010a0d0a8103 ! 0a810a038103094609010001090100010903000809010005090100020901000c09020001 ! 0901000109010002090100090901040109810009010981000903098100090b0981000901 ! 098100097909010a8209030a810a030003 ! 81010581050181010a810a048104097f092409010a010481010581050181010a0d0a8103 ! 0a810a038103094609010081090081000903090100080901000509010002098400090009 ! 000100810900010002090100810900810009030901000209010002090100040901040109 ! 810009010981000903098100090509020006098100097909010a8209030a810a030003 ! 81010581050181010a810a048204090a7f0a220a81090a810a048204010581050181010a ! 0d0a81030a810a0381030946090300050901000709010006090100010901008109008100 ! 098109008100098109008200090081000901090100010902000409010001090100040901 ! 04010981000901098100090309030002098100090109810009020901007b09010a820903 ! 0a810a030003 ! 81010581050181010a810a048204090a7f0a210a8204090a810a04820401058105018101 ! 0a0d0a81030a810a03810309460903000509010007090100060901000109010081090081 ! 00098109008100098109008100090a090100030901000809010401098100090109810009 ! 070981000982090009010981000904098100097909010a8209030a810a030003 ! 81010581050181010a810a048204090a810a097f091e09010481090a810a048204010581 ! 050181010a0d0a81030a810a038103094609010081090081000903090100070901000609 ! 010001098100098109008100098109008100098109008100090a09010003090100080901 ! 04010981000901098100090709810009810900030005098100097909010a8209030a810a ! 030003 ! 81010581050181010a810a048204090a810a097f091e09010481090a810a048204010581 ! 050181010a0d0a81030a810a038103094609010001090100030901000709010002090100 ! 0109010001098100098109008100098109008100098109008100090a0901000309010008 ! 090104010981000901098100090309810009010981000982090009040981000901098100 ! 097909010a8209030a810a030003 ! 81010581050181010a810a048204090a810a097f091e09010481090a810a048204010581 ! 050181010a0d0a81030a810a038103094609010002090100020901000709010002090100 ! 010901008109008100098109008100098109008100098109008100090609010001090100 ! 030901000109010004090104010981000901098100090309810009010981000982090009 ! 01098100098209000901098100097909010a8209030a810a030003 ! 81010581050181010a810a048204090a810a097f091e09010481090a810a048204010581 ! 050181010a0d0a81030a810a038103094609010003090100010901000709010003090300 010901000109010001090100010901000809030004090100010901000409010402090200 ! 02098100090109020003090200030902007b09010a8209030a810a030003 ! 81010581050181010a810a048204090a810a097f091e09010481090a810a048204010581 ! 050181010a0d0a81030a810a038103095b09010027090100090901047f091909010a8209 ! 030a810a030003 ! 81010581050181010a810a048204090a810a097f091e09010481090a810a048204010581 ! 050181010a0d0a81030a810a038103095b09010027090100090901047f091909010a8209 ! 030a810a030003 ! 81010581050181010a810a048204090a810a09090905001a0901001a0901000609050026 ! 0901001e09010481090a810a048204010581050181010a0d0a81030a810a038103095c09 ! 0100250901000a0901047f091909010a8209030a810a030003 ! 81010581050181010a810a048204090a810a09090901003b090100060901000209010025 ! 0901001e09010481090a810a048204010581050181010a0d0a81030a810a038103097f09 ! 110901047f091909010a8209030a810a030003 ! 81010581050181010a810a048204090a810a090909010004090100010901008109008200 090081000901090300010901008109000200830900090001008109000100020903000109 010081090081000981090002000509010002090100810900020001090100810900820009 000200010982000900010081090001000209030001090300010903000109010081090082 ! 00090002000b09010481090a810a048204010581050181010a0d0a81030a810a03810309 ! 7f09110901047f0a1b0a8209030a810a030003 ! 81010581050181010a810a048204090a810a090909010004090100010901008109000100 810900820009008100098109008200090005008109008100098109008100098109008200 090081000981090082000900010081090081000981090081000905090100020903000109 010081090005000109010081090081000981090081000981090082000900810009810900 810009810900810009810900810009810900820009000500010901000a09010481090a81 ! 0a048204010581050181010a0d0a81030a810a038103097f09110981040a7f0a1b0a8209 ! 030a810a030003 ! 81010581050181010a810a048204090a810a090909050001090300010901000109010081 090081000981090082000900010001090100810900810009810900810009810900820009 008100098109008200090081000981090081000981090081000905090500040901008109 000100050901008109008100098109008100098109008200090081000981090081000981 0900810009810900810009810900820009000100010902000d09010481090a810a048204 ! 010581050181010a0d0a81030a810a038103097f097f09300981030a810a030003 ! 81010581050181010a810a048204090a810a090909010006090100020901000109010081 090004008109008100090109010081090081000981090081000981090082000900040081 090081000981090081000981090081000905090100050904008109008100090209040081 090081000981090081000981090082000900040001090100010905008109008100090309 ! 02000b09010481090a810a048204010581050181010a0d0a81030a810a038103097f097f ! 09300981030a810a030003 ! 81010581050181010a810a048204090a810a090909010005090300010901000109010081 090081000903090100020901008109008100098109008100098109008200090081000903 090100010901000109010006090100040901000109010081090081000901090100010901 008109008100098109008100098109008200090081000904090100010901000409010005 ! 0902000a09010481090a810a048204010581050181010a0d0a81030a810a038103097f09 ! 11097f041d048209030a810a030003 ! 81010581050181010a810a048204090a810a090909010004090100010901008109000100 810900820009008100098109008200090081000901090100810900810009810900810009 810900820009008100098109008200090081000981090081000981090083000900090309 010004090100010901008109008100090109010001090100810900810009810900810009 810900820009008100098109008100098109008200090001000109010081090081000901 ! 090100010901000a09010481090a810a048204010581050181010a0d0a81030a810a0381 ! 03097f0911097f041c04830a09030a810a030003 ! 81010581050181010a810a048204090a810a090909050081090081000981090082000900 820009008100090109030001090100020901008109008100098109008100098109008100 098109000200010901000109010002090100050901000509020081090002000309020081 09000200010901000109010001090300030901000109030001090100030903000b090104 ! 81090a810a048204010581050181010a0d0a81030a810a038103097f09110901047f0919 ! 09010a8209030a810a030003 ! 81010581050181010a810a048204090a810a09170901007f090409010481090a810a0482 ! 04010581050181010a0d0a81030a810a038103097f09110901047f091909010a8209030a ! 810a030003 ! 81010581050181010a810a048204090a810a09170901007f090409010481090a810a0482 ! 04010581050181010a0d0a81030a810a038103097f09110901047f091909010a8209030a ! 810a030003 ! 81010581050181010a810a048204090a810a09170901007f090409010481090a810a0482 ! 04010581050181010a0d0a81030a810a0381030949090400220903001009020007090104 ! 02090200050904007f090809010a8209030a810a030003 ! 81010581050181010a810a048204090a810a097f091e09010481090a810a048204010581 ! 050181010a0d0a81030a810a03810309490901000109010020090100010901000e090100 ! 090901040109810009010981000903098100097f090b09010a8209030a810a030003 ! 81010581050181010a810a048204090a810a097f091e09010481090a810a048204010581 ! 050181010a0d0a81030a810a038103094909010002090100010903000109820009000100 ! 810900010001090100810900810009050901000509030002090300010903000109010004 ! 0901040109810009010981000903098100097f090b09010a8209030a810a030003 ! 81010581050181010a810a048204090a810a097f091e09010481090a810a048204010581 ! 050181010a0d0a81030a810a038103094909010002090100810900810009810900820009 ! 008100098109008100098109008200090001008109008100090409010004090100010901 ! 008109008100098109008100098109008100090109010004090104010981000901098100 ! 09030903007f090909010a8209030a810a030003 ! 81010581050181010a810a048204090a810a097f091e09010481090a810a048204010581 ! 050181010a0d0a81030a810a038103094909010002090100040901008109008100098109 008100098109008200090081000981090081000904090100040901000109010081090081 ! 0009810900810009810900810009080901040109810009010981000907098100097f0907 ! 09010a8209030a810a030003 ! 81010581050181010a810a048204090a810a047f04200481090a810a0482040105810501 ! 81010a0d0a81030a810a0381030949090100020901000109040081090081000981090081 ! 000981090082000900810009810900810009040901000409010001090100810900040001 ! 090100090901040109810009010981000907098100097f090709010a8209030a810a0300 ! 03 ! 81010581050181010a810a048304090a047f04210481090a810a04820401058105018101 ! 0a0d0a81030a810a03810309490901000209010081090081000981090082000900810009 ! 810900810009810900820009008100098109008100090409010004090100010901008109 ! 00810009040901000909010401098100090109810009030981000901098100097f090709 ! 010a8209030a810a030003 ! 81010581050181010a810a048104097f092409010a010481010581050181010a0d0a8103 ! 0a810a038103094909010001090100010901000109010081090081000981090081000981 ! 090082000900010081090081000905090100010903000109010081090081000981090081 ! 000981090081000901090100040901040109810009010981000903098100090109810009 ! 7f090709010a8209030a810a030003 ! 81010581050181010a810a048104097f092409010a010481010581050181010a0d0a8103 ! 0a810a038103094909040003090200810900020001090100010901008109008200090081 ! 000907090300010903000209030002090100020901000409010402090200020981000901 ! 0902007f090909010a8209030a810a030003 ! 81010581050181010a810a048204090a7f0a220a81090a810a048204010581050181010a ! 0d0a81030a810a03810309630901002b0901047f091909010a8209030a810a030003 ! 81010581050181010a810a048204090a7f0a210a8204090a810a04820401058105018101 ! 0a0d0a81030a810a03810309630901002b0901047f091909010a8209030a810a030003 ! 81010581050181010a810a048204090a810a097f091e09010481090a810a048204010581 ! 050181010a0d0a81030a810a03810309630901002b0901047f091909010a8209030a810a ! 030003 ! 81010581050181010a810a048204090a810a097f091e09010481090a810a048204010581 ! 050181010a0d0a81030a810a038103097f09110901047f091909010a8209030a810a0300 ! 03 ! 81010581050181010a810a048204090a810a097f091e09010481090a810a048204010581 ! 050181010a0d0a81030a810a038103097f09110901047f0a1b0a8209030a810a030003 ! 81010581050181010a810a048204090a810a097f091e09010481090a810a048204010581 ! 050181010a0d0a81030a810a038103097f09110981040a7f0a1b0a8209030a810a030003 ! ! 81010581050181010a810a048204090a810a097f091e09010481090a810a048204010581 ! 050181010a0d0a81030a810a038103097f097f09300981030a810a030003 ! 81010581050181010a810a048204090a810a097f091e09010481090a810a048204010581 ! 050181010a0d0a81030a810a038103097f097f09300981030a810a030003 ! 81010581050181010a810a048204090a810a09100903000a090100100901000709040016 ! 090100020904000f090100010901002509010481090a810a048204010581050181010a0d ! 0a81030a810a038103097f097f09300981030a810a030003 ! 81010581050181010a810a048204090a810a090f09010001090100090901001009010006 ! 0901000209010019090100130901002909010481090a810a048204010581050181010a0d ! 0a81030a810a038103097f097f09300981030a810a030003 ! 81010581050181010a810a048204090a810a090e09010003090100810900810009810900 820009000200810900820009008100098109008100098109008200090002000509010002 090100810900820009008100090109030002090300010901008109000200810900810009 810900020002090300010903008109008100098109000200010901008109008100090109 ! 03001109010481090a810a048204010581050181010a0d0a81030a810a038103097f097f ! 09300981030a810a030003 ! 81010581050181010a810a048204090a810a090e09010003090100810900810009810900 810009810900810009810900010081090082000900810009810900810009810900810009 060902000309020081090082000900810009810900820009008100098109008200090081 000981090081000981090082000900810009810900820009008100098109008100098109 008100098109008200090081000981090082000900010081090082000900810009810900 ! 8100090f09010481090a810a048204010581050181010a0d0a81030a810a038103097f09 ! 7f09300981030a810a030003 ! 81010581050181010a810a048204090a810a090e09010003090100810900810009810900 810009810900810009810900810009810900820009008100098109008100098109008100 090809020001090100010901008109008100098109008200090081000903090100010901 000109010081090081000907090100010901000109010081090081000981090082000900 ! 8100098109008200090001001309010481090a810a048204010581050181010a0d0a8103 ! 0a810a03810309700901044809010a720981030a810a030003 ! 81010581050181010a810a048204090a810a090e09010003090100810900810009810900 810009810900810009810900810009810900820009008100098109008100098109008100 090909020081090081000981090082000900040081090081000903090100010901000109 010081090081000904090400010901000109010081090081000981090082000900810009 ! 810900810009010902001109010481090a810a048204010581050181010a0d0a81030a81 ! 0a038103090f0901000f09010021090100270903040c09010002090100070901000e0901 ! 00070901000d09030a0e09030007090100040901004d0981030a810a030003 ! 81010581050181010a810a048204090a810a090e09010003090100810900810009810900 810009810900810009810900810009810900820009008100098109008100098109008100 090509010002090100810900810009810900820009008100090309010004090100010901 000109010081090081000903090100010901000109010001090100810900810009810900 ! 82000900810009810900810009020902001009010481090a810a04820401058105018101 ! 0a0d0a81030a810a038103092109010021090100260905040b0901000209010022090100 ! 0c09050a0c0901000109010006090100540981030a810a030003 ! 81010581050181010a810a048204090a810a090f09010001090100010901008109000100 010901008109000200810900820009008200090001000109010082090009030901000209 010081090001008109008200090081000981090082000900810009810900820009008100 098109008100098109008200090081000981090082000900810009810900810009810900 820009000100810900810009810900820009008100098109008200090081000981090081 ! 00090f09010481090a810a048204010581050181010a0d0a81030a810a03810309020903 ! 000109010081090081000981090081000981090002000209030001090300810900820009 ! 008200090002000109010081090081000981090081000901090100040903008109008100 ! 09010901008109008200090081000901090300020901000a090204010702040a09010002 ! 090100810900820009008100098109008100098109000200010901000109010081090081 ! 00098109000200010901000b09020a0109020a0a09010004090100010901008109008200 ! 09008100098109008100098109000200470981030a810a030003 ! 81010581050181010a810a048204090a810a091009030003090100810900810009010901 008109008200090081000901090100810900810009010901000609040001090100810900 810009010903000209030001090100010901000109010001090300020902008109008100 098109008200090081000981090002000109010001090100010903001109010481090a81 ! 0a048204010581050181010a0d0a81030a810a0381030901090100010901008109000100 ! 810900820009008200090081000981090082000900810009810900810009810900810009 ! 810900050001090100810900010081090082000900810009010901000509010001090100 ! 020901008109000100810900820009008100098109008100098109008100090809020403 ! 070204090901000209010081090001008109008200090082000900810009810900820009 ! 008100098109008200090082000900810009810900820009008100090909020a0309020a ! 090901000409010001090100810900010081090082000900820009008100098109008100 ! 09450981030a810a030003 ! 81010581050181010a810a048204090a810a09230901001d0901005809010481090a810a ! 048204010581050181010a0d0a81030a810a038103090509010081090081000981090082 ! 000900820009000100030901000109010001090100010902000109010001090100810900 ! 810009810900810009810900820009008100090509010002090100810900810009810900 ! 810009810900820009008100098109008100090b09020405070204080901000209010081 ! 090081000981090082000900810009030901000109030001090100040901008109008100 ! 090809020a0509020a080901000409010001090100810900810009810900820009008200 ! 0900810009490981030a810a030003 ! 81010581050181010a810a048204090a810a09230901001d0901005809010481090a810a ! 048204010581050181010a0d0a81030a810a038103090209040081090081000981090082 ! 000900810009010902000109010001090100010901000109010002090100010901008109 ! 008100098109008100098109008200090081000905090100020901008109008100098109 ! 008100098109008200090004000b09020a0707020a070901000209010081090081000981 ! 090082000900810009810900030002090100020901000109040081090081000907090204 ! 070902040709010004090100010901008109008100098109008200090082000900810009 ! 490981030a810a030003 ! 81010581050181010a810a048204090a810a09230901001d0901005809010481090a810a ! 048204010581050181010a0d0a81030a810a038103090109010001090100810900810009 ! 810900820009008100090209020081090081000981090081000981090081000981090081 ! 000901090100010901008109008100098109008100090109020007090100030902000209 ! 0100010901008109008100090f09020a0507020a08090100020901008109008100098109 ! 008200090082000900810009810900810009810900020001090100810900810009810900 ! 820009008100090809020405090204080901000409010001090100810900810009810900 ! 8200090082000900810009490981030a810a030003 ! 81010581050181010a810a048204090a810a097f091e09010481090a810a048204010581 ! 050181010a0d0a81030a810a038103090109010001090100810900810009810900820009 ! 008200090081000981090082000900810009810900810009810900820009000100020901 ! 000109010081090001008109008100090109020007090100820900098109000100020902 ! 00810900820009008100098109008100098109008100090809020a0307020a0a09010081 ! 090081000981090081000981090082000900820009008100098109008200090081000981 ! 090082000900820009008100098109008200090081000909090204030902040a09010001 ! 090300810900010081090001008109008200090082000900810009810900810009450981 ! 030a810a030003 ! 81010581050181010a810a048204090a810a097f091e09010481090a810a048204010581 ! 050181010a0d0a81030a810a038103090209020081090002000109010081090081000981 ! 090002000209030003090100810900810009020903000109010081090081000903090100 ! 08090100030901000209010081090081000901090300020901000a09020a0107020a0b09 ! 040001090100010901008109008100098109000100810900020001090100810900810009 ! 810900010081090002000b090204010902040c0903000109010081090082000900820009 ! 008100098109008100098109000200470981030a810a030003 ! 81010581050181010a810a048204090a810a097f091e09010481090a810a048204010581 ! 050181010a0d0a81030a810a038103093109010007098100090e09810009020901001a09 ! 050a44090504700981030a810a030003 ! 81010581050181010a810a048204090a810a097f091e09010481090a810a048204010581 ! 050181010a0d0a81030a810a0381030931090100060901000e090100030901001b09030a ! 46090304710981030a810a030003 ! 81010581050181010a810a048204090a810a047f04200481090a810a0482040105810501 ! 81010a0d0a81030a810a0381030931090100050901000e090100040901001c09010a4809 ! 0104720981030a810a030003 ! 81010581050181010a810a048304090a047f04210481090a810a04820401058105018101 ! 0a0d0a81030a810a038103097f097f09300981030a810a030003 ! 81010581050181010a810a048104097f092409010a010481010581050181010a0d0a8103 ! 0a810a038103097f097f09300981030a810a030003 ! 81010581050181010a810a048104097f092409010a010481010581050181010a0d0a8103 ! 0a810a038103097f097f09300981030a810a030003 ! 81010581050181010a810a048204090a7f0a220a81090a810a048204010581050181010a ! 0d0a81030a810a038103097f097f09300981030a810a030003 ! 81010581050181010a810a048204090a7f0a210a8204090a810a04820401058105018101 ! 0a0d0a81030a810a038103097f097f09300981030a810a030003 ! 81010581050181010a810a048204090a810a097f091e09010481090a810a048204010581 ! 050181010a0d0a81030a810a0381030913094f0415094f0415094f048209030a810a0300 ! 03 ! 81010581050181010a810a048204090a810a097f091e09010481090a810a048204010581 ! 050181010a0d0a81030a810a0381030913094e04810a0914094e04810a0914094e04830a ! 09030a810a030003 ! 81010581050181010a810a048204090a810a097f091e09010481090a810a048204010581 ! 050181010a0d0a81030a810a03810309130901044b09010a150901044b09010a15090104 ! 4b09010a8209030a810a030003 ! 81010581050181010a810a048204090a810a097f091e09010481090a810a048204010581 ! 050181010a0d0a81030a810a03810309130901044b09010a150901044b09010a15090104 ! 4b09010a8209030a810a030003 ! 81010581050181010a810a048204090a810a097f091e09010481090a810a048204010581 ! 050181010a0d0a81030a810a03810309130901044b09010a150901044b09010a15090104 ! 4b09010a8209030a810a030003 ! 81010581050181010a810a048204090a810a097f091e09010481090a810a048204010581 ! 050181010a0d0a81030a810a0381030913090104020902004509010a1509010403098100 ! 094509010a15090104020902004509010a8209030a810a030003 ! 81010581050181010a810a048204090a810a092509010004090100810900810009140901 ! 008109008100095009010481090a810a048204010581050181010a0d0a81030a810a0381 ! 030913090104010981000901098100094309010a15090104010902004609010a15090104 ! 010981000901098100094309010a8209030a810a030003 ! 81010581050181010a810a048204090a810a092509010004090100180901008109008100 ! 095009010481090a810a048204010581050181010a0d0a81030a810a0381030904090100 ! 010901000109010004090104010981000901098100094309010a05090100020901000109 ! 01000409010403098100094509010a070904000109010004090104010981000901098100 ! 094309010a8209030a810a030003 ! 81010581050181010a810a048204090a810a092509020002090200810900810009810900 020002090300020903000109010081090081000981090002000109010081090081000901 ! 090300020903000109010001090100010903002809010481090a810a0482040105810501 ! 81010a0d0a81030a810a0381030904090100010901000109010004090104010981000901 ! 098100094309010a0509010002090100010901000409010403098100094509010a0a0901 ! 000109010004090104010981000901098100094309010a8209030a810a030003 ! 820105010101010a010481090a810a092509020002090200810900820009008100098109 008200090081000981090082000900810009810900820009008200090082000900810009 810900820009000100810900820009008100098109008200090081000981090082000900 ! 810009810900820009008100098109008100092609010481090a810a0483040105010101 ! 0e0a81030a810a038103090509030009090104010981000901098100094309010a060901 ! 008109008100090809010403098100094509010a09090100090901040109810009010981 ! 00094309010a8209030a810a030003 ! 0401010a010481090a810a09250903008109000200810900820009000100030901000409 010001090100810900820009008100090309010081090081000981090082000900810009 81090082000900810009810900820009008100098109008200090001002a09010481090a ! 810a0481040103010e0a81030a810a03810309060901000a090104010981000901098100 ! 094309010a060901008109008100090809010403098100094509010a0909810009090901 ! 04010981000901098100094309010a8209030a810a030003 ! 810105010581010a810a048204090a810a09250901008509000900090082000900810009 010902000109010004090500810900820009008100098109000300810900810009810900 820009000400810900810009810900820009008100098109008100090109020028090104 ! 81090a810a0482040105010581010a0d0a81030a810a0381030905090300090901040109 ! 81000901098100094309010a070902000a09010403098100094509010a080901000a0901 ! 04010981000901098100094309010a8209030a810a030003 ! 81010581050181010a810a048204090a810a092509010081090001008109008200090081 000902090200810900810009030901000409010081090082000900810009810900820009 008100098109008200090081000903090100010901008109008100098109008100090209 ! 02002709010481090a810a048204010581050181010a0d0a81030a810a03810309040901 ! 00010901000109010004090104010981000901098100094309010a070902000309010004 ! 09010403098100094509010a070901000409010004090104010981000901098100094309 ! 010a8209030a810a030003 ! 81010581050181010a810a048204090a810a092509010001098100098109008200090082 000900810009810900820009008100098109008200090081000981090082000900820009 008200090081000981090082000900810009810900820009008100098109008200090081 0009810900820009008200090001008109008100098109008100092609010481090a810a ! 048204010581050181010a0d0a81030a810a038103090409010001090100010901000409 ! 0104020902004509010a08090100030901000409010403098100094509010a0709040001 ! 09010004090104020902004509010a8209030a810a030003 ! 81010581050181010a810a048204090a810a092509010001098100098109008200090081 000981090002000209030002090300010901008109008100098109000100810900020001 09010001090300020903000209010081090081000981090002002809010481090a810a04 ! 8204010581050181010a0d0a81030a810a03810309130901044b09010a08098100090a09 ! 01044b09010a150901044b09010a8209030a810a030003 ! 81010581050181010a810a048204090a810a097f091e09010481090a810a048204010581 ! 050181010a0d0a81030a810a03810309130901044b09010a070901000b0901044b09010a ! 150901044b09010a8209030a810a030003 ! 81010581050181010a810a048204090a810a097f091e09010481090a810a048204010581 ! 050181010a0d0a81030a810a03810309130901044b09010a060901000c0901044b09010a ! 150901044b09010a8209030a810a030003 ! 81010581050181010a810a048204090a810a097f091e09010481090a810a048204010581 ! 050181010a0d0a81030a810a03810309130901044b09010a150901044b09010a15090104 ! 4b09010a8209030a810a030003 ! 81010581050181010a810a048204090a810a097f091e09010481090a810a048204010581 ! 050181010a0d0a81030a810a03810309130901044d0a150901044d0a150901044d0a8209 ! 030a810a030003 ! 81010581050181010a810a048204090a810a097f091e09010481090a810a048204010581 ! 050181010a0d0a81030a810a03810309130981040a4d0a150981040a4d0a150981040a4d ! 0a8209030a810a030003 ! 81010581050181010a810a048204090a810a097f091e09010481090a810a048204010581 ! 050181010a0d0a81030a810a038103097f097f09300981030a810a030003 ! 81010581050181010a810a048204090a810a097f091e09010481090a810a048204010581 ! 050181010a0d0a81030a810a038103097f097f09300981030a810a030003 ! 81010581050181010a810a048204090a810a047f04200481090a810a0482040105810501 ! 81010a0d0a81030a810a0381030913094f0415094f0415094f048209030a810a030003 ! 81010581050181010a810a048304090a047f04210481090a810a04820401058105018101 ! 0a0d0a81030a810a0381030913094e04810a0914094e04810a0914094e04830a09030a81 ! 0a030003 ! 81010581050181010a810a048104097f092409010a010481010581050181010a0d0a8103 ! 0a810a03810309130901044b09010a150901044b09010a150901044b09010a8209030a81 ! 0a030003 ! 81010581050181010a810a0481040a7f0a260a010481010581050181010a0d0a81030a81 ! 0a03810309130901044b09010a150901044b09010a150901044b09010a8209030a810a03 ! 0003 ! 81010581050181010a820a040a7f0a270a010481010581050181010a0d0a81030a810a03 ! 810309130901044b09010a150901044b09010a150901044b09010a8209030a810a030003 ! ! 81010581050181010a810a047f042a0481010581050181010a0d0a81030a810a03810309 ! 130901044b09010a150901044b09010a150901044b09010a8209030a810a030003 ! 81010581050182010a047f042b0481010581050181010a0d0a81030a810a038103091309 ! 01044b09010a150901044b09010a150901044b09010a8209030a810a030003 ! 8101058105017f012f01010501010e0a81030a810a038103090409010001090100010901 ! 00040901044b09010a050901000209010001090100040901044b09010a07090400010901 ! 00040901044b09010a8209030a810a030003 ! 8101058205010510058101057f050805810105120501010e0a81030a810a038103090409 ! 01000109010001090100040901044b09010a050901000209010001090100040901044b09 ! 010a0a09010001090100040901044b09010a8209030a810a030003 ! 810105120501017f0508050101130501010e0a81030a810a038103090509030009090104 ! 4b09010a06090100810900810009080901044b09010a09090100090901044b09010a8209 ! 030a810a030003 ! 8201050113018105017f01080181050113010e0a81030a810a03810309060901000a0901 ! 044b09010a06090100810900810009080901044b09010a0909810009090901044b09010a ! 8209030a810a030003 ! 7f0137010e0a81030a810a0381030905090300090901044b09010a070902000a0901044b ! 09010a080901000a0901044b09010a8209030a810a030003 ! 7f0a460a81030a810a03810309040901000109010001090100040901044b09010a070902 ! 0003090100040901044b09010a0709010004090100040901044b09010a8209030a810a03 ! 0003 ! 7f0a460a81030a810a03810309040901000109010001090100040901044b09010a080901 ! 0003090100040901044b09010a0709040001090100040901044b09010a8209030a810a03 ! 0003 ! 7f0a460a81030a810a03810309130901044b09010a08098100090a0901044b09010a1509 ! 01044b09010a8209030a810a030003 ! 7f0a460a81030a810a03810309130901044b09010a070901000b0901044b09010a150901 ! 044b09010a8209030a810a030003 ! 7f0a460a81030a810a03810309130901044b09010a060901000c0901044b09010a150901 ! 044b09010a8209030a810a030003 ! 7f0a460a81030a810a03810309130901044b09010a150901044b09010a150901044b0901 ! 0a8209030a810a030003 ! 7f0a460a81030a810a03810309130901044d0a150901044d0a150901044d0a8209030a81 ! 0a030003 ! 7f0a460a81030a810a03810309130981040a4d0a150981040a4d0a150981040a4d0a8209 ! 030a810a030003 ! 7f0a460a81030a810a038103097f097f09300981030a810a030003 ! 7f0a460a81030a810a038103097f097f09300981030a810a030003 ! 7f0a460a81030a810a038103090709280a11093e0a1109330a12094b0a090981030a810a ! 030003 ! 7f0a460a81030a810a038103090709270a81040910093d0a8104091009320a8104091109 ! 4a0a810409080981030a810a030003 ! 7f0a460a81030a810a038103090709010a240901041109010a3a0901041109010a2f0901 ! 041209010a47090104090981030a810a030003 ! 7f0a460a81030a810a038103090709010a240901041109010a3a0901041109010a2f0901 ! 041209010a47090104090981030a810a030003 ! 7f0a460a81030a810a038103090709010a240901041109010a3a0901041109010a2f0901 ! 041209010a47090104090981030a810a030003 ! 7f0a460a81030a810a038103090709010a240901041109010a3a0901041109010a2f0901 ! 041209010a47090104090981030a810a030003 ! 7f0a460a81030a810a038103090709010a240901041109010a3a0901041109010a2f0901 ! 041209010a47090104090981030a810a030003 ! 7f0a460a82030a0301030809010a240901041109010a3a0901041109010a2f0901041209 ! 010a47090104090982030a030103 ! 7f0a460a04030809010a0c090300020901000e0901041109010a0c0903001c0901000a09 ! 01041109010a0a090100020901000f0901000b0901041209010a0a090506140901061f09 ! 010409090403 ! 7f0a460a81030a010a8103090709010a0b09010001090100010901000e0901041109010a ! 0b090100010901001b0901000a0901041109010a0a090200010901000f0901000b090104 ! 1209010a0a0901060209010635090104090981030a010a0003 ! 7f0a460a81030a810a038103090709010a0a090100030901008109008100098109008100 ! 09090901041109010a0a0901000509030001090100810900810009010903000209030001 ! 0901000a0901041109010a0a090200010901000109030001090100010901008109000200 ! 0a0901041209010a0a090106020903068109068206090602060109010602090106810906 ! 81060981090602060109010601090106010903060b090104090981030a810a030003 ! 7f0a460a81030a810a038103090709010a0a09010003090100810900820009008100090a ! 0901041109010a0a09010004090100010901008109000100810900820009008100098109 ! 008200090081000981090082000900810009090901041109010a0a090100830900090082 ! 000900810009810900820009008100098109008100098109008100090a0901041209010a 0a0901060209080601090106810906810609010901068109068206090681060981090682 ! 0609068106098109068206090681060981090681060909090104090981030a810a030003 ! 7f0a460a81030a810a038103090709010a0a0901000309010081090002000c0901041109 010a0a090100080901008109008100098109008200090081000903090100010901008109 ! 00810009090901041109010a0a0901008309000900820009008100098109008100098109 ! 000200020901000b0901041209010a0a0905068109060106010901060109010601090106 81090681060981090682060906810609810906820609068106098109068206090601060d ! 090104090981030a810a030003 ! 7f0a460a81030a810a038103090709010a0a0901000309010081090002000c0901041109 010a0a090100050904008109008100098109008200090081000903090500810900810009 ! 090901041109010a0a09010001090200810900040002090100030901000b090104120901 0a0a09010604090106020905060109010681090681060981090682060906810609810906 ! 82060906810609810906810609010902060b090104090981030a810a030003 ! 7f0a460a81030a810a038103090709010a0a09010003090100810900820009008100090a ! 0901041109010a0a09010004090100010901008109008100098109008200090081000903 ! 090100040901000a0901041109010a0a0901000109020081090081000904090300020901 ! 000b0901041209010a0a0901060409010602090106060902060209010681090681060981 ! 090682060906810609810906810609020902060a090104090981030a810a030003 ! 7f0a460a81030a810a038103090709010a0b0901000109010001090100010901000a0901 ! 041109010a0b090100010903000109010081090081000981090082000900810009810900 ! 8200090081000981090082000900810009090901041109010a0a09010002090100810900 ! 810009810900820009008100098109008100098109008300090009080901041209010a0a 090106040901060209010601090106020902060209010681090681060981090682060906 ! 82060906010681090681060981090681060909090104090981030a810a030003 ! 7f0a460a81030a810a038103090709010a0c090300020901000209010009090104110901 ! 0a0c090300010902008109000200010901000109030002090300010901000a0901041109 ! 010a0a09010002090100010903000109010001090100020901000a0901041209010a0a09 010604090106030903060409810609020901060109030602090106810906810609810906 ! 02060b090104090981030a810a030003 ! 7f0a460a81030a810a038103090709010a240901041109010a3a0901041109010a2f0901 ! 041209010a47090104090981030a810a030003 ! 7f0a460a81030a810a038103090709010a240901041109010a3a0901041109010a2f0901 ! 041209010a47090104090981030a810a030003 ! 7f0a460a81030a810a038103090709010a240901041109010a3a0901041109010a2f0901 ! 041209010a47090104090981030a810a030003 ! 7f0a460a81030a810a038103090709010a240901041109010a3a0901041109010a2f0901 ! 041209010a47090104090981030a810a030003 ! 7f0a460a81030a810a038103090709010a240901041109010a3a0901041109010a2f0901 ! 041209010a47090104090981030a810a030003 ! 7f0a460a81030a810a038103090709010a240901041109010a3a0901041109010a2f0901 ! 041209010a47090104090981030a810a030003 ! 7f0a460a81030a810a038103090709010a240901041109010a3a0901041109010a2f0901 ! 041209010a47090104090981030a810a030003 ! 7f0a460a81030a810a038103090709010a26041109010a3c041109010a31041209010a49 ! 04090981030a810a030003 ! 7f0a460a81030a810a038103090709810a0426041109810a043c041109810a0431041209 ! 810a044904090981030a810a030003 ! 7f0a460a81030a810a038103097f097f09300981030a810a030003 ! 7f0a460a81030a810a037f037f033303010a0103 ! 7f0a460a81030a820a030a100a81030a7f0a7f0a0c0a81030a120a0103 ! 7f0a460a81030a120a01037f0a7f0a0c0a0103130a0103 ! 7f0a460a82030a031303810a037f037f030c03810a031303 ! 7f0a460a7f037f033b03 % ! % Compression made this file 7.78% of the uncompressed size. % --- 130,1409 ---- } bind def ! 572 326 8 % dimensions of data ! [572 0 0 -326 0 326] % mapping matrix rlecmapimage ! 7f0337037f0a7f0a7f0a030a ! 81030a130a81030a7f0a080a81030a130a81030a7f0a7f0a7f0a020a ! 81030a120a01037f0a080a0103130a01037f0a7f0a7f0a030a ! 81030a810a031203810a037f030803810a031003810a0381030a7f0a7f0a7f0a020a ! 81030a810a037f032f03010a01037f0a7f0a7f0a030a ! 81030a810a0381030a0f0a81030a760a81030a0f0a81030a0f0a81030a810a0381030a7f ! 0a7f0a7f0a020a ! 81030a810a0381030a0e0a0103760a01030f0a01030f0a0103010a01037f0a7f0a7f0a03 0a ! 81030a810a0381030a810a080c080103010a74080103010a0d080103010a0d080103010a ! 01037f0a7f0a7f0a030a ! 81030a810a0381030a810a080c080103010a070803000208030002080300050801002208 ! 05000c0801000508050004080100060881000381030a810a080c080103010a0d08010301 ! 0a01037f0a7f0a7f0a030a ! 81030a810a0381030a810a080c080103010a060801000108010081080081000881080082 ! 0008008100088108008100080208020022080100020801000b0801000508010008080100 ! 040802000103010a0108080a81030881080381030a810a080c080103010a01037f0a7f0a ! 7f0a030a ! 81030a810a0381030a810a080c080103010a060801000408010001080100810800810008 ! 8108008100080108820008008100080a0882000800010081080001000108820008000100 ! 810800010002080100020803008108008200080002000108010081080081000801080100 ! 05080100810800810008050881000381030a810a0882080a08060881030881080381030a ! 810a080c080103010a01037f0a7f0a7f0a030a ! 81030a810a0381030a810a080c080103010a030801008108008100080308010001080100 ! 810800810008810800810008010882000800810008810800810008060801000108010001 ! 080100810800810008810800810008810800810008810800810008010808000108010081 ! 08000100810800810008810800810008030801008108000100060881000381030a810a08 ! 82080a08060881030881080381030a810a080c080103010a01037f0a7f0a7f0a030a ! 81030a810a0381030a810a0881080a070a81030881080381030a810a0881080001000108 ! 040002080400010804000108810008810800810008010802000508010001080100010801 ! 008108008100088108008100088108008100088108000400810800010001080100010801 ! 008108008100088108008100088108000400810800810008810800810008050881000381 ! 030a810a0882080a08060881030881080381030a810a080308020a81030803080103010a ! 01037f0a7f0a7f0a030a ! 81030a810a0381030a810a0882080a08060881030881080381030a820a08008100080208 ! 010001080100040801000408010082080008010801000408010004080100010801000108 010081080081000881080081000881080081000881080081000803080100020801000108 ! 01008108008100088108008100088108008100080308010001080100060881000381030a ! 810a0882080a08060881030881080381030a810a080308810a088208030803080103010a ! 01037f0a7f0a7f0a030a ! 81030a810a0381030a810a0882080a08060881030881080381030a810a08810800010001 ! 080100010801000408010004080100810800050001080200050801000108010001080100 ! 810800810008810800810008810800810008810800810008030801000208010001080100 ! 8108008100088108008100088108008100080308010001080100060881000381030a810a ! 0882080a08060881030881080381030a810a080308810a088208030803080103010a0103 ! 7f0a7f0a7f0a030a ! 81030a810a0381030a810a08810803080301080103010a03080100810800810008810800 ! 820008008100088108008200080081000881080081000803080100010801000708010001 ! 080100010801008108008100088108008100088108008100088108008100080308010002 ! 080100010801008108000100810800810008810800810008030801008108000100060881 ! 000381030a810a0882080a08060881030881080381030a810a080308030304080103010a ! 01037f0a7f0a7f0a030a ! 81030a810a0381030a810a080c080103010a070803000208030002080300050801000b08 ! 010001080100010801008108008100088108008100088108008100088108008100080308 ! 010003080300010801008108008100080108050001080100810800810008050881000381 ! 030a810a0882080a08060881030881080381030a810a080c080103010a01037f0a7f0a7f ! 0a030a ! 81030a810a0381030a810a080c080103010a74080103010a0108810a0806088103088108 ! 0381030a810a080c080103010a01037f0a7f0a7f0a030a ! 81030a810a0381030a810a080c080103010a74080103010a0108090301080103010a0d08 ! 0103010a01037f0a7f0a7f0a030a ! 81030a810a0381030a810a080c080103010a74080103010a0d080103010a0d080103010a ! 01037f0a7f0a7f0a030a ! 81030a810a0381030a810a080c080103010a74080103010a0d080103010a0d080103010a ! 01037f0a7f0a7f0a030a ! 82030a030103810a030f03810a037603810a030f03810a030f03810a0301037f0a7f0a7f ! 0a030a ! 7f0337037f0a7f0a7f0a030a ! 81030a010a81030a7f0a2c0a81030a010a81030a7f0a7f0a7f0a020a ! 81030a810a0381030a7f0a2b0a8204030a810a0381030a7f0a7f0a7f0a020a ! 81030a810a0381030a810a097f092809010481030a810a0381030a7f0a7f0a7f0a020a ! 81030a810a0381030a810a097f092809010481030a810a0381030a7f0a7f0a7f0a020a ! 81030a810a0381030a810a097f092809010481030a810a0381030a7f0a7f0a7f0a020a ! 81030a810a0381030a810a097f092809010481030a810a0381030a070a7f017f017a01 ! 81030a810a0381030a810a097f092809010481030a810a0381030a070a81010513058101 ! 057f057f054b0581010513050001 ! 81030a810a0381030a810a097f092809010481030a810a0381030a070a81010512050101 ! 7f057f054b05010113050101 ! 81030a810a0381030a810a097f092809010481030a810a0381030a070a81010581050112 ! 018105017f017f014b0181050110018105010001 ! 81030a810a0381030a810a097f092809010481030a810a0381030a070a8101058105017f ! 017f01720101050101 ! 81030a810a0381030a810a097f092809010481030a810a0381030a070a81010581050181 ! 01050f058101057f057f0539058101050f058101050f058101058105010001 ! 81030a810a0381030a810a09080907008109008100097309010002090100070901000e09 ! 010481030a810a0381030a070a8101058105018101050e0501017f057f05390501010f05 ! 01010f05010101050101 ! 81030a810a0381030a810a0908090100060901007409010002090100070901000e090104 ! 81030a810a0381030a070a8101058105018101058105020c02010101057f027f02370201 ! 0101050d02010101050d02010101050101 ! 81030a810a0381030a810a09080901000309010081090081000981090002006e09010002 ! 0901000109030001090100810900820009008100090709010481030a810a0381030a070a ! 8101058105018101058105020c0201010105360203000202030002020300050201002202 ! 05000c0201000502050004020100060201000802010008020100070203001c0201005102 ! 010101050d02010101050d02010101050101 ! 81030a810a0381030a810a09080901000309010081090082000900810009810900810009 ! 6c0901000209010081090081000981090082000900820009000100810900810009060901 ! 0481030a810a0381030a070a8101058105018101058105020c0201010105350201000102 ! 010081020081000281020082000200810002810200810002020202002202010002020100 ! 0b020100050201000802010004020300060203000602030006020100010201001b020100 ! 510201010105010208058101028102018101058105020c02010101050101 ! 81030a810a0381030a810a09080904008109008200090082000900810009810900810009 ! 6c0906008109008100098109008200090082000900810009810900810009060901048103 ! 0a810a0381030a070a8101058105018101058105020c0201010105350201000402010001 ! 0201008102008100028102008100020102820002008100020a0282000200010081020001 ! 000102820002000100810200010002020100020203008102008200020002000102010081 ! 020081000201020100050201008102008100020502010008020100080201000602010001 ! 020100010201000402820002000100810200010002020300010203008302000200010081 ! 0200010002020300010201008102008100028102008100028102008100022f0201010105 ! 010281050206028101028102018101058105020c02010101050101 ! 81030a810a0381030a810a0908090100030901008109008200090004006d090100020901 ! 008109000400810900820009008100098109008100090609010481030a810a0381030a07 ! 0a8101058105018101058105020c02010101053202010081020081000203020100010201 ! 008102008100028102008100020102820002008100028102008100020602010001020100 ! 010201008102008100028102008100028102008100028102008100020102080001020100 ! 810200010081020081000281020081000203020100810200010006020100080201000802 ! 010006020100010201000102010004020100010201000102010081020081000281020081 ! 000281020081000281020081000281020081000281020082000200810002810200820002 ! 000100810200820002008100028102008100022f02010101050102810502060281010281 ! 02018101058105020c02010101050101 ! 81030a810a0381030a810a09080901000309010081090082000900810009700901000209 ! 0100810900810009030901008109008100098109008100090609010481030a810a038103 ! 0a070a81010581050181010581050281020507058101028102018101058105022f020200 ! 010204000202040001020400010281000281020081000201020200050201000102010001 ! 020100810200810002810200810002810200810002810200040081020001000102010001 ! 020100810200810002810200810002810200040081020081000281020081000205020100 ! 080201000802010006020100010201000802010001020100010201000402010001020100 ! 010201000102010001020100810200810002810200820002008100028102008200020081 ! 00028102008100022f020101010501028105020602810102810201810105810502030202 ! 058101020302010101050101 ! 81030a810a0381030a810a09080901000309010081090082000900810009810900810009 ! 6c0901000209010081090081000981090082000900820009000100810900810009060901 ! 0481030a810a0381030a070a810105810501810105810502820205020602810102810201 ! 8101058105022e0201000302010001020100040201000402010082020002010201000402 ! 010004020100010201000102010081020081000281020081000281020081000281020081 ! 000203020100020201000102010081020081000281020081000281020081000203020100 ! 010201000602010008020100080201000602010001020100080201000102010001020100 ! 010204000102010001020100010201000102010081020004008102008100028102008200 ! 02008100028102008100022f020101010501028105020602810102810201810105810502 ! 0302810502820201020302010101050101 ! 81030a810a0381030a810a09080901000309010081090081000981090002006e09010002 ! 0901000109030001090100810900820009008100090709010481030a810a0381030a070a ! 8101058105018101058105028202050206028101028102018101058105022f0202000102 ! 010001020100040201000402010081020005000102020005020100010201000102010081 ! 020081000281020081000281020081000281020081000203020100020201000102010081 ! 020081000281020081000281020081000203020100010201000602010008020100080201 ! 000602010001020100080201000102010001020100810200810002810200810002810200 ! 810002810200810002810200810002810200820002008100020302010001020100810200 ! 8100028102008100022f0201010105010281050206028101028102018101058105020302 ! 810502820201020302010101050101 ! 81030a810a0381030a810a097f091a0901000b09010481030a810a0381030a070a810105 ! 810501810105810502810201080101020101010532020100810200810002810200820002 ! 008100028102008200020081000281020081000203020100010201000702010001020100 ! 010201008102008100028102008100028102008100028102008100020302010002020100 ! 010201008102000100810200810002810200810002030201008102000100060201000302 ! 010002020100030201000202010003020100810200810002810200810002810200810002 ! 030201000102010001020100810200810002810200810002810200820002000100010201 ! 000102010081020081000281020082000200810002810200820002008200020001003002 ! 0101010501028105020602810102810201810105810502030203010402010101050101 ! 81030a810a0381030a810a090709060078090800090901000b09010481030a810a038103 ! 0a070a8101058105018101058105020c0201010105360203000202030002020300050201 ! 000b02010001020100010201008102008100028102008100028102008100028102008100 ! 020302010003020300010201008102008100020102050001020100810200810002050201 ! 000302010002020100030201000202010003020100010203000202010004020100010201 ! 000102010001020200810200810002810200820002008100028102008100028102008100 ! 0281020002000102010001020100010201008102008100022f0201010105010281050206 ! 028101028102018101058105020c02010101050101 ! 81030a810a0381030a810a097f091a0901000b09010481030a810a0381030a070a810105 ! 8105018101058105020c02010101057f027f023702010101050102810502060281010281 ! 02018101058105020c02010101050101 ! 81030a810a0381030a810a097f092809010481030a810a0381030a070a81010581050181 ! 01058105020c02010101057f027f02370201010105010209010102010101050d02010101 ! 050101 ! 81030a810a0381030a810a097f092809010481030a810a0381030a070a81010581050181 ! 01058105020c02010101057f027f023702010101050d02010101050d02010101050101 ! 81030a810a0381030a810a097f092809010481030a810a0381030a070a81010581050181 ! 01058105020c02010101057f027f023702010101050d02010101050d02010101050101 ! 81030a810a0381030a810a097f092809010481030a810a0381030a070a82010501010181 ! 05010f018105017f017f0139018105010f018105010f018105010101 ! 81030a810a0381030a810a097f092809010481030a810a0381030a070a7f017f017a01 ! 81030a810a0381030a810a097f092809010481030a810a0381030a070a81010501058101 ! 097f097f096f0981010501050001 ! 81030a810a0381030a810a097f092809010481030a810a0381030a070a81010581050181 ! 01097f097f096f098101058105010001 ! 81030a810a0381030a810a097f092809010481030a810a0381030a070a81010581050181 ! 01097f097f096f098101058105010001 ! 81030a810a0381030a810a047f042a0481030a810a0381030a070a810105810501810109 ! 7f097f096f098101058105010001 ! 81030a810a0382030a047f042b0481030a810a0381030a070a8101058105018101097f09 ! 7f096f098101058105010001 ! 81030a810a0381030a7f0a2c0a81030a810a0381030a070a8101058105018101097f097f ! 096f098101058105010001 ! 81030a810a0381030a7f0a2b0a8204030a810a0381030a070a8101058105018101097f09 ! 7f096f098101058105010001 ! 81030a810a0381030a810a047f042a0481030a810a0381030a070a810105810501810109 ! 7f097f096f098101058105010001 ! 81030a810a0381030a810a047f042704810a048204030a810a0381030a070a8101058105 ! 018101097f097f096f098101058105010001 ! 81030a810a0381030a810a048104097f092409010a010481030a810a0381030a070a8101 ! 0581050181010978092d0a0109460a01093d0a3f098101058105010001 ! 81030a810a0381030a810a048204090a7f0a220a81090a810a048204030a810a0381030a ! 070a8101058105018101090809640a0a092c0a81040981090a440a81040981090a3b0a81 ! 04093e098101058105010001 ! 81030a810a0381030a810a048204090a7f0a210a8204090a810a048204030a810a038103 ! 0a070a8101058105018101090809630a8104090909010a290901040109010a4209010401 ! 09010a390901043f098101058105010001 ! 81030a810a0381030a810a048204090a810a097f091e09010481090a810a048204030a81 ! 0a0381030a070a8101058105018101090809010a600901040a09010a290901040109010a ! 420901040109010a390901043f098101058105010001 ! 81030a810a0381030a810a048204090a810a097f091e09010481090a810a048204030a81 ! 0a0381030a070a8101058105018101090809010a600901040a09010a290901040109010a ! 420901040109010a390901043f098101058105010001 ! 81030a810a0381030a810a048204090a810a097f091e09010481090a810a048204030a81 ! 0a0381030a070a8101058105018101090809010a600901040a09010a290901040109010a ! 420901040109010a390901043f098101058105010001 ! 81030a810a0381030a810a048204090a810a097f091e09010481090a810a048204030a81 ! 0a0381030a070a8101058105018101090809010a600901040a09010a290901040109010a ! 420901040109010a390901043f098101058105010001 ! 81030a810a0381030a810a048204090a810a097f091e09010481090a810a048204030a81 ! 0a0381030a070a8101058105018101090809010a600901040a09010a290901040109010a ! 420901040109010a390901043f098101058105010001 ! 81030a810a0381030a810a048204090a810a097f091e09010481090a810a048204030a81 ! 0a0381030a070a8101058105018101090809010a0409010004090100080901000d090100 ! 0709010004090700200901040a09010a0c09010606090106040901060a0901040109010a ! 0a0905060f0901061f0901040109010a0a0904060909010608090106120901043f098101 ! 058105010001 ! 81030a810a0381030a810a048204090a810a091209010004090100080901000d09010007 ! 09010005090500260901002809010481090a810a048204030a810a0381030a070a810105 ! 8105018101090809010a0409010004090100080901001709010007090100230901040a09 ! 010a0b09030605090106040901060a0901040109010a0a090106020901060e0901061f09 ! 01040109010a0a090106010901060809010608090106120901043f098101058105010001 ! ! 81030a810a0381030a810a048204090a810a091209010004090100080901001709010005 ! 09010002090100250901002809010481090a810a048204030a810a0381030a070a810105 ! 8105018101090809010a0409020002090200010903000109030001090300010901008109 ! 000200010903000109010007090100020901000209010081090082000900810009010903 ! 0002090300050901040a09010a0b09810609820906090109010681090681060981090682 ! 060906810609090901040109010a0a090106020901060109030601090106810906810609 ! 810906810609810906020602090306020903060b0901040109010a0a0901060209010601 ! 090306010901060109030601090306010903060b0901043f098101058105010001 ! 81030a810a0381030a810a048204090a810a091209020002090200010903000109030001 090300010901008109000200010903000109010005090100020901008109000200010901 008109008200090002000109820009000100810900010002090300010903000109030001 ! 0901008109008200090002001509010481090a810a048204030a810a0381030a070a8101 ! 058105018101090809010a04090200020902008109008100098109008100098109008100 ! 098109008100098109008200090005008109008100098109008200090081000906090100 ! 020901000209010081090001008109008200090081000981090082000900810009810900 ! 810009030901040a09010a0a090106010901068109068206090601068109068206090601 ! 060a0901040109010a0a0901060209010681090681060981090682060906010681090682 ! 060906820609068106098109068206090681060981090682060906810609810906810609 ! 090901040109010a0a090106020901068109068106098109068206090682060906810609 ! 810906810609810906810609810906810609810906810609090901043f09810105810501 ! 0001 ! 81030a810a0381030a810a048204090a810a091209020002090200810900810009810900 810009810900810009810900810009810900820009000500810900810009810900820009 008100090409010002090300010901008109000500010901008109008100098109008100 098109008200090081000981090081000981090081000981090081000981090082000900 ! 0500010901001409010481090a810a048204030a810a0381030a070a8101058105018101 ! 090809010a04090300810900020004090100010901000109010001090100810900010001 ! 090100040901008109008100090609010003090100810900810009810900810009810900 ! 82000900810009810900820009000100070901040a09010a0a0901060109010681090681 ! 060981090682060906810609810906810609090901040109010a0a090506010901060109 ! 010681090681060981090682060906810609030901068109068106090309010601090106 ! 0a0901040109010a0a090106020901068109068106098109068206090682060906810609 ! 810906810609810906810609810906810609810906810609090901043f09810105810501 ! 0001 ! 81030a810a0381030a810a048204090a810a091209030081090002000409010001090100 010901000109010081090001000109010004090100810900810009040905000409010081 090001000509010081090081000981090081000981090082000900810009810900810009 810900810009810900810009810900820009000100010902001709010481090a810a0482 ! 04030a810a0381030a070a8101058105018101090809010a040901008509000900090081 ! 000981090003000109010001090500810900810009010901000109040081090081000906 ! 090100030901008109008100098109008100098109008200090004000209020005090104 ! 0a09010a0a09050681090681060981090682060906810609810906810609090901040109 ! 010a0a090106010901060109050681090681060981090682060906810609810906030681 ! 0906810609030905060a0901040109010a0a090106020901068109060406810906820609 ! 06040601090106010905060a0901043f098101058105010001 ! 81030a810a0381030a810a048204090a810a091209010085090009000900810009810900 030001090100010905008109008100090109010001090400810900810009040901000509 040081090081000902090400810900810009810900810009810900820009000400010901 ! 0001090500810900810009030902001509010481090a810a048204030a810a0381030a07 ! 0a8101058105018101090809010a04090100810900010081090082000900810009810900 ! 810009810900810009810900810009030901000209010081090081000981090082000900 ! 8100090609010004090200020901000109010081090081000906090200040901040a0901 ! 0a090901060309030601090106810906810609810906810609090901040109010a0a0901 ! 060209010681090681060903090106010901068109068206090681060981090682060906 ! 810609030901060e0901040109010a0a0901060209010681090681060903090106810906 ! 81060904090106010901060e0901043f098101058105010001 ! 81030a810a0381030a810a048204090a810a091209010081090001008109008200090081 000981090081000981090081000981090081000903090100020901008109008100098109 008200090081000904090100040901000109010081090081000901090100010901008109 008100098109008100098109008200090081000904090100010901000409010005090200 ! 1409010481090a810a048204030a810a0381030a070a8101058105018101090809010a04 ! 090100010981000981090082000900810009810900810009810900820009000100010901 ! 008109008100090109010081090081000981090082000900810009060901000409020002 ! 0902008109008200090081000981090082000900810009810900810009030901040a0901 ! 0a090901060309030681090601068109068206090601060a0901040109010a0a09010602 ! 090106810906810609810906820609060106810906820609068206090681060981090682 ! 06090681060981090682060906810609810906810609090901040109010a0a0901060109 ! 010601090106010901068109068206090681060981090681060981090682060906010601 ! 0901060a0901043f098101058105010001 ! 81030a810a0381030a810a048204090a810a091209010001098100098109008200090081 000981090081000981090082000900010001090100810900810009010901008109008100 098109008200090081000904090100040901000109010081090081000901090100010901 008109008100098109008100098109008200090081000981090081000981090082000900 ! 01000109010081090081000901090100010901001409010481090a810a048204030a810a ! 0381030a070a8101058105018101090809010a0409010001098100098109008100098109 ! 000100810900810009810900810009810900020001090100020901000109020081090002 ! 000709010005090100020901008109008100090109030002090300050901040a09010a09 ! 090106030901068109068206090681060981090682060906810609090901040109010a0a ! 090106020901060109030601090106810906810609810906810609810906010681090682 ! 0609060206020903060b0901040109010a0a090406030903060109010601090306030901 ! 06010903060b0901043f098101058105010001 ! 81030a810a0381030a810a048204090a810a091209010001098100098109008100098109 000100810900810009810900810009810900020001090100020901000109020081090002 000509010005090200810900020003090200810900020001090100010901000109030003 ! 0901000109030001090100030903001509010481090a810a048204030a810a0381030a07 ! 0a8101058105018101090809010a420981000902090100160901040a09010a2909010401 ! 09010a19090106260901040109010a390901043f098101058105010001 ! 81030a810a0381030a810a048204090a810a097f091e09010481090a810a048204030a81 ! 0a0381030a070a8101058105018101090809010a03090a00320901000309010016090104 ! 0a09010a290901040109010a19090106260901040109010a390901043f09810105810501 ! 0001 ! 81030a810a0381030a810a048204090a810a097f091e09010481090a810a048204030a81 ! 0a0381030a070a8101058105018101090809010a4009010004090100160901040a09010a ! 290901040109010a19090106260901040109010a390901043f098101058105010001 ! 81030a810a0381030a810a048204090a810a097f091e09010481090a810a048204030a81 ! 0a0381030a070a8101058105018101090809010a600901040a09010a290901040109010a ! 420901040109010a390901043f098101058105010001 ! 81030a810a0381030a810a048204090a810a097f091e09010481090a810a048204030a81 ! 0a0381030a070a8101058105018101090809010a600901040a09010a290901040109010a ! 420901040109010a390901043f098101058105010001 ! 81030a810a0381030a810a048204090a810a097f091e09010481090a810a048204030a81 ! 0a0381030a070a8101058105018101090809010a600901040a09010a290901040109010a ! 420901040109010a390901043f098101058105010001 ! 81030a810a0381030a810a048204090a810a097f091e09010481090a810a048204030a81 ! 0a0381030a070a8101058105018101090809010a62040a09010a290901040109010a4209 ! 01040109010a390901043f098101058105010001 ! 81030a810a0381030a810a048204090a810a097f091e09010481090a810a048204030a81 ! 0a0381030a070a8101058105018101090809810a0462040a09010a2b040109010a440401 ! 09010a3b043f098101058105010001 ! 81030a810a0381030a810a048204090a810a047f04200481090a810a048204030a810a03 ! 81030a070a8101058105018101097809810a042b040109810a0444040109810a043b043f ! 098101058105010001 ! 81030a810a0381030a810a048304090a047f04210481090a810a048204030a810a038103 ! 0a070a8101058105018101097f097f096f098101058105010001 ! 81030a810a0381030a810a048104097f092409010a010481030a810a0381030a070a8101 ! 058105018101097f097f096f098101058105010001 ! 81030a810a0381030a810a048104097f092409010a010481030a810a0381030a070a8101 ! 058105018101097f097f096f098101058105010001 ! 81030a810a0381030a810a048204090a7f0a220a81090a810a048204030a810a0381030a ! 070a8101058105018101097f097f096f098101058105010001 ! 81030a810a0381030a810a048204090a7f0a210a8204090a810a048204030a810a038103 ! 0a070a8101058105018101097f097f096f098101058105010001 ! 81030a810a0381030a810a048204090a810a097f091e09010481090a810a048204030a81 ! 0a0381030a070a8101058105018101097f097f096f098101058105010001 ! 81030a810a0381030a810a048204090a810a097f091e09010481090a810a048204030a81 ! 0a0381030a070a8101058105018101097f097f096f098101058105010001 ! 81030a810a0381030a810a048204090a810a097f091e09010481090a810a048204030a81 ! 0a0381030a070a8101058105018101097f097f096f098101058105010001 ! 81030a810a0381030a810a048204090a810a097f091e09010481090a810a048204030a81 ! 0a0381030a070a8101058105018101097f097f096f098101058105010001 ! 81030a810a0381030a810a048204090a810a097f091e09010481090a810a048204030a81 ! 0a0381030a070a8101058105018101097f097f096f098101058105010001 ! 81030a810a0381030a810a048204090a810a097f091e09010481090a810a048204030a81 ! 0a0381030a070a8101058105018101097f0911097f045c04820901058105010001 ! 81030a810a0381030a810a048204090a810a09120904002809040016090100020904000f ! 090100010901002109010481090a810a048204030a810a0381030a070a81010581050181 ! 01097f0911097f045b04830a0901058105010001 ! 81030a810a0381030a810a048204090a810a091209010001090100260901000209010019 ! 090100130901002509010481090a810a048204030a810a0381030a070a81010581050181 ! 01097f09110901047f095809010a820901058105010001 ! 81030a810a0381030a810a048204090a810a091209010002090100010903000109820009 000100810900010002090300020901008109008100090409010002090100810900820009 008100090109030002090300010901008109000200810900810009810900020002090300 010903008109008100098109000200010901008109008100091309010481090a810a0482 ! 04030a810a0381030a070a8101058105018101097f09110901047f095809010a82090105 ! 8105010001 ! 81030a810a0381030a810a048204090a810a091209010002090100810900810009810900 820009008100098109008100098109008200090081000981090082000900820009000100 060902000309020081090082000900810009810900820009008100098109008200090081 000981090081000981090082000900810009810900820009008100098109008100098109 00810009810900820009008100098109008200090001008109008100091209010481090a ! 810a048204030a810a0381030a070a8101058105018101097f09110901047f095809010a ! 820901058105010001 ! 81030a810a0381030a810a048204090a810a091209010002090100810900810009810900 820009008100098109008100098109008100090309010081090081000981090081000907 090200010901000109010081090081000981090082000900810009030901000109010001 090100810900810009070901000109010001090100810900810009810900820009008100 ! 098109008100091209010481090a810a048204030a810a0381030a070a81010581050181 ! 01093409010004090100080901000d090100070901000509010002090100210901040109 ! 04001d09810009820900097f092e09010a820901058105010001 ! 81030a810a0381030a810a048204090a810a091209010002090100810900040081090081 000981090081000981090081000981090003008109008100098109008100090809020081 090081000981090082000900040081090081000903090100010901000109010081090081 000904090400010901000109010081090081000981090082000900810009810900810009 ! 1209010481090a810a048204030a810a0381030a070a8101058105018101093409010004 ! 0901000809010017090100050902000109010021090104010981000902098100091b0981 ! 0009820900097f092e09010a820901058105010001 ! 81030a810a0381030a810a048204090a810a091209010002090100810900810009030901 000109010001090100810900810009810900820009008100098109008100090409010002 090100810900810009810900820009008100090309010004090100010901000109010081 090081000903090100010901000109010001090100810900810009810900820009008100 ! 098109008100091209010481090a810a048204030a810a0381030a070a81010581050181 ! 010934090200020902000109030001090300010903000109010081090002000109030001 ! 090100050902000109010001090300010982000900010081090001000209030002090100 ! 040901040109810009020981000901090200020987000900090009000982090009020902 ! 0002098100098209000901090200020981000901098100097f092009010a820901058105 ! 010001 ! 81030a810a0381030a810a048204090a810a091209010001090100010901000109010081 090081000981090081000981090082000900810009810900820009008200090001000509 010002090100810900010081090082000900810009810900820009008100098109008200 090081000981090081000981090082000900810009810900820009008100098109008100 098109008200090001008109008100098109008200090081000981090081000912090104 ! 81090a810a048204030a810a0381030a070a810105810501810109340902000209020081 ! 090081000981090081000981090081000981090081000981090082000900050081090081 ! 000981090082000900810009040901008309000900820009008100098109008200090081 ! 000981090081000981090082000900810009810900810009810900810009030901040109 ! 810009020981000982090009010981000981090081000981090082000900830009000982 ! 090009010981000982090009820900098209000901098100098209000901098100097f09 ! 2009010a820901058105010001 ! 81030a810a0381030a810a048204090a810a091209040003090300010901000109010001 090100010902008109008200090082000900810009050904000109010081090081000901 090300020903000109010001090100010901000109030002090200810900810009810900 ! 82000900810009810900020001090100010901001309010481090a810a048204030a810a ! 0381030a070a810105810501810109340903008109000200040901000109010001090100 ! 010901008109000100010901000409010081090081000904090100830900090081000903 ! 090100810900810009810900810009810900820009008100098109008100090709010401 ! 090400020981000901098100098209000901098100098209000982090009040981000982 ! 090009820900098209000901098100098209000901098100097f092009010a8209010581 ! 05010001 ! 81030a810a0381030a810a048204090a810a09370901000d0901005409010481090a810a ! 048204030a810a0381030a070a8101058105018101093409010085090009000900810009 ! 810900030001090100010905008109008100090109010001090400810900810009040901 ! 000109020001090400810900810009810900810009810900820009000400080901040109 ! 810009050904000109810009010981000982090009820900090109030001098100098209 ! 000982090009010981000982090009820900097f092109010a820901058105010001 ! 81030a810a0381030a810a048204090a810a0933090100010901000d0901005409010481 ! 090a810a048204030a810a0381030a070a81010581050181010934090100810900010081 ! 090082000900810009810900810009810900810009810900810009030901000209010081 ! 090081000981090082000900810009040901000109020081090081000981090082000900 ! 810009810900810009810900820009008100090b09010401098100090509810009040981 ! 000901098100098209000982090009820900090109810009820900098209000982090009 ! 0109810009010983000900097f092109010a820901058105010001 ! 81030a810a0381030a810a048204090a810a09340903000e0901005409010481090a810a ! 048204030a810a0381030a070a8101058105018101093409010001098100098109008200 ! 090081000981090081000981090082000900010001090100810900810009010901008109 ! 008100098109008200090081000904090100020901008109008100098109008200090081 ! 000981090081000981090082000900810009810900810009810900810009030901040109 ! 810009050981000901098100098209000901098100098209000982090009820900090109 ! 8100098209000982090009820900090109810009010983000900097f092109010a820901 ! 058105010001 ! 81030a810a0381030a810a048204090a810a097f091e09010481090a810a048204030a81 ! 0a0381030a070a8101058105018101093409010001098100098109008100098109000100 810900810009810900810009810900020001090100020901000109020081090002000509 010002090100010902008109000200010901000109010001090300020901000409010401 098100090609020002098100090109810009820900098209000901090200840900090009 ! 820900090109020004098100097f092209010a820901058105010001 ! 81030a810a0381030a810a048204090a810a097f091e09010481090a810a048204030a81 ! 0a0381030a070a8101058105018101097f091109010433098100097f092209010a820901 ! 058105010001 ! 81030a810a0381030a810a048204090a810a097f091e09010481090a810a048204030a81 ! 0a0381030a070a8101058105018101097f091109010432098100097f092309010a820901 ! 058105010001 ! 81030a810a0381030a810a048204090a810a097f091e09010481090a810a048204030a81 ! 0a0381030a070a8101058105018101097f091109010431098100097f092409010a820901 ! 058105010001 ! 81030a810a0381030a810a048204090a810a047f04200481090a810a048204030a810a03 ! 81030a070a8101058105018101097f09110901047f095809010a820901058105010001 ! 81030a810a0381030a810a048304090a047f04210481090a810a048204030a810a038103 ! 0a070a8101058105018101097f09110901047f0a5a0a820901058105010001 ! 81030a810a0381030a810a048104097f092409010a010481030a810a0381030a070a8101 ! 058105018101097f09110981040a7f0a5a0a820901058105010001 ! 81030a810a0381030a810a048104097f092409010a010481030a810a0381030a070a8101 ! 058105018101097f097f096f098101058105010001 ! 81030a810a0381030a810a048204090a7f0a220a81090a810a048204030a810a0381030a ! 070a8101058105018101097f097f096f098101058105010001 ! 81030a810a0381030a810a048204090a7f0a210a8204090a810a048204030a810a038103 ! 0a070a8101058105018101097f0911097f045c04820901058105010001 ! 81030a810a0381030a810a048204090a810a097f091e09010481090a810a048204030a81 ! 0a0381030a070a8101058105018101097f0911097f045b04830a0901058105010001 ! 81030a810a0381030a810a048204090a810a097f091e09010481090a810a048204030a81 ! 0a0381030a070a8101058105018101097f09110901047f095809010a8209010581050100 ! 01 ! 81030a810a0381030a810a048204090a810a097f091e09010481090a810a048204030a81 ! 0a0381030a070a8101058105018101097f09110901047f095809010a8209010581050100 ! 01 ! 81030a810a0381030a810a048204090a810a097f091e09010481090a810a048204030a81 ! 0a0381030a070a8101058105018101097f09110901047f095809010a8209010581050100 ! 01 ! 81030a810a0381030a810a048204090a810a097f091e09010481090a810a048204030a81 ! 0a0381030a070a81010581050181010951090100040901000e0901000309010004090100 ! 0b0901000a09010402090200030902000309020002090500020902007f093509010a8209 ! 01058105010001 ! 81030a810a0381030a810a048204090a810a097f091e09010481090a810a048204030a81 ! 0a0381030a070a81010581050181010951090100040901000d0901000309030003090100 ! 0c0901000909010401098100090109810009820900090109810009820900090109810009 ! 82090009050981000901098100097f093309010a820901058105010001 ! 81030a810a0381030a810a048204090a810a09220905000d090100080904002209010032 ! 09010481090a810a048204030a810a0381030a070a810105810501810109510902000209 ! 020001090300070901000309810009820900090209840009000900010081090001000309 ! 010002090100040901040109810009010981000982090009040981000901098100098209 ! 000909098100097f093309010a820901058105010001 ! 81030a810a0381030a810a048204090a810a0922090100020901000c0901000709010002 ! 090100210901003209010481090a810a048204030a810a0381030a070a81010581050181 ! 010951090200020902008109008100098109008100090409010003090100010901000109 ! 010081090081000981090081000981090081000902090100010901000409010402090200 ! 0209820009008100090109810009010981000982090009070901007f093509010a820901 ! 058105010001 ! 81030a810a0381030a810a048204090a810a092209010002090100810900020001090100 810900040005090100070903000209030001098200090001008109000100020903000109 ! 0300810900820009000200020901002409010481090a810a048204030a810a0381030a07 ! 0a8101058105018101095109030081090002008109000100080901000309010001090100 ! 010901008109008100098109008100098109008100090209010008090104010981000901 ! 0981000981090081000982090009820900090109810009810900040005098100097f0933 ! 09010a820901058105010001 ! 81030a810a0381030a810a048204090a810a092209010002090300010901008109000300 810900810009050901000609010001090100810900810009810900820009008100098109 008100098109008200090081000981090081000981090081000981090005000209010024 ! 09010481090a810a048204030a810a0381030a070a810105810501810109510901008509 ! 000900090081000901090200060901000309050001098100098109008100098109008100 ! 098109008100090209010008090104010981000901098100098209000901098100098209 ! 000901098100098209000909098100097f093309010a820901058105010001 ! 81030a810a0381030a810a048204090a810a092209050004090100810900010002090100 060901000109030081090081000981090082000900810009810900820009008100098109 008100098109008200090081000981090081000981090081000981090001000209010081 ! 09008100092409010481090a810a048204030a810a0381030a070a810105810501810109 ! 510901008109000100810900810009020902000509010002090100030901008209000981 ! 090081000981090081000981090081000902090100080901040109810009010981000982 ! 090009010981000982090009010981000982090009050981000901098100097f09330901 ! 0a820901058105010001 ! 81030a810a0381030a810a048204090a810a092209010005090400810900810009020901 000609010003090100810900040081090081000981090082000900810009810900810009 8109008200090004000109010001090100030901008109008100092409010481090a810a ! 048204030a810a0381030a070a8101058105018101095109010001098100098109008200 ! 090081000981090081000904090100020901000309030001090100010901000109010003 ! 090100010901000409010401098100090109810009820900090109810009820900090109 ! 81000982090009050981000901098100097f093309010a820901058105010001 ! 81030a810a0381030a810a048204090a810a092209010004090100010901008109008100 090209010006090100030901008109008100090309010001090100810900810009810900 810009810900820009008100090409010001090100040902002609010481090a810a0482 ! 04030a810a0381030a070a81010581050181010951090100010981000981090081000981 ! 090002000609010002090100030903000109010001090100010901000309010001090100 ! 0409010402090200030902000309020002090500020902007f093509010a820901058105 ! 010001 ! 81030a810a0381030a810a048204090a810a092209010004090100010901008109008100 090209010082090009040901000209010081090081000981090082000900810009810900 820009008100098109008100098109008200090081000981090081000981090082000900 ! 0100040902002609010481090a810a048204030a810a0381030a070a8101058105018101 ! 09680901001a090100090901047f095809010a820901058105010001 ! 81030a810a0381030a810a048204090a810a092209010005090200810900020004090100 070903008209000981090002000209030001090100010901000109010001090300030901 ! 00810900810009040901002609010481090a810a048204030a810a0381030a070a810105 ! 810501810109680901001a090100090901047f095809010a820901058105010001 ! 81030a810a0381030a810a048204090a810a0975098100092609010481090a810a048204 ! 030a810a0381030a070a81010581050181010969090100180901000a0901047f09580901 ! 0a820901058105010001 ! 81030a810a0381030a810a048204090a810a09740901002709010481090a810a04820403 ! 0a810a0381030a070a8101058105018101097f09110901047f095809010a820901058105 ! 010001 ! 81030a810a0381030a810a048204090a810a09730901002809010481090a810a04820403 ! 0a810a0381030a070a8101058105018101097f09110901047f0a5a0a8209010581050100 ! 01 ! 81030a810a0381030a810a048204090a810a097f091e09010481090a810a048204030a81 ! 0a0381030a070a8101058105018101097f09110981040a7f0a5a0a820901058105010001 ! ! 81030a810a0381030a810a048204090a810a097f091e09010481090a810a048204030a81 ! 0a0381030a070a8101058105018101097f097f096f098101058105010001 ! 81030a810a0381030a810a048204090a810a097f091e09010481090a810a048204030a81 ! 0a0381030a070a8101058105018101097f097f096f098101058105010001 ! 81030a810a0381030a810a048204090a810a097f091e09010481090a810a048204030a81 ! 0a0381030a070a8101058105018101097f0911097f045c04820901058105010001 ! 81030a810a0381030a810a048204090a810a047f04200481090a810a048204030a810a03 ! 81030a070a8101058105018101097f0911097f045b04830a0901058105010001 ! 81030a810a0381030a810a048304090a047f04210481090a810a048204030a810a038103 ! 0a070a8101058105018101097f09110901047f095809010a820901058105010001 ! 81030a810a0381030a810a048104097f092409010a010481030a810a0381030a070a8101 ! 058105018101097f09110901047f095809010a820901058105010001 ! 81030a810a0381030a810a048104097f092409010a010481030a810a0381030a070a8101 ! 058105018101097f09110901047f095809010a820901058105010001 ! 81030a810a0381030a810a048204090a7f0a220a81090a810a048204030a810a0381030a ! 070a8101058105018101095e0901000909010004090100020901000b0901000a09010403 ! 0981000903090200020905000b09810009030902007f092d09010a820901058105010001 ! ! 81030a810a0381030a810a048204090a7f0a210a8204090a810a048204030a810a038103 ! 0a070a8101058105018101095d0903000709010005090100020901000c09010009090104 ! 0109020003098100090109810009820900090d090200030981000901098100097f092b09 ! 010a820901058105010001 ! 81030a810a0381030a810a048204090a810a097f091e09010481090a810a048204030a81 ! 0a0381030a070a8101058105018101095d09810009820900090609010005090100020984 ! 000900090001008109000100030901000209010004090104030981000906098100098209 ! 00090f0981000906098100097f092b09010a820901058105010001 ! 81030a810a0381030a810a048204090a810a097f091e09010481090a810a048204030a81 ! 0a0381030a070a8101058105018101095c09010001090100050901000609010001090100 810900810009810900810009810900810009020901000109010004090104030981000904 ! 09010002098100090f0981000905098100097f092c09010a820901058105010001 ! 81030a810a0381030a810a048204090a810a097f091e09010481090a810a048204030a81 ! 0a0381030a070a8101058105018101095c09010001090100050901000609010001090100 810900810009810900810009810900810009020901000809010403098100090609810009 ! 81090004000b0981000904098100097f092d09010a820901058105010001 ! 81030a810a0381030a810a048204090a810a097f091e09010481090a810a048204030a81 ! 0a0381030a070a8101058105018101095c09050005090100060901000109810009810900 ! 810009810900810009810900810009020901000809010403098100090609810009820900 ! 0905090400040981000903098100097f092e09010a820901058105010001 ! 81030a810a0381030a810a048204090a810a097f091e09010481090a810a048204030a81 ! 0a0381030a070a8101058105018101095b09010003090100040901000209010001090100 ! 010981000981090081000981090081000981090081000902090100080901040309810009 ! 02098100090109810009820900090f0981000902098100097f092f09010a820901058105 ! 010001 ! 81030a810a0381030a810a048204090a810a097f091e09010481090a810a048204030a81 ! 0a0381030a070a8101058105018101095b09010003090100040901000209010001090100 ! 810900810009810900810009810900810009810900810009020901000109010004090104 ! 030981000902098100090109810009820900090f0981000902098100097f092f09010a82 ! 0901058105010001 ! 81030a810a0381030a810a048204090a810a093009010007090100010901000109010007 ! 09010005090100040901004009010481090a810a048204030a810a0381030a070a810105 ! 8105018101095b0901000309010004090100030903000109010001090100010901000109 ! 0100030901000109010004090104030981000903090200020905000b0981000902090400 ! 7f092c09010a820901058105010001 ! 81030a810a0381030a810a048204090a810a09300901000b0901000b0901000509010004 ! 0901004009010481090a810a048204030a810a0381030a070a8101058105018101096909 ! 010019090100090901047f095809010a820901058105010001 ! 81030a810a0381030a810a048204090a810a093009010081090082000900810009810900 820009000200810900810009810900020001090100050902000209020001090300020901 ! 008109008100093109010481090a810a048204030a810a0381030a070a81010581050181 ! 01096909010019090100090901047f095809010a820901058105010001 ! 81030a810a0381030a810a048204090a810a093009010081090001008109008200090081 000981090081000981090082000900810009810900820009008100090409020002090200 ! 810900810009810900820009008200090001003209010481090a810a048204030a810a03 ! 81030a070a8101058105018101096a090100170901000a0901047f095809010a82090105 ! 8105010001 ! 81030a810a0381030a810a048204090a810a093009010081090081000981090082000900 810009810900810009810900810009030901008109008100090409030081090002000409 ! 01008109008100098109008100093109010481090a810a048204030a810a0381030a070a ! 8101058105018101097f09110901047f095809010a820901058105010001 ! 81030a810a0381030a810a048204090a810a093009010081090081000981090082000900 810009810900810009810900810009810900030081090081000904090100850900090009 ! 0081000981090003008109008100098109008100093109010481090a810a048204030a81 ! 0a0381030a070a8101058105018101097f09110901047f0a5a0a820901058105010001 ! 81030a810a0381030a810a048204090a810a093009010081090081000981090082000900 810009810900810009810900820009008100098109008200090081000904090100810900 010081090082000900810009810900820009008100098109008100093109010481090a81 ! 0a048204030a810a0381030a070a8101058105018101097f09110981040a7f0a5a0a8209 ! 01058105010001 ! 81030a810a0381030a810a048204090a810a093009010081090081000981090082000900 810009810900820009000100810900810009810900820009008100090409010001098100 0981090082000900810009810900820009008200090001003209010481090a810a048204 ! 030a810a0381030a070a8101058105018101097f097f096f098101058105010001 ! 81030a810a0381030a810a048204090a810a093009010081090081000981090082000900 810009010901008109008100098109000100810900020005090100010981000981090081 ! 00098109